@estjs/template 0.0.14 → 0.0.15-beta.10

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,581 @@
1
- import { Signal as Signal$1 } from '@estjs/signal';
2
- import * as csstype from 'csstype';
1
+ import { Signal, Computed } from '@estjs/signals';
3
2
 
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>;
3
+ /**
4
+ * InjectionKey is a unique identifier for provided values.
5
+ * Using Symbol ensures type safety and prevents key collisions.
6
+ */
7
+ interface InjectionKey<T> extends Symbol {
16
8
  }
9
+ /**
10
+ * Provide a value in the current scope.
11
+ * The value can be injected by this scope or any descendant scope.
12
+ *
13
+ * @param key - The injection key
14
+ * @param value - The value to provide
15
+ */
16
+ declare function provide<T>(key: InjectionKey<T> | string | number, value: T): void;
17
+ /**
18
+ * Inject a value from the scope hierarchy.
19
+ * Traverses up the parent chain until finding a matching key.
20
+ *
21
+ * @param key - The injection key
22
+ * @param defaultValue - Default value if key is not found
23
+ * @returns The injected value or default value
24
+ */
25
+ declare function inject<T>(key: InjectionKey<T> | string | number, defaultValue?: T): T;
17
26
 
18
- type Props = Record<string, any>;
19
-
20
- interface EssorNode<T = Record<string, any>> {
21
- props?: T;
22
- template: EssorComponent | HTMLTemplateElement;
23
-
24
- get firstChild(): Node | null;
25
- get isConnected(): boolean;
26
-
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;
27
+ /**
28
+ * Scope represents an execution context in the component tree.
29
+ * It manages provides, cleanup functions, and lifecycle hooks.
30
+ */
31
+ interface Scope {
32
+ /** Unique identifier for debugging */
33
+ readonly id: number;
34
+ /** Parent scope in the hierarchy */
35
+ parent: Scope | null;
36
+ /** Child scopes (lazy initialized) */
37
+ children: Set<Scope> | null;
38
+ /** Provided values (lazy initialized) */
39
+ provides: Map<InjectionKey<unknown> | string | number | symbol, unknown> | null;
40
+ /** Cleanup functions (lazy initialized) */
41
+ cleanup: Set<() => void> | null;
42
+ /** Mount lifecycle hooks (lazy initialized) */
43
+ onMount: Set<() => void | Promise<void>> | null;
44
+ /** Update lifecycle hooks (lazy initialized) */
45
+ onUpdate: Set<() => void | Promise<void>> | null;
46
+ /** Destroy lifecycle hooks (lazy initialized) */
47
+ onDestroy: Set<() => void | Promise<void>> | null;
48
+ /** Whether the scope has been mounted */
49
+ isMounted: boolean;
50
+ /** Whether the scope has been destroyed */
51
+ isDestroyed: boolean;
32
52
  }
33
-
34
53
  /**
35
- * Based on JSX types for Surplus and Inferno and adapted for `dom-expressions`.
54
+ * Get the currently active scope.
55
+ * @returns The active scope or null if none is active
56
+ */
57
+ declare function getActiveScope(): Scope | null;
58
+ /**
59
+ * Set the active scope (internal use).
60
+ * @param scope - The scope to set as active
61
+ */
62
+ declare function setActiveScope(scope: Scope | null): void;
63
+ /**
64
+ * Create a new scope with optional parent.
65
+ * If no parent is provided, uses the current active scope as parent.
36
66
  *
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
67
+ * @param parent - Optional parent scope (defaults to active scope)
68
+ * @returns A new scope instance
39
69
  */
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>;
141
-
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>;
167
-
168
- interface SerializableAttributeValue {
169
- toString(): string;
170
- [SERIALIZABLE]: never;
171
- }
172
-
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
- }
189
-
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
- }
406
-
407
- interface CSSProperties extends csstype.PropertiesHyphen {
408
- // Override
409
- [key: `-${string}`]: string | number | undefined;
410
- }
70
+ declare function createScope(parent?: Scope | null): Scope;
71
+ /**
72
+ * Run a function within a scope, ensuring proper cleanup.
73
+ * The previous active scope is restored even if the function throws.
74
+ *
75
+ * @param scope - The scope to run within
76
+ * @param fn - The function to execute
77
+ * @returns The return value of the function
78
+ */
79
+ declare function runWithScope<T>(scope: Scope, fn: () => T): T;
80
+ /**
81
+ * Dispose a scope and all its children.
82
+ * Children are disposed first (depth-first), then the scope itself.
83
+ *
84
+ * @param scope - The scope to dispose
85
+ */
86
+ declare function disposeScope(scope: Scope): void;
87
+ /**
88
+ * Register a cleanup function in the current scope.
89
+ * The function will be called when the scope is disposed.
90
+ *
91
+ * @param fn - The cleanup function
92
+ */
93
+ declare function onCleanup(fn: () => void): void;
411
94
 
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';
95
+ declare const NORMAL_COMPONENT: unique symbol;
458
96
 
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
- }
97
+ type AnyNode = Node | Component<any> | Element | string | number | boolean | null | undefined | AnyNode[] | (() => AnyNode) | Signal<AnyNode> | Computed<AnyNode>;
98
+ type ComponentProps = Record<string, unknown>;
99
+ type ComponentFn<P = ComponentProps> = (props: P) => AnyNode;
735
100
 
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
- }
101
+ declare class Component<P extends ComponentProps = ComponentProps> {
102
+ component: ComponentFn<P>;
103
+ props: P;
104
+ protected renderedNodes: AnyNode[];
105
+ protected scope: Scope | null;
106
+ protected parentNode: Node | undefined;
107
+ beforeNode: Node | undefined;
108
+ private reactiveProps;
109
+ private _propSnapshots;
110
+ readonly key: string | undefined;
111
+ protected state: number;
112
+ protected parentScope: Scope | null;
113
+ readonly [NORMAL_COMPONENT] = true;
114
+ get isConnected(): boolean;
115
+ get firstChild(): Node | undefined;
116
+ constructor(component: ComponentFn<P>, props?: P);
117
+ mount(parentNode: Node, beforeNode?: Node): AnyNode[];
118
+ update<T extends ComponentProps>(prevNode: Component<T>): Component<T>;
2014
119
  /**
2015
- * @type {HTMLElementTagNameMap}
120
+ * Update reactive props by comparing with current values
2016
121
  */
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
- }
122
+ private _updateReactiveProps;
123
+ private unwrapRenderResult;
124
+ forceUpdate(): void;
2131
125
  /**
2132
- * @type {HTMLElementDeprecatedTagNameMap}
126
+ * Get anchor node for insertion
2133
127
  */
