domql 1.5.92 → 1.5.93

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -335,6 +335,14 @@ var overwrite = (element, params, options) => {
335
335
  }
336
336
  return changes;
337
337
  };
338
+ var overwriteShallow = (obj, params, excluding = ["node", "__root"]) => {
339
+ for (const e in params) {
340
+ if (excluding.indexOf(e) > -1)
341
+ continue;
342
+ obj[e] = params[e];
343
+ }
344
+ return obj;
345
+ };
338
346
  var overwriteDeep = (obj, params, excluding = ["node", "__root"]) => {
339
347
  for (const e in params) {
340
348
  if (excluding.indexOf(e) > -1)
@@ -692,7 +700,7 @@ var classify = (obj, element) => {
692
700
  var classList_default = (params, element, node, live) => {
693
701
  if (!params)
694
702
  return;
695
- const { key, __className } = element;
703
+ const { key } = element;
696
704
  if (params === true)
697
705
  params = element.class = { key };
698
706
  if (isString(params))
@@ -727,7 +735,7 @@ var removeContentElement = function(el) {
727
735
  delete element.content;
728
736
  }
729
737
  };
730
- var set = function(params, options, el) {
738
+ var set = function(params, options = {}, el) {
731
739
  const element = el || this;
732
740
  const isEqual = isEqualDeep(params, element.content);
733
741
  if (isEqual && element.content.__cached)
@@ -740,7 +748,8 @@ var set = function(params, options, el) {
740
748
  create_default(params, element, "content", {
741
749
  ignoreChildExtend: true,
742
750
  ...registry_default.defaultOptions,
743
- ...options_default.create
751
+ ...options_default.create,
752
+ ...options
744
753
  });
745
754
  }
746
755
  return element;
@@ -751,7 +760,6 @@ var set_default = set;
751
760
  var content_default = (param, element, node, options) => {
752
761
  if (param && element) {
753
762
  if (param.__hash === element.content.__hash && element.content.update) {
754
- const { define } = element;
755
763
  element.content.update(param);
756
764
  } else {
757
765
  set_default.call(element, param, options);
@@ -827,7 +835,9 @@ var IGNORE_STATE_PARAMS = [
827
835
  "__components",
828
836
  "__projectSystem",
829
837
  "__projectState",
830
- "__projectLibrary",
838
+ "__projectComponents",
839
+ "__projectPages",
840
+ "__projectFiddles",
831
841
  "projectStateUpdate",
832
842
  "projectSystemUpdate"
833
843
  ];
@@ -889,7 +899,11 @@ var updateState = function(obj, options = {}) {
889
899
  }
890
900
  }
891
901
  } else {
892
- overwriteDeep(state, obj, IGNORE_STATE_PARAMS);
902
+ if (options && options.shallow) {
903
+ overwriteShallow(state, obj, IGNORE_STATE_PARAMS);
904
+ } else {
905
+ overwriteDeep(state, obj, IGNORE_STATE_PARAMS);
906
+ }
893
907
  }
894
908
  if (!options.preventUpdate) {
895
909
  element.update({}, options);
@@ -906,7 +920,8 @@ var updateState = function(obj, options = {}) {
906
920
  on_exports.stateUpdated(element.on.stateUpdated, element, state, obj);
907
921
  }
908
922
  };
909
- var createState = function(element, parent) {
923
+ var createState = function(element, parent, opts) {
924
+ const skip = opts && opts.skip ? opts.skip : false;
910
925
  let { state, __root } = element;
911
926
  if (isFunction2(state))
912
927
  state = exec(state, element);
@@ -965,6 +980,8 @@ var createState = function(element, parent) {
965
980
  state = deepClone(state, IGNORE_STATE_PARAMS);
966
981
  }
967
982
  element.state = state;
983
+ if (skip)
984
+ return state;
968
985
  state.clean = cleanState;
969
986
  state.parse = parseState;
970
987
  state.update = updateState;
@@ -974,10 +991,12 @@ var createState = function(element, parent) {
974
991
  state.__root = __root ? __root.state : state;
975
992
  state.projectSystemUpdate = projectSystemUpdate;
976
993
  state.projectStateUpdate = projectStateUpdate;
977
- state.__components = (state.__root || state).COMPONENTS;
978
- state.__projectSystem = (state.__root || state).PROJECT_SYSTEM;
979
- state.__projectState = (state.__root || state).PROJECT_STATE;
980
- state.__projectLibrary = (state.__root || state).PROJECT_LIBRARY;
994
+ state.__components = state.__root.COMPONENTS;
995
+ state.__projectSystem = state.__root.PROJECT_SYSTEM;
996
+ state.__projectState = state.__root.PROJECT_STATE;
997
+ state.__projectComponents = state.__root.PROJECT_COMPONENTS;
998
+ state.__projectPages = state.__root.PROJECT_PAGES;
999
+ state.__projectFiddles = state.__root.PROJECT_FIDDLES;
981
1000
  if (element.on && isFunction2(element.on.stateCreated)) {
982
1001
  on_exports.stateCreated(element.on.stateCreated, element, state);
983
1002
  }
@@ -1124,14 +1143,15 @@ var setProps = function(param, options) {
1124
1143
  if (!param || !element.props)
1125
1144
  return;
1126
1145
  element.update({ props: param }, options);
1127
- return element.props;
1146
+ return element;
1128
1147
  };
1129
1148
  var keys = function() {
1130
1149
  const element = this;
1131
1150
  const keys2 = [];
1132
1151
  for (const param in element) {
1133
- if (registry_default[param] && !parseFilters.elementKeys.includes(param))
1152
+ if (registry_default[param] && !parseFilters.elementKeys.includes(param)) {
1134
1153
  continue;
1154
+ }
1135
1155
  keys2.push(param);
1136
1156
  }
1137
1157
  return keys2;
@@ -1230,15 +1250,13 @@ var throughUpdatedExec = (element, options) => {
1230
1250
  }
1231
1251
  return changes;
1232
1252
  };
1233
- var throughInitialDefine = (element, options) => {
1234
- const { define } = element;
1253
+ var throughInitialDefine = (element) => {
1254
+ const { define, context } = element;
1235
1255
  let obj = {};
1236
- if (isObject(define)) {
1256
+ if (isObject(define))
1237
1257
  obj = { ...define };
1238
- }
1239
- if (isObject(options.define)) {
1240
- obj = { ...obj, ...options.define };
1241
- }
1258
+ if (isObject(context.define))
1259
+ obj = { ...obj, ...context.define };
1242
1260
  for (const param in obj) {
1243
1261
  let prop = element[param];
1244
1262
  if (isFunction(prop) && !isMethod(param)) {
@@ -1250,16 +1268,14 @@ var throughInitialDefine = (element, options) => {
1250
1268
  }
1251
1269
  return element;
1252
1270
  };
1253
- var throughUpdatedDefine = (element, options) => {
1254
- const { define, __exec } = element;
1271
+ var throughUpdatedDefine = (element) => {
1272
+ const { context, define, __exec } = element;
1255
1273
  const changes = {};
1256
1274
  let obj = {};
1257
- if (isObject(define)) {
1275
+ if (isObject(define))
1258
1276
  obj = { ...define };
1259
- }
1260
- if (isObject(options.define)) {
1261
- obj = { ...obj, ...options.define };
1262
- }
1277
+ if (isObject(context && context.define))
1278
+ obj = { ...obj, ...context.define };
1263
1279
  for (const param in obj) {
1264
1280
  const execParam = __exec[param];
1265
1281
  if (execParam)
@@ -1273,7 +1289,7 @@ var throughUpdatedDefine = (element, options) => {
1273
1289
  // src/element/node.js
1274
1290
  var ENV2 = "development";
1275
1291
  var createNode2 = (element, options) => {
1276
- let { node, tag } = element;
1292
+ let { node, tag, context } = element;
1277
1293
  let isNewNode;
1278
1294
  if (!node) {
1279
1295
  isNewNode = true;
@@ -1295,7 +1311,7 @@ var createNode2 = (element, options) => {
1295
1311
  if (element.__ifFalsy)
1296
1312
  return element;
1297
1313
  if (element.tag !== "string" || element.tag !== "fragment") {
1298
- throughInitialDefine(element, options);
1314
+ throughInitialDefine(element);
1299
1315
  throughInitialExec(element);
1300
1316
  if (isNewNode && isObject(element.on))
1301
1317
  applyEvents(element);
@@ -1303,13 +1319,15 @@ var createNode2 = (element, options) => {
1303
1319
  const prop = element[param];
1304
1320
  if (isMethod(param) || isObject(registry_default[param]) || prop === void 0)
1305
1321
  continue;
1306
- const hasDefined = element.define && element.define[param];
1307
1322
  const DOMQLProperty = registry_default[param];
1308
- const hasOptionsDefine = options.define && options.define[param];
1309
- if (DOMQLProperty && !hasOptionsDefine) {
1310
- if (isFunction(DOMQLProperty))
1311
- DOMQLProperty(prop, element, node, options);
1312
- } else if (element[param] && !hasDefined && !hasOptionsDefine) {
1323
+ const DOMQLPropertyFromContext = context.registry && context.registry[param];
1324
+ const isGlobalTransformer = DOMQLPropertyFromContext || DOMQLProperty;
1325
+ const hasDefine = element.define && element.define[param];
1326
+ const hasContextDefine = context.define && context.define[param];
1327
+ if (isGlobalTransformer && !hasContextDefine) {
1328
+ if (isFunction(isGlobalTransformer))
1329
+ isGlobalTransformer(prop, element, node, options);
1330
+ } else if (element[param] && !hasDefine && !hasContextDefine) {
1313
1331
  create_default(exec(prop, element), element, param, options);
1314
1332
  }
1315
1333
  }
@@ -1337,7 +1355,7 @@ var applyExtend = (element, parent, options = {}) => {
1337
1355
  if (isFunction(element))
1338
1356
  element = exec(element, parent);
1339
1357
  let { extend, props, context } = element;
1340
- const COMPONENTS = context.components || options.components;
1358
+ const COMPONENTS = context && context.components || options.components;
1341
1359
  if (isString(extend))
1342
1360
  extend = COMPONENTS[extend];
1343
1361
  const extendStack = getExtendStack(extend);
@@ -1482,7 +1500,7 @@ var UPDATE_DEFAULT_OPTIONS = {
1482
1500
  };
1483
1501
  var update3 = function(params = {}, options = UPDATE_DEFAULT_OPTIONS) {
1484
1502
  const element = this;
1485
- const { define, parent, node } = element;
1503
+ const { parent, node, context } = element;
1486
1504
  const { currentSnapshot, calleeElement } = options;
1487
1505
  if (!calleeElement) {
1488
1506
  element.__currentSnapshot = snapshot.snapshotId();
@@ -1531,7 +1549,7 @@ var update3 = function(params = {}, options = UPDATE_DEFAULT_OPTIONS) {
1531
1549
  }
1532
1550
  const overwriteChanges = overwrite(element, params, UPDATE_DEFAULT_OPTIONS);
1533
1551
  const execChanges = throughUpdatedExec(element, UPDATE_DEFAULT_OPTIONS);
1534
- const definedChanges = throughUpdatedDefine(element, options);
1552
+ const definedChanges = throughUpdatedDefine(element);
1535
1553
  if (options.stackChanges && element.__stackChanges) {
1536
1554
  const stackChanges = merge(definedChanges, merge(execChanges, overwriteChanges));
1537
1555
  element.__stackChanges.push(stackChanges);
@@ -1547,14 +1565,15 @@ var update3 = function(params = {}, options = UPDATE_DEFAULT_OPTIONS) {
1547
1565
  continue;
1548
1566
  if (options.preventStateUpdate === "once")
1549
1567
  options.preventStateUpdate = false;
1550
- const hasDefined = define && define[param];
1551
- const ourParam = registry_default[param];
1552
- const hasOptionsDefine = options.define && options.define[param];
1553
- if (ourParam && !hasOptionsDefine) {
1554
- if (isFunction(ourParam)) {
1555
- ourParam(prop, element, node);
1556
- }
1557
- } else if (prop && isObject(prop) && !hasDefined && !hasOptionsDefine) {
1568
+ const DOMQLProperty = registry_default[param];
1569
+ const DOMQLPropertyFromContext = context.registry && context.registry[param];
1570
+ const isGlobalTransformer = DOMQLPropertyFromContext || DOMQLProperty;
1571
+ const hasDefine = element.define && element.define[param];
1572
+ const hasContextDefine = context.define && context.define[param];
1573
+ if (isGlobalTransformer && !hasContextDefine) {
1574
+ if (isFunction(isGlobalTransformer))
1575
+ isGlobalTransformer(prop, element, node, options);
1576
+ } else if (prop && isObject(prop) && !hasDefine && !hasContextDefine) {
1558
1577
  if (!options.preventRecursive) {
1559
1578
  const childUpdateCall = () => update3.call(prop, params[prop], {
1560
1579
  ...options,
@@ -1639,11 +1658,12 @@ var create = (element, parent, key, options = options_default.create || {}) => {
1639
1658
  };
1640
1659
  }
1641
1660
  }
1642
- if (options.context && !root_default.context)
1661
+ if (options.context && !root_default.context && !element.context)
1643
1662
  root_default.context = options.context;
1644
- element.context = root_default.context;
1663
+ if (!element.context)
1664
+ element.context = parent.context || options.context || root_default.context;
1645
1665
  const { context } = element;
1646
- if (context.components) {
1666
+ if (context && context.components) {
1647
1667
  const { components } = context;
1648
1668
  const { extend: extend2 } = element;
1649
1669
  const execExtend = exec(extend2, element);
@@ -1651,7 +1671,7 @@ var create = (element, parent, key, options = options_default.create || {}) => {
1651
1671
  if (components[execExtend])
1652
1672
  element.extend = components[execExtend];
1653
1673
  else {
1654
- if (ENV4 === "test" || ENV4 === "development") {
1674
+ if ((ENV4 === "test" || ENV4 === "development") && options.verbose) {
1655
1675
  console.warn(execExtend, "is not in library", components, element);
1656
1676
  console.warn("replacing with ", {});
1657
1677
  }
@@ -1661,13 +1681,15 @@ var create = (element, parent, key, options = options_default.create || {}) => {
1661
1681
  }
1662
1682
  if (options.onlyResolveExtends) {
1663
1683
  applyExtend(element, parent, options);
1684
+ element.key = assignedKey;
1685
+ element.tag = detectTag(element);
1664
1686
  if (!element.__exec)
1665
1687
  element.__exec = {};
1666
1688
  if (!element.__attr)
1667
1689
  element.__attr = {};
1668
1690
  if (!element.__ifFalsy)
1669
1691
  props_default(element, parent);
1670
- element.key = assignedKey;
1692
+ element.state = state_default(element, parent, { skip: true });
1671
1693
  throughInitialExec(element);
1672
1694
  for (const param in element) {
1673
1695
  const prop = element[param];
@@ -1683,11 +1705,14 @@ var create = (element, parent, key, options = options_default.create || {}) => {
1683
1705
  }
1684
1706
  }
1685
1707
  delete element.parent;
1708
+ delete element.update;
1686
1709
  delete element.__element;
1687
1710
  delete element.__props;
1688
1711
  delete element.props.__element;
1689
1712
  delete element.props.update;
1690
- delete element.update;
1713
+ delete element.state.__element;
1714
+ delete element.state.__element;
1715
+ delete element.__hasRootState;
1691
1716
  return element;
1692
1717
  }
1693
1718
  applyExtend(element, parent, options);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.js", "../node_modules/@domql/globals/index.js", "../src/element/nodes.js", "../src/utils/report.js", "../src/utils/object.js", "../src/utils/node.js", "../node_modules/@domql/utils/types.js", "../node_modules/@domql/utils/object.js", "../node_modules/@domql/utils/node.js", "../src/utils/extendUtils.js", "../src/element/root.js", "../src/element/tree.js", "../src/event/on.js", "../src/event/can.js", "../src/element/cache.js", "../src/element/mixins/attr.js", "../src/element/mixins/classList.js", "../src/element/options.js", "../src/element/set.js", "../src/element/mixins/content.js", "../src/element/mixins/data.js", "../src/element/mixins/html.js", "../src/element/mixins/style.js", "../src/element/mixins/text.js", "../src/element/state.js", "../src/element/mixins/state.js", "../src/element/mixins/registry.js", "../src/element/methods.js", "../src/element/iterate.js", "../src/element/node.js", "../src/element/assign.js", "../src/element/extend.js", "../src/element/props.js", "../src/element/update.js", "../src/element/create.js", "../src/element/define.js", "../src/element/parse.js"],
4
- "sourcesContent": ["'use strict'\n\nimport { window } from '@domql/globals'\nimport { create, parse, set, define, tree } from './element'\n\nconst ENV = process.env.NODE_ENV\nif (ENV === 'test' || ENV === 'development') window.tree = tree\n\nexport default {\n create,\n parse,\n set,\n define,\n tree\n}\n", "'use strict'\n\nconst global = globalThis\nconst self = globalThis\nconst window = globalThis\nconst document = window.document // eslint-disable-line\n\nexport { global, self, window, document }\n", "'use strict'\n\nexport default {\n root: [\n 'body',\n 'html'\n ],\n\n head: [\n 'title',\n 'base',\n 'meta',\n 'style'\n ],\n\n body: [\n 'html',\n 'body',\n 'string',\n 'fragment',\n 'a',\n 'abbr',\n 'acronym',\n 'address',\n 'applet',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'basefont',\n 'bdi',\n 'bdo',\n 'big',\n 'blockquote',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'data',\n 'datalist',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'embed',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'font',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'map',\n 'mark',\n 'meter',\n 'nav',\n 'noframes',\n 'noscript',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'param',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'script',\n 'section',\n 'select',\n 'small',\n 'source',\n 'span',\n 'strike',\n 'strong',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'tt',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n\n // SVG\n 'svg',\n 'path'\n ]\n}\n", "'use strict'\n\nexport const errors = {\n en: {\n DocumentNotDefined: {\n title: 'Document is undefined',\n description: 'To tweak with DOM, you should use browser.'\n },\n OverwriteToBuiltin: {\n title: 'Overwriting to builtin method',\n description: 'Overwriting a builtin method in the global define is not possible, please choose different name'\n },\n BrowserNotDefined: {\n title: 'Can\\'t recognize environment',\n description: 'Environment should be browser application, that can run Javascript'\n },\n SetQuickPreferancesIsNotObject: {\n title: 'Quick preferances object is required',\n description: 'Please pass a plain object with \"lang\", \"culture\" and \"area\" properties'\n },\n InvalidParams: {\n title: 'Params are invalid',\n description: 'Please pass a plain object with \"lang\", \"culture\" and \"area\" properties'\n },\n CantCreateWithoutNode: {\n title: 'You must provide node',\n description: 'Can\\'t create DOM element without setting node or text'\n },\n HTMLInvalidTag: {\n title: 'Element tag name (or DOM nodeName) is invalid',\n description: 'To create element, you must provide valid DOM node. See full list of them at here: http://www.w3schools.com/tags/'\n },\n HTMLInvalidAttr: {\n title: 'Attibutes object is invalid',\n description: 'Please pass a valid plain object to apply as an attributes for a DOM node'\n },\n HTMLInvalidData: {\n title: 'Data object is invalid',\n description: 'Please pass a valid plain object to apply as an dataset for a DOM node'\n },\n HTMLInvalidStyles: {\n title: 'Styles object is invalid',\n description: 'Please pass a valid plain object to apply as an style for a DOM node'\n },\n HTMLInvalidText: {\n title: 'Text string is invalid',\n description: 'Please pass a valid string to apply text to DOM node'\n }\n }\n}\n\nexport const report = (err, arg, element) => {\n const currentLang = 'en'\n let errObj\n if (err && typeof err === 'string') errObj = errors[currentLang][err]\n\n return new Error(\n `\"${err}\", \"${arg}\"\\n\\n`,\n `${errObj.description}`,\n element ? `\\n\\n${element}` : ''\n )\n}\n", "'use strict'\n\nimport { window } from '@domql/globals'\nimport nodes from '../element/nodes'\n\nexport const memoize = (fn) => {\n const cache = {}\n return (...args) => {\n const n = args[0]\n if (n in cache) {\n return cache[n]\n } else {\n const result = fn(n)\n cache[n] = result\n return result\n }\n }\n}\n\nexport const debounce = (element, func, timeout = 300) => {\n let timer\n return (...args) => {\n clearTimeout(timer)\n timer = setTimeout(() => { func.apply(element, args) }, timeout)\n }\n}\n\nexport const isTagRegistered = arg => nodes.body.indexOf(arg)\n\nexport const isObject = arg => {\n if (arg === null) return false\n return (typeof arg === 'object') && (arg.constructor === Object)\n}\n\nexport const isString = arg => typeof arg === 'string'\n\nexport const isNumber = arg => typeof arg === 'number'\n\nexport const isFunction = arg => typeof arg === 'function'\n\nexport const isArray = arg => Array.isArray(arg)\n\nexport const isObjectLike = arg => {\n if (arg === null) return false\n // if (isArray(arg)) return false\n return (typeof arg === 'object')\n}\n\nexport const isNode = obj => {\n return (\n typeof window.Node === 'object'\n ? obj instanceof window.Node\n : obj && typeof obj === 'object' && typeof obj.nodeType === 'number' && typeof obj.nodeName === 'string'\n )\n}\n\nexport const isHtmlElement = obj => {\n return (\n typeof window.HTMLElement === 'object'\n ? obj instanceof window.HTMLElement // DOM2\n : obj && typeof obj === 'object' && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === 'string'\n )\n}\n\nexport const isDefined = arg => {\n return isObject(arg) ||\n isObjectLike(arg) ||\n isString(arg) ||\n isNumber(arg) ||\n isFunction(arg) ||\n isArray(arg) ||\n isObjectLike(arg)\n}\n\nexport const exec = (param, element, state) => {\n if (isFunction(param)) return param(element, state || element.state)\n return param\n}\n\nexport const map = (obj, extention, element) => {\n for (const e in extention) {\n obj[e] = exec(extention[e], element)\n }\n}\n\nexport const merge = (element, obj) => {\n for (const e in obj) {\n const elementProp = element[e]\n const objProp = obj[e]\n if (elementProp === undefined) {\n element[e] = objProp\n }\n }\n return element\n}\n\nexport const deepMerge = (element, extend) => {\n // console.groupCollapsed('deepMerge:')\n for (const e in extend) {\n const elementProp = element[e]\n const extendProp = extend[e]\n // const cachedProps = cache.props\n if (e === 'parent' || e === 'props' || e === 'state') continue\n if (elementProp === undefined) {\n element[e] = extendProp\n } else if (isObjectLike(elementProp) && isObject(extendProp)) {\n deepMerge(elementProp, extendProp)\n }\n }\n // console.groupEnd('deepMerge:')\n return element\n}\n\nexport const clone = obj => {\n const o = {}\n for (const prop in obj) {\n if (prop === 'node') continue\n o[prop] = obj[prop]\n }\n return o\n}\n\n/**\n * Deep cloning of object\n */\nexport const deepClone = (obj, excluding = ['parent', 'node', '__element', 'state', '__root', 'context']) => {\n const o = isArray(obj) ? [] : {}\n for (const prop in obj) {\n if (excluding.indexOf(prop) > -1) continue\n let objProp = obj[prop]\n if (prop === 'extend' && isArray(objProp)) {\n objProp = mergeArray(objProp)\n }\n if (isObjectLike(objProp)) {\n o[prop] = deepClone(objProp)\n } else o[prop] = objProp\n }\n return o\n}\n\n/**\n * Overwrites object properties with another\n */\nexport const isEqualDeep = (param, element) => {\n if (param === element) return true\n if (!param || !element) return false\n for (const prop in param) {\n const paramProp = param[prop]\n const elementProp = element[prop]\n if (isObjectLike(paramProp)) {\n const isEqual = isEqualDeep(paramProp, elementProp)\n if (!isEqual) return false\n } else {\n const isEqual = paramProp === elementProp\n if (!isEqual) return false\n }\n }\n return true\n}\n\n/**\n * Overwrites object properties with another\n */\nexport const overwrite = (element, params, options) => {\n const changes = {}\n\n for (const e in params) {\n if (e === 'props' || e === 'state') continue\n\n const elementProp = element[e]\n const paramsProp = params[e]\n\n if (paramsProp !== undefined) {\n element.__cached[e] = changes[e] = elementProp\n element[e] = paramsProp\n }\n\n if (options.cleanExec) delete element.__exec[e]\n }\n\n return changes\n}\n\n/**\n * Overwrites DEEPly object properties with another\n */\nexport const overwriteDeep = (obj, params, excluding = ['node', '__root']) => {\n for (const e in params) {\n if (excluding.indexOf(e) > -1) continue\n const objProp = obj[e]\n const paramsProp = params[e]\n if (isObjectLike(objProp) && isObjectLike(paramsProp)) {\n overwriteDeep(objProp, paramsProp)\n } else if (paramsProp !== undefined) {\n obj[e] = paramsProp\n }\n }\n return obj\n}\n\n/**\n * Overwrites object properties with another\n */\nexport const mergeIfExisted = (a, b) => {\n if (isObjectLike(a) && isObjectLike(b)) return deepMerge(a, b)\n return a || b\n}\n\n/**\n * Merges array extends\n */\nexport const mergeArray = (arr) => {\n return arr.reduce((a, c) => deepMerge(a, deepClone(c)), {})\n}\n\n/**\n * Merges array extends\n */\nexport const mergeAndCloneIfArray = obj => {\n return isArray(obj) ? mergeArray(obj) : deepClone(obj)\n}\n\n/**\n * Overwrites object properties with another\n */\nexport const flattenRecursive = (param, prop, stack = []) => {\n const objectized = mergeAndCloneIfArray(param)\n stack.push(objectized)\n\n const extendOfExtend = objectized[prop]\n if (extendOfExtend) flattenRecursive(extendOfExtend, prop, stack)\n\n delete objectized[prop]\n\n return stack\n}\n", "'use strict'\n\nexport const createID = (function () {\n let index = 0\n\n function newId () {\n index++\n return index\n }\n\n return newId\n})()\n\nexport const createSnapshotId = createID\n", "'use strict'\n\nimport { window } from '@domql/globals'\nimport { HTML_TAGS } from '@domql/tags'\n\nexport const isValidHtmlTag = arg => HTML_TAGS.body.indexOf(arg)\n\nexport const isObject = arg => {\n if (arg === null) return false\n return (typeof arg === 'object') && (arg.constructor === Object)\n}\n\nexport const isString = arg => typeof arg === 'string'\n\nexport const isNumber = arg => typeof arg === 'number'\n\nexport const isFunction = arg => typeof arg === 'function'\n\nexport const isBoolean = arg => arg === true || arg === false\n\nexport const isNull = arg => arg === null\n\nexport const isArray = arg => Array.isArray(arg)\n\nexport const isObjectLike = arg => {\n if (arg === null) return false\n // if (isArray(arg)) return false\n return (typeof arg === 'object')\n}\n\nexport const isNode = obj => {\n return (\n typeof window.Node === 'object'\n ? obj instanceof window.Node\n : obj && typeof obj === 'object' && typeof obj.nodeType === 'number' && typeof obj.nodeName === 'string'\n )\n}\n\nexport const isHtmlElement = obj => {\n return (\n typeof window.HTMLElement === 'object'\n ? obj instanceof window.HTMLElement // DOM2\n : obj && typeof obj === 'object' && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === 'string'\n )\n}\n\nexport const isDefined = arg => {\n return isObject(arg) ||\n isObjectLike(arg) ||\n isString(arg) ||\n isNumber(arg) ||\n isFunction(arg) ||\n isArray(arg) ||\n isObjectLike(arg) ||\n isBoolean(arg) ||\n isNull(arg)\n}\n\nexport const isUndefined = arg => {\n return arg === undefined\n}\n\nexport const TYPES = {\n boolean: isBoolean,\n array: isArray,\n object: isObject,\n string: isString,\n number: isNumber,\n null: isNull,\n function: isFunction,\n objectLike: isObjectLike,\n node: isNode,\n htmlElement: isHtmlElement,\n defined: isDefined\n}\n\nexport const is = (arg) => {\n return (...args) => {\n return args.map(val => TYPES[val](arg)).filter(v => v).length > 0\n }\n}\n\nexport const isNot = (arg) => {\n return (...args) => {\n return args.map(val => TYPES[val](arg)).filter(v => v).length === 0\n }\n}\n", "'use strict'\n\nimport { isFunction, isObjectLike, isObject, isArray } from './types'\n\nexport const exec = (param, element, state) => {\n if (isFunction(param)) return param(element, state || element.state)\n return param\n}\n\nexport const map = (obj, extention, element) => {\n for (const e in extention) {\n obj[e] = exec(extention[e], element)\n }\n}\n\nexport const merge = (element, obj) => {\n for (const e in obj) {\n const elementProp = element[e]\n const objProp = obj[e]\n if (elementProp === undefined) {\n element[e] = objProp\n }\n }\n return element\n}\n\nexport const deepMerge = (element, extend) => {\n // console.groupCollapsed('deepMerge:')\n for (const e in extend) {\n const elementProp = element[e]\n const extendProp = extend[e]\n // const cachedProps = cache.props\n if (e === 'parent' || e === 'props') continue\n if (elementProp === undefined) {\n element[e] = extendProp\n } else if (isObjectLike(elementProp) && isObject(extendProp)) {\n deepMerge(elementProp, extendProp)\n }\n }\n // console.groupEnd('deepMerge:')\n return element\n}\n\nexport const clone = obj => {\n const o = {}\n for (const prop in obj) {\n if (prop === 'node') continue\n o[prop] = obj[prop]\n }\n return o\n}\n\n/**\n * Deep cloning of object\n */\nexport const deepClone = (obj) => {\n if (isArray(obj)) {\n return obj.map(deepClone)\n }\n const o = {}\n for (const prop in obj) {\n let objProp = obj[prop]\n if (prop === 'extend' && isArray(objProp)) {\n objProp = mergeArray(objProp)\n }\n if (isArray(objProp)) {\n o[prop] = objProp.map(deepClone)\n } else if (isObject(objProp)) {\n o[prop] = deepClone(objProp)\n } else o[prop] = objProp\n }\n return o\n}\n\n/**\n * Overwrites object properties with another\n */\nexport const overwrite = (element, params, options) => {\n const { ref } = element\n const changes = {}\n\n for (const e in params) {\n if (e === 'props') continue\n\n const elementProp = element[e]\n const paramsProp = params[e]\n\n if (paramsProp) {\n ref.__cache[e] = changes[e] = elementProp\n ref[e] = paramsProp\n }\n }\n\n return changes\n}\n\nexport const diff = (obj, original, cache) => {\n const changes = cache || {}\n for (const e in obj) {\n if (e === 'ref') continue\n const originalProp = original[e]\n const objProp = obj[e]\n if (isObjectLike(originalProp) && isObjectLike(objProp)) {\n changes[e] = {}\n diff(originalProp, objProp, changes[e])\n } else if (objProp !== undefined) {\n changes[e] = objProp\n }\n }\n return changes\n}\n\n/**\n * Overwrites object properties with another\n */\nexport const overwriteObj = (params, obj) => {\n const changes = {}\n\n for (const e in params) {\n const objProp = obj[e]\n const paramsProp = params[e]\n\n if (paramsProp) {\n obj[e] = changes[e] = objProp\n }\n }\n\n return changes\n}\n\n/**\n * Overwrites DEEPly object properties with another\n */\nexport const overwriteDeep = (params, obj) => {\n for (const e in params) {\n const objProp = obj[e]\n const paramsProp = params[e]\n if (isObjectLike(objProp) && isObjectLike(paramsProp)) {\n overwriteDeep(objProp, paramsProp)\n } else if (paramsProp !== undefined) {\n obj[e] = paramsProp\n }\n }\n return obj\n}\n\n/**\n * Overwrites object properties with another\n */\nexport const mergeIfExisted = (a, b) => {\n if (isObjectLike(a) && isObjectLike(b)) return deepMerge(a, b)\n return a || b\n}\n\n/**\n * Merges array extendtypes\n */\nexport const mergeArray = (arr) => {\n return arr.reduce((a, c) => deepMerge(a, deepClone(c)), {})\n}\n\n/**\n * Merges array extendtypes\n */\nexport const mergeAndCloneIfArray = obj => {\n return isArray(obj) ? mergeArray(obj) : deepClone(obj)\n}\n\n/**\n * Overwrites object properties with another\n */\nexport const flattenRecursive = (param, prop, stack = []) => {\n const objectized = mergeAndCloneIfArray(param)\n stack.push(objectized)\n\n const extendOfExtend = objectized[prop]\n if (extendOfExtend) flattenRecursive(extendOfExtend, prop, stack)\n\n delete objectized[prop]\n\n return stack\n}\n\nexport const isEqualDeep = (param, element) => {\n if (param === element) return true\n if (!param || !element) return false\n for (const prop in param) {\n const paramProp = param[prop]\n const elementProp = element[prop]\n if (isObjectLike(paramProp)) {\n const isEqual = isEqualDeep(paramProp, elementProp)\n if (!isEqual) return false\n } else {\n const isEqual = paramProp === elementProp\n if (!isEqual) return false\n }\n }\n return true\n}\n", "'use strict'\n\nexport const cleanWithNode = extend => delete extend.node && extend\n\nexport const createID = (function * () {\n let index = 1\n while (index < index + 1) {\n yield index++\n }\n}())\n", "'use strict'\n\nimport { isArray, isFunction, isObject } from '@domql/utils'\n\nexport const generateHash = () => Math.random().toString(36).substring(2)\n\n// hashing\nexport const extendStackRegistry = {}\nexport const extendCachedRegistry = {}\n\nexport const getHashedExtend = extend => {\n return extendStackRegistry[extend.__hash]\n}\n\nexport const setHashedExtend = (extend, stack) => {\n const hash = generateHash()\n extend.__hash = hash\n extendStackRegistry[hash] = stack\n return stack\n}\n\nexport const getExtendStackRegistry = (extend, stack) => {\n if (extend.__hash) { return stack.concat(getHashedExtend(extend)) }\n return setHashedExtend(extend, stack) // stack .concat(hashedExtend)\n}\n\n// stacking\nexport const extractArrayExtend = (extend, stack) => {\n extend.forEach(each => flattenExtend(each, stack))\n return stack\n}\n\nexport const deepExtend = (extend, stack) => {\n const extendOflattenExtend = extend.extend\n if (extendOflattenExtend) {\n flattenExtend(extendOflattenExtend, stack)\n }\n return stack\n}\n\nexport const flattenExtend = (extend, stack) => {\n if (!extend) return stack\n if (isArray(extend)) return extractArrayExtend(extend, stack)\n stack.push(extend)\n if (extend.extend) deepExtend(extend, stack)\n return stack\n}\n\n// merging\nexport const deepCloneExtend = obj => {\n const o = {}\n for (const prop in obj) {\n if (['parent', 'node', '__element', '__root', '__key'].indexOf(prop) > -1) continue\n const objProp = obj[prop]\n if (isObject(objProp)) {\n o[prop] = deepCloneExtend(objProp)\n } else if (isArray(objProp)) {\n o[prop] = objProp.map(x => x)\n } else o[prop] = objProp\n }\n return o\n}\n\nexport const deepMergeExtend = (element, extend) => {\n for (const e in extend) {\n if (['parent', 'node', '__element', '__root', '__key'].indexOf(e) > -1) continue\n const elementProp = element[e]\n const extendProp = extend[e]\n if (elementProp === undefined) {\n element[e] = extendProp\n } else if (isObject(elementProp) && isObject(extendProp)) {\n deepMergeExtend(elementProp, extendProp)\n } else if (isArray(elementProp) && isArray(extendProp)) {\n element[e] = elementProp.concat(extendProp)\n } else if (isArray(elementProp) && isObject(extendProp)) {\n const obj = deepMergeExtend({}, elementProp)\n element[e] = deepMergeExtend(obj, extendProp)\n } else if (elementProp === undefined && isFunction(extendProp)) {\n element[e] = extendProp\n }\n }\n return element\n}\n\nexport const cloneAndMergeArrayExtend = stack => {\n return stack.reduce((a, c) => {\n return deepMergeExtend(a, deepCloneExtend(c))\n }, {})\n}\n\n// joint stacks\nexport const jointStacks = (extendStack, childExtendStack) => {\n return []\n .concat(extendStack.slice(0, 1))\n .concat(childExtendStack.slice(0, 1))\n .concat(extendStack.slice(1))\n .concat(childExtendStack.slice(1))\n}\n\n// init\nexport const getExtendStack = extend => {\n if (!extend) return []\n if (extend.__hash) return getHashedExtend(extend) || []\n const stack = flattenExtend(extend, [])\n return getExtendStackRegistry(extend, stack)\n}\n\nexport const getExtendMerged = extend => {\n const stack = getExtendStack(extend)\n return cloneAndMergeArrayExtend(stack)\n}\n", "'use strict'\n\nimport { document } from '@domql/globals'\nimport { report } from '../utils'\n\nconst root = {\n key: ':root',\n node: document ? document.body : report('DocumentNotDefined', document)\n}\n\nexport default root\n", "'use strict'\n\nimport root from './root'\n\nexport default root\n", "'use strict'\n\nexport const beforeClassAssign = (param, element, state) => {\n return param(element, state)\n}\n\nexport const init = (param, element, state) => {\n return param(element, state)\n}\n\nexport const render = (param, element, state) => {\n return param(element, state)\n}\n\nexport const initUpdate = (param, element, state) => {\n return param(element, state)\n}\n\nexport const attachNode = (param, element, state) => {\n return param(element, state)\n}\n\nexport const stateInit = (param, element, state) => {\n return param(element, state)\n}\n\nexport const stateCreated = (param, element, state) => {\n return param(element, state)\n}\n\nexport const initStateUpdated = (param, element, state, changes) => {\n return param(element, state, changes)\n}\n\nexport const stateUpdated = (param, element, state, changes) => {\n return param(element, state, changes)\n}\n\nexport const update = (param, element, state) => {\n return param(element, state)\n}\n", "'use strict'\n\nimport { nodes } from '../element'\nimport { report } from '../utils'\n\nexport const render = (element) => {\n const tag = element.tag || 'div'\n const isValid = nodes.body.indexOf(tag) > -1\n return isValid || report('HTMLInvalidTag')\n}\n", "'use strict'\n\nimport { document } from '@domql/globals'\nimport { can } from '../event'\nimport { exec, isString, isTagRegistered, report } from '../utils'\n\nconst cachedElements = {}\n\nconst createNode = (element) => {\n const { tag } = element\n if (tag) {\n if (tag === 'string') return document.createTextNode(element.text)\n else if (tag === 'fragment') {\n return document.createDocumentFragment()\n } else if (tag === 'svg' || tag === 'path') { // change that\n return document.createElementNS('http://www.w3.org/2000/svg', tag)\n } else return document.createElement(tag)\n } else {\n return document.createElement('div')\n }\n}\n\nconst detectTag = element => {\n let { tag, key } = element\n tag = exec(tag, element)\n\n if (tag === true) tag = key\n\n if (isString(tag)) {\n const tagExists = isTagRegistered(tag) > -1\n if (tagExists) return tag\n } else {\n const isKeyATag = isTagRegistered(key) > -1\n if (isKeyATag) return key\n }\n\n return 'div'\n}\n\nexport default (element) => {\n const tag = element.tag = detectTag(element)\n\n if (!can.render(element)) {\n return report('HTMLInvalidTag')\n }\n\n let cachedTag = cachedElements[tag]\n if (!cachedTag) cachedTag = cachedElements[tag] = createNode(element)\n\n const clonedNode = cachedTag.cloneNode(true)\n if (tag === 'string') clonedNode.nodeValue = element.text\n return clonedNode\n}\n", "'use strict'\n\nimport { isNot } from '@domql/utils'\nimport { exec, report } from '../../utils'\n\n/**\n * Recursively add attributes to a DOM node\n */\nexport default (params, element, node) => {\n const { __attr } = element\n if (isNot('object')) report('HTMLInvalidAttr', params)\n if (params) {\n for (const attr in params) {\n const val = exec(params[attr], element)\n // if (__attr[attr] === val) return\n if (val && node.setAttribute) node.setAttribute(attr, val)\n else if (node.removeAttribute) node.removeAttribute(attr)\n __attr[attr] = val\n }\n }\n console.groupEnd(params, __attr)\n}\n", "'use strict'\n\nimport { exec, isObject, isString } from '../../utils'\n\nexport const assignClass = (element) => {\n const { key } = element\n if (element.class === true) element.class = key\n else if (!element.class && typeof key === 'string' && key.charAt(0) === '_' && key.charAt(1) !== '_') {\n element.class = key.slice(1)\n }\n}\n\n// stringifies class object\nexport const classify = (obj, element) => {\n let className = ''\n for (const item in obj) {\n const param = obj[item]\n if (typeof param === 'boolean' && param) className += ` ${item}`\n else if (typeof param === 'string') className += ` ${param}`\n else if (typeof param === 'function') {\n className += ` ${exec(param, element)}`\n }\n }\n return className\n}\n\nexport default (params, element, node, live) => {\n if (!params) return\n const { key, __className } = element // eslint-disable-line\n if (params === true) params = element.class = { key }\n if (isString(params)) params = element.class = { default: params }\n if (isObject(params)) params = classify(params, element)\n // TODO: fails on string\n const className = params.replace(/\\s+/g, ' ').trim()\n node.classList = className\n // if (className && className !== __className) node.classList = className\n // element.__className = className\n return className\n}\n", "'use strict'\n\nexport default {}\n", "'use strict'\n\nimport create from './create'\nimport { isEqualDeep, isFunction } from '../utils'\nimport { registry } from './mixins'\nimport OPTIONS from './options'\n\nexport const removeContentElement = function (el) {\n const element = el || this\n if (element.content) {\n if (element.content.node) {\n if (element.content.tag === 'fragment') element.node.innerHTML = ''\n else element.node.removeChild(element.content.node)\n }\n\n const { __cached } = element\n if (__cached && __cached.content) {\n if (__cached.content.tag === 'fragment') __cached.content.parent.node.innerHTML = ''\n else if (__cached.content && isFunction(__cached.content.remove)) __cached.content.remove()\n }\n\n delete element.content\n }\n}\n\nconst set = function (params, options, el) {\n const element = el || this\n\n const isEqual = isEqualDeep(params, element.content)\n // console.error(params)\n if (isEqual && element.content.__cached) return element\n removeContentElement(element)\n\n if (params) {\n const { childExtend } = params\n if (!childExtend && element.childExtend) params.childExtend = element.childExtend\n create(params, element, 'content', {\n ignoreChildExtend: true,\n ...registry.defaultOptions,\n ...OPTIONS.create\n })\n }\n\n return element\n}\n\nexport default set\n", "'use strict'\n\nimport set from '../set'\nimport { isEqualDeep } from '../../utils'\n\n/**\n * Appends anything as content\n * an original one as a child\n */\nexport default (param, element, node, options) => {\n if (param && element) {\n if (param.__hash === element.content.__hash && element.content.update) {\n const { define } = element\n element.content.update(param)\n } else {\n set.call(element, param, options)\n }\n }\n}\n", "'use strict'\n\nimport { exec, isObject } from '../../utils'\nimport { report } from '../../utils/report'\n\n/**\n * Apply data parameters on the DOM nodes\n * this should only work if `showOnNode: true` is passed\n */\nexport default (params, element, node) => {\n if (params && params.showOnNode) {\n if (!isObject(params)) report('HTMLInvalidData', params)\n\n // Apply data params on node\n for (const dataset in params) {\n if (dataset !== 'showOnNode') {\n node.dataset[dataset] = exec(params[dataset], element)\n }\n }\n }\n}\n", "'use strict'\n\nimport { exec } from '../../utils'\n\n/**\n * Appends raw HTML as content\n * an original one as a child\n */\nexport default (param, element, node) => {\n const prop = exec(param, element)\n if (prop !== element.__html) {\n // const parser = new window.DOMParser()\n // param = parser.parseFromString(param, 'text/html')\n if (node.nodeName === 'SVG') node.textContent = prop\n else node.innerHTML = prop\n\n element.__html = prop\n }\n}\n", "'use strict'\n\nimport { isObject, map } from '../../utils'\nimport { report } from '../../utils/report'\n\n/**\n * Recursively add styles to a DOM node\n */\nexport default (params, element, node) => {\n if (params) {\n if (isObject(params)) map(node.style, params, element)\n else report('HTMLInvalidStyles', params)\n }\n}\n", "'use strict'\n\nimport { create } from '..'\nimport { exec } from '../../utils'\n\n/**\n * Creates a text node and appends into\n * an original one as a child\n */\nexport const asd = (param, element, node) => {\n const prop = exec(param, element)\n if (element.tag === 'string') {\n node.nodeValue = prop\n }\n else if (param !== undefined || param !== null) {\n if (element.__text && element.__text.text !== prop) return\n element.__text.text = prop\n if (element.__text.node) element.__text.node.nodeValue = prop\n else create({ tag: 'string', text: prop }, element, '__text')\n }\n}\n\nexport default (param, element, node) => {\n const prop = exec(param, element)\n if (element.tag === 'string') {\n if (element.text === prop) return\n node.nodeValue = prop\n }\n else if (param !== undefined || param !== null) {\n if (element.__text) {\n if (element.__text.text === prop) return\n element.__text.text = prop\n if (element.__text.node) element.__text.node.nodeValue = prop\n } else create({ tag: 'string', text: prop }, element, '__text')\n }\n}\n", "'use strict'\n\nimport { on } from '../event'\nimport { deepClone, exec, overwriteDeep } from '../utils'\nimport { is, isObject, isFunction, isUndefined } from '@domql/utils'\n\nexport const IGNORE_STATE_PARAMS = [\n 'update', 'parse', 'clean', 'create', 'parent', '__element', '__depends', '__ref', '__root',\n '__components', '__projectSystem', '__projectState', '__projectLibrary',\n 'projectStateUpdate', 'projectSystemUpdate'\n]\n\nexport const parseState = function () {\n const state = this\n const parseState = {}\n for (const param in state) {\n if (!IGNORE_STATE_PARAMS.includes(param)) {\n parseState[param] = state[param]\n }\n }\n return parseState\n}\n\nexport const cleanState = function () {\n const state = this\n for (const param in state) {\n if (!IGNORE_STATE_PARAMS.includes(param)) {\n delete state[param]\n }\n }\n return state\n}\n\nexport const projectSystemUpdate = function (obj, options = {}) {\n const state = this\n if (!state) return\n const rootState = (state.__element.__root || state.__element).state\n rootState.update({ PROJECT_SYSTEM: obj }, options)\n return state\n}\n\nexport const projectStateUpdate = function (obj, options = {}) {\n const state = this\n if (!state) return\n const rootState = (state.__element.__root || state.__element).state\n rootState.update({ PROJECT_STATE: obj }, options)\n return state\n}\n\nexport const updateState = function (obj, options = {}) {\n const state = this\n const element = state.__element\n state.parent = element.parent.state\n\n if (!state.__element) createState(element, element.parent)\n\n // run `on.stateUpdated`\n if (element.on && isFunction(element.on.initStateUpdated)) {\n const initReturns = on.initStateUpdated(element.on.initStateUpdated, element, state, obj)\n if (initReturns === false) return\n }\n\n const stateKey = element.__state\n if (stateKey) {\n // TODO: check for double parent\n if (state.parent && state.parent[stateKey]) {\n const keyInParentState = state.parent[stateKey]\n if (keyInParentState && !options.stopStatePropogation) {\n if (element.__stateType === 'string') {\n return state.parent.update({ [stateKey]: obj.value }, options)\n }\n return state.parent.update({ [stateKey]: obj }, options)\n }\n }\n } else {\n overwriteDeep(state, obj, IGNORE_STATE_PARAMS)\n }\n\n // TODO: try debounce\n if (!options.preventUpdate) { element.update({}, options) } else if (options.preventUpdate === 'recursive') { element.update({}, { ...options, preventUpdate: true }) }\n\n if (state.__depends) {\n for (const el in state.__depends) {\n const findElement = state.__depends[el]\n findElement.clean().update(state.parse(), options)\n }\n }\n\n if (!options.preventUpdateListener && element.on && isFunction(element.on.stateUpdated)) {\n on.stateUpdated(element.on.stateUpdated, element, state, obj)\n }\n}\n\nexport const createState = function (element, parent) {\n let { state, __root } = element\n\n if (isFunction(state)) state = exec(state, element)\n\n if (is(state)('string', 'number')) {\n element.__state = state\n state = {}\n }\n if (state === true) {\n element.__state = element.key\n state = {}\n }\n\n if (!state) {\n if (parent && parent.state) return parent.state\n return {}\n } else {\n element.__hasRootState = true\n }\n\n // run `on.init`\n if (element.on && isFunction(element.on.stateInit)) {\n on.stateInit(element.on.stateInit, element, element.state)\n }\n\n let stateKey = element.__state\n if (stateKey) {\n let parentState = parent.state\n let parentStateKey\n const parents = stateKey.split('../')\n for (let i = 1; i < parents.length; i++) {\n stateKey = parents[i]\n parentState = parentState.parent\n }\n if (stateKey.includes('.')) {\n [parentStateKey, stateKey] = stateKey.split('.')\n parentState = parentState[parentStateKey]\n }\n if (parentState && parentState[stateKey]) {\n const keyInParentState = parentState[stateKey]\n if (is(keyInParentState)('object', 'array')) {\n state = deepClone(keyInParentState)\n } else if (is(keyInParentState)('string', 'number')) {\n state = { value: keyInParentState }\n element.__stateType = 'string'\n } else if (isUndefined(keyInParentState)) {\n console.warn(stateKey, 'is not in present', 'replacing with ', {})\n state = {}\n }\n }\n }\n\n // reference other state\n const { __ref } = state\n if (__ref) {\n state = deepClone(__ref, IGNORE_STATE_PARAMS)\n if (isObject(__ref.__depends)) {\n __ref.__depends[element.key] = state\n } else __ref.__depends = { [element.key]: state }\n } else {\n state = deepClone(state, IGNORE_STATE_PARAMS)\n }\n\n element.state = state\n state.clean = cleanState\n state.parse = parseState\n state.update = updateState\n state.create = createState\n state.parent = element.parent.state\n state.__element = element\n state.__root = __root ? __root.state : state\n\n // editor stuff\n state.projectSystemUpdate = projectSystemUpdate\n state.projectStateUpdate = projectStateUpdate\n state.__components = (state.__root || state).COMPONENTS\n state.__projectSystem = (state.__root || state).PROJECT_SYSTEM\n state.__projectState = (state.__root || state).PROJECT_STATE\n state.__projectLibrary = (state.__root || state).PROJECT_LIBRARY\n\n // run `on.stateCreated`\n if (element.on && isFunction(element.on.stateCreated)) {\n on.stateCreated(element.on.stateCreated, element, state)\n }\n\n return state\n}\n\nexport default createState\n", "'use strict'\n\nimport { exec, isObject } from '../../utils'\nimport { IGNORE_STATE_PARAMS } from '../state'\n\nexport default (params, element, node) => {\n const state = exec(params, element)\n\n if (isObject(state)) {\n for (const param in state) {\n if (IGNORE_STATE_PARAMS.includes(param)) continue\n element.state[param] = exec(state[param], element)\n }\n }\n\n return element\n}\n", "'use strict'\n\nimport {\n attr,\n style,\n text,\n html,\n content,\n data,\n classList,\n state\n} from '.'\n\nexport default {\n attr,\n style,\n text,\n html,\n content,\n data,\n class: classList,\n state,\n\n extend: {},\n childExtend: {},\n childExtendRecursive: {},\n props: {},\n path: {},\n if: {},\n define: {},\n transform: {},\n __hash: {},\n __componentKey: {},\n __cached: {},\n __defined: {},\n __exec: {},\n __changes: {},\n __trash: {},\n __root: {},\n __props: {},\n __extend: {},\n __ifFragment: {},\n __children: {},\n __ifFalsy: {},\n __text: {},\n __element: {},\n __html: {},\n __class: {},\n __className: {},\n __classNames: {},\n __attr: {},\n __state: {},\n __stateType: {},\n __currentSnapshot: {},\n __hasRootState: {},\n nextElement: {},\n previousElement: {},\n key: {},\n tag: {},\n query: {},\n parent: {},\n node: {},\n set: {},\n update: {},\n setProps: {},\n remove: {},\n removeContent: {},\n lookup: {},\n spotByPath: {},\n keys: {},\n log: {},\n parse: {},\n parseDeep: {},\n on: {},\n component: {},\n context: {}\n}\n\n// List of keys for .parse() and .parseDeep() to include in the result.\n// Keys not in the array are excluded.\nexport const parseFilters = {\n elementKeys: [\n 'tag', 'text', 'style', 'attr', 'class', 'state', 'class',\n 'data', 'content', 'html'\n // TODO: 'props' ?\n ],\n propsKeys: ['__element'],\n stateKeys: []\n}\n", "'use strict'\n\nimport { isFunction, isObject, isObjectLike } from '../utils'\nimport { registry, parseFilters } from './mixins'\nimport root from './root'\n\nconst ENV = process.env.NODE_ENV\n\n// TODO: update these files\nexport const lookup = function (key) {\n const element = this\n let { parent } = element\n\n while (parent.key !== key) {\n if (parent[key]) return parent[key]\n parent = parent.parent\n if (!parent) return\n }\n\n return parent\n}\n\n// TODO: update these files\nexport const spotByPath = function (path) {\n const element = this\n const arr = [].concat(path)\n let active = root[arr[0]]\n\n if (!arr || !arr.length) return console.log(arr, 'on', element.key, 'is undefined')\n\n while (active.key === arr[0]) {\n arr.shift()\n if (!arr.length) break\n active = active[arr[0]]\n if (!active) return\n }\n\n return active\n}\n\nexport const remove = function (params) {\n const element = this\n if (isFunction(element.node.remove)) element.node.remove()\n else if (ENV === 'test' || ENV === 'development') {\n console.warn('This item cant be removed')\n element.log()\n }\n delete element.parent[element.key]\n}\n\nexport const get = function (param) {\n const element = this\n return element[param]\n}\n\nexport const set = function () {\n}\n\nexport const update = function () {\n}\n\nexport const setProps = function (param, options) {\n const element = this\n if (!param || !element.props) return\n element.update({ props: param }, options)\n return element.props\n}\n\nexport const defineSetter = (element, key, get, set) =>\n Object.defineProperty(element, key, { get, set })\n\nexport const keys = function () {\n const element = this\n const keys = []\n for (const param in element) {\n if (registry[param] && !parseFilters.elementKeys.includes(param))\n continue\n keys.push(param)\n }\n return keys\n}\n\nexport const parse = function () {\n const element = this\n const obj = {}\n const keyList = keys.call(element)\n keyList.forEach(v => (obj[v] = element[v]))\n return obj\n}\n\nexport const parseDeep = function () {\n const element = this\n const obj = parse.call(element)\n for (const k in obj) {\n if (isObjectLike(obj[k])) { obj[k] = parseDeep.call(obj[k]) }\n }\n return obj\n}\n\nexport const log = function (...args) {\n const element = this\n console.group(element.key)\n if (args.length) {\n args.forEach(v => console.log(`%c${v}:\\n`, 'font-weight: bold', element[v]))\n } else {\n console.log(element.path)\n const keys = element.keys()\n keys.forEach(v => console.log(`%c${v}:\\n`, 'font-weight: bold', element[v]))\n }\n console.groupEnd(element.key)\n return element\n}\n\nexport const isMethod = function (param) {\n return param === 'set' ||\n param === 'update' ||\n param === 'remove' ||\n param === 'removeContent' ||\n param === 'lookup' ||\n param === 'spotByPath' ||\n param === 'keys' ||\n param === 'parse' ||\n param === 'setProps' ||\n param === 'parseDeep' ||\n param === 'if' ||\n param === 'log' ||\n param === 'nextElement' ||\n param === 'previousElement'\n}\n\nexport const nextElement = function () {\n const element = this\n const { key, parent } = element\n const { __children } = parent\n\n const currentIndex = __children.indexOf(key)\n const nextChild = __children[currentIndex + 1]\n console.log(nextChild)\n\n return parent[nextChild]\n}\n\nexport const previousElement = function (el) {\n const element = el || this\n const { key, parent } = element\n const { __children } = parent\n\n if (!__children) return\n\n const currentIndex = __children.indexOf(key)\n return parent[__children[currentIndex - 1]]\n}\n", "'use strict'\n\nimport { isObject, exec, isFunction, isNumber, isString, overwrite } from '../utils'\nimport { isMethod } from './methods'\n\nexport const applyEvents = element => {\n const { node, on } = element\n for (const param in on) {\n if (\n param === 'init' ||\n param === 'render' ||\n param === 'update'\n ) continue\n\n const appliedFunction = element.on[param]\n if (isFunction(appliedFunction)) {\n node.addEventListener(param, event =>\n appliedFunction(event, element, element.state),\n true)\n }\n }\n}\n\nexport const throughInitialExec = element => {\n for (const param in element) {\n const prop = element[param]\n if (isFunction(prop) && !isMethod(param)) {\n element.__exec[param] = prop\n element[param] = prop(element, element.state)\n }\n }\n}\n\nexport const throughUpdatedExec = (element, options) => {\n const { __exec } = element\n const changes = {}\n\n for (const param in __exec) {\n const prop = element[param]\n const newExec = __exec[param](element, element.state)\n\n // if element is string\n if (prop && prop.node && (isString(newExec) || isNumber(newExec))) {\n overwrite(prop, { text: newExec }, options)\n } else if (newExec !== prop) {\n element.__cached[param] = changes[param] = prop\n element[param] = newExec\n }\n }\n\n return changes\n}\n\nexport const throughInitialDefine = (element, options) => {\n const { define } = element\n let obj = {}\n\n if (isObject(define)) {\n obj = { ...define }\n }\n if (isObject(options.define)) {\n // console.log('==============')\n // console.log(options.define)\n obj = { ...obj, ...options.define }\n }\n\n for (const param in obj) {\n let prop = element[param]\n\n if (isFunction(prop) && !isMethod(param)) {\n element.__exec[param] = prop\n element[param] = prop = exec(prop, element)\n }\n\n element.__cached[param] = prop\n element[param] = obj[param](prop, element, element.state)\n }\n return element\n}\n\nexport const throughUpdatedDefine = (element, options) => {\n const { define, __exec } = element\n const changes = {}\n let obj = {}\n\n if (isObject(define)) {\n obj = { ...define }\n }\n if (isObject(options.define)) {\n obj = { ...obj, ...options.define }\n }\n\n for (const param in obj) {\n const execParam = __exec[param]\n if (execParam) element.__cached[param] = execParam(element, element.state)\n const cached = exec(element.__cached[param], element)\n element[param] = obj[param](cached, element, element.state)\n }\n return changes\n}\n", "'use strict'\n\nimport create from './create'\nimport cacheNode from './cache'\nimport * as on from '../event/on'\n\nimport { exec, isFunction, isObject } from '../utils'\nimport {\n throughInitialDefine,\n throughInitialExec,\n applyEvents\n} from './iterate'\nimport { registry } from './mixins'\nimport { isMethod } from './methods'\n// import { defineSetter } from './methods'\n\nconst ENV = process.env.NODE_ENV\n\n// const defineSetter = (element, key) => Object.defineProperty(element, key, {\n// get: function () {\n// console.log('GET', key)\n// return element.__data[key]\n// },\n// set: function (new_value) {\n// console.log('SET', key, new_value)\n// element.__data[key] = new_value\n// element.__data['modified'] = (new Date()).getTime()\n// }\n// })\n\nexport const createNode = (element, options) => {\n // create and assign a node\n let { node, tag } = element\n\n let isNewNode\n\n if (!node) {\n isNewNode = true\n\n if (element.__ifFalsy) return element\n\n if (tag === 'shadow') {\n node = element.node = element.parent.node.attachShadow({ mode: 'open' })\n } else node = element.node = cacheNode(element)\n\n // run `on.attachNode`\n if (element.on && isFunction(element.on.attachNode)) {\n on.attachNode(element.on.attachNode, element, element.state)\n }\n }\n\n // node.dataset // .key = element.key\n\n if (ENV === 'test' || ENV === 'development') {\n node.ref = element\n if (isFunction(node.setAttribute)) node.setAttribute('key', element.key)\n }\n\n if (element.__ifFalsy) return element\n\n // iterate through all given params\n if (element.tag !== 'string' || element.tag !== 'fragment') {\n // iterate through define\n throughInitialDefine(element, options)\n\n // iterate through exec\n throughInitialExec(element)\n\n // apply events\n if (isNewNode && isObject(element.on)) applyEvents(element)\n\n for (const param in element) {\n const prop = element[param]\n\n if (isMethod(param) || isObject(registry[param]) || prop === undefined) continue\n\n const hasDefined = element.define && element.define[param]\n const DOMQLProperty = registry[param]\n const hasOptionsDefine = options.define && options.define[param]\n\n if (DOMQLProperty && !hasOptionsDefine) { // Check if param is in our method registry\n if (isFunction(DOMQLProperty)) DOMQLProperty(prop, element, node, options)\n } else if (element[param] && !hasDefined && !hasOptionsDefine) {\n create(exec(prop, element), element, param, options) // Create element\n }\n }\n }\n\n // node.dataset.key = key\n return element\n}\n\nexport default createNode\n", "'use strict'\n\n/**\n * Receives child and parent nodes as parametes\n * and assigns them into real DOM tree\n */\nexport const appendNode = (node, parentNode) => {\n parentNode.appendChild(node)\n return node\n}\n\n/**\n * Receives elements and assigns the first\n * parameter as a child of the second one\n */\nexport const assignNode = (element, parent, key) => {\n parent[key || element.key] = element\n if (element.tag !== 'shadow') {\n appendNode(element.node, parent.node)\n }\n return element\n}\n", "'use strict'\n\nimport { isFunction, exec, getExtendStack, jointStacks, cloneAndMergeArrayExtend, deepMergeExtend, isString } from '../utils'\n\nconst ENV = process.env.NODE_ENV\n\n/**\n * Checks whether element has `extend` or is a part\n * of parent's `childExtend` extend\n */\nexport const applyExtend = (element, parent, options = {}) => {\n if (isFunction(element)) element = exec(element, parent)\n\n let { extend, props, context } = element\n const COMPONENTS = context.components || options.components\n\n if (isString(extend)) extend = COMPONENTS[extend]\n const extendStack = getExtendStack(extend)\n\n if (ENV !== 'test' || ENV !== 'development') delete element.extend\n\n let childExtendStack = []\n if (parent) {\n // Assign parent attr to the element\n element.parent = parent\n if (!options.ignoreChildExtend) {\n if (props && props.ignoreChildExtend) return\n\n childExtendStack = getExtendStack(parent.childExtend)\n\n if (parent.childExtendRecursive) {\n const childExtendRecursiveStack = getExtendStack(parent.childExtendRecursive)\n childExtendStack = childExtendStack.concat(childExtendRecursiveStack)\n element.childExtendRecursive = parent.childExtendRecursive\n }\n }\n }\n\n const extendLength = extendStack.length\n const childExtendLength = childExtendStack.length\n\n let stack = []\n if (extendLength && childExtendLength) {\n stack = jointStacks(extendStack, childExtendStack)\n } else if (extendLength) {\n stack = extendStack\n } else if (childExtendLength) {\n stack = childExtendStack\n } else if (!options.extend) return element\n\n if (options.extend) {\n const defaultOptionsExtend = getExtendStack(options.extend)\n stack = [].concat(stack, defaultOptionsExtend)\n }\n\n element.__extend = stack\n let mergedExtend = cloneAndMergeArrayExtend(stack)\n\n const component = exec(element.component || mergedExtend.component, element)\n if (component && COMPONENTS && COMPONENTS[component]) {\n const componentExtend = cloneAndMergeArrayExtend(getExtendStack(COMPONENTS[component]))\n mergedExtend = deepMergeExtend(componentExtend, mergedExtend)\n }\n\n return deepMergeExtend(element, mergedExtend)\n}\n", "'use strict'\n\nimport { deepClone, deepMerge, exec, isArray, isObject, isString } from '../utils'\n\nconst initProps = (element, parent) => {\n const { props } = element\n const propsStack = []\n\n const isMatch = isString(props) && props.indexOf('match') > -1\n const matchParent = parent.props && parent.props[element.key]\n const matchParentChild = parent.props && parent.props.childProps\n\n const objectizeStringProperty = propValue => {\n if (isString(propValue)) return { inheritedString: propValue }\n return propValue\n }\n\n if (matchParent && props !== 'match') propsStack.push(matchParent)\n if (matchParentChild) propsStack.push(matchParentChild)\n\n if (isObject(props)) {\n propsStack.push(props)\n }\n\n if (props === 'inherit') {\n if (parent.props) propsStack.push(parent.props)\n } else if (isMatch) {\n const hasArg = props.split(' ')\n let matchParentValue\n // console.log('hasArg', hasArg)\n if (hasArg[1] && parent.props[hasArg[1]]) {\n const secondArgasParentMatchProp = parent.props[hasArg[1]]\n propsStack.push(\n objectizeStringProperty(secondArgasParentMatchProp)\n )\n } else if (matchParent) {\n propsStack.push(\n objectizeStringProperty(matchParent)\n )\n }\n propsStack.push(matchParentValue)\n } else if (props) propsStack.push(props)\n\n if (isArray(element.__extend)) {\n element.__extend.map(extend => {\n if (extend.props) propsStack.push(extend.props)\n return extend.props\n })\n }\n\n return propsStack\n}\n\nconst inheritProps = (element, parent) => {\n element.props = (parent && parent.props) || { update, __element: element }\n}\n\nexport const syncProps = (props, element) => {\n element.props = {}\n const mergedProps = { update, __element: element }\n props.forEach(v => {\n if (v === 'update' || v === '__element') return\n element.props = deepMerge(mergedProps, deepClone(exec(v, element)))\n })\n element.props = mergedProps\n return element.props\n}\n\nconst createProps = function (element, parent, cached) {\n const propsStack = cached || initProps(element, parent)\n\n if (propsStack.length) {\n element.__props = propsStack\n syncProps(propsStack, element)\n element.props.update = update\n } else inheritProps(element, parent)\n\n return element\n}\n\nexport const updateProps = (newProps, element, parent) => {\n let propsStack = element.__props\n\n if (newProps) propsStack = element.__props = [].concat(newProps, propsStack)\n\n if (propsStack) syncProps(propsStack, element)\n else inheritProps(element, parent)\n\n // console.log(cachedProps)\n return element\n}\n\nfunction update (props, options) {\n const element = this.__element\n // element.update({ props })\n element.update({ props }, options)\n}\n\nexport default createProps\n", "'use strict'\n\nimport { overwrite, isFunction, isObject, isString, isNumber, createSnapshotId, merge } from '../utils'\nimport { registry } from './mixins'\nimport { on } from '../event'\nimport { isMethod } from './methods'\nimport { throughUpdatedDefine, throughUpdatedExec } from './iterate'\nimport { appendNode } from './assign'\nimport { createNode } from './node'\nimport { updateProps } from './props'\nimport createState from './state'\nimport { diff } from '@domql/utils'\nimport { window } from '@domql/globals'\n\nconst snapshot = {\n snapshotId: createSnapshotId\n}\n\nconst UPDATE_DEFAULT_OPTIONS = {\n stackChanges: false,\n cleanExec: true,\n preventRecursive: false,\n currentSnapshot: false,\n calleeElement: false\n}\n\nconst update = function (params = {}, options = UPDATE_DEFAULT_OPTIONS) {\n const element = this\n const { define, parent, node } = element\n\n const { currentSnapshot, calleeElement } = options\n if (!calleeElement) {\n element.__currentSnapshot = snapshot.snapshotId()\n }\n const snapshotOnCallee = element.__currentSnapshot || (calleeElement && calleeElement.__currentSnapshot)\n if (snapshotOnCallee && currentSnapshot < snapshotOnCallee) {\n // console.log(calleeElement)\n // console.log(currentSnapshot, snapshotOnCallee, 'cancelling')\n // return\n }\n\n if (isString(params) || isNumber(params)) {\n params = { text: params }\n }\n\n if (isFunction(element.if)) {\n // TODO: move as fragment\n const ifPassed = element.if(element, element.state)\n\n if (ifPassed) delete element.__ifFalsy\n if (element.__ifFalsy && ifPassed) {\n createNode(element)\n appendNode(element.node, element.__ifFragment)\n } else if (element.node && !ifPassed) {\n element.node.remove()\n element.__ifFalsy = true\n }\n }\n\n if (element.__state) {\n const keyInParentState = parent.state[element.__state]\n if (keyInParentState) {\n const newState = element.__stateType === 'string'\n ? createState(element, parent)\n : createState(element, parent)\n const changes = diff(newState.parse(), element.state.parse())\n\n // run `on.stateUpdated`\n if (element.on && isFunction(element.on.initStateUpdated)) {\n const initReturns = on.initStateUpdated(element.on.initStateUpdated, element, element.state, changes)\n if (initReturns === false) return\n }\n\n element.state = newState\n\n if (!options.preventUpdateListener && element.on && isFunction(element.on.stateUpdated)) {\n on.stateUpdated(element.on.stateUpdated, element, element.state, changes)\n }\n }\n } else if (!element.__hasRootState) element.state = (parent && parent.state) || {}\n\n if (!element.__ifFalsy && !options.preventPropsUpdate) updateProps(params.props, element, parent)\n\n if (element.on && isFunction(element.on.initUpdate) && !options.ignoreInitUpdate) {\n const whatinitreturns = on.initUpdate(element.on.initUpdate, element, element.state)\n if (whatinitreturns === false) return\n }\n\n const overwriteChanges = overwrite(element, params, UPDATE_DEFAULT_OPTIONS)\n const execChanges = throughUpdatedExec(element, UPDATE_DEFAULT_OPTIONS)\n const definedChanges = throughUpdatedDefine(element, options)\n\n if (options.stackChanges && element.__stackChanges) {\n const stackChanges = merge(definedChanges, merge(execChanges, overwriteChanges))\n element.__stackChanges.push(stackChanges)\n }\n\n if (element.__ifFalsy) return false\n if (!node) {\n // return createNode(element, options)\n return\n }\n\n for (const param in element) {\n const prop = element[param]\n\n if (\n options.preventDefineUpdate === true ||\n options.preventDefineUpdate === param ||\n (options.preventContentUpdate && param === 'content') ||\n (options.preventStateUpdate && param) === 'state' ||\n isMethod(param) || isObject(registry[param]) || prop === undefined\n ) continue\n if (options.preventStateUpdate === 'once') options.preventStateUpdate = false\n\n const hasDefined = define && define[param]\n const ourParam = registry[param]\n\n const hasOptionsDefine = options.define && options.define[param]\n\n if (ourParam && !hasOptionsDefine) {\n if (isFunction(ourParam)) {\n ourParam(prop, element, node)\n }\n } else if (prop && isObject(prop) && !hasDefined && !hasOptionsDefine) {\n if (!options.preventRecursive) {\n const childUpdateCall = () => update.call(prop, params[prop], {\n ...options,\n currentSnapshot: snapshotOnCallee,\n calleeElement: element\n })\n if (element.props.lazyLoad || options.lazyLoad) {\n window.requestAnimationFrame(() => childUpdateCall())\n } else childUpdateCall()\n }\n }\n }\n\n if (!options.preventUpdate && element.on && isFunction(element.on.update)) {\n on.update(element.on.update, element, element.state)\n }\n}\n\nexport default update\n", "'use strict'\n\nimport root from './root'\nimport createNode from './node'\nimport { appendNode, assignNode } from './assign'\nimport { applyExtend } from './extend'\nimport nodes from './nodes'\nimport set, { removeContentElement } from './set'\nimport createState from './state'\nimport createProps from './props'\nimport update from './update'\nimport { on } from '../event'\nimport { assignClass } from './mixins/classList'\nimport { isObject, isFunction, isNumber, isString, createID, isNode, exec } from '../utils'\nimport { remove, lookup, setProps, log, keys, parse, parseDeep, spotByPath, nextElement, previousElement, isMethod } from './methods'\nimport cacheNode from './cache'\nimport { registry } from './mixins'\nimport { throughInitialExec } from './iterate'\nimport OPTIONS from './options'\n// import { overwrite, clone, fillTheRest } from '../utils'\n\nconst ENV = process.env.NODE_ENV\n\n/**\n * Creating a domQL element using passed parameters\n */\nconst create = (element, parent, key, options = OPTIONS.create || {}) => {\n if (options && !OPTIONS.create) OPTIONS.create = options\n\n // if ELEMENT is not given\n if (element === undefined) {\n if (ENV === 'test' || ENV === 'development') { console.warn(key, 'element is undefined in', parent && parent.path) }\n element = {}\n }\n if (element === null) return\n if (element === true) element = { text: true }\n\n // if element is extend\n if (element.__hash) {\n element = { extend: element }\n }\n\n // if PARENT is not given\n if (!parent) parent = root\n if (isNode(parent)) parent = root[`${key}_parent`] = { key: ':root', node: parent }\n\n // if element is STRING\n if (isString(element) || isNumber(element)) {\n const extendTag = element.extend && element.extend.tag\n const childExtendTag = parent.childExtend && parent.childExtend.tag\n const isKeyValidHTMLTag = ((nodes.body.indexOf(key) > -1) && key)\n element = {\n text: element,\n tag: extendTag || childExtendTag || isKeyValidHTMLTag || 'string'\n }\n }\n\n // define KEY\n const assignedKey = (element.key || key || createID()).toString()\n\n const { extend, props, state, childExtend, childProps } = element\n\n if (isKeyComponent(assignedKey)) {\n const hasComponentAttrs = extend || childExtend || props || state || element.on\n const componentKey = assignedKey.split('_')[0]\n if (!hasComponentAttrs || childProps) {\n parent[assignedKey] = element = {\n extend: componentKey || assignedKey,\n props: { ...element }\n }\n } else if (!extend || extend === true) {\n parent[assignedKey] = element = {\n ...element,\n extend: componentKey || assignedKey\n }\n }\n }\n\n // Responsive rendering\n // TODO: move as define plugin\n if (assignedKey.slice(0, 1) === '@') {\n if (props) {\n props.display = 'none'\n if (props[assignedKey]) props[assignedKey].display = props.display\n else props[assignedKey] = { display: props.display || 'block' }\n } else {\n parent[assignedKey] = element = {\n ...element,\n props: {\n display: 'none',\n [assignedKey]: { display: 'block' }\n }\n }\n }\n }\n\n // assign context\n if (options.context && !root.context) root.context = options.context\n element.context = root.context\n const { context } = element\n\n if (context.components) {\n const { components } = context\n const { extend } = element\n const execExtend = exec(extend, element)\n if (isString(execExtend)) {\n if (components[execExtend]) element.extend = components[execExtend]\n else {\n if (ENV === 'test' || ENV === 'development') {\n console.warn(execExtend, 'is not in library', components, element)\n console.warn('replacing with ', {})\n }\n element.extend = {}\n }\n }\n }\n\n // Only resolve extends, skip everything else\n if (options.onlyResolveExtends) {\n applyExtend(element, parent, options)\n\n if (!element.__exec) element.__exec = {}\n if (!element.__attr) element.__attr = {}\n if (!element.__ifFalsy) createProps(element, parent)\n element.key = assignedKey\n\n throughInitialExec(element)\n\n for (const param in element) {\n const prop = element[param]\n if (isMethod(param) || isObject(registry[param]) || prop === undefined) continue\n\n const hasDefined = element.define && element.define[param]\n const ourParam = registry[param]\n const hasOptionsDefine = options.define && options.define[param]\n if (ourParam && !hasOptionsDefine) {\n continue // if (isFunction(ourParam)) ourParam(prop, element, element.node, options)\n } else if (element[param] && !hasDefined && !hasOptionsDefine) {\n create(exec(prop, element), element, param, options)\n }\n }\n\n // createNode(element, options)\n delete element.parent\n delete element.__element\n delete element.__props\n delete element.props.__element\n delete element.props.update\n delete element.update\n return element\n }\n\n // create EXTEND inheritance\n applyExtend(element, parent, options)\n\n if (Object.keys(options).length) {\n registry.defaultOptions = options\n if (options.ignoreChildExtend) delete options.ignoreChildExtend\n }\n\n // create and assign a KEY\n element.key = assignedKey\n\n // enable TRANSFORM in data\n if (!element.transform) element.transform = {}\n\n // enable CACHING\n if (!element.__cached) element.__cached = {}\n\n // enable EXEC\n if (!element.__exec) element.__exec = {}\n\n // enable CLASS CACHING\n if (!element.__class) element.__class = {}\n if (!element.__classNames) element.__classNames = {}\n\n // enable CLASS CACHING\n if (!element.__attr) element.__attr = {}\n\n // enable CHANGES storing\n if (!element.__changes) element.__changes = []\n\n // enable CHANGES storing\n if (!element.__children) element.__children = []\n\n // Add _root element property\n const hasRoot = parent && parent.key === ':root'\n if (!element.__root) element.__root = hasRoot ? element : parent.__root\n\n // set the PATH array\n if (ENV === 'test' || ENV === 'development') {\n if (!parent.path) parent.path = []\n element.path = parent.path.concat(assignedKey)\n }\n\n // assign METHODS\n element.set = set\n element.update = update\n element.remove = remove\n element.removeContent = removeContentElement\n element.setProps = setProps\n element.lookup = lookup\n element.spotByPath = spotByPath\n element.parse = parse\n element.parseDeep = parseDeep\n element.keys = keys\n element.nextElement = nextElement\n element.previousElement = previousElement\n if (ENV === 'test' || ENV === 'development') {\n element.log = log\n }\n\n // enable STATE\n element.state = createState(element, parent)\n\n // don't render IF in condition\n if (isFunction(element.if)) {\n // TODO: move as fragment\n if (!element.if(element, element.state)) {\n const ifFragment = cacheNode({ tag: 'fragment' })\n element.__ifFragment = appendNode(ifFragment, parent.node)\n element.__ifFalsy = true\n }\n }\n\n // if it already HAS a NODE\n if (element.node && !element.__ifFalsy) { // TODO: check on if\n return assignNode(element, parent, assignedKey)\n }\n\n // apply props settings\n if (!element.__ifFalsy) createProps(element, parent)\n\n // run `on.init`\n if (element.on && isFunction(element.on.init)) {\n on.init(element.on.init, element, element.state)\n }\n\n // run `on.beforeClassAssign`\n if (element.on && isFunction(element.on.beforeClassAssign)) {\n on.beforeClassAssign(element.on.beforeClassAssign, element, element.state)\n }\n\n // generate a CLASS name\n assignClass(element)\n\n // CREATE a real NODE\n createNode(element, options)\n\n if (element.__ifFalsy) return element\n\n // assign NODE\n assignNode(element, parent, key)\n\n // run `on.render`\n if (element.on && isFunction(element.on.render)) {\n on.render(element.on.render, element, element.state)\n }\n\n if (parent.__children) parent.__children.push(element.key)\n // console.groupEnd(element.key)\n\n return element\n}\n\nexport const isKeyComponent = (key) => {\n const isFirstKeyString = isString(key)\n if (!isFirstKeyString) return\n\n const firstCharKey = key.slice(0, 1)\n\n return /^[A-Z]*$/.test(firstCharKey)\n}\n\nexport default create\n", "'use strict'\n\nimport { registry } from './mixins'\nimport { report } from '../utils'\n\nexport default (params, options = {}) => {\n const { overwrite } = options\n for (const param in params) {\n if (registry[param] && !overwrite) {\n report('OverwriteToBuiltin', param)\n } else registry[param] = params[param]\n }\n}\n", "'use strict'\n\nimport create from './create'\nimport { assignNode } from './assign'\n\nconst parse = (element) => {\n const virtualTree = {\n node: document.createElement('div')\n }\n\n if (element && element.node) assignNode(element, virtualTree)\n else create(element, virtualTree)\n\n return virtualTree.node.innerHTML\n}\n\nexport default parse\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACIA,IAAM,SAAS;AACf,IAAMA,YAAW,OAAO;;;ACHxB,IAAO,gBAAQ;AAAA,EACb,MAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF;AAAA,EAEA,MAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,MAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAGA;AAAA,IACA;AAAA,EACF;AACF;;;AC1IO,IAAM,SAAS;AAAA,EACpB,IAAI;AAAA,IACF,oBAAoB;AAAA,MAClB,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,oBAAoB;AAAA,MAClB,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,mBAAmB;AAAA,MACjB,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,gCAAgC;AAAA,MAC9B,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,eAAe;AAAA,MACb,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,uBAAuB;AAAA,MACrB,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,gBAAgB;AAAA,MACd,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,mBAAmB;AAAA,MACjB,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,EACF;AACF;AAEO,IAAM,SAAS,CAAC,KAAK,KAAK,YAAY;AAC3C,QAAM,cAAc;AACpB,MAAI;AACJ,MAAI,OAAO,OAAO,QAAQ;AAAU,aAAS,OAAO,aAAa;AAEjE,SAAO,IAAI;AAAA,IACT,IAAI,UAAU;AAAA;AAAA;AAAA,IACd,GAAG,OAAO;AAAA,IACV,UAAU;AAAA;AAAA,EAAO,YAAY;AAAA,EAC/B;AACF;;;AClCO,IAAM,kBAAkB,SAAO,cAAM,KAAK,QAAQ,GAAG;AAErD,IAAM,WAAW,SAAO;AAC7B,MAAI,QAAQ;AAAM,WAAO;AACzB,SAAQ,OAAO,QAAQ,YAAc,IAAI,gBAAgB;AAC3D;AAEO,IAAM,WAAW,SAAO,OAAO,QAAQ;AAEvC,IAAM,WAAW,SAAO,OAAO,QAAQ;AAEvC,IAAM,aAAa,SAAO,OAAO,QAAQ;AAEzC,IAAM,UAAU,SAAO,MAAM,QAAQ,GAAG;AAExC,IAAM,eAAe,SAAO;AACjC,MAAI,QAAQ;AAAM,WAAO;AAEzB,SAAQ,OAAO,QAAQ;AACzB;AAEO,IAAM,SAAS,SAAO;AAC3B,SACE,OAAO,OAAO,SAAS,WACnB,eAAe,OAAO,OACtB,OAAO,OAAO,QAAQ,YAAY,OAAO,IAAI,aAAa,YAAY,OAAO,IAAI,aAAa;AAEtG;AAoBO,IAAM,OAAO,CAAC,OAAO,SAAS,UAAU;AAC7C,MAAI,WAAW,KAAK;AAAG,WAAO,MAAM,SAAS,SAAS,QAAQ,KAAK;AACnE,SAAO;AACT;AAEO,IAAM,MAAM,CAAC,KAAK,WAAW,YAAY;AAC9C,aAAW,KAAK,WAAW;AACzB,QAAI,KAAK,KAAK,UAAU,IAAI,OAAO;AAAA,EACrC;AACF;AAEO,IAAM,QAAQ,CAAC,SAAS,QAAQ;AACrC,aAAW,KAAK,KAAK;AACnB,UAAM,cAAc,QAAQ;AAC5B,UAAM,UAAU,IAAI;AACpB,QAAI,gBAAgB,QAAW;AAC7B,cAAQ,KAAK;AAAA,IACf;AAAA,EACF;AACA,SAAO;AACT;AAEO,IAAM,YAAY,CAAC,SAAS,WAAW;AAE5C,aAAW,KAAK,QAAQ;AACtB,UAAM,cAAc,QAAQ;AAC5B,UAAM,aAAa,OAAO;AAE1B,QAAI,MAAM,YAAY,MAAM,WAAW,MAAM;AAAS;AACtD,QAAI,gBAAgB,QAAW;AAC7B,cAAQ,KAAK;AAAA,IACf,WAAW,aAAa,WAAW,KAAK,SAAS,UAAU,GAAG;AAC5D,gBAAU,aAAa,UAAU;AAAA,IACnC;AAAA,EACF;AAEA,SAAO;AACT;AAcO,IAAM,YAAY,CAAC,KAAK,YAAY,CAAC,UAAU,QAAQ,aAAa,SAAS,UAAU,SAAS,MAAM;AAC3G,QAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;AAC/B,aAAW,QAAQ,KAAK;AACtB,QAAI,UAAU,QAAQ,IAAI,IAAI;AAAI;AAClC,QAAI,UAAU,IAAI;AAClB,QAAI,SAAS,YAAY,QAAQ,OAAO,GAAG;AACzC,gBAAU,WAAW,OAAO;AAAA,IAC9B;AACA,QAAI,aAAa,OAAO,GAAG;AACzB,QAAE,QAAQ,UAAU,OAAO;AAAA,IAC7B;AAAO,QAAE,QAAQ;AAAA,EACnB;AACA,SAAO;AACT;AAKO,IAAM,cAAc,CAAC,OAAO,YAAY;AAC7C,MAAI,UAAU;AAAS,WAAO;AAC9B,MAAI,CAAC,SAAS,CAAC;AAAS,WAAO;AAC/B,aAAW,QAAQ,OAAO;AACxB,UAAM,YAAY,MAAM;AACxB,UAAM,cAAc,QAAQ;AAC5B,QAAI,aAAa,SAAS,GAAG;AAC3B,YAAM,UAAU,YAAY,WAAW,WAAW;AAClD,UAAI,CAAC;AAAS,eAAO;AAAA,IACvB,OAAO;AACL,YAAM,UAAU,cAAc;AAC9B,UAAI,CAAC;AAAS,eAAO;AAAA,IACvB;AAAA,EACF;AACA,SAAO;AACT;AAKO,IAAM,YAAY,CAAC,SAAS,QAAQ,YAAY;AACrD,QAAM,UAAU,CAAC;AAEjB,aAAW,KAAK,QAAQ;AACtB,QAAI,MAAM,WAAW,MAAM;AAAS;AAEpC,UAAM,cAAc,QAAQ;AAC5B,UAAM,aAAa,OAAO;AAE1B,QAAI,eAAe,QAAW;AAC5B,cAAQ,SAAS,KAAK,QAAQ,KAAK;AACnC,cAAQ,KAAK;AAAA,IACf;AAEA,QAAI,QAAQ;AAAW,aAAO,QAAQ,OAAO;AAAA,EAC/C;AAEA,SAAO;AACT;AAKO,IAAM,gBAAgB,CAAC,KAAK,QAAQ,YAAY,CAAC,QAAQ,QAAQ,MAAM;AAC5E,aAAW,KAAK,QAAQ;AACtB,QAAI,UAAU,QAAQ,CAAC,IAAI;AAAI;AAC/B,UAAM,UAAU,IAAI;AACpB,UAAM,aAAa,OAAO;AAC1B,QAAI,aAAa,OAAO,KAAK,aAAa,UAAU,GAAG;AACrD,oBAAc,SAAS,UAAU;AAAA,IACnC,WAAW,eAAe,QAAW;AACnC,UAAI,KAAK;AAAA,IACX;AAAA,EACF;AACA,SAAO;AACT;AAaO,IAAM,aAAa,CAAC,QAAQ;AACjC,SAAO,IAAI,OAAO,CAAC,GAAG,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5D;;;ACnNO,IAAM,WAAY,WAAY;AACnC,MAAI,QAAQ;AAEZ,WAAS,QAAS;AAChB;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AACT,EAAG;AAEI,IAAM,mBAAmB;;;ACNzB,IAAMC,YAAW,SAAO;AAC7B,MAAI,QAAQ;AAAM,WAAO;AACzB,SAAQ,OAAO,QAAQ,YAAc,IAAI,gBAAgB;AAC3D;AAEO,IAAMC,YAAW,SAAO,OAAO,QAAQ;AAEvC,IAAMC,YAAW,SAAO,OAAO,QAAQ;AAEvC,IAAMC,cAAa,SAAO,OAAO,QAAQ;AAEzC,IAAM,YAAY,SAAO,QAAQ,QAAQ,QAAQ;AAEjD,IAAM,SAAS,SAAO,QAAQ;AAE9B,IAAMC,WAAU,SAAO,MAAM,QAAQ,GAAG;AAExC,IAAMC,gBAAe,SAAO;AACjC,MAAI,QAAQ;AAAM,WAAO;AAEzB,SAAQ,OAAO,QAAQ;AACzB;AAEO,IAAMC,UAAS,SAAO;AAC3B,SACE,OAAO,OAAO,SAAS,WACnB,eAAe,OAAO,OACtB,OAAO,OAAO,QAAQ,YAAY,OAAO,IAAI,aAAa,YAAY,OAAO,IAAI,aAAa;AAEtG;AAEO,IAAM,gBAAgB,SAAO;AAClC,SACE,OAAO,OAAO,gBAAgB,WAC1B,eAAe,OAAO,cACtB,OAAO,OAAO,QAAQ,YAAY,QAAQ,QAAQ,IAAI,aAAa,KAAK,OAAO,IAAI,aAAa;AAExG;AAEO,IAAM,YAAY,SAAO;AAC9B,SAAON,UAAS,GAAG,KACjBK,cAAa,GAAG,KAChBJ,UAAS,GAAG,KACZC,UAAS,GAAG,KACZC,YAAW,GAAG,KACdC,SAAQ,GAAG,KACXC,cAAa,GAAG,KAChB,UAAU,GAAG,KACb,OAAO,GAAG;AACd;AAEO,IAAM,cAAc,SAAO;AAChC,SAAO,QAAQ;AACjB;AAEO,IAAM,QAAQ;AAAA,EACnB,SAAS;AAAA,EACT,OAAOD;AAAA,EACP,QAAQJ;AAAA,EACR,QAAQC;AAAA,EACR,QAAQC;AAAA,EACR,MAAM;AAAA,EACN,UAAUC;AAAA,EACV,YAAYE;AAAA,EACZ,MAAMC;AAAA,EACN,aAAa;AAAA,EACb,SAAS;AACX;AAEO,IAAM,KAAK,CAAC,QAAQ;AACzB,SAAO,IAAI,SAAS;AAClB,WAAO,KAAK,IAAI,SAAO,MAAM,KAAK,GAAG,CAAC,EAAE,OAAO,OAAK,CAAC,EAAE,SAAS;AAAA,EAClE;AACF;AAEO,IAAM,QAAQ,CAAC,QAAQ;AAC5B,SAAO,IAAI,SAAS;AAClB,WAAO,KAAK,IAAI,SAAO,MAAM,KAAK,GAAG,CAAC,EAAE,OAAO,OAAK,CAAC,EAAE,WAAW;AAAA,EACpE;AACF;;;ACUO,IAAM,OAAO,CAAC,KAAK,UAAU,UAAU;AAC5C,QAAM,UAAU,SAAS,CAAC;AAC1B,aAAW,KAAK,KAAK;AACnB,QAAI,MAAM;AAAO;AACjB,UAAM,eAAe,SAAS;AAC9B,UAAM,UAAU,IAAI;AACpB,QAAIC,cAAa,YAAY,KAAKA,cAAa,OAAO,GAAG;AACvD,cAAQ,KAAK,CAAC;AACd,WAAK,cAAc,SAAS,QAAQ,EAAE;AAAA,IACxC,WAAW,YAAY,QAAW;AAChC,cAAQ,KAAK;AAAA,IACf;AAAA,EACF;AACA,SAAO;AACT;;;AC1GO,IAAMC,YAAY,aAAc;AACrC,MAAI,QAAQ;AACZ,SAAO,QAAQ,QAAQ,GAAG;AACxB,UAAM;AAAA,EACR;AACF,EAAE;;;ACLK,IAAM,eAAe,MAAM,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,CAAC;AAGjE,IAAM,sBAAsB,CAAC;AAG7B,IAAM,kBAAkB,YAAU;AACvC,SAAO,oBAAoB,OAAO;AACpC;AAEO,IAAM,kBAAkB,CAAC,QAAQ,UAAU;AAChD,QAAM,OAAO,aAAa;AAC1B,SAAO,SAAS;AAChB,sBAAoB,QAAQ;AAC5B,SAAO;AACT;AAEO,IAAM,yBAAyB,CAAC,QAAQ,UAAU;AACvD,MAAI,OAAO,QAAQ;AAAE,WAAO,MAAM,OAAO,gBAAgB,MAAM,CAAC;AAAA,EAAE;AAClE,SAAO,gBAAgB,QAAQ,KAAK;AACtC;AAGO,IAAM,qBAAqB,CAAC,QAAQ,UAAU;AACnD,SAAO,QAAQ,UAAQ,cAAc,MAAM,KAAK,CAAC;AACjD,SAAO;AACT;AAEO,IAAM,aAAa,CAAC,QAAQ,UAAU;AAC3C,QAAM,uBAAuB,OAAO;AACpC,MAAI,sBAAsB;AACxB,kBAAc,sBAAsB,KAAK;AAAA,EAC3C;AACA,SAAO;AACT;AAEO,IAAM,gBAAgB,CAAC,QAAQ,UAAU;AAC9C,MAAI,CAAC;AAAQ,WAAO;AACpB,MAAIC,SAAQ,MAAM;AAAG,WAAO,mBAAmB,QAAQ,KAAK;AAC5D,QAAM,KAAK,MAAM;AACjB,MAAI,OAAO;AAAQ,eAAW,QAAQ,KAAK;AAC3C,SAAO;AACT;AAGO,IAAM,kBAAkB,SAAO;AACpC,QAAM,IAAI,CAAC;AACX,aAAW,QAAQ,KAAK;AACtB,QAAI,CAAC,UAAU,QAAQ,aAAa,UAAU,OAAO,EAAE,QAAQ,IAAI,IAAI;AAAI;AAC3E,UAAM,UAAU,IAAI;AACpB,QAAIC,UAAS,OAAO,GAAG;AACrB,QAAE,QAAQ,gBAAgB,OAAO;AAAA,IACnC,WAAWD,SAAQ,OAAO,GAAG;AAC3B,QAAE,QAAQ,QAAQ,IAAI,OAAK,CAAC;AAAA,IAC9B;AAAO,QAAE,QAAQ;AAAA,EACnB;AACA,SAAO;AACT;AAEO,IAAM,kBAAkB,CAAC,SAAS,WAAW;AAClD,aAAW,KAAK,QAAQ;AACtB,QAAI,CAAC,UAAU,QAAQ,aAAa,UAAU,OAAO,EAAE,QAAQ,CAAC,IAAI;AAAI;AACxE,UAAM,cAAc,QAAQ;AAC5B,UAAM,aAAa,OAAO;AAC1B,QAAI,gBAAgB,QAAW;AAC7B,cAAQ,KAAK;AAAA,IACf,WAAWC,UAAS,WAAW,KAAKA,UAAS,UAAU,GAAG;AACxD,sBAAgB,aAAa,UAAU;AAAA,IACzC,WAAWD,SAAQ,WAAW,KAAKA,SAAQ,UAAU,GAAG;AACtD,cAAQ,KAAK,YAAY,OAAO,UAAU;AAAA,IAC5C,WAAWA,SAAQ,WAAW,KAAKC,UAAS,UAAU,GAAG;AACvD,YAAM,MAAM,gBAAgB,CAAC,GAAG,WAAW;AAC3C,cAAQ,KAAK,gBAAgB,KAAK,UAAU;AAAA,IAC9C,WAAW,gBAAgB,UAAaC,YAAW,UAAU,GAAG;AAC9D,cAAQ,KAAK;AAAA,IACf;AAAA,EACF;AACA,SAAO;AACT;AAEO,IAAM,2BAA2B,WAAS;AAC/C,SAAO,MAAM,OAAO,CAAC,GAAG,MAAM;AAC5B,WAAO,gBAAgB,GAAG,gBAAgB,CAAC,CAAC;AAAA,EAC9C,GAAG,CAAC,CAAC;AACP;AAGO,IAAM,cAAc,CAAC,aAAa,qBAAqB;AAC5D,SAAO,CAAC,EACL,OAAO,YAAY,MAAM,GAAG,CAAC,CAAC,EAC9B,OAAO,iBAAiB,MAAM,GAAG,CAAC,CAAC,EACnC,OAAO,YAAY,MAAM,CAAC,CAAC,EAC3B,OAAO,iBAAiB,MAAM,CAAC,CAAC;AACrC;AAGO,IAAM,iBAAiB,YAAU;AACtC,MAAI,CAAC;AAAQ,WAAO,CAAC;AACrB,MAAI,OAAO;AAAQ,WAAO,gBAAgB,MAAM,KAAK,CAAC;AACtD,QAAM,QAAQ,cAAc,QAAQ,CAAC,CAAC;AACtC,SAAO,uBAAuB,QAAQ,KAAK;AAC7C;;;ACpGA,IAAM,OAAO;AAAA,EACX,KAAK;AAAA,EACL,MAAMC,YAAWA,UAAS,OAAO,OAAO,sBAAsBA,SAAQ;AACxE;AAEA,IAAO,eAAQ;;;ACNf,IAAO,eAAQ;;;ACJf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,oBAAoB,CAAC,OAAO,SAAS,UAAU;AAC1D,SAAO,MAAM,SAAS,KAAK;AAC7B;AAEO,IAAM,OAAO,CAAC,OAAO,SAAS,UAAU;AAC7C,SAAO,MAAM,SAAS,KAAK;AAC7B;AAEO,IAAM,SAAS,CAAC,OAAO,SAAS,UAAU;AAC/C,SAAO,MAAM,SAAS,KAAK;AAC7B;AAEO,IAAM,aAAa,CAAC,OAAO,SAAS,UAAU;AACnD,SAAO,MAAM,SAAS,KAAK;AAC7B;AAEO,IAAM,aAAa,CAAC,OAAO,SAAS,UAAU;AACnD,SAAO,MAAM,SAAS,KAAK;AAC7B;AAEO,IAAM,YAAY,CAAC,OAAO,SAAS,UAAU;AAClD,SAAO,MAAM,SAAS,KAAK;AAC7B;AAEO,IAAM,eAAe,CAAC,OAAO,SAAS,UAAU;AACrD,SAAO,MAAM,SAAS,KAAK;AAC7B;AAEO,IAAM,mBAAmB,CAAC,OAAO,SAAS,OAAO,YAAY;AAClE,SAAO,MAAM,SAAS,OAAO,OAAO;AACtC;AAEO,IAAM,eAAe,CAAC,OAAO,SAAS,OAAO,YAAY;AAC9D,SAAO,MAAM,SAAS,OAAO,OAAO;AACtC;AAEO,IAAM,SAAS,CAAC,OAAO,SAAS,UAAU;AAC/C,SAAO,MAAM,SAAS,KAAK;AAC7B;;;ACxCA;AAAA;AAAA,gBAAAC;AAAA;AAKO,IAAMC,UAAS,CAAC,YAAY;AACjC,QAAM,MAAM,QAAQ,OAAO;AAC3B,QAAM,UAAU,cAAM,KAAK,QAAQ,GAAG,IAAI;AAC1C,SAAO,WAAW,OAAO,gBAAgB;AAC3C;;;ACHA,IAAM,iBAAiB,CAAC;AAExB,IAAM,aAAa,CAAC,YAAY;AAC9B,QAAM,EAAE,IAAI,IAAI;AAChB,MAAI,KAAK;AACP,QAAI,QAAQ;AAAU,aAAOC,UAAS,eAAe,QAAQ,IAAI;AAAA,aACxD,QAAQ,YAAY;AAC3B,aAAOA,UAAS,uBAAuB;AAAA,IACzC,WAAW,QAAQ,SAAS,QAAQ,QAAQ;AAC1C,aAAOA,UAAS,gBAAgB,8BAA8B,GAAG;AAAA,IACnE;AAAO,aAAOA,UAAS,cAAc,GAAG;AAAA,EAC1C,OAAO;AACL,WAAOA,UAAS,cAAc,KAAK;AAAA,EACrC;AACF;AAEA,IAAM,YAAY,aAAW;AAC3B,MAAI,EAAE,KAAK,IAAI,IAAI;AACnB,QAAM,KAAK,KAAK,OAAO;AAEvB,MAAI,QAAQ;AAAM,UAAM;AAExB,MAAI,SAAS,GAAG,GAAG;AACjB,UAAM,YAAY,gBAAgB,GAAG,IAAI;AACzC,QAAI;AAAW,aAAO;AAAA,EACxB,OAAO;AACL,UAAM,YAAY,gBAAgB,GAAG,IAAI;AACzC,QAAI;AAAW,aAAO;AAAA,EACxB;AAEA,SAAO;AACT;AAEA,IAAO,gBAAQ,CAAC,YAAY;AAC1B,QAAM,MAAM,QAAQ,MAAM,UAAU,OAAO;AAE3C,MAAI,CAAC,YAAI,OAAO,OAAO,GAAG;AACxB,WAAO,OAAO,gBAAgB;AAAA,EAChC;AAEA,MAAI,YAAY,eAAe;AAC/B,MAAI,CAAC;AAAW,gBAAY,eAAe,OAAO,WAAW,OAAO;AAEpE,QAAM,aAAa,UAAU,UAAU,IAAI;AAC3C,MAAI,QAAQ;AAAU,eAAW,YAAY,QAAQ;AACrD,SAAO;AACT;;;AC5CA,IAAO,eAAQ,CAAC,QAAQ,SAAS,SAAS;AACxC,QAAM,EAAE,OAAO,IAAI;AACnB,MAAI,MAAM,QAAQ;AAAG,WAAO,mBAAmB,MAAM;AACrD,MAAI,QAAQ;AACV,eAAW,QAAQ,QAAQ;AACzB,YAAM,MAAM,KAAK,OAAO,OAAO,OAAO;AAEtC,UAAI,OAAO,KAAK;AAAc,aAAK,aAAa,MAAM,GAAG;AAAA,eAChD,KAAK;AAAiB,aAAK,gBAAgB,IAAI;AACxD,aAAO,QAAQ;AAAA,IACjB;AAAA,EACF;AACA,UAAQ,SAAS,QAAQ,MAAM;AACjC;;;ACjBO,IAAM,cAAc,CAAC,YAAY;AACtC,QAAM,EAAE,IAAI,IAAI;AAChB,MAAI,QAAQ,UAAU;AAAM,YAAQ,QAAQ;AAAA,WACnC,CAAC,QAAQ,SAAS,OAAO,QAAQ,YAAY,IAAI,OAAO,CAAC,MAAM,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK;AACpG,YAAQ,QAAQ,IAAI,MAAM,CAAC;AAAA,EAC7B;AACF;AAGO,IAAM,WAAW,CAAC,KAAK,YAAY;AACxC,MAAI,YAAY;AAChB,aAAW,QAAQ,KAAK;AACtB,UAAM,QAAQ,IAAI;AAClB,QAAI,OAAO,UAAU,aAAa;AAAO,mBAAa,IAAI;AAAA,aACjD,OAAO,UAAU;AAAU,mBAAa,IAAI;AAAA,aAC5C,OAAO,UAAU,YAAY;AACpC,mBAAa,IAAI,KAAK,OAAO,OAAO;AAAA,IACtC;AAAA,EACF;AACA,SAAO;AACT;AAEA,IAAO,oBAAQ,CAAC,QAAQ,SAAS,MAAM,SAAS;AAC9C,MAAI,CAAC;AAAQ;AACb,QAAM,EAAE,KAAK,YAAY,IAAI;AAC7B,MAAI,WAAW;AAAM,aAAS,QAAQ,QAAQ,EAAE,IAAI;AACpD,MAAI,SAAS,MAAM;AAAG,aAAS,QAAQ,QAAQ,EAAE,SAAS,OAAO;AACjE,MAAI,SAAS,MAAM;AAAG,aAAS,SAAS,QAAQ,OAAO;AAEvD,QAAM,YAAY,OAAO,QAAQ,QAAQ,GAAG,EAAE,KAAK;AACnD,OAAK,YAAY;AAGjB,SAAO;AACT;;;ACpCA,IAAO,kBAAQ,CAAC;;;ACKT,IAAM,uBAAuB,SAAU,IAAI;AAChD,QAAM,UAAU,MAAM;AACtB,MAAI,QAAQ,SAAS;AACnB,QAAI,QAAQ,QAAQ,MAAM;AACxB,UAAI,QAAQ,QAAQ,QAAQ;AAAY,gBAAQ,KAAK,YAAY;AAAA;AAC5D,gBAAQ,KAAK,YAAY,QAAQ,QAAQ,IAAI;AAAA,IACpD;AAEA,UAAM,EAAE,SAAS,IAAI;AACrB,QAAI,YAAY,SAAS,SAAS;AAChC,UAAI,SAAS,QAAQ,QAAQ;AAAY,iBAAS,QAAQ,OAAO,KAAK,YAAY;AAAA,eACzE,SAAS,WAAW,WAAW,SAAS,QAAQ,MAAM;AAAG,iBAAS,QAAQ,OAAO;AAAA,IAC5F;AAEA,WAAO,QAAQ;AAAA,EACjB;AACF;AAEA,IAAM,MAAM,SAAU,QAAQ,SAAS,IAAI;AACzC,QAAM,UAAU,MAAM;AAEtB,QAAM,UAAU,YAAY,QAAQ,QAAQ,OAAO;AAEnD,MAAI,WAAW,QAAQ,QAAQ;AAAU,WAAO;AAChD,uBAAqB,OAAO;AAE5B,MAAI,QAAQ;AACV,UAAM,EAAE,YAAY,IAAI;AACxB,QAAI,CAAC,eAAe,QAAQ;AAAa,aAAO,cAAc,QAAQ;AACtE,mBAAO,QAAQ,SAAS,WAAW;AAAA,MACjC,mBAAmB;AAAA,MACnB,GAAG,iBAAS;AAAA,MACZ,GAAG,gBAAQ;AAAA,IACb,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAEA,IAAO,cAAQ;;;ACrCf,IAAO,kBAAQ,CAAC,OAAO,SAAS,MAAM,YAAY;AAChD,MAAI,SAAS,SAAS;AACpB,QAAI,MAAM,WAAW,QAAQ,QAAQ,UAAU,QAAQ,QAAQ,QAAQ;AACrE,YAAM,EAAE,OAAO,IAAI;AACnB,cAAQ,QAAQ,OAAO,KAAK;AAAA,IAC9B,OAAO;AACL,kBAAI,KAAK,SAAS,OAAO,OAAO;AAAA,IAClC;AAAA,EACF;AACF;;;ACTA,IAAO,eAAQ,CAAC,QAAQ,SAAS,SAAS;AACxC,MAAI,UAAU,OAAO,YAAY;AAC/B,QAAI,CAAC,SAAS,MAAM;AAAG,aAAO,mBAAmB,MAAM;AAGvD,eAAW,WAAW,QAAQ;AAC5B,UAAI,YAAY,cAAc;AAC5B,aAAK,QAAQ,WAAW,KAAK,OAAO,UAAU,OAAO;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AACF;;;ACZA,IAAO,eAAQ,CAAC,OAAO,SAAS,SAAS;AACvC,QAAM,OAAO,KAAK,OAAO,OAAO;AAChC,MAAI,SAAS,QAAQ,QAAQ;AAG3B,QAAI,KAAK,aAAa;AAAO,WAAK,cAAc;AAAA;AAC3C,WAAK,YAAY;AAEtB,YAAQ,SAAS;AAAA,EACnB;AACF;;;ACVA,IAAO,gBAAQ,CAAC,QAAQ,SAAS,SAAS;AACxC,MAAI,QAAQ;AACV,QAAI,SAAS,MAAM;AAAG,UAAI,KAAK,OAAO,QAAQ,OAAO;AAAA;AAChD,aAAO,qBAAqB,MAAM;AAAA,EACzC;AACF;;;ACSA,IAAO,eAAQ,CAAC,OAAO,SAAS,SAAS;AACvC,QAAM,OAAO,KAAK,OAAO,OAAO;AAChC,MAAI,QAAQ,QAAQ,UAAU;AAC5B,QAAI,QAAQ,SAAS;AAAM;AAC3B,SAAK,YAAY;AAAA,EACnB,WACS,UAAU,UAAa,UAAU,MAAM;AAC9C,QAAI,QAAQ,QAAQ;AAClB,UAAI,QAAQ,OAAO,SAAS;AAAM;AAClC,cAAQ,OAAO,OAAO;AACtB,UAAI,QAAQ,OAAO;AAAM,gBAAQ,OAAO,KAAK,YAAY;AAAA,IAC3D;AAAO,qBAAO,EAAE,KAAK,UAAU,MAAM,KAAK,GAAG,SAAS,QAAQ;AAAA,EAChE;AACF;;;AC7BO,IAAM,sBAAsB;AAAA,EACjC;AAAA,EAAU;AAAA,EAAS;AAAA,EAAS;AAAA,EAAU;AAAA,EAAU;AAAA,EAAa;AAAA,EAAa;AAAA,EAAS;AAAA,EACnF;AAAA,EAAgB;AAAA,EAAmB;AAAA,EAAkB;AAAA,EACrD;AAAA,EAAsB;AACxB;AAEO,IAAM,aAAa,WAAY;AACpC,QAAM,QAAQ;AACd,QAAMC,cAAa,CAAC;AACpB,aAAW,SAAS,OAAO;AACzB,QAAI,CAAC,oBAAoB,SAAS,KAAK,GAAG;AACxC,MAAAA,YAAW,SAAS,MAAM;AAAA,IAC5B;AAAA,EACF;AACA,SAAOA;AACT;AAEO,IAAM,aAAa,WAAY;AACpC,QAAM,QAAQ;AACd,aAAW,SAAS,OAAO;AACzB,QAAI,CAAC,oBAAoB,SAAS,KAAK,GAAG;AACxC,aAAO,MAAM;AAAA,IACf;AAAA,EACF;AACA,SAAO;AACT;AAEO,IAAM,sBAAsB,SAAU,KAAK,UAAU,CAAC,GAAG;AAC9D,QAAM,QAAQ;AACd,MAAI,CAAC;AAAO;AACZ,QAAM,aAAa,MAAM,UAAU,UAAU,MAAM,WAAW;AAC9D,YAAU,OAAO,EAAE,gBAAgB,IAAI,GAAG,OAAO;AACjD,SAAO;AACT;AAEO,IAAM,qBAAqB,SAAU,KAAK,UAAU,CAAC,GAAG;AAC7D,QAAM,QAAQ;AACd,MAAI,CAAC;AAAO;AACZ,QAAM,aAAa,MAAM,UAAU,UAAU,MAAM,WAAW;AAC9D,YAAU,OAAO,EAAE,eAAe,IAAI,GAAG,OAAO;AAChD,SAAO;AACT;AAEO,IAAM,cAAc,SAAU,KAAK,UAAU,CAAC,GAAG;AACtD,QAAM,QAAQ;AACd,QAAM,UAAU,MAAM;AACtB,QAAM,SAAS,QAAQ,OAAO;AAE9B,MAAI,CAAC,MAAM;AAAW,gBAAY,SAAS,QAAQ,MAAM;AAGzD,MAAI,QAAQ,MAAMC,YAAW,QAAQ,GAAG,gBAAgB,GAAG;AACzD,UAAM,cAAc,WAAG,iBAAiB,QAAQ,GAAG,kBAAkB,SAAS,OAAO,GAAG;AACxF,QAAI,gBAAgB;AAAO;AAAA,EAC7B;AAEA,QAAM,WAAW,QAAQ;AACzB,MAAI,UAAU;AAEZ,QAAI,MAAM,UAAU,MAAM,OAAO,WAAW;AAC1C,YAAM,mBAAmB,MAAM,OAAO;AACtC,UAAI,oBAAoB,CAAC,QAAQ,sBAAsB;AACrD,YAAI,QAAQ,gBAAgB,UAAU;AACpC,iBAAO,MAAM,OAAO,OAAO,EAAE,CAAC,WAAW,IAAI,MAAM,GAAG,OAAO;AAAA,QAC/D;AACA,eAAO,MAAM,OAAO,OAAO,EAAE,CAAC,WAAW,IAAI,GAAG,OAAO;AAAA,MACzD;AAAA,IACF;AAAA,EACF,OAAO;AACL,kBAAc,OAAO,KAAK,mBAAmB;AAAA,EAC/C;AAGA,MAAI,CAAC,QAAQ,eAAe;AAAE,YAAQ,OAAO,CAAC,GAAG,OAAO;AAAA,EAAE,WAAW,QAAQ,kBAAkB,aAAa;AAAE,YAAQ,OAAO,CAAC,GAAG,EAAE,GAAG,SAAS,eAAe,KAAK,CAAC;AAAA,EAAE;AAEtK,MAAI,MAAM,WAAW;AACnB,eAAW,MAAM,MAAM,WAAW;AAChC,YAAM,cAAc,MAAM,UAAU;AACpC,kBAAY,MAAM,EAAE,OAAO,MAAM,MAAM,GAAG,OAAO;AAAA,IACnD;AAAA,EACF;AAEA,MAAI,CAAC,QAAQ,yBAAyB,QAAQ,MAAMA,YAAW,QAAQ,GAAG,YAAY,GAAG;AACvF,eAAG,aAAa,QAAQ,GAAG,cAAc,SAAS,OAAO,GAAG;AAAA,EAC9D;AACF;AAEO,IAAM,cAAc,SAAU,SAAS,QAAQ;AACpD,MAAI,EAAE,OAAO,OAAO,IAAI;AAExB,MAAIA,YAAW,KAAK;AAAG,YAAQ,KAAK,OAAO,OAAO;AAElD,MAAI,GAAG,KAAK,EAAE,UAAU,QAAQ,GAAG;AACjC,YAAQ,UAAU;AAClB,YAAQ,CAAC;AAAA,EACX;AACA,MAAI,UAAU,MAAM;AAClB,YAAQ,UAAU,QAAQ;AAC1B,YAAQ,CAAC;AAAA,EACX;AAEA,MAAI,CAAC,OAAO;AACV,QAAI,UAAU,OAAO;AAAO,aAAO,OAAO;AAC1C,WAAO,CAAC;AAAA,EACV,OAAO;AACL,YAAQ,iBAAiB;AAAA,EAC3B;AAGA,MAAI,QAAQ,MAAMA,YAAW,QAAQ,GAAG,SAAS,GAAG;AAClD,eAAG,UAAU,QAAQ,GAAG,WAAW,SAAS,QAAQ,KAAK;AAAA,EAC3D;AAEA,MAAI,WAAW,QAAQ;AACvB,MAAI,UAAU;AACZ,QAAI,cAAc,OAAO;AACzB,QAAI;AACJ,UAAM,UAAU,SAAS,MAAM,KAAK;AACpC,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,iBAAW,QAAQ;AACnB,oBAAc,YAAY;AAAA,IAC5B;AACA,QAAI,SAAS,SAAS,GAAG,GAAG;AAC1B,OAAC,gBAAgB,QAAQ,IAAI,SAAS,MAAM,GAAG;AAC/C,oBAAc,YAAY;AAAA,IAC5B;AACA,QAAI,eAAe,YAAY,WAAW;AACxC,YAAM,mBAAmB,YAAY;AACrC,UAAI,GAAG,gBAAgB,EAAE,UAAU,OAAO,GAAG;AAC3C,gBAAQ,UAAU,gBAAgB;AAAA,MACpC,WAAW,GAAG,gBAAgB,EAAE,UAAU,QAAQ,GAAG;AACnD,gBAAQ,EAAE,OAAO,iBAAiB;AAClC,gBAAQ,cAAc;AAAA,MACxB,WAAW,YAAY,gBAAgB,GAAG;AACxC,gBAAQ,KAAK,UAAU,qBAAqB,mBAAmB,CAAC,CAAC;AACjE,gBAAQ,CAAC;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAGA,QAAM,EAAE,MAAM,IAAI;AAClB,MAAI,OAAO;AACT,YAAQ,UAAU,OAAO,mBAAmB;AAC5C,QAAIC,UAAS,MAAM,SAAS,GAAG;AAC7B,YAAM,UAAU,QAAQ,OAAO;AAAA,IACjC;AAAO,YAAM,YAAY,EAAE,CAAC,QAAQ,MAAM,MAAM;AAAA,EAClD,OAAO;AACL,YAAQ,UAAU,OAAO,mBAAmB;AAAA,EAC9C;AAEA,UAAQ,QAAQ;AAChB,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,SAAS;AACf,QAAM,SAAS;AACf,QAAM,SAAS,QAAQ,OAAO;AAC9B,QAAM,YAAY;AAClB,QAAM,SAAS,SAAS,OAAO,QAAQ;AAGvC,QAAM,sBAAsB;AAC5B,QAAM,qBAAqB;AAC3B,QAAM,gBAAgB,MAAM,UAAU,OAAO;AAC7C,QAAM,mBAAmB,MAAM,UAAU,OAAO;AAChD,QAAM,kBAAkB,MAAM,UAAU,OAAO;AAC/C,QAAM,oBAAoB,MAAM,UAAU,OAAO;AAGjD,MAAI,QAAQ,MAAMD,YAAW,QAAQ,GAAG,YAAY,GAAG;AACrD,eAAG,aAAa,QAAQ,GAAG,cAAc,SAAS,KAAK;AAAA,EACzD;AAEA,SAAO;AACT;AAEA,IAAO,gBAAQ;;;ACjLf,IAAOE,iBAAQ,CAAC,QAAQ,SAAS,SAAS;AACxC,QAAM,QAAQ,KAAK,QAAQ,OAAO;AAElC,MAAI,SAAS,KAAK,GAAG;AACnB,eAAW,SAAS,OAAO;AACzB,UAAI,oBAAoB,SAAS,KAAK;AAAG;AACzC,cAAQ,MAAM,SAAS,KAAK,MAAM,QAAQ,OAAO;AAAA,IACnD;AAAA,EACF;AAEA,SAAO;AACT;;;ACHA,IAAO,mBAAQ;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,OAAAC;AAAA,EAEA,QAAQ,CAAC;AAAA,EACT,aAAa,CAAC;AAAA,EACd,sBAAsB,CAAC;AAAA,EACvB,OAAO,CAAC;AAAA,EACR,MAAM,CAAC;AAAA,EACP,IAAI,CAAC;AAAA,EACL,QAAQ,CAAC;AAAA,EACT,WAAW,CAAC;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,gBAAgB,CAAC;AAAA,EACjB,UAAU,CAAC;AAAA,EACX,WAAW,CAAC;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,WAAW,CAAC;AAAA,EACZ,SAAS,CAAC;AAAA,EACV,QAAQ,CAAC;AAAA,EACT,SAAS,CAAC;AAAA,EACV,UAAU,CAAC;AAAA,EACX,cAAc,CAAC;AAAA,EACf,YAAY,CAAC;AAAA,EACb,WAAW,CAAC;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,WAAW,CAAC;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,SAAS,CAAC;AAAA,EACV,aAAa,CAAC;AAAA,EACd,cAAc,CAAC;AAAA,EACf,QAAQ,CAAC;AAAA,EACT,SAAS,CAAC;AAAA,EACV,aAAa,CAAC;AAAA,EACd,mBAAmB,CAAC;AAAA,EACpB,gBAAgB,CAAC;AAAA,EACjB,aAAa,CAAC;AAAA,EACd,iBAAiB,CAAC;AAAA,EAClB,KAAK,CAAC;AAAA,EACN,KAAK,CAAC;AAAA,EACN,OAAO,CAAC;AAAA,EACR,QAAQ,CAAC;AAAA,EACT,MAAM,CAAC;AAAA,EACP,KAAK,CAAC;AAAA,EACN,QAAQ,CAAC;AAAA,EACT,UAAU,CAAC;AAAA,EACX,QAAQ,CAAC;AAAA,EACT,eAAe,CAAC;AAAA,EAChB,QAAQ,CAAC;AAAA,EACT,YAAY,CAAC;AAAA,EACb,MAAM,CAAC;AAAA,EACP,KAAK,CAAC;AAAA,EACN,OAAO,CAAC;AAAA,EACR,WAAW,CAAC;AAAA,EACZ,IAAI,CAAC;AAAA,EACL,WAAW,CAAC;AAAA,EACZ,SAAS,CAAC;AACZ;AAIO,IAAM,eAAe;AAAA,EAC1B,aAAa;AAAA,IACX;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAS;AAAA,IAClD;AAAA,IAAQ;AAAA,IAAW;AAAA,EAErB;AAAA,EACA,WAAW,CAAC,WAAW;AAAA,EACvB,WAAW,CAAC;AACd;;;AClFA,IAAM,MAAM;AAGL,IAAM,SAAS,SAAU,KAAK;AACnC,QAAM,UAAU;AAChB,MAAI,EAAE,OAAO,IAAI;AAEjB,SAAO,OAAO,QAAQ,KAAK;AACzB,QAAI,OAAO;AAAM,aAAO,OAAO;AAC/B,aAAS,OAAO;AAChB,QAAI,CAAC;AAAQ;AAAA,EACf;AAEA,SAAO;AACT;AAGO,IAAM,aAAa,SAAU,MAAM;AACxC,QAAM,UAAU;AAChB,QAAM,MAAM,CAAC,EAAE,OAAO,IAAI;AAC1B,MAAI,SAAS,aAAK,IAAI;AAEtB,MAAI,CAAC,OAAO,CAAC,IAAI;AAAQ,WAAO,QAAQ,IAAI,KAAK,MAAM,QAAQ,KAAK,cAAc;AAElF,SAAO,OAAO,QAAQ,IAAI,IAAI;AAC5B,QAAI,MAAM;AACV,QAAI,CAAC,IAAI;AAAQ;AACjB,aAAS,OAAO,IAAI;AACpB,QAAI,CAAC;AAAQ;AAAA,EACf;AAEA,SAAO;AACT;AAEO,IAAM,SAAS,SAAU,QAAQ;AACtC,QAAM,UAAU;AAChB,MAAI,WAAW,QAAQ,KAAK,MAAM;AAAG,YAAQ,KAAK,OAAO;AAAA,WAChD,QAAQ,UAAU,QAAQ,eAAe;AAChD,YAAQ,KAAK,2BAA2B;AACxC,YAAQ,IAAI;AAAA,EACd;AACA,SAAO,QAAQ,OAAO,QAAQ;AAChC;AAaO,IAAM,WAAW,SAAU,OAAO,SAAS;AAChD,QAAM,UAAU;AAChB,MAAI,CAAC,SAAS,CAAC,QAAQ;AAAO;AAC9B,UAAQ,OAAO,EAAE,OAAO,MAAM,GAAG,OAAO;AACxC,SAAO,QAAQ;AACjB;AAKO,IAAM,OAAO,WAAY;AAC9B,QAAM,UAAU;AAChB,QAAMC,QAAO,CAAC;AACd,aAAW,SAAS,SAAS;AAC3B,QAAI,iBAAS,UAAU,CAAC,aAAa,YAAY,SAAS,KAAK;AAC7D;AACF,IAAAA,MAAK,KAAK,KAAK;AAAA,EACjB;AACA,SAAOA;AACT;AAEO,IAAM,QAAQ,WAAY;AAC/B,QAAM,UAAU;AAChB,QAAM,MAAM,CAAC;AACb,QAAM,UAAU,KAAK,KAAK,OAAO;AACjC,UAAQ,QAAQ,OAAM,IAAI,KAAK,QAAQ,EAAG;AAC1C,SAAO;AACT;AAEO,IAAM,YAAY,WAAY;AACnC,QAAM,UAAU;AAChB,QAAM,MAAM,MAAM,KAAK,OAAO;AAC9B,aAAW,KAAK,KAAK;AACnB,QAAI,aAAa,IAAI,EAAE,GAAG;AAAE,UAAI,KAAK,UAAU,KAAK,IAAI,EAAE;AAAA,IAAE;AAAA,EAC9D;AACA,SAAO;AACT;AAEO,IAAM,MAAM,YAAa,MAAM;AACpC,QAAM,UAAU;AAChB,UAAQ,MAAM,QAAQ,GAAG;AACzB,MAAI,KAAK,QAAQ;AACf,SAAK,QAAQ,OAAK,QAAQ,IAAI,KAAK;AAAA,GAAQ,qBAAqB,QAAQ,EAAE,CAAC;AAAA,EAC7E,OAAO;AACL,YAAQ,IAAI,QAAQ,IAAI;AACxB,UAAMA,QAAO,QAAQ,KAAK;AAC1B,IAAAA,MAAK,QAAQ,OAAK,QAAQ,IAAI,KAAK;AAAA,GAAQ,qBAAqB,QAAQ,EAAE,CAAC;AAAA,EAC7E;AACA,UAAQ,SAAS,QAAQ,GAAG;AAC5B,SAAO;AACT;AAEO,IAAM,WAAW,SAAU,OAAO;AACvC,SAAO,UAAU,SACf,UAAU,YACV,UAAU,YACV,UAAU,mBACV,UAAU,YACV,UAAU,gBACV,UAAU,UACV,UAAU,WACV,UAAU,cACV,UAAU,eACV,UAAU,QACV,UAAU,SACV,UAAU,iBACV,UAAU;AACd;AAEO,IAAM,cAAc,WAAY;AACrC,QAAM,UAAU;AAChB,QAAM,EAAE,KAAK,OAAO,IAAI;AACxB,QAAM,EAAE,WAAW,IAAI;AAEvB,QAAM,eAAe,WAAW,QAAQ,GAAG;AAC3C,QAAM,YAAY,WAAW,eAAe;AAC5C,UAAQ,IAAI,SAAS;AAErB,SAAO,OAAO;AAChB;AAEO,IAAM,kBAAkB,SAAU,IAAI;AAC3C,QAAM,UAAU,MAAM;AACtB,QAAM,EAAE,KAAK,OAAO,IAAI;AACxB,QAAM,EAAE,WAAW,IAAI;AAEvB,MAAI,CAAC;AAAY;AAEjB,QAAM,eAAe,WAAW,QAAQ,GAAG;AAC3C,SAAO,OAAO,WAAW,eAAe;AAC1C;;;AClJO,IAAM,cAAc,aAAW;AACpC,QAAM,EAAE,MAAM,GAAG,IAAI;AACrB,aAAW,SAAS,IAAI;AACtB,QACE,UAAU,UACV,UAAU,YACV,UAAU;AACV;AAEF,UAAM,kBAAkB,QAAQ,GAAG;AACnC,QAAI,WAAW,eAAe,GAAG;AAC/B,WAAK;AAAA,QAAiB;AAAA,QAAO,WAC3B,gBAAgB,OAAO,SAAS,QAAQ,KAAK;AAAA,QAC/C;AAAA,MAAI;AAAA,IACN;AAAA,EACF;AACF;AAEO,IAAM,qBAAqB,aAAW;AAC3C,aAAW,SAAS,SAAS;AAC3B,UAAM,OAAO,QAAQ;AACrB,QAAI,WAAW,IAAI,KAAK,CAAC,SAAS,KAAK,GAAG;AACxC,cAAQ,OAAO,SAAS;AACxB,cAAQ,SAAS,KAAK,SAAS,QAAQ,KAAK;AAAA,IAC9C;AAAA,EACF;AACF;AAEO,IAAM,qBAAqB,CAAC,SAAS,YAAY;AACtD,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,UAAU,CAAC;AAEjB,aAAW,SAAS,QAAQ;AAC1B,UAAM,OAAO,QAAQ;AACrB,UAAM,UAAU,OAAO,OAAO,SAAS,QAAQ,KAAK;AAGpD,QAAI,QAAQ,KAAK,SAAS,SAAS,OAAO,KAAK,SAAS,OAAO,IAAI;AACjE,gBAAU,MAAM,EAAE,MAAM,QAAQ,GAAG,OAAO;AAAA,IAC5C,WAAW,YAAY,MAAM;AAC3B,cAAQ,SAAS,SAAS,QAAQ,SAAS;AAC3C,cAAQ,SAAS;AAAA,IACnB;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,uBAAuB,CAAC,SAAS,YAAY;AACxD,QAAM,EAAE,OAAO,IAAI;AACnB,MAAI,MAAM,CAAC;AAEX,MAAI,SAAS,MAAM,GAAG;AACpB,UAAM,EAAE,GAAG,OAAO;AAAA,EACpB;AACA,MAAI,SAAS,QAAQ,MAAM,GAAG;AAG5B,UAAM,EAAE,GAAG,KAAK,GAAG,QAAQ,OAAO;AAAA,EACpC;AAEA,aAAW,SAAS,KAAK;AACvB,QAAI,OAAO,QAAQ;AAEnB,QAAI,WAAW,IAAI,KAAK,CAAC,SAAS,KAAK,GAAG;AACxC,cAAQ,OAAO,SAAS;AACxB,cAAQ,SAAS,OAAO,KAAK,MAAM,OAAO;AAAA,IAC5C;AAEA,YAAQ,SAAS,SAAS;AAC1B,YAAQ,SAAS,IAAI,OAAO,MAAM,SAAS,QAAQ,KAAK;AAAA,EAC1D;AACA,SAAO;AACT;AAEO,IAAM,uBAAuB,CAAC,SAAS,YAAY;AACxD,QAAM,EAAE,QAAQ,OAAO,IAAI;AAC3B,QAAM,UAAU,CAAC;AACjB,MAAI,MAAM,CAAC;AAEX,MAAI,SAAS,MAAM,GAAG;AACpB,UAAM,EAAE,GAAG,OAAO;AAAA,EACpB;AACA,MAAI,SAAS,QAAQ,MAAM,GAAG;AAC5B,UAAM,EAAE,GAAG,KAAK,GAAG,QAAQ,OAAO;AAAA,EACpC;AAEA,aAAW,SAAS,KAAK;AACvB,UAAM,YAAY,OAAO;AACzB,QAAI;AAAW,cAAQ,SAAS,SAAS,UAAU,SAAS,QAAQ,KAAK;AACzE,UAAM,SAAS,KAAK,QAAQ,SAAS,QAAQ,OAAO;AACpD,YAAQ,SAAS,IAAI,OAAO,QAAQ,SAAS,QAAQ,KAAK;AAAA,EAC5D;AACA,SAAO;AACT;;;ACnFA,IAAMC,OAAM;AAcL,IAAMC,cAAa,CAAC,SAAS,YAAY;AAE9C,MAAI,EAAE,MAAM,IAAI,IAAI;AAEpB,MAAI;AAEJ,MAAI,CAAC,MAAM;AACT,gBAAY;AAEZ,QAAI,QAAQ;AAAW,aAAO;AAE9B,QAAI,QAAQ,UAAU;AACpB,aAAO,QAAQ,OAAO,QAAQ,OAAO,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAAA,IACzE;AAAO,aAAO,QAAQ,OAAO,cAAU,OAAO;AAG9C,QAAI,QAAQ,MAAM,WAAW,QAAQ,GAAG,UAAU,GAAG;AACnD,MAAG,WAAW,QAAQ,GAAG,YAAY,SAAS,QAAQ,KAAK;AAAA,IAC7D;AAAA,EACF;AAIA,MAAID,SAAQ,UAAUA,SAAQ,eAAe;AAC3C,SAAK,MAAM;AACX,QAAI,WAAW,KAAK,YAAY;AAAG,WAAK,aAAa,OAAO,QAAQ,GAAG;AAAA,EACzE;AAEA,MAAI,QAAQ;AAAW,WAAO;AAG9B,MAAI,QAAQ,QAAQ,YAAY,QAAQ,QAAQ,YAAY;AAE1D,yBAAqB,SAAS,OAAO;AAGrC,uBAAmB,OAAO;AAG1B,QAAI,aAAa,SAAS,QAAQ,EAAE;AAAG,kBAAY,OAAO;AAE1D,eAAW,SAAS,SAAS;AAC3B,YAAM,OAAO,QAAQ;AAErB,UAAI,SAAS,KAAK,KAAK,SAAS,iBAAS,MAAM,KAAK,SAAS;AAAW;AAExE,YAAM,aAAa,QAAQ,UAAU,QAAQ,OAAO;AACpD,YAAM,gBAAgB,iBAAS;AAC/B,YAAM,mBAAmB,QAAQ,UAAU,QAAQ,OAAO;AAE1D,UAAI,iBAAiB,CAAC,kBAAkB;AACtC,YAAI,WAAW,aAAa;AAAG,wBAAc,MAAM,SAAS,MAAM,OAAO;AAAA,MAC3E,WAAW,QAAQ,UAAU,CAAC,cAAc,CAAC,kBAAkB;AAC7D,uBAAO,KAAK,MAAM,OAAO,GAAG,SAAS,OAAO,OAAO;AAAA,MACrD;AAAA,IACF;AAAA,EACF;AAGA,SAAO;AACT;AAEA,IAAO,eAAQC;;;ACtFR,IAAM,aAAa,CAAC,MAAM,eAAe;AAC9C,aAAW,YAAY,IAAI;AAC3B,SAAO;AACT;AAMO,IAAM,aAAa,CAAC,SAAS,QAAQ,QAAQ;AAClD,SAAO,OAAO,QAAQ,OAAO;AAC7B,MAAI,QAAQ,QAAQ,UAAU;AAC5B,eAAW,QAAQ,MAAM,OAAO,IAAI;AAAA,EACtC;AACA,SAAO;AACT;;;ACjBA,IAAMC,OAAM;AAML,IAAM,cAAc,CAAC,SAAS,QAAQ,UAAU,CAAC,MAAM;AAC5D,MAAI,WAAW,OAAO;AAAG,cAAU,KAAK,SAAS,MAAM;AAEvD,MAAI,EAAE,QAAQ,OAAO,QAAQ,IAAI;AACjC,QAAM,aAAa,QAAQ,cAAc,QAAQ;AAEjD,MAAI,SAAS,MAAM;AAAG,aAAS,WAAW;AAC1C,QAAM,cAAc,eAAe,MAAM;AAEzC,MAAIA,SAAQ,UAAUA,SAAQ;AAAe,WAAO,QAAQ;AAE5D,MAAI,mBAAmB,CAAC;AACxB,MAAI,QAAQ;AAEV,YAAQ,SAAS;AACjB,QAAI,CAAC,QAAQ,mBAAmB;AAC9B,UAAI,SAAS,MAAM;AAAmB;AAEtC,yBAAmB,eAAe,OAAO,WAAW;AAEpD,UAAI,OAAO,sBAAsB;AAC/B,cAAM,4BAA4B,eAAe,OAAO,oBAAoB;AAC5E,2BAAmB,iBAAiB,OAAO,yBAAyB;AACpE,gBAAQ,uBAAuB,OAAO;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAEA,QAAM,eAAe,YAAY;AACjC,QAAM,oBAAoB,iBAAiB;AAE3C,MAAI,QAAQ,CAAC;AACb,MAAI,gBAAgB,mBAAmB;AACrC,YAAQ,YAAY,aAAa,gBAAgB;AAAA,EACnD,WAAW,cAAc;AACvB,YAAQ;AAAA,EACV,WAAW,mBAAmB;AAC5B,YAAQ;AAAA,EACV,WAAW,CAAC,QAAQ;AAAQ,WAAO;AAEnC,MAAI,QAAQ,QAAQ;AAClB,UAAM,uBAAuB,eAAe,QAAQ,MAAM;AAC1D,YAAQ,CAAC,EAAE,OAAO,OAAO,oBAAoB;AAAA,EAC/C;AAEA,UAAQ,WAAW;AACnB,MAAI,eAAe,yBAAyB,KAAK;AAEjD,QAAM,YAAY,KAAK,QAAQ,aAAa,aAAa,WAAW,OAAO;AAC3E,MAAI,aAAa,cAAc,WAAW,YAAY;AACpD,UAAM,kBAAkB,yBAAyB,eAAe,WAAW,UAAU,CAAC;AACtF,mBAAe,gBAAgB,iBAAiB,YAAY;AAAA,EAC9D;AAEA,SAAO,gBAAgB,SAAS,YAAY;AAC9C;;;AC7DA,IAAM,YAAY,CAAC,SAAS,WAAW;AACrC,QAAM,EAAE,MAAM,IAAI;AAClB,QAAM,aAAa,CAAC;AAEpB,QAAM,UAAU,SAAS,KAAK,KAAK,MAAM,QAAQ,OAAO,IAAI;AAC5D,QAAM,cAAc,OAAO,SAAS,OAAO,MAAM,QAAQ;AACzD,QAAM,mBAAmB,OAAO,SAAS,OAAO,MAAM;AAEtD,QAAM,0BAA0B,eAAa;AAC3C,QAAI,SAAS,SAAS;AAAG,aAAO,EAAE,iBAAiB,UAAU;AAC7D,WAAO;AAAA,EACT;AAEA,MAAI,eAAe,UAAU;AAAS,eAAW,KAAK,WAAW;AACjE,MAAI;AAAkB,eAAW,KAAK,gBAAgB;AAEtD,MAAI,SAAS,KAAK,GAAG;AACnB,eAAW,KAAK,KAAK;AAAA,EACvB;AAEA,MAAI,UAAU,WAAW;AACvB,QAAI,OAAO;AAAO,iBAAW,KAAK,OAAO,KAAK;AAAA,EAChD,WAAW,SAAS;AAClB,UAAM,SAAS,MAAM,MAAM,GAAG;AAC9B,QAAI;AAEJ,QAAI,OAAO,MAAM,OAAO,MAAM,OAAO,KAAK;AACxC,YAAM,6BAA6B,OAAO,MAAM,OAAO;AACvD,iBAAW;AAAA,QACT,wBAAwB,0BAA0B;AAAA,MACpD;AAAA,IACF,WAAW,aAAa;AACtB,iBAAW;AAAA,QACT,wBAAwB,WAAW;AAAA,MACrC;AAAA,IACF;AACA,eAAW,KAAK,gBAAgB;AAAA,EAClC,WAAW;AAAO,eAAW,KAAK,KAAK;AAEvC,MAAI,QAAQ,QAAQ,QAAQ,GAAG;AAC7B,YAAQ,SAAS,IAAI,YAAU;AAC7B,UAAI,OAAO;AAAO,mBAAW,KAAK,OAAO,KAAK;AAC9C,aAAO,OAAO;AAAA,IAChB,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAEA,IAAM,eAAe,CAAC,SAAS,WAAW;AACxC,UAAQ,QAAS,UAAU,OAAO,SAAU,EAAE,QAAAC,SAAQ,WAAW,QAAQ;AAC3E;AAEO,IAAM,YAAY,CAAC,OAAO,YAAY;AAC3C,UAAQ,QAAQ,CAAC;AACjB,QAAM,cAAc,EAAE,QAAAA,SAAQ,WAAW,QAAQ;AACjD,QAAM,QAAQ,OAAK;AACjB,QAAI,MAAM,YAAY,MAAM;AAAa;AACzC,YAAQ,QAAQ,UAAU,aAAa,UAAU,KAAK,GAAG,OAAO,CAAC,CAAC;AAAA,EACpE,CAAC;AACD,UAAQ,QAAQ;AAChB,SAAO,QAAQ;AACjB;AAEA,IAAM,cAAc,SAAU,SAAS,QAAQ,QAAQ;AACrD,QAAM,aAAa,UAAU,UAAU,SAAS,MAAM;AAEtD,MAAI,WAAW,QAAQ;AACrB,YAAQ,UAAU;AAClB,cAAU,YAAY,OAAO;AAC7B,YAAQ,MAAM,SAASA;AAAA,EACzB;AAAO,iBAAa,SAAS,MAAM;AAEnC,SAAO;AACT;AAEO,IAAM,cAAc,CAAC,UAAU,SAAS,WAAW;AACxD,MAAI,aAAa,QAAQ;AAEzB,MAAI;AAAU,iBAAa,QAAQ,UAAU,CAAC,EAAE,OAAO,UAAU,UAAU;AAE3E,MAAI;AAAY,cAAU,YAAY,OAAO;AAAA;AACxC,iBAAa,SAAS,MAAM;AAGjC,SAAO;AACT;AAEA,SAASA,QAAQ,OAAO,SAAS;AAC/B,QAAM,UAAU,KAAK;AAErB,UAAQ,OAAO,EAAE,MAAM,GAAG,OAAO;AACnC;AAEA,IAAO,gBAAQ;;;ACpFf,IAAM,WAAW;AAAA,EACf,YAAY;AACd;AAEA,IAAM,yBAAyB;AAAA,EAC7B,cAAc;AAAA,EACd,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,eAAe;AACjB;AAEA,IAAMC,UAAS,SAAU,SAAS,CAAC,GAAG,UAAU,wBAAwB;AACtE,QAAM,UAAU;AAChB,QAAM,EAAE,QAAQ,QAAQ,KAAK,IAAI;AAEjC,QAAM,EAAE,iBAAiB,cAAc,IAAI;AAC3C,MAAI,CAAC,eAAe;AAClB,YAAQ,oBAAoB,SAAS,WAAW;AAAA,EAClD;AACA,QAAM,mBAAmB,QAAQ,qBAAsB,iBAAiB,cAAc;AACtF,MAAI,oBAAoB,kBAAkB,kBAAkB;AAAA,EAI5D;AAEA,MAAI,SAAS,MAAM,KAAK,SAAS,MAAM,GAAG;AACxC,aAAS,EAAE,MAAM,OAAO;AAAA,EAC1B;AAEA,MAAI,WAAW,QAAQ,EAAE,GAAG;AAE1B,UAAM,WAAW,QAAQ,GAAG,SAAS,QAAQ,KAAK;AAElD,QAAI;AAAU,aAAO,QAAQ;AAC7B,QAAI,QAAQ,aAAa,UAAU;AACjC,MAAAC,YAAW,OAAO;AAClB,iBAAW,QAAQ,MAAM,QAAQ,YAAY;AAAA,IAC/C,WAAW,QAAQ,QAAQ,CAAC,UAAU;AACpC,cAAQ,KAAK,OAAO;AACpB,cAAQ,YAAY;AAAA,IACtB;AAAA,EACF;AAEA,MAAI,QAAQ,SAAS;AACnB,UAAM,mBAAmB,OAAO,MAAM,QAAQ;AAC9C,QAAI,kBAAkB;AACpB,YAAM,WAAW,QAAQ,gBAAgB,WACrC,cAAY,SAAS,MAAM,IAC3B,cAAY,SAAS,MAAM;AAC/B,YAAM,UAAU,KAAK,SAAS,MAAM,GAAG,QAAQ,MAAM,MAAM,CAAC;AAG5D,UAAI,QAAQ,MAAM,WAAW,QAAQ,GAAG,gBAAgB,GAAG;AACzD,cAAM,cAAc,WAAG,iBAAiB,QAAQ,GAAG,kBAAkB,SAAS,QAAQ,OAAO,OAAO;AACpG,YAAI,gBAAgB;AAAO;AAAA,MAC7B;AAEA,cAAQ,QAAQ;AAEhB,UAAI,CAAC,QAAQ,yBAAyB,QAAQ,MAAM,WAAW,QAAQ,GAAG,YAAY,GAAG;AACvF,mBAAG,aAAa,QAAQ,GAAG,cAAc,SAAS,QAAQ,OAAO,OAAO;AAAA,MAC1E;AAAA,IACF;AAAA,EACF,WAAW,CAAC,QAAQ;AAAgB,YAAQ,QAAS,UAAU,OAAO,SAAU,CAAC;AAEjF,MAAI,CAAC,QAAQ,aAAa,CAAC,QAAQ;AAAoB,gBAAY,OAAO,OAAO,SAAS,MAAM;AAEhG,MAAI,QAAQ,MAAM,WAAW,QAAQ,GAAG,UAAU,KAAK,CAAC,QAAQ,kBAAkB;AAChF,UAAM,kBAAkB,WAAG,WAAW,QAAQ,GAAG,YAAY,SAAS,QAAQ,KAAK;AACnF,QAAI,oBAAoB;AAAO;AAAA,EACjC;AAEA,QAAM,mBAAmB,UAAU,SAAS,QAAQ,sBAAsB;AAC1E,QAAM,cAAc,mBAAmB,SAAS,sBAAsB;AACtE,QAAM,iBAAiB,qBAAqB,SAAS,OAAO;AAE5D,MAAI,QAAQ,gBAAgB,QAAQ,gBAAgB;AAClD,UAAM,eAAe,MAAM,gBAAgB,MAAM,aAAa,gBAAgB,CAAC;AAC/E,YAAQ,eAAe,KAAK,YAAY;AAAA,EAC1C;AAEA,MAAI,QAAQ;AAAW,WAAO;AAC9B,MAAI,CAAC,MAAM;AAET;AAAA,EACF;AAEA,aAAW,SAAS,SAAS;AAC3B,UAAM,OAAO,QAAQ;AAErB,QACE,QAAQ,wBAAwB,QAChC,QAAQ,wBAAwB,SAC/B,QAAQ,wBAAwB,UAAU,cAC1C,QAAQ,sBAAsB,WAAW,WAC1C,SAAS,KAAK,KAAK,SAAS,iBAAS,MAAM,KAAK,SAAS;AACzD;AACF,QAAI,QAAQ,uBAAuB;AAAQ,cAAQ,qBAAqB;AAExE,UAAM,aAAa,UAAU,OAAO;AACpC,UAAM,WAAW,iBAAS;AAE1B,UAAM,mBAAmB,QAAQ,UAAU,QAAQ,OAAO;AAE1D,QAAI,YAAY,CAAC,kBAAkB;AACjC,UAAI,WAAW,QAAQ,GAAG;AACxB,iBAAS,MAAM,SAAS,IAAI;AAAA,MAC9B;AAAA,IACF,WAAW,QAAQ,SAAS,IAAI,KAAK,CAAC,cAAc,CAAC,kBAAkB;AACrE,UAAI,CAAC,QAAQ,kBAAkB;AAC7B,cAAM,kBAAkB,MAAMD,QAAO,KAAK,MAAM,OAAO,OAAO;AAAA,UAC5D,GAAG;AAAA,UACH,iBAAiB;AAAA,UACjB,eAAe;AAAA,QACjB,CAAC;AACD,YAAI,QAAQ,MAAM,YAAY,QAAQ,UAAU;AAC9C,iBAAO,sBAAsB,MAAM,gBAAgB,CAAC;AAAA,QACtD;AAAO,0BAAgB;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,QAAQ,iBAAiB,QAAQ,MAAM,WAAW,QAAQ,GAAG,MAAM,GAAG;AACzE,eAAG,OAAO,QAAQ,GAAG,QAAQ,SAAS,QAAQ,KAAK;AAAA,EACrD;AACF;AAEA,IAAO,iBAAQA;;;AC1Hf,IAAME,OAAM;AAKZ,IAAM,SAAS,CAAC,SAAS,QAAQ,KAAK,UAAU,gBAAQ,UAAU,CAAC,MAAM;AACvE,MAAI,WAAW,CAAC,gBAAQ;AAAQ,oBAAQ,SAAS;AAGjD,MAAI,YAAY,QAAW;AACzB,QAAIA,SAAQ,UAAUA,SAAQ,eAAe;AAAE,cAAQ,KAAK,KAAK,2BAA2B,UAAU,OAAO,IAAI;AAAA,IAAE;AACnH,cAAU,CAAC;AAAA,EACb;AACA,MAAI,YAAY;AAAM;AACtB,MAAI,YAAY;AAAM,cAAU,EAAE,MAAM,KAAK;AAG7C,MAAI,QAAQ,QAAQ;AAClB,cAAU,EAAE,QAAQ,QAAQ;AAAA,EAC9B;AAGA,MAAI,CAAC;AAAQ,aAAS;AACtB,MAAI,OAAO,MAAM;AAAG,aAAS,aAAK,GAAG,gBAAgB,EAAE,KAAK,SAAS,MAAM,OAAO;AAGlF,MAAI,SAAS,OAAO,KAAK,SAAS,OAAO,GAAG;AAC1C,UAAM,YAAY,QAAQ,UAAU,QAAQ,OAAO;AACnD,UAAM,iBAAiB,OAAO,eAAe,OAAO,YAAY;AAChE,UAAM,oBAAsB,cAAM,KAAK,QAAQ,GAAG,IAAI,MAAO;AAC7D,cAAU;AAAA,MACR,MAAM;AAAA,MACN,KAAK,aAAa,kBAAkB,qBAAqB;AAAA,IAC3D;AAAA,EACF;AAGA,QAAM,eAAe,QAAQ,OAAO,OAAO,SAAS,GAAG,SAAS;AAEhE,QAAM,EAAE,QAAQ,OAAO,OAAO,aAAa,WAAW,IAAI;AAE1D,MAAI,eAAe,WAAW,GAAG;AAC/B,UAAM,oBAAoB,UAAU,eAAe,SAAS,SAAS,QAAQ;AAC7E,UAAM,eAAe,YAAY,MAAM,GAAG,EAAE;AAC5C,QAAI,CAAC,qBAAqB,YAAY;AACpC,aAAO,eAAe,UAAU;AAAA,QAC9B,QAAQ,gBAAgB;AAAA,QACxB,OAAO,EAAE,GAAG,QAAQ;AAAA,MACtB;AAAA,IACF,WAAW,CAAC,UAAU,WAAW,MAAM;AACrC,aAAO,eAAe,UAAU;AAAA,QAC9B,GAAG;AAAA,QACH,QAAQ,gBAAgB;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAIA,MAAI,YAAY,MAAM,GAAG,CAAC,MAAM,KAAK;AACnC,QAAI,OAAO;AACT,YAAM,UAAU;AAChB,UAAI,MAAM;AAAc,cAAM,aAAa,UAAU,MAAM;AAAA;AACtD,cAAM,eAAe,EAAE,SAAS,MAAM,WAAW,QAAQ;AAAA,IAChE,OAAO;AACL,aAAO,eAAe,UAAU;AAAA,QAC9B,GAAG;AAAA,QACH,OAAO;AAAA,UACL,SAAS;AAAA,UACT,CAAC,cAAc,EAAE,SAAS,QAAQ;AAAA,QACpC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,MAAI,QAAQ,WAAW,CAAC,aAAK;AAAS,iBAAK,UAAU,QAAQ;AAC7D,UAAQ,UAAU,aAAK;AACvB,QAAM,EAAE,QAAQ,IAAI;AAEpB,MAAI,QAAQ,YAAY;AACtB,UAAM,EAAE,WAAW,IAAI;AACvB,UAAM,EAAE,QAAAC,QAAO,IAAI;AACnB,UAAM,aAAa,KAAKA,SAAQ,OAAO;AACvC,QAAI,SAAS,UAAU,GAAG;AACxB,UAAI,WAAW;AAAa,gBAAQ,SAAS,WAAW;AAAA,WACnD;AACH,YAAID,SAAQ,UAAUA,SAAQ,eAAe;AAC3C,kBAAQ,KAAK,YAAY,qBAAqB,YAAY,OAAO;AACjE,kBAAQ,KAAK,mBAAmB,CAAC,CAAC;AAAA,QACpC;AACA,gBAAQ,SAAS,CAAC;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AAGA,MAAI,QAAQ,oBAAoB;AAC9B,gBAAY,SAAS,QAAQ,OAAO;AAEpC,QAAI,CAAC,QAAQ;AAAQ,cAAQ,SAAS,CAAC;AACvC,QAAI,CAAC,QAAQ;AAAQ,cAAQ,SAAS,CAAC;AACvC,QAAI,CAAC,QAAQ;AAAW,oBAAY,SAAS,MAAM;AACnD,YAAQ,MAAM;AAEd,uBAAmB,OAAO;AAE1B,eAAW,SAAS,SAAS;AAC3B,YAAM,OAAO,QAAQ;AACrB,UAAI,SAAS,KAAK,KAAK,SAAS,iBAAS,MAAM,KAAK,SAAS;AAAW;AAExE,YAAM,aAAa,QAAQ,UAAU,QAAQ,OAAO;AACpD,YAAM,WAAW,iBAAS;AAC1B,YAAM,mBAAmB,QAAQ,UAAU,QAAQ,OAAO;AAC1D,UAAI,YAAY,CAAC,kBAAkB;AACjC;AAAA,MACF,WAAW,QAAQ,UAAU,CAAC,cAAc,CAAC,kBAAkB;AAC7D,eAAO,KAAK,MAAM,OAAO,GAAG,SAAS,OAAO,OAAO;AAAA,MACrD;AAAA,IACF;AAGA,WAAO,QAAQ;AACf,WAAO,QAAQ;AACf,WAAO,QAAQ;AACf,WAAO,QAAQ,MAAM;AACrB,WAAO,QAAQ,MAAM;AACrB,WAAO,QAAQ;AACf,WAAO;AAAA,EACT;AAGA,cAAY,SAAS,QAAQ,OAAO;AAEpC,MAAI,OAAO,KAAK,OAAO,EAAE,QAAQ;AAC/B,qBAAS,iBAAiB;AAC1B,QAAI,QAAQ;AAAmB,aAAO,QAAQ;AAAA,EAChD;AAGA,UAAQ,MAAM;AAGd,MAAI,CAAC,QAAQ;AAAW,YAAQ,YAAY,CAAC;AAG7C,MAAI,CAAC,QAAQ;AAAU,YAAQ,WAAW,CAAC;AAG3C,MAAI,CAAC,QAAQ;AAAQ,YAAQ,SAAS,CAAC;AAGvC,MAAI,CAAC,QAAQ;AAAS,YAAQ,UAAU,CAAC;AACzC,MAAI,CAAC,QAAQ;AAAc,YAAQ,eAAe,CAAC;AAGnD,MAAI,CAAC,QAAQ;AAAQ,YAAQ,SAAS,CAAC;AAGvC,MAAI,CAAC,QAAQ;AAAW,YAAQ,YAAY,CAAC;AAG7C,MAAI,CAAC,QAAQ;AAAY,YAAQ,aAAa,CAAC;AAG/C,QAAM,UAAU,UAAU,OAAO,QAAQ;AACzC,MAAI,CAAC,QAAQ;AAAQ,YAAQ,SAAS,UAAU,UAAU,OAAO;AAGjE,MAAIA,SAAQ,UAAUA,SAAQ,eAAe;AAC3C,QAAI,CAAC,OAAO;AAAM,aAAO,OAAO,CAAC;AACjC,YAAQ,OAAO,OAAO,KAAK,OAAO,WAAW;AAAA,EAC/C;AAGA,UAAQ,MAAM;AACd,UAAQ,SAAS;AACjB,UAAQ,SAAS;AACjB,UAAQ,gBAAgB;AACxB,UAAQ,WAAW;AACnB,UAAQ,SAAS;AACjB,UAAQ,aAAa;AACrB,UAAQ,QAAQ;AAChB,UAAQ,YAAY;AACpB,UAAQ,OAAO;AACf,UAAQ,cAAc;AACtB,UAAQ,kBAAkB;AAC1B,MAAIA,SAAQ,UAAUA,SAAQ,eAAe;AAC3C,YAAQ,MAAM;AAAA,EAChB;AAGA,UAAQ,QAAQ,cAAY,SAAS,MAAM;AAG3C,MAAI,WAAW,QAAQ,EAAE,GAAG;AAE1B,QAAI,CAAC,QAAQ,GAAG,SAAS,QAAQ,KAAK,GAAG;AACvC,YAAM,aAAa,cAAU,EAAE,KAAK,WAAW,CAAC;AAChD,cAAQ,eAAe,WAAW,YAAY,OAAO,IAAI;AACzD,cAAQ,YAAY;AAAA,IACtB;AAAA,EACF;AAGA,MAAI,QAAQ,QAAQ,CAAC,QAAQ,WAAW;AACtC,WAAO,WAAW,SAAS,QAAQ,WAAW;AAAA,EAChD;AAGA,MAAI,CAAC,QAAQ;AAAW,kBAAY,SAAS,MAAM;AAGnD,MAAI,QAAQ,MAAM,WAAW,QAAQ,GAAG,IAAI,GAAG;AAC7C,eAAG,KAAK,QAAQ,GAAG,MAAM,SAAS,QAAQ,KAAK;AAAA,EACjD;AAGA,MAAI,QAAQ,MAAM,WAAW,QAAQ,GAAG,iBAAiB,GAAG;AAC1D,eAAG,kBAAkB,QAAQ,GAAG,mBAAmB,SAAS,QAAQ,KAAK;AAAA,EAC3E;AAGA,cAAY,OAAO;AAGnB,eAAW,SAAS,OAAO;AAE3B,MAAI,QAAQ;AAAW,WAAO;AAG9B,aAAW,SAAS,QAAQ,GAAG;AAG/B,MAAI,QAAQ,MAAM,WAAW,QAAQ,GAAG,MAAM,GAAG;AAC/C,eAAG,OAAO,QAAQ,GAAG,QAAQ,SAAS,QAAQ,KAAK;AAAA,EACrD;AAEA,MAAI,OAAO;AAAY,WAAO,WAAW,KAAK,QAAQ,GAAG;AAGzD,SAAO;AACT;AAEO,IAAM,iBAAiB,CAAC,QAAQ;AACrC,QAAM,mBAAmB,SAAS,GAAG;AACrC,MAAI,CAAC;AAAkB;AAEvB,QAAM,eAAe,IAAI,MAAM,GAAG,CAAC;AAEnC,SAAO,WAAW,KAAK,YAAY;AACrC;AAEA,IAAO,iBAAQ;;;AC7Qf,IAAO,iBAAQ,CAAC,QAAQ,UAAU,CAAC,MAAM;AACvC,QAAM,EAAE,WAAAE,WAAU,IAAI;AACtB,aAAW,SAAS,QAAQ;AAC1B,QAAI,iBAAS,UAAU,CAACA,YAAW;AACjC,aAAO,sBAAsB,KAAK;AAAA,IACpC;AAAO,uBAAS,SAAS,OAAO;AAAA,EAClC;AACF;;;ACPA,IAAMC,SAAQ,CAAC,YAAY;AACzB,QAAM,cAAc;AAAA,IAClB,MAAM,SAAS,cAAc,KAAK;AAAA,EACpC;AAEA,MAAI,WAAW,QAAQ;AAAM,eAAW,SAAS,WAAW;AAAA;AACvD,mBAAO,SAAS,WAAW;AAEhC,SAAO,YAAY,KAAK;AAC1B;AAEA,IAAO,gBAAQA;;;ApCXf,IAAMC,OAAM;AACZ,IAAIA,SAAQ,UAAUA,SAAQ;AAAe,SAAO,OAAO;AAE3D,IAAO,cAAQ;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
4
+ "sourcesContent": ["'use strict'\n\nimport { window } from '@domql/globals'\nimport { create, parse, set, define, tree } from './element'\n\nconst ENV = process.env.NODE_ENV\nif (ENV === 'test' || ENV === 'development') window.tree = tree\n\nexport default {\n create,\n parse,\n set,\n define,\n tree\n}\n", "'use strict'\n\nconst global = globalThis\nconst self = globalThis\nconst window = globalThis\nconst document = window.document // eslint-disable-line\n\nexport { global, self, window, document }\n", "'use strict'\n\nexport default {\n root: [\n 'body',\n 'html'\n ],\n\n head: [\n 'title',\n 'base',\n 'meta',\n 'style'\n ],\n\n body: [\n 'html',\n 'body',\n 'string',\n 'fragment',\n 'a',\n 'abbr',\n 'acronym',\n 'address',\n 'applet',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'basefont',\n 'bdi',\n 'bdo',\n 'big',\n 'blockquote',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'data',\n 'datalist',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'embed',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'font',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'map',\n 'mark',\n 'meter',\n 'nav',\n 'noframes',\n 'noscript',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'param',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'script',\n 'section',\n 'select',\n 'small',\n 'source',\n 'span',\n 'strike',\n 'strong',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'tt',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n\n // SVG\n 'svg',\n 'path'\n ]\n}\n", "'use strict'\n\nexport const errors = {\n en: {\n DocumentNotDefined: {\n title: 'Document is undefined',\n description: 'To tweak with DOM, you should use browser.'\n },\n OverwriteToBuiltin: {\n title: 'Overwriting to builtin method',\n description: 'Overwriting a builtin method in the global define is not possible, please choose different name'\n },\n BrowserNotDefined: {\n title: 'Can\\'t recognize environment',\n description: 'Environment should be browser application, that can run Javascript'\n },\n SetQuickPreferancesIsNotObject: {\n title: 'Quick preferances object is required',\n description: 'Please pass a plain object with \"lang\", \"culture\" and \"area\" properties'\n },\n InvalidParams: {\n title: 'Params are invalid',\n description: 'Please pass a plain object with \"lang\", \"culture\" and \"area\" properties'\n },\n CantCreateWithoutNode: {\n title: 'You must provide node',\n description: 'Can\\'t create DOM element without setting node or text'\n },\n HTMLInvalidTag: {\n title: 'Element tag name (or DOM nodeName) is invalid',\n description: 'To create element, you must provide valid DOM node. See full list of them at here: http://www.w3schools.com/tags/'\n },\n HTMLInvalidAttr: {\n title: 'Attibutes object is invalid',\n description: 'Please pass a valid plain object to apply as an attributes for a DOM node'\n },\n HTMLInvalidData: {\n title: 'Data object is invalid',\n description: 'Please pass a valid plain object to apply as an dataset for a DOM node'\n },\n HTMLInvalidStyles: {\n title: 'Styles object is invalid',\n description: 'Please pass a valid plain object to apply as an style for a DOM node'\n },\n HTMLInvalidText: {\n title: 'Text string is invalid',\n description: 'Please pass a valid string to apply text to DOM node'\n }\n }\n}\n\nexport const report = (err, arg, element) => {\n const currentLang = 'en'\n let errObj\n if (err && typeof err === 'string') errObj = errors[currentLang][err]\n\n return new Error(\n `\"${err}\", \"${arg}\"\\n\\n`,\n `${errObj.description}`,\n element ? `\\n\\n${element}` : ''\n )\n}\n", "'use strict'\n\nimport { window } from '@domql/globals'\nimport nodes from '../element/nodes'\n\nexport const memoize = (fn) => {\n const cache = {}\n return (...args) => {\n const n = args[0]\n if (n in cache) {\n return cache[n]\n } else {\n const result = fn(n)\n cache[n] = result\n return result\n }\n }\n}\n\nexport const debounce = (element, func, timeout = 300) => {\n let timer\n return (...args) => {\n clearTimeout(timer)\n timer = setTimeout(() => { func.apply(element, args) }, timeout)\n }\n}\n\nexport const isTagRegistered = arg => nodes.body.indexOf(arg)\n\nexport const isObject = arg => {\n if (arg === null) return false\n return (typeof arg === 'object') && (arg.constructor === Object)\n}\n\nexport const isString = arg => typeof arg === 'string'\n\nexport const isNumber = arg => typeof arg === 'number'\n\nexport const isFunction = arg => typeof arg === 'function'\n\nexport const isArray = arg => Array.isArray(arg)\n\nexport const isObjectLike = arg => {\n if (arg === null) return false\n // if (isArray(arg)) return false\n return (typeof arg === 'object')\n}\n\nexport const isNode = obj => {\n return (\n typeof window.Node === 'object'\n ? obj instanceof window.Node\n : obj && typeof obj === 'object' && typeof obj.nodeType === 'number' && typeof obj.nodeName === 'string'\n )\n}\n\nexport const isHtmlElement = obj => {\n return (\n typeof window.HTMLElement === 'object'\n ? obj instanceof window.HTMLElement // DOM2\n : obj && typeof obj === 'object' && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === 'string'\n )\n}\n\nexport const isDefined = arg => {\n return isObject(arg) ||\n isObjectLike(arg) ||\n isString(arg) ||\n isNumber(arg) ||\n isFunction(arg) ||\n isArray(arg) ||\n isObjectLike(arg)\n}\n\nexport const exec = (param, element, state) => {\n if (isFunction(param)) return param(element, state || element.state)\n return param\n}\n\nexport const map = (obj, extention, element) => {\n for (const e in extention) {\n obj[e] = exec(extention[e], element)\n }\n}\n\nexport const merge = (element, obj) => {\n for (const e in obj) {\n const elementProp = element[e]\n const objProp = obj[e]\n if (elementProp === undefined) {\n element[e] = objProp\n }\n }\n return element\n}\n\nexport const deepMerge = (element, extend) => {\n // console.groupCollapsed('deepMerge:')\n for (const e in extend) {\n const elementProp = element[e]\n const extendProp = extend[e]\n // const cachedProps = cache.props\n if (e === 'parent' || e === 'props' || e === 'state') continue\n if (elementProp === undefined) {\n element[e] = extendProp\n } else if (isObjectLike(elementProp) && isObject(extendProp)) {\n deepMerge(elementProp, extendProp)\n }\n }\n // console.groupEnd('deepMerge:')\n return element\n}\n\nexport const clone = obj => {\n const o = {}\n for (const prop in obj) {\n if (prop === 'node') continue\n o[prop] = obj[prop]\n }\n return o\n}\n\n/**\n * Deep cloning of object\n */\nexport const deepClone = (obj, excluding = ['parent', 'node', '__element', 'state', '__root', 'context']) => {\n const o = isArray(obj) ? [] : {}\n for (const prop in obj) {\n if (excluding.indexOf(prop) > -1) continue\n let objProp = obj[prop]\n if (prop === 'extend' && isArray(objProp)) {\n objProp = mergeArray(objProp)\n }\n if (isObjectLike(objProp)) {\n o[prop] = deepClone(objProp)\n } else o[prop] = objProp\n }\n return o\n}\n\n/**\n * Overwrites object properties with another\n */\nexport const isEqualDeep = (param, element) => {\n if (param === element) return true\n if (!param || !element) return false\n for (const prop in param) {\n const paramProp = param[prop]\n const elementProp = element[prop]\n if (isObjectLike(paramProp)) {\n const isEqual = isEqualDeep(paramProp, elementProp)\n if (!isEqual) return false\n } else {\n const isEqual = paramProp === elementProp\n if (!isEqual) return false\n }\n }\n return true\n}\n\n/**\n * Overwrites object properties with another\n */\nexport const overwrite = (element, params, options) => {\n const changes = {}\n\n for (const e in params) {\n if (e === 'props' || e === 'state') continue\n\n const elementProp = element[e]\n const paramsProp = params[e]\n\n if (paramsProp !== undefined) {\n element.__cached[e] = changes[e] = elementProp\n element[e] = paramsProp\n }\n\n if (options.cleanExec) delete element.__exec[e]\n }\n\n return changes\n}\n\nexport const overwriteShallow = (obj, params, excluding = ['node', '__root']) => {\n for (const e in params) {\n if (excluding.indexOf(e) > -1) continue\n obj[e] = params[e]\n }\n return obj\n}\n\n/**\n * Overwrites DEEPly object properties with another\n */\nexport const overwriteDeep = (obj, params, excluding = ['node', '__root']) => {\n for (const e in params) {\n if (excluding.indexOf(e) > -1) continue\n const objProp = obj[e]\n const paramsProp = params[e]\n if (isObjectLike(objProp) && isObjectLike(paramsProp)) {\n overwriteDeep(objProp, paramsProp)\n } else if (paramsProp !== undefined) {\n obj[e] = paramsProp\n }\n }\n return obj\n}\n\n/**\n * Overwrites object properties with another\n */\nexport const mergeIfExisted = (a, b) => {\n if (isObjectLike(a) && isObjectLike(b)) return deepMerge(a, b)\n return a || b\n}\n\n/**\n * Merges array extends\n */\nexport const mergeArray = (arr) => {\n return arr.reduce((a, c) => deepMerge(a, deepClone(c)), {})\n}\n\n/**\n * Merges array extends\n */\nexport const mergeAndCloneIfArray = obj => {\n return isArray(obj) ? mergeArray(obj) : deepClone(obj)\n}\n\n/**\n * Overwrites object properties with another\n */\nexport const flattenRecursive = (param, prop, stack = []) => {\n const objectized = mergeAndCloneIfArray(param)\n stack.push(objectized)\n\n const extendOfExtend = objectized[prop]\n if (extendOfExtend) flattenRecursive(extendOfExtend, prop, stack)\n\n delete objectized[prop]\n\n return stack\n}\n", "'use strict'\n\nexport const createID = (function () {\n let index = 0\n\n function newId () {\n index++\n return index\n }\n\n return newId\n})()\n\nexport const createSnapshotId = createID\n", "'use strict'\n\nimport { window } from '@domql/globals'\nimport { HTML_TAGS } from '@domql/tags'\n\nexport const isValidHtmlTag = arg => HTML_TAGS.body.indexOf(arg)\n\nexport const isObject = arg => {\n if (arg === null) return false\n return (typeof arg === 'object') && (arg.constructor === Object)\n}\n\nexport const isString = arg => typeof arg === 'string'\n\nexport const isNumber = arg => typeof arg === 'number'\n\nexport const isFunction = arg => typeof arg === 'function'\n\nexport const isBoolean = arg => arg === true || arg === false\n\nexport const isNull = arg => arg === null\n\nexport const isArray = arg => Array.isArray(arg)\n\nexport const isObjectLike = arg => {\n if (arg === null) return false\n // if (isArray(arg)) return false\n return (typeof arg === 'object')\n}\n\nexport const isNode = obj => {\n return (\n typeof window.Node === 'object'\n ? obj instanceof window.Node\n : obj && typeof obj === 'object' && typeof obj.nodeType === 'number' && typeof obj.nodeName === 'string'\n )\n}\n\nexport const isHtmlElement = obj => {\n return (\n typeof window.HTMLElement === 'object'\n ? obj instanceof window.HTMLElement // DOM2\n : obj && typeof obj === 'object' && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === 'string'\n )\n}\n\nexport const isDefined = arg => {\n return isObject(arg) ||\n isObjectLike(arg) ||\n isString(arg) ||\n isNumber(arg) ||\n isFunction(arg) ||\n isArray(arg) ||\n isObjectLike(arg) ||\n isBoolean(arg) ||\n isNull(arg)\n}\n\nexport const isUndefined = arg => {\n return arg === undefined\n}\n\nexport const TYPES = {\n boolean: isBoolean,\n array: isArray,\n object: isObject,\n string: isString,\n number: isNumber,\n null: isNull,\n function: isFunction,\n objectLike: isObjectLike,\n node: isNode,\n htmlElement: isHtmlElement,\n defined: isDefined\n}\n\nexport const is = (arg) => {\n return (...args) => {\n return args.map(val => TYPES[val](arg)).filter(v => v).length > 0\n }\n}\n\nexport const isNot = (arg) => {\n return (...args) => {\n return args.map(val => TYPES[val](arg)).filter(v => v).length === 0\n }\n}\n", "'use strict'\n\nimport { isFunction, isObjectLike, isObject, isArray } from './types'\n\nexport const exec = (param, element, state) => {\n if (isFunction(param)) return param(element, state || element.state)\n return param\n}\n\nexport const map = (obj, extention, element) => {\n for (const e in extention) {\n obj[e] = exec(extention[e], element)\n }\n}\n\nexport const merge = (element, obj) => {\n for (const e in obj) {\n const elementProp = element[e]\n const objProp = obj[e]\n if (elementProp === undefined) {\n element[e] = objProp\n }\n }\n return element\n}\n\nexport const deepMerge = (element, extend) => {\n // console.groupCollapsed('deepMerge:')\n for (const e in extend) {\n const elementProp = element[e]\n const extendProp = extend[e]\n // const cachedProps = cache.props\n if (e === 'parent' || e === 'props') continue\n if (elementProp === undefined) {\n element[e] = extendProp\n } else if (isObjectLike(elementProp) && isObject(extendProp)) {\n deepMerge(elementProp, extendProp)\n }\n }\n // console.groupEnd('deepMerge:')\n return element\n}\n\nexport const clone = obj => {\n const o = {}\n for (const prop in obj) {\n if (prop === 'node') continue\n o[prop] = obj[prop]\n }\n return o\n}\n\n/**\n * Deep cloning of object\n */\nexport const deepClone = (obj) => {\n if (isArray(obj)) {\n return obj.map(deepClone)\n }\n const o = {}\n for (const prop in obj) {\n let objProp = obj[prop]\n if (prop === 'extend' && isArray(objProp)) {\n objProp = mergeArray(objProp)\n }\n if (isArray(objProp)) {\n o[prop] = objProp.map(deepClone)\n } else if (isObject(objProp)) {\n o[prop] = deepClone(objProp)\n } else o[prop] = objProp\n }\n return o\n}\n\n/**\n * Overwrites object properties with another\n */\nexport const overwrite = (element, params, options) => {\n const { ref } = element\n const changes = {}\n\n for (const e in params) {\n if (e === 'props') continue\n\n const elementProp = element[e]\n const paramsProp = params[e]\n\n if (paramsProp) {\n ref.__cache[e] = changes[e] = elementProp\n ref[e] = paramsProp\n }\n }\n\n return changes\n}\n\nexport const diff = (obj, original, cache) => {\n const changes = cache || {}\n for (const e in obj) {\n if (e === 'ref') continue\n const originalProp = original[e]\n const objProp = obj[e]\n if (isObjectLike(originalProp) && isObjectLike(objProp)) {\n changes[e] = {}\n diff(originalProp, objProp, changes[e])\n } else if (objProp !== undefined) {\n changes[e] = objProp\n }\n }\n return changes\n}\n\n/**\n * Overwrites object properties with another\n */\nexport const overwriteObj = (params, obj) => {\n const changes = {}\n\n for (const e in params) {\n const objProp = obj[e]\n const paramsProp = params[e]\n\n if (paramsProp) {\n obj[e] = changes[e] = objProp\n }\n }\n\n return changes\n}\n\n/**\n * Overwrites DEEPly object properties with another\n */\nexport const overwriteDeep = (params, obj) => {\n for (const e in params) {\n const objProp = obj[e]\n const paramsProp = params[e]\n if (isObjectLike(objProp) && isObjectLike(paramsProp)) {\n overwriteDeep(objProp, paramsProp)\n } else if (paramsProp !== undefined) {\n obj[e] = paramsProp\n }\n }\n return obj\n}\n\n/**\n * Overwrites object properties with another\n */\nexport const mergeIfExisted = (a, b) => {\n if (isObjectLike(a) && isObjectLike(b)) return deepMerge(a, b)\n return a || b\n}\n\n/**\n * Merges array extendtypes\n */\nexport const mergeArray = (arr) => {\n return arr.reduce((a, c) => deepMerge(a, deepClone(c)), {})\n}\n\n/**\n * Merges array extendtypes\n */\nexport const mergeAndCloneIfArray = obj => {\n return isArray(obj) ? mergeArray(obj) : deepClone(obj)\n}\n\n/**\n * Overwrites object properties with another\n */\nexport const flattenRecursive = (param, prop, stack = []) => {\n const objectized = mergeAndCloneIfArray(param)\n stack.push(objectized)\n\n const extendOfExtend = objectized[prop]\n if (extendOfExtend) flattenRecursive(extendOfExtend, prop, stack)\n\n delete objectized[prop]\n\n return stack\n}\n\nexport const isEqualDeep = (param, element) => {\n if (param === element) return true\n if (!param || !element) return false\n for (const prop in param) {\n const paramProp = param[prop]\n const elementProp = element[prop]\n if (isObjectLike(paramProp)) {\n const isEqual = isEqualDeep(paramProp, elementProp)\n if (!isEqual) return false\n } else {\n const isEqual = paramProp === elementProp\n if (!isEqual) return false\n }\n }\n return true\n}\n", "'use strict'\n\nexport const cleanWithNode = extend => delete extend.node && extend\n\nexport const createID = (function * () {\n let index = 1\n while (index < index + 1) {\n yield index++\n }\n}())\n", "'use strict'\n\nimport { isArray, isFunction, isObject } from '@domql/utils'\n\nexport const generateHash = () => Math.random().toString(36).substring(2)\n\n// hashing\nexport const extendStackRegistry = {}\nexport const extendCachedRegistry = {}\n\nexport const getHashedExtend = extend => {\n return extendStackRegistry[extend.__hash]\n}\n\nexport const setHashedExtend = (extend, stack) => {\n const hash = generateHash()\n extend.__hash = hash\n extendStackRegistry[hash] = stack\n return stack\n}\n\nexport const getExtendStackRegistry = (extend, stack) => {\n if (extend.__hash) { return stack.concat(getHashedExtend(extend)) }\n return setHashedExtend(extend, stack) // stack .concat(hashedExtend)\n}\n\n// stacking\nexport const extractArrayExtend = (extend, stack) => {\n extend.forEach(each => flattenExtend(each, stack))\n return stack\n}\n\nexport const deepExtend = (extend, stack) => {\n const extendOflattenExtend = extend.extend\n if (extendOflattenExtend) {\n flattenExtend(extendOflattenExtend, stack)\n }\n return stack\n}\n\nexport const flattenExtend = (extend, stack) => {\n if (!extend) return stack\n if (isArray(extend)) return extractArrayExtend(extend, stack)\n stack.push(extend)\n if (extend.extend) deepExtend(extend, stack)\n return stack\n}\n\n// merging\nexport const deepCloneExtend = obj => {\n const o = {}\n for (const prop in obj) {\n if (['parent', 'node', '__element', '__root', '__key'].indexOf(prop) > -1) continue\n const objProp = obj[prop]\n if (isObject(objProp)) {\n o[prop] = deepCloneExtend(objProp)\n } else if (isArray(objProp)) {\n o[prop] = objProp.map(x => x)\n } else o[prop] = objProp\n }\n return o\n}\n\nexport const deepMergeExtend = (element, extend) => {\n for (const e in extend) {\n if (['parent', 'node', '__element', '__root', '__key'].indexOf(e) > -1) continue\n const elementProp = element[e]\n const extendProp = extend[e]\n if (elementProp === undefined) {\n element[e] = extendProp\n } else if (isObject(elementProp) && isObject(extendProp)) {\n deepMergeExtend(elementProp, extendProp)\n } else if (isArray(elementProp) && isArray(extendProp)) {\n element[e] = elementProp.concat(extendProp)\n } else if (isArray(elementProp) && isObject(extendProp)) {\n const obj = deepMergeExtend({}, elementProp)\n element[e] = deepMergeExtend(obj, extendProp)\n } else if (elementProp === undefined && isFunction(extendProp)) {\n element[e] = extendProp\n }\n }\n return element\n}\n\nexport const cloneAndMergeArrayExtend = stack => {\n return stack.reduce((a, c) => {\n return deepMergeExtend(a, deepCloneExtend(c))\n }, {})\n}\n\n// joint stacks\nexport const jointStacks = (extendStack, childExtendStack) => {\n return []\n .concat(extendStack.slice(0, 1))\n .concat(childExtendStack.slice(0, 1))\n .concat(extendStack.slice(1))\n .concat(childExtendStack.slice(1))\n}\n\n// init\nexport const getExtendStack = extend => {\n if (!extend) return []\n if (extend.__hash) return getHashedExtend(extend) || []\n const stack = flattenExtend(extend, [])\n return getExtendStackRegistry(extend, stack)\n}\n\nexport const getExtendMerged = extend => {\n const stack = getExtendStack(extend)\n return cloneAndMergeArrayExtend(stack)\n}\n", "'use strict'\n\nimport { document } from '@domql/globals'\nimport { report } from '../utils'\n\nconst root = {\n key: ':root',\n node: document ? document.body : report('DocumentNotDefined', document)\n}\n\nexport default root\n", "'use strict'\n\nimport root from './root'\n\nexport default root\n", "'use strict'\n\nexport const beforeClassAssign = (param, element, state) => {\n return param(element, state)\n}\n\nexport const init = (param, element, state) => {\n return param(element, state)\n}\n\nexport const render = (param, element, state) => {\n return param(element, state)\n}\n\nexport const initUpdate = (param, element, state) => {\n return param(element, state)\n}\n\nexport const attachNode = (param, element, state) => {\n return param(element, state)\n}\n\nexport const stateInit = (param, element, state) => {\n return param(element, state)\n}\n\nexport const stateCreated = (param, element, state) => {\n return param(element, state)\n}\n\nexport const initStateUpdated = (param, element, state, changes) => {\n return param(element, state, changes)\n}\n\nexport const stateUpdated = (param, element, state, changes) => {\n return param(element, state, changes)\n}\n\nexport const update = (param, element, state) => {\n return param(element, state)\n}\n", "'use strict'\n\nimport { nodes } from '../element'\nimport { report } from '../utils'\n\nexport const render = (element) => {\n const tag = element.tag || 'div'\n const isValid = nodes.body.indexOf(tag) > -1\n return isValid || report('HTMLInvalidTag')\n}\n", "'use strict'\n\nimport { document } from '@domql/globals'\nimport { can } from '../event'\nimport { exec, isString, isTagRegistered, report } from '../utils'\n\nconst cachedElements = {}\n\nconst createNode = (element) => {\n const { tag } = element\n if (tag) {\n if (tag === 'string') return document.createTextNode(element.text)\n else if (tag === 'fragment') {\n return document.createDocumentFragment()\n } else if (tag === 'svg' || tag === 'path') { // change that\n return document.createElementNS('http://www.w3.org/2000/svg', tag)\n } else return document.createElement(tag)\n } else {\n return document.createElement('div')\n }\n}\n\nexport const detectTag = element => {\n let { tag, key } = element\n tag = exec(tag, element)\n\n if (tag === true) tag = key\n\n if (isString(tag)) {\n const tagExists = isTagRegistered(tag) > -1\n if (tagExists) return tag\n } else {\n const isKeyATag = isTagRegistered(key) > -1\n if (isKeyATag) return key\n }\n\n return 'div'\n}\n\nexport default (element) => {\n const tag = element.tag = detectTag(element)\n\n if (!can.render(element)) {\n return report('HTMLInvalidTag')\n }\n\n let cachedTag = cachedElements[tag]\n if (!cachedTag) cachedTag = cachedElements[tag] = createNode(element)\n\n const clonedNode = cachedTag.cloneNode(true)\n if (tag === 'string') clonedNode.nodeValue = element.text\n return clonedNode\n}\n", "'use strict'\n\nimport { isNot } from '@domql/utils'\nimport { exec, report } from '../../utils'\n\n/**\n * Recursively add attributes to a DOM node\n */\nexport default (params, element, node) => {\n const { __attr } = element\n if (isNot('object')) report('HTMLInvalidAttr', params)\n if (params) {\n for (const attr in params) {\n const val = exec(params[attr], element)\n // if (__attr[attr] === val) return\n if (val && node.setAttribute) node.setAttribute(attr, val)\n else if (node.removeAttribute) node.removeAttribute(attr)\n __attr[attr] = val\n }\n }\n console.groupEnd(params, __attr)\n}\n", "'use strict'\n\nimport { exec, isObject, isString } from '../../utils'\n\nexport const assignClass = (element) => {\n const { key } = element\n if (element.class === true) element.class = key\n else if (!element.class && typeof key === 'string' && key.charAt(0) === '_' && key.charAt(1) !== '_') {\n element.class = key.slice(1)\n }\n}\n\n// stringifies class object\nexport const classify = (obj, element) => {\n let className = ''\n for (const item in obj) {\n const param = obj[item]\n if (typeof param === 'boolean' && param) className += ` ${item}`\n else if (typeof param === 'string') className += ` ${param}`\n else if (typeof param === 'function') {\n className += ` ${exec(param, element)}`\n }\n }\n return className\n}\n\nexport default (params, element, node, live) => {\n if (!params) return\n const { key } = element // eslint-disable-line\n if (params === true) params = element.class = { key }\n if (isString(params)) params = element.class = { default: params }\n if (isObject(params)) params = classify(params, element)\n // TODO: fails on string\n const className = params.replace(/\\s+/g, ' ').trim()\n node.classList = className\n return className\n}\n", "'use strict'\n\nexport default {}\n", "'use strict'\n\nimport create from './create'\nimport { isEqualDeep, isFunction } from '../utils'\nimport { registry } from './mixins'\nimport OPTIONS from './options'\n\nexport const removeContentElement = function (el) {\n const element = el || this\n if (element.content) {\n if (element.content.node) {\n if (element.content.tag === 'fragment') element.node.innerHTML = ''\n else element.node.removeChild(element.content.node)\n }\n\n const { __cached } = element\n if (__cached && __cached.content) {\n if (__cached.content.tag === 'fragment') __cached.content.parent.node.innerHTML = ''\n else if (__cached.content && isFunction(__cached.content.remove)) __cached.content.remove()\n }\n\n delete element.content\n }\n}\n\nconst set = function (params, options = {}, el) {\n const element = el || this\n\n const isEqual = isEqualDeep(params, element.content)\n // console.error(params)\n if (isEqual && element.content.__cached) return element\n removeContentElement(element)\n\n if (params) {\n const { childExtend } = params\n if (!childExtend && element.childExtend) params.childExtend = element.childExtend\n create(params, element, 'content', {\n ignoreChildExtend: true,\n ...registry.defaultOptions,\n ...OPTIONS.create,\n ...options\n })\n }\n\n return element\n}\n\nexport default set\n", "'use strict'\n\nimport set from '../set'\n\n/**\n * Appends anything as content\n * an original one as a child\n */\nexport default (param, element, node, options) => {\n if (param && element) {\n if (param.__hash === element.content.__hash && element.content.update) {\n element.content.update(param)\n } else {\n set.call(element, param, options)\n }\n }\n}\n", "'use strict'\n\nimport { exec, isObject } from '../../utils'\nimport { report } from '../../utils/report'\n\n/**\n * Apply data parameters on the DOM nodes\n * this should only work if `showOnNode: true` is passed\n */\nexport default (params, element, node) => {\n if (params && params.showOnNode) {\n if (!isObject(params)) report('HTMLInvalidData', params)\n\n // Apply data params on node\n for (const dataset in params) {\n if (dataset !== 'showOnNode') {\n node.dataset[dataset] = exec(params[dataset], element)\n }\n }\n }\n}\n", "'use strict'\n\nimport { exec } from '../../utils'\n\n/**\n * Appends raw HTML as content\n * an original one as a child\n */\nexport default (param, element, node) => {\n const prop = exec(param, element)\n if (prop !== element.__html) {\n // const parser = new window.DOMParser()\n // param = parser.parseFromString(param, 'text/html')\n if (node.nodeName === 'SVG') node.textContent = prop\n else node.innerHTML = prop\n\n element.__html = prop\n }\n}\n", "'use strict'\n\nimport { isObject, map } from '../../utils'\nimport { report } from '../../utils/report'\n\n/**\n * Recursively add styles to a DOM node\n */\nexport default (params, element, node) => {\n if (params) {\n if (isObject(params)) map(node.style, params, element)\n else report('HTMLInvalidStyles', params)\n }\n}\n", "'use strict'\n\nimport { create } from '..'\nimport { exec } from '../../utils'\n\n/**\n * Creates a text node and appends into\n * an original one as a child\n */\nexport const asd = (param, element, node) => {\n const prop = exec(param, element)\n if (element.tag === 'string') {\n node.nodeValue = prop\n } else if (param !== undefined || param !== null) {\n if (element.__text && element.__text.text !== prop) return\n element.__text.text = prop\n if (element.__text.node) element.__text.node.nodeValue = prop\n else create({ tag: 'string', text: prop }, element, '__text')\n }\n}\n\nexport default (param, element, node) => {\n const prop = exec(param, element)\n if (element.tag === 'string') {\n if (element.text === prop) return\n node.nodeValue = prop\n } else if (param !== undefined || param !== null) {\n if (element.__text) {\n if (element.__text.text === prop) return\n element.__text.text = prop\n if (element.__text.node) element.__text.node.nodeValue = prop\n } else create({ tag: 'string', text: prop }, element, '__text')\n }\n}\n", "'use strict'\n\nimport { on } from '../event'\nimport { deepClone, exec, overwriteShallow, overwriteDeep } from '../utils'\nimport { is, isObject, isFunction, isUndefined } from '@domql/utils'\n\nexport const IGNORE_STATE_PARAMS = [\n 'update', 'parse', 'clean', 'create', 'parent', '__element', '__depends', '__ref', '__root',\n '__components',\n '__projectSystem', '__projectState', '__projectComponents', '__projectPages', '__projectFiddles',\n 'projectStateUpdate', 'projectSystemUpdate'\n]\n\nexport const parseState = function () {\n const state = this\n const parseState = {}\n for (const param in state) {\n if (!IGNORE_STATE_PARAMS.includes(param)) {\n parseState[param] = state[param]\n }\n }\n return parseState\n}\n\nexport const cleanState = function () {\n const state = this\n for (const param in state) {\n if (!IGNORE_STATE_PARAMS.includes(param)) {\n delete state[param]\n }\n }\n return state\n}\n\nexport const projectSystemUpdate = function (obj, options = {}) {\n const state = this\n if (!state) return\n const rootState = (state.__element.__root || state.__element).state\n rootState.update({ PROJECT_SYSTEM: obj }, options)\n return state\n}\n\nexport const projectStateUpdate = function (obj, options = {}) {\n const state = this\n if (!state) return\n const rootState = (state.__element.__root || state.__element).state\n rootState.update({ PROJECT_STATE: obj }, options)\n return state\n}\n\nexport const updateState = function (obj, options = {}) {\n const state = this\n const element = state.__element\n state.parent = element.parent.state\n\n if (!state.__element) createState(element, element.parent)\n\n // run `on.stateUpdated`\n if (element.on && isFunction(element.on.initStateUpdated)) {\n const initReturns = on.initStateUpdated(element.on.initStateUpdated, element, state, obj)\n if (initReturns === false) return\n }\n\n const stateKey = element.__state\n if (stateKey) {\n // TODO: check for double parent\n if (state.parent && state.parent[stateKey]) {\n const keyInParentState = state.parent[stateKey]\n if (keyInParentState && !options.stopStatePropogation) {\n if (element.__stateType === 'string') {\n return state.parent.update({ [stateKey]: obj.value }, options)\n }\n return state.parent.update({ [stateKey]: obj }, options)\n }\n }\n } else {\n if (options && options.shallow) {\n overwriteShallow(state, obj, IGNORE_STATE_PARAMS)\n } else {\n overwriteDeep(state, obj, IGNORE_STATE_PARAMS)\n }\n }\n\n // TODO: try debounce\n if (!options.preventUpdate) { element.update({}, options) } else if (options.preventUpdate === 'recursive') { element.update({}, { ...options, preventUpdate: true }) }\n\n if (state.__depends) {\n for (const el in state.__depends) {\n const findElement = state.__depends[el]\n findElement.clean().update(state.parse(), options)\n }\n }\n\n if (!options.preventUpdateListener && element.on && isFunction(element.on.stateUpdated)) {\n on.stateUpdated(element.on.stateUpdated, element, state, obj)\n }\n}\n\nexport const createState = function (element, parent, opts) {\n const skip = (opts && opts.skip) ? opts.skip : false\n\n let { state, __root } = element\n\n if (isFunction(state)) state = exec(state, element)\n\n if (is(state)('string', 'number')) {\n element.__state = state\n state = {}\n }\n if (state === true) {\n element.__state = element.key\n state = {}\n }\n\n if (!state) {\n if (parent && parent.state) return parent.state\n return {}\n } else {\n element.__hasRootState = true\n }\n\n // run `on.init`\n if (element.on && isFunction(element.on.stateInit)) {\n on.stateInit(element.on.stateInit, element, element.state)\n }\n\n let stateKey = element.__state\n if (stateKey) {\n let parentState = parent.state\n let parentStateKey\n const parents = stateKey.split('../')\n for (let i = 1; i < parents.length; i++) {\n stateKey = parents[i]\n parentState = parentState.parent\n }\n if (stateKey.includes('.')) {\n [parentStateKey, stateKey] = stateKey.split('.')\n parentState = parentState[parentStateKey]\n }\n if (parentState && parentState[stateKey]) {\n const keyInParentState = parentState[stateKey]\n if (is(keyInParentState)('object', 'array')) {\n state = deepClone(keyInParentState)\n } else if (is(keyInParentState)('string', 'number')) {\n state = { value: keyInParentState }\n element.__stateType = 'string'\n } else if (isUndefined(keyInParentState)) {\n console.warn(stateKey, 'is not in present', 'replacing with ', {})\n state = {}\n }\n }\n }\n\n // reference other state\n const { __ref } = state\n if (__ref) {\n state = deepClone(__ref, IGNORE_STATE_PARAMS)\n if (isObject(__ref.__depends)) {\n __ref.__depends[element.key] = state\n } else __ref.__depends = { [element.key]: state }\n } else {\n state = deepClone(state, IGNORE_STATE_PARAMS)\n }\n\n element.state = state\n\n // NOTE: Only true when 'onlyResolveExtends' option is set to true\n if (skip) return state\n\n state.clean = cleanState\n state.parse = parseState\n state.update = updateState\n state.create = createState\n state.parent = element.parent.state\n state.__element = element\n state.__root = __root ? __root.state : state\n\n // editor stuff\n state.projectSystemUpdate = projectSystemUpdate\n state.projectStateUpdate = projectStateUpdate\n state.__components = state.__root.COMPONENTS\n state.__projectSystem = state.__root.PROJECT_SYSTEM\n state.__projectState = state.__root.PROJECT_STATE\n state.__projectComponents = state.__root.PROJECT_COMPONENTS\n state.__projectPages = state.__root.PROJECT_PAGES\n state.__projectFiddles = state.__root.PROJECT_FIDDLES\n\n // run `on.stateCreated`\n if (element.on && isFunction(element.on.stateCreated)) {\n on.stateCreated(element.on.stateCreated, element, state)\n }\n\n return state\n}\n\nexport default createState\n", "'use strict'\n\nimport { exec, isObject } from '../../utils'\nimport { IGNORE_STATE_PARAMS } from '../state'\n\nexport default (params, element, node) => {\n const state = exec(params, element)\n\n if (isObject(state)) {\n for (const param in state) {\n if (IGNORE_STATE_PARAMS.includes(param)) continue\n element.state[param] = exec(state[param], element)\n }\n }\n\n return element\n}\n", "'use strict'\n\nimport {\n attr,\n style,\n text,\n html,\n content,\n data,\n classList,\n state\n} from '.'\n\nexport default {\n attr,\n style,\n text,\n html,\n content,\n data,\n class: classList,\n state,\n\n extend: {},\n childExtend: {},\n childExtendRecursive: {},\n props: {},\n path: {},\n if: {},\n define: {},\n transform: {},\n __hash: {},\n __componentKey: {},\n __cached: {},\n __defined: {},\n __exec: {},\n __changes: {},\n __trash: {},\n __root: {},\n __props: {},\n __extend: {},\n __ifFragment: {},\n __children: {},\n __ifFalsy: {},\n __text: {},\n __element: {},\n __html: {},\n __class: {},\n __className: {},\n __classNames: {},\n __attr: {},\n __state: {},\n __stateType: {},\n __currentSnapshot: {},\n __hasRootState: {},\n nextElement: {},\n previousElement: {},\n key: {},\n tag: {},\n query: {},\n parent: {},\n node: {},\n set: {},\n update: {},\n setProps: {},\n remove: {},\n removeContent: {},\n lookup: {},\n spotByPath: {},\n keys: {},\n log: {},\n parse: {},\n parseDeep: {},\n on: {},\n component: {},\n context: {}\n}\n\n// List of keys for .parse() and .parseDeep() to include in the result.\n// Keys not in the array are excluded.\nexport const parseFilters = {\n elementKeys: [\n 'tag', 'text', 'style', 'attr', 'class', 'state', 'class',\n 'data', 'content', 'html'\n // TODO: 'props' ?\n ],\n propsKeys: ['__element'],\n stateKeys: []\n}\n", "'use strict'\n\nimport { isFunction, isObjectLike } from '../utils'\nimport { registry, parseFilters } from './mixins'\nimport root from './root'\n\nconst ENV = process.env.NODE_ENV\n\n// TODO: update these files\nexport const lookup = function (key) {\n const element = this\n let { parent } = element\n\n while (parent.key !== key) {\n if (parent[key]) return parent[key]\n parent = parent.parent\n if (!parent) return\n }\n\n return parent\n}\n\n// TODO: update these files\nexport const spotByPath = function (path) {\n const element = this\n const arr = [].concat(path)\n let active = root[arr[0]]\n\n if (!arr || !arr.length) return console.log(arr, 'on', element.key, 'is undefined')\n\n while (active.key === arr[0]) {\n arr.shift()\n if (!arr.length) break\n active = active[arr[0]]\n if (!active) return\n }\n\n return active\n}\n\nexport const remove = function (params) {\n const element = this\n if (isFunction(element.node.remove)) element.node.remove()\n else if (ENV === 'test' || ENV === 'development') {\n console.warn('This item cant be removed')\n element.log()\n }\n delete element.parent[element.key]\n}\n\nexport const get = function (param) {\n const element = this\n return element[param]\n}\n\nexport const set = function () {\n}\n\nexport const update = function () {\n}\n\nexport const setProps = function (param, options) {\n const element = this\n if (!param || !element.props) return\n element.update({ props: param }, options)\n return element\n}\n\nexport const defineSetter = (element, key, get, set) =>\n Object.defineProperty(element, key, { get, set })\n\nexport const keys = function () {\n const element = this\n const keys = []\n for (const param in element) {\n if (registry[param] && !parseFilters.elementKeys.includes(param)) { continue }\n keys.push(param)\n }\n return keys\n}\n\nexport const parse = function () {\n const element = this\n const obj = {}\n const keyList = keys.call(element)\n keyList.forEach(v => (obj[v] = element[v]))\n return obj\n}\n\nexport const parseDeep = function () {\n const element = this\n const obj = parse.call(element)\n for (const k in obj) {\n if (isObjectLike(obj[k])) { obj[k] = parseDeep.call(obj[k]) }\n }\n return obj\n}\n\nexport const log = function (...args) {\n const element = this\n console.group(element.key)\n if (args.length) {\n args.forEach(v => console.log(`%c${v}:\\n`, 'font-weight: bold', element[v]))\n } else {\n console.log(element.path)\n const keys = element.keys()\n keys.forEach(v => console.log(`%c${v}:\\n`, 'font-weight: bold', element[v]))\n }\n console.groupEnd(element.key)\n return element\n}\n\nexport const isMethod = function (param) {\n return param === 'set' ||\n param === 'update' ||\n param === 'remove' ||\n param === 'removeContent' ||\n param === 'lookup' ||\n param === 'spotByPath' ||\n param === 'keys' ||\n param === 'parse' ||\n param === 'setProps' ||\n param === 'parseDeep' ||\n param === 'if' ||\n param === 'log' ||\n param === 'nextElement' ||\n param === 'previousElement'\n}\n\nexport const nextElement = function () {\n const element = this\n const { key, parent } = element\n const { __children } = parent\n\n const currentIndex = __children.indexOf(key)\n const nextChild = __children[currentIndex + 1]\n console.log(nextChild)\n\n return parent[nextChild]\n}\n\nexport const previousElement = function (el) {\n const element = el || this\n const { key, parent } = element\n const { __children } = parent\n\n if (!__children) return\n\n const currentIndex = __children.indexOf(key)\n return parent[__children[currentIndex - 1]]\n}\n", "'use strict'\n\nimport { isObject, exec, isFunction, isNumber, isString, overwrite } from '../utils'\nimport { isMethod } from './methods'\n\nexport const applyEvents = element => {\n const { node, on } = element\n for (const param in on) {\n if (\n param === 'init' ||\n param === 'render' ||\n param === 'update'\n ) continue\n\n const appliedFunction = element.on[param]\n if (isFunction(appliedFunction)) {\n node.addEventListener(param, event =>\n appliedFunction(event, element, element.state),\n true)\n }\n }\n}\n\nexport const throughInitialExec = element => {\n for (const param in element) {\n const prop = element[param]\n if (isFunction(prop) && !isMethod(param)) {\n element.__exec[param] = prop\n element[param] = prop(element, element.state)\n }\n }\n}\n\nexport const throughUpdatedExec = (element, options) => {\n const { __exec } = element\n const changes = {}\n\n for (const param in __exec) {\n const prop = element[param]\n const newExec = __exec[param](element, element.state)\n\n // if element is string\n if (prop && prop.node && (isString(newExec) || isNumber(newExec))) {\n overwrite(prop, { text: newExec }, options)\n } else if (newExec !== prop) {\n element.__cached[param] = changes[param] = prop\n element[param] = newExec\n }\n }\n\n return changes\n}\n\nexport const throughInitialDefine = (element) => {\n const { define, context } = element\n\n let obj = {}\n if (isObject(define)) obj = { ...define }\n if (isObject(context.define)) obj = { ...obj, ...context.define }\n\n for (const param in obj) {\n let prop = element[param]\n\n if (isFunction(prop) && !isMethod(param)) {\n element.__exec[param] = prop\n element[param] = prop = exec(prop, element)\n }\n\n element.__cached[param] = prop\n element[param] = obj[param](prop, element, element.state)\n }\n return element\n}\n\nexport const throughUpdatedDefine = (element) => {\n const { context, define, __exec } = element\n const changes = {}\n\n let obj = {}\n if (isObject(define)) obj = { ...define }\n if (isObject(context && context.define)) obj = { ...obj, ...context.define }\n\n for (const param in obj) {\n const execParam = __exec[param]\n if (execParam) element.__cached[param] = execParam(element, element.state)\n const cached = exec(element.__cached[param], element)\n element[param] = obj[param](cached, element, element.state)\n }\n return changes\n}\n", "'use strict'\n\nimport create from './create'\nimport cacheNode from './cache'\nimport * as on from '../event/on'\n\nimport { exec, isFunction, isObject } from '../utils'\nimport {\n throughInitialDefine,\n throughInitialExec,\n applyEvents\n} from './iterate'\nimport { registry } from './mixins'\nimport { isMethod } from './methods'\n// import { defineSetter } from './methods'\n\nconst ENV = process.env.NODE_ENV\n\n// const defineSetter = (element, key) => Object.defineProperty(element, key, {\n// get: function () {\n// console.log('GET', key)\n// return element.__data[key]\n// },\n// set: function (new_value) {\n// console.log('SET', key, new_value)\n// element.__data[key] = new_value\n// element.__data['modified'] = (new Date()).getTime()\n// }\n// })\n\nexport const createNode = (element, options) => {\n // create and assign a node\n let { node, tag, context } = element\n\n let isNewNode\n\n if (!node) {\n isNewNode = true\n\n if (element.__ifFalsy) return element\n\n if (tag === 'shadow') {\n node = element.node = element.parent.node.attachShadow({ mode: 'open' })\n } else node = element.node = cacheNode(element)\n\n // run `on.attachNode`\n if (element.on && isFunction(element.on.attachNode)) {\n on.attachNode(element.on.attachNode, element, element.state)\n }\n }\n\n // node.dataset // .key = element.key\n\n if (ENV === 'test' || ENV === 'development') {\n node.ref = element\n if (isFunction(node.setAttribute)) node.setAttribute('key', element.key)\n }\n\n if (element.__ifFalsy) return element\n\n // iterate through all given params\n if (element.tag !== 'string' || element.tag !== 'fragment') {\n // iterate through define\n throughInitialDefine(element)\n\n // iterate through exec\n throughInitialExec(element)\n\n // apply events\n if (isNewNode && isObject(element.on)) applyEvents(element)\n\n for (const param in element) {\n const prop = element[param]\n\n if (isMethod(param) || isObject(registry[param]) || prop === undefined) continue\n\n const DOMQLProperty = registry[param]\n const DOMQLPropertyFromContext = context.registry && context.registry[param]\n const isGlobalTransformer = DOMQLPropertyFromContext || DOMQLProperty\n\n const hasDefine = element.define && element.define[param]\n const hasContextDefine = context.define && context.define[param]\n\n // Check if param is in our method registry\n if (isGlobalTransformer && !hasContextDefine) {\n if (isFunction(isGlobalTransformer)) isGlobalTransformer(prop, element, node, options)\n } else if (element[param] && !hasDefine && !hasContextDefine) {\n // Create element\n create(exec(prop, element), element, param, options)\n }\n }\n }\n\n // node.dataset.key = key\n return element\n}\n\nexport default createNode\n", "'use strict'\n\n/**\n * Receives child and parent nodes as parametes\n * and assigns them into real DOM tree\n */\nexport const appendNode = (node, parentNode) => {\n parentNode.appendChild(node)\n return node\n}\n\n/**\n * Receives elements and assigns the first\n * parameter as a child of the second one\n */\nexport const assignNode = (element, parent, key) => {\n parent[key || element.key] = element\n if (element.tag !== 'shadow') {\n appendNode(element.node, parent.node)\n }\n return element\n}\n", "'use strict'\n\nimport { isFunction, exec, getExtendStack, jointStacks, cloneAndMergeArrayExtend, deepMergeExtend, isString } from '../utils'\n\nconst ENV = process.env.NODE_ENV\n\n/**\n * Checks whether element has `extend` or is a part\n * of parent's `childExtend` extend\n */\nexport const applyExtend = (element, parent, options = {}) => {\n if (isFunction(element)) element = exec(element, parent)\n\n let { extend, props, context } = element\n const COMPONENTS = (context && context.components) || options.components\n\n if (isString(extend)) extend = COMPONENTS[extend]\n const extendStack = getExtendStack(extend)\n\n if (ENV !== 'test' || ENV !== 'development') delete element.extend\n\n let childExtendStack = []\n if (parent) {\n // Assign parent attr to the element\n element.parent = parent\n if (!options.ignoreChildExtend) {\n if (props && props.ignoreChildExtend) return\n\n childExtendStack = getExtendStack(parent.childExtend)\n\n if (parent.childExtendRecursive) {\n const childExtendRecursiveStack = getExtendStack(parent.childExtendRecursive)\n childExtendStack = childExtendStack.concat(childExtendRecursiveStack)\n element.childExtendRecursive = parent.childExtendRecursive\n }\n }\n }\n\n const extendLength = extendStack.length\n const childExtendLength = childExtendStack.length\n\n let stack = []\n if (extendLength && childExtendLength) {\n stack = jointStacks(extendStack, childExtendStack)\n } else if (extendLength) {\n stack = extendStack\n } else if (childExtendLength) {\n stack = childExtendStack\n } else if (!options.extend) return element\n\n if (options.extend) {\n const defaultOptionsExtend = getExtendStack(options.extend)\n stack = [].concat(stack, defaultOptionsExtend)\n }\n\n element.__extend = stack\n let mergedExtend = cloneAndMergeArrayExtend(stack)\n\n const component = exec(element.component || mergedExtend.component, element)\n if (component && COMPONENTS && COMPONENTS[component]) {\n const componentExtend = cloneAndMergeArrayExtend(getExtendStack(COMPONENTS[component]))\n mergedExtend = deepMergeExtend(componentExtend, mergedExtend)\n }\n\n return deepMergeExtend(element, mergedExtend)\n}\n", "'use strict'\n\nimport { deepClone, deepMerge, exec, isArray, isObject, isString } from '../utils'\n\nconst initProps = (element, parent) => {\n const { props } = element\n const propsStack = []\n\n const isMatch = isString(props) && props.indexOf('match') > -1\n const matchParent = parent.props && parent.props[element.key]\n const matchParentChild = parent.props && parent.props.childProps\n\n const objectizeStringProperty = propValue => {\n if (isString(propValue)) return { inheritedString: propValue }\n return propValue\n }\n\n if (matchParent && props !== 'match') propsStack.push(matchParent)\n if (matchParentChild) propsStack.push(matchParentChild)\n\n if (isObject(props)) {\n propsStack.push(props)\n }\n\n if (props === 'inherit') {\n if (parent.props) propsStack.push(parent.props)\n } else if (isMatch) {\n const hasArg = props.split(' ')\n let matchParentValue\n // console.log('hasArg', hasArg)\n if (hasArg[1] && parent.props[hasArg[1]]) {\n const secondArgasParentMatchProp = parent.props[hasArg[1]]\n propsStack.push(\n objectizeStringProperty(secondArgasParentMatchProp)\n )\n } else if (matchParent) {\n propsStack.push(\n objectizeStringProperty(matchParent)\n )\n }\n propsStack.push(matchParentValue)\n } else if (props) propsStack.push(props)\n\n if (isArray(element.__extend)) {\n element.__extend.map(extend => {\n if (extend.props) propsStack.push(extend.props)\n return extend.props\n })\n }\n\n return propsStack\n}\n\nconst inheritProps = (element, parent) => {\n element.props = (parent && parent.props) || { update, __element: element }\n}\n\nexport const syncProps = (props, element) => {\n element.props = {}\n const mergedProps = { update, __element: element }\n props.forEach(v => {\n if (v === 'update' || v === '__element') return\n element.props = deepMerge(mergedProps, deepClone(exec(v, element)))\n })\n element.props = mergedProps\n return element.props\n}\n\nconst createProps = function (element, parent, cached) {\n const propsStack = cached || initProps(element, parent)\n\n if (propsStack.length) {\n element.__props = propsStack\n syncProps(propsStack, element)\n element.props.update = update\n } else inheritProps(element, parent)\n\n return element\n}\n\nexport const updateProps = (newProps, element, parent) => {\n let propsStack = element.__props\n\n if (newProps) propsStack = element.__props = [].concat(newProps, propsStack)\n\n if (propsStack) syncProps(propsStack, element)\n else inheritProps(element, parent)\n\n // console.log(cachedProps)\n return element\n}\n\nfunction update (props, options) {\n const element = this.__element\n // element.update({ props })\n element.update({ props }, options)\n}\n\nexport default createProps\n", "'use strict'\n\nimport { overwrite, isFunction, isObject, isString, isNumber, createSnapshotId, merge } from '../utils'\nimport { registry } from './mixins'\nimport { on } from '../event'\nimport { isMethod } from './methods'\nimport { throughUpdatedDefine, throughUpdatedExec } from './iterate'\nimport { appendNode } from './assign'\nimport { createNode } from './node'\nimport { updateProps } from './props'\nimport createState from './state'\nimport { diff } from '@domql/utils'\nimport { window } from '@domql/globals'\n\nconst snapshot = {\n snapshotId: createSnapshotId\n}\n\nconst UPDATE_DEFAULT_OPTIONS = {\n stackChanges: false,\n cleanExec: true,\n preventRecursive: false,\n currentSnapshot: false,\n calleeElement: false\n}\n\nconst update = function (params = {}, options = UPDATE_DEFAULT_OPTIONS) {\n const element = this\n const { parent, node, context } = element\n\n const { currentSnapshot, calleeElement } = options\n if (!calleeElement) {\n element.__currentSnapshot = snapshot.snapshotId()\n }\n const snapshotOnCallee = element.__currentSnapshot || (calleeElement && calleeElement.__currentSnapshot)\n if (snapshotOnCallee && currentSnapshot < snapshotOnCallee) {\n // console.log(calleeElement)\n // console.log(currentSnapshot, snapshotOnCallee, 'cancelling')\n // return\n }\n\n if (isString(params) || isNumber(params)) {\n params = { text: params }\n }\n\n if (isFunction(element.if)) {\n // TODO: move as fragment\n const ifPassed = element.if(element, element.state)\n\n if (ifPassed) delete element.__ifFalsy\n if (element.__ifFalsy && ifPassed) {\n createNode(element)\n appendNode(element.node, element.__ifFragment)\n } else if (element.node && !ifPassed) {\n element.node.remove()\n element.__ifFalsy = true\n }\n }\n\n if (element.__state) {\n const keyInParentState = parent.state[element.__state]\n if (keyInParentState) {\n const newState = element.__stateType === 'string'\n ? createState(element, parent)\n : createState(element, parent)\n const changes = diff(newState.parse(), element.state.parse())\n\n // run `on.stateUpdated`\n if (element.on && isFunction(element.on.initStateUpdated)) {\n const initReturns = on.initStateUpdated(element.on.initStateUpdated, element, element.state, changes)\n if (initReturns === false) return\n }\n\n element.state = newState\n\n if (!options.preventUpdateListener && element.on && isFunction(element.on.stateUpdated)) {\n on.stateUpdated(element.on.stateUpdated, element, element.state, changes)\n }\n }\n } else if (!element.__hasRootState) element.state = (parent && parent.state) || {}\n\n if (!element.__ifFalsy && !options.preventPropsUpdate) updateProps(params.props, element, parent)\n\n if (element.on && isFunction(element.on.initUpdate) && !options.ignoreInitUpdate) {\n const whatinitreturns = on.initUpdate(element.on.initUpdate, element, element.state)\n if (whatinitreturns === false) return\n }\n\n const overwriteChanges = overwrite(element, params, UPDATE_DEFAULT_OPTIONS)\n const execChanges = throughUpdatedExec(element, UPDATE_DEFAULT_OPTIONS)\n const definedChanges = throughUpdatedDefine(element)\n\n if (options.stackChanges && element.__stackChanges) {\n const stackChanges = merge(definedChanges, merge(execChanges, overwriteChanges))\n element.__stackChanges.push(stackChanges)\n }\n\n if (element.__ifFalsy) return false\n if (!node) {\n // return createNode(element, options)\n return\n }\n\n for (const param in element) {\n const prop = element[param]\n\n if (\n options.preventDefineUpdate === true ||\n options.preventDefineUpdate === param ||\n (options.preventContentUpdate && param === 'content') ||\n (options.preventStateUpdate && param) === 'state' ||\n isMethod(param) || isObject(registry[param]) || prop === undefined\n ) continue\n if (options.preventStateUpdate === 'once') options.preventStateUpdate = false\n\n const DOMQLProperty = registry[param]\n const DOMQLPropertyFromContext = context.registry && context.registry[param]\n const isGlobalTransformer = DOMQLPropertyFromContext || DOMQLProperty\n\n const hasDefine = element.define && element.define[param]\n const hasContextDefine = context.define && context.define[param]\n\n if (isGlobalTransformer && !hasContextDefine) {\n if (isFunction(isGlobalTransformer)) isGlobalTransformer(prop, element, node, options)\n } else if (prop && isObject(prop) && !hasDefine && !hasContextDefine) {\n if (!options.preventRecursive) {\n const childUpdateCall = () => update.call(prop, params[prop], {\n ...options,\n currentSnapshot: snapshotOnCallee,\n calleeElement: element\n })\n if (element.props.lazyLoad || options.lazyLoad) {\n window.requestAnimationFrame(() => childUpdateCall())\n } else childUpdateCall()\n }\n }\n }\n\n if (!options.preventUpdate && element.on && isFunction(element.on.update)) {\n on.update(element.on.update, element, element.state)\n }\n}\n\nexport default update\n", "'use strict'\n\nimport root from './root'\nimport createNode from './node'\nimport { appendNode, assignNode } from './assign'\nimport { applyExtend } from './extend'\nimport nodes from './nodes'\nimport set, { removeContentElement } from './set'\nimport createState from './state'\nimport createProps from './props'\nimport update from './update'\nimport { on } from '../event'\nimport { assignClass } from './mixins/classList'\nimport { isObject, isFunction, isNumber, isString, createID, isNode, exec } from '../utils'\nimport { remove, lookup, setProps, log, keys, parse, parseDeep, spotByPath, nextElement, previousElement, isMethod } from './methods'\nimport cacheNode, { detectTag } from './cache'\nimport { registry } from './mixins'\nimport { throughInitialExec } from './iterate'\nimport OPTIONS from './options'\n// import { overwrite, clone, fillTheRest } from '../utils'\n\nconst ENV = process.env.NODE_ENV\n\n/**\n * Creating a domQL element using passed parameters\n */\nconst create = (element, parent, key, options = OPTIONS.create || {}) => {\n if (options && !OPTIONS.create) OPTIONS.create = options\n\n // if ELEMENT is not given\n if (element === undefined) {\n if (ENV === 'test' || ENV === 'development') { console.warn(key, 'element is undefined in', parent && parent.path) }\n element = {}\n }\n if (element === null) return\n if (element === true) element = { text: true }\n\n // if element is extend\n if (element.__hash) {\n element = { extend: element }\n }\n\n // if PARENT is not given\n if (!parent) parent = root\n if (isNode(parent)) parent = root[`${key}_parent`] = { key: ':root', node: parent }\n\n // if element is STRING\n if (isString(element) || isNumber(element)) {\n const extendTag = element.extend && element.extend.tag\n const childExtendTag = parent.childExtend && parent.childExtend.tag\n const isKeyValidHTMLTag = ((nodes.body.indexOf(key) > -1) && key)\n element = {\n text: element,\n tag: extendTag || childExtendTag || isKeyValidHTMLTag || 'string'\n }\n }\n\n // define KEY\n const assignedKey = (element.key || key || createID()).toString()\n\n const { extend, props, state, childExtend, childProps } = element\n\n if (isKeyComponent(assignedKey)) {\n const hasComponentAttrs = extend || childExtend || props || state || element.on\n const componentKey = assignedKey.split('_')[0]\n if (!hasComponentAttrs || childProps) {\n parent[assignedKey] = element = {\n extend: componentKey || assignedKey,\n props: { ...element }\n }\n } else if (!extend || extend === true) {\n parent[assignedKey] = element = {\n ...element,\n extend: componentKey || assignedKey\n }\n }\n }\n\n // Responsive rendering\n // TODO: move as define plugin\n if (assignedKey.slice(0, 1) === '@') {\n if (props) {\n props.display = 'none'\n if (props[assignedKey]) props[assignedKey].display = props.display\n else props[assignedKey] = { display: props.display || 'block' }\n } else {\n parent[assignedKey] = element = {\n ...element,\n props: {\n display: 'none',\n [assignedKey]: { display: 'block' }\n }\n }\n }\n }\n\n // assign context\n if (options.context && !root.context && !element.context) root.context = options.context\n if (!element.context) element.context = parent.context || options.context || root.context\n const { context } = element\n\n if (context && context.components) {\n const { components } = context\n const { extend } = element\n const execExtend = exec(extend, element)\n if (isString(execExtend)) {\n if (components[execExtend]) element.extend = components[execExtend]\n else {\n if ((ENV === 'test' || ENV === 'development') && options.verbose) {\n console.warn(execExtend, 'is not in library', components, element)\n console.warn('replacing with ', {})\n }\n element.extend = {}\n }\n }\n }\n\n // Only resolve extends, skip everything else\n if (options.onlyResolveExtends) {\n applyExtend(element, parent, options)\n element.key = assignedKey\n element.tag = detectTag(element)\n\n if (!element.__exec) element.__exec = {}\n if (!element.__attr) element.__attr = {}\n if (!element.__ifFalsy) createProps(element, parent)\n element.state = createState(element, parent, { skip: true })\n\n throughInitialExec(element)\n\n for (const param in element) {\n const prop = element[param]\n if (isMethod(param) || isObject(registry[param]) || prop === undefined) continue\n\n const hasDefined = element.define && element.define[param]\n const ourParam = registry[param]\n const hasOptionsDefine = options.define && options.define[param]\n if (ourParam && !hasOptionsDefine) {\n continue // if (isFunction(ourParam)) ourParam(prop, element, element.node, options)\n } else if (element[param] && !hasDefined && !hasOptionsDefine) {\n create(exec(prop, element), element, param, options)\n }\n }\n\n // createNode(element, options)\n\n delete element.parent\n delete element.update\n delete element.__element\n\n // added by createProps\n delete element.__props\n delete element.props.__element\n delete element.props.update\n\n // added by createState\n delete element.state.__element\n delete element.state.__element\n delete element.__hasRootState\n\n return element\n }\n\n // create EXTEND inheritance\n applyExtend(element, parent, options)\n\n if (Object.keys(options).length) {\n registry.defaultOptions = options\n if (options.ignoreChildExtend) delete options.ignoreChildExtend\n }\n\n // create and assign a KEY\n element.key = assignedKey\n\n // enable TRANSFORM in data\n if (!element.transform) element.transform = {}\n\n // enable CACHING\n if (!element.__cached) element.__cached = {}\n\n // enable EXEC\n if (!element.__exec) element.__exec = {}\n\n // enable CLASS CACHING\n if (!element.__class) element.__class = {}\n if (!element.__classNames) element.__classNames = {}\n\n // enable CLASS CACHING\n if (!element.__attr) element.__attr = {}\n\n // enable CHANGES storing\n if (!element.__changes) element.__changes = []\n\n // enable CHANGES storing\n if (!element.__children) element.__children = []\n\n // Add _root element property\n const hasRoot = parent && parent.key === ':root'\n if (!element.__root) element.__root = hasRoot ? element : parent.__root\n\n // set the PATH array\n if (ENV === 'test' || ENV === 'development') {\n if (!parent.path) parent.path = []\n element.path = parent.path.concat(assignedKey)\n }\n\n // assign METHODS\n element.set = set\n element.update = update\n element.remove = remove\n element.removeContent = removeContentElement\n element.setProps = setProps\n element.lookup = lookup\n element.spotByPath = spotByPath\n element.parse = parse\n element.parseDeep = parseDeep\n element.keys = keys\n element.nextElement = nextElement\n element.previousElement = previousElement\n if (ENV === 'test' || ENV === 'development') {\n element.log = log\n }\n\n // enable STATE\n element.state = createState(element, parent)\n\n // don't render IF in condition\n if (isFunction(element.if)) {\n // TODO: move as fragment\n if (!element.if(element, element.state)) {\n const ifFragment = cacheNode({ tag: 'fragment' })\n element.__ifFragment = appendNode(ifFragment, parent.node)\n element.__ifFalsy = true\n }\n }\n\n // if it already HAS a NODE\n if (element.node && !element.__ifFalsy) { // TODO: check on if\n return assignNode(element, parent, assignedKey)\n }\n\n // apply props settings\n if (!element.__ifFalsy) createProps(element, parent)\n\n // run `on.init`\n if (element.on && isFunction(element.on.init)) {\n on.init(element.on.init, element, element.state)\n }\n\n // run `on.beforeClassAssign`\n if (element.on && isFunction(element.on.beforeClassAssign)) {\n on.beforeClassAssign(element.on.beforeClassAssign, element, element.state)\n }\n\n // generate a CLASS name\n assignClass(element)\n\n // CREATE a real NODE\n createNode(element, options)\n\n if (element.__ifFalsy) return element\n\n // assign NODE\n assignNode(element, parent, key)\n\n // run `on.render`\n if (element.on && isFunction(element.on.render)) {\n on.render(element.on.render, element, element.state)\n }\n\n if (parent.__children) parent.__children.push(element.key)\n // console.groupEnd(element.key)\n\n return element\n}\n\nexport const isKeyComponent = (key) => {\n const isFirstKeyString = isString(key)\n if (!isFirstKeyString) return\n\n const firstCharKey = key.slice(0, 1)\n\n return /^[A-Z]*$/.test(firstCharKey)\n}\n\nexport default create\n", "'use strict'\n\nimport { registry } from './mixins'\nimport { report } from '../utils'\n\nexport default (params, options = {}) => {\n const { overwrite } = options\n for (const param in params) {\n if (registry[param] && !overwrite) {\n report('OverwriteToBuiltin', param)\n } else registry[param] = params[param]\n }\n}\n", "'use strict'\n\nimport create from './create'\nimport { assignNode } from './assign'\n\nconst parse = (element) => {\n const virtualTree = {\n node: document.createElement('div')\n }\n\n if (element && element.node) assignNode(element, virtualTree)\n else create(element, virtualTree)\n\n return virtualTree.node.innerHTML\n}\n\nexport default parse\n"],
5
+ "mappings": "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",
6
6
  "names": ["document", "isObject", "isString", "isNumber", "isFunction", "isArray", "isObjectLike", "isNode", "isObjectLike", "createID", "isArray", "isObject", "isFunction", "document", "render", "render", "document", "parseState", "isFunction", "isObject", "state_default", "state_default", "keys", "ENV", "createNode", "ENV", "update", "update", "createNode", "ENV", "extend", "overwrite", "parse", "ENV"]
7
7
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "domql",
3
3
  "description": "DOM rendering Javascript framework at early stage.",
4
4
  "author": "symbo.ls",
5
- "version": "1.5.92",
5
+ "version": "1.5.93",
6
6
  "repository": "https://github.com/domql/domql",
7
7
  "publishConfig": {
8
8
  "registry": "https://registry.npmjs.org"
@@ -56,7 +56,7 @@ export const throughInitialDefine = (element) => {
56
56
 
57
57
  let obj = {}
58
58
  if (isObject(define)) obj = { ...define }
59
- if (isObject(context.define)) obj = { ...obj, ...context.define }
59
+ if (context && isObject(context.define)) obj = { ...obj, ...context.define }
60
60
 
61
61
  for (const param in obj) {
62
62
  let prop = element[param]
@@ -75,11 +75,11 @@ export const createNode = (element, options) => {
75
75
  if (isMethod(param) || isObject(registry[param]) || prop === undefined) continue
76
76
 
77
77
  const DOMQLProperty = registry[param]
78
- const DOMQLPropertyFromContext = context.registry && context.registry[param]
78
+ const DOMQLPropertyFromContext = context && context.registry && context.registry[param]
79
79
  const isGlobalTransformer = DOMQLPropertyFromContext || DOMQLProperty
80
80
 
81
81
  const hasDefine = element.define && element.define[param]
82
- const hasContextDefine = context.define && context.define[param]
82
+ const hasContextDefine = context && context.define && context.define[param]
83
83
 
84
84
  // Check if param is in our method registry
85
85
  if (isGlobalTransformer && !hasContextDefine) {
@@ -114,11 +114,11 @@ const update = function (params = {}, options = UPDATE_DEFAULT_OPTIONS) {
114
114
  if (options.preventStateUpdate === 'once') options.preventStateUpdate = false
115
115
 
116
116
  const DOMQLProperty = registry[param]
117
- const DOMQLPropertyFromContext = context.registry && context.registry[param]
117
+ const DOMQLPropertyFromContext = context && context.registry && context.registry[param]
118
118
  const isGlobalTransformer = DOMQLPropertyFromContext || DOMQLProperty
119
119
 
120
120
  const hasDefine = element.define && element.define[param]
121
- const hasContextDefine = context.define && context.define[param]
121
+ const hasContextDefine = context && context.define && context.define[param]
122
122
 
123
123
  if (isGlobalTransformer && !hasContextDefine) {
124
124
  if (isFunction(isGlobalTransformer)) isGlobalTransformer(prop, element, node, options)