@domql/element 2.5.200 → 2.5.205

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 (66) hide show
  1. package/create.js +5 -5
  2. package/dist/cjs/create.js +88 -46
  3. package/dist/cjs/define.js +2 -1
  4. package/dist/cjs/extend.js +8 -4
  5. package/dist/cjs/index.js +3 -3
  6. package/dist/cjs/iterate.js +18 -9
  7. package/dist/cjs/methods/index.js +69 -36
  8. package/dist/cjs/methods/set.js +2 -1
  9. package/dist/cjs/methods/v2.js +12 -6
  10. package/dist/cjs/mixins/attr.js +8 -4
  11. package/dist/cjs/mixins/classList.js +16 -8
  12. package/dist/cjs/mixins/content.js +16 -9
  13. package/dist/cjs/mixins/data.js +4 -2
  14. package/dist/cjs/mixins/html.js +4 -2
  15. package/dist/cjs/mixins/scope.js +2 -1
  16. package/dist/cjs/mixins/state.js +4 -2
  17. package/dist/cjs/mixins/style.js +4 -2
  18. package/dist/cjs/mixins/text.js +6 -3
  19. package/dist/cjs/node.js +13 -7
  20. package/dist/cjs/props/create.js +12 -6
  21. package/dist/cjs/props/inherit.js +4 -2
  22. package/dist/cjs/props/update.js +6 -3
  23. package/dist/cjs/set.js +16 -9
  24. package/dist/cjs/update.js +53 -29
  25. package/dist/cjs/utils/applyParam.js +4 -3
  26. package/dist/cjs/utils/component.js +6 -3
  27. package/dist/cjs/utils/extendUtils.js +19 -10
  28. package/dist/cjs/utils/object.js +16 -8
  29. package/dist/cjs/utils/onlyResolveExtends.js +26 -13
  30. package/dist/cjs/utils/propEvents.js +4 -2
  31. package/dist/esm/create.js +88 -46
  32. package/dist/esm/define.js +2 -1
  33. package/dist/esm/extend.js +8 -4
  34. package/dist/esm/iterate.js +18 -9
  35. package/dist/esm/methods/index.js +69 -36
  36. package/dist/esm/methods/set.js +2 -1
  37. package/dist/esm/methods/v2.js +12 -6
  38. package/dist/esm/mixins/attr.js +8 -4
  39. package/dist/esm/mixins/classList.js +16 -8
  40. package/dist/esm/mixins/content.js +16 -9
  41. package/dist/esm/mixins/data.js +4 -2
  42. package/dist/esm/mixins/html.js +4 -2
  43. package/dist/esm/mixins/scope.js +2 -1
  44. package/dist/esm/mixins/state.js +4 -2
  45. package/dist/esm/mixins/style.js +4 -2
  46. package/dist/esm/mixins/text.js +6 -3
  47. package/dist/esm/node.js +13 -7
  48. package/dist/esm/props/create.js +12 -6
  49. package/dist/esm/props/inherit.js +4 -2
  50. package/dist/esm/props/update.js +6 -3
  51. package/dist/esm/set.js +16 -9
  52. package/dist/esm/update.js +53 -29
  53. package/dist/esm/utils/applyParam.js +4 -3
  54. package/dist/esm/utils/component.js +6 -3
  55. package/dist/esm/utils/extendUtils.js +19 -10
  56. package/dist/esm/utils/object.js +16 -8
  57. package/dist/esm/utils/onlyResolveExtends.js +26 -13
  58. package/dist/esm/utils/propEvents.js +4 -2
  59. package/methods/index.js +3 -3
  60. package/mixins/content.js +2 -2
  61. package/node.js +1 -1
  62. package/package.json +8 -8
  63. package/set.js +3 -3
  64. package/update.js +6 -6
  65. package/utils/applyParam.js +2 -2
  66. package/utils/extendUtils.js +1 -1
