@fluixi/dom 1.0.0-alpha.53

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 (195) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +657 -0
  3. package/dist/cdn/dom.cjs +1 -0
  4. package/dist/cdn/dom.d.ts +16 -0
  5. package/dist/cdn/dom.d.ts.map +1 -0
  6. package/dist/cdn/dom.global.js +1 -0
  7. package/dist/cdn/dom.js +15 -0
  8. package/dist/cdn/dom.mjs +1 -0
  9. package/dist/index.cjs +1 -0
  10. package/dist/index.d.ts +38 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +39 -0
  13. package/dist/index.mjs +1 -0
  14. package/dist/lib/component/index.cjs +1 -0
  15. package/dist/lib/component/index.d.ts +2 -0
  16. package/dist/lib/component/index.d.ts.map +1 -0
  17. package/dist/lib/component/index.js +1 -0
  18. package/dist/lib/component/index.mjs +1 -0
  19. package/dist/lib/component/modifiers.cjs +1 -0
  20. package/dist/lib/component/modifiers.d.ts +21 -0
  21. package/dist/lib/component/modifiers.d.ts.map +1 -0
  22. package/dist/lib/component/modifiers.js +171 -0
  23. package/dist/lib/component/modifiers.mjs +1 -0
  24. package/dist/lib/dom/delegate.cjs +1 -0
  25. package/dist/lib/dom/delegate.d.ts +17 -0
  26. package/dist/lib/dom/delegate.d.ts.map +1 -0
  27. package/dist/lib/dom/delegate.js +50 -0
  28. package/dist/lib/dom/delegate.mjs +1 -0
  29. package/dist/lib/dom/hydration-state.cjs +1 -0
  30. package/dist/lib/dom/hydration-state.d.ts +45 -0
  31. package/dist/lib/dom/hydration-state.d.ts.map +1 -0
  32. package/dist/lib/dom/hydration-state.js +94 -0
  33. package/dist/lib/dom/hydration-state.mjs +1 -0
  34. package/dist/lib/dom/hydration.cjs +1 -0
  35. package/dist/lib/dom/hydration.d.ts +10 -0
  36. package/dist/lib/dom/hydration.d.ts.map +1 -0
  37. package/dist/lib/dom/hydration.js +143 -0
  38. package/dist/lib/dom/hydration.mjs +1 -0
  39. package/dist/lib/dom/index.cjs +1 -0
  40. package/dist/lib/dom/index.d.ts +9 -0
  41. package/dist/lib/dom/index.d.ts.map +1 -0
  42. package/dist/lib/dom/index.js +12 -0
  43. package/dist/lib/dom/index.mjs +1 -0
  44. package/dist/lib/dom/integration.cjs +1 -0
  45. package/dist/lib/dom/integration.d.ts +16 -0
  46. package/dist/lib/dom/integration.d.ts.map +1 -0
  47. package/dist/lib/dom/integration.js +25 -0
  48. package/dist/lib/dom/integration.mjs +1 -0
  49. package/dist/lib/dom/island.cjs +1 -0
  50. package/dist/lib/dom/island.d.ts +23 -0
  51. package/dist/lib/dom/island.d.ts.map +1 -0
  52. package/dist/lib/dom/island.js +100 -0
  53. package/dist/lib/dom/island.mjs +1 -0
  54. package/dist/lib/dom/runtime.cjs +1 -0
  55. package/dist/lib/dom/runtime.d.ts +131 -0
  56. package/dist/lib/dom/runtime.d.ts.map +1 -0
  57. package/dist/lib/dom/runtime.js +1425 -0
  58. package/dist/lib/dom/runtime.mjs +1 -0
  59. package/dist/lib/dom/server/fx-data.cjs +1 -0
  60. package/dist/lib/dom/server/fx-data.d.ts +36 -0
  61. package/dist/lib/dom/server/fx-data.d.ts.map +1 -0
  62. package/dist/lib/dom/server/fx-data.js +60 -0
  63. package/dist/lib/dom/server/fx-data.mjs +1 -0
  64. package/dist/lib/dom/server/host.cjs +1 -0
  65. package/dist/lib/dom/server/host.d.ts +14 -0
  66. package/dist/lib/dom/server/host.d.ts.map +1 -0
  67. package/dist/lib/dom/server/host.js +38 -0
  68. package/dist/lib/dom/server/host.mjs +1 -0
  69. package/dist/lib/dom/server/index.cjs +1 -0
  70. package/dist/lib/dom/server/index.d.ts +13 -0
  71. package/dist/lib/dom/server/index.d.ts.map +1 -0
  72. package/dist/lib/dom/server/index.js +12 -0
  73. package/dist/lib/dom/server/index.mjs +1 -0
  74. package/dist/lib/dom/server/nodes.cjs +1 -0
  75. package/dist/lib/dom/server/nodes.d.ts +105 -0
  76. package/dist/lib/dom/server/nodes.d.ts.map +1 -0
  77. package/dist/lib/dom/server/nodes.js +304 -0
  78. package/dist/lib/dom/server/nodes.mjs +1 -0
  79. package/dist/lib/dom/server/render.cjs +1 -0
  80. package/dist/lib/dom/server/render.d.ts +45 -0
  81. package/dist/lib/dom/server/render.d.ts.map +1 -0
  82. package/dist/lib/dom/server/render.js +174 -0
  83. package/dist/lib/dom/server/render.mjs +1 -0
  84. package/dist/lib/dom/server/request-context.cjs +1 -0
  85. package/dist/lib/dom/server/request-context.d.ts +85 -0
  86. package/dist/lib/dom/server/request-context.d.ts.map +1 -0
  87. package/dist/lib/dom/server/request-context.js +122 -0
  88. package/dist/lib/dom/server/request-context.mjs +1 -0
  89. package/dist/lib/dom/server/serialize.cjs +1 -0
  90. package/dist/lib/dom/server/serialize.d.ts +2 -0
  91. package/dist/lib/dom/server/serialize.d.ts.map +1 -0
  92. package/dist/lib/dom/server/serialize.js +98 -0
  93. package/dist/lib/dom/server/serialize.mjs +1 -0
  94. package/dist/lib/dom/server-renderer.cjs +1 -0
  95. package/dist/lib/dom/server-renderer.d.ts +2 -0
  96. package/dist/lib/dom/server-renderer.d.ts.map +1 -0
  97. package/dist/lib/dom/server-renderer.js +5 -0
  98. package/dist/lib/dom/server-renderer.mjs +1 -0
  99. package/dist/lib/dom/types.cjs +1 -0
  100. package/dist/lib/dom/types.d.ts +119 -0
  101. package/dist/lib/dom/types.d.ts.map +1 -0
  102. package/dist/lib/dom/types.js +1 -0
  103. package/dist/lib/dom/types.mjs +0 -0
  104. package/dist/lib/dom/utils.cjs +1 -0
  105. package/dist/lib/dom/utils.d.ts +411 -0
  106. package/dist/lib/dom/utils.d.ts.map +1 -0
  107. package/dist/lib/dom/utils.js +746 -0
  108. package/dist/lib/dom/utils.mjs +1 -0
  109. package/dist/lib/element/index.cjs +1 -0
  110. package/dist/lib/element/index.d.ts +2 -0
  111. package/dist/lib/element/index.d.ts.map +1 -0
  112. package/dist/lib/element/index.js +1 -0
  113. package/dist/lib/element/index.mjs +0 -0
  114. package/dist/lib/element/types.cjs +1 -0
  115. package/dist/lib/element/types.d.ts +129 -0
  116. package/dist/lib/element/types.d.ts.map +1 -0
  117. package/dist/lib/element/types.js +5 -0
  118. package/dist/lib/element/types.mjs +0 -0
  119. package/dist/lib/flow/class-map.cjs +1 -0
  120. package/dist/lib/flow/class-map.d.ts +40 -0
  121. package/dist/lib/flow/class-map.d.ts.map +1 -0
  122. package/dist/lib/flow/class-map.js +44 -0
  123. package/dist/lib/flow/class-map.mjs +1 -0
  124. package/dist/lib/flow/dynamic.cjs +1 -0
  125. package/dist/lib/flow/dynamic.d.ts +27 -0
  126. package/dist/lib/flow/dynamic.d.ts.map +1 -0
  127. package/dist/lib/flow/dynamic.js +30 -0
  128. package/dist/lib/flow/dynamic.mjs +1 -0
  129. package/dist/lib/flow/error-boundary.cjs +1 -0
  130. package/dist/lib/flow/error-boundary.d.ts +34 -0
  131. package/dist/lib/flow/error-boundary.d.ts.map +1 -0
  132. package/dist/lib/flow/error-boundary.js +49 -0
  133. package/dist/lib/flow/error-boundary.mjs +1 -0
  134. package/dist/lib/flow/for.cjs +1 -0
  135. package/dist/lib/flow/for.d.ts +64 -0
  136. package/dist/lib/flow/for.d.ts.map +1 -0
  137. package/dist/lib/flow/for.js +28 -0
  138. package/dist/lib/flow/for.mjs +1 -0
  139. package/dist/lib/flow/index-flow.cjs +1 -0
  140. package/dist/lib/flow/index-flow.d.ts +34 -0
  141. package/dist/lib/flow/index-flow.d.ts.map +1 -0
  142. package/dist/lib/flow/index-flow.js +27 -0
  143. package/dist/lib/flow/index-flow.mjs +1 -0
  144. package/dist/lib/flow/index.cjs +1 -0
  145. package/dist/lib/flow/index.d.ts +20 -0
  146. package/dist/lib/flow/index.d.ts.map +1 -0
  147. package/dist/lib/flow/index.js +11 -0
  148. package/dist/lib/flow/index.mjs +1 -0
  149. package/dist/lib/flow/portal.cjs +1 -0
  150. package/dist/lib/flow/portal.d.ts +30 -0
  151. package/dist/lib/flow/portal.d.ts.map +1 -0
  152. package/dist/lib/flow/portal.js +44 -0
  153. package/dist/lib/flow/portal.mjs +1 -0
  154. package/dist/lib/flow/show.cjs +1 -0
  155. package/dist/lib/flow/show.d.ts +35 -0
  156. package/dist/lib/flow/show.d.ts.map +1 -0
  157. package/dist/lib/flow/show.js +162 -0
  158. package/dist/lib/flow/show.mjs +1 -0
  159. package/dist/lib/flow/style-map.cjs +1 -0
  160. package/dist/lib/flow/style-map.d.ts +49 -0
  161. package/dist/lib/flow/style-map.d.ts.map +1 -0
  162. package/dist/lib/flow/style-map.js +58 -0
  163. package/dist/lib/flow/style-map.mjs +1 -0
  164. package/dist/lib/flow/switch.cjs +1 -0
  165. package/dist/lib/flow/switch.d.ts +63 -0
  166. package/dist/lib/flow/switch.d.ts.map +1 -0
  167. package/dist/lib/flow/switch.js +69 -0
  168. package/dist/lib/flow/switch.mjs +1 -0
  169. package/dist/lib/flow/utils.cjs +1 -0
  170. package/dist/lib/flow/utils.d.ts +19 -0
  171. package/dist/lib/flow/utils.d.ts.map +1 -0
  172. package/dist/lib/flow/utils.js +34 -0
  173. package/dist/lib/flow/utils.mjs +1 -0
  174. package/dist/lib/index.cjs +1 -0
  175. package/dist/lib/index.d.ts +21 -0
  176. package/dist/lib/index.d.ts.map +1 -0
  177. package/dist/lib/index.js +30 -0
  178. package/dist/lib/index.mjs +1 -0
  179. package/dist/lib/jsx/control-flow/flow.cjs +1 -0
  180. package/dist/lib/jsx/control-flow/flow.d.ts +2 -0
  181. package/dist/lib/jsx/control-flow/flow.d.ts.map +1 -0
  182. package/dist/lib/jsx/control-flow/flow.js +627 -0
  183. package/dist/lib/jsx/control-flow/flow.mjs +0 -0
  184. package/dist/lib/jsx/control-flow/for-flow.cjs +1 -0
  185. package/dist/lib/jsx/control-flow/for-flow.d.ts +2 -0
  186. package/dist/lib/jsx/control-flow/for-flow.d.ts.map +1 -0
  187. package/dist/lib/jsx/control-flow/for-flow.js +1 -0
  188. package/dist/lib/jsx/control-flow/for-flow.mjs +0 -0
  189. package/dist/lib/shared/types.cjs +1 -0
  190. package/dist/lib/shared/types.d.ts +47 -0
  191. package/dist/lib/shared/types.d.ts.map +1 -0
  192. package/dist/lib/shared/types.js +1 -0
  193. package/dist/lib/shared/types.mjs +0 -0
  194. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  195. package/package.json +99 -0
