@ktjs/core 0.19.0 → 0.20.0

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.
@@ -24,1180 +24,6 @@ declare class KTRef<T> {
24
24
  removeOnChange(callback: RefChangeHandler<T>): boolean;
25
25
  }
26
26
 
27
- // Base events available to all HTML elements
28
- interface BaseAttr {
29
- [k: string]: any;
30
-
31
- // # base attributes
32
- class?: string;
33
- className?: string;
34
- style?: string | Partial<CSSStyleDeclaration>;
35
-
36
- // # Events
37
- // Mouse events
38
- 'on:click'?: (ev: PointerEvent) => void;
39
- 'on:dblclick'?: (ev: PointerEvent) => void;
40
- 'on:mousedown'?: (ev: PointerEvent) => void;
41
- 'on:mouseup'?: (ev: MouseEvent) => void;
42
- 'on:mousemove'?: (ev: MouseEvent) => void;
43
- 'on:mouseenter'?: (ev: MouseEvent) => void;
44
- 'on:mouseleave'?: (ev: MouseEvent) => void;
45
- 'on:mouseover'?: (ev: MouseEvent) => void;
46
- 'on:mouseout'?: (ev: MouseEvent) => void;
47
- 'on:contextmenu'?: (ev: PointerEvent) => void;
48
-
49
- // Keyboard events
50
- 'on:keydown'?: (ev: KeyboardEvent) => void;
51
- 'on:keyup'?: (ev: KeyboardEvent) => void;
52
- 'on:keypress'?: (ev: KeyboardEvent) => void;
53
-
54
- // Focus events
55
- 'on:focus'?: (ev: FocusEvent) => void;
56
- 'on:blur'?: (ev: FocusEvent) => void;
57
- 'on:focusin'?: (ev: FocusEvent) => void;
58
- 'on:focusout'?: (ev: FocusEvent) => void;
59
-
60
- // Input events
61
- 'on:input'?: (ev: Event) => void;
62
- 'on:change'?: (ev: Event) => void;
63
- 'on:beforeinput'?: (ev: InputEvent) => void;
64
-
65
- // Drag events
66
- 'on:drag'?: (ev: DragEvent) => void;
67
- 'on:dragstart'?: (ev: DragEvent) => void;
68
- 'on:dragend'?: (ev: DragEvent) => void;
69
- 'on:dragenter'?: (ev: DragEvent) => void;
70
- 'on:dragleave'?: (ev: DragEvent) => void;
71
- 'on:dragover'?: (ev: DragEvent) => void;
72
- 'on:drop'?: (ev: DragEvent) => void;
73
-
74
- // Clipboard events
75
- 'on:copy'?: (ev: ClipboardEvent) => void;
76
- 'on:cut'?: (ev: ClipboardEvent) => void;
77
- 'on:paste'?: (ev: ClipboardEvent) => void;
78
-
79
- // Touch events
80
- 'on:touchstart'?: (ev: TouchEvent) => void;
81
- 'on:touchmove'?: (ev: TouchEvent) => void;
82
- 'on:touchend'?: (ev: TouchEvent) => void;
83
- 'on:touchcancel'?: (ev: TouchEvent) => void;
84
-
85
- // Wheel event
86
- 'on:wheel'?: (ev: WheelEvent) => void;
87
-
88
- // Animation events
89
- 'on:animationstart'?: (ev: AnimationEvent) => void;
90
- 'on:animationend'?: (ev: AnimationEvent) => void;
91
- 'on:animationiteration'?: (ev: AnimationEvent) => void;
92
-
93
- // Transition events
94
- 'on:transitionstart'?: (ev: TransitionEvent) => void;
95
- 'on:transitionend'?: (ev: TransitionEvent) => void;
96
- 'on:transitionrun'?: (ev: TransitionEvent) => void;
97
- 'on:transitioncancel'?: (ev: TransitionEvent) => void;
98
-
99
- // Pointer events
100
- 'on:pointerdown'?: (ev: PointerEvent) => void;
101
- 'on:pointerup'?: (ev: PointerEvent) => void;
102
- 'on:pointermove'?: (ev: PointerEvent) => void;
103
- 'on:pointerenter'?: (ev: PointerEvent) => void;
104
- 'on:pointerleave'?: (ev: PointerEvent) => void;
105
- 'on:pointerover'?: (ev: PointerEvent) => void;
106
- 'on:pointerout'?: (ev: PointerEvent) => void;
107
- 'on:pointercancel'?: (ev: PointerEvent) => void;
108
- 'on:gotpointercapture'?: (ev: PointerEvent) => void;
109
- 'on:lostpointercapture'?: (ev: PointerEvent) => void;
110
-
111
- // Selection events
112
- 'on:select'?: (ev: Event) => void;
113
- 'on:selectstart'?: (ev: Event) => void;
114
-
115
- // Scroll event
116
- 'on:scroll'?: (ev: Event) => void;
117
-
118
- // Resize event
119
- 'on:resize'?: (ev: UIEvent) => void;
120
- }
121
-
122
- // Form-specific events
123
- interface FormElementEvents {
124
- 'on:submit'?: (ev: SubmitEvent) => void;
125
- 'on:reset'?: (ev: Event) => void;
126
- 'on:invalid'?: (ev: Event) => void;
127
- }
128
-
129
- // Media-specific events
130
- interface MediaElementEvents {
131
- 'on:play'?: (ev: Event) => void;
132
- 'on:pause'?: (ev: Event) => void;
133
- 'on:playing'?: (ev: Event) => void;
134
- 'on:ended'?: (ev: Event) => void;
135
- 'on:canplay'?: (ev: Event) => void;
136
- 'on:canplaythrough'?: (ev: Event) => void;
137
- 'on:durationchange'?: (ev: Event) => void;
138
- 'on:emptied'?: (ev: Event) => void;
139
- 'on:loadeddata'?: (ev: Event) => void;
140
- 'on:loadedmetadata'?: (ev: Event) => void;
141
- 'on:loadstart'?: (ev: Event) => void;
142
- 'on:progress'?: (ev: ProgressEvent) => void;
143
- 'on:ratechange'?: (ev: Event) => void;
144
- 'on:seeked'?: (ev: Event) => void;
145
- 'on:seeking'?: (ev: Event) => void;
146
- 'on:stalled'?: (ev: Event) => void;
147
- 'on:suspend'?: (ev: Event) => void;
148
- 'on:timeupdate'?: (ev: Event) => void;
149
- 'on:volumechange'?: (ev: Event) => void;
150
- 'on:waiting'?: (ev: Event) => void;
151
- 'on:abort'?: (ev: UIEvent) => void;
152
- 'on:error'?: (ev: ErrorEvent) => void;
153
- }
154
-
155
- // Details-specific events
156
- interface DetailsElementEvents {
157
- 'on:toggle'?: (ev: Event) => void;
158
- }
159
-
160
- // Dialog-specific events
161
- interface DialogElementEvents {
162
- 'on:cancel'?: (ev: Event) => void;
163
- 'on:close'?: (ev: Event) => void;
164
- }
165
-
166
- // Image-specific events
167
- interface ImageElementEvents {
168
- 'on:load'?: (ev: Event) => void;
169
- 'on:error'?: (ev: ErrorEvent) => void;
170
- }
171
-
172
- interface AttributesMap {
173
- // Anchor element
174
- a: BaseAttr & {
175
- download?: string;
176
- href?: string;
177
- hreflang?: string;
178
- ping?: string;
179
- referrerpolicy?:
180
- | 'no-referrer'
181
- | 'no-referrer-when-downgrade'
182
- | 'origin'
183
- | 'origin-when-cross-origin'
184
- | 'same-origin'
185
- | 'strict-origin'
186
- | 'strict-origin-when-cross-origin'
187
- | 'unsafe-url';
188
- rel?: string;
189
- target?: '_self' | '_blank' | '_parent' | '_top' | string;
190
- type?: string;
191
- };
192
-
193
- // Area element
194
- area: BaseAttr & {
195
- alt?: string;
196
- coords?: string;
197
- download?: string;
198
- href?: string;
199
- ping?: string;
200
- referrerpolicy?:
201
- | 'no-referrer'
202
- | 'no-referrer-when-downgrade'
203
- | 'origin'
204
- | 'origin-when-cross-origin'
205
- | 'same-origin'
206
- | 'strict-origin'
207
- | 'strict-origin-when-cross-origin'
208
- | 'unsafe-url';
209
- rel?: string;
210
- shape?: 'rect' | 'circle' | 'poly' | 'default';
211
- target?: '_self' | '_blank' | '_parent' | '_top' | string;
212
- };
213
-
214
- // Audio element
215
- audio: BaseAttr &
216
- MediaElementEvents & {
217
- autoplay?: boolean;
218
- controls?: boolean;
219
- crossorigin?: 'anonymous' | 'use-credentials' | '';
220
- loop?: boolean;
221
- muted?: boolean;
222
- preload?: 'none' | 'metadata' | 'auto' | '';
223
- src?: string;
224
- };
225
-
226
- // Base element
227
- base: BaseAttr & {
228
- href?: string;
229
- target?: '_self' | '_blank' | '_parent' | '_top' | string;
230
- };
231
-
232
- // Body element
233
- body: BaseAttr & {};
234
-
235
- // BR element
236
- br: BaseAttr & {};
237
-
238
- // Button element
239
- button: BaseAttr & {
240
- disabled?: boolean;
241
- form?: string;
242
- formaction?: string;
243
- formenctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
244
- formmethod?: 'get' | 'post' | 'dialog';
245
- formnovalidate?: boolean;
246
- formtarget?: '_self' | '_blank' | '_parent' | '_top' | string;
247
- name?: string;
248
- type?: 'submit' | 'reset' | 'button';
249
- value?: string;
250
- };
251
-
252
- // Canvas element
253
- canvas: BaseAttr & {
254
- height?: number | string;
255
- width?: number | string;
256
- };
257
-
258
- // Table caption element
259
- caption: BaseAttr & {};
260
-
261
- // Col element
262
- col: BaseAttr & {
263
- span?: number | string;
264
- };
265
-
266
- // Colgroup element
267
- colgroup: BaseAttr & {
268
- span?: number | string;
269
- };
270
-
271
- // Data element
272
- data: BaseAttr & {
273
- value?: string;
274
- };
275
-
276
- // Datalist element
277
- datalist: BaseAttr & {};
278
-
279
- // Del element
280
- del: BaseAttr & {
281
- cite?: string;
282
- datetime?: string;
283
- };
284
-
285
- // Details element
286
- details: BaseAttr &
287
- DetailsElementEvents & {
288
- open?: boolean;
289
- };
290
-
291
- // Dialog element
292
- dialog: BaseAttr &
293
- DialogElementEvents & {
294
- open?: boolean;
295
- };
296
-
297
- // Embed element
298
- embed: BaseAttr & {
299
- height?: number | string;
300
- src?: string;
301
- type?: string;
302
- width?: number | string;
303
- };
304
-
305
- // Fieldset element
306
- fieldset: BaseAttr & {
307
- disabled?: boolean;
308
- form?: string;
309
- name?: string;
310
- };
311
-
312
- // Form element
313
- form: BaseAttr &
314
- FormElementEvents & {
315
- 'accept-charset'?: string;
316
- action?: string;
317
- autocomplete?: 'on' | 'off';
318
- enctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
319
- method?: 'POST' | 'GET' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS' | 'CONNECT' | 'TRACE' | otherstring;
320
-
321
- name?: string;
322
- novalidate?: boolean;
323
- target?: '_self' | '_blank' | '_parent' | '_top' | string;
324
- };
325
-
326
- // Head element
327
- head: BaseAttr & {};
328
-
329
- // HR element
330
- hr: BaseAttr & {};
331
-
332
- // HTML element
333
- html: BaseAttr & {};
334
-
335
- // IFrame element
336
- iframe: BaseAttr &
337
- ImageElementEvents & {
338
- allow?: string;
339
- allowfullscreen?: boolean;
340
- allowpaymentrequest?: boolean;
341
- height?: number | string;
342
- loading?: 'eager' | 'lazy';
343
- name?: string;
344
- referrerpolicy?:
345
- | 'no-referrer'
346
- | 'no-referrer-when-downgrade'
347
- | 'origin'
348
- | 'origin-when-cross-origin'
349
- | 'same-origin'
350
- | 'strict-origin'
351
- | 'strict-origin-when-cross-origin'
352
- | 'unsafe-url';
353
- sandbox?: string;
354
- src?: string;
355
- srcdoc?: string;
356
- width?: number | string;
357
- };
358
-
359
- // Image element
360
- img: BaseAttr &
361
- ImageElementEvents & {
362
- alt?: string;
363
- crossorigin?: 'anonymous' | 'use-credentials' | '';
364
- decoding?: 'sync' | 'async' | 'auto';
365
- height?: number | string;
366
- ismap?: boolean;
367
- loading?: 'eager' | 'lazy';
368
- referrerpolicy?:
369
- | 'no-referrer'
370
- | 'no-referrer-when-downgrade'
371
- | 'origin'
372
- | 'origin-when-cross-origin'
373
- | 'same-origin'
374
- | 'strict-origin'
375
- | 'strict-origin-when-cross-origin'
376
- | 'unsafe-url';
377
- sizes?: string;
378
- src?: string;
379
- srcset?: string;
380
- usemap?: string;
381
- width?: number | string;
382
- };
383
-
384
- // Input element
385
- input: BaseAttr & {
386
- accept?: string;
387
- alt?: string;
388
- autocomplete?: string;
389
- checked?: boolean;
390
- dirname?: string;
391
- disabled?: boolean;
392
- form?: string;
393
- formaction?: string;
394
- formenctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
395
- formmethod?: 'get' | 'post';
396
- formnovalidate?: boolean;
397
- formtarget?: '_self' | '_blank' | '_parent' | '_top' | string;
398
- height?: number | string;
399
- list?: string;
400
- max?: number | string;
401
- maxlength?: number | string;
402
- min?: number | string;
403
- minlength?: number | string;
404
- multiple?: boolean;
405
- name?: string;
406
- pattern?: string;
407
- placeholder?: string;
408
- readonly?: boolean;
409
- required?: boolean;
410
- size?: number | string;
411
- src?: string;
412
- step?: number | string;
413
- type?:
414
- | 'button'
415
- | 'checkbox'
416
- | 'color'
417
- | 'date'
418
- | 'datetime-local'
419
- | 'email'
420
- | 'file'
421
- | 'hidden'
422
- | 'image'
423
- | 'month'
424
- | 'number'
425
- | 'password'
426
- | 'radio'
427
- | 'range'
428
- | 'reset'
429
- | 'search'
430
- | 'submit'
431
- | 'tel'
432
- | 'text'
433
- | 'time'
434
- | 'url'
435
- | 'week';
436
- value?: string;
437
- width?: number | string;
438
- };
439
-
440
- // Ins element
441
- ins: BaseAttr & {
442
- cite?: string;
443
- datetime?: string;
444
- };
445
-
446
- // Label element
447
- label: BaseAttr & {
448
- for?: string;
449
- };
450
-
451
- // Legend element
452
- legend: BaseAttr & {};
453
-
454
- // LI element
455
- li: BaseAttr & {
456
- value?: number | string;
457
- };
458
-
459
- // Link element
460
- link: BaseAttr &
461
- ImageElementEvents & {
462
- as?: string;
463
- crossorigin?: 'anonymous' | 'use-credentials' | '';
464
- disabled?: boolean;
465
- href?: string;
466
- hreflang?: string;
467
- imagesizes?: string;
468
- imagesrcset?: string;
469
- integrity?: string;
470
- media?: string;
471
- referrerpolicy?:
472
- | 'no-referrer'
473
- | 'no-referrer-when-downgrade'
474
- | 'origin'
475
- | 'origin-when-cross-origin'
476
- | 'same-origin'
477
- | 'strict-origin'
478
- | 'strict-origin-when-cross-origin'
479
- | 'unsafe-url';
480
- rel?: string;
481
- sizes?: string;
482
- type?: string;
483
- };
484
-
485
- // Map element
486
- map: BaseAttr & {
487
- name?: string;
488
- };
489
-
490
- // Menu element
491
- menu: BaseAttr & {};
492
-
493
- // Meta element
494
- meta: BaseAttr & {
495
- charset?: string;
496
- content?: string;
497
- 'http-equiv'?: 'content-security-policy' | 'content-type' | 'default-style' | 'refresh' | string;
498
- name?: string;
499
- };
500
-
501
- // Meter element
502
- meter: BaseAttr & {
503
- form?: string;
504
- high?: number | string;
505
- low?: number | string;
506
- max?: number | string;
507
- min?: number | string;
508
- optimum?: number | string;
509
- value?: number | string;
510
- };
511
-
512
- // Object element
513
- object: BaseAttr &
514
- ImageElementEvents & {
515
- data?: string;
516
- form?: string;
517
- height?: number | string;
518
- name?: string;
519
- type?: string;
520
- usemap?: string;
521
- width?: number | string;
522
- };
523
-
524
- // OL element
525
- ol: BaseAttr & {
526
- reversed?: boolean;
527
- start?: number | string;
528
- type?: '1' | 'a' | 'A' | 'i' | 'I';
529
- };
530
-
531
- // Optgroup element
532
- optgroup: BaseAttr & {
533
- disabled?: boolean;
534
- label?: string;
535
- };
536
-
537
- // Option element
538
- option: BaseAttr & {
539
- disabled?: boolean;
540
- label?: string;
541
- selected?: boolean;
542
- value?: string;
543
- };
544
-
545
- // Output element
546
- output: BaseAttr & {
547
- for?: string;
548
- form?: string;
549
- name?: string;
550
- };
551
-
552
- // Picture element
553
- picture: BaseAttr & {};
554
-
555
- // Pre element
556
- pre: BaseAttr & {};
557
-
558
- // Progress element
559
- progress: BaseAttr & {
560
- max?: number | string;
561
- value?: number | string;
562
- };
563
-
564
- // Quote element (q and blockquote)
565
- q: BaseAttr & {
566
- cite?: string;
567
- };
568
-
569
- blockquote: BaseAttr & {
570
- cite?: string;
571
- };
572
-
573
- // Script element
574
- script: BaseAttr &
575
- ImageElementEvents & {
576
- async?: boolean;
577
- crossorigin?: 'anonymous' | 'use-credentials' | '';
578
- defer?: boolean;
579
- integrity?: string;
580
- nomodule?: boolean;
581
- referrerpolicy?:
582
- | 'no-referrer'
583
- | 'no-referrer-when-downgrade'
584
- | 'origin'
585
- | 'origin-when-cross-origin'
586
- | 'same-origin'
587
- | 'strict-origin'
588
- | 'strict-origin-when-cross-origin'
589
- | 'unsafe-url';
590
- src?: string;
591
- type?: string;
592
- };
593
-
594
- // Select element
595
- select: BaseAttr & {
596
- autocomplete?: string;
597
- disabled?: boolean;
598
- form?: string;
599
- multiple?: boolean;
600
- name?: string;
601
- required?: boolean;
602
- size?: number | string;
603
- };
604
-
605
- // Slot element
606
- slot: BaseAttr & {
607
- name?: string;
608
- };
609
-
610
- // Source element
611
- source: BaseAttr & {
612
- height?: number | string;
613
- media?: string;
614
- sizes?: string;
615
- src?: string;
616
- srcset?: string;
617
- type?: string;
618
- width?: number | string;
619
- };
620
-
621
- // Style element
622
- style: BaseAttr &
623
- ImageElementEvents & {
624
- media?: string;
625
- };
626
-
627
- // Table element
628
- table: BaseAttr & {};
629
-
630
- // Table body/footer/header elements
631
- tbody: BaseAttr & {};
632
-
633
- tfoot: BaseAttr & {};
634
-
635
- thead: BaseAttr & {};
636
-
637
- // Table cell elements
638
- td: BaseAttr & {
639
- colspan?: number | string;
640
- headers?: string;
641
- rowspan?: number | string;
642
- };
643
-
644
- th: BaseAttr & {
645
- abbr?: string;
646
- colspan?: number | string;
647
- headers?: string;
648
- rowspan?: number | string;
649
- scope?: 'row' | 'col' | 'rowgroup' | 'colgroup';
650
- };
651
-
652
- // Template element
653
- template: BaseAttr & {};
654
-
655
- // Textarea element
656
- textarea: BaseAttr & {
657
- autocomplete?: string;
658
- cols?: number | string;
659
- dirname?: string;
660
- disabled?: boolean;
661
- form?: string;
662
- maxlength?: number | string;
663
- minlength?: number | string;
664
- name?: string;
665
- placeholder?: string;
666
- readonly?: boolean;
667
- required?: boolean;
668
- rows?: number | string;
669
- wrap?: 'hard' | 'soft' | 'off';
670
- };
671
-
672
- // Time element
673
- time: BaseAttr & {
674
- datetime?: string;
675
- };
676
-
677
- // Title element
678
- title: BaseAttr & {};
679
-
680
- // TR element
681
- tr: BaseAttr & {};
682
-
683
- // Track element
684
- track: BaseAttr & {
685
- default?: boolean;
686
- kind?: 'subtitles' | 'captions' | 'descriptions' | 'chapters' | 'metadata';
687
- label?: string;
688
- src?: string;
689
- srclang?: string;
690
- };
691
-
692
- // UL element
693
- ul: BaseAttr & {};
694
-
695
- // Video element
696
- video: BaseAttr &
697
- MediaElementEvents & {
698
- autoplay?: boolean;
699
- controls?: boolean;
700
- crossorigin?: 'anonymous' | 'use-credentials' | '';
701
- height?: number | string;
702
- loop?: boolean;
703
- muted?: boolean;
704
- playsinline?: boolean;
705
- poster?: string;
706
- preload?: 'none' | 'metadata' | 'auto' | '';
707
- src?: string;
708
- width?: number | string;
709
- };
710
-
711
- // Generic HTMLElement (no specific attributes beyond BaseEvent)
712
- abbr: BaseAttr & {};
713
- address: BaseAttr & {};
714
- article: BaseAttr & {};
715
- aside: BaseAttr & {};
716
- b: BaseAttr & {};
717
- bdi: BaseAttr & {};
718
- bdo: BaseAttr & {};
719
- cite: BaseAttr & {};
720
- code: BaseAttr & {};
721
- dd: BaseAttr & {};
722
- dfn: BaseAttr & {};
723
- div: BaseAttr & {};
724
- dl: BaseAttr & {};
725
- dt: BaseAttr & {};
726
- em: BaseAttr & {};
727
- figcaption: BaseAttr & {};
728
- figure: BaseAttr & {};
729
- footer: BaseAttr & {};
730
- h1: BaseAttr & {};
731
- h2: BaseAttr & {};
732
- h3: BaseAttr & {};
733
- h4: BaseAttr & {};
734
- h5: BaseAttr & {};
735
- h6: BaseAttr & {};
736
- header: BaseAttr & {};
737
- hgroup: BaseAttr & {};
738
- i: BaseAttr & {};
739
- kbd: BaseAttr & {};
740
- main: BaseAttr & {};
741
- mark: BaseAttr & {};
742
- nav: BaseAttr & {};
743
- noscript: BaseAttr & {};
744
- p: BaseAttr & {};
745
- rp: BaseAttr & {};
746
- rt: BaseAttr & {};
747
- ruby: BaseAttr & {};
748
- s: BaseAttr & {};
749
- samp: BaseAttr & {};
750
- search: BaseAttr & {};
751
- section: BaseAttr & {};
752
- small: BaseAttr & {};
753
- span: BaseAttr & {};
754
- strong: BaseAttr & {};
755
- sub: BaseAttr & {};
756
- summary: BaseAttr & {};
757
- sup: BaseAttr & {};
758
- u: BaseAttr & {};
759
- var: BaseAttr & {};
760
- wbr: BaseAttr & {};
761
-
762
- svg: BaseAttr & {
763
- class?: string;
764
- style?: string | Partial<CSSStyleDeclaration>;
765
- width?: number | string;
766
- height?: number | string;
767
- viewBox?: string;
768
- xmlns?: string;
769
- fill?: string;
770
- stroke?: string;
771
- strokeWidth?: number | string;
772
- strokeLinecap?: 'butt' | 'round' | 'square' | 'inherit';
773
- strokeLinejoin?: 'miter' | 'round' | 'bevel' | 'inherit';
774
- strokeDasharray?: string;
775
- strokeDashoffset?: number | string;
776
- opacity?: number | string;
777
- preserveAspectRatio?: string;
778
- transform?: string;
779
- x?: number | string;
780
- y?: number | string;
781
- rx?: number | string;
782
- ry?: number | string;
783
- r?: number | string;
784
- cx?: number | string;
785
- cy?: number | string;
786
- d?: string;
787
- points?: string;
788
- pathLength?: number | string;
789
- viewbox?: string;
790
- role?: string;
791
- focusable?: boolean | 'true' | 'false';
792
- xlinkHref?: string; // legacy xlink:href
793
- };
794
- }
795
-
796
- interface SVGAttributesMap {
797
- a: AttributesMap['svg'] & { href?: string; x?: number | string; y?: number | string };
798
- animate: AttributesMap['svg'] & {
799
- attributeName?: string;
800
- from?: string | number;
801
- to?: string | number;
802
- dur?: string;
803
- repeatCount?: string | number;
804
- };
805
- animateMotion: AttributesMap['svg'] & { path?: string; dur?: string; rotate?: string };
806
- animateTransform: AttributesMap['svg'] & { type?: string; from?: string; to?: string; dur?: string };
807
- circle: AttributesMap['svg'] & { cx?: number | string; cy?: number | string; r?: number | string };
808
- clipPath: AttributesMap['svg'] & { clipPathUnits?: 'userSpaceOnUse' | 'objectBoundingBox' };
809
- defs: AttributesMap['svg'];
810
- desc: AttributesMap['svg'];
811
- ellipse: AttributesMap['svg'] & {
812
- cx?: number | string;
813
- cy?: number | string;
814
- rx?: number | string;
815
- ry?: number | string;
816
- };
817
-
818
- // Filter primitives (provide common props)
819
- feBlend: AttributesMap['svg'] & { in?: string; in2?: string; mode?: string };
820
- feColorMatrix: AttributesMap['svg'] & {
821
- type?: 'matrix' | 'saturate' | 'hueRotate' | 'luminanceToAlpha';
822
- values?: string;
823
- };
824
- feComponentTransfer: AttributesMap['svg'] & {};
825
- feComposite: AttributesMap['svg'] & {
826
- in?: string;
827
- in2?: string;
828
- operator?: string;
829
- k1?: number | string;
830
- k2?: number | string;
831
- k3?: number | string;
832
- k4?: number | string;
833
- };
834
- feConvolveMatrix: AttributesMap['svg'] & {
835
- order?: string | number;
836
- kernelMatrix?: string;
837
- divisor?: string | number;
838
- bias?: string | number;
839
- };
840
- feDiffuseLighting: AttributesMap['svg'] & {};
841
- feDisplacementMap: AttributesMap['svg'] & {
842
- in?: string;
843
- in2?: string;
844
- scale?: number | string;
845
- xChannelSelector?: string;
846
- yChannelSelector?: string;
847
- };
848
- feDistantLight: AttributesMap['svg'] & { azimuth?: number | string; elevation?: number | string };
849
- feDropShadow: AttributesMap['svg'] & {
850
- dx?: number | string;
851
- dy?: number | string;
852
- stdDeviation?: number | string;
853
- floodColor?: string;
854
- floodOpacity?: number | string;
855
- };
856
- feFlood: AttributesMap['svg'] & { floodColor?: string; floodOpacity?: number | string };
857
- feFuncA: AttributesMap['svg'] & {};
858
- feFuncB: AttributesMap['svg'] & {};
859
- feFuncG: AttributesMap['svg'] & {};
860
- feFuncR: AttributesMap['svg'] & {};
861
- feGaussianBlur: AttributesMap['svg'] & { stdDeviation?: number | string; edgeMode?: string };
862
- feImage: AttributesMap['svg'] & { href?: string };
863
- feMerge: AttributesMap['svg'] & {};
864
- feMergeNode: AttributesMap['svg'] & { in?: string };
865
- feMorphology: AttributesMap['svg'] & { operator?: 'erode' | 'dilate'; radius?: number | string };
866
- feOffset: AttributesMap['svg'] & { dx?: number | string; dy?: number | string };
867
- fePointLight: AttributesMap['svg'] & { x?: number | string; y?: number | string; z?: number | string };
868
- feSpecularLighting: AttributesMap['svg'] & {
869
- specularConstant?: number | string;
870
- specularExponent?: number | string;
871
- surfaceScale?: number | string;
872
- };
873
- feSpotLight: AttributesMap['svg'] & {
874
- x?: number | string;
875
- y?: number | string;
876
- z?: number | string;
877
- pointsAtX?: number | string;
878
- pointsAtY?: number | string;
879
- pointsAtZ?: number | string;
880
- specularExponent?: number | string;
881
- limitingConeAngle?: number | string;
882
- };
883
- feTile: AttributesMap['svg'] & {};
884
- feTurbulence: AttributesMap['svg'] & {
885
- baseFrequency?: number | string;
886
- numOctaves?: number | string;
887
- seed?: number | string;
888
- stitchTiles?: string;
889
- type?: 'fractalNoise' | 'turbulence';
890
- };
891
-
892
- filter: AttributesMap['svg'] & {
893
- x?: number | string;
894
- y?: number | string;
895
- width?: number | string;
896
- height?: number | string;
897
- filterUnits?: string;
898
- primitiveUnits?: string;
899
- };
900
- foreignObject: AttributesMap['svg'] & {
901
- x?: number | string;
902
- y?: number | string;
903
- width?: number | string;
904
- height?: number | string;
905
- };
906
- g: AttributesMap['svg'];
907
- image: AttributesMap['svg'] & {
908
- href?: string;
909
- x?: number | string;
910
- y?: number | string;
911
- width?: number | string;
912
- height?: number | string;
913
- };
914
- line: AttributesMap['svg'] & {
915
- x1?: number | string;
916
- y1?: number | string;
917
- x2?: number | string;
918
- y2?: number | string;
919
- };
920
- linearGradient: AttributesMap['svg'] & {
921
- x1?: number | string;
922
- y1?: number | string;
923
- x2?: number | string;
924
- y2?: number | string;
925
- gradientUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
926
- gradientTransform?: string;
927
- };
928
- marker: AttributesMap['svg'] & {
929
- markerUnits?: string;
930
- markerWidth?: number | string;
931
- markerHeight?: number | string;
932
- refX?: number | string;
933
- refY?: number | string;
934
- orient?: string;
935
- };
936
- mask: AttributesMap['svg'] & {
937
- maskUnits?: string;
938
- maskContentUnits?: string;
939
- x?: number | string;
940
- y?: number | string;
941
- width?: number | string;
942
- height?: number | string;
943
- };
944
- metadata: AttributesMap['svg'];
945
- mpath: AttributesMap['svg'] & { href?: string };
946
- path: AttributesMap['svg'] & { d?: string; pathLength?: number | string };
947
- pattern: AttributesMap['svg'] & {
948
- patternUnits?: string;
949
- patternContentUnits?: string;
950
- width?: number | string;
951
- height?: number | string;
952
- x?: number | string;
953
- y?: number | string;
954
- };
955
- polygon: AttributesMap['svg'] & { points?: string };
956
- polyline: AttributesMap['svg'] & { points?: string };
957
- radialGradient: AttributesMap['svg'] & {
958
- cx?: number | string;
959
- cy?: number | string;
960
- r?: number | string;
961
- fx?: number | string;
962
- fy?: number | string;
963
- gradientUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
964
- gradientTransform?: string;
965
- };
966
- rect: AttributesMap['svg'] & {
967
- x?: number | string;
968
- y?: number | string;
969
- width?: number | string;
970
- height?: number | string;
971
- rx?: number | string;
972
- ry?: number | string;
973
- };
974
- script: AttributesMap['svg'] & { href?: string; type?: string };
975
- set: AttributesMap['svg'] & { attributeName?: string; to?: string | number; begin?: string; dur?: string };
976
- stop: AttributesMap['svg'] & { offset?: number | string; stopColor?: string; stopOpacity?: number | string };
977
- style: AttributesMap['svg'] & { media?: string };
978
- svg: AttributesMap['svg'];
979
- switch: AttributesMap['svg'];
980
- symbol: AttributesMap['svg'] & { viewBox?: string; preserveAspectRatio?: string };
981
- text: AttributesMap['svg'] & {
982
- x?: number | string;
983
- y?: number | string;
984
- dx?: number | string;
985
- dy?: number | string;
986
- textLength?: number | string;
987
- };
988
- textPath: AttributesMap['svg'] & { href?: string; startOffset?: number | string };
989
- title: AttributesMap['svg'];
990
- tspan: AttributesMap['svg'] & {
991
- x?: number | string;
992
- y?: number | string;
993
- dx?: number | string;
994
- dy?: number | string;
995
- };
996
- use: AttributesMap['svg'] & {
997
- href?: string;
998
- x?: number | string;
999
- y?: number | string;
1000
- width?: number | string;
1001
- height?: number | string;
1002
- };
1003
- view: AttributesMap['svg'] & { viewBox?: string; preserveAspectRatio?: string };
1004
- }
1005
-
1006
- type KTHTMLElement<El extends HTMLElement = HTMLElement> = El & {
1007
- /**
1008
- * Automically generate a redraw function if it is not provided
1009
- * @param props
1010
- */
1011
- redraw: (props?: KTAttribute, ...args: any[]) => KTHTMLElement;
1012
- };
1013
-
1014
- declare global {
1015
- namespace JSX {
1016
- type Element = KTHTMLElement;
1017
-
1018
- interface IntrinsicElements {
1019
- // Document-level & metadata
1020
- html: AttributesMap['html'];
1021
- head: AttributesMap['head'];
1022
- title: AttributesMap['title'];
1023
- base: AttributesMap['base'];
1024
- link: AttributesMap['link'];
1025
- meta: AttributesMap['meta'];
1026
-
1027
- // Sectioning
1028
- body: AttributesMap['body'];
1029
- header: AttributesMap['header'];
1030
- footer: AttributesMap['footer'];
1031
- nav: AttributesMap['nav'];
1032
- main: AttributesMap['main'];
1033
- section: AttributesMap['section'];
1034
- article: AttributesMap['article'];
1035
- aside: AttributesMap['aside'];
1036
-
1037
- // Headings
1038
- h1: AttributesMap['h1'];
1039
- h2: AttributesMap['h2'];
1040
- h3: AttributesMap['h3'];
1041
- h4: AttributesMap['h4'];
1042
- h5: AttributesMap['h5'];
1043
- h6: AttributesMap['h6'];
1044
-
1045
- // Text content
1046
- p: AttributesMap['p'];
1047
- pre: AttributesMap['pre'];
1048
- code: AttributesMap['code'];
1049
- strong: AttributesMap['strong'];
1050
- small: AttributesMap['small'];
1051
- em: AttributesMap['em'];
1052
- br: AttributesMap['br'];
1053
- i: AttributesMap['i'];
1054
-
1055
- // Lists
1056
- ul: AttributesMap['ul'];
1057
- ol: AttributesMap['ol'];
1058
- li: AttributesMap['li'];
1059
-
1060
- // Tables
1061
- table: AttributesMap['table'];
1062
- thead: AttributesMap['thead'];
1063
- tbody: AttributesMap['tbody'];
1064
- tfoot: AttributesMap['tfoot'];
1065
- tr: AttributesMap['tr'];
1066
- th: AttributesMap['th'];
1067
- td: AttributesMap['td'];
1068
-
1069
- // Forms
1070
- form: AttributesMap['form'];
1071
- label: AttributesMap['label'];
1072
- input: AttributesMap['input'];
1073
- textarea: AttributesMap['textarea'];
1074
- select: AttributesMap['select'];
1075
- option: AttributesMap['option'];
1076
- optgroup: AttributesMap['optgroup'];
1077
- button: AttributesMap['button'];
1078
- fieldset: AttributesMap['fieldset'];
1079
- legend: AttributesMap['legend'];
1080
- datalist: AttributesMap['datalist'];
1081
- output: AttributesMap['output'];
1082
-
1083
- // Media & embedded
1084
- img: AttributesMap['img'];
1085
- picture: AttributesMap['picture'];
1086
- source: AttributesMap['source'];
1087
- audio: AttributesMap['audio'];
1088
- video: AttributesMap['video'];
1089
- track: AttributesMap['track'];
1090
- iframe: AttributesMap['iframe'];
1091
- embed: AttributesMap['embed'];
1092
- object: AttributesMap['object'];
1093
- canvas: AttributesMap['canvas'];
1094
-
1095
- // Interactive & misc
1096
- a: AttributesMap['a'] & SVGAttributesMap['a'];
1097
- area: AttributesMap['area'];
1098
- map: AttributesMap['map'];
1099
- details: AttributesMap['details'];
1100
- dialog: AttributesMap['dialog'];
1101
- summary: AttributesMap['summary'];
1102
- slot: AttributesMap['slot'];
1103
-
1104
- // Scripting & styles
1105
- script: AttributesMap['script'];
1106
- style: AttributesMap['style'];
1107
-
1108
- // Semantic & phrasing
1109
- figure: AttributesMap['figure'];
1110
- figcaption: AttributesMap['figcaption'];
1111
- blockquote: AttributesMap['blockquote'];
1112
- q: AttributesMap['q'];
1113
-
1114
- // Generic elements
1115
- div: AttributesMap['div'];
1116
- span: AttributesMap['span'];
1117
- address: AttributesMap['address'];
1118
- abbr: AttributesMap['abbr'];
1119
- b: AttributesMap['b'];
1120
- cite: AttributesMap['cite'];
1121
- dl: AttributesMap['dl'];
1122
- dt: AttributesMap['dt'];
1123
- dd: AttributesMap['dd'];
1124
- hr: AttributesMap['hr'];
1125
-
1126
- // SVG
1127
- svg: AttributesMap['svg'];
1128
- // a: SVGAttributesMap['a'];
1129
- animate: SVGAttributesMap['animate'];
1130
- animateMotion: SVGAttributesMap['animateMotion'];
1131
- animateTransform: SVGAttributesMap['animateTransform'];
1132
- circle: SVGAttributesMap['circle'];
1133
- clipPath: SVGAttributesMap['clipPath'];
1134
- defs: SVGAttributesMap['defs'];
1135
- desc: SVGAttributesMap['desc'];
1136
- ellipse: SVGAttributesMap['ellipse'];
1137
- feBlend: SVGAttributesMap['feBlend'];
1138
- feColorMatrix: SVGAttributesMap['feColorMatrix'];
1139
- feComponentTransfer: SVGAttributesMap['feComponentTransfer'];
1140
- feComposite: SVGAttributesMap['feComposite'];
1141
- feConvolveMatrix: SVGAttributesMap['feConvolveMatrix'];
1142
- feDiffuseLighting: SVGAttributesMap['feDiffuseLighting'];
1143
- feDisplacementMap: SVGAttributesMap['feDisplacementMap'];
1144
- feDistantLight: SVGAttributesMap['feDistantLight'];
1145
- feDropShadow: SVGAttributesMap['feDropShadow'];
1146
- feFlood: SVGAttributesMap['feFlood'];
1147
- feFuncA: SVGAttributesMap['feFuncA'];
1148
- feFuncB: SVGAttributesMap['feFuncB'];
1149
- feFuncG: SVGAttributesMap['feFuncG'];
1150
- feFuncR: SVGAttributesMap['feFuncR'];
1151
- feGaussianBlur: SVGAttributesMap['feGaussianBlur'];
1152
- feImage: SVGAttributesMap['feImage'];
1153
- feMerge: SVGAttributesMap['feMerge'];
1154
- feMergeNode: SVGAttributesMap['feMergeNode'];
1155
- feMorphology: SVGAttributesMap['feMorphology'];
1156
- feOffset: SVGAttributesMap['feOffset'];
1157
- fePointLight: SVGAttributesMap['fePointLight'];
1158
- feSpecularLighting: SVGAttributesMap['feSpecularLighting'];
1159
- feSpotLight: SVGAttributesMap['feSpotLight'];
1160
- feTile: SVGAttributesMap['feTile'];
1161
- feTurbulence: SVGAttributesMap['feTurbulence'];
1162
- filter: SVGAttributesMap['filter'];
1163
- foreignObject: SVGAttributesMap['foreignObject'];
1164
- g: SVGAttributesMap['g'];
1165
- image: SVGAttributesMap['image'];
1166
- line: SVGAttributesMap['line'];
1167
- linearGradient: SVGAttributesMap['linearGradient'];
1168
- marker: SVGAttributesMap['marker'];
1169
- mask: SVGAttributesMap['mask'];
1170
- metadata: SVGAttributesMap['metadata'];
1171
- mpath: SVGAttributesMap['mpath'];
1172
- path: SVGAttributesMap['path'];
1173
- pattern: SVGAttributesMap['pattern'];
1174
- polygon: SVGAttributesMap['polygon'];
1175
- polyline: SVGAttributesMap['polyline'];
1176
- radialGradient: SVGAttributesMap['radialGradient'];
1177
- rect: SVGAttributesMap['rect'];
1178
- set: SVGAttributesMap['set'];
1179
- stop: SVGAttributesMap['stop'];
1180
- switch: SVGAttributesMap['switch'];
1181
- symbol: SVGAttributesMap['symbol'];
1182
- text: SVGAttributesMap['text'];
1183
- textPath: SVGAttributesMap['textPath'];
1184
- tspan: SVGAttributesMap['tspan'];
1185
- use: SVGAttributesMap['use'];
1186
- view: SVGAttributesMap['view'];
1187
- }
1188
-
1189
- interface IntrinsicAttributes {
1190
- ref?: KTRef<HTMLElement>;
1191
- 'k-if'?: any;
1192
- children?: KTRawContent;
1193
- }
1194
-
1195
- interface ElementChildrenAttribute {
1196
- children: {};
1197
- }
1198
- }
1199
- }
1200
-
1201
27
  type SingleContent = KTRef<any> | HTMLElement | Element | Node | string | number | boolean | null | undefined;
