@ktjs/core 0.25.0 → 0.26.2

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.
@@ -7,6 +7,37 @@ type HTMLTag = keyof HTMLElementTagNameMap;
7
7
  type SVGTag = keyof SVGElementTagNameMap;
8
8
  type MathMLTag = keyof MathMLElementTagNameMap;
9
9
 
10
+ declare class KTComputed<T> {
11
+ /**
12
+ * Indicates that this is a KTRef instance
13
+ */
14
+ isKT: true;
15
+ ktType: KTReactiveType;
16
+ private _subscribe;
17
+ constructor(_calculator: () => T, reactives: Array<KTReactive<unknown>>);
18
+ /**
19
+ * If new value and old value are both nodes, the old one will be replaced in the DOM
20
+ */
21
+ get value(): T;
22
+ set value(_newValue: T);
23
+ /**
24
+ * Register a callback when the value changes
25
+ * @param callback (newValue, oldValue) => xxx
26
+ */
27
+ addOnChange(callback: ReactiveChangeHandler<T>): void;
28
+ /**
29
+ * Unregister a callback
30
+ * @param callback (newValue, oldValue) => xxx
31
+ */
32
+ removeOnChange(callback: ReactiveChangeHandler<T>): boolean;
33
+ }
34
+
35
+ type KTReactive<T> = KTRef<T> | KTComputed<T>;
36
+ type KTReactify<T> = T extends any ? KTReactive<T> : never;
37
+ type KTReactifyProps<T extends object> = {
38
+ [K in keyof T]: KTReactify<Exclude<T[K], undefined>> | T[K];
39
+ };
40
+
10
41
  declare const enum KTReactiveType {
11
42
  REF = 1,
12
43
  COMPUTED = 2
@@ -141,7 +172,7 @@ type KTAttribute = KTBaseAttribute & KTPrefixedEventAttribute;
141
172
  * ## About
142
173
  * @package @ktjs/core
143
174
  * @author Kasukabe Tsumugi <futami16237@gmail.com>
144
- * @version 0.25.0 (Last Update: 2026.02.05 16:20:09.244)
175
+ * @version 0.26.2 (Last Update: 2026.02.05 20:44:45.309)
145
176
  * @license MIT
146
177
  * @link https://github.com/baendlorel/kt.js
147
178
  * @link https://baendlorel.github.io/ Welcome to my site!
@@ -192,593 +223,638 @@ declare function createRedrawable<T>(creator: () => T): KTRef<T> & {
192
223
  };
193
224
 
194
225
  // Base events available to all HTML elements
195
- type BaseAttr = KTPrefixedEventAttribute & {
196
- [k: string]: any;
226
+ type BaseAttr = KTPrefixedEventAttribute &
227
+ KTReactifyProps<{
228
+ [k: string]: any;
197
229
 
198
- // # base attributes
199
- class?: string;
200
- className?: string;
201
- style?: string | Partial<CSSStyleDeclaration>;
202
- };
230
+ // # base attributes
231
+ class?: string;
232
+ className?: string;
233
+ style?: string | Partial<CSSStyleDeclaration>;
234
+ }>;
203
235
 
204
236
  interface AttributesMap {
205
237
  // Anchor element
206
- a: BaseAttr & {
207
- download?: string;
208
- href?: string;
209
- hreflang?: string;
210
- ping?: string;
211
- referrerpolicy?:
212
- | 'no-referrer'
213
- | 'no-referrer-when-downgrade'
214
- | 'origin'
215
- | 'origin-when-cross-origin'
216
- | 'same-origin'
217
- | 'strict-origin'
218
- | 'strict-origin-when-cross-origin'
219
- | 'unsafe-url';
220
- rel?: string;
221
- target?: '_self' | '_blank' | '_parent' | '_top' | string;
222
- type?: string;
223
- };
238
+ a: BaseAttr &
239
+ KTReactifyProps<{
240
+ download?: string;
241
+ href?: string;
242
+ hreflang?: string;
243
+ ping?: string;
244
+ referrerpolicy?:
245
+ | 'no-referrer'
246
+ | 'no-referrer-when-downgrade'
247
+ | 'origin'
248
+ | 'origin-when-cross-origin'
249
+ | 'same-origin'
250
+ | 'strict-origin'
251
+ | 'strict-origin-when-cross-origin'
252
+ | 'unsafe-url';
253
+ rel?: string;
254
+ target?: '_self' | '_blank' | '_parent' | '_top' | string;
255
+ type?: string;
256
+ }>;
224
257
 
225
258
  // Area element
226
- area: BaseAttr & {
227
- alt?: string;
228
- coords?: string;
229
- download?: string;
230
- href?: string;
231
- ping?: string;
232
- referrerpolicy?:
233
- | 'no-referrer'
234
- | 'no-referrer-when-downgrade'
235
- | 'origin'
236
- | 'origin-when-cross-origin'
237
- | 'same-origin'
238
- | 'strict-origin'
239
- | 'strict-origin-when-cross-origin'
240
- | 'unsafe-url';
241
- rel?: string;
242
- shape?: 'rect' | 'circle' | 'poly' | 'default';
243
- target?: '_self' | '_blank' | '_parent' | '_top' | string;
244
- };
259
+ area: BaseAttr &
260
+ KTReactifyProps<{
261
+ alt?: string;
262
+ coords?: string;
263
+ download?: string;
264
+ href?: string;
265
+ ping?: string;
266
+ referrerpolicy?:
267
+ | 'no-referrer'
268
+ | 'no-referrer-when-downgrade'
269
+ | 'origin'
270
+ | 'origin-when-cross-origin'
271
+ | 'same-origin'
272
+ | 'strict-origin'
273
+ | 'strict-origin-when-cross-origin'
274
+ | 'unsafe-url';
275
+ rel?: string;
276
+ shape?: 'rect' | 'circle' | 'poly' | 'default';
277
+ target?: '_self' | '_blank' | '_parent' | '_top' | string;
278
+ }>;
245
279
 
246
280
  // Audio element
247
- audio: BaseAttr & {
248
- autoplay?: boolean;
249
- controls?: boolean;
250
- crossorigin?: 'anonymous' | 'use-credentials' | '';
251
- loop?: boolean;
252
- muted?: boolean;
253
- preload?: 'none' | 'metadata' | 'auto' | '';
254
- src?: string;
255
- };
281
+ audio: BaseAttr &
282
+ KTReactifyProps<{
283
+ autoplay?: boolean;
284
+ controls?: boolean;
285
+ crossorigin?: 'anonymous' | 'use-credentials' | '';
286
+ loop?: boolean;
287
+ muted?: boolean;
288
+ preload?: 'none' | 'metadata' | 'auto' | '';
289
+ src?: string;
290
+ }>;
256
291
 
257
292
  // Base element
258
- base: BaseAttr & {
259
- href?: string;
260
- target?: '_self' | '_blank' | '_parent' | '_top' | string;
261
- };
293
+ base: BaseAttr &
294
+ KTReactifyProps<{
295
+ href?: string;
296
+ target?: '_self' | '_blank' | '_parent' | '_top' | string;
297
+ }>;
262
298
 
263
299
  // Body element
264
- body: BaseAttr & {};
300
+ body: BaseAttr & KTReactifyProps<{}>;
265
301
 
266
302
  // BR element
267
- br: BaseAttr & {};
303
+ br: BaseAttr & KTReactifyProps<{}>;
268
304
 
269
305
  // Button element
270
- button: BaseAttr & {
271
- disabled?: boolean;
272
- form?: string;
273
- formaction?: string;
274
- formenctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
275
- formmethod?: 'get' | 'post' | 'dialog';
276
- formnovalidate?: boolean;
277
- formtarget?: '_self' | '_blank' | '_parent' | '_top' | string;
278
- name?: string;
279
- type?: 'submit' | 'reset' | 'button';
280
- value?: string;
281
- };
306
+ button: BaseAttr &
307
+ KTReactifyProps<{
308
+ disabled?: boolean;
309
+ form?: string;
310
+ formaction?: string;
311
+ formenctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
312
+ formmethod?: 'get' | 'post' | 'dialog';
313
+ formnovalidate?: boolean;
314
+ formtarget?: '_self' | '_blank' | '_parent' | '_top' | string;
315
+ name?: string;
316
+ type?: 'submit' | 'reset' | 'button';
317
+ value?: string;
318
+ }>;
282
319
 
283
320
  // Canvas element
284
- canvas: BaseAttr & {
285
- height?: number | string;
286
- width?: number | string;
287
- };
321
+ canvas: BaseAttr &
322
+ KTReactifyProps<{
323
+ height?: number | string;
324
+ width?: number | string;
325
+ }>;
288
326
 
289
327
  // Table caption element
290
- caption: BaseAttr & {};
328
+ caption: BaseAttr & KTReactifyProps<{}>;
291
329
 
292
330
  // Col element
293
- col: BaseAttr & {
294
- span?: number | string;
295
- };
331
+ col: BaseAttr &
332
+ KTReactifyProps<{
333
+ span?: number | string;
334
+ }>;
296
335
 
297
336
  // Colgroup element
298
- colgroup: BaseAttr & {
299
- span?: number | string;
300
- };
337
+ colgroup: BaseAttr &
338
+ KTReactifyProps<{
339
+ span?: number | string;
340
+ }>;
301
341
 
302
342
  // Data element
303
- data: BaseAttr & {
304
- value?: string;
305
- };
343
+ data: BaseAttr &
344
+ KTReactifyProps<{
345
+ value?: string;
346
+ }>;
306
347
 
307
348
  // Datalist element
308
- datalist: BaseAttr & {};
349
+ datalist: BaseAttr & KTReactifyProps<{}>;
309
350
 
310
351
  // Del element
311
- del: BaseAttr & {
312
- cite?: string;
313
- datetime?: string;
314
- };
352
+ del: BaseAttr &
353
+ KTReactifyProps<{
354
+ cite?: string;
355
+ datetime?: string;
356
+ }>;
315
357
 
316
358
  // Details element
317
- details: BaseAttr & {
318
- open?: boolean;
319
- };
359
+ details: BaseAttr &
360
+ KTReactifyProps<{
361
+ open?: boolean;
362
+ }>;
320
363
 
321
364
  // Dialog element
322
- dialog: BaseAttr & {
323
- open?: boolean;
324
- };
365
+ dialog: BaseAttr &
366
+ KTReactifyProps<{
367
+ open?: boolean;
368
+ }>;
325
369
 
326
370
  // Embed element
327
- embed: BaseAttr & {
328
- height?: number | string;
329
- src?: string;
330
- type?: string;
331
- width?: number | string;
332
- };
371
+ embed: BaseAttr &
372
+ KTReactifyProps<{
373
+ height?: number | string;
374
+ src?: string;
375
+ type?: string;
376
+ width?: number | string;
377
+ }>;
333
378
 
334
379
  // Fieldset element
335
- fieldset: BaseAttr & {
336
- disabled?: boolean;
337
- form?: string;
338
- name?: string;
339
- };
380
+ fieldset: BaseAttr &
381
+ KTReactifyProps<{
382
+ disabled?: boolean;
383
+ form?: string;
384
+ name?: string;
385
+ }>;
340
386
 
341
387
  // Form element
342
- form: BaseAttr & {
343
- 'accept-charset'?: string;
344
- action?: string;
345
- autocomplete?: 'on' | 'off';
346
- enctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
347
- method?: 'POST' | 'GET' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS' | 'CONNECT' | 'TRACE' | otherstring;
348
-
349
- name?: string;
350
- novalidate?: boolean;
351
- target?: '_self' | '_blank' | '_parent' | '_top' | string;
352
- };
388
+ form: BaseAttr &
389
+ KTReactifyProps<{
390
+ 'accept-charset'?: string;
391
+ action?: string;
392
+ autocomplete?: 'on' | 'off';
393
+ enctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
394
+ method?: 'POST' | 'GET' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS' | 'CONNECT' | 'TRACE' | otherstring;
395
+
396
+ name?: string;
397
+ novalidate?: boolean;
398
+ target?: '_self' | '_blank' | '_parent' | '_top' | string;
399
+ }>;
353
400
 
354
401
  // Head element
355
- head: BaseAttr & {};
402
+ head: BaseAttr & KTReactifyProps<{}>;
356
403
 
357
404
  // HR element
358
- hr: BaseAttr & {};
405
+ hr: BaseAttr & KTReactifyProps<{}>;
359
406
 
360
407
  // HTML element
361
- html: BaseAttr & {};
408
+ html: BaseAttr & KTReactifyProps<{}>;
362
409
 
363
410
  // IFrame element
364
- iframe: BaseAttr & {
365
- allow?: string;
366
- allowfullscreen?: boolean;
367
- allowpaymentrequest?: boolean;
368
- height?: number | string;
369
- loading?: 'eager' | 'lazy';
370
- name?: string;
371
- referrerpolicy?:
372
- | 'no-referrer'
373
- | 'no-referrer-when-downgrade'
374
- | 'origin'
375
- | 'origin-when-cross-origin'
376
- | 'same-origin'
377
- | 'strict-origin'
378
- | 'strict-origin-when-cross-origin'
379
- | 'unsafe-url';
380
- sandbox?: string;
381
- src?: string;
382
- srcdoc?: string;
383
- width?: number | string;
384
- };
411
+ iframe: BaseAttr &
412
+ KTReactifyProps<{
413
+ allow?: string;
414
+ allowfullscreen?: boolean;
415
+ allowpaymentrequest?: boolean;
416
+ height?: number | string;
417
+ loading?: 'eager' | 'lazy';
418
+ name?: string;
419
+ referrerpolicy?:
420
+ | 'no-referrer'
421
+ | 'no-referrer-when-downgrade'
422
+ | 'origin'
423
+ | 'origin-when-cross-origin'
424
+ | 'same-origin'
425
+ | 'strict-origin'
426
+ | 'strict-origin-when-cross-origin'
427
+ | 'unsafe-url';
428
+ sandbox?: string;
429
+ src?: string;
430
+ srcdoc?: string;
431
+ width?: number | string;
432
+ }>;
385
433
 
386
434
  // Image element
387
- img: BaseAttr & {
388
- alt?: string;
389
- crossorigin?: 'anonymous' | 'use-credentials' | '';
390
- decoding?: 'sync' | 'async' | 'auto';
391
- height?: number | string;
392
- ismap?: boolean;
393
- loading?: 'eager' | 'lazy';
394
- referrerpolicy?:
395
- | 'no-referrer'
396
- | 'no-referrer-when-downgrade'
397
- | 'origin'
398
- | 'origin-when-cross-origin'
399
- | 'same-origin'
400
- | 'strict-origin'
401
- | 'strict-origin-when-cross-origin'
402
- | 'unsafe-url';
403
- sizes?: string;
404
- src?: string;
405
- srcset?: string;
406
- usemap?: string;
407
- width?: number | string;
408
- };
435
+ img: BaseAttr &
436
+ KTReactifyProps<{
437
+ alt?: string;
438
+ crossorigin?: 'anonymous' | 'use-credentials' | '';
439
+ decoding?: 'sync' | 'async' | 'auto';
440
+ height?: number | string;
441
+ ismap?: boolean;
442
+ loading?: 'eager' | 'lazy';
443
+ referrerpolicy?:
444
+ | 'no-referrer'
445
+ | 'no-referrer-when-downgrade'
446
+ | 'origin'
447
+ | 'origin-when-cross-origin'
448
+ | 'same-origin'
449
+ | 'strict-origin'
450
+ | 'strict-origin-when-cross-origin'
451
+ | 'unsafe-url';
452
+ sizes?: string;
453
+ src?: string;
454
+ srcset?: string;
455
+ usemap?: string;
456
+ width?: number | string;
457
+ }>;
409
458
 
410
459
  // Input element
411
- input: BaseAttr & {
412
- accept?: string;
413
- alt?: string;
414
- autocomplete?: string;
415
- checked?: boolean;
416
- dirname?: string;
417
- disabled?: boolean;
418
- form?: string;
419
- formaction?: string;
420
- formenctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
421
- formmethod?: 'get' | 'post';
422
- formnovalidate?: boolean;
423
- formtarget?: '_self' | '_blank' | '_parent' | '_top' | string;
424
- height?: number | string;
425
- list?: string;
426
- max?: number | string;
427
- maxlength?: number | string;
428
- min?: number | string;
429
- minlength?: number | string;
430
- multiple?: boolean;
431
- name?: string;
432
- pattern?: string;
433
- placeholder?: string;
434
- readonly?: boolean;
435
- required?: boolean;
436
- size?: number | string;
437
- src?: string;
438
- step?: number | string;
439
- type?:
440
- | 'button'
441
- | 'checkbox'
442
- | 'color'
443
- | 'date'
444
- | 'datetime-local'
445
- | 'email'
446
- | 'file'
447
- | 'hidden'
448
- | 'image'
449
- | 'month'
450
- | 'number'
451
- | 'password'
452
- | 'radio'
453
- | 'range'
454
- | 'reset'
455
- | 'search'
456
- | 'submit'
457
- | 'tel'
458
- | 'text'
459
- | 'time'
460
- | 'url'
461
- | 'week';
462
- value?: string;
463
- width?: number | string;
464
- };
460
+ input: BaseAttr &
461
+ KTReactifyProps<{
462
+ accept?: string;
463
+ alt?: string;
464
+ autocomplete?: string;
465
+ checked?: boolean;
466
+ dirname?: string;
467
+ disabled?: boolean;
468
+ form?: string;
469
+ formaction?: string;
470
+ formenctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
471
+ formmethod?: 'get' | 'post';
472
+ formnovalidate?: boolean;
473
+ formtarget?: '_self' | '_blank' | '_parent' | '_top' | string;
474
+ height?: number | string;
475
+ list?: string;
476
+ max?: number | string;
477
+ maxlength?: number | string;
478
+ min?: number | string;
479
+ minlength?: number | string;
480
+ multiple?: boolean;
481
+ name?: string;
482
+ pattern?: string;
483
+ placeholder?: string;
484
+ readonly?: boolean;
485
+ required?: boolean;
486
+ size?: number | string;
487
+ src?: string;
488
+ step?: number | string;
489
+ type?:
490
+ | 'button'
491
+ | 'checkbox'
492
+ | 'color'
493
+ | 'date'
494
+ | 'datetime-local'
495
+ | 'email'
496
+ | 'file'
497
+ | 'hidden'
498
+ | 'image'
499
+ | 'month'
500
+ | 'number'
501
+ | 'password'
502
+ | 'radio'
503
+ | 'range'
504
+ | 'reset'
505
+ | 'search'
506
+ | 'submit'
507
+ | 'tel'
508
+ | 'text'
509
+ | 'time'
510
+ | 'url'
511
+ | 'week';
512
+ value?: string;
513
+ width?: number | string;
514
+ }>;
465
515
 
466
516
  // Ins element
467
- ins: BaseAttr & {
468
- cite?: string;
469
- datetime?: string;
470
- };
517
+ ins: BaseAttr &
518
+ KTReactifyProps<{
519
+ cite?: string;
520
+ datetime?: string;
521
+ }>;
471
522
 
472
523
  // Label element
473
- label: BaseAttr & {
474
- for?: string;
475
- };
524
+ label: BaseAttr &
525
+ KTReactifyProps<{
526
+ for?: string;
527
+ }>;
476
528
 
477
529
  // Legend element
478
- legend: BaseAttr & {};
530
+ legend: BaseAttr & KTReactifyProps<{}>;
479
531
 
480
532
  // LI element
481
- li: BaseAttr & {
482
- value?: number | string;
483
- };
533
+ li: BaseAttr &
534
+ KTReactifyProps<{
535
+ value?: number | string;
536
+ }>;
484
537
 
485
538
  // Link element
486
- link: BaseAttr & {
487
- as?: string;
488
- crossorigin?: 'anonymous' | 'use-credentials' | '';
489
- disabled?: boolean;
490
- href?: string;
491
- hreflang?: string;
492
- imagesizes?: string;
493
- imagesrcset?: string;
494
- integrity?: string;
495
- media?: string;
496
- referrerpolicy?:
497
- | 'no-referrer'
498
- | 'no-referrer-when-downgrade'
499
- | 'origin'
500
- | 'origin-when-cross-origin'
501
- | 'same-origin'
502
- | 'strict-origin'
503
- | 'strict-origin-when-cross-origin'
504
- | 'unsafe-url';
505
- rel?: string;
506
- sizes?: string;
507
- type?: string;
508
- };
539
+ link: BaseAttr &
540
+ KTReactifyProps<{
541
+ as?: string;
542
+ crossorigin?: 'anonymous' | 'use-credentials' | '';
543
+ disabled?: boolean;
544
+ href?: string;
545
+ hreflang?: string;
546
+ imagesizes?: string;
547
+ imagesrcset?: string;
548
+ integrity?: string;
549
+ media?: string;
550
+ referrerpolicy?:
551
+ | 'no-referrer'
552
+ | 'no-referrer-when-downgrade'
553
+ | 'origin'
554
+ | 'origin-when-cross-origin'
555
+ | 'same-origin'
556
+ | 'strict-origin'
557
+ | 'strict-origin-when-cross-origin'
558
+ | 'unsafe-url';
559
+ rel?: string;
560
+ sizes?: string;
561
+ type?: string;
562
+ }>;
509
563
 
510
564
  // Map element
511
- map: BaseAttr & {
512
- name?: string;
513
- };
565
+ map: BaseAttr &
566
+ KTReactifyProps<{
567
+ name?: string;
568
+ }>;
514
569
 
515
570
  // Menu element
516
- menu: BaseAttr & {};
571
+ menu: BaseAttr & KTReactifyProps<{}>;
517
572
 
518
573
  // Meta element
519
- meta: BaseAttr & {
520
- charset?: string;
521
- content?: string;
522
- 'http-equiv'?: 'content-security-policy' | 'content-type' | 'default-style' | 'refresh' | string;
523
- name?: string;
524
- };
574
+ meta: BaseAttr &
575
+ KTReactifyProps<{
576
+ charset?: string;
577
+ content?: string;
578
+ 'http-equiv'?: 'content-security-policy' | 'content-type' | 'default-style' | 'refresh' | string;
579
+ name?: string;
580
+ }>;
525
581
 
526
582
  // Meter element
527
- meter: BaseAttr & {
528
- form?: string;
529
- high?: number | string;
530
- low?: number | string;
531
- max?: number | string;
532
- min?: number | string;
533
- optimum?: number | string;
534
- value?: number | string;
535
- };
583
+ meter: BaseAttr &
584
+ KTReactifyProps<{
585
+ form?: string;
586
+ high?: number | string;
587
+ low?: number | string;
588
+ max?: number | string;
589
+ min?: number | string;
590
+ optimum?: number | string;
591
+ value?: number | string;
592
+ }>;
536
593
 
537
594
  // Object element
538
- object: BaseAttr & {
539
- data?: string;
540
- form?: string;
541
- height?: number | string;
542
- name?: string;
543
- type?: string;
544
- usemap?: string;
545
- width?: number | string;
546
- };
595
+ object: BaseAttr &
596
+ KTReactifyProps<{
597
+ data?: string;
598
+ form?: string;
599
+ height?: number | string;
600
+ name?: string;
601
+ type?: string;
602
+ usemap?: string;
603
+ width?: number | string;
604
+ }>;
547
605
 
548
606
  // OL element
549
- ol: BaseAttr & {
550
- reversed?: boolean;
551
- start?: number | string;
552
- type?: '1' | 'a' | 'A' | 'i' | 'I';
553
- };
607
+ ol: BaseAttr &
608
+ KTReactifyProps<{
609
+ reversed?: boolean;
610
+ start?: number | string;
611
+ type?: '1' | 'a' | 'A' | 'i' | 'I';
612
+ }>;
554
613
 
555
614
  // Optgroup element
556
- optgroup: BaseAttr & {
557
- disabled?: boolean;
558
- label?: string;
559
- };
615
+ optgroup: BaseAttr &
616
+ KTReactifyProps<{
617
+ disabled?: boolean;
618
+ label?: string;
619
+ }>;
560
620
 
561
621
  // Option element
562
- option: BaseAttr & {
563
- disabled?: boolean;
564
- label?: string;
565
- selected?: boolean;
566
- value?: string;
567
- };
622
+ option: BaseAttr &
623
+ KTReactifyProps<{
624
+ disabled?: boolean;
625
+ label?: string;
626
+ selected?: boolean;
627
+ value?: string;
628
+ }>;
568
629
 
569
630
  // Output element
570
- output: BaseAttr & {
571
- for?: string;
572
- form?: string;
573
- name?: string;
574
- };
631
+ output: BaseAttr &
632
+ KTReactifyProps<{
633
+ for?: string;
634
+ form?: string;
635
+ name?: string;
636
+ }>;
575
637
 
576
638
  // Picture element
577
- picture: BaseAttr & {};
639
+ picture: BaseAttr & KTReactifyProps<{}>;
578
640
 
579
641
  // Pre element
580
- pre: BaseAttr & {};
642
+ pre: BaseAttr & KTReactifyProps<{}>;
581
643
 
582
644
  // Progress element
583
- progress: BaseAttr & {
584
- max?: number | string;
585
- value?: number | string;
586
- };
645
+ progress: BaseAttr &
646
+ KTReactifyProps<{
647
+ max?: number | string;
648
+ value?: number | string;
649
+ }>;
587
650
 
588
651
  // Quote element (q and blockquote)
589
- q: BaseAttr & {
590
- cite?: string;
591
- };
652
+ q: BaseAttr &
653
+ KTReactifyProps<{
654
+ cite?: string;
655
+ }>;
592
656
 
593
- blockquote: BaseAttr & {
594
- cite?: string;
595
- };
657
+ blockquote: BaseAttr &
658
+ KTReactifyProps<{
659
+ cite?: string;
660
+ }>;
596
661
 
597
662
  // Script element
598
- script: BaseAttr & {
599
- async?: boolean;
600
- crossorigin?: 'anonymous' | 'use-credentials' | '';
601
- defer?: boolean;
602
- integrity?: string;
603
- nomodule?: boolean;
604
- referrerpolicy?:
605
- | 'no-referrer'
606
- | 'no-referrer-when-downgrade'
607
- | 'origin'
608
- | 'origin-when-cross-origin'
609
- | 'same-origin'
610
- | 'strict-origin'
611
- | 'strict-origin-when-cross-origin'
612
- | 'unsafe-url';
613
- src?: string;
614
- type?: string;
615
- };
663
+ script: BaseAttr &
664
+ KTReactifyProps<{
665
+ async?: boolean;
666
+ crossorigin?: 'anonymous' | 'use-credentials' | '';
667
+ defer?: boolean;
668
+ integrity?: string;
669
+ nomodule?: boolean;
670
+ referrerpolicy?:
671
+ | 'no-referrer'
672
+ | 'no-referrer-when-downgrade'
673
+ | 'origin'
674
+ | 'origin-when-cross-origin'
675
+ | 'same-origin'
676
+ | 'strict-origin'
677
+ | 'strict-origin-when-cross-origin'
678
+ | 'unsafe-url';
679
+ src?: string;
680
+ type?: string;
681
+ }>;
616
682
 
617
683
  // Select element
618
- select: BaseAttr & {
619
- autocomplete?: string;
620
- disabled?: boolean;
621
- form?: string;
622
- multiple?: boolean;
623
- name?: string;
624
- required?: boolean;
625
- size?: number | string;
626
- };
684
+ select: BaseAttr &
685
+ KTReactifyProps<{
686
+ autocomplete?: string;
687
+ disabled?: boolean;
688
+ form?: string;
689
+ multiple?: boolean;
690
+ name?: string;
691
+ required?: boolean;
692
+ size?: number | string;
693
+ }>;
627
694
 
628
695
  // Slot element
629
- slot: BaseAttr & {
630
- name?: string;
631
- };
696
+ slot: BaseAttr &
697
+ KTReactifyProps<{
698
+ name?: string;
699
+ }>;
632
700
 
633
701
  // Source element
634
- source: BaseAttr & {
635
- height?: number | string;
636
- media?: string;
637
- sizes?: string;
638
- src?: string;
639
- srcset?: string;
640
- type?: string;
641
- width?: number | string;
642
- };
702
+ source: BaseAttr &
703
+ KTReactifyProps<{
704
+ height?: number | string;
705
+ media?: string;
706
+ sizes?: string;
707
+ src?: string;
708
+ srcset?: string;
709
+ type?: string;
710
+ width?: number | string;
711
+ }>;
643
712
 
644
713
  // Style element
645
- style: BaseAttr & {
646
- media?: string;
647
- };
714
+ style: BaseAttr &
715
+ KTReactifyProps<{
716
+ media?: string;
717
+ }>;
648
718
 
649
719
  // Table element
650
- table: BaseAttr & {};
720
+ table: BaseAttr & KTReactifyProps<{}>;
651
721
 
652
722
  // Table body/footer/header elements
653
- tbody: BaseAttr & {};
723
+ tbody: BaseAttr & KTReactifyProps<{}>;
654
724
 
655
- tfoot: BaseAttr & {};
725
+ tfoot: BaseAttr & KTReactifyProps<{}>;
656
726
 
657
- thead: BaseAttr & {};
727
+ thead: BaseAttr & KTReactifyProps<{}>;
658
728
 
659
729
  // Table cell elements
660
- td: BaseAttr & {
661
- colspan?: number | string;
662
- headers?: string;
663
- rowspan?: number | string;
664
- };
665
-
666
- th: BaseAttr & {
667
- abbr?: string;
668
- colspan?: number | string;
669
- headers?: string;
670
- rowspan?: number | string;
671
- scope?: 'row' | 'col' | 'rowgroup' | 'colgroup';
672
- };
730
+ td: BaseAttr &
731
+ KTReactifyProps<{
732
+ colspan?: number | string;
733
+ headers?: string;
734
+ rowspan?: number | string;
735
+ }>;
736
+
737
+ th: BaseAttr &
738
+ KTReactifyProps<{
739
+ abbr?: string;
740
+ colspan?: number | string;
741
+ headers?: string;
742
+ rowspan?: number | string;
743
+ scope?: 'row' | 'col' | 'rowgroup' | 'colgroup';
744
+ }>;
673
745
 
674
746
  // Template element
675
- template: BaseAttr & {};
747
+ template: BaseAttr & KTReactifyProps<{}>;
676
748
 
677
749
  // Textarea element
678
- textarea: BaseAttr & {
679
- autocomplete?: string;
680
- cols?: number | string;
681
- dirname?: string;
682
- disabled?: boolean;
683
- form?: string;
684
- maxlength?: number | string;
685
- minlength?: number | string;
686
- name?: string;
687
- placeholder?: string;
688
- readonly?: boolean;
689
- required?: boolean;
690
- rows?: number | string;
691
- wrap?: 'hard' | 'soft' | 'off';
692
- };
750
+ textarea: BaseAttr &
751
+ KTReactifyProps<{
752
+ autocomplete?: string;
753
+ cols?: number | string;
754
+ dirname?: string;
755
+ disabled?: boolean;
756
+ form?: string;
757
+ maxlength?: number | string;
758
+ minlength?: number | string;
759
+ name?: string;
760
+ placeholder?: string;
761
+ readonly?: boolean;
762
+ required?: boolean;
763
+ rows?: number | string;
764
+ wrap?: 'hard' | 'soft' | 'off';
765
+ }>;
693
766
 
694
767
  // Time element
695
- time: BaseAttr & {
696
- datetime?: string;
697
- };
768
+ time: BaseAttr &
769
+ KTReactifyProps<{
770
+ datetime?: string;
771
+ }>;
698
772
 
699
773
  // Title element
700
- title: BaseAttr & {};
774
+ title: BaseAttr & KTReactifyProps<{}>;
701
775
 
702
776
  // TR element
703
- tr: BaseAttr & {};
777
+ tr: BaseAttr & KTReactifyProps<{}>;
704
778
 
705
779
  // Track element
706
- track: BaseAttr & {
707
- default?: boolean;
708
- kind?: 'subtitles' | 'captions' | 'descriptions' | 'chapters' | 'metadata';
709
- label?: string;
710
- src?: string;
711
- srclang?: string;
712
- };
780
+ track: BaseAttr &
781
+ KTReactifyProps<{
782
+ default?: boolean;
783
+ kind?: 'subtitles' | 'captions' | 'descriptions' | 'chapters' | 'metadata';
784
+ label?: string;
785
+ src?: string;
786
+ srclang?: string;
787
+ }>;
713
788
 
714
789
  // UL element
715
- ul: BaseAttr & {};
790
+ ul: BaseAttr & KTReactifyProps<{}>;
716
791
 
717
792
  // Video element
718
- video: BaseAttr & {
719
- autoplay?: boolean;
720
- controls?: boolean;
721
- crossorigin?: 'anonymous' | 'use-credentials' | '';
722
- height?: number | string;
723
- loop?: boolean;
724
- muted?: boolean;
725
- playsinline?: boolean;
726
- poster?: string;
727
- preload?: 'none' | 'metadata' | 'auto' | '';
728
- src?: string;
729
- width?: number | string;
730
- };
793
+ video: BaseAttr &
794
+ KTReactifyProps<{
795
+ autoplay?: boolean;
796
+ controls?: boolean;
797
+ crossorigin?: 'anonymous' | 'use-credentials' | '';
798
+ height?: number | string;
799
+ loop?: boolean;
800
+ muted?: boolean;
801
+ playsinline?: boolean;
802
+ poster?: string;
803
+ preload?: 'none' | 'metadata' | 'auto' | '';
804
+ src?: string;
805
+ width?: number | string;
806
+ }>;
731
807
 
732
808
  // Generic HTMLElement (no specific attributes beyond BaseEvent)
733
- abbr: BaseAttr & {};
734
- address: BaseAttr & {};
735
- article: BaseAttr & {};
736
- aside: BaseAttr & {};
737
- b: BaseAttr & {};
738
- bdi: BaseAttr & {};
739
- bdo: BaseAttr & {};
740
- cite: BaseAttr & {};
741
- code: BaseAttr & {};
742
- dd: BaseAttr & {};
743
- dfn: BaseAttr & {};
744
- div: BaseAttr & {};
745
- dl: BaseAttr & {};
746
- dt: BaseAttr & {};
747
- em: BaseAttr & {};
748
- figcaption: BaseAttr & {};
749
- figure: BaseAttr & {};
750
- footer: BaseAttr & {};
751
- h1: BaseAttr & {};
752
- h2: BaseAttr & {};
753
- h3: BaseAttr & {};
754
- h4: BaseAttr & {};
755
- h5: BaseAttr & {};
756
- h6: BaseAttr & {};
757
- header: BaseAttr & {};
758
- hgroup: BaseAttr & {};
759
- i: BaseAttr & {};
760
- kbd: BaseAttr & {};
761
- main: BaseAttr & {};
762
- mark: BaseAttr & {};
763
- nav: BaseAttr & {};
764
- noscript: BaseAttr & {};
765
- p: BaseAttr & {};
766
- rp: BaseAttr & {};
767
- rt: BaseAttr & {};
768
- ruby: BaseAttr & {};
769
- s: BaseAttr & {};
770
- samp: BaseAttr & {};
771
- search: BaseAttr & {};
772
- section: BaseAttr & {};
773
- small: BaseAttr & {};
774
- span: BaseAttr & {};
775
- strong: BaseAttr & {};
776
- sub: BaseAttr & {};
777
- summary: BaseAttr & {};
778
- sup: BaseAttr & {};
779
- u: BaseAttr & {};
780
- var: BaseAttr & {};
781
- wbr: BaseAttr & {};
809
+ abbr: BaseAttr & KTReactifyProps<{}>;
810
+ address: BaseAttr & KTReactifyProps<{}>;
811
+ article: BaseAttr & KTReactifyProps<{}>;
812
+ aside: BaseAttr & KTReactifyProps<{}>;
813
+ b: BaseAttr & KTReactifyProps<{}>;
814
+ bdi: BaseAttr & KTReactifyProps<{}>;
815
+ bdo: BaseAttr & KTReactifyProps<{}>;
816
+ cite: BaseAttr & KTReactifyProps<{}>;
817
+ code: BaseAttr & KTReactifyProps<{}>;
818
+ dd: BaseAttr & KTReactifyProps<{}>;
819
+ dfn: BaseAttr & KTReactifyProps<{}>;
820
+ div: BaseAttr & KTReactifyProps<{}>;
821
+ dl: BaseAttr & KTReactifyProps<{}>;
822
+ dt: BaseAttr & KTReactifyProps<{}>;
823
+ em: BaseAttr & KTReactifyProps<{}>;
824
+ figcaption: BaseAttr & KTReactifyProps<{}>;
825
+ figure: BaseAttr & KTReactifyProps<{}>;
826
+ footer: BaseAttr & KTReactifyProps<{}>;
827
+ h1: BaseAttr & KTReactifyProps<{}>;
828
+ h2: BaseAttr & KTReactifyProps<{}>;
829
+ h3: BaseAttr & KTReactifyProps<{}>;
830
+ h4: BaseAttr & KTReactifyProps<{}>;
831
+ h5: BaseAttr & KTReactifyProps<{}>;
832
+ h6: BaseAttr & KTReactifyProps<{}>;
833
+ header: BaseAttr & KTReactifyProps<{}>;
834
+ hgroup: BaseAttr & KTReactifyProps<{}>;
835
+ i: BaseAttr & KTReactifyProps<{}>;
836
+ kbd: BaseAttr & KTReactifyProps<{}>;
837
+ main: BaseAttr & KTReactifyProps<{}>;
838
+ mark: BaseAttr & KTReactifyProps<{}>;
839
+ nav: BaseAttr & KTReactifyProps<{}>;
840
+ noscript: BaseAttr & KTReactifyProps<{}>;
841
+ p: BaseAttr & KTReactifyProps<{}>;
842
+ rp: BaseAttr & KTReactifyProps<{}>;
843
+ rt: BaseAttr & KTReactifyProps<{}>;
844
+ ruby: BaseAttr & KTReactifyProps<{}>;
845
+ s: BaseAttr & KTReactifyProps<{}>;
846
+ samp: BaseAttr & KTReactifyProps<{}>;
847
+ search: BaseAttr & KTReactifyProps<{}>;
848
+ section: BaseAttr & KTReactifyProps<{}>;
849
+ small: BaseAttr & KTReactifyProps<{}>;
850
+ span: BaseAttr & KTReactifyProps<{}>;
851
+ strong: BaseAttr & KTReactifyProps<{}>;
852
+ sub: BaseAttr & KTReactifyProps<{}>;
853
+ summary: BaseAttr & KTReactifyProps<{}>;
854
+ sup: BaseAttr & KTReactifyProps<{}>;
855
+ u: BaseAttr & KTReactifyProps<{}>;
856
+ var: BaseAttr & KTReactifyProps<{}>;
857
+ wbr: BaseAttr & KTReactifyProps<{}>;
782
858
 
783
859
  svg: BaseAttr & {
784
860
  class?: string;