@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.
- package/LICENSE +21 -0
- package/README.md +657 -0
- package/dist/cdn/dom.cjs +1 -0
- package/dist/cdn/dom.d.ts +16 -0
- package/dist/cdn/dom.d.ts.map +1 -0
- package/dist/cdn/dom.global.js +1 -0
- package/dist/cdn/dom.js +15 -0
- package/dist/cdn/dom.mjs +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.mjs +1 -0
- package/dist/lib/component/index.cjs +1 -0
- package/dist/lib/component/index.d.ts +2 -0
- package/dist/lib/component/index.d.ts.map +1 -0
- package/dist/lib/component/index.js +1 -0
- package/dist/lib/component/index.mjs +1 -0
- package/dist/lib/component/modifiers.cjs +1 -0
- package/dist/lib/component/modifiers.d.ts +21 -0
- package/dist/lib/component/modifiers.d.ts.map +1 -0
- package/dist/lib/component/modifiers.js +171 -0
- package/dist/lib/component/modifiers.mjs +1 -0
- package/dist/lib/dom/delegate.cjs +1 -0
- package/dist/lib/dom/delegate.d.ts +17 -0
- package/dist/lib/dom/delegate.d.ts.map +1 -0
- package/dist/lib/dom/delegate.js +50 -0
- package/dist/lib/dom/delegate.mjs +1 -0
- package/dist/lib/dom/hydration-state.cjs +1 -0
- package/dist/lib/dom/hydration-state.d.ts +45 -0
- package/dist/lib/dom/hydration-state.d.ts.map +1 -0
- package/dist/lib/dom/hydration-state.js +94 -0
- package/dist/lib/dom/hydration-state.mjs +1 -0
- package/dist/lib/dom/hydration.cjs +1 -0
- package/dist/lib/dom/hydration.d.ts +10 -0
- package/dist/lib/dom/hydration.d.ts.map +1 -0
- package/dist/lib/dom/hydration.js +143 -0
- package/dist/lib/dom/hydration.mjs +1 -0
- package/dist/lib/dom/index.cjs +1 -0
- package/dist/lib/dom/index.d.ts +9 -0
- package/dist/lib/dom/index.d.ts.map +1 -0
- package/dist/lib/dom/index.js +12 -0
- package/dist/lib/dom/index.mjs +1 -0
- package/dist/lib/dom/integration.cjs +1 -0
- package/dist/lib/dom/integration.d.ts +16 -0
- package/dist/lib/dom/integration.d.ts.map +1 -0
- package/dist/lib/dom/integration.js +25 -0
- package/dist/lib/dom/integration.mjs +1 -0
- package/dist/lib/dom/island.cjs +1 -0
- package/dist/lib/dom/island.d.ts +23 -0
- package/dist/lib/dom/island.d.ts.map +1 -0
- package/dist/lib/dom/island.js +100 -0
- package/dist/lib/dom/island.mjs +1 -0
- package/dist/lib/dom/runtime.cjs +1 -0
- package/dist/lib/dom/runtime.d.ts +131 -0
- package/dist/lib/dom/runtime.d.ts.map +1 -0
- package/dist/lib/dom/runtime.js +1425 -0
- package/dist/lib/dom/runtime.mjs +1 -0
- package/dist/lib/dom/server/fx-data.cjs +1 -0
- package/dist/lib/dom/server/fx-data.d.ts +36 -0
- package/dist/lib/dom/server/fx-data.d.ts.map +1 -0
- package/dist/lib/dom/server/fx-data.js +60 -0
- package/dist/lib/dom/server/fx-data.mjs +1 -0
- package/dist/lib/dom/server/host.cjs +1 -0
- package/dist/lib/dom/server/host.d.ts +14 -0
- package/dist/lib/dom/server/host.d.ts.map +1 -0
- package/dist/lib/dom/server/host.js +38 -0
- package/dist/lib/dom/server/host.mjs +1 -0
- package/dist/lib/dom/server/index.cjs +1 -0
- package/dist/lib/dom/server/index.d.ts +13 -0
- package/dist/lib/dom/server/index.d.ts.map +1 -0
- package/dist/lib/dom/server/index.js +12 -0
- package/dist/lib/dom/server/index.mjs +1 -0
- package/dist/lib/dom/server/nodes.cjs +1 -0
- package/dist/lib/dom/server/nodes.d.ts +105 -0
- package/dist/lib/dom/server/nodes.d.ts.map +1 -0
- package/dist/lib/dom/server/nodes.js +304 -0
- package/dist/lib/dom/server/nodes.mjs +1 -0
- package/dist/lib/dom/server/render.cjs +1 -0
- package/dist/lib/dom/server/render.d.ts +45 -0
- package/dist/lib/dom/server/render.d.ts.map +1 -0
- package/dist/lib/dom/server/render.js +174 -0
- package/dist/lib/dom/server/render.mjs +1 -0
- package/dist/lib/dom/server/request-context.cjs +1 -0
- package/dist/lib/dom/server/request-context.d.ts +85 -0
- package/dist/lib/dom/server/request-context.d.ts.map +1 -0
- package/dist/lib/dom/server/request-context.js +122 -0
- package/dist/lib/dom/server/request-context.mjs +1 -0
- package/dist/lib/dom/server/serialize.cjs +1 -0
- package/dist/lib/dom/server/serialize.d.ts +2 -0
- package/dist/lib/dom/server/serialize.d.ts.map +1 -0
- package/dist/lib/dom/server/serialize.js +98 -0
- package/dist/lib/dom/server/serialize.mjs +1 -0
- package/dist/lib/dom/server-renderer.cjs +1 -0
- package/dist/lib/dom/server-renderer.d.ts +2 -0
- package/dist/lib/dom/server-renderer.d.ts.map +1 -0
- package/dist/lib/dom/server-renderer.js +5 -0
- package/dist/lib/dom/server-renderer.mjs +1 -0
- package/dist/lib/dom/types.cjs +1 -0
- package/dist/lib/dom/types.d.ts +119 -0
- package/dist/lib/dom/types.d.ts.map +1 -0
- package/dist/lib/dom/types.js +1 -0
- package/dist/lib/dom/types.mjs +0 -0
- package/dist/lib/dom/utils.cjs +1 -0
- package/dist/lib/dom/utils.d.ts +411 -0
- package/dist/lib/dom/utils.d.ts.map +1 -0
- package/dist/lib/dom/utils.js +746 -0
- package/dist/lib/dom/utils.mjs +1 -0
- package/dist/lib/element/index.cjs +1 -0
- package/dist/lib/element/index.d.ts +2 -0
- package/dist/lib/element/index.d.ts.map +1 -0
- package/dist/lib/element/index.js +1 -0
- package/dist/lib/element/index.mjs +0 -0
- package/dist/lib/element/types.cjs +1 -0
- package/dist/lib/element/types.d.ts +129 -0
- package/dist/lib/element/types.d.ts.map +1 -0
- package/dist/lib/element/types.js +5 -0
- package/dist/lib/element/types.mjs +0 -0
- package/dist/lib/flow/class-map.cjs +1 -0
- package/dist/lib/flow/class-map.d.ts +40 -0
- package/dist/lib/flow/class-map.d.ts.map +1 -0
- package/dist/lib/flow/class-map.js +44 -0
- package/dist/lib/flow/class-map.mjs +1 -0
- package/dist/lib/flow/dynamic.cjs +1 -0
- package/dist/lib/flow/dynamic.d.ts +27 -0
- package/dist/lib/flow/dynamic.d.ts.map +1 -0
- package/dist/lib/flow/dynamic.js +30 -0
- package/dist/lib/flow/dynamic.mjs +1 -0
- package/dist/lib/flow/error-boundary.cjs +1 -0
- package/dist/lib/flow/error-boundary.d.ts +34 -0
- package/dist/lib/flow/error-boundary.d.ts.map +1 -0
- package/dist/lib/flow/error-boundary.js +49 -0
- package/dist/lib/flow/error-boundary.mjs +1 -0
- package/dist/lib/flow/for.cjs +1 -0
- package/dist/lib/flow/for.d.ts +64 -0
- package/dist/lib/flow/for.d.ts.map +1 -0
- package/dist/lib/flow/for.js +28 -0
- package/dist/lib/flow/for.mjs +1 -0
- package/dist/lib/flow/index-flow.cjs +1 -0
- package/dist/lib/flow/index-flow.d.ts +34 -0
- package/dist/lib/flow/index-flow.d.ts.map +1 -0
- package/dist/lib/flow/index-flow.js +27 -0
- package/dist/lib/flow/index-flow.mjs +1 -0
- package/dist/lib/flow/index.cjs +1 -0
- package/dist/lib/flow/index.d.ts +20 -0
- package/dist/lib/flow/index.d.ts.map +1 -0
- package/dist/lib/flow/index.js +11 -0
- package/dist/lib/flow/index.mjs +1 -0
- package/dist/lib/flow/portal.cjs +1 -0
- package/dist/lib/flow/portal.d.ts +30 -0
- package/dist/lib/flow/portal.d.ts.map +1 -0
- package/dist/lib/flow/portal.js +44 -0
- package/dist/lib/flow/portal.mjs +1 -0
- package/dist/lib/flow/show.cjs +1 -0
- package/dist/lib/flow/show.d.ts +35 -0
- package/dist/lib/flow/show.d.ts.map +1 -0
- package/dist/lib/flow/show.js +162 -0
- package/dist/lib/flow/show.mjs +1 -0
- package/dist/lib/flow/style-map.cjs +1 -0
- package/dist/lib/flow/style-map.d.ts +49 -0
- package/dist/lib/flow/style-map.d.ts.map +1 -0
- package/dist/lib/flow/style-map.js +58 -0
- package/dist/lib/flow/style-map.mjs +1 -0
- package/dist/lib/flow/switch.cjs +1 -0
- package/dist/lib/flow/switch.d.ts +63 -0
- package/dist/lib/flow/switch.d.ts.map +1 -0
- package/dist/lib/flow/switch.js +69 -0
- package/dist/lib/flow/switch.mjs +1 -0
- package/dist/lib/flow/utils.cjs +1 -0
- package/dist/lib/flow/utils.d.ts +19 -0
- package/dist/lib/flow/utils.d.ts.map +1 -0
- package/dist/lib/flow/utils.js +34 -0
- package/dist/lib/flow/utils.mjs +1 -0
- package/dist/lib/index.cjs +1 -0
- package/dist/lib/index.d.ts +21 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +30 -0
- package/dist/lib/index.mjs +1 -0
- package/dist/lib/jsx/control-flow/flow.cjs +1 -0
- package/dist/lib/jsx/control-flow/flow.d.ts +2 -0
- package/dist/lib/jsx/control-flow/flow.d.ts.map +1 -0
- package/dist/lib/jsx/control-flow/flow.js +627 -0
- package/dist/lib/jsx/control-flow/flow.mjs +0 -0
- package/dist/lib/jsx/control-flow/for-flow.cjs +1 -0
- package/dist/lib/jsx/control-flow/for-flow.d.ts +2 -0
- package/dist/lib/jsx/control-flow/for-flow.d.ts.map +1 -0
- package/dist/lib/jsx/control-flow/for-flow.js +1 -0
- package/dist/lib/jsx/control-flow/for-flow.mjs +0 -0
- package/dist/lib/shared/types.cjs +1 -0
- package/dist/lib/shared/types.d.ts +47 -0
- package/dist/lib/shared/types.d.ts.map +1 -0
- package/dist/lib/shared/types.js +1 -0
- package/dist/lib/shared/types.mjs +0 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -0
- 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":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYnD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASnD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAiCzE;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,aAexB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY,aA2BvB,CAAC;AAGH,eAAO,MAAM,aAAa,+BAA+B,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,GAAG,EACV,KAAK,UAAQ,GACZ,IAAI,CAsBN;AAGD,eAAO,MAAM,cAAc,aAUzB,CAAC;AACH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAC/C,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,OAAO,GAAG,QAAmB,GAClC,CAAC,GAAG,IAAI,CAEV;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAClD,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,OAAO,GAAG,QAAmB,GAClC,CAAC,EAAE,CAEL;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EACjD,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,GACf,CAAC,GAAG,IAAI,CAEV;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAErE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAExE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAExE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAErE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,KAAK,UAAQ,GACZ,IAAI,CAiBN;AAwBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE1E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAEpE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,GAAG,EACZ,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACnC,IAAI,CAEN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,qBAAqB,EACjE,OAAO,EAAE,CAAC,EACV,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EACpC,GAAG,QAAQ,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,GAC7B,qBAAqB,CAAC,CAAC,CAAC,CAyB1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAIrD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,OAAO,EACf,GAAG,QAAQ,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,GAC7B,IAAI,CAQN;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAQnD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,qBAAgE,GACxE,IAAI,CAEN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAMzE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAC1D,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,GAChE,MAAM,IAAI,CAaZ;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,OAAO,CAAC,CA2BlB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,CAAC,cAAc,EAAE,OAAO,KAAK,IAAI,EAC3C,OAAO,GAAE,wBAA6B,GACrC,MAAM,IAAI,CAYZ;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,GAC7C,MAAM,IAAI,CAUZ;AAOD,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAMlD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CASvD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CASrD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAMjD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,IAAI,CAEnD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,SAAW,QAStE;AACD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,SAAW,OASlE"}
|