@domql/element 2.5.200 → 3.0.1
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 -252
- 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 +79 -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 +85 -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/utils/object.js
DELETED
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import { isArray, isObject, isObjectLike, joinArrays, deepClone } from "@domql/utils";
|
|
2
|
-
import { IGNORE_PROPS_PARAMS } from "../props/index.js";
|
|
3
|
-
const IGNORE_STATE_PARAMS = [
|
|
4
|
-
"update",
|
|
5
|
-
"parse",
|
|
6
|
-
"clean",
|
|
7
|
-
"create",
|
|
8
|
-
"destroy",
|
|
9
|
-
"add",
|
|
10
|
-
"toggle",
|
|
11
|
-
"remove",
|
|
12
|
-
"apply",
|
|
13
|
-
"set",
|
|
14
|
-
"reset",
|
|
15
|
-
"replace",
|
|
16
|
-
"quietReplace",
|
|
17
|
-
"quietUpdate",
|
|
18
|
-
"applyReplace",
|
|
19
|
-
"applyFunction",
|
|
20
|
-
"rootUpdate",
|
|
21
|
-
"parentUpdate",
|
|
22
|
-
"parent",
|
|
23
|
-
"__element",
|
|
24
|
-
"__depends",
|
|
25
|
-
"__ref",
|
|
26
|
-
"__children",
|
|
27
|
-
"root",
|
|
28
|
-
"setByPath",
|
|
29
|
-
"setPathCollection",
|
|
30
|
-
"removeByPath",
|
|
31
|
-
"removePathCollection",
|
|
32
|
-
"getByPath"
|
|
33
|
-
];
|
|
34
|
-
const METHODS = [
|
|
35
|
-
"set",
|
|
36
|
-
"reset",
|
|
37
|
-
"update",
|
|
38
|
-
"remove",
|
|
39
|
-
"updateContent",
|
|
40
|
-
"removeContent",
|
|
41
|
-
"lookup",
|
|
42
|
-
"lookdown",
|
|
43
|
-
"lookdownAll",
|
|
44
|
-
"getRef",
|
|
45
|
-
"getPath",
|
|
46
|
-
"setNodeStyles",
|
|
47
|
-
"spotByPath",
|
|
48
|
-
"keys",
|
|
49
|
-
"parse",
|
|
50
|
-
"setProps",
|
|
51
|
-
"parseDeep",
|
|
52
|
-
"variables",
|
|
53
|
-
"if",
|
|
54
|
-
"log",
|
|
55
|
-
"nextElement",
|
|
56
|
-
"previousElement"
|
|
57
|
-
];
|
|
58
|
-
const METHODS_EXL = joinArrays(
|
|
59
|
-
["node", "state", "context", "extend", "__element"],
|
|
60
|
-
METHODS,
|
|
61
|
-
IGNORE_STATE_PARAMS,
|
|
62
|
-
IGNORE_PROPS_PARAMS
|
|
63
|
-
);
|
|
64
|
-
const deepMerge = (element, extend, exclude = METHODS_EXL) => {
|
|
65
|
-
for (const e in extend) {
|
|
66
|
-
if (exclude.includes(e)) continue;
|
|
67
|
-
const elementProp = element[e];
|
|
68
|
-
const extendProp = extend[e];
|
|
69
|
-
if (elementProp === void 0) {
|
|
70
|
-
element[e] = extendProp;
|
|
71
|
-
} else if (isObjectLike(elementProp) && isObject(extendProp)) {
|
|
72
|
-
deepMerge(elementProp, extendProp);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return element;
|
|
76
|
-
};
|
|
77
|
-
const clone = (obj, exclude = METHODS_EXL) => {
|
|
78
|
-
const o = {};
|
|
79
|
-
for (const e in obj) {
|
|
80
|
-
if (exclude.includes(e)) continue;
|
|
81
|
-
o[e] = obj[e];
|
|
82
|
-
}
|
|
83
|
-
return o;
|
|
84
|
-
};
|
|
85
|
-
const overwrite = (element, params, options) => {
|
|
86
|
-
const changes = {};
|
|
87
|
-
const { __ref } = element;
|
|
88
|
-
const { __exec, __cached } = __ref;
|
|
89
|
-
for (const e in params) {
|
|
90
|
-
if (e === "props" || e === "state" || e === "__ref") continue;
|
|
91
|
-
const elementProp = element[e];
|
|
92
|
-
const paramsProp = params[e];
|
|
93
|
-
if (paramsProp !== void 0) {
|
|
94
|
-
__cached[e] = changes[e] = elementProp;
|
|
95
|
-
element[e] = paramsProp;
|
|
96
|
-
}
|
|
97
|
-
if (options.cleanExec) delete __exec[e];
|
|
98
|
-
}
|
|
99
|
-
return changes;
|
|
100
|
-
};
|
|
101
|
-
const overwriteShallow = (obj, params, exclude = METHODS_EXL) => {
|
|
102
|
-
for (const e in params) {
|
|
103
|
-
if (exclude.includes(e)) continue;
|
|
104
|
-
obj[e] = params[e];
|
|
105
|
-
}
|
|
106
|
-
return obj;
|
|
107
|
-
};
|
|
108
|
-
const overwriteDeep = (obj, params, exclude = METHODS_EXL) => {
|
|
109
|
-
for (const e in params) {
|
|
110
|
-
if (exclude.includes(e)) continue;
|
|
111
|
-
const objProp = obj[e];
|
|
112
|
-
const paramsProp = params[e];
|
|
113
|
-
if (isObjectLike(objProp) && isObjectLike(paramsProp)) {
|
|
114
|
-
overwriteDeep(objProp, paramsProp);
|
|
115
|
-
} else if (paramsProp !== void 0) {
|
|
116
|
-
obj[e] = paramsProp;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
return obj;
|
|
120
|
-
};
|
|
121
|
-
const mergeIfExisted = (a, b) => {
|
|
122
|
-
if (isObjectLike(a) && isObjectLike(b)) return deepMerge(a, b);
|
|
123
|
-
return a || b;
|
|
124
|
-
};
|
|
125
|
-
const mergeArray = (arr, exclude = ["parent", "node", "__element", "state", "context", "__ref"]) => {
|
|
126
|
-
return arr.reduce((a, c) => deepMerge(a, deepClone(c, { exclude })), {});
|
|
127
|
-
};
|
|
128
|
-
const mergeAndCloneIfArray = (obj) => {
|
|
129
|
-
return isArray(obj) ? mergeArray(obj) : deepClone(obj);
|
|
130
|
-
};
|
|
131
|
-
const flattenRecursive = (param, prop, stack = []) => {
|
|
132
|
-
const objectized = mergeAndCloneIfArray(param);
|
|
133
|
-
stack.push(objectized);
|
|
134
|
-
const extendOfExtend = objectized[prop];
|
|
135
|
-
if (extendOfExtend) flattenRecursive(extendOfExtend, prop, stack);
|
|
136
|
-
delete objectized[prop];
|
|
137
|
-
return stack;
|
|
138
|
-
};
|
|
139
|
-
export {
|
|
140
|
-
METHODS,
|
|
141
|
-
METHODS_EXL,
|
|
142
|
-
clone,
|
|
143
|
-
deepMerge,
|
|
144
|
-
flattenRecursive,
|
|
145
|
-
mergeAndCloneIfArray,
|
|
146
|
-
mergeArray,
|
|
147
|
-
mergeIfExisted,
|
|
148
|
-
overwrite,
|
|
149
|
-
overwriteDeep,
|
|
150
|
-
overwriteShallow
|
|
151
|
-
};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { isFunction, lowercaseFirstLetter } from "@domql/utils";
|
|
2
|
-
const propagateEventsFromProps = (element) => {
|
|
3
|
-
const { props, on } = element;
|
|
4
|
-
const eventKeysFromProps = Object.keys(props).filter((key) => key.startsWith("on"));
|
|
5
|
-
eventKeysFromProps.forEach((v) => {
|
|
6
|
-
const eventName = lowercaseFirstLetter(v.split("on")[1]);
|
|
7
|
-
const origEvent = on[eventName];
|
|
8
|
-
const funcFromProps = props[v];
|
|
9
|
-
if (isFunction(origEvent)) {
|
|
10
|
-
on[eventName] = (...args) => {
|
|
11
|
-
const originalEventRetunrs = origEvent(...args);
|
|
12
|
-
if (originalEventRetunrs !== false) funcFromProps(...args);
|
|
13
|
-
};
|
|
14
|
-
} else on[eventName] = funcFromProps;
|
|
15
|
-
});
|
|
16
|
-
};
|
|
17
|
-
export {
|
|
18
|
-
propagateEventsFromProps
|
|
19
|
-
};
|
package/extend.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import { isFunction, exec } from '@domql/utils'
|
|
4
|
-
import {
|
|
5
|
-
getExtendStack,
|
|
6
|
-
jointStacks,
|
|
7
|
-
cloneAndMergeArrayExtend,
|
|
8
|
-
deepMergeExtend,
|
|
9
|
-
fallbackStringExtend
|
|
10
|
-
} from './utils/index.js'
|
|
11
|
-
|
|
12
|
-
const ENV = process.env.NODE_ENV
|
|
13
|
-
|
|
14
|
-
let mainExtend
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Checks whether element has `extend` or is a part
|
|
18
|
-
* of parent's `childExtend` extend
|
|
19
|
-
*/
|
|
20
|
-
export const applyExtend = (element, parent, options = {}) => {
|
|
21
|
-
if (isFunction(element)) element = exec(element, parent)
|
|
22
|
-
|
|
23
|
-
const { props, __ref } = element
|
|
24
|
-
let extend = props?.extends || element.extends || element.extend
|
|
25
|
-
const variant = props?.variant
|
|
26
|
-
const context = element.context || parent.context
|
|
27
|
-
|
|
28
|
-
extend = fallbackStringExtend(extend, context, options, variant)
|
|
29
|
-
|
|
30
|
-
const extendStack = getExtendStack(extend, context)
|
|
31
|
-
|
|
32
|
-
if (ENV !== 'test' || ENV !== 'development') delete element.extend
|
|
33
|
-
|
|
34
|
-
let childExtendStack = []
|
|
35
|
-
if (parent) {
|
|
36
|
-
element.parent = parent
|
|
37
|
-
// Assign parent attr to the element
|
|
38
|
-
if (!options.ignoreChildExtend && !(props && props.ignoreChildExtend)) {
|
|
39
|
-
childExtendStack = getExtendStack(parent.childExtend, context)
|
|
40
|
-
|
|
41
|
-
// if (!options.ignoreChildExtend && !(props && exec(props, element).ignoreChildExtend)) {
|
|
42
|
-
// const ignoreChildExtendRecursive = props && exec(props, element).ignoreChildExtendRecursive
|
|
43
|
-
|
|
44
|
-
const ignoreChildExtendRecursive = props && props.ignoreChildExtendRecursive
|
|
45
|
-
if (parent.childExtendRecursive && !ignoreChildExtendRecursive) {
|
|
46
|
-
const canExtendRecursive = element.key !== '__text'
|
|
47
|
-
if (canExtendRecursive) {
|
|
48
|
-
const childExtendRecursiveStack = getExtendStack(parent.childExtendRecursive, context)
|
|
49
|
-
// add error if childExtendRecursive contains element which goes to infinite loop
|
|
50
|
-
childExtendStack = childExtendStack.concat(childExtendRecursiveStack)
|
|
51
|
-
element.childExtendRecursive = parent.childExtendRecursive
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
const extendLength = extendStack.length
|
|
58
|
-
const childExtendLength = childExtendStack.length
|
|
59
|
-
|
|
60
|
-
let stack = []
|
|
61
|
-
if (extendLength && childExtendLength) {
|
|
62
|
-
stack = jointStacks(extendStack, childExtendStack)
|
|
63
|
-
} else if (extendLength) {
|
|
64
|
-
stack = extendStack
|
|
65
|
-
} else if (childExtendLength) {
|
|
66
|
-
stack = childExtendStack
|
|
67
|
-
} else if (!context.defaultExtends) return element
|
|
68
|
-
|
|
69
|
-
if (context.defaultExtends) {
|
|
70
|
-
if (!mainExtend) {
|
|
71
|
-
const defaultOptionsExtend = getExtendStack(context.defaultExtends, context)
|
|
72
|
-
mainExtend = cloneAndMergeArrayExtend(defaultOptionsExtend)
|
|
73
|
-
delete mainExtend.extend
|
|
74
|
-
}
|
|
75
|
-
stack = [].concat(stack, mainExtend)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
if (__ref) __ref.__extend = stack
|
|
79
|
-
let mergedExtend = cloneAndMergeArrayExtend(stack)
|
|
80
|
-
|
|
81
|
-
const COMPONENTS = (context && context.components) || options.components
|
|
82
|
-
const component = exec(element.component || mergedExtend.component, element)
|
|
83
|
-
if (component && COMPONENTS && COMPONENTS[component]) {
|
|
84
|
-
const componentExtend = cloneAndMergeArrayExtend(getExtendStack(COMPONENTS[component]))
|
|
85
|
-
mergedExtend = deepMergeExtend(componentExtend, mergedExtend)
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
const merged = deepMergeExtend(element, mergedExtend)
|
|
89
|
-
return merged
|
|
90
|
-
}
|
package/methods/index.js
DELETED
|
@@ -1,317 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import { triggerEventOn } from '@domql/event'
|
|
4
|
-
import { isDefined, isObject, isFunction, isObjectLike, isProduction, removeValueFromArray, deepClone } from '@domql/utils'
|
|
5
|
-
import { TREE } from '../tree.js'
|
|
6
|
-
import { parseFilters, REGISTRY } from '../mixins/index.js'
|
|
7
|
-
const ENV = process.env.NODE_ENV
|
|
8
|
-
|
|
9
|
-
// TODO: update these files
|
|
10
|
-
export function spotByPath (path) {
|
|
11
|
-
const element = this
|
|
12
|
-
const arr = [].concat(path)
|
|
13
|
-
let active = TREE[arr[0]]
|
|
14
|
-
|
|
15
|
-
if (!arr || !arr.length) return console.log(arr, 'on', element.key, 'is undefined')
|
|
16
|
-
|
|
17
|
-
while (active.key === arr[0]) {
|
|
18
|
-
arr.shift()
|
|
19
|
-
if (!arr.length) break
|
|
20
|
-
active = active[arr[0]]
|
|
21
|
-
if (!active) return
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return active
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// TODO: update these files
|
|
28
|
-
export function lookup (param) {
|
|
29
|
-
const el = this
|
|
30
|
-
let { parent } = el
|
|
31
|
-
|
|
32
|
-
if (isFunction(param)) {
|
|
33
|
-
if (parent.state && param(parent, parent.state, parent.context)) return parent
|
|
34
|
-
else if (parent.parent) return parent.lookup(param)
|
|
35
|
-
else return
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (el[param]) return el[param]
|
|
39
|
-
|
|
40
|
-
while (parent.param !== param) {
|
|
41
|
-
if (parent[param]) return parent[param]
|
|
42
|
-
parent = parent.parent
|
|
43
|
-
if (!parent) return
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return parent
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export function lookdown (param) {
|
|
50
|
-
const el = this
|
|
51
|
-
const { __ref: ref } = el
|
|
52
|
-
const children = ref.__children
|
|
53
|
-
|
|
54
|
-
for (let i = 0; i < children.length; i++) {
|
|
55
|
-
const v = children[i]
|
|
56
|
-
const childElem = el[v]
|
|
57
|
-
|
|
58
|
-
if (v === param) return childElem
|
|
59
|
-
else if (isFunction(param)) {
|
|
60
|
-
const exec = param(childElem, childElem.state, childElem.context)
|
|
61
|
-
if (childElem.state && exec) {
|
|
62
|
-
return childElem
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
const lookdown = childElem?.lookdown?.(param)
|
|
66
|
-
if (lookdown) return lookdown
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export function lookdownAll (param, results = []) {
|
|
71
|
-
const el = this
|
|
72
|
-
const { __ref: ref } = el
|
|
73
|
-
const children = ref.__children
|
|
74
|
-
|
|
75
|
-
for (let i = 0; i < children.length; i++) {
|
|
76
|
-
const v = children[i]
|
|
77
|
-
const childElem = el[v]
|
|
78
|
-
|
|
79
|
-
if (v === param) results.push(childElem)
|
|
80
|
-
else if (isFunction(param)) {
|
|
81
|
-
const exec = param(childElem, childElem.state, childElem.context)
|
|
82
|
-
if (childElem.state && exec) results.push(childElem)
|
|
83
|
-
}
|
|
84
|
-
childElem?.lookdownAll?.(param, results)
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
return results.length ? results : undefined
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export function setNodeStyles (params = {}) {
|
|
91
|
-
const el = this
|
|
92
|
-
if (!el.node?.style) return
|
|
93
|
-
|
|
94
|
-
for (const param in params) {
|
|
95
|
-
const value = params[param]
|
|
96
|
-
const childElem = el[param]
|
|
97
|
-
if (isObject(value) && childElem) setNodeStyles.call(childElem, value)
|
|
98
|
-
else el.node.style[param] = value
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
return el
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
export function remove (opts) {
|
|
105
|
-
const element = this
|
|
106
|
-
const beforeRemoveReturns = triggerEventOn('beforeRemove', element, opts)
|
|
107
|
-
if (beforeRemoveReturns === false) return element
|
|
108
|
-
if (isFunction(element.node.remove)) element.node.remove()
|
|
109
|
-
else if (!isProduction()) {
|
|
110
|
-
console.warn('This item cant be removed')
|
|
111
|
-
element.log()
|
|
112
|
-
}
|
|
113
|
-
delete element.parent[element.key]
|
|
114
|
-
if (element.parent.__ref) element.parent.__ref.__children = removeValueFromArray(element.parent.__ref.__children, element.key)
|
|
115
|
-
triggerEventOn('remove', element, opts)
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
export function get (param) {
|
|
119
|
-
const element = this
|
|
120
|
-
return element[param]
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
export function setProps (param, options) {
|
|
124
|
-
const element = this
|
|
125
|
-
if (!param || !element.props) return
|
|
126
|
-
element.update({ props: param }, options)
|
|
127
|
-
return element
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
export function getRef () {
|
|
131
|
-
return this.__ref
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
export function getPath () {
|
|
135
|
-
return this.getRef().path
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
// export function set () {
|
|
139
|
-
// }
|
|
140
|
-
|
|
141
|
-
// export function update () {
|
|
142
|
-
// }
|
|
143
|
-
|
|
144
|
-
export const defineSetter = (element, key, get, set) =>
|
|
145
|
-
Object.defineProperty(element, key, { get, set })
|
|
146
|
-
|
|
147
|
-
export function keys () {
|
|
148
|
-
const element = this
|
|
149
|
-
const keys = []
|
|
150
|
-
for (const param in element) {
|
|
151
|
-
if ((REGISTRY[param] && !parseFilters.elementKeys.includes(param)) || !Object.hasOwnProperty.call(element, param)) { continue }
|
|
152
|
-
keys.push(param)
|
|
153
|
-
}
|
|
154
|
-
return keys
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
export function parse (excl = []) {
|
|
158
|
-
const element = this
|
|
159
|
-
const obj = {}
|
|
160
|
-
const keyList = keys.call(element)
|
|
161
|
-
keyList.forEach(v => {
|
|
162
|
-
if (excl.includes(v)) return
|
|
163
|
-
const val = element[v]
|
|
164
|
-
if (v === 'state') {
|
|
165
|
-
if (element.__ref && !element.__ref.__hasRootState) return
|
|
166
|
-
const parsedVal = isFunction(val && val.parse) ? val.parse() : val
|
|
167
|
-
obj[v] = isFunction(parsedVal) ? parsedVal : JSON.parse(JSON.stringify(parsedVal || {}))
|
|
168
|
-
} else if (v === 'scope') {
|
|
169
|
-
if (element.__ref && !element.__ref.__hasRootScope) return
|
|
170
|
-
obj[v] = JSON.parse(JSON.stringify(val || {}))
|
|
171
|
-
} else if (v === 'props') {
|
|
172
|
-
const { __element, update, ...props } = element[v]
|
|
173
|
-
obj[v] = props
|
|
174
|
-
} else if (isDefined(val) && Object.hasOwnProperty.call(element, v)) obj[v] = val
|
|
175
|
-
})
|
|
176
|
-
return obj
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
export function parseDeep (excl = []) {
|
|
180
|
-
const element = this
|
|
181
|
-
const obj = parse.call(element, excl)
|
|
182
|
-
for (const v in obj) {
|
|
183
|
-
if (excl.includes(v)) return
|
|
184
|
-
if (isObjectLike(obj[v])) { obj[v] = parseDeep.call(obj[v], excl) }
|
|
185
|
-
}
|
|
186
|
-
return obj
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
export function verbose (...args) {
|
|
190
|
-
if (ENV !== 'test' && ENV !== 'development') return
|
|
191
|
-
|
|
192
|
-
const element = this
|
|
193
|
-
const { __ref: ref } = element
|
|
194
|
-
console.groupCollapsed(element.key)
|
|
195
|
-
if (args.length) {
|
|
196
|
-
args.forEach(v => console.log(`%c${v}:\n`, 'font-weight: bold', element[v]))
|
|
197
|
-
} else {
|
|
198
|
-
console.log(ref.path)
|
|
199
|
-
const keys = element.keys()
|
|
200
|
-
keys.forEach(v => console.log(`%c${v}:`, 'font-weight: bold', element[v]))
|
|
201
|
-
}
|
|
202
|
-
console.log(element)
|
|
203
|
-
console.groupEnd(element.key)
|
|
204
|
-
return element
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
export function log (...params) {
|
|
208
|
-
if (ENV === 'test' || ENV === 'development') {
|
|
209
|
-
console.log(...params)
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
export function warn (...params) {
|
|
214
|
-
if (ENV === 'test' || ENV === 'development') {
|
|
215
|
-
console.warn(...params)
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
export function error (...params) {
|
|
220
|
-
if (ENV === 'test' || ENV === 'development') {
|
|
221
|
-
if (params[params.length - 1]?.debugger) debugger // eslint-disable-line
|
|
222
|
-
if (params[params.length - 1]?.verbose) verbose.call(this)
|
|
223
|
-
throw new Error(...params)
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
export function nextElement () {
|
|
228
|
-
const element = this
|
|
229
|
-
const { key, parent } = element
|
|
230
|
-
const { __children } = parent.__ref
|
|
231
|
-
|
|
232
|
-
const currentIndex = __children.indexOf(key)
|
|
233
|
-
const nextChild = __children[currentIndex + 1]
|
|
234
|
-
|
|
235
|
-
return parent[nextChild]
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
export function previousElement (el) {
|
|
239
|
-
const element = el || this
|
|
240
|
-
const { key, parent } = element
|
|
241
|
-
const { __children } = parent.__ref
|
|
242
|
-
|
|
243
|
-
if (!__children) return
|
|
244
|
-
|
|
245
|
-
const currentIndex = __children.indexOf(key)
|
|
246
|
-
return parent[__children[currentIndex - 1]]
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
export function variables (obj = {}) {
|
|
250
|
-
const element = this
|
|
251
|
-
if (!element.data) element.data = {}
|
|
252
|
-
if (!element.data.varCaches) element.data.varCaches = {}
|
|
253
|
-
const varCaches = element.data.varCaches
|
|
254
|
-
const changes = {}
|
|
255
|
-
let changed
|
|
256
|
-
for (const key in obj) {
|
|
257
|
-
if (obj[key] !== varCaches[key]) {
|
|
258
|
-
changed = true
|
|
259
|
-
changes[key] = obj[key]
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
return {
|
|
263
|
-
changed: (cb) => {
|
|
264
|
-
if (!changed) return
|
|
265
|
-
const returns = cb(changes, deepClone(varCaches))
|
|
266
|
-
for (const key in changes) {
|
|
267
|
-
varCaches[key] = changes[key]
|
|
268
|
-
}
|
|
269
|
-
return returns
|
|
270
|
-
},
|
|
271
|
-
timeout: (cb, timeout) => {
|
|
272
|
-
if (!changed) return
|
|
273
|
-
const t = setTimeout(() => {
|
|
274
|
-
cb(changes)
|
|
275
|
-
clearTimeout(t)
|
|
276
|
-
}, timeout)
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
export function call (fnKey, ...args) {
|
|
282
|
-
const context = this.context
|
|
283
|
-
return (context.utils[fnKey] || context.functions[fnKey] || context.methods[fnKey] || context.snippets[fnKey])?.call(this, ...args)
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
export const METHODS = [
|
|
287
|
-
'set',
|
|
288
|
-
'reset',
|
|
289
|
-
'update',
|
|
290
|
-
'remove',
|
|
291
|
-
'updateContent',
|
|
292
|
-
'removeContent',
|
|
293
|
-
'lookup',
|
|
294
|
-
'lookdown',
|
|
295
|
-
'lookdownAll',
|
|
296
|
-
'getRef',
|
|
297
|
-
'getPath',
|
|
298
|
-
'setNodeStyles',
|
|
299
|
-
'spotByPath',
|
|
300
|
-
'keys',
|
|
301
|
-
'parse',
|
|
302
|
-
'setProps',
|
|
303
|
-
'parseDeep',
|
|
304
|
-
'variables',
|
|
305
|
-
'if',
|
|
306
|
-
'log',
|
|
307
|
-
'verbose',
|
|
308
|
-
'warn',
|
|
309
|
-
'error',
|
|
310
|
-
'call',
|
|
311
|
-
'nextElement',
|
|
312
|
-
'previousElement'
|
|
313
|
-
]
|
|
314
|
-
|
|
315
|
-
export function isMethod (param, element) {
|
|
316
|
-
return METHODS.includes(param) || element?.context?.methods?.[param]
|
|
317
|
-
}
|
package/mixins/content.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import { isFunction, setContentKey } from '@domql/utils'
|
|
4
|
-
import { set } from '../set.js'
|
|
5
|
-
|
|
6
|
-
export const updateContent = function (params, options) {
|
|
7
|
-
const element = this
|
|
8
|
-
const ref = element.__ref
|
|
9
|
-
|
|
10
|
-
const contentKey = ref.contentElementKey
|
|
11
|
-
|
|
12
|
-
if (!element[contentKey]) return
|
|
13
|
-
if (element[contentKey].update) element[contentKey].update(params, options)
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export const removeContent = function (el, opts = {}) {
|
|
17
|
-
const element = el || this
|
|
18
|
-
const { __ref: ref } = element
|
|
19
|
-
const contentElementKey = setContentKey(element, opts)
|
|
20
|
-
if (opts.contentElementKey !== 'content') opts.contentElementKey = 'content'
|
|
21
|
-
if (element[contentElementKey]) {
|
|
22
|
-
if (element[contentElementKey].node && element.node) {
|
|
23
|
-
if (element[contentElementKey].tag === 'fragment') element.node.innerHTML = ''
|
|
24
|
-
else {
|
|
25
|
-
const contentNode = element[contentElementKey].node
|
|
26
|
-
if (contentNode.parentNode === element.node) element.node.removeChild(element[contentElementKey].node)
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const { __cached } = ref
|
|
31
|
-
if (__cached && __cached[contentElementKey]) {
|
|
32
|
-
if (__cached[contentElementKey].tag === 'fragment') __cached[contentElementKey].parent.node.innerHTML = ''
|
|
33
|
-
else if (__cached[contentElementKey] && isFunction(__cached[contentElementKey].remove)) __cached[contentElementKey].remove()
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
delete element[contentElementKey]
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Appends anything as content
|
|
42
|
-
* an original one as a child
|
|
43
|
-
*/
|
|
44
|
-
export function setContent (param, element, node, opts) {
|
|
45
|
-
const contentElementKey = setContentKey(element, opts)
|
|
46
|
-
if (param && element) {
|
|
47
|
-
if (element[contentElementKey].update) {
|
|
48
|
-
element[contentElementKey].update({}, opts)
|
|
49
|
-
} else {
|
|
50
|
-
set.call(element, param, opts)
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export default setContent
|