2134
- interface HTMLElementDeprecatedTags {
2135
- big: HTMLAttributes<HTMLElement>;
2136
- keygen: KeygenHTMLAttributes<HTMLElement>;
2137
- menuitem: HTMLAttributes<HTMLElement>;
2138
- noindex: HTMLAttributes<HTMLElement>;
2139
- param: ParamHTMLAttributes<HTMLParamElement>;
2140
- }
128
+ private _getAnchorNode;
2141
129
  /**
2142
- * @type {SVGElementTagNameMap}
130
+ * Destroy component
2143
131
  */
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
- }
132
+ destroy(): void;
133
+ applyProps(props: P): void;
2210
134
  }
135
+ /**
136
+ * check if a node is a component
137
+ * @param {unknown} node - the node to check
138
+ * @returns {boolean} true if the node is a component, false otherwise
139
+ */
140
+ declare function isComponent(node: unknown): node is Component;
141
+ /**
142
+ * create a component
143
+ * @param {Function} componentFn - the component function
144
+ * @param {ComponentProps} props - the component props
145
+ * @returns {Component} the component
146
+ */
147
+ declare function createComponent<P extends ComponentProps>(componentFn: ComponentFn<P>, props?: P): Component<P>;
2211
148
 
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;
2224
- }
149
+ /**
150
+ * Create a template factory function from HTML string
151
+ *
152
+ * This function creates a reusable template factory that efficiently clones
153
+ * DOM nodes from the provided HTML string. The template is parsed once and
154
+ *
155
+ * @param html - The HTML string to create template from
156
+ * @returns Factory function that returns a cloned node of the template
157
+ * @throws {Error} When template content is empty or invalid
2225
158
 
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>;
2258
- }
159
+ */
160
+ declare function template(html: string): () => Node;
161
+ /**
162
+ * Create and mount an application with the specified component
163
+ *
164
+ * This function initializes an application by mounting a root component
165
+ * to a target DOM element. It handles target validation and cleanup.
166
+ *
167
+ * @param component - The root component function to mount
168
+ * @param target - CSS selector string or DOM element to mount to
169
+ * @returns The mount root component instance, or undefined if target not found
170
+ */
171
+ declare function createApp<P extends ComponentProps = {}>(component: ComponentFn<P> | Component<P>, target: string | Element): Component<P> | undefined;
2259
172
 
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;
2291
- }
173
+ type LifecycleHook = () => void | Promise<void>;
174
+ /**
175
+ * Register a mount lifecycle hook.
176
+ * Called after the component is mounted to the DOM.
177
+ *
178
+ * @param hook - The hook function to execute on mount
179
+ */
180
+ declare function onMount(hook: LifecycleHook): void;
181
+ /**
182
+ * Register a destroy lifecycle hook.
183
+ * Called before the component is removed from the DOM.
184
+ *
185
+ * @param hook - The hook function to execute on destroy
186
+ */
187
+ declare function onDestroy(hook: LifecycleHook): void;
188
+ /**
189
+ * Register an update lifecycle hook.
190
+ * Called after the component updates.
191
+ *
192
+ * @param hook - The hook function to execute on update
193
+ */
194
+ declare function onUpdate(hook: LifecycleHook): void;
2292
195
 
