@domql/element 2.5.200 → 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 +78 -177
- package/dist/cjs/iterate.js +29 -13
- package/dist/cjs/methods/set.js +27 -25
- package/dist/cjs/methods/v2.js +1 -5
- package/dist/cjs/mixins/attr.js +7 -6
- package/dist/cjs/mixins/index.js +0 -4
- package/dist/cjs/mixins/registry.js +7 -67
- package/dist/cjs/mixins/scope.js +1 -1
- package/dist/cjs/mixins/state.js +3 -4
- package/dist/cjs/mixins/text.js +3 -3
- package/dist/cjs/node.js +32 -22
- package/dist/cjs/set.js +112 -40
- package/dist/cjs/update.js +119 -64
- package/dist/cjs/utils/applyParam.js +2 -2
- package/dist/cjs/utils/index.js +8 -4
- package/dist/cjs/utils/onlyResolveExtends.js +4 -7
- 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 +83 -188
- package/dist/esm/iterate.js +33 -16
- package/dist/esm/methods/set.js +6 -4
- package/dist/esm/methods/v2.js +1 -5
- package/dist/esm/mixins/attr.js +8 -7
- package/dist/esm/mixins/data.js +1 -1
- package/dist/esm/mixins/index.js +0 -4
- package/dist/esm/mixins/registry.js +7 -67
- package/dist/esm/mixins/scope.js +1 -1
- package/dist/esm/mixins/state.js +4 -5
- package/dist/esm/mixins/text.js +4 -7
- package/dist/esm/node.js +23 -23
- package/dist/esm/set.js +112 -40
- package/dist/esm/update.js +122 -68
- package/dist/esm/utils/applyParam.js +2 -2
- package/dist/esm/utils/index.js +4 -3
- package/dist/esm/utils/onlyResolveExtends.js +12 -8
- 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 -81
- package/dist/cjs/methods/index.js +0 -320
- package/dist/cjs/mixins/content.js +0 -67
- package/dist/cjs/props/create.js +0 -92
- package/dist/cjs/props/ignore.js +0 -24
- package/dist/cjs/props/index.js +0 -21
- package/dist/cjs/props/inherit.js +0 -51
- package/dist/cjs/props/update.js +0 -34
- package/dist/cjs/utils/component.js +0 -74
- package/dist/cjs/utils/extendUtils.js +0 -133
- package/dist/cjs/utils/object.js +0 -171
- package/dist/cjs/utils/propEvents.js +0 -39
- package/dist/esm/cache/index.js +0 -4
- package/dist/esm/cache/options.js +0 -6
- package/dist/esm/extend.js +0 -67
- package/dist/esm/methods/index.js +0 -300
- package/dist/esm/mixins/content.js +0 -47
- package/dist/esm/props/create.js +0 -72
- package/dist/esm/props/ignore.js +0 -4
- package/dist/esm/props/index.js +0 -4
- package/dist/esm/props/inherit.js +0 -31
- package/dist/esm/props/update.js +0 -14
- package/dist/esm/utils/component.js +0 -62
- package/dist/esm/utils/extendUtils.js +0 -113
- package/dist/esm/utils/object.js +0 -151
- package/dist/esm/utils/propEvents.js +0 -19
- package/extend.js +0 -90
- package/methods/index.js +0 -317
- package/mixins/content.js +0 -55
- package/props/create.js +0 -87
- package/props/ignore.js +0 -3
- package/props/index.js +0 -6
- package/props/inherit.js +0 -35
- package/props/update.js +0 -17
- package/utils/component.js +0 -68
- package/utils/extendUtils.js +0 -134
- package/utils/object.js +0 -172
- package/utils/propEvents.js +0 -19
package/dist/esm/iterate.js
CHANGED
|
@@ -4,24 +4,23 @@ import {
|
|
|
4
4
|
isFunction,
|
|
5
5
|
isNumber,
|
|
6
6
|
isString,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
matchesComponentNaming,
|
|
8
|
+
isContextComponent,
|
|
9
|
+
isMethod,
|
|
10
|
+
overwrite
|
|
10
11
|
} from "@domql/utils";
|
|
11
|
-
import { METHODS_EXL, overwrite } from "./utils/index.js";
|
|
12
|
-
import { isMethod } from "./methods/index.js";
|
|
13
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
|
-
if (isFunction(prop) && !isMethod(param, element)
|
|
17
|
+
if (isFunction(prop) && !isMethod(param, element)) {
|
|
19
18
|
ref.__exec[param] = prop;
|
|
20
19
|
element[param] = prop(element, element.state, element.context);
|
|
21
20
|
}
|
|
22
21
|
}
|
|
23
22
|
};
|
|
24
|
-
const throughUpdatedExec = (element, options = {
|
|
23
|
+
const throughUpdatedExec = (element, options = {}) => {
|
|
25
24
|
const { __ref: ref } = element;
|
|
26
25
|
const changes = {};
|
|
27
26
|
for (const param in ref.__exec) {
|
|
@@ -31,13 +30,17 @@ const throughUpdatedExec = (element, options = { excludes: METHODS_EXL }) => {
|
|
|
31
30
|
const newExec = ref.__exec[param](element, element.state, element.context);
|
|
32
31
|
const execReturnsString = isString(newExec) || isNumber(newExec);
|
|
33
32
|
if (prop && prop.node && execReturnsString) {
|
|
34
|
-
overwrite(prop, { text: newExec }
|
|
33
|
+
overwrite(prop, { text: newExec });
|
|
35
34
|
} else if (newExec !== prop) {
|
|
36
|
-
if (
|
|
37
|
-
const { extend, ...newElem } =
|
|
38
|
-
|
|
35
|
+
if (matchesComponentNaming(param)) {
|
|
36
|
+
const { extends: extend, ...newElem } = isContextComponent(
|
|
37
|
+
newExec,
|
|
38
|
+
element,
|
|
39
|
+
param
|
|
40
|
+
);
|
|
41
|
+
overwrite(prop, newElem);
|
|
39
42
|
} else {
|
|
40
|
-
|
|
43
|
+
changes[param] = prop;
|
|
41
44
|
element[param] = newExec;
|
|
42
45
|
}
|
|
43
46
|
}
|
|
@@ -58,6 +61,8 @@ const throughExecProps = (element) => {
|
|
|
58
61
|
}
|
|
59
62
|
}
|
|
60
63
|
};
|
|
64
|
+
const isPropertyInDefines = (key, element) => {
|
|
65
|
+
};
|
|
61
66
|
const throughInitialDefine = (element) => {
|
|
62
67
|
const { define, context, __ref: ref } = element;
|
|
63
68
|
let defineObj = {};
|
|
@@ -66,7 +71,7 @@ const throughInitialDefine = (element) => {
|
|
|
66
71
|
if (hasGlobalDefine) defineObj = { ...defineObj, ...context.define };
|
|
67
72
|
for (const param in defineObj) {
|
|
68
73
|
let elementProp = element[param];
|
|
69
|
-
if (isFunction(elementProp) && !isMethod(param, element)
|
|
74
|
+
if (isFunction(elementProp) && !isMethod(param, element)) {
|
|
70
75
|
ref.__exec[param] = elementProp;
|
|
71
76
|
const execParam2 = elementProp = exec(elementProp, element);
|
|
72
77
|
if (execParam2) {
|
|
@@ -74,7 +79,12 @@ const throughInitialDefine = (element) => {
|
|
|
74
79
|
ref.__defineCache[param] = elementProp;
|
|
75
80
|
}
|
|
76
81
|
}
|
|
77
|
-
const execParam = defineObj[param](
|
|
82
|
+
const execParam = defineObj[param](
|
|
83
|
+
elementProp,
|
|
84
|
+
element,
|
|
85
|
+
element.state,
|
|
86
|
+
element.context
|
|
87
|
+
);
|
|
78
88
|
if (execParam) element[param] = execParam;
|
|
79
89
|
}
|
|
80
90
|
return element;
|
|
@@ -87,14 +97,21 @@ const throughUpdatedDefine = (element) => {
|
|
|
87
97
|
if (isObject(context && context.define)) obj = { ...obj, ...context.define };
|
|
88
98
|
for (const param in obj) {
|
|
89
99
|
const execParam = ref.__exec[param];
|
|
90
|
-
if (execParam)
|
|
100
|
+
if (execParam) {
|
|
101
|
+
ref.__defineCache[param] = execParam(
|
|
102
|
+
element,
|
|
103
|
+
element.state,
|
|
104
|
+
element.context
|
|
105
|
+
);
|
|
106
|
+
}
|
|
91
107
|
const cached = exec(ref.__defineCache[param], element);
|
|
92
|
-
const newExecParam = obj[param](cached, element, element.state, element.context);
|
|
108
|
+
const newExecParam = typeof obj[param] === "function" ? obj[param](cached, element, element.state, element.context) : void 0;
|
|
93
109
|
if (newExecParam) element[param] = newExecParam;
|
|
94
110
|
}
|
|
95
111
|
return changes;
|
|
96
112
|
};
|
|
97
113
|
export {
|
|
114
|
+
isPropertyInDefines,
|
|
98
115
|
throughExecProps,
|
|
99
116
|
throughInitialDefine,
|
|
100
117
|
throughInitialExec,
|
package/dist/esm/methods/set.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { merge, overwrite } from "@domql/utils";
|
|
2
|
-
import { set, reset } from "../set.js";
|
|
2
|
+
import { set, reset, updateContent, removeContent } from "../set.js";
|
|
3
3
|
import { update } from "../update.js";
|
|
4
|
-
import { removeContent, updateContent } from "../mixins/content.js";
|
|
5
4
|
import {
|
|
6
5
|
call,
|
|
7
6
|
error,
|
|
@@ -23,7 +22,7 @@ import {
|
|
|
23
22
|
variables,
|
|
24
23
|
verbose,
|
|
25
24
|
warn
|
|
26
|
-
} from "
|
|
25
|
+
} from "@domql/utils/methods";
|
|
27
26
|
const addMethods = (element, parent, options = {}) => {
|
|
28
27
|
const proto = {
|
|
29
28
|
set,
|
|
@@ -52,7 +51,10 @@ const addMethods = (element, parent, options = {}) => {
|
|
|
52
51
|
error,
|
|
53
52
|
call
|
|
54
53
|
};
|
|
55
|
-
if (element.context.methods)
|
|
54
|
+
if (element.context.methods) {
|
|
55
|
+
;
|
|
56
|
+
(options.strict ? merge : overwrite)(proto, element.context.methods);
|
|
57
|
+
}
|
|
56
58
|
Object.setPrototypeOf(element, proto);
|
|
57
59
|
};
|
|
58
60
|
export {
|
package/dist/esm/methods/v2.js
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import { isDefined, isFunction, isObjectLike } from "@domql/utils";
|
|
2
|
-
import { parseFilters, REGISTRY } from "../mixins/index.js";
|
|
3
2
|
const defineSetter = (element, key, get, set) => Object.defineProperty(element, key, { get, set });
|
|
4
3
|
const keys = function() {
|
|
5
4
|
const element = this;
|
|
6
5
|
const keys2 = [];
|
|
7
6
|
for (const param in element) {
|
|
8
|
-
if (REGISTRY[param] && !parseFilters.elementKeys.includes(param)) {
|
|
9
|
-
continue;
|
|
10
|
-
}
|
|
11
7
|
keys2.push(param);
|
|
12
8
|
}
|
|
13
9
|
return keys2;
|
|
@@ -48,7 +44,7 @@ const log = function(...args) {
|
|
|
48
44
|
args.forEach((v) => console.log(`%c${v}:
|
|
49
45
|
`, "font-weight: bold", element[v]));
|
|
50
46
|
} else {
|
|
51
|
-
console.log(__ref.path);
|
|
47
|
+
console.log(__ref == null ? void 0 : __ref.path);
|
|
52
48
|
const keys2 = element.keys();
|
|
53
49
|
keys2.forEach((v) => console.log(`%c${v}:
|
|
54
50
|
`, "font-weight: bold", element[v]));
|
package/dist/esm/mixins/attr.js
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { exec, isNot, isNull, isUndefined } from "@domql/utils";
|
|
1
|
+
import { deepMerge, exec, isNot, isNull, isUndefined } from "@domql/utils";
|
|
2
2
|
import { report } from "@domql/report";
|
|
3
|
-
import { deepMerge } from "../utils/index.js";
|
|
4
3
|
function attr(params, element, node) {
|
|
5
4
|
const { __ref: ref, props } = element;
|
|
6
5
|
const { __attr } = ref;
|
|
7
6
|
if (isNot("object")) report("HTMLInvalidAttr", params);
|
|
8
7
|
if (params) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
const attrs = exec(params, element);
|
|
9
|
+
if (props.attr) deepMerge(attrs, props.attr);
|
|
10
|
+
for (const attr2 in attrs) {
|
|
11
|
+
const val = exec(attrs[attr2], element);
|
|
12
|
+
if (val !== false && !isUndefined(val) && !isNull(val) && node.setAttribute) {
|
|
13
|
+
node.setAttribute(attr2, val);
|
|
14
|
+
} else if (node.removeAttribute) node.removeAttribute(attr2);
|
|
14
15
|
__attr[attr2] = val;
|
|
15
16
|
}
|
|
16
17
|
}
|
package/dist/esm/mixins/data.js
CHANGED
package/dist/esm/mixins/index.js
CHANGED
|
@@ -1,21 +1,17 @@
|
|
|
1
1
|
import { attr } from "./attr.js";
|
|
2
2
|
import { applyClasslist } from "./classList.js";
|
|
3
|
-
import { setContent } from "./content.js";
|
|
4
3
|
import { data } from "./data.js";
|
|
5
4
|
import { html } from "./html.js";
|
|
6
5
|
import { style } from "./style.js";
|
|
7
6
|
import { text } from "./text.js";
|
|
8
7
|
import { state } from "./state.js";
|
|
9
8
|
import { scope } from "./scope.js";
|
|
10
|
-
import { REGISTRY } from "./registry.js";
|
|
11
9
|
export * from "./registry.js";
|
|
12
10
|
export {
|
|
13
11
|
attr,
|
|
14
12
|
applyClasslist as classList,
|
|
15
|
-
setContent as content,
|
|
16
13
|
data,
|
|
17
14
|
html,
|
|
18
|
-
REGISTRY as registry,
|
|
19
15
|
scope,
|
|
20
16
|
state,
|
|
21
17
|
style,
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import attr from "./attr.js";
|
|
2
2
|
import { classList } from "./classList.js";
|
|
3
|
-
import content from "./content.js";
|
|
4
3
|
import data from "./data.js";
|
|
5
4
|
import html from "./html.js";
|
|
6
5
|
import scope from "./scope.js";
|
|
@@ -12,94 +11,35 @@ const REGISTRY = {
|
|
|
12
11
|
style,
|
|
13
12
|
text,
|
|
14
13
|
html,
|
|
15
|
-
content,
|
|
16
14
|
data,
|
|
17
15
|
class: classList,
|
|
18
16
|
state,
|
|
19
17
|
scope,
|
|
20
18
|
deps: (param, el) => param || el.parent.deps,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
extends: {},
|
|
20
|
+
children: {},
|
|
21
|
+
content: {},
|
|
22
|
+
childExtends: {},
|
|
23
|
+
childExtendsRecursive: {},
|
|
24
24
|
props: {},
|
|
25
|
-
path: {},
|
|
26
25
|
if: {},
|
|
27
26
|
define: {},
|
|
28
|
-
transform: {},
|
|
29
27
|
__name: {},
|
|
30
28
|
__ref: {},
|
|
31
29
|
__hash: {},
|
|
32
30
|
__text: {},
|
|
33
|
-
nextElement: {},
|
|
34
|
-
previousElement: {},
|
|
35
31
|
key: {},
|
|
36
32
|
tag: {},
|
|
37
33
|
query: {},
|
|
38
34
|
parent: {},
|
|
39
35
|
node: {},
|
|
40
|
-
set: {},
|
|
41
|
-
reset: {},
|
|
42
|
-
update: {},
|
|
43
|
-
error: {},
|
|
44
|
-
warn: {},
|
|
45
|
-
call: {},
|
|
46
|
-
setProps: {},
|
|
47
|
-
remove: {},
|
|
48
|
-
updateContent: {},
|
|
49
|
-
removeContent: {},
|
|
50
36
|
variables: {},
|
|
51
|
-
lookup: {},
|
|
52
|
-
lookdown: {},
|
|
53
|
-
getRef: {},
|
|
54
|
-
getPath: {},
|
|
55
|
-
lookdownAll: {},
|
|
56
|
-
setNodeStyles: {},
|
|
57
|
-
spotByPath: {},
|
|
58
|
-
keys: {},
|
|
59
|
-
log: {},
|
|
60
|
-
parse: {},
|
|
61
|
-
parseDeep: {},
|
|
62
37
|
on: {},
|
|
63
38
|
component: {},
|
|
64
|
-
context: {}
|
|
65
|
-
$collection: {},
|
|
66
|
-
$stateCollection: {},
|
|
67
|
-
$propsCollection: {},
|
|
68
|
-
$setCollection: {},
|
|
69
|
-
$setStateCollection: {},
|
|
70
|
-
$setPropsCollection: {}
|
|
39
|
+
context: {}
|
|
71
40
|
};
|
|
72
41
|
var registry_default = REGISTRY;
|
|
73
|
-
const parseFilters = {
|
|
74
|
-
elementKeys: [
|
|
75
|
-
"tag",
|
|
76
|
-
"text",
|
|
77
|
-
"style",
|
|
78
|
-
"attr",
|
|
79
|
-
"class",
|
|
80
|
-
"state",
|
|
81
|
-
"props",
|
|
82
|
-
"data",
|
|
83
|
-
"content",
|
|
84
|
-
"html",
|
|
85
|
-
"on",
|
|
86
|
-
"key",
|
|
87
|
-
"extend",
|
|
88
|
-
"childExtend",
|
|
89
|
-
"childExtendRecursive",
|
|
90
|
-
"scope",
|
|
91
|
-
"query",
|
|
92
|
-
"$collection",
|
|
93
|
-
"$stateCollection",
|
|
94
|
-
"$propsCollection"
|
|
95
|
-
],
|
|
96
|
-
propsKeys: ["__element", "update"],
|
|
97
|
-
stateKeys: []
|
|
98
|
-
};
|
|
99
|
-
const collectionFilters = ["$collection", "$stateCollection", "$propsCollection"];
|
|
100
42
|
export {
|
|
101
43
|
REGISTRY,
|
|
102
|
-
|
|
103
|
-
registry_default as default,
|
|
104
|
-
parseFilters
|
|
44
|
+
registry_default as default
|
|
105
45
|
};
|
package/dist/esm/mixins/scope.js
CHANGED
package/dist/esm/mixins/state.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const state2 = exec(params, element);
|
|
1
|
+
import { execPromise, isObject, STATE_METHODS } from "@domql/utils";
|
|
2
|
+
async function state(params, element, node) {
|
|
3
|
+
const state2 = await execPromise(params, element);
|
|
5
4
|
if (isObject(state2)) {
|
|
6
5
|
for (const param in state2) {
|
|
7
|
-
if (
|
|
6
|
+
if (STATE_METHODS.includes(param)) continue;
|
|
8
7
|
if (!Object.hasOwnProperty.call(state2, param)) continue;
|
|
9
8
|
}
|
|
10
9
|
}
|
package/dist/esm/mixins/text.js
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { create } from "../create.js";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
} from "@domql/utils";
|
|
6
|
-
function text(param, element, node) {
|
|
7
|
-
let prop = exec(param, element);
|
|
2
|
+
import { exec, isString } from "@domql/utils";
|
|
3
|
+
async function text(param, element, node) {
|
|
4
|
+
let prop = exec(param || element.props.text, element);
|
|
8
5
|
if (isString(prop) && prop.includes("{{")) {
|
|
9
6
|
prop = element.call("replaceLiteralsWithObjectFields", prop);
|
|
10
7
|
}
|
|
@@ -15,7 +12,7 @@ function text(param, element, node) {
|
|
|
15
12
|
if (element.__text.text === prop) return;
|
|
16
13
|
element.__text.text = prop;
|
|
17
14
|
if (element.__text.node) element.__text.node.nodeValue = prop;
|
|
18
|
-
} else create({ tag: "string", text: prop }, element, "__text");
|
|
15
|
+
} else await create({ tag: "string", text: prop }, element, "__text");
|
|
19
16
|
}
|
|
20
17
|
}
|
|
21
18
|
var text_default = text;
|
package/dist/esm/node.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isFunction, isMethod, isObject, isUndefined } from "@domql/utils";
|
|
2
2
|
import { applyEventsOnNode, triggerEventOn } from "@domql/event";
|
|
3
3
|
import { cacheNode } from "@domql/render";
|
|
4
|
-
import { isMethod } from "./methods/index.js";
|
|
5
4
|
import { create } from "./create.js";
|
|
6
5
|
import {
|
|
7
6
|
throughExecProps,
|
|
@@ -10,54 +9,55 @@ import {
|
|
|
10
9
|
} from "./iterate.js";
|
|
11
10
|
import { REGISTRY } from "./mixins/index.js";
|
|
12
11
|
import { applyParam } from "./utils/applyParam.js";
|
|
13
|
-
import
|
|
12
|
+
import setChildren from "./children.js";
|
|
13
|
+
import { setContent } from "./set.js";
|
|
14
14
|
const ENV = "development";
|
|
15
|
-
const createNode = async (element,
|
|
15
|
+
const createNode = async (element, opts) => {
|
|
16
16
|
let { node, tag, __ref: ref } = element;
|
|
17
|
+
if (!ref.__if) return element;
|
|
17
18
|
let isNewNode;
|
|
18
19
|
if (!node) {
|
|
19
20
|
isNewNode = true;
|
|
20
|
-
if (!ref.__if) return element;
|
|
21
21
|
if (tag === "shadow") {
|
|
22
22
|
node = element.node = element.parent.node.attachShadow({ mode: "open" });
|
|
23
23
|
} else node = element.node = cacheNode(element);
|
|
24
|
-
triggerEventOn("attachNode", element,
|
|
24
|
+
await triggerEventOn("attachNode", element, opts);
|
|
25
25
|
}
|
|
26
|
-
if (ENV === "test" || ENV === "development" ||
|
|
26
|
+
if (ENV === "test" || ENV === "development" || opts.alowRefReference) {
|
|
27
27
|
node.ref = element;
|
|
28
28
|
if (isFunction(node.setAttribute)) node.setAttribute("key", element.key);
|
|
29
29
|
}
|
|
30
|
-
throughExecProps(element);
|
|
31
|
-
throughInitialDefine(element);
|
|
32
|
-
throughInitialExec(element);
|
|
33
|
-
|
|
34
|
-
propagateEventsFromProps(element);
|
|
35
|
-
if (isNewNode && isObject(element.on)) {
|
|
36
|
-
applyEventsOnNode(element, options);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
30
|
+
await throughExecProps(element);
|
|
31
|
+
await throughInitialDefine(element);
|
|
32
|
+
await throughInitialExec(element);
|
|
33
|
+
await applyEventsOnNode(element, { isNewNode, ...opts });
|
|
39
34
|
for (const param in element) {
|
|
40
35
|
const value = element[param];
|
|
41
|
-
if (!Object.hasOwnProperty.call(element, param))
|
|
42
|
-
|
|
43
|
-
|
|
36
|
+
if (!Object.hasOwnProperty.call(element, param) || isUndefined(value) || isMethod(param, element) || isObject(REGISTRY[param])) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const isElement = await applyParam(param, element, opts);
|
|
44
40
|
if (isElement) {
|
|
45
41
|
const { hasDefine, hasContextDefine } = isElement;
|
|
46
42
|
if (element[param] && !hasDefine && !hasContextDefine) {
|
|
47
43
|
const createAsync = async () => {
|
|
48
|
-
await create(
|
|
44
|
+
await create(value, element, param, opts);
|
|
49
45
|
};
|
|
50
|
-
if (element.props && element.props.lazyLoad ||
|
|
46
|
+
if (element.props && element.props.lazyLoad || opts.lazyLoad) {
|
|
51
47
|
window.requestAnimationFrame(async () => {
|
|
52
48
|
await createAsync();
|
|
53
|
-
if (!
|
|
54
|
-
triggerEventOn("lazyLoad", element,
|
|
49
|
+
if (!opts.preventUpdateListener) {
|
|
50
|
+
await triggerEventOn("lazyLoad", element, opts);
|
|
55
51
|
}
|
|
56
52
|
});
|
|
57
53
|
} else await createAsync();
|
|
58
54
|
}
|
|
59
55
|
}
|
|
60
56
|
}
|
|
57
|
+
const content = element.children ? await setChildren(element.children, element, opts) : element.content || element.content;
|
|
58
|
+
if (content) {
|
|
59
|
+
await setContent(content, element, opts);
|
|
60
|
+
}
|
|
61
61
|
return element;
|
|
62
62
|
};
|
|
63
63
|
var node_default = createNode;
|
package/dist/esm/set.js
CHANGED
|
@@ -1,72 +1,144 @@
|
|
|
1
|
-
import { deepContains,
|
|
2
|
-
import { OPTIONS } from "./cache/options.js";
|
|
1
|
+
import { deepContains, execPromise, isFunction, OPTIONS } from "@domql/utils";
|
|
3
2
|
import { create } from "./create.js";
|
|
4
|
-
import { registry } from "./mixins/index.js";
|
|
5
|
-
import { removeContent } from "./mixins/content.js";
|
|
6
3
|
import { triggerEventOn, triggerEventOnUpdate } from "@domql/event";
|
|
7
|
-
const
|
|
8
|
-
if (!options.preventRemove) removeContent(element, options);
|
|
4
|
+
const setContentKey = (element, opts = {}) => {
|
|
9
5
|
const { __ref: ref } = element;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
});
|
|
6
|
+
const contentElementKey = opts.contentElementKey;
|
|
7
|
+
if (!ref.contentElementKey || contentElementKey !== ref.contentElementKey) {
|
|
8
|
+
ref.contentElementKey = contentElementKey || "content";
|
|
9
|
+
}
|
|
10
|
+
return ref.contentElementKey;
|
|
16
11
|
};
|
|
17
|
-
const reset = (options) => {
|
|
12
|
+
const reset = async (options) => {
|
|
18
13
|
const element = void 0;
|
|
19
|
-
create(element, element.parent, void 0, {
|
|
20
|
-
|
|
21
|
-
...
|
|
14
|
+
await create(element, element.parent, void 0, {
|
|
15
|
+
ignoreChildExtends: true,
|
|
16
|
+
...OPTIONS.defaultOptions,
|
|
22
17
|
...OPTIONS.create,
|
|
23
18
|
...options
|
|
24
19
|
});
|
|
25
20
|
};
|
|
21
|
+
const resetContent = async (params, element, opts) => {
|
|
22
|
+
var _a;
|
|
23
|
+
const contentElementKey = setContentKey(element, opts);
|
|
24
|
+
if ((_a = element[contentElementKey]) == null ? void 0 : _a.node) removeContent(element, opts);
|
|
25
|
+
const contentElem = await create(
|
|
26
|
+
params,
|
|
27
|
+
element,
|
|
28
|
+
contentElementKey || "content",
|
|
29
|
+
{
|
|
30
|
+
ignoreChildExtends: true,
|
|
31
|
+
...OPTIONS.defaultOptions,
|
|
32
|
+
...OPTIONS.create,
|
|
33
|
+
...opts
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
if (contentElementKey !== "content") opts.contentElementKey = "content";
|
|
37
|
+
return contentElem;
|
|
38
|
+
};
|
|
39
|
+
const updateContent = async function(params, opts) {
|
|
40
|
+
const element = this;
|
|
41
|
+
const contentElementKey = setContentKey(element, opts);
|
|
42
|
+
if (!element[contentElementKey]) return;
|
|
43
|
+
if (element[contentElementKey].update) {
|
|
44
|
+
await element[contentElementKey].update(params, opts);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
async function setContent(param, element, opts) {
|
|
48
|
+
const content = await execPromise(param, element);
|
|
49
|
+
if (content && element) {
|
|
50
|
+
set.call(element, content, opts);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const removeContent = function(el, opts = {}) {
|
|
54
|
+
var _a;
|
|
55
|
+
const element = el || this;
|
|
56
|
+
const contentElementKey = setContentKey(element, opts);
|
|
57
|
+
if (opts.contentElementKey !== "content") {
|
|
58
|
+
opts.contentElementKey = "content";
|
|
59
|
+
}
|
|
60
|
+
const content = element[contentElementKey];
|
|
61
|
+
if (!content) return;
|
|
62
|
+
if (content.tag === "fragment" && ((_a = content.__ref) == null ? void 0 : _a.__children)) {
|
|
63
|
+
content.__ref.__children.forEach((key) => {
|
|
64
|
+
const child = content[key];
|
|
65
|
+
if (child.node && child.node.parentNode) {
|
|
66
|
+
child.node.parentNode.removeChild(child.node);
|
|
67
|
+
}
|
|
68
|
+
if (isFunction(child.remove)) {
|
|
69
|
+
child.remove();
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
} else {
|
|
73
|
+
if (content.node && content.node.parentNode) {
|
|
74
|
+
content.node.parentNode.removeChild(content.node);
|
|
75
|
+
}
|
|
76
|
+
if (isFunction(content.remove)) {
|
|
77
|
+
content.remove();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
delete element[contentElementKey];
|
|
81
|
+
};
|
|
26
82
|
const set = async function(params, options = {}, el) {
|
|
27
83
|
var _a;
|
|
28
84
|
const element = el || this;
|
|
29
85
|
const { __ref: ref } = element;
|
|
30
|
-
const
|
|
86
|
+
const contentElementKey = setContentKey(element, options);
|
|
87
|
+
const content = element[contentElementKey];
|
|
31
88
|
const __contentRef = content && content.__ref;
|
|
32
89
|
const lazyLoad = element.props && element.props.lazyLoad;
|
|
33
|
-
const
|
|
34
|
-
if (options.preventContentUpdate === true && !
|
|
35
|
-
|
|
90
|
+
const hasChildren = element.children;
|
|
91
|
+
if (options.preventContentUpdate === true && !hasChildren) return;
|
|
92
|
+
const childHasChanged = !ref.__noChildrenDifference;
|
|
93
|
+
const childrenIsDifferentFromCache = childHasChanged && __contentRef && Object.keys(params).length === Object.keys(content).length && deepContains(params, content);
|
|
94
|
+
if ((content == null ? void 0 : content.update) && !childHasChanged && !childrenIsDifferentFromCache) {
|
|
36
95
|
if (!options.preventBeforeUpdateListener && !options.preventListeners) {
|
|
37
|
-
const beforeUpdateReturns = await triggerEventOnUpdate(
|
|
96
|
+
const beforeUpdateReturns = await triggerEventOnUpdate(
|
|
97
|
+
"beforeUpdate",
|
|
98
|
+
params,
|
|
99
|
+
element,
|
|
100
|
+
options
|
|
101
|
+
);
|
|
38
102
|
if (beforeUpdateReturns === false) return element;
|
|
39
103
|
}
|
|
40
|
-
|
|
41
|
-
if (!options.preventUpdateListener
|
|
104
|
+
await content.update(params);
|
|
105
|
+
if (!options.preventUpdateListener && !options.preventListeners) {
|
|
106
|
+
await triggerEventOn("update", element, options);
|
|
107
|
+
}
|
|
42
108
|
return;
|
|
43
109
|
}
|
|
44
|
-
if (params)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
110
|
+
if (!params) return element;
|
|
111
|
+
let { childExtends, props, tag } = params;
|
|
112
|
+
if (!props) props = params.props = {};
|
|
113
|
+
if (tag === "fragment") {
|
|
114
|
+
if (!childExtends && element.childExtends) {
|
|
115
|
+
params.childExtends = element.childExtends;
|
|
116
|
+
props.ignoreChildExtends = true;
|
|
50
117
|
}
|
|
51
118
|
if (!(props == null ? void 0 : props.childProps) && ((_a = element.props) == null ? void 0 : _a.childProps)) {
|
|
52
119
|
props.childProps = element.props.childProps;
|
|
53
120
|
props.ignoreChildProps = true;
|
|
54
121
|
}
|
|
55
|
-
if (lazyLoad) {
|
|
56
|
-
window.requestAnimationFrame(async () => {
|
|
57
|
-
await resetElement(params, element, options);
|
|
58
|
-
if (!options.preventUpdateListener) {
|
|
59
|
-
triggerEventOn("lazyLoad", element, options);
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
} else await resetElement(params, element, options);
|
|
63
122
|
}
|
|
64
|
-
|
|
123
|
+
if (lazyLoad) {
|
|
124
|
+
window.requestAnimationFrame(async () => {
|
|
125
|
+
await resetContent(params, element, options);
|
|
126
|
+
if (!options.preventUpdateListener) {
|
|
127
|
+
await triggerEventOn("lazyLoad", element, options);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
} else {
|
|
131
|
+
await resetContent(params, element, options);
|
|
132
|
+
}
|
|
65
133
|
};
|
|
66
134
|
var set_default = set;
|
|
67
135
|
export {
|
|
68
136
|
set_default as default,
|
|
137
|
+
removeContent,
|
|
69
138
|
reset,
|
|
70
|
-
|
|
71
|
-
set
|
|
139
|
+
resetContent,
|
|
140
|
+
set,
|
|
141
|
+
setContent,
|
|
142
|
+
setContentKey,
|
|
143
|
+
updateContent
|
|
72
144
|
};
|