@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
@@ -0,0 +1,219 @@
1
+ var import_update = require("../update");
2
+ describe("update()", () => {
3
+ let element, params, opts;
4
+ beforeEach(() => {
5
+ element = {
6
+ __ref: {
7
+ __execProps: {},
8
+ __exec: {},
9
+ __defineCache: {},
10
+ __props: [],
11
+ __state: "state"
12
+ },
13
+ state: "string",
14
+ props: {},
15
+ parent: {
16
+ props: {}
17
+ },
18
+ define: {},
19
+ node: document.createElement("div"),
20
+ key: "testElement",
21
+ on: {},
22
+ update: import_update.update
23
+ };
24
+ opts = {
25
+ preventUpdate: [],
26
+ preventDefineUpdate: [],
27
+ preventBeforeStateUpdateListener: false,
28
+ preventListeners: false,
29
+ preventStateUpdateListener: false
30
+ };
31
+ params = {};
32
+ });
33
+ it("does not modify opts when params and opts are empty", async () => {
34
+ await element.update({}, opts);
35
+ expect(opts).toEqual({
36
+ calleeElement: false,
37
+ cleanExec: true,
38
+ currentSnapshot: false,
39
+ exclude: [],
40
+ preventRecursive: false,
41
+ stackChanges: false,
42
+ preventUpdate: [],
43
+ preventDefineUpdate: [],
44
+ preventBeforeStateUpdateListener: false,
45
+ preventListeners: false,
46
+ preventStateUpdateListener: false
47
+ });
48
+ });
49
+ it("initializes options with UPDATE_DEFAULT_OPTIONS when opts is empty", async () => {
50
+ await element.update({}, opts);
51
+ expect(opts.calleeElement).toBe(false);
52
+ expect(element.__ref).toBeDefined();
53
+ });
54
+ it("merges opts with UPDATE_DEFAULT_OPTIONS using deepMerge", async () => {
55
+ opts.customOption = true;
56
+ await element.update({}, opts);
57
+ expect(opts.customOption).toBe(true);
58
+ });
59
+ it("converts string params to { text: params }", async () => {
60
+ await element.update("testString", opts);
61
+ expect(element.text).toBe("testString");
62
+ });
63
+ it("converts number params to { text: params }", async () => {
64
+ await element.update(123, opts);
65
+ expect(element.text).toBe(123);
66
+ });
67
+ it("returns early if preventInheritAtCurrentState matches element", async () => {
68
+ opts.preventInheritAtCurrentState = { __element: element };
69
+ await element.update({}, opts);
70
+ expect(element.__ref.__currentSnapshot).toBe(6);
71
+ });
72
+ it("initializes __ref if not present", async () => {
73
+ delete element.__ref;
74
+ await element.update({}, opts);
75
+ expect(element.__ref).toBeDefined();
76
+ });
77
+ it("merges options with UPDATE_DEFAULT_OPTIONS when exclude is missing", async () => {
78
+ await element.update({}, opts);
79
+ expect(opts.exclude).toBeDefined();
80
+ });
81
+ it("does not throw or modify opts when params is undefined", async () => {
82
+ await element.update(void 0, opts);
83
+ expect(opts).toEqual({
84
+ calleeElement: false,
85
+ cleanExec: true,
86
+ currentSnapshot: false,
87
+ exclude: [],
88
+ preventRecursive: false,
89
+ preventUpdate: [],
90
+ preventDefineUpdate: [],
91
+ stackChanges: false,
92
+ preventBeforeStateUpdateListener: false,
93
+ preventListeners: false,
94
+ preventStateUpdateListener: false
95
+ });
96
+ });
97
+ it("does not throw when opts is undefined", async () => {
98
+ await element.update({}, void 0);
99
+ expect(element.__ref).toBeDefined();
100
+ });
101
+ it("does not throw when opts is null", async () => {
102
+ await element.update({}, null);
103
+ expect(element.__ref).toBeDefined();
104
+ });
105
+ it("does not modify the params object", async () => {
106
+ params = { key: "value" };
107
+ await element.update(params, opts);
108
+ expect(params).toEqual({ key: "value" });
109
+ });
110
+ it("does modify opts when params is an empty object", async () => {
111
+ await element.update({}, opts);
112
+ expect(opts).toEqual({
113
+ calleeElement: false,
114
+ cleanExec: true,
115
+ currentSnapshot: false,
116
+ exclude: [],
117
+ preventRecursive: false,
118
+ stackChanges: false,
119
+ preventUpdate: [],
120
+ preventDefineUpdate: [],
121
+ preventBeforeStateUpdateListener: false,
122
+ preventListeners: false,
123
+ preventStateUpdateListener: false
124
+ });
125
+ });
126
+ it("moves regular properties to element.props", async () => {
127
+ params = { props: { title: "Test", description: "Content" } };
128
+ await element.update(params, opts);
129
+ expect(element.props).toEqual({
130
+ title: "Test",
131
+ description: "Content"
132
+ });
133
+ expect(element.title).toBeUndefined();
134
+ });
135
+ it("keeps element-rooted properties", async () => {
136
+ params = { Header: {}, Footer: {}, 0: "index" };
137
+ await element.update(params, opts);
138
+ expect(element.Header).toBeDefined();
139
+ expect(element.Footer).toBeDefined();
140
+ expect(element["0"]).toBe("index");
141
+ expect(element.props).toEqual({});
142
+ });
143
+ it("preserves built-in properties on element", async () => {
144
+ params = { props: { className: "container", hidden: true } };
145
+ await element.update(params, opts);
146
+ expect(element.props.className).toBe("container");
147
+ expect(element.props.hidden).toBe(true);
148
+ expect(element.props).toEqual({ className: "container", hidden: true });
149
+ });
150
+ it("moves element-like properties from props to root", async () => {
151
+ params = { props: { Header: {} } };
152
+ await element.update(params, opts);
153
+ expect(element.Header).toBeDefined();
154
+ expect(element.props.Header).toBeUndefined();
155
+ });
156
+ it("exits early when inheritStateUpdates returns false", async () => {
157
+ element.__ref.__stateBlocked = true;
158
+ await element.update({ props: { shouldChange: true } }, opts);
159
+ expect(element.props.shouldChange).toBe(true);
160
+ expect(element.__ref.__stateBlocked).toBe(true);
161
+ });
162
+ it("exits early when checkIfOnUpdate fails", async () => {
163
+ element.parent.props.ifCondition = false;
164
+ await element.update({ state: { newState: true } }, opts);
165
+ expect(element.state.newState).toBe(true);
166
+ });
167
+ it("updates props from parent key match", async () => {
168
+ element.parent.props.testKey = { inherited: true };
169
+ await element.update({}, opts);
170
+ expect(element.props.inherited).toBeUndefined();
171
+ });
172
+ it("updates props when functions exist in __props", async () => {
173
+ element.__ref.__props.push(() => "dynamic");
174
+ await element.update({}, opts);
175
+ expect(element.props).toEqual(expect.any(Object));
176
+ });
177
+ it("skips props update when preventPropsUpdate=true", async () => {
178
+ opts.preventPropsUpdate = true;
179
+ opts.preventUpdateAfter = true;
180
+ element.parent.props.testKey = { shouldExist: true };
181
+ await element.update({}, opts);
182
+ expect(element.props.shouldExist).toBeUndefined();
183
+ });
184
+ it("should not skips props update when preventPropsUpdate=false", async () => {
185
+ opts.preventPropsUpdate = false;
186
+ opts.lazyLoad = true;
187
+ opts.onEachUpdate = () => {
188
+ return true;
189
+ };
190
+ element.parent.props.testKey = { shouldExist: true };
191
+ element.__ref.__propsStack = [];
192
+ element.__ref.__if = true;
193
+ element.off = { text: "off" };
194
+ await element.update({}, opts);
195
+ expect(element.props.shouldExist).toBeUndefined();
196
+ });
197
+ it("should set preventUpdateAfterCount to 1 when is not a number", async () => {
198
+ opts.preventPropsUpdate = true;
199
+ opts.preventUpdateAfter = 2;
200
+ opts.preventUpdateAfterCount = void 0;
201
+ element.parent.props.testKey = { shouldExist: true };
202
+ await element.update({}, opts);
203
+ expect(element.props.shouldExist).toBeUndefined();
204
+ });
205
+ it("returns element when beforeUpdate rejects", async () => {
206
+ element.props.onBeforeUpdate = () => false;
207
+ const result = await element.update({}, opts);
208
+ expect(result).toBe(element);
209
+ });
210
+ it("processes parent.childProps", async () => {
211
+ element.parent.props.childProps = { global: true };
212
+ await element.update({}, opts);
213
+ expect(element.props.global).toBeUndefined();
214
+ });
215
+ it("processes function props", async () => {
216
+ await element.update({ props: { calc: () => 42 } }, opts);
217
+ expect(element.props.calc()).toBe(42);
218
+ });
219
+ });
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var children_exports = {};
20
+ __export(children_exports, {
21
+ default: () => children_default,
22
+ setChildren: () => setChildren
23
+ });
24
+ module.exports = __toCommonJS(children_exports);
25
+ var import_utils = require("@domql/utils");
26
+ async function setChildren(param, element, opts) {
27
+ let { children, __ref: ref, state } = element;
28
+ let { childrenAs } = element.props || {};
29
+ children = await (0, import_utils.execPromise)(param, element, state) || await (0, import_utils.execPromise)(children, element, state);
30
+ if (children) {
31
+ if ((0, import_utils.isState)(children)) children = children.parse();
32
+ if ((0, import_utils.isString)(children) || (0, import_utils.isNumber)(children)) {
33
+ if (children === "state") children = state.parse();
34
+ else {
35
+ const pathInState = (0, import_utils.getChildStateInKey)(children, state);
36
+ if (pathInState) {
37
+ childrenAs = "state";
38
+ children = (0, import_utils.getChildStateInKey)(children, state) || { value: children };
39
+ } else {
40
+ children = { text: children };
41
+ }
42
+ }
43
+ }
44
+ if ((0, import_utils.isObject)(children)) {
45
+ if (children.$$typeof) {
46
+ return element.call("renderReact", children, element);
47
+ }
48
+ children = Object.keys(children).map((v) => {
49
+ const val = children[v];
50
+ if ((0, import_utils.matchesComponentNaming)(v)) return (0, import_utils.concatAddExtends)(v, val);
51
+ return val;
52
+ });
53
+ }
54
+ }
55
+ if (!children || (0, import_utils.isNot)(children)("array", "object")) return;
56
+ if ((0, import_utils.isArray)(children) && children.find((v) => v == null ? void 0 : v.$$typeof)) {
57
+ const filterReact = children.filter((v) => !(v == null ? void 0 : v.$$typeof));
58
+ if (filterReact.length !== children.length) {
59
+ const extractedReactComponents = children.filter((v) => v == null ? void 0 : v.$$typeof);
60
+ element.call("renderReact", extractedReactComponents, element);
61
+ }
62
+ children = filterReact;
63
+ }
64
+ if (ref.__childrenCache) {
65
+ const equals = JSON.stringify(children) === JSON.stringify(ref.__childrenCache);
66
+ if (equals) {
67
+ ref.__noChildrenDifference = true;
68
+ } else {
69
+ ref.__childrenCache = (0, import_utils.deepClone)(children);
70
+ delete ref.__noChildrenDifference;
71
+ }
72
+ } else {
73
+ ref.__childrenCache = (0, import_utils.deepClone)(children);
74
+ }
75
+ if ((0, import_utils.isObject)(children) || (0, import_utils.isArray)(children)) {
76
+ children = (0, import_utils.deepClone)(children);
77
+ }
78
+ const content = { tag: "fragment" };
79
+ for (const key in children) {
80
+ const value = Object.hasOwnProperty.call(children, key) && children[key];
81
+ if ((0, import_utils.isDefined)(value) && value !== null && value !== false) {
82
+ content[key] = (0, import_utils.isObjectLike)(value) ? childrenAs ? { [childrenAs]: value } : value : childrenAs ? { [childrenAs]: childrenAs === "state" ? { value } : { text: value } } : { text: value };
83
+ }
84
+ }
85
+ return content;
86
+ }
87
+ var children_default = setChildren;
@@ -28,130 +28,78 @@ var import_utils = require("@domql/utils");
28
28
  var import_event = require("@domql/event");