2293
196
  /**
2294
- * Creates a JSX element from a given template.
197
+ * Add event listener with automatic cleanup on scope destruction
198
+ *
199
+ * @param element - Element to attach listener to
200
+ * @param event - Event name
201
+ * @param handler - Event handler function
202
+ * @param options - Event listener options
203
+ */
204
+ declare function addEventListener(element: Element, event: string, handler: EventListener, options?: AddEventListenerOptions): void;
205
+ /**
206
+ * Bind an element to a setter function for two-way data binding
2295
207
  *
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.
208
+ * @param node - The element to bind
209
+ * @param key - The property key (unused, kept for API compatibility)
210
+ * @param defaultValue - Default value (unused, kept for API compatibility)
211
+ * @param setter - The setter function to call when the element's value changes
2301
212
  */
2302
- declare function h<K extends keyof HTMLElementTagNameMap>(template: EssorComponent | HTMLTemplateElement | K | '', props?: Props, key?: string): JSX.Element;
213
+ declare function bindElement(node: Element, key: string, defaultValue: unknown, setter: (value: unknown) => void): void;
2303
214
  /**
2304
- * Checks if the given node is an instance of `ComponentNode`.
215
+ * Reactive node insertion with binding support
2305
216
  *
2306
- * @param node The node to check.
2307
- * @returns `true` if the node is an instance of `ComponentNode`, otherwise `false`.
217
+ * @param parent Parent node
218
+ * @param nodeFactory Node factory function or static node
219
+ * @param before Reference node for insertion position
220
+ * @param options Insertion options
221
+ *
222
+ * @example
223
+ * ```typescript
224
+ * insert(container, () => message.value, null);
225
+ * insert(container, staticElement, referenceNode);
226
+ * insert(container, "Hello World", null); // Direct string support
227
+ * ```
2308
228
  */
