@furystack/shades 11.0.35 → 12.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 (215) hide show
  1. package/CHANGELOG.md +337 -0
  2. package/README.md +99 -13
  3. package/esm/compile-route.spec.d.ts +2 -0
  4. package/esm/compile-route.spec.d.ts.map +1 -0
  5. package/esm/compile-route.spec.js +34 -0
  6. package/esm/compile-route.spec.js.map +1 -0
  7. package/esm/component-factory.spec.js +13 -5
  8. package/esm/component-factory.spec.js.map +1 -1
  9. package/esm/components/index.d.ts +4 -1
  10. package/esm/components/index.d.ts.map +1 -1
  11. package/esm/components/index.js +4 -1
  12. package/esm/components/index.js.map +1 -1
  13. package/esm/components/lazy-load.d.ts +2 -4
  14. package/esm/components/lazy-load.d.ts.map +1 -1
  15. package/esm/components/lazy-load.js +40 -24
  16. package/esm/components/lazy-load.js.map +1 -1
  17. package/esm/components/lazy-load.spec.js +57 -50
  18. package/esm/components/lazy-load.spec.js.map +1 -1
  19. package/esm/components/link-to-route.d.ts +2 -0
  20. package/esm/components/link-to-route.d.ts.map +1 -1
  21. package/esm/components/link-to-route.js +3 -2
  22. package/esm/components/link-to-route.js.map +1 -1
  23. package/esm/components/link-to-route.spec.js +13 -9
  24. package/esm/components/link-to-route.spec.js.map +1 -1
  25. package/esm/components/nested-route-link.d.ts +62 -0
  26. package/esm/components/nested-route-link.d.ts.map +1 -0
  27. package/esm/components/nested-route-link.js +66 -0
  28. package/esm/components/nested-route-link.js.map +1 -0
  29. package/esm/components/nested-route-link.spec.d.ts +2 -0
  30. package/esm/components/nested-route-link.spec.d.ts.map +1 -0
  31. package/esm/components/nested-route-link.spec.js +179 -0
  32. package/esm/components/nested-route-link.spec.js.map +1 -0
  33. package/esm/components/nested-route-types.d.ts +37 -0
  34. package/esm/components/nested-route-types.d.ts.map +1 -0
  35. package/esm/components/nested-route-types.js +2 -0
  36. package/esm/components/nested-route-types.js.map +1 -0
  37. package/esm/components/nested-router.d.ts +103 -0
  38. package/esm/components/nested-router.d.ts.map +1 -0
  39. package/esm/components/nested-router.js +178 -0
  40. package/esm/components/nested-router.js.map +1 -0
  41. package/esm/components/nested-router.spec.d.ts +2 -0
  42. package/esm/components/nested-router.spec.d.ts.map +1 -0
  43. package/esm/components/nested-router.spec.js +659 -0
  44. package/esm/components/nested-router.spec.js.map +1 -0
  45. package/esm/components/route-link.d.ts +4 -0
  46. package/esm/components/route-link.d.ts.map +1 -1
  47. package/esm/components/route-link.js +9 -10
  48. package/esm/components/route-link.js.map +1 -1
  49. package/esm/components/route-link.spec.js +16 -12
  50. package/esm/components/route-link.spec.js.map +1 -1
  51. package/esm/components/router.d.ts +20 -2
  52. package/esm/components/router.d.ts.map +1 -1
  53. package/esm/components/router.js +3 -0
  54. package/esm/components/router.js.map +1 -1
  55. package/esm/components/router.spec.js +75 -74
  56. package/esm/components/router.spec.js.map +1 -1
  57. package/esm/css-generator.d.ts +50 -0
  58. package/esm/css-generator.d.ts.map +1 -0
  59. package/esm/css-generator.js +107 -0
  60. package/esm/css-generator.js.map +1 -0
  61. package/esm/css-generator.spec.d.ts +2 -0
  62. package/esm/css-generator.spec.d.ts.map +1 -0
  63. package/esm/css-generator.spec.js +162 -0
  64. package/esm/css-generator.spec.js.map +1 -0
  65. package/esm/index.d.ts +2 -0
  66. package/esm/index.d.ts.map +1 -1
  67. package/esm/index.js +2 -0
  68. package/esm/index.js.map +1 -1
  69. package/esm/initialize.d.ts +11 -0
  70. package/esm/initialize.d.ts.map +1 -1
  71. package/esm/initialize.js +5 -0
  72. package/esm/initialize.js.map +1 -1
  73. package/esm/jsx.d.ts +83 -2
  74. package/esm/jsx.d.ts.map +1 -1
  75. package/esm/models/children-list.d.ts +5 -1
  76. package/esm/models/children-list.d.ts.map +1 -1
  77. package/esm/models/css-object.d.ts +33 -0
  78. package/esm/models/css-object.d.ts.map +1 -0
  79. package/esm/models/css-object.js +2 -0
  80. package/esm/models/css-object.js.map +1 -0
  81. package/esm/models/index.d.ts +1 -0
  82. package/esm/models/index.d.ts.map +1 -1
  83. package/esm/models/index.js +1 -0
  84. package/esm/models/index.js.map +1 -1
  85. package/esm/models/partial-element.d.ts +12 -2
  86. package/esm/models/partial-element.d.ts.map +1 -1
  87. package/esm/models/render-options.d.ts +89 -3
  88. package/esm/models/render-options.d.ts.map +1 -1
  89. package/esm/models/selection-state.d.ts +4 -0
  90. package/esm/models/selection-state.d.ts.map +1 -1
  91. package/esm/services/location-service.d.ts +11 -0
  92. package/esm/services/location-service.d.ts.map +1 -1
  93. package/esm/services/location-service.js +11 -0
  94. package/esm/services/location-service.js.map +1 -1
  95. package/esm/services/resource-manager.d.ts +24 -0
  96. package/esm/services/resource-manager.d.ts.map +1 -1
  97. package/esm/services/resource-manager.js +30 -0
  98. package/esm/services/resource-manager.js.map +1 -1
  99. package/esm/services/resource-manager.spec.js +93 -0
  100. package/esm/services/resource-manager.spec.js.map +1 -1
  101. package/esm/services/screen-service.d.ts +81 -4
  102. package/esm/services/screen-service.d.ts.map +1 -1
  103. package/esm/services/screen-service.js +75 -4
  104. package/esm/services/screen-service.js.map +1 -1
  105. package/esm/services/screen-service.spec.js +91 -7
  106. package/esm/services/screen-service.spec.js.map +1 -1
  107. package/esm/shade-component.d.ts +17 -4
  108. package/esm/shade-component.d.ts.map +1 -1
  109. package/esm/shade-component.js +67 -5
  110. package/esm/shade-component.js.map +1 -1
  111. package/esm/shade-host-props-ref.integration.spec.d.ts +2 -0
  112. package/esm/shade-host-props-ref.integration.spec.d.ts.map +1 -0
  113. package/esm/shade-host-props-ref.integration.spec.js +381 -0
  114. package/esm/shade-host-props-ref.integration.spec.js.map +1 -0
  115. package/esm/shade-resources.integration.spec.js +208 -39
  116. package/esm/shade-resources.integration.spec.js.map +1 -1
  117. package/esm/shade.d.ts +34 -15
  118. package/esm/shade.d.ts.map +1 -1
  119. package/esm/shade.js +180 -33
  120. package/esm/shade.js.map +1 -1
  121. package/esm/shade.spec.d.ts +2 -0
  122. package/esm/shade.spec.d.ts.map +1 -0
  123. package/esm/shade.spec.js +198 -0
  124. package/esm/shade.spec.js.map +1 -0
  125. package/esm/shades.integration.spec.js +135 -72
  126. package/esm/shades.integration.spec.js.map +1 -1
  127. package/esm/style-manager.d.ts +65 -0
  128. package/esm/style-manager.d.ts.map +1 -0
  129. package/esm/style-manager.js +95 -0
  130. package/esm/style-manager.js.map +1 -0
  131. package/esm/style-manager.spec.d.ts +2 -0
  132. package/esm/style-manager.spec.d.ts.map +1 -0
  133. package/esm/style-manager.spec.js +179 -0
  134. package/esm/style-manager.spec.js.map +1 -0
  135. package/esm/styled-element.spec.d.ts +2 -0
  136. package/esm/styled-element.spec.d.ts.map +1 -0
  137. package/esm/styled-element.spec.js +86 -0
  138. package/esm/styled-element.spec.js.map +1 -0
  139. package/esm/styled-shade.spec.d.ts +2 -0
  140. package/esm/styled-shade.spec.d.ts.map +1 -0
  141. package/esm/styled-shade.spec.js +66 -0
  142. package/esm/styled-shade.spec.js.map +1 -0
  143. package/esm/svg-types.d.ts +389 -0
  144. package/esm/svg-types.d.ts.map +1 -0
  145. package/esm/svg-types.js +9 -0
  146. package/esm/svg-types.js.map +1 -0
  147. package/esm/svg.d.ts +15 -0
  148. package/esm/svg.d.ts.map +1 -0
  149. package/esm/svg.js +76 -0
  150. package/esm/svg.js.map +1 -0
  151. package/esm/svg.spec.d.ts +2 -0
  152. package/esm/svg.spec.d.ts.map +1 -0
  153. package/esm/svg.spec.js +80 -0
  154. package/esm/svg.spec.js.map +1 -0
  155. package/esm/vnode.d.ts +103 -0
  156. package/esm/vnode.d.ts.map +1 -0
  157. package/esm/vnode.integration.spec.d.ts +2 -0
  158. package/esm/vnode.integration.spec.d.ts.map +1 -0
  159. package/esm/vnode.integration.spec.js +494 -0
  160. package/esm/vnode.integration.spec.js.map +1 -0
  161. package/esm/vnode.js +453 -0
  162. package/esm/vnode.js.map +1 -0
  163. package/esm/vnode.spec.d.ts +2 -0
  164. package/esm/vnode.spec.d.ts.map +1 -0
  165. package/esm/vnode.spec.js +473 -0
  166. package/esm/vnode.spec.js.map +1 -0
  167. package/package.json +3 -3
  168. package/src/compile-route.spec.ts +39 -0
  169. package/src/component-factory.spec.tsx +18 -5
  170. package/src/components/index.ts +4 -1
  171. package/src/components/lazy-load.spec.tsx +82 -75
  172. package/src/components/lazy-load.tsx +49 -27
  173. package/src/components/link-to-route.spec.tsx +25 -21
  174. package/src/components/link-to-route.tsx +4 -2
  175. package/src/components/nested-route-link.spec.tsx +303 -0
  176. package/src/components/nested-route-link.tsx +100 -0
  177. package/src/components/nested-route-types.ts +42 -0
  178. package/src/components/nested-router.spec.tsx +817 -0
  179. package/src/components/nested-router.tsx +256 -0
  180. package/src/components/route-link.spec.tsx +22 -18
  181. package/src/components/route-link.tsx +10 -10
  182. package/src/components/router.spec.tsx +109 -108
  183. package/src/components/router.tsx +15 -2
  184. package/src/css-generator.spec.ts +183 -0
  185. package/src/css-generator.ts +117 -0
  186. package/src/index.ts +2 -0
  187. package/src/initialize.ts +12 -0
  188. package/src/jsx.ts +129 -2
  189. package/src/models/children-list.ts +7 -1
  190. package/src/models/css-object.ts +34 -0
  191. package/src/models/index.ts +1 -0
  192. package/src/models/partial-element.ts +13 -2
  193. package/src/models/render-options.ts +90 -3
  194. package/src/models/selection-state.ts +4 -0
  195. package/src/services/location-service.tsx +11 -0
  196. package/src/services/resource-manager.spec.ts +116 -0
  197. package/src/services/resource-manager.ts +30 -0
  198. package/src/services/screen-service.spec.ts +109 -7
  199. package/src/services/screen-service.ts +81 -4
  200. package/src/shade-component.ts +72 -6
  201. package/src/shade-host-props-ref.integration.spec.tsx +460 -0
  202. package/src/shade-resources.integration.spec.tsx +276 -52
  203. package/src/shade.spec.tsx +239 -0
  204. package/src/shade.ts +211 -56
  205. package/src/shades.integration.spec.tsx +154 -80
  206. package/src/style-manager.spec.ts +229 -0
  207. package/src/style-manager.ts +104 -0
  208. package/src/styled-element.spec.tsx +117 -0
  209. package/src/styled-shade.spec.ts +86 -0
  210. package/src/svg-types.ts +437 -0
  211. package/src/svg.spec.ts +89 -0
  212. package/src/svg.ts +78 -0
  213. package/src/vnode.integration.spec.tsx +657 -0
  214. package/src/vnode.spec.ts +579 -0
  215. package/src/vnode.ts +508 -0