29
29
  var import_render = require("@domql/render");
30
30
  var import_state = require("@domql/state");
31
- var import_methods = require("./methods/index.js");
32
- var import_props = require("./props/index.js");
33
- var import_extend = require("./extend.js");
34
31
  var import_mixins = require("./mixins/index.js");
35
32
  var import_set = require("./methods/set.js");
36
33
  var import_classList = require("./mixins/classList.js");
37
34
  var import_iterate = require("./iterate.js");
38
- var import_options = require("./cache/options.js");
39
- var import_component = require("./utils/component.js");
40
35
  const ENV = "development";
41
- const create = async (element, parent, key, options = import_options.OPTIONS.create || {}, attachOptions) => {
42
- cacheOptions(element, options);
43
- if (checkIfPrimitive(element)) {
44
- element = applyValueAsText(element, parent, key);
45
- }
46
- element = redefineElement(element, parent, key, options);
47
- parent = redefineParent(element, parent, key);
48
- key = createKey(element, parent, key);
49
- const ref = addRef(element, parent, key);
50
- ref.__initialProps = (0, import_utils.deepClone)(element.props);
51
- applyContext(element, parent, options);
52
- (0, import_utils.applyComponentFromContext)(element, parent, options);
53
- if (!ref.__skipCreate) {
54
- (0, import_extend.applyExtend)(element, parent, options);
55
- }
56
- element.key = key;
36
+ const create = async (props, parentEl, passedKey, options = import_utils.OPTIONS.create || {}, attachOptions) => {
37
+ cacheOptions(options);
38
+ const element = (0, import_utils.createElement)(props, parentEl, passedKey, options, import_tree.ROOT);
39
+ if (!element) return;
40
+ const { key, parent, __ref: ref } = element;
41
+ if (element.key === "BannerHgroup") {
42
+ console.warn((0, import_utils.deepClone)(element));
43
+ }
44
+ (0, import_utils.applyExtends)(element, parent, options);
45
+ if (element.key === "BannerHgroup") {
46
+ console.warn((0, import_utils.deepClone)(element));
47
+ }
48
+ (0, import_utils.propertizeElement)(element, parent);
49
+ await (0, import_event.triggerEventOn)("start", element, options);
57
50
  if (options.onlyResolveExtends) {
58
51
  return onlyResolveExtends(element, parent, key, options);
59
52
  }
60
- await (0, import_event.triggerEventOn)("start", element, options);
61
- switchDefaultOptions(element, parent, options);
62
- addCaching(element, parent);
53
+ if (element.key === "BannerHgroup") {
54
+ console.warn(element);
55
+ }
56
+ resetOptions(element, parent, options);
63
57
  (0, import_set.addMethods)(element, parent, options);
64
- createScope(element, parent);
58
+ (0, import_utils.createScope)(element, parent);
65
59
  await (0, import_state.createState)(element, parent);
66
60
  if (element.scope === "state") element.scope = element.state;
67
- createIfConditionFlag(element, parent);
68
- (0, import_props.createProps)(element, parent, options);
69
- if (element.scope === "props" || element.scope === true) element.scope = element.props;
70
- createIfConditionFlag(element, parent);
71
- if (element.node && ref.__if) {
72
- return (0, import_render.assignNode)(element, parent, key, attachOptions);
61
+ (0, import_utils.createIfConditionFlag)(element, parent);
62
+ (0, import_utils.initProps)(element, parent, options);
63
+ if (element.scope === "props" || element.scope === true) {
64
+ element.scope = element.props;
65
+ }
66
+ (0, import_utils.createIfConditionFlag)(element, parent);
67
+ if (element.node) {
68
+ if (ref.__if) return (0, import_render.assignNode)(element, parent, key, attachOptions);
73
69
  }
74
- (0, import_component.applyVariant)(element, parent);
75
70
  const onInit = await (0, import_event.triggerEventOn)("init", element, options);
76
71
  if (onInit === false) return element;
77
72
  (0, import_event.triggerEventOn)("beforeClassAssign", element, options);
78
73
  (0, import_classList.assignKeyAsClassname)(element);
79
- (0, import_utils.addChildrenIfNotInOriginal)(element, parent, key);
80
74
  await renderElement(element, parent, options, attachOptions);
81
75
  addElementIntoParentChildren(element, parent);
82
76
  await (0, import_event.triggerEventOn)("complete", element, options);
83
77
  return element;
84
78
  };
85
- const createBasedOnType = (element, parent, key, options) => {
86
- if (element === void 0) {
87
- if (ENV === "test" || ENV === "development") {
88
- console.warn(key, "element is undefined in", parent && parent.__ref && parent.__ref.path);
89
- }
90
- return {};
79
+ const cacheOptions = (options) => {
80
+ if (options && !import_utils.OPTIONS.create) {
81
+ import_utils.OPTIONS.create = options;
82
+ import_utils.OPTIONS.create.context = options.context;
91
83
  }
92
- if ((0, import_utils.isString)(key) && key.slice(0, false)) {
93
- if (ENV === "test" || ENV === "development") {
94
- console.warn(key, "seems like to be in __ref");
95
- }
96
- }
97
- if (element === null) return;
98
- if (element === true) return { text: true };
99
- if (element.__hash) {
100
- return { extend: element };
101
- }
102
- return element;
103
84
  };
104
- const redefineElement = (element, parent, key, options) => {
105
- const elementWrapper = createBasedOnType(element, parent, key, options);
106
- if (options.syntaxv3 || element.props && element.props.syntaxv3 || parent && parent.props && parent.props.syntaxv3) {
107
- if (element.props) element.props.syntaxv3 = true;
108
- else element.syntaxv3 = true;
109
- return (0, import_component.createValidDomqlObjectFromSugar)(element, parent, key, options);
110
- } else if ((0, import_utils.checkIfKeyIsComponent)(key)) {
111
- return (0, import_utils.applyKeyComponentAsExtend)(elementWrapper, parent, key);
112
- }
113
- if (checkIfMedia(key)) {
114
- return applyMediaProps(elementWrapper, parent, key);
115
- }
116
- return elementWrapper;
117
- };
118
- const redefineParent = (element, parent, key, options) => {
119
- if (!parent) return import_tree.ROOT;
120
- if ((0, import_utils.isNode)(parent)) {
121
- const parentNodeWrapper = { key: ":root", node: parent };
122
- import_tree.ROOT[`${key}_parent`] = parentNodeWrapper;
123
- return parentNodeWrapper;
124
- }
125
- return parent;
126
- };
127
- const cacheOptions = (element, options) => {
128
- if (options && !import_options.OPTIONS.create) {
129
- import_options.OPTIONS.create = options;
130
- import_options.OPTIONS.create.context = element.context || options.context;
131
- }
132
- };
133
- const createKey = (element, parent, key) => {
134
- return ((0, import_utils.exec)(key, element) || key || element.key || (0, import_utils.generateKey)()).toString();
135
- };
136
- const addRef = (element, parent) => {
137
- if (element.__ref) element.__ref.origin = element;
138
- else element.__ref = { origin: element };
139
- return element.__ref;
140
- };
141
- const switchDefaultOptions = (element, parent, options) => {
85
+ const resetOptions = (element, parent, options) => {
142
86
  if (Object.keys(options).length) {
143
- import_mixins.registry.defaultOptions = options;
144
- if (options.ignoreChildExtend) delete options.ignoreChildExtend;
87
+ import_utils.OPTIONS.defaultOptions = options;
88
+ if (options.ignoreChildExtends) delete options.ignoreChildExtends;
145
89
  }
146
90
  };
147
91
  const addElementIntoParentChildren = (element, parent) => {
148
- if (parent.__ref && parent.__ref.__children) parent.__ref.__children.push(element.key);
92
+ if (parent.__ref && parent.__ref.__children) {
93
+ parent.__ref.__children.push(element.key);
94
+ }
149
95
  };
150
96
  const visitedElements = /* @__PURE__ */ new WeakMap();
151
97
  const renderElement = async (element, parent, options, attachOptions) => {
152
98
  var _a, _b, _c, _d;
153
99
  if (visitedElements.has(element)) {
154
- if (ENV === "test" || ENV === "development") console.warn("Cyclic rendering detected:", element.__ref.path);
100
+ if (ENV === "test" || ENV === "development") {
101
+ console.warn("Cyclic rendering detected:", element.__ref.path);
102
+ }
155
103
  }
156
104
  visitedElements.set(element, true);
157
105
  const { __ref: ref, key } = element;
@@ -168,14 +116,31 @@ const renderElement = async (element, parent, options, attachOptions) => {
168
116
  await createNestedChild();
169
117
  } catch (e) {
170
118
  const path = ref.path;
171
- if (path.includes("ComponentsGrid")) path.splice(0, path.indexOf("ComponentsGrid") + 2);
172
- if (path.includes("demoComponent")) path.splice(0, path.indexOf("demoComponent") + 1);
119
+ if (path.includes("ComponentsGrid")) {
120
+ path.splice(0, path.indexOf("ComponentsGrid") + 2);
121
+ }
122
+ if (path.includes("demoComponent")) {
123
+ path.splice(0, path.indexOf("demoComponent") + 1);
124
+ }
173
125
  const isDemoComponent = (_b = (_a = element.lookup((el) => el.state.key)) == null ? void 0 : _a.state) == null ? void 0 : _b.key;
174
- element.warn("Error happened in:", isDemoComponent ? isDemoComponent + " " : "" + path.join("."));
126
+ element.warn(
127
+ "Error happened in:",
128
+ isDemoComponent ? isDemoComponent + " " : "" + path.join(".")
129
+ );
175
130
  element.verbose();
176
131
  element.error(e, options);
177
- if ((_c = element.on) == null ? void 0 : _c.error) element.on.error(e, element, element.state, element.context, options);
178
- if ((_d = element.props) == null ? void 0 : _d.onError) element.props.onError(e, element, element.state, element.context, options);
132
+ if ((_c = element.on) == null ? void 0 : _c.error) {
133
+ element.on.error(e, element, element.state, element.context, options);
134
+ }
135
+ if ((_d = element.props) == null ? void 0 : _d.onError) {
136
+ element.props.onError(
137
+ e,
138
+ element,
139
+ element.state,
140
+ element.context,
141
+ options
142
+ );
143
+ }
179
144
  }
180
145
  }
181
146
  if (!ref.__if) {
@@ -189,75 +154,29 @@ const renderElement = async (element, parent, options, attachOptions) => {
189
154
  await (0, import_event.triggerEventOn)("done", element, options);
190
155
  await (0, import_event.triggerEventOn)("create", element, options);
191
156
  };
192
- const checkIfPrimitive = (element) => (0, import_utils.is)(element)("string", "number");
193
- const applyValueAsText = (element, parent, key) => {
194
- const extendTag = element.extend && element.extend.tag;
195
- const childExtendTag = parent.childExtend && parent.childExtend.tag;
196
- const childPropsTag = parent.props.childProps && parent.props.childProps.tag;
197
- const isKeyValidHTMLTag = import_utils.HTML_TAGS.body.indexOf(key) > -1 && key;
198
- return {
199
- text: element,
200
- tag: extendTag || childExtendTag || childPropsTag || isKeyValidHTMLTag || "string"
201
- };
202
- };
203
- const applyContext = (element, parent, options) => {
204
- const forcedOptionsContext = options.context && !import_tree.ROOT.context && !element.context;
205
- if (forcedOptionsContext) import_tree.ROOT.context = options.context;
206
- if (!element.context) element.context = parent.context || options.context || import_tree.ROOT.context;
207
- };
208
- const createScope = (element, parent) => {
209
- const { __ref: ref } = element;
210
- if (!element.scope) element.scope = parent.scope || ref.root.scope || {};
211
- };
212
- const createIfConditionFlag = (element, parent) => {
213
- const { __ref: ref } = element;
214
- if ((0, import_utils.isFunction)(element.if) && !element.if(element, element.state, element.context)) {
215
- delete ref.__if;
216
- } else ref.__if = true;
217
- };
218
- const addCaching = (element, parent) => {
219
- const { __ref: ref, key } = element;
220
- let { __ref: parentRef } = parent;
221
- if (!element.transform) element.transform = {};
222
- if (!ref.__cached) ref.__cached = {};
223
- if (!ref.__defineCache) ref.__defineCache = {};
224
- if (!ref.__exec) ref.__exec = {};
225
- if (!ref.__execProps) ref.__execProps = {};
226
- if (!ref.__class) ref.__class = {};
227
- if (!ref.__classNames) ref.__classNames = {};
228
- if (!ref.__attr) ref.__attr = {};
229
- if (!ref.__changes) ref.__changes = [];
230
- if (!ref.__children) ref.__children = [];
231
- if ((0, import_utils.checkIfKeyIsComponent)(key)) ref.__componentKey = key.split("_")[0].split(".")[0].split("+")[0];
232
- const hasRoot = parent && parent.key === ":root";
233
- if (!ref.root) ref.root = hasRoot ? element : parentRef.root;
234
- if (!parentRef) parentRef = parent.ref = {};
235
- if (!parentRef.path) parentRef.path = [];
236
- ref.path = parentRef.path.concat(element.key);
237
- };
238
157
  const onlyResolveExtends = (element, parent, key, options) => {
239
158
  const { __ref: ref } = element;
240
- if (!ref.__skipCreate) {
241
- addCaching(element, parent);
242
- (0, import_set.addMethods)(element, parent, options);
243
- createScope(element, parent);
244
- (0, import_state.createState)(element, parent);
245
- if (element.scope === "state") element.scope = element.state;
246
- createIfConditionFlag(element, parent);
247
- (0, import_props.createProps)(element, parent, options);
248
- if (element.scope === "props" || element.scope === true) element.scope = element.props;
249
- if (element.node && ref.__if) {
250
- parent[key || element.key] = element;
251
- }
252
- if (!element.props) element.props = {};
253
- (0, import_component.applyVariant)(element, parent);
254
- addElementIntoParentChildren(element, parent);
159
+ (0, import_set.addMethods)(element, parent, options);
160
+ (0, import_utils.createScope)(element, parent);
161
+ (0, import_state.createState)(element, parent);
162
+ if (element.scope === "state") element.scope = element.state;
163
+ (0, import_utils.createIfConditionFlag)(element, parent);
164
+ (0, import_utils.initProps)(element, parent, options);
165
+ if (element.scope === "props" || element.scope === true) {
166
+ element.scope = element.props;
255
167
  }
168
+ if (element.node && ref.__if) {
169
+ parent[key || element.key] = element;
170
+ }
171
+ if (!element.props) element.props = {};
172
+ addElementIntoParentChildren(element, parent);
256
173
  if (element.tag !== "string" && element.tag !== "fragment") {
257
174
  (0, import_iterate.throughInitialDefine)(element);
258
175
  (0, import_iterate.throughInitialExec)(element);
259
176
  for (const k in element) {
260
- if ((0, import_utils.isUndefined)(element[k]) || (0, import_methods.isMethod)(k, element) || (0, import_utils.isObject)((import_mixins.registry.default || import_mixins.registry)[k]) || (0, import_utils.isVariant)(k)) continue;
177
+ if ((0, import_utils.isUndefined)(element[k]) || (0, import_utils.isMethod)(k, element) || (0, import_utils.isObject)(import_mixins.REGISTRY[k])) {
178
+ continue;
179
+ }
261
180
  const hasDefine = element.define && element.define[k];
262
181
  const contextHasDefine = element.context && element.context.define && element.context.define[k];
263
182
  const optionsHasDefine = options.define && options.define[k];
@@ -277,22 +196,4 @@ const onlyResolveExtends = (element, parent, key, options) => {
277
196
  }
278
197
  return element;
279
198
  };
280
- const checkIfMedia = (key) => key.slice(0, 1) === "@";
281
- const applyMediaProps = (element, parent, key) => {
282
- const { props } = element;
283
- if (props) {
284
- props.display = "none";
285
- if (props[key]) props[key].display = props.display;
286
- else props[key] = { display: props.display || "block" };
287
- return element;
288
- } else {
289
- return {
290
- ...element,
291
- props: {
292
- display: "none",
293
- [key]: { display: "block" }
294
- }
295
- };
296
- }
297
- };
298
199
  var create_default = create;