@ktjs/core 0.30.8 → 0.30.11

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/dist/index.d.ts CHANGED
@@ -1116,21 +1116,21 @@ declare class KTComputed<T> implements KTReactive<T> {
1116
1116
  /**
1117
1117
  * Force listeners to run once with the latest computed result.
1118
1118
  */
1119
- notify(): void;
1119
+ notify(changeKeys?: ReactiveChangeKey[]): void;
1120
1120
  /**
1121
1121
  * Computed values are derived from dependencies and should not be mutated manually.
1122
1122
  */
1123
- mutate<R = void>(): R;
1123
+ mutate<R = void>(_mutator?: (currentValue: T) => R, changeKeys?: ReactiveChangeKey[]): R;
1124
1124
  /**
1125
1125
  * Register a callback when the value changes
1126
1126
  * @param callback (newValue, oldValue) => xxx
1127
1127
  */
1128
- addOnChange(callback: ReactiveChangeHandler<T>): void;
1128
+ addOnChange<K extends ReactiveChangeKey | undefined>(callback: ReactiveChangeHandler<T>, key?: K): K extends undefined ? number : K;
1129
1129
  /**
1130
1130
  * Unregister a callback
1131
- * @param callback (newValue, oldValue) => xxx
1131
+ * @param key registered listener key
1132
1132
  */
1133
- removeOnChange(callback: ReactiveChangeHandler<T>): boolean;
1133
+ removeOnChange(key: ReactiveChangeKey): ReactiveChangeHandler<T> | undefined;
1134
1134
  }
1135
1135
  /**
1136
1136
  * Create a reactive computed value
@@ -1168,6 +1168,7 @@ declare const isRef: <T = any>(obj: any) => obj is KTRef<T>;
1168
1168
  declare const isComputed: <T = any>(obj: any) => obj is KTComputed<T>;
1169
1169
 
1170
1170
  type ReactiveChangeHandler<T> = (newValue: T, oldValue: T) => void;
1171
+ type ReactiveChangeKey = string | number;
1171
1172
 
1172
1173
  declare class KTReactive<T> {
1173
1174
  /**
@@ -1187,7 +1188,7 @@ declare class KTReactive<T> {
1187
1188
  * Force all listeners to run even when reference identity has not changed.
1188
1189
  * Useful for in-place array/object mutations.
1189
1190
  */
1190
- notify(): void;
1191
+ notify(changeKeys?: ReactiveChangeKey[]): void;
1191
1192
 
1192
1193
  /**
1193
1194
  * Mutate current value in-place and notify listeners once.
@@ -1196,15 +1197,18 @@ declare class KTReactive<T> {
1196
1197
  * const items = ref<number[]>([1, 2]);
1197
1198
  * items.mutate((list) => list.push(3));
1198
1199
  */
1199
- mutate<R = void>(mutator: (currentValue: T) => R): R;
1200
+ mutate<R = void>(mutator: (currentValue: T) => R, changeKeys?: ReactiveChangeKey[]): R;
1200
1201
 
1201
1202
  /**
1202
1203
  * Register a callback when the value changes
1203
1204
  * - Value setter will check `Object.is(newValue, oldValue)`.
1204
1205
  * @param callback (newValue, oldValue) => xxx
1205
1206
  */
1206
- addOnChange(callback: ReactiveChangeHandler<T>): void;
1207
- removeOnChange(callback: ReactiveChangeHandler<T>): void;
1207
+ addOnChange<K extends ReactiveChangeKey | undefined>(
1208
+ callback: ReactiveChangeHandler<T>,
1209
+ key?: K,
1210
+ ): K extends undefined ? number : K;
1211
+ removeOnChange(key: ReactiveChangeKey): ReactiveChangeHandler<T> | undefined;
1208
1212
  }
1209
1213
 
1210
1214
  // & Shockingly, If T is boolean, KTReactify<T> becomes KTReactive<true> | KTReactive<false>. It causes @ktjs/mui that disabledRefs not assignable.