@@ -4,13 +4,17 @@ import { deepMerge } from "../utils/index.js";
4
4
  function attr(params, element, node) {
5
5
  const { __ref: ref, props } = element;
6
6
  const { __attr } = ref;
7
- if (isNot("object")) report("HTMLInvalidAttr", params);
7
+ if (isNot("object"))
8
+ report("HTMLInvalidAttr", params);
8
9
  if (params) {
9
- if (props.attr) deepMerge(params, props.attr);
10
+ if (props.attr)
11
+ deepMerge(params, props.attr);
10
12
  for (const attr2 in params) {
11
13
  const val = exec(params[attr2], element);
12
- if (val !== false && !isUndefined(val) && !isNull(val) && node.setAttribute) node.setAttribute(attr2, val);
13
- else if (node.removeAttribute) node.removeAttribute(attr2);
14
+ if (val !== false && !isUndefined(val) && !isNull(val) && node.setAttribute)
15
+ node.setAttribute(attr2, val);
16
+ else if (node.removeAttribute)
17
+ node.removeAttribute(attr2);
14
18
  __attr[attr2] = val;
15
19
  }
16
20
  }
@@ -1,7 +1,8 @@
1
1
  import { exec, isObject, isString } from "@domql/utils";
2
2
  const assignKeyAsClassname = (element) => {
3
3
  const { key } = element;
4
- if (element.class === true) element.class = key;
4
+ if (element.class === true)
5
+ element.class = key;
5
6
  else if (!element.class && typeof key === "string" && key.charAt(0) === "_" && key.charAt(1) !== "_") {
6
7
  element.class = key.slice(1);
7
8
  }
@@ -10,8 +11,10 @@ const classify = (obj, element) => {
10
11
  let className = "";
11
12
  for (const item in obj) {
12
13
  const param = obj[item];
13
- if (typeof param === "boolean" && param) className += ` ${item}`;
14
- else if (typeof param === "string") className += ` ${param}`;
14
+ if (typeof param === "boolean" && param)
15
+ className += ` ${item}`;
16
+ else if (typeof param === "string")
17
+ className += ` ${param}`;
15
18
  else if (typeof param === "function") {
16
19
  className += ` ${exec(param, element)}`;
17
20
  }
@@ -19,13 +22,18 @@ const classify = (obj, element) => {
19
22
  return className;
20
23
  };
21
24
  const classList = (params, element) => {
22
- if (!params) return;
25
+ if (!params)
26
+ return;
23
27
  const { key } = element;
24
- if (params === true) params = element.class = { key };
25
- if (isString(params)) params = element.class = { default: params };
26
- if (isObject(params)) params = classify(params, element);
28
+ if (params === true)
29
+ params = element.class = { key };
30
+ if (isString(params))
31
+ params = element.class = { default: params };
32
+ if (isObject(params))
33
+ params = classify(params, element);
27
34
  const className = params.replace(/\s+/g, " ").trim();
28
- if (element.ref) element.ref.class = className;
35
+ if (element.ref)
36
+ element.ref.class = className;
29
37
  return className;
30
38
  };
31
39
  const applyClassListOnNode = (params, element, node) => {
@@ -4,37 +4,44 @@ const updateContent = function(params, options) {
4
4
  const element = this;
5
5
  const ref = element.__ref;
6
6
  const contentKey = ref.contentElementKey;
7
- if (!element[contentKey]) return;
8
- if (element[contentKey].update) element[contentKey].update(params, options);
7
+ if (!element[contentKey])
8
+ return;
9
+ if (element[contentKey].update)
10
+ element[contentKey].update(params, options);
9
11
  };
10
12
  const removeContent = function(el, opts = {}) {
11
13
  const element = el || this;
12
14
  const { __ref: ref } = element;
13
15
  const contentElementKey = setContentKey(element, opts);
14
- if (opts.contentElementKey !== "content") opts.contentElementKey = "content";
16
+ if (opts.contentElementKey !== "content")
17
+ opts.contentElementKey = "content";
15
18
  if (element[contentElementKey]) {
16
19
  if (element[contentElementKey].node && element.node) {
17
- if (element[contentElementKey].tag === "fragment") element.node.innerHTML = "";
20
+ if (element[contentElementKey].tag === "fragment")
21
+ element.node.innerHTML = "";
18
22
  else {
19
23
  const contentNode = element[contentElementKey].node;
20
- if (contentNode.parentNode === element.node) element.node.removeChild(element[contentElementKey].node);
24
+ if (contentNode.parentNode === element.node)
25
+ element.node.removeChild(element[contentElementKey].node);
21
26
  }
22
27
  }
23
28
  const { __cached } = ref;
24
29
  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();
30
+ if (__cached[contentElementKey].tag === "fragment")
31
+ __cached[contentElementKey].parent.node.innerHTML = "";
32
+ else if (__cached[contentElementKey] && isFunction(__cached[contentElementKey].remove))
33
+ __cached[contentElementKey].remove();
27
34
  }
28
35
  delete element[contentElementKey];
29
36
  }
30
37
  };
31
- function setContent(param, element, node, opts) {
38
+ async function setContent(param, element, node, opts) {
32
39
  const contentElementKey = setContentKey(element, opts);
33
40
  if (param && element) {
34
41
  if (element[contentElementKey].update) {
35
42
  element[contentElementKey].update({}, opts);
36
43
  } else {
37
- set.call(element, param, opts);
44
+ await set.call(element, param, opts);
38
45
  }
39
46
  }
40
47
  }
@@ -2,9 +2,11 @@ import { exec, isObject, deepMerge } from "@domql/utils";
2
2
  import { report } from "@domql/report";
3
3
  function data(params, element, node) {
4
4
  if (params) {
5
- if (element.props.data) deepMerge(params, element.props.data);
5
+ if (element.props.data)
6
+ deepMerge(params, element.props.data);
6
7
  if (params.showOnNode) {
7
- if (!isObject(params)) report("HTMLInvalidData", params);
8
+ if (!isObject(params))
9
+ report("HTMLInvalidData", params);
8
10
  for (const dataset in params) {
9
11
  if (dataset !== "showOnNode") {
10
12
  node.dataset[dataset] = exec(params[dataset], element);
@@ -4,8 +4,10 @@ function html(param, element, node) {
4
4
  const prop = exec(param, element) || exec((_a = element == null ? void 0 : element.props) == null ? void 0 : _a.html, element);
5
5
  const { __ref } = element;
6
6
  if (prop !== __ref.__html) {
7
- if (node.nodeName === "SVG") node.textContent = prop;
8
- else node.innerHTML = prop;
7
+ if (node.nodeName === "SVG")
8
+ node.textContent = prop;
9
+ else
10
+ node.innerHTML = prop;
9
11
  __ref.__html = prop;
10
12
  }
11
13
  }
@@ -1,6 +1,7 @@
1
1
  import { isFunction, isObject } from "@domql/utils";
2
2
  function scope(params, element, node) {
3
- if (!isObject(params)) return;
3
+ if (!isObject(params))
4
+ return;
4
5
  for (const scopeItem in params) {
5
6
  const value = params[scopeItem];
6
7
  if (isFunction(value)) {
@@ -4,8 +4,10 @@ function state(params, element, node) {
4
4
  const state2 = exec(params, element);
5
5
  if (isObject(state2)) {
6
6
  for (const param in state2) {
7
- if (IGNORE_STATE_PARAMS.includes(param)) continue;
8
- if (!Object.hasOwnProperty.call(state2, param)) continue;
7
+ if (IGNORE_STATE_PARAMS.includes(param))
8
+ continue;
9
+ if (!Object.hasOwnProperty.call(state2, param))
10
+ continue;
9
11
  }
10
12
  }
11
13
  return element;
@@ -2,8 +2,10 @@ import { isObject, map } from "@domql/utils";
2
2
  import { report } from "@domql/report";
3
3
  function style(params, element, node) {
4
4
  if (params) {
5
- if (isObject(params)) map(node.style, params, element);
6
- else report("HTMLInvalidStyles", params);
5
+ if (isObject(params))
6
+ map(node.style, params, element);
7
+ else
8
+ report("HTMLInvalidStyles", params);
7
9
  }
8
10
  }
9
11
  var style_default = style;
@@ -12,10 +12,13 @@ function text(param, element, node) {
12
12
  node.nodeValue = prop;
13
13
  } else if (param !== void 0 || param !== null) {
14
14
  if (element.__text) {
15
- if (element.__text.text === prop) return;
15
+ if (element.__text.text === prop)
16
+ return;
16
17
  element.__text.text = prop;
17
- if (element.__text.node) element.__text.node.nodeValue = prop;
18
- } else create({ tag: "string", text: prop }, element, "__text");
18
+ if (element.__text.node)
19
+ element.__text.node.nodeValue = prop;
20
+ } else
21
+ create({ tag: "string", text: prop }, element, "__text");
19
22
  }
20
23
  }
21
24
  var text_default = text;
package/dist/esm/node.js CHANGED
@@ -17,15 +17,18 @@ const createNode = async (element, options) => {
17
17
  let isNewNode;
18
18
  if (!node) {
19
19
  isNewNode = true;
20
- if (!ref.__if) return element;
20
+ if (!ref.__if)
21
+ return element;
21
22
  if (tag === "shadow") {
22
23
  node = element.node = element.parent.node.attachShadow({ mode: "open" });
23
- } else node = element.node = cacheNode(element);
24
+ } else
25
+ node = element.node = cacheNode(element);
24
26
  triggerEventOn("attachNode", element, options);
25
27
  }
26
- if (ENV === "test" || ENV === "development" || options.alowRefReference) {
28
+ if (ENV === "testing" || ENV === "development" || options.alowRefReference) {
27
29
  node.ref = element;
28
- if (isFunction(node.setAttribute)) node.setAttribute("key", element.key);
30
+ if (isFunction(node.setAttribute))
31
+ node.setAttribute("key", element.key);
29
32
  }
30
33
  throughExecProps(element);
31
34
  throughInitialDefine(element);
@@ -38,8 +41,10 @@ const createNode = async (element, options) => {
38
41
  }
39
42
  for (const param in element) {
40
43
  const value = element[param];
41
- if (!Object.hasOwnProperty.call(element, param)) continue;
42
- if (isUndefined(value) || isMethod(param, element) || isVariant(param) || isObject(REGISTRY[param])) continue;
44
+ if (!Object.hasOwnProperty.call(element, param))
45
+ continue;
46
+ if (isUndefined(value) || isMethod(param, element) || isVariant(param) || isObject(REGISTRY[param]))
47
+ continue;
43
48
  const isElement = applyParam(param, element, options);
44
49
  if (isElement) {
45
50
  const { hasDefine, hasContextDefine } = isElement;
@@ -54,7 +59,8 @@ const createNode = async (element, options) => {
54
59
  triggerEventOn("lazyLoad", element, options);
55
60
  }
56
61
  });
57
- } else await createAsync();
62
+ } else
63
+ await createAsync();
58
64
  }
59
65
  }
60
66
  }
@@ -4,12 +4,16 @@ import { inheritParentProps } from "./inherit.js";
4
4
  const createPropsStack = (element, parent) => {
5
5
  const { props, __ref: ref } = element;
6
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);
7
+ if (isObject(props))
8
+ propsStack.push(props);
9
+ else if (props === "inherit" && parent.props)
10
+ propsStack.push(parent.props);
11
+ else if (props)
12
+ propsStack.push(props);
10
13
  if (isArray(ref.__extend)) {
11
14
  ref.__extend.forEach((extend) => {
12
- if (extend.props && extend.props !== props) propsStack.push(extend.props);
15
+ if (extend.props && extend.props !== props)
16
+ propsStack.push(extend.props);
13
17
  });
14
18
  }
15
19
  ref.__props = propsStack;
@@ -19,7 +23,8 @@ const syncProps = (props, element, opts) => {
19
23
  element.props = {};
20
24
  const mergedProps = {};
21
25
  props.forEach((v) => {
22
- if (IGNORE_PROPS_PARAMS.includes(v)) return;
26
+ if (IGNORE_PROPS_PARAMS.includes(v))
27
+ return;
23
28
  let execProps;
24
29
  try {
25
30
  execProps = exec(v, element);
@@ -49,7 +54,8 @@ const createProps = function(element, parent, options) {
49
54
  element.props = {};
50
55
  }
51
56
  };
52
- if (ref.__if) applyProps();
57
+ if (ref.__if)
58
+ applyProps();
53
59
  else {
54
60
  try {
55
61
  applyProps();
@@ -15,7 +15,8 @@ const inheritParentProps = (element, parent) => {
15
15
  if (matchParent) {
16
16
  if (matchParentIsString) {
17
17
  const inheritedStringExists = propsStack.filter((v) => v.inheritedString)[0];
18
- if (inheritedStringExists) inheritedStringExists.inheritedString = matchParent;
18
+ if (inheritedStringExists)
19
+ inheritedStringExists.inheritedString = matchParent;
19
20
  else {
20
21
  propsStack = [].concat(objectizeStringProperty(matchParent), propsStack);
21
22
  }
@@ -23,7 +24,8 @@ const inheritParentProps = (element, parent) => {
23
24
  propsStack.push(objectizeStringProperty(matchParent));
24
25
  }
25
26
  }
26
- if (matchParentChildProps && !((_a = element == null ? void 0 : element.props) == null ? void 0 : _a.ignoreChildProps)) propsStack.push(matchParentChildProps);
27
+ if (matchParentChildProps && !((_a = element == null ? void 0 : element.props) == null ? void 0 : _a.ignoreChildProps))
28
+ propsStack.push(matchParentChildProps);
27
29
  return propsStack;
28
30
  };
29
31
  export {
@@ -4,9 +4,12 @@ const updateProps = (newProps, element, parent) => {
4
4
  const { __ref } = element;
5
5
  let propsStack = __ref.__props;
6
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);
7
+ if (parentProps.length)
8
+ propsStack = __ref.__props = [].concat(parentProps, propsStack);
9
+ if (newProps)
10
+ propsStack = __ref.__props = [].concat(newProps, propsStack);
11
+ if (propsStack)
12
+ syncProps(propsStack, element);
10
13
  return element;
11
14
  };
12
15
  export {
package/dist/esm/set.js CHANGED
@@ -5,7 +5,8 @@ import { registry } from "./mixins/index.js";
5
5
  import { removeContent } from "./mixins/content.js";
6
6
  import { triggerEventOn, triggerEventOnUpdate } from "@domql/event";
7
7
  const resetElement = async (params, element, options) => {
8
- if (!options.preventRemove) removeContent(element, options);
8
+ if (!options.preventRemove)
9
+ removeContent(element, options);
9
10
  const { __ref: ref } = element;
10
11
  await create(params, element, ref.contentElementKey || "content", {
11
12
  ignoreChildExtend: true,
@@ -14,9 +15,9 @@ const resetElement = async (params, element, options) => {
14
15
  ...options
15
16
  });
16
17
  };
17
- const reset = (options) => {
18
+ const reset = async (options) => {
18
19
  const element = void 0;
19
- create(element, element.parent, void 0, {
20
+ await create(element, element.parent, void 0, {
20
21
  ignoreChildExtend: true,
21
22
  ...registry.defaultOptions,
22
23
  ...OPTIONS.create,
@@ -31,19 +32,24 @@ const set = async function(params, options = {}, el) {
31
32
  const __contentRef = content && content.__ref;
32
33
  const lazyLoad = element.props && element.props.lazyLoad;
33
34
  const hasCollection = element.$collection || element.$stateCollection || element.$propsCollection;
34
- if (options.preventContentUpdate === true && !hasCollection) return;
35
+ if (options.preventContentUpdate === true && !hasCollection)
36
+ return;
35
37
  if (ref.__noCollectionDifference || __contentRef && __contentRef.__cached && deepContains(params, content)) {
36
38
  if (!options.preventBeforeUpdateListener && !options.preventListeners) {
37
39
  const beforeUpdateReturns = await triggerEventOnUpdate("beforeUpdate", params, element, options);
38
- if (beforeUpdateReturns === false) return element;
40
+ if (beforeUpdateReturns === false)
41
+ return element;
39
42
  }
40
- if (content == null ? void 0 : content.update) content.update();
41
- if (!options.preventUpdateListener) await triggerEventOn("update", element, options);
43
+ if (content == null ? void 0 : content.update)
44
+ await content.update();
45
+ if (!options.preventUpdateListener)
46
+ await triggerEventOn("update", element, options);
42
47
  return;
43
48
  }
44
49
  if (params) {
45
50
  let { childExtend, props } = params;
46
- if (!props) props = params.props = {};
51
+ if (!props)
52
+ props = params.props = {};
47
53
  if (!childExtend && element.childExtend) {
48
54
  params.childExtend = element.childExtend;
49
55
  props.ignoreChildExtend = true;
@@ -59,7 +65,8 @@ const set = async function(params, options = {}, el) {
59
65
  triggerEventOn("lazyLoad", element, options);
60
66
  }
61
67
  });
62
- } else await resetElement(params, element, options);
68
+ } else
69
+ await resetElement(params, element, options);
63
70
  }
64
71
  return element;
65
72
  };
@@ -42,28 +42,37 @@ const update = async function(params = {}, opts) {
42
42
  const { parent, node, key } = element;
43
43
  const { excludes, preventInheritAtCurrentState } = options;
44
44
  let ref = element.__ref;
45
- if (!ref) ref = element.__ref = {};
45
+ if (!ref)
46
+ ref = element.__ref = {};
46
47
  const [snapshotOnCallee, calleeElement, snapshotHasUpdated] = captureSnapshot(element, options);
47
- if (snapshotHasUpdated) return;
48
- if (!options.preventListeners) await triggerEventOnUpdate("startUpdate", params, element, options);
49
- if (preventInheritAtCurrentState && preventInheritAtCurrentState.__element === element) return;
50
- if (!excludes) merge(options, UPDATE_DEFAULT_OPTIONS);
48
+ if (snapshotHasUpdated)
49
+ return;
50
+ if (!options.preventListeners)
51
+ await triggerEventOnUpdate("startUpdate", params, element, options);
52
+ if (preventInheritAtCurrentState && preventInheritAtCurrentState.__element === element)
53
+ return;
54
+ if (!excludes)
55
+ merge(options, UPDATE_DEFAULT_OPTIONS);
51
56
  if (isString(params) || isNumber(params)) {
52
57
  params = { text: params };
53
58
  }
54
59
  const inheritState = await inheritStateUpdates(element, options);
55
- if (inheritState === false) return;
60
+ if (inheritState === false)
61
+ return;
56
62
  const ifFails = checkIfOnUpdate(element, parent, options);
57
- if (ifFails) return;
63
+ if (ifFails)
64
+ return;
58
65
  if (ref.__if && !options.preventPropsUpdate) {
59
66
  const hasParentProps = parent.props && (parent.props[key] || parent.props.childProps);
60
67
  const hasFunctionInProps = ref.__props.filter((v) => isFunction(v));
61
68
  const props = params.props || hasParentProps || hasFunctionInProps.length;
62
- if (props) updateProps(props, element, parent);
69
+ if (props)
70
+ updateProps(props, element, parent);
63
71
  }
64
72
  if (!options.preventBeforeUpdateListener && !options.preventListeners) {
65
73
  const beforeUpdateReturns = await triggerEventOnUpdate("beforeUpdate", params, element, options);
66
- if (beforeUpdateReturns === false) return element;
74
+ if (beforeUpdateReturns === false)
75
+ return element;
67
76
  }
68
77
  overwriteDeep(element, params, { exclude: METHODS_EXL });
69
78
  throughExecProps(element);
@@ -72,7 +81,8 @@ const update = async function(params = {}, opts) {
72
81
  if (!options.isForced && !options.preventListeners) {
73
82
  triggerEventOn("beforeClassAssign", element, options);
74
83
  }
75
- if (!ref.__if) return false;
84
+ if (!ref.__if)
85
+ return false;
76
86
  if (!node) {
77
87
  return;
78
88
  }
@@ -87,41 +97,49 @@ const update = async function(params = {}, opts) {
87
97
  preventUpdateAfterCount
88
98
  } = options;
89
99
  if (preventUpdateAfter) {
90
- if (isNumber(preventUpdateAfterCount) && preventUpdateAfter <= preventUpdateAfterCount) return;
91
- else if (options.preventUpdateAfterCount === void 0) options.preventUpdateAfterCount = 1;
92
- else options.preventUpdateAfterCount++;
100
+ if (isNumber(preventUpdateAfterCount) && preventUpdateAfter <= preventUpdateAfterCount)
101
+ return;
102
+ else if (options.preventUpdateAfterCount === void 0)
103
+ options.preventUpdateAfterCount = 1;
104
+ else
105
+ options.preventUpdateAfterCount++;
93
106
  }
94
107
  for (const param in element) {
95
108
  const prop = element[param];
96
- if (!Object.hasOwnProperty.call(element, param)) continue;
109
+ if (!Object.hasOwnProperty.call(element, param))
110
+ continue;
97
111
  const isInPreventUpdate = isArray(preventUpdate) && preventUpdate.includes(param);
98
112
  const isInPreventDefineUpdate = isArray(preventDefineUpdate) && preventDefineUpdate.includes(param);
99
113
  const hasCollection = element.$collection || element.$stateCollection || element.$propsCollection;
100
- if (isUndefined(prop) || isInPreventUpdate || isInPreventDefineUpdate || preventDefineUpdate === true || preventDefineUpdate === param || preventContentUpdate && param === "content" && !hasCollection || (preventStateUpdate && param) === "state" || isMethod(param, element) || isObject(REGISTRY[param]) || isVariant(param)) continue;
101
- if (preventStateUpdate === "once") options.preventStateUpdate = false;
102
- const isElement = applyParam(param, element, options);
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))
115
+ continue;
116
+ if (preventStateUpdate === "once")
117
+ options.preventStateUpdate = false;
118
+ const isElement = await applyParam(param, element, options);
103
119
  if (isElement) {
104
120
  const { hasDefine, hasContextDefine } = isElement;
105
121
  const canUpdate = isObject(prop) && !hasDefine && !hasContextDefine && !preventRecursive;
106
- if (!canUpdate) continue;
122
+ if (!canUpdate)
123
+ continue;
107
124
  const lazyLoad = element.props.lazyLoad || options.lazyLoad;
108
125
  if (options.onEachUpdate) {
109
126
  options.onEachUpdate(param, element, element.state, element.context);
110
127
  }
111
- const childUpdateCall = () => update.call(prop, params[prop], {
128
+ const childUpdateCall = async () => await update.call(prop, params[prop], {
112
129
  ...options,
113
130
  currentSnapshot: snapshotOnCallee,
114
131
  calleeElement
115
132
  });
116
- lazyLoad ? window.requestAnimationFrame(() => {
117
- childUpdateCall();
133
+ lazyLoad ? window.requestAnimationFrame(async () => {
134
+ await childUpdateCall();
118
135
  if (!options.preventUpdateListener) {
119
136
  triggerEventOn("lazyLoad", element, options);
120
137
  }
121
- }) : childUpdateCall();
138
+ }) : await childUpdateCall();
122
139
  }
123
140
  }
124
- if (!preventUpdateListener) triggerEventOn("update", element, options);
141
+ if (!preventUpdateListener)
142
+ await triggerEventOn("update", element, options);
125
143
  };
126
144
  const captureSnapshot = (element, options) => {
127
145
  const ref = element.__ref;
@@ -140,7 +158,8 @@ const captureSnapshot = (element, options) => {
140
158
  };
141
159
  const checkIfOnUpdate = (element, parent, options) => {
142
160
  var _a, _b, _c;
143
- if (!isFunction(element.if) && !isFunction((_a = element.props) == null ? void 0 : _a.if) || !parent) return;
161
+ if (!isFunction(element.if) && !isFunction((_a = element.props) == null ? void 0 : _a.if) || !parent)
162
+ return;
144
163
  const ref = element.__ref;
145
164
  const ifPassed = (element.if || ((_b = element.props) == null ? void 0 : _b.if))(element, element.state, element.context, options);
146
165
  const itWasFalse = ref.__if !== true;
@@ -165,7 +184,8 @@ const checkIfOnUpdate = (element, parent, options) => {
165
184
  const contentKey = ref.contentElementKey;
166
185
  if (element.$collection || element.$stateCollection || element.$propsCollection) {
167
186
  element.removeContent();
168
- } else if ((_c = element[contentKey]) == null ? void 0 : _c.parseDeep) element[contentKey] = element[contentKey].parseDeep();
187
+ } else if ((_c = element[contentKey]) == null ? void 0 : _c.parseDeep)
188
+ element[contentKey] = element[contentKey].parseDeep();
169
189
  const previousElement = element.previousElement();
170
190
  const previousNode = previousElement == null ? void 0 : previousElement.node;
171
191
  const hasPrevious = previousNode == null ? void 0 : previousNode.parentNode;
@@ -194,7 +214,8 @@ const inheritStateUpdates = async (element, options) => {
194
214
  const stateKey = ref.__state;
195
215
  const { parent, state } = element;
196
216
  const { preventUpdateTriggerStateUpdate, isHoisted, execStateFunction } = options;
197
- if (preventUpdateTriggerStateUpdate) return;
217
+ if (preventUpdateTriggerStateUpdate)
218
+ return;
198
219
  if (!stateKey && !ref.__hasRootState) {
199
220
  element.state = parent && parent.state || {};
200
221
  return;
@@ -206,10 +227,12 @@ const inheritStateUpdates = async (element, options) => {
206
227
  return;
207
228
  }
208
229
  const keyInParentState = findInheritedState(element, element.parent);
209
- if (!keyInParentState || options.preventInheritedStateUpdate) return;
230
+ if (!keyInParentState || options.preventInheritedStateUpdate)
231
+ return;
210
232
  if (!options.preventBeforeStateUpdateListener && !options.preventListeners) {
211
233
  const initStateReturns = await triggerEventOnUpdate("beforeStateUpdate", keyInParentState, element, options);
212
- if (initStateReturns === false) return element;
234
+ if (initStateReturns === false)
235
+ return element;
213
236
  }
214
237
  const newState = createStateUpdate(element, parent, options);
215
238
  if (!options.preventStateUpdateListener && !options.preventListeners) {
@@ -221,7 +244,8 @@ const createStateUpdate = (element, parent, options) => {
221
244
  const newState = createState(element, parent);
222
245
  element.state = newState;
223
246
  for (const child in __stateChildren) {
224
- if (newState[child]) newState.__children[child] = __stateChildren[child];
247
+ if (newState[child])
248
+ newState.__children[child] = __stateChildren[child];
225
249
  Object.getPrototypeOf(__stateChildren[child]).parent = newState;
226
250
  }
227
251
  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,11 +9,12 @@ 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) return;
12
+ if (!ref.__if)
13
+ return;
13
14
  const hasOnlyUpdate = onlyUpdate ? onlyUpdate === param || element.lookup(onlyUpdate) : true;
14
15
  if (isGlobalTransformer && !hasContextDefine && hasOnlyUpdate) {
15
16
  if (isFunction(isGlobalTransformer)) {
16
- isGlobalTransformer(prop, element, node, options);
17
+ await isGlobalTransformer(prop, element, node, options);
17
18
  return;
18
19
  }
19
20
  }
@@ -29,7 +29,8 @@ const createValidDomqlObjectFromSugar = (el, parent, key, options) => {
29
29
  };
30
30
  const overwriteVariant = (element, variant, variantProps) => {
31
31
  let variantElement = element[variant];
32
- if (!variantElement) return;
32
+ if (!variantElement)
33
+ return;
33
34
  const props = isObject(variantProps) ? variantProps : {};
34
35
  if (isString(variantElement)) {
35
36
  variantElement = {
@@ -44,14 +45,16 @@ const overwriteVariant = (element, variant, variantProps) => {
44
45
  };
45
46
  const applyVariant = (element) => {
46
47
  const { props } = element;
47
- if (!hasVariantProp(element)) return element;
48
+ if (!hasVariantProp(element))
49
+ return element;
48
50
  const { variant } = props;
49
51
  overwriteVariant(element, `.${variant}`);
50
52
  const elKeys = Object.keys(element).filter((key) => isVariant(key));
51
53
  elKeys.forEach((variant2) => {
52
54
  const slicedVariantElementKey = variant2.slice(1);
53
55
  const variantElementProps = props[slicedVariantElementKey];
54
- if (variantElementProps) overwriteVariant(element, variant2, variantElementProps);
56
+ if (variantElementProps)
57
+ overwriteVariant(element, variant2, variantElementProps);
55
58
  });
56
59
  return element;
57
60
  };