@@ -4,7 +4,7 @@ import { sleepAsync, usingAsync } from '@furystack/utils';
4
4
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
5
5
  import { initializeShadeRoot } from './initialize.js';
6
6
  import { createComponent } from './shade-component.js';
7
- import { Shade } from './shade.js';
7
+ import { flushUpdates, Shade } from './shade.js';
8
8
  describe('Shades integration tests', () => {
9
9
  beforeEach(() => {
10
10
  document.body.innerHTML = '<div id="root"></div>';
@@ -12,27 +12,31 @@ describe('Shades integration tests', () => {
12
12
  afterEach(() => {
13
13
  document.body.innerHTML = '';
14
14
  });
15
- it('Should mount a custom component to a Shade root', () => {
16
- const injector = new Injector();
17
- const rootElement = document.getElementById('root');
18
- const ExampleComponent = Shade({ render: () => createComponent("div", null, "Hello"), shadowDomName: 'shades-example' });
19
- initializeShadeRoot({
20
- injector,
21
- rootElement,
22
- jsxElement: createComponent(ExampleComponent, null),
15
+ it('Should mount a custom component to a Shade root', async () => {
16
+ await usingAsync(new Injector(), async (injector) => {
17
+ const rootElement = document.getElementById('root');
18
+ const ExampleComponent = Shade({ render: () => createComponent("div", null, "Hello"), shadowDomName: 'shades-example' });
19
+ initializeShadeRoot({
20
+ injector,
21
+ rootElement,
22
+ jsxElement: createComponent(ExampleComponent, null),
23
+ });
24
+ await flushUpdates();
25
+ expect(document.body.innerHTML).toBe('<div id="root"><shades-example><div>Hello</div></shades-example></div>');
23
26
  });
24
- expect(document.body.innerHTML).toBe('<div id="root"><shades-example><div>Hello</div></shades-example></div>');
25
27
  });
26
- it('Should mount a custom component with a string render result', () => {
27
- const injector = new Injector();
28
- const rootElement = document.getElementById('root');
29
- const ExampleComponent = Shade({ render: () => 'Hello', shadowDomName: 'shades-string-render-result' });
30
- initializeShadeRoot({
31
- injector,
32
- rootElement,
33
- jsxElement: createComponent(ExampleComponent, null),
28
+ it('Should mount a custom component with a string render result', async () => {
29
+ await usingAsync(new Injector(), async (injector) => {
30
+ const rootElement = document.getElementById('root');
31
+ const ExampleComponent = Shade({ render: () => 'Hello', shadowDomName: 'shades-string-render-result' });
32
+ initializeShadeRoot({
33
+ injector,
34
+ rootElement,
35
+ jsxElement: createComponent(ExampleComponent, null),
36
+ });
37
+ await flushUpdates();
38
+ expect(document.body.innerHTML).toBe('<div id="root"><shades-string-render-result>Hello</shades-string-render-result></div>');
34
39
  });
35
- expect(document.body.innerHTML).toBe('<div id="root"><shades-string-render-result>Hello</shades-string-render-result></div>');
36
40
  });
37
41
  it('Should mount a custom component with null render result', async () => {
38
42
  await usingAsync(new Injector(), async (injector) => {
@@ -43,6 +47,7 @@ describe('Shades integration tests', () => {
43
47
  rootElement,
44
48
  jsxElement: createComponent(ExampleComponent, null),
45
49
  });
50
+ await flushUpdates();
46
51
  expect(document.body.innerHTML).toBe('<div id="root"><shades-null-render-result></shades-null-render-result></div>');
47
52
  });
48
53
  });
@@ -60,6 +65,7 @@ describe('Shades integration tests', () => {
60
65
  rootElement,
61
66
  jsxElement: createComponent(ExampleComponent, null),
62
67
  });
68
+ await flushUpdates();
63
69
  expect(document.body.innerHTML).toBe('<div id="root"><shades-fragment-render-result><p>1</p><p>2</p></shades-fragment-render-result></div>');
64
70
  });
65
71
  });
@@ -78,6 +84,7 @@ describe('Shades integration tests', () => {
78
84
  rootElement,
79
85
  jsxElement: createComponent(ExampleComponent, null),
80
86
  });
87
+ await flushUpdates();
81
88
  expect(document.body.innerHTML).toBe('<div id="root"><shades-fragment-render-result-nested><p><p>1</p><p>2</p></p></shades-fragment-render-result-nested></div>');
82
89
  });
83
90
  });
@@ -99,6 +106,7 @@ describe('Shades integration tests', () => {
99
106
  rootElement,
100
107
  jsxElement: createComponent(ExampleComponent, null),
101
108
  });
109
+ await flushUpdates();
102
110
  expect(document.body.innerHTML).toBe('<div id="root"><shades-fragment-render-result-2><shades-fragment-test-custom-component><p>Hello</p></shades-fragment-test-custom-component><shades-fragment-test-custom-component><p>Hello</p></shades-fragment-test-custom-component></shades-fragment-render-result-2></div>');
103
111
  });
104
112
  });
@@ -121,53 +129,38 @@ describe('Shades integration tests', () => {
121
129
  createComponent(ExampleSubs, { no: 2 }),
122
130
  createComponent(ExampleSubs, { no: 3 }))),
123
131
  });
