@domql/element 2.5.198 → 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 (150) 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 +74 -215
  34. package/dist/cjs/define.js +1 -2
  35. package/dist/cjs/index.js +3 -3
  36. package/dist/cjs/iterate.js +37 -30
  37. package/dist/cjs/methods/set.js +26 -25
  38. package/dist/cjs/methods/v2.js +7 -17
  39. package/dist/cjs/mixins/attr.js +7 -10
  40. package/dist/cjs/mixins/classList.js +8 -16
  41. package/dist/cjs/mixins/data.js +2 -4
  42. package/dist/cjs/mixins/html.js +2 -4
  43. package/dist/cjs/mixins/index.js +0 -4
  44. package/dist/cjs/mixins/registry.js +7 -67
  45. package/dist/cjs/mixins/scope.js +2 -3
  46. package/dist/cjs/mixins/state.js +4 -7
  47. package/dist/cjs/mixins/style.js +2 -4
  48. package/dist/cjs/mixins/text.js +5 -8
  49. package/dist/cjs/node.js +34 -30
  50. package/dist/cjs/set.js +112 -47
  51. package/dist/cjs/update.js +123 -92
  52. package/dist/cjs/utils/applyParam.js +3 -4
  53. package/dist/cjs/utils/index.js +8 -4
  54. package/dist/cjs/utils/onlyResolveExtends.js +14 -30
  55. package/dist/esm/__tests__/checkIfOnUpdate.test.js +73 -0
  56. package/dist/esm/__tests__/children.test.js +177 -0
  57. package/dist/esm/__tests__/define.test.js +53 -0
  58. package/dist/esm/__tests__/inheritStateUpdates.test.js +62 -0
  59. package/dist/esm/__tests__/renderElement.test.js +116 -0
  60. package/dist/esm/__tests__/resetElement.test.js +35 -0
  61. package/dist/esm/__tests__/set.test.js +256 -0
  62. package/dist/esm/__tests__/throughExecProps.test.js +62 -0
  63. package/dist/esm/__tests__/throughInitialDefine.test.js +79 -0
  64. package/dist/esm/__tests__/throughInitialExec.test.js +73 -0
  65. package/dist/esm/__tests__/throughUpdatedDefine.test.js +69 -0
  66. package/dist/esm/__tests__/throughUpdatedExec.test.js +84 -0
  67. package/dist/esm/__tests__/tree.test.js +11 -0
  68. package/dist/esm/__tests__/update.test.js +219 -0
  69. package/dist/esm/children.js +81 -0
  70. package/dist/esm/create.js +79 -226
  71. package/dist/esm/define.js +1 -2
  72. package/dist/esm/iterate.js +41 -33
  73. package/dist/esm/methods/set.js +5 -4
  74. package/dist/esm/methods/v2.js +7 -17
  75. package/dist/esm/mixins/attr.js +8 -11
  76. package/dist/esm/mixins/classList.js +8 -16
  77. package/dist/esm/mixins/data.js +3 -5
  78. package/dist/esm/mixins/html.js +2 -4
  79. package/dist/esm/mixins/index.js +0 -4
  80. package/dist/esm/mixins/registry.js +7 -67
  81. package/dist/esm/mixins/scope.js +2 -3
  82. package/dist/esm/mixins/state.js +5 -8
  83. package/dist/esm/mixins/style.js +2 -4
  84. package/dist/esm/mixins/text.js +6 -12
  85. package/dist/esm/node.js +25 -31
  86. package/dist/esm/set.js +112 -47
  87. package/dist/esm/update.js +127 -97
  88. package/dist/esm/utils/applyParam.js +3 -4
  89. package/dist/esm/utils/index.js +4 -3
  90. package/dist/esm/utils/onlyResolveExtends.js +22 -31
  91. package/iterate.js +44 -26
  92. package/methods/set.js +5 -4
  93. package/methods/v2.js +5 -4
  94. package/mixins/attr.js +13 -7
  95. package/mixins/classList.js +7 -2
  96. package/mixins/data.js +1 -1
  97. package/mixins/index.js +1 -6
  98. package/mixins/registry.js +6 -53
  99. package/mixins/scope.js +1 -1
  100. package/mixins/state.js +4 -5
  101. package/mixins/text.js +4 -7
  102. package/node.js +31 -28
  103. package/package.json +7 -6
  104. package/set.js +129 -41
  105. package/update.js +169 -89
  106. package/utils/applyParam.js +7 -4
  107. package/utils/index.js +1 -3
  108. package/utils/onlyResolveExtends.js +27 -16
  109. package/cache/index.js +0 -3
  110. package/cache/options.js +0 -4
  111. package/dist/cjs/cache/index.js +0 -24
  112. package/dist/cjs/cache/options.js +0 -26
  113. package/dist/cjs/extend.js +0 -85
  114. package/dist/cjs/methods/index.js +0 -353
  115. package/dist/cjs/mixins/content.js +0 -74
  116. package/dist/cjs/props/create.js +0 -98
  117. package/dist/cjs/props/ignore.js +0 -24
  118. package/dist/cjs/props/index.js +0 -21
  119. package/dist/cjs/props/inherit.js +0 -53
  120. package/dist/cjs/props/update.js +0 -37
  121. package/dist/cjs/utils/component.js +0 -77
  122. package/dist/cjs/utils/extendUtils.js +0 -142
  123. package/dist/cjs/utils/object.js +0 -179
  124. package/dist/cjs/utils/propEvents.js +0 -41
  125. package/dist/esm/cache/index.js +0 -4
  126. package/dist/esm/cache/options.js +0 -6
  127. package/dist/esm/extend.js +0 -71
  128. package/dist/esm/methods/index.js +0 -333
  129. package/dist/esm/mixins/content.js +0 -54
  130. package/dist/esm/props/create.js +0 -78
  131. package/dist/esm/props/ignore.js +0 -4
  132. package/dist/esm/props/index.js +0 -4
  133. package/dist/esm/props/inherit.js +0 -33
  134. package/dist/esm/props/update.js +0 -17
  135. package/dist/esm/utils/component.js +0 -65
  136. package/dist/esm/utils/extendUtils.js +0 -122
  137. package/dist/esm/utils/object.js +0 -159
  138. package/dist/esm/utils/propEvents.js +0 -21
  139. package/extend.js +0 -90
  140. package/methods/index.js +0 -317
  141. package/mixins/content.js +0 -55
  142. package/props/create.js +0 -87
  143. package/props/ignore.js +0 -3
  144. package/props/index.js +0 -6
  145. package/props/inherit.js +0 -35
  146. package/props/update.js +0 -17
  147. package/utils/component.js +0 -68
  148. package/utils/extendUtils.js +0 -134
  149. package/utils/object.js +0 -172
  150. package/utils/propEvents.js +0 -19
