@lab206/dom 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -22,7 +22,7 @@ export default defineConfig({
22
22
  });
23
23
  ```
24
24
 
25
- Use `@lab206/*@0.1.4+`. Do not install React.
25
+ Use `@lab206/*@0.1.5+`. Do not install React.
26
26
 
27
27
  - Docs: https://lab206.com/docs
28
28
  - License: BUSL-1.1 (source-available)
@@ -11,8 +11,14 @@ export type Component<P extends object = Record<string, never>> = (props?: P & {
11
11
  /**
12
12
  * Declare a function component with **reactive props**.
13
13
  *
14
- * Setup runs **once** per instance. Reading `props.x` inside effects /
15
- * JSX reactive scopes tracks the parent's signal or accessor.
14
+ * Setup runs once per **mount invocation**. Reads during setup use
15
+ * **`isolateTracking`** so they do not subscribe the parent consumer (a Dialog
16
+ * `{() => …}` slot does not remount when setup seeds state from a store).
17
+ * Nested effects and `{() => …}` still track normally. Live updates use those
18
+ * nested bindings / `bind` / effects — not parent remounts.
19
+ *
20
+ * Reading `props.x` inside effects / JSX reactive scopes still tracks the
21
+ * parent's signal or accessor.
16
22
  *
17
23
  * @example
18
24
  * ```tsx
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAGpC,OAAO,EAAQ,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,IAAI,aAAa,CAC1D,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAC3B,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,IAAI,CAC7C,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,KACrB,IAAI,GAAG,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC;AAEhD,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAChE,KAAK,CAAC,EAAE,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,KAC/B,IAAI,GAAG,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC;AAEhD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EACxC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GACvB,SAAS,CAAC,CAAC,CAAC,CAgBd;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE;IAC1B,IAAI,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC;IAChC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;IACtC,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;CACxC,GAAG,WAAW,CA0Cd;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE;IAC5B,IAAI,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;IAC1C,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,MAAM,KAAK,IAAI,CAAC;IACvD,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CAC7B,GAAG,WAAW,CAWd"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAGpC,OAAO,EAAQ,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,IAAI,aAAa,CAC1D,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAC3B,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,IAAI,CAC7C,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,KACrB,IAAI,GAAG,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC;AAEhD,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAChE,KAAK,CAAC,EAAE,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,KAC/B,IAAI,GAAG,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EACxC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GACvB,SAAS,CAAC,CAAC,CAAC,CAgBd;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE;IAC1B,IAAI,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC;IAChC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;IACtC,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;CACxC,GAAG,WAAW,CA0Cd;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE;IAC5B,IAAI,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;IAC1C,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,MAAM,KAAK,IAAI,CAAC;IACvD,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CAC7B,GAAG,WAAW,CAWd"}
package/dist/component.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { isolateTracking } from "@lab206/core";
1
2
  import { h } from "./h.js";
2
3
  import { show } from "./show.js";
3
4
  import { list } from "./list.js";
@@ -5,8 +6,14 @@ import { createProps } from "./props.js";
5
6
  /**
6
7
  * Declare a function component with **reactive props**.
7
8
  *
8
- * Setup runs **once** per instance. Reading `props.x` inside effects /
9
- * JSX reactive scopes tracks the parent's signal or accessor.
9
+ * Setup runs once per **mount invocation**. Reads during setup use
10
+ * **`isolateTracking`** so they do not subscribe the parent consumer (a Dialog
11
+ * `{() => …}` slot does not remount when setup seeds state from a store).
12
+ * Nested effects and `{() => …}` still track normally. Live updates use those
13
+ * nested bindings / `bind` / effects — not parent remounts.
14
+ *
15
+ * Reading `props.x` inside effects / JSX reactive scopes still tracks the
16
+ * parent's signal or accessor.
10
17
  *
11
18
  * @example
12
19
  * ```tsx
@@ -26,7 +33,7 @@ export function component(setup) {
26
33
  // missing own keys reliability: always normalize through createProps
27
34
  // on a shallow bag of current keys so double-proxy still reads source.
28
35
  const props = createProps((raw ?? {}));
29
- return setup(props);
36
+ return isolateTracking(() => setup(props));
30
37
  };
31
38
  Object.defineProperty(Comp, "name", {
32
39
  value: setup.name || "Component",
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
package/dist/dynamic.d.ts CHANGED
@@ -12,6 +12,11 @@ export type DynamicChild = Node | DocumentFragment | string | number | boolean |
12
12
  * (common for Tabs / Accordion / List content).
13
13
  *
14
14
  * Uses a `display: contents` host so layout is unaffected.
15
+ *
16
+ * **Tracking isolation (FOUNDATION):** `get()` still tracks the parent effect
17
+ * for remount keys (e.g. `selected()` in a Dialog body). Component setup uses
18
+ * `isolateTracking` via jsx/`h`/`component()`. Node trees are owned by a nested
19
+ * owner and disposed on remount so Input effects do not leak.
15
20
  */