132
+ await flushUpdates();
124
133
  expect(document.body.innerHTML).toBe('<div id="root"><shades-example-2><div><shades-example-sub><div>1</div></shades-example-sub><shades-example-sub><div>2</div></shades-example-sub><shades-example-sub><div>3</div></shades-example-sub></div></shades-example-2></div>');
125
134
  });
126
135
  });
127
- it("Should execute the constructed and constructed's cleanup callback", async () => {
136
+ it('Should execute useDisposable cleanup on component disconnection', async () => {
128
137
  await usingAsync(new Injector(), async (injector) => {
129
138
  const rootElement = document.getElementById('root');
130
139
  const cleanup = vi.fn();
131
- const constructed = vi.fn(() => cleanup);
140
+ const setup = vi.fn();
132
141
  const ExampleComponent = Shade({
133
- constructed,
134
142
  shadowDomName: 'example-component-1',
135
- render: () => createComponent("div", null, "Hello"),
143
+ render: ({ useDisposable }) => {
144
+ useDisposable('test', () => {
145
+ setup();
146
+ return { [Symbol.dispose]: cleanup };
147
+ });
148
+ return createComponent("div", null, "Hello");
149
+ },
136
150
  });
137
151
  initializeShadeRoot({
138
152
  injector,
139
153
  rootElement,
140
154
  jsxElement: createComponent(ExampleComponent, null),
141
155
  });
142
- expect(constructed).toBeCalled();
156
+ await flushUpdates();
157
+ expect(setup).toBeCalled();
143
158
  expect(cleanup).not.toBeCalled();
144
159
  document.body.innerHTML = '';
145
160
  await sleepAsync(10); // Dispose can be async
146
161
  expect(cleanup).toBeCalled();
147
162
  });
148
163
  });
149
- it('Should execute the onAttach and onDetach callbacks', async () => {
150
- await usingAsync(new Injector(), async (injector) => {
151
- const rootElement = document.getElementById('root');
152
- const onAttach = vi.fn();
153
- const onDetach = vi.fn();
154
- const ExampleComponent = Shade({
155
- onAttach,
156
- onDetach,
157
- shadowDomName: 'example-component-2',
158
- render: () => createComponent("div", null, "Hello"),
159
- });
160
- initializeShadeRoot({
161
- injector,
162
- rootElement,
163
- jsxElement: createComponent(ExampleComponent, null),
164
- });
165
- expect(onAttach).toBeCalled();
166
- expect(onDetach).not.toBeCalled();
167
- document.body.innerHTML = '';
168
- expect(onDetach).toBeCalled();
169
- });
170
- });
171
164
  it('Should update state', async () => {
172
165
  await usingAsync(new Injector(), async (injector) => {
173
166
  const rootElement = document.getElementById('root');
@@ -187,16 +180,23 @@ describe('Shades integration tests', () => {
187
180
  rootElement,
188
181
  jsxElement: createComponent(ExampleComponent, null),
189
182
  });
190
- const plus = () => document.getElementById('plus')?.click();
191
- const minus = () => document.getElementById('minus')?.click();
183
+ await flushUpdates();
184
+ const plus = async () => {
185
+ document.getElementById('plus')?.click();
186
+ await flushUpdates();
187
+ };
188
+ const minus = async () => {
189
+ document.getElementById('minus')?.click();
190
+ await flushUpdates();
191
+ };
192
192
  const expectCount = (count) => expect(document.body.innerHTML).toContain(`Count is ${count}`);
193
193
  expectCount(0);
194
- plus();
194
+ await plus();
195
195
  expectCount(1);
196
- plus();
196
+ await plus();
197
197
  expectCount(2);
198
- minus();
199
- minus();
198
+ await minus();
199
+ await minus();
200
200
  expectCount(0);
201
201
  });
202
202
  });
@@ -238,20 +238,27 @@ describe('Shades integration tests', () => {
238
238
  rootElement,
239
239
  jsxElement: createComponent(ExampleComponent, null),
240
240
  });
241
- const plus = () => document.getElementById('plus')?.click();
242
- const minus = () => document.getElementById('minus')?.click();
241
+ await flushUpdates();
242
+ const plus = async () => {
243
+ document.getElementById('plus')?.click();
244
+ await flushUpdates();
245
+ };
246
+ const minus = async () => {
247
+ document.getElementById('minus')?.click();
248
+ await flushUpdates();
249
+ };
243
250
  const expectCount = (count) => expect(document.body.innerHTML).toContain(`Count is ${count}`);
244
251
  await sleepAsync(100);
245
252
  expectCount(0);
246
253
  await sleepAsync(100);
247
- plus();
254
+ await plus();
248
255
  expectCount(1);
249
256
  expect(store.getItem('count')).toBe('1');
250
- plus();
257
+ await plus();
251
258
  expectCount(2);
252
259
  expect(store.getItem('count')).toBe('2');
253
- minus();
254
- minus();
260
+ await minus();
261
+ await minus();
255
262
  expectCount(0);
256
263
  expect(store.getItem('count')).toBe('0');
257
264
  });
