@domql/element 3.1.2 → 3.2.7
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 +4 -6
- package/children.js +45 -18
- package/create.js +58 -46
- package/define.js +1 -1
- package/dist/cjs/children.js +43 -13
- package/dist/cjs/create.js +57 -27
- package/dist/cjs/define.js +1 -1
- package/dist/cjs/event/animationFrame.js +96 -0
- package/dist/cjs/event/can.js +28 -0
- package/dist/cjs/event/index.js +20 -0
- package/dist/cjs/event/on.js +84 -0
- package/dist/cjs/event/store.js +27 -0
- package/dist/cjs/extend.js +88 -0
- package/dist/cjs/index.js +9 -6
- package/dist/cjs/iterate.js +89 -33
- package/dist/cjs/methods/set.js +5 -0
- package/dist/cjs/methods/v2.js +1 -1
- package/dist/cjs/mixins/attr.js +3 -2
- package/dist/cjs/mixins/classList.js +11 -1
- package/dist/cjs/mixins/content.js +72 -0
- package/dist/cjs/mixins/html.js +1 -2
- package/dist/cjs/mixins/registry.js +2 -2
- package/dist/cjs/mixins/scope.js +1 -1
- package/dist/cjs/mixins/state.js +4 -4
- package/dist/cjs/mixins/style.js +11 -2
- package/dist/cjs/mixins/text.js +9 -5
- package/dist/cjs/node.js +22 -19
- package/dist/cjs/render/append.js +72 -0
- package/dist/cjs/render/cache.js +80 -0
- package/dist/cjs/render/create.js +25 -0
- package/dist/cjs/render/index.js +20 -0
- package/dist/cjs/set.js +33 -40
- package/dist/cjs/update.js +100 -69
- package/dist/cjs/utils/applyParam.js +7 -7
- package/dist/cjs/utils/extendUtils.js +132 -0
- package/dist/cjs/utils/index.js +2 -0
- package/dist/cjs/utils/propEvents.js +56 -0
- package/dist/esm/children.js +44 -14
- package/dist/esm/create.js +58 -27
- package/dist/esm/define.js +1 -1
- package/dist/esm/event/animationFrame.js +76 -0
- package/dist/esm/event/can.js +8 -0
- package/dist/esm/event/index.js +3 -0
- package/dist/esm/event/on.js +64 -0
- package/dist/esm/event/store.js +7 -0
- package/dist/esm/extend.js +74 -0
- package/dist/esm/index.js +8 -6
- package/dist/esm/iterate.js +90 -35
- package/dist/esm/methods/set.js +10 -0
- package/dist/esm/methods/v2.js +1 -1
- package/dist/esm/mixins/attr.js +4 -3
- package/dist/esm/mixins/classList.js +11 -1
- package/dist/esm/mixins/content.js +52 -0
- package/dist/esm/mixins/html.js +1 -2
- package/dist/esm/mixins/registry.js +1 -1
- package/dist/esm/mixins/scope.js +1 -1
- package/dist/esm/mixins/state.js +5 -5
- package/dist/esm/mixins/style.js +12 -3
- package/dist/esm/mixins/text.js +10 -6
- package/dist/esm/node.js +22 -19
- package/dist/esm/render/append.js +52 -0
- package/dist/esm/render/cache.js +60 -0
- package/dist/esm/render/create.js +5 -0
- package/dist/esm/render/index.js +3 -0
- package/dist/esm/set.js +34 -41
- package/dist/esm/update.js +100 -71
- package/dist/esm/utils/applyParam.js +8 -8
- package/dist/esm/utils/extendUtils.js +119 -0
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/propEvents.js +36 -0
- package/dist/iife/index.js +4718 -0
- package/extend.js +95 -0
- package/index.js +9 -6
- package/iterate.js +100 -38
- package/node.js +25 -23
- package/package.json +44 -20
- package/set.js +28 -32
- package/update.js +111 -82
- package/__tests__/checkIfOnUpdate.test.js +0 -103
- package/__tests__/children.test.js +0 -213
- package/__tests__/define.test.js +0 -75
- package/__tests__/inheritStateUpdates.test.js +0 -79
- package/__tests__/renderElement.test.js +0 -131
- package/__tests__/resetElement.test.js +0 -44
- package/__tests__/set.test.js +0 -316
- package/__tests__/throughExecProps.test.js +0 -86
- package/__tests__/throughInitialDefine.test.js +0 -104
- package/__tests__/throughInitialExec.test.js +0 -92
- package/__tests__/throughUpdatedDefine.test.js +0 -92
- package/__tests__/throughUpdatedExec.test.js +0 -110
- package/__tests__/tree.test.js +0 -15
- package/__tests__/update.test.js +0 -256
- package/dist/cjs/__tests__/checkIfOnUpdate.test.js +0 -73
- package/dist/cjs/__tests__/children.test.js +0 -177
- package/dist/cjs/__tests__/define.test.js +0 -75
- package/dist/cjs/__tests__/inheritStateUpdates.test.js +0 -62
- package/dist/cjs/__tests__/renderElement.test.js +0 -138
- package/dist/cjs/__tests__/resetElement.test.js +0 -35
- package/dist/cjs/__tests__/set.test.js +0 -256
- package/dist/cjs/__tests__/throughExecProps.test.js +0 -62
- package/dist/cjs/__tests__/throughInitialDefine.test.js +0 -79
- package/dist/cjs/__tests__/throughInitialExec.test.js +0 -73
- package/dist/cjs/__tests__/throughUpdatedDefine.test.js +0 -69
- package/dist/cjs/__tests__/throughUpdatedExec.test.js +0 -84
- package/dist/cjs/__tests__/tree.test.js +0 -11
- package/dist/cjs/__tests__/update.test.js +0 -222
- package/dist/cjs/package.json +0 -4
- package/dist/esm/__tests__/checkIfOnUpdate.test.js +0 -73
- package/dist/esm/__tests__/children.test.js +0 -177
- package/dist/esm/__tests__/define.test.js +0 -53
- package/dist/esm/__tests__/inheritStateUpdates.test.js +0 -62
- package/dist/esm/__tests__/renderElement.test.js +0 -116
- package/dist/esm/__tests__/resetElement.test.js +0 -35
- package/dist/esm/__tests__/set.test.js +0 -256
- package/dist/esm/__tests__/throughExecProps.test.js +0 -62
- package/dist/esm/__tests__/throughInitialDefine.test.js +0 -79
- package/dist/esm/__tests__/throughInitialExec.test.js +0 -73
- package/dist/esm/__tests__/throughUpdatedDefine.test.js +0 -69
- package/dist/esm/__tests__/throughUpdatedExec.test.js +0 -84
- package/dist/esm/__tests__/tree.test.js +0 -11
- package/dist/esm/__tests__/update.test.js +0 -222
- package/methods/set.js +0 -63
- package/methods/v2.js +0 -83
- package/mixins/attr.js +0 -32
- package/mixins/classList.js +0 -54
- package/mixins/data.js +0 -26
- package/mixins/html.js +0 -21
- package/mixins/index.js +0 -23
- package/mixins/registry.js +0 -46
- package/mixins/scope.js +0 -23
- package/mixins/state.js +0 -19
- package/mixins/style.js +0 -16
- package/mixins/text.js +0 -26
- package/utils/applyParam.js +0 -34
- package/utils/index.js +0 -3
package/dist/cjs/update.js
CHANGED
|
@@ -33,7 +33,7 @@ __export(update_exports, {
|
|
|
33
33
|
});
|
|
34
34
|
module.exports = __toCommonJS(update_exports);
|
|
35
35
|
var import_utils = require("@domql/utils");
|
|
36
|
-
var import_event = require("
|
|
36
|
+
var import_event = require("./event/index.js");
|
|
37
37
|
var import_state = require("@domql/state");
|
|
38
38
|
var import_create = require("./create.js");
|
|
39
39
|
var import_iterate = require("./iterate.js");
|
|
@@ -50,13 +50,8 @@ const UPDATE_DEFAULT_OPTIONS = {
|
|
|
50
50
|
calleeElement: false,
|
|
51
51
|
exclude: import_utils2.METHODS_EXL
|
|
52
52
|
};
|
|
53
|
-
const update =
|
|
54
|
-
const
|
|
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
|
-
);
|
|
59
|
-
options.calleeElement = calleeElementCache;
|
|
53
|
+
const update = function(params = {}, opts) {
|
|
54
|
+
const options = (0, import_utils.isObject)(opts) ? { ...UPDATE_DEFAULT_OPTIONS, ...opts } : { ...UPDATE_DEFAULT_OPTIONS };
|
|
60
55
|
const element = this;
|
|
61
56
|
let ref = element.__ref;
|
|
62
57
|
if (!ref) ref = element.__ref = {};
|
|
@@ -66,7 +61,7 @@ const update = async function(params = {}, opts) {
|
|
|
66
61
|
);
|
|
67
62
|
if (snapshotHasUpdated) return;
|
|
68
63
|
if (!options.preventListeners) {
|
|
69
|
-
|
|
64
|
+
(0, import_event.triggerEventOnUpdate)("startUpdate", params, element, options);
|
|
70
65
|
}
|
|
71
66
|
const { parent, node, key } = element;
|
|
72
67
|
const { exclude, preventInheritAtCurrentState } = options;
|
|
@@ -78,37 +73,38 @@ const update = async function(params = {}, opts) {
|
|
|
78
73
|
params = { text: params };
|
|
79
74
|
}
|
|
80
75
|
params = import_utils.propertizeUpdate.call(element, params);
|
|
81
|
-
const inheritState =
|
|
76
|
+
const inheritState = inheritStateUpdates(element, options);
|
|
82
77
|
if (inheritState === false) return;
|
|
83
|
-
const ifFails =
|
|
78
|
+
const ifFails = checkIfOnUpdate(element, parent, options);
|
|
84
79
|
if (ifFails) return;
|
|
85
80
|
if (ref.__if && !options.preventPropsUpdate) {
|
|
86
81
|
const hasParentProps = parent.props && (parent.props[key] || parent.props.childProps);
|
|
87
|
-
const hasFunctionInProps = ref.__propsStack.
|
|
88
|
-
const props = params.props || hasParentProps || hasFunctionInProps
|
|
82
|
+
const hasFunctionInProps = ref.__propsStack.some(import_utils.isFunction);
|
|
83
|
+
const props = params.props || hasParentProps || hasFunctionInProps;
|
|
89
84
|
if (props) (0, import_utils.updateProps)(props, element, parent);
|
|
90
85
|
}
|
|
91
86
|
if (!options.preventBeforeUpdateListener && !options.preventListeners) {
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
87
|
+
const hasBeforeUpdate = element.on?.beforeUpdate || element.props?.onBeforeUpdate;
|
|
88
|
+
if (hasBeforeUpdate) {
|
|
89
|
+
const simulate = { ...params, ...element };
|
|
90
|
+
const beforeUpdateReturns = (0, import_event.triggerEventOnUpdate)(
|
|
91
|
+
"beforeUpdate",
|
|
92
|
+
params,
|
|
93
|
+
simulate,
|
|
94
|
+
options
|
|
95
|
+
);
|
|
96
|
+
if (beforeUpdateReturns === false) return element;
|
|
97
|
+
}
|
|
100
98
|
}
|
|
101
99
|
(0, import_utils.overwriteDeep)(element, params);
|
|
102
100
|
(0, import_iterate.throughExecProps)(element);
|
|
103
101
|
(0, import_iterate.throughUpdatedExec)(element, { ignore: UPDATE_DEFAULT_OPTIONS });
|
|
104
102
|
(0, import_iterate.throughUpdatedDefine)(element);
|
|
105
103
|
if (!options.isForced && !options.preventListeners) {
|
|
106
|
-
|
|
104
|
+
(0, import_event.triggerEventOn)("beforeClassAssign", element, options);
|
|
107
105
|
}
|
|
108
106
|
if (!ref.__if) return false;
|
|
109
|
-
if (!node)
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
107
|
+
if (!node) return;
|
|
112
108
|
const {
|
|
113
109
|
preventUpdate,
|
|
114
110
|
preventDefineUpdate,
|
|
@@ -126,16 +122,20 @@ const update = async function(params = {}, opts) {
|
|
|
126
122
|
options.preventUpdateAfterCount = 1;
|
|
127
123
|
} else options.preventUpdateAfterCount++;
|
|
128
124
|
}
|
|
125
|
+
const preventUpdateSet = (0, import_utils.isArray)(preventUpdate) ? new Set(preventUpdate) : null;
|
|
126
|
+
const preventDefineUpdateSet = (0, import_utils.isArray)(preventDefineUpdate) ? new Set(preventDefineUpdate) : null;
|
|
129
127
|
for (const param in element) {
|
|
130
128
|
const prop = element[param];
|
|
131
|
-
if (!Object.hasOwnProperty.call(element, param)) continue;
|
|
132
|
-
const isInPreventUpdate =
|
|
133
|
-
const isInPreventDefineUpdate =
|
|
134
|
-
|
|
129
|
+
if (!Object.prototype.hasOwnProperty.call(element, param)) continue;
|
|
130
|
+
const isInPreventUpdate = preventUpdateSet && preventUpdateSet.has(param);
|
|
131
|
+
const isInPreventDefineUpdate = preventDefineUpdateSet && preventDefineUpdateSet.has(param);
|
|
132
|
+
const isRootEventHandler = (0, import_utils.isFunction)(prop) && param.length > 2 && param.charCodeAt(0) === 111 && param.charCodeAt(1) === 110 && // 'on'
|
|
133
|
+
param.charCodeAt(2) >= 65 && param.charCodeAt(2) <= 90;
|
|
134
|
+
if ((0, import_utils.isUndefined)(prop) || isInPreventUpdate || isInPreventDefineUpdate || preventDefineUpdate === true || preventDefineUpdate === param || preventStateUpdate && param === "state" || (0, import_utils.isMethod)(param, element) || isRootEventHandler || (0, import_utils.isObject)(import_mixins.REGISTRY[param])) {
|
|
135
135
|
continue;
|
|
136
136
|
}
|
|
137
137
|
if (preventStateUpdate === "once") options.preventStateUpdate = false;
|
|
138
|
-
const isElement =
|
|
138
|
+
const isElement = (0, import_applyParam.applyParam)(param, element, options);
|
|
139
139
|
if (isElement) {
|
|
140
140
|
const { hasDefine, hasContextDefine } = isElement;
|
|
141
141
|
const canUpdate = (0, import_utils.isObject)(prop) && !hasDefine && !hasContextDefine && !preventRecursive;
|
|
@@ -144,39 +144,79 @@ const update = async function(params = {}, opts) {
|
|
|
144
144
|
if (options.onEachUpdate) {
|
|
145
145
|
options.onEachUpdate(param, element, element.state, element.context);
|
|
146
146
|
}
|
|
147
|
-
const
|
|
147
|
+
const childParams = params[param];
|
|
148
|
+
if (childParams === void 0 && !options.isForced) continue;
|
|
149
|
+
const childUpdateCall = () => update.call(prop, childParams, {
|
|
148
150
|
...options,
|
|
149
151
|
currentSnapshot: snapshotOnCallee,
|
|
150
152
|
calleeElement
|
|
151
153
|
});
|
|
152
154
|
if (lazyLoad) {
|
|
153
|
-
import_utils.window.requestAnimationFrame(
|
|
154
|
-
|
|
155
|
-
if (!options.preventUpdateListener) {
|
|
156
|
-
|
|
155
|
+
import_utils.window.requestAnimationFrame(() => {
|
|
156
|
+
childUpdateCall();
|
|
157
|
+
if (!options.preventUpdateListener && !options.preventListeners) {
|
|
158
|
+
(0, import_event.triggerEventOn)("lazyLoad", element, options);
|
|
157
159
|
}
|
|
158
160
|
});
|
|
159
|
-
} else
|
|
161
|
+
} else childUpdateCall();
|
|
160
162
|
}
|
|
161
163
|
}
|
|
162
164
|
if (!preventContentUpdate) {
|
|
163
|
-
const
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
165
|
+
const contentKey = ref.contentElementKey || "content";
|
|
166
|
+
const existingContent = element[contentKey];
|
|
167
|
+
const childrenProp = params.children || element.children;
|
|
168
|
+
if (childrenProp) {
|
|
169
|
+
const content = (0, import_children.default)(childrenProp, element, opts);
|
|
170
|
+
if (content && !ref.__noChildrenDifference) {
|
|
171
|
+
(0, import_set.setContent)(content, element, options);
|
|
172
|
+
} else if (existingContent?.__ref && (0, import_utils.isFunction)(existingContent.update)) {
|
|
173
|
+
const lazyLoad = element.props?.lazyLoad || options.lazyLoad;
|
|
174
|
+
const contentUpdateCall = () => update.call(existingContent, params[contentKey], {
|
|
175
|
+
...options,
|
|
176
|
+
currentSnapshot: snapshotOnCallee,
|
|
177
|
+
calleeElement
|
|
178
|
+
});
|
|
179
|
+
if (lazyLoad) {
|
|
180
|
+
import_utils.window.requestAnimationFrame(() => {
|
|
181
|
+
contentUpdateCall();
|
|
182
|
+
if (!options.preventUpdateListener && !options.preventListeners) {
|
|
183
|
+
(0, import_event.triggerEventOn)("lazyLoad", element, options);
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
} else contentUpdateCall();
|
|
187
|
+
}
|
|
188
|
+
} else if (existingContent?.__ref && (0, import_utils.isFunction)(existingContent.update)) {
|
|
189
|
+
const lazyLoad = element.props?.lazyLoad || options.lazyLoad;
|
|
190
|
+
const contentUpdateCall = () => update.call(existingContent, params[contentKey], {
|
|
191
|
+
...options,
|
|
192
|
+
currentSnapshot: snapshotOnCallee,
|
|
193
|
+
calleeElement
|
|
194
|
+
});
|
|
195
|
+
if (lazyLoad) {
|
|
196
|
+
import_utils.window.requestAnimationFrame(() => {
|
|
197
|
+
contentUpdateCall();
|
|
198
|
+
if (!options.preventUpdateListener && !options.preventListeners) {
|
|
199
|
+
(0, import_event.triggerEventOn)("lazyLoad", element, options);
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
} else contentUpdateCall();
|
|
203
|
+
} else {
|
|
204
|
+
const content = element.children || params.content;
|
|
205
|
+
if (content) {
|
|
206
|
+
(0, import_set.setContent)(content, element, options);
|
|
207
|
+
}
|
|
167
208
|
}
|
|
168
209
|
}
|
|
169
|
-
if (!preventUpdateListener) {
|
|
170
|
-
|
|
210
|
+
if (!preventUpdateListener && !options.preventListeners) {
|
|
211
|
+
(0, import_event.triggerEventOn)("update", element, options);
|
|
171
212
|
}
|
|
172
213
|
};
|
|
173
|
-
const checkIfOnUpdate =
|
|
174
|
-
|
|
175
|
-
if (!(0, import_utils.isFunction)(element.if) && !(0, import_utils.isFunction)((_a = element.props) == null ? void 0 : _a.if) || !parent) {
|
|
214
|
+
const checkIfOnUpdate = (element, parent, options) => {
|
|
215
|
+
if (!(0, import_utils.isFunction)(element.if) && !(0, import_utils.isFunction)(element.props?.if) || !parent) {
|
|
176
216
|
return;
|
|
177
217
|
}
|
|
178
218
|
const ref = element.__ref;
|
|
179
|
-
const ifPassed = (element.if ||
|
|
219
|
+
const ifPassed = (element.if || element.props?.if)(
|
|
180
220
|
element,
|
|
181
221
|
element.state,
|
|
182
222
|
element.context,
|
|
@@ -204,22 +244,22 @@ const checkIfOnUpdate = async (element, parent, options) => {
|
|
|
204
244
|
const contentKey = ref.contentElementKey;
|
|
205
245
|
if (element.children) {
|
|
206
246
|
element.removeContent();
|
|
207
|
-
} else if (
|
|
247
|
+
} else if (element[contentKey]?.parseDeep) {
|
|
208
248
|
element[contentKey] = element[contentKey].parseDeep();
|
|
209
249
|
}
|
|
210
250
|
const previousElement = element.previousElement();
|
|
211
|
-
const previousNode = previousElement
|
|
212
|
-
const hasPrevious = previousNode
|
|
251
|
+
const previousNode = previousElement?.node;
|
|
252
|
+
const hasPrevious = previousNode?.parentNode;
|
|
213
253
|
const nextElement = element.nextElement();
|
|
214
|
-
const nextNode = nextElement
|
|
215
|
-
const hasNext = nextNode
|
|
254
|
+
const nextNode = nextElement?.node;
|
|
255
|
+
const hasNext = nextNode?.parentNode;
|
|
216
256
|
const attachOptions = (hasPrevious || hasNext) && {
|
|
217
257
|
position: hasPrevious ? "after" : hasNext ? "before" : null,
|
|
218
258
|
node: hasPrevious && previousNode || hasNext && nextNode
|
|
219
259
|
};
|
|
220
260
|
delete element.__ref;
|
|
221
261
|
delete element.parent;
|
|
222
|
-
const createdElement =
|
|
262
|
+
const createdElement = (0, import_create.create)(
|
|
223
263
|
element,
|
|
224
264
|
parent,
|
|
225
265
|
element.key,
|
|
@@ -227,11 +267,7 @@ const checkIfOnUpdate = async (element, parent, options) => {
|
|
|
227
267
|
attachOptions
|
|
228
268
|
);
|
|
229
269
|
if (options.preventUpdate !== true && element.on && (0, import_utils.isFunction)(element.on.update)) {
|
|
230
|
-
|
|
231
|
-
element.on.update,
|
|
232
|
-
createdElement,
|
|
233
|
-
createdElement.state
|
|
234
|
-
);
|
|
270
|
+
(0, import_event.applyEvent)(element.on.update, createdElement, createdElement.state);
|
|
235
271
|
}
|
|
236
272
|
return createdElement;
|
|
237
273
|
}
|
|
@@ -240,14 +276,14 @@ const checkIfOnUpdate = async (element, parent, options) => {
|
|
|
240
276
|
delete ref.__if;
|
|
241
277
|
}
|
|
242
278
|
};
|
|
243
|
-
const inheritStateUpdates =
|
|
279
|
+
const inheritStateUpdates = (element, options) => {
|
|
244
280
|
const { __ref: ref } = element;
|
|
245
281
|
const stateKey = ref.__state;
|
|
246
282
|
const { parent, state } = element;
|
|
247
283
|
const { preventUpdateTriggerStateUpdate, isHoisted, execStateFunction } = options;
|
|
248
284
|
if (preventUpdateTriggerStateUpdate) return;
|
|
249
285
|
if (!stateKey && !ref.__hasRootState) {
|
|
250
|
-
element.state = parent
|
|
286
|
+
element.state = parent?.state || {};
|
|
251
287
|
return;
|
|
252
288
|
}
|
|
253
289
|
const shouldForceFunctionState = (0, import_utils.isFunction)(stateKey) && !isHoisted && execStateFunction;
|
|
@@ -264,7 +300,7 @@ const inheritStateUpdates = async (element, options) => {
|
|
|
264
300
|
const keyInParentState = (0, import_utils.findInheritedState)(element, element.parent);
|
|
265
301
|
if (!keyInParentState || options.preventInheritedStateUpdate) return;
|
|
266
302
|
if (!options.preventBeforeStateUpdateListener && !options.preventListeners) {
|
|
267
|
-
const initStateReturns =
|
|
303
|
+
const initStateReturns = (0, import_event.triggerEventOnUpdate)(
|
|
268
304
|
"beforeStateUpdate",
|
|
269
305
|
keyInParentState,
|
|
270
306
|
element,
|
|
@@ -272,19 +308,14 @@ const inheritStateUpdates = async (element, options) => {
|
|
|
272
308
|
);
|
|
273
309
|
if (initStateReturns === false) return element;
|
|
274
310
|
}
|
|
275
|
-
const newState =
|
|
311
|
+
const newState = createStateUpdate(element, parent, options);
|
|
276
312
|
if (!options.preventStateUpdateListener && !options.preventListeners) {
|
|
277
|
-
|
|
278
|
-
"stateUpdate",
|
|
279
|
-
newState.parse(),
|
|
280
|
-
element,
|
|
281
|
-
options
|
|
282
|
-
);
|
|
313
|
+
(0, import_event.triggerEventOnUpdate)("stateUpdate", newState.parse(), element, options);
|
|
283
314
|
}
|
|
284
315
|
};
|
|
285
|
-
const createStateUpdate =
|
|
316
|
+
const createStateUpdate = (element, parent, options) => {
|
|
286
317
|
const __stateChildren = element.state.__children;
|
|
287
|
-
const newState =
|
|
318
|
+
const newState = (0, import_state.createState)(element, parent);
|
|
288
319
|
element.state = newState;
|
|
289
320
|
for (const child in __stateChildren) {
|
|
290
321
|
if (newState[child]) newState.__children[child] = __stateChildren[child];
|
|
@@ -23,22 +23,22 @@ __export(applyParam_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(applyParam_exports);
|
|
24
24
|
var import_utils = require("@domql/utils");
|
|
25
25
|
var import_mixins = require("../mixins/index.js");
|
|
26
|
-
const applyParam =
|
|
26
|
+
const applyParam = (param, element, options) => {
|
|
27
27
|
const { node, context, __ref: ref } = element;
|
|
28
|
-
const prop = element[param];
|
|
28
|
+
const prop = (0, import_utils.exec)(element[param], element);
|
|
29
29
|
const { onlyUpdate } = options;
|
|
30
30
|
const DOMQLProperty = import_mixins.REGISTRY[param];
|
|
31
|
-
const DOMQLPropertyFromContext = context
|
|
31
|
+
const DOMQLPropertyFromContext = context?.registry?.[param];
|
|
32
32
|
const isGlobalTransformer = DOMQLPropertyFromContext || DOMQLProperty;
|
|
33
|
-
const hasDefine = element.define
|
|
34
|
-
const hasContextDefine = context
|
|
33
|
+
const hasDefine = element.define?.[param];
|
|
34
|
+
const hasContextDefine = context?.define?.[param];
|
|
35
35
|
if (!ref.__if) return;
|
|
36
36
|
const hasOnlyUpdate = onlyUpdate ? onlyUpdate === param || element.lookup(onlyUpdate) : true;
|
|
37
37
|
if (isGlobalTransformer && !hasContextDefine && hasOnlyUpdate) {
|
|
38
38
|
if ((0, import_utils.isFunction)(isGlobalTransformer)) {
|
|
39
|
-
|
|
40
|
-
return;
|
|
39
|
+
isGlobalTransformer(prop, element, node, options);
|
|
41
40
|
}
|
|
41
|
+
return;
|
|
42
42
|
}
|
|
43
43
|
return { hasDefine, hasContextDefine };
|
|
44
44
|
};
|
|
@@ -0,0 +1,132 @@
|
|
|
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 extendUtils_exports = {};
|
|
20
|
+
__export(extendUtils_exports, {
|
|
21
|
+
cloneAndMergeArrayExtend: () => cloneAndMergeArrayExtend,
|
|
22
|
+
deepExtend: () => deepExtend,
|
|
23
|
+
deepMergeExtend: () => deepMergeExtend,
|
|
24
|
+
extendCachedRegistry: () => extendCachedRegistry,
|
|
25
|
+
extendStackRegistry: () => extendStackRegistry,
|
|
26
|
+
extractArrayExtend: () => extractArrayExtend,
|
|
27
|
+
fallbackStringExtend: () => fallbackStringExtend,
|
|
28
|
+
flattenExtend: () => flattenExtend,
|
|
29
|
+
generateHash: () => generateHash,
|
|
30
|
+
getExtendMerged: () => getExtendMerged,
|
|
31
|
+
getExtendStack: () => getExtendStack,
|
|
32
|
+
getExtendStackRegistry: () => getExtendStackRegistry,
|
|
33
|
+
getHashedExtend: () => getHashedExtend,
|
|
34
|
+
jointStacks: () => jointStacks,
|
|
35
|
+
setHashedExtend: () => setHashedExtend
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(extendUtils_exports);
|
|
38
|
+
var import_utils = require("@domql/utils");
|
|
39
|
+
const generateHash = () => Math.random().toString(36).substring(2);
|
|
40
|
+
const extendStackRegistry = {};
|
|
41
|
+
const extendCachedRegistry = {};
|
|
42
|
+
const getHashedExtend = (extend) => {
|
|
43
|
+
return extendStackRegistry[extend.__hash];
|
|
44
|
+
};
|
|
45
|
+
const setHashedExtend = (extend, stack) => {
|
|
46
|
+
const hash = generateHash();
|
|
47
|
+
if (!(0, import_utils.isString)(extend)) {
|
|
48
|
+
extend.__hash = hash;
|
|
49
|
+
}
|
|
50
|
+
extendStackRegistry[hash] = stack;
|
|
51
|
+
return stack;
|
|
52
|
+
};
|
|
53
|
+
const getExtendStackRegistry = (extend, stack) => {
|
|
54
|
+
if (extend.__hash) {
|
|
55
|
+
return stack.concat(getHashedExtend(extend));
|
|
56
|
+
}
|
|
57
|
+
return setHashedExtend(extend, stack);
|
|
58
|
+
};
|
|
59
|
+
const extractArrayExtend = (extend, stack, context) => {
|
|
60
|
+
for (let i = 0; i < extend.length; i++) flattenExtend(extend[i], stack, context);
|
|
61
|
+
return stack;
|
|
62
|
+
};
|
|
63
|
+
const deepExtend = (extend, stack, context) => {
|
|
64
|
+
const extendOflattenExtend = extend.extend;
|
|
65
|
+
if (extendOflattenExtend) {
|
|
66
|
+
flattenExtend(extendOflattenExtend, stack, context);
|
|
67
|
+
}
|
|
68
|
+
return stack;
|
|
69
|
+
};
|
|
70
|
+
const flattenExtend = (extend, stack, context) => {
|
|
71
|
+
if (!extend) return stack;
|
|
72
|
+
if ((0, import_utils.isArray)(extend)) return extractArrayExtend(extend, stack, context);
|
|
73
|
+
if ((0, import_utils.isString)(extend)) extend = fallbackStringExtend(extend, context);
|
|
74
|
+
stack.push(extend);
|
|
75
|
+
if (extend.extend) deepExtend(extend, stack, context);
|
|
76
|
+
return stack;
|
|
77
|
+
};
|
|
78
|
+
const deepMergeExtend = (element, extend) => {
|
|
79
|
+
for (const e in extend) {
|
|
80
|
+
if (e === "parent" || e === "node" || e === "__element") continue;
|
|
81
|
+
const elementProp = element[e];
|
|
82
|
+
const extendProp = extend[e];
|
|
83
|
+
if (elementProp === void 0) {
|
|
84
|
+
element[e] = extendProp;
|
|
85
|
+
} else if ((0, import_utils.isObject)(elementProp) && (0, import_utils.isObject)(extendProp)) {
|
|
86
|
+
deepMergeExtend(elementProp, extendProp);
|
|
87
|
+
} else if ((0, import_utils.isArray)(elementProp) && (0, import_utils.isArray)(extendProp)) {
|
|
88
|
+
element[e] = elementProp.concat(extendProp);
|
|
89
|
+
} else if ((0, import_utils.isArray)(elementProp) && (0, import_utils.isObject)(extendProp)) {
|
|
90
|
+
const obj = deepMergeExtend({}, elementProp);
|
|
91
|
+
element[e] = deepMergeExtend(obj, extendProp);
|
|
92
|
+
} else if (elementProp === void 0 && (0, import_utils.isFunction)(extendProp)) {
|
|
93
|
+
element[e] = extendProp;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return element;
|
|
97
|
+
};
|
|
98
|
+
const cloneAndMergeArrayExtend = (stack) => {
|
|
99
|
+
return stack.reduce((a, c) => {
|
|
100
|
+
return deepMergeExtend(a, (0, import_utils.deepClone)(c));
|
|
101
|
+
}, {});
|
|
102
|
+
};
|
|
103
|
+
const fallbackStringExtend = (extend, context, options = {}, variant) => {
|
|
104
|
+
const COMPONENTS = context?.components || options.components;
|
|
105
|
+
const PAGES = context?.pages || options.pages;
|
|
106
|
+
if ((0, import_utils.isString)(extend)) {
|
|
107
|
+
const componentExists = COMPONENTS && (COMPONENTS[extend + "." + variant] || COMPONENTS[extend] || COMPONENTS["smbls." + extend]);
|
|
108
|
+
const pageExists = PAGES && extend.charCodeAt(0) === 47 && PAGES[extend];
|
|
109
|
+
if (componentExists) return componentExists;
|
|
110
|
+
else if (pageExists) return pageExists;
|
|
111
|
+
else {
|
|
112
|
+
if (options.verbose && (0, import_utils.isNotProduction)()) {
|
|
113
|
+
console.warn("Extend is string but component was not found:", extend);
|
|
114
|
+
}
|
|
115
|
+
return {};
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return extend;
|
|
119
|
+
};
|
|
120
|
+
const jointStacks = (extendStack, childExtendStack) => {
|
|
121
|
+
return [].concat(extendStack.slice(0, 1)).concat(childExtendStack.slice(0, 1)).concat(extendStack.slice(1)).concat(childExtendStack.slice(1));
|
|
122
|
+
};
|
|
123
|
+
const getExtendStack = (extend, context) => {
|
|
124
|
+
if (!extend) return [];
|
|
125
|
+
if (extend.__hash) return getHashedExtend(extend) || [];
|
|
126
|
+
const stack = flattenExtend(extend, [], context);
|
|
127
|
+
return getExtendStackRegistry(extend, stack);
|
|
128
|
+
};
|
|
129
|
+
const getExtendMerged = (extend) => {
|
|
130
|
+
const stack = getExtendStack(extend);
|
|
131
|
+
return cloneAndMergeArrayExtend(stack);
|
|
132
|
+
};
|
package/dist/cjs/utils/index.js
CHANGED
|
@@ -15,10 +15,12 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
15
|
}
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
18
19
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
20
|
var utils_exports = {};
|
|
20
21
|
__export(utils_exports, {
|
|
21
22
|
METHODS_EXL: () => METHODS_EXL
|
|
22
23
|
});
|
|
23
24
|
module.exports = __toCommonJS(utils_exports);
|
|
25
|
+
__reExport(utils_exports, require("./extendUtils.js"), module.exports);
|
|
24
26
|
const METHODS_EXL = [];
|
|
@@ -0,0 +1,56 @@
|
|
|
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 propEvents_exports = {};
|
|
20
|
+
__export(propEvents_exports, {
|
|
21
|
+
propagateEventsFromElement: () => propagateEventsFromElement,
|
|
22
|
+
propagateEventsFromProps: () => propagateEventsFromProps
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(propEvents_exports);
|
|
25
|
+
var import_utils = require("@domql/utils");
|
|
26
|
+
const propagateEventsFromProps = (element) => {
|
|
27
|
+
const { props, on } = element;
|
|
28
|
+
for (const v in props) {
|
|
29
|
+
if (v.charCodeAt(0) !== 111 || v.charCodeAt(1) !== 110) continue;
|
|
30
|
+
const eventName = (0, import_utils.lowercaseFirstLetter)(v.slice(2));
|
|
31
|
+
const origEvent = on[eventName];
|
|
32
|
+
const funcFromProps = props[v];
|
|
33
|
+
if ((0, import_utils.isFunction)(origEvent)) {
|
|
34
|
+
on[eventName] = (...args) => {
|
|
35
|
+
const originalEventRetunrs = origEvent(...args);
|
|
36
|
+
if (originalEventRetunrs !== false) return funcFromProps(...args);
|
|
37
|
+
};
|
|
38
|
+
} else on[eventName] = funcFromProps;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
const propagateEventsFromElement = (element) => {
|
|
42
|
+
const { on } = element;
|
|
43
|
+
for (const param in element) {
|
|
44
|
+
if (param.charCodeAt(0) !== 111 || param.charCodeAt(1) !== 110 || !Object.prototype.hasOwnProperty.call(element, param)) continue;
|
|
45
|
+
const fn = element[param];
|
|
46
|
+
if (!(0, import_utils.isFunction)(fn)) continue;
|
|
47
|
+
const eventName = (0, import_utils.lowercaseFirstLetter)(param.slice(2));
|
|
48
|
+
const origEvent = on[eventName];
|
|
49
|
+
if ((0, import_utils.isFunction)(origEvent)) {
|
|
50
|
+
on[eventName] = (...args) => {
|
|
51
|
+
const ret = origEvent(...args);
|
|
52
|
+
if (ret !== false) return fn(...args);
|
|
53
|
+
};
|
|
54
|
+
} else on[eventName] = fn;
|
|
55
|
+
}
|
|
56
|
+
};
|
package/dist/esm/children.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
concatAddExtends,
|
|
3
3
|
deepClone,
|
|
4
|
-
|
|
4
|
+
exec,
|
|
5
5
|
getChildStateInKey,
|
|
6
6
|
isArray,
|
|
7
7
|
isDefined,
|
|
@@ -13,10 +13,34 @@ import {
|
|
|
13
13
|
isString,
|
|
14
14
|
matchesComponentNaming
|
|
15
15
|
} from "@domql/utils";
|
|
16
|
-
|
|
16
|
+
const shallowChildrenEqual = (a, b) => {
|
|
17
|
+
if (a === b) return true;
|
|
18
|
+
if (!a || !b) return false;
|
|
19
|
+
if (isArray(a) && isArray(b)) {
|
|
20
|
+
if (a.length !== b.length) return false;
|
|
21
|
+
for (let i = 0; i < a.length; i++) {
|
|
22
|
+
if (a[i] !== b[i]) return false;
|
|
23
|
+
}
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
if (isObject(a) && isObject(b)) {
|
|
27
|
+
const keysA = Object.keys(a);
|
|
28
|
+
const keysB = Object.keys(b);
|
|
29
|
+
if (keysA.length !== keysB.length) return false;
|
|
30
|
+
for (let i = 0; i < keysA.length; i++) {
|
|
31
|
+
const key = keysA[i];
|
|
32
|
+
if (a[key] !== b[key]) return false;
|
|
33
|
+
}
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
return a === b;
|
|
37
|
+
};
|
|
38
|
+
function setChildren(param, element, opts) {
|
|
17
39
|
let { children, __ref: ref, state } = element;
|
|
18
40
|
let { childrenAs } = element.props || {};
|
|
19
|
-
|
|
41
|
+
let execParam = exec(param, element, state);
|
|
42
|
+
let execChildren = exec(children, element, state);
|
|
43
|
+
children = execParam || execChildren;
|
|
20
44
|
if (children) {
|
|
21
45
|
if (isState(children)) children = children.parse();
|
|
22
46
|
if (isString(children) || isNumber(children)) {
|
|
@@ -43,31 +67,37 @@ async function setChildren(param, element, opts) {
|
|
|
43
67
|
}
|
|
44
68
|
}
|
|
45
69
|
if (!children || isNot(children)("array", "object")) return;
|
|
46
|
-
if (isArray(children) && children.
|
|
47
|
-
const filterReact =
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
70
|
+
if (isArray(children) && children.some((v) => v?.$$typeof)) {
|
|
71
|
+
const filterReact = [];
|
|
72
|
+
const reactComponents = [];
|
|
73
|
+
for (let i = 0; i < children.length; i++) {
|
|
74
|
+
if (children[i]?.$$typeof) reactComponents.push(children[i]);
|
|
75
|
+
else filterReact.push(children[i]);
|
|
76
|
+
}
|
|
77
|
+
if (reactComponents.length) {
|
|
78
|
+
element.call("renderReact", reactComponents, element);
|
|
51
79
|
}
|
|
52
80
|
children = filterReact;
|
|
53
81
|
}
|
|
82
|
+
let cloned;
|
|
54
83
|
if (ref.__childrenCache) {
|
|
55
|
-
|
|
56
|
-
if (equals) {
|
|
84
|
+
if (shallowChildrenEqual(children, ref.__childrenCache)) {
|
|
57
85
|
ref.__noChildrenDifference = true;
|
|
58
86
|
} else {
|
|
59
|
-
|
|
87
|
+
cloned = deepClone(children);
|
|
88
|
+
ref.__childrenCache = cloned;
|
|
60
89
|
delete ref.__noChildrenDifference;
|
|
61
90
|
}
|
|
62
91
|
} else {
|
|
63
|
-
|
|
92
|
+
cloned = deepClone(children);
|
|
93
|
+
ref.__childrenCache = cloned;
|
|
64
94
|
}
|
|
65
95
|
if (isObject(children) || isArray(children)) {
|
|
66
|
-
children = deepClone(children);
|
|
96
|
+
children = cloned || deepClone(children);
|
|
67
97
|
}
|
|
68
98
|
const content = { tag: "fragment" };
|
|
69
99
|
for (const key in children) {
|
|
70
|
-
const value = Object.hasOwnProperty.call(children, key) && children[key];
|
|
100
|
+
const value = Object.prototype.hasOwnProperty.call(children, key) && children[key];
|
|
71
101
|
if (isDefined(value) && value !== null && value !== false) {
|
|
72
102
|
content[key] = isObjectLike(value) ? childrenAs ? { [childrenAs]: value } : value : childrenAs ? { [childrenAs]: childrenAs === "state" ? { value } : { text: value } } : { text: value };
|
|
73
103
|
}
|