2309
- declare function isComponent(node: unknown): node is ComponentNode$1;
229
+ declare function insert(parent: Node, nodeFactory: AnyNode, before?: Node): AnyNode[] | undefined;
2310
230
  /**
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`.
231
+ * Map nodes from template by indexes
2313
232
  *
2314
- * @param node The node to check.
2315
- * @returns `true` if the node is a JSX element, otherwise `false`.
233
+ * @param template - Template node to traverse
234
+ * @param indexes - Array of indexes to map
235
+ * @returns Array of mapped nodes
2316
236
  */
2317
- declare function isJsxElement(node: unknown): node is EssorNode;
237
+ declare function mapNodes(template: Node, indexes: number[]): Node[];
238
+
239
+ /**
240
+ * Set up event delegation for specified event types
241
+ * @param {string[]} eventNames - Array of event names to delegate
242
+ * @param {Document} document - Document to attach events to (defaults to window.document)
243
+ */
244
+ declare function delegateEvents(eventNames: string[], document?: Document): void;
245
+
2318
246
  /**
2319
- * Creates an HTML template element from a given HTML string.
247
+ * Create a reactive proxy that excludes specified properties
2320
248
  *
2321
- * @param html The HTML string to create a template from.
2322
- * @returns A new HTML template element.
249
+ * @param target - The original reactive object
250
+ * @param keys - List of property names to exclude
251
+ * @returns A reactive proxy with specified properties excluded
2323
252
  */
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;
253
+ declare function omitProps<T extends object, K extends keyof T>(target: T, keys: K[]): Omit<T, K>;
2332
254
 
2333
255
  /**
2334
- * Registers a hook to be called when the component is mounted.
256
+ * DOM manipulation utilities
257
+ */
258
+
259
+ /**
260
+ * Remove node from its parent
2335
261
  *
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.
262
+ * @param node - Node to remove
2340
263
  */
2341
- declare function onMount(cb: () => void): void;
264
+ declare function removeNode(node: AnyNode): void;
2342
265
  /**
2343
- * Registers a hook to be called when the component is about to be unmounted.
266
+ * Insert child node into parent
267
+ * Handles both component nodes and DOM nodes
2344
268
  *
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.
269
+ * @param parent - Parent node
270
+ * @param child - Child node to insert
271
+ * @param before - Reference node for insertion position
2349
272
  */
2350
- declare function onDestroy(cb: () => void): void;
2351
- interface InjectionKey<T> extends Symbol {
2352
- }
273
+ declare function insertNode(parent: Node, child: AnyNode, before?: AnyNode): void;
2353
274
  /**
2354
- * Provides a value to be used in the component tree.
275
+ * Replace child node with a new node
276
+ * Handles both component nodes and DOM nodes
2355
277
  *
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.
278
+ * @param parent - Parent node
279
+ * @param newNode - New node to insert
280
+ * @param oldNode - Old node to be replaced
2361
281
  */
