@ktjs/core 0.29.12 → 0.30.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.
package/README.md CHANGED
@@ -1 +1,21 @@
1
- [See Readme](../../README.md)
1
+ # KT.js
2
+
3
+ [![npm version](https://img.shields.io/npm/v/kt.js.svg)](https://www.npmjs.com/package/kt.js)
4
+ [![npm downloads](https://img.shields.io/npm/dm/kt.js.svg)](https://www.npmjs.com/package/kt.js)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+
7
+ <p align="center">
8
+ <a href="https://baendlorel.github.io/kt.js/">
9
+ <img src="https://raw.githubusercontent.com/baendlorel/kt.js/refs/heads/main/assets/ktjs-0.0.1.svg" width="240px" alt="KT.js logo" />
10
+ </a>
11
+ </p>
12
+
13
+ ## Intro
14
+
15
+ <p align="center"><strong>Visit KT.js: <a href="https://baendlorel.github.io/kt.js/">https://baendlorel.github.io/kt.js/</a></strong></p>
16
+
17
+ kt.js is a simple framework with a tiny runtime that renders real DOM directly (no virtual DOM), uses explicit reactivity variables and gives you manual control over refs, bindings, and redraw timing.
18
+
19
+ ## Philosophy
20
+
21
+ KT.js focuses on one principle: keep direct control of the DOM and avoid unnecessary repainting.
package/dist/index.d.ts CHANGED
@@ -1480,5 +1480,7 @@ interface KTForProps<T> {
1480
1480
  */
1481
1481
  declare function KTFor<T>(props: KTForProps<T>): KTForElement;
1482
1482
 
1483
- export { $initRef, $modelOrRef, Fragment, JSX, KTAsync, KTComputed, KTFor, KTReactive, KTReactiveType, KTRef, computed, h as createElement, createRedrawable, dereactive, effect, h, isComputed, isKT, isRef, jsx, jsxDEV, jsxs, ref, surfaceRef, toReactive, toRef };
1484
- export type { EventHandler, KTAttribute, KTForElement, KTForProps, KTPrefixedEventAttribute, KTRawAttr, KTRawContent, KTRawContents, KTReactify, KTReactifyObject, KTReactifyProps, KTSurfaceRef, ReactiveChangeHandler };
1483
+ declare function KTConditional(condition: boolean | KTReactive<boolean>, tagIf: JSXTag, propsIf: KTAttribute, tagElse?: JSXTag, propsElse?: KTAttribute): JSX.Element;
1484
+
1485
+ export { $initRef, $modelOrRef, Fragment, JSX, KTAsync, KTComputed, KTConditional, KTFor, KTReactive, KTReactiveType, KTRef, computed, h as createElement, createRedrawable, dereactive, effect, h, isComputed, isKT, isRef, jsx, jsxDEV, jsxs, ref, surfaceRef, toReactive, toRef };
1486
+ export type { EventHandler, HTML, KTAttribute, KTForElement, KTForProps, KTPrefixedEventAttribute, KTRawAttr, KTRawContent, KTRawContents, KTReactify, KTReactifyObject, KTReactifyProps, KTSurfaceRef, ReactiveChangeHandler };
package/dist/index.mjs CHANGED
@@ -93,8 +93,10 @@ function attrIsObject(element, attr) {
93
93
  }
94
94
  for (const key in attr) {
95
95
  // & Arranged in order of usage frequency
96
- if (key === 'k-if' ||
97
- key === 'k-model' ||
96
+ if (
97
+ // key === 'k-if' ||
98
+ // key === 'k-else' ||
99
+ key === 'k-model' ||
98
100
  key === 'k-for' ||
99
101
  key === 'k-key' ||
100
102
  key === 'ref' ||
@@ -102,25 +104,25 @@ function attrIsObject(element, attr) {
102
104
  key === 'className' ||
103
105
  key === 'style' ||
104
106
  key === 'children' ||
105
- key === 'k-html' ||
106
- key === 'k-else') {
107
+ key === 'k-html') {
107
108
  continue;
108
109
  }
109
110
  const o = attr[key];
110
111
  // normal event handler
111
112
  if (key.startsWith('on:')) {
112
- element.addEventListener(key.slice(3), o); // chop off the `on:`
113
+ if (o) {
114
+ element.addEventListener(key.slice(3), o); // chop off the `on:`
115
+ }
116
+ continue;
113
117
  }
114
118
  // normal attributes
119
+ const handler = handlers[key] || defaultHandler;
120
+ if (isKT(o)) {
121
+ handler(element, key, o.value);
122
+ o.addOnChange((v) => handler(element, key, v));
123
+ }
115
124
  else {
116
- const handler = handlers[key] || defaultHandler;
117
- if (isKT(o)) {
118
- handler(element, key, o.value);
119
- o.addOnChange((v) => handler(element, key, v));
120
- }
121
- else {
122
- handler(element, key, o);
123
- }
125
+ handler(element, key, o);
124
126
  }
125
127
  }
126
128
  }
@@ -132,7 +134,7 @@ function applyAttr(element, attr) {
132
134
  attrIsObject(element, attr);
133
135
  }
134
136
  else {
135
- $throw('attr must be an object.');
137
+ throw new Error('[@ktjs/core error] attr must be an object.');
136
138
  }
137
139
  }
138
140
 
@@ -255,7 +257,7 @@ class KTRef {
255
257
  */
256
258
  mutate(mutator) {
257
259
  if (typeof mutator !== 'function') {
258
- $throw('KTRef.mutate: mutator must be a function');
260
+ throw new Error('[@ktjs/core error] KTRef.mutate: mutator must be a function');
259
261
  }
260
262
  const oldValue = this._value;
261
263
  const result = mutator(this._value);
@@ -268,7 +270,7 @@ class KTRef {
268
270
  */
269
271
  addOnChange(callback) {
270
272
  if (typeof callback !== 'function') {
271
- $throw('KTRef.addOnChange: callback must be a function');
273
+ throw new Error('[@ktjs/core error] KTRef.addOnChange: callback must be a function');
272
274
  }
273
275
  this._onChanges.push(callback);
274
276
  }
@@ -304,7 +306,7 @@ const toRef = (o) => {
304
306
  return o;
305
307
  }
306
308
  else if (isComputed(o)) {
307
- $throw('Computed values cannot be used as KTRef.');
309
+ throw new Error('[@ktjs/core error] Computed values cannot be used as KTRef.');
308
310
  }
309
311
  else {
310
312
  return ref(o);
@@ -346,7 +348,7 @@ const $modelOrRef = (props, defaultValue) => {
346
348
  return kmodel;
347
349
  }
348
350
  else {
349
- $throw(`k-model data must be a KTRef object, please use 'ref(...)' to wrap it.`);
351
+ throw new Error(`[@ktjs/core error] k-model data must be a KTRef object, please use 'ref(...)' to wrap it.`);
350
352
  }
351
353
  }
352
354
  return ref(defaultValue);
@@ -365,7 +367,7 @@ const $initRef = (props, node) => {
365
367
  return $refSetter;
366
368
  }
367
369
  else {
368
- $throw('Fragment: ref must be a KTRef');
370
+ throw new Error('[@ktjs/core error] Fragment: ref must be a KTRef');
369
371
  }
370
372
  };
371
373
 
@@ -432,7 +434,7 @@ class KTComputed {
432
434
  return this._value;
433
435
  }
434
436
  set value(_newValue) {
435
- $throw('KTComputed: cannot set value of a computed value');
437
+ throw new Error('[@ktjs/core error] KTComputed: cannot set value of a computed value');
436
438
  }
437
439
  /**
438
440
  * Force listeners to run once with the latest computed result.
@@ -444,7 +446,7 @@ class KTComputed {
444
446
  * Computed values are derived from dependencies and should not be mutated manually.
445
447
  */
446
448
  mutate() {
447
- $warn('KTComputed.mutate: computed is derived automatically; manual mutate is ignored. Use notify() instead');
449
+ console.warn('[@ktjs/core warn]','KTComputed.mutate: computed is derived automatically; manual mutate is ignored. Use notify() instead');
448
450
  return this._value;
449
451
  }
450
452
  /**
@@ -453,7 +455,7 @@ class KTComputed {
453
455
  */
454
456
  addOnChange(callback) {
455
457
  if (typeof callback !== 'function') {
456
- $throw('KTRef.addOnChange: callback must be a function');
458
+ throw new Error('[@ktjs/core error] KTRef.addOnChange: callback must be a function');
457
459
  }
458
460
  this._onChanges.push(callback);
459
461
  }
@@ -478,7 +480,7 @@ class KTComputed {
478
480
  */
479
481
  function computed(computeFn, reactives) {
480
482
  if (reactives.some((v) => !isKT(v))) {
481
- $throw('computed: all reactives must be KTRef or KTComputed instances');
483
+ throw new Error('[@ktjs/core error] computed: all reactives must be KTRef or KTComputed instances');
482
484
  }
483
485
  return new KTComputed(computeFn, reactives);
484
486
  }
@@ -503,7 +505,7 @@ function effect(effectFn, reactives, options) {
503
505
  effectFn();
504
506
  }
505
507
  catch (err) {
506
- $debug('effect error:', debugName, err);
508
+ console.debug('[@ktjs/core debug]','effect error:', debugName, err);
507
509
  }
508
510
  };
509
511
  // subscribe to dependencies
@@ -548,10 +550,9 @@ function dereactive(value) {
548
550
 
549
551
  function applyKModel(element, valueRef) {
550
552
  if (!isKT(valueRef)) {
551
- $warn('k-model value must be a KTRef.');
552
- return;
553
+ throw new Error('[@ktjs/core error] k-model value must be a KTRef.');
553
554
  }
554
- if (element instanceof HTMLInputElement) {
555
+ if (element.tagName === 'INPUT') {
555
556
  if (element.type === 'radio' || element.type === 'checkbox') {
556
557
  $applyModel(element, valueRef, 'checked', 'change');
557
558
  }
@@ -559,14 +560,14 @@ function applyKModel(element, valueRef) {
559
560
  $applyModel(element, valueRef, 'value', 'input');
560
561
  }
561
562
  }
562
- else if (element instanceof HTMLSelectElement) {
563
+ else if (element.tagName === 'SELECT') {
563
564
  $applyModel(element, valueRef, 'value', 'change');
564
565
  }
565
- else if (element instanceof HTMLTextAreaElement) {
566
+ else if (element.tagName === 'TEXTAREA') {
566
567
  $applyModel(element, valueRef, 'value', 'input');
567
568
  }
568
569
  else {
569
- $warn('not supported element for k-model:');
570
+ console.warn('[@ktjs/core warn]','not supported element for k-model:');
570
571
  }
571
572
  }
572
573
 
@@ -581,11 +582,19 @@ let creator = htmlCreator;
581
582
  * @param attr attribute object or className
582
583
  * @param content a string or an array of HTMLEnhancedElement as child nodes
583
584
  *
584
- * __PKG_INFO__
585
+ * ## About
586
+ * @package @ktjs/core
587
+ * @author Kasukabe Tsumugi <futami16237@gmail.com>
588
+ * @version 0.30.2 (Last Update: 2026.02.23 00:40:33.579)
589
+ * @license MIT
590
+ * @link https://github.com/baendlorel/kt.js
591
+ * @link https://baendlorel.github.io/ Welcome to my site!
592
+ * @description Core functionality for kt.js - DOM manipulation utilities with JSX/TSX support
593
+ * @copyright Copyright (c) 2026 Kasukabe Tsumugi. All rights reserved.
585
594
  */
586
595
  const h = (tag, attr, content) => {
587
596
  if (typeof tag !== 'string') {
588
- $throw('tagName must be a string.');
597
+ throw new Error('[@ktjs/core error] tagName must be a string.');
589
598
  }
590
599
  if (attr) {
591
600
  if ("__svg" in attr) {
@@ -765,91 +774,16 @@ const jsxh = (tag, props) => {
765
774
  };
766
775
  const placeholder = (data) => document.createComment(data);
767
776
 
768
- // # Only supports k-if/k-else, not k-else-if
769
- function kif(tag, props) {
770
- const kif = toReactive(props['k-if']);
771
- let el = (kif.value ? jsxh(tag, props) : placeholder('k-if'));
772
- el.__kif__ = kif;
773
- const setter = $initRef(props, el);
774
- kif.addOnChange((newValue) => {
775
- const old = el;
776
- el = (newValue ? jsxh(tag, props) : placeholder('k-if'));
777
- el.__kif__ = kif;
778
- setter(props, el);
779
- $replaceNode(old, el);
780
- });
781
- return el;
782
- }
783
- function kelse(tag, props) {
784
- // k-else is not rendered by default
785
- // until its corresponding k-if is true, then it will be rendered
786
- // this will be detected when dealing with `children`
787
- let el = placeholder('k-else');
788
- const setter = $initRef(props, el);
789
- el.__kelse__ = (newValue) => {
790
- const old = el;
791
- // reverse logic of `if`
792
- el = (newValue ? placeholder('k-else') : jsxh(tag, props));
793
- el.__kelse__ = old.__kelse__; // inherit
794
- setter(props, el);
795
- $replaceNode(old, el);
796
- };
797
- return el;
798
- }
799
- /**
800
- * Deal with `k-if` and `k-else`, checking syntax and applying listeners
801
- * @param el parent element
802
- */
803
- function kifelseApply(el) {
804
- const childNodes = el.childNodes;
805
- // & We only need to check for k-else
806
- if (childNodes.length === 0) {
807
- return;
808
- }
809
- if (childNodes[0].__kelse__) {
810
- $throw('k-else cannot be the first child of its parent element.');
811
- }
812
- for (let i = 1; i < childNodes.length; i++) {
813
- const child = childNodes[i];
814
- if (!child.__kelse__) {
815
- continue;
816
- }
817
- const last = childNodes[i - 1];
818
- if (!('__kif__' in last)) {
819
- $throw('k-else must be immediately preceded by a k-if element.');
820
- }
821
- // falsy __kif__, not rendering
822
- const kif = last.__kif__;
823
- if (!kif) {
824
- continue;
825
- }
826
- if (!isKT(kif)) {
827
- continue;
828
- }
829
- kif.addOnChange(child.__kelse__);
830
- if (!kif.value) {
831
- child.__kelse__(false);
832
- }
833
- }
834
- }
835
-
836
777
  /**
837
778
  * @param tag html tag or function component
838
779
  * @param props properties/attributes
839
780
  */
840
781
  function jsx(tag, props) {
841
782
  if (isComputed(props.ref)) {
842
- $throw('Cannot assign a computed value to an element.');
843
- }
844
- if ('k-if' in props) {
845
- return kif(tag, props);
846
- }
847
- if ('k-else' in props) {
848
- return kelse(tag, props);
783
+ throw new Error('[@ktjs/core error] Cannot assign a computed value to an element.');
849
784
  }
850
785
  const el = jsxh(tag, props);
851
786
  $initRef(props, el);
852
- kifelseApply(el);
853
787
  return el;
854
788
  }
855
789
  /**
@@ -914,7 +848,6 @@ function KTAsync(props) {
914
848
  return comp;
915
849
  }
916
850
 
917
- // todo kfor的编译方式:在插件帮助下,将k-for编译为 k-for接收一个list,如果可以定义一个item变量和index,那么将children编译为()=>children的函数,用以创建
918
851
  /**
919
852
  * KTFor - List rendering component with key-based optimization
920
853
  * Returns a Comment anchor node with rendered elements in __kt_for_list__
@@ -1111,5 +1044,30 @@ function getSequence(arr) {
1111
1044
  return result;
1112
1045
  }
1113
1046
 
1114
- export { $initRef, $modelOrRef, Fragment, KTAsync, KTComputed, KTFor, KTRef, computed, h as createElement, createRedrawable, dereactive, effect, h, isComputed, isKT, isRef, jsx, jsxDEV, jsxs, ref, surfaceRef, toReactive, toRef };
1047
+ function KTConditional(condition, tagIf, propsIf, tagElse, propsElse) {
1048
+ if (!isKT(condition)) {
1049
+ return condition ? jsxh(tagIf, propsIf) : tagElse ? jsxh(tagElse, propsElse) : placeholder('kt-conditional');
1050
+ }
1051
+ if (tagElse) {
1052
+ let current = condition.value ? jsxh(tagIf, propsIf) : jsxh(tagElse, propsElse);
1053
+ condition.addOnChange((newValue) => {
1054
+ const old = current;
1055
+ current = newValue ? jsxh(tagIf, propsIf) : jsxh(tagElse, propsElse);
1056
+ old.replaceWith(current);
1057
+ });
1058
+ return current;
1059
+ }
1060
+ else {
1061
+ const dummy = placeholder('kt-conditional');
1062
+ let current = condition.value ? jsxh(tagIf, propsIf) : dummy;
1063
+ condition.addOnChange((newValue) => {
1064
+ const old = current;
1065
+ current = newValue ? jsxh(tagIf, propsIf) : dummy;
1066
+ old.replaceWith(current);
1067
+ });
1068
+ return current;
1069
+ }
1070
+ }
1071
+
1072
+ export { $initRef, $modelOrRef, Fragment, KTAsync, KTComputed, KTConditional, KTFor, KTRef, computed, h as createElement, createRedrawable, dereactive, effect, h, isComputed, isKT, isRef, jsx, jsxDEV, jsxs, ref, surfaceRef, toReactive, toRef };
1115
1073
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/reactive/core.ts","../src/h/attr-helpers.ts","../src/h/attr.ts","../src/h/content.ts","../src/reactive/ref.ts","../src/reactive/computed.ts","../src/reactive/effect.ts","../src/reactive/index.ts","../src/h/model.ts","../src/h/index.ts","../src/jsx/fragment.ts","../src/jsx/common.ts","../src/jsx/if.ts","../src/jsx/jsx-runtime.ts","../src/jsx/async.ts","../src/jsx/for.ts"],"sourcesContent":["import type { KTReactive } from '../types/reactive.js';\nimport type { KTComputed, KTRef } from './index.js';\n\nexport const enum KTReactiveType {\n REF = 1,\n COMPUTED = 2,\n}\n\nexport const isKT = <T = any>(obj: any): obj is KTReactive<T> => obj?.isKT;\nexport const isRef = <T = any>(obj: any): obj is KTRef<T> => obj?.ktType === KTReactiveType.REF;\nexport const isComputed = <T = any>(obj: any): obj is KTComputed<T> => obj?.ktType === KTReactiveType.COMPUTED;\n","const booleanHandler = (element: HTMLElement | SVGElement | MathMLElement, key: string, value: any) => {\n if (key in element) {\n (element as any)[key] = !!value;\n } else {\n element.setAttribute(key, value);\n }\n};\n\nconst valueHandler = (element: HTMLElement | SVGElement | MathMLElement, key: string, value: any) => {\n if (key in element) {\n (element as any)[key] = value;\n } else {\n element.setAttribute(key, value);\n }\n};\n\n// Attribute handlers map for optimized lookup\nexport const handlers: Record<\n string,\n (element: HTMLElement | SVGElement | MathMLElement, key: string, value: any) => void\n> = {\n checked: booleanHandler,\n selected: booleanHandler,\n value: valueHandler,\n valueAsDate: valueHandler,\n valueAsNumber: valueHandler,\n defaultValue: valueHandler,\n defaultChecked: booleanHandler,\n defaultSelected: booleanHandler,\n disabled: booleanHandler,\n readOnly: booleanHandler,\n multiple: booleanHandler,\n required: booleanHandler,\n autofocus: booleanHandler,\n open: booleanHandler,\n controls: booleanHandler,\n autoplay: booleanHandler,\n loop: booleanHandler,\n muted: booleanHandler,\n defer: booleanHandler,\n async: booleanHandler,\n hidden: (element, _key, value) => ((element as HTMLElement).hidden = !!value),\n};\n\ntype InputElement = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\n\ntype StringEventHandler = (element: InputElement, handler: (value: string) => void) => void;\ntype NumberEventHandler = (element: InputElement, handler: (value: number) => void) => void;\n\nexport const ktEventHandlers: Record<string, StringEventHandler | NumberEventHandler> = {\n 'on:ktchange': (element: InputElement, handler: (value: string) => void) =>\n element.addEventListener('change', () => handler(element.value)),\n 'ontrim:ktchange': (element: InputElement, handler: (value: string) => void) =>\n element.addEventListener('change', () => handler(element.value.trim())),\n 'on:ktchangenumber': (element: InputElement, handler: (value: number) => void) =>\n element.addEventListener('change', () => handler(Number(element.value))),\n 'on:ktinput': (element: InputElement, handler: (value: string) => void) =>\n element.addEventListener('input', () => handler(element.value)),\n 'ontrim:ktinput': (element: InputElement, handler: (value: string) => void) =>\n element.addEventListener('input', () => handler(element.value.trim())),\n 'on:ktinputnumber': (element: InputElement, handler: (value: number) => void) =>\n element.addEventListener('input', () => handler(Number(element.value))),\n};\n","import type { KTReactifyProps } from '../types/reactive.js';\nimport type { KTRawAttr, KTAttribute } from '../types/h.js';\nimport { isKT } from '../reactive/core.js';\nimport { handlers } from './attr-helpers.js';\n\nconst defaultHandler = (element: HTMLElement | SVGElement | MathMLElement, key: string, value: any) =>\n element.setAttribute(key, value);\n\nconst setElementStyle = (\n element: HTMLElement | SVGElement | MathMLElement,\n style: Partial<CSSStyleDeclaration> | string,\n) => {\n if (typeof style === 'string') {\n (element as HTMLElement).style.cssText = style;\n return;\n }\n\n for (const key in style) {\n (element as any).style[key as any] = style[key];\n }\n};\n\nfunction attrIsObject(element: HTMLElement | SVGElement | MathMLElement, attr: KTReactifyProps<KTAttribute>) {\n const classValue = attr.class || attr.className;\n if (classValue !== undefined) {\n if (isKT<string>(classValue)) {\n element.setAttribute('class', classValue.value);\n classValue.addOnChange((v) => element.setAttribute('class', v));\n } else {\n element.setAttribute('class', classValue);\n }\n }\n\n const style = attr.style;\n if (style) {\n if (typeof style === 'string') {\n element.setAttribute('style', style);\n } else if (typeof style === 'object') {\n if (isKT(style)) {\n setElementStyle(element, style.value);\n style.addOnChange((v: Partial<CSSStyleDeclaration> | string) => setElementStyle(element, v));\n } else {\n setElementStyle(element, style as Partial<CSSStyleDeclaration>);\n }\n }\n }\n\n if ('k-html' in attr) {\n const html = attr['k-html'];\n if (isKT(html)) {\n element.innerHTML = html.value;\n html.addOnChange((v) => (element.innerHTML = v));\n } else {\n element.innerHTML = html;\n }\n }\n\n for (const key in attr) {\n // & Arranged in order of usage frequency\n if (\n key === 'k-if' ||\n key === 'k-model' ||\n key === 'k-for' ||\n key === 'k-key' ||\n key === 'ref' ||\n key === 'class' ||\n key === 'className' ||\n key === 'style' ||\n key === 'children' ||\n key === 'k-html' ||\n key === 'k-else'\n ) {\n continue;\n }\n\n const o = attr[key];\n\n // normal event handler\n if (key.startsWith('on:')) {\n element.addEventListener(key.slice(3), o); // chop off the `on:`\n }\n // normal attributes\n else {\n const handler = handlers[key] || defaultHandler;\n if (isKT(o)) {\n handler(element, key, o.value);\n o.addOnChange((v) => handler(element, key, v));\n } else {\n handler(element, key, o);\n }\n }\n }\n}\n\nexport function applyAttr(element: HTMLElement | SVGElement | MathMLElement, attr: KTRawAttr) {\n if (!attr) {\n return;\n }\n if (typeof attr === 'object' && attr !== null) {\n attrIsObject(element, attr as KTAttribute);\n } else {\n $throw('attr must be an object.');\n }\n}\n","import { $append, $isArray, $isNode, $isThenable } from '@ktjs/shared';\nimport type { KTAvailableContent, KTRawContent } from '../types/h.js';\nimport { isKT } from '../reactive/core.js';\n\nconst assureNode = (o: any) => ($isNode(o) ? o : document.createTextNode(o));\n\nfunction apdSingle(element: HTMLElement | DocumentFragment | SVGElement | MathMLElement, c: KTAvailableContent) {\n // & JSX should ignore false, undefined, and null\n if (c === false || c === undefined || c === null) {\n return;\n }\n\n if (isKT(c)) {\n let node = assureNode(c.value);\n $append.call(element, node);\n c.addOnChange((newValue, oldValue) => {\n if ($isNode(newValue) && $isNode(oldValue)) {\n // & this case is handled automically in `class KTRef`\n return;\n }\n\n const oldNode = node;\n node = assureNode(newValue);\n oldNode.replaceWith(node);\n });\n } else {\n $append.call(element, c as Node);\n\n // Handle KTFor anchor\n const list = (c as any).__kt_for_list__ as any[];\n if ($isArray(list)) {\n apd(element, list);\n }\n }\n}\n\nfunction apd(element: HTMLElement | DocumentFragment | SVGElement | MathMLElement, c: KTAvailableContent) {\n if ($isThenable(c)) {\n c.then((r) => apd(element, r));\n } else if ($isArray(c)) {\n for (let i = 0; i < c.length; i++) {\n // & might be thenable here too\n const ci = c[i];\n if ($isThenable(ci)) {\n const comment = document.createComment('ktjs-promise-placeholder');\n $append.call(element, comment);\n ci.then((awaited) => comment.replaceWith(awaited));\n } else {\n apdSingle(element, ci);\n }\n }\n } else {\n // & here is thened, so must be a simple elementj\n apdSingle(element, c);\n }\n}\n\nexport function applyContent(element: HTMLElement | SVGElement | MathMLElement, content: KTRawContent): void {\n if ($isArray(content)) {\n for (let i = 0; i < content.length; i++) {\n apd(element, content[i]);\n }\n } else {\n apd(element, content as KTAvailableContent);\n }\n}\n","import { $emptyFn, $entries, $is, $replaceNode } from '@ktjs/shared';\nimport type { KTReactive, ReactiveChangeHandler } from '../types/reactive.js';\nimport type { JSX } from '../types/jsx.js';\nimport { isComputed, isRef, KTReactiveType } from './core.js';\n\nexport class KTRef<T> implements KTReactive<T> {\n /**\n * Indicates that this is a KTRef instance\n */\n isKT = true as const;\n\n ktType = KTReactiveType.REF;\n\n /**\n * @internal\n */\n private _value: T;\n\n /**\n * @internal\n */\n private _onChanges: Array<ReactiveChangeHandler<T>>;\n\n /**\n * @internal\n */\n private _emit(newValue: T, oldValue: T) {\n for (let i = 0; i < this._onChanges.length; i++) {\n this._onChanges[i](newValue, oldValue);\n }\n }\n\n constructor(_value: T, _onChanges: Array<ReactiveChangeHandler<T>>) {\n this._value = _value;\n this._onChanges = _onChanges;\n }\n\n /**\n * If new value and old value are both nodes, the old one will be replaced in the DOM\n */\n get value() {\n return this._value;\n }\n\n set value(newValue: T) {\n if ($is(newValue, this._value)) {\n return;\n }\n\n const oldValue = this._value;\n $replaceNode(oldValue, newValue);\n this._value = newValue;\n this._emit(newValue, oldValue);\n }\n\n /**\n * Force all listeners to run even when reference identity has not changed.\n * Useful for in-place array/object mutations.\n */\n notify() {\n this._emit(this._value, this._value);\n }\n\n /**\n * Mutate current value in-place and notify listeners once.\n *\n * @example\n * const items = ref<number[]>([1, 2]);\n * items.mutate((list) => list.push(3));\n */\n mutate<R = void>(mutator: (currentValue: T) => R): R {\n if (typeof mutator !== 'function') {\n $throw('KTRef.mutate: mutator must be a function');\n }\n const oldValue = this._value;\n const result = mutator(this._value);\n this._emit(this._value, oldValue);\n return result;\n }\n\n /**\n * Register a callback when the value changes\n * @param callback (newValue, oldValue) => xxx\n */\n addOnChange(callback: ReactiveChangeHandler<T>) {\n if (typeof callback !== 'function') {\n $throw('KTRef.addOnChange: callback must be a function');\n }\n this._onChanges.push(callback);\n }\n\n removeOnChange(callback: ReactiveChangeHandler<T>) {\n for (let i = this._onChanges.length - 1; i >= 0; i--) {\n if (this._onChanges[i] === callback) {\n this._onChanges.splice(i, 1);\n return true;\n }\n }\n return false;\n }\n}\n\n/**\n * Reference to the created HTML element.\n * - **Only** respond to `ref.value` changes, not reactive to internal changes of the element.\n * - can alse be used to store normal values, but it is not reactive.\n * - if the value is already a `KTRef`, it will be returned **directly**.\n * @param value mostly an HTMLElement\n */\nexport function ref<T = JSX.Element>(value?: T, onChange?: ReactiveChangeHandler<T>): KTRef<T> {\n return new KTRef<T>(value as any, onChange ? [onChange] : []);\n}\n\n/**\n * Convert a value to `KTRef`.\n * - Returns the original value if it is already a `KTRef`.\n * - Throws error if the value is a `KTComputed`.\n * - Otherwise wraps the value with `ref()`.\n * @param o value to convert\n */\nexport const toRef = <T = any>(o: any): KTRef<T> => {\n if (isRef(o)) {\n return o;\n } else if (isComputed(o)) {\n $throw('Computed values cannot be used as KTRef.');\n } else {\n return ref(o);\n }\n};\n\nexport type KTSurfaceRef<T extends object> = {\n [K in keyof T]: KTRef<T[K]>;\n} & {\n /**\n * Get the dereferenced object like the original one\n */\n kcollect: () => T;\n};\n\nfunction kcollect<T extends object>(this: KTSurfaceRef<T>): T {\n const newObj: any = {};\n const entries = $entries(this);\n for (let i = 0; i < entries.length; i++) {\n const key = entries[i][0];\n if (key === 'kcollect') {\n continue;\n }\n newObj[key] = entries[i][1].value;\n }\n return newObj;\n}\n\n/**\n * Make all first-level properties of the object a `KTRef`.\n * - `obj.a.b` is not reactive\n */\nexport const surfaceRef = <T extends object>(obj: T): KTSurfaceRef<T> => {\n const entries = $entries(obj);\n const newObj = { kcollect } as KTSurfaceRef<T>;\n for (let i = 0; i < entries.length; i++) {\n (newObj[entries[i][0]] as KTReactive<any>) = ref(entries[i][1]);\n }\n return newObj;\n};\n\n// # asserts\n\n/**\n * Assert k-model to be a ref object\n */\nexport const $modelOrRef = <T = any>(props: any, defaultValue?: T): KTRef<T> => {\n // & props is an object. Won't use it in any other place\n if ('k-model' in props) {\n const kmodel = props['k-model'];\n if (isRef(kmodel)) {\n return kmodel;\n } else {\n $throw(`k-model data must be a KTRef object, please use 'ref(...)' to wrap it.`);\n }\n }\n return ref(defaultValue) as KTRef<T>;\n};\n\nconst $refSetter = <T>(props: { ref?: KTRef<T> }, node: T) => (props.ref!.value = node);\ntype RefSetter<T> = (props: { ref?: KTRef<T> }, node: T) => void;\n\n/**\n * Whether `props.ref` is a `KTRef` only needs to be checked in the initial render\n */\nexport const $initRef = <T extends Node>(props: { ref?: KTRef<T> }, node: T): RefSetter<T> => {\n if (!('ref' in props)) {\n return $emptyFn;\n }\n\n const r = props.ref;\n if (isRef(r)) {\n r.value = node;\n return $refSetter;\n } else {\n $throw('Fragment: ref must be a KTRef');\n }\n};\n","import { $replaceNode } from '@ktjs/shared';\nimport type { KTReactive, ReactiveChangeHandler } from '../types/reactive.js';\nimport type { JSX } from '../types/jsx.js';\nimport { isKT, KTReactiveType } from './core.js';\n\nexport class KTComputed<T> implements KTReactive<T> {\n /**\n * Indicates that this is a KTRef instance\n */\n isKT = true as const;\n\n ktType = KTReactiveType.COMPUTED;\n\n /**\n * @internal\n */\n private _calculator: () => T;\n\n /**\n * @internal\n */\n private _value: T;\n\n /**\n * @internal\n */\n private _onChanges: Array<ReactiveChangeHandler<T>> = [];\n\n /**\n * @internal\n */\n private _emit(newValue: T, oldValue: T) {\n for (let i = 0; i < this._onChanges.length; i++) {\n this._onChanges[i](newValue, oldValue);\n }\n }\n\n /**\n * @internal\n */\n private _recalculate(forceEmit: boolean = false) {\n const oldValue = this._value;\n const newValue = this._calculator();\n if (oldValue === newValue) {\n if (forceEmit) {\n this._emit(newValue, oldValue);\n }\n return;\n }\n this._value = newValue;\n $replaceNode(oldValue, newValue);\n this._emit(newValue, oldValue);\n }\n\n /**\n * @internal\n */\n private _subscribe(reactives: Array<KTReactive<unknown>>) {\n for (let i = 0; i < reactives.length; i++) {\n const reactive = reactives[i];\n reactive.addOnChange(() => this._recalculate());\n }\n }\n\n constructor(_calculator: () => T, reactives: Array<KTReactive<unknown>>) {\n this._calculator = _calculator;\n this._value = _calculator();\n this._subscribe(reactives);\n }\n\n /**\n * If new value and old value are both nodes, the old one will be replaced in the DOM\n */\n get value() {\n return this._value;\n }\n\n set value(_newValue: T) {\n $throw('KTComputed: cannot set value of a computed value');\n }\n\n /**\n * Force listeners to run once with the latest computed result.\n */\n notify() {\n this._recalculate(true);\n }\n\n /**\n * Computed values are derived from dependencies and should not be mutated manually.\n */\n mutate<R = void>(): R {\n $warn('KTComputed.mutate: computed is derived automatically; manual mutate is ignored. Use notify() instead');\n return this._value as unknown as R;\n }\n\n /**\n * Register a callback when the value changes\n * @param callback (newValue, oldValue) => xxx\n */\n addOnChange(callback: ReactiveChangeHandler<T>) {\n if (typeof callback !== 'function') {\n $throw('KTRef.addOnChange: callback must be a function');\n }\n this._onChanges.push(callback);\n }\n\n /**\n * Unregister a callback\n * @param callback (newValue, oldValue) => xxx\n */\n removeOnChange(callback: ReactiveChangeHandler<T>) {\n for (let i = this._onChanges.length - 1; i >= 0; i--) {\n if (this._onChanges[i] === callback) {\n this._onChanges.splice(i, 1);\n return true;\n }\n }\n return false;\n }\n}\n\n/**\n * Create a reactive computed value\n * @param computeFn\n * @param reactives refs and computeds that this computed depends on\n */\nexport function computed<T = JSX.Element>(computeFn: () => T, reactives: Array<KTReactive<any>>): KTComputed<T> {\n if (reactives.some((v) => !isKT(v))) {\n $throw('computed: all reactives must be KTRef or KTComputed instances');\n }\n return new KTComputed<T>(computeFn, reactives);\n}\n","import { $emptyFn } from '@ktjs/shared';\nimport type { KTReactive } from '../types/reactive.js';\n\ninterface KTEffectOptions {\n lazy: boolean;\n onCleanup: () => void;\n debugName: string;\n}\n\n/**\n * Register a reactive effect with options.\n * @param effectFn The effect function to run when dependencies change\n * @param reactives The reactive dependencies\n * @param options Effect options: lazy, onCleanup, debugName\n * @returns stop function to remove all listeners\n */\nexport function effect(effectFn: () => void, reactives: Array<KTReactive<any>>, options?: Partial<KTEffectOptions>) {\n const { lazy = false, onCleanup = $emptyFn, debugName = '' } = Object(options);\n\n let active = true;\n\n const run = () => {\n if (!active) {\n return;\n }\n\n // cleanup before rerun\n onCleanup();\n\n try {\n effectFn();\n } catch (err) {\n $debug('effect error:', debugName, err);\n }\n };\n\n // subscribe to dependencies\n for (let i = 0; i < reactives.length; i++) {\n reactives[i].addOnChange(run);\n }\n\n // auto run unless lazy\n if (!lazy) {\n run();\n }\n\n // stop function\n return () => {\n if (!active) {\n return;\n }\n active = false;\n\n for (let i = 0; i < reactives.length; i++) {\n reactives[i].removeOnChange(run);\n }\n\n // final cleanup\n onCleanup();\n };\n}\n","import type { KTReactive, ReactiveChangeHandler } from '../types/reactive.js';\nimport type { JSX } from '../types/jsx.js';\nimport { isKT } from './core.js';\nimport { ref } from './ref.js';\n\nexport const toReactive = <T>(value: T | KTReactive<T>, onChange?: ReactiveChangeHandler<T>): KTReactive<T> => {\n if (isKT(value)) {\n if (onChange) {\n value.addOnChange(onChange);\n }\n return value;\n } else {\n return ref(value as T, onChange) as KTReactive<T>;\n }\n};\n\n/**\n * Extracts the value from a KTReactive, or returns the value directly if it's not reactive.\n */\nexport function dereactive<T = JSX.Element>(value: T | KTReactive<T>): T {\n return isKT<T>(value) ? value.value : value;\n}\n\nexport * from './core.js';\nexport * from './ref.js';\nexport * from './computed.js';\nexport * from './effect.js';\n","import { $applyModel, type InputElementTag } from '@ktjs/shared';\nimport { isKT, type KTRef } from '../reactive/index.js';\n\nexport function applyKModel(element: HTMLElementTagNameMap[InputElementTag], valueRef: KTRef<any>) {\n if (!isKT(valueRef)) {\n $warn('k-model value must be a KTRef.');\n return;\n }\n\n if (element instanceof HTMLInputElement) {\n if (element.type === 'radio' || element.type === 'checkbox') {\n $applyModel(element, valueRef, 'checked', 'change');\n } else {\n $applyModel(element, valueRef, 'value', 'input');\n }\n } else if (element instanceof HTMLSelectElement) {\n $applyModel(element, valueRef, 'value', 'change');\n } else if (element instanceof HTMLTextAreaElement) {\n $applyModel(element, valueRef, 'value', 'input');\n } else {\n $warn('not supported element for k-model:');\n }\n}\n","import type { HTMLTag, MathMLTag, SVGTag } from '@ktjs/shared';\nimport type { KTRawAttr, KTRawContent, HTML } from '../types/h.js';\n\nimport { applyAttr } from './attr.js';\nimport { applyContent } from './content.js';\nimport { applyKModel } from './model.js';\n\nconst htmlCreator = (tag: string) => document.createElement(tag);\nconst svgCreator = (tag: string) => document.createElementNS('http://www.w3.org/2000/svg', tag);\nconst mathMLCreator = (tag: string) => document.createElementNS('http://www.w3.org/1998/Math/MathML', tag);\nlet creator: (tag: string) => any = htmlCreator;\n\n/**\n * Create an enhanced HTMLElement.\n * - Only supports HTMLElements, **NOT** SVGElements or other Elements.\n * @param tag tag of an `HTMLElement`\n * @param attr attribute object or className\n * @param content a string or an array of HTMLEnhancedElement as child nodes\n *\n * __PKG_INFO__\n */\nexport const h = <T extends HTMLTag | SVGTag | MathMLTag>(\n tag: T,\n attr?: KTRawAttr,\n content?: KTRawContent,\n): HTML<T> => {\n if (typeof tag !== 'string') {\n $throw('tagName must be a string.');\n }\n\n if (attr) {\n if (flags.svg in attr) {\n delete attr[flags.svg];\n creator = svgCreator;\n } else if (flags.mathml in attr) {\n delete attr[flags.mathml];\n creator = mathMLCreator;\n } else {\n creator = htmlCreator;\n }\n }\n\n // * start creating the element\n const element = creator(tag) as HTML<T>;\n\n // * Handle content\n applyAttr(element, attr);\n applyContent(element, content);\n\n if (typeof attr === 'object' && attr !== null && 'k-model' in attr) {\n applyKModel(element as any, attr['k-model'] as any);\n }\n\n return element;\n};\n","import { $forEach, $isArray } from '@ktjs/shared';\nimport type { KTRef } from '../reactive/ref.js';\nimport type { KTReactive } from '../types/reactive.js';\nimport type { KTRawContent } from '../types/h.js';\nimport type { JSX } from '../types/jsx.js';\n\nimport { $initRef, isKT, toReactive } from '../reactive/index.js';\n\nconst FRAGMENT_MOUNT_PATCHED = '__kt_fragment_mount_patched__';\nconst FRAGMENT_MOUNT = '__kt_fragment_mount__';\n\nif (typeof Node !== 'undefined' && !(globalThis as any)[FRAGMENT_MOUNT_PATCHED]) {\n (globalThis as any)[FRAGMENT_MOUNT_PATCHED] = true;\n\n const originAppendChild = Node.prototype.appendChild;\n Node.prototype.appendChild = function (node) {\n const result = originAppendChild.call(this, node);\n const mount = (node as any)[FRAGMENT_MOUNT];\n if (typeof mount === 'function') {\n mount();\n }\n return result as any;\n };\n\n const originInsertBefore = Node.prototype.insertBefore;\n Node.prototype.insertBefore = function (node: Node, child: Node | null) {\n const result = originInsertBefore.call(this, node, child);\n const mount = (node as any)[FRAGMENT_MOUNT];\n if (typeof mount === 'function') {\n mount();\n }\n return result as any;\n };\n}\n\nexport interface FragmentProps<T extends HTMLElement = HTMLElement> {\n /** Array of child elements, supports reactive arrays */\n children: T[] | KTReactive<T[]>;\n\n /** element key function for optimization (future enhancement) */\n key?: (element: T, index: number, array: T[]) => any;\n\n /** ref to get the anchor node */\n ref?: KTRef<JSX.Element>;\n}\n\n/**\n * Fragment - Container component for managing arrays of child elements\n *\n * Features:\n * 1. Returns a comment anchor node, child elements are inserted after the anchor\n * 2. Supports reactive arrays, automatically updates DOM when array changes\n * 3. Basic version uses simple replacement algorithm (remove all old elements, insert all new elements)\n * 4. Future enhancement: key-based optimization\n *\n * Usage example:\n * ```tsx\n * const children = ref([<div>A</div>, <div>B</div>]);\n * const fragment = <Fragment children={children} />;\n * document.body.appendChild(fragment);\n *\n * // Automatic update\n * children.value = [<div>C</div>, <div>D</div>];\n * ```\n */\nexport function Fragment<T extends HTMLElement = HTMLElement>(props: FragmentProps<T>): JSX.Element {\n const elements: T[] = [];\n const anchor = document.createComment('kt-fragment') as unknown as JSX.Element;\n let inserted = false;\n let observer: MutationObserver | undefined;\n\n const redraw = () => {\n const newElements = childrenRef.value;\n const parent = anchor.parentNode;\n\n if (!parent) {\n elements.length = 0;\n for (let i = 0; i < newElements.length; i++) {\n elements.push(newElements[i]);\n }\n (anchor as any).__kt_fragment_list__ = elements;\n return;\n }\n\n for (let i = 0; i < elements.length; i++) {\n elements[i].remove();\n }\n\n const fragment = document.createDocumentFragment();\n elements.length = 0;\n\n for (let i = 0; i < newElements.length; i++) {\n const element = newElements[i];\n elements.push(element);\n fragment.appendChild(element);\n }\n\n parent.insertBefore(fragment, anchor.nextSibling);\n inserted = true;\n delete (anchor as any)[FRAGMENT_MOUNT];\n observer?.disconnect();\n observer = undefined;\n (anchor as any).__kt_fragment_list__ = elements;\n };\n\n const childrenRef = toReactive(props.children, redraw);\n\n const renderInitial = () => {\n const current = childrenRef.value;\n elements.length = 0;\n\n const fragment = document.createDocumentFragment();\n for (let i = 0; i < current.length; i++) {\n const element = current[i];\n elements.push(element);\n fragment.appendChild(element);\n }\n\n (anchor as any).__kt_fragment_list__ = elements;\n\n const parent = anchor.parentNode;\n if (parent && !inserted) {\n parent.insertBefore(fragment, anchor.nextSibling);\n inserted = true;\n }\n };\n\n renderInitial();\n\n (anchor as any)[FRAGMENT_MOUNT] = () => {\n if (!inserted && anchor.parentNode) {\n redraw();\n }\n };\n\n observer = new MutationObserver(() => {\n if (anchor.parentNode && !inserted) {\n redraw();\n observer?.disconnect();\n observer = undefined;\n }\n });\n\n observer.observe(document.body, { childList: true, subtree: true });\n\n $initRef(props, anchor);\n\n return anchor;\n}\n\n/**\n * Convert KTRawContent to HTMLElement array\n */\nexport function convertChildrenToElements(children: KTRawContent): HTMLElement[] {\n const elements: HTMLElement[] = [];\n\n const processChild = (child: any): void => {\n if (child === undefined || child === null || child === false || child === true) {\n // Ignore null, undefined, false, true\n return;\n }\n\n if ($isArray(child)) {\n // Recursively process array\n $forEach(child, processChild);\n return;\n }\n\n if (typeof child === 'string' || typeof child === 'number') {\n const span = document.createElement('span');\n span.textContent = String(child);\n elements.push(span);\n return;\n }\n\n if (child instanceof HTMLElement) {\n elements.push(child);\n return;\n }\n\n if (isKT(child)) {\n processChild(child.value);\n return;\n }\n\n console.warn('Fragment: unsupported child type', child);\n };\n\n processChild(children);\n return elements;\n}\n","import type { JSXTag } from '@ktjs/shared';\nimport type { KTAttribute } from '../types/h.js';\nimport type { JSX } from '../types/jsx.js';\nimport { h } from '../h/index';\n\nexport const jsxh = (tag: JSXTag, props: KTAttribute): HTMLElement => {\n if (typeof tag === 'function') {\n return tag(props) as HTMLElement;\n } else {\n return h(tag, props, props.children) as HTMLElement;\n }\n};\n\nexport const placeholder = (data: string): JSX.Element => document.createComment(data) as unknown as JSX.Element;\n","import { $replaceNode, JSXTag } from '@ktjs/shared';\nimport type { KTAttribute } from '../types/h.js';\nimport type { KElseElement, KIfElement } from '../types/directives.js';\nimport type { KTReactive } from '../types/reactive.js';\n\nimport { $initRef, isKT, toReactive } from '../reactive/index.js';\nimport { jsxh, placeholder } from './common.js';\n\n// # Only supports k-if/k-else, not k-else-if\nexport function kif(tag: JSXTag, props: KTAttribute): KIfElement {\n const kif = toReactive(props['k-if']);\n\n let el = (kif.value ? jsxh(tag, props) : placeholder('k-if')) as KIfElement;\n el.__kif__ = kif;\n const setter = $initRef(props, el);\n\n kif.addOnChange((newValue) => {\n const old = el;\n el = (newValue ? jsxh(tag, props) : placeholder('k-if')) as KIfElement;\n el.__kif__ = kif;\n setter(props, el);\n $replaceNode(old, el);\n });\n\n return el;\n}\n\nexport function kelse(tag: JSXTag, props: KTAttribute): KElseElement {\n // k-else is not rendered by default\n // until its corresponding k-if is true, then it will be rendered\n // this will be detected when dealing with `children`\n let el = placeholder('k-else') as KElseElement;\n const setter = $initRef(props, el);\n el.__kelse__ = (newValue: boolean) => {\n const old = el;\n // reverse logic of `if`\n el = (newValue ? placeholder('k-else') : jsxh(tag, props)) as KElseElement;\n el.__kelse__ = old.__kelse__; // inherit\n setter(props, el);\n $replaceNode(old, el);\n };\n\n return el;\n}\n\n/**\n * Deal with `k-if` and `k-else`, checking syntax and applying listeners\n * @param el parent element\n */\nexport function kifelseApply(el: HTMLElement) {\n const childNodes = el.childNodes;\n\n // & We only need to check for k-else\n if (childNodes.length === 0) {\n return;\n }\n if ((childNodes[0] as KElseElement).__kelse__) {\n $throw('k-else cannot be the first child of its parent element.');\n }\n for (let i = 1; i < childNodes.length; i++) {\n const child = childNodes[i] as KElseElement;\n if (!child.__kelse__) {\n continue;\n }\n const last = childNodes[i - 1] as KIfElement;\n if (!('__kif__' in last)) {\n $throw('k-else must be immediately preceded by a k-if element.');\n }\n\n // falsy __kif__, not rendering\n const kif = last.__kif__;\n if (!kif) {\n continue;\n }\n\n if (!isKT(kif)) {\n continue;\n }\n kif.addOnChange(child.__kelse__);\n if (!kif.value) {\n child.__kelse__(false);\n }\n }\n}\n","import type { JSXTag } from '@ktjs/shared';\nimport type { KTAttribute, KTRawContent } from '../types/h.js';\nimport type { JSX } from '../types/jsx.js';\n\nimport { h } from '../h/index.js';\nimport { $initRef, isComputed, type KTRef, ref } from '../reactive/index.js';\nimport { convertChildrenToElements, Fragment as FragmentArray } from './fragment.js';\nimport { kelse, kif, kifelseApply } from './if.js';\nimport { jsxh, placeholder } from './common.js';\n\n/**\n * @param tag html tag or function component\n * @param props properties/attributes\n */\nexport function jsx(tag: JSXTag, props: KTAttribute): JSX.Element {\n if (isComputed(props.ref)) {\n $throw('Cannot assign a computed value to an element.');\n }\n\n if ('k-if' in props) {\n return kif(tag, props);\n }\n if ('k-else' in props) {\n return kelse(tag, props);\n }\n\n const el = jsxh(tag, props);\n $initRef(props, el);\n kifelseApply(el);\n return el;\n}\n\n/**\n * Fragment support - returns an array of children\n * Enhanced Fragment component that manages arrays of elements\n */\nexport function Fragment(props: { children?: KTRawContent }): JSX.Element {\n const { children } = props ?? {};\n\n if (!children) {\n return placeholder('kt-fragment-empty');\n }\n\n const elements = convertChildrenToElements(children);\n\n return FragmentArray({ children: elements });\n}\n\n/**\n * JSX Development runtime - same as jsx but with additional dev checks\n */\nexport const jsxDEV: typeof jsx = (...args) => {\n // console.log('JSX DEV called:', ...args);\n // console.log('children', (args[1] as any)?.children);\n return jsx(...args);\n};\n\n/**\n * JSX runtime for React 17+ automatic runtime\n * This is called when using jsx: \"react-jsx\" or \"react-jsxdev\"\n */\nexport const jsxs = jsx;\n\n// Export h as the classic JSX factory for backward compatibility\nexport { h, h as createElement };\n\n/**\n * A helper to create redrawable elements\n * ```tsx\n * export function MyComponent() {\n * let aa = 10;\n * // ...\n * // aa might be changed\n * return createRedrawable(() => <div>{aa}</div>);\n * }\n * ```\n * Then the returned element has a `redraw` method to redraw itself with new values.\n * @param creator a simple creator function that returns an element\n * @returns created element's ref\n */\nexport function createRedrawable<T>(creator: () => T): KTRef<T> & { redraw: () => T } {\n const elRef = ref<T>() as KTRef<T> & { redraw: () => T };\n\n const redraw = () => {\n elRef.value = creator(); // ref setter automatically calls replaceWith\n elRef.redraw = redraw;\n return elRef.value;\n };\n\n redraw();\n return elRef;\n}\n","import { $isThenable } from '@ktjs/shared';\nimport type { KTComponent, KTRawContent } from '../types/h.js';\nimport type { JSX } from '../types/jsx.js';\nimport type { KTRef } from '../reactive/ref.js';\n\n/**\n * Extract component props type (excluding ref and children)\n */\ntype ExtractComponentProps<T> = T extends (props: infer P) => any ? Omit<P, 'ref' | 'children'> : {};\n\nexport function KTAsync<T extends KTComponent>(\n props: {\n ref?: KTRef<JSX.Element>;\n skeleton?: JSX.Element;\n component: T;\n children?: KTRawContent;\n } & ExtractComponentProps<T>,\n): JSX.Element {\n const raw = props.component(props);\n let comp: JSX.Element =\n props.skeleton ?? (document.createComment('ktjs-suspense-placeholder') as unknown as JSX.Element);\n\n if ($isThenable(raw)) {\n raw.then((resolved) => comp.replaceWith(resolved));\n } else {\n comp = raw as JSX.Element;\n }\n\n return comp;\n}\n","import type { KTRef } from '../reactive/ref.js';\nimport type { KTReactive } from '../types/reactive.js';\nimport type { JSX } from '../types/jsx.js';\nimport { $initRef, toReactive } from '../reactive/index.js';\n\nexport type KTForElement = JSX.Element;\n\nexport interface KTForProps<T> {\n ref?: KTRef<KTForElement>;\n list: T[] | KTReactive<T[]>;\n key?: (item: T, index: number, array: T[]) => any;\n map: (item: T, index: number, array: T[]) => HTMLElement;\n}\n\n// todo kfor的编译方式:在插件帮助下,将k-for编译为 k-for接收一个list,如果可以定义一个item变量和index,那么将children编译为()=>children的函数,用以创建\n\n/**\n * KTFor - List rendering component with key-based optimization\n * Returns a Comment anchor node with rendered elements in __kt_for_list__\n */\nexport function KTFor<T>(props: KTForProps<T>): KTForElement {\n const redraw = () => {\n const newList = listRef.value;\n\n const parent = anchor.parentNode;\n if (!parent) {\n // If not in DOM yet, just rebuild the list\n const newElements: HTMLElement[] = [];\n nodeMap.clear();\n for (let index = 0; index < newList.length; index++) {\n const item = newList[index];\n const itemKey = currentKey(item, index, newList);\n const node = currentMap(item, index, newList);\n nodeMap.set(itemKey, node);\n newElements.push(node);\n }\n (anchor as any).__kt_for_list__ = newElements;\n return anchor;\n }\n\n const oldLength = (anchor as any).__kt_for_list__.length;\n const newLength = newList.length;\n\n // Fast path: empty list\n if (newLength === 0) {\n nodeMap.forEach((node) => node.remove());\n nodeMap.clear();\n (anchor as any).__kt_for_list__ = [];\n return anchor;\n }\n\n // Fast path: all new items\n if (oldLength === 0) {\n const newElements: HTMLElement[] = [];\n const fragment = document.createDocumentFragment();\n for (let i = 0; i < newLength; i++) {\n const item = newList[i];\n const itemKey = currentKey(item, i, newList);\n const node = currentMap(item, i, newList);\n nodeMap.set(itemKey, node);\n newElements.push(node);\n fragment.appendChild(node);\n }\n parent.insertBefore(fragment, anchor.nextSibling);\n (anchor as any).__kt_for_list__ = newElements;\n return anchor;\n }\n\n // Build key index map and new elements array in one pass\n const newKeyToNewIndex = new Map<any, number>();\n const newElements: HTMLElement[] = new Array(newLength);\n let maxNewIndexSoFar = 0;\n let moved = false;\n\n for (let i = 0; i < newLength; i++) {\n const item = newList[i];\n const itemKey = currentKey(item, i, newList);\n newKeyToNewIndex.set(itemKey, i);\n\n if (nodeMap.has(itemKey)) {\n // Reuse existing node\n const node = nodeMap.get(itemKey)!;\n newElements[i] = node;\n\n // Track if items moved\n if (i < maxNewIndexSoFar) {\n moved = true;\n } else {\n maxNewIndexSoFar = i;\n }\n } else {\n // Create new node\n newElements[i] = currentMap(item, i, newList);\n }\n }\n\n // Remove nodes not in new list\n const toRemove: HTMLElement[] = [];\n nodeMap.forEach((node, key) => {\n if (!newKeyToNewIndex.has(key)) {\n toRemove.push(node);\n }\n });\n for (let i = 0; i < toRemove.length; i++) {\n toRemove[i].remove();\n }\n\n // Update DOM with minimal operations\n if (moved) {\n // Use longest increasing subsequence to minimize moves\n const seq = getSequence(newElements.map((el, i) => (nodeMap.has(currentKey(newList[i], i, newList)) ? i : -1)));\n\n let j = seq.length - 1;\n let anchor: Node | null = null;\n\n // Traverse from end to start for stable insertions\n for (let i = newLength - 1; i >= 0; i--) {\n const node = newElements[i];\n\n if (j < 0 || i !== seq[j]) {\n // Node needs to be moved or inserted\n if (anchor) {\n parent.insertBefore(node, anchor);\n } else {\n // Insert at end\n let nextSibling = (anchor as any).nextSibling;\n let temp = nextSibling;\n while (temp && newElements.includes(temp as HTMLElement)) {\n temp = temp.nextSibling;\n }\n parent.insertBefore(node, temp);\n }\n } else {\n j--;\n }\n anchor = node;\n }\n } else {\n // No moves needed, just insert new nodes\n let currentNode = anchor.nextSibling;\n for (let i = 0; i < newLength; i++) {\n const node = newElements[i];\n if (currentNode !== node) {\n parent.insertBefore(node, currentNode);\n } else {\n currentNode = currentNode.nextSibling;\n }\n }\n }\n\n // Update maps\n nodeMap.clear();\n for (let i = 0; i < newLength; i++) {\n const itemKey = currentKey(newList[i], i, newList);\n nodeMap.set(itemKey, newElements[i]);\n }\n (anchor as any).__kt_for_list__ = newElements;\n return anchor;\n };\n\n const { key: currentKey = (item: T) => item, map: currentMap } = props;\n const listRef = toReactive(props.list, redraw);\n const anchor = document.createComment('kt-for') as unknown as KTForElement;\n\n // Map to track rendered nodes by key\n const nodeMap = new Map<any, HTMLElement>();\n\n // Render initial list\n const elements: HTMLElement[] = [];\n for (let index = 0; index < listRef.value.length; index++) {\n const item = listRef.value[index];\n const itemKey = currentKey(item, index, listRef.value);\n const node = currentMap(item, index, listRef.value);\n nodeMap.set(itemKey, node);\n elements.push(node);\n }\n\n (anchor as any).__kt_for_list__ = elements;\n\n $initRef(props, anchor);\n\n return anchor;\n}\n\n// Longest Increasing Subsequence algorithm (optimized for diff)\nfunction getSequence(arr: number[]): number[] {\n const p = arr.slice();\n const result = [0];\n let i: number, j: number, u: number, v: number, c: number;\n const len = arr.length;\n\n for (i = 0; i < len; i++) {\n const arrI = arr[i];\n if (arrI === -1) continue;\n\n j = result[result.length - 1];\n if (arr[j] < arrI) {\n p[i] = j;\n result.push(i);\n continue;\n }\n\n u = 0;\n v = result.length - 1;\n\n while (u < v) {\n c = ((u + v) / 2) | 0;\n if (arr[result[c]] < arrI) {\n u = c + 1;\n } else {\n v = c;\n }\n }\n\n if (arrI < arr[result[u]]) {\n if (u > 0) {\n p[i] = result[u - 1];\n }\n result[u] = i;\n }\n }\n\n u = result.length;\n v = result[u - 1];\n\n while (u-- > 0) {\n result[u] = v;\n v = p[v];\n }\n\n return result;\n}\n"],"names":["Fragment","FragmentArray"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/reactive/core.ts","../src/h/attr-helpers.ts","../src/h/attr.ts","../src/h/content.ts","../src/reactive/ref.ts","../src/reactive/computed.ts","../src/reactive/effect.ts","../src/reactive/index.ts","../src/h/model.ts","../src/h/index.ts","../src/jsx/fragment.ts","../src/jsx/common.ts","../src/jsx/jsx-runtime.ts","../src/jsx/async.ts","../src/jsx/for.ts","../src/jsx/if.ts"],"sourcesContent":["import type { KTReactive } from '../types/reactive.js';\nimport type { KTComputed, KTRef } from './index.js';\n\nexport const enum KTReactiveType {\n REF = 1,\n COMPUTED = 2,\n}\n\nexport const isKT = <T = any>(obj: any): obj is KTReactive<T> => obj?.isKT;\nexport const isRef = <T = any>(obj: any): obj is KTRef<T> => obj?.ktType === KTReactiveType.REF;\nexport const isComputed = <T = any>(obj: any): obj is KTComputed<T> => obj?.ktType === KTReactiveType.COMPUTED;\n","const booleanHandler = (element: HTMLElement | SVGElement | MathMLElement, key: string, value: any) => {\n if (key in element) {\n (element as any)[key] = !!value;\n } else {\n element.setAttribute(key, value);\n }\n};\n\nconst valueHandler = (element: HTMLElement | SVGElement | MathMLElement, key: string, value: any) => {\n if (key in element) {\n (element as any)[key] = value;\n } else {\n element.setAttribute(key, value);\n }\n};\n\n// Attribute handlers map for optimized lookup\nexport const handlers: Record<\n string,\n (element: HTMLElement | SVGElement | MathMLElement, key: string, value: any) => void\n> = {\n checked: booleanHandler,\n selected: booleanHandler,\n value: valueHandler,\n valueAsDate: valueHandler,\n valueAsNumber: valueHandler,\n defaultValue: valueHandler,\n defaultChecked: booleanHandler,\n defaultSelected: booleanHandler,\n disabled: booleanHandler,\n readOnly: booleanHandler,\n multiple: booleanHandler,\n required: booleanHandler,\n autofocus: booleanHandler,\n open: booleanHandler,\n controls: booleanHandler,\n autoplay: booleanHandler,\n loop: booleanHandler,\n muted: booleanHandler,\n defer: booleanHandler,\n async: booleanHandler,\n hidden: (element, _key, value) => ((element as HTMLElement).hidden = !!value),\n};\n\ntype InputElement = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\n\ntype StringEventHandler = (element: InputElement, handler: (value: string) => void) => void;\ntype NumberEventHandler = (element: InputElement, handler: (value: number) => void) => void;\n\nexport const ktEventHandlers: Record<string, StringEventHandler | NumberEventHandler> = {\n 'on:ktchange': (element: InputElement, handler: (value: string) => void) =>\n element.addEventListener('change', () => handler(element.value)),\n 'ontrim:ktchange': (element: InputElement, handler: (value: string) => void) =>\n element.addEventListener('change', () => handler(element.value.trim())),\n 'on:ktchangenumber': (element: InputElement, handler: (value: number) => void) =>\n element.addEventListener('change', () => handler(Number(element.value))),\n 'on:ktinput': (element: InputElement, handler: (value: string) => void) =>\n element.addEventListener('input', () => handler(element.value)),\n 'ontrim:ktinput': (element: InputElement, handler: (value: string) => void) =>\n element.addEventListener('input', () => handler(element.value.trim())),\n 'on:ktinputnumber': (element: InputElement, handler: (value: number) => void) =>\n element.addEventListener('input', () => handler(Number(element.value))),\n};\n","import type { KTReactifyProps } from '../types/reactive.js';\nimport type { KTRawAttr, KTAttribute } from '../types/h.js';\nimport { isKT } from '../reactive/core.js';\nimport { handlers } from './attr-helpers.js';\n\nconst defaultHandler = (element: HTMLElement | SVGElement | MathMLElement, key: string, value: any) =>\n element.setAttribute(key, value);\n\nconst setElementStyle = (\n element: HTMLElement | SVGElement | MathMLElement,\n style: Partial<CSSStyleDeclaration> | string,\n) => {\n if (typeof style === 'string') {\n (element as HTMLElement).style.cssText = style;\n return;\n }\n\n for (const key in style) {\n (element as any).style[key as any] = style[key];\n }\n};\n\nfunction attrIsObject(element: HTMLElement | SVGElement | MathMLElement, attr: KTReactifyProps<KTAttribute>) {\n const classValue = attr.class || attr.className;\n if (classValue !== undefined) {\n if (isKT<string>(classValue)) {\n element.setAttribute('class', classValue.value);\n classValue.addOnChange((v) => element.setAttribute('class', v));\n } else {\n element.setAttribute('class', classValue);\n }\n }\n\n const style = attr.style;\n if (style) {\n if (typeof style === 'string') {\n element.setAttribute('style', style);\n } else if (typeof style === 'object') {\n if (isKT(style)) {\n setElementStyle(element, style.value);\n style.addOnChange((v: Partial<CSSStyleDeclaration> | string) => setElementStyle(element, v));\n } else {\n setElementStyle(element, style as Partial<CSSStyleDeclaration>);\n }\n }\n }\n\n if ('k-html' in attr) {\n const html = attr['k-html'];\n if (isKT(html)) {\n element.innerHTML = html.value;\n html.addOnChange((v) => (element.innerHTML = v));\n } else {\n element.innerHTML = html;\n }\n }\n\n for (const key in attr) {\n // & Arranged in order of usage frequency\n if (\n // key === 'k-if' ||\n // key === 'k-else' ||\n key === 'k-model' ||\n key === 'k-for' ||\n key === 'k-key' ||\n key === 'ref' ||\n key === 'class' ||\n key === 'className' ||\n key === 'style' ||\n key === 'children' ||\n key === 'k-html'\n ) {\n continue;\n }\n\n const o = attr[key];\n\n // normal event handler\n if (key.startsWith('on:')) {\n if (o) {\n element.addEventListener(key.slice(3), o); // chop off the `on:`\n }\n continue;\n }\n\n // normal attributes\n const handler = handlers[key] || defaultHandler;\n if (isKT(o)) {\n handler(element, key, o.value);\n o.addOnChange((v) => handler(element, key, v));\n } else {\n handler(element, key, o);\n }\n }\n}\n\nexport function applyAttr(element: HTMLElement | SVGElement | MathMLElement, attr: KTRawAttr) {\n if (!attr) {\n return;\n }\n if (typeof attr === 'object' && attr !== null) {\n attrIsObject(element, attr as KTAttribute);\n } else {\n $throw('attr must be an object.');\n }\n}\n","import { $append, $isArray, $isNode, $isThenable } from '@ktjs/shared';\nimport type { KTAvailableContent, KTRawContent } from '../types/h.js';\nimport { isKT } from '../reactive/core.js';\n\nconst assureNode = (o: any) => ($isNode(o) ? o : document.createTextNode(o));\n\nfunction apdSingle(element: HTMLElement | DocumentFragment | SVGElement | MathMLElement, c: KTAvailableContent) {\n // & JSX should ignore false, undefined, and null\n if (c === false || c === undefined || c === null) {\n return;\n }\n\n if (isKT(c)) {\n let node = assureNode(c.value);\n $append.call(element, node);\n c.addOnChange((newValue, oldValue) => {\n if ($isNode(newValue) && $isNode(oldValue)) {\n // & this case is handled automically in `class KTRef`\n return;\n }\n\n const oldNode = node;\n node = assureNode(newValue);\n oldNode.replaceWith(node);\n });\n } else {\n $append.call(element, c as Node);\n\n // Handle KTFor anchor\n const list = (c as any).__kt_for_list__ as any[];\n if ($isArray(list)) {\n apd(element, list);\n }\n }\n}\n\nfunction apd(element: HTMLElement | DocumentFragment | SVGElement | MathMLElement, c: KTAvailableContent) {\n if ($isThenable(c)) {\n c.then((r) => apd(element, r));\n } else if ($isArray(c)) {\n for (let i = 0; i < c.length; i++) {\n // & might be thenable here too\n const ci = c[i];\n if ($isThenable(ci)) {\n const comment = document.createComment('ktjs-promise-placeholder');\n $append.call(element, comment);\n ci.then((awaited) => comment.replaceWith(awaited));\n } else {\n apdSingle(element, ci);\n }\n }\n } else {\n // & here is thened, so must be a simple elementj\n apdSingle(element, c);\n }\n}\n\nexport function applyContent(element: HTMLElement | SVGElement | MathMLElement, content: KTRawContent): void {\n if ($isArray(content)) {\n for (let i = 0; i < content.length; i++) {\n apd(element, content[i]);\n }\n } else {\n apd(element, content as KTAvailableContent);\n }\n}\n","import { $emptyFn, $entries, $is, $replaceNode } from '@ktjs/shared';\nimport type { KTReactive, ReactiveChangeHandler } from '../types/reactive.js';\nimport type { JSX } from '../types/jsx.js';\nimport { isComputed, isRef, KTReactiveType } from './core.js';\n\nexport class KTRef<T> implements KTReactive<T> {\n /**\n * Indicates that this is a KTRef instance\n */\n isKT = true as const;\n\n ktType = KTReactiveType.REF;\n\n /**\n * @internal\n */\n private _value: T;\n\n /**\n * @internal\n */\n private _onChanges: Array<ReactiveChangeHandler<T>>;\n\n /**\n * @internal\n */\n private _emit(newValue: T, oldValue: T) {\n for (let i = 0; i < this._onChanges.length; i++) {\n this._onChanges[i](newValue, oldValue);\n }\n }\n\n constructor(_value: T, _onChanges: Array<ReactiveChangeHandler<T>>) {\n this._value = _value;\n this._onChanges = _onChanges;\n }\n\n /**\n * If new value and old value are both nodes, the old one will be replaced in the DOM\n */\n get value() {\n return this._value;\n }\n\n set value(newValue: T) {\n if ($is(newValue, this._value)) {\n return;\n }\n\n const oldValue = this._value;\n $replaceNode(oldValue, newValue);\n this._value = newValue;\n this._emit(newValue, oldValue);\n }\n\n /**\n * Force all listeners to run even when reference identity has not changed.\n * Useful for in-place array/object mutations.\n */\n notify() {\n this._emit(this._value, this._value);\n }\n\n /**\n * Mutate current value in-place and notify listeners once.\n *\n * @example\n * const items = ref<number[]>([1, 2]);\n * items.mutate((list) => list.push(3));\n */\n mutate<R = void>(mutator: (currentValue: T) => R): R {\n if (typeof mutator !== 'function') {\n $throw('KTRef.mutate: mutator must be a function');\n }\n const oldValue = this._value;\n const result = mutator(this._value);\n this._emit(this._value, oldValue);\n return result;\n }\n\n /**\n * Register a callback when the value changes\n * @param callback (newValue, oldValue) => xxx\n */\n addOnChange(callback: ReactiveChangeHandler<T>) {\n if (typeof callback !== 'function') {\n $throw('KTRef.addOnChange: callback must be a function');\n }\n this._onChanges.push(callback);\n }\n\n removeOnChange(callback: ReactiveChangeHandler<T>) {\n for (let i = this._onChanges.length - 1; i >= 0; i--) {\n if (this._onChanges[i] === callback) {\n this._onChanges.splice(i, 1);\n return true;\n }\n }\n return false;\n }\n}\n\n/**\n * Reference to the created HTML element.\n * - **Only** respond to `ref.value` changes, not reactive to internal changes of the element.\n * - can alse be used to store normal values, but it is not reactive.\n * - if the value is already a `KTRef`, it will be returned **directly**.\n * @param value mostly an HTMLElement\n */\nexport function ref<T = JSX.Element>(value?: T, onChange?: ReactiveChangeHandler<T>): KTRef<T> {\n return new KTRef<T>(value as any, onChange ? [onChange] : []);\n}\n\n/**\n * Convert a value to `KTRef`.\n * - Returns the original value if it is already a `KTRef`.\n * - Throws error if the value is a `KTComputed`.\n * - Otherwise wraps the value with `ref()`.\n * @param o value to convert\n */\nexport const toRef = <T = any>(o: any): KTRef<T> => {\n if (isRef(o)) {\n return o;\n } else if (isComputed(o)) {\n $throw('Computed values cannot be used as KTRef.');\n } else {\n return ref(o);\n }\n};\n\nexport type KTSurfaceRef<T extends object> = {\n [K in keyof T]: KTRef<T[K]>;\n} & {\n /**\n * Get the dereferenced object like the original one\n */\n kcollect: () => T;\n};\n\nfunction kcollect<T extends object>(this: KTSurfaceRef<T>): T {\n const newObj: any = {};\n const entries = $entries(this);\n for (let i = 0; i < entries.length; i++) {\n const key = entries[i][0];\n if (key === 'kcollect') {\n continue;\n }\n newObj[key] = entries[i][1].value;\n }\n return newObj;\n}\n\n/**\n * Make all first-level properties of the object a `KTRef`.\n * - `obj.a.b` is not reactive\n */\nexport const surfaceRef = <T extends object>(obj: T): KTSurfaceRef<T> => {\n const entries = $entries(obj);\n const newObj = { kcollect } as KTSurfaceRef<T>;\n for (let i = 0; i < entries.length; i++) {\n (newObj[entries[i][0]] as KTReactive<any>) = ref(entries[i][1]);\n }\n return newObj;\n};\n\n// # asserts\n\n/**\n * Assert k-model to be a ref object\n */\nexport const $modelOrRef = <T = any>(props: any, defaultValue?: T): KTRef<T> => {\n // & props is an object. Won't use it in any other place\n if ('k-model' in props) {\n const kmodel = props['k-model'];\n if (isRef(kmodel)) {\n return kmodel;\n } else {\n $throw(`k-model data must be a KTRef object, please use 'ref(...)' to wrap it.`);\n }\n }\n return ref(defaultValue) as KTRef<T>;\n};\n\nconst $refSetter = <T>(props: { ref?: KTRef<T> }, node: T) => (props.ref!.value = node);\ntype RefSetter<T> = (props: { ref?: KTRef<T> }, node: T) => void;\n\n/**\n * Whether `props.ref` is a `KTRef` only needs to be checked in the initial render\n */\nexport const $initRef = <T extends Node>(props: { ref?: KTRef<T> }, node: T): RefSetter<T> => {\n if (!('ref' in props)) {\n return $emptyFn;\n }\n\n const r = props.ref;\n if (isRef(r)) {\n r.value = node;\n return $refSetter;\n } else {\n $throw('Fragment: ref must be a KTRef');\n }\n};\n","import { $replaceNode } from '@ktjs/shared';\nimport type { KTReactive, ReactiveChangeHandler } from '../types/reactive.js';\nimport type { JSX } from '../types/jsx.js';\nimport { isKT, KTReactiveType } from './core.js';\n\nexport class KTComputed<T> implements KTReactive<T> {\n /**\n * Indicates that this is a KTRef instance\n */\n isKT = true as const;\n\n ktType = KTReactiveType.COMPUTED;\n\n /**\n * @internal\n */\n private _calculator: () => T;\n\n /**\n * @internal\n */\n private _value: T;\n\n /**\n * @internal\n */\n private _onChanges: Array<ReactiveChangeHandler<T>> = [];\n\n /**\n * @internal\n */\n private _emit(newValue: T, oldValue: T) {\n for (let i = 0; i < this._onChanges.length; i++) {\n this._onChanges[i](newValue, oldValue);\n }\n }\n\n /**\n * @internal\n */\n private _recalculate(forceEmit: boolean = false) {\n const oldValue = this._value;\n const newValue = this._calculator();\n if (oldValue === newValue) {\n if (forceEmit) {\n this._emit(newValue, oldValue);\n }\n return;\n }\n this._value = newValue;\n $replaceNode(oldValue, newValue);\n this._emit(newValue, oldValue);\n }\n\n /**\n * @internal\n */\n private _subscribe(reactives: Array<KTReactive<unknown>>) {\n for (let i = 0; i < reactives.length; i++) {\n const reactive = reactives[i];\n reactive.addOnChange(() => this._recalculate());\n }\n }\n\n constructor(_calculator: () => T, reactives: Array<KTReactive<unknown>>) {\n this._calculator = _calculator;\n this._value = _calculator();\n this._subscribe(reactives);\n }\n\n /**\n * If new value and old value are both nodes, the old one will be replaced in the DOM\n */\n get value() {\n return this._value;\n }\n\n set value(_newValue: T) {\n $throw('KTComputed: cannot set value of a computed value');\n }\n\n /**\n * Force listeners to run once with the latest computed result.\n */\n notify() {\n this._recalculate(true);\n }\n\n /**\n * Computed values are derived from dependencies and should not be mutated manually.\n */\n mutate<R = void>(): R {\n $warn('KTComputed.mutate: computed is derived automatically; manual mutate is ignored. Use notify() instead');\n return this._value as unknown as R;\n }\n\n /**\n * Register a callback when the value changes\n * @param callback (newValue, oldValue) => xxx\n */\n addOnChange(callback: ReactiveChangeHandler<T>) {\n if (typeof callback !== 'function') {\n $throw('KTRef.addOnChange: callback must be a function');\n }\n this._onChanges.push(callback);\n }\n\n /**\n * Unregister a callback\n * @param callback (newValue, oldValue) => xxx\n */\n removeOnChange(callback: ReactiveChangeHandler<T>) {\n for (let i = this._onChanges.length - 1; i >= 0; i--) {\n if (this._onChanges[i] === callback) {\n this._onChanges.splice(i, 1);\n return true;\n }\n }\n return false;\n }\n}\n\n/**\n * Create a reactive computed value\n * @param computeFn\n * @param reactives refs and computeds that this computed depends on\n */\nexport function computed<T = JSX.Element>(computeFn: () => T, reactives: Array<KTReactive<any>>): KTComputed<T> {\n if (reactives.some((v) => !isKT(v))) {\n $throw('computed: all reactives must be KTRef or KTComputed instances');\n }\n return new KTComputed<T>(computeFn, reactives);\n}\n","import { $emptyFn } from '@ktjs/shared';\nimport type { KTReactive } from '../types/reactive.js';\n\ninterface KTEffectOptions {\n lazy: boolean;\n onCleanup: () => void;\n debugName: string;\n}\n\n/**\n * Register a reactive effect with options.\n * @param effectFn The effect function to run when dependencies change\n * @param reactives The reactive dependencies\n * @param options Effect options: lazy, onCleanup, debugName\n * @returns stop function to remove all listeners\n */\nexport function effect(effectFn: () => void, reactives: Array<KTReactive<any>>, options?: Partial<KTEffectOptions>) {\n const { lazy = false, onCleanup = $emptyFn, debugName = '' } = Object(options);\n\n let active = true;\n\n const run = () => {\n if (!active) {\n return;\n }\n\n // cleanup before rerun\n onCleanup();\n\n try {\n effectFn();\n } catch (err) {\n $debug('effect error:', debugName, err);\n }\n };\n\n // subscribe to dependencies\n for (let i = 0; i < reactives.length; i++) {\n reactives[i].addOnChange(run);\n }\n\n // auto run unless lazy\n if (!lazy) {\n run();\n }\n\n // stop function\n return () => {\n if (!active) {\n return;\n }\n active = false;\n\n for (let i = 0; i < reactives.length; i++) {\n reactives[i].removeOnChange(run);\n }\n\n // final cleanup\n onCleanup();\n };\n}\n","import type { KTReactive, ReactiveChangeHandler } from '../types/reactive.js';\nimport type { JSX } from '../types/jsx.js';\nimport { isKT } from './core.js';\nimport { ref } from './ref.js';\n\nexport const toReactive = <T>(value: T | KTReactive<T>, onChange?: ReactiveChangeHandler<T>): KTReactive<T> => {\n if (isKT(value)) {\n if (onChange) {\n value.addOnChange(onChange);\n }\n return value;\n } else {\n return ref(value as T, onChange) as KTReactive<T>;\n }\n};\n\n/**\n * Extracts the value from a KTReactive, or returns the value directly if it's not reactive.\n */\nexport function dereactive<T = JSX.Element>(value: T | KTReactive<T>): T {\n return isKT<T>(value) ? value.value : value;\n}\n\nexport * from './core.js';\nexport * from './ref.js';\nexport * from './computed.js';\nexport * from './effect.js';\n","import { $applyModel, type InputElementTag } from '@ktjs/shared';\nimport { isKT, type KTRef } from '../reactive/index.js';\n\nexport function applyKModel(element: HTMLElementTagNameMap[InputElementTag], valueRef: KTRef<any>) {\n if (!isKT(valueRef)) {\n $throw('k-model value must be a KTRef.');\n }\n\n if (element.tagName === 'INPUT') {\n if (element.type === 'radio' || element.type === 'checkbox') {\n $applyModel(element, valueRef, 'checked', 'change');\n } else {\n $applyModel(element, valueRef, 'value', 'input');\n }\n } else if (element.tagName === 'SELECT') {\n $applyModel(element, valueRef, 'value', 'change');\n } else if (element.tagName === 'TEXTAREA') {\n $applyModel(element, valueRef, 'value', 'input');\n } else {\n $warn('not supported element for k-model:');\n }\n}\n","import type { HTMLTag, MathMLTag, SVGTag } from '@ktjs/shared';\nimport type { KTRawAttr, KTRawContent, HTML } from '../types/h.js';\n\nimport { applyAttr } from './attr.js';\nimport { applyContent } from './content.js';\nimport { applyKModel } from './model.js';\n\nconst htmlCreator = (tag: string) => document.createElement(tag);\nconst svgCreator = (tag: string) => document.createElementNS('http://www.w3.org/2000/svg', tag);\nconst mathMLCreator = (tag: string) => document.createElementNS('http://www.w3.org/1998/Math/MathML', tag);\nlet creator: (tag: string) => any = htmlCreator;\n\n/**\n * Create an enhanced HTMLElement.\n * - Only supports HTMLElements, **NOT** SVGElements or other Elements.\n * @param tag tag of an `HTMLElement`\n * @param attr attribute object or className\n * @param content a string or an array of HTMLEnhancedElement as child nodes\n *\n * __PKG_INFO__\n */\nexport const h = <T extends HTMLTag | SVGTag | MathMLTag>(\n tag: T,\n attr?: KTRawAttr,\n content?: KTRawContent,\n): HTML<T> => {\n if (typeof tag !== 'string') {\n $throw('tagName must be a string.');\n }\n\n if (attr) {\n if (flags.svg in attr) {\n delete attr[flags.svg];\n creator = svgCreator;\n } else if (flags.mathml in attr) {\n delete attr[flags.mathml];\n creator = mathMLCreator;\n } else {\n creator = htmlCreator;\n }\n }\n\n // * start creating the element\n const element = creator(tag) as HTML<T>;\n\n // * Handle content\n applyAttr(element, attr);\n applyContent(element, content);\n\n if (typeof attr === 'object' && attr !== null && 'k-model' in attr) {\n applyKModel(element as any, attr['k-model'] as any);\n }\n\n return element;\n};\n","import { $forEach, $isArray } from '@ktjs/shared';\nimport type { KTRef } from '../reactive/ref.js';\nimport type { KTReactive } from '../types/reactive.js';\nimport type { KTRawContent } from '../types/h.js';\nimport type { JSX } from '../types/jsx.js';\n\nimport { $initRef, isKT, toReactive } from '../reactive/index.js';\n\nconst FRAGMENT_MOUNT_PATCHED = '__kt_fragment_mount_patched__';\nconst FRAGMENT_MOUNT = '__kt_fragment_mount__';\n\nif (typeof Node !== 'undefined' && !(globalThis as any)[FRAGMENT_MOUNT_PATCHED]) {\n (globalThis as any)[FRAGMENT_MOUNT_PATCHED] = true;\n\n const originAppendChild = Node.prototype.appendChild;\n Node.prototype.appendChild = function (node) {\n const result = originAppendChild.call(this, node);\n const mount = (node as any)[FRAGMENT_MOUNT];\n if (typeof mount === 'function') {\n mount();\n }\n return result as any;\n };\n\n const originInsertBefore = Node.prototype.insertBefore;\n Node.prototype.insertBefore = function (node: Node, child: Node | null) {\n const result = originInsertBefore.call(this, node, child);\n const mount = (node as any)[FRAGMENT_MOUNT];\n if (typeof mount === 'function') {\n mount();\n }\n return result as any;\n };\n}\n\nexport interface FragmentProps<T extends HTMLElement = HTMLElement> {\n /** Array of child elements, supports reactive arrays */\n children: T[] | KTReactive<T[]>;\n\n /** element key function for optimization (future enhancement) */\n key?: (element: T, index: number, array: T[]) => any;\n\n /** ref to get the anchor node */\n ref?: KTRef<JSX.Element>;\n}\n\n/**\n * Fragment - Container component for managing arrays of child elements\n *\n * Features:\n * 1. Returns a comment anchor node, child elements are inserted after the anchor\n * 2. Supports reactive arrays, automatically updates DOM when array changes\n * 3. Basic version uses simple replacement algorithm (remove all old elements, insert all new elements)\n * 4. Future enhancement: key-based optimization\n *\n * Usage example:\n * ```tsx\n * const children = ref([<div>A</div>, <div>B</div>]);\n * const fragment = <Fragment children={children} />;\n * document.body.appendChild(fragment);\n *\n * // Automatic update\n * children.value = [<div>C</div>, <div>D</div>];\n * ```\n */\nexport function Fragment<T extends HTMLElement = HTMLElement>(props: FragmentProps<T>): JSX.Element {\n const elements: T[] = [];\n const anchor = document.createComment('kt-fragment') as unknown as JSX.Element;\n let inserted = false;\n let observer: MutationObserver | undefined;\n\n const redraw = () => {\n const newElements = childrenRef.value;\n const parent = anchor.parentNode;\n\n if (!parent) {\n elements.length = 0;\n for (let i = 0; i < newElements.length; i++) {\n elements.push(newElements[i]);\n }\n (anchor as any).__kt_fragment_list__ = elements;\n return;\n }\n\n for (let i = 0; i < elements.length; i++) {\n elements[i].remove();\n }\n\n const fragment = document.createDocumentFragment();\n elements.length = 0;\n\n for (let i = 0; i < newElements.length; i++) {\n const element = newElements[i];\n elements.push(element);\n fragment.appendChild(element);\n }\n\n parent.insertBefore(fragment, anchor.nextSibling);\n inserted = true;\n delete (anchor as any)[FRAGMENT_MOUNT];\n observer?.disconnect();\n observer = undefined;\n (anchor as any).__kt_fragment_list__ = elements;\n };\n\n const childrenRef = toReactive(props.children, redraw);\n\n const renderInitial = () => {\n const current = childrenRef.value;\n elements.length = 0;\n\n const fragment = document.createDocumentFragment();\n for (let i = 0; i < current.length; i++) {\n const element = current[i];\n elements.push(element);\n fragment.appendChild(element);\n }\n\n (anchor as any).__kt_fragment_list__ = elements;\n\n const parent = anchor.parentNode;\n if (parent && !inserted) {\n parent.insertBefore(fragment, anchor.nextSibling);\n inserted = true;\n }\n };\n\n renderInitial();\n\n (anchor as any)[FRAGMENT_MOUNT] = () => {\n if (!inserted && anchor.parentNode) {\n redraw();\n }\n };\n\n observer = new MutationObserver(() => {\n if (anchor.parentNode && !inserted) {\n redraw();\n observer?.disconnect();\n observer = undefined;\n }\n });\n\n observer.observe(document.body, { childList: true, subtree: true });\n\n $initRef(props, anchor);\n\n return anchor;\n}\n\n/**\n * Convert KTRawContent to HTMLElement array\n */\nexport function convertChildrenToElements(children: KTRawContent): HTMLElement[] {\n const elements: HTMLElement[] = [];\n\n const processChild = (child: any): void => {\n if (child === undefined || child === null || child === false || child === true) {\n // Ignore null, undefined, false, true\n return;\n }\n\n if ($isArray(child)) {\n // Recursively process array\n $forEach(child, processChild);\n return;\n }\n\n if (typeof child === 'string' || typeof child === 'number') {\n const span = document.createElement('span');\n span.textContent = String(child);\n elements.push(span);\n return;\n }\n\n if (child instanceof HTMLElement) {\n elements.push(child);\n return;\n }\n\n if (isKT(child)) {\n processChild(child.value);\n return;\n }\n\n console.warn('Fragment: unsupported child type', child);\n };\n\n processChild(children);\n return elements;\n}\n","import type { JSXTag } from '@ktjs/shared';\nimport type { KTAttribute } from '../types/h.js';\nimport type { JSX } from '../types/jsx.js';\nimport { h } from '../h/index';\n\nexport const jsxh = (tag: JSXTag, props: KTAttribute): HTMLElement => {\n if (typeof tag === 'function') {\n return tag(props) as HTMLElement;\n } else {\n return h(tag, props, props.children) as HTMLElement;\n }\n};\n\nexport const placeholder = (data: string): JSX.Element => document.createComment(data) as unknown as JSX.Element;\n","import type { JSXTag } from '@ktjs/shared';\nimport type { KTAttribute, KTRawContent } from '../types/h.js';\nimport type { JSX } from '../types/jsx.js';\n\nimport { h } from '../h/index.js';\nimport { $initRef, isComputed, type KTRef, ref } from '../reactive/index.js';\nimport { convertChildrenToElements, Fragment as FragmentArray } from './fragment.js';\nimport { jsxh, placeholder } from './common.js';\n\n/**\n * @param tag html tag or function component\n * @param props properties/attributes\n */\nexport function jsx(tag: JSXTag, props: KTAttribute): JSX.Element {\n if (isComputed(props.ref)) {\n $throw('Cannot assign a computed value to an element.');\n }\n\n const el = jsxh(tag, props);\n $initRef(props, el);\n return el;\n}\n\n/**\n * Fragment support - returns an array of children\n * Enhanced Fragment component that manages arrays of elements\n */\nexport function Fragment(props: { children?: KTRawContent }): JSX.Element {\n const { children } = props ?? {};\n\n if (!children) {\n return placeholder('kt-fragment-empty');\n }\n\n const elements = convertChildrenToElements(children);\n\n return FragmentArray({ children: elements });\n}\n\n/**\n * JSX Development runtime - same as jsx but with additional dev checks\n */\nexport const jsxDEV: typeof jsx = (...args) => {\n // console.log('JSX DEV called:', ...args);\n // console.log('children', (args[1] as any)?.children);\n return jsx(...args);\n};\n\n/**\n * JSX runtime for React 17+ automatic runtime\n * This is called when using jsx: \"react-jsx\" or \"react-jsxdev\"\n */\nexport const jsxs = jsx;\n\n// Export h as the classic JSX factory for backward compatibility\nexport { h, h as createElement };\n\n/**\n * A helper to create redrawable elements\n * ```tsx\n * export function MyComponent() {\n * let aa = 10;\n * // ...\n * // aa might be changed\n * return createRedrawable(() => <div>{aa}</div>);\n * }\n * ```\n * Then the returned element has a `redraw` method to redraw itself with new values.\n * @param creator a simple creator function that returns an element\n * @returns created element's ref\n */\nexport function createRedrawable<T>(creator: () => T): KTRef<T> & { redraw: () => T } {\n const elRef = ref<T>() as KTRef<T> & { redraw: () => T };\n\n const redraw = () => {\n elRef.value = creator(); // ref setter automatically calls replaceWith\n elRef.redraw = redraw;\n return elRef.value;\n };\n\n redraw();\n return elRef;\n}\n","import { $isThenable } from '@ktjs/shared';\nimport type { KTComponent, KTRawContent } from '../types/h.js';\nimport type { JSX } from '../types/jsx.js';\nimport type { KTRef } from '../reactive/ref.js';\n\n/**\n * Extract component props type (excluding ref and children)\n */\ntype ExtractComponentProps<T> = T extends (props: infer P) => any ? Omit<P, 'ref' | 'children'> : {};\n\nexport function KTAsync<T extends KTComponent>(\n props: {\n ref?: KTRef<JSX.Element>;\n skeleton?: JSX.Element;\n component: T;\n children?: KTRawContent;\n } & ExtractComponentProps<T>,\n): JSX.Element {\n const raw = props.component(props);\n let comp: JSX.Element =\n props.skeleton ?? (document.createComment('ktjs-suspense-placeholder') as unknown as JSX.Element);\n\n if ($isThenable(raw)) {\n raw.then((resolved) => comp.replaceWith(resolved));\n } else {\n comp = raw as JSX.Element;\n }\n\n return comp;\n}\n","import type { KTRef } from '../reactive/ref.js';\nimport type { KTReactive } from '../types/reactive.js';\nimport type { JSX } from '../types/jsx.js';\nimport { $initRef, toReactive } from '../reactive/index.js';\n\nexport type KTForElement = JSX.Element;\n\nexport interface KTForProps<T> {\n ref?: KTRef<KTForElement>;\n list: T[] | KTReactive<T[]>;\n key?: (item: T, index: number, array: T[]) => any;\n map: (item: T, index: number, array: T[]) => HTMLElement;\n}\n\n/**\n * KTFor - List rendering component with key-based optimization\n * Returns a Comment anchor node with rendered elements in __kt_for_list__\n */\nexport function KTFor<T>(props: KTForProps<T>): KTForElement {\n const redraw = () => {\n const newList = listRef.value;\n\n const parent = anchor.parentNode;\n if (!parent) {\n // If not in DOM yet, just rebuild the list\n const newElements: HTMLElement[] = [];\n nodeMap.clear();\n for (let index = 0; index < newList.length; index++) {\n const item = newList[index];\n const itemKey = currentKey(item, index, newList);\n const node = currentMap(item, index, newList);\n nodeMap.set(itemKey, node);\n newElements.push(node);\n }\n (anchor as any).__kt_for_list__ = newElements;\n return anchor;\n }\n\n const oldLength = (anchor as any).__kt_for_list__.length;\n const newLength = newList.length;\n\n // Fast path: empty list\n if (newLength === 0) {\n nodeMap.forEach((node) => node.remove());\n nodeMap.clear();\n (anchor as any).__kt_for_list__ = [];\n return anchor;\n }\n\n // Fast path: all new items\n if (oldLength === 0) {\n const newElements: HTMLElement[] = [];\n const fragment = document.createDocumentFragment();\n for (let i = 0; i < newLength; i++) {\n const item = newList[i];\n const itemKey = currentKey(item, i, newList);\n const node = currentMap(item, i, newList);\n nodeMap.set(itemKey, node);\n newElements.push(node);\n fragment.appendChild(node);\n }\n parent.insertBefore(fragment, anchor.nextSibling);\n (anchor as any).__kt_for_list__ = newElements;\n return anchor;\n }\n\n // Build key index map and new elements array in one pass\n const newKeyToNewIndex = new Map<any, number>();\n const newElements: HTMLElement[] = new Array(newLength);\n let maxNewIndexSoFar = 0;\n let moved = false;\n\n for (let i = 0; i < newLength; i++) {\n const item = newList[i];\n const itemKey = currentKey(item, i, newList);\n newKeyToNewIndex.set(itemKey, i);\n\n if (nodeMap.has(itemKey)) {\n // Reuse existing node\n const node = nodeMap.get(itemKey)!;\n newElements[i] = node;\n\n // Track if items moved\n if (i < maxNewIndexSoFar) {\n moved = true;\n } else {\n maxNewIndexSoFar = i;\n }\n } else {\n // Create new node\n newElements[i] = currentMap(item, i, newList);\n }\n }\n\n // Remove nodes not in new list\n const toRemove: HTMLElement[] = [];\n nodeMap.forEach((node, key) => {\n if (!newKeyToNewIndex.has(key)) {\n toRemove.push(node);\n }\n });\n for (let i = 0; i < toRemove.length; i++) {\n toRemove[i].remove();\n }\n\n // Update DOM with minimal operations\n if (moved) {\n // Use longest increasing subsequence to minimize moves\n const seq = getSequence(newElements.map((el, i) => (nodeMap.has(currentKey(newList[i], i, newList)) ? i : -1)));\n\n let j = seq.length - 1;\n let anchor: Node | null = null;\n\n // Traverse from end to start for stable insertions\n for (let i = newLength - 1; i >= 0; i--) {\n const node = newElements[i];\n\n if (j < 0 || i !== seq[j]) {\n // Node needs to be moved or inserted\n if (anchor) {\n parent.insertBefore(node, anchor);\n } else {\n // Insert at end\n let nextSibling = (anchor as any).nextSibling;\n let temp = nextSibling;\n while (temp && newElements.includes(temp as HTMLElement)) {\n temp = temp.nextSibling;\n }\n parent.insertBefore(node, temp);\n }\n } else {\n j--;\n }\n anchor = node;\n }\n } else {\n // No moves needed, just insert new nodes\n let currentNode = anchor.nextSibling;\n for (let i = 0; i < newLength; i++) {\n const node = newElements[i];\n if (currentNode !== node) {\n parent.insertBefore(node, currentNode);\n } else {\n currentNode = currentNode.nextSibling;\n }\n }\n }\n\n // Update maps\n nodeMap.clear();\n for (let i = 0; i < newLength; i++) {\n const itemKey = currentKey(newList[i], i, newList);\n nodeMap.set(itemKey, newElements[i]);\n }\n (anchor as any).__kt_for_list__ = newElements;\n return anchor;\n };\n\n const { key: currentKey = (item: T) => item, map: currentMap } = props;\n const listRef = toReactive(props.list, redraw);\n const anchor = document.createComment('kt-for') as unknown as KTForElement;\n\n // Map to track rendered nodes by key\n const nodeMap = new Map<any, HTMLElement>();\n\n // Render initial list\n const elements: HTMLElement[] = [];\n for (let index = 0; index < listRef.value.length; index++) {\n const item = listRef.value[index];\n const itemKey = currentKey(item, index, listRef.value);\n const node = currentMap(item, index, listRef.value);\n nodeMap.set(itemKey, node);\n elements.push(node);\n }\n\n (anchor as any).__kt_for_list__ = elements;\n\n $initRef(props, anchor);\n\n return anchor;\n}\n\n// Longest Increasing Subsequence algorithm (optimized for diff)\nfunction getSequence(arr: number[]): number[] {\n const p = arr.slice();\n const result = [0];\n let i: number, j: number, u: number, v: number, c: number;\n const len = arr.length;\n\n for (i = 0; i < len; i++) {\n const arrI = arr[i];\n if (arrI === -1) continue;\n\n j = result[result.length - 1];\n if (arr[j] < arrI) {\n p[i] = j;\n result.push(i);\n continue;\n }\n\n u = 0;\n v = result.length - 1;\n\n while (u < v) {\n c = ((u + v) / 2) | 0;\n if (arr[result[c]] < arrI) {\n u = c + 1;\n } else {\n v = c;\n }\n }\n\n if (arrI < arr[result[u]]) {\n if (u > 0) {\n p[i] = result[u - 1];\n }\n result[u] = i;\n }\n }\n\n u = result.length;\n v = result[u - 1];\n\n while (u-- > 0) {\n result[u] = v;\n v = p[v];\n }\n\n return result;\n}\n","import { $replaceNode, JSXTag } from '@ktjs/shared';\nimport type { KTAttribute } from '../types/h.js';\nimport type { KTReactive } from '../types/reactive.js';\n\nimport { isKT } from '../reactive/index.js';\nimport { jsxh, placeholder } from './common.js';\n\nexport function KTConditional(\n condition: boolean | KTReactive<boolean>,\n tagIf: JSXTag,\n propsIf: KTAttribute,\n tagElse?: JSXTag,\n propsElse?: KTAttribute,\n) {\n if (!isKT(condition)) {\n return condition ? jsxh(tagIf, propsIf) : tagElse ? jsxh(tagElse, propsElse!) : placeholder('kt-conditional');\n }\n\n if (tagElse) {\n let current = condition.value ? jsxh(tagIf, propsIf) : jsxh(tagElse!, propsElse!);\n condition.addOnChange((newValue) => {\n const old = current;\n current = newValue ? jsxh(tagIf, propsIf) : jsxh(tagElse!, propsElse!);\n old.replaceWith(current);\n });\n return current;\n } else {\n const dummy = placeholder('kt-conditional') as HTMLElement;\n let current = condition.value ? jsxh(tagIf, propsIf) : dummy;\n condition.addOnChange((newValue) => {\n const old = current;\n current = newValue ? jsxh(tagIf, propsIf) : dummy;\n old.replaceWith(current);\n });\n return current;\n }\n}\n"],"names":["Fragment","FragmentArray"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@ktjs/core",
3
- "version": "0.29.12",
3
+ "version": "0.30.2",
4
4
  "description": "Core functionality for kt.js - DOM manipulation utilities with JSX/TSX support",
5
+ "description_zh": "kt.js 的核心功能,提供支持 JSX/TSX 的 DOM 操作工具。",
5
6
  "type": "module",
6
7
  "module": "./dist/index.mjs",
7
8
  "types": "./dist/index.d.ts",