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 +77 -52
- package/dist/index.cjs.js.map +2 -2
- package/package.json +1 -1
- package/src/element/iterate.js +1 -1
- package/src/element/node.js +2 -2
- package/src/element/update.js +2 -2
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
|
|
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
|
-
"
|
|
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
|
-
|
|
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 =
|
|
978
|
-
state.__projectSystem =
|
|
979
|
-
state.__projectState =
|
|
980
|
-
state.
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
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 {
|
|
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
|
|
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
|
|
1551
|
-
const
|
|
1552
|
-
const
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
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
|
|
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.
|
|
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.
|
|
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);
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -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": "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",
|
|
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.
|
|
5
|
+
"version": "1.5.93",
|
|
6
6
|
"repository": "https://github.com/domql/domql",
|
|
7
7
|
"publishConfig": {
|
|
8
8
|
"registry": "https://registry.npmjs.org"
|
package/src/element/iterate.js
CHANGED
|
@@ -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]
|
package/src/element/node.js
CHANGED
|
@@ -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) {
|
package/src/element/update.js
CHANGED
|
@@ -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)
|