@fluixi/dom 1.0.0-alpha.83 → 1.0.0-alpha.85

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 (182) hide show
  1. package/dist/cdn/dom-client.cjs +1427 -1
  2. package/dist/cdn/dom-client.d.ts +2 -2
  3. package/dist/cdn/dom-client.global.js +2 -1
  4. package/dist/cdn/dom-client.js +3 -3
  5. package/dist/cdn/dom-client.mjs +1430 -1
  6. package/dist/cdn/dom.cjs +3127 -1
  7. package/dist/cdn/dom.d.ts +2 -2
  8. package/dist/cdn/dom.global.js +2 -1
  9. package/dist/cdn/dom.js +4 -4
  10. package/dist/cdn/dom.mjs +3133 -1
  11. package/dist/index.cjs +3155 -1
  12. package/dist/index.js +2 -2
  13. package/dist/index.mjs +3149 -1
  14. package/dist/lib/component/index.cjs +128 -1
  15. package/dist/lib/component/index.mjs +105 -1
  16. package/dist/lib/component/modifiers.cjs +126 -1
  17. package/dist/lib/component/modifiers.d.ts +12 -0
  18. package/dist/lib/component/modifiers.d.ts.map +1 -1
  19. package/dist/lib/component/modifiers.js +12 -84
  20. package/dist/lib/component/modifiers.mjs +105 -1
  21. package/dist/lib/dom/delegate.cjs +60 -1
  22. package/dist/lib/dom/delegate.js +1 -1
  23. package/dist/lib/dom/delegate.mjs +39 -1
  24. package/dist/lib/dom/dynamic-element.cjs +949 -1
  25. package/dist/lib/dom/dynamic-element.d.ts +3 -3
  26. package/dist/lib/dom/dynamic-element.js +2 -2
  27. package/dist/lib/dom/dynamic-element.mjs +928 -1
  28. package/dist/lib/dom/hydration-state.cjs +93 -1
  29. package/dist/lib/dom/hydration-state.d.ts +1 -1
  30. package/dist/lib/dom/hydration-state.js +1 -1
  31. package/dist/lib/dom/hydration-state.mjs +72 -1
  32. package/dist/lib/dom/hydration.cjs +685 -1
  33. package/dist/lib/dom/hydration.js +8 -8
  34. package/dist/lib/dom/hydration.mjs +664 -1
  35. package/dist/lib/dom/index.cjs +2040 -1
  36. package/dist/lib/dom/index.js +1 -1
  37. package/dist/lib/dom/index.mjs +2020 -1
  38. package/dist/lib/dom/integration.cjs +71 -1
  39. package/dist/lib/dom/integration.js +3 -3
  40. package/dist/lib/dom/integration.mjs +51 -1
  41. package/dist/lib/dom/island.cjs +790 -1
  42. package/dist/lib/dom/island.d.ts +1 -1
  43. package/dist/lib/dom/island.js +11 -11
  44. package/dist/lib/dom/island.mjs +769 -1
  45. package/dist/lib/dom/runtime.cjs +1432 -1
  46. package/dist/lib/dom/runtime.d.ts +60 -17
  47. package/dist/lib/dom/runtime.d.ts.map +1 -1
  48. package/dist/lib/dom/runtime.js +122 -79
  49. package/dist/lib/dom/runtime.mjs +1414 -1
  50. package/dist/lib/dom/server/fx-data.cjs +53 -1
  51. package/dist/lib/dom/server/fx-data.d.ts +5 -5
  52. package/dist/lib/dom/server/fx-data.js +6 -6
  53. package/dist/lib/dom/server/fx-data.mjs +32 -1
  54. package/dist/lib/dom/server/host.cjs +66 -1
  55. package/dist/lib/dom/server/host.d.ts +6 -0
  56. package/dist/lib/dom/server/host.d.ts.map +1 -1
  57. package/dist/lib/dom/server/host.js +7 -1
  58. package/dist/lib/dom/server/host.mjs +45 -1
  59. package/dist/lib/dom/server/index.cjs +759 -1
  60. package/dist/lib/dom/server/index.d.ts +1 -1
  61. package/dist/lib/dom/server/index.js +1 -1
  62. package/dist/lib/dom/server/index.mjs +743 -1
  63. package/dist/lib/dom/server/nodes.cjs +302 -1
  64. package/dist/lib/dom/server/nodes.d.ts +2 -2
  65. package/dist/lib/dom/server/nodes.d.ts.map +1 -1
  66. package/dist/lib/dom/server/nodes.js +4 -4
  67. package/dist/lib/dom/server/nodes.mjs +279 -1
  68. package/dist/lib/dom/server/parse-template.cjs +395 -1
  69. package/dist/lib/dom/server/parse-template.d.ts +1 -1
  70. package/dist/lib/dom/server/parse-template.js +4 -4
  71. package/dist/lib/dom/server/parse-template.mjs +372 -1
  72. package/dist/lib/dom/server/render.cjs +691 -1
  73. package/dist/lib/dom/server/render.d.ts +9 -1
  74. package/dist/lib/dom/server/render.d.ts.map +1 -1
  75. package/dist/lib/dom/server/render.js +23 -15
  76. package/dist/lib/dom/server/render.mjs +677 -1
  77. package/dist/lib/dom/server/request-context.cjs +110 -1
  78. package/dist/lib/dom/server/request-context.d.ts +29 -9
  79. package/dist/lib/dom/server/request-context.d.ts.map +1 -1
  80. package/dist/lib/dom/server/request-context.js +28 -8
  81. package/dist/lib/dom/server/request-context.mjs +89 -1
  82. package/dist/lib/dom/server/serialize.cjs +187 -1
  83. package/dist/lib/dom/server/serialize.js +3 -3
  84. package/dist/lib/dom/server/serialize.mjs +164 -1
  85. package/dist/lib/dom/server-renderer.cjs +760 -1
  86. package/dist/lib/dom/server-renderer.js +1 -1
  87. package/dist/lib/dom/server-renderer.mjs +745 -1
  88. package/dist/lib/dom/types.cjs +18 -1
  89. package/dist/lib/dom/utils.cjs +381 -1
  90. package/dist/lib/dom/utils.d.ts +1 -88
  91. package/dist/lib/dom/utils.d.ts.map +1 -1
  92. package/dist/lib/dom/utils.js +2 -99
  93. package/dist/lib/dom/utils.mjs +361 -1
  94. package/dist/lib/dom/versions.cjs +60 -1
  95. package/dist/lib/dom/versions.d.ts +3 -3
  96. package/dist/lib/dom/versions.d.ts.map +1 -1
  97. package/dist/lib/dom/versions.js +17 -5
  98. package/dist/lib/dom/versions.mjs +37 -1
  99. package/dist/lib/element/attributes.cjs +19 -1
  100. package/dist/lib/element/attributes.d.ts +7 -7
  101. package/dist/lib/element/attributes.js +1 -1
  102. package/dist/lib/element/attributes.mjs +1 -0
  103. package/dist/lib/element/index.cjs +19 -1
  104. package/dist/lib/element/index.mjs +1 -0
  105. package/dist/lib/element/types.cjs +18 -1
  106. package/dist/lib/element/types.d.ts +4 -5
  107. package/dist/lib/element/types.d.ts.map +1 -1
  108. package/dist/lib/element/types.js +0 -1
  109. package/dist/lib/flow/class-map.cjs +38 -1
  110. package/dist/lib/flow/class-map.d.ts +3 -3
  111. package/dist/lib/flow/class-map.js +2 -2
  112. package/dist/lib/flow/class-map.mjs +17 -1
  113. package/dist/lib/flow/client-only.cjs +57 -1
  114. package/dist/lib/flow/client-only.d.ts +4 -4
  115. package/dist/lib/flow/client-only.js +3 -3
  116. package/dist/lib/flow/client-only.mjs +36 -1
  117. package/dist/lib/flow/dynamic.cjs +53 -1
  118. package/dist/lib/flow/dynamic.d.ts +2 -2
  119. package/dist/lib/flow/dynamic.js +3 -3
  120. package/dist/lib/flow/dynamic.mjs +32 -1
  121. package/dist/lib/flow/error-boundary.cjs +43 -1
  122. package/dist/lib/flow/error-boundary.d.ts +2 -2
  123. package/dist/lib/flow/error-boundary.js +3 -3
  124. package/dist/lib/flow/error-boundary.mjs +22 -1
  125. package/dist/lib/flow/for.cjs +66 -1
  126. package/dist/lib/flow/for.d.ts +9 -9
  127. package/dist/lib/flow/for.d.ts.map +1 -1
  128. package/dist/lib/flow/for.js +2 -2
  129. package/dist/lib/flow/for.mjs +45 -1
  130. package/dist/lib/flow/index-flow.cjs +67 -1
  131. package/dist/lib/flow/index-flow.d.ts +5 -5
  132. package/dist/lib/flow/index-flow.js +4 -4
  133. package/dist/lib/flow/index-flow.mjs +46 -1
  134. package/dist/lib/flow/index.cjs +805 -1
  135. package/dist/lib/flow/index.mjs +792 -1
  136. package/dist/lib/flow/portal.cjs +538 -1
  137. package/dist/lib/flow/portal.mjs +519 -1
  138. package/dist/lib/flow/show.cjs +81 -1
  139. package/dist/lib/flow/show.d.ts +1 -1
  140. package/dist/lib/flow/show.d.ts.map +1 -1
  141. package/dist/lib/flow/show.js +4 -115
  142. package/dist/lib/flow/show.mjs +67 -1
  143. package/dist/lib/flow/style-map.cjs +43 -1
  144. package/dist/lib/flow/style-map.d.ts +3 -3
  145. package/dist/lib/flow/style-map.js +3 -3
  146. package/dist/lib/flow/style-map.mjs +22 -1
  147. package/dist/lib/flow/switch.cjs +91 -1
  148. package/dist/lib/flow/switch.d.ts +3 -3
  149. package/dist/lib/flow/switch.d.ts.map +1 -1
  150. package/dist/lib/flow/switch.js +6 -6
  151. package/dist/lib/flow/switch.mjs +70 -1
  152. package/dist/lib/flow/utils.cjs +44 -1
  153. package/dist/lib/flow/utils.d.ts +1 -1
  154. package/dist/lib/flow/utils.js +1 -1
  155. package/dist/lib/flow/utils.mjs +23 -1
  156. package/dist/lib/html.cjs +32 -1
  157. package/dist/lib/html.d.ts +6 -6
  158. package/dist/lib/html.js +5 -5
  159. package/dist/lib/html.mjs +11 -1
  160. package/dist/lib/index.cjs +3104 -1
  161. package/dist/lib/index.d.ts +0 -1
  162. package/dist/lib/index.d.ts.map +1 -1
  163. package/dist/lib/index.js +2 -3
  164. package/dist/lib/index.mjs +3097 -1
  165. package/dist/lib/shared/types.cjs +18 -1
  166. package/dist/lib/shared/types.d.ts +8 -8
  167. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  168. package/dist/version.generated.cjs +26 -1
  169. package/dist/version.generated.d.ts +1 -1
  170. package/dist/version.generated.js +2 -2
  171. package/dist/version.generated.mjs +5 -1
  172. package/package.json +7 -6
  173. package/dist/lib/jsx/control-flow/flow.cjs +0 -1
  174. package/dist/lib/jsx/control-flow/flow.d.ts +0 -2
  175. package/dist/lib/jsx/control-flow/flow.d.ts.map +0 -1
  176. package/dist/lib/jsx/control-flow/flow.js +0 -627
  177. package/dist/lib/jsx/control-flow/flow.mjs +0 -0
  178. package/dist/lib/jsx/control-flow/for-flow.cjs +0 -1
  179. package/dist/lib/jsx/control-flow/for-flow.d.ts +0 -2
  180. package/dist/lib/jsx/control-flow/for-flow.d.ts.map +0 -1
  181. package/dist/lib/jsx/control-flow/for-flow.js +0 -1
  182. package/dist/lib/jsx/control-flow/for-flow.mjs +0 -0
