domql 1.6.4 → 1.6.6
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/cjs/element/applyParam.js +41 -0
- package/dist/cjs/element/create.js +266 -0
- package/dist/cjs/element/define.js +34 -0
- package/dist/cjs/element/extend.js +75 -0
- package/dist/cjs/element/index.js +49 -0
- package/dist/cjs/element/iterate.js +99 -0
- package/dist/cjs/element/methods.js +116 -0
- package/dist/cjs/element/node.js +80 -0
- package/dist/cjs/element/options.js +24 -0
- package/dist/cjs/element/parse.js +42 -0
- package/dist/cjs/element/props.js +116 -0
- package/dist/cjs/element/remove.js +44 -0
- package/dist/cjs/element/set.js +55 -0
- package/dist/cjs/element/state.js +279 -0
- package/dist/cjs/element/update.js +182 -0
- package/dist/cjs/index.js +36 -0
- package/dist/cjs/utils/component.js +76 -0
- package/dist/cjs/utils/extendUtils.js +142 -0
- package/dist/cjs/utils/index.js +20 -0
- package/dist/cjs/utils/object.js +152 -0
- package/dist/esm/element/applyParam.js +4644 -0
- package/dist/esm/element/create.js +4644 -0
- package/dist/esm/element/define.js +4653 -0
- package/dist/esm/element/extend.js +3395 -0
- package/dist/esm/element/index.js +4675 -0
- package/dist/esm/element/iterate.js +3338 -0
- package/dist/esm/element/methods.js +4657 -0
- package/dist/esm/element/node.js +4645 -0
- package/dist/esm/element/options.js +5 -0
- package/dist/esm/element/parse.js +4657 -0
- package/dist/esm/element/props.js +3370 -0
- package/dist/esm/element/remove.js +991 -0
- package/dist/esm/element/set.js +4644 -0
- package/dist/esm/element/state.js +4656 -0
- package/dist/esm/element/update.js +4642 -0
- package/dist/esm/index.js +4676 -0
- package/dist/esm/utils/component.js +1023 -0
- package/dist/esm/utils/extendUtils.js +1089 -0
- package/dist/esm/utils/index.js +3536 -0
- package/dist/esm/utils/object.js +3364 -0
- package/dist/iife/index.js +4676 -0
- package/package.json +1 -1
- package/src/element/methods.js +1 -1
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var node_exports = {};
|
|
26
|
+
__export(node_exports, {
|
|
27
|
+
createNode: () => createNode,
|
|
28
|
+
default: () => node_default
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(node_exports);
|
|
31
|
+
var import_utils = require("@domql/utils");
|
|
32
|
+
var import_event = require("@domql/event");
|
|
33
|
+
var import_methods = require("@domql/methods");
|
|
34
|
+
var import_node = require("@domql/node");
|
|
35
|
+
var import_create = __toESM(require("./create"));
|
|
36
|
+
var import_iterate = require("./iterate");
|
|
37
|
+
var import_mixins = require("./mixins");
|
|
38
|
+
var import_applyParam = require("./applyParam");
|
|
39
|
+
const ENV = "development";
|
|
40
|
+
const createNode = (element, options) => {
|
|
41
|
+
let { node, tag, __ref } = element;
|
|
42
|
+
let isNewNode;
|
|
43
|
+
if (!node) {
|
|
44
|
+
isNewNode = true;
|
|
45
|
+
if (!__ref.__if)
|
|
46
|
+
return element;
|
|
47
|
+
if (tag === "shadow") {
|
|
48
|
+
node = element.node = element.parent.node.attachShadow({ mode: "open" });
|
|
49
|
+
} else
|
|
50
|
+
node = element.node = (0, import_node.cacheNode)(element);
|
|
51
|
+
(0, import_event.triggerEventOn)("attachNode", element);
|
|
52
|
+
}
|
|
53
|
+
if (ENV === "test" || ENV === "development" || options.alowRefReference) {
|
|
54
|
+
node.ref = element;
|
|
55
|
+
if ((0, import_utils.isFunction)(node.setAttribute))
|
|
56
|
+
node.setAttribute("key", element.key);
|
|
57
|
+
}
|
|
58
|
+
if (!__ref.__if)
|
|
59
|
+
return element;
|
|
60
|
+
if (element.tag !== "string" || element.tag !== "fragment") {
|
|
61
|
+
(0, import_iterate.throughInitialDefine)(element);
|
|
62
|
+
(0, import_iterate.throughInitialExec)(element);
|
|
63
|
+
if (isNewNode && (0, import_utils.isObject)(element.on))
|
|
64
|
+
(0, import_event.applyEventsOnNode)(element);
|
|
65
|
+
for (const param in element) {
|
|
66
|
+
const prop = element[param];
|
|
67
|
+
if ((0, import_methods.isMethod)(param) || (0, import_utils.isObject)(import_mixins.registry[param]) || prop === void 0)
|
|
68
|
+
continue;
|
|
69
|
+
const isElement = (0, import_applyParam.applyParam)(param, element, options);
|
|
70
|
+
if (isElement) {
|
|
71
|
+
const { hasDefine, hasContextDefine } = isElement;
|
|
72
|
+
if (element[param] && !hasDefine && !hasContextDefine) {
|
|
73
|
+
(0, import_create.default)((0, import_utils.exec)(prop, element), element, param, options);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return element;
|
|
79
|
+
};
|
|
80
|
+
var node_default = createNode;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var options_exports = {};
|
|
20
|
+
__export(options_exports, {
|
|
21
|
+
default: () => options_default
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(options_exports);
|
|
24
|
+
var options_default = {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var parse_exports = {};
|
|
26
|
+
__export(parse_exports, {
|
|
27
|
+
default: () => parse_default
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(parse_exports);
|
|
30
|
+
var import_render = require("@domql/render");
|
|
31
|
+
var import_create = __toESM(require("./create"));
|
|
32
|
+
const parse = (element) => {
|
|
33
|
+
const virtualTree = {
|
|
34
|
+
node: document.createElement("div")
|
|
35
|
+
};
|
|
36
|
+
if (element && element.node)
|
|
37
|
+
(0, import_render.assignNode)(element, virtualTree);
|
|
38
|
+
else
|
|
39
|
+
(0, import_create.default)(element, virtualTree);
|
|
40
|
+
return virtualTree.node.innerHTML;
|
|
41
|
+
};
|
|
42
|
+
var parse_default = parse;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var props_exports = {};
|
|
20
|
+
__export(props_exports, {
|
|
21
|
+
IGNORE_PROPS_PARAMS: () => IGNORE_PROPS_PARAMS,
|
|
22
|
+
default: () => props_default,
|
|
23
|
+
syncProps: () => syncProps,
|
|
24
|
+
updateProps: () => updateProps
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(props_exports);
|
|
27
|
+
var import_utils = require("@domql/utils");
|
|
28
|
+
var import_utils2 = require("../utils");
|
|
29
|
+
const IGNORE_PROPS_PARAMS = ["update", "__element"];
|
|
30
|
+
const objectizeStringProperty = (propValue) => {
|
|
31
|
+
if ((0, import_utils.is)(propValue)("string", "number"))
|
|
32
|
+
return { inheritedString: propValue };
|
|
33
|
+
return propValue;
|
|
34
|
+
};
|
|
35
|
+
const inheritParentProps = (element, parent) => {
|
|
36
|
+
let propsStack = [];
|
|
37
|
+
const parentProps = (0, import_utils.exec)(parent, parent.state).props;
|
|
38
|
+
const matchParent = parent.props && parentProps[element.key];
|
|
39
|
+
const matchParentIsString = (0, import_utils.isString)(matchParent);
|
|
40
|
+
const matchParentChildProps = parentProps && parentProps.childProps;
|
|
41
|
+
if (matchParent) {
|
|
42
|
+
if (matchParentIsString) {
|
|
43
|
+
const inheritedStringExists = propsStack.filter((v) => v.inheritedString)[0];
|
|
44
|
+
if (inheritedStringExists)
|
|
45
|
+
inheritedStringExists.inheritedString = matchParent;
|
|
46
|
+
else {
|
|
47
|
+
propsStack = [].concat(objectizeStringProperty(matchParent), propsStack);
|
|
48
|
+
}
|
|
49
|
+
} else {
|
|
50
|
+
propsStack.push(objectizeStringProperty(matchParent));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (matchParentChildProps)
|
|
54
|
+
propsStack.push(matchParentChildProps);
|
|
55
|
+
return propsStack;
|
|
56
|
+
};
|
|
57
|
+
const createPropsStack = (element, parent) => {
|
|
58
|
+
const { props, __ref } = element;
|
|
59
|
+
const propsStack = __ref.__props = inheritParentProps(element, parent);
|
|
60
|
+
if ((0, import_utils.isObject)(props))
|
|
61
|
+
propsStack.push(props);
|
|
62
|
+
else if (props === "inherit" && parent.props)
|
|
63
|
+
propsStack.push(parent.props);
|
|
64
|
+
else if (props)
|
|
65
|
+
propsStack.push(props);
|
|
66
|
+
if ((0, import_utils.isArray)(__ref.__extend)) {
|
|
67
|
+
__ref.__extend.map((extend) => {
|
|
68
|
+
if (extend.props)
|
|
69
|
+
propsStack.push(extend.props);
|
|
70
|
+
return extend.props;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
__ref.__props = propsStack;
|
|
74
|
+
return propsStack;
|
|
75
|
+
};
|
|
76
|
+
const syncProps = (props, element) => {
|
|
77
|
+
element.props = {};
|
|
78
|
+
const mergedProps = { update, __element: element };
|
|
79
|
+
props.forEach((v) => {
|
|
80
|
+
if (IGNORE_PROPS_PARAMS.includes(v))
|
|
81
|
+
return;
|
|
82
|
+
const execProps = (0, import_utils.exec)(v, element);
|
|
83
|
+
if ((0, import_utils.isObject)(execProps) && execProps.__element)
|
|
84
|
+
return;
|
|
85
|
+
element.props = (0, import_utils2.deepMerge)(mergedProps, (0, import_utils2.deepClone)(execProps));
|
|
86
|
+
});
|
|
87
|
+
element.props = mergedProps;
|
|
88
|
+
return element.props;
|
|
89
|
+
};
|
|
90
|
+
const createProps = function(element, parent, cached) {
|
|
91
|
+
const propsStack = cached || createPropsStack(element, parent);
|
|
92
|
+
const { __ref } = element;
|
|
93
|
+
if (propsStack.length) {
|
|
94
|
+
__ref.__props = propsStack;
|
|
95
|
+
syncProps(propsStack, element);
|
|
96
|
+
element.props.update = update;
|
|
97
|
+
}
|
|
98
|
+
return element;
|
|
99
|
+
};
|
|
100
|
+
const updateProps = (newProps, element, parent) => {
|
|
101
|
+
const { __ref } = element;
|
|
102
|
+
let propsStack = __ref.__props;
|
|
103
|
+
const parentProps = inheritParentProps(element, parent);
|
|
104
|
+
if (parentProps)
|
|
105
|
+
propsStack = __ref.__props = [].concat(parentProps, propsStack);
|
|
106
|
+
if (newProps)
|
|
107
|
+
propsStack = __ref.__props = [].concat(newProps, propsStack);
|
|
108
|
+
if (propsStack)
|
|
109
|
+
syncProps(propsStack, element);
|
|
110
|
+
return element;
|
|
111
|
+
};
|
|
112
|
+
function update(props, options) {
|
|
113
|
+
const element = this.__element;
|
|
114
|
+
element.update({ props }, options);
|
|
115
|
+
}
|
|
116
|
+
var props_default = createProps;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var remove_exports = {};
|
|
20
|
+
__export(remove_exports, {
|
|
21
|
+
removeContentElement: () => removeContentElement
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(remove_exports);
|
|
24
|
+
var import_utils = require("@domql/utils");
|
|
25
|
+
const removeContentElement = function(el) {
|
|
26
|
+
const element = el || this;
|
|
27
|
+
const { __ref } = element;
|
|
28
|
+
if (element.content) {
|
|
29
|
+
if (element.content.node) {
|
|
30
|
+
if (element.content.tag === "fragment")
|
|
31
|
+
element.node.innerHTML = "";
|
|
32
|
+
else
|
|
33
|
+
element.node.removeChild(element.content.node);
|
|
34
|
+
}
|
|
35
|
+
const { __cached } = __ref;
|
|
36
|
+
if (__cached && __cached.content) {
|
|
37
|
+
if (__cached.content.tag === "fragment")
|
|
38
|
+
__cached.content.parent.node.innerHTML = "";
|
|
39
|
+
else if (__cached.content && (0, import_utils.isFunction)(__cached.content.remove))
|
|
40
|
+
__cached.content.remove();
|
|
41
|
+
}
|
|
42
|
+
delete element.content;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var set_exports = {};
|
|
26
|
+
__export(set_exports, {
|
|
27
|
+
default: () => set_default
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(set_exports);
|
|
30
|
+
var import_utils = require("@domql/utils");
|
|
31
|
+
var import_remove = require("./remove");
|
|
32
|
+
var import_create = __toESM(require("./create"));
|
|
33
|
+
var import_mixins = require("./mixins");
|
|
34
|
+
var import_options = __toESM(require("./options"));
|
|
35
|
+
const set = function(params, options = {}, el) {
|
|
36
|
+
const element = el || this;
|
|
37
|
+
const __contentRef = element.content && element.content.__ref;
|
|
38
|
+
const isEqual = (0, import_utils.isEqualDeep)(params, element.content);
|
|
39
|
+
if (isEqual && __contentRef && __contentRef.__cached)
|
|
40
|
+
return element;
|
|
41
|
+
(0, import_remove.removeContentElement)(element);
|
|
42
|
+
if (params) {
|
|
43
|
+
const { childExtend } = params;
|
|
44
|
+
if (!childExtend && element.childExtend)
|
|
45
|
+
params.childExtend = element.childExtend;
|
|
46
|
+
(0, import_create.default)(params, element, "content", {
|
|
47
|
+
ignoreChildExtend: true,
|
|
48
|
+
...import_mixins.registry.defaultOptions,
|
|
49
|
+
...import_options.default.create,
|
|
50
|
+
...options
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
return element;
|
|
54
|
+
};
|
|
55
|
+
var set_default = set;
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var state_exports = {};
|
|
20
|
+
__export(state_exports, {
|
|
21
|
+
IGNORE_STATE_PARAMS: () => IGNORE_STATE_PARAMS,
|
|
22
|
+
apply: () => apply,
|
|
23
|
+
clean: () => clean,
|
|
24
|
+
createState: () => createState,
|
|
25
|
+
default: () => state_default,
|
|
26
|
+
destroy: () => destroy,
|
|
27
|
+
isState: () => isState,
|
|
28
|
+
parse: () => parse,
|
|
29
|
+
remove: () => remove,
|
|
30
|
+
rootUpdate: () => rootUpdate,
|
|
31
|
+
updateState: () => updateState
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(state_exports);
|
|
34
|
+
var import_event = require("@domql/event");
|
|
35
|
+
var import_utils = require("@domql/utils");
|
|
36
|
+
var import_utils2 = require("../utils");
|
|
37
|
+
var import__ = require(".");
|
|
38
|
+
const IGNORE_STATE_PARAMS = [
|
|
39
|
+
"update",
|
|
40
|
+
"parse",
|
|
41
|
+
"clean",
|
|
42
|
+
"create",
|
|
43
|
+
"destroy",
|
|
44
|
+
"remove",
|
|
45
|
+
"apply",
|
|
46
|
+
"rootUpdate",
|
|
47
|
+
"parent",
|
|
48
|
+
"__element",
|
|
49
|
+
"__depends",
|
|
50
|
+
"__ref",
|
|
51
|
+
"__children",
|
|
52
|
+
"__root"
|
|
53
|
+
];
|
|
54
|
+
const parse = function() {
|
|
55
|
+
const state = this;
|
|
56
|
+
if ((0, import_utils.isObject)(state)) {
|
|
57
|
+
const obj = {};
|
|
58
|
+
for (const param in state) {
|
|
59
|
+
if (!IGNORE_STATE_PARAMS.includes(param)) {
|
|
60
|
+
obj[param] = state[param];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return obj;
|
|
64
|
+
} else if ((0, import_utils.isArray)(state)) {
|
|
65
|
+
return state.filter((item) => !IGNORE_STATE_PARAMS.includes(item));
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const clean = function(options = {}) {
|
|
69
|
+
const state = this;
|
|
70
|
+
for (const param in state) {
|
|
71
|
+
if (!IGNORE_STATE_PARAMS.includes(param)) {
|
|
72
|
+
delete state[param];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
state.update(state, { skipOverwrite: true, options });
|
|
76
|
+
return state;
|
|
77
|
+
};
|
|
78
|
+
const destroy = function() {
|
|
79
|
+
const state = this;
|
|
80
|
+
const element = state.__element;
|
|
81
|
+
delete element.state;
|
|
82
|
+
element.state = state.parent;
|
|
83
|
+
if (state.parent) {
|
|
84
|
+
delete state.parent.__children[element.key];
|
|
85
|
+
}
|
|
86
|
+
if (state.__children) {
|
|
87
|
+
for (const key in state.__children) {
|
|
88
|
+
const child = state.__children[key];
|
|
89
|
+
if (child.state) {
|
|
90
|
+
child.parent = state.parent;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
element.state.update();
|
|
95
|
+
return element.state;
|
|
96
|
+
};
|
|
97
|
+
const rootUpdate = function(obj, options = {}) {
|
|
98
|
+
const state = this;
|
|
99
|
+
if (!state)
|
|
100
|
+
return;
|
|
101
|
+
const rootState = state.__element.__ref.__root.state;
|
|
102
|
+
return rootState.update(obj, options);
|
|
103
|
+
};
|
|
104
|
+
const updateState = function(obj, options = {}) {
|
|
105
|
+
const state = this;
|
|
106
|
+
const element = state.__element;
|
|
107
|
+
const __elementRef = element.__ref;
|
|
108
|
+
const parentState = element.parent.state;
|
|
109
|
+
state.parent = parentState;
|
|
110
|
+
for (const param in state) {
|
|
111
|
+
if ((0, import_utils.isUndefined)(state[param])) {
|
|
112
|
+
delete state[param];
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (!state.__element) {
|
|
116
|
+
(0, import__.create)(element, element.parent);
|
|
117
|
+
}
|
|
118
|
+
const initStateUpdateReturns = (0, import_event.triggerEventOn)("initStateUpdated", element, obj);
|
|
119
|
+
if (initStateUpdateReturns === false)
|
|
120
|
+
return element;
|
|
121
|
+
if (!options.skipOverwrite) {
|
|
122
|
+
if (options.shallow) {
|
|
123
|
+
(0, import_utils2.overwriteShallow)(state, obj, IGNORE_STATE_PARAMS);
|
|
124
|
+
} else {
|
|
125
|
+
(0, import_utils2.overwriteDeep)(state, obj, IGNORE_STATE_PARAMS);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
const stateKey = __elementRef.__state;
|
|
129
|
+
const shouldPropagateState = stateKey && parentState && parentState[stateKey] && !options.stopStatePropagation;
|
|
130
|
+
if (shouldPropagateState) {
|
|
131
|
+
const isStringState = __elementRef.__stateType === "string";
|
|
132
|
+
const value = isStringState ? state.value : state.parse();
|
|
133
|
+
parentState[stateKey] = value;
|
|
134
|
+
parentState.update(value, { skipOverwrite: true, ...options });
|
|
135
|
+
return state;
|
|
136
|
+
}
|
|
137
|
+
if (!options.preventUpdate) {
|
|
138
|
+
element.update({}, options);
|
|
139
|
+
} else if (options.preventUpdate === "recursive") {
|
|
140
|
+
element.update({}, { ...options, preventUpdate: true });
|
|
141
|
+
}
|
|
142
|
+
if (state.__depends) {
|
|
143
|
+
for (const el in state.__depends) {
|
|
144
|
+
const findElement = state.__depends[el];
|
|
145
|
+
findElement.clean().update(state.parse(), options);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (!options.preventUpdateListener) {
|
|
149
|
+
(0, import_event.triggerEventOn)("stateUpdated", element, obj);
|
|
150
|
+
}
|
|
151
|
+
return state;
|
|
152
|
+
};
|
|
153
|
+
const remove = function(key, options) {
|
|
154
|
+
const state = this;
|
|
155
|
+
if ((0, import_utils.isArray)(state))
|
|
156
|
+
(0, import_utils.removeFromArray)(state, key);
|
|
157
|
+
if ((0, import_utils.isObject)(state))
|
|
158
|
+
(0, import_utils.removeFromObject)(state, key);
|
|
159
|
+
return state.update(state, { skipOverwrite: true, options });
|
|
160
|
+
};
|
|
161
|
+
const apply = function(func, options) {
|
|
162
|
+
const state = this;
|
|
163
|
+
if ((0, import_utils.isFunction)(func)) {
|
|
164
|
+
func(state);
|
|
165
|
+
return state.update(state, { skipOverwrite: true, options });
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
const getParentStateInKey = (stateKey, parentState) => {
|
|
169
|
+
const arr = stateKey.split("../");
|
|
170
|
+
const arrLength = arr.length - 1;
|
|
171
|
+
for (let i = 0; i < arrLength; i++) {
|
|
172
|
+
if (!parentState.parent)
|
|
173
|
+
return null;
|
|
174
|
+
parentState = parentState.parent;
|
|
175
|
+
}
|
|
176
|
+
return parentState;
|
|
177
|
+
};
|
|
178
|
+
const getChildStateInKey = (stateKey, parentState) => {
|
|
179
|
+
const arr = stateKey.split("/");
|
|
180
|
+
const arrLength = arr.length - 1;
|
|
181
|
+
for (let i = 0; i < arrLength; i++) {
|
|
182
|
+
const childKey = arr[i];
|
|
183
|
+
const grandChildKey = arr[i + 1];
|
|
184
|
+
const childInParent = parentState[childKey];
|
|
185
|
+
if (childInParent && childInParent[grandChildKey]) {
|
|
186
|
+
stateKey = grandChildKey;
|
|
187
|
+
parentState = childInParent;
|
|
188
|
+
} else
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
return parentState[stateKey];
|
|
192
|
+
};
|
|
193
|
+
const createInheritedState = function(element, parent) {
|
|
194
|
+
const __elementRef = element.__ref;
|
|
195
|
+
let stateKey = __elementRef.__state;
|
|
196
|
+
if (!stateKey)
|
|
197
|
+
return element.state;
|
|
198
|
+
let parentState = parent.state;
|
|
199
|
+
if (stateKey.includes("../")) {
|
|
200
|
+
parentState = getParentStateInKey(stateKey, parent.state);
|
|
201
|
+
stateKey = stateKey.replaceAll("../", "");
|
|
202
|
+
}
|
|
203
|
+
if (!parentState)
|
|
204
|
+
return {};
|
|
205
|
+
const keyInParentState = getChildStateInKey(stateKey, parentState);
|
|
206
|
+
if (!keyInParentState)
|
|
207
|
+
return {};
|
|
208
|
+
if ((0, import_utils.is)(keyInParentState)("object", "array")) {
|
|
209
|
+
return (0, import_utils2.deepClone)(keyInParentState);
|
|
210
|
+
} else if ((0, import_utils.is)(keyInParentState)("string", "number")) {
|
|
211
|
+
__elementRef.__stateType = "string";
|
|
212
|
+
return { value: keyInParentState };
|
|
213
|
+
}
|
|
214
|
+
console.warn(stateKey, "is not present. Replacing with", {});
|
|
215
|
+
return {};
|
|
216
|
+
};
|
|
217
|
+
const createState = function(element, parent, opts) {
|
|
218
|
+
const skip = opts && opts.skip ? opts.skip : false;
|
|
219
|
+
let { state, __ref: __elementRef } = element;
|
|
220
|
+
if ((0, import_utils.isFunction)(state))
|
|
221
|
+
element.state = (0, import_utils.exec)(state, element);
|
|
222
|
+
if ((0, import_utils.is)(state)("string", "number")) {
|
|
223
|
+
__elementRef.__state = state;
|
|
224
|
+
element.state = {};
|
|
225
|
+
}
|
|
226
|
+
if (state === true) {
|
|
227
|
+
__elementRef.__state = element.key;
|
|
228
|
+
element.state = {};
|
|
229
|
+
}
|
|
230
|
+
(0, import_event.triggerEventOn)("stateInit", element);
|
|
231
|
+
state = element.state = createInheritedState(element, parent);
|
|
232
|
+
if (!state) {
|
|
233
|
+
if (parent && parent.state)
|
|
234
|
+
return parent.state;
|
|
235
|
+
return {};
|
|
236
|
+
} else {
|
|
237
|
+
__elementRef.__hasRootState = true;
|
|
238
|
+
}
|
|
239
|
+
const { __ref } = state;
|
|
240
|
+
if (__ref) {
|
|
241
|
+
state = (0, import_utils2.deepClone)(__ref, IGNORE_STATE_PARAMS);
|
|
242
|
+
if ((0, import_utils.isObject)(__ref.__depends)) {
|
|
243
|
+
__ref.__depends[element.key] = state;
|
|
244
|
+
} else
|
|
245
|
+
__ref.__depends = { [element.key]: state };
|
|
246
|
+
} else {
|
|
247
|
+
state = (0, import_utils2.deepClone)(state, IGNORE_STATE_PARAMS);
|
|
248
|
+
}
|
|
249
|
+
element.state = state;
|
|
250
|
+
if (skip)
|
|
251
|
+
return state;
|
|
252
|
+
applyMethods(element, state);
|
|
253
|
+
(0, import_event.triggerEventOn)("stateCreated", element);
|
|
254
|
+
return state;
|
|
255
|
+
};
|
|
256
|
+
const isState = function(state) {
|
|
257
|
+
if (!(0, import_utils.isObjectLike)(state))
|
|
258
|
+
return false;
|
|
259
|
+
const keys = Object.keys(state);
|
|
260
|
+
return (0, import_utils.arrayContainsOtherArray)(keys, ["update", "parse", "clean", "create", "parent", "rootUpdate"]);
|
|
261
|
+
};
|
|
262
|
+
const applyMethods = (element, state) => {
|
|
263
|
+
const __elementRef = element.__ref;
|
|
264
|
+
state.clean = clean;
|
|
265
|
+
state.parse = parse;
|
|
266
|
+
state.destroy = destroy;
|
|
267
|
+
state.update = updateState;
|
|
268
|
+
state.rootUpdate = rootUpdate;
|
|
269
|
+
state.create = createState;
|
|
270
|
+
state.remove = remove;
|
|
271
|
+
state.apply = apply;
|
|
272
|
+
state.parent = element.parent.state;
|
|
273
|
+
state.__element = element;
|
|
274
|
+
state.__children = {};
|
|
275
|
+
state.__root = __elementRef.__root ? __elementRef.__root.state : state;
|
|
276
|
+
if (state.parent)
|
|
277
|
+
state.parent.__children[element.key] = state;
|
|
278
|
+
};
|
|
279
|
+
var state_default = createState;
|