@@ -275,19 +282,26 @@ describe('Shades integration tests', () => {
275
282
  rootElement,
276
283
  jsxElement: createComponent(ExampleComponent, null),
277
284
  });
278
- const plus = () => document.getElementById('plus')?.click();
279
- const minus = () => document.getElementById('minus')?.click();
285
+ await flushUpdates();
286
+ const plus = async () => {
287
+ document.getElementById('plus')?.click();
288
+ await flushUpdates();
289
+ };
290
+ const minus = async () => {
291
+ document.getElementById('minus')?.click();
292
+ await flushUpdates();
293
+ };
280
294
  const expectCount = (count) => expect(document.body.innerHTML).toContain(`Count is ${count}`);
281
295
  expectCount(0);
282
296
  await sleepAsync(100);
283
- plus();
297
+ await plus();
284
298
  expectCount(1);
285
299
  expect(location.search).toBe(`?${serializeToQueryString({ count: 1 })}`);
286
- plus();
300
+ await plus();
287
301
  expectCount(2);
288
302
  expect(location.search).toBe(`?${serializeToQueryString({ count: 2 })}`);
289
- minus();
290
- minus();
303
+ await minus();
304
+ await minus();
291
305
  expectCount(0);
292
306
  expect(location.search).toBe(`?${serializeToQueryString({ count: 0 })}`);
