@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.
Files changed (140) hide show
  1. package/README.md +1 -1
  2. package/__tests__/checkIfOnUpdate.test.js +103 -0
  3. package/__tests__/children.test.js +213 -0
  4. package/__tests__/define.test.js +75 -0
  5. package/__tests__/inheritStateUpdates.test.js +79 -0
  6. package/__tests__/renderElement.test.js +131 -0
  7. package/__tests__/resetElement.test.js +44 -0
  8. package/__tests__/set.test.js +316 -0
  9. package/__tests__/throughExecProps.test.js +86 -0
  10. package/__tests__/throughInitialDefine.test.js +104 -0
  11. package/__tests__/throughInitialExec.test.js +92 -0
  12. package/__tests__/throughUpdatedDefine.test.js +92 -0
  13. package/__tests__/throughUpdatedExec.test.js +110 -0
  14. package/__tests__/tree.test.js +15 -0
  15. package/__tests__/update.test.js +253 -0
  16. package/children.js +105 -0
  17. package/create.js +125 -255
  18. package/dist/cjs/__tests__/checkIfOnUpdate.test.js +73 -0
  19. package/dist/cjs/__tests__/children.test.js +177 -0
  20. package/dist/cjs/__tests__/define.test.js +75 -0
  21. package/dist/cjs/__tests__/inheritStateUpdates.test.js +62 -0
  22. package/dist/cjs/__tests__/renderElement.test.js +138 -0
  23. package/dist/cjs/__tests__/resetElement.test.js +35 -0
  24. package/dist/cjs/__tests__/set.test.js +256 -0
  25. package/dist/cjs/__tests__/throughExecProps.test.js +62 -0
  26. package/dist/cjs/__tests__/throughInitialDefine.test.js +79 -0
  27. package/dist/cjs/__tests__/throughInitialExec.test.js +73 -0
  28. package/dist/cjs/__tests__/throughUpdatedDefine.test.js +69 -0
  29. package/dist/cjs/__tests__/throughUpdatedExec.test.js +84 -0
  30. package/dist/cjs/__tests__/tree.test.js +11 -0
  31. package/dist/cjs/__tests__/update.test.js +219 -0
  32. package/dist/cjs/children.js +87 -0
  33. package/dist/cjs/create.js +78 -177
  34. package/dist/cjs/iterate.js +29 -13
  35. package/dist/cjs/methods/set.js +27 -25
  36. package/dist/cjs/methods/v2.js +1 -5
  37. package/dist/cjs/mixins/attr.js +7 -6
  38. package/dist/cjs/mixins/index.js +0 -4
  39. package/dist/cjs/mixins/registry.js +7 -67
  40. package/dist/cjs/mixins/scope.js +1 -1
  41. package/dist/cjs/mixins/state.js +3 -4
  42. package/dist/cjs/mixins/text.js +3 -3
  43. package/dist/cjs/node.js +32 -22
  44. package/dist/cjs/set.js +112 -40
  45. package/dist/cjs/update.js +119 -64
  46. package/dist/cjs/utils/applyParam.js +2 -2
  47. package/dist/cjs/utils/index.js +8 -4
  48. package/dist/cjs/utils/onlyResolveExtends.js +4 -7
  49. package/dist/esm/__tests__/checkIfOnUpdate.test.js +73 -0
  50. package/dist/esm/__tests__/children.test.js +177 -0
  51. package/dist/esm/__tests__/define.test.js +53 -0
  52. package/dist/esm/__tests__/inheritStateUpdates.test.js +62 -0
  53. package/dist/esm/__tests__/renderElement.test.js +116 -0
  54. package/dist/esm/__tests__/resetElement.test.js +35 -0
  55. package/dist/esm/__tests__/set.test.js +256 -0
  56. package/dist/esm/__tests__/throughExecProps.test.js +62 -0
  57. package/dist/esm/__tests__/throughInitialDefine.test.js +79 -0
  58. package/dist/esm/__tests__/throughInitialExec.test.js +73 -0
  59. package/dist/esm/__tests__/throughUpdatedDefine.test.js +69 -0
  60. package/dist/esm/__tests__/throughUpdatedExec.test.js +84 -0
  61. package/dist/esm/__tests__/tree.test.js +11 -0
  62. package/dist/esm/__tests__/update.test.js +219 -0
  63. package/dist/esm/children.js +81 -0
  64. package/dist/esm/create.js +83 -188
  65. package/dist/esm/iterate.js +33 -16
  66. package/dist/esm/methods/set.js +6 -4
  67. package/dist/esm/methods/v2.js +1 -5
  68. package/dist/esm/mixins/attr.js +8 -7
  69. package/dist/esm/mixins/data.js +1 -1
  70. package/dist/esm/mixins/index.js +0 -4
  71. package/dist/esm/mixins/registry.js +7 -67
  72. package/dist/esm/mixins/scope.js +1 -1
  73. package/dist/esm/mixins/state.js +4 -5
  74. package/dist/esm/mixins/text.js +4 -7
  75. package/dist/esm/node.js +23 -23
  76. package/dist/esm/set.js +112 -40
  77. package/dist/esm/update.js +122 -68
  78. package/dist/esm/utils/applyParam.js +2 -2
  79. package/dist/esm/utils/index.js +4 -3
  80. package/dist/esm/utils/onlyResolveExtends.js +12 -8
  81. package/iterate.js +44 -26
  82. package/methods/set.js +5 -4
  83. package/methods/v2.js +5 -4
  84. package/mixins/attr.js +13 -7
  85. package/mixins/classList.js +7 -2
  86. package/mixins/data.js +1 -1
  87. package/mixins/index.js +1 -6
  88. package/mixins/registry.js +6 -53
  89. package/mixins/scope.js +1 -1
  90. package/mixins/state.js +4 -5
  91. package/mixins/text.js +4 -7
  92. package/node.js +31 -28
  93. package/package.json +7 -6
  94. package/set.js +129 -41
  95. package/update.js +169 -89
  96. package/utils/applyParam.js +7 -4
  97. package/utils/index.js +1 -3
  98. package/utils/onlyResolveExtends.js +27 -16
  99. package/cache/index.js +0 -3
  100. package/cache/options.js +0 -4
  101. package/dist/cjs/cache/index.js +0 -24
  102. package/dist/cjs/cache/options.js +0 -26
  103. package/dist/cjs/extend.js +0 -81
  104. package/dist/cjs/methods/index.js +0 -320
  105. package/dist/cjs/mixins/content.js +0 -67
  106. package/dist/cjs/props/create.js +0 -92
  107. package/dist/cjs/props/ignore.js +0 -24
  108. package/dist/cjs/props/index.js +0 -21
  109. package/dist/cjs/props/inherit.js +0 -51
  110. package/dist/cjs/props/update.js +0 -34
  111. package/dist/cjs/utils/component.js +0 -74
  112. package/dist/cjs/utils/extendUtils.js +0 -133
  113. package/dist/cjs/utils/object.js +0 -171
  114. package/dist/cjs/utils/propEvents.js +0 -39
  115. package/dist/esm/cache/index.js +0 -4
  116. package/dist/esm/cache/options.js +0 -6
  117. package/dist/esm/extend.js +0 -67
  118. package/dist/esm/methods/index.js +0 -300
  119. package/dist/esm/mixins/content.js +0 -47
  120. package/dist/esm/props/create.js +0 -72
  121. package/dist/esm/props/ignore.js +0 -4
  122. package/dist/esm/props/index.js +0 -4
  123. package/dist/esm/props/inherit.js +0 -31
  124. package/dist/esm/props/update.js +0 -14
  125. package/dist/esm/utils/component.js +0 -62
  126. package/dist/esm/utils/extendUtils.js +0 -113
  127. package/dist/esm/utils/object.js +0 -151
  128. package/dist/esm/utils/propEvents.js +0 -19
  129. package/extend.js +0 -90
  130. package/methods/index.js +0 -317
  131. package/mixins/content.js +0 -55
  132. package/props/create.js +0 -87
  133. package/props/ignore.js +0 -3
  134. package/props/index.js +0 -6
  135. package/props/inherit.js +0 -35
  136. package/props/update.js +0 -17
  137. package/utils/component.js +0 -68
  138. package/utils/extendUtils.js +0 -134
  139. package/utils/object.js +0 -172
  140. package/utils/propEvents.js +0 -19