1202
28
  type KTAvailableContent = SingleContent | KTAvailableContent[];
1203
29
  type KTRawContent = KTAvailableContent | Promise<KTAvailableContent>;
@@ -1210,7 +36,7 @@ interface KTBaseAttribute {
1210
36
  [k: string]: any;
1211
37
 
1212
38
  // # kt-specific attributes
1213
- ref?: KTRef<KTHTMLElement>;
39
+ ref?: KTRef<JSX.Element>;
1214
40
  'k-if'?: any;
1215
41
 
1216
42
  // # normal HTML attributes
@@ -1283,7 +109,7 @@ type HTML<T extends (HTMLTag | SVGTag) & otherstring> = T extends SVGTag ? SVGEl
1283
109
  * ## About
1284
110
  * @package @ktjs/core
1285
111
  * @author Kasukabe Tsumugi <futami16237@gmail.com>
1286
- * @version 0.19.0 (Last Update: 2026.01.31 22:50:55.987)
112
+ * @version 0.20.0 (Last Update: 2026.02.01 00:47:09.995)
1287
113
  * @license MIT
1288
114
  * @link https://github.com/baendlorel/kt.js
1289
115
  * @link https://baendlorel.github.io/ Welcome to my site!
@@ -1292,12 +118,12 @@ type HTML<T extends (HTMLTag | SVGTag) & otherstring> = T extends SVGTag ? SVGEl
1292
118
  */
1293
119
  declare const h: <T extends HTMLTag | SVGTag>(tag: T, attr?: KTRawAttr, content?: KTRawContent) => HTML<T>;
1294
120
 
1295
- type JSXTag = HTMLTag | ((props?: any) => HTMLElement) | ((props?: any) => Promise<HTMLElement>) | ((props?: any) => KTHTMLElement) | ((props?: any) => Promise<KTHTMLElement>);
121
+ type JSXTag = HTMLTag | ((props?: any) => HTMLElement) | ((props?: any) => Promise<HTMLElement>);
1296
122
  /**
1297
123
  * @param tag html tag or function component
1298
124
  * @param props properties/attributes
1299
125
  */
1300
- declare function jsx(tag: JSXTag, props?: KTAttribute): KTHTMLElement;
126
+ declare function jsx(tag: JSXTag, props?: KTAttribute): HTMLElement;
1301
127
  /**
1302
128
  * Fragment support - returns an array of children
1303
129
  * Note: kt.js doesn't have a real Fragment concept,
@@ -1315,21 +141,6 @@ declare const jsxDEV: typeof jsx;
1315
141
  */
1316
142
  declare const jsxs: typeof jsx;
1317
143
 
1318
- /**
1319
- * A helper to create redrawable elements
1320
- * ```tsx
1321
- * export function MyComponent() {
1322
- * let aa = 10;
1323
- * // ...
1324
- * // aa might be changed
1325
- * return createRedrawableNoref(() => <div>{aa}</div>);
1326
- * }
1327
- * ```
1328
- * Then the returned element has a `redraw` method to redraw itself with new values.
1329
- * @param creator a simple creator function that returns an element
1330
- * @returns created element
1331
- */
1332
- declare function createRedrawableNoref<T extends KTHTMLElement>(creator: () => T): T;
1333
144
  /**
1334
145
  * A helper to create redrawable elements
1335
146
  * ```tsx
@@ -1344,6 +155,8 @@ declare function createRedrawableNoref<T extends KTHTMLElement>(creator: () => T
1344
155
  * @param creator a simple creator function that returns an element
1345
156
  * @returns created element's ref
1346
157
  */
1347
- declare function createRedrawable<T extends KTHTMLElement>(creator: () => T): KTRef<T>;
158
+ declare function createRedrawable<T>(creator: () => T): KTRef<T> & {
159
+ redraw: () => T;
160
+ };
1348
161
 
1349
- export { Fragment, h as createElement, createRedrawable, createRedrawableNoref, h, jsx, jsxDEV, jsxs };
162
+ export { Fragment, h as createElement, createRedrawable, h, jsx, jsxDEV, jsxs };