293
307
  });
@@ -323,24 +337,73 @@ describe('Shades integration tests', () => {
323
337
  jsxElement: (createComponent(Parent, null,
324
338
  createComponent(Child, null))),
325
339
  });
326
- const plus = () => document.getElementById('plus')?.click();
327
- const minus = () => document.getElementById('minus')?.click();
340
+ await flushUpdates();
341
+ const plus = async () => {
342
+ document.getElementById('plus')?.click();
343
+ await flushUpdates();
344
+ };
345
+ const minus = async () => {
346
+ document.getElementById('minus')?.click();
347
+ await flushUpdates();
348
+ };
328
349
  const expectCount = (count) => expect(document.body.innerHTML).toContain(`Count is ${count}`);
329
- const toggleChildren = () => document.getElementById('showHideChildren')?.click();
350
+ const toggleChildren = async () => {
351
+ document.getElementById('showHideChildren')?.click();
352
+ await flushUpdates();
353
+ };
330
354
  expectCount(0);
331
- plus();
355
+ await plus();
332
356
  expectCount(1);
333
- toggleChildren();
357
+ await toggleChildren();
334
358
  expect(document.getElementById('plus')).toBeNull();
335
359
  await sleepAsync(10); // Dispose can be async
336
- toggleChildren();
360
+ await toggleChildren();
337
361
  expect(document.getElementById('plus')).toBeDefined();