16
21
  export declare function bindDynamic(parent: ParentNode, get: () => DynamicChild): Dispose;
17
22
  //# sourceMappingURL=dynamic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic.d.ts","sourceRoot":"","sources":["../src/dynamic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAEpD;;;GAGG;AACH,MAAM,MAAM,YAAY,GACpB,IAAI,GACJ,gBAAgB,GAChB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,YAAY,EAAE,CAAC;AAEnB;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,YAAY,GACtB,OAAO,CAuCT"}
1
+ {"version":3,"file":"dynamic.d.ts","sourceRoot":"","sources":["../src/dynamic.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,OAAO,EACb,MAAM,cAAc,CAAC;AAEtB;;;GAGG;AACH,MAAM,MAAM,YAAY,GACpB,IAAI,GACJ,gBAAgB,GAChB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,YAAY,EAAE,CAAC;AAEnB;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,YAAY,GACtB,OAAO,CAiET"}
package/dist/dynamic.js CHANGED
@@ -1,4 +1,4 @@
1
- import { effect } from "@lab206/core";
1
+ import { createOwner, disposeOwner, effect, getActiveOwner, runWithOwner, } from "@lab206/core";
2
2
  /**
3
3
  * Mount a reactive child that may return **text or DOM nodes**.
4
4
  *
@@ -7,6 +7,11 @@ import { effect } from "@lab206/core";
7
7
  * (common for Tabs / Accordion / List content).
8
8
  *
9
9
  * Uses a `display: contents` host so layout is unaffected.
10
+ *
11
+ * **Tracking isolation (FOUNDATION):** `get()` still tracks the parent effect
12
+ * for remount keys (e.g. `selected()` in a Dialog body). Component setup uses
13
+ * `isolateTracking` via jsx/`h`/`component()`. Node trees are owned by a nested
14
+ * owner and disposed on remount so Input effects do not leak.
10
15
  */
11
16
  export function bindDynamic(parent, get) {
12
17
  const host = document.createElement("span");
@@ -16,15 +21,32 @@ export function bindDynamic(parent, get) {
16
21
  parent.appendChild(host);
17
22
  let textNode = null;
18
23
  let mode = "empty";
19
- return effect(() => {
20
- const value = get();
24
+ let childDispose;
25
+ const stop = effect(() => {
26
+ // Nested owner: effects created while building nodes are disposed on remount.
27
+ // Do NOT use createRoot here — that clears activeNode and would stop the
28
+ // parent function from tracking remount keys like selected().
29
+ const owner = createOwner(getActiveOwner());
30
+ let value;
31
+ runWithOwner(owner, () => {
32
+ value = get();
33
+ });
34
+ const disposeOwned = () => {
35
+ disposeOwner(owner);
36
+ };
21
37
  if (value == null || value === false || value === true) {
38
+ childDispose?.();
39
+ childDispose = undefined;
40
+ disposeOwned();
22
41
  host.replaceChildren();
23
42
  textNode = null;
24
43
  mode = "empty";
25
44
  return;
26
45
  }
27
46
  if (typeof value === "string" || typeof value === "number") {
47
+ childDispose?.();
48
+ childDispose = undefined;
49
+ disposeOwned(); // text path owns nothing reactive from get()
28
50
  const s = String(value);
29
51
  if (mode === "text" && textNode) {
30
52
  textNode.data = s;
@@ -38,11 +60,18 @@ export function bindDynamic(parent, get) {
38
60
  return;
39
61
  }
40
62
  // Nodes / arrays — never String(object)
63
+ childDispose?.();
64
+ childDispose = disposeOwned;
41
65
  textNode = null;
42
66
  mode = "nodes";
43
67
  host.replaceChildren();
44
68
  appendValue(host, value);
45
69
  });
70
+ return () => {
71
+ stop();
72
+ childDispose?.();
73
+ childDispose = undefined;
74
+ };
46
75
  }
47
76
  function appendValue(parent, value) {
48
77
  if (value == null || value === false || value === true)
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic.js","sourceRoot":"","sources":["../src/dynamic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAgB,MAAM,cAAc,CAAC;AAgBpD;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CACzB,MAAkB,EAClB,GAAuB;IAEvB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IACrC,kEAAkE;IACjE,IAAI,CAAC,KAA6B,CAAC,OAAO,GAAG,UAAU,CAAC;IACzD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEzB,IAAI,QAAQ,GAAgB,IAAI,CAAC;IACjC,IAAI,IAAI,GAA+B,OAAO,CAAC;IAE/C,OAAO,MAAM,CAAC,GAAG,EAAE;QACjB,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;QAEpB,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACvD,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,GAAG,OAAO,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC3D,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YACxB,IAAI,IAAI,KAAK,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAChC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAC3B,IAAI,GAAG,MAAM,CAAC;YAChB,CAAC;YACD,OAAO;QACT,CAAC;QAED,wCAAwC;QACxC,QAAQ,GAAG,IAAI,CAAC;QAChB,IAAI,GAAG,OAAO,CAAC;QACf,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,MAAkB,EAAE,KAAmB;IAC1D,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO;IAE/D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC3D,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IAED,sFAAsF;IACtF,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,UAAU,IAAK,KAAgB;QAC/B,OAAQ,KAAc,CAAC,QAAQ,KAAK,QAAQ,EAC5C,CAAC;QACD,MAAM,CAAC,WAAW,CAAC,KAAa,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IACD,yDAAyD;AAC3D,CAAC"}
1
+ {"version":3,"file":"dynamic.js","sourceRoot":"","sources":["../src/dynamic.ts"],"names":[],"mappings":"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"}
package/dist/h.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"h.d.ts","sourceRoot":"","sources":["../src/h.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAI9D,MAAM,MAAM,KAAK,GACb,IAAI,GACJ,gBAAgB,GAChB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,CAAC,MAAM,YAAY,CAAC,CAAC;AAEzB,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAC3D,KAAK,EAAE,CAAC,KACL,IAAI,GAAG,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC;AAEhD,MAAM,MAAM,KAAK,GAAG;IAClB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAC9E,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAChG,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACpG,KAAK,CAAC,EACF,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAClD,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAClF,4CAA4C;IAC5C,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAWF;;;;;GAKG;AACH,wBAAgB,CAAC,CAAC,CAAC,SAAS,MAAM,qBAAqB,EACrD,GAAG,EAAE,CAAC,EACN,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,EACpB,GAAG,QAAQ,EAAE,KAAK,EAAE,GACnB,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAE5B,wBAAgB,CAAC,CACf,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,EACpB,GAAG,QAAQ,EAAE,KAAK,EAAE,GACnB,WAAW,CAAC;AAEf,wBAAgB,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjD,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACzB,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,EAC1B,GAAG,QAAQ,EAAE,KAAK,EAAE,GACnB,IAAI,GAAG,gBAAgB,CAAC;AAmD3B,6CAA6C;AAC7C,wBAAgB,IAAI,CAClB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GAC5E,IAAI,CAQN"}
1
+ {"version":3,"file":"h.d.ts","sourceRoot":"","sources":["../src/h.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAI9D,MAAM,MAAM,KAAK,GACb,IAAI,GACJ,gBAAgB,GAChB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,CAAC,MAAM,YAAY,CAAC,CAAC;AAEzB,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAC3D,KAAK,EAAE,CAAC,KACL,IAAI,GAAG,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC;AAEhD,MAAM,MAAM,KAAK,GAAG;IAClB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAC9E,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAChG,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACpG,KAAK,CAAC,EACF,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAClD,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAClF,4CAA4C;IAC5C,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAWF;;;;;GAKG;AACH,wBAAgB,CAAC,CAAC,CAAC,SAAS,MAAM,qBAAqB,EACrD,GAAG,EAAE,CAAC,EACN,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,EACpB,GAAG,QAAQ,EAAE,KAAK,EAAE,GACnB,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAE5B,wBAAgB,CAAC,CACf,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,EACpB,GAAG,QAAQ,EAAE,KAAK,EAAE,GACnB,WAAW,CAAC;AAEf,wBAAgB,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjD,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACzB,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,EAC1B,GAAG,QAAQ,EAAE,KAAK,EAAE,GACnB,IAAI,GAAG,gBAAgB,CAAC;AAoD3B,6CAA6C;AAC7C,wBAAgB,IAAI,CAClB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GAC5E,IAAI,CAQN"}
package/dist/h.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { isolateTracking } from "@lab206/core";
1
2
  import { bindAttr, bindClass, bindProp, bindStyle, bindText } from "./bind.js";
2
3
  import { bindDynamic } from "./dynamic.js";
3
4
  import { on } from "./on.js";
@@ -20,7 +21,8 @@ export function h(tag, props, ...children) {
20
21
  else if (children.length > 1) {
21
22
  raw.children = children;
22
23
  }
23
- const result = tag(createProps(raw));
24
+ // isolateTracking: setup reads must not subscribe parent bindDynamic (forms in Dialog)
25
+ const result = isolateTracking(() => tag(createProps(raw)));
24
26
  if (result == null) {
25
27
  return document.createComment("powers");
26
28
  }
package/dist/h.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"h.js","sourceRoot":"","sources":["../src/h.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"h.js","sourceRoot":"","sources":["../src/h.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,3 @@
1
- /**
2
- * Automatic JSX runtime for Powers.
3
- *
4
- * Vite / TypeScript:
5
- * jsx: "react-jsx"
6
- * jsxImportSource: "@lab206/dom"
7
- *
8
- * Function components receive **reactive props** via `createProps`
9
- * (unless they already wrapped themselves with `component()`).
10
- */
11
1
  import { type Props } from "./h.js";
12
2
  import { Fragment } from "./fragment.js";
13
3
  export { Fragment };
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-runtime.d.ts","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAK,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAqB,MAAM,eAAe,CAAC;AAG5D,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAC3D,KAAK,EAAE,CAAC,KACL,IAAI,GAAG,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC;AAEhD,+DAA+D;AAC/D,eAAO,MAAM,cAAc,eAAqC,CAAC;AAEjE,wBAAgB,GAAG,CACjB,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzD,KAAK,EAAE,CAAC,KAAK,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,EAC9C,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GACrB,IAAI,GAAG,gBAAgB,CAEzB;AAED,wBAAgB,IAAI,CAClB,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzD,KAAK,EAAE,CAAC,KAAK,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,EAC9C,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GACrB,IAAI,GAAG,gBAAgB,CAEzB;AAED,wBAAgB,MAAM,CACpB,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzD,KAAK,EAAE,CAAC,KAAK,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,EAC9C,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GACrB,IAAI,GAAG,gBAAgB,CAEzB;AAyBD,yBAAiB,GAAG,CAAC;IACnB,KAAY,OAAO,GAAG,IAAI,GAAG,gBAAgB,CAAC;IAC9C,KAAY,WAAW,GAAG,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAE1D,UAAiB,yBAAyB;QACxC,KAAK,EAAE,OAAO,CAAC;KAChB;IACD,UAAiB,wBAAwB;QACvC,QAAQ,EAAE,OAAO,CAAC;KACnB;IAED,KAAY,wBAAwB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAE/C,UAAiB,mBAAmB;QAClC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KACvB;IAED,KAAY,iBAAiB,GAAG;SAC7B,CAAC,IAAI,MAAM,qBAAqB,GAAG,KAAK,GAAG;YAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;SACpB,GAAG;YACF,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;SACzB;KACF,GAAG;QACF,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG;YAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;SACzB,CAAC;KACH,CAAC;CACH"}
1
+ {"version":3,"file":"jsx-runtime.d.ts","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"AAWA,OAAO,EAAK,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAqB,MAAM,eAAe,CAAC;AAG5D,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAC3D,KAAK,EAAE,CAAC,KACL,IAAI,GAAG,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC;AAEhD,+DAA+D;AAC/D,eAAO,MAAM,cAAc,eAAqC,CAAC;AAEjE,wBAAgB,GAAG,CACjB,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzD,KAAK,EAAE,CAAC,KAAK,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,EAC9C,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GACrB,IAAI,GAAG,gBAAgB,CAEzB;AAED,wBAAgB,IAAI,CAClB,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzD,KAAK,EAAE,CAAC,KAAK,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,EAC9C,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GACrB,IAAI,GAAG,gBAAgB,CAEzB;AAED,wBAAgB,MAAM,CACpB,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzD,KAAK,EAAE,CAAC,KAAK,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,EAC9C,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GACrB,IAAI,GAAG,gBAAgB,CAEzB;AAgCD,yBAAiB,GAAG,CAAC;IACnB,KAAY,OAAO,GAAG,IAAI,GAAG,gBAAgB,CAAC;IAC9C,KAAY,WAAW,GAAG,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAE1D,UAAiB,yBAAyB;QACxC,KAAK,EAAE,OAAO,CAAC;KAChB;IACD,UAAiB,wBAAwB;QACvC,QAAQ,EAAE,OAAO,CAAC;KACnB;IAED,KAAY,wBAAwB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAE/C,UAAiB,mBAAmB;QAClC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KACvB;IAED,KAAY,iBAAiB,GAAG;SAC7B,CAAC,IAAI,MAAM,qBAAqB,GAAG,KAAK,GAAG;YAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;SACpB,GAAG;YACF,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;SACzB;KACF,GAAG;QACF,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG;YAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;SACzB,CAAC;KACH,CAAC;CACH"}
@@ -8,6 +8,7 @@
8
8
  * Function components receive **reactive props** via `createProps`
9
9
  * (unless they already wrapped themselves with `component()`).
10
10
  */
11
+ import { isolateTracking } from "@lab206/core";
11
12
  import { h } from "./h.js";
12
13
  import { Fragment, normalizeChildren } from "./fragment.js";
13
14
  import { createProps } from "./props.js";
@@ -30,8 +31,13 @@ function create(type, props) {
30
31
  // Always pass through createProps so bare function components get
31
32
  // reactive field access. component() also wraps — double-wrap is OK
32
33
  // (outer raw object, inner Proxy of raw; component's createProps runs first).
34
+ //
35
+ // Setup under isolateTracking: construction reads (e.g. seeding a draft
36
+ // from a store) do not subscribe a parent bindDynamic / Dialog slot —
37
+ // that remount wiped focused inputs on every keystroke. Nested effects
38
+ // and `{() => …}` still track (unlike untrack).
33
39
  const reactive = createProps(p);
34
- const result = type(reactive);
40
+ const result = isolateTracking(() => type(reactive));
35
41
  if (result == null) {
36
42
  return document.createComment("powers");
37
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-runtime.js","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,CAAC,EAAc,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,CAAC;AAMpB,+DAA+D;AAC/D,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAEjE,MAAM,UAAU,GAAG,CACjB,IAAyD,EACzD,KAA8C,EAC9C,IAAsB;IAEtB,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,IAAI,CAClB,IAAyD,EACzD,KAA8C,EAC9C,IAAsB;IAEtB,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,IAAyD,EACzD,KAA8C,EAC9C,IAAsB;IAEtB,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,MAAM,CACb,IAAyD,EACzD,KAA8C;IAE9C,MAAM,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;IACtB,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;IAEhC,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,kEAAkE;QAClE,oEAAoE;QACpE,8EAA8E;QAC9E,MAAM,QAAQ,GAAG,WAAW,CAAC,CAA4B,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAmC,CAAC,CAAC;QACzD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAO,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC9C,OAAO,CAAC,CAAC,IAAI,EAAE,IAAa,EAAE,GAAG,SAAS,CAAC,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"jsx-runtime.js","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAc,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,CAAC;AAMpB,+DAA+D;AAC/D,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAEjE,MAAM,UAAU,GAAG,CACjB,IAAyD,EACzD,KAA8C,EAC9C,IAAsB;IAEtB,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,IAAI,CAClB,IAAyD,EACzD,KAA8C,EAC9C,IAAsB;IAEtB,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,IAAyD,EACzD,KAA8C,EAC9C,IAAsB;IAEtB,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,MAAM,CACb,IAAyD,EACzD,KAA8C;IAE9C,MAAM,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;IACtB,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;IAEhC,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,kEAAkE;QAClE,oEAAoE;QACpE,8EAA8E;QAC9E,EAAE;QACF,wEAAwE;QACxE,sEAAsE;QACtE,uEAAuE;QACvE,gDAAgD;QAChD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAA4B,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,CAClC,IAAI,CAAC,QAAmC,CAAC,CAC1C,CAAC;QACF,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAO,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC9C,OAAO,CAAC,CAAC,IAAI,EAAE,IAAa,EAAE,GAAG,SAAS,CAAC,CAAC;AAC9C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lab206/dom",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "Thin DOM bindings + JSX + reactive props for Powers.",
5
5
  "type": "module",
6
6
  "license": "BUSL-1.1",
@@ -34,7 +34,7 @@
34
34
  "!src/**/*.test.tsx"
35
35
  ],
36
36
  "dependencies": {
37
- "@lab206/core": "0.1.4"
37
+ "@lab206/core": "0.1.5"
38
38
  },
39
39
  "devDependencies": {
40
40
  "esbuild": "^0.25.1",
package/src/component.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { isolateTracking } from "@lab206/core";
1
2
  import type { Child } from "./h.js";
2
3
  import { h } from "./h.js";
3
4
  import { show } from "./show.js";
@@ -19,8 +20,14 @@ export type Component<P extends object = Record<string, never>> = (
19
20
  /**
20
21
  * Declare a function component with **reactive props**.
21
22
  *
22
- * Setup runs **once** per instance. Reading `props.x` inside effects /
23
- * JSX reactive scopes tracks the parent's signal or accessor.
23
+ * Setup runs once per **mount invocation**. Reads during setup use
24
+ * **`isolateTracking`** so they do not subscribe the parent consumer (a Dialog
25
+ * `{() => …}` slot does not remount when setup seeds state from a store).
26
+ * Nested effects and `{() => …}` still track normally. Live updates use those
27
+ * nested bindings / `bind` / effects — not parent remounts.
28
+ *
29
+ * Reading `props.x` inside effects / JSX reactive scopes still tracks the
30
+ * parent's signal or accessor.
24
31
  *
25
32
  * @example
26
33
  * ```tsx
@@ -44,7 +51,7 @@ export function component<P extends object>(
44
51
  const props = createProps(
45
52
  (raw ?? {}) as P & { children?: unknown },
46
53
  ) as ComponentProps<P>;
47
- return setup(props);
54
+ return isolateTracking(() => setup(props));
48
55
  };
49
56
  Object.defineProperty(Comp, "name", {
50
57
  value: setup.name || "Component",
package/src/dynamic.ts CHANGED
@@ -1,4 +1,11 @@
1
- import { effect, type Dispose } from "@lab206/core";
1
+ import {
2
+ createOwner,
3
+ disposeOwner,
4
+ effect,
5
+ getActiveOwner,
6
+ runWithOwner,
7
+ type Dispose,
8
+ } from "@lab206/core";
2
9
 
3
10
  /**
4
11
  * Values a reactive JSX child function may return.
@@ -22,6 +29,11 @@ export type DynamicChild =
22
29
  * (common for Tabs / Accordion / List content).
23
30
  *
24
31
  * Uses a `display: contents` host so layout is unaffected.
32
+ *
33
+ * **Tracking isolation (FOUNDATION):** `get()` still tracks the parent effect
34
+ * for remount keys (e.g. `selected()` in a Dialog body). Component setup uses
35
+ * `isolateTracking` via jsx/`h`/`component()`. Node trees are owned by a nested
36
+ * owner and disposed on remount so Input effects do not leak.
25
37
  */
26
38
  export function bindDynamic(
27
39
  parent: ParentNode,
@@ -35,11 +47,26 @@ export function bindDynamic(
35
47
 
36
48
  let textNode: Text | null = null;
37
49
  let mode: "empty" | "text" | "nodes" = "empty";
50
+ let childDispose: Dispose | undefined;
51
+
52
+ const stop = effect(() => {
53
+ // Nested owner: effects created while building nodes are disposed on remount.
54
+ // Do NOT use createRoot here — that clears activeNode and would stop the
55
+ // parent function from tracking remount keys like selected().
56
+ const owner = createOwner(getActiveOwner());
57
+ let value!: DynamicChild;
58
+ runWithOwner(owner, () => {
59
+ value = get();
60
+ });
38
61
 
39
- return effect(() => {
40
- const value = get();
62
+ const disposeOwned = () => {
63
+ disposeOwner(owner);
64
+ };
41
65
 
42
66
  if (value == null || value === false || value === true) {
67
+ childDispose?.();
68
+ childDispose = undefined;
69
+ disposeOwned();
43
70
  host.replaceChildren();
44
71
  textNode = null;
45
72
  mode = "empty";
@@ -47,6 +74,9 @@ export function bindDynamic(
47
74
  }
48
75
 
49
76
  if (typeof value === "string" || typeof value === "number") {
77
+ childDispose?.();
78
+ childDispose = undefined;
79
+ disposeOwned(); // text path owns nothing reactive from get()
50
80
  const s = String(value);
51
81
  if (mode === "text" && textNode) {
52
82
  textNode.data = s;
@@ -60,11 +90,19 @@ export function bindDynamic(
60
90
  }
61
91
 
62
92
  // Nodes / arrays — never String(object)
93
+ childDispose?.();
94
+ childDispose = disposeOwned;
63
95
  textNode = null;
64
96
  mode = "nodes";
65
97
  host.replaceChildren();
66
98
  appendValue(host, value);
67
99
  });
100
+
101
+ return () => {
102
+ stop();
103
+ childDispose?.();
104
+ childDispose = undefined;
105
+ };
68
106
  }
69
107
 
70
108
  function appendValue(parent: ParentNode, value: DynamicChild): void {
package/src/h.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { isolateTracking } from "@lab206/core";
1
2
  import { bindAttr, bindClass, bindProp, bindStyle, bindText } from "./bind.js";
2
3
  import { bindDynamic, type DynamicChild } from "./dynamic.js";
3
4
  import { on } from "./on.js";
@@ -77,7 +78,8 @@ export function h(
77
78
  } else if (children.length > 1) {
78
79
  raw.children = children;
79
80
  }
80
- const result = tag(createProps(raw) as never);
81
+ // isolateTracking: setup reads must not subscribe parent bindDynamic (forms in Dialog)
82
+ const result = isolateTracking(() => tag(createProps(raw) as never));
81
83
  if (result == null) {
82
84
  return document.createComment("powers");
83
85
  }
@@ -8,6 +8,7 @@
8
8
  * Function components receive **reactive props** via `createProps`
9
9
  * (unless they already wrapped themselves with `component()`).
10
10
  */
11
+ import { isolateTracking } from "@lab206/core";
11
12
  import { h, type Props } from "./h.js";
12
13
  import { Fragment, normalizeChildren } from "./fragment.js";
13
14
  import { createProps } from "./props.js";
@@ -56,8 +57,15 @@ function create(
56
57
  // Always pass through createProps so bare function components get
57
58
  // reactive field access. component() also wraps — double-wrap is OK
58
59
  // (outer raw object, inner Proxy of raw; component's createProps runs first).
60
+ //
61
+ // Setup under isolateTracking: construction reads (e.g. seeding a draft
62
+ // from a store) do not subscribe a parent bindDynamic / Dialog slot —
63
+ // that remount wiped focused inputs on every keystroke. Nested effects
64
+ // and `{() => …}` still track (unlike untrack).
59
65
  const reactive = createProps(p as Record<string, unknown>);
60
- const result = type(reactive as Record<string, unknown>);
66
+ const result = isolateTracking(() =>
67
+ type(reactive as Record<string, unknown>),
68
+ );
61
69
  if (result == null) {
62
70
  return document.createComment("powers");
63
71
  }