2362
- declare function provide<T, K = InjectionKey<T> | string | number>(key: K, value: K extends InjectionKey<infer V> ? V : T): void;
282
+ declare function replaceNode(parent: Node, newNode: AnyNode, oldNode: AnyNode): void;
2363
283
  /**
2364
- * Injects a value from the current component LifecycleContext.
284
+ * Get the first DOM node from a node or component
2365
285
  *
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.
286
+ * @param node - Node or component
287
+ * @returns The first DOM node or undefined
2374
288
  */
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;
289
+ declare function getFirstDOMNode(node: AnyNode): Node | undefined;
2376
290
 
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;
291
+ /**
292
+ * Node normalization and comparison utilities
293
+ */
294
+
295
+ /**
296
+ * Normalize node for reconciliation
297
+ * Converts primitives to text nodes
298
+ *
299
+ * @param node - Node to normalize
300
+ * @returns Normalized DOM node
301
+ */
302
+ declare function normalizeNode(node: unknown): Node;
303
+ /**
304
+ * Check if two nodes are the same (for reconciliation)
305
+ * Combines key check and type check
306
+ *
307
+ * @param a - First node
308
+ * @param b - Second node
309
+ * @returns true if nodes are considered the same
310
+ */
311
+ declare function isSameNode(a: AnyNode, b: AnyNode): boolean;
312
+ /**
313
+ * Shallow compare two objects or arrays
314
+ * Performs strict equality check on top-level properties
315
+ *
316
+ * @param a - First value to compare
317
+ * @param b - Second value to compare
318
+ * @returns true if values are shallowly equal
319
+ */
320
+ declare function shallowCompare(a: unknown, b: unknown): boolean;
321
+
322
+ /**
323
+ * Get rendered element by hydration key or create from template
324
+ * @param {string} temp - the template string
325
+ * @returns {Function} a function that returns the element
326
+ */
327
+ declare function getRenderedElement(temp: string): () => Node | null;
328
+ /**
329
+ * Maps server-side rendered nodes during hydration
330
+ * @param {HTMLElement} templateEl - The root template element
331
+ * @param {number[]} idx - Array of indices to map
332
+ * @returns {Node[]} Array of mapped nodes
333
+ */
334
+ declare function mapSSRNodes(templateEl: HTMLElement, idx: number[]): Node[];
335
+ /**
336
+ * Hydrate a server-rendered component
337
+ * @param {ComponentFn} component - Component function to hydrate
338
+ * @param {HTMLElement | string} container - Container element or selector
339
+ * @returns {any} Component instance or undefined if hydration fails
340
+ */
341
+ declare function hydrate(component: ComponentFn, container: HTMLElement | string): any;
342
+
343
+ /**
344
+ * Start hydration mode
345
+ * Called when beginning client-side hydration of server-rendered content
346
+ */
347
+ declare function startHydration(): void;
348
+ /**
349
+ * End hydration mode
350
+ * Called when hydration is complete
351
+ */
352
+ declare function endHydration(): void;
353
+ /**
354
+ * Check if hydration is currently active
355
+ * @returns true if hydration is in progress
356
+ */
357
+ declare function isHydrating(): boolean;
358
+ /**
359
+ * Get the hydration key
360
+ * @returns the hydration key string
361
+ */
362
+ declare function getHydrationKey(): string;
363
+ /**
364
+ * Reset the hydration key counter
365
+ */
366
+ declare function resetHydrationKey(): void;
367
+
368
+ /**
369
+ * Patches the class attribute of an element
370
+ * Supports silent hydration (skips DOM updates during hydration phase)
371
+ *
372
+ * @param el - The element to patch classes on
373
+ * @param prev - Previous class value for diffing
374
+ * @param next - New class value to apply
375
+ * @param isSVG - Whether the element is an SVG element
376
+ * @public
377
+ */
378
+ declare function patchClass(el: Element, prev: unknown, next: unknown, isSVG?: boolean): void;
379
+ /**
380
+ * Normalizes different class value formats into a single string
381
+ * Re-exports normalizeClassName from shared as normalizeClass for backward compatibility
382
+ *
383
+ * @param value - The class value to normalize
384
+ * @returns A normalized class string
385
+ * @public
386
+ */
387
+ declare function normalizeClass(value: unknown): string;
388
+
389
+ /**
390
+ * Patches the style of an element, optimized for different style formats
391
+ * Supports silent hydration (skips DOM updates during hydration phase)
392
+ *
393
+ * @param el - The element to patch styles on
394
+ * @public
395
+ */
396
+ declare function patchStyle(el: HTMLElement, prev: unknown, next: unknown): void;
397
+ /**
398
+ * Sets an individual style property with various optimizations
399
+ *
400
+ * @param style - The style object to modify
401
+ * @param name - The style property name
402
+ * @param val - The style property value
403
+ * @private
404
+ */
405
+ declare function setStyle(style: CSSStyleDeclaration, name: string, val: string | string[]): void;
406
+
407
+ type AttrValue = string | boolean | number | null | undefined | Record<string, unknown>;
408
+ declare function patchAttr(el: Element, key: string, prev: AttrValue, next: AttrValue): void;
409
+
410
+ /**
411
+ * Extended event options with delegation support
412
+ * @public
413
+ */
414
+ interface EventOptions extends AddEventListenerOptions {
415
+ /**
416
+ * CSS selector for event delegation
417
+ * When provided, the event will only trigger if the target matches this selector
418
+ */
419
+ delegate?: string;
2392
420
  }
