@domql/element 2.5.198 → 3.0.0
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/README.md +1 -1
- package/__tests__/checkIfOnUpdate.test.js +103 -0
- package/__tests__/children.test.js +213 -0
- package/__tests__/define.test.js +75 -0
- package/__tests__/inheritStateUpdates.test.js +79 -0
- package/__tests__/renderElement.test.js +131 -0
- package/__tests__/resetElement.test.js +44 -0
- package/__tests__/set.test.js +316 -0
- package/__tests__/throughExecProps.test.js +86 -0
- package/__tests__/throughInitialDefine.test.js +104 -0
- package/__tests__/throughInitialExec.test.js +92 -0
- package/__tests__/throughUpdatedDefine.test.js +92 -0
- package/__tests__/throughUpdatedExec.test.js +110 -0
- package/__tests__/tree.test.js +15 -0
- package/__tests__/update.test.js +253 -0
- package/children.js +105 -0
- package/create.js +125 -255
- package/dist/cjs/__tests__/checkIfOnUpdate.test.js +73 -0
- package/dist/cjs/__tests__/children.test.js +177 -0
- package/dist/cjs/__tests__/define.test.js +75 -0
- package/dist/cjs/__tests__/inheritStateUpdates.test.js +62 -0
- package/dist/cjs/__tests__/renderElement.test.js +138 -0
- package/dist/cjs/__tests__/resetElement.test.js +35 -0
- package/dist/cjs/__tests__/set.test.js +256 -0
- package/dist/cjs/__tests__/throughExecProps.test.js +62 -0
- package/dist/cjs/__tests__/throughInitialDefine.test.js +79 -0
- package/dist/cjs/__tests__/throughInitialExec.test.js +73 -0
- package/dist/cjs/__tests__/throughUpdatedDefine.test.js +69 -0
- package/dist/cjs/__tests__/throughUpdatedExec.test.js +84 -0
- package/dist/cjs/__tests__/tree.test.js +11 -0
- package/dist/cjs/__tests__/update.test.js +219 -0
- package/dist/cjs/children.js +87 -0
- package/dist/cjs/create.js +74 -215
- package/dist/cjs/define.js +1 -2
- package/dist/cjs/index.js +3 -3
- package/dist/cjs/iterate.js +37 -30
- package/dist/cjs/methods/set.js +26 -25
- package/dist/cjs/methods/v2.js +7 -17
- package/dist/cjs/mixins/attr.js +7 -10
- package/dist/cjs/mixins/classList.js +8 -16
- package/dist/cjs/mixins/data.js +2 -4
- package/dist/cjs/mixins/html.js +2 -4
- package/dist/cjs/mixins/index.js +0 -4
- package/dist/cjs/mixins/registry.js +7 -67
- package/dist/cjs/mixins/scope.js +2 -3
- package/dist/cjs/mixins/state.js +4 -7
- package/dist/cjs/mixins/style.js +2 -4
- package/dist/cjs/mixins/text.js +5 -8
- package/dist/cjs/node.js +34 -30
- package/dist/cjs/set.js +112 -47
- package/dist/cjs/update.js +123 -92
- package/dist/cjs/utils/applyParam.js +3 -4
- package/dist/cjs/utils/index.js +8 -4
- package/dist/cjs/utils/onlyResolveExtends.js +14 -30
- package/dist/esm/__tests__/checkIfOnUpdate.test.js +73 -0
- package/dist/esm/__tests__/children.test.js +177 -0
- package/dist/esm/__tests__/define.test.js +53 -0
- package/dist/esm/__tests__/inheritStateUpdates.test.js +62 -0
- package/dist/esm/__tests__/renderElement.test.js +116 -0
- package/dist/esm/__tests__/resetElement.test.js +35 -0
- package/dist/esm/__tests__/set.test.js +256 -0
- package/dist/esm/__tests__/throughExecProps.test.js +62 -0
- package/dist/esm/__tests__/throughInitialDefine.test.js +79 -0
- package/dist/esm/__tests__/throughInitialExec.test.js +73 -0
- package/dist/esm/__tests__/throughUpdatedDefine.test.js +69 -0
- package/dist/esm/__tests__/throughUpdatedExec.test.js +84 -0
- package/dist/esm/__tests__/tree.test.js +11 -0
- package/dist/esm/__tests__/update.test.js +219 -0
- package/dist/esm/children.js +81 -0
- package/dist/esm/create.js +79 -226
- package/dist/esm/define.js +1 -2
- package/dist/esm/iterate.js +41 -33
- package/dist/esm/methods/set.js +5 -4
- package/dist/esm/methods/v2.js +7 -17
- package/dist/esm/mixins/attr.js +8 -11
- package/dist/esm/mixins/classList.js +8 -16
- package/dist/esm/mixins/data.js +3 -5
- package/dist/esm/mixins/html.js +2 -4
- package/dist/esm/mixins/index.js +0 -4
- package/dist/esm/mixins/registry.js +7 -67
- package/dist/esm/mixins/scope.js +2 -3
- package/dist/esm/mixins/state.js +5 -8
- package/dist/esm/mixins/style.js +2 -4
- package/dist/esm/mixins/text.js +6 -12
- package/dist/esm/node.js +25 -31
- package/dist/esm/set.js +112 -47
- package/dist/esm/update.js +127 -97
- package/dist/esm/utils/applyParam.js +3 -4
- package/dist/esm/utils/index.js +4 -3
- package/dist/esm/utils/onlyResolveExtends.js +22 -31
- package/iterate.js +44 -26
- package/methods/set.js +5 -4
- package/methods/v2.js +5 -4
- package/mixins/attr.js +13 -7
- package/mixins/classList.js +7 -2
- package/mixins/data.js +1 -1
- package/mixins/index.js +1 -6
- package/mixins/registry.js +6 -53
- package/mixins/scope.js +1 -1
- package/mixins/state.js +4 -5
- package/mixins/text.js +4 -7
- package/node.js +31 -28
- package/package.json +7 -6
- package/set.js +129 -41
- package/update.js +169 -89
- package/utils/applyParam.js +7 -4
- package/utils/index.js +1 -3
- package/utils/onlyResolveExtends.js +27 -16
- package/cache/index.js +0 -3
- package/cache/options.js +0 -4
- package/dist/cjs/cache/index.js +0 -24
- package/dist/cjs/cache/options.js +0 -26
- package/dist/cjs/extend.js +0 -85
- package/dist/cjs/methods/index.js +0 -353
- package/dist/cjs/mixins/content.js +0 -74
- package/dist/cjs/props/create.js +0 -98
- package/dist/cjs/props/ignore.js +0 -24
- package/dist/cjs/props/index.js +0 -21
- package/dist/cjs/props/inherit.js +0 -53
- package/dist/cjs/props/update.js +0 -37
- package/dist/cjs/utils/component.js +0 -77
- package/dist/cjs/utils/extendUtils.js +0 -142
- package/dist/cjs/utils/object.js +0 -179
- package/dist/cjs/utils/propEvents.js +0 -41
- package/dist/esm/cache/index.js +0 -4
- package/dist/esm/cache/options.js +0 -6
- package/dist/esm/extend.js +0 -71
- package/dist/esm/methods/index.js +0 -333
- package/dist/esm/mixins/content.js +0 -54
- package/dist/esm/props/create.js +0 -78
- package/dist/esm/props/ignore.js +0 -4
- package/dist/esm/props/index.js +0 -4
- package/dist/esm/props/inherit.js +0 -33
- package/dist/esm/props/update.js +0 -17
- package/dist/esm/utils/component.js +0 -65
- package/dist/esm/utils/extendUtils.js +0 -122
- package/dist/esm/utils/object.js +0 -159
- package/dist/esm/utils/propEvents.js +0 -21
- package/extend.js +0 -90
- package/methods/index.js +0 -317
- package/mixins/content.js +0 -55
- package/props/create.js +0 -87
- package/props/ignore.js +0 -3
- package/props/index.js +0 -6
- package/props/inherit.js +0 -35
- package/props/update.js +0 -17
- package/utils/component.js +0 -68
- package/utils/extendUtils.js +0 -134
- package/utils/object.js +0 -172
- package/utils/propEvents.js +0 -19
package/dist/cjs/node.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
17
|
}
|
|
16
18
|
return to;
|
|
17
19
|
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
18
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
29
|
var node_exports = {};
|
|
20
30
|
__export(node_exports, {
|
|
@@ -25,65 +35,59 @@ module.exports = __toCommonJS(node_exports);
|
|
|
25
35
|
var import_utils = require("@domql/utils");
|
|
26
36
|
var import_event = require("@domql/event");
|
|
27
37
|
var import_render = require("@domql/render");
|
|
28
|
-
var import_methods = require("./methods/index.js");
|
|
29
38
|
var import_create = require("./create.js");
|
|
30
39
|
var import_iterate = require("./iterate.js");
|
|
31
40
|
var import_mixins = require("./mixins/index.js");
|
|
32
41
|
var import_applyParam = require("./utils/applyParam.js");
|
|
33
|
-
var
|
|
42
|
+
var import_children = __toESM(require("./children.js"), 1);
|
|
43
|
+
var import_set = require("./set.js");
|
|
34
44
|
const ENV = "development";
|
|
35
|
-
const createNode = async (element,
|
|
45
|
+
const createNode = async (element, opts) => {
|
|
36
46
|
let { node, tag, __ref: ref } = element;
|
|
47
|
+
if (!ref.__if) return element;
|
|
37
48
|
let isNewNode;
|
|
38
49
|
if (!node) {
|
|
39
50
|
isNewNode = true;
|
|
40
|
-
if (!ref.__if)
|
|
41
|
-
return element;
|
|
42
51
|
if (tag === "shadow") {
|
|
43
52
|
node = element.node = element.parent.node.attachShadow({ mode: "open" });
|
|
44
|
-
} else
|
|
45
|
-
|
|
46
|
-
(0, import_event.triggerEventOn)("attachNode", element, options);
|
|
53
|
+
} else node = element.node = (0, import_render.cacheNode)(element);
|
|
54
|
+
await (0, import_event.triggerEventOn)("attachNode", element, opts);
|
|
47
55
|
}
|
|
48
|
-
if (ENV === "test" || ENV === "development" ||
|
|
56
|
+
if (ENV === "test" || ENV === "development" || opts.alowRefReference) {
|
|
49
57
|
node.ref = element;
|
|
50
|
-
if ((0, import_utils.isFunction)(node.setAttribute))
|
|
51
|
-
node.setAttribute("key", element.key);
|
|
52
|
-
}
|
|
53
|
-
(0, import_iterate.throughExecProps)(element);
|
|
54
|
-
(0, import_iterate.throughInitialDefine)(element);
|
|
55
|
-
(0, import_iterate.throughInitialExec)(element);
|
|
56
|
-
if (element.tag !== "string" && element.tag !== "fragment") {
|
|
57
|
-
(0, import_propEvents.propagateEventsFromProps)(element);
|
|
58
|
-
if (isNewNode && (0, import_utils.isObject)(element.on)) {
|
|
59
|
-
(0, import_event.applyEventsOnNode)(element, options);
|
|
60
|
-
}
|
|
58
|
+
if ((0, import_utils.isFunction)(node.setAttribute)) node.setAttribute("key", element.key);
|
|
61
59
|
}
|
|
60
|
+
await (0, import_iterate.throughExecProps)(element);
|
|
61
|
+
await (0, import_iterate.throughInitialDefine)(element);
|
|
62
|
+
await (0, import_iterate.throughInitialExec)(element);
|
|
63
|
+
await (0, import_event.applyEventsOnNode)(element, { isNewNode, ...opts });
|
|
62
64
|
for (const param in element) {
|
|
63
65
|
const value = element[param];
|
|
64
|
-
if (!Object.hasOwnProperty.call(element, param))
|
|
65
|
-
continue;
|
|
66
|
-
if ((0, import_utils.isUndefined)(value) || (0, import_methods.isMethod)(param, element) || (0, import_utils.isVariant)(param) || (0, import_utils.isObject)(import_mixins.REGISTRY[param]))
|
|
66
|
+
if (!Object.hasOwnProperty.call(element, param) || (0, import_utils.isUndefined)(value) || (0, import_utils.isMethod)(param, element) || (0, import_utils.isObject)(import_mixins.REGISTRY[param])) {
|
|
67
67
|
continue;
|
|
68
|
-
|
|
68
|
+
}
|
|
69
|
+
const isElement = await (0, import_applyParam.applyParam)(param, element, opts);
|
|
69
70
|
if (isElement) {
|
|
70
71
|
const { hasDefine, hasContextDefine } = isElement;
|
|
71
72
|
if (element[param] && !hasDefine && !hasContextDefine) {
|
|
72
73
|
const createAsync = async () => {
|
|
73
|
-
await (0, import_create.create)(
|
|
74
|
+
await (0, import_create.create)(value, element, param, opts);
|
|
74
75
|
};
|
|
75
|
-
if (element.props && element.props.lazyLoad ||
|
|
76
|
+
if (element.props && element.props.lazyLoad || opts.lazyLoad) {
|
|
76
77
|
window.requestAnimationFrame(async () => {
|
|
77
78
|
await createAsync();
|
|
78
|
-
if (!
|
|
79
|
-
(0, import_event.triggerEventOn)("lazyLoad", element,
|
|
79
|
+
if (!opts.preventUpdateListener) {
|
|
80
|
+
await (0, import_event.triggerEventOn)("lazyLoad", element, opts);
|
|
80
81
|
}
|
|
81
82
|
});
|
|
82
|
-
} else
|
|
83
|
-
await createAsync();
|
|
83
|
+
} else await createAsync();
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
+
const content = element.children ? await (0, import_children.default)(element.children, element, opts) : element.content || element.content;
|
|
88
|
+
if (content) {
|
|
89
|
+
await (0, import_set.setContent)(content, element, opts);
|
|
90
|
+
}
|
|
87
91
|
return element;
|
|
88
92
|
};
|
|
89
93
|
var node_default = createNode;
|
package/dist/cjs/set.js
CHANGED
|
@@ -19,81 +19,146 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var set_exports = {};
|
|
20
20
|
__export(set_exports, {
|
|
21
21
|
default: () => set_default,
|
|
22
|
+
removeContent: () => removeContent,
|
|
22
23
|
reset: () => reset,
|
|
23
|
-
|
|
24
|
-
set: () => set
|
|
24
|
+
resetContent: () => resetContent,
|
|
25
|
+
set: () => set,
|
|
26
|
+
setContent: () => setContent,
|
|
27
|
+
setContentKey: () => setContentKey,
|
|
28
|
+
updateContent: () => updateContent
|
|
25
29
|
});
|
|
26
30
|
module.exports = __toCommonJS(set_exports);
|
|
27
31
|
var import_utils = require("@domql/utils");
|
|
28
|
-
var import_options = require("./cache/options.js");
|
|
29
32
|
var import_create = require("./create.js");
|
|
30
|
-
var import_mixins = require("./mixins/index.js");
|
|
31
|
-
var import_content = require("./mixins/content.js");
|
|
32
33
|
var import_event = require("@domql/event");
|
|
33
|
-
const
|
|
34
|
-
if (!options.preventRemove)
|
|
35
|
-
(0, import_content.removeContent)(element, options);
|
|
34
|
+
const setContentKey = (element, opts = {}) => {
|
|
36
35
|
const { __ref: ref } = element;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
});
|
|
36
|
+
const contentElementKey = opts.contentElementKey;
|
|
37
|
+
if (!ref.contentElementKey || contentElementKey !== ref.contentElementKey) {
|
|
38
|
+
ref.contentElementKey = contentElementKey || "content";
|
|
39
|
+
}
|
|
40
|
+
return ref.contentElementKey;
|
|
43
41
|
};
|
|
44
|
-
const reset = (options) => {
|
|
42
|
+
const reset = async (options) => {
|
|
45
43
|
const element = void 0;
|
|
46
|
-
(0, import_create.create)(element, element.parent, void 0, {
|
|
47
|
-
|
|
48
|
-
...
|
|
49
|
-
...
|
|
44
|
+
await (0, import_create.create)(element, element.parent, void 0, {
|
|
45
|
+
ignoreChildExtends: true,
|
|
46
|
+
...import_utils.OPTIONS.defaultOptions,
|
|
47
|
+
...import_utils.OPTIONS.create,
|
|
50
48
|
...options
|
|
51
49
|
});
|
|
52
50
|
};
|
|
51
|
+
const resetContent = async (params, element, opts) => {
|
|
52
|
+
var _a;
|
|
53
|
+
const contentElementKey = setContentKey(element, opts);
|
|
54
|
+
if ((_a = element[contentElementKey]) == null ? void 0 : _a.node) removeContent(element, opts);
|
|
55
|
+
const contentElem = await (0, import_create.create)(
|
|
56
|
+
params,
|
|
57
|
+
element,
|
|
58
|
+
contentElementKey || "content",
|
|
59
|
+
{
|
|
60
|
+
ignoreChildExtends: true,
|
|
61
|
+
...import_utils.OPTIONS.defaultOptions,
|
|
62
|
+
...import_utils.OPTIONS.create,
|
|
63
|
+
...opts
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
if (contentElementKey !== "content") opts.contentElementKey = "content";
|
|
67
|
+
return contentElem;
|
|
68
|
+
};
|
|
69
|
+
const updateContent = async function(params, opts) {
|
|
70
|
+
const element = this;
|
|
71
|
+
const contentElementKey = setContentKey(element, opts);
|
|
72
|
+
if (!element[contentElementKey]) return;
|
|
73
|
+
if (element[contentElementKey].update) {
|
|
74
|
+
await element[contentElementKey].update(params, opts);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
async function setContent(param, element, opts) {
|
|
78
|
+
const content = await (0, import_utils.execPromise)(param, element);
|
|
79
|
+
if (content && element) {
|
|
80
|
+
set.call(element, content, opts);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const removeContent = function(el, opts = {}) {
|
|
84
|
+
var _a;
|
|
85
|
+
const element = el || this;
|
|
86
|
+
const contentElementKey = setContentKey(element, opts);
|
|
87
|
+
if (opts.contentElementKey !== "content") {
|
|
88
|
+
opts.contentElementKey = "content";
|
|
89
|
+
}
|
|
90
|
+
const content = element[contentElementKey];
|
|
91
|
+
if (!content) return;
|
|
92
|
+
if (content.tag === "fragment" && ((_a = content.__ref) == null ? void 0 : _a.__children)) {
|
|
93
|
+
content.__ref.__children.forEach((key) => {
|
|
94
|
+
const child = content[key];
|
|
95
|
+
if (child.node && child.node.parentNode) {
|
|
96
|
+
child.node.parentNode.removeChild(child.node);
|
|
97
|
+
}
|
|
98
|
+
if ((0, import_utils.isFunction)(child.remove)) {
|
|
99
|
+
child.remove();
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
} else {
|
|
103
|
+
if (content.node && content.node.parentNode) {
|
|
104
|
+
content.node.parentNode.removeChild(content.node);
|
|
105
|
+
}
|
|
106
|
+
if ((0, import_utils.isFunction)(content.remove)) {
|
|
107
|
+
content.remove();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
delete element[contentElementKey];
|
|
111
|
+
};
|
|
53
112
|
const set = async function(params, options = {}, el) {
|
|
54
113
|
var _a;
|
|
55
114
|
const element = el || this;
|
|
56
115
|
const { __ref: ref } = element;
|
|
57
|
-
const
|
|
116
|
+
const contentElementKey = setContentKey(element, options);
|
|
117
|
+
const content = element[contentElementKey];
|
|
58
118
|
const __contentRef = content && content.__ref;
|
|
59
119
|
const lazyLoad = element.props && element.props.lazyLoad;
|
|
60
|
-
const
|
|
61
|
-
if (options.preventContentUpdate === true && !
|
|
62
|
-
|
|
63
|
-
|
|
120
|
+
const hasChildren = element.children;
|
|
121
|
+
if (options.preventContentUpdate === true && !hasChildren) return;
|
|
122
|
+
const childHasChanged = !ref.__noChildrenDifference;
|
|
123
|
+
const childrenIsDifferentFromCache = childHasChanged && __contentRef && Object.keys(params).length === Object.keys(content).length && (0, import_utils.deepContains)(params, content);
|
|
124
|
+
if ((content == null ? void 0 : content.update) && !childHasChanged && !childrenIsDifferentFromCache) {
|
|
64
125
|
if (!options.preventBeforeUpdateListener && !options.preventListeners) {
|
|
65
|
-
const beforeUpdateReturns = await (0, import_event.triggerEventOnUpdate)(
|
|
66
|
-
|
|
67
|
-
|
|
126
|
+
const beforeUpdateReturns = await (0, import_event.triggerEventOnUpdate)(
|
|
127
|
+
"beforeUpdate",
|
|
128
|
+
params,
|
|
129
|
+
element,
|
|
130
|
+
options
|
|
131
|
+
);
|
|
132
|
+
if (beforeUpdateReturns === false) return element;
|
|
68
133
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (!options.preventUpdateListener)
|
|
134
|
+
await content.update(params);
|
|
135
|
+
if (!options.preventUpdateListener && !options.preventListeners) {
|
|
72
136
|
await (0, import_event.triggerEventOn)("update", element, options);
|
|
137
|
+
}
|
|
73
138
|
return;
|
|
74
139
|
}
|
|
75
|
-
if (params)
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
if (!
|
|
80
|
-
params.
|
|
81
|
-
props.
|
|
140
|
+
if (!params) return element;
|
|
141
|
+
let { childExtends, props, tag } = params;
|
|
142
|
+
if (!props) props = params.props = {};
|
|
143
|
+
if (tag === "fragment") {
|
|
144
|
+
if (!childExtends && element.childExtends) {
|
|
145
|
+
params.childExtends = element.childExtends;
|
|
146
|
+
props.ignoreChildExtends = true;
|
|
82
147
|
}
|
|
83
148
|
if (!(props == null ? void 0 : props.childProps) && ((_a = element.props) == null ? void 0 : _a.childProps)) {
|
|
84
149
|
props.childProps = element.props.childProps;
|
|
85
150
|
props.ignoreChildProps = true;
|
|
86
151
|
}
|
|
87
|
-
if (lazyLoad) {
|
|
88
|
-
window.requestAnimationFrame(async () => {
|
|
89
|
-
await resetElement(params, element, options);
|
|
90
|
-
if (!options.preventUpdateListener) {
|
|
91
|
-
(0, import_event.triggerEventOn)("lazyLoad", element, options);
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
} else
|
|
95
|
-
await resetElement(params, element, options);
|
|
96
152
|
}
|
|
97
|
-
|
|
153
|
+
if (lazyLoad) {
|
|
154
|
+
window.requestAnimationFrame(async () => {
|
|
155
|
+
await resetContent(params, element, options);
|
|
156
|
+
if (!options.preventUpdateListener) {
|
|
157
|
+
await (0, import_event.triggerEventOn)("lazyLoad", element, options);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
} else {
|
|
161
|
+
await resetContent(params, element, options);
|
|
162
|
+
}
|
|
98
163
|
};
|
|
99
164
|
var set_default = set;
|
package/dist/cjs/update.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
17
|
}
|
|
16
18
|
return to;
|
|
17
19
|
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
18
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
29
|
var update_exports = {};
|
|
20
30
|
__export(update_exports, {
|
|
@@ -24,75 +34,77 @@ __export(update_exports, {
|
|
|
24
34
|
module.exports = __toCommonJS(update_exports);
|
|
25
35
|
var import_utils = require("@domql/utils");
|
|
26
36
|
var import_event = require("@domql/event");
|
|
27
|
-
var import_methods = require("./methods/index.js");
|
|
28
|
-
var import_props = require("./props/index.js");
|
|
29
37
|
var import_state = require("@domql/state");
|
|
30
38
|
var import_create = require("./create.js");
|
|
31
39
|
var import_iterate = require("./iterate.js");
|
|
32
40
|
var import_mixins = require("./mixins/index.js");
|
|
33
41
|
var import_applyParam = require("./utils/applyParam.js");
|
|
34
|
-
var import_options = require("./cache/options.js");
|
|
35
42
|
var import_utils2 = require("./utils/index.js");
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
};
|
|
43
|
+
var import_set = require("./set.js");
|
|
44
|
+
var import_children = __toESM(require("./children.js"), 1);
|
|
39
45
|
const UPDATE_DEFAULT_OPTIONS = {
|
|
40
46
|
stackChanges: false,
|
|
41
47
|
cleanExec: true,
|
|
42
48
|
preventRecursive: false,
|
|
43
49
|
currentSnapshot: false,
|
|
44
50
|
calleeElement: false,
|
|
45
|
-
|
|
51
|
+
exclude: import_utils2.METHODS_EXL
|
|
46
52
|
};
|
|
47
53
|
const update = async function(params = {}, opts) {
|
|
48
54
|
const calleeElementCache = opts == null ? void 0 : opts.calleeElement;
|
|
49
|
-
const options = (0, import_utils.deepClone)(
|
|
55
|
+
const options = (0, import_utils.deepClone)(
|
|
56
|
+
(0, import_utils.isObject)(opts) ? (0, import_utils.deepMerge)(opts, UPDATE_DEFAULT_OPTIONS) : UPDATE_DEFAULT_OPTIONS,
|
|
57
|
+
{ exclude: ["calleeElement"] }
|
|
58
|
+
);
|
|
50
59
|
options.calleeElement = calleeElementCache;
|
|
51
60
|
const element = this;
|
|
52
|
-
const { parent, node, key } = element;
|
|
53
|
-
const { excludes, preventInheritAtCurrentState } = options;
|
|
54
61
|
let ref = element.__ref;
|
|
55
|
-
if (!ref)
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (
|
|
62
|
+
if (!ref) ref = element.__ref = {};
|
|
63
|
+
const [snapshotOnCallee, calleeElement, snapshotHasUpdated] = (0, import_utils.captureSnapshot)(
|
|
64
|
+
element,
|
|
65
|
+
options
|
|
66
|
+
);
|
|
67
|
+
if (snapshotHasUpdated) return;
|
|
68
|
+
if (!options.preventListeners) {
|
|
61
69
|
await (0, import_event.triggerEventOnUpdate)("startUpdate", params, element, options);
|
|
62
|
-
|
|
70
|
+
}
|
|
71
|
+
const { parent, node, key } = element;
|
|
72
|
+
const { exclude, preventInheritAtCurrentState } = options;
|
|
73
|
+
if (preventInheritAtCurrentState && preventInheritAtCurrentState.__element === element) {
|
|
63
74
|
return;
|
|
64
|
-
|
|
65
|
-
|
|
75
|
+
}
|
|
76
|
+
if (!exclude) (0, import_utils.merge)(options, UPDATE_DEFAULT_OPTIONS);
|
|
66
77
|
if ((0, import_utils.isString)(params) || (0, import_utils.isNumber)(params)) {
|
|
67
78
|
params = { text: params };
|
|
68
79
|
}
|
|
80
|
+
params = (0, import_utils.propertizeElement)(params);
|
|
69
81
|
const inheritState = await inheritStateUpdates(element, options);
|
|
70
|
-
if (inheritState === false)
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
if (ifFails)
|
|
74
|
-
return;
|
|
82
|
+
if (inheritState === false) return;
|
|
83
|
+
const ifFails = await checkIfOnUpdate(element, parent, options);
|
|
84
|
+
if (ifFails) return;
|
|
75
85
|
if (ref.__if && !options.preventPropsUpdate) {
|
|
76
86
|
const hasParentProps = parent.props && (parent.props[key] || parent.props.childProps);
|
|
77
|
-
const hasFunctionInProps = ref.
|
|
87
|
+
const hasFunctionInProps = ref.__propsStack.filter((v) => (0, import_utils.isFunction)(v));
|
|
78
88
|
const props = params.props || hasParentProps || hasFunctionInProps.length;
|
|
79
|
-
if (props)
|
|
80
|
-
(0, import_props.updateProps)(props, element, parent);
|
|
89
|
+
if (props) (0, import_utils.updateProps)(props, element, parent);
|
|
81
90
|
}
|
|
82
91
|
if (!options.preventBeforeUpdateListener && !options.preventListeners) {
|
|
83
|
-
const beforeUpdateReturns = await (0, import_event.triggerEventOnUpdate)(
|
|
84
|
-
|
|
85
|
-
|
|
92
|
+
const beforeUpdateReturns = await (0, import_event.triggerEventOnUpdate)(
|
|
93
|
+
"beforeUpdate",
|
|
94
|
+
params,
|
|
95
|
+
element,
|
|
96
|
+
options
|
|
97
|
+
);
|
|
98
|
+
if (beforeUpdateReturns === false) return element;
|
|
86
99
|
}
|
|
87
|
-
(0, import_utils.overwriteDeep)(element, params
|
|
100
|
+
(0, import_utils.overwriteDeep)(element, params);
|
|
88
101
|
(0, import_iterate.throughExecProps)(element);
|
|
89
102
|
(0, import_iterate.throughUpdatedExec)(element, { ignore: UPDATE_DEFAULT_OPTIONS });
|
|
90
103
|
(0, import_iterate.throughUpdatedDefine)(element);
|
|
91
104
|
if (!options.isForced && !options.preventListeners) {
|
|
92
|
-
(0, import_event.triggerEventOn)("beforeClassAssign", element, options);
|
|
105
|
+
await (0, import_event.triggerEventOn)("beforeClassAssign", element, options);
|
|
93
106
|
}
|
|
94
|
-
if (!ref.__if)
|
|
95
|
-
return false;
|
|
107
|
+
if (!ref.__if) return false;
|
|
96
108
|
if (!node) {
|
|
97
109
|
return;
|
|
98
110
|
}
|
|
@@ -107,78 +119,75 @@ const update = async function(params = {}, opts) {
|
|
|
107
119
|
preventUpdateAfterCount
|
|
108
120
|
} = options;
|
|
109
121
|
if (preventUpdateAfter) {
|
|
110
|
-
if ((0, import_utils.isNumber)(preventUpdateAfterCount) && preventUpdateAfter <= preventUpdateAfterCount)
|
|
122
|
+
if ((0, import_utils.isNumber)(preventUpdateAfterCount) && preventUpdateAfter <= preventUpdateAfterCount) {
|
|
111
123
|
return;
|
|
112
|
-
else if (options.preventUpdateAfterCount === void 0)
|
|
124
|
+
} else if (options.preventUpdateAfterCount === void 0) {
|
|
113
125
|
options.preventUpdateAfterCount = 1;
|
|
114
|
-
else
|
|
115
|
-
options.preventUpdateAfterCount++;
|
|
126
|
+
} else options.preventUpdateAfterCount++;
|
|
116
127
|
}
|
|
117
128
|
for (const param in element) {
|
|
118
129
|
const prop = element[param];
|
|
119
|
-
if (!Object.hasOwnProperty.call(element, param))
|
|
120
|
-
continue;
|
|
130
|
+
if (!Object.hasOwnProperty.call(element, param)) continue;
|
|
121
131
|
const isInPreventUpdate = (0, import_utils.isArray)(preventUpdate) && preventUpdate.includes(param);
|
|
122
132
|
const isInPreventDefineUpdate = (0, import_utils.isArray)(preventDefineUpdate) && preventDefineUpdate.includes(param);
|
|
123
|
-
|
|
124
|
-
if ((0, import_utils.isUndefined)(prop) || isInPreventUpdate || isInPreventDefineUpdate || preventDefineUpdate === true || preventDefineUpdate === param || preventContentUpdate && param === "content" && !hasCollection || (preventStateUpdate && param) === "state" || (0, import_methods.isMethod)(param, element) || (0, import_utils.isObject)(import_mixins.REGISTRY[param]) || (0, import_utils.isVariant)(param))
|
|
133
|
+
if ((0, import_utils.isUndefined)(prop) || isInPreventUpdate || isInPreventDefineUpdate || preventDefineUpdate === true || preventDefineUpdate === param || (preventStateUpdate && param) === "state" || (0, import_utils.isMethod)(param, element) || (0, import_utils.isObject)(import_mixins.REGISTRY[param])) {
|
|
125
134
|
continue;
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
const isElement = (0, import_applyParam.applyParam)(param, element, options);
|
|
135
|
+
}
|
|
136
|
+
if (preventStateUpdate === "once") options.preventStateUpdate = false;
|
|
137
|
+
const isElement = await (0, import_applyParam.applyParam)(param, element, options);
|
|
129
138
|
if (isElement) {
|
|
130
139
|
const { hasDefine, hasContextDefine } = isElement;
|
|
131
140
|
const canUpdate = (0, import_utils.isObject)(prop) && !hasDefine && !hasContextDefine && !preventRecursive;
|
|
132
|
-
if (!canUpdate)
|
|
133
|
-
continue;
|
|
141
|
+
if (!canUpdate) continue;
|
|
134
142
|
const lazyLoad = element.props.lazyLoad || options.lazyLoad;
|
|
135
143
|
if (options.onEachUpdate) {
|
|
136
144
|
options.onEachUpdate(param, element, element.state, element.context);
|
|
137
145
|
}
|
|
138
|
-
const childUpdateCall = () => update.call(prop, params[prop], {
|
|
146
|
+
const childUpdateCall = async () => await update.call(prop, params[prop], {
|
|
139
147
|
...options,
|
|
140
148
|
currentSnapshot: snapshotOnCallee,
|
|
141
149
|
calleeElement
|
|
142
150
|
});
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
(
|
|
147
|
-
|
|
148
|
-
|
|
151
|
+
if (lazyLoad) {
|
|
152
|
+
import_utils.window.requestAnimationFrame(async () => {
|
|
153
|
+
await childUpdateCall();
|
|
154
|
+
if (!options.preventUpdateListener) {
|
|
155
|
+
await (0, import_event.triggerEventOn)("lazyLoad", element, options);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
} else await childUpdateCall();
|
|
149
159
|
}
|
|
150
160
|
}
|
|
151
|
-
if (!
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
const isCallee = calleeElement === element;
|
|
158
|
-
if (!calleeElement || isCallee) {
|
|
159
|
-
const createdStanpshot = snapshot.snapshotId();
|
|
160
|
-
ref.__currentSnapshot = createdStanpshot;
|
|
161
|
-
return [createdStanpshot, element];
|
|
161
|
+
if (!preventContentUpdate) {
|
|
162
|
+
const children = params.children || element.children;
|
|
163
|
+
const content = children ? await (0, import_children.default)(children, element, opts) : element.children || params.content;
|
|
164
|
+
if (content) {
|
|
165
|
+
await (0, import_set.setContent)(content, element, options);
|
|
166
|
+
}
|
|
162
167
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
return [snapshotOnCallee, calleeElement, true];
|
|
168
|
+
if (!preventUpdateListener) {
|
|
169
|
+
await (0, import_event.triggerEventOn)("update", element, options);
|
|
166
170
|
}
|
|
167
|
-
return [snapshotOnCallee, calleeElement];
|
|
168
171
|
};
|
|
169
|
-
const checkIfOnUpdate = (element, parent, options) => {
|
|
172
|
+
const checkIfOnUpdate = async (element, parent, options) => {
|
|
170
173
|
var _a, _b, _c;
|
|
171
|
-
if (!(0, import_utils.isFunction)(element.if) && !(0, import_utils.isFunction)((_a = element.props) == null ? void 0 : _a.if) || !parent)
|
|
174
|
+
if (!(0, import_utils.isFunction)(element.if) && !(0, import_utils.isFunction)((_a = element.props) == null ? void 0 : _a.if) || !parent) {
|
|
172
175
|
return;
|
|
176
|
+
}
|
|
173
177
|
const ref = element.__ref;
|
|
174
|
-
const ifPassed = (element.if || ((_b = element.props) == null ? void 0 : _b.if))(
|
|
178
|
+
const ifPassed = (element.if || ((_b = element.props) == null ? void 0 : _b.if))(
|
|
179
|
+
element,
|
|
180
|
+
element.state,
|
|
181
|
+
element.context,
|
|
182
|
+
options
|
|
183
|
+
);
|
|
175
184
|
const itWasFalse = ref.__if !== true;
|
|
176
185
|
if (ifPassed) {
|
|
177
186
|
ref.__if = true;
|
|
178
187
|
if (itWasFalse) {
|
|
179
188
|
delete element.__hash;
|
|
180
189
|
delete element.__text;
|
|
181
|
-
delete element.
|
|
190
|
+
delete element.extends;
|
|
182
191
|
if (!ref.__hasRootState) {
|
|
183
192
|
delete element.state;
|
|
184
193
|
}
|
|
@@ -192,10 +201,11 @@ const checkIfOnUpdate = (element, parent, options) => {
|
|
|
192
201
|
delete element.node;
|
|
193
202
|
}
|
|
194
203
|
const contentKey = ref.contentElementKey;
|
|
195
|
-
if (element
|
|
204
|
+
if (element.children) {
|
|
196
205
|
element.removeContent();
|
|
197
|
-
} else if ((_c = element[contentKey]) == null ? void 0 : _c.parseDeep)
|
|
206
|
+
} else if ((_c = element[contentKey]) == null ? void 0 : _c.parseDeep) {
|
|
198
207
|
element[contentKey] = element[contentKey].parseDeep();
|
|
208
|
+
}
|
|
199
209
|
const previousElement = element.previousElement();
|
|
200
210
|
const previousNode = previousElement == null ? void 0 : previousElement.node;
|
|
201
211
|
const hasPrevious = previousNode == null ? void 0 : previousNode.parentNode;
|
|
@@ -208,9 +218,19 @@ const checkIfOnUpdate = (element, parent, options) => {
|
|
|
208
218
|
};
|
|
209
219
|
delete element.__ref;
|
|
210
220
|
delete element.parent;
|
|
211
|
-
const createdElement = (0, import_create.create)(
|
|
221
|
+
const createdElement = await (0, import_create.create)(
|
|
222
|
+
element,
|
|
223
|
+
parent,
|
|
224
|
+
element.key,
|
|
225
|
+
import_utils.OPTIONS.create,
|
|
226
|
+
attachOptions
|
|
227
|
+
);
|
|
212
228
|
if (options.preventUpdate !== true && element.on && (0, import_utils.isFunction)(element.on.update)) {
|
|
213
|
-
(0, import_event.applyEvent)(
|
|
229
|
+
await (0, import_event.applyEvent)(
|
|
230
|
+
element.on.update,
|
|
231
|
+
createdElement,
|
|
232
|
+
createdElement.state
|
|
233
|
+
);
|
|
214
234
|
}
|
|
215
235
|
return createdElement;
|
|
216
236
|
}
|
|
@@ -224,8 +244,7 @@ const inheritStateUpdates = async (element, options) => {
|
|
|
224
244
|
const stateKey = ref.__state;
|
|
225
245
|
const { parent, state } = element;
|
|
226
246
|
const { preventUpdateTriggerStateUpdate, isHoisted, execStateFunction } = options;
|
|
227
|
-
if (preventUpdateTriggerStateUpdate)
|
|
228
|
-
return;
|
|
247
|
+
if (preventUpdateTriggerStateUpdate) return;
|
|
229
248
|
if (!stateKey && !ref.__hasRootState) {
|
|
230
249
|
element.state = parent && parent.state || {};
|
|
231
250
|
return;
|
|
@@ -233,29 +252,41 @@ const inheritStateUpdates = async (element, options) => {
|
|
|
233
252
|
const shouldForceFunctionState = (0, import_utils.isFunction)(stateKey) && !isHoisted && execStateFunction;
|
|
234
253
|
if (shouldForceFunctionState) {
|
|
235
254
|
const execState = (0, import_utils.exec)(stateKey, element);
|
|
236
|
-
state.set(execState, {
|
|
255
|
+
state.set(execState, {
|
|
256
|
+
...options,
|
|
257
|
+
preventUpdate: true,
|
|
258
|
+
preventStateUpdateListener: false,
|
|
259
|
+
updatedByStateFunction: true
|
|
260
|
+
});
|
|
237
261
|
return;
|
|
238
262
|
}
|
|
239
|
-
const keyInParentState = (0,
|
|
240
|
-
if (!keyInParentState || options.preventInheritedStateUpdate)
|
|
241
|
-
return;
|
|
263
|
+
const keyInParentState = (0, import_utils.findInheritedState)(element, element.parent);
|
|
264
|
+
if (!keyInParentState || options.preventInheritedStateUpdate) return;
|
|
242
265
|
if (!options.preventBeforeStateUpdateListener && !options.preventListeners) {
|
|
243
|
-
const initStateReturns = await (0, import_event.triggerEventOnUpdate)(
|
|
244
|
-
|
|
245
|
-
|
|
266
|
+
const initStateReturns = await (0, import_event.triggerEventOnUpdate)(
|
|
267
|
+
"beforeStateUpdate",
|
|
268
|
+
keyInParentState,
|
|
269
|
+
element,
|
|
270
|
+
options
|
|
271
|
+
);
|
|
272
|
+
if (initStateReturns === false) return element;
|
|
246
273
|
}
|
|
247
|
-
const newState = createStateUpdate(element, parent, options);
|
|
274
|
+
const newState = await createStateUpdate(element, parent, options);
|
|
248
275
|
if (!options.preventStateUpdateListener && !options.preventListeners) {
|
|
249
|
-
await (0, import_event.triggerEventOnUpdate)(
|
|
276
|
+
await (0, import_event.triggerEventOnUpdate)(
|
|
277
|
+
"stateUpdate",
|
|
278
|
+
newState.parse(),
|
|
279
|
+
element,
|
|
280
|
+
options
|
|
281
|
+
);
|
|
250
282
|
}
|
|
251
283
|
};
|
|
252
|
-
const createStateUpdate = (element, parent, options) => {
|
|
284
|
+
const createStateUpdate = async (element, parent, options) => {
|
|
253
285
|
const __stateChildren = element.state.__children;
|
|
254
|
-
const newState = (0, import_state.createState)(element, parent);
|
|
286
|
+
const newState = await (0, import_state.createState)(element, parent);
|
|
255
287
|
element.state = newState;
|
|
256
288
|
for (const child in __stateChildren) {
|
|
257
|
-
if (newState[child])
|
|
258
|
-
newState.__children[child] = __stateChildren[child];
|
|
289
|
+
if (newState[child]) newState.__children[child] = __stateChildren[child];
|
|
259
290
|
Object.getPrototypeOf(__stateChildren[child]).parent = newState;
|
|
260
291
|
}
|
|
261
292
|
return newState;
|