package/dist/esm/set.js CHANGED
@@ -1,79 +1,144 @@
1
- import { deepContains, setContentKey } from "@domql/utils";
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 resetElement = async (params, element, options) => {
8
- if (!options.preventRemove)
9
- removeContent(element, options);
4
+ const setContentKey = (element, opts = {}) => {
10
5
  const { __ref: ref } = element;
11
- await create(params, element, ref.contentElementKey || "content", {
12
- ignoreChildExtend: true,
13
- ...registry.defaultOptions,
14
- ...OPTIONS.create,
15
- ...options
16
- });
6
+ const contentElementKey = opts.contentElementKey;
7
+ if (!ref.contentElementKey || contentElementKey !== ref.contentElementKey) {
8
+ ref.contentElementKey = contentElementKey || "content";
9
+ }
10
+ return ref.contentElementKey;
17
11
  };
18
- const reset = (options) => {
12
+ const reset = async (options) => {
19
13
  const element = void 0;
20
- create(element, element.parent, void 0, {
21
- ignoreChildExtend: true,
22
- ...registry.defaultOptions,
14
+ await create(element, element.parent, void 0, {
15
+ ignoreChildExtends: true,
16
+ ...OPTIONS.defaultOptions,
23
17
  ...OPTIONS.create,
24
18
  ...options
25
19
  });
26
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
+ };
27
82
  const set = async function(params, options = {}, el) {
28
83
  var _a;
29
84
  const element = el || this;
30
85
  const { __ref: ref } = element;
31
- const content = setContentKey(element, options);
86
+ const contentElementKey = setContentKey(element, options);
87
+ const content = element[contentElementKey];
32
88
  const __contentRef = content && content.__ref;
33
89
  const lazyLoad = element.props && element.props.lazyLoad;
34
- const hasCollection = element.$collection || element.$stateCollection || element.$propsCollection;
35
- if (options.preventContentUpdate === true && !hasCollection)
36
- return;
37
- if (ref.__noCollectionDifference || __contentRef && __contentRef.__cached && deepContains(params, content)) {
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) {
38
95
  if (!options.preventBeforeUpdateListener && !options.preventListeners) {
39
- const beforeUpdateReturns = await triggerEventOnUpdate("beforeUpdate", params, element, options);
40
- if (beforeUpdateReturns === false)
41
- return element;
96
+ const beforeUpdateReturns = await triggerEventOnUpdate(
97
+ "beforeUpdate",
98
+ params,
99
+ element,
100
+ options
101
+ );
102
+ if (beforeUpdateReturns === false) return element;
42
103
  }
43
- if (content == null ? void 0 : content.update)
44
- content.update();
45
- if (!options.preventUpdateListener)
104
+ await content.update(params);
105
+ if (!options.preventUpdateListener && !options.preventListeners) {
46
106
  await triggerEventOn("update", element, options);
107
+ }
47
108
  return;
48
109
  }
49
- if (params) {
50
- let { childExtend, props } = params;
51
- if (!props)
52
- props = params.props = {};
53
- if (!childExtend && element.childExtend) {
54
- params.childExtend = element.childExtend;
55
- props.ignoreChildExtend = true;
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;
56
117
  }
57
118
  if (!(props == null ? void 0 : props.childProps) && ((_a = element.props) == null ? void 0 : _a.childProps)) {
58
119
  props.childProps = element.props.childProps;
59
120
  props.ignoreChildProps = true;
60
121
  }
61
- if (lazyLoad) {
62
- window.requestAnimationFrame(async () => {
63
- await resetElement(params, element, options);
64
- if (!options.preventUpdateListener) {
65
- triggerEventOn("lazyLoad", element, options);
66
- }
67
- });
68
- } else
69
- await resetElement(params, element, options);
70
122
  }
71
- return element;
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
+ }
72
133
  };
73
134
  var set_default = set;
74
135
  export {
75
136
  set_default as default,
137
+ removeContent,
76
138
  reset,
77
- resetElement,
78
- set
139
+ resetContent,
140
+ set,
141
+ setContent,
142
+ setContentKey,
143
+ updateContent
79
144
  };
@@ -8,81 +8,92 @@ import {
8
8
  isString,
9
9
  isUndefined,
10
10
  merge,
11
- isVariant,
12
11
  overwriteDeep,
13
- createSnapshotId,
14
- deepClone
12
+ deepClone,
13
+ propertizeElement,
14
+ isMethod,
15
+ findInheritedState,
16
+ deepMerge,
17
+ OPTIONS,
18
+ updateProps,
19
+ captureSnapshot
15
20
  } from "@domql/utils";
16
21
  import { applyEvent, triggerEventOn, triggerEventOnUpdate } from "@domql/event";
17
- import { isMethod } from "./methods/index.js";
18
- import { updateProps } from "./props/index.js";
19
- import { createState, findInheritedState } from "@domql/state";
22
+ import { createState } from "@domql/state";
20
23
  import { create } from "./create.js";
21
- import { throughExecProps, throughUpdatedDefine, throughUpdatedExec } from "./iterate.js";
24
+ import {
25
+ throughExecProps,
26
+ throughUpdatedDefine,
27
+ throughUpdatedExec
28
+ } from "./iterate.js";
22
29
  import { REGISTRY } from "./mixins/index.js";
23
30
  import { applyParam } from "./utils/applyParam.js";
24
- import { OPTIONS } from "./cache/options.js";
25
- import { METHODS_EXL, deepMerge } from "./utils/index.js";
26
- const snapshot = {
27
- snapshotId: createSnapshotId
28
- };
31
+ import { METHODS_EXL } from "./utils/index.js";
32
+ import { setContent } from "./set.js";
33
+ import setChildren from "./children.js";
29
34
  const UPDATE_DEFAULT_OPTIONS = {
30
35
  stackChanges: false,
31
36
  cleanExec: true,
32
37
  preventRecursive: false,
33
38
  currentSnapshot: false,
34
39
  calleeElement: false,
35
- excludes: METHODS_EXL
40
+ exclude: METHODS_EXL
36
41
  };
37
42
  const update = async function(params = {}, opts) {
38
43
  const calleeElementCache = opts == null ? void 0 : opts.calleeElement;
39
- const options = deepClone(isObject(opts) ? deepMerge(opts, UPDATE_DEFAULT_OPTIONS) : UPDATE_DEFAULT_OPTIONS, { exclude: ["calleeElement"] });
44
+ const options = deepClone(
45
+ isObject(opts) ? deepMerge(opts, UPDATE_DEFAULT_OPTIONS) : UPDATE_DEFAULT_OPTIONS,
46
+ { exclude: ["calleeElement"] }
47
+ );
40
48
  options.calleeElement = calleeElementCache;
41
49
  const element = this;
42
- const { parent, node, key } = element;
43
- const { excludes, preventInheritAtCurrentState } = options;
44
50
  let ref = element.__ref;
45
- if (!ref)
46
- ref = element.__ref = {};
47
- const [snapshotOnCallee, calleeElement, snapshotHasUpdated] = captureSnapshot(element, options);
48
- if (snapshotHasUpdated)
49
- return;
50
- if (!options.preventListeners)
51
+ if (!ref) ref = element.__ref = {};
52
+ const [snapshotOnCallee, calleeElement, snapshotHasUpdated] = captureSnapshot(
53
+ element,
54
+ options
55
+ );
56
+ if (snapshotHasUpdated) return;
57
+ if (!options.preventListeners) {
51
58
  await triggerEventOnUpdate("startUpdate", params, element, options);
52
- if (preventInheritAtCurrentState && preventInheritAtCurrentState.__element === element)
59
+ }
60
+ const { parent, node, key } = element;
61
+ const { exclude, preventInheritAtCurrentState } = options;
62
+ if (preventInheritAtCurrentState && preventInheritAtCurrentState.__element === element) {
53
63
  return;
54
- if (!excludes)
55
- merge(options, UPDATE_DEFAULT_OPTIONS);
64
+ }
65
+ if (!exclude) merge(options, UPDATE_DEFAULT_OPTIONS);
56
66
  if (isString(params) || isNumber(params)) {
57
67
  params = { text: params };
58
68
  }
69
+ params = propertizeElement(params);
59
70
  const inheritState = await inheritStateUpdates(element, options);
60
- if (inheritState === false)
61
- return;
62
- const ifFails = checkIfOnUpdate(element, parent, options);
63
- if (ifFails)
64
- return;
71
+ if (inheritState === false) return;
72
+ const ifFails = await checkIfOnUpdate(element, parent, options);
73
+ if (ifFails) return;
65
74
  if (ref.__if && !options.preventPropsUpdate) {
66
75
  const hasParentProps = parent.props && (parent.props[key] || parent.props.childProps);
67
- const hasFunctionInProps = ref.__props.filter((v) => isFunction(v));
76
+ const hasFunctionInProps = ref.__propsStack.filter((v) => isFunction(v));
68
77
  const props = params.props || hasParentProps || hasFunctionInProps.length;
69
- if (props)
70
- updateProps(props, element, parent);
78
+ if (props) updateProps(props, element, parent);
71
79
  }
72
80
  if (!options.preventBeforeUpdateListener && !options.preventListeners) {
73
- const beforeUpdateReturns = await triggerEventOnUpdate("beforeUpdate", params, element, options);
74
- if (beforeUpdateReturns === false)
75
- return element;
81
+ const beforeUpdateReturns = await triggerEventOnUpdate(
82
+ "beforeUpdate",
83
+ params,
84
+ element,
85
+ options
86
+ );
87
+ if (beforeUpdateReturns === false) return element;
76
88
  }
77
- overwriteDeep(element, params, { exclude: METHODS_EXL });
89
+ overwriteDeep(element, params);
78
90
  throughExecProps(element);
79
91
  throughUpdatedExec(element, { ignore: UPDATE_DEFAULT_OPTIONS });
80
92
  throughUpdatedDefine(element);
81
93
  if (!options.isForced && !options.preventListeners) {
82
- triggerEventOn("beforeClassAssign", element, options);
94
+ await triggerEventOn("beforeClassAssign", element, options);
83
95
  }
84
- if (!ref.__if)
85
- return false;
96
+ if (!ref.__if) return false;
86
97
  if (!node) {
87
98
  return;
88
99
  }
@@ -97,78 +108,75 @@ const update = async function(params = {}, opts) {
97
108
  preventUpdateAfterCount
98
109
  } = options;
99
110
  if (preventUpdateAfter) {
100
- if (isNumber(preventUpdateAfterCount) && preventUpdateAfter <= preventUpdateAfterCount)
111
+ if (isNumber(preventUpdateAfterCount) && preventUpdateAfter <= preventUpdateAfterCount) {
101
112
  return;
102
- else if (options.preventUpdateAfterCount === void 0)
113
+ } else if (options.preventUpdateAfterCount === void 0) {
103
114
  options.preventUpdateAfterCount = 1;
104
- else
105
- options.preventUpdateAfterCount++;
115
+ } else options.preventUpdateAfterCount++;
106
116
  }
107
117
  for (const param in element) {
108
118
  const prop = element[param];
109
- if (!Object.hasOwnProperty.call(element, param))
110
- continue;
119
+ if (!Object.hasOwnProperty.call(element, param)) continue;
111
120
  const isInPreventUpdate = isArray(preventUpdate) && preventUpdate.includes(param);
112
121
  const isInPreventDefineUpdate = isArray(preventDefineUpdate) && preventDefineUpdate.includes(param);
113
- const hasCollection = element.$collection || element.$stateCollection || element.$propsCollection;
114
- if (isUndefined(prop) || isInPreventUpdate || isInPreventDefineUpdate || preventDefineUpdate === true || preventDefineUpdate === param || preventContentUpdate && param === "content" && !hasCollection || (preventStateUpdate && param) === "state" || isMethod(param, element) || isObject(REGISTRY[param]) || isVariant(param))
122
+ if (isUndefined(prop) || isInPreventUpdate || isInPreventDefineUpdate || preventDefineUpdate === true || preventDefineUpdate === param || (preventStateUpdate && param) === "state" || isMethod(param, element) || isObject(REGISTRY[param])) {
115
123
  continue;
116
- if (preventStateUpdate === "once")
117
- options.preventStateUpdate = false;
118
- const isElement = applyParam(param, element, options);
124
+ }
125
+ if (preventStateUpdate === "once") options.preventStateUpdate = false;
126
+ const isElement = await applyParam(param, element, options);
119
127
  if (isElement) {
120
128
  const { hasDefine, hasContextDefine } = isElement;
121
129
  const canUpdate = isObject(prop) && !hasDefine && !hasContextDefine && !preventRecursive;
122
- if (!canUpdate)
123
- continue;
130
+ if (!canUpdate) continue;
124
131
  const lazyLoad = element.props.lazyLoad || options.lazyLoad;
125
132
  if (options.onEachUpdate) {
126
133
  options.onEachUpdate(param, element, element.state, element.context);
127
134
  }
128
- const childUpdateCall = () => update.call(prop, params[prop], {
135
+ const childUpdateCall = async () => await update.call(prop, params[prop], {
129
136
  ...options,
130
137
  currentSnapshot: snapshotOnCallee,
131
138
  calleeElement
132
139
  });
133
- lazyLoad ? window.requestAnimationFrame(() => {
134
- childUpdateCall();
135
- if (!options.preventUpdateListener) {
136
- triggerEventOn("lazyLoad", element, options);
137
- }
138
- }) : childUpdateCall();
140
+ if (lazyLoad) {
141
+ window.requestAnimationFrame(async () => {
142
+ await childUpdateCall();
143
+ if (!options.preventUpdateListener) {
144
+ await triggerEventOn("lazyLoad", element, options);
145
+ }
146
+ });
147
+ } else await childUpdateCall();
139
148
  }
140
149
  }
141
- if (!preventUpdateListener)
142
- triggerEventOn("update", element, options);
143
- };
144
- const captureSnapshot = (element, options) => {
145
- const ref = element.__ref;
146
- const { currentSnapshot, calleeElement } = options;
147
- const isCallee = calleeElement === element;
148
- if (!calleeElement || isCallee) {
149
- const createdStanpshot = snapshot.snapshotId();
150
- ref.__currentSnapshot = createdStanpshot;
151
- return [createdStanpshot, element];
150
+ if (!preventContentUpdate) {
151
+ const children = params.children || element.children;
152
+ const content = children ? await setChildren(children, element, opts) : element.children || params.content;
153
+ if (content) {
154
+ await setContent(content, element, options);
155
+ }
152
156
  }
153
- const snapshotOnCallee = calleeElement.__ref.__currentSnapshot;
154
- if (currentSnapshot < snapshotOnCallee) {
155
- return [snapshotOnCallee, calleeElement, true];
157
+ if (!preventUpdateListener) {
158
+ await triggerEventOn("update", element, options);
156
159
  }
157
- return [snapshotOnCallee, calleeElement];
158
160
  };
159
- const checkIfOnUpdate = (element, parent, options) => {
161
+ const checkIfOnUpdate = async (element, parent, options) => {
160
162
  var _a, _b, _c;
161
- if (!isFunction(element.if) && !isFunction((_a = element.props) == null ? void 0 : _a.if) || !parent)
163
+ if (!isFunction(element.if) && !isFunction((_a = element.props) == null ? void 0 : _a.if) || !parent) {
162
164
  return;
165
+ }
163
166
  const ref = element.__ref;
164
- const ifPassed = (element.if || ((_b = element.props) == null ? void 0 : _b.if))(element, element.state, element.context, options);
167
+ const ifPassed = (element.if || ((_b = element.props) == null ? void 0 : _b.if))(
168
+ element,
169
+ element.state,
170
+ element.context,
171
+ options
172
+ );
165
173
  const itWasFalse = ref.__if !== true;
166
174
  if (ifPassed) {
167
175
  ref.__if = true;
168
176
  if (itWasFalse) {
169
177
  delete element.__hash;
170
178
  delete element.__text;
171
- delete element.extend;
179
+ delete element.extends;
172
180
  if (!ref.__hasRootState) {
173
181
  delete element.state;
174
182
  }
@@ -182,10 +190,11 @@ const checkIfOnUpdate = (element, parent, options) => {
182
190
  delete element.node;
183
191
  }
184
192
  const contentKey = ref.contentElementKey;
185
- if (element.$collection || element.$stateCollection || element.$propsCollection) {
193
+ if (element.children) {
186
194
  element.removeContent();
187
- } else if ((_c = element[contentKey]) == null ? void 0 : _c.parseDeep)
195
+ } else if ((_c = element[contentKey]) == null ? void 0 : _c.parseDeep) {
188
196
  element[contentKey] = element[contentKey].parseDeep();
197
+ }
189
198
  const previousElement = element.previousElement();
190
199
  const previousNode = previousElement == null ? void 0 : previousElement.node;
191
200
  const hasPrevious = previousNode == null ? void 0 : previousNode.parentNode;
@@ -198,9 +207,19 @@ const checkIfOnUpdate = (element, parent, options) => {
198
207
  };
199
208
  delete element.__ref;
200
209
  delete element.parent;
201
- const createdElement = create(element, parent, element.key, OPTIONS.create, attachOptions);
210
+ const createdElement = await create(
211
+ element,
212
+ parent,
213
+ element.key,
214
+ OPTIONS.create,
215
+ attachOptions
216
+ );
202
217
  if (options.preventUpdate !== true && element.on && isFunction(element.on.update)) {
203
- applyEvent(element.on.update, createdElement, createdElement.state);
218
+ await applyEvent(
219
+ element.on.update,
220
+ createdElement,
221
+ createdElement.state
222
+ );
204
223
  }
205
224
  return createdElement;
206
225
  }
@@ -214,8 +233,7 @@ const inheritStateUpdates = async (element, options) => {
214
233
  const stateKey = ref.__state;
215
234
  const { parent, state } = element;
216
235
  const { preventUpdateTriggerStateUpdate, isHoisted, execStateFunction } = options;
217
- if (preventUpdateTriggerStateUpdate)
218
- return;
236
+ if (preventUpdateTriggerStateUpdate) return;
219
237
  if (!stateKey && !ref.__hasRootState) {
220
238
  element.state = parent && parent.state || {};
221
239
  return;
@@ -223,29 +241,41 @@ const inheritStateUpdates = async (element, options) => {
223
241
  const shouldForceFunctionState = isFunction(stateKey) && !isHoisted && execStateFunction;
224
242
  if (shouldForceFunctionState) {
225
243
  const execState = exec(stateKey, element);
226
- state.set(execState, { ...options, preventUpdate: true, preventStateUpdateListener: false, updatedByStateFunction: true });
244
+ state.set(execState, {
245
+ ...options,
246
+ preventUpdate: true,
247
+ preventStateUpdateListener: false,
248
+ updatedByStateFunction: true
249
+ });
227
250
  return;
228
251
  }
229
252
  const keyInParentState = findInheritedState(element, element.parent);
230
- if (!keyInParentState || options.preventInheritedStateUpdate)
231
- return;
253
+ if (!keyInParentState || options.preventInheritedStateUpdate) return;
232
254
  if (!options.preventBeforeStateUpdateListener && !options.preventListeners) {
233
- const initStateReturns = await triggerEventOnUpdate("beforeStateUpdate", keyInParentState, element, options);
234
- if (initStateReturns === false)
235
- return element;
255
+ const initStateReturns = await triggerEventOnUpdate(
256
+ "beforeStateUpdate",
257
+ keyInParentState,
258
+ element,
259
+ options
260
+ );
261
+ if (initStateReturns === false) return element;
236
262
  }
237
- const newState = createStateUpdate(element, parent, options);
263
+ const newState = await createStateUpdate(element, parent, options);
238
264
  if (!options.preventStateUpdateListener && !options.preventListeners) {
239
- await triggerEventOnUpdate("stateUpdate", newState.parse(), element, options);
265
+ await triggerEventOnUpdate(
266
+ "stateUpdate",
267
+ newState.parse(),
268
+ element,
269
+ options
270
+ );
240
271
  }
241
272
  };
242
- const createStateUpdate = (element, parent, options) => {
273
+ const createStateUpdate = async (element, parent, options) => {
243
274
  const __stateChildren = element.state.__children;
244
- const newState = createState(element, parent);
275
+ const newState = await createState(element, parent);
245
276
  element.state = newState;
246
277
  for (const child in __stateChildren) {
247
- if (newState[child])
248
- newState.__children[child] = __stateChildren[child];
278
+ if (newState[child]) newState.__children[child] = __stateChildren[child];
249
279
  Object.getPrototypeOf(__stateChildren[child]).parent = newState;
250
280
  }
251
281
  return newState;
@@ -1,6 +1,6 @@
1
1
  import { isFunction } from "@domql/utils";
2
2
  import { REGISTRY } from "../mixins/index.js";
3
- const applyParam = (param, element, options) => {
3
+ const applyParam = async (param, element, options) => {
4
4
  const { node, context, __ref: ref } = element;
5
5
  const prop = element[param];
6
6
  const { onlyUpdate } = options;
@@ -9,12 +9,11 @@ const applyParam = (param, element, options) => {
9
9
  const isGlobalTransformer = DOMQLPropertyFromContext || DOMQLProperty;
10
10
  const hasDefine = element.define && element.define[param];
11
11
  const hasContextDefine = context && context.define && context.define[param];
12
- if (!ref.__if)
13
- return;
12
+ if (!ref.__if) return;
14
13
  const hasOnlyUpdate = onlyUpdate ? onlyUpdate === param || element.lookup(onlyUpdate) : true;
15
14
  if (isGlobalTransformer && !hasContextDefine && hasOnlyUpdate) {
16
15
  if (isFunction(isGlobalTransformer)) {
17
- isGlobalTransformer(prop, element, node, options);
16
+ await isGlobalTransformer(prop, element, node, options);
18
17
  return;
19
18
  }
20
19
  }
@@ -1,3 +1,4 @@
1
- export * from "./object.js";
2
- export * from "./extendUtils.js";
3
- export * from "./component.js";
1
+ const METHODS_EXL = [];
2
+ export {
3
+ METHODS_EXL
4
+ };
@@ -1,36 +1,30 @@
1
- import { exec, isFunction, isObject, isUndefined } from "@domql/utils";
1
+ import {
2
+ exec,
3
+ initProps,
4
+ isFunction,
5
+ isMethod,
6
+ isObject,
7
+ isUndefined
8
+ } from "@domql/utils";
2
9
  import { create } from "..";
3
10
  import { REGISTRY } from "../mixins/index.js";
4
- import { applyVariant, isVariant } from ".";
5
- import { isMethod } from "../methods";
6
11
  import { addMethods } from "../methods/set";
7
12
  import { createState } from "@domql/state";
8
13
  import { detectTag } from "@domql/render";
9
- import { createProps } from "../props";
10
14
  import { throughInitialDefine, throughInitialExec } from "../iterate";
11
15
  const onlyResolveExtends = (element, parent, key, options) => {
12
16
  const { __ref } = element;
13
17
  element.tag = detectTag(element);
14
18
  {
15
19
  const { __ref: ref2 } = element;
16
- if (!ref2.__cached)
17
- ref2.__cached = {};
18
- if (!ref2.__defineCache)
19
- ref2.__defineCache = {};
20
- if (!ref2.__exec)
21
- ref2.__exec = {};
22
- if (!ref2.__execProps)
23
- ref2.__execProps = {};
24
- if (!ref2.__class)
25
- ref2.__class = {};
26
- if (!ref2.__classNames)
27
- ref2.__classNames = {};
28
- if (!ref2.__attr)
29
- ref2.__attr = {};
30
- if (!ref2.__changes)
31
- ref2.__changes = [];
32
- if (!ref2.__children)
33
- ref2.__children = [];
20
+ if (!ref2.__defineCache) ref2.__defineCache = {};
21
+ if (!ref2.__exec) ref2.__exec = {};
22
+ if (!ref2.__execProps) ref2.__execProps = {};
23
+ if (!ref2.__class) ref2.__class = {};
24
+ if (!ref2.__classNames) ref2.__classNames = {};
25
+ if (!ref2.__attr) ref2.__attr = {};
26
+ if (!ref2.__changes) ref2.__changes = [];
27
+ if (!ref2.__children) ref2.__children = [];
34
28
  }
35
29
  addMethods(element, parent, options);
36
30
  createState(element, parent);
@@ -39,22 +33,20 @@ const onlyResolveExtends = (element, parent, key, options) => {
39
33
  const ifPassed = element.if(element, element.state, element.context);
40
34
  if (!ifPassed) {
41
35
  delete ref.__if;
42
- } else
43
- ref.__if = true;
44
- } else
45
- ref.__if = true;
36
+ } else ref.__if = true;
37
+ } else ref.__if = true;
46
38
  if (element.node && ref.__if) {
47
39
  parent[key || element.key] = element;
48
40
  }
49
- createProps(element, parent, options);
50
- applyVariant(element, parent);
41
+ initProps(element, parent, options);
51
42
  if (element.tag !== "string" && element.tag !== "fragment") {
52
43
  throughInitialDefine(element);
53
44
  throughInitialExec(element);
54
45
  for (const param in element) {
55
46
  const prop = element[param];
56
- if (isUndefined(prop) || isMethod(param, element) || isObject(REGISTRY[param]) || isVariant(param))
47
+ if (isUndefined(prop) || isMethod(param, element) || isObject(REGISTRY[param])) {
57
48
  continue;
49
+ }
58
50
  const hasDefine = element.define && element.define[param];
59
51
  const contextHasDefine = element.context && element.context.define && element.context.define[param];
60
52
  const optionsHasDefine = options.define && options.define[param];
@@ -72,8 +64,7 @@ const onlyResolveExtends = (element, parent, key, options) => {
72
64
  delete element.props.update;
73
65
  delete element.props.__element;
74
66
  }
75
- if (!options.keepRef)
76
- delete element.__ref;
67
+ if (!options.keepRef) delete element.__ref;
77
68
  return element;
78
69
  };
79
70
  export {