@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
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
var import_update = require("../update");
|
|
2
|
+
describe("update()", () => {
|
|
3
|
+
let element, params, opts;
|
|
4
|
+
beforeEach(() => {
|
|
5
|
+
element = {
|
|
6
|
+
__ref: {
|
|
7
|
+
__execProps: {},
|
|
8
|
+
__exec: {},
|
|
9
|
+
__defineCache: {},
|
|
10
|
+
__props: [],
|
|
11
|
+
__state: "state"
|
|
12
|
+
},
|
|
13
|
+
state: "string",
|
|
14
|
+
props: {},
|
|
15
|
+
parent: {
|
|
16
|
+
props: {}
|
|
17
|
+
},
|
|
18
|
+
define: {},
|
|
19
|
+
node: document.createElement("div"),
|
|
20
|
+
key: "testElement",
|
|
21
|
+
on: {},
|
|
22
|
+
update: import_update.update
|
|
23
|
+
};
|
|
24
|
+
opts = {
|
|
25
|
+
preventUpdate: [],
|
|
26
|
+
preventDefineUpdate: [],
|
|
27
|
+
preventBeforeStateUpdateListener: false,
|
|
28
|
+
preventListeners: false,
|
|
29
|
+
preventStateUpdateListener: false
|
|
30
|
+
};
|
|
31
|
+
params = {};
|
|
32
|
+
});
|
|
33
|
+
it("does not modify opts when params and opts are empty", async () => {
|
|
34
|
+
await element.update({}, opts);
|
|
35
|
+
expect(opts).toEqual({
|
|
36
|
+
calleeElement: false,
|
|
37
|
+
cleanExec: true,
|
|
38
|
+
currentSnapshot: false,
|
|
39
|
+
exclude: [],
|
|
40
|
+
preventRecursive: false,
|
|
41
|
+
stackChanges: false,
|
|
42
|
+
preventUpdate: [],
|
|
43
|
+
preventDefineUpdate: [],
|
|
44
|
+
preventBeforeStateUpdateListener: false,
|
|
45
|
+
preventListeners: false,
|
|
46
|
+
preventStateUpdateListener: false
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
it("initializes options with UPDATE_DEFAULT_OPTIONS when opts is empty", async () => {
|
|
50
|
+
await element.update({}, opts);
|
|
51
|
+
expect(opts.calleeElement).toBe(false);
|
|
52
|
+
expect(element.__ref).toBeDefined();
|
|
53
|
+
});
|
|
54
|
+
it("merges opts with UPDATE_DEFAULT_OPTIONS using deepMerge", async () => {
|
|
55
|
+
opts.customOption = true;
|
|
56
|
+
await element.update({}, opts);
|
|
57
|
+
expect(opts.customOption).toBe(true);
|
|
58
|
+
});
|
|
59
|
+
it("converts string params to { text: params }", async () => {
|
|
60
|
+
await element.update("testString", opts);
|
|
61
|
+
expect(element.text).toBe("testString");
|
|
62
|
+
});
|
|
63
|
+
it("converts number params to { text: params }", async () => {
|
|
64
|
+
await element.update(123, opts);
|
|
65
|
+
expect(element.text).toBe(123);
|
|
66
|
+
});
|
|
67
|
+
it("returns early if preventInheritAtCurrentState matches element", async () => {
|
|
68
|
+
opts.preventInheritAtCurrentState = { __element: element };
|
|
69
|
+
await element.update({}, opts);
|
|
70
|
+
expect(element.__ref.__currentSnapshot).toBe(6);
|
|
71
|
+
});
|
|
72
|
+
it("initializes __ref if not present", async () => {
|
|
73
|
+
delete element.__ref;
|
|
74
|
+
await element.update({}, opts);
|
|
75
|
+
expect(element.__ref).toBeDefined();
|
|
76
|
+
});
|
|
77
|
+
it("merges options with UPDATE_DEFAULT_OPTIONS when exclude is missing", async () => {
|
|
78
|
+
await element.update({}, opts);
|
|
79
|
+
expect(opts.exclude).toBeDefined();
|
|
80
|
+
});
|
|
81
|
+
it("does not throw or modify opts when params is undefined", async () => {
|
|
82
|
+
await element.update(void 0, opts);
|
|
83
|
+
expect(opts).toEqual({
|
|
84
|
+
calleeElement: false,
|
|
85
|
+
cleanExec: true,
|
|
86
|
+
currentSnapshot: false,
|
|
87
|
+
exclude: [],
|
|
88
|
+
preventRecursive: false,
|
|
89
|
+
preventUpdate: [],
|
|
90
|
+
preventDefineUpdate: [],
|
|
91
|
+
stackChanges: false,
|
|
92
|
+
preventBeforeStateUpdateListener: false,
|
|
93
|
+
preventListeners: false,
|
|
94
|
+
preventStateUpdateListener: false
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
it("does not throw when opts is undefined", async () => {
|
|
98
|
+
await element.update({}, void 0);
|
|
99
|
+
expect(element.__ref).toBeDefined();
|
|
100
|
+
});
|
|
101
|
+
it("does not throw when opts is null", async () => {
|
|
102
|
+
await element.update({}, null);
|
|
103
|
+
expect(element.__ref).toBeDefined();
|
|
104
|
+
});
|
|
105
|
+
it("does not modify the params object", async () => {
|
|
106
|
+
params = { key: "value" };
|
|
107
|
+
await element.update(params, opts);
|
|
108
|
+
expect(params).toEqual({ key: "value" });
|
|
109
|
+
});
|
|
110
|
+
it("does modify opts when params is an empty object", async () => {
|
|
111
|
+
await element.update({}, opts);
|
|
112
|
+
expect(opts).toEqual({
|
|
113
|
+
calleeElement: false,
|
|
114
|
+
cleanExec: true,
|
|
115
|
+
currentSnapshot: false,
|
|
116
|
+
exclude: [],
|
|
117
|
+
preventRecursive: false,
|
|
118
|
+
stackChanges: false,
|
|
119
|
+
preventUpdate: [],
|
|
120
|
+
preventDefineUpdate: [],
|
|
121
|
+
preventBeforeStateUpdateListener: false,
|
|
122
|
+
preventListeners: false,
|
|
123
|
+
preventStateUpdateListener: false
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
it("moves regular properties to element.props", async () => {
|
|
127
|
+
params = { props: { title: "Test", description: "Content" } };
|
|
128
|
+
await element.update(params, opts);
|
|
129
|
+
expect(element.props).toEqual({
|
|
130
|
+
title: "Test",
|
|
131
|
+
description: "Content"
|
|
132
|
+
});
|
|
133
|
+
expect(element.title).toBeUndefined();
|
|
134
|
+
});
|
|
135
|
+
it("keeps element-rooted properties", async () => {
|
|
136
|
+
params = { Header: {}, Footer: {}, 0: "index" };
|
|
137
|
+
await element.update(params, opts);
|
|
138
|
+
expect(element.Header).toBeDefined();
|
|
139
|
+
expect(element.Footer).toBeDefined();
|
|
140
|
+
expect(element["0"]).toBe("index");
|
|
141
|
+
expect(element.props).toEqual({});
|
|
142
|
+
});
|
|
143
|
+
it("preserves built-in properties on element", async () => {
|
|
144
|
+
params = { props: { className: "container", hidden: true } };
|
|
145
|
+
await element.update(params, opts);
|
|
146
|
+
expect(element.props.className).toBe("container");
|
|
147
|
+
expect(element.props.hidden).toBe(true);
|
|
148
|
+
expect(element.props).toEqual({ className: "container", hidden: true });
|
|
149
|
+
});
|
|
150
|
+
it("moves element-like properties from props to root", async () => {
|
|
151
|
+
params = { props: { Header: {} } };
|
|
152
|
+
await element.update(params, opts);
|
|
153
|
+
expect(element.Header).toBeDefined();
|
|
154
|
+
expect(element.props.Header).toBeUndefined();
|
|
155
|
+
});
|
|
156
|
+
it("exits early when inheritStateUpdates returns false", async () => {
|
|
157
|
+
element.__ref.__stateBlocked = true;
|
|
158
|
+
await element.update({ props: { shouldChange: true } }, opts);
|
|
159
|
+
expect(element.props.shouldChange).toBe(true);
|
|
160
|
+
expect(element.__ref.__stateBlocked).toBe(true);
|
|
161
|
+
});
|
|
162
|
+
it("exits early when checkIfOnUpdate fails", async () => {
|
|
163
|
+
element.parent.props.ifCondition = false;
|
|
164
|
+
await element.update({ state: { newState: true } }, opts);
|
|
165
|
+
expect(element.state.newState).toBe(true);
|
|
166
|
+
});
|
|
167
|
+
it("updates props from parent key match", async () => {
|
|
168
|
+
element.parent.props.testKey = { inherited: true };
|
|
169
|
+
await element.update({}, opts);
|
|
170
|
+
expect(element.props.inherited).toBeUndefined();
|
|
171
|
+
});
|
|
172
|
+
it("updates props when functions exist in __props", async () => {
|
|
173
|
+
element.__ref.__props.push(() => "dynamic");
|
|
174
|
+
await element.update({}, opts);
|
|
175
|
+
expect(element.props).toEqual(expect.any(Object));
|
|
176
|
+
});
|
|
177
|
+
it("skips props update when preventPropsUpdate=true", async () => {
|
|
178
|
+
opts.preventPropsUpdate = true;
|
|
179
|
+
opts.preventUpdateAfter = true;
|
|
180
|
+
element.parent.props.testKey = { shouldExist: true };
|
|
181
|
+
await element.update({}, opts);
|
|
182
|
+
expect(element.props.shouldExist).toBeUndefined();
|
|
183
|
+
});
|
|
184
|
+
it("should not skips props update when preventPropsUpdate=false", async () => {
|
|
185
|
+
opts.preventPropsUpdate = false;
|
|
186
|
+
opts.lazyLoad = true;
|
|
187
|
+
opts.onEachUpdate = () => {
|
|
188
|
+
return true;
|
|
189
|
+
};
|
|
190
|
+
element.parent.props.testKey = { shouldExist: true };
|
|
191
|
+
element.__ref.__propsStack = [];
|
|
192
|
+
element.__ref.__if = true;
|
|
193
|
+
element.off = { text: "off" };
|
|
194
|
+
await element.update({}, opts);
|
|
195
|
+
expect(element.props.shouldExist).toBeUndefined();
|
|
196
|
+
});
|
|
197
|
+
it("should set preventUpdateAfterCount to 1 when is not a number", async () => {
|
|
198
|
+
opts.preventPropsUpdate = true;
|
|
199
|
+
opts.preventUpdateAfter = 2;
|
|
200
|
+
opts.preventUpdateAfterCount = void 0;
|
|
201
|
+
element.parent.props.testKey = { shouldExist: true };
|
|
202
|
+
await element.update({}, opts);
|
|
203
|
+
expect(element.props.shouldExist).toBeUndefined();
|
|
204
|
+
});
|
|
205
|
+
it("returns element when beforeUpdate rejects", async () => {
|
|
206
|
+
element.props.onBeforeUpdate = () => false;
|
|
207
|
+
const result = await element.update({}, opts);
|
|
208
|
+
expect(result).toBe(element);
|
|
209
|
+
});
|
|
210
|
+
it("processes parent.childProps", async () => {
|
|
211
|
+
element.parent.props.childProps = { global: true };
|
|
212
|
+
await element.update({}, opts);
|
|
213
|
+
expect(element.props.global).toBeUndefined();
|
|
214
|
+
});
|
|
215
|
+
it("processes function props", async () => {
|
|
216
|
+
await element.update({ props: { calc: () => 42 } }, opts);
|
|
217
|
+
expect(element.props.calc()).toBe(42);
|
|
218
|
+
});
|
|
219
|
+
});
|
|
@@ -0,0 +1,87 @@
|
|
|
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 children_exports = {};
|
|
20
|
+
__export(children_exports, {
|
|
21
|
+
default: () => children_default,
|
|
22
|
+
setChildren: () => setChildren
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(children_exports);
|
|
25
|
+
var import_utils = require("@domql/utils");
|
|
26
|
+
async function setChildren(param, element, opts) {
|
|
27
|
+
let { children, __ref: ref, state } = element;
|
|
28
|
+
let { childrenAs } = element.props || {};
|
|
29
|
+
children = await (0, import_utils.execPromise)(param, element, state) || await (0, import_utils.execPromise)(children, element, state);
|
|
30
|
+
if (children) {
|
|
31
|
+
if ((0, import_utils.isState)(children)) children = children.parse();
|
|
32
|
+
if ((0, import_utils.isString)(children) || (0, import_utils.isNumber)(children)) {
|
|
33
|
+
if (children === "state") children = state.parse();
|
|
34
|
+
else {
|
|
35
|
+
const pathInState = (0, import_utils.getChildStateInKey)(children, state);
|
|
36
|
+
if (pathInState) {
|
|
37
|
+
childrenAs = "state";
|
|
38
|
+
children = (0, import_utils.getChildStateInKey)(children, state) || { value: children };
|
|
39
|
+
} else {
|
|
40
|
+
children = { text: children };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if ((0, import_utils.isObject)(children)) {
|
|
45
|
+
if (children.$$typeof) {
|
|
46
|
+
return element.call("renderReact", children, element);
|
|
47
|
+
}
|
|
48
|
+
children = Object.keys(children).map((v) => {
|
|
49
|
+
const val = children[v];
|
|
50
|
+
if ((0, import_utils.matchesComponentNaming)(v)) return (0, import_utils.concatAddExtends)(v, val);
|
|
51
|
+
return val;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (!children || (0, import_utils.isNot)(children)("array", "object")) return;
|
|
56
|
+
if ((0, import_utils.isArray)(children) && children.find((v) => v == null ? void 0 : v.$$typeof)) {
|
|
57
|
+
const filterReact = children.filter((v) => !(v == null ? void 0 : v.$$typeof));
|
|
58
|
+
if (filterReact.length !== children.length) {
|
|
59
|
+
const extractedReactComponents = children.filter((v) => v == null ? void 0 : v.$$typeof);
|
|
60
|
+
element.call("renderReact", extractedReactComponents, element);
|
|
61
|
+
}
|
|
62
|
+
children = filterReact;
|
|
63
|
+
}
|
|
64
|
+
if (ref.__childrenCache) {
|
|
65
|
+
const equals = JSON.stringify(children) === JSON.stringify(ref.__childrenCache);
|
|
66
|
+
if (equals) {
|
|
67
|
+
ref.__noChildrenDifference = true;
|
|
68
|
+
} else {
|
|
69
|
+
ref.__childrenCache = (0, import_utils.deepClone)(children);
|
|
70
|
+
delete ref.__noChildrenDifference;
|
|
71
|
+
}
|
|
72
|
+
} else {
|
|
73
|
+
ref.__childrenCache = (0, import_utils.deepClone)(children);
|
|
74
|
+
}
|
|
75
|
+
if ((0, import_utils.isObject)(children) || (0, import_utils.isArray)(children)) {
|
|
76
|
+
children = (0, import_utils.deepClone)(children);
|
|
77
|
+
}
|
|
78
|
+
const content = { tag: "fragment" };
|
|
79
|
+
for (const key in children) {
|
|
80
|
+
const value = Object.hasOwnProperty.call(children, key) && children[key];
|
|
81
|
+
if ((0, import_utils.isDefined)(value) && value !== null && value !== false) {
|
|
82
|
+
content[key] = (0, import_utils.isObjectLike)(value) ? childrenAs ? { [childrenAs]: value } : value : childrenAs ? { [childrenAs]: childrenAs === "state" ? { value } : { text: value } } : { text: value };
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return content;
|
|
86
|
+
}
|
|
87
|
+
var children_default = setChildren;
|
package/dist/cjs/create.js
CHANGED
|
@@ -28,150 +28,84 @@ var import_utils = require("@domql/utils");
|
|
|
28
28
|
var import_event = require("@domql/event");
|
|
29
29
|
var import_render = require("@domql/render");
|
|
30
30
|
var import_state = require("@domql/state");
|
|
31
|
-
var import_methods = require("./methods/index.js");
|
|
32
|
-
var import_props = require("./props/index.js");
|
|
33
|
-
var import_extend = require("./extend.js");
|
|
34
31
|
var import_mixins = require("./mixins/index.js");
|
|
35
32
|
var import_set = require("./methods/set.js");
|
|
36
33
|
var import_classList = require("./mixins/classList.js");
|
|
37
34
|
var import_iterate = require("./iterate.js");
|
|
38
|
-
var import_options = require("./cache/options.js");
|
|
39
|
-
var import_component = require("./utils/component.js");
|
|
40
35
|
const ENV = "development";
|
|
41
|
-
const create = async (
|
|
42
|
-
cacheOptions(
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
element.key = key;
|
|
36
|
+
const create = async (props, parentEl, passedKey, options = import_utils.OPTIONS.create || {}, attachOptions) => {
|
|
37
|
+
cacheOptions(options);
|
|
38
|
+
const element = (0, import_utils.createElement)(props, parentEl, passedKey, options, import_tree.ROOT);
|
|
39
|
+
if (!element) return;
|
|
40
|
+
const { key, parent, __ref: ref } = element;
|
|
41
|
+
if (element.key === "BannerHgroup") {
|
|
42
|
+
console.warn((0, import_utils.deepClone)(element));
|
|
43
|
+
}
|
|
44
|
+
(0, import_utils.applyExtends)(element, parent, options);
|
|
45
|
+
if (element.key === "BannerHgroup") {
|
|
46
|
+
console.warn((0, import_utils.deepClone)(element));
|
|
47
|
+
}
|
|
48
|
+
(0, import_utils.propertizeElement)(element, parent);
|
|
49
|
+
await (0, import_event.triggerEventOn)("start", element, options);
|
|
57
50
|
if (options.onlyResolveExtends) {
|
|
58
51
|
return onlyResolveExtends(element, parent, key, options);
|
|
59
52
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
53
|
+
if (element.key === "BannerHgroup") {
|
|
54
|
+
console.warn(element);
|
|
55
|
+
}
|
|
56
|
+
resetOptions(element, parent, options);
|
|
63
57
|
(0, import_set.addMethods)(element, parent, options);
|
|
64
|
-
createScope(element, parent);
|
|
58
|
+
(0, import_utils.createScope)(element, parent);
|
|
65
59
|
await (0, import_state.createState)(element, parent);
|
|
66
|
-
if (element.scope === "state")
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
if (element.scope === "props" || element.scope === true)
|
|
60
|
+
if (element.scope === "state") element.scope = element.state;
|
|
61
|
+
(0, import_utils.createIfConditionFlag)(element, parent);
|
|
62
|
+
(0, import_utils.initProps)(element, parent, options);
|
|
63
|
+
if (element.scope === "props" || element.scope === true) {
|
|
71
64
|
element.scope = element.props;
|
|
72
|
-
createIfConditionFlag(element, parent);
|
|
73
|
-
if (element.node && ref.__if) {
|
|
74
|
-
return (0, import_render.assignNode)(element, parent, key, attachOptions);
|
|
75
65
|
}
|
|
76
|
-
(0,
|
|
66
|
+
(0, import_utils.createIfConditionFlag)(element, parent);
|
|
67
|
+
if (element.node) {
|
|
68
|
+
if (ref.__if) return (0, import_render.assignNode)(element, parent, key, attachOptions);
|
|
69
|
+
}
|
|
77
70
|
const onInit = await (0, import_event.triggerEventOn)("init", element, options);
|
|
78
|
-
if (onInit === false)
|
|
79
|
-
return element;
|
|
71
|
+
if (onInit === false) return element;
|
|
80
72
|
(0, import_event.triggerEventOn)("beforeClassAssign", element, options);
|
|
81
73
|
(0, import_classList.assignKeyAsClassname)(element);
|
|
82
|
-
(0, import_utils.addChildrenIfNotInOriginal)(element, parent, key);
|
|
83
74
|
await renderElement(element, parent, options, attachOptions);
|
|
84
75
|
addElementIntoParentChildren(element, parent);
|
|
85
76
|
await (0, import_event.triggerEventOn)("complete", element, options);
|
|
86
77
|
return element;
|
|
87
78
|
};
|
|
88
|
-
const
|
|
89
|
-
if (
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
return {};
|
|
94
|
-
}
|
|
95
|
-
if ((0, import_utils.isString)(key) && key.slice(0, 2 === "__")) {
|
|
96
|
-
if (ENV === "test" || ENV === "development") {
|
|
97
|
-
console.warn(key, "seems like to be in __ref");
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
if (element === null)
|
|
101
|
-
return;
|
|
102
|
-
if (element === true)
|
|
103
|
-
return { text: true };
|
|
104
|
-
if (element.__hash) {
|
|
105
|
-
return { extend: element };
|
|
79
|
+
const cacheOptions = (options) => {
|
|
80
|
+
if (options && !import_utils.OPTIONS.create) {
|
|
81
|
+
import_utils.OPTIONS.create = options;
|
|
82
|
+
import_utils.OPTIONS.create.context = options.context;
|
|
106
83
|
}
|
|
107
|
-
return element;
|
|
108
|
-
};
|
|
109
|
-
const redefineElement = (element, parent, key, options) => {
|
|
110
|
-
const elementWrapper = createBasedOnType(element, parent, key, options);
|
|
111
|
-
if (options.syntaxv3 || element.props && element.props.syntaxv3 || parent && parent.props && parent.props.syntaxv3) {
|
|
112
|
-
if (element.props)
|
|
113
|
-
element.props.syntaxv3 = true;
|
|
114
|
-
else
|
|
115
|
-
element.syntaxv3 = true;
|
|
116
|
-
return (0, import_component.createValidDomqlObjectFromSugar)(element, parent, key, options);
|
|
117
|
-
} else if ((0, import_utils.checkIfKeyIsComponent)(key)) {
|
|
118
|
-
return (0, import_utils.applyKeyComponentAsExtend)(elementWrapper, parent, key);
|
|
119
|
-
}
|
|
120
|
-
if (checkIfMedia(key)) {
|
|
121
|
-
return applyMediaProps(elementWrapper, parent, key);
|
|
122
|
-
}
|
|
123
|
-
return elementWrapper;
|
|
124
84
|
};
|
|
125
|
-
const
|
|
126
|
-
if (!parent)
|
|
127
|
-
return import_tree.ROOT;
|
|
128
|
-
if ((0, import_utils.isNode)(parent)) {
|
|
129
|
-
const parentNodeWrapper = { key: ":root", node: parent };
|
|
130
|
-
import_tree.ROOT[`${key}_parent`] = parentNodeWrapper;
|
|
131
|
-
return parentNodeWrapper;
|
|
132
|
-
}
|
|
133
|
-
return parent;
|
|
134
|
-
};
|
|
135
|
-
const cacheOptions = (element, options) => {
|
|
136
|
-
if (options && !import_options.OPTIONS.create) {
|
|
137
|
-
import_options.OPTIONS.create = options;
|
|
138
|
-
import_options.OPTIONS.create.context = element.context || options.context;
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
const createKey = (element, parent, key) => {
|
|
142
|
-
return ((0, import_utils.exec)(key, element) || key || element.key || (0, import_utils.generateKey)()).toString();
|
|
143
|
-
};
|
|
144
|
-
const addRef = (element, parent) => {
|
|
145
|
-
if (element.__ref)
|
|
146
|
-
element.__ref.origin = element;
|
|
147
|
-
else
|
|
148
|
-
element.__ref = { origin: element };
|
|
149
|
-
return element.__ref;
|
|
150
|
-
};
|
|
151
|
-
const switchDefaultOptions = (element, parent, options) => {
|
|
85
|
+
const resetOptions = (element, parent, options) => {
|
|
152
86
|
if (Object.keys(options).length) {
|
|
153
|
-
|
|
154
|
-
if (options.
|
|
155
|
-
delete options.ignoreChildExtend;
|
|
87
|
+
import_utils.OPTIONS.defaultOptions = options;
|
|
88
|
+
if (options.ignoreChildExtends) delete options.ignoreChildExtends;
|
|
156
89
|
}
|
|
157
90
|
};
|
|
158
91
|
const addElementIntoParentChildren = (element, parent) => {
|
|
159
|
-
if (parent.__ref && parent.__ref.__children)
|
|
92
|
+
if (parent.__ref && parent.__ref.__children) {
|
|
160
93
|
parent.__ref.__children.push(element.key);
|
|
94
|
+
}
|
|
161
95
|
};
|
|
162
96
|
const visitedElements = /* @__PURE__ */ new WeakMap();
|
|
163
97
|
const renderElement = async (element, parent, options, attachOptions) => {
|
|
164
98
|
var _a, _b, _c, _d;
|
|
165
99
|
if (visitedElements.has(element)) {
|
|
166
|
-
if (ENV === "test" || ENV === "development")
|
|
100
|
+
if (ENV === "test" || ENV === "development") {
|
|
167
101
|
console.warn("Cyclic rendering detected:", element.__ref.path);
|
|
102
|
+
}
|
|
168
103
|
}
|
|
169
104
|
visitedElements.set(element, true);
|
|
170
105
|
const { __ref: ref, key } = element;
|
|
171
106
|
const createNestedChild = async () => {
|
|
172
107
|
const isInfiniteLoopDetected = (0, import_utils.detectInfiniteLoop)(ref.path);
|
|
173
|
-
if (ref.__uniqId || isInfiniteLoopDetected)
|
|
174
|
-
return;
|
|
108
|
+
if (ref.__uniqId || isInfiniteLoopDetected) return;
|
|
175
109
|
await (0, import_node.createNode)(element, options);
|
|
176
110
|
ref.__uniqId = Math.random();
|
|
177
111
|
};
|
|
@@ -182,18 +116,31 @@ const renderElement = async (element, parent, options, attachOptions) => {
|
|
|
182
116
|
await createNestedChild();
|
|
183
117
|
} catch (e) {
|
|
184
118
|
const path = ref.path;
|
|
185
|
-
if (path.includes("ComponentsGrid"))
|
|
119
|
+
if (path.includes("ComponentsGrid")) {
|
|
186
120
|
path.splice(0, path.indexOf("ComponentsGrid") + 2);
|
|
187
|
-
|
|
121
|
+
}
|
|
122
|
+
if (path.includes("demoComponent")) {
|
|
188
123
|
path.splice(0, path.indexOf("demoComponent") + 1);
|
|
124
|
+
}
|
|
189
125
|
const isDemoComponent = (_b = (_a = element.lookup((el) => el.state.key)) == null ? void 0 : _a.state) == null ? void 0 : _b.key;
|
|
190
|
-
element.warn(
|
|
126
|
+
element.warn(
|
|
127
|
+
"Error happened in:",
|
|
128
|
+
isDemoComponent ? isDemoComponent + " " : "" + path.join(".")
|
|
129
|
+
);
|
|
191
130
|
element.verbose();
|
|
192
131
|
element.error(e, options);
|
|
193
|
-
if ((_c = element.on) == null ? void 0 : _c.error)
|
|
132
|
+
if ((_c = element.on) == null ? void 0 : _c.error) {
|
|
194
133
|
element.on.error(e, element, element.state, element.context, options);
|
|
195
|
-
|
|
196
|
-
|
|
134
|
+
}
|
|
135
|
+
if ((_d = element.props) == null ? void 0 : _d.onError) {
|
|
136
|
+
element.props.onError(
|
|
137
|
+
e,
|
|
138
|
+
element,
|
|
139
|
+
element.state,
|
|
140
|
+
element.context,
|
|
141
|
+
options
|
|
142
|
+
);
|
|
143
|
+
}
|
|
197
144
|
}
|
|
198
145
|
}
|
|
199
146
|
if (!ref.__if) {
|
|
@@ -207,97 +154,29 @@ const renderElement = async (element, parent, options, attachOptions) => {
|
|
|
207
154
|
await (0, import_event.triggerEventOn)("done", element, options);
|
|
208
155
|
await (0, import_event.triggerEventOn)("create", element, options);
|
|
209
156
|
};
|
|
210
|
-
const checkIfPrimitive = (element) => (0, import_utils.is)(element)("string", "number");
|
|
211
|
-
const applyValueAsText = (element, parent, key) => {
|
|
212
|
-
const extendTag = element.extend && element.extend.tag;
|
|
213
|
-
const childExtendTag = parent.childExtend && parent.childExtend.tag;
|
|
214
|
-
const childPropsTag = parent.props.childProps && parent.props.childProps.tag;
|
|
215
|
-
const isKeyValidHTMLTag = import_utils.HTML_TAGS.body.indexOf(key) > -1 && key;
|
|
216
|
-
return {
|
|
217
|
-
text: element,
|
|
218
|
-
tag: extendTag || childExtendTag || childPropsTag || isKeyValidHTMLTag || "string"
|
|
219
|
-
};
|
|
220
|
-
};
|
|
221
|
-
const applyContext = (element, parent, options) => {
|
|
222
|
-
const forcedOptionsContext = options.context && !import_tree.ROOT.context && !element.context;
|
|
223
|
-
if (forcedOptionsContext)
|
|
224
|
-
import_tree.ROOT.context = options.context;
|
|
225
|
-
if (!element.context)
|
|
226
|
-
element.context = parent.context || options.context || import_tree.ROOT.context;
|
|
227
|
-
};
|
|
228
|
-
const createScope = (element, parent) => {
|
|
229
|
-
const { __ref: ref } = element;
|
|
230
|
-
if (!element.scope)
|
|
231
|
-
element.scope = parent.scope || ref.root.scope || {};
|
|
232
|
-
};
|
|
233
|
-
const createIfConditionFlag = (element, parent) => {
|
|
234
|
-
const { __ref: ref } = element;
|
|
235
|
-
if ((0, import_utils.isFunction)(element.if) && !element.if(element, element.state, element.context)) {
|
|
236
|
-
delete ref.__if;
|
|
237
|
-
} else
|
|
238
|
-
ref.__if = true;
|
|
239
|
-
};
|
|
240
|
-
const addCaching = (element, parent) => {
|
|
241
|
-
const { __ref: ref, key } = element;
|
|
242
|
-
let { __ref: parentRef } = parent;
|
|
243
|
-
if (!element.transform)
|
|
244
|
-
element.transform = {};
|
|
245
|
-
if (!ref.__cached)
|
|
246
|
-
ref.__cached = {};
|
|
247
|
-
if (!ref.__defineCache)
|
|
248
|
-
ref.__defineCache = {};
|
|
249
|
-
if (!ref.__exec)
|
|
250
|
-
ref.__exec = {};
|
|
251
|
-
if (!ref.__execProps)
|
|
252
|
-
ref.__execProps = {};
|
|
253
|
-
if (!ref.__class)
|
|
254
|
-
ref.__class = {};
|
|
255
|
-
if (!ref.__classNames)
|
|
256
|
-
ref.__classNames = {};
|
|
257
|
-
if (!ref.__attr)
|
|
258
|
-
ref.__attr = {};
|
|
259
|
-
if (!ref.__changes)
|
|
260
|
-
ref.__changes = [];
|
|
261
|
-
if (!ref.__children)
|
|
262
|
-
ref.__children = [];
|
|
263
|
-
if ((0, import_utils.checkIfKeyIsComponent)(key))
|
|
264
|
-
ref.__componentKey = key.split("_")[0].split(".")[0].split("+")[0];
|
|
265
|
-
const hasRoot = parent && parent.key === ":root";
|
|
266
|
-
if (!ref.root)
|
|
267
|
-
ref.root = hasRoot ? element : parentRef.root;
|
|
268
|
-
if (!parentRef)
|
|
269
|
-
parentRef = parent.ref = {};
|
|
270
|
-
if (!parentRef.path)
|
|
271
|
-
parentRef.path = [];
|
|
272
|
-
ref.path = parentRef.path.concat(element.key);
|
|
273
|
-
};
|
|
274
157
|
const onlyResolveExtends = (element, parent, key, options) => {
|
|
275
158
|
const { __ref: ref } = element;
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
(0, import_props.createProps)(element, parent, options);
|
|
285
|
-
if (element.scope === "props" || element.scope === true)
|
|
286
|
-
element.scope = element.props;
|
|
287
|
-
if (element.node && ref.__if) {
|
|
288
|
-
parent[key || element.key] = element;
|
|
289
|
-
}
|
|
290
|
-
if (!element.props)
|
|
291
|
-
element.props = {};
|
|
292
|
-
(0, import_component.applyVariant)(element, parent);
|
|
293
|
-
addElementIntoParentChildren(element, parent);
|
|
159
|
+
(0, import_set.addMethods)(element, parent, options);
|
|
160
|
+
(0, import_utils.createScope)(element, parent);
|
|
161
|
+
(0, import_state.createState)(element, parent);
|
|
162
|
+
if (element.scope === "state") element.scope = element.state;
|
|
163
|
+
(0, import_utils.createIfConditionFlag)(element, parent);
|
|
164
|
+
(0, import_utils.initProps)(element, parent, options);
|
|
165
|
+
if (element.scope === "props" || element.scope === true) {
|
|
166
|
+
element.scope = element.props;
|
|
294
167
|
}
|
|
168
|
+
if (element.node && ref.__if) {
|
|
169
|
+
parent[key || element.key] = element;
|
|
170
|
+
}
|
|
171
|
+
if (!element.props) element.props = {};
|
|
172
|
+
addElementIntoParentChildren(element, parent);
|
|
295
173
|
if (element.tag !== "string" && element.tag !== "fragment") {
|
|
296
174
|
(0, import_iterate.throughInitialDefine)(element);
|
|
297
175
|
(0, import_iterate.throughInitialExec)(element);
|
|
298
176
|
for (const k in element) {
|
|
299
|
-
if ((0, import_utils.isUndefined)(element[k]) || (0,
|
|
177
|
+
if ((0, import_utils.isUndefined)(element[k]) || (0, import_utils.isMethod)(k, element) || (0, import_utils.isObject)(import_mixins.REGISTRY[k])) {
|
|
300
178
|
continue;
|
|
179
|
+
}
|
|
301
180
|
const hasDefine = element.define && element.define[k];
|
|
302
181
|
const contextHasDefine = element.context && element.context.define && element.context.define[k];
|
|
303
182
|
const optionsHasDefine = options.define && options.define[k];
|
|
@@ -317,24 +196,4 @@ const onlyResolveExtends = (element, parent, key, options) => {
|
|
|
317
196
|
}
|
|
318
197
|
return element;
|
|
319
198
|
};
|
|
320
|
-
const checkIfMedia = (key) => key.slice(0, 1) === "@";
|
|
321
|
-
const applyMediaProps = (element, parent, key) => {
|
|
322
|
-
const { props } = element;
|
|
323
|
-
if (props) {
|
|
324
|
-
props.display = "none";
|
|
325
|
-
if (props[key])
|
|
326
|
-
props[key].display = props.display;
|
|
327
|
-
else
|
|
328
|
-
props[key] = { display: props.display || "block" };
|
|
329
|
-
return element;
|
|
330
|
-
} else {
|
|
331
|
-
return {
|
|
332
|
-
...element,
|
|
333
|
-
props: {
|
|
334
|
-
display: "none",
|
|
335
|
-
[key]: { display: "block" }
|
|
336
|
-
}
|
|
337
|
-
};
|
|
338
|
-
}
|
|
339
|
-
};
|
|
340
199
|
var create_default = create;
|
package/dist/cjs/define.js
CHANGED
|
@@ -28,7 +28,6 @@ var define_default = (params, options = {}) => {
|
|
|
28
28
|
for (const param in params) {
|
|
29
29
|
if (import_mixins.REGISTRY[param] && !overwrite) {
|
|
30
30
|
(0, import_report.report)("OverwriteToBuiltin", param);
|
|
31
|
-
} else
|
|
32
|
-
import_mixins.REGISTRY[param] = params[param];
|
|
31
|
+
} else import_mixins.REGISTRY[param] = params[param];
|
|
33
32
|
}
|
|
34
33
|
};
|