@estjs/template 0.0.14 → 0.0.15-beta.5

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.
@@ -1,2425 +1,520 @@
1
- import { Signal as Signal$1 } from '@estjs/signal';
2
- import * as csstype from 'csstype';
1
+ import { Signal } from '@estjs/signals';
2
+ export { escapeHTML } from '@estjs/shared';
3
3
 
4
- type EssorComponent = (props: Record<string, unknown>) => JSX.Element | TemplateNode;
5
- type Hook = 'mounted' | 'destroy';
6
-
7
- interface NodeTrack {
8
- cleanup: () => void;
9
- isRoot?: boolean;
10
- lastNodes?: Map<string, Node | JSX.Element>;
11
- }
12
- interface NodeTrack {
13
- cleanup: () => void;
14
- isRoot?: boolean;
15
- lastNodes?: Map<string, Node | JSX.Element>;
4
+ /**
5
+ * InjectionKey is a unique identifier for provided values.
6
+ * Using Symbol ensures type safety and prevents key collisions.
7
+ */
8
+ interface InjectionKey<T> extends Symbol {
16
9
  }
10
+ /**
11
+ * Provide a value in the current scope.
12
+ * The value can be injected by this scope or any descendant scope.
13
+ *
14
+ * @param key - The injection key
15
+ * @param value - The value to provide
16
+ */
17
+ declare function provide<T>(key: InjectionKey<T> | string | number, value: T): void;
18
+ /**
19
+ * Inject a value from the scope hierarchy.
20
+ * Traverses up the parent chain until finding a matching key.
21
+ *
22
+ * @param key - The injection key
23
+ * @param defaultValue - Default value if key is not found
24
+ * @returns The injected value or default value
25
+ */
26
+ declare function inject<T>(key: InjectionKey<T> | string | number, defaultValue?: T): T;
17
27
 
18
- type Props = Record<string, any>;
28
+ /**
29
+ * Scope represents an execution context in the component tree.
30
+ * It manages provides, cleanup functions, and lifecycle hooks.
31
+ */
32
+ interface Scope {
33
+ /** Unique identifier for debugging */
34
+ readonly id: number;
35
+ /** Parent scope in the hierarchy */
36
+ parent: Scope | null;
37
+ /** Child scopes (lazy initialized) */
38
+ children: Set<Scope> | null;
39
+ /** Provided values (lazy initialized) */
40
+ provides: Map<InjectionKey<unknown> | string | number | symbol, unknown> | null;
41
+ /** Cleanup functions (lazy initialized) */
42
+ cleanup: Set<() => void> | null;
43
+ /** Mount lifecycle hooks (lazy initialized) */
44
+ onMount: Set<() => void | Promise<void>> | null;
45
+ /** Update lifecycle hooks (lazy initialized) */
46
+ onUpdate: Set<() => void | Promise<void>> | null;
47
+ /** Destroy lifecycle hooks (lazy initialized) */
48
+ onDestroy: Set<() => void | Promise<void>> | null;
49
+ /** Whether the scope has been mounted */
50
+ isMounted: boolean;
51
+ /** Whether the scope has been destroyed */
52
+ isDestroyed: boolean;
53
+ }
19
54
 
20
- interface EssorNode<T = Record<string, any>> {
21
- props?: T;
22
- template: EssorComponent | HTMLTemplateElement;
55
+ declare enum COMPONENT_TYPE {
56
+ NORMAL = "normal",
57
+ FRAGMENT = "fragment",
58
+ PORTAL = "portal",
59
+ SUSPENSE = "suspense",
60
+ FOR = "for"
61
+ }
23
62
 
24
- get firstChild(): Node | null;
25
- get isConnected(): boolean;
63
+ type AnyNode = Node | Component | Element | string | number | boolean | null | undefined | AnyNode[] | (() => AnyNode);
64
+ type ComponentProps = Record<string, unknown>;
65
+ type ComponentFn = (props?: ComponentProps) => AnyNode;
26
66
 
27
- addEventListener(event: string, listener: any): void;
28
- removeEventListener(event: string, listener: any): void;
29
- inheritNode(node: ComponentNode): void;
30
- mount(parent: Node, before?: Node | null): Node[];
31
- unmount(): void;
67
+ declare class Component {
68
+ component: ComponentFn;
69
+ props: ComponentProps | undefined;
70
+ protected renderedNodes: AnyNode[];
71
+ protected scope: Scope | null;
72
+ protected parentNode: Node | undefined;
73
+ beforeNode: Node | undefined;
74
+ private reactiveProps;
75
+ readonly key: string | undefined;
76
+ protected state: number;
77
+ protected parentScope: Scope | null;
78
+ private [COMPONENT_TYPE.NORMAL];
79
+ get isConnected(): boolean;
80
+ get firstChild(): Node | undefined;
81
+ constructor(component: ComponentFn, props: ComponentProps | undefined);
82
+ mount(parentNode: Node, beforeNode?: Node): AnyNode[];
83
+ update(prevNode: Component): Component;
84
+ forceUpdate(): Promise<void>;
85
+ /**
86
+ * Destroy component
87
+ */
88
+ destroy(): void;
89
+ applyProps(props: ComponentProps): void;
32
90
  }
91
+ /**
92
+ * check if a node is a component
93
+ * @param {unknown} node - the node to check
94
+ * @returns {boolean} true if the node is a component, false otherwise
95
+ */
96
+ declare function isComponent(node: unknown): node is Component;
97
+ /**
98
+ * create a component
99
+ * @param {Function} componentFn - the component function
100
+ * @param {ComponentProps} props - the component props
101
+ * @returns {Component} the component
102
+ */
103
+ declare function createComponent(componentFn: ComponentFn, props?: ComponentProps): Component;
33
104
 
34
105
  /**
35
- * Based on JSX types for Surplus and Inferno and adapted for `dom-expressions`.
106
+ * Create a template factory function from HTML string
36
107
  *
37
- * https://github.com/adamhaile/surplus/blob/master/index.d.ts
38
- * https://github.com/infernojs/inferno/blob/master/packages/inferno/src/core/types.ts
108
+ * This function creates a reusable template factory that efficiently clones
109
+ * DOM nodes from the provided HTML string. The template is parsed once and
110
+ *
111
+ * @param html - The HTML string to create template from
112
+ * @returns Factory function that returns a cloned node of the template
113
+ * @throws {Error} When template content is empty or invalid
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * const buttonTemplate = template('<button>Click me</button>');
118
+ * const button1 = buttonTemplate(); // Creates first button instance
119
+ * const button2 = buttonTemplate(); // Creates second button instance
120
+ * ```
39
121
  */
40
- type DOMElement = Element;
41
- declare const SERIALIZABLE: unique symbol;
42
-
43
- declare global {
44
- export namespace JSX {
45
- export type Element = EssorNode;
46
- export type JSXElement = EssorNode;
47
-
48
- type Children =
49
- | string
50
- | number
51
- | boolean
52
- | Date
53
- | Node
54
- | Element
55
- | Effect
56
- | Children[]
57
- | null
58
- | undefined;
59
- type Effect = () => Children;
60
- interface ArrayElement extends Array<Element> {}
61
- interface ElementClass {
62
- // empty, libs can define requirements downstream
63
- }
64
- interface ElementAttributesProperty {
65
- // empty, libs can define requirements downstream
66
- }
67
- interface ElementChildrenAttribute {
68
- children: {};
69
- }
70
- interface EventHandler<T, E extends Event> {
71
- (
72
- e: E & {
73
- currentTarget: T;
74
- target: DOMElement;
75
- },
76
- ): void;
77
- }
78
- interface BoundEventHandler<T, E extends Event> {
79
- 0: (
80
- data: any,
81
- e: E & {
82
- currentTarget: T;
83
- target: DOMElement;
84
- },
85
- ) => void;
86
- 1: any;
87
- }
88
- type EventHandlerUnion<T, E extends Event> = EventHandler<T, E> | BoundEventHandler<T, E>;
89
-
90
- interface InputEventHandler<T, E extends InputEvent> {
91
- (
92
- e: E & {
93
- currentTarget: T;
94
- target: T extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement
95
- ? T
96
- : DOMElement;
97
- },
98
- ): void;
99
- }
100
- interface BoundInputEventHandler<T, E extends InputEvent> {
101
- 0: (
102
- data: any,
103
- e: E & {
104
- currentTarget: T;
105
- target: T extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement
106
- ? T
107
- : DOMElement;
108
- },
109
- ) => void;
110
- 1: any;
111
- }
112
- type InputEventHandlerUnion<T, E extends InputEvent> =
113
- | InputEventHandler<T, E>
114
- | BoundInputEventHandler<T, E>;
115
-
116
- interface ChangeEventHandler<T, E extends Event> {
117
- (
118
- e: E & {
119
- currentTarget: T;
120
- target: T extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement
121
- ? T
122
- : DOMElement;
123
- },
124
- ): void;
125
- }
126
- interface BoundChangeEventHandler<T, E extends Event> {
127
- 0: (
128
- data: any,
129
- e: E & {
130
- currentTarget: T;
131
- target: T extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement
132
- ? T
133
- : DOMElement;
134
- },
135
- ) => void;
136
- 1: any;
137
- }
138
- type ChangeEventHandlerUnion<T, E extends Event> =
139
- | ChangeEventHandler<T, E>
140
- | BoundChangeEventHandler<T, E>;
122
+ declare function template(html: string): () => Node;
123
+ /**
124
+ * Create and mount an application with the specified component
125
+ *
126
+ * This function initializes an application by mounting a root component
127
+ * to a target DOM element. It handles target validation and cleanup.
128
+ *
129
+ * @param component - The root component function to mount
130
+ * @param target - CSS selector string or DOM element to mount to
131
+ * @returns The mount root component instance, or undefined if target not found
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * const App = () => template('<div>Hello World</div>')
136
+ * const app = createApp(App, '#root');
137
+ *
138
+ * // Or with DOM element
139
+ * const container = document.getElementById('app');
140
+ * const app = createApp(App, container);
141
+ * ```
142
+ */
143
+ declare function createApp(component: ComponentFn, target: string | Element): Component | undefined;
141
144
 
142
- interface FocusEventHandler<T, E extends FocusEvent> {
143
- (
144
- e: E & {
145
- currentTarget: T;
146
- target: T extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement
147
- ? T
148
- : DOMElement;
149
- },
150
- ): void;
151
- }
152
- interface BoundFocusEventHandler<T, E extends FocusEvent> {
153
- 0: (
154
- data: any,
155
- e: E & {
156
- currentTarget: T;
157
- target: T extends HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement
158
- ? T
159
- : DOMElement;
160
- },
161
- ) => void;
162
- 1: any;
163
- }
164
- type FocusEventHandlerUnion<T, E extends FocusEvent> =
165
- | FocusEventHandler<T, E>
166
- | BoundFocusEventHandler<T, E>;
145
+ type LifecycleHook = () => void | Promise<void>;
146
+ /**
147
+ * Register a mount lifecycle hook.
148
+ * Called after the component is mounted to the DOM.
149
+ *
150
+ * @param hook - The hook function to execute on mount
151
+ */
152
+ declare function onMount(hook: LifecycleHook): void;
153
+ /**
154
+ * Register a destroy lifecycle hook.
155
+ * Called before the component is removed from the DOM.
156
+ *
157
+ * @param hook - The hook function to execute on destroy
158
+ */
159
+ declare function onDestroy(hook: LifecycleHook): void;
160
+ /**
161
+ * Register an update lifecycle hook.
162
+ * Called after the component updates.
163
+ *
164
+ * @param hook - The hook function to execute on update
165
+ */
166
+ declare function onUpdate(hook: LifecycleHook): void;
167
167
 
168
- interface SerializableAttributeValue {
169
- toString(): string;
170
- [SERIALIZABLE]: never;
171
- }
168
+ /**
169
+ * Add event listener with automatic cleanup on scope destruction
170
+ */
171
+ declare function addEventListener(element: Element, event: string, handler: EventListener, options?: AddEventListenerOptions): void;
172
+ /**
173
+ * Bind an element to a setter function, allowing the element to update the setter value when its value changes.
174
+ *
175
+ * @param node The element to bind.
176
+ * @param setter The setter function to call when the element's value changes.
177
+ */
178
+ declare function bindElement(node: Element, key: any, defaultValue: any, setter: (value: unknown) => void): void;
179
+ /**
180
+ * Reactive node insertion with binding support
181
+ *
182
+ * @param parent Parent node
183
+ * @param nodeFactory Node factory function or static node
184
+ * @param before Reference node for insertion position
185
+ * @param options Insertion options
186
+ *
187
+ * @example
188
+ * ```typescript
189
+ * insert(container, () => message.value, null);
190
+ * insert(container, staticElement, referenceNode);
191
+ * insert(container, "Hello World", null); // Direct string support
192
+ * ```
193
+ */
194
+ declare function insert(parent: Node, nodeFactory: (() => Node | AnyNode[]) | Node | string | AnyNode[], before?: Node): AnyNode[] | undefined;
195
+ /**
196
+ * Map nodes from template by indexes
197
+ */
198
+ declare function mapNodes(template: Node, indexes: number[]): Node[];
172
199
 
173
- interface IntrinsicAttributes {
174
- ref?: unknown | ((e: unknown) => void);
175
- }
176
- interface CustomAttributes<T> {
177
- ref?: Signal<T> | ((el: T) => void);
178
- key?: string | number | symbol;
179
- }
180
- type Accessor<T> = () => T;
181
- interface Directives {}
182
- interface DirectiveFunctions {
183
- [x: string]: (el: DOMElement, accessor: Accessor<any>) => void;
184
- }
185
- interface ExplicitProperties<T> {
186
- value: Signal<T>;
187
- updateValue: (value: T) => void;
188
- }
200
+ /**
201
+ * Set up event delegation for specified event types
202
+ * @param {string[]} eventNames - Array of event names to delegate
203
+ * @param {Document} document - Document to attach events to (defaults to window.document)
204
+ */
205
+ declare function delegateEvents(eventNames: string[], document?: Document): void;
189
206
 
190
- interface ExplicitAttributes {}
191
- interface CustomEvents {}
192
- interface CustomCaptureEvents {}
193
- type OnCaptureAttributes<T> = {
194
- [Key in keyof CustomCaptureEvents as `oncapture:${Key}`]?: EventHandler<
195
- T,
196
- CustomCaptureEvents[Key]
197
- >;
198
- };
199
- type PropAttributes<T> = {
200
- [Key in keyof ExplicitProperties]?: ExplicitProperties<T>[Key];
201
- };
202
- interface DOMAttributes<T>
203
- extends CustomAttributes<T>,
204
- PropAttributes<T>,
205
- OnCaptureAttributes<T>,
206
- CustomEventHandlersCamelCase<T>,
207
- CustomEventHandlersLowerCase<T> {
208
- children?: Children;
209
- innerHTML?: string;
210
- innerText?: string | number;
211
- textContent?: string | number;
212
- // camel case events
213
- onCopy?: EventHandlerUnion<T, ClipboardEvent>;
214
- onCut?: EventHandlerUnion<T, ClipboardEvent>;
215
- onPaste?: EventHandlerUnion<T, ClipboardEvent>;
216
- onCompositionEnd?: EventHandlerUnion<T, CompositionEvent>;
217
- onCompositionStart?: EventHandlerUnion<T, CompositionEvent>;
218
- onCompositionUpdate?: EventHandlerUnion<T, CompositionEvent>;
219
- onFocusOut?: FocusEventHandlerUnion<T, FocusEvent>;
220
- onFocusIn?: FocusEventHandlerUnion<T, FocusEvent>;
221
- onEncrypted?: EventHandlerUnion<T, Event>;
222
- onDragExit?: EventHandlerUnion<T, DragEvent>;
223
- // lower case events
224
- oncopy?: EventHandlerUnion<T, ClipboardEvent>;
225
- oncut?: EventHandlerUnion<T, ClipboardEvent>;
226
- onpaste?: EventHandlerUnion<T, ClipboardEvent>;
227
- oncompositionend?: EventHandlerUnion<T, CompositionEvent>;
228
- oncompositionstart?: EventHandlerUnion<T, CompositionEvent>;
229
- oncompositionupdate?: EventHandlerUnion<T, CompositionEvent>;
230
- onfocusout?: FocusEventHandlerUnion<T, FocusEvent>;
231
- onfocusin?: FocusEventHandlerUnion<T, FocusEvent>;
232
- onencrypted?: EventHandlerUnion<T, Event>;
233
- ondragexit?: EventHandlerUnion<T, DragEvent>;
234
- }
235
- interface CustomEventHandlersCamelCase<T> {
236
- onAbort?: EventHandlerUnion<T, Event>;
237
- onAnimationEnd?: EventHandlerUnion<T, AnimationEvent>;
238
- onAnimationIteration?: EventHandlerUnion<T, AnimationEvent>;
239
- onAnimationStart?: EventHandlerUnion<T, AnimationEvent>;
240
- onAuxClick?: EventHandlerUnion<T, MouseEvent>;
241
- onBeforeInput?: InputEventHandlerUnion<T, InputEvent>;
242
- onBlur?: FocusEventHandlerUnion<T, FocusEvent>;
243
- onCanPlay?: EventHandlerUnion<T, Event>;
244
- onCanPlayThrough?: EventHandlerUnion<T, Event>;
245
- onChange?: ChangeEventHandlerUnion<T, Event>;
246
- onClick?: EventHandlerUnion<T, MouseEvent>;
247
- onContextMenu?: EventHandlerUnion<T, MouseEvent>;
248
- onDblClick?: EventHandlerUnion<T, MouseEvent>;
249
- onDrag?: EventHandlerUnion<T, DragEvent>;
250
- onDragEnd?: EventHandlerUnion<T, DragEvent>;
251
- onDragEnter?: EventHandlerUnion<T, DragEvent>;
252
- onDragLeave?: EventHandlerUnion<T, DragEvent>;
253
- onDragOver?: EventHandlerUnion<T, DragEvent>;
254
- onDragStart?: EventHandlerUnion<T, DragEvent>;
255
- onDrop?: EventHandlerUnion<T, DragEvent>;
256
- onDurationChange?: EventHandlerUnion<T, Event>;
257
- onEmptied?: EventHandlerUnion<T, Event>;
258
- onEnded?: EventHandlerUnion<T, Event>;
259
- onError?: EventHandlerUnion<T, Event>;
260
- onFocus?: FocusEventHandlerUnion<T, FocusEvent>;
261
- onGotPointerCapture?: EventHandlerUnion<T, PointerEvent>;
262
- onInput?: InputEventHandlerUnion<T, InputEvent>;
263
- onInvalid?: EventHandlerUnion<T, Event>;
264
- onKeyDown?: EventHandlerUnion<T, KeyboardEvent>;
265
- onKeyPress?: EventHandlerUnion<T, KeyboardEvent>;
266
- onKeyUp?: EventHandlerUnion<T, KeyboardEvent>;
267
- onLoad?: EventHandlerUnion<T, Event>;
268
- onLoadedData?: EventHandlerUnion<T, Event>;
269
- onLoadedMetadata?: EventHandlerUnion<T, Event>;
270
- onLoadStart?: EventHandlerUnion<T, Event>;
271
- onLostPointerCapture?: EventHandlerUnion<T, PointerEvent>;
272
- onMouseDown?: EventHandlerUnion<T, MouseEvent>;
273
- onMouseEnter?: EventHandlerUnion<T, MouseEvent>;
274
- onMouseLeave?: EventHandlerUnion<T, MouseEvent>;
275
- onMouseMove?: EventHandlerUnion<T, MouseEvent>;
276
- onMouseOut?: EventHandlerUnion<T, MouseEvent>;
277
- onMouseOver?: EventHandlerUnion<T, MouseEvent>;
278
- onMouseUp?: EventHandlerUnion<T, MouseEvent>;
279
- onPause?: EventHandlerUnion<T, Event>;
280
- onPlay?: EventHandlerUnion<T, Event>;
281
- onPlaying?: EventHandlerUnion<T, Event>;
282
- onPointerCancel?: EventHandlerUnion<T, PointerEvent>;
283
- onPointerDown?: EventHandlerUnion<T, PointerEvent>;
284
- onPointerEnter?: EventHandlerUnion<T, PointerEvent>;
285
- onPointerLeave?: EventHandlerUnion<T, PointerEvent>;
286
- onPointerMove?: EventHandlerUnion<T, PointerEvent>;
287
- onPointerOut?: EventHandlerUnion<T, PointerEvent>;
288
- onPointerOver?: EventHandlerUnion<T, PointerEvent>;
289
- onPointerUp?: EventHandlerUnion<T, PointerEvent>;
290
- onProgress?: EventHandlerUnion<T, Event>;
291
- onRateChange?: EventHandlerUnion<T, Event>;
292
- onReset?: EventHandlerUnion<T, Event>;
293
- onScroll?: EventHandlerUnion<T, Event>;
294
- onScrollEnd?: EventHandlerUnion<T, Event>;
295
- onSeeked?: EventHandlerUnion<T, Event>;
296
- onSeeking?: EventHandlerUnion<T, Event>;
297
- onSelect?: EventHandlerUnion<T, UIEvent>;
298
- onStalled?: EventHandlerUnion<T, Event>;
299
- onSubmit?: EventHandlerUnion<
300
- T,
301
- Event & {
302
- submitter: HTMLElement;
303
- }
304
- >;
305
- onSuspend?: EventHandlerUnion<T, Event>;
306
- onTimeUpdate?: EventHandlerUnion<T, Event>;
307
- onTouchCancel?: EventHandlerUnion<T, TouchEvent>;
308
- onTouchEnd?: EventHandlerUnion<T, TouchEvent>;
309
- onTouchMove?: EventHandlerUnion<T, TouchEvent>;
310
- onTouchStart?: EventHandlerUnion<T, TouchEvent>;
311
- onTransitionStart?: EventHandlerUnion<T, TransitionEvent>;
312
- onTransitionEnd?: EventHandlerUnion<T, TransitionEvent>;
313
- onTransitionRun?: EventHandlerUnion<T, TransitionEvent>;
314
- onTransitionCancel?: EventHandlerUnion<T, TransitionEvent>;
315
- onVolumeChange?: EventHandlerUnion<T, Event>;
316
- onWaiting?: EventHandlerUnion<T, Event>;
317
- onWheel?: EventHandlerUnion<T, WheelEvent>;
318
- }
319
- /**
320
- * @type {GlobalEventHandlers}
321
- */
322
- interface CustomEventHandlersLowerCase<T> {
323
- onabort?: EventHandlerUnion<T, Event>;
324
- onanimationend?: EventHandlerUnion<T, AnimationEvent>;
325
- onanimationiteration?: EventHandlerUnion<T, AnimationEvent>;
326
- onanimationstart?: EventHandlerUnion<T, AnimationEvent>;
327
- onauxclick?: EventHandlerUnion<T, MouseEvent>;
328
- onbeforeinput?: InputEventHandlerUnion<T, InputEvent>;
329
- onblur?: FocusEventHandlerUnion<T, FocusEvent>;
330
- oncanplay?: EventHandlerUnion<T, Event>;
331
- oncanplaythrough?: EventHandlerUnion<T, Event>;
332
- onchange?: ChangeEventHandlerUnion<T, Event>;
333
- onclick?: EventHandlerUnion<T, MouseEvent>;
334
- oncontextmenu?: EventHandlerUnion<T, MouseEvent>;
335
- ondblclick?: EventHandlerUnion<T, MouseEvent>;
336
- ondrag?: EventHandlerUnion<T, DragEvent>;
337
- ondragend?: EventHandlerUnion<T, DragEvent>;
338
- ondragenter?: EventHandlerUnion<T, DragEvent>;
339
- ondragleave?: EventHandlerUnion<T, DragEvent>;
340
- ondragover?: EventHandlerUnion<T, DragEvent>;
341
- ondragstart?: EventHandlerUnion<T, DragEvent>;
342
- ondrop?: EventHandlerUnion<T, DragEvent>;
343
- ondurationchange?: EventHandlerUnion<T, Event>;
344
- onemptied?: EventHandlerUnion<T, Event>;
345
- onended?: EventHandlerUnion<T, Event>;
346
- onerror?: EventHandlerUnion<T, Event>;
347
- onfocus?: FocusEventHandlerUnion<T, FocusEvent>;
348
- ongotpointercapture?: EventHandlerUnion<T, PointerEvent>;
349
- oninput?: InputEventHandlerUnion<T, InputEvent>;
350
- oninvalid?: EventHandlerUnion<T, Event>;
351
- onkeydown?: EventHandlerUnion<T, KeyboardEvent>;
352
- onkeypress?: EventHandlerUnion<T, KeyboardEvent>;
353
- onkeyup?: EventHandlerUnion<T, KeyboardEvent>;
354
- onload?: EventHandlerUnion<T, Event>;
355
- onloadeddata?: EventHandlerUnion<T, Event>;
356
- onloadedmetadata?: EventHandlerUnion<T, Event>;
357
- onloadstart?: EventHandlerUnion<T, Event>;
358
- onlostpointercapture?: EventHandlerUnion<T, PointerEvent>;
359
- onmousedown?: EventHandlerUnion<T, MouseEvent>;
360
- onmouseenter?: EventHandlerUnion<T, MouseEvent>;
361
- onmouseleave?: EventHandlerUnion<T, MouseEvent>;
362
- onmousemove?: EventHandlerUnion<T, MouseEvent>;
363
- onmouseout?: EventHandlerUnion<T, MouseEvent>;
364
- onmouseover?: EventHandlerUnion<T, MouseEvent>;
365
- onmouseup?: EventHandlerUnion<T, MouseEvent>;
366
- onpause?: EventHandlerUnion<T, Event>;
367
- onplay?: EventHandlerUnion<T, Event>;
368
- onplaying?: EventHandlerUnion<T, Event>;
369
- onpointercancel?: EventHandlerUnion<T, PointerEvent>;
370
- onpointerdown?: EventHandlerUnion<T, PointerEvent>;
371
- onpointerenter?: EventHandlerUnion<T, PointerEvent>;
372
- onpointerleave?: EventHandlerUnion<T, PointerEvent>;
373
- onpointermove?: EventHandlerUnion<T, PointerEvent>;
374
- onpointerout?: EventHandlerUnion<T, PointerEvent>;
375
- onpointerover?: EventHandlerUnion<T, PointerEvent>;
376
- onpointerup?: EventHandlerUnion<T, PointerEvent>;
377
- onprogress?: EventHandlerUnion<T, Event>;
378
- onratechange?: EventHandlerUnion<T, Event>;
379
- onreset?: EventHandlerUnion<T, Event>;
380
- onscroll?: EventHandlerUnion<T, Event>;
381
- onscrollend?: EventHandlerUnion<T, Event>;
382
- onseeked?: EventHandlerUnion<T, Event>;
383
- onseeking?: EventHandlerUnion<T, Event>;
384
- onselect?: EventHandlerUnion<T, UIEvent>;
385
- onstalled?: EventHandlerUnion<T, Event>;
386
- onsubmit?: EventHandlerUnion<
387
- T,
388
- Event & {
389
- submitter: HTMLElement;
390
- }
391
- >;
392
- onsuspend?: EventHandlerUnion<T, Event>;
393
- ontimeupdate?: EventHandlerUnion<T, Event>;
394
- ontouchcancel?: EventHandlerUnion<T, TouchEvent>;
395
- ontouchend?: EventHandlerUnion<T, TouchEvent>;
396
- ontouchmove?: EventHandlerUnion<T, TouchEvent>;
397
- ontouchstart?: EventHandlerUnion<T, TouchEvent>;
398
- ontransitionstart?: EventHandlerUnion<T, TransitionEvent>;
399
- ontransitionend?: EventHandlerUnion<T, TransitionEvent>;
400
- ontransitionrun?: EventHandlerUnion<T, TransitionEvent>;
401
- ontransitioncancel?: EventHandlerUnion<T, TransitionEvent>;
402
- onvolumechange?: EventHandlerUnion<T, Event>;
403
- onwaiting?: EventHandlerUnion<T, Event>;
404
- onwheel?: EventHandlerUnion<T, WheelEvent>;
405
- }
207
+ /**
208
+ * Create a reactive proxy that excludes specified properties
209
+ *
210
+ * @param target - The original reactive object
211
+ * @param keys - List of property names to exclude
212
+ * @returns A reactive proxy with specified properties excluded
213
+ */
214
+ declare function omitProps<T extends object, K extends keyof T>(target: T, keys: K[]): Omit<T, K>;
406
215
 
407
- interface CSSProperties extends csstype.PropertiesHyphen {
408
- // Override
409
- [key: `-${string}`]: string | number | undefined;
410
- }
216
+ /**
217
+ * Patches the class attribute of an element
218
+ * Supports silent hydration (skips DOM updates during hydration phase)
219
+ *
220
+ * @param el - The element to patch classes on
221
+ * @param prev - Previous class value for diffing
222
+ * @param next - New class value to apply
223
+ * @param isSVG - Whether the element is an SVG element
224
+ * @public
225
+ */
226
+ declare function patchClass(el: Element, prev: unknown, next: unknown, isSVG?: boolean): void;
227
+ /**
228
+ * Normalizes different class value formats into a single string
229
+ *
230
+ * @param value - The class value to normalize
231
+ * @returns A normalized class string
232
+ * @public
233
+ */
234
+ declare function normalizeClass(value: unknown): string;
411
235
 
412
- type HTMLAutocapitalize = 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters';
413
- type HTMLDir = 'ltr' | 'rtl' | 'auto';
414
- type HTMLFormEncType =
415
- | 'application/x-www-form-urlencoded'
416
- | 'multipart/form-data'
417
- | 'text/plain';
418
- type HTMLFormMethod = 'post' | 'get' | 'dialog';
419
- type HTMLCrossorigin = 'anonymous' | 'use-credentials' | '';
420
- type HTMLReferrerPolicy =
421
- | 'no-referrer'
422
- | 'no-referrer-when-downgrade'
423
- | 'origin'
424
- | 'origin-when-cross-origin'
425
- | 'same-origin'
426
- | 'strict-origin'
427
- | 'strict-origin-when-cross-origin'
428
- | 'unsafe-url';
429
- type HTMLIframeSandbox =
430
- | 'allow-downloads-without-user-activation'
431
- | 'allow-downloads'
432
- | 'allow-forms'
433
- | 'allow-modals'
434
- | 'allow-orientation-lock'
435
- | 'allow-pointer-lock'
436
- | 'allow-popups'
437
- | 'allow-popups-to-escape-sandbox'
438
- | 'allow-presentation'
439
- | 'allow-same-origin'
440
- | 'allow-scripts'
441
- | 'allow-storage-access-by-user-activation'
442
- | 'allow-top-navigation'
443
- | 'allow-top-navigation-by-user-activation'
444
- | 'allow-top-navigation-to-custom-protocols';
445
- type HTMLLinkAs =
446
- | 'audio'
447
- | 'document'
448
- | 'embed'
449
- | 'fetch'
450
- | 'font'
451
- | 'image'
452
- | 'object'
453
- | 'script'
454
- | 'style'
455
- | 'track'
456
- | 'video'
457
- | 'worker';
236
+ /**
237
+ * Patches the style of an element, optimized for different style formats
238
+ * Supports silent hydration (skips DOM updates during hydration phase)
239
+ *
240
+ * @param el - The element to patch styles on
241
+ * @public
242
+ */
243
+ declare function patchStyle(el: HTMLElement, prev: unknown, next: unknown): void;
244
+ /**
245
+ * Sets an individual style property with various optimizations
246
+ *
247
+ * @param style - The style object to modify
248
+ * @param name - The style property name
249
+ * @param val - The style property value
250
+ * @private
251
+ */
252
+ declare function setStyle(style: CSSStyleDeclaration, name: string, val: string | string[]): void;
458
253
 
459
- // All the WAI-ARIA 1.1 attributes from https://www.w3.org/TR/wai-aria-1.1/
460
- interface AriaAttributes {
461
- /** Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application. */
462
- 'aria-activedescendant'?: string;
463
- /** Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute. */
464
- 'aria-atomic'?: boolean | 'false' | 'true';
465
- /**
466
- * Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be
467
- * presented if they are made.
468
- */
469
- 'aria-autocomplete'?: 'none' | 'inline' | 'list' | 'both';
470
- /** Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user. */
471
- 'aria-busy'?: boolean | 'false' | 'true';
472
- /**
473
- * Indicates the current "checked" state of checkboxes, radio buttons, and other widgets.
474
- * @see aria-pressed @see aria-selected.
475
- */
476
- 'aria-checked'?: boolean | 'false' | 'mixed' | 'true';
477
- /**
478
- * Defines the total number of columns in a table, grid, or treegrid.
479
- * @see aria-colindex.
480
- */
481
- 'aria-colcount'?: number | string;
482
- /**
483
- * Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid.
484
- * @see aria-colcount @see aria-colspan.
485
- */
486
- 'aria-colindex'?: number | string;
487
- /**
488
- * Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid.
489
- * @see aria-colindex @see aria-rowspan.
490
- */
491
- 'aria-colspan'?: number | string;
492
- /**
493
- * Identifies the element (or elements) whose contents or presence are controlled by the current element.
494
- * @see aria-owns.
495
- */
496
- 'aria-controls'?: string;
497
- /** Indicates the element that represents the current item within a container or set of related elements. */
498
- 'aria-current'?: boolean | 'false' | 'true' | 'page' | 'step' | 'location' | 'date' | 'time';
499
- /**
500
- * Identifies the element (or elements) that describes the object.
501
- * @see aria-labelledby
502
- */
503
- 'aria-describedby'?: string;
504
- /**
505
- * Identifies the element that provides a detailed, extended description for the object.
506
- * @see aria-describedby.
507
- */
508
- 'aria-details'?: string;
509
- /**
510
- * Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable.
511
- * @see aria-hidden @see aria-readonly.
512
- */
513
- 'aria-disabled'?: boolean | 'false' | 'true';
514
- /**
515
- * Indicates what functions can be performed when a dragged object is released on the drop target.
516
- * @deprecated in ARIA 1.1
517
- */
518
- 'aria-dropeffect'?: 'none' | 'copy' | 'execute' | 'link' | 'move' | 'popup';
519
- /**
520
- * Identifies the element that provides an error message for the object.
521
- * @see aria-invalid @see aria-describedby.
522
- */
523
- 'aria-errormessage'?: string;
524
- /** Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. */
525
- 'aria-expanded'?: boolean | 'false' | 'true';
526
- /**
527
- * Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion,
528
- * allows assistive technology to override the general default of reading in document source order.
529
- */
530
- 'aria-flowto'?: string;
531
- /**
532
- * Indicates an element's "grabbed" state in a drag-and-drop operation.
533
- * @deprecated in ARIA 1.1
534
- */
535
- 'aria-grabbed'?: boolean | 'false' | 'true';
536
- /** Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. */
537
- 'aria-haspopup'?:
538
- | boolean
539
- | 'false'
540
- | 'true'
541
- | 'menu'
542
- | 'listbox'
543
- | 'tree'
544
- | 'grid'
545
- | 'dialog';
546
- /**
547
- * Indicates whether the element is exposed to an accessibility API.
548
- * @see aria-disabled.
549
- */
550
- 'aria-hidden'?: boolean | 'false' | 'true';
551
- /**
552
- * Indicates the entered value does not conform to the format expected by the application.
553
- * @see aria-errormessage.
554
- */
555
- 'aria-invalid'?: boolean | 'false' | 'true' | 'grammar' | 'spelling';
556
- /** Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element. */
557
- 'aria-keyshortcuts'?: string;
558
- /**
559
- * Defines a string value that labels the current element.
560
- * @see aria-labelledby.
561
- */
562
- 'aria-label'?: string;
563
- /**
564
- * Identifies the element (or elements) that labels the current element.
565
- * @see aria-describedby.
566
- */
567
- 'aria-labelledby'?: string;
568
- /** Defines the hierarchical level of an element within a structure. */
569
- 'aria-level'?: number | string;
570
- /** Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region. */
571
- 'aria-live'?: 'off' | 'assertive' | 'polite';
572
- /** Indicates whether an element is modal when displayed. */
573
- 'aria-modal'?: boolean | 'false' | 'true';
574
- /** Indicates whether a text box accepts multiple lines of input or only a single line. */
575
- 'aria-multiline'?: boolean | 'false' | 'true';
576
- /** Indicates that the user may select more than one item from the current selectable descendants. */
577
- 'aria-multiselectable'?: boolean | 'false' | 'true';
578
- /** Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous. */
579
- 'aria-orientation'?: 'horizontal' | 'vertical';
580
- /**
581
- * Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship
582
- * between DOM elements where the DOM hierarchy cannot be used to represent the relationship.
583
- * @see aria-controls.
584
- */
585
- 'aria-owns'?: string;
586
- /**
587
- * Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value.
588
- * A hint could be a sample value or a brief description of the expected format.
589
- */
590
- 'aria-placeholder'?: string;
591
- /**
592
- * Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM.
593
- * @see aria-setsize.
594
- */
595
- 'aria-posinset'?: number | string;
596
- /**
597
- * Indicates the current "pressed" state of toggle buttons.
598
- * @see aria-checked @see aria-selected.
599
- */
600
- 'aria-pressed'?: boolean | 'false' | 'mixed' | 'true';
601
- /**
602
- * Indicates that the element is not editable, but is otherwise operable.
603
- * @see aria-disabled.
604
- */
605
- 'aria-readonly'?: boolean | 'false' | 'true';
606
- /**
607
- * Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified.
608
- * @see aria-atomic.
609
- */
610
- 'aria-relevant'?:
611
- | 'additions'
612
- | 'additions removals'
613
- | 'additions text'
614
- | 'all'
615
- | 'removals'
616
- | 'removals additions'
617
- | 'removals text'
618
- | 'text'
619
- | 'text additions'
620
- | 'text removals';
621
- /** Indicates that user input is required on the element before a form may be submitted. */
622
- 'aria-required'?: boolean | 'false' | 'true';
623
- /** Defines a human-readable, author-localized description for the role of an element. */
624
- 'aria-roledescription'?: string;
625
- /**
626
- * Defines the total number of rows in a table, grid, or treegrid.
627
- * @see aria-rowindex.
628
- */
629
- 'aria-rowcount'?: number | string;
630
- /**
631
- * Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid.
632
- * @see aria-rowcount @see aria-rowspan.
633
- */
634
- 'aria-rowindex'?: number | string;
635
- /**
636
- * Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid.
637
- * @see aria-rowindex @see aria-colspan.
638
- */
639
- 'aria-rowspan'?: number | string;
640
- /**
641
- * Indicates the current "selected" state of various widgets.
642
- * @see aria-checked @see aria-pressed.
643
- */
644
- 'aria-selected'?: boolean | 'false' | 'true';
645
- /**
646
- * Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM.
647
- * @see aria-posinset.
648
- */
649
- 'aria-setsize'?: number | string;
650
- /** Indicates if items in a table or grid are sorted in ascending or descending order. */
651
- 'aria-sort'?: 'none' | 'ascending' | 'descending' | 'other';
652
- /** Defines the maximum allowed value for a range widget. */
653
- 'aria-valuemax'?: number | string;
654
- /** Defines the minimum allowed value for a range widget. */
655
- 'aria-valuemin'?: number | string;
656
- /**
657
- * Defines the current value for a range widget.
658
- * @see aria-valuetext.
659
- */
660
- 'aria-valuenow'?: number | string;
661
- /** Defines the human readable text alternative of aria-valuenow for a range widget. */
662
- 'aria-valuetext'?: string;
663
- 'role'?:
664
- | 'alert'
665
- | 'alertdialog'
666
- | 'application'
667
- | 'article'
668
- | 'banner'
669
- | 'button'
670
- | 'cell'
671
- | 'checkbox'
672
- | 'columnheader'
673
- | 'combobox'
674
- | 'complementary'
675
- | 'contentinfo'
676
- | 'definition'
677
- | 'dialog'
678
- | 'directory'
679
- | 'document'
680
- | 'feed'
681
- | 'figure'
682
- | 'form'
683
- | 'grid'
684
- | 'gridcell'
685
- | 'group'
686
- | 'heading'
687
- | 'img'
688
- | 'link'
689
- | 'list'
690
- | 'listbox'
691
- | 'listitem'
692
- | 'log'
693
- | 'main'
694
- | 'marquee'
695
- | 'math'
696
- | 'menu'
697
- | 'menubar'
698
- | 'menuitem'
699
- | 'menuitemcheckbox'
700
- | 'menuitemradio'
701
- | 'meter'
702
- | 'navigation'
703
- | 'none'
704
- | 'note'
705
- | 'option'
706
- | 'presentation'
707
- | 'progressbar'
708
- | 'radio'
709
- | 'radiogroup'
710
- | 'region'
711
- | 'row'
712
- | 'rowgroup'
713
- | 'rowheader'
714
- | 'scrollbar'
715
- | 'search'
716
- | 'searchbox'
717
- | 'separator'
718
- | 'slider'
719
- | 'spinbutton'
720
- | 'status'
721
- | 'switch'
722
- | 'tab'
723
- | 'table'
724
- | 'tablist'
725
- | 'tabpanel'
726
- | 'term'
727
- | 'textbox'
728
- | 'timer'
729
- | 'toolbar'
730
- | 'tooltip'
731
- | 'tree'
732
- | 'treegrid'
733
- | 'treeitem';
734
- }
254
+ type AttrValue = string | boolean | number | null | undefined | Record<string, unknown>;
255
+ declare function patchAttr(el: Element, key: string, prev: AttrValue, next: AttrValue): void;
735
256
 
736
- interface HTMLAttributes<T> extends AriaAttributes, DOMAttributes<T> {
737
- accessKey?: string;
738
- class?: string | undefined;
739
- contenteditable?: boolean | 'plaintext-only' | 'inherit';
740
- contextmenu?: string;
741
- dir?: HTMLDir;
742
- draggable?: boolean | 'false' | 'true';
743
- hidden?: boolean | 'hidden' | 'until-found';
744
- id?: string;
745
- inert?: boolean;
746
- lang?: string;
747
- spellcheck?: boolean;
748
- style?: CSSProperties | string;
749
- tabindex?: number | string;
750
- title?: string;
751
- translate?: 'yes' | 'no';
752
- about?: string;
753
- datatype?: string;
754
- inlist?: any;
755
- popover?: boolean | 'manual' | 'auto';
756
- prefix?: string;
757
- property?: string;
758
- resource?: string;
759
- typeof?: string;
760
- vocab?: string;
761
- autocapitalize?: HTMLAutocapitalize;
762
- slot?: string;
763
- color?: string;
764
- itemprop?: string;
765
- itemscope?: boolean;
766
- itemtype?: string;
767
- itemid?: string;
768
- itemref?: string;
769
- part?: string;
770
- exportparts?: string;
771
- inputmode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';
772
- contentEditable?: boolean | 'plaintext-only' | 'inherit';
773
- contextMenu?: string;
774
- tabIndex?: number | string;
775
- autoCapitalize?: HTMLAutocapitalize;
776
- itemProp?: string;
777
- itemScope?: boolean;
778
- itemType?: string;
779
- itemId?: string;
780
- itemRef?: string;
781
- exportParts?: string;
782
- inputMode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';
783
- }
784
- interface AnchorHTMLAttributes<T> extends HTMLAttributes<T> {
785
- download?: any;
786
- href?: string;
787
- hreflang?: string;
788
- media?: string;
789
- ping?: string;
790
- referrerpolicy?: HTMLReferrerPolicy;
791
- rel?: string;
792
- target?: string;
793
- type?: string;
794
- referrerPolicy?: HTMLReferrerPolicy;
795
- }
796
- interface AudioHTMLAttributes<T> extends MediaHTMLAttributes<T> {}
797
- interface AreaHTMLAttributes<T> extends HTMLAttributes<T> {
798
- alt?: string;
799
- coords?: string;
800
- download?: any;
801
- href?: string;
802
- hreflang?: string;
803
- ping?: string;
804
- referrerpolicy?: HTMLReferrerPolicy;
805
- rel?: string;
806
- shape?: 'rect' | 'circle' | 'poly' | 'default';
807
- target?: string;
808
- referrerPolicy?: HTMLReferrerPolicy;
809
- }
810
- interface BaseHTMLAttributes<T> extends HTMLAttributes<T> {
811
- href?: string;
812
- target?: string;
813
- }
814
- interface BlockquoteHTMLAttributes<T> extends HTMLAttributes<T> {
815
- cite?: string;
816
- }
817
- interface ButtonHTMLAttributes<T> extends HTMLAttributes<T> {
818
- autofocus?: boolean;
819
- disabled?: boolean;
820
- form?: string;
821
- formaction?: string | SerializableAttributeValue;
822
- formenctype?: HTMLFormEncType;
823
- formmethod?: HTMLFormMethod;
824
- formnovalidate?: boolean;
825
- formtarget?: string;
826
- popovertarget?: string;
827
- popovertargetaction?: 'hide' | 'show' | 'toggle';
828
- name?: string;
829
- type?: 'submit' | 'reset' | 'button';
830
- value?: string;
831
- formAction?: string | SerializableAttributeValue;
832
- formEnctype?: HTMLFormEncType;
833
- formMethod?: HTMLFormMethod;
834
- formNoValidate?: boolean;
835
- formTarget?: string;
836
- popoverTarget?: string;
837
- popoverTargetAction?: 'hide' | 'show' | 'toggle';
838
- }
839
- interface CanvasHTMLAttributes<T> extends HTMLAttributes<T> {
840
- width?: number | string;
841
- height?: number | string;
842
- }
843
- interface ColHTMLAttributes<T> extends HTMLAttributes<T> {
844
- span?: number | string;
845
- width?: number | string;
846
- }
847
- interface ColgroupHTMLAttributes<T> extends HTMLAttributes<T> {
848
- span?: number | string;
849
- }
850
- interface DataHTMLAttributes<T> extends HTMLAttributes<T> {
851
- value?: string | string[] | number;
852
- }
853
- interface DetailsHtmlAttributes<T> extends HTMLAttributes<T> {
854
- open?: boolean;
855
- onToggle?: EventHandlerUnion<T, Event>;
856
- ontoggle?: EventHandlerUnion<T, Event>;
857
- }
858
- interface DialogHtmlAttributes<T> extends HTMLAttributes<T> {
859
- open?: boolean;
860
- onClose?: EventHandlerUnion<T, Event>;
861
- onCancel?: EventHandlerUnion<T, Event>;
862
- }
863
- interface EmbedHTMLAttributes<T> extends HTMLAttributes<T> {
864
- height?: number | string;
865
- src?: string;
866
- type?: string;
867
- width?: number | string;
868
- }
869
- interface FieldsetHTMLAttributes<T> extends HTMLAttributes<T> {
870
- disabled?: boolean;
871
- form?: string;
872
- name?: string;
873
- }
874
- interface FormHTMLAttributes<T> extends HTMLAttributes<T> {
875
- 'accept-charset'?: string;
876
- 'action'?: string | SerializableAttributeValue;
877
- 'autocomplete'?: string;
878
- 'encoding'?: HTMLFormEncType;
879
- 'enctype'?: HTMLFormEncType;
880
- 'method'?: HTMLFormMethod;
881
- 'name'?: string;
882
- 'novalidate'?: boolean;
883
- 'target'?: string;
884
- 'noValidate'?: boolean;
885
- }
886
- interface IframeHTMLAttributes<T> extends HTMLAttributes<T> {
887
- allow?: string;
888
- allowfullscreen?: boolean;
889
- height?: number | string;
890
- loading?: 'eager' | 'lazy';
891
- name?: string;
892
- referrerpolicy?: HTMLReferrerPolicy;
893
- sandbox?: HTMLIframeSandbox | string;
894
- src?: string;
895
- srcdoc?: string;
896
- width?: number | string;
897
- referrerPolicy?: HTMLReferrerPolicy;
898
- }
899
- interface ImgHTMLAttributes<T> extends HTMLAttributes<T> {
900
- alt?: string;
901
- crossorigin?: HTMLCrossorigin;
902
- decoding?: 'sync' | 'async' | 'auto';
903
- height?: number | string;
904
- ismap?: boolean;
905
- isMap?: boolean;
906
- loading?: 'eager' | 'lazy';
907
- referrerpolicy?: HTMLReferrerPolicy;
908
- referrerPolicy?: HTMLReferrerPolicy;
909
- sizes?: string;
910
- src?: string;
911
- srcset?: string;
912
- srcSet?: string;
913
- usemap?: string;
914
- useMap?: string;
915
- width?: number | string;
916
- crossOrigin?: HTMLCrossorigin;
917
- elementtiming?: string;
918
- fetchpriority?: 'high' | 'low' | 'auto';
919
- }
920
- interface InputHTMLAttributes<T> extends HTMLAttributes<T> {
921
- accept?: string;
922
- alt?: string;
923
- autocomplete?: string;
924
- autocorrect?: 'on' | 'off';
925
- autofocus?: boolean;
926
- capture?: boolean | string;
927
- checked?: boolean;
928
- crossorigin?: HTMLCrossorigin;
929
- disabled?: boolean;
930
- enterkeyhint?: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send';
931
- form?: string;
932
- formaction?: string | SerializableAttributeValue;
933
- formenctype?: HTMLFormEncType;
934
- formmethod?: HTMLFormMethod;
935
- formnovalidate?: boolean;
936
- formtarget?: string;
937
- height?: number | string;
938
- incremental?: boolean;
939
- list?: string;
940
- max?: number | string;
941
- maxlength?: number | string;
942
- min?: number | string;
943
- minlength?: number | string;
944
- multiple?: boolean;
945
- name?: string;
946
- pattern?: string;
947
- placeholder?: string;
948
- readonly?: boolean;
949
- results?: number;
950
- required?: boolean;
951
- size?: number | string;
952
- src?: string;
953
- step?: number | string;
954
- type?: string;
955
- value?: string | string[] | number;
956
- width?: number | string;
957
- crossOrigin?: HTMLCrossorigin;
958
- formAction?: string | SerializableAttributeValue;
959
- formEnctype?: HTMLFormEncType;
960
- formMethod?: HTMLFormMethod;
961
- formNoValidate?: boolean;
962
- formTarget?: string;
963
- maxLength?: number | string;
964
- minLength?: number | string;
965
- readOnly?: boolean;
966
- }
967
- interface InsHTMLAttributes<T> extends HTMLAttributes<T> {
968
- cite?: string;
969
- dateTime?: string;
970
- }
971
- interface KeygenHTMLAttributes<T> extends HTMLAttributes<T> {
972
- autofocus?: boolean;
973
- challenge?: string;
974
- disabled?: boolean;
975
- form?: string;
976
- keytype?: string;
977
- keyparams?: string;
978
- name?: string;
979
- }
980
- interface LabelHTMLAttributes<T> extends HTMLAttributes<T> {
981
- for?: string;
982
- form?: string;
983
- }
984
- interface LiHTMLAttributes<T> extends HTMLAttributes<T> {
985
- value?: number | string;
986
- }
987
- interface LinkHTMLAttributes<T> extends HTMLAttributes<T> {
988
- as?: HTMLLinkAs;
989
- crossorigin?: HTMLCrossorigin;
990
- disabled?: boolean;
991
- fetchpriority?: 'high' | 'low' | 'auto';
992
- href?: string;
993
- hreflang?: string;
994
- imagesizes?: string;
995
- imagesrcset?: string;
996
- integrity?: string;
997
- media?: string;
998
- referrerpolicy?: HTMLReferrerPolicy;
999
- rel?: string;
1000
- sizes?: string;
1001
- type?: string;
1002
- crossOrigin?: HTMLCrossorigin;
1003
- referrerPolicy?: HTMLReferrerPolicy;
1004
- }
1005
- interface MapHTMLAttributes<T> extends HTMLAttributes<T> {
1006
- name?: string;
1007
- }
1008
- interface MediaHTMLAttributes<T> extends HTMLAttributes<T> {
1009
- autoplay?: boolean;
1010
- controls?: boolean;
1011
- crossorigin?: HTMLCrossorigin;
1012
- loop?: boolean;
1013
- mediagroup?: string;
1014
- muted?: boolean;
1015
- preload?: 'none' | 'metadata' | 'auto' | '';
1016
- src?: string;
1017
- crossOrigin?: HTMLCrossorigin;
1018
- mediaGroup?: string;
1019
- }
1020
- interface MenuHTMLAttributes<T> extends HTMLAttributes<T> {
1021
- label?: string;
1022
- type?: 'context' | 'toolbar';
1023
- }
1024
- interface MetaHTMLAttributes<T> extends HTMLAttributes<T> {
1025
- 'charset'?: string;
1026
- 'content'?: string;
1027
- 'http-equiv'?: string;
1028
- 'name'?: string;
1029
- 'media'?: string;
1030
- }
1031
- interface MeterHTMLAttributes<T> extends HTMLAttributes<T> {
1032
- form?: string;
1033
- high?: number | string;
1034
- low?: number | string;
1035
- max?: number | string;
1036
- min?: number | string;
1037
- optimum?: number | string;
1038
- value?: string | string[] | number;
1039
- }
1040
- interface QuoteHTMLAttributes<T> extends HTMLAttributes<T> {
1041
- cite?: string;
1042
- }
1043
- interface ObjectHTMLAttributes<T> extends HTMLAttributes<T> {
1044
- data?: string;
1045
- form?: string;
1046
- height?: number | string;
1047
- name?: string;
1048
- type?: string;
1049
- usemap?: string;
1050
- width?: number | string;
1051
- useMap?: string;
1052
- }
1053
- interface OlHTMLAttributes<T> extends HTMLAttributes<T> {
1054
- reversed?: boolean;
1055
- start?: number | string;
1056
- type?: '1' | 'a' | 'A' | 'i' | 'I';
1057
- }
1058
- interface OptgroupHTMLAttributes<T> extends HTMLAttributes<T> {
1059
- disabled?: boolean;
1060
- label?: string;
1061
- }
1062
- interface OptionHTMLAttributes<T> extends HTMLAttributes<T> {
1063
- disabled?: boolean;
1064
- label?: string;
1065
- selected?: boolean;
1066
- value?: string | string[] | number;
1067
- }
1068
- interface OutputHTMLAttributes<T> extends HTMLAttributes<T> {
1069
- form?: string;
1070
- for?: string;
1071
- name?: string;
1072
- }
1073
- interface ParamHTMLAttributes<T> extends HTMLAttributes<T> {
1074
- name?: string;
1075
- value?: string | string[] | number;
1076
- }
1077
- interface ProgressHTMLAttributes<T> extends HTMLAttributes<T> {
1078
- max?: number | string;
1079
- value?: string | string[] | number;
1080
- }
1081
- interface ScriptHTMLAttributes<T> extends HTMLAttributes<T> {
1082
- async?: boolean;
1083
- charset?: string;
1084
- crossorigin?: HTMLCrossorigin;
1085
- defer?: boolean;
1086
- integrity?: string;
1087
- nomodule?: boolean;
1088
- nonce?: string;
1089
- referrerpolicy?: HTMLReferrerPolicy;
1090
- src?: string;
1091
- type?: string;
1092
- crossOrigin?: HTMLCrossorigin;
1093
- noModule?: boolean;
1094
- referrerPolicy?: HTMLReferrerPolicy;
1095
- }
1096
- interface SelectHTMLAttributes<T> extends HTMLAttributes<T> {
1097
- autocomplete?: string;
1098
- autofocus?: boolean;
1099
- disabled?: boolean;
1100
- form?: string;
1101
- multiple?: boolean;
1102
- name?: string;
1103
- required?: boolean;
1104
- size?: number | string;
1105
- value?: string | string[] | number;
1106
- }
1107
- interface HTMLSlotElementAttributes<T = HTMLSlotElement> extends HTMLAttributes<T> {
1108
- name?: string;
1109
- }
1110
- interface SourceHTMLAttributes<T> extends HTMLAttributes<T> {
1111
- media?: string;
1112
- sizes?: string;
1113
- src?: string;
1114
- srcset?: string;
1115
- type?: string;
1116
- }
1117
- interface StyleHTMLAttributes<T> extends HTMLAttributes<T> {
1118
- media?: string;
1119
- nonce?: string;
1120
- scoped?: boolean;
1121
- type?: string;
1122
- }
1123
- interface TdHTMLAttributes<T> extends HTMLAttributes<T> {
1124
- colspan?: number | string;
1125
- headers?: string;
1126
- rowspan?: number | string;
1127
- colSpan?: number | string;
1128
- rowSpan?: number | string;
1129
- }
1130
- interface TemplateHTMLAttributes<T extends HTMLTemplateElement> extends HTMLAttributes<T> {
1131
- content?: DocumentFragment;
1132
- }
1133
- interface TextareaHTMLAttributes<T> extends HTMLAttributes<T> {
1134
- autocomplete?: string;
1135
- autofocus?: boolean;
1136
- cols?: number | string;
1137
- dirname?: string;
1138
- disabled?: boolean;
1139
- enterkeyhint?: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send';
1140
- form?: string;
1141
- maxlength?: number | string;
1142
- minlength?: number | string;
1143
- name?: string;
1144
- placeholder?: string;
1145
- readonly?: boolean;
1146
- required?: boolean;
1147
- rows?: number | string;
1148
- value?: string | string[] | number;
1149
- wrap?: 'hard' | 'soft' | 'off';
1150
- maxLength?: number | string;
1151
- minLength?: number | string;
1152
- readOnly?: boolean;
1153
- }
1154
- interface ThHTMLAttributes<T> extends HTMLAttributes<T> {
1155
- colspan?: number | string;
1156
- headers?: string;
1157
- rowspan?: number | string;
1158
- colSpan?: number | string;
1159
- rowSpan?: number | string;
1160
- scope?: 'col' | 'row' | 'rowgroup' | 'colgroup';
1161
- }
1162
- interface TimeHTMLAttributes<T> extends HTMLAttributes<T> {
1163
- datetime?: string;
1164
- dateTime?: string;
1165
- }
1166
- interface TrackHTMLAttributes<T> extends HTMLAttributes<T> {
1167
- default?: boolean;
1168
- kind?: 'subtitles' | 'captions' | 'descriptions' | 'chapters' | 'metadata';
1169
- label?: string;
1170
- src?: string;
1171
- srclang?: string;
1172
- }
1173
- interface VideoHTMLAttributes<T> extends MediaHTMLAttributes<T> {
1174
- height?: number | string;
1175
- playsinline?: boolean;
1176
- poster?: string;
1177
- width?: number | string;
1178
- }
1179
- type SVGPreserveAspectRatio =
1180
- | 'none'
1181
- | 'xMinYMin'
1182
- | 'xMidYMin'
1183
- | 'xMaxYMin'
1184
- | 'xMinYMid'
1185
- | 'xMidYMid'
1186
- | 'xMaxYMid'
1187
- | 'xMinYMax'
1188
- | 'xMidYMax'
1189
- | 'xMaxYMax'
1190
- | 'xMinYMin meet'
1191
- | 'xMidYMin meet'
1192
- | 'xMaxYMin meet'
1193
- | 'xMinYMid meet'
1194
- | 'xMidYMid meet'
1195
- | 'xMaxYMid meet'
1196
- | 'xMinYMax meet'
1197
- | 'xMidYMax meet'
1198
- | 'xMaxYMax meet'
1199
- | 'xMinYMin slice'
1200
- | 'xMidYMin slice'
1201
- | 'xMaxYMin slice'
1202
- | 'xMinYMid slice'
1203
- | 'xMidYMid slice'
1204
- | 'xMaxYMid slice'
1205
- | 'xMinYMax slice'
1206
- | 'xMidYMax slice'
1207
- | 'xMaxYMax slice';
1208
- type ImagePreserveAspectRatio =
1209
- | SVGPreserveAspectRatio
1210
- | 'defer none'
1211
- | 'defer xMinYMin'
1212
- | 'defer xMidYMin'
1213
- | 'defer xMaxYMin'
1214
- | 'defer xMinYMid'
1215
- | 'defer xMidYMid'
1216
- | 'defer xMaxYMid'
1217
- | 'defer xMinYMax'
1218
- | 'defer xMidYMax'
1219
- | 'defer xMaxYMax'
1220
- | 'defer xMinYMin meet'
1221
- | 'defer xMidYMin meet'
1222
- | 'defer xMaxYMin meet'
1223
- | 'defer xMinYMid meet'
1224
- | 'defer xMidYMid meet'
1225
- | 'defer xMaxYMid meet'
1226
- | 'defer xMinYMax meet'
1227
- | 'defer xMidYMax meet'
1228
- | 'defer xMaxYMax meet'
1229
- | 'defer xMinYMin slice'
1230
- | 'defer xMidYMin slice'
1231
- | 'defer xMaxYMin slice'
1232
- | 'defer xMinYMid slice'
1233
- | 'defer xMidYMid slice'
1234
- | 'defer xMaxYMid slice'
1235
- | 'defer xMinYMax slice'
1236
- | 'defer xMidYMax slice'
1237
- | 'defer xMaxYMax slice';
1238
- type SVGUnits = 'userSpaceOnUse' | 'objectBoundingBox';
1239
- interface CoreSVGAttributes<T> extends AriaAttributes, DOMAttributes<T> {
1240
- id?: string;
1241
- lang?: string;
1242
- tabIndex?: number | string;
1243
- tabindex?: number | string;
1244
- }
1245
- interface StylableSVGAttributes {
1246
- class?: string | undefined;
1247
- style?: CSSProperties | string;
1248
- }
1249
- interface TransformableSVGAttributes {
1250
- transform?: string;
1251
- }
1252
- interface ConditionalProcessingSVGAttributes {
1253
- requiredExtensions?: string;
1254
- requiredFeatures?: string;
1255
- systemLanguage?: string;
1256
- }
1257
- interface ExternalResourceSVGAttributes {
1258
- externalResourcesRequired?: 'true' | 'false';
1259
- }
1260
- interface AnimationTimingSVGAttributes {
1261
- begin?: string;
1262
- dur?: string;
1263
- end?: string;
1264
- min?: string;
1265
- max?: string;
1266
- restart?: 'always' | 'whenNotActive' | 'never';
1267
- repeatCount?: number | 'indefinite';
1268
- repeatDur?: string;
1269
- fill?: 'freeze' | 'remove';
1270
- }
1271
- interface AnimationValueSVGAttributes {
1272
- calcMode?: 'discrete' | 'linear' | 'paced' | 'spline';
1273
- values?: string;
1274
- keyTimes?: string;
1275
- keySplines?: string;
1276
- from?: number | string;
1277
- to?: number | string;
1278
- by?: number | string;
1279
- }
1280
- interface AnimationAdditionSVGAttributes {
1281
- attributeName?: string;
1282
- additive?: 'replace' | 'sum';
1283
- accumulate?: 'none' | 'sum';
1284
- }
1285
- interface AnimationAttributeTargetSVGAttributes {
1286
- attributeName?: string;
1287
- attributeType?: 'CSS' | 'XML' | 'auto';
1288
- }
1289
- interface PresentationSVGAttributes {
1290
- 'alignment-baseline'?:
1291
- | 'auto'
1292
- | 'baseline'
1293
- | 'before-edge'
1294
- | 'text-before-edge'
1295
- | 'middle'
1296
- | 'central'
1297
- | 'after-edge'
1298
- | 'text-after-edge'
1299
- | 'ideographic'
1300
- | 'alphabetic'
1301
- | 'hanging'
1302
- | 'mathematical'
1303
- | 'inherit';
1304
- 'baseline-shift'?: number | string;
1305
- 'clip'?: string;
1306
- 'clip-path'?: string;
1307
- 'clip-rule'?: 'nonzero' | 'evenodd' | 'inherit';
1308
- 'color'?: string;
1309
- 'color-interpolation'?: 'auto' | 'sRGB' | 'linearRGB' | 'inherit';
1310
- 'color-interpolation-filters'?: 'auto' | 'sRGB' | 'linearRGB' | 'inherit';
1311
- 'color-profile'?: string;
1312
- 'color-rendering'?: 'auto' | 'optimizeSpeed' | 'optimizeQuality' | 'inherit';
1313
- 'cursor'?: string;
1314
- 'direction'?: 'ltr' | 'rtl' | 'inherit';
1315
- 'display'?: string;
1316
- 'dominant-baseline'?:
1317
- | 'auto'
1318
- | 'text-bottom'
1319
- | 'alphabetic'
1320
- | 'ideographic'
1321
- | 'middle'
1322
- | 'central'
1323
- | 'mathematical'
1324
- | 'hanging'
1325
- | 'text-top'
1326
- | 'inherit';
1327
- 'enable-background'?: string;
1328
- 'fill'?: string;
1329
- 'fill-opacity'?: number | string | 'inherit';
1330
- 'fill-rule'?: 'nonzero' | 'evenodd' | 'inherit';
1331
- 'filter'?: string;
1332
- 'flood-color'?: string;
1333
- 'flood-opacity'?: number | string | 'inherit';
1334
- 'font-family'?: string;
1335
- 'font-size'?: string;
1336
- 'font-size-adjust'?: number | string;
1337
- 'font-stretch'?: string;
1338
- 'font-style'?: 'normal' | 'italic' | 'oblique' | 'inherit';
1339
- 'font-variant'?: string;
1340
- 'font-weight'?: number | string;
1341
- 'glyph-orientation-horizontal'?: string;
1342
- 'glyph-orientation-vertical'?: string;
1343
- 'image-rendering'?: 'auto' | 'optimizeQuality' | 'optimizeSpeed' | 'inherit';
1344
- 'kerning'?: string;
1345
- 'letter-spacing'?: number | string;
1346
- 'lighting-color'?: string;
1347
- 'marker-end'?: string;
1348
- 'marker-mid'?: string;
1349
- 'marker-start'?: string;
1350
- 'mask'?: string;
1351
- 'opacity'?: number | string | 'inherit';
1352
- 'overflow'?: 'visible' | 'hidden' | 'scroll' | 'auto' | 'inherit';
1353
- 'pathLength'?: string | number;
1354
- 'pointer-events'?:
1355
- | 'bounding-box'
1356
- | 'visiblePainted'
1357
- | 'visibleFill'
1358
- | 'visibleStroke'
1359
- | 'visible'
1360
- | 'painted'
1361
- | 'color'
1362
- | 'fill'
1363
- | 'stroke'
1364
- | 'all'
1365
- | 'none'
1366
- | 'inherit';
1367
- 'shape-rendering'?:
1368
- | 'auto'
1369
- | 'optimizeSpeed'
1370
- | 'crispEdges'
1371
- | 'geometricPrecision'
1372
- | 'inherit';
1373
- 'stop-color'?: string;
1374
- 'stop-opacity'?: number | string | 'inherit';
1375
- 'stroke'?: string;
1376
- 'stroke-dasharray'?: string;
1377
- 'stroke-dashoffset'?: number | string;
1378
- 'stroke-linecap'?: 'butt' | 'round' | 'square' | 'inherit';
1379
- 'stroke-linejoin'?: 'arcs' | 'bevel' | 'miter' | 'miter-clip' | 'round' | 'inherit';
1380
- 'stroke-miterlimit'?: number | string | 'inherit';
1381
- 'stroke-opacity'?: number | string | 'inherit';
1382
- 'stroke-width'?: number | string;
1383
- 'text-anchor'?: 'start' | 'middle' | 'end' | 'inherit';
1384
- 'text-decoration'?: 'none' | 'underline' | 'overline' | 'line-through' | 'blink' | 'inherit';
1385
- 'text-rendering'?:
1386
- | 'auto'
1387
- | 'optimizeSpeed'
1388
- | 'optimizeLegibility'
1389
- | 'geometricPrecision'
1390
- | 'inherit';
1391
- 'unicode-bidi'?: string;
1392
- 'visibility'?: 'visible' | 'hidden' | 'collapse' | 'inherit';
1393
- 'word-spacing'?: number | string;
1394
- 'writing-mode'?: 'lr-tb' | 'rl-tb' | 'tb-rl' | 'lr' | 'rl' | 'tb' | 'inherit';
1395
- }
1396
- interface AnimationElementSVGAttributes<T>
1397
- extends CoreSVGAttributes<T>,
1398
- ExternalResourceSVGAttributes,
1399
- ConditionalProcessingSVGAttributes {}
1400
- interface ContainerElementSVGAttributes<T>
1401
- extends CoreSVGAttributes<T>,
1402
- ShapeElementSVGAttributes<T>,
1403
- Pick<
1404
- PresentationSVGAttributes,
1405
- | 'clip-path'
1406
- | 'mask'
1407
- | 'cursor'
1408
- | 'opacity'
1409
- | 'filter'
1410
- | 'enable-background'
1411
- | 'color-interpolation'
1412
- | 'color-rendering'
1413
- > {}
1414
- interface FilterPrimitiveElementSVGAttributes<T>
1415
- extends CoreSVGAttributes<T>,
1416
- Pick<PresentationSVGAttributes, 'color-interpolation-filters'> {
1417
- x?: number | string;
1418
- y?: number | string;
1419
- width?: number | string;
1420
- height?: number | string;
1421
- result?: string;
1422
- }
1423
- interface SingleInputFilterSVGAttributes {
1424
- in?: string;
1425
- }
1426
- interface DoubleInputFilterSVGAttributes {
1427
- in?: string;
1428
- in2?: string;
1429
- }
1430
- interface FitToViewBoxSVGAttributes {
1431
- viewBox?: string;
1432
- preserveAspectRatio?: SVGPreserveAspectRatio;
1433
- }
1434
- interface GradientElementSVGAttributes<T>
1435
- extends CoreSVGAttributes<T>,
1436
- ExternalResourceSVGAttributes,
1437
- StylableSVGAttributes {
1438
- gradientUnits?: SVGUnits;
1439
- gradientTransform?: string;
1440
- spreadMethod?: 'pad' | 'reflect' | 'repeat';
1441
- href?: string;
1442
- }
1443
- interface GraphicsElementSVGAttributes<T>
1444
- extends CoreSVGAttributes<T>,
1445
- Pick<
1446
- PresentationSVGAttributes,
1447
- | 'clip-rule'
1448
- | 'mask'
1449
- | 'pointer-events'
1450
- | 'cursor'
1451
- | 'opacity'
1452
- | 'filter'
1453
- | 'display'
1454
- | 'visibility'
1455
- | 'color-interpolation'
1456
- | 'color-rendering'
1457
- > {}
1458
- interface LightSourceElementSVGAttributes<T> extends CoreSVGAttributes<T> {}
1459
- interface NewViewportSVGAttributes<T>
1460
- extends CoreSVGAttributes<T>,
1461
- Pick<PresentationSVGAttributes, 'overflow' | 'clip'> {
1462
- viewBox?: string;
1463
- }
1464
- interface ShapeElementSVGAttributes<T>
1465
- extends CoreSVGAttributes<T>,
1466
- Pick<
1467
- PresentationSVGAttributes,
1468
- | 'color'
1469
- | 'fill'
1470
- | 'fill-rule'
1471
- | 'fill-opacity'
1472
- | 'stroke'
1473
- | 'stroke-width'
1474
- | 'stroke-linecap'
1475
- | 'stroke-linejoin'
1476
- | 'stroke-miterlimit'
1477
- | 'stroke-dasharray'
1478
- | 'stroke-dashoffset'
1479
- | 'stroke-opacity'
1480
- | 'shape-rendering'
1481
- | 'pathLength'
1482
- > {}
1483
- interface TextContentElementSVGAttributes<T>
1484
- extends CoreSVGAttributes<T>,
1485
- Pick<
1486
- PresentationSVGAttributes,
1487
- | 'font-family'
1488
- | 'font-style'
1489
- | 'font-variant'
1490
- | 'font-weight'
1491
- | 'font-stretch'
1492
- | 'font-size'
1493
- | 'font-size-adjust'
1494
- | 'kerning'
1495
- | 'letter-spacing'
1496
- | 'word-spacing'
1497
- | 'text-decoration'
1498
- | 'glyph-orientation-horizontal'
1499
- | 'glyph-orientation-vertical'
1500
- | 'direction'
1501
- | 'unicode-bidi'
1502
- | 'text-anchor'
1503
- | 'dominant-baseline'
1504
- | 'color'
1505
- | 'fill'
1506
- | 'fill-rule'
1507
- | 'fill-opacity'
1508
- | 'stroke'
1509
- | 'stroke-width'
1510
- | 'stroke-linecap'
1511
- | 'stroke-linejoin'
1512
- | 'stroke-miterlimit'
1513
- | 'stroke-dasharray'
1514
- | 'stroke-dashoffset'
1515
- | 'stroke-opacity'
1516
- > {}
1517
- interface ZoomAndPanSVGAttributes {
1518
- zoomAndPan?: 'disable' | 'magnify';
1519
- }
1520
- interface AnimateSVGAttributes<T>
1521
- extends AnimationElementSVGAttributes<T>,
1522
- AnimationAttributeTargetSVGAttributes,
1523
- AnimationTimingSVGAttributes,
1524
- AnimationValueSVGAttributes,
1525
- AnimationAdditionSVGAttributes,
1526
- Pick<PresentationSVGAttributes, 'color-interpolation' | 'color-rendering'> {}
1527
- interface AnimateMotionSVGAttributes<T>
1528
- extends AnimationElementSVGAttributes<T>,
1529
- AnimationTimingSVGAttributes,
1530
- AnimationValueSVGAttributes,
1531
- AnimationAdditionSVGAttributes {
1532
- path?: string;
1533
- keyPoints?: string;
1534
- rotate?: number | string | 'auto' | 'auto-reverse';
1535
- origin?: 'default';
1536
- }
1537
- interface AnimateTransformSVGAttributes<T>
1538
- extends AnimationElementSVGAttributes<T>,
1539
- AnimationAttributeTargetSVGAttributes,
1540
- AnimationTimingSVGAttributes,
1541
- AnimationValueSVGAttributes,
1542
- AnimationAdditionSVGAttributes {
1543
- type?: 'translate' | 'scale' | 'rotate' | 'skewX' | 'skewY';
1544
- }
1545
- interface CircleSVGAttributes<T>
1546
- extends GraphicsElementSVGAttributes<T>,
1547
- ShapeElementSVGAttributes<T>,
1548
- ConditionalProcessingSVGAttributes,
1549
- StylableSVGAttributes,
1550
- TransformableSVGAttributes {
1551
- cx?: number | string;
1552
- cy?: number | string;
1553
- r?: number | string;
1554
- }
1555
- interface ClipPathSVGAttributes<T>
1556
- extends CoreSVGAttributes<T>,
1557
- ConditionalProcessingSVGAttributes,
1558
- ExternalResourceSVGAttributes,
1559
- StylableSVGAttributes,
1560
- TransformableSVGAttributes,
1561
- Pick<PresentationSVGAttributes, 'clip-path'> {
1562
- clipPathUnits?: SVGUnits;
1563
- }
1564
- interface DefsSVGAttributes<T>
1565
- extends ContainerElementSVGAttributes<T>,
1566
- ConditionalProcessingSVGAttributes,
1567
- ExternalResourceSVGAttributes,
1568
- StylableSVGAttributes,
1569
- TransformableSVGAttributes {}
1570
- interface DescSVGAttributes<T> extends CoreSVGAttributes<T>, StylableSVGAttributes {}
1571
- interface EllipseSVGAttributes<T>
1572
- extends GraphicsElementSVGAttributes<T>,
1573
- ShapeElementSVGAttributes<T>,
1574
- ConditionalProcessingSVGAttributes,
1575
- ExternalResourceSVGAttributes,
1576
- StylableSVGAttributes,
1577
- TransformableSVGAttributes {
1578
- cx?: number | string;
1579
- cy?: number | string;
1580
- rx?: number | string;
1581
- ry?: number | string;
1582
- }
1583
- interface FeBlendSVGAttributes<T>
1584
- extends FilterPrimitiveElementSVGAttributes<T>,
1585
- DoubleInputFilterSVGAttributes,
1586
- StylableSVGAttributes {
1587
- mode?: 'normal' | 'multiply' | 'screen' | 'darken' | 'lighten';
1588
- }
1589
- interface FeColorMatrixSVGAttributes<T>
1590
- extends FilterPrimitiveElementSVGAttributes<T>,
1591
- SingleInputFilterSVGAttributes,
1592
- StylableSVGAttributes {
1593
- type?: 'matrix' | 'saturate' | 'hueRotate' | 'luminanceToAlpha';
1594
- values?: string;
1595
- }
1596
- interface FeComponentTransferSVGAttributes<T>
1597
- extends FilterPrimitiveElementSVGAttributes<T>,
1598
- SingleInputFilterSVGAttributes,
1599
- StylableSVGAttributes {}
1600
- interface FeCompositeSVGAttributes<T>
1601
- extends FilterPrimitiveElementSVGAttributes<T>,
1602
- DoubleInputFilterSVGAttributes,
1603
- StylableSVGAttributes {
1604
- operator?: 'over' | 'in' | 'out' | 'atop' | 'xor' | 'arithmetic';
1605
- k1?: number | string;
1606
- k2?: number | string;
1607
- k3?: number | string;
1608
- k4?: number | string;
1609
- }
1610
- interface FeConvolveMatrixSVGAttributes<T>
1611
- extends FilterPrimitiveElementSVGAttributes<T>,
1612
- SingleInputFilterSVGAttributes,
1613
- StylableSVGAttributes {
1614
- order?: number | string;
1615
- kernelMatrix?: string;
1616
- divisor?: number | string;
1617
- bias?: number | string;
1618
- targetX?: number | string;
1619
- targetY?: number | string;
1620
- edgeMode?: 'duplicate' | 'wrap' | 'none';
1621
- kernelUnitLength?: number | string;
1622
- preserveAlpha?: 'true' | 'false';
1623
- }
1624
- interface FeDiffuseLightingSVGAttributes<T>
1625
- extends FilterPrimitiveElementSVGAttributes<T>,
1626
- SingleInputFilterSVGAttributes,
1627
- StylableSVGAttributes,
1628
- Pick<PresentationSVGAttributes, 'color' | 'lighting-color'> {
1629
- surfaceScale?: number | string;
1630
- diffuseConstant?: number | string;
1631
- kernelUnitLength?: number | string;
1632
- }
1633
- interface FeDisplacementMapSVGAttributes<T>
1634
- extends FilterPrimitiveElementSVGAttributes<T>,
1635
- DoubleInputFilterSVGAttributes,
1636
- StylableSVGAttributes {
1637
- scale?: number | string;
1638
- xChannelSelector?: 'R' | 'G' | 'B' | 'A';
1639
- yChannelSelector?: 'R' | 'G' | 'B' | 'A';
1640
- }
1641
- interface FeDistantLightSVGAttributes<T> extends LightSourceElementSVGAttributes<T> {
1642
- azimuth?: number | string;
1643
- elevation?: number | string;
1644
- }
1645
- interface FeDropShadowSVGAttributes<T>
1646
- extends CoreSVGAttributes<T>,
1647
- FilterPrimitiveElementSVGAttributes<T>,
1648
- StylableSVGAttributes,
1649
- Pick<PresentationSVGAttributes, 'color' | 'flood-color' | 'flood-opacity'> {
1650
- dx?: number | string;
1651
- dy?: number | string;
1652
- stdDeviation?: number | string;
1653
- }
1654
- interface FeFloodSVGAttributes<T>
1655
- extends FilterPrimitiveElementSVGAttributes<T>,
1656
- StylableSVGAttributes,
1657
- Pick<PresentationSVGAttributes, 'color' | 'flood-color' | 'flood-opacity'> {}
1658
- interface FeFuncSVGAttributes<T> extends CoreSVGAttributes<T> {
1659
- type?: 'identity' | 'table' | 'discrete' | 'linear' | 'gamma';
1660
- tableValues?: string;
1661
- slope?: number | string;
1662
- intercept?: number | string;
1663
- amplitude?: number | string;
1664
- exponent?: number | string;
1665
- offset?: number | string;
1666
- }
1667
- interface FeGaussianBlurSVGAttributes<T>
1668
- extends FilterPrimitiveElementSVGAttributes<T>,
1669
- SingleInputFilterSVGAttributes,
1670
- StylableSVGAttributes {
1671
- stdDeviation?: number | string;
1672
- }
1673
- interface FeImageSVGAttributes<T>
1674
- extends FilterPrimitiveElementSVGAttributes<T>,
1675
- ExternalResourceSVGAttributes,
1676
- StylableSVGAttributes {
1677
- preserveAspectRatio?: SVGPreserveAspectRatio;
1678
- href?: string;
1679
- }
1680
- interface FeMergeSVGAttributes<T>
1681
- extends FilterPrimitiveElementSVGAttributes<T>,
1682
- StylableSVGAttributes {}
1683
- interface FeMergeNodeSVGAttributes<T>
1684
- extends CoreSVGAttributes<T>,
1685
- SingleInputFilterSVGAttributes {}
1686
- interface FeMorphologySVGAttributes<T>
1687
- extends FilterPrimitiveElementSVGAttributes<T>,
1688
- SingleInputFilterSVGAttributes,
1689
- StylableSVGAttributes {
1690
- operator?: 'erode' | 'dilate';
1691
- radius?: number | string;
1692
- }
1693
- interface FeOffsetSVGAttributes<T>
1694
- extends FilterPrimitiveElementSVGAttributes<T>,
1695
- SingleInputFilterSVGAttributes,
1696
- StylableSVGAttributes {
1697
- dx?: number | string;
1698
- dy?: number | string;
1699
- }
1700
- interface FePointLightSVGAttributes<T> extends LightSourceElementSVGAttributes<T> {
1701
- x?: number | string;
1702
- y?: number | string;
1703
- z?: number | string;
1704
- }
1705
- interface FeSpecularLightingSVGAttributes<T>
1706
- extends FilterPrimitiveElementSVGAttributes<T>,
1707
- SingleInputFilterSVGAttributes,
1708
- StylableSVGAttributes,
1709
- Pick<PresentationSVGAttributes, 'color' | 'lighting-color'> {
1710
- surfaceScale?: string;
1711
- specularConstant?: string;
1712
- specularExponent?: string;
1713
- kernelUnitLength?: number | string;
1714
- }
1715
- interface FeSpotLightSVGAttributes<T> extends LightSourceElementSVGAttributes<T> {
1716
- x?: number | string;
1717
- y?: number | string;
1718
- z?: number | string;
1719
- pointsAtX?: number | string;
1720
- pointsAtY?: number | string;
1721
- pointsAtZ?: number | string;
1722
- specularExponent?: number | string;
1723
- limitingConeAngle?: number | string;
1724
- }
1725
- interface FeTileSVGAttributes<T>
1726
- extends FilterPrimitiveElementSVGAttributes<T>,
1727
- SingleInputFilterSVGAttributes,
1728
- StylableSVGAttributes {}
1729
- interface FeTurbulanceSVGAttributes<T>
1730
- extends FilterPrimitiveElementSVGAttributes<T>,
1731
- StylableSVGAttributes {
1732
- baseFrequency?: number | string;
1733
- numOctaves?: number | string;
1734
- seed?: number | string;
1735
- stitchTiles?: 'stitch' | 'noStitch';
1736
- type?: 'fractalNoise' | 'turbulence';
1737
- }
1738
- interface FilterSVGAttributes<T>
1739
- extends CoreSVGAttributes<T>,
1740
- ExternalResourceSVGAttributes,
1741
- StylableSVGAttributes {
1742
- filterUnits?: SVGUnits;
1743
- primitiveUnits?: SVGUnits;
1744
- x?: number | string;
1745
- y?: number | string;
1746
- width?: number | string;
1747
- height?: number | string;
1748
- filterRes?: number | string;
1749
- }
1750
- interface ForeignObjectSVGAttributes<T>
1751
- extends NewViewportSVGAttributes<T>,
1752
- ConditionalProcessingSVGAttributes,
1753
- ExternalResourceSVGAttributes,
1754
- StylableSVGAttributes,
1755
- TransformableSVGAttributes,
1756
- Pick<PresentationSVGAttributes, 'display' | 'visibility'> {
1757
- x?: number | string;
1758
- y?: number | string;
1759
- width?: number | string;
1760
- height?: number | string;
1761
- }
1762
- interface GSVGAttributes<T>
1763
- extends ContainerElementSVGAttributes<T>,
1764
- ConditionalProcessingSVGAttributes,
1765
- ExternalResourceSVGAttributes,
1766
- StylableSVGAttributes,
1767
- TransformableSVGAttributes,
1768
- Pick<PresentationSVGAttributes, 'display' | 'visibility'> {}
1769
- interface ImageSVGAttributes<T>
1770
- extends NewViewportSVGAttributes<T>,
1771
- GraphicsElementSVGAttributes<T>,
1772
- ConditionalProcessingSVGAttributes,
1773
- StylableSVGAttributes,
1774
- TransformableSVGAttributes,
1775
- Pick<PresentationSVGAttributes, 'color-profile' | 'image-rendering'> {
1776
- x?: number | string;
1777
- y?: number | string;
1778
- width?: number | string;
1779
- height?: number | string;
1780
- preserveAspectRatio?: ImagePreserveAspectRatio;
1781
- href?: string;
1782
- }
1783
- interface LineSVGAttributes<T>
1784
- extends GraphicsElementSVGAttributes<T>,
1785
- ShapeElementSVGAttributes<T>,
1786
- ConditionalProcessingSVGAttributes,
1787
- ExternalResourceSVGAttributes,
1788
- StylableSVGAttributes,
1789
- TransformableSVGAttributes,
1790
- Pick<PresentationSVGAttributes, 'marker-start' | 'marker-mid' | 'marker-end'> {
1791
- x1?: number | string;
1792
- y1?: number | string;
1793
- x2?: number | string;
1794
- y2?: number | string;
1795
- }
1796
- interface LinearGradientSVGAttributes<T> extends GradientElementSVGAttributes<T> {
1797
- x1?: number | string;
1798
- x2?: number | string;
1799
- y1?: number | string;
1800
- y2?: number | string;
1801
- }
1802
- interface MarkerSVGAttributes<T>
1803
- extends ContainerElementSVGAttributes<T>,
1804
- ExternalResourceSVGAttributes,
1805
- StylableSVGAttributes,
1806
- FitToViewBoxSVGAttributes,
1807
- Pick<PresentationSVGAttributes, 'overflow' | 'clip'> {
1808
- markerUnits?: 'strokeWidth' | 'userSpaceOnUse';
1809
- refX?: number | string;
1810
- refY?: number | string;
1811
- markerWidth?: number | string;
1812
- markerHeight?: number | string;
1813
- orient?: string;
1814
- }
1815
- interface MaskSVGAttributes<T>
1816
- extends Omit<ContainerElementSVGAttributes<T>, 'opacity' | 'filter'>,
1817
- ConditionalProcessingSVGAttributes,
1818
- ExternalResourceSVGAttributes,
1819
- StylableSVGAttributes {
1820
- maskUnits?: SVGUnits;
1821
- maskContentUnits?: SVGUnits;
1822
- x?: number | string;
1823
- y?: number | string;
1824
- width?: number | string;
1825
- height?: number | string;
1826
- }
1827
- interface MetadataSVGAttributes<T> extends CoreSVGAttributes<T> {}
1828
- interface MPathSVGAttributes<T> extends CoreSVGAttributes<T> {}
1829
- interface PathSVGAttributes<T>
1830
- extends GraphicsElementSVGAttributes<T>,
1831
- ShapeElementSVGAttributes<T>,
1832
- ConditionalProcessingSVGAttributes,
1833
- ExternalResourceSVGAttributes,
1834
- StylableSVGAttributes,
1835
- TransformableSVGAttributes,
1836
- Pick<PresentationSVGAttributes, 'marker-start' | 'marker-mid' | 'marker-end'> {
1837
- d?: string;
1838
- pathLength?: number | string;
1839
- }
1840
- interface PatternSVGAttributes<T>
1841
- extends ContainerElementSVGAttributes<T>,
1842
- ConditionalProcessingSVGAttributes,
1843
- ExternalResourceSVGAttributes,
1844
- StylableSVGAttributes,
1845
- FitToViewBoxSVGAttributes,
1846
- Pick<PresentationSVGAttributes, 'overflow' | 'clip'> {
1847
- x?: number | string;
1848
- y?: number | string;
1849
- width?: number | string;
1850
- height?: number | string;
1851
- patternUnits?: SVGUnits;
1852
- patternContentUnits?: SVGUnits;
1853
- patternTransform?: string;
1854
- href?: string;
1855
- }
1856
- interface PolygonSVGAttributes<T>
1857
- extends GraphicsElementSVGAttributes<T>,
1858
- ShapeElementSVGAttributes<T>,
1859
- ConditionalProcessingSVGAttributes,
1860
- ExternalResourceSVGAttributes,
1861
- StylableSVGAttributes,
1862
- TransformableSVGAttributes,
1863
- Pick<PresentationSVGAttributes, 'marker-start' | 'marker-mid' | 'marker-end'> {
1864
- points?: string;
1865
- }
1866
- interface PolylineSVGAttributes<T>
1867
- extends GraphicsElementSVGAttributes<T>,
1868
- ShapeElementSVGAttributes<T>,
1869
- ConditionalProcessingSVGAttributes,
1870
- ExternalResourceSVGAttributes,
1871
- StylableSVGAttributes,
1872
- TransformableSVGAttributes,
1873
- Pick<PresentationSVGAttributes, 'marker-start' | 'marker-mid' | 'marker-end'> {
1874
- points?: string;
1875
- }
1876
- interface RadialGradientSVGAttributes<T> extends GradientElementSVGAttributes<T> {
1877
- cx?: number | string;
1878
- cy?: number | string;
1879
- r?: number | string;
1880
- fx?: number | string;
1881
- fy?: number | string;
1882
- }
1883
- interface RectSVGAttributes<T>
1884
- extends GraphicsElementSVGAttributes<T>,
1885
- ShapeElementSVGAttributes<T>,
1886
- ConditionalProcessingSVGAttributes,
1887
- ExternalResourceSVGAttributes,
1888
- StylableSVGAttributes,
1889
- TransformableSVGAttributes {
1890
- x?: number | string;
1891
- y?: number | string;
1892
- width?: number | string;
1893
- height?: number | string;
1894
- rx?: number | string;
1895
- ry?: number | string;
1896
- }
1897
- interface SetSVGAttributes<T>
1898
- extends CoreSVGAttributes<T>,
1899
- StylableSVGAttributes,
1900
- AnimationTimingSVGAttributes {}
1901
- interface StopSVGAttributes<T>
1902
- extends CoreSVGAttributes<T>,
1903
- StylableSVGAttributes,
1904
- Pick<PresentationSVGAttributes, 'color' | 'stop-color' | 'stop-opacity'> {
1905
- offset?: number | string;
1906
- }
1907
- interface SvgSVGAttributes<T>
1908
- extends ContainerElementSVGAttributes<T>,
1909
- NewViewportSVGAttributes<T>,
1910
- ConditionalProcessingSVGAttributes,
1911
- ExternalResourceSVGAttributes,
1912
- StylableSVGAttributes,
1913
- FitToViewBoxSVGAttributes,
1914
- ZoomAndPanSVGAttributes,
1915
- PresentationSVGAttributes {
1916
- version?: string;
1917
- baseProfile?: string;
1918
- x?: number | string;
1919
- y?: number | string;
1920
- width?: number | string;
1921
- height?: number | string;
1922
- contentScriptType?: string;
1923
- contentStyleType?: string;
1924
- xmlns?: string;
1925
- }
1926
- interface SwitchSVGAttributes<T>
1927
- extends ContainerElementSVGAttributes<T>,
1928
- ConditionalProcessingSVGAttributes,
1929
- ExternalResourceSVGAttributes,
1930
- StylableSVGAttributes,
1931
- TransformableSVGAttributes,
1932
- Pick<PresentationSVGAttributes, 'display' | 'visibility'> {}
1933
- interface SymbolSVGAttributes<T>
1934
- extends ContainerElementSVGAttributes<T>,
1935
- NewViewportSVGAttributes<T>,
1936
- ExternalResourceSVGAttributes,
1937
- StylableSVGAttributes,
1938
- FitToViewBoxSVGAttributes {
1939
- width?: number | string;
1940
- height?: number | string;
1941
- preserveAspectRatio?: SVGPreserveAspectRatio;
1942
- refX?: number | string;
1943
- refY?: number | string;
1944
- viewBox?: string;
1945
- x?: number | string;
1946
- y?: number | string;
1947
- }
1948
- interface TextSVGAttributes<T>
1949
- extends TextContentElementSVGAttributes<T>,
1950
- GraphicsElementSVGAttributes<T>,
1951
- ConditionalProcessingSVGAttributes,
1952
- ExternalResourceSVGAttributes,
1953
- StylableSVGAttributes,
1954
- TransformableSVGAttributes,
1955
- Pick<PresentationSVGAttributes, 'writing-mode' | 'text-rendering'> {
1956
- x?: number | string;
1957
- y?: number | string;
1958
- dx?: number | string;
1959
- dy?: number | string;
1960
- rotate?: number | string;
1961
- textLength?: number | string;
1962
- lengthAdjust?: 'spacing' | 'spacingAndGlyphs';
1963
- }
1964
- interface TextPathSVGAttributes<T>
1965
- extends TextContentElementSVGAttributes<T>,
1966
- ConditionalProcessingSVGAttributes,
1967
- ExternalResourceSVGAttributes,
1968
- StylableSVGAttributes,
1969
- Pick<
1970
- PresentationSVGAttributes,
1971
- 'alignment-baseline' | 'baseline-shift' | 'display' | 'visibility'
1972
- > {
1973
- startOffset?: number | string;
1974
- method?: 'align' | 'stretch';
1975
- spacing?: 'auto' | 'exact';
1976
- href?: string;
1977
- }
1978
- interface TSpanSVGAttributes<T>
1979
- extends TextContentElementSVGAttributes<T>,
1980
- ConditionalProcessingSVGAttributes,
1981
- ExternalResourceSVGAttributes,
1982
- StylableSVGAttributes,
1983
- Pick<
1984
- PresentationSVGAttributes,
1985
- 'alignment-baseline' | 'baseline-shift' | 'display' | 'visibility'
1986
- > {
1987
- x?: number | string;
1988
- y?: number | string;
1989
- dx?: number | string;
1990
- dy?: number | string;
1991
- rotate?: number | string;
1992
- textLength?: number | string;
1993
- lengthAdjust?: 'spacing' | 'spacingAndGlyphs';
1994
- }
1995
- interface UseSVGAttributes<T>
1996
- extends GraphicsElementSVGAttributes<T>,
1997
- ConditionalProcessingSVGAttributes,
1998
- ExternalResourceSVGAttributes,
1999
- StylableSVGAttributes,
2000
- TransformableSVGAttributes {
2001
- x?: number | string;
2002
- y?: number | string;
2003
- width?: number | string;
2004
- height?: number | string;
2005
- href?: string;
2006
- }
2007
- interface ViewSVGAttributes<T>
2008
- extends CoreSVGAttributes<T>,
2009
- ExternalResourceSVGAttributes,
2010
- FitToViewBoxSVGAttributes,
2011
- ZoomAndPanSVGAttributes {
2012
- viewTarget?: string;
2013
- }
2014
- /**
2015
- * @type {HTMLElementTagNameMap}
2016
- */
2017
- interface HTMLElementTags {
2018
- a: AnchorHTMLAttributes<HTMLAnchorElement>;
2019
- abbr: HTMLAttributes<HTMLElement>;
2020
- address: HTMLAttributes<HTMLElement>;
2021
- area: AreaHTMLAttributes<HTMLAreaElement>;
2022
- article: HTMLAttributes<HTMLElement>;
2023
- aside: HTMLAttributes<HTMLElement>;
2024
- audio: AudioHTMLAttributes<HTMLAudioElement>;
2025
- b: HTMLAttributes<HTMLElement>;
2026
- base: BaseHTMLAttributes<HTMLBaseElement>;
2027
- bdi: HTMLAttributes<HTMLElement>;
2028
- bdo: HTMLAttributes<HTMLElement>;
2029
- blockquote: BlockquoteHTMLAttributes<HTMLElement>;
2030
- body: HTMLAttributes<HTMLBodyElement>;
2031
- br: HTMLAttributes<HTMLBRElement>;
2032
- button: ButtonHTMLAttributes<HTMLButtonElement>;
2033
- canvas: CanvasHTMLAttributes<HTMLCanvasElement>;
2034
- caption: HTMLAttributes<HTMLElement>;
2035
- cite: HTMLAttributes<HTMLElement>;
2036
- code: HTMLAttributes<HTMLElement>;
2037
- col: ColHTMLAttributes<HTMLTableColElement>;
2038
- colgroup: ColgroupHTMLAttributes<HTMLTableColElement>;
2039
- data: DataHTMLAttributes<HTMLElement>;
2040
- datalist: HTMLAttributes<HTMLDataListElement>;
2041
- dd: HTMLAttributes<HTMLElement>;
2042
- del: HTMLAttributes<HTMLElement>;
2043
- details: DetailsHtmlAttributes<HTMLDetailsElement>;
2044
- dfn: HTMLAttributes<HTMLElement>;
2045
- dialog: DialogHtmlAttributes<HTMLDialogElement>;
2046
- div: HTMLAttributes<HTMLDivElement>;
2047
- dl: HTMLAttributes<HTMLDListElement>;
2048
- dt: HTMLAttributes<HTMLElement>;
2049
- em: HTMLAttributes<HTMLElement>;
2050
- embed: EmbedHTMLAttributes<HTMLEmbedElement>;
2051
- fieldset: FieldsetHTMLAttributes<HTMLFieldSetElement>;
2052
- figcaption: HTMLAttributes<HTMLElement>;
2053
- figure: HTMLAttributes<HTMLElement>;
2054
- footer: HTMLAttributes<HTMLElement>;
2055
- form: FormHTMLAttributes<HTMLFormElement>;
2056
- h1: HTMLAttributes<HTMLHeadingElement>;
2057
- h2: HTMLAttributes<HTMLHeadingElement>;
2058
- h3: HTMLAttributes<HTMLHeadingElement>;
2059
- h4: HTMLAttributes<HTMLHeadingElement>;
2060
- h5: HTMLAttributes<HTMLHeadingElement>;
2061
- h6: HTMLAttributes<HTMLHeadingElement>;
2062
- head: HTMLAttributes<HTMLHeadElement>;
2063
- header: HTMLAttributes<HTMLElement>;
2064
- hgroup: HTMLAttributes<HTMLElement>;
2065
- hr: HTMLAttributes<HTMLHRElement>;
2066
- html: HTMLAttributes<HTMLHtmlElement>;
2067
- i: HTMLAttributes<HTMLElement>;
2068
- iframe: IframeHTMLAttributes<HTMLIFrameElement>;
2069
- img: ImgHTMLAttributes<HTMLImageElement>;
2070
- input: InputHTMLAttributes<HTMLInputElement>;
2071
- ins: InsHTMLAttributes<HTMLModElement>;
2072
- kbd: HTMLAttributes<HTMLElement>;
2073
- label: LabelHTMLAttributes<HTMLLabelElement>;
2074
- legend: HTMLAttributes<HTMLLegendElement>;
2075
- li: LiHTMLAttributes<HTMLLIElement>;
2076
- link: LinkHTMLAttributes<HTMLLinkElement>;
2077
- main: HTMLAttributes<HTMLElement>;
2078
- map: MapHTMLAttributes<HTMLMapElement>;
2079
- mark: HTMLAttributes<HTMLElement>;
2080
- menu: MenuHTMLAttributes<HTMLElement>;
2081
- meta: MetaHTMLAttributes<HTMLMetaElement>;
2082
- meter: MeterHTMLAttributes<HTMLElement>;
2083
- nav: HTMLAttributes<HTMLElement>;
2084
- noscript: HTMLAttributes<HTMLElement>;
2085
- object: ObjectHTMLAttributes<HTMLObjectElement>;
2086
- ol: OlHTMLAttributes<HTMLOListElement>;
2087
- optgroup: OptgroupHTMLAttributes<HTMLOptGroupElement>;
2088
- option: OptionHTMLAttributes<HTMLOptionElement>;
2089
- output: OutputHTMLAttributes<HTMLElement>;
2090
- p: HTMLAttributes<HTMLParagraphElement>;
2091
- picture: HTMLAttributes<HTMLElement>;
2092
- pre: HTMLAttributes<HTMLPreElement>;
2093
- progress: ProgressHTMLAttributes<HTMLProgressElement>;
2094
- q: QuoteHTMLAttributes<HTMLQuoteElement>;
2095
- rp: HTMLAttributes<HTMLElement>;
2096
- rt: HTMLAttributes<HTMLElement>;
2097
- ruby: HTMLAttributes<HTMLElement>;
2098
- s: HTMLAttributes<HTMLElement>;
2099
- samp: HTMLAttributes<HTMLElement>;
2100
- script: ScriptHTMLAttributes<HTMLScriptElement>;
2101
- search: HTMLAttributes<HTMLElement>;
2102
- section: HTMLAttributes<HTMLElement>;
2103
- select: SelectHTMLAttributes<HTMLSelectElement>;
2104
- slot: HTMLSlotElementAttributes;
2105
- small: HTMLAttributes<HTMLElement>;
2106
- source: SourceHTMLAttributes<HTMLSourceElement>;
2107
- span: HTMLAttributes<HTMLSpanElement>;
2108
- strong: HTMLAttributes<HTMLElement>;
2109
- style: StyleHTMLAttributes<HTMLStyleElement>;
2110
- sub: HTMLAttributes<HTMLElement>;
2111
- summary: HTMLAttributes<HTMLElement>;
2112
- sup: HTMLAttributes<HTMLElement>;
2113
- table: HTMLAttributes<HTMLTableElement>;
2114
- tbody: HTMLAttributes<HTMLTableSectionElement>;
2115
- td: TdHTMLAttributes<HTMLTableCellElement>;
2116
- template: TemplateHTMLAttributes<HTMLTemplateElement>;
2117
- textarea: TextareaHTMLAttributes<HTMLTextAreaElement>;
2118
- tfoot: HTMLAttributes<HTMLTableSectionElement>;
2119
- th: ThHTMLAttributes<HTMLTableCellElement>;
2120
- thead: HTMLAttributes<HTMLTableSectionElement>;
2121
- time: TimeHTMLAttributes<HTMLElement>;
2122
- title: HTMLAttributes<HTMLTitleElement>;
2123
- tr: HTMLAttributes<HTMLTableRowElement>;
2124
- track: TrackHTMLAttributes<HTMLTrackElement>;
2125
- u: HTMLAttributes<HTMLElement>;
2126
- ul: HTMLAttributes<HTMLUListElement>;
2127
- var: HTMLAttributes<HTMLElement>;
2128
- video: VideoHTMLAttributes<HTMLVideoElement>;
2129
- wbr: HTMLAttributes<HTMLElement>;
2130
- }
2131
- /**
2132
- * @type {HTMLElementDeprecatedTagNameMap}
2133
- */
2134
- interface HTMLElementDeprecatedTags {
2135
- big: HTMLAttributes<HTMLElement>;
2136
- keygen: KeygenHTMLAttributes<HTMLElement>;
2137
- menuitem: HTMLAttributes<HTMLElement>;
2138
- noindex: HTMLAttributes<HTMLElement>;
2139
- param: ParamHTMLAttributes<HTMLParamElement>;
2140
- }
257
+ /**
258
+ * Extended event options with delegation support
259
+ * @public
260
+ */
261
+ interface EventOptions extends AddEventListenerOptions {
2141
262
  /**
2142
- * @type {SVGElementTagNameMap}
263
+ * CSS selector for event delegation
264
+ * When provided, the event will only trigger if the target matches this selector
2143
265
  */
2144
- interface SVGElementTags {
2145
- animate: AnimateSVGAttributes<SVGAnimateElement>;
2146
- animateMotion: AnimateMotionSVGAttributes<SVGAnimateMotionElement>;
2147
- animateTransform: AnimateTransformSVGAttributes<SVGAnimateTransformElement>;
2148
- circle: CircleSVGAttributes<SVGCircleElement>;
2149
- clipPath: ClipPathSVGAttributes<SVGClipPathElement>;
2150
- defs: DefsSVGAttributes<SVGDefsElement>;
2151
- desc: DescSVGAttributes<SVGDescElement>;
2152
- ellipse: EllipseSVGAttributes<SVGEllipseElement>;
2153
- feBlend: FeBlendSVGAttributes<SVGFEBlendElement>;
2154
- feColorMatrix: FeColorMatrixSVGAttributes<SVGFEColorMatrixElement>;
2155
- feComponentTransfer: FeComponentTransferSVGAttributes<SVGFEComponentTransferElement>;
2156
- feComposite: FeCompositeSVGAttributes<SVGFECompositeElement>;
2157
- feConvolveMatrix: FeConvolveMatrixSVGAttributes<SVGFEConvolveMatrixElement>;
2158
- feDiffuseLighting: FeDiffuseLightingSVGAttributes<SVGFEDiffuseLightingElement>;
2159
- feDisplacementMap: FeDisplacementMapSVGAttributes<SVGFEDisplacementMapElement>;
2160
- feDistantLight: FeDistantLightSVGAttributes<SVGFEDistantLightElement>;
2161
- feDropShadow: FeDropShadowSVGAttributes<SVGFEDropShadowElement>;
2162
- feFlood: FeFloodSVGAttributes<SVGFEFloodElement>;
2163
- feFuncA: FeFuncSVGAttributes<SVGFEFuncAElement>;
2164
- feFuncB: FeFuncSVGAttributes<SVGFEFuncBElement>;
2165
- feFuncG: FeFuncSVGAttributes<SVGFEFuncGElement>;
2166
- feFuncR: FeFuncSVGAttributes<SVGFEFuncRElement>;
2167
- feGaussianBlur: FeGaussianBlurSVGAttributes<SVGFEGaussianBlurElement>;
2168
- feImage: FeImageSVGAttributes<SVGFEImageElement>;
2169
- feMerge: FeMergeSVGAttributes<SVGFEMergeElement>;
2170
- feMergeNode: FeMergeNodeSVGAttributes<SVGFEMergeNodeElement>;
2171
- feMorphology: FeMorphologySVGAttributes<SVGFEMorphologyElement>;
2172
- feOffset: FeOffsetSVGAttributes<SVGFEOffsetElement>;
2173
- fePointLight: FePointLightSVGAttributes<SVGFEPointLightElement>;
2174
- feSpecularLighting: FeSpecularLightingSVGAttributes<SVGFESpecularLightingElement>;
2175
- feSpotLight: FeSpotLightSVGAttributes<SVGFESpotLightElement>;
2176
- feTile: FeTileSVGAttributes<SVGFETileElement>;
2177
- feTurbulence: FeTurbulanceSVGAttributes<SVGFETurbulenceElement>;
2178
- filter: FilterSVGAttributes<SVGFilterElement>;
2179
- foreignObject: ForeignObjectSVGAttributes<SVGForeignObjectElement>;
2180
- g: GSVGAttributes<SVGGElement>;
2181
- image: ImageSVGAttributes<SVGImageElement>;
2182
- line: LineSVGAttributes<SVGLineElement>;
2183
- linearGradient: LinearGradientSVGAttributes<SVGLinearGradientElement>;
2184
- marker: MarkerSVGAttributes<SVGMarkerElement>;
2185
- mask: MaskSVGAttributes<SVGMaskElement>;
2186
- metadata: MetadataSVGAttributes<SVGMetadataElement>;
2187
- mpath: MPathSVGAttributes<SVGMPathElement>;
2188
- path: PathSVGAttributes<SVGPathElement>;
2189
- pattern: PatternSVGAttributes<SVGPatternElement>;
2190
- polygon: PolygonSVGAttributes<SVGPolygonElement>;
2191
- polyline: PolylineSVGAttributes<SVGPolylineElement>;
2192
- radialGradient: RadialGradientSVGAttributes<SVGRadialGradientElement>;
2193
- rect: RectSVGAttributes<SVGRectElement>;
2194
- set: SetSVGAttributes<SVGSetElement>;
2195
- stop: StopSVGAttributes<SVGStopElement>;
2196
- svg: SvgSVGAttributes<SVGSVGElement>;
2197
- switch: SwitchSVGAttributes<SVGSwitchElement>;
2198
- symbol: SymbolSVGAttributes<SVGSymbolElement>;
2199
- text: TextSVGAttributes<SVGTextElement>;
2200
- textPath: TextPathSVGAttributes<SVGTextPathElement>;
2201
- tspan: TSpanSVGAttributes<SVGTSpanElement>;
2202
- use: UseSVGAttributes<SVGUseElement>;
2203
- view: ViewSVGAttributes<SVGViewElement>;
2204
- }
2205
- interface IntrinsicElements
2206
- extends HTMLElementTags,
2207
- HTMLElementDeprecatedTags,
2208
- SVGElementTags {}
2209
- }
266
+ delegate?: string;
2210
267
  }
268
+ /**
269
+ * Event handler cleanup function
270
+ * @public
271
+ */
272
+ type EventCleanup = () => void;
273
+ /**
274
+ * Adds an event listener to an element with optional delegation
275
+ *
276
+ * @param el - The element to attach the event to
277
+ * @param event - The event name (e.g., 'click', 'input')
278
+ * @param handler - The event handler function
279
+ * @param options - Additional event options including delegation
280
+ * @returns A cleanup function to remove the event listener
281
+ * @public
282
+ */
283
+ declare function addEvent(el: Element, event: string, handler: EventListener, options?: EventOptions): EventCleanup;
2211
284
 
2212
- declare class LifecycleContext {
2213
- addEventListener(): void;
2214
- removeEventListener(): void;
2215
- static ref: LifecycleContext | null;
2216
- static context: Record<symbol, Signal$1<any>>;
2217
- hooks: Record<Hook, Set<() => void>>;
2218
- addHook(hook: Hook, cb: () => void): void;
2219
- getContext<T>(context: symbol | string | number): T | undefined;
2220
- setContext<T>(context: symbol | string | number, value: T): void;
2221
- initRef(): void;
2222
- removeRef(): void;
2223
- clearHooks(): void;
285
+ interface FragmentProps extends ComponentProps {
286
+ children: AnyNode | AnyNode[];
2224
287
  }
2225
-
2226
- declare class TemplateNode$1 implements JSX.Element {
2227
- template: HTMLTemplateElement;
2228
- props: Props;
2229
- key?: string | undefined;
2230
- protected treeMap: Map<number, Node>;
2231
- protected mounted: boolean;
2232
- protected nodes: Node[];
2233
- protected trackMap: Map<string, NodeTrack>;
2234
- protected bindValueKeys: string[];
2235
- protected componentIndex: number;
2236
- protected parent: Node | null;
2237
- constructor(template: HTMLTemplateElement, props: Props, key?: string | undefined);
2238
- get firstChild(): Node | null;
2239
- get isConnected(): boolean;
2240
- addEventListener(): void;
2241
- removeEventListener(): void;
2242
- mount(parent: Node, before?: Node | null): Node[];
2243
- unmount(): void;
2244
- inheritNode(node: TemplateNode$1): void;
2245
- protected mapSSGNodeTree(parent: Node): void;
2246
- protected mapNodeTree(parent: Node, tree: Node): void;
2247
- protected walkNodeTree(node: Node, handler: (node: Node) => void): void;
2248
- protected handleSSGNode(node: Node): void;
2249
- protected patchProps(props: Record<string, Record<string, unknown>> | undefined): void;
2250
- protected patchProp(key: string, node: Node, props: Record<string, unknown>, isRoot: boolean): void;
2251
- protected getBindUpdateValue(props: Record<string, any>, key: string, attr: string): any;
2252
- protected patchChildren(key: string, node: Node, children: unknown, isRoot: boolean): void;
2253
- protected patchEventListener(key: string, node: Node, attr: string, listener: EventListener): void;
2254
- protected patchAttribute(key: string, element: HTMLElement, attr: string, value: unknown, updateFn?: Function): void;
2255
- protected getNodeTrack(trackKey: string, trackLastNodes?: boolean, isRoot?: boolean): NodeTrack;
2256
- protected patchChild(track: NodeTrack, parent: Node, child: unknown, before: Node | null): void;
2257
- protected reconcileChildren(parent: Node, nextNodes: Node[], before: Node | null): Map<string, Node>;
288
+ /**
289
+ * Fragment component - renders multiple children without wrapper elements
290
+ *
291
+ * @param props - Component props with children
292
+ * @returns DocumentFragment containing all children
293
+ *
294
+ * @example
295
+ * ```tsx
296
+ * <Fragment>
297
+ * <div>First</div>
298
+ * <span>Second</span>
299
+ * </Fragment>
300
+ * ```
301
+ */
302
+ declare function Fragment(props?: FragmentProps): AnyNode;
303
+ declare namespace Fragment {
304
+ var fragment: boolean;
2258
305
  }
306
+ /**
307
+ * Check if a node is a Fragment component
308
+ * @param node - Node to check
309
+ * @returns true if node is a Fragment
310
+ */
311
+ declare function isFragment(node: unknown): boolean;
2259
312
 
2260
- declare class ComponentNode$1 extends LifecycleContext implements JSX.Element {
2261
- template: EssorComponent;
2262
- props: Props;
2263
- key?: string | undefined;
2264
- protected proxyProps: Record<string, Signal$1<unknown>>;
2265
- protected emitter: Set<() => void>;
2266
- protected rootNode: TemplateNode$1 | null;
2267
- protected trackMap: Map<string, NodeTrack>;
2268
- protected nodes: Node[];
2269
- protected parent: Node | null;
2270
- protected before: Node | null;
2271
- constructor(template: EssorComponent, props: Props, key?: string | undefined);
2272
- get firstChild(): Node | null;
2273
- get isConnected(): boolean;
2274
- mount(parent: Node, before: Node | null): Node[];
2275
- unmount(): void;
2276
- private resetState;
2277
- protected callLifecycleHooks(type: 'mounted' | 'destroy'): void;
2278
- protected callMountHooks(): void;
2279
- protected callDestroyHooks(): void;
2280
- protected clearEmitter(): void;
2281
- inheritNode(node: ComponentNode$1): void;
2282
- protected getNodeTrack(trackKey: string): NodeTrack;
2283
- patchProps(props: Record<string, any> | undefined): void;
2284
- protected patchEventListener(key: string, prop: any): void;
2285
- protected patchRef(prop: {
2286
- value: Node | null;
2287
- }): void;
2288
- protected patchUpdateHandler(key: string, prop: any): void;
2289
- protected patchNormalProp(key: string, prop: any): void;
2290
- protected cleanup(): void;
313
+ interface PortalProps {
314
+ children?: AnyNode | AnyNode[];
315
+ target: string | HTMLElement;
316
+ key?: string;
2291
317
  }
2292
-
2293
318
  /**
2294
- * Creates a JSX element from a given template.
319
+ * Portal component - renders children into a different DOM node
2295
320
  *
2296
- * @param template - The template to render. Can be a string representing an HTML
2297
- * element, a function representing a component, or an `HTMLTemplateElement`.
2298
- * @param props - Properties to pass to the component or element.
2299
- * @param key - The key of the element.
2300
- * @returns The created JSX element.
321
+ * @param props - Component props with children and target
322
+ * @returns Comment node as placeholder in parent tree
323
+ *
324
+ * @example
325
+ * ```tsx
326
+ * <Portal target="#modal-root">
327
+ * <div>Modal content</div>
328
+ * </Portal>
329
+ * ```
2301
330
  */
2302
- declare function h<K extends keyof HTMLElementTagNameMap>(template: EssorComponent | HTMLTemplateElement | K | '', props?: Props, key?: string): JSX.Element;
331
+ declare function Portal(props: PortalProps): Comment | string;
332
+ declare namespace Portal {
333
+ var portal: boolean;
334
+ }
2303
335
  /**
2304
- * Checks if the given node is an instance of `ComponentNode`.
2305
- *
2306
- * @param node The node to check.
2307
- * @returns `true` if the node is an instance of `ComponentNode`, otherwise `false`.
336
+ * Check if a node is a Portal component
337
+ * @param node - Node to check
338
+ * @returns true if node is a Portal
2308
339
  */
2309
- declare function isComponent(node: unknown): node is ComponentNode$1;
340
+ declare function isPortal(node: unknown): boolean;
341
+
342
+ interface SuspenseProps {
343
+ /** The content to render. Can be a Promise for async loading. */
344
+ children?: AnyNode | AnyNode[] | Promise<AnyNode | AnyNode[]>;
345
+ /** Fallback content to display while children is loading (Promise pending). */
346
+ fallback?: AnyNode;
347
+ /** Optional key for reconciliation. */
348
+ key?: string;
349
+ }
2310
350
  /**
2311
- * Checks if the given node is a JSX element. A JSX element is either an instance
2312
- * of `ComponentNode` or an instance of `TemplateNode`.
351
+ * Suspense component - handles async content with a fallback UI
352
+ *
353
+ * @param props - Component props with children, fallback, and optional key
354
+ * @returns Placeholder node or fallback content
2313
355
  *
2314
- * @param node The node to check.
2315
- * @returns `true` if the node is a JSX element, otherwise `false`.
356
+ * @example
357
+ * ```tsx
358
+ * <Suspense fallback={<div>Loading...</div>}>
359
+ * {asyncContent}
360
+ * </Suspense>
361
+ * ```
2316
362
  */
2317
- declare function isJsxElement(node: unknown): node is EssorNode;
363
+ declare const SuspenseContext: unique symbol;
364
+ interface SuspenseContextType {
365
+ register: (promise: Promise<any>) => void;
366
+ increment: () => void;
367
+ decrement: () => void;
368
+ }
2318
369
  /**
2319
- * Creates an HTML template element from a given HTML string.
370
+ * Suspense component - handles async content with a fallback UI
371
+ *
372
+ * @param props - Component props with children, fallback, and optional key
373
+ * @returns Placeholder node or fallback content
2320
374
  *
2321
- * @param html The HTML string to create a template from.
2322
- * @returns A new HTML template element.
375
+ * @example
376
+ * ```tsx
377
+ * <Suspense fallback={<div>Loading...</div>}>
378
+ * {asyncContent}
379
+ * </Suspense>
380
+ * ```
2323
381
  */
2324
- declare function createTemplate(html: string): HTMLTemplateElement;
2325
- declare function Fragment<T extends JSX.JSXElement | string | number | boolean | Array<JSX.JSXElement | string | number | boolean>>(template: HTMLTemplateElement | '', props: {
2326
- children: T;
2327
- } | {
2328
- [key: string]: {
2329
- children: T;
2330
- };
2331
- }): JSX.Element;
382
+ declare function Suspense(props: SuspenseProps): AnyNode;
383
+ declare namespace Suspense {
384
+ var suspense: boolean;
385
+ }
386
+ /**
387
+ * Check if a node is a Suspense component
388
+ * @param node - Node to check
389
+ * @returns true if node is a Suspense
390
+ */
391
+ declare function isSuspense(node: unknown): boolean;
2332
392
 
393
+ type ResourceState = 'pending' | 'ready' | 'errored';
394
+ interface Resource<T> {
395
+ (): T | undefined;
396
+ loading: Signal<boolean>;
397
+ error: Signal<Error | null>;
398
+ state: Signal<ResourceState>;
399
+ }
400
+ interface ResourceActions<T> {
401
+ mutate: (value: T) => void;
402
+ refetch: () => Promise<void>;
403
+ }
404
+ interface ResourceOptions<T> {
405
+ initialValue?: T;
406
+ }
2333
407
  /**
2334
- * Registers a hook to be called when the component is mounted.
408
+ * Create a resource for async data fetching
409
+ * Inspired by SolidJS createResource
410
+ *
411
+ * @param fetcher - Function that returns a Promise with the data
412
+ * @param options - Optional configuration
413
+ * @returns Tuple of [resource, actions]
414
+ *
415
+ * @example
416
+ * ```typescript
417
+ * const [data, { refetch, mutate }] = createResource(
418
+ * () => fetch('/api/user').then(r => r.json()),
419
+ * { initialValue: null }
420
+ * );
421
+ *
422
+ * // Access data
423
+ * console.log(data());
424
+ * console.log(data.loading.value);
425
+ * console.log(data.state.value);
2335
426
  *
2336
- * @remarks
2337
- * This function can only be called in the component function body.
2338
- * It cannot be used in asynchronous or deferred calls.
2339
- * @param cb - The function to call when the component is mounted.
427
+ * // Refetch data
428
+ * await refetch();
429
+ *
430
+ * // Update data directly
431
+ * mutate({ name: 'John' });
432
+ * ```
2340
433
  */
2341
- declare function onMount(cb: () => void): void;
434
+ declare function createResource<T>(fetcher: () => Promise<T>, options?: ResourceOptions<T>): [Resource<T>, ResourceActions<T>];
435
+
2342
436
  /**
2343
- * Registers a hook to be called when the component is about to be unmounted.
2344
437
  *
2345
- * @remarks
2346
- * This function can only be called in the component function body.
2347
- * It cannot be used in asynchronous or deferred calls.
2348
- * @param cb - The function to call when the component is about to be unmounted.
438
+ * ssg compile
439
+ *
440
+ * component context it will this:
441
+ *
442
+ * function component(props) {
443
+ * // render function props: template, hydrationKey, ...components
444
+ * return render(_tmpl, getHydrationKey(), createSSGComponent(xx, {}));
445
+ * }
446
+ *
447
+ * renderToString(component, props)
448
+ *
449
+ *
2349
450
  */
2350
- declare function onDestroy(cb: () => void): void;
2351
- interface InjectionKey<T> extends Symbol {
2352
- }
2353
451
  /**
2354
- * Provides a value to be used in the component tree.
2355
- *
2356
- * @remarks
2357
- * This function can only be called in the component function body.
2358
- * It cannot be used in asynchronous or deferred calls.
2359
- * @param key - The key to store the value in the LifecycleContext with.
2360
- * @param value - The value to store in the LifecycleContext with the given key.
452
+ * render the component to string
453
+ * @param {ComponentFn} component - the component to render
454
+ * @param {ComponentProps} props - the props to pass to the component
455
+ * @returns {string} the rendered string
2361
456
  */
2362
- declare function provide<T, K = InjectionKey<T> | string | number>(key: K, value: K extends InjectionKey<infer V> ? V : T): void;
457
+ declare function renderToString(component: ComponentFn, props?: ComponentProps): string;
2363
458
  /**
2364
- * Injects a value from the current component LifecycleContext.
2365
- *
2366
- * @remarks
2367
- * This function can only be called in the component function body.
2368
- * It cannot be used in asynchronous or deferred calls.
2369
- * @param key - The key to retrieve the value from the LifecycleContext with.
2370
- * @param defaultValue - The default value to return if the key is not present
2371
- * in the LifecycleContext.
2372
- * @returns The value stored in the LifecycleContext with the given key, or the default
2373
- * value if the key is not present in the LifecycleContext.
459
+ * render the component to string
460
+ * @param {string[]} templates - the template to render
461
+ * @param {string} hydrationKey - the hydration key
462
+ * @param {...string[]} components - the components to render
463
+ * @returns {string} the rendered string
464
+ */
465
+ declare function render(templates: string[], hydrationKey: string, ...components: string[]): string;
466
+ /**
467
+ * create a ssg component
468
+ * @param {ComponentFn} component - the component to create
469
+ * @param {ComponentProps} props - the props to pass to the component
470
+ * @returns {string} the created component as a string
2374
471
  */
2375
- declare function inject<T, K = InjectionKey<T> | string | number>(key: K, defaultValue?: K extends InjectionKey<infer V> ? V : T): (K extends InjectionKey<infer V> ? V : T) | undefined;
472
+ declare function createSSGComponent(component: ComponentFn, props?: ComponentProps): string;
2376
473
 
2377
- declare class SSGNode extends LifecycleContext {
2378
- private template;
2379
- private props;
2380
- key?: string | undefined;
2381
- private templates;
2382
- constructor(template: string[] | SSGNode | ((props: Props) => SSGNode), props?: Props, key?: string | undefined);
2383
- private processTemplate;
2384
- private processHtmlString;
2385
- mount(): string;
2386
- render(): string;
2387
- private renderTemplate;
2388
- private normalizeProps;
2389
- private generateAttributes;
2390
- private renderChildren;
2391
- private renderChild;
2392
- }
474
+ /**
475
+ * get the hydration key
476
+ * @returns {string} the hydration key
477
+ */
478
+ declare function getHydrationKey(): string;
2393
479
 
2394
480
  /**
2395
- * Render a component to a string.
481
+ * Generate server-side rendering attribute string
2396
482
  *
2397
- * This function renders a component to an HTML string. It is used for server-side rendering (SSR) and static site generation (SSG).
483
+ * Generate HTML-compatible attribute string based on attribute type, handling special cases:
484
+ * - Automatic unwrapping of reactive values
485
+ * - Normalization of special attributes (style/class)
486
+ * - Ignoring event attributes
487
+ * - Special handling for boolean attributes
2398
488
  *
2399
- * @param component The component to render.
2400
- * @param props Optional props to pass to the component.
2401
- * @returns The rendered HTML string.
489
+ * @param attrName Attribute name
490
+ * @param attrValue Attribute value
491
+ * @param hydrationId Hydration ID (for client-side reuse)
492
+ * @returns Formatted HTML attribute string
2402
493
  */
2403
- declare function renderToString(component: EssorComponent, props?: Props): string;
494
+ declare function setSSGAttr(attrName: string, attrValue: any, hydrationId: string): string;
495
+
2404
496
  /**
2405
- * Hydrate a component in a container.
2406
- *
2407
- * This function hydrates a component in a container element. It is used for server-side rendering (SSR) and client-side rendering (CSR).
2408
- *
2409
- * @param component The component to hydrate.
2410
- * @param container The container element to hydrate in. Can be a string selector or an Element.
2411
- * @throws Error if the container is not found.
497
+ * Server-side node mapping utilities
2412
498
  */
2413
- declare function hydrate(component: EssorComponent, container: string | Element): void;
2414
499
  /**
2415
- * Create a server-side generation (SSG) node from a component.
2416
- *
2417
- * If the render context is set to SSG, this function will create a new SSGNode from the component. Otherwise, it will create a new JSX element using the h function.
500
+ * getRenderedElement function - gets an element based on string template
501
+ */
502
+ declare function getRenderedElement(temp: string): () => Node;
503
+ /**
504
+ * Maps server-side rendered nodes during hydration
505
+ * @param {HTMLElement} template - The root template element
506
+ * @param {number[]} idx - Array of indices to map
507
+ * @returns {Node[]} Array of mapped nodes
508
+ */
509
+ declare function mapSSRNodes(template: HTMLElement, idx: number[]): Node[];
510
+ /**
511
+ * Hydrates a server-rendered component
2418
512
  *
2419
- * @param component The component to create the SSGNode from.
2420
- * @param props Optional props to pass to the component.
2421
- * @returns The SSGNode or JSX element.
513
+ * @param {Function} component - Component function to hydrate
514
+ * @param {HTMLElement | string} container - Container element or selector
515
+ * @param {Record<string, unknown>} props - Component properties
516
+ * @returns {any} Component instance or undefined if hydration fails
2422
517
  */
2423
- declare function ssg(component: EssorComponent, props?: Props): SSGNode | JSX.Element;
518
+ declare function hydrate(component: (props?: any) => any, container: HTMLElement | string, props?: Record<string, unknown>): any;
2424
519
 
2425
- export { Fragment, type InjectionKey, h, hydrate, inject, isComponent, isJsxElement, onDestroy, onMount, provide, renderToString, ssg, createTemplate as template };
520
+ export { type AnyNode, Component, type ComponentFn, type ComponentProps, Fragment, type FragmentProps, type InjectionKey, Portal, type PortalProps, type Resource, type ResourceActions, type ResourceOptions, type ResourceState, Suspense, SuspenseContext, type SuspenseContextType, type SuspenseProps, addEvent, addEventListener, bindElement, createApp, createComponent, createResource, createSSGComponent, delegateEvents, getHydrationKey, getRenderedElement, hydrate, inject, insert, isComponent, isFragment, isPortal, isSuspense, mapNodes, mapSSRNodes, normalizeClass, omitProps, onDestroy, onMount, onUpdate, patchAttr, patchClass, patchStyle, provide, render, renderToString, setSSGAttr, setStyle, template };