@domql/element 3.1.2 → 3.2.3
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/__tests__/checkIfOnUpdate.test.js +12 -12
- package/__tests__/children.test.js +34 -38
- package/__tests__/inheritStateUpdates.test.js +12 -12
- package/__tests__/renderElement.test.js +11 -11
- package/__tests__/resetElement.test.js +6 -6
- package/__tests__/set.test.js +32 -36
- package/__tests__/throughExecProps.test.js +12 -12
- package/__tests__/throughInitialDefine.test.js +16 -16
- package/__tests__/throughInitialExec.test.js +16 -16
- package/__tests__/throughUpdatedDefine.test.js +14 -14
- package/__tests__/throughUpdatedExec.test.js +17 -16
- package/__tests__/update.test.js +54 -54
- package/children.js +5 -6
- package/create.js +18 -20
- package/dist/cjs/children.js +4 -2
- package/dist/cjs/create.js +16 -16
- package/dist/cjs/extend.js +88 -0
- package/dist/cjs/iterate.js +76 -20
- package/dist/cjs/mixins/content.js +73 -0
- package/dist/cjs/mixins/html.js +1 -1
- package/dist/cjs/mixins/registry.js +2 -2
- package/dist/cjs/mixins/scope.js +1 -1
- package/dist/cjs/mixins/state.js +2 -2
- package/dist/cjs/mixins/text.js +4 -4
- package/dist/cjs/node.js +15 -15
- package/dist/cjs/set.js +22 -27
- package/dist/cjs/update.js +24 -33
- package/dist/cjs/utils/applyParam.js +4 -4
- package/dist/cjs/utils/extendUtils.js +132 -0
- package/dist/cjs/utils/propEvents.js +39 -0
- package/dist/esm/children.js +5 -3
- package/dist/esm/create.js +16 -16
- package/dist/esm/extend.js +74 -0
- package/dist/esm/iterate.js +77 -22
- package/dist/esm/mixins/content.js +53 -0
- package/dist/esm/mixins/html.js +1 -1
- package/dist/esm/mixins/registry.js +1 -1
- package/dist/esm/mixins/scope.js +1 -1
- package/dist/esm/mixins/state.js +3 -3
- package/dist/esm/mixins/text.js +4 -4
- package/dist/esm/node.js +15 -15
- package/dist/esm/set.js +23 -28
- package/dist/esm/update.js +24 -33
- package/dist/esm/utils/applyParam.js +5 -5
- package/dist/esm/utils/extendUtils.js +119 -0
- package/dist/esm/utils/propEvents.js +19 -0
- package/extend.js +98 -0
- package/iterate.js +80 -25
- package/mixins/content.js +65 -0
- package/mixins/html.js +1 -1
- package/mixins/registry.js +1 -1
- package/mixins/scope.js +1 -1
- package/mixins/state.js +3 -3
- package/mixins/text.js +4 -4
- package/node.js +15 -15
- package/package.json +8 -8
- package/set.js +23 -28
- package/update.js +25 -34
- package/utils/applyParam.js +5 -5
- package/utils/extendUtils.js +149 -0
- package/utils/propEvents.js +19 -0
- 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/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
|
@@ -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
|
+
extend.forEach((each) => flattenExtend(each, 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 (["parent", "node", "__element"].indexOf(e) > -1) 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 && context.components || options.components;
|
|
105
|
+
const PAGES = context && 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.startsWith("/") && 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
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
const origEvent = on[eventName];
|
|
31
|
+
const funcFromProps = props[v];
|
|
32
|
+
if ((0, import_utils.isFunction)(origEvent)) {
|
|
33
|
+
on[eventName] = (...args) => {
|
|
34
|
+
const originalEventRetunrs = origEvent(...args);
|
|
35
|
+
if (originalEventRetunrs !== false) return funcFromProps(...args);
|
|
36
|
+
};
|
|
37
|
+
} else on[eventName] = funcFromProps;
|
|
38
|
+
});
|
|
39
|
+
};
|
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,12 @@ import {
|
|
|
13
13
|
isString,
|
|
14
14
|
matchesComponentNaming
|
|
15
15
|
} from "@domql/utils";
|
|
16
|
-
|
|
16
|
+
function setChildren(param, element, opts) {
|
|
17
17
|
let { children, __ref: ref, state } = element;
|
|
18
18
|
let { childrenAs } = element.props || {};
|
|
19
|
-
|
|
19
|
+
let execParam = exec(param, element, state);
|
|
20
|
+
let execChildren = exec(children, element, state);
|
|
21
|
+
children = execParam || execChildren;
|
|
20
22
|
if (children) {
|
|
21
23
|
if (isState(children)) children = children.parse();
|
|
22
24
|
if (isString(children) || isNumber(children)) {
|
package/dist/esm/create.js
CHANGED
|
@@ -23,22 +23,22 @@ import { addMethods } from "./methods/set.js";
|
|
|
23
23
|
import { assignKeyAsClassname } from "./mixins/classList.js";
|
|
24
24
|
import { throughInitialExec, throughInitialDefine } from "./iterate.js";
|
|
25
25
|
const ENV = "development";
|
|
26
|
-
const create =
|
|
26
|
+
const create = (props, parentEl, passedKey, options = OPTIONS.create || {}, attachOptions) => {
|
|
27
27
|
cacheOptions(options);
|
|
28
28
|
const element = createElement(props, parentEl, passedKey, options, ROOT);
|
|
29
29
|
if (!element) return;
|
|
30
30
|
const { key, parent, __ref: ref } = element;
|
|
31
31
|
createRoot(element, parent);
|
|
32
32
|
applyExtends(element, parent, options);
|
|
33
|
-
propertizeElement.call(element, element);
|
|
34
|
-
await triggerEventOn("start", element, options);
|
|
35
33
|
if (options.onlyResolveExtends) {
|
|
36
34
|
return onlyResolveExtends(element, parent, key, options);
|
|
37
35
|
}
|
|
36
|
+
propertizeElement.call(element, element);
|
|
37
|
+
triggerEventOn("start", element, options);
|
|
38
38
|
resetOptions(element, parent, options);
|
|
39
39
|
addMethods(element, parent, options);
|
|
40
40
|
createScope(element, parent);
|
|
41
|
-
|
|
41
|
+
createState(element, parent);
|
|
42
42
|
if (element.scope === "state") element.scope = element.state;
|
|
43
43
|
createIfConditionFlag(element, parent);
|
|
44
44
|
initProps(element, parent, options);
|
|
@@ -49,13 +49,13 @@ const create = async (props, parentEl, passedKey, options = OPTIONS.create || {}
|
|
|
49
49
|
if (element.node) {
|
|
50
50
|
if (ref.__if) return assignNode(element, parent, key, attachOptions);
|
|
51
51
|
}
|
|
52
|
-
const onInit =
|
|
52
|
+
const onInit = triggerEventOn("init", element, options);
|
|
53
53
|
if (onInit === false) return element;
|
|
54
54
|
triggerEventOn("beforeClassAssign", element, options);
|
|
55
55
|
assignKeyAsClassname(element);
|
|
56
|
-
|
|
56
|
+
renderElement(element, parent, options, attachOptions);
|
|
57
57
|
addElementIntoParentChildren(element, parent);
|
|
58
|
-
|
|
58
|
+
triggerEventOn("complete", element, options);
|
|
59
59
|
return element;
|
|
60
60
|
};
|
|
61
61
|
const cacheOptions = (options) => {
|
|
@@ -76,7 +76,7 @@ const addElementIntoParentChildren = (element, parent) => {
|
|
|
76
76
|
}
|
|
77
77
|
};
|
|
78
78
|
const visitedElements = /* @__PURE__ */ new WeakMap();
|
|
79
|
-
const renderElement =
|
|
79
|
+
const renderElement = (element, parent, options, attachOptions) => {
|
|
80
80
|
var _a, _b, _c;
|
|
81
81
|
if (visitedElements.has(element)) {
|
|
82
82
|
if (ENV === "test" || ENV === "development") {
|
|
@@ -85,17 +85,17 @@ const renderElement = async (element, parent, options, attachOptions) => {
|
|
|
85
85
|
}
|
|
86
86
|
visitedElements.set(element, true);
|
|
87
87
|
const { __ref: ref, key } = element;
|
|
88
|
-
const createNestedChild =
|
|
88
|
+
const createNestedChild = () => {
|
|
89
89
|
const isInfiniteLoopDetected = detectInfiniteLoop(ref.path);
|
|
90
90
|
if (ref.__uniqId || isInfiniteLoopDetected) return;
|
|
91
|
-
|
|
91
|
+
createNode(element, options);
|
|
92
92
|
ref.__uniqId = Math.random();
|
|
93
93
|
};
|
|
94
94
|
if (ENV === "test" || ENV === "development") {
|
|
95
|
-
|
|
95
|
+
createNestedChild();
|
|
96
96
|
} else {
|
|
97
97
|
try {
|
|
98
|
-
|
|
98
|
+
createNestedChild();
|
|
99
99
|
} catch (e) {
|
|
100
100
|
const path = ref.path;
|
|
101
101
|
if (path.includes("ComponentsGrid")) {
|
|
@@ -122,10 +122,10 @@ const renderElement = async (element, parent, options, attachOptions) => {
|
|
|
122
122
|
}
|
|
123
123
|
assignNode(element, parent, key, attachOptions);
|
|
124
124
|
applyAnimationFrame(element, options);
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
125
|
+
triggerEventOn("render", element, options);
|
|
126
|
+
triggerEventOn("renderRouter", element, options);
|
|
127
|
+
triggerEventOn("done", element, options);
|
|
128
|
+
triggerEventOn("create", element, options);
|
|
129
129
|
};
|
|
130
130
|
const onlyResolveExtends = (element, parent, key, options) => {
|
|
131
131
|
const { __ref: ref } = element;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { isFunction, exec, isProduction } from "@domql/utils";
|
|
2
|
+
import {
|
|
3
|
+
getExtendStack,
|
|
4
|
+
jointStacks,
|
|
5
|
+
cloneAndMergeArrayExtend,
|
|
6
|
+
deepMergeExtend,
|
|
7
|
+
fallbackStringExtend
|
|
8
|
+
} from "./utils/index.js";
|
|
9
|
+
let mainExtend;
|
|
10
|
+
const applyExtend = (element, parent, options = {}) => {
|
|
11
|
+
if (isFunction(element)) element = exec(element, parent);
|
|
12
|
+
const { props, __ref } = element;
|
|
13
|
+
let extend = (props == null ? void 0 : props.extends) || element.extends || element.extend;
|
|
14
|
+
const variant = props == null ? void 0 : props.variant;
|
|
15
|
+
const context = element.context || parent.context;
|
|
16
|
+
extend = fallbackStringExtend(extend, context, options, variant);
|
|
17
|
+
const extendStack = getExtendStack(extend, context);
|
|
18
|
+
delete element.extend;
|
|
19
|
+
let childExtendStack = [];
|
|
20
|
+
if (parent) {
|
|
21
|
+
element.parent = parent;
|
|
22
|
+
if (!options.ignoreChildExtend && !(props && props.ignoreChildExtend)) {
|
|
23
|
+
childExtendStack = getExtendStack(parent.childExtend, context);
|
|
24
|
+
const ignoreChildExtendRecursive = props && props.ignoreChildExtendRecursive;
|
|
25
|
+
if (parent.childExtendRecursive && !ignoreChildExtendRecursive) {
|
|
26
|
+
const canExtendRecursive = element.key !== "__text";
|
|
27
|
+
if (canExtendRecursive) {
|
|
28
|
+
const childExtendRecursiveStack = getExtendStack(
|
|
29
|
+
parent.childExtendRecursive,
|
|
30
|
+
context
|
|
31
|
+
);
|
|
32
|
+
childExtendStack = childExtendStack.concat(childExtendRecursiveStack);
|
|
33
|
+
element.childExtendRecursive = parent.childExtendRecursive;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const extendLength = extendStack.length;
|
|
39
|
+
const childExtendLength = childExtendStack.length;
|
|
40
|
+
let stack = [];
|
|
41
|
+
if (extendLength && childExtendLength) {
|
|
42
|
+
stack = jointStacks(extendStack, childExtendStack);
|
|
43
|
+
} else if (extendLength) {
|
|
44
|
+
stack = extendStack;
|
|
45
|
+
} else if (childExtendLength) {
|
|
46
|
+
stack = childExtendStack;
|
|
47
|
+
} else if (!context.defaultExtends) return element;
|
|
48
|
+
if (context.defaultExtends) {
|
|
49
|
+
if (!mainExtend) {
|
|
50
|
+
const defaultOptionsExtend = getExtendStack(
|
|
51
|
+
context.defaultExtends,
|
|
52
|
+
context
|
|
53
|
+
);
|
|
54
|
+
mainExtend = cloneAndMergeArrayExtend(defaultOptionsExtend);
|
|
55
|
+
delete mainExtend.extend;
|
|
56
|
+
}
|
|
57
|
+
stack = [].concat(stack, mainExtend);
|
|
58
|
+
}
|
|
59
|
+
if (__ref) __ref.__extend = stack;
|
|
60
|
+
let mergedExtend = cloneAndMergeArrayExtend(stack);
|
|
61
|
+
const COMPONENTS = context && context.components || options.components;
|
|
62
|
+
const component = exec(element.component || mergedExtend.component, element);
|
|
63
|
+
if (component && COMPONENTS && COMPONENTS[component]) {
|
|
64
|
+
const componentExtend = cloneAndMergeArrayExtend(
|
|
65
|
+
getExtendStack(COMPONENTS[component])
|
|
66
|
+
);
|
|
67
|
+
mergedExtend = deepMergeExtend(componentExtend, mergedExtend);
|
|
68
|
+
}
|
|
69
|
+
const merged = deepMergeExtend(element, mergedExtend);
|
|
70
|
+
return merged;
|
|
71
|
+
};
|
|
72
|
+
export {
|
|
73
|
+
applyExtend
|
|
74
|
+
};
|
package/dist/esm/iterate.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isObject,
|
|
3
|
-
exec,
|
|
4
3
|
isFunction,
|
|
5
4
|
isNumber,
|
|
6
5
|
isString,
|
|
@@ -8,16 +7,23 @@ import {
|
|
|
8
7
|
isContextComponent,
|
|
9
8
|
isMethod,
|
|
10
9
|
overwrite,
|
|
11
|
-
|
|
10
|
+
exec
|
|
12
11
|
} from "@domql/utils";
|
|
13
|
-
const throughInitialExec =
|
|
12
|
+
const throughInitialExec = (element, exclude = {}) => {
|
|
14
13
|
const { __ref: ref } = element;
|
|
15
14
|
for (const param in element) {
|
|
16
15
|
if (exclude[param]) continue;
|
|
17
16
|
const prop = element[param];
|
|
18
17
|
if (isFunction(prop) && !isMethod(param, element)) {
|
|
19
18
|
ref.__exec[param] = prop;
|
|
20
|
-
|
|
19
|
+
const result = prop(element, element.state, element.context);
|
|
20
|
+
if (result && typeof result.then === "function") {
|
|
21
|
+
result.then((resolved) => {
|
|
22
|
+
element[param] = resolved;
|
|
23
|
+
});
|
|
24
|
+
} else {
|
|
25
|
+
element[param] = result;
|
|
26
|
+
}
|
|
21
27
|
}
|
|
22
28
|
}
|
|
23
29
|
};
|
|
@@ -29,6 +35,12 @@ const throughUpdatedExec = (element, options = {}) => {
|
|
|
29
35
|
const isDefinedParam = ref.__defineCache[param];
|
|
30
36
|
if (isDefinedParam) continue;
|
|
31
37
|
const newExec = ref.__exec[param](element, element.state, element.context);
|
|
38
|
+
if (newExec && typeof newExec.then === "function") {
|
|
39
|
+
newExec.then((resolved) => {
|
|
40
|
+
element[param] = resolved;
|
|
41
|
+
});
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
32
44
|
const execReturnsString = isString(newExec) || isNumber(newExec);
|
|
33
45
|
if (prop && prop.node && execReturnsString) {
|
|
34
46
|
overwrite(prop, { text: newExec });
|
|
@@ -48,23 +60,37 @@ const throughUpdatedExec = (element, options = {}) => {
|
|
|
48
60
|
}
|
|
49
61
|
return changes;
|
|
50
62
|
};
|
|
51
|
-
const throughExecProps =
|
|
63
|
+
const throughExecProps = (element) => {
|
|
52
64
|
const { __ref: ref } = element;
|
|
53
65
|
const { props } = element;
|
|
54
66
|
for (const k in props) {
|
|
55
67
|
const isDefine = k.startsWith("is") || k.startsWith("has") || k.startsWith("use");
|
|
56
68
|
const cachedExecProp = ref.__execProps[k];
|
|
57
69
|
if (isFunction(cachedExecProp)) {
|
|
58
|
-
|
|
70
|
+
const result = exec(cachedExecProp, element);
|
|
71
|
+
if (result && typeof result.then === "function") {
|
|
72
|
+
result.then((resolved) => {
|
|
73
|
+
props[k] = resolved;
|
|
74
|
+
});
|
|
75
|
+
} else {
|
|
76
|
+
props[k] = result;
|
|
77
|
+
}
|
|
59
78
|
} else if (isDefine && isFunction(props[k])) {
|
|
60
79
|
ref.__execProps[k] = props[k];
|
|
61
|
-
|
|
80
|
+
const result = exec(props[k], element);
|
|
81
|
+
if (result && typeof result.then === "function") {
|
|
82
|
+
result.then((resolved) => {
|
|
83
|
+
props[k] = resolved;
|
|
84
|
+
});
|
|
85
|
+
} else {
|
|
86
|
+
props[k] = result;
|
|
87
|
+
}
|
|
62
88
|
}
|
|
63
89
|
}
|
|
64
90
|
};
|
|
65
91
|
const isPropertyInDefines = (key, element) => {
|
|
66
92
|
};
|
|
67
|
-
const throughInitialDefine =
|
|
93
|
+
const throughInitialDefine = (element) => {
|
|
68
94
|
const { define, context, __ref: ref } = element;
|
|
69
95
|
let defineObj = {};
|
|
70
96
|
const hasGlobalDefine = context && isObject(context.define);
|
|
@@ -74,23 +100,38 @@ const throughInitialDefine = async (element) => {
|
|
|
74
100
|
let elementProp = element[param];
|
|
75
101
|
if (isFunction(elementProp) && !isMethod(param, element)) {
|
|
76
102
|
ref.__exec[param] = elementProp;
|
|
77
|
-
|
|
78
|
-
if (execParam2) {
|
|
79
|
-
|
|
80
|
-
|
|
103
|
+
let execParam2 = exec(elementProp, element);
|
|
104
|
+
if (execParam2 && typeof execParam2.then === "function") {
|
|
105
|
+
execParam2.then((resolved) => {
|
|
106
|
+
elementProp = element[param] = resolved && resolved.parse ? resolved.parse() : resolved;
|
|
107
|
+
if (resolved) {
|
|
108
|
+
ref.__defineCache[param] = elementProp;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
} else {
|
|
112
|
+
elementProp = element[param] = execParam2 && execParam2.parse ? execParam2.parse() : execParam2;
|
|
113
|
+
if (execParam2) {
|
|
114
|
+
ref.__defineCache[param] = elementProp;
|
|
115
|
+
}
|
|
81
116
|
}
|
|
82
117
|
}
|
|
83
|
-
const execParam =
|
|
118
|
+
const execParam = defineObj[param](
|
|
84
119
|
elementProp,
|
|
85
120
|
element,
|
|
86
121
|
element.state,
|
|
87
122
|
element.context
|
|
88
123
|
);
|
|
89
|
-
if (execParam
|
|
124
|
+
if (execParam && typeof execParam.then === "function") {
|
|
125
|
+
execParam.then((resolved) => {
|
|
126
|
+
if (resolved) element[param] = resolved;
|
|
127
|
+
});
|
|
128
|
+
} else if (execParam) {
|
|
129
|
+
element[param] = execParam;
|
|
130
|
+
}
|
|
90
131
|
}
|
|
91
132
|
return element;
|
|
92
133
|
};
|
|
93
|
-
const throughUpdatedDefine =
|
|
134
|
+
const throughUpdatedDefine = (element) => {
|
|
94
135
|
const { context, define, __ref: ref } = element;
|
|
95
136
|
const changes = {};
|
|
96
137
|
let obj = {};
|
|
@@ -99,15 +140,29 @@ const throughUpdatedDefine = async (element) => {
|
|
|
99
140
|
for (const param in obj) {
|
|
100
141
|
const execParam = ref.__exec[param];
|
|
101
142
|
if (execParam) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
143
|
+
const result = execParam(element, element.state, element.context);
|
|
144
|
+
if (result && typeof result.then === "function") {
|
|
145
|
+
result.then((resolved) => {
|
|
146
|
+
ref.__defineCache[param] = resolved;
|
|
147
|
+
});
|
|
148
|
+
} else {
|
|
149
|
+
ref.__defineCache[param] = result;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
const cached = exec(ref.__defineCache[param], element);
|
|
153
|
+
if (cached && typeof cached.then === "function") {
|
|
154
|
+
cached.then((resolved) => {
|
|
155
|
+
});
|
|
156
|
+
continue;
|
|
107
157
|
}
|
|
108
|
-
const cached = await execPromise(ref.__defineCache[param], element);
|
|
109
158
|
const newExecParam = typeof obj[param] === "function" ? obj[param](cached, element, element.state, element.context) : void 0;
|
|
110
|
-
if (newExecParam
|
|
159
|
+
if (newExecParam && typeof newExecParam.then === "function") {
|
|
160
|
+
newExecParam.then((resolved) => {
|
|
161
|
+
element[param] = resolved;
|
|
162
|
+
});
|
|
163
|
+
} else if (newExecParam) {
|
|
164
|
+
element[param] = newExecParam;
|
|
165
|
+
}
|
|
111
166
|
}
|
|
112
167
|
return changes;
|
|
113
168
|
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { isFunction, setContentKey } from "@domql/utils";
|
|
2
|
+
import { set } from "../set.js";
|
|
3
|
+
const updateContent = function(params, options) {
|
|
4
|
+
const element = this;
|
|
5
|
+
const ref = element.__ref;
|
|
6
|
+
const contentKey = ref.contentElementKey;
|
|
7
|
+
if (!element[contentKey]) return;
|
|
8
|
+
if (element[contentKey].update) element[contentKey].update(params, options);
|
|
9
|
+
};
|
|
10
|
+
const removeContent = function(el, opts = {}) {
|
|
11
|
+
const element = el || this;
|
|
12
|
+
const { __ref: ref } = element;
|
|
13
|
+
const contentElementKey = setContentKey(element, opts);
|
|
14
|
+
if (opts.contentElementKey !== "content") opts.contentElementKey = "content";
|
|
15
|
+
if (element[contentElementKey]) {
|
|
16
|
+
if (element[contentElementKey].node && element.node) {
|
|
17
|
+
if (element[contentElementKey].tag === "fragment")
|
|
18
|
+
element.node.innerHTML = "";
|
|
19
|
+
else {
|
|
20
|
+
const contentNode = element[contentElementKey].node;
|
|
21
|
+
if (contentNode.parentNode === element.node)
|
|
22
|
+
element.node.removeChild(element[contentElementKey].node);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const { __cached } = ref;
|
|
26
|
+
if (__cached && __cached[contentElementKey]) {
|
|
27
|
+
if (__cached[contentElementKey].tag === "fragment")
|
|
28
|
+
__cached[contentElementKey].parent.node.innerHTML = "";
|
|
29
|
+
else if (__cached[contentElementKey] && isFunction(__cached[contentElementKey].remove))
|
|
30
|
+
__cached[contentElementKey].remove();
|
|
31
|
+
}
|
|
32
|
+
ref.__children.splice(ref.__children.indexOf(element[contentElementKey]), 1);
|
|
33
|
+
delete element[contentElementKey];
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
function setContent(param, element, node, opts) {
|
|
37
|
+
var _a;
|
|
38
|
+
const contentElementKey = setContentKey(element, opts);
|
|
39
|
+
if (param && element) {
|
|
40
|
+
if ((_a = element[contentElementKey]) == null ? void 0 : _a.update) {
|
|
41
|
+
element[contentElementKey].update({}, opts);
|
|
42
|
+
} else {
|
|
43
|
+
set.call(element, param, opts);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
var content_default = setContent;
|
|
48
|
+
export {
|
|
49
|
+
content_default as default,
|
|
50
|
+
removeContent,
|
|
51
|
+
setContent,
|
|
52
|
+
updateContent
|
|
53
|
+
};
|
package/dist/esm/mixins/html.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { exec } from "@domql/utils";
|
|
2
2
|
function html(param, element, node) {
|
|
3
3
|
var _a;
|
|
4
|
-
const prop = exec(
|
|
4
|
+
const prop = exec(((_a = element == null ? void 0 : element.props) == null ? void 0 : _a.html) || param, element);
|
|
5
5
|
const { __ref } = element;
|
|
6
6
|
if (prop !== __ref.__html) {
|
|
7
7
|
if (node.nodeName === "SVG") node.textContent = prop;
|
package/dist/esm/mixins/scope.js
CHANGED
package/dist/esm/mixins/state.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
const state2 =
|
|
1
|
+
import { exec, isObject, STATE_METHODS } from "@domql/utils";
|
|
2
|
+
function state(params, element, node) {
|
|
3
|
+
const state2 = exec(params, element);
|
|
4
4
|
if (isObject(state2)) {
|
|
5
5
|
for (const param in state2) {
|
|
6
6
|
if (STATE_METHODS.includes(param)) continue;
|
package/dist/esm/mixins/text.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { create } from "../create.js";
|
|
2
2
|
import { exec, isString } from "@domql/utils";
|
|
3
|
-
|
|
4
|
-
let prop = exec(
|
|
3
|
+
function text(param, element, node) {
|
|
4
|
+
let prop = exec(element.props.text || param, element);
|
|
5
5
|
if (isString(prop) && prop.includes("{{")) {
|
|
6
|
-
prop = element.call("replaceLiteralsWithObjectFields", prop);
|
|
6
|
+
prop = element.call("replaceLiteralsWithObjectFields", prop, element.state);
|
|
7
7
|
}
|
|
8
8
|
if (element.tag === "string") {
|
|
9
9
|
node.nodeValue = prop;
|
|
@@ -12,7 +12,7 @@ async function text(param, element, node) {
|
|
|
12
12
|
if (element.__text.text === prop) return;
|
|
13
13
|
element.__text.text = prop;
|
|
14
14
|
if (element.__text.node) element.__text.node.nodeValue = prop;
|
|
15
|
-
} else
|
|
15
|
+
} else create({ tag: "string", text: prop }, element, "__text");
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
var text_default = text;
|