@@ -1,300 +0,0 @@
1
- import { triggerEventOn } from "@domql/event";
2
- import { isDefined, isObject, isFunction, isObjectLike, isProduction, removeValueFromArray, deepClone } from "@domql/utils";
3
- import { TREE } from "../tree.js";
4
- import { parseFilters, REGISTRY } from "../mixins/index.js";
5
- const ENV = "development";
6
- function spotByPath(path) {
7
- const element = this;
8
- const arr = [].concat(path);
9
- let active = TREE[arr[0]];
10
- if (!arr || !arr.length) return console.log(arr, "on", element.key, "is undefined");
11
- while (active.key === arr[0]) {
12
- arr.shift();
13
- if (!arr.length) break;
14
- active = active[arr[0]];
15
- if (!active) return;
16
- }
17
- return active;
18
- }
19
- function lookup(param) {
20
- const el = this;
21
- let { parent } = el;
22
- if (isFunction(param)) {
23
- if (parent.state && param(parent, parent.state, parent.context)) return parent;
24
- else if (parent.parent) return parent.lookup(param);
25
- else return;
26
- }
27
- if (el[param]) return el[param];
28
- while (parent.param !== param) {
29
- if (parent[param]) return parent[param];
30
- parent = parent.parent;
31
- if (!parent) return;
32
- }
33
- return parent;
34
- }
35
- function lookdown(param) {
36
- var _a;
37
- const el = this;
38
- const { __ref: ref } = el;
39
- const children = ref.__children;
40
- for (let i = 0; i < children.length; i++) {
41
- const v = children[i];
42
- const childElem = el[v];
43
- if (v === param) return childElem;
44
- else if (isFunction(param)) {
45
- const exec = param(childElem, childElem.state, childElem.context);
46
- if (childElem.state && exec) {
47
- return childElem;
48
- }
49
- }
50
- const lookdown2 = (_a = childElem == null ? void 0 : childElem.lookdown) == null ? void 0 : _a.call(childElem, param);
51
- if (lookdown2) return lookdown2;
52
- }
53
- }
54
- function lookdownAll(param, results = []) {
55
- var _a;
56
- const el = this;
57
- const { __ref: ref } = el;
58
- const children = ref.__children;
59
- for (let i = 0; i < children.length; i++) {
60
- const v = children[i];
61
- const childElem = el[v];
62
- if (v === param) results.push(childElem);
63
- else if (isFunction(param)) {
64
- const exec = param(childElem, childElem.state, childElem.context);
65
- if (childElem.state && exec) results.push(childElem);
66
- }
67
- (_a = childElem == null ? void 0 : childElem.lookdownAll) == null ? void 0 : _a.call(childElem, param, results);
68
- }
69
- return results.length ? results : void 0;
70
- }
71
- function setNodeStyles(params = {}) {
72
- var _a;
73
- const el = this;
74
- if (!((_a = el.node) == null ? void 0 : _a.style)) return;
75
- for (const param in params) {
76
- const value = params[param];
77
- const childElem = el[param];
78
- if (isObject(value) && childElem) setNodeStyles.call(childElem, value);
79
- else el.node.style[param] = value;
80
- }
81
- return el;
82
- }
83
- function remove(opts) {
84
- const element = this;
85
- const beforeRemoveReturns = triggerEventOn("beforeRemove", element, opts);
86
- if (beforeRemoveReturns === false) return element;
87
- if (isFunction(element.node.remove)) element.node.remove();
88
- else if (!isProduction()) {
89
- console.warn("This item cant be removed");
90
- element.log();
91
- }
92
- delete element.parent[element.key];
93
- if (element.parent.__ref) element.parent.__ref.__children = removeValueFromArray(element.parent.__ref.__children, element.key);
94
- triggerEventOn("remove", element, opts);
95
- }
96
- function get(param) {
97
- const element = this;
98
- return element[param];
99
- }
100
- function setProps(param, options) {
101
- const element = this;
102
- if (!param || !element.props) return;
103
- element.update({ props: param }, options);
104
- return element;
105
- }
106
- function getRef() {
107
- return this.__ref;
108
- }
109
- function getPath() {
110
- return this.getRef().path;
111
- }
112
- const defineSetter = (element, key, get2, set) => Object.defineProperty(element, key, { get: get2, set });
113
- function keys() {
114
- const element = this;
115
- const keys2 = [];
116
- for (const param in element) {
117
- if (REGISTRY[param] && !parseFilters.elementKeys.includes(param) || !Object.hasOwnProperty.call(element, param)) {
118
- continue;
119
- }
120
- keys2.push(param);
121
- }
122
- return keys2;
123
- }
124
- function parse(excl = []) {
125
- const element = this;
126
- const obj = {};
127
- const keyList = keys.call(element);
128
- keyList.forEach((v) => {
129
- if (excl.includes(v)) return;
130
- const val = element[v];
131
- if (v === "state") {
132
- if (element.__ref && !element.__ref.__hasRootState) return;
133
- const parsedVal = isFunction(val && val.parse) ? val.parse() : val;
134
- obj[v] = isFunction(parsedVal) ? parsedVal : JSON.parse(JSON.stringify(parsedVal || {}));
135
- } else if (v === "scope") {
136
- if (element.__ref && !element.__ref.__hasRootScope) return;
137
- obj[v] = JSON.parse(JSON.stringify(val || {}));
138
- } else if (v === "props") {
139
- const { __element, update, ...props } = element[v];
140
- obj[v] = props;
141
- } else if (isDefined(val) && Object.hasOwnProperty.call(element, v)) obj[v] = val;
142
- });
143
- return obj;
144
- }
145
- function parseDeep(excl = []) {
146
- const element = this;
147
- const obj = parse.call(element, excl);
148
- for (const v in obj) {
149
- if (excl.includes(v)) return;
150
- if (isObjectLike(obj[v])) {
151
- obj[v] = parseDeep.call(obj[v], excl);
152
- }
153
- }
154
- return obj;
155
- }
156
- function verbose(...args) {
157
- if (ENV !== "test" && ENV !== "development") return;
158
- const element = this;
159
- const { __ref: ref } = element;
160
- console.groupCollapsed(element.key);
161
- if (args.length) {
162
- args.forEach((v) => console.log(`%c${v}:
163
- `, "font-weight: bold", element[v]));
164
- } else {
165
- console.log(ref.path);
166
- const keys2 = element.keys();
167
- keys2.forEach((v) => console.log(`%c${v}:`, "font-weight: bold", element[v]));
168
- }
169
- console.log(element);
170
- console.groupEnd(element.key);
171
- return element;
172
- }
173
- function log(...params) {
174
- if (ENV === "test" || ENV === "development") {
175
- console.log(...params);
176
- }
177
- }
178
- function warn(...params) {
179
- if (ENV === "test" || ENV === "development") {
180
- console.warn(...params);
181
- }
182
- }
183
- function error(...params) {
184
- var _a, _b;
185
- if (ENV === "test" || ENV === "development") {
186
- if ((_a = params[params.length - 1]) == null ? void 0 : _a.debugger) debugger;
187
- if ((_b = params[params.length - 1]) == null ? void 0 : _b.verbose) verbose.call(this);
188
- throw new Error(...params);
189
- }
190
- }
191
- function nextElement() {
192
- const element = this;
193
- const { key, parent } = element;
194
- const { __children } = parent.__ref;
195
- const currentIndex = __children.indexOf(key);
196
- const nextChild = __children[currentIndex + 1];
197
- return parent[nextChild];
198
- }
199
- function previousElement(el) {
200
- const element = el || this;
201
- const { key, parent } = element;
202
- const { __children } = parent.__ref;
203
- if (!__children) return;
204
- const currentIndex = __children.indexOf(key);
205
- return parent[__children[currentIndex - 1]];
206
- }
207
- function variables(obj = {}) {
208
- const element = this;
209
- if (!element.data) element.data = {};
210
- if (!element.data.varCaches) element.data.varCaches = {};
211
- const varCaches = element.data.varCaches;
212
- const changes = {};
213
- let changed;
214
- for (const key in obj) {
215
- if (obj[key] !== varCaches[key]) {
216
- changed = true;
217
- changes[key] = obj[key];
218
- }
219
- }
220
- return {
221
- changed: (cb) => {
222
- if (!changed) return;
223
- const returns = cb(changes, deepClone(varCaches));
224
- for (const key in changes) {
225
- varCaches[key] = changes[key];
226
- }
227
- return returns;
228
- },
229
- timeout: (cb, timeout) => {
230
- if (!changed) return;
231
- const t = setTimeout(() => {
232
- cb(changes);
233
- clearTimeout(t);
234
- }, timeout);
235
- }
236
- };
237
- }
238
- function call(fnKey, ...args) {
239
- var _a;
240
- const context = this.context;
241
- return (_a = context.utils[fnKey] || context.functions[fnKey] || context.methods[fnKey] || context.snippets[fnKey]) == null ? void 0 : _a.call(this, ...args);
242
- }
243
- const METHODS = [
244
- "set",
245
- "reset",
246
- "update",
247
- "remove",
248
- "updateContent",
249
- "removeContent",
250
- "lookup",
251
- "lookdown",
252
- "lookdownAll",
253
- "getRef",
254
- "getPath",
255
- "setNodeStyles",
256
- "spotByPath",
257
- "keys",
258
- "parse",
259
- "setProps",
260
- "parseDeep",
261
- "variables",
262
- "if",
263
- "log",
264
- "verbose",
265
- "warn",
266
- "error",
267
- "call",
268
- "nextElement",
269
- "previousElement"
270
- ];
271
- function isMethod(param, element) {
272
- var _a, _b;
273
- return METHODS.includes(param) || ((_b = (_a = element == null ? void 0 : element.context) == null ? void 0 : _a.methods) == null ? void 0 : _b[param]);
274
- }
275
- export {
276
- METHODS,
277
- call,
278
- defineSetter,
279
- error,
280
- get,
281
- getPath,
282
- getRef,
283
- isMethod,
284
- keys,
285
- log,
286
- lookdown,
287
- lookdownAll,
288
- lookup,
289
- nextElement,
290
- parse,
291
- parseDeep,
292
- previousElement,
293
- remove,
294
- setNodeStyles,
295
- setProps,
296
- spotByPath,
297
- variables,
298
- verbose,
299
- warn
300
- };
@@ -1,47 +0,0 @@
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") element.node.innerHTML = "";
18
- else {
19
- const contentNode = element[contentElementKey].node;
20
- if (contentNode.parentNode === element.node) element.node.removeChild(element[contentElementKey].node);
21
- }
22
- }
23
- const { __cached } = ref;
24
- if (__cached && __cached[contentElementKey]) {
25
- if (__cached[contentElementKey].tag === "fragment") __cached[contentElementKey].parent.node.innerHTML = "";
26
- else if (__cached[contentElementKey] && isFunction(__cached[contentElementKey].remove)) __cached[contentElementKey].remove();
27
- }
28
- delete element[contentElementKey];
29
- }
30
- };
31
- function setContent(param, element, node, opts) {
32
- const contentElementKey = setContentKey(element, opts);
33
- if (param && element) {
34
- if (element[contentElementKey].update) {
35
- element[contentElementKey].update({}, opts);
36
- } else {
37
- set.call(element, param, opts);
38
- }
39
- }
40
- }
41
- var content_default = setContent;
42
- export {
43
- content_default as default,
44
- removeContent,
45
- setContent,
46
- updateContent
47
- };
@@ -1,72 +0,0 @@
1
- import { exec, isArray, isObject, deepClone, deepMerge } from "@domql/utils";
2
- import { IGNORE_PROPS_PARAMS } from "./ignore.js";
3
- import { inheritParentProps } from "./inherit.js";
4
- const createPropsStack = (element, parent) => {
5
- const { props, __ref: ref } = element;
6
- const propsStack = ref.__props = inheritParentProps(element, parent);
7
- if (isObject(props)) propsStack.push(props);
8
- else if (props === "inherit" && parent.props) propsStack.push(parent.props);
9
- else if (props) propsStack.push(props);
10
- if (isArray(ref.__extend)) {
11
- ref.__extend.forEach((extend) => {
12
- if (extend.props && extend.props !== props) propsStack.push(extend.props);
13
- });
14
- }
15
- ref.__props = propsStack;
16
- return propsStack;
17
- };
18
- const syncProps = (props, element, opts) => {
19
- element.props = {};
20
- const mergedProps = {};
21
- props.forEach((v) => {
22
- if (IGNORE_PROPS_PARAMS.includes(v)) return;
23
- let execProps;
24
- try {
25
- execProps = exec(v, element);
26
- } catch (e) {
27
- element.error(e, opts);
28
- }
29
- element.props = deepMerge(
30
- mergedProps,
31
- deepClone(execProps, { ignore: IGNORE_PROPS_PARAMS }),
32
- IGNORE_PROPS_PARAMS
33
- );
34
- });
35
- element.props = mergedProps;
36
- const methods = { update: update.bind(element.props), __element: element };
37
- Object.setPrototypeOf(element.props, methods);
38
- return element.props;
39
- };
40
- const createProps = function(element, parent, options) {
41
- const { __ref: ref } = element;
42
- const applyProps = () => {
43
- const propsStack = options.cachedProps || createPropsStack(element, parent);
44
- if (propsStack.length) {
45
- ref.__props = propsStack;
46
- syncProps(propsStack, element);
47
- } else {
48
- ref.__props = options.cachedProps || [];
49
- element.props = {};
50
- }
51
- };
52
- if (ref.__if) applyProps();
53
- else {
54
- try {
55
- applyProps();
56
- } catch {
57
- element.props = {};
58
- ref.__props = options.cachedProps || [];
59
- }
60
- }
61
- const methods = { update: update.bind(element.props), __element: element };
62
- Object.setPrototypeOf(element.props, methods);
63
- return element;
64
- };
65
- function update(props, options) {
66
- const element = this.__element;
67
- element.update({ props }, options);
68
- }
69
- export {
70
- createProps,
71
- syncProps
72
- };
@@ -1,4 +0,0 @@
1
- const IGNORE_PROPS_PARAMS = ["update", "__element"];
2
- export {
3
- IGNORE_PROPS_PARAMS
4
- };
@@ -1,4 +0,0 @@
1
- export * from "./ignore.js";
2
- export * from "./create.js";
3
- export * from "./inherit.js";
4
- export * from "./update.js";
@@ -1,31 +0,0 @@
1
- import { exec, is, isString } from "@domql/utils";
2
- const objectizeStringProperty = (propValue) => {
3
- if (is(propValue)("string", "number")) {
4
- return { inheritedString: propValue };
5
- }
6
- return propValue;
7
- };
8
- const inheritParentProps = (element, parent) => {
9
- var _a;
10
- let propsStack = [];
11
- const parentProps = exec(parent, parent.state).props;
12
- const matchParent = parent.props && parentProps[element.key];
13
- const matchParentIsString = isString(matchParent);
14
- const matchParentChildProps = parentProps && parentProps.childProps;
15
- if (matchParent) {
16
- if (matchParentIsString) {
17
- const inheritedStringExists = propsStack.filter((v) => v.inheritedString)[0];
18
- if (inheritedStringExists) inheritedStringExists.inheritedString = matchParent;
19
- else {
20
- propsStack = [].concat(objectizeStringProperty(matchParent), propsStack);
21
- }
22
- } else {
23
- propsStack.push(objectizeStringProperty(matchParent));
24
- }
25
- }
26
- if (matchParentChildProps && !((_a = element == null ? void 0 : element.props) == null ? void 0 : _a.ignoreChildProps)) propsStack.push(matchParentChildProps);
27
- return propsStack;
28
- };
29
- export {
30
- inheritParentProps
31
- };
@@ -1,14 +0,0 @@
1
- import { syncProps } from "./create.js";
2
- import { inheritParentProps } from "./inherit.js";
3
- const updateProps = (newProps, element, parent) => {
4
- const { __ref } = element;
5
- let propsStack = __ref.__props;
6
- const parentProps = inheritParentProps(element, parent);
7
- if (parentProps.length) propsStack = __ref.__props = [].concat(parentProps, propsStack);
8
- if (newProps) propsStack = __ref.__props = [].concat(newProps, propsStack);
9
- if (propsStack) syncProps(propsStack, element);
10
- return element;
11
- };
12
- export {
13
- updateProps
14
- };
@@ -1,62 +0,0 @@
1
- import {
2
- isObject,
3
- isString,
4
- overwriteDeep,
5
- checkIfKeyIsComponent,
6
- addAdditionalExtend,
7
- hasVariantProp,
8
- isVariant
9
- } from "@domql/utils";
10
- import { applyExtend } from "../extend.js";
11
- import { REGISTRY } from "../mixins/index.js";
12
- const createValidDomqlObjectFromSugar = (el, parent, key, options) => {
13
- const newElem = {
14
- props: {},
15
- define: {}
16
- };
17
- const allowedKeys = ["data", "state", "attr", "if"];
18
- for (const k in el) {
19
- const value = el[k];
20
- const isComponent = checkIfKeyIsComponent(k);
21
- const isRegistry = REGISTRY[k];
22
- if (isComponent || isRegistry || allowedKeys.includes(k)) {
23
- newElem[k] = value;
24
- } else {
25
- newElem.props[k] = value;
26
- }
27
- }
28
- return newElem;
29
- };
30
- const overwriteVariant = (element, variant, variantProps) => {
31
- let variantElement = element[variant];
32
- if (!variantElement) return;
33
- const props = isObject(variantProps) ? variantProps : {};
34
- if (isString(variantElement)) {
35
- variantElement = {
36
- extend: [{ props }, variantElement]
37
- };
38
- } else if (variantElement.extend) {
39
- variantElement = addAdditionalExtend({ props }, variantElement);
40
- }
41
- const extendedVariant = applyExtend(variantElement, element.parent);
42
- const { parent, ...rest } = extendedVariant;
43
- return overwriteDeep(element, rest);
44
- };
45
- const applyVariant = (element) => {
46
- const { props } = element;
47
- if (!hasVariantProp(element)) return element;
48
- const { variant } = props;
49
- overwriteVariant(element, `.${variant}`);
50
- const elKeys = Object.keys(element).filter((key) => isVariant(key));
51
- elKeys.forEach((variant2) => {
52
- const slicedVariantElementKey = variant2.slice(1);
53
- const variantElementProps = props[slicedVariantElementKey];
54
- if (variantElementProps) overwriteVariant(element, variant2, variantElementProps);
55
- });
56
- return element;
57
- };
58
- export {
59
- applyVariant,
60
- createValidDomqlObjectFromSugar,
61
- overwriteVariant
62
- };
@@ -1,113 +0,0 @@
1
- import { isArray, isFunction, isObject, isString, deepClone } from "@domql/utils";
2
- const ENV = "development";
3
- const generateHash = () => Math.random().toString(36).substring(2);
4
- const extendStackRegistry = {};
5
- const extendCachedRegistry = {};
6
- const getHashedExtend = (extend) => {
7
- return extendStackRegistry[extend.__hash];
8
- };
9
- const setHashedExtend = (extend, stack) => {
10
- const hash = generateHash();
11
- if (!isString(extend)) {
12
- extend.__hash = hash;
13
- }
14
- extendStackRegistry[hash] = stack;
15
- return stack;
16
- };
17
- const getExtendStackRegistry = (extend, stack) => {
18
- if (extend.__hash) {
19
- return stack.concat(getHashedExtend(extend));
20
- }
21
- return setHashedExtend(extend, stack);
22
- };
23
- const extractArrayExtend = (extend, stack, context) => {
24
- extend.forEach((each) => flattenExtend(each, stack, context));
25
- return stack;
26
- };
27
- const deepExtend = (extend, stack, context) => {
28
- const extendOflattenExtend = extend.extend;
29
- if (extendOflattenExtend) {
30
- flattenExtend(extendOflattenExtend, stack, context);
31
- }
32
- return stack;
33
- };
34
- const flattenExtend = (extend, stack, context) => {
35
- if (!extend) return stack;
36
- if (isArray(extend)) return extractArrayExtend(extend, stack, context);
37
- if (isString(extend)) extend = fallbackStringExtend(extend, context);
38
- stack.push(extend);
39
- if (extend.extend) deepExtend(extend, stack, context);
40
- return stack;
41
- };
42
- const deepMergeExtend = (element, extend) => {
43
- for (const e in extend) {
44
- if (["parent", "node", "__element"].indexOf(e) > -1) continue;
45
- const elementProp = element[e];
46
- const extendProp = extend[e];
47
- if (elementProp === void 0) {
48
- element[e] = extendProp;
49
- } else if (isObject(elementProp) && isObject(extendProp)) {
50
- deepMergeExtend(elementProp, extendProp);
51
- } else if (isArray(elementProp) && isArray(extendProp)) {
52
- element[e] = elementProp.concat(extendProp);
53
- } else if (isArray(elementProp) && isObject(extendProp)) {
54
- const obj = deepMergeExtend({}, elementProp);
55
- element[e] = deepMergeExtend(obj, extendProp);
56
- } else if (elementProp === void 0 && isFunction(extendProp)) {
57
- element[e] = extendProp;
58
- }
59
- }
60
- return element;
61
- };
62
- const cloneAndMergeArrayExtend = (stack) => {
63
- return stack.reduce((a, c) => {
64
- return deepMergeExtend(a, deepClone(c));
65
- }, {});
66
- };
67
- const fallbackStringExtend = (extend, context, options = {}, variant) => {
68
- const COMPONENTS = context && context.components || options.components;
69
- const PAGES = context && context.pages || options.pages;
70
- if (isString(extend)) {
71
- const componentExists = COMPONENTS && (COMPONENTS[extend + "." + variant] || COMPONENTS[extend] || COMPONENTS["smbls." + extend]);
72
- const pageExists = PAGES && extend.startsWith("/") && PAGES[extend];
73
- if (componentExists) return componentExists;
74
- else if (pageExists) return pageExists;
75
- else {
76
- if (options.verbose && (ENV === "test" || ENV === "development")) {
77
- console.warn("Extend is string but component was not found:", extend);
78
- }
79
- return {};
80
- }
81
- }
82
- return extend;
83
- };
84
- const jointStacks = (extendStack, childExtendStack) => {
85
- return [].concat(extendStack.slice(0, 1)).concat(childExtendStack.slice(0, 1)).concat(extendStack.slice(1)).concat(childExtendStack.slice(1));
86
- };
87
- const getExtendStack = (extend, context) => {
88
- if (!extend) return [];
89
- if (extend.__hash) return getHashedExtend(extend) || [];
90
- const stack = flattenExtend(extend, [], context);
91
- return getExtendStackRegistry(extend, stack);
92
- };
93
- const getExtendMerged = (extend) => {
94
- const stack = getExtendStack(extend);
95
- return cloneAndMergeArrayExtend(stack);
96
- };
97
- export {
98
- cloneAndMergeArrayExtend,
99
- deepExtend,
100
- deepMergeExtend,
101
- extendCachedRegistry,
102
- extendStackRegistry,
103
- extractArrayExtend,
104
- fallbackStringExtend,
105
- flattenExtend,
106
- generateHash,
107
- getExtendMerged,
108
- getExtendStack,
109
- getExtendStackRegistry,
110
- getHashedExtend,
111
- jointStacks,
112
- setHashedExtend
113
- };