@domql/element 3.0.1 → 3.0.6

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 (41) hide show
  1. package/create.js +0 -13
  2. package/dist/cjs/create.js +0 -9
  3. package/dist/cjs/mixins/classList.js +5 -6
  4. package/dist/cjs/mixins/registry.js +2 -2
  5. package/dist/cjs/set.js +1 -1
  6. package/dist/esm/create.js +0 -10
  7. package/dist/esm/mixins/classList.js +5 -6
  8. package/dist/esm/mixins/registry.js +3 -3
  9. package/dist/esm/set.js +1 -1
  10. package/mixins/classList.js +5 -6
  11. package/mixins/registry.js +3 -3
  12. package/package.json +8 -8
  13. package/set.js +1 -1
  14. package/dist/cjs/__tests__/checkIfOnUpdate.test.js +0 -73
  15. package/dist/cjs/__tests__/children.test.js +0 -177
  16. package/dist/cjs/__tests__/define.test.js +0 -75
  17. package/dist/cjs/__tests__/inheritStateUpdates.test.js +0 -62
  18. package/dist/cjs/__tests__/renderElement.test.js +0 -138
  19. package/dist/cjs/__tests__/resetElement.test.js +0 -35
  20. package/dist/cjs/__tests__/set.test.js +0 -256
  21. package/dist/cjs/__tests__/throughExecProps.test.js +0 -62
  22. package/dist/cjs/__tests__/throughInitialDefine.test.js +0 -79
  23. package/dist/cjs/__tests__/throughInitialExec.test.js +0 -73
  24. package/dist/cjs/__tests__/throughUpdatedDefine.test.js +0 -69
  25. package/dist/cjs/__tests__/throughUpdatedExec.test.js +0 -84
  26. package/dist/cjs/__tests__/tree.test.js +0 -11
  27. package/dist/cjs/__tests__/update.test.js +0 -219
  28. package/dist/esm/__tests__/checkIfOnUpdate.test.js +0 -73
  29. package/dist/esm/__tests__/children.test.js +0 -177
  30. package/dist/esm/__tests__/define.test.js +0 -53
  31. package/dist/esm/__tests__/inheritStateUpdates.test.js +0 -62
  32. package/dist/esm/__tests__/renderElement.test.js +0 -116
  33. package/dist/esm/__tests__/resetElement.test.js +0 -35
  34. package/dist/esm/__tests__/set.test.js +0 -256
  35. package/dist/esm/__tests__/throughExecProps.test.js +0 -62
  36. package/dist/esm/__tests__/throughInitialDefine.test.js +0 -79
  37. package/dist/esm/__tests__/throughInitialExec.test.js +0 -73
  38. package/dist/esm/__tests__/throughUpdatedDefine.test.js +0 -69
  39. package/dist/esm/__tests__/throughUpdatedExec.test.js +0 -84
  40. package/dist/esm/__tests__/tree.test.js +0 -11
  41. package/dist/esm/__tests__/update.test.js +0 -219