421
+ /**
422
+ * Event handler cleanup function
423
+ * @public
424
+ */
425
+ type EventCleanup = () => void;
426
+ /**
427
+ * Adds an event listener to an element with optional delegation
428
+ *
429
+ * @param el - The element to attach the event to
430
+ * @param event - The event name (e.g., 'click', 'input')
431
+ * @param handler - The event handler function
432
+ * @param options - Additional event options including delegation
433
+ * @returns A cleanup function to remove the event listener
434
+ * @public
435
+ */
436
+ declare function addEvent(el: Element, event: string, handler: EventListener, options?: EventOptions): EventCleanup;
437
+
438
+ interface FragmentProps extends ComponentProps {
439
+ children?: AnyNode | AnyNode[];
440
+ }
441
+ /**
442
+ * Fragment component - renders multiple children without wrapper elements (Client-side only)
443
+ *
444
+ * **Client-side behavior:**
445
+ * - Returns children directly for rendering
446
+ * - Hydration system matches children using hydration keys
447
+ * - The template system handles array children automatically
448
+ *
449
+ * @param props - Component props with children
450
+ * @returns Children directly without wrapper
451
+ *
452
+ * @example
453
+ * ```tsx
454
+ * // Basic usage
455
+ * <Fragment>
456
+ * <div>First</div>
457
+ * <span>Second</span>
458
+ * </Fragment>
459
+ *
460
+ * // Nested fragments
461
+ * <Fragment>
462
+ * <Fragment>
463
+ * <div>Nested 1</div>
464
+ * <div>Nested 2</div>
465
+ * </Fragment>
466
+ * <div>Third</div>
467
+ * </Fragment>
468
+ *
469
+ * // Empty fragment (renders nothing)
470
+ * <Fragment />
471
+ * ```
472
+ */
473
+ declare function Fragment(props?: FragmentProps): AnyNode;
474
+ declare namespace Fragment { }
475
+ /**
476
+ * Check if a node is a Fragment component
477
+ * @param node - Node to check
478
+ * @returns true if node is a Fragment
479
+ */
480
+ declare function isFragment(node: unknown): boolean;
2393
481
 
482
+ interface PortalProps {
483
+ children?: AnyNode | AnyNode[];
484
+ target: string | HTMLElement;
485
+ key?: string;
486
+ }
2394
487
  /**
2395
- * Render a component to a string.
488
+ * Portal component - renders children into a different DOM node
2396
489
  *
2397
- * This function renders a component to an HTML string. It is used for server-side rendering (SSR) and static site generation (SSG).
490
+ * @param props - Component props with children and target
491
+ * @returns Comment node as placeholder in parent tree
2398
492
  *
2399
- * @param component The component to render.
2400
- * @param props Optional props to pass to the component.
2401
- * @returns The rendered HTML string.
493
+ * @example
494
+ * ```tsx
495
+ * <Portal target="#modal-root">
496
+ * <div>Modal content</div>
497
+ * </Portal>
2402
498
  */