338
362
  expectCount(0);
339
- plus();
363
+ await plus();
340
364
  expectCount(1);
341
- minus();
365
+ await minus();
342
366
  expectCount(0);
343
367
  });
344
368
  });
369
+ it('Should propagate changed props from parent to child Shade component', async () => {
370
+ await usingAsync(new Injector(), async (injector) => {
371
+ const rootElement = document.getElementById('root');
372
+ const ChildComponent = Shade({
373
+ shadowDomName: 'shade-prop-child',
374
+ render: ({ props }) => {
375
+ return createComponent("input", { type: "checkbox", disabled: props.isDisabled, "data-testid": "inner-input" });
376
+ },
377
+ });
378
+ const ParentComponent = Shade({
379
+ shadowDomName: 'shade-prop-parent',
380
+ render: ({ useState }) => {
381
+ const [isDisabled, setIsDisabled] = useState('isDisabled', false);
382
+ return (createComponent("div", null,
383
+ createComponent("button", { id: "toggle-disabled", onclick: () => setIsDisabled(!isDisabled) }, "Toggle"),
384
+ createComponent(ChildComponent, { isDisabled: isDisabled })));
385
+ },
386
+ });
387
+ initializeShadeRoot({
388
+ injector,
389
+ rootElement,
390
+ jsxElement: createComponent(ParentComponent, null),
391
+ });
392
+ await flushUpdates();
393
+ await flushUpdates();
394
+ const innerInput = document.querySelector('[data-testid="inner-input"]');
395
+ expect(innerInput).toBeTruthy();
396
+ expect(innerInput.disabled).toBe(false);
397
+ // Click the toggle button
398
+ const toggleBtn = document.getElementById('toggle-disabled');
399
+ toggleBtn.click();
400
+ // Wait for parent re-render + child re-render (two microtask levels)
401
+ await flushUpdates();
402
+ await flushUpdates();
403
+ await flushUpdates();
404
+ const updatedInput = document.querySelector('[data-testid="inner-input"]');
405
+ expect(updatedInput.disabled).toBe(true);
406
+ });
407
+ });
345
408
  });