@@ -1224,7 +1228,7 @@ declare class KTRef<T> implements KTReactive<T> {
1224
1228
  */
1225
1229
  isKT: true;
1226
1230
  ktType: KTReactiveType;
1227
- constructor(_value: T, _onChanges: Array<ReactiveChangeHandler<T>>);
1231
+ constructor(_value: T, _onChange?: ReactiveChangeHandler<T>);
1228
1232
  /**
1229
1233
  * If new value and old value are both nodes, the old one will be replaced in the DOM
1230
1234
  */
@@ -1234,7 +1238,7 @@ declare class KTRef<T> implements KTReactive<T> {
1234
1238
  * Force all listeners to run even when reference identity has not changed.
1235
1239
  * Useful for in-place array/object mutations.
1236
1240
  */
1237
- notify(): void;
1241
+ notify(changeKeys?: ReactiveChangeKey[]): void;
1238
1242
  /**
1239
1243
  * Mutate current value in-place and notify listeners once.
1240
1244
  *
@@ -1242,13 +1246,14 @@ declare class KTRef<T> implements KTReactive<T> {
1242
1246
  * const items = ref<number[]>([1, 2]);
1243
1247
  * items.mutate((list) => list.push(3));
1244
1248
  */
1245
- mutate<R = void>(mutator: (currentValue: T) => R): R;
1249
+ mutate<R = void>(mutator: (currentValue: T) => R, changeKeys?: ReactiveChangeKey[]): R;
1246
1250
  /**
1247
1251
  * Register a callback when the value changes
1248
1252
  * @param callback (newValue, oldValue) => xxx
1253
+ * @param key Optional key to identify the callback, allowing multiple listeners on the same ref and individual removal. If not provided, a unique ID will be generated.
1249
1254
  */
1250
- addOnChange(callback: ReactiveChangeHandler<T>): void;
1251
- removeOnChange(callback: ReactiveChangeHandler<T>): boolean;
1255
+ addOnChange<K extends ReactiveChangeKey | undefined>(callback: ReactiveChangeHandler<T>, key?: K): K extends undefined ? number : K;
1256
+ removeOnChange(key: ReactiveChangeKey): ReactiveChangeHandler<T> | undefined;
1252
1257
  }
1253
1258
  /**
1254
1259
  * Reference to the created HTML element.
@@ -1488,4 +1493,4 @@ declare function KTFor<T>(props: KTForProps<T>): KTForElement;
1488
1493
  declare function KTConditional(condition: boolean | KTReactive<boolean>, tagIf: JSXTag, propsIf: KTAttribute, tagElse?: JSXTag, propsElse?: KTAttribute): JSX.Element;
1489
1494
 
1490
1495
  export { $initRef, $modelOrRef, Fragment, JSX, KTAsync, KTComputed, KTConditional, KTFor, KTReactive, KTReactiveType, KTRef, computed, h as createElement, mathml$1 as createMathMLElement, createRedrawable, svg$1 as createSVGElement, dereactive, effect, h, isComputed, isKT, isRef, jsx, jsxDEV, jsxs, mathml, mathml as mathmlRuntime, ref, surfaceRef, svg, svg as svgRuntime, toReactive, toRef };
1491
- export type { EventHandler, HTML, KTAttribute, KTForElement, KTForProps, KTPrefixedEventAttribute, KTRawAttr, KTRawContent, KTRawContents, KTReactify, KTReactifyObject, KTReactifyProps, KTSurfaceRef, ReactiveChangeHandler };
1496
+ export type { EventHandler, HTML, KTAttribute, KTForElement, KTForProps, KTPrefixedEventAttribute, KTRawAttr, KTRawContent, KTRawContents, KTReactify, KTReactifyObject, KTReactifyProps, KTSurfaceRef, ReactiveChangeHandler, ReactiveChangeKey };
package/dist/index.mjs CHANGED
@@ -197,6 +197,17 @@ function applyContent(element, content) {
197
197
  }
198
198
  }
199
199
 
200
+ // # internal methods that cannot be placed in @ktjs/shared
201
+ const IdGenerator = {
202
+ _refOnChangeId: 1,
203
+ get refOnChangeId() {
204
+ return this._refOnChangeId++;
205
+ },
206
+ _computedOnChangeId: 1,
207
+ get computedOnChangeId() {
208
+ return this._computedOnChangeId++;
209
+ }};
210
+
200
211
  class KTRef {
201
212
  /**
202
213
  * Indicates that this is a KTRef instance
@@ -214,14 +225,21 @@ class KTRef {
214
225
  /**
215
226
  * @internal
216
227
  */
217
- _emit(newValue, oldValue) {
218
- for (let i = 0; i < this._onChanges.length; i++) {
219
- this._onChanges[i](newValue, oldValue);
228
+ _emit(newValue, oldValue, changeKeys) {
229
+ if (changeKeys) {
230
+ for (let i = 0; i < changeKeys.length; i++) {
231
+ this._onChanges.get(changeKeys[i])?.(newValue, oldValue);
232
+ }
233
+ return;
220
234
  }
235
+ this._onChanges.forEach((c) => c(newValue, oldValue));
221
236
  }
222
- constructor(_value, _onChanges) {
237
+ constructor(_value, _onChange) {
223
238
  this._value = _value;
224
- this._onChanges = _onChanges;
239
+ this._onChanges = new Map();
240
+ if (_onChange) {
241
+ this._onChanges.set(IdGenerator.refOnChangeId, _onChange);
242
+ }
225
243
  }
226
244
  /**
227
245
  * If new value and old value are both nodes, the old one will be replaced in the DOM
@@ -241,8 +259,8 @@ class KTRef {
241
259
  * Force all listeners to run even when reference identity has not changed.
242
260
  * Useful for in-place array/object mutations.
243
261
  */
244
- notify() {
245
- this._emit(this._value, this._value);
262
+ notify(changeKeys) {
263
+ this._emit(this._value, this._value, changeKeys);
246
264
  }
247
265
  /**
248
266
  * Mutate current value in-place and notify listeners once.
@@ -251,33 +269,32 @@ class KTRef {
251
269
  * const items = ref<number[]>([1, 2]);
252
270
  * items.mutate((list) => list.push(3));
253
271
  */
254
- mutate(mutator) {
272
+ mutate(mutator, changeKeys) {
255
273
  if (typeof mutator !== 'function') {
256
274
  throw new Error('[@ktjs/core error] KTRef.mutate: mutator must be a function');
257
275
  }
258
276
  const oldValue = this._value;
259
277
  const result = mutator(this._value);
260
- this._emit(this._value, oldValue);
278
+ this._emit(this._value, oldValue, changeKeys);
261
279
  return result;
262
280
  }
263
281
  /**
264
282
  * Register a callback when the value changes
265
283
  * @param callback (newValue, oldValue) => xxx
284
+ * @param key Optional key to identify the callback, allowing multiple listeners on the same ref and individual removal. If not provided, a unique ID will be generated.
266
285
  */
267
- addOnChange(callback) {
286
+ addOnChange(callback, key) {
268
287
  if (typeof callback !== 'function') {
269
288
  throw new Error('[@ktjs/core error] KTRef.addOnChange: callback must be a function');
270
289
  }
271
- this._onChanges.push(callback);
290
+ const k = key ?? IdGenerator.refOnChangeId;
291
+ this._onChanges.set(k, callback);
292
+ return k;
272
293
  }
273
- removeOnChange(callback) {
274
- for (let i = this._onChanges.length - 1; i >= 0; i--) {
275
- if (this._onChanges[i] === callback) {
276
- this._onChanges.splice(i, 1);
277
- return true;
278
- }
279
- }
280
- return false;
294
+ removeOnChange(key) {
295
+ const callback = this._onChanges.get(key);
296
+ this._onChanges.delete(key);
297
+ return callback;
281
298
  }
282
299
  }
283
300
  /**
@@ -288,7 +305,7 @@ class KTRef {
288
305
  * @param value mostly an HTMLElement
289
306
  */
290
307
  function ref(value, onChange) {
291
- return new KTRef(value, onChange ? [onChange] : []);
308
+ return new KTRef(value, onChange);
292
309
  }
293
310
  /**
294
311
  * Convert a value to `KTRef`.
@@ -384,29 +401,33 @@ class KTComputed {
384
401
  /**
385
402
  * @internal
386
403
  */
387
- _onChanges = [];
404
+ _onChanges = new Map();
388
405
  /**
389
406
  * @internal
390
407
  */
391
- _emit(newValue, oldValue) {
392
- for (let i = 0; i < this._onChanges.length; i++) {
393
- this._onChanges[i](newValue, oldValue);
408
+ _emit(newValue, oldValue, changeKeys) {
409
+ if (changeKeys) {
410
+ for (let i = 0; i < changeKeys.length; i++) {
411
+ this._onChanges.get(changeKeys[i])?.(newValue, oldValue);
412
+ }
413
+ return;
394
414
  }
415
+ this._onChanges.forEach((c) => c(newValue, oldValue));
395
416
  }
396
417
  /**
397
418
  * @internal
398
419
  */
399
- _recalculate(forceEmit = false) {
420
+ _recalculate(forceEmit = false, changeKeys) {
400
421
  const oldValue = this._value;
401
422
  const newValue = this._calculator();
402
423
  if (oldValue === newValue) {
403
424
  if (forceEmit) {
404
- this._emit(newValue, oldValue);
425
+ this._emit(newValue, oldValue, changeKeys);
405
426
  }
406
427
  return;
407
428
  }
408
429
  this._value = newValue;
409
- this._emit(newValue, oldValue);
430
+ this._emit(newValue, oldValue, changeKeys);
410
431
  }
411
432
  /**
412
433
  * @internal
@@ -434,38 +455,39 @@ class KTComputed {
434
455
  /**
435
456
  * Force listeners to run once with the latest computed result.
436
457
  */
437
- notify() {
438
- this._recalculate(true);
458
+ notify(changeKeys) {
459
+ this._recalculate(true, changeKeys);
439
460
  }
440
461
  /**
441
462
  * Computed values are derived from dependencies and should not be mutated manually.
442
463
  */
443
- mutate() {
464
+ mutate(_mutator, changeKeys) {
444
465
  console.warn('[@ktjs/core warn]','KTComputed.mutate: computed is derived automatically; manual mutate is ignored. Use notify() instead');
466
+ if (changeKeys) {
467
+ this._emit(this._value, this._value, changeKeys);
468
+ }
445
469
  return this._value;
446
470
  }
447
471
  /**
448
472
  * Register a callback when the value changes
449
473
  * @param callback (newValue, oldValue) => xxx
450
474
  */
451
- addOnChange(callback) {
475
+ addOnChange(callback, key) {
452
476
  if (typeof callback !== 'function') {
453
- throw new Error('[@ktjs/core error] KTRef.addOnChange: callback must be a function');
477
+ throw new Error('[@ktjs/core error] KTComputed.addOnChange: callback must be a function');
454
478
  }
455
- this._onChanges.push(callback);
479
+ const k = key ?? IdGenerator.computedOnChangeId;
480
+ this._onChanges.set(k, callback);
481
+ return k;
456
482
  }
457
483
  /**
458
484
  * Unregister a callback
459
- * @param callback (newValue, oldValue) => xxx
485
+ * @param key registered listener key
460
486
  */
461
- removeOnChange(callback) {
462
- for (let i = this._onChanges.length - 1; i >= 0; i--) {
463
- if (this._onChanges[i] === callback) {
464
- this._onChanges.splice(i, 1);
465
- return true;
466
- }
467
- }
468
- return false;
487
+ removeOnChange(key) {
488
+ const callback = this._onChanges.get(key);
489
+ this._onChanges.delete(key);
490
+ return callback;
469
491
  }
470
492
  }
471
493
  /**
@@ -489,6 +511,7 @@ function computed(computeFn, reactives) {
489
511
  */
490
512
  function effect(effectFn, reactives, options) {
491
513
  const { lazy = false, onCleanup = $emptyFn, debugName = '' } = Object(options);
514
+ const listenerKeys = [];
492
515
  let active = true;
493
516
  const run = () => {
494
517
  if (!active) {
@@ -505,7 +528,7 @@ function effect(effectFn, reactives, options) {
505
528
  };
506
529
  // subscribe to dependencies
507
530
  for (let i = 0; i < reactives.length; i++) {
508
- reactives[i].addOnChange(run);
531
+ listenerKeys[i] = reactives[i].addOnChange(run);
509
532
  }
510
533
  // auto run unless lazy
511
534
  if (!lazy) {
@@ -518,7 +541,7 @@ function effect(effectFn, reactives, options) {
518
541
  }
519
542
  active = false;
520
543
  for (let i = 0; i < reactives.length; i++) {
521
- reactives[i].removeOnChange(run);
544
+ reactives[i].removeOnChange(listenerKeys[i]);
522
545
  }
523
546
  // final cleanup
524
547
  onCleanup();
@@ -576,7 +599,7 @@ function applyKModel(element, valueRef) {
576
599
  * ## About
577
600
  * @package @ktjs/core
578
601
  * @author Kasukabe Tsumugi <futami16237@gmail.com>
579
- * @version 0.30.8 (Last Update: 2026.02.24 15:27:30.847)
602
+ * @version 0.30.11 (Last Update: 2026.02.24 22:42:59.392)
580
603
  * @license MIT
581
604
  * @link https://github.com/baendlorel/kt.js
582
605
  * @link https://baendlorel.github.io/ Welcome to my site!
@@ -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/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 { $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 // & Ignores falsy values, consistent with React's behavior\n if (c === undefined || c === null || c === false) {\n return;\n }\n\n if (isKT(c)) {\n let node = assureNode(c.value);\n element.appendChild(node);\n c.addOnChange((newValue, _oldValue) => {\n const oldNode = node;\n node = assureNode(newValue);\n oldNode.replaceWith(node);\n });\n } else {\n const node = assureNode(c);\n element.appendChild(node);\n // Handle KTFor anchor\n const list = (node 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 element.appendChild(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 } 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 const oldValue = this._value;\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 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 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\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 // * start creating the element\n const element = document.createElement(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\nexport const svg = <T extends SVGTag>(tag: T, attr?: KTRawAttr, content?: KTRawContent): HTML<T> => {\n if (typeof tag !== 'string') {\n $throw('tagName must be a string.');\n }\n\n // * start creating the element\n const element = document.createElementNS('http://www.w3.org/2000/svg', 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\nexport const mathml = <T extends MathMLTag>(tag: T, attr?: KTRawAttr, content?: KTRawContent): HTML<T> => {\n if (typeof tag !== 'string') {\n $throw('tagName must be a string.');\n }\n\n // * start creating the element\n const element = document.createElementNS('http://www.w3.org/1998/Math/MathML', 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, MathMLTag, SVGTag } from '@ktjs/shared';\nimport type { KTAttribute, KTRawContent } from '../types/h.js';\nimport type { JSX } from '../types/jsx.js';\n\nimport { h, mathml as createMathMLElement, svg as createSVGElement } 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\nfunction assertWritableRef(props: KTAttribute) {\n if (isComputed(props.ref)) {\n $throw('Cannot assign a computed value to an element.');\n }\n}\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 assertWritableRef(props);\n const el = jsxh(tag, props);\n $initRef(props, el);\n return el;\n}\n\nexport function svg(tag: SVGTag, props: KTAttribute): JSX.Element {\n assertWritableRef(props);\n const el = createSVGElement(tag, props, props.children) as unknown as JSX.Element;\n $initRef(props, el);\n return el;\n}\n\nexport function mathml(tag: MathMLTag, props: KTAttribute): JSX.Element {\n assertWritableRef(props);\n const el = createMathMLElement(tag, props, props.children) as unknown as JSX.Element;\n $initRef(props, el);\n return el;\n}\n\nexport { svg as svgRuntime, mathml as mathmlRuntime };\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';\nimport { $identity } from '@ktjs/shared';\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 = $identity } = 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 type { 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":["svg","mathml","Fragment","createSVGElement","createMathMLElement","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/common.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 { $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 // & Ignores falsy values, consistent with React's behavior\n if (c === undefined || c === null || c === false) {\n return;\n }\n\n if (isKT(c)) {\n let node = assureNode(c.value);\n element.appendChild(node);\n c.addOnChange((newValue, _oldValue) => {\n const oldNode = node;\n node = assureNode(newValue);\n oldNode.replaceWith(node);\n });\n } else {\n const node = assureNode(c);\n element.appendChild(node);\n // Handle KTFor anchor\n const list = (node 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 element.appendChild(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","// # internal methods that cannot be placed in @ktjs/shared\n\nexport const IdGenerator = {\n _refOnChangeId: 1,\n get refOnChangeId() {\n return this._refOnChangeId++;\n },\n _computedOnChangeId: 1,\n get computedOnChangeId() {\n return this._computedOnChangeId++;\n },\n _kid: 1,\n get kid() {\n return this._kid++;\n },\n};\n","import { $emptyFn, $entries, $is } from '@ktjs/shared';\nimport type { KTReactive, ReactiveChangeHandler, ReactiveChangeKey } from '../types/reactive.js';\nimport type { JSX } from '../types/jsx.js';\nimport { isComputed, isRef, KTReactiveType } from './core.js';\nimport { IdGenerator } from '../common.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: Map<ReactiveChangeKey, ReactiveChangeHandler<T>>;\n\n /**\n * @internal\n */\n private _emit(newValue: T, oldValue: T, changeKeys?: ReactiveChangeKey[]) {\n if (changeKeys) {\n for (let i = 0; i < changeKeys.length; i++) {\n this._onChanges.get(changeKeys[i])?.(newValue, oldValue);\n }\n return;\n }\n this._onChanges.forEach((c) => c(newValue, oldValue));\n }\n\n constructor(_value: T, _onChange?: ReactiveChangeHandler<T>) {\n this._value = _value;\n this._onChanges = new Map();\n if (_onChange) {\n this._onChanges.set(IdGenerator.refOnChangeId, _onChange);\n }\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 const oldValue = this._value;\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(changeKeys?: ReactiveChangeKey[]) {\n this._emit(this._value, this._value, changeKeys);\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, changeKeys?: ReactiveChangeKey[]): 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, changeKeys);\n return result;\n }\n\n /**\n * Register a callback when the value changes\n * @param callback (newValue, oldValue) => xxx\n * @param key Optional key to identify the callback, allowing multiple listeners on the same ref and individual removal. If not provided, a unique ID will be generated.\n */\n addOnChange<K extends ReactiveChangeKey | undefined>(\n callback: ReactiveChangeHandler<T>,\n key?: K,\n ): K extends undefined ? number : K {\n if (typeof callback !== 'function') {\n $throw('KTRef.addOnChange: callback must be a function');\n }\n const k = key ?? IdGenerator.refOnChangeId;\n this._onChanges.set(k, callback);\n return k as K extends undefined ? number : K;\n }\n\n removeOnChange(key: ReactiveChangeKey): ReactiveChangeHandler<T> | undefined {\n const callback = this._onChanges.get(key);\n this._onChanges.delete(key);\n return callback;\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);\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 type { KTReactive, ReactiveChangeHandler, ReactiveChangeKey } from '../types/reactive.js';\nimport type { JSX } from '../types/jsx.js';\nimport { isKT, KTReactiveType } from './core.js';\nimport { IdGenerator } from '../common.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: Map<ReactiveChangeKey, ReactiveChangeHandler<T>> = new Map();\n\n /**\n * @internal\n */\n private _emit(newValue: T, oldValue: T, changeKeys?: ReactiveChangeKey[]) {\n if (changeKeys) {\n for (let i = 0; i < changeKeys.length; i++) {\n this._onChanges.get(changeKeys[i])?.(newValue, oldValue);\n }\n return;\n }\n this._onChanges.forEach((c) => c(newValue, oldValue));\n }\n\n /**\n * @internal\n */\n private _recalculate(forceEmit: boolean = false, changeKeys?: ReactiveChangeKey[]) {\n const oldValue = this._value;\n const newValue = this._calculator();\n if (oldValue === newValue) {\n if (forceEmit) {\n this._emit(newValue, oldValue, changeKeys);\n }\n return;\n }\n this._value = newValue;\n this._emit(newValue, oldValue, changeKeys);\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(changeKeys?: ReactiveChangeKey[]) {\n this._recalculate(true, changeKeys);\n }\n\n /**\n * Computed values are derived from dependencies and should not be mutated manually.\n */\n mutate<R = void>(_mutator?: (currentValue: T) => R, changeKeys?: ReactiveChangeKey[]): R {\n $warn('KTComputed.mutate: computed is derived automatically; manual mutate is ignored. Use notify() instead');\n if (changeKeys) {\n this._emit(this._value, this._value, changeKeys);\n }\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<K extends ReactiveChangeKey | undefined>(\n callback: ReactiveChangeHandler<T>,\n key?: K,\n ): K extends undefined ? number : K {\n if (typeof callback !== 'function') {\n $throw('KTComputed.addOnChange: callback must be a function');\n }\n const k = key ?? IdGenerator.computedOnChangeId;\n this._onChanges.set(k, callback);\n return k as K extends undefined ? number : K;\n }\n\n /**\n * Unregister a callback\n * @param key registered listener key\n */\n removeOnChange(key: ReactiveChangeKey): ReactiveChangeHandler<T> | undefined {\n const callback = this._onChanges.get(key);\n this._onChanges.delete(key);\n return callback;\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 const listenerKeys: Array<string | number> = [];\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 listenerKeys[i] = 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(listenerKeys[i]);\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\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 // * start creating the element\n const element = document.createElement(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\nexport const svg = <T extends SVGTag>(tag: T, attr?: KTRawAttr, content?: KTRawContent): HTML<T> => {\n if (typeof tag !== 'string') {\n $throw('tagName must be a string.');\n }\n\n // * start creating the element\n const element = document.createElementNS('http://www.w3.org/2000/svg', 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\nexport const mathml = <T extends MathMLTag>(tag: T, attr?: KTRawAttr, content?: KTRawContent): HTML<T> => {\n if (typeof tag !== 'string') {\n $throw('tagName must be a string.');\n }\n\n // * start creating the element\n const element = document.createElementNS('http://www.w3.org/1998/Math/MathML', 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, MathMLTag, SVGTag } from '@ktjs/shared';\nimport type { KTAttribute, KTRawContent } from '../types/h.js';\nimport type { JSX } from '../types/jsx.js';\n\nimport { h, mathml as createMathMLElement, svg as createSVGElement } 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\nfunction assertWritableRef(props: KTAttribute) {\n if (isComputed(props.ref)) {\n $throw('Cannot assign a computed value to an element.');\n }\n}\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 assertWritableRef(props);\n const el = jsxh(tag, props);\n $initRef(props, el);\n return el;\n}\n\nexport function svg(tag: SVGTag, props: KTAttribute): JSX.Element {\n assertWritableRef(props);\n const el = createSVGElement(tag, props, props.children) as unknown as JSX.Element;\n $initRef(props, el);\n return el;\n}\n\nexport function mathml(tag: MathMLTag, props: KTAttribute): JSX.Element {\n assertWritableRef(props);\n const el = createMathMLElement(tag, props, props.children) as unknown as JSX.Element;\n $initRef(props, el);\n return el;\n}\n\nexport { svg as svgRuntime, mathml as mathmlRuntime };\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';\nimport { $identity } from '@ktjs/shared';\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 = $identity } = 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 type { 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":["svg","mathml","Fragment","createSVGElement","createMathMLElement","FragmentArray"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ktjs/core",
3
- "version": "0.30.8",
3
+ "version": "0.30.11",
4
4
  "description": "Core functionality for kt.js - DOM manipulation utilities with JSX/TSX support",
5
5
  "description_zh": "kt.js 的核心功能,提供支持 JSX/TSX 的 DOM 操作工具。",
6
6
  "type": "module",