@@ -1,627 +0,0 @@
1
- // /**
2
- // * @fileoverview Control Flow Components for Reactive DOM
3
- // * @module @fluixi/dom/control-flow
4
- // *
5
- // * This module provides control flow components similar to SolidJS:
6
- // * - Show: Conditional rendering
7
- // * - For: Keyed list rendering
8
- // * - Index: Index-based list rendering
9
- // * - Switch/Match: Multi-way branching
10
- // * - Portal: Render in a different DOM location
11
- // * - Dynamic: Dynamic component rendering
12
- // * - ErrorBoundary: Error handling
13
- // */
14
- export {};
15
- // import {
16
- // insert,
17
- // createTextNode,
18
- // resolveValue,
19
- // isAccessor,
20
- // createRenderEffect,
21
- // } from './runtime.js';
22
- // // ============================================================================
23
- // // Types
24
- // // ============================================================================
25
- // export interface ShowProps<T> {
26
- // when: T | (() => T);
27
- // fallback?: any;
28
- // children: any | ((item: NonNullable<T>) => any);
29
- // }
30
- // export interface ForProps<T> {
31
- // each: T[] | (() => T[]);
32
- // fallback?: any;
33
- // children: (item: T, index: () => number) => any;
34
- // }
35
- // export interface IndexProps<T> {
36
- // each: T[] | (() => T[]);
37
- // fallback?: any;
38
- // children: (item: () => T, index: number) => any;
39
- // }
40
- // export interface SwitchProps {
41
- // fallback?: any;
42
- // children: any;
43
- // }
44
- // export interface MatchProps<T> {
45
- // when: T | (() => T);
46
- // children: any | ((item: NonNullable<T>) => any);
47
- // }
48
- // export interface PortalProps {
49
- // mount?: Element;
50
- // useShadow?: boolean;
51
- // ref?: (element: Element) => void;
52
- // children: any;
53
- // }
54
- // export interface DynamicProps<T> {
55
- // component: T | (() => T);
56
- // children?: any;
57
- // [key: string]: any;
58
- // }
59
- // export interface ErrorBoundaryProps {
60
- // fallback: (error: Error, reset: () => void) => any;
61
- // children: any;
62
- // }
63
- // // ============================================================================
64
- // // Show - Conditional Rendering
65
- // // ============================================================================
66
- // /**
67
- // * Show component for conditional rendering
68
- // * Only renders children when condition is truthy
69
- // *
70
- // * @example
71
- // * ```tsx
72
- // * <Show when={user()} fallback={<div>Loading...</div>}>
73
- // * {user => <div>Hello {user.name}</div>}
74
- // * </Show>
75
- // * ```
76
- // */
77
- // export function Show<T>(props: ShowProps<T>): Node {
78
- // const marker = createTextNode('');
79
- // const parent = document.createDocumentFragment();
80
- // parent.appendChild(marker);
81
- // let current: Node | Node[] | null = null;
82
- // let condition: T | undefined;
83
- // const dispose = createRenderEffect(() => {
84
- // const c =
85
- // typeof props.when === 'function' ? (props.when as any)() : props.when;
86
- // if (c) {
87
- // // Condition is truthy
88
- // if (condition !== c) {
89
- // condition = c as T;
90
- // const child =
91
- // typeof props.children === 'function'
92
- // ? props.children(c as NonNullable<T>)
93
- // : props.children;
94
- // const result = insert(parent, child, marker, current || undefined);
95
- // current = typeof result === 'function' ? result() : result;
96
- // }
97
- // } else {
98
- // // Condition is falsy
99
- // if (condition !== undefined || current !== null) {
100
- // condition = undefined;
101
- // const result = insert(
102
- // parent,
103
- // props.fallback,
104
- // marker,
105
- // current || undefined
106
- // );
107
- // current = typeof result === 'function' ? result() : result;
108
- // }
109
- // }
110
- // });
111
- // // Return the fragment or marker for insertion
112
- // return marker;
113
- // }
114
- // // ============================================================================
115
- // // For - Keyed List Rendering
116
- // // ============================================================================
117
- // /**
118
- // * For component for efficiently rendering keyed lists
119
- // * Tracks items by reference for optimal updates
120
- // *
121
- // * @example
122
- // * ```tsx
123
- // * <For each={items()} fallback={<div>No items</div>}>
124
- // * {(item, index) => <div>{index()}: {item.name}</div>}
125
- // * </For>
126
- // * ```
127
- // */
128
- // export function For<T>(props: ForProps<T>): Node {
129
- // const marker = createTextNode('');
130
- // const parent = document.createDocumentFragment();
131
- // parent.appendChild(marker);
132
- // let items: T[] = [];
133
- // let mapped: Array<{ item: T; index: number; nodes: Node | Node[] }> = [];
134
- // const dispose = createRenderEffect(() => {
135
- // const newItems =
136
- // (typeof props.each === 'function' ? (props.each as any)() : props.each) ||
137
- // [];
138
- // if (newItems.length === 0) {
139
- // // Show fallback if no items
140
- // if (mapped.length > 0) {
141
- // cleanup();
142
- // }
143
- // if (props.fallback) {
144
- // insert(parent, props.fallback, marker, undefined);
145
- // }
146
- // return;
147
- // }
148
- // // Map tracking
149
- // const temp: Array<{ item: T; index: number; nodes: Node | Node[] }> = [];
150
- // const newMapped: Array<{ item: T; index: number; nodes: Node | Node[] }> =
151
- // [];
152
- // // Find existing items
153
- // for (let i = 0; i < newItems.length; i++) {
154
- // const item = newItems[i];
155
- // const existing = mapped.find((m) => m.item === item);
156
- // if (existing) {
157
- // // Item exists, update index
158
- // newMapped.push({
159
- // item,
160
- // index: i,
161
- // nodes: existing.nodes,
162
- // });
163
- // } else {
164
- // // New item, create nodes
165
- // const indexAccessor = () => {
166
- // const found = newMapped.find((m) => m.item === item);
167
- // return found ? found.index : i;
168
- // };
169
- // const nodes = props.children(item, indexAccessor);
170
- // newMapped.push({ item, index: i, nodes });
171
- // }
172
- // }
173
- // // Update DOM
174
- // reconcileFor(parent, mapped, newMapped, marker);
175
- // items = newItems;
176
- // mapped = newMapped;
177
- // });
178
- // return marker;
179
- // }
180
- // function reconcileFor<T>(
181
- // parent: Node,
182
- // oldMapped: Array<{ item: T; index: number; nodes: Node | Node[] }>,
183
- // newMapped: Array<{ item: T; index: number; nodes: Node | Node[] }>,
184
- // marker: Node
185
- // ): void {
186
- // // Simple reconciliation - can be optimized further
187
- // if (oldMapped.length === 0) {
188
- // // Insert all new
189
- // for (const mapped of newMapped) {
190
- // insertNodes(parent, mapped.nodes, marker);
191
- // }
192
- // return;
193
- // }
194
- // if (newMapped.length === 0) {
195
- // // Remove all old
196
- // for (const mapped of oldMapped) {
197
- // removeNodes(parent, mapped.nodes);
198
- // }
199
- // return;
200
- // }
201
- // // Full reconciliation
202
- // const oldMap = new Map(oldMapped.map((m) => [m.item, m]));
203
- // const newMap = new Map(newMapped.map((m) => [m.item, m]));
204
- // // Remove items not in new list
205
- // for (const old of oldMapped) {
206
- // if (!newMap.has(old.item)) {
207
- // removeNodes(parent, old.nodes);
208
- // }
209
- // }
210
- // // Add/move items
211
- // let previousNode: Node | null = null;
212
- // for (let i = 0; i < newMapped.length; i++) {
213
- // const mapped = newMapped[i];
214
- // const nodes = Array.isArray(mapped.nodes) ? mapped.nodes : [mapped.nodes];
215
- // if (oldMap.has(mapped.item)) {
216
- // // Move if needed
217
- // const firstNode = nodes[0];
218
- // if (previousNode) {
219
- // if (previousNode.nextSibling !== firstNode) {
220
- // for (const node of nodes) {
221
- // parent.insertBefore(node, previousNode.nextSibling);
222
- // }
223
- // }
224
- // }
225
- // } else {
226
- // // Insert new
227
- // const insertPoint = previousNode ? previousNode.nextSibling : marker;
228
- // for (const node of nodes) {
229
- // parent.insertBefore(node, insertPoint);
230
- // }
231
- // }
232
- // previousNode = nodes[nodes.length - 1];
233
- // }
234
- // }
235
- // function insertNodes(parent: Node, nodes: Node | Node[], marker: Node): void {
236
- // const nodeArray = Array.isArray(nodes) ? nodes : [nodes];
237
- // for (const node of nodeArray) {
238
- // parent.insertBefore(node, marker);
239
- // }
240
- // }
241
- // function removeNodes(parent: Node, nodes: Node | Node[]): void {
242
- // const nodeArray = Array.isArray(nodes) ? nodes : [nodes];
243
- // for (const node of nodeArray) {
244
- // if (node.parentNode === parent) {
245
- // parent.removeChild(node);
246
- // }
247
- // }
248
- // }
249
- // function cleanup(): void {
250
- // // Cleanup logic if needed
251
- // }
252
- // // ============================================================================
253
- // // Index - Index-based List Rendering
254
- // // ============================================================================
255
- // /**
256
- // * Index component for rendering lists with stable indices
257
- // * Use when items change but positions don't
258
- // *
259
- // * @example
260
- // * ```tsx
261
- // * <Index each={items()}>
262
- // * {(item, index) => <div>{index}: {item().name}</div>}
263
- // * </Index>
264
- // * ```
265
- // */
266
- // export function Index<T>(props: IndexProps<T>): Node {
267
- // const marker = createTextNode('');
268
- // const parent = document.createDocumentFragment();
269
- // parent.appendChild(marker);
270
- // let items: T[] = [];
271
- // let mapped: Array<{ accessor: () => T; nodes: Node | Node[] }> = [];
272
- // const dispose = createRenderEffect(() => {
273
- // const newItems =
274
- // (typeof props.each === 'function' ? (props.each as any)() : props.each) ||
275
- // [];
276
- // if (newItems.length === 0) {
277
- // if (mapped.length > 0) {
278
- // for (const m of mapped) {
279
- // removeNodes(parent, m.nodes);
280
- // }
281
- // mapped = [];
282
- // }
283
- // if (props.fallback) {
284
- // insert(parent, props.fallback, marker, undefined);
285
- // }
286
- // return;
287
- // }
288
- // const newMapped: Array<{ accessor: () => T; nodes: Node | Node[] }> = [];
289
- // for (let i = 0; i < newItems.length; i++) {
290
- // if (i < mapped.length) {
291
- // // Update existing
292
- // const item = newItems[i];
293
- // const accessor = (() => {
294
- // let value = item;
295
- // return () => value;
296
- // })();
297
- // newMapped.push({ accessor, nodes: mapped[i].nodes });
298
- // } else {
299
- // // Create new
300
- // const item = newItems[i];
301
- // const accessor = (() => {
302
- // let value = item;
303
- // return () => value;
304
- // })();
305
- // const nodes = props.children(accessor, i);
306
- // newMapped.push({ accessor, nodes });
307
- // insertNodes(parent, nodes, marker);
308
- // }
309
- // }
310
- // // Remove extra
311
- // for (let i = newItems.length; i < mapped.length; i++) {
312
- // removeNodes(parent, mapped[i].nodes);
313
- // }
314
- // items = newItems;
315
- // mapped = newMapped;
316
- // });
317
- // return marker;
318
- // }
319
- // // ============================================================================
320
- // // Switch/Match - Multi-way Branching
321
- // // ============================================================================
322
- // /**
323
- // * Switch component for multi-way conditional rendering
324
- // *
325
- // * @example
326
- // * ```tsx
327
- // * <Switch fallback={<div>Default</div>}>
328
- // * <Match when={state() === 'loading'}>
329
- // * <div>Loading...</div>
330
- // * </Match>
331
- // * <Match when={state() === 'error'}>
332
- // * <div>Error!</div>
333
- // * </Match>
334
- // * </Switch>
335
- // * ```
336
- // */
337
- // export function Switch(props: SwitchProps): Node {
338
- // const marker = createTextNode('');
339
- // const parent = document.createDocumentFragment();
340
- // parent.appendChild(marker);
341
- // let current: Node | Node[] | null = null;
342
- // let matchedIndex = -1;
343
- // const dispose = createRenderEffect(() => {
344
- // const children = Array.isArray(props.children)
345
- // ? props.children
346
- // : [props.children];
347
- // let matched = false;
348
- // let newIndex = -1;
349
- // for (let i = 0; i < children.length; i++) {
350
- // const child = children[i];
351
- // // Check if this is a Match component result
352
- // if (child && typeof child === 'object' && 'when' in child) {
353
- // const condition =
354
- // typeof child.when === 'function' ? (child.when as any)() : child.when;
355
- // if (condition) {
356
- // matched = true;
357
- // newIndex = i;
358
- // if (matchedIndex !== newIndex) {
359
- // const content =
360
- // typeof child.children === 'function'
361
- // ? child.children(condition)
362
- // : child.children;
363
- // const result = insert(
364
- // parent,
365
- // content,
366
- // marker,
367
- // current || undefined
368
- // );
369
- // current = typeof result === 'function' ? result() : result;
370
- // matchedIndex = newIndex;
371
- // }
372
- // break;
373
- // }
374
- // }
375
- // }
376
- // if (!matched) {
377
- // if (matchedIndex !== -1 || current !== null) {
378
- // const result = insert(
379
- // parent,
380
- // props.fallback,
381
- // marker,
382
- // current || undefined
383
- // );
384
- // current = typeof result === 'function' ? result() : result;
385
- // matchedIndex = -1;
386
- // }
387
- // }
388
- // });
389
- // return marker;
390
- // }
391
- // /**
392
- // * Match component - used inside Switch
393
- // */
394
- // export function Match<T>(props: MatchProps<T>): {
395
- // when: T | (() => T);
396
- // children: any;
397
- // } {
398
- // // This returns a descriptor object for Switch to process
399
- // return props as any;
400
- // }
401
- // // ============================================================================
402
- // // Portal - Render to Different DOM Location
403
- // // ============================================================================
404
- // /**
405
- // * Portal component for rendering content outside the component tree
406
- // *
407
- // * @example
408
- // * ```tsx
409
- // * <Portal mount={document.body}>
410
- // * <div class="modal">Modal content</div>
411
- // * </Portal>
412
- // * ```
413
- // */
414
- // export function Portal(props: PortalProps): Node {
415
- // const marker = createTextNode('');
416
- // const container = props.mount || document.body;
417
- // const dispose = createRenderEffect(() => {
418
- // insert(container, props.children);
419
- // });
420
- // if (props.ref) {
421
- // props.ref(container);
422
- // }
423
- // return marker;
424
- // }
425
- // // ============================================================================
426
- // // Dynamic - Dynamic Component Rendering
427
- // // ============================================================================
428
- // /**
429
- // * Dynamic component for rendering components determined at runtime
430
- // *
431
- // * @example
432
- // * ```tsx
433
- // * <Dynamic component={activeComponent()} {...props} />
434
- // * ```
435
- // */
436
- // export function Dynamic<T>(props: DynamicProps<T>): Node {
437
- // const marker = createTextNode('');
438
- // const parent = document.createDocumentFragment();
439
- // parent.appendChild(marker);
440
- // let current: Node | Node[] | null = null;
441
- // let currentComponent: any = null;
442
- // const dispose = createRenderEffect(() => {
443
- // const component =
444
- // typeof props.component === 'function'
445
- // ? (props.component as any)()
446
- // : props.component;
447
- // if (component !== currentComponent) {
448
- // currentComponent = component;
449
- // if (typeof component === 'function') {
450
- // // Extract props (everything except 'component')
451
- // const { component: _, children, ...rest } = props;
452
- // const result = component({ ...rest, children });
453
- // const insertResult = insert(
454
- // parent,
455
- // result,
456
- // marker,
457
- // current || undefined
458
- // );
459
- // current =
460
- // typeof insertResult === 'function' ? insertResult() : insertResult;
461
- // } else if (typeof component === 'string') {
462
- // // Native element
463
- // const element = document.createElement(component);
464
- // const { component: _, children, ...rest } = props;
465
- // // Apply props
466
- // for (const key in rest) {
467
- // (element as any)[key] = rest[key];
468
- // }
469
- // if (children) {
470
- // insert(element, children);
471
- // }
472
- // const insertResult = insert(
473
- // parent,
474
- // element,
475
- // marker,
476
- // current || undefined
477
- // );
478
- // current =
479
- // typeof insertResult === 'function' ? insertResult() : insertResult;
480
- // }
481
- // }
482
- // });
483
- // return marker;
484
- // }
485
- // // ============================================================================
486
- // // ErrorBoundary - Error Handling
487
- // // ============================================================================
488
- // /**
489
- // * ErrorBoundary component for catching and handling errors
490
- // *
491
- // * @example
492
- // * ```tsx
493
- // * <ErrorBoundary fallback={(err, reset) => (
494
- // * <div>
495
- // * <p>Error: {err.message}</p>
496
- // * <button onClick={reset}>Retry</button>
497
- // * </div>
498
- // * )}>
499
- // * <MyComponent />
500
- // * </ErrorBoundary>
501
- // * ```
502
- // */
503
- // export function ErrorBoundary(props: ErrorBoundaryProps): Node {
504
- // const marker = createTextNode('');
505
- // const parent = document.createDocumentFragment();
506
- // parent.appendChild(marker);
507
- // let current: Node | Node[] | null = null;
508
- // let error: Error | null = null;
509
- // const reset = () => {
510
- // error = null;
511
- // renderChildren();
512
- // };
513
- // const renderChildren = () => {
514
- // try {
515
- // const result = insert(
516
- // parent,
517
- // props.children,
518
- // marker,
519
- // current || undefined
520
- // );
521
- // current = typeof result === 'function' ? result() : result;
522
- // } catch (err) {
523
- // error = err as Error;
524
- // renderError();
525
- // }
526
- // };
527
- // const renderError = () => {
528
- // if (error) {
529
- // const result = insert(
530
- // parent,
531
- // props.fallback(error, reset),
532
- // marker,
533
- // current || undefined
534
- // );
535
- // current = typeof result === 'function' ? result() : result;
536
- // }
537
- // };
538
- // createRenderEffect(() => {
539
- // if (error) {
540
- // renderError();
541
- // } else {
542
- // renderChildren();
543
- // }
544
- // });
545
- // return marker;
546
- // }
547
- // // ============================================================================
548
- // // Suspense - Async Resource Handling
549
- // // ============================================================================
550
- // export interface SuspenseProps {
551
- // fallback: any;
552
- // children: any;
553
- // }
554
- // /**
555
- // * Suspense component for handling async resources
556
- // *
557
- // * @example
558
- // * ```tsx
559
- // * <Suspense fallback={<div>Loading...</div>}>
560
- // * <AsyncComponent />
561
- // * </Suspense>
562
- // * ```
563
- // */
564
- // export function Suspense(props: SuspenseProps): Node {
565
- // const marker = createTextNode('');
566
- // const parent = document.createDocumentFragment();
567
- // parent.appendChild(marker);
568
- // let current: Node | Node[] | null = null;
569
- // let suspended = false;
570
- // const dispose = createRenderEffect(() => {
571
- // try {
572
- // if (suspended) {
573
- // const result = insert(
574
- // parent,
575
- // props.fallback,
576
- // marker,
577
- // current || undefined
578
- // );
579
- // current = typeof result === 'function' ? result() : result;
580
- // } else {
581
- // const result = insert(
582
- // parent,
583
- // props.children,
584
- // marker,
585
- // current || undefined
586
- // );
587
- // current = typeof result === 'function' ? result() : result;
588
- // }
589
- // } catch (promise) {
590
- // if (promise instanceof Promise) {
591
- // suspended = true;
592
- // const result = insert(
593
- // parent,
594
- // props.fallback,
595
- // marker,
596
- // current || undefined
597
- // );
598
- // current = typeof result === 'function' ? result() : result;
599
- // promise.then(() => {
600
- // suspended = false;
601
- // const result = insert(
602
- // parent,
603
- // props.children,
604
- // marker,
605
- // current || undefined
606
- // );
607
- // current = typeof result === 'function' ? result() : result;
608
- // });
609
- // }
610
- // }
611
- // });
612
- // return marker;
613
- // }
614
- // // ============================================================================
615
- // // Exports
616
- // // ============================================================================
617
- // export default {
618
- // Show,
619
- // For,
620
- // Index,
621
- // Switch,
622
- // Match,
623
- // Portal,
624
- // Dynamic,
625
- // ErrorBoundary,
626
- // Suspense,
627
- // };
File without changes
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=for-flow.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"for-flow.d.ts","sourceRoot":"","sources":["../../../../src/lib/jsx/control-flow/for-flow.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- export {};
File without changes