@@ -1,62 +0,0 @@
1
- var import_update = require("../update");
2
- describe("update() with inheritStateUpdates", () => {
3
- let element, options;
4
- beforeEach(() => {
5
- element = {
6
- __ref: {
7
- __state: null,
8
- __hasRootState: false,
9
- __execProps: {},
10
- __props: []
11
- },
12
- state: {
13
- calculated: 42,
14
- set: () => {
15
- return true;
16
- }
17
- },
18
- parent: {
19
- state: { baseState: true },
20
- props: {}
21
- },
22
- props: {},
23
- key: "testKey"
24
- };
25
- options = {};
26
- });
27
- it("processes full update flow when state is inherited", async () => {
28
- await import_update.update.call(element, { props: { newProp: true } }, options);
29
- expect(element.props.newProp).toBe(true);
30
- expect(element.state.baseState).toBe(true);
31
- });
32
- it("maintains state when preventInheritedStateUpdate=true", async () => {
33
- options.preventInheritedStateUpdate = true;
34
- element.state = { existing: "state" };
35
- await import_update.update.call(element, {}, options);
36
- expect(element.state).toEqual({ baseState: true });
37
- });
38
- it("overwrites state with function result", async () => {
39
- element.__ref.__state = () => ({ calculated: 42 });
40
- options.execStateFunction = true;
41
- options.stateFunctionOverwrite = true;
42
- await import_update.update.call(element, {}, options);
43
- expect(element.state.calculated).toEqual(42);
44
- });
45
- it("preserves state when beforeStateUpdate rejects", async () => {
46
- element.props.onBeforeStateUpdate = () => false;
47
- await import_update.update.call(element, { props: { shouldChange: true } }, options);
48
- expect(element.state).toEqual({ baseState: true });
49
- expect(element.props.shouldChange).toBe(true);
50
- });
51
- it("reflects parent state updates", async () => {
52
- element.parent.state = { updatedParentState: true };
53
- await import_update.update.call(element, {}, options);
54
- expect(element.state.updatedParentState).toBe(true);
55
- });
56
- it("preserves local state when __hasRootState=true", async () => {
57
- element.__ref.__hasRootState = true;
58
- element.state = { local: "data" };
59
- await import_update.update.call(element, {}, options);
60
- expect(element.state.local).toBe("data");
61
- });
62
- });
@@ -1,138 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __copyProps = (to, from, except, desc) => {
8
- if (from && typeof from === "object" || typeof from === "function") {
9
- for (let key of __getOwnPropNames(from))
10
- if (!__hasOwnProp.call(to, key) && key !== except)
11
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
- }
13
- return to;
14
- };
15
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
16
- // If the importer is in node compatibility mode or this is not an ESM
17
- // file that has been converted to a CommonJS file using a Babel-
18
- // compatible transform (i.e. "__esModule" has not been set), then set
19
- // "default" to the CommonJS "module.exports" for node compatibility.
20
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
- mod
22
- ));
23
- var import_globals = require("@jest/globals");
24
- describe("create()", () => {
25
- let props;
26
- let parent;
27
- const OLD_ENV = process.env;
28
- beforeEach(() => {
29
- props = {
30
- __ref: { __if: false, path: [], __skipCreate: true },
31
- key: "testKey",
32
- context: {
33
- defaultExtends: {},
34
- define: ["test"]
35
- },
36
- scope: "props",
37
- define: ["test"]
38
- };
39
- parent = {
40
- testKey: "parentTestKey",
41
- key: "parentKey"
42
- };
43
- import_globals.jest.resetModules();
44
- process.env = { ...OLD_ENV };
45
- });
46
- afterAll(() => {
47
- process.env = OLD_ENV;
48
- });
49
- test("should execute onlyResolveExtends when __skipCreate is true", async () => {
50
- props.__ref.__skipCreate = true;
51
- props.scope = void 0;
52
- const { create } = await import("../create");
53
- await create(props, parent, "passedKey", {
54
- onlyResolveExtends: true,
55
- define: ["test"]
56
- });
57
- expect(parent.__ref).toBeUndefined();
58
- expect(parent.passedKey).toBe(props.__ref.parent.passedKey);
59
- });
60
- test("should execute onlyResolveExtends when __ref.__if is true", async () => {
61
- props.__ref.__if = true;
62
- props.scope = "state";
63
- const { create } = await import("../create");
64
- await create(props, parent, "passedKey", {
65
- onlyResolveExtends: true,
66
- define: ["test"]
67
- });
68
- expect(parent.__ref).toBeUndefined();
69
- expect(parent.passedKey).toBe(props.__ref.parent.passedKey);
70
- });
71
- test("should execute onlyResolveExtends when scope is not state", async () => {
72
- process.env.NODE_ENV = "prod";
73
- props.__ref = void 0;
74
- const { create } = await import("../create");
75
- await create(props, parent, "passedKey", { onlyResolveExtends: true });
76
- expect(parent.__ref).toBeUndefined();
77
- expect(parent.passedKey).toBe(props.__ref.parent.passedKey);
78
- });
79
- test("should execute catch statement when __ref is undefined", async () => {
80
- process.env.NODE_ENV = "prod";
81
- props.__ref = void 0;
82
- const { create } = await import("../create");
83
- await create(props, parent, "passedKey");
84
- expect(parent.__ref).toBeUndefined();
85
- expect(parent.passedKey).toBe(props.__ref.parent.passedKey);
86
- });
87
- test("should attaches element to parent when ref.__if is false", async () => {
88
- process.env.NODE_ENV = "prod";
89
- const { create } = await import("../create");
90
- await create(props, parent, "passedKey");
91
- expect(parent.__ref).toBeUndefined();
92
- expect(parent.passedKey).toBe(props.__ref.parent.passedKey);
93
- });
94
- test("should attach element to parent when ref.__if is true", async () => {
95
- process.env.NODE_ENV = "prod";
96
- props.__if = true;
97
- const { create } = await import("../create");
98
- await create(props, parent, "passedKey");
99
- expect(parent.testKey).toBe("parentTestKey");
100
- expect(parent.passedKey).toBe(props.__ref.parent.passedKey);
101
- });
102
- test("skips createNestedChild when __uniqId exists", async () => {
103
- process.env.NODE_ENV = "prod";
104
- props.__ref = { __uniqId: "existing-id", path: [] };
105
- const { create } = await import("../create");
106
- await create(props, {}, "passedKey");
107
- expect(props.__ref.__uniqId).toBeDefined();
108
- });
109
- test("skips createNestedChild when infinite loop detected", async () => {
110
- process.env.NODE_ENV = "prod";
111
- props.__ref = { path: ["loop-path"], __uniqId: void 0 };
112
- const { create } = await import("../create");
113
- await create(props, {}, "passedKey");
114
- expect(props.__ref.__uniqId).toBeDefined();
115
- });
116
- test("should modifies path containing ComponentsGrid", async () => {
117
- process.env.NODE_ENV = "prod";
118
- props.__ref = { path: ["ComponentsGrid", "x", "y", "z"] };
119
- const { create } = await import("../create");
120
- await create(props, {}, ["ComponentsGrid", "x", "y", "z"]);
121
- expect(props.__ref.path).toEqual(["ComponentsGrid,x,y,z"]);
122
- });
123
- test("should modifies path containing demoComponent", async () => {
124
- process.env.NODE_ENV = "prod";
125
- props.__ref = { path: ["demoComponent", "a", "b", "c"] };
126
- const { create } = await import("../create");
127
- await create(props, {}, ["demoComponent", "a", "b", "c"]);
128
- expect(props.__ref.path).toEqual(["demoComponent,a,b,c"]);
129
- });
130
- test("uses element.key when key property is missing", async () => {
131
- process.env.NODE_ENV = "prod";
132
- props.__ref = { __if: false, path: [] };
133
- props.key = "fallbackKey";
134
- const { create } = await import("../create");
135
- await create(props, parent, null);
136
- expect(props.__ref.parent.fallbackKey).toBeDefined();
137
- });
138
- });
@@ -1,35 +0,0 @@
1
- var import_set = require("../set");
2
- describe("resetContent", () => {
3
- let element, ref;
4
- beforeEach(() => {
5
- ref = {
6
- contentElementKey: "content"
7
- };
8
- element = {
9
- __ref: ref,
10
- content: { node: document.createElement("div") },
11
- node: document.createElement("div"),
12
- context: {}
13
- };
14
- });
15
- it("should update contentElementKey from options", async () => {
16
- await (0, import_set.resetContent)({}, element, { contentElementKey: "mainContent" });
17
- expect(ref.contentElementKey).toBe("mainContent");
18
- expect(element.mainContent).toBeDefined();
19
- });
20
- it("should merge options correctly", async () => {
21
- await (0, import_set.resetContent)({}, element, { customOption: true });
22
- expect(element.content).toEqual(
23
- expect.objectContaining({
24
- // Verify options merging through observable behavior
25
- // (this assertion pattern would need actual create() implementation details)
26
- })
27
- );
28
- });
29
- it("should maintain context through reset", async () => {
30
- const originalContext = element.context;
31
- await (0, import_set.resetContent)({}, element, {});
32
- expect(element.context).toBe(originalContext);
33
- expect(element.content.context).toBe(originalContext);
34
- });
35
- });
@@ -1,256 +0,0 @@
1
- var import_globals = require("@jest/globals");
2
- var import_set = require("../set");
3
- describe("set", () => {
4
- let element, ref;
5
- beforeEach(() => {
6
- ref = {
7
- contentElementKey: "content",
8
- __noChildrenDifference: false
9
- };
10
- element = {
11
- __ref: ref,
12
- props: {},
13
- children: [],
14
- context: { components: {} },
15
- state: {},
16
- node: document.createElement("div"),
17
- childExtends: {},
18
- parent: { node: document.createElement("div") }
19
- };
20
- });
21
- it("updates element.props when params.props are provided", async () => {
22
- await import_set.set.call(element, { props: { title: "New Title" } });
23
- expect(element.content.props.title).toBe("New Title");
24
- });
25
- it("skips update when deepContains matches existing content", async () => {
26
- ref.__noChildrenDifference = true;
27
- const originalProps = { ...element.props };
28
- await import_set.set.call(element, { props: { id: "same" } });
29
- expect(element.props).toEqual(originalProps);
30
- });
31
- it("merges element.childExtends into params when missing", async () => {
32
- element.childExtends = { button: "PrimaryButton" };
33
- const params = { tag: "fragment", props: {} };
34
- await import_set.set.call(element, params);
35
- expect(params.childExtends).toEqual({ button: "PrimaryButton" });
36
- expect(params.props.ignoreChildExtends).toBe(true);
37
- });
38
- it("preserves content when preventContentUpdate=true and no children", async () => {
39
- const originalContent = element[ref.contentElementKey];
40
- await import_set.set.call(
41
- element,
42
- { props: { new: true } },
43
- { preventContentUpdate: true }
44
- );
45
- expect(element[ref.contentElementKey]).toBeDefined();
46
- expect(originalContent).toBeUndefined();
47
- });
48
- it("copies element.props.childProps into params when missing", async () => {
49
- element.props.childProps = { size: "large" };
50
- const params = { tag: "fragment", props: {} };
51
- await import_set.set.call(element, params);
52
- expect(params.props.childProps).toEqual({ size: "large" });
53
- expect(params.props.ignoreChildProps).toBe(true);
54
- });
55
- it("preserves state when beforeUpdate returns false", async () => {
56
- ref.__noChildrenDifference = true;
57
- const originalState = { ...element.state };
58
- await import_set.set.call(element, { state: { shouldChange: true } });
59
- expect(element.state).toEqual(originalState);
60
- });
61
- it("updates node reference when provided in params", async () => {
62
- const newNode = document.createElement("section");
63
- await import_set.set.call(element, { node: newNode });
64
- expect(element.node.tagName).toBe("DIV");
65
- });
66
- it("resolves context components in params", async () => {
67
- element.context.components = { Header: {} };
68
- await import_set.set.call(element, { Header: {} });
69
- expect(element.Header).toBeUndefined();
70
- });
71
- it("updates nested props without mutating original", async () => {
72
- const originalProps = { nested: { value: 1 } };
73
- element.props = originalProps;
74
- await import_set.set.call(element, { props: { nested: { value: 2 } } });
75
- expect(element.props.nested.value).toBe(1);
76
- expect(originalProps.nested.value).toBe(1);
77
- });
78
- it("preserves existing props when params=null", async () => {
79
- element.props = { preserveMe: true };
80
- await import_set.set.call(element, null);
81
- expect(element.props.preserveMe).toBe(true);
82
- });
83
- it("removes content correctly when calling removeContent", async () => {
84
- const content = document.createElement("div");
85
- element.content = {
86
- node: content,
87
- tag: "div",
88
- remove: import_globals.jest.fn()
89
- };
90
- element.node.appendChild(content);
91
- await import_set.set.call(element, { props: { new: true } });
92
- expect(element.content.__ref).toBeDefined();
93
- expect(element.node.contains(content)).toBeFalsy();
94
- });
95
- it("handles lazy loading with requestAnimationFrame", async () => {
96
- import_globals.jest.useFakeTimers();
97
- element.props = { lazyLoad: true };
98
- const params = { props: { test: true } };
99
- await import_set.set.call(element, params);
100
- import_globals.jest.runAllTimers();
101
- setTimeout(() => {
102
- expect(element.content).toBeDefined();
103
- }, 35);
104
- import_globals.jest.useRealTimers();
105
- });
106
- it("handles fragment content removal correctly", async () => {
107
- const remove1 = import_globals.jest.fn(() => Promise.resolve());
108
- const remove2 = import_globals.jest.fn(() => Promise.resolve());
109
- const node1 = document.createElement("div");
110
- const node2 = document.createElement("div");
111
- element.tag = "fragment";
112
- element.content = {
113
- tag: "fragment",
114
- node: element.node,
115
- __ref: {
116
- __children: ["child1", "child2"]
117
- },
118
- child1: { node: node1, remove: remove1 },
119
- child2: { node: node2, remove: remove2 }
120
- };
121
- element.node.appendChild(node1);
122
- element.node.appendChild(node2);
123
- await import_set.set.call(element, { props: { new: true } });
124
- expect(remove1).toHaveBeenCalled();
125
- expect(remove2).toHaveBeenCalled();
126
- });
127
- it("handles fragment content removal with children", async () => {
128
- const remove1 = import_globals.jest.fn();
129
- const remove2 = import_globals.jest.fn();
130
- const node1 = document.createElement("div");
131
- const node2 = document.createElement("div");
132
- element.content = {
133
- tag: "fragment",
134
- node: element.node,
135
- __ref: {
136
- __children: ["child1", "child2"]
137
- },
138
- child1: { node: node1, remove: remove1 },
139
- child2: { node: node2, remove: remove2 }
140
- };
141
- element.node.appendChild(node1);
142
- element.node.appendChild(node2);
143
- await import_set.set.call(element, { props: { new: true } });
144
- expect(remove1).toHaveBeenCalled();
145
- expect(remove2).toHaveBeenCalled();
146
- });
147
- it("merges element.childExtends into params when tag is fragment", async () => {
148
- element.tag = "fragment";
149
- element.childExtends = { button: "PrimaryButton" };
150
- const params = { tag: "fragment", props: {} };
151
- await import_set.set.call(element, params);
152
- expect(params.childExtends).toEqual(element.childExtends);
153
- });
154
- it("copies element.props.childProps into params for fragments", async () => {
155
- element.tag = "fragment";
156
- element.props.childProps = { size: "large" };
157
- const params = { tag: "fragment", props: {} };
158
- await import_set.set.call(element, params);
159
- expect(params.props.childProps).toEqual(element.props.childProps);
160
- });
161
- });
162
- describe("setContentKey", () => {
163
- test("should set default content key", () => {
164
- const element = {
165
- __ref: {}
166
- };
167
- const result = (0, import_set.setContentKey)(element);
168
- expect(result).toBe("content");
169
- expect(element.__ref.contentElementKey).toBe("content");
170
- });
171
- test("should set custom content key", () => {
172
- const element = {
173
- __ref: {}
174
- };
175
- const opts = { contentElementKey: "customContent" };
176
- const result = (0, import_set.setContentKey)(element, opts);
177
- expect(result).toBe("customContent");
178
- expect(element.__ref.contentElementKey).toBe("customContent");
179
- });
180
- test("should not override existing content key if same value", () => {
181
- const element = {
182
- __ref: {
183
- contentElementKey: "content"
184
- }
185
- };
186
- const result = (0, import_set.setContentKey)(element);
187
- expect(result).toBe("content");
188
- expect(element.__ref.contentElementKey).toBe("content");
189
- });
190
- test("should override existing content key if different value", () => {
191
- const element = {
192
- __ref: {
193
- contentElementKey: "oldContent"
194
- }
195
- };
196
- const opts = { contentElementKey: "newContent" };
197
- const result = (0, import_set.setContentKey)(element, opts);
198
- expect(result).toBe("newContent");
199
- expect(element.__ref.contentElementKey).toBe("newContent");
200
- });
201
- });
202
- describe("removeContent", () => {
203
- let element;
204
- beforeEach(() => {
205
- element = {
206
- node: document.createElement("div"),
207
- __ref: {}
208
- };
209
- });
210
- test("removes basic content", () => {
211
- const contentNode = document.createElement("span");
212
- element.content = {
213
- node: contentNode,
214
- tag: "span"
215
- };
216
- element.node.appendChild(contentNode);
217
- (0, import_set.removeContent)(element);
218
- expect(element.content).toBeUndefined();
219
- expect(element.node.children.length).toBe(0);
220
- });
221
- test("removes fragment content", () => {
222
- const remove1 = import_globals.jest.fn();
223
- const remove2 = import_globals.jest.fn();
224
- const node1 = document.createElement("div");
225
- const node2 = document.createElement("div");
226
- const fragmentNode = document.createElement("div");
227
- fragmentNode.setAttribute("fragment", "");
228
- element.node.appendChild(node1);
229
- element.node.appendChild(node2);
230
- element.content = {
231
- tag: "fragment",
232
- node: fragmentNode,
233
- __ref: {
234
- __children: ["child1", "child2"]
235
- },
236
- child1: { node: node1, remove: remove1 },
237
- child2: { node: node2, remove: remove2 }
238
- };
239
- (0, import_set.removeContent)(element);
240
- expect(remove1).toHaveBeenCalled();
241
- expect(remove2).toHaveBeenCalled();
242
- expect(element.content).toBeUndefined();
243
- expect(element.node.children.length).toBe(0);
244
- });
245
- test("handles custom content element key", () => {
246
- const contentNode = document.createElement("span");
247
- element.customContent = {
248
- node: contentNode,
249
- tag: "span"
250
- };
251
- element.node.appendChild(contentNode);
252
- (0, import_set.removeContent)(element, { contentElementKey: "customContent" });
253
- expect(element.customContent).toBeUndefined();
254
- expect(element.node.children.length).toBe(0);
255
- });
256
- });
@@ -1,62 +0,0 @@
1
- var import_iterate = require("../iterate");
2
- describe("throughExecProps", () => {
3
- let element, ref;
4
- beforeEach(() => {
5
- ref = {
6
- __execProps: {}
7
- };
8
- element = {
9
- __ref: ref,
10
- props: {},
11
- state: { test: "state" },
12
- context: { test: "context" }
13
- };
14
- });
15
- it("should cache and execute define-prefixed function props", () => {
16
- element.props.isActive = () => true;
17
- element.props.hasFeature = (el, state) => state.test === "state";
18
- (0, import_iterate.throughExecProps)(element);
19
- expect(element.props.isActive).toBe(true);
20
- expect(element.props.hasFeature).toBe(true);
21
- expect(ref.__execProps).toEqual({
22
- isActive: expect.any(Function),
23
- hasFeature: expect.any(Function)
24
- });
25
- });
26
- it("should execute cached functions from previous runs", () => {
27
- ref.__execProps.value = () => "cached";
28
- element.props.value = "current";
29
- (0, import_iterate.throughExecProps)(element);
30
- expect(element.props.value).toBe("cached");
31
- });
32
- it("should leave non-function props unchanged", () => {
33
- element.props.title = "static text";
34
- element.props.disabled = false;
35
- (0, import_iterate.throughExecProps)(element);
36
- expect(element.props.title).toBe("static text");
37
- expect(element.props.disabled).toBe(false);
38
- expect(ref.__execProps).toEqual({});
39
- });
40
- it("should handle mixed define-prefixed and regular props", () => {
41
- element.props.useHelper = () => "helper";
42
- element.props.color = "blue";
43
- (0, import_iterate.throughExecProps)(element);
44
- expect(element.props.useHelper).toBe("helper");
45
- expect(element.props.color).toBe("blue");
46
- expect(ref.__execProps).toHaveProperty("useHelper");
47
- });
48
- it("should preserve existing cache entries", () => {
49
- ref.__execProps.existing = () => "prior";
50
- element.props.existing = "new";
51
- (0, import_iterate.throughExecProps)(element);
52
- expect(element.props.existing).toBe("prior");
53
- expect(ref.__execProps.existing).toBeInstanceOf(Function);
54
- });
55
- it("should pass correct execution context", () => {
56
- element.props.checkContext = function(el, state, context) {
57
- return this === element && state === element.state && context === element.context;
58
- };
59
- (0, import_iterate.throughExecProps)(element);
60
- expect(typeof element.props.checkContext).toBe("function");
61
- });
62
- });
@@ -1,79 +0,0 @@
1
- var import_iterate = require("../iterate");
2
- describe("throughInitialDefine", () => {
3
- let element, ref;
4
- beforeEach(() => {
5
- ref = {
6
- __exec: {},
7
- __defineCache: {}
8
- };
9
- element = {
10
- __ref: ref,
11
- define: {},
12
- state: { testState: true },
13
- context: { testContext: true }
14
- };
15
- });
16
- it("should merge local and global define objects", () => {
17
- element.define = { localProp: () => "local" };
18
- element.context.define = { globalProp: () => "global" };
19
- (0, import_iterate.throughInitialDefine)(element);
20
- expect(element.localProp).toBe("local");
21
- expect(element.globalProp).toBe("global");
22
- });
23
- it("should cache and execute define functions", () => {
24
- element.define.testProp = (value) => "defined value";
25
- element.testProp = () => "initial value";
26
- (0, import_iterate.throughInitialDefine)(element);
27
- expect(element.testProp).toBe("defined value");
28
- expect(ref.__exec.testProp).toBeInstanceOf(Function);
29
- expect(ref.__defineCache.testProp).toBe("initial value");
30
- });
31
- it("should skip execution for method properties", () => {
32
- element.define.update = (value) => "should not execute";
33
- element.update = () => "built-in method";
34
- (0, import_iterate.throughInitialDefine)(element);
35
- expect(ref.__exec).not.toHaveProperty("update");
36
- expect(ref.__defineCache).not.toHaveProperty("update");
37
- });
38
- it("should handle parse method in execution result", () => {
39
- element.define.testProp = () => ({ parse: () => "parsed value" });
40
- element.testProp = () => "initial value";
41
- (0, import_iterate.throughInitialDefine)(element);
42
- expect(ref.__defineCache.testProp).toBe("initial value");
43
- });
44
- it("should pass correct arguments to define functions", () => {
45
- element.define.testProp = (value, el, state, context) => ({
46
- valueMatch: value === "initial value",
47
- elMatch: el === element,
48
- stateMatch: state === element.state,
49
- contextMatch: context === element.context
50
- });
51
- element.testProp = "initial value";
52
- (0, import_iterate.throughInitialDefine)(element);
53
- expect(element.testProp).toEqual({
54
- valueMatch: true,
55
- elMatch: true,
56
- stateMatch: true,
57
- contextMatch: true
58
- });
59
- });
60
- it("should handle non-function element properties", () => {
61
- element.define.testProp = (value) => "defined value";
62
- element.testProp = "non-function value";
63
- (0, import_iterate.throughInitialDefine)(element);
64
- expect(element.testProp).toBe("defined value");
65
- });
66
- it("should handle empty define objects", () => {
67
- (0, import_iterate.throughInitialDefine)(element);
68
- expect(element).toEqual({
69
- ...element,
70
- __ref: ref
71
- });
72
- });
73
- it("should handle null or undefined define properties", () => {
74
- element.define.testProp = () => null;
75
- element.testProp = "initial value";
76
- (0, import_iterate.throughInitialDefine)(element);
77
- expect(element.testProp).toBe("initial value");
78
- });
79
- });