@domql/element 2.5.50 → 2.5.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/node.js +2 -0
- package/dist/cjs/update.js +6 -5
- package/dist/cjs/utils/component.js +1 -1
- package/dist/cjs/utils/propEvents.js +38 -0
- package/node.js +2 -0
- package/package.json +2 -2
- package/update.js +11 -8
- package/utils/component.js +1 -1
- package/utils/propEvents.js +17 -0
package/dist/cjs/node.js
CHANGED
|
@@ -41,6 +41,7 @@ var import_iterate = require("./iterate");
|
|
|
41
41
|
var import_mixins = require("./mixins");
|
|
42
42
|
var import_applyParam = require("./utils/applyParam");
|
|
43
43
|
var import_utils2 = require("./utils");
|
|
44
|
+
var import_propEvents = require("./utils/propEvents");
|
|
44
45
|
const ENV = "development";
|
|
45
46
|
const createNode = (element, options) => {
|
|
46
47
|
let { node, tag, __ref: ref } = element;
|
|
@@ -63,6 +64,7 @@ const createNode = (element, options) => {
|
|
|
63
64
|
(0, import_iterate.throughInitialDefine)(element);
|
|
64
65
|
(0, import_iterate.throughInitialExec)(element);
|
|
65
66
|
if (element.tag !== "string" && element.tag !== "fragment") {
|
|
67
|
+
(0, import_propEvents.propagateEventsFromProps)(element);
|
|
66
68
|
if (isNewNode && (0, import_utils.isObject)(element.on))
|
|
67
69
|
(0, import_event.applyEventsOnNode)(element, options);
|
|
68
70
|
}
|
package/dist/cjs/update.js
CHANGED
|
@@ -147,7 +147,6 @@ const captureSnapshot = (element, options) => {
|
|
|
147
147
|
return [snapshotOnCallee, calleeElement];
|
|
148
148
|
};
|
|
149
149
|
const checkIfOnUpdate = (element, parent, options) => {
|
|
150
|
-
var _a;
|
|
151
150
|
if (!(0, import_utils.isFunction)(element.if) || !parent)
|
|
152
151
|
return;
|
|
153
152
|
const ref = element.__ref;
|
|
@@ -163,13 +162,15 @@ const checkIfOnUpdate = (element, parent, options) => {
|
|
|
163
162
|
}
|
|
164
163
|
if (ref.__state) {
|
|
165
164
|
element.state = ref.__state;
|
|
165
|
+
} else if (!ref.__hasRootState) {
|
|
166
|
+
delete element.state;
|
|
166
167
|
}
|
|
167
|
-
|
|
168
|
+
element.node && element.node.remove();
|
|
168
169
|
const previousElement = element.previousElement();
|
|
169
170
|
const nextElement = element.nextElement();
|
|
170
171
|
const hasPrevious = previousElement && previousElement.node;
|
|
171
172
|
const hasNext = nextElement && nextElement.node;
|
|
172
|
-
const attachOptions = (
|
|
173
|
+
const attachOptions = (hasPrevious && hasPrevious.parentNode || hasNext && hasNext.parentNode) && {
|
|
173
174
|
position: hasPrevious ? "after" : hasNext ? "before" : null,
|
|
174
175
|
node: hasPrevious || hasNext
|
|
175
176
|
};
|
|
@@ -205,13 +206,13 @@ const inheritStateUpdates = (element, options) => {
|
|
|
205
206
|
if (!keyInParentState || options.preventInheritedStateUpdate)
|
|
206
207
|
return;
|
|
207
208
|
if (!options.preventInitStateUpdateListener) {
|
|
208
|
-
const initStateReturns = (0, import_event.triggerEventOnUpdate)("
|
|
209
|
+
const initStateReturns = (0, import_event.triggerEventOnUpdate)("initStateUpdate", keyInParentState, element, options);
|
|
209
210
|
if (initStateReturns === false)
|
|
210
211
|
return element;
|
|
211
212
|
}
|
|
212
213
|
const newState = createStateUpdate(element, parent, options);
|
|
213
214
|
if (!options.preventStateUpdateListener) {
|
|
214
|
-
(0, import_event.triggerEventOnUpdate)("
|
|
215
|
+
(0, import_event.triggerEventOnUpdate)("stateUpdate", newState.parse(), element, options);
|
|
215
216
|
}
|
|
216
217
|
};
|
|
217
218
|
const createStateUpdate = (element, parent, options) => {
|
|
@@ -80,7 +80,7 @@ const extendizeByKey = (element, parent, key) => {
|
|
|
80
80
|
const { context, tag, extend, props, attr, state, childExtend, childProps, on, if: condition } = element;
|
|
81
81
|
const hasComponentAttrs = extend || childExtend || props || state || on || condition || attr;
|
|
82
82
|
const extendFromKey = key.includes("+") ? key.split("+") : key.includes("_") ? key.split("_")[0] : key.includes(".") ? key.split(".")[0] : [key];
|
|
83
|
-
const isExtendKeyComponent = context
|
|
83
|
+
const isExtendKeyComponent = context && context.components[extendFromKey];
|
|
84
84
|
if (element === isExtendKeyComponent)
|
|
85
85
|
return element;
|
|
86
86
|
else if (!hasComponentAttrs || childProps) {
|
|
@@ -0,0 +1,38 @@
|
|
|
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
|
+
propagateEventsFromProps: () => propagateEventsFromProps
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(propEvents_exports);
|
|
24
|
+
var import_utils = require("@domql/utils");
|
|
25
|
+
const propagateEventsFromProps = (element) => {
|
|
26
|
+
const { props, on } = element;
|
|
27
|
+
const eventKeysFromProps = Object.keys(props).filter((key) => key.startsWith("on"));
|
|
28
|
+
eventKeysFromProps.forEach((v) => {
|
|
29
|
+
const eventName = (0, import_utils.lowercaseFirstLetter)(v.split("on")[1]);
|
|
30
|
+
if (on[eventName]) {
|
|
31
|
+
on[eventName] = (...args) => {
|
|
32
|
+
on[eventName](...args);
|
|
33
|
+
props[v](...args);
|
|
34
|
+
};
|
|
35
|
+
} else
|
|
36
|
+
on[eventName] = props[v];
|
|
37
|
+
});
|
|
38
|
+
};
|
package/node.js
CHANGED
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
import { registry } from './mixins'
|
|
15
15
|
import { applyParam } from './utils/applyParam'
|
|
16
16
|
import { isVariant } from './utils'
|
|
17
|
+
import { propagateEventsFromProps } from './utils/propEvents'
|
|
17
18
|
// import { defineSetter } from './methods'
|
|
18
19
|
|
|
19
20
|
const ENV = process.env.NODE_ENV
|
|
@@ -51,6 +52,7 @@ export const createNode = (element, options) => {
|
|
|
51
52
|
throughInitialExec(element)
|
|
52
53
|
|
|
53
54
|
if (element.tag !== 'string' && element.tag !== 'fragment') {
|
|
55
|
+
propagateEventsFromProps(element)
|
|
54
56
|
// apply events
|
|
55
57
|
if (isNewNode && isObject(element.on)) applyEventsOnNode(element, options)
|
|
56
58
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@domql/element",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.52",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "index.js",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"@domql/state": "latest",
|
|
32
32
|
"@domql/utils": "latest"
|
|
33
33
|
},
|
|
34
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "d417eb4852233ff71f790eae23b67b521e80c4f9",
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@babel/core": "^7.12.0"
|
|
37
37
|
}
|
package/update.js
CHANGED
|
@@ -170,11 +170,14 @@ const checkIfOnUpdate = (element, parent, options) => {
|
|
|
170
170
|
if (!ref.__hasRootState) {
|
|
171
171
|
delete element.state
|
|
172
172
|
}
|
|
173
|
+
|
|
173
174
|
if (ref.__state) {
|
|
174
175
|
element.state = ref.__state
|
|
176
|
+
} else if (!ref.__hasRootState) {
|
|
177
|
+
delete element.state
|
|
175
178
|
}
|
|
176
179
|
|
|
177
|
-
element.node
|
|
180
|
+
element.node && element.node.remove()
|
|
178
181
|
|
|
179
182
|
const previousElement = element.previousElement()
|
|
180
183
|
const nextElement = element.nextElement()
|
|
@@ -182,7 +185,7 @@ const checkIfOnUpdate = (element, parent, options) => {
|
|
|
182
185
|
const hasPrevious = previousElement && previousElement.node
|
|
183
186
|
const hasNext = nextElement && nextElement.node
|
|
184
187
|
|
|
185
|
-
const attachOptions = (hasPrevious
|
|
188
|
+
const attachOptions = ((hasPrevious && hasPrevious.parentNode) || (hasNext && hasNext.parentNode)) && {
|
|
186
189
|
position: hasPrevious ? 'after' : hasNext ? 'before' : null,
|
|
187
190
|
node: hasPrevious || hasNext
|
|
188
191
|
}
|
|
@@ -210,8 +213,8 @@ const checkIfOnUpdate = (element, parent, options) => {
|
|
|
210
213
|
* @param {boolean} [options.execStateFunction] - Execute the state functions.
|
|
211
214
|
* @param {boolean} [options.stateFunctionOverwrite] - If true, overwrite (not merge) current state with what function returns.
|
|
212
215
|
* @param {boolean} [options.preventInheritedStateUpdate] - If true, prevent inheriting state updates.
|
|
213
|
-
* @param {boolean} [options.preventInitStateUpdateListener] - If true, prevent the '
|
|
214
|
-
* @param {boolean} [options.preventStateUpdateListener] - If true, prevent the '
|
|
216
|
+
* @param {boolean} [options.preventInitStateUpdateListener] - If true, prevent the 'initStateUpdate' event listener.
|
|
217
|
+
* @param {boolean} [options.preventStateUpdateListener] - If true, prevent the 'stateUpdate' event listener.
|
|
215
218
|
* @returns {boolean} - If returns false, it breaks the update function
|
|
216
219
|
*/
|
|
217
220
|
const inheritStateUpdates = (element, options) => {
|
|
@@ -240,18 +243,18 @@ const inheritStateUpdates = (element, options) => {
|
|
|
240
243
|
const keyInParentState = findInheritedState(element, element.parent)
|
|
241
244
|
if (!keyInParentState || options.preventInheritedStateUpdate) return
|
|
242
245
|
|
|
243
|
-
// Trigger on.
|
|
246
|
+
// Trigger on.initStateUpdate event
|
|
244
247
|
if (!options.preventInitStateUpdateListener) {
|
|
245
|
-
const initStateReturns = triggerEventOnUpdate('
|
|
248
|
+
const initStateReturns = triggerEventOnUpdate('initStateUpdate', keyInParentState, element, options)
|
|
246
249
|
if (initStateReturns === false) return element
|
|
247
250
|
}
|
|
248
251
|
|
|
249
252
|
// Recreate the state again
|
|
250
253
|
const newState = createStateUpdate(element, parent, options)
|
|
251
254
|
|
|
252
|
-
// Trigger on.
|
|
255
|
+
// Trigger on.stateUpdate event
|
|
253
256
|
if (!options.preventStateUpdateListener) {
|
|
254
|
-
triggerEventOnUpdate('
|
|
257
|
+
triggerEventOnUpdate('stateUpdate', newState.parse(), element, options)
|
|
255
258
|
}
|
|
256
259
|
}
|
|
257
260
|
|
package/utils/component.js
CHANGED
|
@@ -60,7 +60,7 @@ export const extendizeByKey = (element, parent, key) => {
|
|
|
60
60
|
? key.split('.')[0] // get component key split .
|
|
61
61
|
: [key]
|
|
62
62
|
|
|
63
|
-
const isExtendKeyComponent = context
|
|
63
|
+
const isExtendKeyComponent = context && context.components[extendFromKey]
|
|
64
64
|
|
|
65
65
|
if (element === isExtendKeyComponent) return element
|
|
66
66
|
else if (!hasComponentAttrs || childProps) {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import { lowercaseFirstLetter } from '@domql/utils'
|
|
4
|
+
|
|
5
|
+
export const propagateEventsFromProps = (element) => {
|
|
6
|
+
const { props, on } = element
|
|
7
|
+
const eventKeysFromProps = Object.keys(props).filter(key => key.startsWith('on'))
|
|
8
|
+
eventKeysFromProps.forEach(v => {
|
|
9
|
+
const eventName = lowercaseFirstLetter(v.split('on')[1])
|
|
10
|
+
if (on[eventName]) {
|
|
11
|
+
on[eventName] = (...args) => {
|
|
12
|
+
on[eventName](...args)
|
|
13
|
+
props[v](...args)
|
|
14
|
+
}
|
|
15
|
+
} else on[eventName] = props[v]
|
|
16
|
+
})
|
|
17
|
+
}
|