- var $Config;
- /******/ (() => { // webpackBootstrap
- /******/ "use strict";
- /******/ var __webpack_modules__ = ({
-
- /***/ "./ts/consts.ts":
- /*!**********************!*\
- !*** ./ts/consts.ts ***!
- \**********************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ SOCKET_ID: () => (/* binding */ SOCKET_ID)
- /* harmony export */ });
- const SOCKET_ID = 'tree-frame';
-
-
- /***/ }),
-
- /***/ "./ts/library/index.ts":
- /*!*****************************!*\
- !*** ./ts/library/index.ts ***!
- \*****************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ edit: () => (/* binding */ edit),
- /* harmony export */ init: () => (/* binding */ init),
- /* harmony export */ reset: () => (/* reexport safe */ _modal_body__WEBPACK_IMPORTED_MODULE_4__.reset)
- /* harmony export */ });
- /* harmony import */ var _validation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validation */ "./ts/library/validation/index.ts");
- /* harmony import */ var _modal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../modal */ "./ts/modal/index.ts");
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../consts */ "./ts/consts.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../modal/css */ "./ts/modal/css.ts");
- /* harmony import */ var _modal_body__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../modal/body */ "./ts/modal/body/index.ts");
- /* harmony import */ var _modal_header_actions_close__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/modal/header/actions/close */ "./ts/modal/header/actions/close/index.ts");
- var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- };
-
-
-
-
-
-
- function init(config, socket, idPostfix) {
- var _a;
- return __awaiter(this, void 0, void 0, function* () {
- socket.id = `${_consts__WEBPACK_IMPORTED_MODULE_2__.SOCKET_ID}-${idPostfix}`;
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_3__.setRootId)(socket.id);
- try {
- yield (0,_validation__WEBPACK_IMPORTED_MODULE_0__["default"])(config);
- (0,_modal__WEBPACK_IMPORTED_MODULE_1__["default"])(config, socket);
- // Config is valid
- return {
- requireReset: false,
- tree: (_a = config.userTree) !== null && _a !== void 0 ? _a : config.defaultTree,
- };
- }
- catch (error) {
- if (typeof config !== 'object' || !(0,_validation__WEBPACK_IMPORTED_MODULE_0__.hasOwnProperty)(config, 'userTree')) {
- throw error;
- }
- delete config.userTree;
- yield (0,_validation__WEBPACK_IMPORTED_MODULE_0__["default"])(config);
- (0,_modal__WEBPACK_IMPORTED_MODULE_1__["default"])(config, socket);
- // Config is valid with userTree removed
- return {
- requireReset: true,
- tree: config.defaultTree,
- error,
- };
- }
- });
- }
- function edit() {
- (0,_modal__WEBPACK_IMPORTED_MODULE_1__.getSocket)().focus();
- return new Promise((resolve) => {
- (0,_modal_header_actions_close__WEBPACK_IMPORTED_MODULE_5__.setCallback)(resolve);
- });
- }
-
-
-
- /***/ }),
-
- /***/ "./ts/library/validation/errors.ts":
- /*!*****************************************!*\
- !*** ./ts/library/validation/errors.ts ***!
- \*****************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ DeactivatedError: () => (/* binding */ DeactivatedError),
- /* harmony export */ EmptyArrayError: () => (/* binding */ EmptyArrayError),
- /* harmony export */ EmptyStringError: () => (/* binding */ EmptyStringError),
- /* harmony export */ HangingPredicateError: () => (/* binding */ HangingPredicateError),
- /* harmony export */ JoinedError: () => (/* binding */ JoinedError),
- /* harmony export */ MismatchedOptionsError: () => (/* binding */ MismatchedOptionsError),
- /* harmony export */ NoNodeColourError: () => (/* binding */ NoNodeColourError),
- /* harmony export */ NoOptionsError: () => (/* binding */ NoOptionsError),
- /* harmony export */ NonIntegerError: () => (/* binding */ NonIntegerError),
- /* harmony export */ PoolBranchError: () => (/* binding */ PoolBranchError),
- /* harmony export */ PoolSizeError: () => (/* binding */ PoolSizeError),
- /* harmony export */ PredicateError: () => (/* binding */ PredicateError),
- /* harmony export */ PropertyError: () => (/* binding */ PropertyError),
- /* harmony export */ SeedMatchError: () => (/* binding */ SeedMatchError),
- /* harmony export */ TypeError: () => (/* binding */ TypeError),
- /* harmony export */ UnexpectedStateError: () => (/* binding */ UnexpectedStateError),
- /* harmony export */ ValueError: () => (/* binding */ ValueError)
- /* harmony export */ });
- // Helpers
- function getOptionString(array) {
- if (array.length === 0) {
- throw new Error('No valid options.');
- }
- if (array.length === 1) {
- return `'${array[0]}'`;
- }
- return `'${array.slice(0, -1).join('\', \'')}' or '${array[array.length - 1]}'`;
- }
- function getPath(breadcrumbs) {
- return `/${breadcrumbs.join('/')}`;
- }
- // Errors
- class JoinedError extends Error {
- constructor(...errors) {
- super(errors.map(({ message }) => message).join(JoinedError.separator));
- }
- }
- JoinedError.separator = '\n\n';
- class UnexpectedStateError extends Error {
- constructor() {
- super('Unexpected state reached.');
- }
- }
- class TypeError extends Error {
- constructor(breadcrumbs, found, expected) {
- super(`Found a value of type '${found}' at ${getPath(breadcrumbs)}. Expected ${getOptionString(expected)}.`);
- }
- }
- class PropertyError extends Error {
- constructor(breadcrumbs, property, shouldExist) {
- super(`${shouldExist ? 'Missing' : 'Unexpected'} property '${property}' found at ${getPath(breadcrumbs)}.`);
- }
- }
- class ValueError extends Error {
- constructor(breadcrumbs, found, expected) {
- super(`Found a value of '${found}' at ${getPath(breadcrumbs)}. Expected ${getOptionString(expected)}.`);
- }
- }
- class NonIntegerError extends Error {
- constructor(breadcrumbs) {
- super(`Found illegal non-integer at ${getPath(breadcrumbs)}.`);
- }
- }
- class EmptyStringError extends Error {
- constructor(breadcrumbs) {
- super(`Found illegal empty string at ${getPath(breadcrumbs)}.`);
- }
- }
- class EmptyArrayError extends Error {
- constructor(breadcrumbs) {
- super(`Found illegal empty array at ${getPath(breadcrumbs)}.`);
- }
- }
- class PredicateError extends Error {
- constructor(breadcrumbs) {
- super(`Predicate failed at ${getPath(breadcrumbs)}. Predicates must succeed.`);
- }
- }
- class SeedMatchError extends Error {
- constructor() {
- super('All children must be structurally similar to their parent\'s seed.');
- }
- }
- class PoolBranchError extends Error {
- constructor(ancestorBreadcrumbs, descendantBreadcrumbs, poolId) {
- super('No node may share a poolId value with its ancestor.' + JoinedError.separator
- + `Found poolId value ${poolId} at ${getPath(ancestorBreadcrumbs)} and ${getPath(descendantBreadcrumbs)}.`);
- }
- }
- class PoolSizeError extends Error {
- constructor(poolId, found, expected) {
- super('Corresponding pools in the default & candidate trees must be the same size unless a pool parent or ancestor has a seed value.' + JoinedError.separator
- + `Found a size of ${found} at pool ${poolId}. Expected a size of ${expected}.`);
- }
- }
- class NoOptionsError extends Error {
- constructor() {
- super('Array type validators may not be empty.');
- }
- }
- class MismatchedOptionsError extends Error {
- constructor() {
- super('Values in array type validators must all be the same type.');
- }
- }
- class HangingPredicateError extends Error {
- constructor() {
- super('If a predicate is declared, a value must also be present.');
- }
- }
- class DeactivatedError extends Error {
- constructor() {
- super('Nodes can\'t be deactivated unless their parent has a seed.');
- }
- }
- class NoNodeColourError extends Error {
- constructor() {
- super('If the node color property is included, at least one value must be defined.');
- }
- }
-
-
- /***/ }),
-
- /***/ "./ts/library/validation/index.ts":
- /*!****************************************!*\
- !*** ./ts/library/validation/index.ts ***!
- \****************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),
- /* harmony export */ hasOwnProperty: () => (/* binding */ hasOwnProperty),
- /* harmony export */ validateUnexpectedKeys: () => (/* binding */ validateUnexpectedKeys)
- /* harmony export */ });
- /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types */ "./ts/library/validation/types.ts");
- /* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./errors */ "./ts/library/validation/errors.ts");
- /* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./styles */ "./ts/library/validation/styles.ts");
- /* harmony import */ var _trees_pools__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./trees/pools */ "./ts/library/validation/trees/pools.ts");
- /* harmony import */ var _trees_guards__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./trees/guards */ "./ts/library/validation/trees/guards.ts");
- /* harmony import */ var _trees_match__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./trees/match */ "./ts/library/validation/trees/match.ts");
- /* harmony import */ var _trees_predicates__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./trees/predicates */ "./ts/library/validation/trees/predicates.ts");
-
-
-
-
-
-
-
- // Helpers
- // Credit to https://fettblog.eu/typescript-hasownproperty/
- function hasOwnProperty(object, property) {
- return Object.hasOwnProperty.call(object, property);
- }
- function validateUnexpectedKeys(breadcrumbs, object, expected) {
- for (const key of Object.keys(object)) {
- if (!expected.includes(key))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.PropertyError(breadcrumbs, key, false);
- }
- }
- // Guard
- function isConfig(candidate) {
- if (typeof candidate !== 'object')
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.TypeError([], typeof candidate, ['object']);
- validateUnexpectedKeys([], candidate, _types__WEBPACK_IMPORTED_MODULE_0__.CONFIG_KEYS);
- // title
- if (!hasOwnProperty(candidate, 'title'))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.PropertyError([], 'title', true);
- if (typeof candidate.title !== 'string')
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.TypeError(['title'], typeof candidate.title, ['string']);
- // defaultStyle
- if (hasOwnProperty(candidate, 'defaultStyle')) {
- if (!(0,_styles__WEBPACK_IMPORTED_MODULE_2__.isStyles)(['defaultStyle'], candidate.defaultStyle))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.UnexpectedStateError();
- if (hasOwnProperty(candidate.defaultStyle, 'name'))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.PropertyError(['defaultStyle'], 'name', false);
- if (hasOwnProperty(candidate.defaultStyle, 'isActive'))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.PropertyError(['defaultStyle'], 'isActive', false);
- }
- // userStyles
- if (!hasOwnProperty(candidate, 'userStyles'))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.PropertyError([], 'userStyles', true);
- if (!Array.isArray(candidate.userStyles))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.TypeError(['userStyles'], typeof candidate.userStyles, ['array']);
- for (const [i, style] of candidate.userStyles.entries()) {
- if (!(0,_styles__WEBPACK_IMPORTED_MODULE_2__.isStyles)(['userStyles', i.toString()], style))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.UnexpectedStateError();
- if (!hasOwnProperty(style, 'name'))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.PropertyError(['userStyles', i.toString()], 'name', true);
- if (typeof style.name !== 'string')
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.TypeError(['userStyles', i.toString(), 'name'], typeof style.name, ['string']);
- if (!hasOwnProperty(style, 'isActive'))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.PropertyError(['userStyles', i.toString()], 'isActive', true);
- if (typeof style.isActive !== 'boolean')
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.TypeError(['userStyles', i.toString(), 'isActive'], typeof style.isActive, ['boolean']);
- }
- // defaultTree
- if (!hasOwnProperty(candidate, 'defaultTree') || !(0,_trees_guards__WEBPACK_IMPORTED_MODULE_4__.isRoot)(['defaultTree'], candidate.defaultTree))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.PropertyError([], 'defaultTree', true);
- // userTree
- if (hasOwnProperty(candidate, 'userTree') && !(0,_trees_guards__WEBPACK_IMPORTED_MODULE_4__.isRoot)(['userTree'], candidate.userTree, true))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.UnexpectedStateError();
- return true;
- }
- // Validator
- function validateConfig({ title, defaultTree, userTree }) {
- // title
- if (title.length === 0)
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.EmptyStringError(['title']);
- // trees
- (0,_trees_match__WEBPACK_IMPORTED_MODULE_5__.validateSeeds)(['defaultTree'], defaultTree);
- (0,_trees_pools__WEBPACK_IMPORTED_MODULE_3__.validatePools)(['defaultTree'], defaultTree);
- if (userTree) {
- (0,_trees_match__WEBPACK_IMPORTED_MODULE_5__.validateParentMatch)(['defaultTree'], defaultTree, ['userTree'], userTree);
- // Has to be done after mutations since new pools may be created
- (0,_trees_match__WEBPACK_IMPORTED_MODULE_5__.validatePoolSizeMatch)(defaultTree, userTree);
- }
- return Promise.all((0,_trees_predicates__WEBPACK_IMPORTED_MODULE_6__.validateParent)(['defaultTree'], defaultTree));
- }
- // API
- /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(candidate) {
- if (!isConfig(candidate))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.UnexpectedStateError();
- return validateConfig(candidate);
- }
-
-
- /***/ }),
-
- /***/ "./ts/library/validation/styles.ts":
- /*!*****************************************!*\
- !*** ./ts/library/validation/styles.ts ***!
- \*****************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ isStyles: () => (/* binding */ isStyles)
- /* harmony export */ });
- /* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./errors */ "./ts/library/validation/errors.ts");
- /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types */ "./ts/library/validation/types.ts");
-
-
- function isStyles(breadcrumbs, candidate) {
- if (typeof candidate !== 'object')
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.TypeError(breadcrumbs, typeof candidate, ['object']);
- if (Array.isArray(candidate))
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.TypeError(breadcrumbs, 'array', ['object']);
- for (const [key, value] of Object.entries(candidate)) {
- switch (key) {
- // Colours
- case 'modalOutline':
- case 'headBase':
- case 'headButtonExit':
- case 'headButtonLabel':
- case 'headButtonStyle':
- case 'nodeButtonRemove':
- case 'nodeButtonCreate':
- case 'nodeButtonMove':
- case 'nodeButtonDisable':
- case 'validBackground':
- case 'invalidBackground':
- case 'tooltipOutline':
- if (typeof value !== 'string')
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.TypeError([...breadcrumbs, key], typeof value, ['string']);
- break;
- // Numbers
- case 'fontSize':
- if (typeof value !== 'number')
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.TypeError([...breadcrumbs, key], typeof value, ['number']);
- break;
- // Contrast methods
- case 'headContrast':
- case 'nodeContrast':
- if (typeof value !== 'string')
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.TypeError([...breadcrumbs, key], typeof value, ['string']);
- if (!_types__WEBPACK_IMPORTED_MODULE_1__.CONTRAST_METHODS.includes(value))
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.ValueError([...breadcrumbs, key], value, _types__WEBPACK_IMPORTED_MODULE_1__.CONTRAST_METHODS);
- break;
- // Booleans
- case 'isActive':
- case 'borderLeaf':
- case 'borderNode':
- if (typeof value !== 'boolean')
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.TypeError([...breadcrumbs, key], typeof value, ['boolean']);
- break;
- case 'nodeBase':
- if (!Array.isArray(value))
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.TypeError([...breadcrumbs, key], typeof value, ['array']);
- if (value.length === 0)
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.JoinedError(new _errors__WEBPACK_IMPORTED_MODULE_0__.NoNodeColourError(), new _errors__WEBPACK_IMPORTED_MODULE_0__.EmptyArrayError([...breadcrumbs, key]));
- for (const [i, subValue] of value.entries()) {
- if (typeof subValue !== 'string')
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.TypeError([...breadcrumbs, key, i.toString()], typeof subValue, ['string']);
- }
- break;
- }
- }
- return true;
- }
-
-
- /***/ }),
-
- /***/ "./ts/library/validation/trees/guards.ts":
- /*!***********************************************!*\
- !*** ./ts/library/validation/trees/guards.ts ***!
- \***********************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ isParent: () => (/* binding */ isParent),
- /* harmony export */ isRoot: () => (/* binding */ isRoot)
- /* harmony export */ });
- /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ "./ts/library/validation/types.ts");
- /* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../errors */ "./ts/library/validation/errors.ts");
- /* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../index */ "./ts/library/validation/index.ts");
-
-
-
- // Type predicates
- function isParent(breadcrumbs, candidate, isUserTree = false) {
- if (!(0,_index__WEBPACK_IMPORTED_MODULE_2__.hasOwnProperty)(candidate, 'children'))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.PropertyError(breadcrumbs, 'children', true);
- if (!Array.isArray(candidate.children))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.TypeError([...breadcrumbs, 'children'], typeof candidate.children, ['array']);
- if ((0,_index__WEBPACK_IMPORTED_MODULE_2__.hasOwnProperty)(candidate, 'seed')) {
- if (isUserTree)
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.PropertyError(breadcrumbs, 'descendantPredicate', false);
- if (!isChild([...breadcrumbs, 'seed'], candidate.seed))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.UnexpectedStateError();
- }
- if ((0,_index__WEBPACK_IMPORTED_MODULE_2__.hasOwnProperty)(candidate, 'childPredicate')) {
- if (isUserTree)
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.PropertyError(breadcrumbs, 'childPredicate', false);
- if (typeof candidate.childPredicate !== 'function')
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.TypeError([...breadcrumbs, 'childPredicate'], typeof candidate.childPredicate, ['function']);
- }
- if ((0,_index__WEBPACK_IMPORTED_MODULE_2__.hasOwnProperty)(candidate, 'descendantPredicate')) {
- if (isUserTree)
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.PropertyError(breadcrumbs, 'descendantPredicate', false);
- if (typeof candidate.descendantPredicate !== 'function')
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.TypeError([...breadcrumbs, 'descendantPredicate'], typeof candidate.descendantPredicate, ['function']);
- }
- if ((0,_index__WEBPACK_IMPORTED_MODULE_2__.hasOwnProperty)(candidate, 'poolId') && typeof candidate.poolId !== 'number')
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.TypeError([...breadcrumbs, 'poolId'], typeof candidate.poolId, ['number']);
- for (const [i, child] of candidate.children.entries()) {
- if (!isChild([...breadcrumbs, 'children', i.toString()], child, isUserTree))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.UnexpectedStateError();
- }
- return true;
- }
- function isChild(breadcrumbs, candidate, isUserTree = false) {
- if (typeof candidate !== 'object')
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.TypeError([...breadcrumbs], typeof candidate, ['object']);
- if ((0,_index__WEBPACK_IMPORTED_MODULE_2__.hasOwnProperty)(candidate, 'label') && typeof candidate.label !== 'string')
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.TypeError([...breadcrumbs, 'label'], typeof candidate.label, ['string']);
- if ((0,_index__WEBPACK_IMPORTED_MODULE_2__.hasOwnProperty)(candidate, 'value') && !_types__WEBPACK_IMPORTED_MODULE_0__.VALUE_TYPES.includes(typeof candidate.value))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.TypeError([...breadcrumbs, 'value'], typeof candidate.value, _types__WEBPACK_IMPORTED_MODULE_0__.VALUE_TYPES);
- if ((0,_index__WEBPACK_IMPORTED_MODULE_2__.hasOwnProperty)(candidate, 'predicate')) {
- if (isUserTree)
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.PropertyError(breadcrumbs, 'predicate', false);
- if (typeof candidate.predicate !== 'function') {
- if (!Array.isArray(candidate.predicate))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.TypeError([...breadcrumbs, 'predicate'], typeof candidate.predicate, _types__WEBPACK_IMPORTED_MODULE_0__.PREDICATE_TYPES);
- for (const [i, option] of candidate.predicate.entries()) {
- if (!_types__WEBPACK_IMPORTED_MODULE_0__.VALUE_TYPES.includes(typeof option))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.TypeError([...breadcrumbs, 'predicate', i.toString()], typeof option, _types__WEBPACK_IMPORTED_MODULE_0__.VALUE_TYPES);
- }
- }
- }
- if ((0,_index__WEBPACK_IMPORTED_MODULE_2__.hasOwnProperty)(candidate, 'input')) {
- if (typeof candidate.input !== 'string')
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.TypeError([...breadcrumbs, 'input'], typeof candidate.input, ['string']);
- if (!_types__WEBPACK_IMPORTED_MODULE_0__.INPUT_FORMATS.includes(candidate.input))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.ValueError([...breadcrumbs, 'input'], candidate.input, _types__WEBPACK_IMPORTED_MODULE_0__.INPUT_FORMATS);
- }
- if ((0,_index__WEBPACK_IMPORTED_MODULE_2__.hasOwnProperty)(candidate, 'isActive') && typeof candidate.isActive !== 'boolean')
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.TypeError([...breadcrumbs, 'isActive'], typeof candidate.isActive, ['boolean']);
- if ((0,_index__WEBPACK_IMPORTED_MODULE_2__.hasOwnProperty)(candidate, 'children')) {
- if (!isParent(breadcrumbs, candidate, isUserTree))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.UnexpectedStateError();
- (0,_index__WEBPACK_IMPORTED_MODULE_2__.validateUnexpectedKeys)(breadcrumbs, candidate, _types__WEBPACK_IMPORTED_MODULE_0__.MIDDLE_KEYS);
- }
- else {
- (0,_index__WEBPACK_IMPORTED_MODULE_2__.validateUnexpectedKeys)(breadcrumbs, candidate, _types__WEBPACK_IMPORTED_MODULE_0__.LEAF_KEYS);
- }
- return true;
- }
- function isRoot(breadcrumbs, candidate, isUserTree = false) {
- if (typeof candidate !== 'object')
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.TypeError(breadcrumbs, typeof candidate, ['object']);
- if (!isParent(breadcrumbs, candidate, isUserTree))
- throw new _errors__WEBPACK_IMPORTED_MODULE_1__.UnexpectedStateError();
- (0,_index__WEBPACK_IMPORTED_MODULE_2__.validateUnexpectedKeys)(breadcrumbs, candidate, _types__WEBPACK_IMPORTED_MODULE_0__.ROOT_KEYS);
- return true;
- }
-
-
- /***/ }),
-
- /***/ "./ts/library/validation/trees/match.ts":
- /*!**********************************************!*\
- !*** ./ts/library/validation/trees/match.ts ***!
- \**********************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ validateParentMatch: () => (/* binding */ validateParentMatch),
- /* harmony export */ validatePoolSizeMatch: () => (/* binding */ validatePoolSizeMatch),
- /* harmony export */ validateSeeds: () => (/* binding */ validateSeeds)
- /* harmony export */ });
- /* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../errors */ "./ts/library/validation/errors.ts");
-
- function mutateMatch(model, candidate, validate, property) {
- try {
- validate([], model, [], candidate);
- }
- catch (error) {
- if (property in model) {
- candidate[property] = model[property];
- }
- else {
- delete candidate[property];
- }
- }
- }
- function validatePredicateMatch(isFrozen, modelBreadcrumbs, model, candidateBreadcrumbs, candidate) {
- if ('predicate' in model !== 'predicate' in candidate)
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.PropertyError(candidateBreadcrumbs, 'predicate', 'predicate' in model);
- if (typeof model.predicate !== typeof candidate.predicate)
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.TypeError([...candidateBreadcrumbs, 'predicate'], typeof candidate.predicate, [typeof model.predicate]);
- if (typeof model.predicate === 'object') {
- const { length } = candidate.predicate;
- if (!isFrozen && !model.predicate.includes(candidate.value)) {
- candidate.value = model.predicate[candidate.predicate.indexOf(candidate.value)];
- }
- if (model.predicate.length !== length)
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.ValueError([...candidateBreadcrumbs, 'predicate', 'length'], length, [model.predicate.length]);
- for (const [i, option] of model.predicate.entries()) {
- if (candidate.predicate[i] !== option)
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.ValueError([...candidateBreadcrumbs, 'predicate', i.toString()], candidate.predicate[i], [option]);
- }
- }
- }
- function validateValueMatch(property, modelBreadcrumbs, model, candidateBreadcrumbs, candidate) {
- if (property in model !== property in candidate)
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.PropertyError(candidateBreadcrumbs, property, property in model);
- if (model[property] !== candidate[property])
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.ValueError([...candidateBreadcrumbs, property], candidate[property], [model[property]]);
- }
- // Tree validators
- function validateParentMatch(modelBreadcrumbs, model, candidateBreadcrumbs, candidate, isFrozen = false) {
- if (isFrozen) {
- validateValueMatch('poolId', modelBreadcrumbs, model, candidateBreadcrumbs, candidate);
- validateValueMatch('childPredicate', modelBreadcrumbs, model, candidateBreadcrumbs, candidate);
- validateValueMatch('descendantPredicate', modelBreadcrumbs, model, candidateBreadcrumbs, candidate);
- }
- else {
- mutateMatch(model, candidate, validateValueMatch.bind(null, 'poolId'), 'poolId');
- if ('childPredicate' in model)
- candidate.childPredicate = model.childPredicate;
- if ('descendantPredicate' in model)
- candidate.descendantPredicate = model.descendantPredicate;
- if ('seed' in model)
- candidate.seed = model.seed;
- }
- if ('seed' in model) {
- if (isFrozen) {
- validateChildMatch([...modelBreadcrumbs, 'seed'], model.seed, [...candidateBreadcrumbs, 'seed'], candidate.seed, true);
- }
- for (const [i, child] of candidate.children.entries()) {
- validateChildMatch([...modelBreadcrumbs, 'seed'], model.seed, [...candidateBreadcrumbs, 'children', i.toString()], child, isFrozen);
- }
- }
- else if (!('poolId' in model)) {
- if (isFrozen && model.children.length !== candidate.children.length)
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.ValueError([...candidateBreadcrumbs, 'children', 'length'], candidate.children.length, [model.children.length]);
- if (model.children.length < candidate.children.length) {
- candidate.children = candidate.children.slice(0, model.children.length);
- }
- for (const [i, child] of candidate.children.entries()) {
- validateChildMatch([...modelBreadcrumbs, 'children', i.toString()], model.children[i], [...candidateBreadcrumbs, 'children', i.toString()], child, isFrozen);
- }
- if (model.children.length > candidate.children.length) {
- candidate.children.push(...model.children.slice(candidate.children.length));
- }
- }
- }
- function validateChildMatch(modelBreadcrumbs, model, candidateBreadcrumbs, candidate, isFrozen = true) {
- if ('value' in model !== 'value' in candidate) {
- if (isFrozen || 'value' in candidate)
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.PropertyError(candidateBreadcrumbs, 'value', false);
- candidate.value = model.value;
- }
- else {
- if (typeof model.value !== typeof candidate.value)
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.TypeError([...candidateBreadcrumbs, 'value'], typeof candidate.value, [typeof model.value]);
- }
- if (isFrozen) {
- validateValueMatch('label', modelBreadcrumbs, model, candidateBreadcrumbs, candidate);
- validatePredicateMatch(true, modelBreadcrumbs, model, candidateBreadcrumbs, candidate);
- }
- else {
- if (typeof model.value !== typeof candidate.value)
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.TypeError([...candidateBreadcrumbs, 'value'], typeof candidate.value, [typeof model.value]);
- mutateMatch(model, candidate, validateValueMatch.bind(null, 'label'), 'label');
- if ('predicate' in model)
- candidate.predicate = model.predicate;
- }
- if ('children' in model !== 'children' in candidate)
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.PropertyError(candidateBreadcrumbs, 'children', 'children' in model);
- if ('children' in model) {
- validateParentMatch(modelBreadcrumbs, model, candidateBreadcrumbs, candidate, isFrozen);
- }
- }
- function validateSeeds(breadcrumbs, node) {
- if ('children' in node) {
- if ('seed' in node) {
- try {
- for (const [i, child] of node.children.entries()) {
- validateChildMatch([...breadcrumbs, 'seed'], node.seed, [...breadcrumbs, 'children', i.toString()], child);
- }
- }
- catch (error) {
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.JoinedError(new _errors__WEBPACK_IMPORTED_MODULE_0__.SeedMatchError(), error);
- }
- validateSeeds([...breadcrumbs, 'seed'], node.seed);
- }
- else {
- for (const [i, child] of node.children.entries()) {
- if ('isActive' in child && !child.isActive) {
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.JoinedError(new _errors__WEBPACK_IMPORTED_MODULE_0__.DeactivatedError(), new _errors__WEBPACK_IMPORTED_MODULE_0__.ValueError([...breadcrumbs, 'children', i.toString(), 'isActive'], false, [true]));
- }
- }
- }
- for (const [i, child] of node.children.entries()) {
- validateSeeds([...breadcrumbs, 'children', i.toString()], child);
- }
- }
- }
- function getPoolSizes(node, uncapped = false) {
- const poolSizes = [];
- uncapped = uncapped || 'seed' in node;
- if ('poolId' in node) {
- poolSizes[node.poolId] = uncapped ? -1 : node.children.length;
- }
- if ('children' in node) {
- for (const child of node.children) {
- const subPoolSizes = getPoolSizes(child, uncapped);
- for (const id in subPoolSizes) {
- if (subPoolSizes[id] < 0) {
- poolSizes[id] = -1;
- }
- else if (id in poolSizes) {
- poolSizes[id] += subPoolSizes[id];
- }
- else {
- poolSizes[id] = subPoolSizes[id];
- }
- }
- }
- }
- return poolSizes;
- }
- function validatePoolSizeMatch(model, candidate) {
- const modelSizes = getPoolSizes(model);
- const candidateSizes = getPoolSizes(candidate);
- for (const id in modelSizes) {
- if (modelSizes[id] !== candidateSizes[id])
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.PoolSizeError(Number.parseInt(id), candidateSizes[id], modelSizes[id]);
- }
- }
-
-
- /***/ }),
-
- /***/ "./ts/library/validation/trees/pools.ts":
- /*!**********************************************!*\
- !*** ./ts/library/validation/trees/pools.ts ***!
- \**********************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ validatePools: () => (/* binding */ validatePools)
- /* harmony export */ });
- /* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../errors */ "./ts/library/validation/errors.ts");
-
- function validatePools(breadcrumbs, node, ancestorPools = []) {
- if ('poolId' in node) {
- if (node.poolId in ancestorPools)
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.PoolBranchError(ancestorPools[node.poolId], breadcrumbs, node.poolId);
- // Slice maintains empty entries, so the 'in' operator still works
- ancestorPools = ancestorPools.slice();
- ancestorPools[node.poolId] = breadcrumbs;
- }
- if ('children' in node) {
- // Recurse
- for (const [i, child] of node.children.entries()) {
- validatePools([...breadcrumbs, 'children', i.toString()], child, ancestorPools);
- }
- }
- }
-
-
- /***/ }),
-
- /***/ "./ts/library/validation/trees/predicates.ts":
- /*!***************************************************!*\
- !*** ./ts/library/validation/trees/predicates.ts ***!
- \***************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ validateParent: () => (/* binding */ validateParent)
- /* harmony export */ });
- /* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../errors */ "./ts/library/validation/errors.ts");
- /* harmony import */ var _predicate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/predicate */ "./ts/predicate.ts");
- var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- };
-
-
- function getBoundPredicatePromise(response, { message }) {
- return __awaiter(this, void 0, void 0, function* () {
- try {
- yield (0,_predicate__WEBPACK_IMPORTED_MODULE_1__.getPredicatePromise)(response);
- }
- catch (cause) {
- throw new Error(message /* , {cause} */);
- }
- });
- }
- function validateValue(valueBreadcrumbs, value, predicateBreadcrumbs, predicate) {
- return __awaiter(this, void 0, void 0, function* () {
- if (typeof predicate === 'function') {
- yield getBoundPredicatePromise(predicate(value), new _errors__WEBPACK_IMPORTED_MODULE_0__.PredicateError(predicateBreadcrumbs));
- return;
- }
- if (!predicate.includes(value))
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.JoinedError(new _errors__WEBPACK_IMPORTED_MODULE_0__.PredicateError(predicateBreadcrumbs), new _errors__WEBPACK_IMPORTED_MODULE_0__.ValueError(valueBreadcrumbs, value, predicate));
- });
- }
- function validateChild(breadcrumbs, child) {
- return __awaiter(this, void 0, void 0, function* () {
- if (!('predicate' in child)) {
- return;
- }
- if (!('value' in child)) {
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.JoinedError(new _errors__WEBPACK_IMPORTED_MODULE_0__.HangingPredicateError(), new _errors__WEBPACK_IMPORTED_MODULE_0__.PropertyError(breadcrumbs, 'value', true));
- }
- if (Array.isArray(child.predicate)) {
- if (child.predicate.length === 0)
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.JoinedError(new _errors__WEBPACK_IMPORTED_MODULE_0__.NoOptionsError(), new _errors__WEBPACK_IMPORTED_MODULE_0__.EmptyArrayError([...breadcrumbs, 'predicate']));
- const type = typeof child.predicate[0];
- for (let i = 1; i < child.predicate.length; ++i) {
- if (typeof child.predicate[i] !== type)
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.JoinedError(new _errors__WEBPACK_IMPORTED_MODULE_0__.MismatchedOptionsError(), new _errors__WEBPACK_IMPORTED_MODULE_0__.TypeError([...breadcrumbs, 'predicate', i.toString()], typeof child.predicate[i], [type]));
- }
- }
- yield validateValue([...breadcrumbs, 'value'], child.value, [...breadcrumbs, 'predicate'], child.predicate);
- });
- }
- function validateParent(breadcrumbs, parent) {
- const promises = [];
- if ('seed' in parent) {
- const { seed } = parent;
- promises.push(validateChild([...breadcrumbs, 'seed'], seed));
- if ('children' in seed) {
- promises.push(...validateParent([...breadcrumbs, 'seed'], seed));
- }
- }
- const { children } = parent;
- if ('poolId' in parent && Math.floor(parent.poolId) !== parent.poolId)
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.NonIntegerError([...breadcrumbs, 'poolId']);
- if ('childPredicate' in parent) {
- promises.push(getBoundPredicatePromise(parent.childPredicate(children), new _errors__WEBPACK_IMPORTED_MODULE_0__.PredicateError([...breadcrumbs, 'childPredicate'])));
- }
- if ('descendantPredicate' in parent) {
- promises.push(getBoundPredicatePromise(parent.descendantPredicate(children), new _errors__WEBPACK_IMPORTED_MODULE_0__.PredicateError([...breadcrumbs, 'descendantPredicate'])));
- }
- for (const [i, child] of children.entries()) {
- const childBreadcrumbs = [...breadcrumbs, 'children', i.toString()];
- promises.push(validateChild(childBreadcrumbs, child));
- if ('children' in child) {
- promises.push(...validateParent(childBreadcrumbs, child));
- }
- }
- return promises;
- }
-
-
- /***/ }),
-
- /***/ "./ts/library/validation/types.ts":
- /*!****************************************!*\
- !*** ./ts/library/validation/types.ts ***!
- \****************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ CONFIG_KEYS: () => (/* binding */ CONFIG_KEYS),
- /* harmony export */ CONTRAST_METHODS: () => (/* binding */ CONTRAST_METHODS),
- /* harmony export */ INPUT_FORMATS: () => (/* binding */ INPUT_FORMATS),
- /* harmony export */ LEAF_KEYS: () => (/* binding */ LEAF_KEYS),
- /* harmony export */ MIDDLE_KEYS: () => (/* binding */ MIDDLE_KEYS),
- /* harmony export */ PREDICATE_TYPES: () => (/* binding */ PREDICATE_TYPES),
- /* harmony export */ ROOT_KEYS: () => (/* binding */ ROOT_KEYS),
- /* harmony export */ VALUE_TYPES: () => (/* binding */ VALUE_TYPES)
- /* harmony export */ });
- // Value types
- const VALUE_TYPES = ['boolean', 'number', 'string'];
- const PREDICATE_TYPES = ['array', 'function'];
- const INPUT_FORMATS = ['color', 'date', 'datetime-local', 'email', 'month', 'password', 'search', 'tel', 'text', 'time', 'url', 'week'];
- const CONTRAST_METHODS = ['Black / White', 'Invert'];
- // Node types
- const LEAF_KEYS = ['label', 'value', 'predicate', 'input', 'isActive'];
- const ROOT_KEYS = ['children', 'seed', 'childPredicate', 'descendantPredicate', 'poolId'];
- const MIDDLE_KEYS = [...LEAF_KEYS, ...ROOT_KEYS];
- // Config type
- const CONFIG_KEYS = ['title', 'defaultTree', 'userTree', 'defaultStyle', 'userStyles'];
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/consts.ts":
- /*!*********************************!*\
- !*** ./ts/modal/body/consts.ts ***!
- \*********************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ MODAL_BODY_ID: () => (/* binding */ MODAL_BODY_ID)
- /* harmony export */ });
- const MODAL_BODY_ID = 'modal-body';
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/css.ts":
- /*!******************************!*\
- !*** ./ts/modal/body/css.ts ***!
- \******************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../css */ "./ts/modal/css.ts");
-
-
- function generate() {
- (0,_css__WEBPACK_IMPORTED_MODULE_1__.addRule)(`#${_consts__WEBPACK_IMPORTED_MODULE_0__.MODAL_BODY_ID}`, [
- ['overflow', 'hidden'],
- ['position', 'relative'],
- ]);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/index.ts":
- /*!********************************!*\
- !*** ./ts/modal/body/index.ts ***!
- \********************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate),
- /* harmony export */ reset: () => (/* binding */ reset)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/consts.ts");
- /* harmony import */ var _trees__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./trees */ "./ts/modal/body/trees/index.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./css */ "./ts/modal/body/css.ts");
- /* harmony import */ var _trees_style__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./trees/style */ "./ts/modal/body/trees/style/index.ts");
- /* harmony import */ var _trees_data__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./trees/data */ "./ts/modal/body/trees/data/index.ts");
- /* harmony import */ var _trees_style_update__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./trees/style/update */ "./ts/modal/body/trees/style/update/index.ts");
- /* harmony import */ var _nodes_actions_highlight__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @nodes/actions/highlight */ "./ts/modal/body/trees/nodes/actions/highlight/index.ts");
- /* harmony import */ var _nodes_actions_active__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @nodes/actions/active */ "./ts/modal/body/trees/nodes/actions/active.ts");
-
-
-
-
-
-
-
-
- let resetTree;
- function generate({ userTree, defaultTree, userStyles, defaultStyle }) {
- resetTree = defaultTree;
- (0,_trees_style_update__WEBPACK_IMPORTED_MODULE_5__["default"])((0,_trees_style__WEBPACK_IMPORTED_MODULE_3__.getActiveStyle)(userStyles, defaultStyle));
- (0,_css__WEBPACK_IMPORTED_MODULE_2__["default"])();
- const element = document.createElement('div');
- element.id = _consts__WEBPACK_IMPORTED_MODULE_0__.MODAL_BODY_ID;
- element.append((0,_trees__WEBPACK_IMPORTED_MODULE_1__["default"])(userTree !== null && userTree !== void 0 ? userTree : defaultTree, userStyles, defaultStyle), (0,_nodes_actions_highlight__WEBPACK_IMPORTED_MODULE_6__.generateEave)());
- (0,_nodes_actions_highlight__WEBPACK_IMPORTED_MODULE_6__.onMount)();
- (0,_nodes_actions_active__WEBPACK_IMPORTED_MODULE_7__.onMount)();
- return element;
- }
- function reset() {
- (0,_trees_data__WEBPACK_IMPORTED_MODULE_4__.setTree)(resetTree);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/consts.ts":
- /*!***************************************!*\
- !*** ./ts/modal/body/trees/consts.ts ***!
- \***************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ TREE_CONTAINER_ID: () => (/* binding */ TREE_CONTAINER_ID)
- /* harmony export */ });
- const TREE_CONTAINER_ID = 'tree-container';
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/css.ts":
- /*!************************************!*\
- !*** ./ts/modal/body/trees/css.ts ***!
- \************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../css */ "./ts/modal/css.ts");
- /* harmony import */ var _nodes_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nodes/css */ "./ts/modal/body/trees/nodes/css.ts");
- /* harmony import */ var _nodes_actions_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @nodes/actions/css */ "./ts/modal/body/trees/nodes/actions/css.ts");
-
-
-
-
- function generate() {
- (0,_nodes_css__WEBPACK_IMPORTED_MODULE_2__["default"])();
- (0,_nodes_actions_css__WEBPACK_IMPORTED_MODULE_3__["default"])();
- (0,_css__WEBPACK_IMPORTED_MODULE_1__.addRule)(`#${_consts__WEBPACK_IMPORTED_MODULE_0__.TREE_CONTAINER_ID}`, [
- ['height', '60vh'],
- ['overflow-y', 'auto'],
- ['overscroll-behavior', 'contain'],
- ['display', 'flex'],
- ['background-color', `var(--nodeBase0)`],
- ]);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/data/consts.ts":
- /*!********************************************!*\
- !*** ./ts/modal/body/trees/data/consts.ts ***!
- \********************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ ROOT_ID: () => (/* binding */ ROOT_ID)
- /* harmony export */ });
- const ROOT_ID = 'root-data';
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/data/index.ts":
- /*!*******************************************!*\
- !*** ./ts/modal/body/trees/data/index.ts ***!
- \*******************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate),
- /* harmony export */ getRoot: () => (/* binding */ getRoot),
- /* harmony export */ setTree: () => (/* binding */ setTree)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/data/consts.ts");
- /* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../index */ "./ts/modal/body/trees/index.ts");
-
-
- function getRoot() {
- return _index__WEBPACK_IMPORTED_MODULE_1__.ROOTS[_consts__WEBPACK_IMPORTED_MODULE_0__.ROOT_ID];
- }
- function setTree(data) {
- const root = getRoot();
- // Spread is necessary to avoid a shrinking iterable
- for (const child of [...root.children]) {
- child.disconnect();
- }
- root.addChildren(data.children);
- }
- function generate(data) {
- return (0,_index__WEBPACK_IMPORTED_MODULE_1__.generateTree)(data, _consts__WEBPACK_IMPORTED_MODULE_0__.ROOT_ID);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/index.ts":
- /*!**************************************!*\
- !*** ./ts/modal/body/trees/index.ts ***!
- \**************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ ROOTS: () => (/* binding */ ROOTS),
- /* harmony export */ TREE_CONTAINER: () => (/* binding */ TREE_CONTAINER),
- /* harmony export */ "default": () => (/* binding */ generate),
- /* harmony export */ generateTree: () => (/* binding */ generateTree),
- /* harmony export */ setActive: () => (/* binding */ setActive)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/consts.ts");
- /* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./style */ "./ts/modal/body/trees/style/index.ts");
- /* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./data */ "./ts/modal/body/trees/data/index.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./css */ "./ts/modal/body/trees/css.ts");
- /* harmony import */ var _nodes_root__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./nodes/root */ "./ts/modal/body/trees/nodes/root.ts");
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../consts */ "./ts/modal/consts.ts");
-
-
-
-
-
-
- const ROOTS = {};
- const TREE_CONTAINER = document.createElement('div');
- function setActive(button, actionId, doActivate = true) {
- if (doActivate) {
- button.classList.add(_consts__WEBPACK_IMPORTED_MODULE_5__.BUTTON_ACTIVE_CLASS);
- TREE_CONTAINER.classList.add(actionId);
- }
- else {
- button.classList.remove(_consts__WEBPACK_IMPORTED_MODULE_5__.BUTTON_ACTIVE_CLASS);
- TREE_CONTAINER.classList.remove(actionId);
- }
- }
- function generateTree(data, id) {
- if (ROOTS[id]) {
- throw new Error(`Attempted to instantiate second tree with id '${id}'.`);
- }
- const root = new _nodes_root__WEBPACK_IMPORTED_MODULE_4__["default"](data);
- root.element.elementContainer.id = id;
- ROOTS[id] = root;
- return root.element.elementContainer;
- }
- function generate(data, userStyles, defaultStyle) {
- (0,_css__WEBPACK_IMPORTED_MODULE_3__["default"])();
- TREE_CONTAINER.id = _consts__WEBPACK_IMPORTED_MODULE_0__.TREE_CONTAINER_ID;
- TREE_CONTAINER.append((0,_style__WEBPACK_IMPORTED_MODULE_1__["default"])(userStyles, defaultStyle), (0,_data__WEBPACK_IMPORTED_MODULE_2__["default"])(data));
- return TREE_CONTAINER;
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/active.ts":
- /*!*****************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/active.ts ***!
- \*****************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ onMount: () => (/* binding */ onMount),
- /* harmony export */ register: () => (/* binding */ register),
- /* harmony export */ reset: () => (/* binding */ reset)
- /* harmony export */ });
- /* harmony import */ var _edit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./edit */ "./ts/modal/body/trees/nodes/actions/edit/index.ts");
- /* harmony import */ var _highlight__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./highlight */ "./ts/modal/body/trees/nodes/actions/highlight/index.ts");
- /* harmony import */ var _focus__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./focus */ "./ts/modal/body/trees/nodes/actions/focus/index.ts");
- /* harmony import */ var _buttons_position__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./buttons/position */ "./ts/modal/body/trees/nodes/actions/buttons/position/index.ts");
- /* harmony import */ var _modal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/modal */ "./ts/modal/index.ts");
-
-
-
-
-
- function register() {
- _edit__WEBPACK_IMPORTED_MODULE_0__.reset();
- }
- function reset() {
- for (const action of [_edit__WEBPACK_IMPORTED_MODULE_0__, _buttons_position__WEBPACK_IMPORTED_MODULE_3__, _focus__WEBPACK_IMPORTED_MODULE_2__, _highlight__WEBPACK_IMPORTED_MODULE_1__]) {
- if (action.isActive()) {
- action.reset();
- return true;
- }
- }
- return false;
- }
- function onMount() {
- (0,_modal__WEBPACK_IMPORTED_MODULE_4__.getSocket)().addEventListener('keydown', (event) => {
- if (event.key === 'Escape' && reset()) {
- event.stopPropagation();
- }
- });
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/button.ts":
- /*!*************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/button.ts ***!
- \*************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ addActionButton: () => (/* binding */ addActionButton),
- /* harmony export */ getNewButton: () => (/* binding */ getNewButton)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/buttons/consts.ts");
- /* harmony import */ var _active__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../active */ "./ts/modal/body/trees/nodes/actions/active.ts");
- /* harmony import */ var _modal_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/consts */ "./ts/modal/consts.ts");
- /* harmony import */ var _modal_header_actions_alternate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/modal/header/actions/alternate */ "./ts/modal/header/actions/alternate/index.ts");
-
-
-
-
- // Creates an instantiation & adds it to the DOM
- function addActionButton(template, onClick, node) {
- const button = template.cloneNode(true);
- button.addEventListener('click', (event) => {
- event.stopPropagation();
- _active__WEBPACK_IMPORTED_MODULE_1__.register();
- onClick(node, button, (0,_modal_header_actions_alternate__WEBPACK_IMPORTED_MODULE_3__.isActive)());
- });
- button.addEventListener('keydown', (event) => {
- // Prevent button presses via the Enter key from triggering actions
- if (event.key === 'Enter') {
- event.stopPropagation();
- }
- });
- button.addEventListener('mouseleave', () => {
- button.blur();
- });
- node.element.addButton(button);
- return button;
- }
- // Creates a template
- const getNewButton = (function () {
- const buttonTemplate = document.createElement('button');
- buttonTemplate.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS);
- // Prevent tabbing to buttons until node is focused
- buttonTemplate.setAttribute('tabIndex', '-1');
- const svgTemplate = (() => {
- const circle = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'circle');
- circle.setAttribute('r', '50');
- circle.setAttribute('stroke-width', '10');
- const svg = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'svg');
- svg.setAttribute('viewBox', '-70 -70 140 140');
- svg.append(circle);
- return svg;
- })();
- return function (group, actionId, description) {
- const button = buttonTemplate.cloneNode(true);
- const svg = svgTemplate.cloneNode(true);
- button.classList.add(actionId);
- button.title = description;
- svg.append(group);
- button.append(svg);
- return button;
- };
- })();
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/consts.ts":
- /*!*************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/consts.ts ***!
- \*************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ ALT_CLASS: () => (/* binding */ ALT_CLASS),
- /* harmony export */ BUTTON_CLASS: () => (/* binding */ BUTTON_CLASS),
- /* harmony export */ PROSPECTIVE_CLASS: () => (/* binding */ PROSPECTIVE_CLASS)
- /* harmony export */ });
- const BUTTON_CLASS = 'node-button';
- const ALT_CLASS = 'node-icon-alt';
- const PROSPECTIVE_CLASS = 'node-prospective';
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/create/button.ts":
- /*!********************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/create/button.ts ***!
- \********************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/buttons/create/consts.ts");
- /* harmony import */ var _position_button_alt__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../position/button/alt */ "./ts/modal/body/trees/nodes/actions/buttons/position/button/alt.ts");
- /* harmony import */ var _modal_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/consts */ "./ts/modal/consts.ts");
-
-
-
- const lineHorizontal = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'line');
- lineHorizontal.setAttribute('stroke-linecap', 'round');
- lineHorizontal.setAttribute('stroke-width', '12');
- lineHorizontal.setAttribute('x1', '-25');
- lineHorizontal.setAttribute('x2', '25');
- const lineVertical = lineHorizontal.cloneNode(true);
- lineVertical.setAttribute('transform', 'rotate(90)');
- const g = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'g');
- g.append(lineHorizontal, lineVertical);
- const BUTTON = (0,_position_button_alt__WEBPACK_IMPORTED_MODULE_1__.getPositionedButton)(g, _consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, 'Create', { scale: '1 1.15' });
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BUTTON);
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/create/consts.ts":
- /*!********************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/create/consts.ts ***!
- \********************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ ACTION_ID: () => (/* binding */ ACTION_ID)
- /* harmony export */ });
- const ACTION_ID = 'node-create';
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/create/css.ts":
- /*!*****************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/create/css.ts ***!
- \*****************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/buttons/create/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../css */ "./ts/modal/body/trees/nodes/actions/buttons/css.ts");
-
-
- function generate() {
- (0,_css__WEBPACK_IMPORTED_MODULE_1__.addColourRule)(_consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, '--nodeButtonCreate');
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/create/index.ts":
- /*!*******************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/create/index.ts ***!
- \*******************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ mount: () => (/* binding */ mount),
- /* harmony export */ shouldMount: () => (/* binding */ shouldMount)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/buttons/create/consts.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./button */ "./ts/modal/body/trees/nodes/actions/buttons/create/button.ts");
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../consts */ "./ts/modal/body/trees/nodes/actions/buttons/consts.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../button */ "./ts/modal/body/trees/nodes/actions/buttons/button.ts");
- /* harmony import */ var _position__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../position */ "./ts/modal/body/trees/nodes/actions/buttons/position/index.ts");
- /* harmony import */ var _edit__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../edit */ "./ts/modal/body/trees/nodes/actions/edit/index.ts");
- /* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../tooltip */ "./ts/modal/body/trees/nodes/actions/tooltip/index.ts");
- /* harmony import */ var _nodes_middle__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @nodes/middle */ "./ts/modal/body/trees/nodes/middle.ts");
- /* harmony import */ var _nodes_child__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @nodes/child */ "./ts/modal/body/trees/nodes/child.ts");
-
-
-
-
-
-
-
-
-
- let activeNode;
- function reset() {
- if (!activeNode) {
- return;
- }
- _position__WEBPACK_IMPORTED_MODULE_4__.reset();
- activeNode = undefined;
- }
- function getChild(node) {
- const { seed } = node;
- const child = 'children' in seed ? new _nodes_middle__WEBPACK_IMPORTED_MODULE_7__["default"](seed, node, 0) : new _nodes_child__WEBPACK_IMPORTED_MODULE_8__["default"](seed, node, 0);
- child.element.addClass(_consts__WEBPACK_IMPORTED_MODULE_2__.PROSPECTIVE_CLASS);
- return child;
- }
- function doAction(source, parent, index, button) {
- const child = getChild(source);
- child.move(parent, index);
- Promise.all((0,_edit__WEBPACK_IMPORTED_MODULE_5__.getSubPredicateResponses)(parent))
- .then(() => {
- child.element.removeClass(_consts__WEBPACK_IMPORTED_MODULE_2__.PROSPECTIVE_CLASS);
- child.isActive = true;
- reset();
- // Show the new node
- child.element.scrollIntoView();
- })
- .catch((reason) => {
- child.disconnect();
- if (reason) {
- (0,_tooltip__WEBPACK_IMPORTED_MODULE_6__.show)(reason, button);
- }
- });
- }
- function onClick(node, button, isAlt) {
- const previousNode = activeNode;
- reset();
- if (!isAlt) {
- doAction(node, node, 0, button);
- }
- else if (!previousNode || node !== previousNode) {
- activeNode = node;
- _position__WEBPACK_IMPORTED_MODULE_4__.mount(node, node.seed, node, node.children, _consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, button, doAction, false);
- }
- }
- function mount(node) {
- (0,_button__WEBPACK_IMPORTED_MODULE_3__.addActionButton)(_button__WEBPACK_IMPORTED_MODULE_1__["default"], onClick, node);
- }
- function shouldMount(node) {
- return 'seed' in node;
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/css.ts":
- /*!**********************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/css.ts ***!
- \**********************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ addColourRule: () => (/* binding */ addColourRule),
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/buttons/consts.ts");
- /* harmony import */ var _create_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./create/css */ "./ts/modal/body/trees/nodes/actions/buttons/create/css.ts");
- /* harmony import */ var _move_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./move/css */ "./ts/modal/body/trees/nodes/actions/buttons/move/css.ts");
- /* harmony import */ var _disable_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./disable/css */ "./ts/modal/body/trees/nodes/actions/buttons/disable/css.ts");
- /* harmony import */ var _duplicate_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./duplicate/css */ "./ts/modal/body/trees/nodes/actions/buttons/duplicate/css.ts");
- /* harmony import */ var _position_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./position/css */ "./ts/modal/body/trees/nodes/actions/buttons/position/css.ts");
- /* harmony import */ var _focus_consts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../focus/consts */ "./ts/modal/body/trees/nodes/actions/focus/consts.ts");
- /* harmony import */ var _highlight_consts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../highlight/consts */ "./ts/modal/body/trees/nodes/actions/highlight/consts.ts");
- /* harmony import */ var _nodes_consts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @nodes/consts */ "./ts/modal/body/trees/nodes/consts.ts");
- /* harmony import */ var _modal_body_trees_style_update_depth__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/modal/body/trees/style/update/depth */ "./ts/modal/body/trees/style/update/depth.ts");
- /* harmony import */ var _modal_header_actions_alternate_consts__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/modal/header/actions/alternate/consts */ "./ts/modal/header/actions/alternate/consts.ts");
- /* harmony import */ var _modal_consts__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/modal/consts */ "./ts/modal/consts.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/modal/css */ "./ts/modal/css.ts");
-
-
-
-
-
-
-
-
-
-
-
-
-
- function addColourRule(actionId, strokeVar) {
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_12__.addRule)([
- `.${_nodes_consts__WEBPACK_IMPORTED_MODULE_8__.ELEMENT_CLASSES.ELEMENT_CONTAINER}:not(.${_focus_consts__WEBPACK_IMPORTED_MODULE_6__.FOCUS_SOURCE_CLASS}):not(.${_highlight_consts__WEBPACK_IMPORTED_MODULE_7__.HIGHLIGHT_CLASS}) > `
- + `.${_nodes_consts__WEBPACK_IMPORTED_MODULE_8__.ELEMENT_CLASSES.HEAD_CONTAINER} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_8__.ELEMENT_CLASSES.BUTTON_CONTAINER} `
- + `.${_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS}.${actionId} > svg`,
- ], ['fill', `var(${strokeVar})`]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_12__.addRule)([
- `.${_nodes_consts__WEBPACK_IMPORTED_MODULE_8__.ELEMENT_CLASSES.ELEMENT_CONTAINER}:not(.${_focus_consts__WEBPACK_IMPORTED_MODULE_6__.FOCUS_SOURCE_CLASS}):not(.${_highlight_consts__WEBPACK_IMPORTED_MODULE_7__.HIGHLIGHT_CLASS}) > `
- + `.${_nodes_consts__WEBPACK_IMPORTED_MODULE_8__.ELEMENT_CLASSES.HEAD_CONTAINER} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_8__.ELEMENT_CLASSES.BUTTON_CONTAINER} `
- + `.${_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS}.${actionId}:not(.${_modal_consts__WEBPACK_IMPORTED_MODULE_11__.BUTTON_ACTIVE_CLASS}) > svg > g`,
- ], ['stroke', `none`]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_12__.addRule)(`.${_highlight_consts__WEBPACK_IMPORTED_MODULE_7__.HIGHLIGHT_CLASS} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_8__.ELEMENT_CLASSES.HEAD_CONTAINER} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_8__.ELEMENT_CLASSES.BUTTON_CONTAINER} > `
- + `.${_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS}.${actionId}.${_modal_consts__WEBPACK_IMPORTED_MODULE_11__.BUTTON_ACTIVE_CLASS} > svg > g`, ['stroke', `var(${strokeVar})`]);
- }
- function generate() {
- (0,_create_css__WEBPACK_IMPORTED_MODULE_1__["default"])();
- (0,_move_css__WEBPACK_IMPORTED_MODULE_2__["default"])();
- (0,_disable_css__WEBPACK_IMPORTED_MODULE_3__["default"])();
- (0,_duplicate_css__WEBPACK_IMPORTED_MODULE_4__["default"])();
- (0,_position_css__WEBPACK_IMPORTED_MODULE_5__["default"])();
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_12__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS}`, ['height', '100%']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_12__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS} > svg`, [
- ['height', '100%'],
- ['transform', 'scale(1.05)'],
- ]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_12__.addRule)(`.${_nodes_consts__WEBPACK_IMPORTED_MODULE_8__.ELEMENT_CLASSES.BUTTON_CONTAINER}`, ['white-space', 'nowrap']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_12__.addRule)(`.${_nodes_consts__WEBPACK_IMPORTED_MODULE_8__.ELEMENT_CLASSES.ELEMENT_CONTAINER}:not(${_focus_consts__WEBPACK_IMPORTED_MODULE_6__.FOCUS_SOURCE_CLASS}):not(${_highlight_consts__WEBPACK_IMPORTED_MODULE_7__.HIGHLIGHT_CLASS}) > `
- + `.${_nodes_consts__WEBPACK_IMPORTED_MODULE_8__.ELEMENT_CLASSES.HEAD_CONTAINER} > ${_nodes_consts__WEBPACK_IMPORTED_MODULE_8__.ELEMENT_CLASSES.BUTTON_CONTAINER} circle`, ['stroke', 'transparent']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_12__.addRule)(
- // Not focused, not hovered
- `.${_nodes_consts__WEBPACK_IMPORTED_MODULE_8__.ELEMENT_CLASSES.ELEMENT_CONTAINER}:not(.${_focus_consts__WEBPACK_IMPORTED_MODULE_6__.FOCUS_SOURCE_CLASS}):not(.${_highlight_consts__WEBPACK_IMPORTED_MODULE_7__.HIGHLIGHT_CLASS}) > `
- + `.${_nodes_consts__WEBPACK_IMPORTED_MODULE_8__.ELEMENT_CLASSES.HEAD_CONTAINER} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_8__.ELEMENT_CLASSES.BUTTON_CONTAINER} svg`, [['fill', 'none']]);
- // Hide prospective nodes
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_12__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.PROSPECTIVE_CLASS}`, ['display', 'none']);
- // Hide alt icon components
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_12__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.ALT_CLASS}:not(.${_modal_header_actions_alternate_consts__WEBPACK_IMPORTED_MODULE_10__.ACTION_ID} *)`, ['display', 'none']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_12__.addRule)(`.${_modal_header_actions_alternate_consts__WEBPACK_IMPORTED_MODULE_10__.ACTION_ID} button.${_consts__WEBPACK_IMPORTED_MODULE_0__.ALT_CLASS} + *`, ['display', 'none']);
- (0,_modal_body_trees_style_update_depth__WEBPACK_IMPORTED_MODULE_9__.addDepthChangeListener)((depth, addRule) => {
- const depthSelector = `.${_nodes_consts__WEBPACK_IMPORTED_MODULE_8__.DEPTH_CLASS_PREFIX}${depth} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_8__.ELEMENT_CLASSES.HEAD_CONTAINER} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_8__.ELEMENT_CLASSES.BUTTON_CONTAINER}`;
- addRule(`${depthSelector} svg`, ['stroke', `var(--nodeBase${depth})`]);
- addRule([
- // Not active, focused
- `${depthSelector} .${_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS}:focus > svg`,
- `${depthSelector} .${_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS}:hover > svg`,
- `.${_highlight_consts__WEBPACK_IMPORTED_MODULE_7__.HIGHLIGHT_CLASS}${depthSelector} .${_modal_consts__WEBPACK_IMPORTED_MODULE_11__.BUTTON_ACTIVE_CLASS} > svg`,
- ], [
- ['stroke', `var(--nodeContrast${depth})`],
- ['fill', `var(--nodeBase${depth})`],
- ]);
- });
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/disable/button.ts":
- /*!*********************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/disable/button.ts ***!
- \*********************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ BUTTON_ALT: () => (/* binding */ BUTTON_ALT),
- /* harmony export */ BUTTON_DEFAULT: () => (/* binding */ BUTTON_DEFAULT)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/buttons/disable/consts.ts");
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../consts */ "./ts/modal/body/trees/nodes/actions/buttons/consts.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../button */ "./ts/modal/body/trees/nodes/actions/buttons/button.ts");
- /* harmony import */ var _modal_consts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/modal/consts */ "./ts/modal/consts.ts");
-
-
-
-
- const gDefault = (() => {
- const circle = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_3__.SVG_NAMESPACE, 'circle');
- circle.setAttribute('r', '30');
- circle.setAttribute('stroke-width', '10');
- const line = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_3__.SVG_NAMESPACE, 'line');
- line.setAttribute('stroke-linecap', 'round');
- line.setAttribute('stroke-width', '10');
- line.setAttribute('x1', '-30');
- line.setAttribute('x2', '30');
- line.setAttribute('transform', 'rotate(45)');
- const g = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_3__.SVG_NAMESPACE, 'g');
- g.append(circle, line);
- return g;
- })();
- const BUTTON_DEFAULT = (0,_button__WEBPACK_IMPORTED_MODULE_2__.getNewButton)(gDefault, _consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID_DEFAULT, 'Toggle Enabled');
- const gAlt = (() => {
- const line0 = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_3__.SVG_NAMESPACE, 'line');
- line0.setAttribute('stroke-linecap', 'round');
- line0.setAttribute('stroke-width', '12');
- line0.setAttribute('x1', '-20');
- line0.setAttribute('x2', '20');
- line0.setAttribute('y1', '-20');
- line0.setAttribute('y2', '20');
- const line1 = line0.cloneNode(true);
- line1.setAttribute('transform', 'rotate(90)');
- const g = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_3__.SVG_NAMESPACE, 'g');
- g.append(line0, line1);
- return g;
- })();
- const BUTTON_ALT = (0,_button__WEBPACK_IMPORTED_MODULE_2__.getNewButton)(gAlt, _consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID_ALT, 'Delete');
- BUTTON_ALT.classList.add(_consts__WEBPACK_IMPORTED_MODULE_1__.ALT_CLASS);
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/disable/consts.ts":
- /*!*********************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/disable/consts.ts ***!
- \*********************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ ACTION_ID_ALT: () => (/* binding */ ACTION_ID_ALT),
- /* harmony export */ ACTION_ID_DEFAULT: () => (/* binding */ ACTION_ID_DEFAULT),
- /* harmony export */ DISABLED_CLASS: () => (/* binding */ DISABLED_CLASS)
- /* harmony export */ });
- const ACTION_ID_DEFAULT = 'node-active';
- const ACTION_ID_ALT = 'node-delete';
- const DISABLED_CLASS = 'node-disable';
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/disable/css.ts":
- /*!******************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/disable/css.ts ***!
- \******************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/buttons/disable/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../css */ "./ts/modal/body/trees/nodes/actions/buttons/css.ts");
- /* harmony import */ var _highlight_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../highlight/consts */ "./ts/modal/body/trees/nodes/actions/highlight/consts.ts");
- /* harmony import */ var _nodes_consts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @nodes/consts */ "./ts/modal/body/trees/nodes/consts.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/modal/css */ "./ts/modal/css.ts");
-
-
-
-
-
- function generate() {
- (0,_css__WEBPACK_IMPORTED_MODULE_1__.addColourRule)(_consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID_DEFAULT, '--nodeButtonDisable');
- (0,_css__WEBPACK_IMPORTED_MODULE_1__.addColourRule)(_consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID_ALT, '--nodeButtonDelete');
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_4__.addRule)([
- // Self selectors
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.DISABLED_CLASS}:not(.${_highlight_consts__WEBPACK_IMPORTED_MODULE_2__.HIGHLIGHT_CLASS}) > `
- + `.${_nodes_consts__WEBPACK_IMPORTED_MODULE_3__.ELEMENT_CLASSES.HEAD_CONTAINER} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_3__.ELEMENT_CLASSES.VALUE_CONTAINER} > *`,
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.DISABLED_CLASS}:not(.${_highlight_consts__WEBPACK_IMPORTED_MODULE_2__.HIGHLIGHT_CLASS}) > `
- + `.${_nodes_consts__WEBPACK_IMPORTED_MODULE_3__.ELEMENT_CLASSES.HEAD_CONTAINER} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_3__.ELEMENT_CLASSES.LABEL_CONTAINER} > *`,
- // Descendant selectors
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.DISABLED_CLASS} :not(.${_highlight_consts__WEBPACK_IMPORTED_MODULE_2__.HIGHLIGHT_CLASS}) > `
- + `.${_nodes_consts__WEBPACK_IMPORTED_MODULE_3__.ELEMENT_CLASSES.HEAD_CONTAINER} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_3__.ELEMENT_CLASSES.VALUE_CONTAINER} > *`,
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.DISABLED_CLASS} :not(.${_highlight_consts__WEBPACK_IMPORTED_MODULE_2__.HIGHLIGHT_CLASS}) > `
- + `.${_nodes_consts__WEBPACK_IMPORTED_MODULE_3__.ELEMENT_CLASSES.HEAD_CONTAINER} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_3__.ELEMENT_CLASSES.LABEL_CONTAINER} > *`,
- ], ['opacity', '0.5']);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/disable/index.ts":
- /*!********************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/disable/index.ts ***!
- \********************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ mount: () => (/* binding */ mount),
- /* harmony export */ shouldMount: () => (/* binding */ shouldMount)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/buttons/disable/consts.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./button */ "./ts/modal/body/trees/nodes/actions/buttons/disable/button.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../button */ "./ts/modal/body/trees/nodes/actions/buttons/button.ts");
- /* harmony import */ var _edit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../edit */ "./ts/modal/body/trees/nodes/actions/edit/index.ts");
- /* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../tooltip */ "./ts/modal/body/trees/nodes/actions/tooltip/index.ts");
- /* harmony import */ var _modal_consts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/modal/consts */ "./ts/modal/consts.ts");
-
-
-
-
-
-
- function updateButton(button, isActive) {
- button.classList[isActive ? 'remove' : 'add'](_modal_consts__WEBPACK_IMPORTED_MODULE_5__.BUTTON_ACTIVE_CLASS);
- }
- function toggle(node) {
- node.element[`${node.isActive ? 'add' : 'remove'}Class`](_consts__WEBPACK_IMPORTED_MODULE_0__.DISABLED_CLASS);
- node.isActive = !node.isActive;
- }
- function onClick(node, button, isAlt) {
- toggle(node);
- Promise.all((0,_edit__WEBPACK_IMPORTED_MODULE_3__.getSubPredicateResponses)(node.parent))
- .then(() => {
- if (isAlt) {
- // TODO set up a way to confirm (tooltip + yes/no buttons? require extra button click?)
- node.disconnect();
- }
- else {
- updateButton(button, node.isActive);
- }
- })
- .catch((reason) => {
- toggle(node);
- if (typeof reason === 'string') {
- _tooltip__WEBPACK_IMPORTED_MODULE_4__.show(reason, button);
- }
- });
- }
- function mount(node) {
- (0,_button__WEBPACK_IMPORTED_MODULE_2__.addActionButton)(_button__WEBPACK_IMPORTED_MODULE_1__.BUTTON_ALT, onClick, node);
- const defaultButton = (0,_button__WEBPACK_IMPORTED_MODULE_2__.addActionButton)(_button__WEBPACK_IMPORTED_MODULE_1__.BUTTON_DEFAULT, onClick, node);
- if (!node.isActive) {
- node.element.addClass(_consts__WEBPACK_IMPORTED_MODULE_0__.DISABLED_CLASS);
- updateButton(defaultButton, false);
- }
- }
- function shouldMount(node) {
- return 'seed' in node.parent;
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/duplicate/button.ts":
- /*!***********************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/duplicate/button.ts ***!
- \***********************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/buttons/duplicate/consts.ts");
- /* harmony import */ var _position_button_alt__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../position/button/alt */ "./ts/modal/body/trees/nodes/actions/buttons/position/button/alt.ts");
- /* harmony import */ var _modal_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/consts */ "./ts/modal/consts.ts");
-
-
-
- const RADIUS = 15;
- const HEIGHT = 25;
- const WIDTH = 10;
- const outline0 = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'path');
- outline0.setAttribute('stroke-linecap', 'round');
- outline0.setAttribute('stroke-width', '8');
- outline0.setAttribute('fill', 'none');
- outline0.setAttribute('d', `M ${WIDTH / 2 + RADIUS} ${-HEIGHT / 2}`
- + `q 0,-${RADIUS} -${RADIUS},-${RADIUS}`
- + `h -${WIDTH}`
- + `q -${RADIUS},0 -${RADIUS},${RADIUS}`
- + `v ${HEIGHT}`
- + `q 0,${RADIUS} ${RADIUS},${RADIUS}`);
- outline0.setAttribute('transform', `translate(-${RADIUS / 2}, -${RADIUS / 2})`);
- const outline1 = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'path');
- outline1.setAttribute('stroke-linecap', 'round');
- outline1.setAttribute('stroke-width', '8');
- outline1.setAttribute('fill', 'none');
- outline1.setAttribute('d', `M ${WIDTH / 2 + RADIUS} ${-HEIGHT / 2}`
- + `q 0,-${RADIUS} -${RADIUS},-${RADIUS}`
- + `h -${WIDTH}`
- + `q -${RADIUS},0 -${RADIUS},${RADIUS}`
- + `v ${HEIGHT}`
- + `q 0,${RADIUS} ${RADIUS},${RADIUS}`
- + `h ${WIDTH}`
- + `q ${RADIUS},0 ${RADIUS},-${RADIUS}`
- + `v -${HEIGHT}`);
- outline1.setAttribute('transform', `translate(${RADIUS / 2}, ${RADIUS / 2})`);
- const g = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'g');
- g.setAttribute('transform', `rotate(10)`);
- g.append(outline0, outline1);
- const BUTTON = (0,_position_button_alt__WEBPACK_IMPORTED_MODULE_1__.getPositionedButton)(g, _consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, 'Duplicate', { scale: 0.6, translate: '10 16', rotate: 10 });
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BUTTON);
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/duplicate/consts.ts":
- /*!***********************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/duplicate/consts.ts ***!
- \***********************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ ACTION_ID: () => (/* binding */ ACTION_ID)
- /* harmony export */ });
- const ACTION_ID = 'node-copy';
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/duplicate/css.ts":
- /*!********************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/duplicate/css.ts ***!
- \********************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/buttons/duplicate/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../css */ "./ts/modal/body/trees/nodes/actions/buttons/css.ts");
-
-
- function generate() {
- (0,_css__WEBPACK_IMPORTED_MODULE_1__.addColourRule)(_consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, '--nodeButtonDuplicate');
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/duplicate/index.ts":
- /*!**********************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/duplicate/index.ts ***!
- \**********************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ mount: () => (/* binding */ mount),
- /* harmony export */ reset: () => (/* binding */ reset),
- /* harmony export */ shouldMount: () => (/* binding */ shouldMount)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/buttons/duplicate/consts.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./button */ "./ts/modal/body/trees/nodes/actions/buttons/duplicate/button.ts");
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../consts */ "./ts/modal/body/trees/nodes/actions/buttons/consts.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../button */ "./ts/modal/body/trees/nodes/actions/buttons/button.ts");
- /* harmony import */ var _position__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../position */ "./ts/modal/body/trees/nodes/actions/buttons/position/index.ts");
- /* harmony import */ var _edit__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../edit */ "./ts/modal/body/trees/nodes/actions/edit/index.ts");
- /* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../tooltip */ "./ts/modal/body/trees/nodes/actions/tooltip/index.ts");
-
-
-
-
-
-
-
- let activeNode;
- function reset() {
- if (!activeNode) {
- return;
- }
- _position__WEBPACK_IMPORTED_MODULE_4__.reset();
- activeNode = undefined;
- }
- function validate(copy, button) {
- Promise.all((0,_edit__WEBPACK_IMPORTED_MODULE_5__.getSubPredicateResponses)(copy.parent))
- .then(() => {
- copy.element.removeClass(_consts__WEBPACK_IMPORTED_MODULE_2__.PROSPECTIVE_CLASS);
- reset();
- // Show the new node
- copy.element.scrollIntoView();
- })
- .catch((reason) => {
- copy.disconnect();
- if (reason) {
- (0,_tooltip__WEBPACK_IMPORTED_MODULE_6__.show)(reason, button);
- }
- });
- }
- function getCopy(node) {
- const copy = node.duplicate();
- copy.element.addClass(_consts__WEBPACK_IMPORTED_MODULE_2__.PROSPECTIVE_CLASS);
- return copy;
- }
- function doAction(node, parent, index, button) {
- const copy = getCopy(node);
- copy.move(parent, index);
- validate(copy, button);
- }
- function onClick(node, button, isAlt) {
- const previousNode = activeNode;
- reset();
- if (!isAlt) {
- validate(getCopy(node), button);
- }
- else if (!previousNode || node !== previousNode) {
- activeNode = node;
- _position__WEBPACK_IMPORTED_MODULE_4__.mount(node, node, node.parent, node.getSiblings(), _consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, button, doAction);
- }
- }
- function mount(node) {
- (0,_button__WEBPACK_IMPORTED_MODULE_3__.addActionButton)(_button__WEBPACK_IMPORTED_MODULE_1__["default"], onClick, node);
- }
- function shouldMount(node) {
- return 'seed' in node.parent;
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/move/button.ts":
- /*!******************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/move/button.ts ***!
- \******************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/buttons/move/consts.ts");
- /* harmony import */ var _position_button_alt__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../position/button/alt */ "./ts/modal/body/trees/nodes/actions/buttons/position/button/alt.ts");
- /* harmony import */ var _modal_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/consts */ "./ts/modal/consts.ts");
-
-
-
- const arrowTrunk = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'line');
- arrowTrunk.setAttribute('stroke-linecap', 'round');
- arrowTrunk.setAttribute('stroke-width', '10');
- arrowTrunk.setAttribute('y1', '-30');
- arrowTrunk.setAttribute('y2', '30');
- const arrowBottomLeft = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'line');
- arrowBottomLeft.setAttribute('stroke-linecap', 'round');
- arrowBottomLeft.setAttribute('stroke-width', '10');
- arrowBottomLeft.setAttribute('x2', '-12');
- arrowBottomLeft.setAttribute('y1', '27');
- arrowBottomLeft.setAttribute('y2', '15');
- const arrowBottomRight = arrowBottomLeft.cloneNode(true);
- arrowBottomRight.setAttribute('x2', '12');
- const g = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'g');
- g.append(arrowTrunk, arrowBottomLeft, arrowBottomRight);
- const BUTTON = (0,_position_button_alt__WEBPACK_IMPORTED_MODULE_1__.getPositionedButton)(g, _consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, 'Move');
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BUTTON);
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/move/consts.ts":
- /*!******************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/move/consts.ts ***!
- \******************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ ACTION_ID: () => (/* binding */ ACTION_ID)
- /* harmony export */ });
- const ACTION_ID = 'node-move';
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/move/css.ts":
- /*!***************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/move/css.ts ***!
- \***************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/buttons/move/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../css */ "./ts/modal/body/trees/nodes/actions/buttons/css.ts");
-
-
- function generate() {
- (0,_css__WEBPACK_IMPORTED_MODULE_1__.addColourRule)(_consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, '--nodeButtonMove');
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/move/index.ts":
- /*!*****************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/move/index.ts ***!
- \*****************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ mount: () => (/* binding */ mount),
- /* harmony export */ reset: () => (/* binding */ reset),
- /* harmony export */ shouldMount: () => (/* binding */ shouldMount),
- /* harmony export */ unmount: () => (/* binding */ unmount)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/buttons/move/consts.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./button */ "./ts/modal/body/trees/nodes/actions/buttons/move/button.ts");
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../consts */ "./ts/modal/body/trees/nodes/actions/buttons/consts.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../button */ "./ts/modal/body/trees/nodes/actions/buttons/button.ts");
- /* harmony import */ var _position__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../position */ "./ts/modal/body/trees/nodes/actions/buttons/position/index.ts");
- /* harmony import */ var _edit__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../edit */ "./ts/modal/body/trees/nodes/actions/edit/index.ts");
- /* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../tooltip */ "./ts/modal/body/trees/nodes/actions/tooltip/index.ts");
-
-
-
-
-
-
-
- let activeNode;
- function reset() {
- if (!activeNode) {
- return;
- }
- _position__WEBPACK_IMPORTED_MODULE_4__.reset();
- activeNode = undefined;
- }
- function doAction(node, newParent, index, button) {
- const oldParent = node.parent;
- const copy = node.duplicate();
- copy.element.addClass(_consts__WEBPACK_IMPORTED_MODULE_2__.PROSPECTIVE_CLASS);
- copy.move(newParent, index);
- node.isActive = false;
- Promise.all([
- ...(0,_edit__WEBPACK_IMPORTED_MODULE_5__.getSubPredicateResponses)(oldParent),
- ...(oldParent === newParent ? [] : (0,_edit__WEBPACK_IMPORTED_MODULE_5__.getSubPredicateResponses)(newParent)),
- ])
- .then(() => {
- copy.element.removeClass(_consts__WEBPACK_IMPORTED_MODULE_2__.PROSPECTIVE_CLASS);
- node.disconnect();
- reset();
- // Show where the node's been moved to
- copy.element.scrollIntoView();
- })
- .catch((reason) => {
- node.isActive = copy.isActive;
- copy.disconnect();
- if (reason) {
- _tooltip__WEBPACK_IMPORTED_MODULE_6__.show(reason, button);
- }
- });
- }
- function onClick(node, button, isAlt) {
- const previousNode = activeNode;
- reset();
- if (!isAlt) {
- const newIndex = node.getIndex() + 2;
- if (newIndex < node.parent.children.length + 1) {
- doAction(node, node.parent, newIndex, button);
- }
- else {
- _tooltip__WEBPACK_IMPORTED_MODULE_6__.show('Node can not be moved down.', button);
- }
- }
- else if (!previousNode || node !== previousNode) {
- // If the only valid target is the current parent
- if (_position__WEBPACK_IMPORTED_MODULE_4__.hasDestinations(node)) {
- activeNode = node;
- _position__WEBPACK_IMPORTED_MODULE_4__.mount(node, node, node.parent, node.getSiblings(), _consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, button, doAction, false);
- }
- else {
- _tooltip__WEBPACK_IMPORTED_MODULE_6__.show('No other valid locations found.', button);
- }
- }
- }
- function unmount(node) {
- if (activeNode && node === activeNode) {
- reset();
- }
- }
- function mount(node) {
- (0,_button__WEBPACK_IMPORTED_MODULE_3__.addActionButton)(_button__WEBPACK_IMPORTED_MODULE_1__["default"], onClick, node);
- }
- function shouldMount(node) {
- return Boolean(node.parent.seed) || ('poolId' in node.parent);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/position/button/alt.ts":
- /*!**************************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/position/button/alt.ts ***!
- \**************************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ getPositionedButton: () => (/* binding */ getPositionedButton)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../consts */ "./ts/modal/body/trees/nodes/actions/buttons/consts.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../button */ "./ts/modal/body/trees/nodes/actions/buttons/button.ts");
- /* harmony import */ var _modal_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/consts */ "./ts/modal/consts.ts");
-
-
-
- const G_ALT = (() => {
- const arrowTrunk = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'line');
- arrowTrunk.setAttribute('stroke-linecap', 'round');
- arrowTrunk.setAttribute('stroke-width', '10');
- arrowTrunk.setAttribute('y1', '-30');
- arrowTrunk.setAttribute('y2', '30');
- const arrowBottomLeft = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'line');
- arrowBottomLeft.setAttribute('stroke-linecap', 'round');
- arrowBottomLeft.setAttribute('stroke-width', '10');
- arrowBottomLeft.setAttribute('x2', '-12');
- arrowBottomLeft.setAttribute('y1', '27');
- arrowBottomLeft.setAttribute('y2', '15');
- const arrowBottomRight = arrowBottomLeft.cloneNode(true);
- arrowBottomRight.setAttribute('x2', '12');
- const arrowTopRight = arrowBottomLeft.cloneNode(true);
- arrowTopRight.setAttribute('transform', 'rotate(180)');
- const arrowTopLeft = arrowBottomRight.cloneNode(true);
- arrowTopLeft.setAttribute('transform', 'rotate(180)');
- const g = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'g');
- g.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.ALT_CLASS);
- g.append(arrowTrunk, arrowBottomLeft, arrowBottomRight, arrowTopRight, arrowTopLeft);
- return g;
- })();
- function getPositionedButton(gDefault, actionId, description, transform = {}) {
- const g = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'g');
- const gAlt = G_ALT.cloneNode(true);
- gAlt.setAttribute('transform', Object.entries(transform).map(([key, value]) => `${key}(${value})`).join(' '));
- g.append(gAlt, gDefault);
- return (0,_button__WEBPACK_IMPORTED_MODULE_1__.getNewButton)(g, actionId, description);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/position/button/index.ts":
- /*!****************************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/position/button/index.ts ***!
- \****************************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ BUTTON_PARENT: () => (/* binding */ BUTTON_PARENT),
- /* harmony export */ BUTTON_SIBLING: () => (/* binding */ BUTTON_SIBLING)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../consts */ "./ts/modal/body/trees/nodes/actions/buttons/position/consts.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../button */ "./ts/modal/body/trees/nodes/actions/buttons/button.ts");
- /* harmony import */ var _modal_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/consts */ "./ts/modal/consts.ts");
-
-
-
- const arrowTrunk = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'line');
- arrowTrunk.setAttribute('stroke-linecap', 'round');
- arrowTrunk.setAttribute('stroke-width', '10');
- arrowTrunk.setAttribute('y1', '-30');
- arrowTrunk.setAttribute('y2', '30');
- const arrowBottomLeft = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'line');
- arrowBottomLeft.setAttribute('stroke-linecap', 'round');
- arrowBottomLeft.setAttribute('stroke-width', '10');
- arrowBottomLeft.setAttribute('x2', '-12');
- arrowBottomLeft.setAttribute('y1', '27');
- arrowBottomLeft.setAttribute('y2', '15');
- const arrowBottomRight = arrowBottomLeft.cloneNode(true);
- arrowBottomRight.setAttribute('x2', '12');
- const gMain = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'g');
- gMain.append(arrowTrunk, arrowBottomLeft, arrowBottomRight);
- const gSibling = gMain.cloneNode(true);
- const BUTTON_SIBLING = (0,_button__WEBPACK_IMPORTED_MODULE_1__.getNewButton)(gSibling, _consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, 'Select After');
- const gParent = gMain.cloneNode(true);
- gParent.setAttribute('transform', 'rotate(-45)');
- const BUTTON_PARENT = (0,_button__WEBPACK_IMPORTED_MODULE_1__.getNewButton)(gParent, _consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, 'Select Into');
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/position/consts.ts":
- /*!**********************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/position/consts.ts ***!
- \**********************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ ACTION_ID: () => (/* binding */ ACTION_ID)
- /* harmony export */ });
- const ACTION_ID = 'node-position';
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/position/css.ts":
- /*!*******************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/position/css.ts ***!
- \*******************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/buttons/position/consts.ts");
- /* harmony import */ var _focus_consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../focus/consts */ "./ts/modal/body/trees/nodes/actions/focus/consts.ts");
- /* harmony import */ var _nodes_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nodes/consts */ "./ts/modal/body/trees/nodes/consts.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/modal/css */ "./ts/modal/css.ts");
-
-
-
-
- function generate() {
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_3__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_2__.ROOT_CLASS}.${_focus_consts__WEBPACK_IMPORTED_MODULE_1__.FOCUS_CLASS} `
- + `.${_nodes_consts__WEBPACK_IMPORTED_MODULE_2__.ELEMENT_CLASSES.ELEMENT_CONTAINER}:not(.${_focus_consts__WEBPACK_IMPORTED_MODULE_1__.FOCUS_CLASS})`, ['display', 'none']);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/buttons/position/index.ts":
- /*!*********************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/buttons/position/index.ts ***!
- \*********************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ getButton: () => (/* binding */ getButton),
- /* harmony export */ hasDestinations: () => (/* binding */ hasDestinations),
- /* harmony export */ isActive: () => (/* binding */ isActive),
- /* harmony export */ mount: () => (/* binding */ mount),
- /* harmony export */ reset: () => (/* binding */ reset)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/buttons/position/consts.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./button */ "./ts/modal/body/trees/nodes/actions/buttons/position/button/index.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../button */ "./ts/modal/body/trees/nodes/actions/buttons/button.ts");
- /* harmony import */ var _focus__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../focus */ "./ts/modal/body/trees/nodes/actions/focus/index.ts");
- /* harmony import */ var _highlight__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../highlight */ "./ts/modal/body/trees/nodes/actions/highlight/index.ts");
- /* harmony import */ var _modal_body_trees__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/modal/body/trees */ "./ts/modal/body/trees/index.ts");
- /* harmony import */ var _modal_consts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/modal/consts */ "./ts/modal/consts.ts");
-
-
-
-
-
-
-
- const destinations = [];
- let origin;
- function isActive() {
- return Boolean(origin);
- }
- function setActive(doActivate = true) {
- (0,_modal_body_trees__WEBPACK_IMPORTED_MODULE_5__.setActive)(origin.button, _consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, doActivate);
- (0,_focus__WEBPACK_IMPORTED_MODULE_3__.reset)();
- (0,_focus__WEBPACK_IMPORTED_MODULE_3__.focus)(doActivate, origin.source, false);
- (0,_focus__WEBPACK_IMPORTED_MODULE_3__.focusBranch)(doActivate, origin.source, doActivate);
- if (doActivate) {
- (0,_focus__WEBPACK_IMPORTED_MODULE_3__.setTabIndexes)(false, origin.source);
- origin.button.setAttribute('tabIndex', '1');
- }
- else {
- origin.button.setAttribute('tabIndex', '-1');
- }
- origin.source.element.headContainer.focus();
- }
- function reset() {
- if (!origin) {
- return;
- }
- for (const { node, isParent, button } of destinations) {
- (0,_focus__WEBPACK_IMPORTED_MODULE_3__.focusBranch)(false, node, isParent);
- button.remove();
- }
- destinations.length = 0;
- (0,_highlight__WEBPACK_IMPORTED_MODULE_4__.removeSustained)(origin.source);
- setActive(false);
- origin = undefined;
- }
- function getButton(node, actionId, onClick, isParent) {
- const button = (0,_button__WEBPACK_IMPORTED_MODULE_2__.addActionButton)(isParent ? _button__WEBPACK_IMPORTED_MODULE_1__.BUTTON_PARENT : _button__WEBPACK_IMPORTED_MODULE_1__.BUTTON_SIBLING, onClick, node);
- button.classList.add(actionId);
- button.classList.add(_modal_consts__WEBPACK_IMPORTED_MODULE_6__.BUTTON_ACTIVE_CLASS);
- button.setAttribute('tabIndex', '1');
- return button;
- }
- function getBoundCallback(callback, parent, index) {
- return (_, button) => callback(parent, index, button);
- }
- function addButtons(parent, actionId, callback, includeSelf) {
- const isCurrentParent = parent === origin.parent;
- if (isCurrentParent || (origin.isPooled && parent.poolId === origin.parent.poolId)) {
- destinations.push({
- node: parent,
- isParent: true,
- button: getButton(parent, actionId, getBoundCallback(callback, parent, 0), true),
- });
- (0,_focus__WEBPACK_IMPORTED_MODULE_3__.focusBranch)(true, parent);
- for (const target of (!includeSelf && isCurrentParent) ? origin.siblings : parent.children) {
- (0,_focus__WEBPACK_IMPORTED_MODULE_3__.focusBranch)(true, target, false);
- destinations.push({
- node: target,
- isParent: false,
- button: getButton(target, actionId, getBoundCallback(callback, target.parent, target.getIndex() + 1), false),
- });
- }
- }
- // Nodes can't be their own descendants
- if (!isCurrentParent) {
- for (const child of parent.children) {
- if ('children' in child) {
- addButtons(child, actionId, callback, includeSelf);
- }
- }
- }
- }
- function hasDestinations(node) {
- if (node.parent.children.length > 1) {
- return true;
- }
- if (!('poolId' in node.parent)) {
- return false;
- }
- const hasMatchingPool = (parent, poolId) => {
- if (parent !== node.parent) {
- if (parent.poolId === poolId) {
- return true;
- }
- for (const child of parent.children) {
- if ('children' in child && hasMatchingPool(child, poolId)) {
- return true;
- }
- }
- }
- return false;
- };
- return hasMatchingPool(node.getRoot(), node.parent.poolId);
- }
- function mount(source, child, parent, siblings, actionId, button, callback, includeSelf = true) {
- reset();
- origin = {
- source,
- child,
- siblings,
- parent,
- isPooled: 'poolId' in parent,
- button,
- actionId,
- };
- addButtons(parent.getRoot(), actionId, callback.bind(null, source), includeSelf);
- (0,_highlight__WEBPACK_IMPORTED_MODULE_4__.addSustained)(source);
- setActive();
- return destinations.length;
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/css.ts":
- /*!**************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/css.ts ***!
- \**************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _edit_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./edit/css */ "./ts/modal/body/trees/nodes/actions/edit/css.ts");
- /* harmony import */ var _edit_option_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./edit/option/css */ "./ts/modal/body/trees/nodes/actions/edit/option/css.ts");
- /* harmony import */ var _highlight_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./highlight/css */ "./ts/modal/body/trees/nodes/actions/highlight/css.ts");
- /* harmony import */ var _focus_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./focus/css */ "./ts/modal/body/trees/nodes/actions/focus/css.ts");
- /* harmony import */ var _tooltip_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tooltip/css */ "./ts/modal/body/trees/nodes/actions/tooltip/css.ts");
- /* harmony import */ var _buttons_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./buttons/css */ "./ts/modal/body/trees/nodes/actions/buttons/css.ts");
-
-
-
-
-
-
- function generate() {
- (0,_edit_css__WEBPACK_IMPORTED_MODULE_0__["default"])();
- (0,_edit_option_css__WEBPACK_IMPORTED_MODULE_1__["default"])();
- (0,_highlight_css__WEBPACK_IMPORTED_MODULE_2__["default"])();
- (0,_focus_css__WEBPACK_IMPORTED_MODULE_3__["default"])();
- (0,_tooltip_css__WEBPACK_IMPORTED_MODULE_4__["default"])();
- (0,_buttons_css__WEBPACK_IMPORTED_MODULE_5__["default"])();
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/edit/consts.ts":
- /*!**********************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/edit/consts.ts ***!
- \**********************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ ACTIVE_CLASS: () => (/* binding */ ACTIVE_CLASS),
- /* harmony export */ EDITABLE_CLASS: () => (/* binding */ EDITABLE_CLASS),
- /* harmony export */ INVALID_BACKGROUND_CLASS: () => (/* binding */ INVALID_BACKGROUND_CLASS),
- /* harmony export */ INVALID_CLASS: () => (/* binding */ INVALID_CLASS),
- /* harmony export */ VALID_BACKGROUND_CLASS: () => (/* binding */ VALID_BACKGROUND_CLASS),
- /* harmony export */ VALID_CLASS: () => (/* binding */ VALID_CLASS)
- /* harmony export */ });
- const EDITABLE_CLASS = 'editable';
- const VALID_CLASS = 'valid';
- const INVALID_CLASS = 'invalid';
- const INVALID_BACKGROUND_CLASS = 'background-invalid';
- const VALID_BACKGROUND_CLASS = 'background-valid';
- const ACTIVE_CLASS = 'edit-active';
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/edit/css.ts":
- /*!*******************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/edit/css.ts ***!
- \*******************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/edit/consts.ts");
- /* harmony import */ var _nodes_consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nodes/consts */ "./ts/modal/body/trees/nodes/consts.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/css */ "./ts/modal/css.ts");
-
-
-
- function generate() {
- // Use pointer when the node has a value and isn't being edited
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)([
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.EDITABLE_CLASS} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.HEAD_CONTAINER}`,
- `.${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.VALUE}:not(:focus)`,
- ], ['cursor', 'pointer']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.VALUE}`, [
- ['flex-grow', '1'],
- ['padding', '0 0.6em'],
- ['outline', 'none'],
- ]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.VALUE}[type="checkbox"]`, [
- ['height', '1em'],
- ['width', '2.2em'],
- ['cursor', 'pointer'],
- ]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.VALUE}[type="color"]`, ['height', '1.3em']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)([`.${_consts__WEBPACK_IMPORTED_MODULE_0__.VALID_BACKGROUND_CLASS}`, `.${_consts__WEBPACK_IMPORTED_MODULE_0__.INVALID_BACKGROUND_CLASS}`], ['right', '0']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.VALID_BACKGROUND_CLASS}`, ['background-color', 'var(--validBackground)']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.INVALID_BACKGROUND_CLASS}`, ['background-color', 'var(--invalidBackground)']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)([
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.VALID_CLASS} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.BACKGROUND_CONTAINER} > .${_consts__WEBPACK_IMPORTED_MODULE_0__.VALID_BACKGROUND_CLASS}`,
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.INVALID_CLASS} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.BACKGROUND_CONTAINER} > .${_consts__WEBPACK_IMPORTED_MODULE_0__.INVALID_BACKGROUND_CLASS}`,
- ], ['width', '100%']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.VALID_CLASS} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.HEAD_CONTAINER} .${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.VALUE_CONTAINER}`, ['color', 'var(--validFont) !important']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.INVALID_CLASS} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.HEAD_CONTAINER} .${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.VALUE_CONTAINER}`, ['color', 'var(--invalidFont) !important']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.VALUE}:not(.${_consts__WEBPACK_IMPORTED_MODULE_0__.ACTIVE_CLASS} *)`, ['pointer-events', 'none']);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/edit/index.ts":
- /*!*********************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/edit/index.ts ***!
- \*********************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ doAction: () => (/* binding */ doAction),
- /* harmony export */ getSubPredicateResponses: () => (/* binding */ getSubPredicateResponses),
- /* harmony export */ isActive: () => (/* binding */ isActive),
- /* harmony export */ mount: () => (/* binding */ mount),
- /* harmony export */ reset: () => (/* binding */ reset),
- /* harmony export */ shouldMount: () => (/* binding */ shouldMount),
- /* harmony export */ unmount: () => (/* binding */ unmount),
- /* harmony export */ update: () => (/* binding */ update)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/edit/consts.ts");
- /* harmony import */ var _option__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./option */ "./ts/modal/body/trees/nodes/actions/edit/option/index.ts");
- /* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../tooltip */ "./ts/modal/body/trees/nodes/actions/tooltip/index.ts");
- /* harmony import */ var _highlight__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../highlight */ "./ts/modal/body/trees/nodes/actions/highlight/index.ts");
- /* harmony import */ var _predicate__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/predicate */ "./ts/predicate.ts");
-
-
-
-
-
- let activeNode;
- function isActive() {
- return Boolean(activeNode);
- }
- function reset() {
- if (!activeNode) {
- return;
- }
- activeNode.element.render(activeNode.value);
- activeNode.element.removeClass(_consts__WEBPACK_IMPORTED_MODULE_0__.VALID_CLASS);
- activeNode.element.removeClass(_consts__WEBPACK_IMPORTED_MODULE_0__.INVALID_CLASS);
- activeNode.element.valueElement.blur();
- activeNode.element.valueContainer.classList.remove(_consts__WEBPACK_IMPORTED_MODULE_0__.ACTIVE_CLASS);
- _tooltip__WEBPACK_IMPORTED_MODULE_2__.reset();
- _option__WEBPACK_IMPORTED_MODULE_1__.reset();
- (0,_highlight__WEBPACK_IMPORTED_MODULE_3__.removeSustained)(activeNode);
- activeNode = undefined;
- }
- function getValue(node) {
- switch (typeof node.value) {
- case 'boolean':
- return Boolean(node.element.valueElement.checked);
- case 'number':
- return Number(node.element.valueElement.value);
- default:
- return node.element.valueElement.value;
- }
- }
- function getSubPredicateResponse(predicate, children) {
- return (0,_predicate__WEBPACK_IMPORTED_MODULE_4__.getPredicatePromise)(predicate(children.map((child) => child.getJSON())));
- }
- function getDescendantPredicateResponses(node) {
- const responses = [];
- if ('descendantPredicate' in node) {
- responses.push(getSubPredicateResponse(node.descendantPredicate, node.children));
- }
- if ('parent' in node) {
- responses.push(...getDescendantPredicateResponses(node.parent));
- }
- return responses;
- }
- function getChildPredicateResponse(node) {
- if ('childPredicate' in node) {
- return getSubPredicateResponse(node.childPredicate, node.children);
- }
- return Promise.resolve(null);
- }
- function getSubPredicateResponses(parent) {
- return [getChildPredicateResponse(parent), ...getDescendantPredicateResponses(parent)];
- }
- function getOwnPredicateResponse(node) {
- if (!('predicate' in node)) {
- return Promise.resolve();
- }
- const { predicate } = node;
- const value = getValue(node);
- if (typeof predicate === 'function') {
- return (0,_predicate__WEBPACK_IMPORTED_MODULE_4__.getPredicatePromise)(predicate(value));
- }
- return Promise[predicate.indexOf(value) > -1 ? 'resolve' : 'reject']();
- }
- function getAllPredicateResponses(node = activeNode) {
- return [getOwnPredicateResponse(node), ...getSubPredicateResponses(node.parent)];
- }
- function update(node) {
- const previousValue = node.value;
- node.value = getValue(node);
- if (node.hasOptions) {
- _option__WEBPACK_IMPORTED_MODULE_1__.update(node.value);
- }
- Promise.all(getAllPredicateResponses())
- .then(() => {
- node.element.removeClass(_consts__WEBPACK_IMPORTED_MODULE_0__.INVALID_CLASS);
- activeNode.element.addClass(_consts__WEBPACK_IMPORTED_MODULE_0__.VALID_CLASS);
- _tooltip__WEBPACK_IMPORTED_MODULE_2__.hide();
- })
- .catch((reason) => {
- node.element.removeClass(_consts__WEBPACK_IMPORTED_MODULE_0__.VALID_CLASS);
- activeNode.element.addClass(_consts__WEBPACK_IMPORTED_MODULE_0__.INVALID_CLASS);
- activeNode.value = previousValue;
- if (reason) {
- _tooltip__WEBPACK_IMPORTED_MODULE_2__.show(reason);
- }
- });
- }
- function unmount(node) {
- if (node === activeNode) {
- reset();
- }
- }
- function doAction(node) {
- const previousNode = activeNode;
- reset();
- if (previousNode !== node) {
- activeNode = node;
- activeNode.element.valueContainer.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.ACTIVE_CLASS);
- activeNode.element.addClass(_consts__WEBPACK_IMPORTED_MODULE_0__.VALID_CLASS);
- _tooltip__WEBPACK_IMPORTED_MODULE_2__.setNode(node);
- if (node.hasOptions) {
- _option__WEBPACK_IMPORTED_MODULE_1__.setNode(node);
- }
- if (node.input === 'color') {
- node.element.valueElement.click();
- }
- else {
- node.element.valueElement.select();
- }
- (0,_highlight__WEBPACK_IMPORTED_MODULE_3__.addSustained)(node);
- }
- }
- function mount(node) {
- const { backgroundContainer, valueElement, headContainer } = node.element;
- node.element.addClass(_consts__WEBPACK_IMPORTED_MODULE_0__.EDITABLE_CLASS);
- backgroundContainer.append(...(() => {
- const valid = document.createElement('div');
- const invalid = document.createElement('div');
- valid.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.VALID_BACKGROUND_CLASS);
- invalid.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.INVALID_BACKGROUND_CLASS);
- return [valid, invalid];
- })());
- // Start
- valueElement.addEventListener('focus', (event) => {
- event.stopPropagation();
- if (event.relatedTarget && activeNode !== node) {
- doAction(node);
- }
- });
- headContainer.addEventListener('click', (event) => {
- event.stopPropagation();
- if (activeNode !== node) {
- doAction(node);
- }
- });
- // Process new value
- if (typeof node.value === 'boolean') {
- valueElement.addEventListener('click', (event) => {
- event.stopPropagation();
- update(node);
- });
- }
- else {
- valueElement.addEventListener('input', (event) => {
- event.stopPropagation();
- update(node);
- });
- // Stop
- if (node.input === 'color') {
- valueElement.addEventListener('change', (event) => {
- event.stopPropagation();
- reset();
- (0,_highlight__WEBPACK_IMPORTED_MODULE_3__.focusHovered)();
- });
- }
- }
- if (node.hasOptions) {
- _option__WEBPACK_IMPORTED_MODULE_1__.generate(node);
- }
- valueElement.addEventListener('keydown', (event) => {
- switch (event.key) {
- case 'Enter':
- case 'Escape':
- (0,_highlight__WEBPACK_IMPORTED_MODULE_3__.focusHovered)();
- // eslint-disable-next-line no-fallthrough
- case 'Tab':
- event.stopPropagation();
- reset();
- }
- });
- }
- function shouldMount(node) {
- return 'value' in node;
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/edit/option/consts.ts":
- /*!*****************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/edit/option/consts.ts ***!
- \*****************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ OPTION_ACTIVE_CLASS: () => (/* binding */ OPTION_ACTIVE_CLASS),
- /* harmony export */ OPTION_BACKGROUND_CLASS: () => (/* binding */ OPTION_BACKGROUND_CLASS),
- /* harmony export */ OPTION_CLASS: () => (/* binding */ OPTION_CLASS),
- /* harmony export */ OPTION_CONTAINER_CLASS: () => (/* binding */ OPTION_CONTAINER_CLASS),
- /* harmony export */ OPTION_PARENT_CLASS: () => (/* binding */ OPTION_PARENT_CLASS),
- /* harmony export */ OPTION_SHOW_CLASS: () => (/* binding */ OPTION_SHOW_CLASS),
- /* harmony export */ OPTION_WRAPPER_CLASS: () => (/* binding */ OPTION_WRAPPER_CLASS)
- /* harmony export */ });
- const OPTION_CLASS = 'option';
- const OPTION_CONTAINER_CLASS = 'option-container';
- const OPTION_PARENT_CLASS = 'option-parent';
- const OPTION_WRAPPER_CLASS = 'option-wrapper';
- const OPTION_BACKGROUND_CLASS = 'option-background';
- const OPTION_SHOW_CLASS = 'option-show';
- const OPTION_ACTIVE_CLASS = 'option-active';
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/edit/option/css.ts":
- /*!**************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/edit/option/css.ts ***!
- \**************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/edit/option/consts.ts");
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../consts */ "./ts/modal/body/trees/nodes/actions/edit/consts.ts");
- /* harmony import */ var _nodes_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nodes/consts */ "./ts/modal/body/trees/nodes/consts.ts");
- /* harmony import */ var _modal_body_trees_style_update_depth__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/modal/body/trees/style/update/depth */ "./ts/modal/body/trees/style/update/depth.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/modal/css */ "./ts/modal/css.ts");
-
-
-
-
-
- function generate() {
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_4__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_WRAPPER_CLASS}`, [
- ['z-index', '1'],
- ['position', 'absolute'],
- ['bottom', '0'],
- ['display', 'flex'],
- ['width', '100%'],
- ['pointer-events', 'initial'],
- ]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_4__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_PARENT_CLASS}`, [
- ['position', 'absolute'],
- ['display', 'flex'],
- ['flex-direction', 'column'],
- ['width', '100%'],
- ['margin-left', '-1px'],
- ['max-height', 'calc(4.2em + 5px)'],
- ['overflow-y', 'auto'],
- ['border-bottom-left-radius', '12px'],
- ]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_4__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_PARENT_CLASS}:not(.${_consts__WEBPACK_IMPORTED_MODULE_1__.ACTIVE_CLASS} *) `, [['display', 'none']]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_4__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_CONTAINER_CLASS}`, [['position', 'relative']]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_4__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_CONTAINER_CLASS} > *`, [['height', '1.4em']]);
- (0,_modal_body_trees_style_update_depth__WEBPACK_IMPORTED_MODULE_3__.addDepthChangeListener)((depth, addRule) => {
- const headSelector = `.${_nodes_consts__WEBPACK_IMPORTED_MODULE_2__.DEPTH_CLASS_PREFIX}${depth} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_2__.ELEMENT_CLASSES.HEAD_CONTAINER}`;
- addRule(`${headSelector} .${_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_PARENT_CLASS}`, [['border', `1px solid var(--nodeBase${depth})`]]);
- addRule(`${headSelector} .${_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_CONTAINER_CLASS}`, [
- ['background-color', `var(--nodeContrast${depth})`],
- ['color', `var(--nodeBase${depth})`],
- ['border', `1px solid var(--nodeBase${depth})`],
- ]);
- addRule(`${headSelector} .${_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_BACKGROUND_CLASS}`, [['background-color', `var(--nodeBase${depth})`]]);
- addRule(`${headSelector} .${_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_ACTIVE_CLASS} .${_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_CLASS}`, [['color', `var(--nodeContrast${depth})`]]);
- addRule(`${headSelector} .${_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_ACTIVE_CLASS} .${_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_BACKGROUND_CLASS}`, [['width', '100%']]);
- });
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_4__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_CLASS}`, [
- ['position', 'relative'],
- ['transition-property', 'all'],
- ['transition-duration', '500ms'],
- ['padding', '0 0.6rem'],
- ]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_4__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_BACKGROUND_CLASS}`, [
- ['position', 'absolute'],
- ['width', '0'],
- ['transition', 'width 500ms ease 0s'],
- ]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_4__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_CONTAINER_CLASS}:not(.${_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_SHOW_CLASS})`, [['display', 'none']]);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/edit/option/index.ts":
- /*!****************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/edit/option/index.ts ***!
- \****************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ generate: () => (/* binding */ generate),
- /* harmony export */ reset: () => (/* binding */ reset),
- /* harmony export */ setNode: () => (/* binding */ setNode),
- /* harmony export */ update: () => (/* binding */ update)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/edit/option/consts.ts");
- /* harmony import */ var _nodes_consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nodes/consts */ "./ts/modal/body/trees/nodes/consts.ts");
- /* harmony import */ var _modal_body_trees__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/body/trees */ "./ts/modal/body/trees/index.ts");
-
-
-
- const activeOptions = [];
- let activeIndex = -1;
- function getTotalOffsetTop(from) {
- let offsetTop = 2;
- let node;
- for (node = from; !node.classList.contains(_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ROOT_CLASS); node = node.offsetParent) {
- offsetTop += node.offsetTop;
- }
- return offsetTop;
- }
- // source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions#escaping
- function escapeRegExp(string) {
- return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
- }
- function update(value) {
- const regExp = new RegExp(escapeRegExp(value), 'i');
- for (const { parentElement, innerText } of activeOptions) {
- parentElement.classList[regExp.test(innerText) ? 'add' : 'remove'](_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_SHOW_CLASS);
- }
- const wrapper = activeOptions[0].parentElement.parentElement;
- const totalOffsetTop = getTotalOffsetTop(wrapper);
- if (_modal_body_trees__WEBPACK_IMPORTED_MODULE_2__.TREE_CONTAINER.scrollTop + _modal_body_trees__WEBPACK_IMPORTED_MODULE_2__.TREE_CONTAINER.clientHeight < totalOffsetTop + wrapper.clientHeight) {
- _modal_body_trees__WEBPACK_IMPORTED_MODULE_2__.TREE_CONTAINER.scrollTop = totalOffsetTop + wrapper.clientHeight - _modal_body_trees__WEBPACK_IMPORTED_MODULE_2__.TREE_CONTAINER.clientHeight;
- }
- }
- function setValue(node, value, doKill = false) {
- node.element.valueElement.value = value;
- node.value = value;
- if (doKill) {
- // Simulate an 'enter' button press
- node.element.valueElement.dispatchEvent(new KeyboardEvent('keydown', { key: 'Tab' }));
- }
- }
- function setActive(option, isActive = true) {
- option.classList[isActive ? 'add' : 'remove'](_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_ACTIVE_CLASS);
- }
- function reset() {
- for (const { parentElement } of activeOptions) {
- parentElement.classList.remove(_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_SHOW_CLASS);
- }
- if (activeIndex >= 0) {
- setActive(activeOptions[activeIndex].parentElement, false);
- activeIndex = -1;
- }
- activeOptions.length = 0;
- }
- function setNode(node) {
- activeOptions.push(...node.element.valueContainer.querySelectorAll(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_CLASS}`));
- update(node.value);
- }
- function generate(node) {
- const wrapper = document.createElement('div');
- const parent = document.createElement('div');
- for (const value of node.predicate) {
- const container = document.createElement('div');
- const background = document.createElement('div');
- const option = document.createElement('div');
- option.innerText = value;
- container.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_CONTAINER_CLASS);
- option.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_CLASS);
- background.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_BACKGROUND_CLASS);
- container.append(background, option);
- parent.appendChild(container);
- container.addEventListener('click', (event) => {
- event.stopPropagation();
- // Necessary to prevent re-focusing the input element
- event.preventDefault();
- setValue(node, value, true);
- });
- container.addEventListener('mouseenter', (event) => {
- event.stopPropagation();
- setActive(container);
- });
- container.addEventListener('mouseleave', (event) => {
- event.stopPropagation();
- setActive(container, false);
- });
- }
- node.element.valueElement.addEventListener('keydown', ({ key }) => {
- const priorIndex = activeIndex;
- let hasChanged = false;
- switch (key) {
- case 'Tab':
- case 'Enter':
- if (activeIndex >= 0) {
- setValue(node, activeOptions[activeIndex].innerText);
- }
- return;
- case 'ArrowDown':
- for (let i = activeIndex + 1; i < activeOptions.length; ++i) {
- const { parentElement } = activeOptions[i];
- if (parentElement.classList.contains(_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_SHOW_CLASS)) {
- activeIndex = i;
- hasChanged = true;
- const optionBottom = parentElement.offsetTop + parentElement.clientHeight;
- if (parentElement.parentElement.scrollTop < optionBottom) {
- parentElement.parentElement.scrollTop = optionBottom - parentElement.parentElement.clientHeight;
- }
- const totalOffsetTop = getTotalOffsetTop(parentElement);
- if (_modal_body_trees__WEBPACK_IMPORTED_MODULE_2__.TREE_CONTAINER.scrollTop + _modal_body_trees__WEBPACK_IMPORTED_MODULE_2__.TREE_CONTAINER.clientHeight < totalOffsetTop + parentElement.clientHeight - parentElement.parentElement.scrollTop) {
- _modal_body_trees__WEBPACK_IMPORTED_MODULE_2__.TREE_CONTAINER.scrollTop = totalOffsetTop + parentElement.clientHeight - _modal_body_trees__WEBPACK_IMPORTED_MODULE_2__.TREE_CONTAINER.clientHeight - parentElement.parentElement.scrollTop;
- }
- break;
- }
- }
- break;
- case 'ArrowUp':
- for (let i = activeIndex - 1; i >= 0; --i) {
- const { parentElement } = activeOptions[i];
- if (parentElement.classList.contains(_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_SHOW_CLASS)) {
- activeIndex = i;
- hasChanged = true;
- // Scroll option list if necessary
- if (parentElement.parentElement.scrollTop > parentElement.offsetTop) {
- parentElement.parentElement.scrollTop = parentElement.offsetTop;
- }
- const totalOffsetTop = getTotalOffsetTop(parentElement);
- // Scroll modal body if necessary
- if (_modal_body_trees__WEBPACK_IMPORTED_MODULE_2__.TREE_CONTAINER.scrollTop > totalOffsetTop - parentElement.parentElement.scrollTop) {
- _modal_body_trees__WEBPACK_IMPORTED_MODULE_2__.TREE_CONTAINER.scrollTop = totalOffsetTop - parentElement.parentElement.scrollTop;
- }
- break;
- }
- }
- if (hasChanged) {
- break;
- }
- // eslint-disable-next-line no-fallthrough
- default:
- if (activeIndex >= 0) {
- setActive(activeOptions[activeIndex].parentElement, false);
- }
- activeIndex = -1;
- return;
- }
- if (!hasChanged) {
- return;
- }
- if (priorIndex >= 0) {
- setActive(activeOptions[priorIndex].parentElement, false);
- }
- const { parentElement } = activeOptions[activeIndex];
- setActive(parentElement);
- });
- wrapper.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_WRAPPER_CLASS);
- parent.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.OPTION_PARENT_CLASS);
- wrapper.appendChild(parent);
- node.element.valueContainer.appendChild(wrapper);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/focus/consts.ts":
- /*!***********************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/focus/consts.ts ***!
- \***********************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ FOCUS_CLASS: () => (/* binding */ FOCUS_CLASS),
- /* harmony export */ FOCUS_SOURCE_CLASS: () => (/* binding */ FOCUS_SOURCE_CLASS)
- /* harmony export */ });
- const FOCUS_CLASS = 'node-focus';
- const FOCUS_SOURCE_CLASS = 'node-focus-source';
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/focus/css.ts":
- /*!********************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/focus/css.ts ***!
- \********************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/focus/consts.ts");
- /* harmony import */ var _nodes_consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nodes/consts */ "./ts/modal/body/trees/nodes/consts.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/css */ "./ts/modal/css.ts");
-
-
-
- function generate() {
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.ELEMENT_CONTAINER}`, ['cursor', 'zoom-in']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.ELEMENT_CONTAINER}.${_consts__WEBPACK_IMPORTED_MODULE_0__.FOCUS_SOURCE_CLASS}`, ['cursor', 'zoom-out']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ROOT_CLASS}.${_consts__WEBPACK_IMPORTED_MODULE_0__.FOCUS_CLASS} `
- + `.${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.ELEMENT_CONTAINER}:not(.${_consts__WEBPACK_IMPORTED_MODULE_0__.FOCUS_CLASS})`
- + `:not(.${_consts__WEBPACK_IMPORTED_MODULE_0__.FOCUS_SOURCE_CLASS} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.CHILD_CONTAINER} > *)`, ['display', 'none']);
- // Makes it easy to focus down the tree
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.FOCUS_SOURCE_CLASS} .${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.MIDDLE_CLASS} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.HEAD_CONTAINER}`, [['margin-left', '1.8em']]);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/focus/index.ts":
- /*!**********************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/focus/index.ts ***!
- \**********************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ doAction: () => (/* binding */ doAction),
- /* harmony export */ focus: () => (/* binding */ focus),
- /* harmony export */ focusBranch: () => (/* binding */ focusBranch),
- /* harmony export */ isActive: () => (/* binding */ isActive),
- /* harmony export */ mount: () => (/* binding */ mount),
- /* harmony export */ reset: () => (/* binding */ reset),
- /* harmony export */ setTabIndexes: () => (/* binding */ setTabIndexes),
- /* harmony export */ shouldMount: () => (/* binding */ shouldMount),
- /* harmony export */ unmount: () => (/* binding */ unmount)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/focus/consts.ts");
- /* harmony import */ var _buttons_position__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../buttons/position */ "./ts/modal/body/trees/nodes/actions/buttons/position/index.ts");
- /* harmony import */ var _highlight__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../highlight */ "./ts/modal/body/trees/nodes/actions/highlight/index.ts");
- /* harmony import */ var _active__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../active */ "./ts/modal/body/trees/nodes/actions/active.ts");
-
-
-
-
- let candidateNode;
- let activeNode;
- function isActive() {
- return Boolean(activeNode);
- }
- function setTabIndexes(doAdd = true, node = activeNode) {
- const { 'buttonContainer': { 'children': buttons }, valueElement } = node.element;
- for (let i = buttons.length - 1; i >= 0; --i) {
- // Must be set to -1 to prevent tabbing (removeAttribute sets it to 0)
- buttons[i].setAttribute('tabIndex', doAdd ? '1' : '-1');
- }
- if (valueElement) {
- valueElement.setAttribute('tabIndex', doAdd ? '1' : '-1');
- }
- }
- function focus(doFocus = true, node = activeNode, doForce = true) {
- // Avoid unfocusing the active node if not forced
- if (doForce || node !== activeNode) {
- node.element[`${doFocus ? 'add' : 'remove'}Class`](_consts__WEBPACK_IMPORTED_MODULE_0__.FOCUS_SOURCE_CLASS);
- }
- }
- function focusBranch(doFocus = true, node = activeNode, focusAncestors = true) {
- node.element[`${doFocus ? 'add' : 'remove'}Class`](_consts__WEBPACK_IMPORTED_MODULE_0__.FOCUS_CLASS);
- if (focusAncestors && 'parent' in node) {
- focusBranch(doFocus, node.parent);
- }
- }
- function reset() {
- if (!activeNode) {
- return;
- }
- focus(false);
- focusBranch(false);
- (0,_highlight__WEBPACK_IMPORTED_MODULE_2__.removeSustained)(activeNode);
- setTabIndexes(false);
- activeNode.element.scrollIntoView();
- activeNode = undefined;
- }
- function doAction(node, doForce = false) {
- const toggleOn = node !== activeNode;
- // Avoid changing the view when it's already been focused
- if ((0,_buttons_position__WEBPACK_IMPORTED_MODULE_1__.isActive)() || (doForce && !toggleOn)) {
- return;
- }
- reset();
- _active__WEBPACK_IMPORTED_MODULE_3__.register();
- if (toggleOn) {
- activeNode = node;
- node.element.headContainer.focus();
- focus();
- focusBranch();
- (0,_highlight__WEBPACK_IMPORTED_MODULE_2__.addSustained)(node);
- setTabIndexes();
- }
- }
- function unmount(node) {
- if (node === activeNode) {
- reset();
- }
- }
- function mount(node) {
- const { elementContainer, headContainer } = node.element;
- // Handle mouse input
- elementContainer.addEventListener('mousedown', (event) => {
- event.stopPropagation();
- candidateNode = node;
- });
- headContainer.addEventListener('mouseup', (event) => {
- event.stopPropagation();
- candidateNode = undefined;
- });
- headContainer.addEventListener('dragstart', (event) => {
- event.preventDefault();
- });
- elementContainer.addEventListener('dragstart', (event) => {
- event.preventDefault();
- });
- elementContainer.addEventListener('mouseup', (event) => {
- event.stopPropagation();
- if (node === candidateNode) {
- doAction(node);
- }
- candidateNode = undefined;
- });
- // Handle keyboard input
- elementContainer.addEventListener('keydown', (event) => {
- if (event.key === 'Enter') {
- event.stopPropagation();
- doAction(node);
- }
- });
- }
- function shouldMount() {
- return true;
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/highlight/consts.ts":
- /*!***************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/highlight/consts.ts ***!
- \***************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ EAVE_ID: () => (/* binding */ EAVE_ID),
- /* harmony export */ HIGHLIGHT_BACKGROUND_CLASS: () => (/* binding */ HIGHLIGHT_BACKGROUND_CLASS),
- /* harmony export */ HIGHLIGHT_CLASS: () => (/* binding */ HIGHLIGHT_CLASS)
- /* harmony export */ });
- const HIGHLIGHT_CLASS = 'highlight';
- const HIGHLIGHT_BACKGROUND_CLASS = 'background-highlight';
- const EAVE_ID = 'tree-eave';
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/highlight/css.ts":
- /*!************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/highlight/css.ts ***!
- \************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/highlight/consts.ts");
- /* harmony import */ var _buttons_consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../buttons/consts */ "./ts/modal/body/trees/nodes/actions/buttons/consts.ts");
- /* harmony import */ var _nodes_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nodes/consts */ "./ts/modal/body/trees/nodes/consts.ts");
- /* harmony import */ var _modal_body_trees_style_update_depth__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/modal/body/trees/style/update/depth */ "./ts/modal/body/trees/style/update/depth.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/modal/css */ "./ts/modal/css.ts");
-
-
-
-
-
- function generate() {
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_4__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.HIGHLIGHT_CLASS} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_2__.ELEMENT_CLASSES.BACKGROUND_CONTAINER} > .${_consts__WEBPACK_IMPORTED_MODULE_0__.HIGHLIGHT_BACKGROUND_CLASS}`, ['width', '100%']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_4__.addRule)(`.${_nodes_consts__WEBPACK_IMPORTED_MODULE_2__.ELEMENT_CLASSES.LABEL_CONTAINER}`, [
- ['padding-right', '0.4em'],
- // Extend the background further into the value
- ['padding-left', '15%'],
- ]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_4__.addRule)(`.${_buttons_consts__WEBPACK_IMPORTED_MODULE_1__.BUTTON_CLASS}:last-child`, [
- ['border-top-right-radius', '50%'],
- ['border-bottom-right-radius', '50%'],
- ]);
- (0,_modal_body_trees_style_update_depth__WEBPACK_IMPORTED_MODULE_3__.addDepthChangeListener)((depth, addRule) => {
- const rootSelector = `.${_nodes_consts__WEBPACK_IMPORTED_MODULE_2__.DEPTH_CLASS_PREFIX}${depth}`;
- const headSelector = `${rootSelector} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_2__.ELEMENT_CLASSES.HEAD_CONTAINER}`;
- addRule(`${rootSelector} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_2__.ELEMENT_CLASSES.BACKGROUND_CONTAINER} > .${_consts__WEBPACK_IMPORTED_MODULE_0__.HIGHLIGHT_BACKGROUND_CLASS}`, ['background-color', `var(--nodeContrast${depth})`]);
- addRule(`${headSelector} .${_buttons_consts__WEBPACK_IMPORTED_MODULE_1__.BUTTON_CLASS}`, ['background-color', `var(--nodeContrast${depth})`]);
- addRule([
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.HIGHLIGHT_CLASS}${headSelector} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_2__.ELEMENT_CLASSES.VALUE_CONTAINER}`,
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.HIGHLIGHT_CLASS}${headSelector} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_2__.ELEMENT_CLASSES.LABEL_CONTAINER}`,
- ], ['color', `var(--nodeBase${depth})`]);
- addRule(`${headSelector} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_2__.ELEMENT_CLASSES.LABEL_CONTAINER}`, [
- ['background-image', `linear-gradient(to left, var(--nodeBase${depth}) 60%, transparent)`],
- ['background-size', 'auto'],
- ]);
- addRule(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.HIGHLIGHT_CLASS}${headSelector} > .${_nodes_consts__WEBPACK_IMPORTED_MODULE_2__.ELEMENT_CLASSES.LABEL_CONTAINER}`, ['background-image', `linear-gradient(to left, var(--nodeContrast${depth}) 60%, transparent)`]);
- });
- // Bug fixer
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_4__.addRule)(`#${_consts__WEBPACK_IMPORTED_MODULE_0__.EAVE_ID}`, [
- ['position', 'absolute'],
- ['bottom', '0'],
- ['width', '100%'],
- ['height', '1px'],
- ]);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/highlight/index.ts":
- /*!**************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/highlight/index.ts ***!
- \**************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ addSustained: () => (/* binding */ addSustained),
- /* harmony export */ focusHovered: () => (/* binding */ focusHovered),
- /* harmony export */ generateEave: () => (/* binding */ generateEave),
- /* harmony export */ isActive: () => (/* binding */ isActive),
- /* harmony export */ mount: () => (/* binding */ mount),
- /* harmony export */ onMount: () => (/* binding */ onMount),
- /* harmony export */ removeSustained: () => (/* binding */ removeSustained),
- /* harmony export */ reset: () => (/* binding */ reset),
- /* harmony export */ shouldMount: () => (/* binding */ shouldMount)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/highlight/consts.ts");
- /* harmony import */ var _edit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../edit */ "./ts/modal/body/trees/nodes/actions/edit/index.ts");
- /* harmony import */ var _focus__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../focus */ "./ts/modal/body/trees/nodes/actions/focus/index.ts");
- /* harmony import */ var _buttons_position__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../buttons/position */ "./ts/modal/body/trees/nodes/actions/buttons/position/index.ts");
- /* harmony import */ var _modal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/modal */ "./ts/modal/index.ts");
-
-
-
-
-
- let sustainedNodes = [];
- let activeNode;
- function focusHovered() {
- if (activeNode) {
- activeNode.element.headContainer.focus();
- }
- }
- function isActive() {
- return Boolean(activeNode);
- }
- function removeSustained(node) {
- sustainedNodes.splice(sustainedNodes.indexOf(node), 1);
- // Avoid unhighlighting if it's still sustained by another action
- if (node !== activeNode && !sustainedNodes.includes(node)) {
- node.element.removeClass(_consts__WEBPACK_IMPORTED_MODULE_0__.HIGHLIGHT_CLASS);
- }
- }
- function addSustained(node) {
- node.element.addClass(_consts__WEBPACK_IMPORTED_MODULE_0__.HIGHLIGHT_CLASS);
- sustainedNodes.push(node);
- }
- function setActive(node, doFocus = false) {
- if (activeNode && !sustainedNodes.includes(activeNode)) {
- activeNode.element.removeClass(_consts__WEBPACK_IMPORTED_MODULE_0__.HIGHLIGHT_CLASS);
- }
- activeNode = node;
- if (node) {
- node.element.addClass(_consts__WEBPACK_IMPORTED_MODULE_0__.HIGHLIGHT_CLASS);
- if (doFocus) {
- node.element.headContainer.focus();
- }
- }
- }
- function mount(node) {
- const { backgroundContainer, headContainer, elementContainer } = node.element;
- backgroundContainer.appendChild((() => {
- const background = document.createElement('div');
- background.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.HIGHLIGHT_BACKGROUND_CLASS);
- return background;
- })());
- headContainer.setAttribute('tabIndex', '1');
- headContainer.addEventListener('focusin', (event) => {
- event.stopPropagation();
- setActive(node);
- });
- headContainer.addEventListener('mouseenter', (event) => {
- event.stopPropagation();
- setActive(node, !((0,_edit__WEBPACK_IMPORTED_MODULE_1__.isActive)() || (0,_focus__WEBPACK_IMPORTED_MODULE_2__.isActive)() || (0,_buttons_position__WEBPACK_IMPORTED_MODULE_3__.isActive)()));
- });
- elementContainer.addEventListener('mouseenter', (event) => {
- event.stopPropagation();
- setActive(node);
- });
- elementContainer.addEventListener('mouseleave', (event) => {
- event.stopPropagation();
- if ('parent' in node) {
- setActive(node.parent);
- }
- else {
- setActive();
- }
- });
- }
- function shouldMount() {
- return true;
- }
- // Prevents zipping to the end of the tree when mousing over the bottom pixel
- function generateEave() {
- const element = document.createElement('div');
- element.id = _consts__WEBPACK_IMPORTED_MODULE_0__.EAVE_ID;
- element.setAttribute('tabIndex', '3');
- // Prevent tabbing away from the modal
- element.addEventListener('keydown', (event) => {
- if (event.key === 'Tab' && !event.shiftKey && element.isSameNode(event.target)) {
- event.preventDefault();
- }
- });
- return element;
- }
- // Blur focused node & reset focus index
- function reset() {
- setActive();
- (0,_modal__WEBPACK_IMPORTED_MODULE_4__.getSocket)().focus();
- }
- function onMount() {
- const socket = (0,_modal__WEBPACK_IMPORTED_MODULE_4__.getSocket)();
- socket.setAttribute('tabIndex', '1');
- // Prevent tabbing away from the modal
- socket.addEventListener('keydown', (event) => {
- if (event.key === 'Tab' && event.shiftKey && socket.isSameNode(event.target)) {
- event.preventDefault();
- }
- });
- socket.addEventListener('focusin', () => {
- setActive();
- });
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/tooltip/consts.ts":
- /*!*************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/tooltip/consts.ts ***!
- \*************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ TOOLTIP_ANIMATION: () => (/* binding */ TOOLTIP_ANIMATION),
- /* harmony export */ TOOLTIP_BOTTOM_CLASS: () => (/* binding */ TOOLTIP_BOTTOM_CLASS),
- /* harmony export */ TOOLTIP_CLASS: () => (/* binding */ TOOLTIP_CLASS),
- /* harmony export */ TOOLTIP_CONTAINER_CLASS: () => (/* binding */ TOOLTIP_CONTAINER_CLASS),
- /* harmony export */ TOOLTIP_TOP_CLASS: () => (/* binding */ TOOLTIP_TOP_CLASS)
- /* harmony export */ });
- const TOOLTIP_CLASS = 'tooltip';
- const TOOLTIP_CONTAINER_CLASS = 'tooltip-container';
- const TOOLTIP_TOP_CLASS = 'tooltip-above';
- const TOOLTIP_BOTTOM_CLASS = 'tooltip-below';
- const TOOLTIP_ANIMATION = [
- [
- // keyframes
- { opacity: 1 },
- { opacity: 1 },
- { opacity: 0 },
- ], { duration: 2000 },
- ];
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/tooltip/css.ts":
- /*!**********************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/tooltip/css.ts ***!
- \**********************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/tooltip/consts.ts");
- /* harmony import */ var _nodes_consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nodes/consts */ "./ts/modal/body/trees/nodes/consts.ts");
- /* harmony import */ var _modal_body_trees_style_update_depth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/body/trees/style/update/depth */ "./ts/modal/body/trees/style/update/depth.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/modal/css */ "./ts/modal/css.ts");
-
-
-
-
- // todo you need tooltips for deletion/creation/movement.
- // you'll need a different system to position tooltips underneath/above buttons
- function generate() {
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_3__.addRule)(`.${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.VALUE_CONTAINER}`, [['position', 'relative']]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_3__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_CONTAINER_CLASS}`, [
- ['position', 'absolute'],
- ['text-align', 'center'],
- ['z-index', '1'],
- ['width', '100%'],
- ['pointer-events', 'none'],
- ['white-space', 'normal'],
- ]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_3__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_CONTAINER_CLASS}.${_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_TOP_CLASS}`, ['bottom', '102%']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_3__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_CONTAINER_CLASS}.${_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_BOTTOM_CLASS}`, ['top', '102%']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_3__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_CLASS}`, [
- ['margin', '0 auto'],
- ['font-size', '0.9em'],
- ['padding', '3px 8px'],
- ['border-radius', '1em'],
- ['width', '10em'],
- ['outline', 'solid 3px var(--borderTooltip)'],
- ]);
- (0,_modal_body_trees_style_update_depth__WEBPACK_IMPORTED_MODULE_2__.addDepthChangeListener)((depth, addRule) => {
- addRule(`.${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.DEPTH_CLASS_PREFIX}${depth} > :not(.${_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.CHILD_CONTAINER}) .${_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_CLASS}`, [
- ['background-color', `var(--nodeBase${depth})`],
- ['color', `var(--nodeContrast${depth})`],
- ]);
- });
- // Don't show when there's no hint to give
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_3__.addRule)([`.${_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_CLASS}:empty`], ['display', 'none']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_3__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_CLASS}::after`, [
- ['content', '""'],
- ['position', 'absolute'],
- ['left', '50%'],
- ['margin-left', '-0.5em'],
- ['border-width', '0.5em'],
- ['border-style', 'solid'],
- ]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_3__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_TOP_CLASS} > .${_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_CLASS}::after`, [
- ['top', '100%'],
- ['border-color', 'var(--borderTooltip) transparent transparent transparent'],
- ]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_3__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_BOTTOM_CLASS} > .${_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_CLASS}::after`, [
- ['bottom', '100%'],
- ['border-color', 'transparent transparent var(--borderTooltip) transparent'],
- ]);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/actions/tooltip/index.ts":
- /*!************************************************************!*\
- !*** ./ts/modal/body/trees/nodes/actions/tooltip/index.ts ***!
- \************************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ hide: () => (/* binding */ hide),
- /* harmony export */ reset: () => (/* binding */ reset),
- /* harmony export */ setNode: () => (/* binding */ setNode),
- /* harmony export */ show: () => (/* binding */ show)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/actions/tooltip/consts.ts");
- /* harmony import */ var _nodes_consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nodes/consts */ "./ts/modal/body/trees/nodes/consts.ts");
- /* harmony import */ var _modal_body_trees__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/body/trees */ "./ts/modal/body/trees/index.ts");
-
-
-
- let activeParent;
- function isAboveCenter(element, yPosition = 0) {
- if (!element.isSameNode(_modal_body_trees__WEBPACK_IMPORTED_MODULE_2__.TREE_CONTAINER)) {
- if (element.classList.contains(_nodes_consts__WEBPACK_IMPORTED_MODULE_1__.ELEMENT_CLASSES.ELEMENT_CONTAINER)) {
- yPosition += element.offsetTop;
- }
- return isAboveCenter(element.parentElement, yPosition);
- }
- const scrollPosition = _modal_body_trees__WEBPACK_IMPORTED_MODULE_2__.TREE_CONTAINER.scrollTop + (_modal_body_trees__WEBPACK_IMPORTED_MODULE_2__.TREE_CONTAINER.clientHeight / 2);
- return scrollPosition > yPosition;
- }
- function generate(parent) {
- const container = document.createElement('div');
- const element = document.createElement('div');
- container.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_CONTAINER_CLASS);
- element.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_CLASS);
- container.appendChild(element);
- parent.insertBefore(container, parent.firstChild);
- return [container, element];
- }
- function getAnimated(parent) {
- if (!parent) {
- const element = activeParent.querySelector(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_CLASS}`);
- return [element.parentElement, element];
- }
- const oldElement = parent.querySelector(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_CLASS}`);
- if (oldElement) {
- const [animation] = oldElement.getAnimations();
- animation.currentTime = 0;
- return [oldElement.parentElement, oldElement];
- }
- const [container, element] = generate(parent);
- element.animate(..._consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_ANIMATION).onfinish = () => {
- container.remove();
- };
- return [container, element];
- }
- function show(message, parent) {
- const [container, element] = getAnimated(parent);
- if (isAboveCenter(container)) {
- container.classList.remove(_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_TOP_CLASS);
- container.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_BOTTOM_CLASS);
- }
- else {
- container.classList.remove(_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_BOTTOM_CLASS);
- container.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_TOP_CLASS);
- }
- element.innerText = message;
- }
- function hide() {
- const element = activeParent.querySelector(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_CLASS}`);
- if (element) {
- element.innerText = '';
- }
- }
- function reset() {
- activeParent.querySelector(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.TOOLTIP_CONTAINER_CLASS}`).remove();
- activeParent = undefined;
- }
- function setNode(node) {
- const { parentElement } = node.element.valueElement;
- generate(parentElement);
- activeParent = parentElement;
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/child.ts":
- /*!********************************************!*\
- !*** ./ts/modal/body/trees/nodes/child.ts ***!
- \********************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ Child)
- /* harmony export */ });
- /* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "./ts/modal/body/trees/nodes/element.ts");
- /* harmony import */ var _actions_highlight__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./actions/highlight */ "./ts/modal/body/trees/nodes/actions/highlight/index.ts");
- /* harmony import */ var _actions_edit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./actions/edit */ "./ts/modal/body/trees/nodes/actions/edit/index.ts");
- /* harmony import */ var _actions_focus__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./actions/focus */ "./ts/modal/body/trees/nodes/actions/focus/index.ts");
- /* harmony import */ var _actions_buttons_disable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./actions/buttons/disable */ "./ts/modal/body/trees/nodes/actions/buttons/disable/index.ts");
- /* harmony import */ var _actions_buttons_move__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./actions/buttons/move */ "./ts/modal/body/trees/nodes/actions/buttons/move/index.ts");
- /* harmony import */ var _actions_buttons_duplicate__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./actions/buttons/duplicate */ "./ts/modal/body/trees/nodes/actions/buttons/duplicate/index.ts");
- /* harmony import */ var _style_update_depth__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../style/update/depth */ "./ts/modal/body/trees/style/update/depth.ts");
-
-
-
-
-
-
-
-
- const actions = [
- // No button
- _actions_highlight__WEBPACK_IMPORTED_MODULE_1__,
- _actions_focus__WEBPACK_IMPORTED_MODULE_3__,
- _actions_edit__WEBPACK_IMPORTED_MODULE_2__,
- // Button
- _actions_buttons_disable__WEBPACK_IMPORTED_MODULE_4__,
- _actions_buttons_move__WEBPACK_IMPORTED_MODULE_5__,
- _actions_buttons_duplicate__WEBPACK_IMPORTED_MODULE_6__,
- ];
- class Child {
- constructor(data, parent, index) {
- this.depth = parent.depth + 1;
- this.element = new _element__WEBPACK_IMPORTED_MODULE_0__["default"](data);
- this.element.addDepthClass(this.depth % (0,_style_update_depth__WEBPACK_IMPORTED_MODULE_7__.getDepthClassCount)());
- for (const [key, value] of Object.entries(Object.assign({ isActive: true }, data))) {
- this[key] = value;
- }
- this.hasOptions = Array.isArray(data.predicate);
- this.attach(parent, index);
- for (const { shouldMount, mount } of actions) {
- if (shouldMount(this)) {
- mount(this);
- }
- }
- }
- getRoot() {
- return this.parent.getRoot();
- }
- getIndex() {
- return this.parent.children.indexOf(this);
- }
- getSiblings() {
- const index = this.getIndex();
- const siblings = this.parent.children;
- return [...siblings.slice(0, index), ...siblings.slice(index + 1)];
- }
- updateDepthClass(classCount) {
- this.element.addDepthClass(this.depth % classCount);
- }
- detach() {
- this.parent.children.splice(this.getIndex(), 1);
- this.element.remove();
- this.parent = undefined;
- }
- attach(parent, index = parent.children.length) {
- parent.children.splice(index, 0, this);
- parent.element.addChild(this.element, index);
- this.parent = parent;
- }
- move(parent, to) {
- this.detach();
- this.attach(parent, typeof to === 'number' ? to : to.getIndex() + 1);
- }
- duplicate() {
- return new Child(this.getJSON(), this.parent, this.getIndex() + 1);
- }
- unmount() {
- for (const action of actions) {
- if ('unmount' in action) {
- action.unmount(this);
- }
- }
- }
- disconnect() {
- this.unmount();
- this.detach();
- }
- getJSON() {
- const data = { isActive: this.isActive };
- for (const property of ['label', 'value', 'input']) {
- if (property in this) {
- data[property] = this[property];
- }
- }
- return data;
- }
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/consts.ts":
- /*!*********************************************!*\
- !*** ./ts/modal/body/trees/nodes/consts.ts ***!
- \*********************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ DEPTH_CLASS_PREFIX: () => (/* binding */ DEPTH_CLASS_PREFIX),
- /* harmony export */ ELEMENT_CLASSES: () => (/* binding */ ELEMENT_CLASSES),
- /* harmony export */ MIDDLE_CLASS: () => (/* binding */ MIDDLE_CLASS),
- /* harmony export */ ROOT_CLASS: () => (/* binding */ ROOT_CLASS)
- /* harmony export */ });
- const ROOT_CLASS = 'root';
- const MIDDLE_CLASS = 'middle';
- const ELEMENT_CLASSES = {
- ELEMENT_CONTAINER: 'node',
- BACKGROUND_CONTAINER: 'node-background-container',
- CHILD_CONTAINER: 'node-child-container',
- BUTTON_CONTAINER: 'node-button-container',
- HEAD_CONTAINER: 'node-head-container',
- VALUE_CONTAINER: 'node-value-container',
- VALUE: 'node-value',
- LABEL_CONTAINER: 'node-label-container',
- LABEL: 'node-label',
- };
- const DEPTH_CLASS_PREFIX = 'node-depth-';
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/css.ts":
- /*!******************************************!*\
- !*** ./ts/modal/body/trees/nodes/css.ts ***!
- \******************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/consts.ts");
- /* harmony import */ var _style_update_depth__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../style/update/depth */ "./ts/modal/body/trees/style/update/depth.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/css */ "./ts/modal/css.ts");
-
-
-
- function generate() {
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.ROOT_CLASS}`, [
- ['flex-grow', '1'],
- // Apparently it maxes out at the viewport's height without a content-related height value
- ['height', 'fit-content'],
- ]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.ELEMENT_CONTAINER}:not(.${_consts__WEBPACK_IMPORTED_MODULE_0__.ROOT_CLASS}):first-child`, ['margin-top', '0.7px']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`:not(.${_consts__WEBPACK_IMPORTED_MODULE_0__.ROOT_CLASS}) > .${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.CHILD_CONTAINER}`, ['margin-left', '1.8em']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.ELEMENT_CONTAINER}`, ['position', 'relative']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.ELEMENT_CONTAINER} > :not(.${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.CHILD_CONTAINER})`, ['height', '1.6em']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.ELEMENT_CONTAINER}`, [['user-select', 'none']]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)([
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.HEAD_CONTAINER}`,
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.VALUE_CONTAINER}`,
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.LABEL_CONTAINER}`,
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.BACKGROUND_CONTAINER}`,
- ], [
- ['flex-grow', '1'],
- ['display', 'flex'],
- ['align-items', 'center'],
- ]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)([
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.BACKGROUND_CONTAINER}`,
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.LABEL_CONTAINER}`,
- ], [['position', 'absolute']]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.LABEL_CONTAINER}`, [
- ['right', '0'],
- ['top', '0'],
- ['pointer-events', 'none'],
- ]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.VALUE_CONTAINER}`, [['user-select', 'none']]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.BACKGROUND_CONTAINER}`, [
- ['width', '100%'],
- ['height', '100%'],
- ]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.BACKGROUND_CONTAINER} > *`, [
- ['height', '100%'],
- ['width', '0'],
- ['transition', 'width 500ms'],
- ['position', 'absolute'],
- ]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.HEAD_CONTAINER}`, [
- // Puts it above the backgrounds
- ['position', 'relative'],
- ['user-select', 'none'],
- ]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.HEAD_CONTAINER} > *`, [['height', '100%']]);
- (0,_style_update_depth__WEBPACK_IMPORTED_MODULE_1__.addDepthChangeListener)((depth, addRule) => {
- addRule(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.DEPTH_CLASS_PREFIX}${depth}`, [
- ['color', `var(--nodeContrast${depth})`],
- ['background', `var(--nodeBase${depth})`],
- ]);
- addRule(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.DEPTH_CLASS_PREFIX}${depth}`, ['outline', `1px solid var(--nodeContrast${depth})`]);
- addRule(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.DEPTH_CLASS_PREFIX}${depth} > .${_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.BACKGROUND_CONTAINER}`, ['outline', `1px solid var(--nodeContrast${depth})`]);
- });
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/element.ts":
- /*!**********************************************!*\
- !*** ./ts/modal/body/trees/nodes/element.ts ***!
- \**********************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ Element)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/consts.ts");
-
- class Element {
- constructor(data) {
- this.elementContainer = document.createElement('div');
- this.backgroundContainer = document.createElement('div');
- this.headContainer = document.createElement('span');
- this.buttonContainer = document.createElement('span');
- this.childContainer = document.createElement('div');
- this.elementContainer.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.ELEMENT_CONTAINER);
- this.backgroundContainer.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.BACKGROUND_CONTAINER);
- this.childContainer.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.CHILD_CONTAINER);
- this.headContainer.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.HEAD_CONTAINER);
- this.buttonContainer.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.BUTTON_CONTAINER);
- this.elementContainer.appendChild(this.backgroundContainer);
- this.headContainer.appendChild(this.buttonContainer);
- if ('value' in data) {
- this.valueContainer = document.createElement('label');
- this.valueElement = document.createElement('input');
- this.valueContainer.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.VALUE_CONTAINER);
- this.valueElement.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.VALUE);
- this.valueElement.setAttribute('tabIndex', '-1');
- if (typeof data.value === 'boolean') {
- this.valueElement.type = 'checkbox';
- // Positions tooltips below checkboxes
- const valueWrapper = document.createElement('span');
- valueWrapper.appendChild(this.valueElement);
- this.valueContainer.appendChild(valueWrapper);
- }
- else {
- if (typeof data.value === 'number') {
- this.valueElement.type = 'number';
- // Disables a tooltip implying that decimal values are invalid
- this.valueElement.step = 'any';
- }
- else if ('input' in data) {
- this.valueElement.type = data.input;
- }
- this.valueContainer.appendChild(this.valueElement);
- }
- this.render(data.value);
- this.headContainer.appendChild(this.valueContainer);
- }
- this.elementContainer.appendChild(this.headContainer);
- if ('label' in data) {
- this.labelContainer = document.createElement('div');
- this.labelElement = document.createElement('span');
- this.labelContainer.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.LABEL_CONTAINER);
- this.labelElement.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.ELEMENT_CLASSES.LABEL);
- this.labelElement.innerText = data.label;
- this.labelContainer.appendChild(this.labelElement);
- this.headContainer.appendChild(this.labelContainer);
- }
- this.elementContainer.appendChild(this.childContainer);
- }
- render(value) {
- if (typeof value === 'boolean') {
- this.valueElement.checked = value;
- }
- else {
- this.valueElement.value = value.toString();
- }
- }
- addClass(...names) {
- for (const name of names) {
- this.elementContainer.classList.add(name);
- }
- }
- removeClass(...names) {
- for (const name of names) {
- this.elementContainer.classList.remove(name);
- }
- }
- addDepthClass(depth) {
- if (this.depthClass) {
- this.removeClass(this.depthClass);
- }
- const depthClass = `${_consts__WEBPACK_IMPORTED_MODULE_0__.DEPTH_CLASS_PREFIX}${depth}`;
- this.addClass(depthClass);
- this.depthClass = depthClass;
- }
- addChild(child, index) {
- var _a;
- this.childContainer.insertBefore(child.elementContainer, (_a = this.childContainer.children[index]) !== null && _a !== void 0 ? _a : null);
- }
- addButton(button) {
- this.buttonContainer.appendChild(button);
- }
- remove() {
- this.elementContainer.remove();
- }
- scrollIntoView() {
- this.backgroundContainer.scrollIntoView({ block: 'center' });
- }
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/middle.ts":
- /*!*********************************************!*\
- !*** ./ts/modal/body/trees/nodes/middle.ts ***!
- \*********************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ Middle)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/consts.ts");
- /* harmony import */ var _child__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./child */ "./ts/modal/body/trees/nodes/child.ts");
- /* harmony import */ var _actions_buttons_create__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./actions/buttons/create */ "./ts/modal/body/trees/nodes/actions/buttons/create/index.ts");
- var __rest = (undefined && undefined.__rest) || function (s, e) {
- var t = {};
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
- t[p] = s[p];
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
- t[p[i]] = s[p[i]];
- }
- return t;
- };
-
-
-
- const actions = [_actions_buttons_create__WEBPACK_IMPORTED_MODULE_2__];
- class Middle extends _child__WEBPACK_IMPORTED_MODULE_1__["default"] {
- constructor(_a, parent, index) {
- var { children } = _a, data = __rest(_a, ["children"]);
- super(data, parent, index);
- this.children = [];
- for (const [key, value] of Object.entries(data)) {
- this[key] = value;
- }
- for (const child of children) {
- if ('children' in child) {
- new Middle(child, this);
- }
- else {
- new _child__WEBPACK_IMPORTED_MODULE_1__["default"](child, this);
- }
- }
- this.element.addClass(_consts__WEBPACK_IMPORTED_MODULE_0__.MIDDLE_CLASS);
- for (const { shouldMount, mount } of actions) {
- if (shouldMount(this)) {
- mount(this);
- }
- }
- }
- duplicate() {
- return new Middle(this.getJSON(), this.parent, this.getIndex() + 1);
- }
- unmount() {
- super.unmount();
- for (const action of actions) {
- if ('unmount' in action) {
- action.unmount(this);
- }
- }
- }
- disconnect() {
- this.unmount();
- for (const child of this.children) {
- child.disconnect();
- }
- this.detach();
- }
- updateDepthClass(classCount) {
- super.updateDepthClass(classCount);
- for (const child of this.children) {
- child.updateDepthClass(classCount);
- }
- }
- getJSON() {
- return Object.assign({ children: this.children.map((child) => child.getJSON()) }, super.getJSON());
- }
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/nodes/root.ts":
- /*!*******************************************!*\
- !*** ./ts/modal/body/trees/nodes/root.ts ***!
- \*******************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ Root)
- /* harmony export */ });
- /* harmony import */ var _middle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./middle */ "./ts/modal/body/trees/nodes/middle.ts");
- /* harmony import */ var _child__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./child */ "./ts/modal/body/trees/nodes/child.ts");
- /* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ "./ts/modal/body/trees/nodes/element.ts");
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/nodes/consts.ts");
- /* harmony import */ var _actions_highlight__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./actions/highlight */ "./ts/modal/body/trees/nodes/actions/highlight/index.ts");
- /* harmony import */ var _actions_focus__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./actions/focus */ "./ts/modal/body/trees/nodes/actions/focus/index.ts");
- /* harmony import */ var _actions_buttons_create__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./actions/buttons/create */ "./ts/modal/body/trees/nodes/actions/buttons/create/index.ts");
- var __rest = (undefined && undefined.__rest) || function (s, e) {
- var t = {};
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
- t[p] = s[p];
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
- t[p[i]] = s[p[i]];
- }
- return t;
- };
-
-
-
-
-
-
-
- const actions = [_actions_highlight__WEBPACK_IMPORTED_MODULE_4__, _actions_focus__WEBPACK_IMPORTED_MODULE_5__, _actions_buttons_create__WEBPACK_IMPORTED_MODULE_6__];
- class Root {
- constructor(_a) {
- var { children } = _a, data = __rest(_a, ["children"]);
- this.children = [];
- this.depth = 0;
- this.element = new _element__WEBPACK_IMPORTED_MODULE_2__["default"]({});
- this.element.addClass(_consts__WEBPACK_IMPORTED_MODULE_3__.ROOT_CLASS);
- this.element.addDepthClass(0);
- for (const [key, value] of Object.entries(data)) {
- this[key] = value;
- }
- this.addChildren(children);
- for (const { shouldMount, mount } of actions) {
- if (shouldMount(this)) {
- mount(this);
- }
- }
- }
- addChildren(children) {
- for (const child of children) {
- if ('children' in child) {
- new _middle__WEBPACK_IMPORTED_MODULE_0__["default"](child, this);
- }
- else {
- new _child__WEBPACK_IMPORTED_MODULE_1__["default"](child, this);
- }
- }
- }
- getRoot() {
- return this;
- }
- updateDepthClass(classCount) {
- for (const child of this.children) {
- child.updateDepthClass(classCount);
- }
- }
- getJSON() {
- return { children: this.children.map((child) => child.getJSON()) };
- }
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/style/consts.ts":
- /*!*********************************************!*\
- !*** ./ts/modal/body/trees/style/consts.ts ***!
- \*********************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ DEFAULT_STYLE: () => (/* binding */ DEFAULT_STYLE),
- /* harmony export */ ROOT_ID: () => (/* binding */ ROOT_ID)
- /* harmony export */ });
- const ROOT_ID = 'root-style';
- const DEFAULT_STYLE = {
- fontSize: 18,
- borderTooltip: '#570000',
- borderModal: '#ffffff',
- headBase: '#000000',
- headContrast: 'Black / White',
- headButtonExit: '#f10000',
- headButtonLabel: '#ffd189',
- headButtonStyle: '#ff75da',
- headButtonHide: '#00bfff',
- headButtonAlt: '#ffea00',
- nodeBase: ['#000000'],
- nodeContrast: 'Black / White',
- nodeButtonCreate: '#40ff40',
- nodeButtonDuplicate: '#40ffff',
- nodeButtonMove: '#ac60ff',
- nodeButtonDisable: '#ffd000',
- nodeButtonDelete: '#ff1111',
- validBackground: '#d9ffc0',
- invalidBackground: '#ffb4be',
- };
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/style/css.ts":
- /*!******************************************!*\
- !*** ./ts/modal/body/trees/style/css.ts ***!
- \******************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/style/consts.ts");
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../consts */ "./ts/modal/body/trees/consts.ts");
- /* harmony import */ var _data_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../data/consts */ "./ts/modal/body/trees/data/consts.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/modal/css */ "./ts/modal/css.ts");
- /* harmony import */ var _modal_header_actions_style_consts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/modal/header/actions/style/consts */ "./ts/modal/header/actions/style/consts.ts");
-
-
-
-
-
- function generate() {
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_3__.addRule)(`#${_consts__WEBPACK_IMPORTED_MODULE_1__.TREE_CONTAINER_ID}.${_modal_header_actions_style_consts__WEBPACK_IMPORTED_MODULE_4__.ACTION_ID} > #${_data_consts__WEBPACK_IMPORTED_MODULE_2__.ROOT_ID}`, ['display', 'none']);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_3__.addRule)(`#${_consts__WEBPACK_IMPORTED_MODULE_1__.TREE_CONTAINER_ID}:not(.${_modal_header_actions_style_consts__WEBPACK_IMPORTED_MODULE_4__.ACTION_ID}) > #${_consts__WEBPACK_IMPORTED_MODULE_0__.ROOT_ID}`, ['display', 'none']);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/style/index.ts":
- /*!********************************************!*\
- !*** ./ts/modal/body/trees/style/index.ts ***!
- \********************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate),
- /* harmony export */ getActiveStyle: () => (/* binding */ getActiveStyle),
- /* harmony export */ getRoot: () => (/* binding */ getRoot),
- /* harmony export */ getUserStyles: () => (/* binding */ getUserStyles),
- /* harmony export */ toJSON: () => (/* binding */ toJSON),
- /* harmony export */ toRawStyle: () => (/* binding */ toRawStyle)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/body/trees/style/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./css */ "./ts/modal/body/trees/style/css.ts");
- /* harmony import */ var _update__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./update */ "./ts/modal/body/trees/style/update/index.ts");
- /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! .. */ "./ts/modal/body/trees/index.ts");
- /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @types */ "./ts/library/validation/types.ts");
-
-
-
-
-
- function getRoot() {
- return ___WEBPACK_IMPORTED_MODULE_3__.ROOTS[_consts__WEBPACK_IMPORTED_MODULE_0__.ROOT_ID];
- }
- // Fill any missing entries
- function getFilledStyle(style = {}) {
- return Object.assign(Object.assign({}, _consts__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_STYLE), style);
- }
- function getActiveStyle(userStyles, devStyle) {
- const activeUserStyle = userStyles.find(({ isActive }) => isActive);
- return activeUserStyle !== null && activeUserStyle !== void 0 ? activeUserStyle : getFilledStyle(devStyle);
- }
- function toJSON(style) {
- const filledStyle = Object.assign(Object.assign({}, _consts__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_STYLE), style);
- const toDepthColour = (value) => ({ value, input: 'color' });
- return {
- label: 'Name',
- value: filledStyle.name,
- children: [
- {
- label: 'Style Is Active?',
- value: filledStyle.isActive,
- },
- {
- label: 'Modal',
- children: [
- {
- label: 'Font Size (px)',
- value: filledStyle.fontSize,
- predicate: (value) => value > 0 ? true : 'Font size must be greater than zero',
- },
- {
- label: 'Border Color',
- value: filledStyle.borderModal,
- input: 'color',
- },
- ],
- },
- {
- label: 'Header',
- children: [
- {
- label: 'General',
- children: [
- {
- label: 'Base Color',
- value: filledStyle.headBase,
- input: 'color',
- },
- {
- label: 'Contrast Method',
- value: filledStyle.headContrast,
- predicate: [..._types__WEBPACK_IMPORTED_MODULE_4__.CONTRAST_METHODS],
- },
- ],
- },
- {
- label: 'Buttons',
- children: [
- {
- label: 'Exit Color',
- value: filledStyle.headButtonExit,
- input: 'color',
- },
- {
- label: 'Label Color',
- value: filledStyle.headButtonLabel,
- input: 'color',
- },
- {
- label: 'Style Color',
- value: filledStyle.headButtonStyle,
- input: 'color',
- },
- {
- label: 'Hide Color',
- value: filledStyle.headButtonHide,
- input: 'color',
- },
- {
- label: 'Alt Buttons Color',
- value: filledStyle.headButtonAlt,
- input: 'color',
- },
- ],
- },
- ],
- },
- {
- label: 'Body',
- children: [
- {
- label: 'General',
- children: [
- {
- label: 'Depth Base Colors',
- seed: toDepthColour(_consts__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_STYLE.nodeBase[0]),
- children: filledStyle.nodeBase.map(toDepthColour),
- childPredicate: (children) => children.length > 0 ? true : 'At least one color must be provided.',
- },
- {
- label: 'Contrast Method',
- value: filledStyle.nodeContrast,
- predicate: [..._types__WEBPACK_IMPORTED_MODULE_4__.CONTRAST_METHODS],
- },
- ],
- },
- {
- label: 'Buttons',
- children: [
- {
- label: 'Create Color',
- value: filledStyle.nodeButtonCreate,
- input: 'color',
- },
- {
- label: 'Duplicate Color',
- value: filledStyle.nodeButtonDuplicate,
- input: 'color',
- },
- {
- label: 'Move Color',
- value: filledStyle.nodeButtonMove,
- input: 'color',
- },
- {
- label: 'Disable Color',
- value: filledStyle.nodeButtonDisable,
- input: 'color',
- },
- {
- label: 'Delete Color',
- value: filledStyle.nodeButtonDelete,
- input: 'color',
- },
- ],
- },
- {
- label: 'Miscellaneous',
- children: [
- {
- label: 'Valid Color',
- value: filledStyle.validBackground,
- input: 'color',
- },
- {
- label: 'Invalid Color',
- value: filledStyle.invalidBackground,
- input: 'color',
- },
- {
- label: 'Tooltip Color',
- value: filledStyle.borderTooltip,
- input: 'color',
- },
- ],
- },
- ],
- },
- ],
- };
- }
- function toRawStyle(json) {
- const [, modal, header, body] = json.children.map(({ children }) => children);
- const [headerGeneral, headerButtons] = header.map(({ children }) => children);
- const [bodyGeneral, bodyButtons, bodyMisc] = body.map(({ children }) => children);
- return {
- fontSize: modal[0].value,
- borderModal: modal[1].value,
- headBase: headerGeneral[0].value,
- headContrast: headerGeneral[1].value,
- headButtonExit: headerButtons[0].value,
- headButtonLabel: headerButtons[1].value,
- headButtonStyle: headerButtons[2].value,
- headButtonHide: headerButtons[3].value,
- headButtonAlt: headerButtons[4].value,
- nodeBase: bodyGeneral[0].children
- .filter(({ isActive }) => isActive)
- .map((child) => child.value),
- nodeContrast: bodyGeneral[1].value,
- nodeButtonCreate: bodyButtons[0].value,
- nodeButtonDuplicate: bodyButtons[1].value,
- nodeButtonMove: bodyButtons[2].value,
- nodeButtonDisable: bodyButtons[3].value,
- nodeButtonDelete: bodyButtons[4].value,
- validBackground: bodyMisc[0].value,
- invalidBackground: bodyMisc[1].value,
- borderTooltip: bodyMisc[2].value,
- };
- }
- // For returning updated styles to the userscript
- function getUserStyles() {
- const { 'children': styleNodes } = getRoot().getJSON();
- const styles = [];
- for (const json of styleNodes) {
- styles.push(Object.assign({ name: json.value, isActive: json.children[0].value }, toRawStyle(json)));
- }
- return styles;
- }
- function generate(userStyles, devStyle) {
- (0,_css__WEBPACK_IMPORTED_MODULE_1__["default"])();
- const defaultStyle = getFilledStyle(devStyle);
- return (0,___WEBPACK_IMPORTED_MODULE_3__.generateTree)({
- children: userStyles.map(toJSON),
- seed: toJSON(Object.assign({ name: 'New Style', isActive: false }, defaultStyle)),
- descendantPredicate: (styleNodes) => {
- const activeStyles = styleNodes.filter(({ isActive, 'children': [{ value }], }) => isActive && value);
- switch (activeStyles.length) {
- case 0:
- (0,_update__WEBPACK_IMPORTED_MODULE_2__["default"])(defaultStyle);
- return true;
- case 1:
- (0,_update__WEBPACK_IMPORTED_MODULE_2__["default"])(toRawStyle(activeStyles[0]));
- return true;
- default:
- return 'Only one color scheme may be active at a time.';
- }
- },
- }, _consts__WEBPACK_IMPORTED_MODULE_0__.ROOT_ID);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/style/update/depth.ts":
- /*!***************************************************!*\
- !*** ./ts/modal/body/trees/style/update/depth.ts ***!
- \***************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ addDepthChangeListener: () => (/* binding */ addDepthChangeListener),
- /* harmony export */ getDepthClassCount: () => (/* binding */ getDepthClassCount),
- /* harmony export */ updateDepth: () => (/* binding */ updateDepth)
- /* harmony export */ });
- /* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../index */ "./ts/modal/body/trees/index.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/modal/css */ "./ts/modal/css.ts");
-
-
- const STYLESHEET = (0,_modal_css__WEBPACK_IMPORTED_MODULE_1__.generateStylesheet)();
- const callbacks = [];
- let currentClassCount;
- function getDepthClassCount() {
- return currentClassCount;
- }
- function addDepthRule(selectors, styles) {
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_1__.addRule)(selectors, styles, STYLESHEET);
- }
- function addDepthChangeListener(callback) {
- callbacks.push((depth) => callback(depth, addDepthRule));
- for (let i = 0; i < currentClassCount; ++i) {
- callback(i, addDepthRule);
- }
- }
- function updateDepth(depth) {
- for (let i = STYLESHEET.cssRules.length - 1; i >= 0; --i) {
- STYLESHEET.deleteRule(i);
- }
- for (const root of Object.values(_index__WEBPACK_IMPORTED_MODULE_0__.ROOTS)) {
- root.updateDepthClass(depth);
- }
- for (let i = 0; i < depth; ++i) {
- for (const callback of callbacks) {
- callback(i, addDepthRule);
- }
- }
- currentClassCount = depth;
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/body/trees/style/update/index.ts":
- /*!***************************************************!*\
- !*** ./ts/modal/body/trees/style/update/index.ts ***!
- \***************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ updateStylesheet)
- /* harmony export */ });
- /* harmony import */ var _depth__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./depth */ "./ts/modal/body/trees/style/update/depth.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/modal/css */ "./ts/modal/css.ts");
- var __rest = (undefined && undefined.__rest) || function (s, e) {
- var t = {};
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
- t[p] = s[p];
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
- t[p[i]] = s[p[i]];
- }
- return t;
- };
-
-
- const STYLESHEET = (0,_modal_css__WEBPACK_IMPORTED_MODULE_1__.generateStylesheet)();
- function getContrast(hex, method) {
- const r = parseInt(hex.slice(1, 3), 16);
- const g = parseInt(hex.slice(3, 5), 16);
- const b = parseInt(hex.slice(5, 7), 16);
- switch (method) {
- case 'Black / White': {
- // https://stackoverflow.com/a/3943023/112731
- const luminosity = r * 0.299 + g * 0.587 + b * 0.114;
- return luminosity > 145 ? 'black' : 'white';
- }
- }
- const toHexPart = (rgb) => {
- const x = (255 - rgb).toString(16);
- return x.length === 2 ? x : `0${x}`;
- };
- return `#${toHexPart(r)}${toHexPart((g))}${toHexPart(b)}`;
- }
- function updateStylesheet(_a) {
- var { fontSize, headContrast, nodeBase, nodeContrast } = _a, colours = __rest(_a, ["fontSize", "headContrast", "nodeBase", "nodeContrast"]);
- for (let i = STYLESHEET.cssRules.length - 1; i >= 0; --i) {
- STYLESHEET.deleteRule(i);
- }
- (0,_depth__WEBPACK_IMPORTED_MODULE_0__.updateDepth)(nodeBase.length);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_1__.addRule)('', ['font-size', `${fontSize}px`], STYLESHEET);
- const colourStyles = Object.entries(colours).map(([property, value]) => [`--${property}`, value]);
- for (const [depth, baseColour] of nodeBase.entries()) {
- const contrastColour = getContrast(baseColour, nodeContrast);
- colourStyles.push([`--nodeBase${depth}`, baseColour]);
- colourStyles.push([`--nodeContrast${depth}`, contrastColour]);
- }
- colourStyles.push(['--headContrast', getContrast(colours.headBase, headContrast)]);
- colourStyles.push(['--validFont', getContrast(colours.validBackground, nodeContrast)]);
- colourStyles.push(['--invalidFont', getContrast(colours.invalidBackground, nodeContrast)]);
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_1__.addVariables)(colourStyles, STYLESHEET);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/consts.ts":
- /*!****************************!*\
- !*** ./ts/modal/consts.ts ***!
- \****************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ BUTTON_ACTIVE_CLASS: () => (/* binding */ BUTTON_ACTIVE_CLASS),
- /* harmony export */ MODAL_BACKGROUND_ID: () => (/* binding */ MODAL_BACKGROUND_ID),
- /* harmony export */ MODAL_ID: () => (/* binding */ MODAL_ID),
- /* harmony export */ SVG_NAMESPACE: () => (/* binding */ SVG_NAMESPACE)
- /* harmony export */ });
- const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
- // Indicates 'on' state for actions that can be turned on and off
- const BUTTON_ACTIVE_CLASS = 'active';
- const MODAL_BACKGROUND_ID = 'modal-background';
- const MODAL_ID = 'modal-content';
-
-
- /***/ }),
-
- /***/ "./ts/modal/css.ts":
- /*!*************************!*\
- !*** ./ts/modal/css.ts ***!
- \*************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ addRule: () => (/* binding */ addRule),
- /* harmony export */ addVariables: () => (/* binding */ addVariables),
- /* harmony export */ "default": () => (/* binding */ generate),
- /* harmony export */ generateStylesheet: () => (/* binding */ generateStylesheet),
- /* harmony export */ getRuleString: () => (/* binding */ getRuleString),
- /* harmony export */ getTargetWindow: () => (/* binding */ getTargetWindow),
- /* harmony export */ setRootId: () => (/* binding */ setRootId)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/consts.ts");
-
- let targetWindow = window;
- while (targetWindow.frameElement) {
- targetWindow = window.parent;
- }
- function getTargetWindow() {
- return targetWindow;
- }
- let rootSelector = 'body';
- function setRootId(id) {
- rootSelector = `#${id}`;
- }
- function generateStylesheet() {
- const wrapper = document.createElement('style');
- getTargetWindow().document.head.appendChild(wrapper);
- return wrapper.sheet;
- }
- const STYLESHEET = generateStylesheet();
- function isStyle(candidate) {
- return candidate.length > 0 && typeof candidate[0] === 'string';
- }
- function getStyleString([property, value]) {
- return `${property}:${value};`;
- }
- function getRuleString(selectors, rules) {
- const styleString = isStyle(rules) ? getStyleString(rules) : rules.map(getStyleString).join('');
- const selectorString = typeof selectors === 'string' ? selectors : selectors.join(`,${rootSelector} `);
- return `${rootSelector} ${selectorString}{${styleString}}`;
- }
- function addRule(selectors, styles, stylesheet = STYLESHEET) {
- stylesheet.insertRule(getRuleString(selectors, styles));
- }
- function addVariables(rules, stylesheet = STYLESHEET) {
- const styleString = rules.map(getStyleString).join('');
- stylesheet.insertRule(`:root{${styleString}}`);
- }
- function generate() {
- addRule(`#${_consts__WEBPACK_IMPORTED_MODULE_0__.MODAL_BACKGROUND_ID}`, [
- ['position', 'fixed'],
- ['left', '0'],
- ['top', '0'],
- ['width', '100%'],
- ['height', '100%'],
- ['background-color', '#0003'],
- ]);
- addRule(`#${_consts__WEBPACK_IMPORTED_MODULE_0__.MODAL_ID}`, [
- ['position', 'relative'],
- ['margin', '12vh auto'],
- ['padding', '0'],
- ['width', '80%'],
- ['font-family', 'Tahoma, Geneva, sans-serif'],
- ['outline', 'var(--borderModal) solid 2px'],
- ['box-shadow', '1px 1px 10px 4px #00000015, 0 0 30px 10px #00000065'],
- ]);
- addRule('button', [
- ['display', 'inline-flex'],
- ['cursor', 'pointer'],
- ['background', 'none'],
- ['font-size', 'inherit'],
- ['padding', '0'],
- ['margin', '0'],
- ['border', 'none'],
- ['outline-offset', '-2px'],
- ]);
- addRule('button *', [['pointer-events', 'none']]);
- addRule('svg', [['fill', 'none']]);
- addRule('input', [
- ['font', 'inherit'],
- ['background', 'inherit'],
- ['color', 'inherit'],
- ['border', 'none'],
- ]);
- addRule(':focus-visible:not(button):not(input)', [['outline', 'none']]);
- addRule('label', [['cursor', 'inherit']]);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/alternate/button.ts":
- /*!*****************************************************!*\
- !*** ./ts/modal/header/actions/alternate/button.ts ***!
- \*****************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/actions/alternate/consts.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../button */ "./ts/modal/header/actions/button.ts");
- /* harmony import */ var _modal_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/consts */ "./ts/modal/consts.ts");
-
-
-
- const ALPHA = Math.PI / 5;
- const RADIUS = 46;
- const points = [];
- // https://stackoverflow.com/questions/14580033/algorithm-for-drawing-a-5-point-star
- for (let i = 0; i < 12; ++i) {
- const r = RADIUS * (i % 2 + 1) / 2;
- const omega = ALPHA * i;
- points.push([r * Math.sin(omega), r * Math.cos(omega)]);
- }
- const outline = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'path');
- outline.setAttribute('stroke-linecap', 'round');
- outline.setAttribute('stroke-width', '7');
- outline.setAttribute('d', points.map(([x, y], i) => `${i === 0 ? 'M' : 'L'} ${x},${y}`).join());
- const g = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'g');
- g.append(outline);
- const BUTTON = (0,_button__WEBPACK_IMPORTED_MODULE_1__.getNewButton)(g, _consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, 'Toggle Special Buttons');
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BUTTON);
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/alternate/consts.ts":
- /*!*****************************************************!*\
- !*** ./ts/modal/header/actions/alternate/consts.ts ***!
- \*****************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ ACTION_ID: () => (/* binding */ ACTION_ID)
- /* harmony export */ });
- const ACTION_ID = 'modal-alt';
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/alternate/css.ts":
- /*!**************************************************!*\
- !*** ./ts/modal/header/actions/alternate/css.ts ***!
- \**************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/actions/alternate/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../css */ "./ts/modal/header/actions/css.ts");
-
-
- function generate() {
- (0,_css__WEBPACK_IMPORTED_MODULE_1__.addColourRule)(_consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, '--headButtonAlt');
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/alternate/index.ts":
- /*!****************************************************!*\
- !*** ./ts/modal/header/actions/alternate/index.ts ***!
- \****************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate),
- /* harmony export */ isActive: () => (/* binding */ isActive)
- /* harmony export */ });
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./button */ "./ts/modal/header/actions/alternate/button.ts");
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/actions/alternate/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./css */ "./ts/modal/header/actions/alternate/css.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../button */ "./ts/modal/header/actions/button.ts");
- /* harmony import */ var _modal_body_trees__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/modal/body/trees */ "./ts/modal/body/trees/index.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/modal/css */ "./ts/modal/css.ts");
-
-
-
-
-
-
- let _isActive = false;
- let keyHeld = false;
- function isActive() {
- return _isActive;
- }
- function doAction(doActivate = !_isActive) {
- (0,_modal_body_trees__WEBPACK_IMPORTED_MODULE_4__.setActive)(_button__WEBPACK_IMPORTED_MODULE_0__["default"], _consts__WEBPACK_IMPORTED_MODULE_1__.ACTION_ID, doActivate);
- _isActive = doActivate;
- }
- function generate() {
- (0,_css__WEBPACK_IMPORTED_MODULE_2__["default"])();
- (0,_button__WEBPACK_IMPORTED_MODULE_3__.bindAction)(_button__WEBPACK_IMPORTED_MODULE_0__["default"], doAction);
- _button__WEBPACK_IMPORTED_MODULE_0__["default"].title += ' (Ctrl)';
- const targetWindow = (0,_modal_css__WEBPACK_IMPORTED_MODULE_5__.getTargetWindow)();
- targetWindow.addEventListener('keydown', (event) => {
- if (event.key === 'Control') {
- keyHeld = true;
- doAction(true);
- }
- });
- targetWindow.addEventListener('keyup', (event) => {
- if (event.key === 'Control') {
- keyHeld = false;
- doAction(false);
- }
- });
- targetWindow.addEventListener('blur', () => {
- if (keyHeld) {
- keyHeld = false;
- doAction(false);
- }
- });
- return _button__WEBPACK_IMPORTED_MODULE_0__["default"];
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/button.ts":
- /*!*******************************************!*\
- !*** ./ts/modal/header/actions/button.ts ***!
- \*******************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ bindAction: () => (/* binding */ bindAction),
- /* harmony export */ getNewButton: () => (/* binding */ getNewButton)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/actions/consts.ts");
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../consts */ "./ts/modal/consts.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/css */ "./ts/modal/css.ts");
-
-
-
- // Adds the template to the DOM
- function bindAction(button, doAction, hotkey) {
- const bound = (event) => {
- event.stopPropagation();
- button.blur();
- doAction();
- };
- button.addEventListener('click', bound);
- if (hotkey) {
- button.title += ` (Alt+${hotkey})`;
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.getTargetWindow)().addEventListener('keydown', (event) => {
- if (event.altKey && event.key.toUpperCase() === hotkey) {
- bound(event);
- }
- });
- }
- return bound;
- }
- // Creates a template
- const getNewButton = (function () {
- const buttonTemplate = document.createElement('button');
- const svgTemplate = document.createElementNS(_consts__WEBPACK_IMPORTED_MODULE_1__.SVG_NAMESPACE, 'svg');
- buttonTemplate.classList.add(_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS);
- // Prevent tabbing to buttons until node is focused
- buttonTemplate.setAttribute('tabIndex', '2');
- svgTemplate.setAttribute('viewBox', `-70 -70 140 140`);
- return function (group, actionId, description) {
- const button = buttonTemplate.cloneNode(true);
- const svg = svgTemplate.cloneNode(true);
- button.id = actionId;
- button.title = description;
- svg.append(group);
- button.append(svg);
- return button;
- };
- })();
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/close/button.ts":
- /*!*************************************************!*\
- !*** ./ts/modal/header/actions/close/button.ts ***!
- \*************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/actions/close/consts.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../button */ "./ts/modal/header/actions/button.ts");
- /* harmony import */ var _modal_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/consts */ "./ts/modal/consts.ts");
-
-
-
- const line0 = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'line');
- line0.setAttribute('stroke-linecap', 'round');
- line0.setAttribute('stroke-width', '12');
- line0.setAttribute('x1', '-30');
- line0.setAttribute('x2', '30');
- line0.setAttribute('y1', '-30');
- line0.setAttribute('y2', '30');
- const line1 = line0.cloneNode(true);
- line1.setAttribute('transform', 'rotate(90 0 0)');
- const g = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'g');
- g.append(line0, line1);
- const BUTTON = (0,_button__WEBPACK_IMPORTED_MODULE_1__.getNewButton)(g, _consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, 'Save & Exit');
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BUTTON);
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/close/consts.ts":
- /*!*************************************************!*\
- !*** ./ts/modal/header/actions/close/consts.ts ***!
- \*************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ ACTION_ID: () => (/* binding */ ACTION_ID),
- /* harmony export */ HOTKEY: () => (/* binding */ HOTKEY)
- /* harmony export */ });
- const ACTION_ID = 'modal-close';
- const HOTKEY = 'X';
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/close/css.ts":
- /*!**********************************************!*\
- !*** ./ts/modal/header/actions/close/css.ts ***!
- \**********************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/actions/close/consts.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/modal/css */ "./ts/modal/css.ts");
-
-
- function generate() {
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_1__.addRule)([
- `#${_consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID}:focus > svg`,
- `#${_consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID}:hover > svg`,
- ], ['background-color', 'var(--headButtonExit)']);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/close/index.ts":
- /*!************************************************!*\
- !*** ./ts/modal/header/actions/close/index.ts ***!
- \************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate),
- /* harmony export */ setCallback: () => (/* binding */ setCallback)
- /* harmony export */ });
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./button */ "./ts/modal/header/actions/close/button.ts");
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/actions/close/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./css */ "./ts/modal/header/actions/close/css.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../button */ "./ts/modal/header/actions/button.ts");
- /* harmony import */ var _modal_body_trees_data__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/modal/body/trees/data */ "./ts/modal/body/trees/data/index.ts");
- /* harmony import */ var _modal_body_trees_style__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/modal/body/trees/style */ "./ts/modal/body/trees/style/index.ts");
- /* harmony import */ var _nodes_actions_focus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @nodes/actions/focus */ "./ts/modal/body/trees/nodes/actions/focus/index.ts");
- /* harmony import */ var _nodes_actions_edit__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @nodes/actions/edit */ "./ts/modal/body/trees/nodes/actions/edit/index.ts");
- /* harmony import */ var _nodes_actions_buttons_move__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @nodes/actions/buttons/move */ "./ts/modal/body/trees/nodes/actions/buttons/move/index.ts");
- /* harmony import */ var _nodes_actions_highlight__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @nodes/actions/highlight */ "./ts/modal/body/trees/nodes/actions/highlight/index.ts");
- /* harmony import */ var _modal_body_trees__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/modal/body/trees */ "./ts/modal/body/trees/index.ts");
-
-
-
-
-
-
-
-
-
-
-
- let callback;
- function setCallback(_callback) {
- callback = _callback;
- }
- // TODO Maybe add a white, 0.5 opacity foreground over everything with a loading symbol.
- // Do the same when waiting for a config.
- // Prevent interaction during loading by adding a stopPropagation click listener to the foreground.
- function doAction() {
- (0,_nodes_actions_focus__WEBPACK_IMPORTED_MODULE_6__.reset)();
- (0,_nodes_actions_edit__WEBPACK_IMPORTED_MODULE_7__.reset)();
- (0,_nodes_actions_buttons_move__WEBPACK_IMPORTED_MODULE_8__.reset)();
- (0,_nodes_actions_highlight__WEBPACK_IMPORTED_MODULE_9__.reset)();
- _modal_body_trees__WEBPACK_IMPORTED_MODULE_10__.TREE_CONTAINER.scroll(0, 0);
- callback === null || callback === void 0 ? void 0 : callback({
- tree: (0,_modal_body_trees_data__WEBPACK_IMPORTED_MODULE_4__.getRoot)().getJSON(),
- styles: (0,_modal_body_trees_style__WEBPACK_IMPORTED_MODULE_5__.getUserStyles)(),
- });
- callback = undefined;
- }
- function generate(background) {
- (0,_css__WEBPACK_IMPORTED_MODULE_2__["default"])();
- (0,_button__WEBPACK_IMPORTED_MODULE_3__.bindAction)(_button__WEBPACK_IMPORTED_MODULE_0__["default"], doAction, _consts__WEBPACK_IMPORTED_MODULE_1__.HOTKEY);
- background.addEventListener('click', (event) => {
- if (background.isSameNode(event.target)) {
- doAction();
- }
- });
- return _button__WEBPACK_IMPORTED_MODULE_0__["default"];
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/consts.ts":
- /*!*******************************************!*\
- !*** ./ts/modal/header/actions/consts.ts ***!
- \*******************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ BUTTON_CLASS: () => (/* binding */ BUTTON_CLASS),
- /* harmony export */ BUTTON_CONTAINER_ID: () => (/* binding */ BUTTON_CONTAINER_ID)
- /* harmony export */ });
- const BUTTON_CLASS = 'modal-button';
- const BUTTON_CONTAINER_ID = 'modal-button-container';
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/css.ts":
- /*!****************************************!*\
- !*** ./ts/modal/header/actions/css.ts ***!
- \****************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ addColourRule: () => (/* binding */ addColourRule),
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/actions/consts.ts");
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../consts */ "./ts/modal/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../css */ "./ts/modal/css.ts");
-
-
-
- function addColourRule(actionId, colour) {
- (0,_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`#${actionId}.${_consts__WEBPACK_IMPORTED_MODULE_1__.BUTTON_ACTIVE_CLASS} > svg`, [
- ['stroke', `var(--headBase)`],
- ['fill', `var(${colour})`],
- ]);
- }
- function generate() {
- (0,_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`#${_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CONTAINER_ID}`, [
- ['display', 'inline-flex'],
- ['flex-direction', 'row'],
- ]);
- (0,_css__WEBPACK_IMPORTED_MODULE_2__.addRule)([
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS}:focus > svg`,
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS}:hover > svg`,
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS}.${_consts__WEBPACK_IMPORTED_MODULE_1__.BUTTON_ACTIVE_CLASS} > svg`,
- ], ['background-color', `var(--headContrast)`]);
- (0,_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS}`, ['border-left', '2px solid var(--headContrast)']);
- (0,_css__WEBPACK_IMPORTED_MODULE_2__.addRule)([
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS}:not(:first-child):focus`,
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS}:not(:first-child):hover`,
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS}:not(:first-child).${_consts__WEBPACK_IMPORTED_MODULE_1__.BUTTON_ACTIVE_CLASS}`,
- ], ['border-color', 'var(--headBase)']);
- (0,_css__WEBPACK_IMPORTED_MODULE_2__.addRule)([
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS}:focus:not(.${_consts__WEBPACK_IMPORTED_MODULE_1__.BUTTON_ACTIVE_CLASS}) > svg`,
- `.${_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS}:hover:not(.${_consts__WEBPACK_IMPORTED_MODULE_1__.BUTTON_ACTIVE_CLASS}) > svg`,
- ], ['stroke', `var(--headBase)`]);
- (0,_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`.${_consts__WEBPACK_IMPORTED_MODULE_0__.BUTTON_CLASS} > svg`, [
- ['width', '1.81em'],
- ['stroke', 'var(--headContrast)'],
- ['fill', `var(--headContrast)`],
- // Fixes pixel gap between button border & svg
- ['margin-left', '-0.5px'],
- ]);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/hide/button.ts":
- /*!************************************************!*\
- !*** ./ts/modal/header/actions/hide/button.ts ***!
- \************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/actions/hide/consts.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../button */ "./ts/modal/header/actions/button.ts");
- /* harmony import */ var _modal_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/consts */ "./ts/modal/consts.ts");
-
-
-
- const edgeTop = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'path');
- edgeTop.setAttribute('stroke-linecap', 'round');
- edgeTop.setAttribute('stroke-width', '6');
- edgeTop.setAttribute('d', 'M -55, 0'
- + 'Q 0,80 55,0');
- edgeTop.setAttribute('fill', 'none');
- const edgeBottom = edgeTop.cloneNode(true);
- edgeBottom.setAttribute('transform', 'scale(1,-1)');
- const circle = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'circle');
- circle.setAttribute('cx', '0');
- circle.setAttribute('cy', '0');
- circle.setAttribute('r', '26');
- circle.setAttribute('stroke-width', '7');
- const line = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'line');
- line.setAttribute('stroke-linecap', 'round');
- line.setAttribute('stroke-width', '7');
- line.setAttribute('x1', '-26');
- line.setAttribute('x2', '26');
- line.setAttribute('y1', '0');
- line.setAttribute('y2', '0');
- line.setAttribute('transform', 'rotate(45 0 0)');
- const g = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'g');
- g.append(edgeTop, edgeBottom, circle, line);
- const BUTTON = (0,_button__WEBPACK_IMPORTED_MODULE_1__.getNewButton)(g, _consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, 'Toggle Disabled Node Visibility');
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BUTTON);
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/hide/consts.ts":
- /*!************************************************!*\
- !*** ./ts/modal/header/actions/hide/consts.ts ***!
- \************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ ACTION_ID: () => (/* binding */ ACTION_ID),
- /* harmony export */ HOTKEY: () => (/* binding */ HOTKEY)
- /* harmony export */ });
- const ACTION_ID = 'modal-hide';
- const HOTKEY = 'H';
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/hide/css.ts":
- /*!*********************************************!*\
- !*** ./ts/modal/header/actions/hide/css.ts ***!
- \*********************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/actions/hide/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../css */ "./ts/modal/header/actions/css.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/css */ "./ts/modal/css.ts");
- /* harmony import */ var _modal_body_trees_consts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/modal/body/trees/consts */ "./ts/modal/body/trees/consts.ts");
- /* harmony import */ var _nodes_actions_buttons_disable_consts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nodes/actions/buttons/disable/consts */ "./ts/modal/body/trees/nodes/actions/buttons/disable/consts.ts");
-
-
-
-
-
- function generate() {
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`#${_modal_body_trees_consts__WEBPACK_IMPORTED_MODULE_3__.TREE_CONTAINER_ID}:not(.${_consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID}) .${_nodes_actions_buttons_disable_consts__WEBPACK_IMPORTED_MODULE_4__.DISABLED_CLASS}`, ['display', 'none']);
- (0,_css__WEBPACK_IMPORTED_MODULE_1__.addColourRule)(_consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, '--headButtonHide');
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/hide/index.ts":
- /*!***********************************************!*\
- !*** ./ts/modal/header/actions/hide/index.ts ***!
- \***********************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./button */ "./ts/modal/header/actions/hide/button.ts");
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/actions/hide/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./css */ "./ts/modal/header/actions/hide/css.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../button */ "./ts/modal/header/actions/button.ts");
- /* harmony import */ var _modal_body_trees__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/modal/body/trees */ "./ts/modal/body/trees/index.ts");
-
-
-
-
-
- let isActive = false;
- function doAction() {
- isActive = !isActive;
- (0,_modal_body_trees__WEBPACK_IMPORTED_MODULE_4__.setActive)(_button__WEBPACK_IMPORTED_MODULE_0__["default"], _consts__WEBPACK_IMPORTED_MODULE_1__.ACTION_ID, isActive);
- }
- function generate() {
- (0,_css__WEBPACK_IMPORTED_MODULE_2__["default"])();
- (0,_button__WEBPACK_IMPORTED_MODULE_3__.bindAction)(_button__WEBPACK_IMPORTED_MODULE_0__["default"], doAction, _consts__WEBPACK_IMPORTED_MODULE_1__.HOTKEY);
- _button__WEBPACK_IMPORTED_MODULE_0__["default"].click();
- return _button__WEBPACK_IMPORTED_MODULE_0__["default"];
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/index.ts":
- /*!******************************************!*\
- !*** ./ts/modal/header/actions/index.ts ***!
- \******************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _close__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./close */ "./ts/modal/header/actions/close/index.ts");
- /* harmony import */ var _labels__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./labels */ "./ts/modal/header/actions/labels/index.ts");
- /* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./style */ "./ts/modal/header/actions/style/index.ts");
- /* harmony import */ var _hide__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hide */ "./ts/modal/header/actions/hide/index.ts");
- /* harmony import */ var _alternate__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./alternate */ "./ts/modal/header/actions/alternate/index.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./css */ "./ts/modal/header/actions/css.ts");
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/actions/consts.ts");
-
-
-
-
-
-
-
- function generate(background) {
- (0,_css__WEBPACK_IMPORTED_MODULE_5__["default"])();
- const element = document.createElement('span');
- element.id = _consts__WEBPACK_IMPORTED_MODULE_6__.BUTTON_CONTAINER_ID;
- element.append((0,_alternate__WEBPACK_IMPORTED_MODULE_4__["default"])(), (0,_hide__WEBPACK_IMPORTED_MODULE_3__["default"])(), (0,_labels__WEBPACK_IMPORTED_MODULE_1__["default"])(), (0,_style__WEBPACK_IMPORTED_MODULE_2__["default"])(), (0,_close__WEBPACK_IMPORTED_MODULE_0__["default"])(background));
- return element;
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/labels/button.ts":
- /*!**************************************************!*\
- !*** ./ts/modal/header/actions/labels/button.ts ***!
- \**************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/actions/labels/consts.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../button */ "./ts/modal/header/actions/button.ts");
- /* harmony import */ var _modal_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/consts */ "./ts/modal/consts.ts");
-
-
-
- const outline = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'path');
- outline.setAttribute('stroke-linecap', 'round');
- outline.setAttribute('stroke-width', '7');
- outline.setAttribute('d', 'M 20,-30'
- + 'L -40,-30'
- + 'L -40,30'
- + 'L 20,30'
- + 'L 50,0'
- + 'L 20,-30');
- const circle = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'circle');
- circle.setAttribute('stroke-width', '5');
- circle.setAttribute('r', '5');
- circle.setAttribute('cx', '20');
- circle.setAttribute('cy', '0');
- const loop = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'path');
- loop.setAttribute('fill', 'none');
- loop.setAttribute('stroke-linecap', 'round');
- loop.setAttribute('stroke-width', '6');
- loop.setAttribute('d', 'M 20,0'
- + 'C -70,50 -30,50 15,30');
- const g = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'g');
- g.setAttribute('transform', 'rotate(-60 0 0)');
- g.append(outline, circle, loop);
- const BUTTON = (0,_button__WEBPACK_IMPORTED_MODULE_1__.getNewButton)(g, _consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, 'Toggle Labels');
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BUTTON);
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/labels/consts.ts":
- /*!**************************************************!*\
- !*** ./ts/modal/header/actions/labels/consts.ts ***!
- \**************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ ACTION_ID: () => (/* binding */ ACTION_ID),
- /* harmony export */ HOTKEY: () => (/* binding */ HOTKEY)
- /* harmony export */ });
- const ACTION_ID = 'modal-labels';
- const HOTKEY = 'N';
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/labels/css.ts":
- /*!***********************************************!*\
- !*** ./ts/modal/header/actions/labels/css.ts ***!
- \***********************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/actions/labels/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../css */ "./ts/modal/header/actions/css.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/css */ "./ts/modal/css.ts");
- /* harmony import */ var _modal_body_trees_consts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/modal/body/trees/consts */ "./ts/modal/body/trees/consts.ts");
- /* harmony import */ var _nodes_consts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nodes/consts */ "./ts/modal/body/trees/nodes/consts.ts");
-
-
-
-
-
- function generate() {
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_2__.addRule)(`#${_modal_body_trees_consts__WEBPACK_IMPORTED_MODULE_3__.TREE_CONTAINER_ID}:not(.${_consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID}) .${_nodes_consts__WEBPACK_IMPORTED_MODULE_4__.ELEMENT_CLASSES.LABEL_CONTAINER}`, ['display', 'none']);
- (0,_css__WEBPACK_IMPORTED_MODULE_1__.addColourRule)(_consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, '--headButtonLabel');
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/labels/index.ts":
- /*!*************************************************!*\
- !*** ./ts/modal/header/actions/labels/index.ts ***!
- \*************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./button */ "./ts/modal/header/actions/labels/button.ts");
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/actions/labels/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./css */ "./ts/modal/header/actions/labels/css.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../button */ "./ts/modal/header/actions/button.ts");
- /* harmony import */ var _modal_body_trees__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/modal/body/trees */ "./ts/modal/body/trees/index.ts");
-
-
-
-
-
- let isActive = false;
- function doAction() {
- isActive = !isActive;
- (0,_modal_body_trees__WEBPACK_IMPORTED_MODULE_4__.setActive)(_button__WEBPACK_IMPORTED_MODULE_0__["default"], _consts__WEBPACK_IMPORTED_MODULE_1__.ACTION_ID, isActive);
- }
- function generate() {
- (0,_css__WEBPACK_IMPORTED_MODULE_2__["default"])();
- (0,_button__WEBPACK_IMPORTED_MODULE_3__.bindAction)(_button__WEBPACK_IMPORTED_MODULE_0__["default"], doAction, _consts__WEBPACK_IMPORTED_MODULE_1__.HOTKEY);
- _button__WEBPACK_IMPORTED_MODULE_0__["default"].click();
- return _button__WEBPACK_IMPORTED_MODULE_0__["default"];
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/style/button.ts":
- /*!*************************************************!*\
- !*** ./ts/modal/header/actions/style/button.ts ***!
- \*************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/actions/style/consts.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../button */ "./ts/modal/header/actions/button.ts");
- /* harmony import */ var _modal_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/modal/consts */ "./ts/modal/consts.ts");
-
-
-
- const handle = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'rect');
- handle.setAttribute('stroke-linecap', 'round');
- handle.setAttribute('stroke-width', '6');
- handle.setAttribute('x', '-5');
- handle.setAttribute('y', '15');
- handle.setAttribute('width', '15');
- handle.setAttribute('height', '40');
- handle.setAttribute('rx', '5');
- const frame = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'path');
- frame.setAttribute('fill', 'none');
- frame.setAttribute('stroke-linecap', 'round');
- frame.setAttribute('stroke-width', '3');
- frame.setAttribute('d', 'M 2.5,15'
- + 'L 2.5,0'
- + 'L -36,-15'
- + 'L -36,-35'
- + 'L -30,-35');
- const curveLeft = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'path');
- curveLeft.setAttribute('fill', 'none');
- curveLeft.setAttribute('stroke-linecap', 'round');
- curveLeft.setAttribute('stroke-width', '6');
- curveLeft.setAttribute('d', 'M -25 -30'
- + 'Q -30,-35 -25,-40');
- const curveRight = curveLeft.cloneNode(true);
- curveRight.setAttribute('transform', 'scale(-1,1) translate(-10,0)');
- const roller = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'rect');
- roller.setAttribute('stroke-linecap', 'round');
- roller.setAttribute('stroke-width', '6');
- roller.setAttribute('x', '-22.5');
- roller.setAttribute('y', '-47.5');
- roller.setAttribute('width', '55');
- roller.setAttribute('height', '25');
- roller.setAttribute('rx', '1');
- const g = document.createElementNS(_modal_consts__WEBPACK_IMPORTED_MODULE_2__.SVG_NAMESPACE, 'g');
- g.append(handle, frame, curveLeft, curveRight, roller);
- const BUTTON = (0,_button__WEBPACK_IMPORTED_MODULE_1__.getNewButton)(g, _consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, 'Toggle Style Editor');
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BUTTON);
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/style/consts.ts":
- /*!*************************************************!*\
- !*** ./ts/modal/header/actions/style/consts.ts ***!
- \*************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ ACTION_ID: () => (/* binding */ ACTION_ID),
- /* harmony export */ HOTKEY: () => (/* binding */ HOTKEY)
- /* harmony export */ });
- const ACTION_ID = 'modal-style';
- const HOTKEY = 'C';
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/style/css.ts":
- /*!**********************************************!*\
- !*** ./ts/modal/header/actions/style/css.ts ***!
- \**********************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/actions/style/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../css */ "./ts/modal/header/actions/css.ts");
-
-
- function generate() {
- (0,_css__WEBPACK_IMPORTED_MODULE_1__.addColourRule)(_consts__WEBPACK_IMPORTED_MODULE_0__.ACTION_ID, '--headButtonStyle');
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/actions/style/index.ts":
- /*!************************************************!*\
- !*** ./ts/modal/header/actions/style/index.ts ***!
- \************************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./button */ "./ts/modal/header/actions/style/button.ts");
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/actions/style/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./css */ "./ts/modal/header/actions/style/css.ts");
- /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../button */ "./ts/modal/header/actions/button.ts");
- /* harmony import */ var _modal_body_trees__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/modal/body/trees */ "./ts/modal/body/trees/index.ts");
- /* harmony import */ var _nodes_actions_focus__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @nodes/actions/focus */ "./ts/modal/body/trees/nodes/actions/focus/index.ts");
- /* harmony import */ var _nodes_actions_edit__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @nodes/actions/edit */ "./ts/modal/body/trees/nodes/actions/edit/index.ts");
- /* harmony import */ var _nodes_actions_buttons_move__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @nodes/actions/buttons/move */ "./ts/modal/body/trees/nodes/actions/buttons/move/index.ts");
-
-
-
-
-
-
-
-
- let isActive = false;
- function doAction() {
- isActive = !isActive;
- (0,_modal_body_trees__WEBPACK_IMPORTED_MODULE_4__.setActive)(_button__WEBPACK_IMPORTED_MODULE_0__["default"], _consts__WEBPACK_IMPORTED_MODULE_1__.ACTION_ID, isActive);
- (0,_nodes_actions_focus__WEBPACK_IMPORTED_MODULE_5__.reset)();
- (0,_nodes_actions_edit__WEBPACK_IMPORTED_MODULE_6__.reset)();
- (0,_nodes_actions_buttons_move__WEBPACK_IMPORTED_MODULE_7__.reset)();
- // Reset tab index
- document.body.focus();
- }
- function generate() {
- (0,_css__WEBPACK_IMPORTED_MODULE_2__["default"])();
- (0,_button__WEBPACK_IMPORTED_MODULE_3__.bindAction)(_button__WEBPACK_IMPORTED_MODULE_0__["default"], doAction, _consts__WEBPACK_IMPORTED_MODULE_1__.HOTKEY);
- return _button__WEBPACK_IMPORTED_MODULE_0__["default"];
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/consts.ts":
- /*!***********************************!*\
- !*** ./ts/modal/header/consts.ts ***!
- \***********************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ HEADER_ID: () => (/* binding */ HEADER_ID)
- /* harmony export */ });
- const HEADER_ID = 'modal-header';
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/css.ts":
- /*!********************************!*\
- !*** ./ts/modal/header/css.ts ***!
- \********************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../css */ "./ts/modal/css.ts");
-
-
- function generate() {
- (0,_css__WEBPACK_IMPORTED_MODULE_1__.addRule)(`#${_consts__WEBPACK_IMPORTED_MODULE_0__.HEADER_ID}`, [
- ['display', 'flex'],
- ['align-items', 'center'],
- ['background', 'var(--headBase)'],
- ['color', 'var(--headContrast)'],
- ['border-bottom', '2px solid var(--borderModal)'],
- ['font-size', '1.6em'],
- ['text-align', 'center'],
- ]);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/index.ts":
- /*!**********************************!*\
- !*** ./ts/modal/header/index.ts ***!
- \**********************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/consts.ts");
- /* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./title */ "./ts/modal/header/title/index.ts");
- /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./actions */ "./ts/modal/header/actions/index.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./css */ "./ts/modal/header/css.ts");
-
-
-
-
- function generate({ title }, background) {
- (0,_css__WEBPACK_IMPORTED_MODULE_3__["default"])();
- const element = document.createElement('div');
- element.id = _consts__WEBPACK_IMPORTED_MODULE_0__.HEADER_ID;
- element.append((0,_title__WEBPACK_IMPORTED_MODULE_1__["default"])(title), (0,_actions__WEBPACK_IMPORTED_MODULE_2__["default"])(background));
- return element;
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/title/consts.ts":
- /*!*****************************************!*\
- !*** ./ts/modal/header/title/consts.ts ***!
- \*****************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ TITLE_CONTAINER_ID: () => (/* binding */ TITLE_CONTAINER_ID),
- /* harmony export */ TITLE_ID: () => (/* binding */ TITLE_ID)
- /* harmony export */ });
- const TITLE_CONTAINER_ID = 'title-container';
- const TITLE_ID = 'title';
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/title/css.ts":
- /*!**************************************!*\
- !*** ./ts/modal/header/title/css.ts ***!
- \**************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/title/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../css */ "./ts/modal/css.ts");
-
-
- function generate() {
- (0,_css__WEBPACK_IMPORTED_MODULE_1__.addRule)(`#${_consts__WEBPACK_IMPORTED_MODULE_0__.TITLE_CONTAINER_ID}`, [
- ['flex-grow', '1'],
- ['white-space', 'nowrap'],
- ['overflow', 'hidden'],
- ['text-overflow', 'ellipsis'],
- ['padding', '0 20px'],
- ]);
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/header/title/index.ts":
- /*!****************************************!*\
- !*** ./ts/modal/header/title/index.ts ***!
- \****************************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/header/title/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./css */ "./ts/modal/header/title/css.ts");
-
-
- function generate(title) {
- (0,_css__WEBPACK_IMPORTED_MODULE_1__["default"])();
- const titleContainer = document.createElement('span');
- const titleElement = document.createElement('span');
- titleContainer.id = _consts__WEBPACK_IMPORTED_MODULE_0__.TITLE_CONTAINER_ID;
- titleElement.id = _consts__WEBPACK_IMPORTED_MODULE_0__.TITLE_ID;
- titleElement.innerText = title;
- // In case the text is too long to fit
- titleElement.title = title;
- titleContainer.append(titleElement);
- return titleContainer;
- }
-
-
- /***/ }),
-
- /***/ "./ts/modal/index.ts":
- /*!***************************!*\
- !*** ./ts/modal/index.ts ***!
- \***************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ generate),
- /* harmony export */ getSocket: () => (/* binding */ getSocket)
- /* harmony export */ });
- /* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts */ "./ts/modal/consts.ts");
- /* harmony import */ var _css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./css */ "./ts/modal/css.ts");
- /* harmony import */ var _header__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./header */ "./ts/modal/header/index.ts");
- /* harmony import */ var _body__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./body */ "./ts/modal/body/index.ts");
-
-
-
-
- let socket;
- function getSocket() {
- return socket;
- }
- function generate(config, _socket) {
- socket = _socket;
- (0,_css__WEBPACK_IMPORTED_MODULE_1__["default"])();
- const background = document.createElement('div');
- const foreground = document.createElement('div');
- background.id = _consts__WEBPACK_IMPORTED_MODULE_0__.MODAL_BACKGROUND_ID;
- foreground.id = _consts__WEBPACK_IMPORTED_MODULE_0__.MODAL_ID;
- background.append(foreground);
- socket.append(background);
- foreground.append((0,_header__WEBPACK_IMPORTED_MODULE_2__["default"])(config, background));
- foreground.append((0,_body__WEBPACK_IMPORTED_MODULE_3__["default"])(config));
- }
-
-
- /***/ }),
-
- /***/ "./ts/predicate.ts":
- /*!*************************!*\
- !*** ./ts/predicate.ts ***!
- \*************************/
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ getPredicatePromise: () => (/* binding */ getPredicatePromise)
- /* harmony export */ });
- var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- };
- function getPredicateResponse(response) {
- return __awaiter(this, void 0, void 0, function* () {
- try {
- return yield response;
- }
- catch ({ message }) {
- throw message;
- }
- });
- }
- function getPredicatePromise(_response) {
- return __awaiter(this, void 0, void 0, function* () {
- const response = yield getPredicateResponse(_response);
- if (typeof response === 'string') {
- throw response;
- }
- else if (response) {
- return;
- }
- throw null;
- });
- }
-
-
- /***/ })
-
- /******/ });
- /************************************************************************/
- /******/ // The module cache
- /******/ var __webpack_module_cache__ = {};
- /******/
- /******/ // The require function
- /******/ function __webpack_require__(moduleId) {
- /******/ // Check if module is in cache
- /******/ var cachedModule = __webpack_module_cache__[moduleId];
- /******/ if (cachedModule !== undefined) {
- /******/ return cachedModule.exports;
- /******/ }
- /******/ // Create a new module (and put it into the cache)
- /******/ var module = __webpack_module_cache__[moduleId] = {
- /******/ // no module.id needed
- /******/ // no module.loaded needed
- /******/ exports: {}
- /******/ };
- /******/
- /******/ // Execute the module function
- /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
- /******/
- /******/ // Return the exports of the module
- /******/ return module.exports;
- /******/ }
- /******/
- /************************************************************************/
- /******/ /* webpack/runtime/define property getters */
- /******/ (() => {
- /******/ // define getter functions for harmony exports
- /******/ __webpack_require__.d = (exports, definition) => {
- /******/ for(var key in definition) {
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
- /******/ }
- /******/ }
- /******/ };
- /******/ })();
- /******/
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
- /******/ (() => {
- /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
- /******/ })();
- /******/
- /******/ /* webpack/runtime/make namespace object */
- /******/ (() => {
- /******/ // define __esModule on exports
- /******/ __webpack_require__.r = (exports) => {
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
- /******/ }
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
- /******/ };
- /******/ })();
- /******/
- /************************************************************************/
- var __webpack_exports__ = {};
- // This entry need to be wrapped in an IIFE because it declares '$Config' on top-level, which conflicts with the current library output.
- (() => {
- /*!*******************************!*\
- !*** ./ts/library/$Config.js ***!
- \*******************************/
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "default": () => (/* binding */ $Config)
- /* harmony export */ });
- /* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ "./ts/library/index.ts");
- /* harmony import */ var _modal_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../modal/css */ "./ts/modal/css.ts");
- /* harmony import */ var _modal_body__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../modal/body */ "./ts/modal/body/index.ts");
-
-
-
-
- const VERSION = 0;
-
- const KEY_VERSION = 'TREE_FRAME_VERSION';
-
- const KEY_STYLES = 'TREE_FRAME_USER_STYLES';
-
- const STYLE_OUTER = {
- position: 'fixed',
- height: '100vh',
- width: '100vw',
- };
-
- const getStrippedForest = (children) => {
- const stripped = [];
-
- for (const child of children) {
- if (child.isActive === false) {
- continue;
- }
-
- const data = {};
-
- if ('value' in child) {
- data.value = child.value;
- }
-
- if ('label' in child) {
- data.label = child.label;
- }
-
- if ('children' in child) {
- data.children = getStrippedForest(child.children);
- }
-
- stripped.push(data);
- }
-
- return stripped;
- };
-
- const getError = (reason, error) => {
- const message = `[${TITLE}]${reason.includes('\n') ? '\n\n' : ' '}${reason}`;
-
- if (error) {
- error.message = message;
-
- return error;
- }
-
- return new Error(message);
- };
-
- /**
- * A node's value.
- * @typedef {boolean | number | string} NodeValue
- */
-
- /**
- * A child node.
- * @typedef {object} ChildNode
- * @property {string} [label] The node's purpose.
- * @property {boolean | number | string} [value] The node's data.
- * @property {Array<NodeValue> | function(NodeValue): boolean | string} [predicate] A data validator.
- * @property {"color" | "date" | "datetime-local" | "email" | "month" | "password" | "search" | "tel" | "text" | "time" | "url" | "week"} [input] The desired input type.
- */
-
- /**
- * A parent node.
- * @typedef {object} ParentNode
- * @property {Array<ChildNode | (ChildNode & ParentNode)>} children The node's children.
- * @property {ChildNode | (ChildNode & ParentNode)} [seed] - A node that may be added to children.
- * @property {function(Array<ChildNode>): boolean | string} [childPredicate] A child validator.
- * @property {function(Array<ChildNode>): boolean | string} [descendantPredicate] A descendant validator.
- * @property {number} [poolId] Children may be moved between nodes with poolId values that match their parent's.
- */
-
- /**
- * A style to pass to the config-editor.
- * @typedef {object} InnerStyle
- * @property {number} [fontSize] The base font size.
- * @property {string} [borderTooltip] The colour of tooltip borders.
- * @property {string} [borderModal] The colour of the modal's border.
- * @property {string} [headBase] The base colour of the modal's header.
- * @property {'Black / White' | 'Invert'} [headContrast] The method of generating a contrast colour for the modal's header.
- * @property {string} [headButtonExit] The colour of the modal header's exit button.
- * @property {string} [headButtonLabel] The colour of the modal header's exit button.
- * @property {string} [headButtonStyle] The colour of the modal header's style button.
- * @property {string} [headButtonHide] The colour of the modal header's node-hider button.
- * @property {string} [headButtonAlt] The colour of the modal header's alt button.
- * @property {Array<string>} [nodeBase] Base colours for nodes, depending on their depth.
- * @property {'Black / White' | 'Invert'} [nodeContrast] The method of generating a contrast colour for nodes.
- * @property {string} [nodeButtonCreate] The colour of nodes' add-child buttons.
- * @property {string} [nodeButtonDuplicate] The colour of nodes' duplicate buttons.
- * @property {string} [nodeButtonMove] The colour of nodes' move buttons.
- * @property {string} [nodeButtonDisable] The colour of nodes' toggle-active buttons.
- * @property {string} [nodeButtonDelete] The colour of nodes' delete buttons.
- * @property {string} [validBackground] The colour used to show that a node's value is valid.
- * @property {string} [invalidBackground] The colour used to show that a node's value is invalid.
- */
-
- class $Config {
- /**
- * @param {string} KEY_TREE The identifier used to store and retrieve the user's config.
- * @param {ParentNode} TREE_DEFAULT The tree to use as a starting point for the user's config.
- * @param {function(Array<ChildNode | (ChildNode & ParentNode)>): *} _getConfig Takes a root node's children and returns the data structure expected by your script.
- * @param {string} TITLE The heading to use in the config-editor.
- * @param {InnerStyle} [STYLE_INNER] A custom style to use as the default
- * @param {object} [_STYLE_OUTER] CSS to assign to the element. e.g. {zIndex: 9999}.
- */
- constructor(KEY_TREE, TREE_DEFAULT, _getConfig, TITLE, STYLE_INNER = {}, _STYLE_OUTER = {}) {
- // PRIVATE FUNCTIONS
-
- const getConfig = ({children}) => _getConfig(getStrippedForest(children));
-
- // CORE PERMISSION CHECKS
-
- if (typeof GM.getValue !== 'function') {
- throw getError('Missing GM.getValue permission.');
- }
-
- if (typeof GM.setValue !== 'function') {
- throw getError('Missing GM.setValue permission.');
- }
-
- if (typeof KEY_TREE !== 'string' || !(/^[a-z_][a-z0-9_]*$/i.test(KEY_TREE))) {
- throw getError(`'${KEY_TREE}' is not a valid storage key.`);
- }
-
- // PRIVATE STATE
-
- let isOpen = false;
-
- const styleOuter = {
- ...STYLE_OUTER,
- ..._STYLE_OUTER,
- };
-
- // PUBLIC FUNCTIONS
-
- const setConfig = (tree) => {
- const config = getConfig(tree);
-
- this.get = () => config;
- };
-
- this.ready = async () => {
- // Setup root element
- const target = (() => {
- const target = document.createElement('div');
-
- for (const [property, value] of Object.entries(styleOuter)) {
- target.style[property] = value;
- }
-
- target.style.display = 'none';
-
- (0,_modal_css__WEBPACK_IMPORTED_MODULE_1__.getTargetWindow)().document.body.appendChild(target);
-
- return target;
- })();
-
- // Retrieve data
-
- const [userTree, userStyles, version] = await Promise.all([
- GM.getValue(KEY_TREE),
- GM.getValue(KEY_STYLES, []),
- GM.getValue(KEY_VERSION, -1),
- ]);
-
- // Patch to current version
-
- (() => {
- if (version !== -1 || !userTree) {
- return;
- }
-
- const patch = (node) => {
- delete node.predicate;
- delete node.childPredicate;
- delete node.descendantPredicate;
- delete node.seed;
-
- if ('children' in node) {
- for (const child of node.children) {
- patch(child);
- }
- }
- };
-
- patch(userTree);
- })();
-
- // Listen for post-init communication
-
- const open = (doOpen = true) => new Promise((resolve) => {
- isOpen = doOpen;
-
- target.style.display = doOpen ? (styleOuter.display ?? 'initial') : 'none';
-
- // Delay script execution until visual update
- setTimeout(resolve, 0);
- });
-
- const disconnect = () => new Promise((resolve) => {
- isOpen = false;
-
- target.remove();
-
- // Delay script execution until visual update
- setTimeout(resolve, 0);
- });
-
- /**
- * @name $Config#reset
- * @description Deletes the user's data.
- * @returns {Promise<void>} Resolves upon completing the deletion.
- */
- this.reset = async () => {
- if (isOpen) {
- throw getError('Cannot reset while the UI is open.');
- }
-
- if (typeof GM.deleteValue !== 'function') {
- throw getError('Missing GM.deleteValue permission.');
- }
-
- try {
- setConfig(TREE_DEFAULT);
- } catch (error) {
- throw getError('Unable to parse default config.', error);
- }
-
- await GM.deleteValue(KEY_TREE);
-
- // It may have previously been a rejected promise
- this.ready = Promise.resolve();
-
- (0,_modal_body__WEBPACK_IMPORTED_MODULE_2__.reset)();
- };
-
- /**
- * @name $Config#edit
- * @description Allows the user to edit the active config.
- * @returns {Promise<void>} Resolves when the user closes the config editor.
- */
- this.edit = async () => {
- if (isOpen) {
- throw getError('A config editor is already open.');
- }
-
- open();
-
- const {tree, styles} = await (0,_index__WEBPACK_IMPORTED_MODULE_0__.edit)();
-
- GM.setValue(KEY_TREE, tree);
- GM.setValue(KEY_STYLES, styles);
- GM.setValue(KEY_VERSION, VERSION);
-
- setConfig(tree);
-
- await open(false);
- };
-
- // Pass data
-
- try {
- const response = await (0,_index__WEBPACK_IMPORTED_MODULE_0__.init)({
- userStyles,
- defaultTree: TREE_DEFAULT,
- title: TITLE,
- defaultStyle: STYLE_INNER,
- ...(userTree ? {userTree} : {}),
- }, target, KEY_TREE);
-
- if (response.requireReset) {
- throw getError(
- 'Your config is invalid.'
- + '\nThis could be due to a script update or your data being corrupted.'
- + `\n\nReason:\n${response.error.message.replaceAll(/\n+/g, '\n')}`,
- response.error,
- );
- }
-
- setConfig(response.tree);
- } catch (error) {
- delete this.reset;
-
- await disconnect();
-
- throw getError(
- 'Your config is invalid.'
- + '\nThis could be due to a script update or your data being corrupted.'
- + `\n\nReason:\n${error.message.replaceAll(/\n+/g, '\n')}`,
- error,
- );
- }
- };
- }
- }
-
- })();
-
- $Config = __webpack_exports__["default"];
- /******/ })()
- ;