@@ -0,0 +1,411 @@
1
+ /**
2
+ * @fileoverview DOM utilities for Fluixi
3
+ * @module @fluixi/core/dom
4
+ *
5
+ * This module provides utilities for DOM manipulation and queries.
6
+ */
7
+ /**
8
+ * Convert camelCase to kebab-case for attribute names
9
+ */
10
+ export declare function toAttributeName(key: string): string;
11
+ /**
12
+ * Check if key is an event handler
13
+ */
14
+ export declare function isEventHandler(key: string): boolean;
15
+ /**
16
+ * Get Lit event name from key
17
+ */
18
+ export declare function getLitEventName(key: string): string;
19
+ /**
20
+ * Check if attribute should be set as property
21
+ */
22
+ export declare function shouldSetAsProperty(element: string, key: string): boolean;
23
+ /**
24
+ * Self-closing HTML tags
25
+ */
26
+ export declare const VOID_ELEMENTS: Set<string>;
27
+ /**
28
+ * SVG namespace elements
29
+ */
30
+ export declare const SVG_ELEMENTS: Set<string>;
31
+ export declare const SVG_NAMESPACE = "http://www.w3.org/2000/svg";
32
+ /**
33
+ * Returns true for custom elements (tag name contains a hyphen per the Web
34
+ * Components spec — e.g. `adf-accounts-selector`).
35
+ */
36
+ export declare function isCustomElement(element: Element): boolean;
37
+ /**
38
+ * Set a prop on an element, choosing between DOM property assignment and
39
+ * setAttribute based on:
40
+ * - Custom elements always receive complex values (object/array) as DOM
41
+ * properties so that Lit components get the rich value, not a serialised
42
+ * string.
43
+ * - Primitives (string/number/boolean) and standard HTML elements go through
44
+ * the normal setAttribute path.
45
+ */
46
+ export declare function applyElementProp(element: Element, name: string, value: any, isSVG?: boolean): void;
47
+ export declare const JSX_PROPERTIES: Set<string>;
48
+ /**
49
+ * Queries a single element with type safety
50
+ *
51
+ * @template T - Element type
52
+ * @param {string} selector - CSS selector
53
+ * @param {Element | Document} root - Root element (default: document)
54
+ * @returns {T | null} Found element or null
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * import { query } from '@fluixi/core/dom';
59
+ *
60
+ * const button = query<HTMLButtonElement>('#my-button');
61
+ * button?.click();
62
+ * ```
63
+ */
64
+ export declare function query<T extends Element = Element>(selector: string, root?: Element | Document): T | null;
65
+ /**
66
+ * Queries all matching elements with type safety
67
+ *
68
+ * @template T - Element type
69
+ * @param {string} selector - CSS selector
70
+ * @param {Element | Document} root - Root element (default: document)
71
+ * @returns {T[]} Array of matching elements
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * import { queryAll } from '@fluixi/core/dom';
76
+ *
77
+ * const buttons = queryAll<HTMLButtonElement>('button');
78
+ * buttons.forEach(btn => btn.disabled = true);
79
+ * ```
80
+ */
81
+ export declare function queryAll<T extends Element = Element>(selector: string, root?: Element | Document): T[];
82
+ /**
83
+ * Queries the closest matching ancestor element
84
+ *
85
+ * @template T - Element type
86
+ * @param {Element} element - Starting element
87
+ * @param {string} selector - CSS selector
88
+ * @returns {T | null} Closest matching ancestor or null
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * import { closest } from '@fluixi/core/dom';
93
+ *
94
+ * const form = closest<HTMLFormElement>(button, 'form');
95
+ * form?.submit();
96
+ * ```
97
+ */
98
+ export declare function closest<T extends Element = Element>(element: Element, selector: string): T | null;
99
+ /**
100
+ * Adds one or more classes to an element
101
+ *
102
+ * @param {Element} element - Target element
103
+ * @param {...string} classes - Classes to add
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * import { addClass } from '@fluixi/core/dom';
108
+ *
109
+ * addClass(element, 'active', 'visible');
110
+ * ```
111
+ */
112
+ export declare function addClass(element: Element, ...classes: string[]): void;
113
+ /**
114
+ * Removes one or more classes from an element
115
+ *
116
+ * @param {Element} element - Target element
117
+ * @param {...string} classes - Classes to remove
118
+ *
119
+ * @example
120
+ * ```typescript
121
+ * import { removeClass } from '@fluixi/core/dom';
122
+ *
123
+ * removeClass(element, 'active', 'visible');
124
+ * ```
125
+ */
126
+ export declare function removeClass(element: Element, ...classes: string[]): void;
127
+ /**
128
+ * Toggles one or more classes on an element
129
+ *
130
+ * @param {Element} element - Target element
131
+ * @param {...string} classes - Classes to toggle
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * import { toggleClass } from '@fluixi/core/dom';
136
+ *
137
+ * toggleClass(element, 'active');
138
+ * ```
139
+ */
140
+ export declare function toggleClass(element: Element, ...classes: string[]): void;
141
+ /**
142
+ * Checks if element has a class
143
+ *
144
+ * @param {Element} element - Target element
145
+ * @param {string} className - Class name to check
146
+ * @returns {boolean} True if element has the class
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * import { hasClass } from '@fluixi/core/dom';
151
+ *
152
+ * if (hasClass(element, 'active')) {
153
+ * console.log('Element is active');
154
+ * }
155
+ * ```
156
+ */
157
+ export declare function hasClass(element: Element, className: string): boolean;
158
+ /**
159
+ * Sets an attribute on an element
160
+ *
161
+ * @param {Element} element - Target element
162
+ * @param {string} name - Attribute name
163
+ * @param {string | number | boolean} value - Attribute value
164
+ *
165
+ * @example
166
+ * ```typescript
167
+ * import { setAttribute } from '@fluixi/core/dom';
168
+ *
169
+ * setAttribute(input, 'disabled', true);
170
+ * setAttribute(div, 'data-id', '123');
171
+ * ```
172
+ */
173
+ export declare function setAttribute(element: Element, name: string, value: unknown, isSVG?: boolean): void;
174
+ /**
175
+ * Gets an attribute from an element
176
+ *
177
+ * @param {Element} element - Target element
178
+ * @param {string} name - Attribute name
179
+ * @returns {string | null} Attribute value or null
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * import { getAttribute } from '@fluixi/core/dom';
184
+ *
185
+ * const id = getAttribute(div, 'data-id');
186
+ * ```
187
+ */
188
+ export declare function getAttribute(element: Element, name: string): string | null;
189
+ /**
190
+ * Removes an attribute from an element
191
+ *
192
+ * @param {Element} element - Target element
193
+ * @param {string} name - Attribute name
194
+ *
195
+ * @example
196
+ * ```typescript
197
+ * import { removeAttribute } from '@fluixi/core/dom';
198
+ *
199
+ * removeAttribute(input, 'disabled');
200
+ * ```
201
+ */
202
+ export declare function removeAttribute(element: Element, name: string): void;
203
+ /**
204
+ * Sets multiple styles on an element
205
+ *
206
+ * @param {HTMLElement} element - Target element
207
+ * @param {Partial<CSSStyleDeclaration>} styles - Styles object
208
+ *
209
+ * @example
210
+ * ```typescript
211
+ * import { setStyles } from '@fluixi/core/dom';
212
+ *
213
+ * setStyles(div, {
214
+ * backgroundColor: 'red',
215
+ * padding: '10px',
216
+ * display: 'flex'
217
+ * });
218
+ * ```
219
+ */
220
+ export declare function setStyles(element: any, styles: Partial<CSSStyleDeclaration>): void;
221
+ /**
222
+ * Gets computed style of an element
223
+ *
224
+ * @param {Element} element - Target element
225
+ * @param {string} property - CSS property name
226
+ * @returns {string} Computed style value
227
+ *
228
+ * @example
229
+ * ```typescript
230
+ * import { getStyle } from '@fluixi/core/dom';
231
+ *
232
+ * const color = getStyle(div, 'backgroundColor');
233
+ * ```
234
+ */
235
+ export declare function getStyle(element: Element, property: string): string;
236
+ /**
237
+ * Creates an element with attributes and children
238
+ *
239
+ * @template K - Element tag name
240
+ * @param {K} tagName - HTML tag name
241
+ * @param {Record<string, any>} attributes - Element attributes
242
+ * @param {...(Node | string)} children - Child nodes or text
243
+ * @returns {HTMLElementTagNameMap[K]} Created element
244
+ *
245
+ * @example
246
+ * ```typescript
247
+ * import { createElement } from '@fluixi/core/dom';
248
+ *
249
+ * const button = createElement('button',
250
+ * { class: 'btn', disabled: true },
251
+ * 'Click me'
252
+ * );
253
+ * ```
254
+ */
255
+ export declare function createElement<K extends keyof HTMLElementTagNameMap>(tagName: K, attributes?: Record<string, any>, ...children: (Node | string)[]): HTMLElementTagNameMap[K];
256
+ /**
257
+ * Removes all children from an element
258
+ *
259
+ * @param {Element} element - Target element
260
+ *
261
+ * @example
262
+ * ```typescript
263
+ * import { removeChildren } from '@fluixi/core/dom';
264
+ *
265
+ * removeChildren(container);
266
+ * ```
267
+ */
268
+ export declare function removeChildren(element: Element): void;
269
+ /**
270
+ * Appends multiple children to an element
271
+ *
272
+ * @param {Element} parent - Parent element
273
+ * @param {...(Node | string)} children - Children to append
274
+ *
275
+ * @example
276
+ * ```typescript
277
+ * import { appendChildren } from '@fluixi/core/dom';
278
+ *
279
+ * appendChildren(container,
280
+ * createElement('div', {}, 'Child 1'),
281
+ * 'Text node',
282
+ * createElement('span', {}, 'Child 2')
283
+ * );
284
+ * ```
285
+ */
286
+ export declare function appendChildren(parent: Element, ...children: (Node | string)[]): void;
287
+ /**
288
+ * Checks if element is visible in the viewport
289
+ *
290
+ * @param {Element} element - Target element
291
+ * @returns {boolean} True if element is visible
292
+ *
293
+ * @example
294
+ * ```typescript
295
+ * import { isVisible } from '@fluixi/core/dom';
296
+ *
297
+ * if (isVisible(element)) {
298
+ * console.log('Element is in viewport');
299
+ * }
300
+ * ```
301
+ */
302
+ export declare function isVisible(element: Element): boolean;
303
+ /**
304
+ * Scrolls element into view smoothly
305
+ *
306
+ * @param {Element} element - Target element
307
+ * @param {ScrollIntoViewOptions} options - Scroll options
308
+ *
309
+ * @example
310
+ * ```typescript
311
+ * import { scrollIntoView } from '@fluixi/core/dom';
312
+ *
313
+ * scrollIntoView(element, { behavior: 'smooth', block: 'center' });
314
+ * ```
315
+ */
316
+ export declare function scrollIntoView(element: Element, options?: ScrollIntoViewOptions): void;
317
+ /**
318
+ * Gets element's offset relative to document
319
+ *
320
+ * @param {Element} element - Target element
321
+ * @returns {{ top: number; left: number }} Offset coordinates
322
+ *
323
+ * @example
324
+ * ```typescript
325
+ * import { getOffset } from '@fluixi/core/dom';
326
+ *
327
+ * const { top, left } = getOffset(element);
328
+ * ```
329
+ */
330
+ export declare function getOffset(element: Element): {
331
+ top: number;
332
+ left: number;
333
+ };
334
+ /**
335
+ * Delegates event handling to a parent element
336
+ *
337
+ * @template K - Event type
338
+ * @param {Element} parent - Parent element
339
+ * @param {K} eventName - Event name
340
+ * @param {string} selector - Child selector
341
+ * @param {(event: Event, target: Element) => void} handler - Event handler
342
+ * @returns {() => void} Cleanup function
343
+ *
344
+ * @example
345
+ * ```typescript
346
+ * import { delegate } from '@fluixi/core/dom';
347
+ *
348
+ * const cleanup = delegate(list, 'click', '.item', (event, target) => {
349
+ * console.log('Clicked item:', target);
350
+ * });
351
+ * ```
352
+ */
353
+ export declare function delegate<K extends keyof HTMLElementEventMap>(parent: Element, eventName: K, selector: string, handler: (event: HTMLElementEventMap[K], target: Element) => void): () => void;
354
+ /**
355
+ * Waits for an element to appear in the DOM
356
+ *
357
+ * @param {string} selector - CSS selector
358
+ * @param {number} timeout - Timeout in milliseconds (default: 5000)
359
+ * @returns {Promise<Element>} Promise that resolves with the element
360
+ *
361
+ * @example
362
+ * ```typescript
363
+ * import { waitForElement } from '@fluixi/core/dom';
364
+ *
365
+ * const element = await waitForElement('#dynamic-content');
366
+ * ```
367
+ */
368
+ export declare function waitForElement(selector: string, timeout?: number): Promise<Element>;
369
+ /**
370
+ * Observes element intersection with viewport
371
+ *
372
+ * @param {Element} element - Target element
373
+ * @param {(isIntersecting: boolean) => void} callback - Callback function
374
+ * @param {IntersectionObserverInit} options - Observer options
375
+ * @returns {() => void} Cleanup function
376
+ *
377
+ * @example
378
+ * ```typescript
379
+ * import { observeIntersection } from '@fluixi/core/dom';
380
+ *
381
+ * const cleanup = observeIntersection(element, (isIntersecting) => {
382
+ * console.log('Element visible:', isIntersecting);
383
+ * });
384
+ * ```
385
+ */
386
+ export declare function observeIntersection(element: Element, callback: (isIntersecting: boolean) => void, options?: IntersectionObserverInit): () => void;
387
+ /**
388
+ * Observes element size changes
389
+ *
390
+ * @param {Element} element - Target element
391
+ * @param {(entry: ResizeObserverEntry) => void} callback - Callback function
392
+ * @returns {() => void} Cleanup function
393
+ *
394
+ * @example
395
+ * ```typescript
396
+ * import { observeResize } from '@fluixi/core/dom';
397
+ *
398
+ * const cleanup = observeResize(element, (entry) => {
399
+ * console.log('New size:', entry.contentRect.width, entry.contentRect.height);
400
+ * });
401
+ * ```
402
+ */
403
+ export declare function observeResize(element: Element, callback: (entry: ResizeObserverEntry) => void): () => void;
404
+ export declare function isReactElement(value: any): boolean;
405
+ export declare function isLitTemplateResult(value: any): boolean;
406
+ export declare function isTemplateFactory(value: any): boolean;
407
+ export declare function isJSXTemplate(value: any): boolean;
408
+ export declare function isDOMNode(value: any): value is Node;
409
+ export declare function registerGlobal(key: string, value: any, _Key?: string): void;
410
+ export declare function getGlobal(key: string, value?: any, _Key?: string): any;
411
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/dom/utils.ts"],"names":[],"mappings":"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"}