346
409
  //# sourceMappingURL=shades.integration.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shades.integration.spec.js","sourceRoot":"","sources":["../src/shades.integration.spec.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shades.integration.spec.js","sourceRoot":"","sources":["../src/shades.integration.spec.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import type { CSSObject } from './models/css-object.js';
2
+ /**
3
+ * Singleton that manages component CSS injection.
4
+ * Creates and maintains a shared `<style>` element in the document head,
5
+ * and tracks registered component styles to avoid duplicates.
6
+ */
7
+ declare class StyleManagerClass {
8
+ private styleElement;
9
+ private registeredComponents;
10
+ /**
11
+ * Gets or creates the shared style element
12
+ * @returns The style element for CSS injection
13
+ */
14
+ private getStyleElement;
15
+ /**
16
+ * Registers CSS styles for a component.
17
+ * Styles are only injected once per component (based on the custom element name).
18
+ *
19
+ * @param shadowDomName - The custom element tag name (used as CSS selector)
20
+ * @param cssObject - The CSSObject containing styles and nested selectors
21
+ * @param elementBaseName - Optional base element name for customized built-in elements (e.g., 'a', 'button').
22
+ * When provided, generates selector like `a[is="component-name"]` instead of `component-name`
23
+ * @returns True if styles were injected, false if already registered
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * // Regular custom element
28
+ * StyleManager.registerComponentStyles('my-button', {
29
+ * padding: '12px',
30
+ * '&:hover': { backgroundColor: 'blue' }
31
+ * })
32
+ *
33
+ * // Customized built-in element (extends anchor)
34
+ * StyleManager.registerComponentStyles('my-link', {
35
+ * color: 'blue',
36
+ * '&:hover': { textDecoration: 'underline' }
37
+ * }, 'a')
38
+ * // Generates: a[is="my-link"] { color: blue; }
39
+ * ```
40
+ */
41
+ registerComponentStyles(shadowDomName: string, cssObject: CSSObject, elementBaseName?: string): boolean;
42
+ /**
43
+ * Checks if a component's styles have already been registered
44
+ * @param shadowDomName - The component identifier to check
45
+ * @returns True if styles are already registered
46
+ */
47
+ isRegistered(shadowDomName: string): boolean;
48
+ /**
49
+ * Gets all registered component names (for debugging/testing)
50
+ * @returns Set of registered component names
51
+ */
52
+ getRegisteredComponents(): ReadonlySet<string>;
53
+ /**
54
+ * Clears all registered styles (useful for testing)
55
+ */
56
+ clear(): void;
57
+ }
58
+ /**
59
+ * Singleton instance for managing component CSS styles.
60
+ * Use this to register component-level styles that support
61
+ * pseudo-selectors and nested selectors.
62
+ */
63
+ export declare const StyleManager: StyleManagerClass;
64
+ export {};
65
+ //# sourceMappingURL=style-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-manager.d.ts","sourceRoot":"","sources":["../src/style-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAEvD;;;;GAIG;AACH,cAAM,iBAAiB;IACrB,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,oBAAoB,CAAoB;IAEhD;;;OAGG;IACH,OAAO,CAAC,eAAe;IASvB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACI,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO;IAiB9G;;;;OAIG;IACI,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAInD;;;OAGG;IACI,uBAAuB,IAAI,WAAW,CAAC,MAAM,CAAC;IAIrD;;OAEG;IACI,KAAK,IAAI,IAAI;CAQrB;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,mBAA0B,CAAA"}
@@ -0,0 +1,95 @@
1
+ import { generateCSS } from './css-generator.js';
2
+ /**
3
+ * Singleton that manages component CSS injection.
4
+ * Creates and maintains a shared `<style>` element in the document head,
5
+ * and tracks registered component styles to avoid duplicates.
6
+ */
7
+ class StyleManagerClass {
8
+ styleElement = null;
9
+ registeredComponents = new Set();
10
+ /**
11
+ * Gets or creates the shared style element
12
+ * @returns The style element for CSS injection
13
+ */
14
+ getStyleElement() {
15
+ if (!this.styleElement) {
16
+ this.styleElement = document.createElement('style');
17
+ this.styleElement.setAttribute('data-shades-styles', '');
18
+ document.head.appendChild(this.styleElement);
19
+ }
20
+ return this.styleElement;
21
+ }
22
+ /**
23
+ * Registers CSS styles for a component.
24
+ * Styles are only injected once per component (based on the custom element name).
25
+ *
26
+ * @param shadowDomName - The custom element tag name (used as CSS selector)
27
+ * @param cssObject - The CSSObject containing styles and nested selectors
28
+ * @param elementBaseName - Optional base element name for customized built-in elements (e.g., 'a', 'button').
29
+ * When provided, generates selector like `a[is="component-name"]` instead of `component-name`
30
+ * @returns True if styles were injected, false if already registered
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * // Regular custom element
35
+ * StyleManager.registerComponentStyles('my-button', {
36
+ * padding: '12px',
37
+ * '&:hover': { backgroundColor: 'blue' }
38
+ * })
39
+ *
40
+ * // Customized built-in element (extends anchor)
41
+ * StyleManager.registerComponentStyles('my-link', {
42
+ * color: 'blue',
43
+ * '&:hover': { textDecoration: 'underline' }
44
+ * }, 'a')
45
+ * // Generates: a[is="my-link"] { color: blue; }
46
+ * ```
47
+ */
48
+ registerComponentStyles(shadowDomName, cssObject, elementBaseName) {
49
+ if (this.registeredComponents.has(shadowDomName)) {
50
+ return false;
51
+ }
52
+ const selector = elementBaseName ? `${elementBaseName}[is="${shadowDomName}"]` : shadowDomName;
53
+ const css = generateCSS(selector, cssObject);
54
+ if (css) {
55
+ const styleElement = this.getStyleElement();
56
+ styleElement.textContent += `\n/* ${shadowDomName} */\n${css}\n`;
57
+ this.registeredComponents.add(shadowDomName);
58
+ return true;
59
+ }
60
+ return false;
61
+ }
62
+ /**
63
+ * Checks if a component's styles have already been registered
64
+ * @param shadowDomName - The component identifier to check
65
+ * @returns True if styles are already registered
66
+ */
67
+ isRegistered(shadowDomName) {
68
+ return this.registeredComponents.has(shadowDomName);
69
+ }
70
+ /**
71
+ * Gets all registered component names (for debugging/testing)
72
+ * @returns Set of registered component names
73
+ */
74
+ getRegisteredComponents() {
75
+ return this.registeredComponents;
76
+ }
77
+ /**
78
+ * Clears all registered styles (useful for testing)
79
+ */
80
+ clear() {
81
+ this.registeredComponents.clear();
82
+ if (this.styleElement) {
83
+ this.styleElement.textContent = '';
84
+ this.styleElement.remove();
85
+ this.styleElement = null;
86
+ }
87
+ }
88
+ }
89
+ /**
90
+ * Singleton instance for managing component CSS styles.
91
+ * Use this to register component-level styles that support
92
+ * pseudo-selectors and nested selectors.
93
+ */
94
+ export const StyleManager = new StyleManagerClass();
95
+ //# sourceMappingURL=style-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-manager.js","sourceRoot":"","sources":["../src/style-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGhD;;;;GAIG;AACH,MAAM,iBAAiB;IACb,YAAY,GAA4B,IAAI,CAAA;IAC5C,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAA;IAEhD;;;OAGG;IACK,eAAe;QACrB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;YACnD,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAA;YACxD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC9C,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACI,uBAAuB,CAAC,aAAqB,EAAE,SAAoB,EAAE,eAAwB;QAClG,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YACjD,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,QAAQ,aAAa,IAAI,CAAC,CAAC,CAAC,aAAa,CAAA;QAC9F,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC5C,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;YAC3C,YAAY,CAAC,WAAW,IAAI,QAAQ,aAAa,QAAQ,GAAG,IAAI,CAAA;YAChE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;YAC5C,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;;;OAIG;IACI,YAAY,CAAC,aAAqB;QACvC,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IACrD,CAAC;IAED;;;OAGG;IACI,uBAAuB;QAC5B,OAAO,IAAI,CAAC,oBAAoB,CAAA;IAClC,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAA;QACjC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,EAAE,CAAA;YAClC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAA;YAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QAC1B,CAAC;IACH,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,iBAAiB,EAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=style-manager.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-manager.spec.d.ts","sourceRoot":"","sources":["../src/style-manager.spec.ts"],"names":[],"mappings":""}