2403
- declare function renderToString(component: EssorComponent, props?: Props): string;
499
+ declare function Portal(props: PortalProps): Comment | string;
500
+ declare namespace Portal { }
501
+ /**
502
+ * Check if a node is a Portal component
503
+ * @param node - Node to check
504
+ * @returns true if node is a Portal
505
+ */
506
+ declare function isPortal(node: unknown): boolean;
507
+
508
+ interface SuspenseProps {
509
+ /** The content to render. Can be a Promise for async loading. */
510
+ children?: AnyNode | AnyNode[] | Promise<AnyNode | AnyNode[]>;
511
+ /** Fallback content to display while children is loading (Promise pending). */
512
+ fallback?: AnyNode;
513
+ /** Optional key for reconciliation. */
514
+ key?: string;
515
+ }
2404
516
  /**
2405
- * Hydrate a component in a container.
517
+ * Suspense component - handles async content with a fallback UI
2406
518
  *
2407
- * This function hydrates a component in a container element. It is used for server-side rendering (SSR) and client-side rendering (CSR).
519
+ * @param props - Component props with children, fallback, and optional key
520
+ * @returns Placeholder node or fallback content
2408
521
  *
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.
522
+ * @example
523
+ * ```tsx
524
+ * <Suspense fallback={<div>Loading...</div>}>
525
+ * {asyncContent}
526
+ * </Suspense>
527
+ * ```
528
+ */
529
+ declare function Suspense(props: SuspenseProps): AnyNode;
530
+ declare namespace Suspense { }
531
+ /**
532
+ * Check if a node is a Suspense component
533
+ * @param node - Node to check
534
+ * @returns true if node is a Suspense
2412
535
  */
2413
- declare function hydrate(component: EssorComponent, container: string | Element): void;
536
+ declare function isSuspense(node: unknown): boolean;
537
+
538
+ type ResourceState = 'pending' | 'ready' | 'errored';
539
+ interface Resource<T> {
540
+ (): T | undefined;
541
+ loading: Signal<boolean>;
542
+ error: Signal<Error | null>;
543
+ state: Signal<ResourceState>;
544
+ }
545
+ interface ResourceActions<T> {
546
+ mutate: (value: T) => void;
547
+ refetch: () => Promise<void>;
548
+ }
549
+ interface ResourceOptions<T> {
550
+ initialValue?: T;
551
+ }
2414
552
  /**
2415
- * Create a server-side generation (SSG) node from a component.
553
+ * Create a resource for async data fetching
554
+ * Inspired by SolidJS createResource
555
+ *
556
+ * @param fetcher - Function that returns a Promise with the data
557
+ * @param options - Optional configuration
558
+ * @returns Tuple of [resource, actions]
559
+ *
560
+ * @example
561
+ * ```typescript
562
+ * const [data, { refetch, mutate }] = createResource(
563
+ * () => fetch('/api/user').then(r => r.json()),
564
+ * { initialValue: null }
565
+ * );
566
+ *
567
+ * // Access data
568
+ * console.log(data());
569
+ * console.log(data.loading.value);
570
+ * console.log(data.state.value);
2416
571
  *
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.
572
+ * // Refetch data
573
+ * await refetch();
2418
574
  *
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.
575
+ * // Update data directly
576
+ * mutate({ name: 'John' });
577
+ * ```
2422
578
  */
2423
- declare function ssg(component: EssorComponent, props?: Props): SSGNode | JSX.Element;
579
+ declare function createResource<T>(fetcher: () => Promise<T>, options?: ResourceOptions<T>): [Resource<T>, ResourceActions<T>];
2424
580
 
2425
- export { Fragment, type InjectionKey, h, hydrate, inject, isComponent, isJsxElement, onDestroy, onMount, provide, renderToString, ssg, createTemplate as template };
581
+ export { Component, type ComponentFn, type ComponentProps, Fragment, type FragmentProps, type InjectionKey, Portal, type PortalProps, type Scope, Suspense, type SuspenseProps, addEvent, addEventListener, bindElement, createApp, createComponent, createResource, createScope, delegateEvents, disposeScope, endHydration, getActiveScope, getFirstDOMNode, getHydrationKey, getRenderedElement, hydrate, inject, insert, insertNode, isComponent, isFragment, isHydrating, isPortal, isSameNode, isSuspense, mapNodes, mapSSRNodes, normalizeClass, normalizeNode, omitProps, onCleanup, onDestroy, onMount, onUpdate, patchAttr, patchClass, patchStyle, provide, removeNode, replaceNode, resetHydrationKey, runWithScope, setActiveScope, setStyle, shallowCompare, startHydration, template };