@barefootjs/jsx 0.35.0 → 0.35.1
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/analyzer-context.d.ts.map +1 -1
- package/dist/index.js +731 -691
- package/dist/ir-to-client-js/collect-elements.d.ts +22 -2
- package/dist/ir-to-client-js/collect-elements.d.ts.map +1 -1
- package/dist/ir-to-client-js/control-flow/plan/build-composite-loop.d.ts.map +1 -1
- package/dist/ir-to-client-js/control-flow/plan/build-inner-loop.d.ts +14 -2
- package/dist/ir-to-client-js/control-flow/plan/build-inner-loop.d.ts.map +1 -1
- package/dist/ir-to-client-js/control-flow/plan/build-lazy-row.d.ts.map +1 -1
- package/dist/ir-to-client-js/control-flow/plan/build-loop-child-arm.d.ts +6 -1
- package/dist/ir-to-client-js/control-flow/plan/build-loop-child-arm.d.ts.map +1 -1
- package/dist/ir-to-client-js/control-flow/plan/build-plain-row.d.ts.map +1 -1
- package/dist/ir-to-client-js/control-flow/plan/build-reactive-effects.d.ts +3 -2
- package/dist/ir-to-client-js/control-flow/plan/build-reactive-effects.d.ts.map +1 -1
- package/dist/ir-to-client-js/control-flow/plan/inner-loop.d.ts +24 -44
- package/dist/ir-to-client-js/control-flow/plan/inner-loop.d.ts.map +1 -1
- package/dist/ir-to-client-js/control-flow/plan/loop-child-arm.d.ts +14 -0
- package/dist/ir-to-client-js/control-flow/plan/loop-child-arm.d.ts.map +1 -1
- package/dist/ir-to-client-js/control-flow/stringify/inner-loop.d.ts +6 -14
- package/dist/ir-to-client-js/control-flow/stringify/inner-loop.d.ts.map +1 -1
- package/dist/ir-to-client-js/control-flow/stringify/lazy-row.d.ts +1 -3
- package/dist/ir-to-client-js/control-flow/stringify/lazy-row.d.ts.map +1 -1
- package/dist/ir-to-client-js/control-flow/stringify/loop-child-arm.d.ts +19 -3
- package/dist/ir-to-client-js/control-flow/stringify/loop-child-arm.d.ts.map +1 -1
- package/dist/ir-to-client-js/control-flow/stringify/loop.d.ts.map +1 -1
- package/dist/ir-to-client-js/control-flow/stringify/reactive-effects.d.ts +5 -1
- package/dist/ir-to-client-js/control-flow/stringify/reactive-effects.d.ts.map +1 -1
- package/dist/ir-to-client-js/emit-reactive.d.ts +54 -0
- package/dist/ir-to-client-js/emit-reactive.d.ts.map +1 -1
- package/dist/ir-to-client-js/html-template.d.ts.map +1 -1
- package/dist/ir-to-client-js/reactivity.d.ts +62 -18
- package/dist/ir-to-client-js/reactivity.d.ts.map +1 -1
- package/dist/ir-to-client-js/types.d.ts +18 -2
- package/dist/ir-to-client-js/types.d.ts.map +1 -1
- package/dist/reactivity-checker.d.ts +18 -0
- package/dist/reactivity-checker.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/__snapshots__/doc-examples.test.ts.snap +128 -10
- package/src/__tests__/binding-scope-ratchet.test.ts +25 -2
- package/src/__tests__/child-prop-fallback-wrap.test.ts +4 -2
- package/src/__tests__/compiler-stress-1244.test.ts +8 -8
- package/src/__tests__/issue-2868-cond-arm-tag-collision.test.ts +185 -0
- package/src/__tests__/issue-2869-attr-dedup-guard.test.ts +141 -0
- package/src/__tests__/loop-index-reactivity.test.ts +208 -0
- package/src/__tests__/map-body-brand-checker.test.ts +176 -0
- package/src/__tests__/nested-loop-index-param.test.ts +27 -5
- package/src/__tests__/nested-loop-non-outer-reactivity.test.ts +177 -0
- package/src/__tests__/nested-loop-plain.test.ts +39 -25
- package/src/__tests__/nested-loop-reactive-attrs.test.ts +12 -4
- package/src/__tests__/preamble-branch-arm-rerun.test.ts +135 -0
- package/src/__tests__/style-css-var-reactive.test.ts +4 -1
- package/src/analyzer-context.ts +12 -10
- package/src/ir-to-client-js/collect-elements.ts +110 -32
- package/src/ir-to-client-js/control-flow/plan/build-composite-loop.ts +2 -0
- package/src/ir-to-client-js/control-flow/plan/build-inner-loop.ts +28 -51
- package/src/ir-to-client-js/control-flow/plan/build-lazy-row.ts +7 -2
- package/src/ir-to-client-js/control-flow/plan/build-loop-child-arm.ts +33 -6
- package/src/ir-to-client-js/control-flow/plan/build-plain-row.ts +7 -1
- package/src/ir-to-client-js/control-flow/plan/build-reactive-effects.ts +18 -6
- package/src/ir-to-client-js/control-flow/plan/inner-loop.ts +24 -45
- package/src/ir-to-client-js/control-flow/plan/loop-child-arm.ts +14 -0
- package/src/ir-to-client-js/control-flow/stringify/inner-loop.ts +20 -66
- package/src/ir-to-client-js/control-flow/stringify/insert.ts +4 -2
- package/src/ir-to-client-js/control-flow/stringify/lazy-row.ts +12 -15
- package/src/ir-to-client-js/control-flow/stringify/loop-child-arm.ts +53 -11
- package/src/ir-to-client-js/control-flow/stringify/loop.ts +4 -2
- package/src/ir-to-client-js/control-flow/stringify/reactive-effects.ts +29 -18
- package/src/ir-to-client-js/emit-reactive.ts +88 -5
- package/src/ir-to-client-js/html-template.ts +9 -1
- package/src/ir-to-client-js/reactivity.ts +73 -27
- package/src/ir-to-client-js/types.ts +19 -3
- package/src/jsx-to-ir.ts +21 -4
- package/src/reactivity-checker.ts +60 -0
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { type IRNode, type IRLoop } from '../types.ts';
|
|
5
5
|
import type { ClientJsContext, LoopChildBindings, LoopChildConditional, NestedLoop } from './types.ts';
|
|
6
|
+
import { type LoopParamSpec } from './utils.ts';
|
|
7
|
+
import type { BindingScope } from '../scope/binding-scope.ts';
|
|
6
8
|
/**
|
|
7
9
|
* Pre-pass: for every loop node in the IR tree, record the sibling nodes that
|
|
8
10
|
* appear before it in its parent container. Read when constructing
|
|
@@ -89,7 +91,7 @@ export declare const branchInnerLoopOptions: CollectInnerLoopsOptions;
|
|
|
89
91
|
* `collectBranchInnerLoops`; see that history for why the option preset
|
|
90
92
|
* hard-codes `templateDepth: 1` and `flatBranchMode: true`.
|
|
91
93
|
*/
|
|
92
|
-
export declare function collectInnerLoops(nodes: IRNode[], siblingOffsets: Map<IRLoop, IRNode[]>, outerLoopParam?: string, ctx?: ClientJsContext, options?: CollectInnerLoopsOptions): NestedLoop[];
|
|
94
|
+
export declare function collectInnerLoops(nodes: IRNode[], siblingOffsets: Map<IRLoop, IRNode[]>, outerLoopParam?: string | LoopParamSpec, ctx?: ClientJsContext, options?: CollectInnerLoopsOptions): NestedLoop[];
|
|
93
95
|
/**
|
|
94
96
|
* Walk the IR tree and populate `ctx` with every interactive / dynamic /
|
|
95
97
|
* loop / conditional element that needs client-side wiring. Implemented
|
|
@@ -127,5 +129,23 @@ preambleNames?: ReadonlySet<string>,
|
|
|
127
129
|
* The loop's index param name, when present — see
|
|
128
130
|
* `collectLoopChildBindings`'s doc comment (Copilot review on #2595).
|
|
129
131
|
*/
|
|
130
|
-
loopIndex?: string | null
|
|
132
|
+
loopIndex?: string | null,
|
|
133
|
+
/**
|
|
134
|
+
* The full ancestor loop-param chain to render branch HTML against
|
|
135
|
+
* (outermost first), when known — e.g. `[outerSpec, innerSpec]` for a
|
|
136
|
+
* conditional inside an inner `.map()`. Defaults to just
|
|
137
|
+
* `[{ param: loopParam, bindings: loopParamBindings, index: loopIndex }]`
|
|
138
|
+
* (this function's own single-loop scope) when omitted, which is correct
|
|
139
|
+
* for every caller except `collectInnerLoops`'s inner-loop handler, which
|
|
140
|
+
* passes the full chain so an inner loop's conditional arm can also
|
|
141
|
+
* reference an OUTER loop's item/index (#2868). Rendering the branch's
|
|
142
|
+
* HTML against the full chain at IR time — rather than re-wrapping the
|
|
143
|
+
* assembled HTML string with a word-boundary regex afterward — is also
|
|
144
|
+
* what makes it safe for a branch root tag name to collide with a
|
|
145
|
+
* param/index identifier (`<i>`, `<b>`, …): `irToHtmlTemplate` only wraps
|
|
146
|
+
* JS expression positions, never tag names.
|
|
147
|
+
*/
|
|
148
|
+
loopParams?: ReadonlyArray<string | LoopParamSpec>,
|
|
149
|
+
/** Enclosing loop's own scope, for a NESTED loop (#2861) — see `buildLoopRowScope`. */
|
|
150
|
+
parentScope?: BindingScope): LoopChildConditional[];
|
|
131
151
|
//# sourceMappingURL=collect-elements.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect-elements.d.ts","sourceRoot":"","sources":["../../src/ir-to-client-js/collect-elements.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,MAAM,EAAoC,KAAK,MAAM,EAAmC,MAAM,aAAa,CAAA;AACzH,OAAO,KAAK,EAAE,eAAe,EAA+H,iBAAiB,EAA0B,oBAAoB,EAAc,UAAU,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"collect-elements.d.ts","sourceRoot":"","sources":["../../src/ir-to-client-js/collect-elements.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,MAAM,EAAoC,KAAK,MAAM,EAAmC,MAAM,aAAa,CAAA;AACzH,OAAO,KAAK,EAAE,eAAe,EAA+H,iBAAiB,EAA0B,oBAAoB,EAAc,UAAU,EAAE,MAAM,YAAY,CAAA;AACvQ,OAAO,EAAkE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;AAS/G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAkG7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CA0C7E;AAyBD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,4DAA4D;AAC5D,eAAO,MAAM,sBAAsB,EAAE,wBAIpC,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EAAE,EACf,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACrC,cAAc,CAAC,EAAE,MAAM,GAAG,aAAa,EACvC,GAAG,CAAC,EAAE,eAAe,EACrB,OAAO,CAAC,EAAE,wBAAwB,GACjC,UAAU,EAAE,CAiLd;AA0LD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,eAAe,EACpB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACrC,iBAAiB,UAAQ,GACxB,IAAI,CAiUN;AAodD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,GAAG,EAAE,eAAe,EACpB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACrC,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,SAAS,OAAO,aAAa,EAAE,gBAAgB,EAAE,GAAG,SAAS;AAChF;;;;GAIG;AACH,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;AACnC;;;;GAIG;AACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,iBAAiB,CAenB;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,eAAe,EACpB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACrC,SAAS,CAAC,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,SAAS,OAAO,aAAa,EAAE,gBAAgB,EAAE;AACrE;;;;;;;;GAQG;AACH,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;AACnC;;;GAGG;AACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;AACzB;;;;;;;;;;;;;;GAcG;AACH,UAAU,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC;AAClD,uFAAuF;AACvF,WAAW,CAAC,EAAE,YAAY,GACzB,oBAAoB,EAAE,CA0ExB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-composite-loop.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/plan/build-composite-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAwB,MAAM,gBAAgB,CAAA;AAgBpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,0CAA0C;AAC1C,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,YAAY,EAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"build-composite-loop.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/plan/build-composite-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAwB,MAAM,gBAAgB,CAAA;AAgBpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,0CAA0C;AAC1C,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,YAAY,EAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAwD/G;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,iBAAiB,CA6DvH"}
|
|
@@ -7,8 +7,18 @@
|
|
|
7
7
|
* - Sibling levels at the same depth are flattened into the top-level
|
|
8
8
|
* list; deeper levels become `childLevels` of the immediately-preceding
|
|
9
9
|
* ancestor.
|
|
10
|
-
* -
|
|
11
|
-
*
|
|
10
|
+
* - Every level gets the full reactive `mapArray` emission (#2865 —
|
|
11
|
+
* the former "static forEach, setup-only" shortcut for a nested
|
|
12
|
+
* `.map()` whose array didn't textually mention the outer loop's item
|
|
13
|
+
* silently froze any OTHER reactivity the inner array or its rows
|
|
14
|
+
* depended on: a signal, a memo, a prop, an imported function call, a
|
|
15
|
+
* preamble local, a destructured outer param, an outer-index-derived
|
|
16
|
+
* array — none of those are "the outer item", so `refsParent` missed
|
|
17
|
+
* all of them, and the static emitter never wired a single
|
|
18
|
+
* `createEffect` for the row's own reactiveTexts/reactiveAttrs/
|
|
19
|
+
* conditionals either. A `mapArray` over a genuinely non-reactive
|
|
20
|
+
* array just subscribes to nothing and runs once — a strict superset
|
|
21
|
+
* of what the deleted static path did).
|
|
12
22
|
* - Recurse with `inner.param` as the new outerLoopParam so deeper
|
|
13
23
|
* levels see their immediate parent.
|
|
14
24
|
*/
|
|
@@ -20,6 +30,8 @@ export interface BuildInnerLoopsArgs {
|
|
|
20
30
|
parentElVar: string;
|
|
21
31
|
outerLoopParam: string | undefined;
|
|
22
32
|
outerLoopParamBindings?: readonly LoopParamBinding[];
|
|
33
|
+
/** Outer loop's index param name, when present (#2861). */
|
|
34
|
+
outerLoopIndex?: string | null;
|
|
23
35
|
}
|
|
24
36
|
/**
|
|
25
37
|
* Walk `levels` (DFS-ordered), grouping each level's child levels and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-inner-loop.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/plan/build-inner-loop.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"build-inner-loop.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/plan/build-inner-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAMH,OAAO,KAAK,EAIV,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAmC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAM9C,OAAO,KAAK,EAKV,cAAc,EACf,MAAM,iBAAiB,CAAA;AAExB,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAA;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,sBAAsB,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAA;IACpD,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,GAAG,cAAc,CAiE7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-lazy-row.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/plan/build-lazy-row.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"build-lazy-row.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/plan/build-lazy-row.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,6 +58,8 @@ export interface BuildBranchInnerLoopsArgs {
|
|
|
58
58
|
outerLoopParam: string;
|
|
59
59
|
/** Outer loop param destructuring metadata. */
|
|
60
60
|
outerLoopParamBindings?: readonly LoopParamBinding[];
|
|
61
|
+
/** Outer loop's index param name, when present (#2861). */
|
|
62
|
+
outerLoopIndex?: string | null;
|
|
61
63
|
/**
|
|
62
64
|
* Outer-wrap closure — defaults to wrapping with `outerLoopParam`. Overridden
|
|
63
65
|
* by `emitNestedLoopChildConditionals` recursion (which threads its own wrap).
|
|
@@ -87,6 +89,8 @@ export interface BuildLoopChildConditionalsArgs {
|
|
|
87
89
|
loopParam: string;
|
|
88
90
|
/** Loop param destructuring metadata. */
|
|
89
91
|
loopParamBindings?: readonly LoopParamBinding[];
|
|
92
|
+
/** Loop's index param name, when it declares one (#2861) — same role as `loopParam` above. */
|
|
93
|
+
loopIndex?: string | null;
|
|
90
94
|
}
|
|
91
95
|
/**
|
|
92
96
|
* Build a list of `LoopChildConditionalPlan`s — the recursive Plan-tree
|
|
@@ -94,7 +98,8 @@ export interface BuildLoopChildConditionalsArgs {
|
|
|
94
98
|
* recursion. Each conditional pre-builds:
|
|
95
99
|
*
|
|
96
100
|
* - the wrapped condition expression
|
|
97
|
-
* - the
|
|
101
|
+
* - the addCondAttr'd whenTrue / whenFalse template HTML (already
|
|
102
|
+
* loop-param-wrapped at IR render time, #2868)
|
|
98
103
|
* - per-arm `LoopChildArmPlan`: events / child components / inner
|
|
99
104
|
* loops / nested conditionals (recursion)
|
|
100
105
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-loop-child-arm.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/plan/build-loop-child-arm.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,sBAAsB,EAEtB,oBAAoB,EAEpB,qBAAqB,EACrB,qBAAqB,EACrB,UAAU,EACX,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAGV,MAAM,EACN,MAAM,EACN,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAI1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAqC7D,OAAO,KAAK,EAEV,6BAA6B,EAC7B,uBAAuB,EAKvB,oBAAoB,EAEpB,wBAAwB,EACzB,MAAM,qBAAqB,CAAA;AAE5B,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,SAAS,sBAAsB,EAAE,GAAG,SAAS,CAAA;IACrD,+EAA+E;IAC/E,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IAC9B,2EAA2E;IAC3E,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,4BAA4B,GACjC,uBAAuB,CAyBzB;AAED,4EAA4E;AAC5E,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,MAAM,WAAW,kCAAkC;IACjD,UAAU,EAAE,SAAS,mBAAmB,EAAE,CAAA;IAC1C,+EAA+E;IAC/E,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CAC/B;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,kCAAkC,GACvC,6BAA6B,CA4C/B;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,CAAA;IAC7C,sFAAsF;IACtF,QAAQ,EAAE,MAAM,CAAA;IAChB;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB,sEAAsE;IACtE,cAAc,EAAE,MAAM,CAAA;IACtB,+CAA+C;IAC/C,sBAAsB,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAA;IACpD;;;OAGG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CACpC;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,yBAAyB,GAC9B,oBAAoB,
|
|
1
|
+
{"version":3,"file":"build-loop-child-arm.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/plan/build-loop-child-arm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-plain-row.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/plan/build-plain-row.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAI9D,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAEnD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,GAAG,UAAU,CAAA;IAC/B,+GAA+G;IAC/G,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,OAAO,GAAG,cAAc,CAAA;IAClC,eAAe,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,gBAAgB,GAAG,SAAS,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,SAAS,kBAAkB,EAAE,CAAA;IAC9C,OAAO,EAAE,eAAe,GAAG,SAAS,CAAA;IACpC,4EAA4E;IAC5E,kBAAkB,EAAE,MAAM,CAAA;IAC1B,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAA;IAChB,uGAAuG;IACvG,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CACnC;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"build-plain-row.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/plan/build-plain-row.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAI9D,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAEnD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,GAAG,UAAU,CAAA;IAC/B,+GAA+G;IAC/G,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,OAAO,GAAG,cAAc,CAAA;IAClC,eAAe,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,gBAAgB,GAAG,SAAS,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,SAAS,kBAAkB,EAAE,CAAA;IAC9C,OAAO,EAAE,eAAe,GAAG,SAAS,CAAA;IACpC,4EAA4E;IAC5E,kBAAkB,EAAE,MAAM,CAAA;IAC1B,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAA;IAChB,uGAAuG;IACvG,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CACnC;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CA0DtE"}
|
|
@@ -12,8 +12,9 @@
|
|
|
12
12
|
* from `LoopChildBranchSummary.reactiveAttrs` / `.reactiveTexts` —
|
|
13
13
|
* collected per-branch, recursively, so a doubly-nested conditional's
|
|
14
14
|
* arm carries its own bindings instead of an outer scope reaching in.
|
|
15
|
-
* 4. Apply `addCondAttrToTemplate` to
|
|
16
|
-
*
|
|
15
|
+
* 4. Apply `addCondAttrToTemplate` to each branch's HTML (already
|
|
16
|
+
* loop-param-wrapped at IR render time, #2868) so the stringifier
|
|
17
|
+
* emits a ready-to-interpolate template literal.
|
|
17
18
|
* 5. Recurse into the per-arm sub-plans via `LoopChildArmPlan` —
|
|
18
19
|
* events, child component inits, inner loops, nested conditionals,
|
|
19
20
|
* attrs, texts. No legacy passthrough remains.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-reactive-effects.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/plan/build-reactive-effects.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"build-reactive-effects.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/plan/build-reactive-effects.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EACV,YAAY,EAEZ,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAazD,OAAO,KAAK,EAGV,mBAAmB,EAEpB,MAAM,uBAAuB,CAAA;AAE9B,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAA;IACvC,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAA;IACvC,YAAY,EAAE,SAAS,oBAAoB,EAAE,GAAG,SAAS,CAAA;IACzD,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAA;IAC/C,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,2EAA2E;IAC3E,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,sEAAsE;AACtE,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,wBAAwB,GAC7B,mBAAmB,CAuErB;AA6CD;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,YAAY,EAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAUnH"}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Plan types for inner loops emitted inside a composite loop's renderItem
|
|
3
|
-
* body. Each `InnerLoopPlan` is one level (= one `mapArray`
|
|
4
|
-
*
|
|
5
|
-
* deeper nestings.
|
|
3
|
+
* body. Each `InnerLoopPlan` is one level (= one `mapArray`); `childLevels`
|
|
4
|
+
* recurses for deeper nestings.
|
|
6
5
|
*
|
|
7
6
|
* Replaces the legacy `emitInnerLoopSetup` + `DepthLevel` walk. The
|
|
8
|
-
* builder pre-resolves every per-level decision (
|
|
9
|
-
*
|
|
7
|
+
* builder pre-resolves every per-level decision (container query, wrapped
|
|
8
|
+
* array / template / key, narrowed-outer-param children) so the
|
|
10
9
|
* stringifier is a deterministic walk.
|
|
10
|
+
*
|
|
11
|
+
* Every level gets the reactive `mapArray` shape (#2865) — there used to
|
|
12
|
+
* be a second "static forEach, setup-only" shape for a nested loop whose
|
|
13
|
+
* array didn't reference the outer item, but that gate answered the wrong
|
|
14
|
+
* question (it never checked whether the array was reactive at all, only
|
|
15
|
+
* whether it mentioned the outer item's name) and silently froze any other
|
|
16
|
+
* reactivity in the row. See `build-inner-loop.ts`'s module docstring.
|
|
11
17
|
*/
|
|
12
18
|
import type { LoopChildEvent } from '../../types.ts';
|
|
13
19
|
import type { AttrMeta, IRLoopChildComponent, LoopParamBinding } from '../../../types.ts';
|
|
@@ -55,20 +61,9 @@ export interface InnerLoopReactiveAttr {
|
|
|
55
61
|
meta: AttrMeta;
|
|
56
62
|
}
|
|
57
63
|
/**
|
|
58
|
-
* One inner loop level inside a composite renderItem
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* - `reactive`: full `mapArray(...)` with renderItem (template clone,
|
|
63
|
-
* key attr, components/events with inner-wrapped props, reactive text
|
|
64
|
-
* effects, recursive childLevels).
|
|
65
|
-
* - `static`: `forEach(...)` for setup-only (children are rendered
|
|
66
|
-
* into the SSR HTML); components/events use the raw param, no
|
|
67
|
-
* wrap, no template clone.
|
|
68
|
-
*
|
|
69
|
-
* Choosing the mode requires checking whether `inner.array` references
|
|
70
|
-
* the outer loop param at *this* level (legacy O-8 fix). The builder
|
|
71
|
-
* does that check; the stringifier just dispatches on `mode`.
|
|
64
|
+
* One inner loop level inside a composite renderItem: a full `mapArray(...)`
|
|
65
|
+
* with renderItem (template clone, key attr, components/events with
|
|
66
|
+
* inner-wrapped props, reactive text/attr effects, recursive childLevels).
|
|
72
67
|
*/
|
|
73
68
|
export interface InnerLoopPlan {
|
|
74
69
|
/** Unique suffix used in `__ic` / `__innerEl` / `__innerIdx` var names. */
|
|
@@ -92,21 +87,25 @@ export interface InnerLoopPlan {
|
|
|
92
87
|
* `// Initialize <array> loop components and events` comments.
|
|
93
88
|
*/
|
|
94
89
|
arraySrc: string;
|
|
95
|
-
/** Inner loop parameter identifier
|
|
90
|
+
/** Inner loop parameter identifier. */
|
|
96
91
|
param: string;
|
|
97
92
|
/** Depth used by `keyAttrName(...)`. Same as the IR's `inner.depth`. */
|
|
98
93
|
keyDepth: number;
|
|
99
|
-
/**
|
|
100
|
-
|
|
101
|
-
* narrowed and prevents accidental cross-talk.
|
|
102
|
-
*/
|
|
103
|
-
emit: InnerLoopReactiveEmit | InnerLoopStaticEmit;
|
|
94
|
+
/** Emission data for this level's `mapArray` renderItem. */
|
|
95
|
+
emit: InnerLoopReactiveEmit;
|
|
104
96
|
/** Recursive child levels — narrowed-outer-param at build time. */
|
|
105
97
|
childLevels: readonly InnerLoopPlan[];
|
|
106
98
|
/** Outer loop param threaded into emitComponentAndEventSetup. */
|
|
107
99
|
outerLoopParam: string | undefined;
|
|
108
100
|
/** Outer loop param destructuring metadata. */
|
|
109
101
|
outerLoopParamBindings?: readonly LoopParamBinding[];
|
|
102
|
+
/**
|
|
103
|
+
* Outer loop's index param name, when present (#2861) — threaded into
|
|
104
|
+
* `emitComponentAndEventSetup` so a component prop / event handler in
|
|
105
|
+
* this row that closes over the OUTER loop's index reads it through the
|
|
106
|
+
* live accessor instead of a value frozen at row-creation time.
|
|
107
|
+
*/
|
|
108
|
+
outerLoopIndex?: string | null;
|
|
110
109
|
}
|
|
111
110
|
export interface InnerLoopReactiveEmit {
|
|
112
111
|
mode: 'reactive';
|
|
@@ -153,24 +152,5 @@ export interface InnerLoopReactiveEmit {
|
|
|
153
152
|
/** Pre-wrapped imperative ref callbacks for the inner-item body (#1244). */
|
|
154
153
|
childRefs: readonly LoopChildRefBinding[];
|
|
155
154
|
}
|
|
156
|
-
export interface InnerLoopStaticEmit {
|
|
157
|
-
mode: 'static';
|
|
158
|
-
/** Raw key expression (used as-is in setAttribute) — null when no key. */
|
|
159
|
-
rawKey: string | null;
|
|
160
|
-
/**
|
|
161
|
-
* Body-entry statements (see `PreludeStatements`) emitted at the top of
|
|
162
|
-
* the static `forEach(...)` body, after the existence guard. Holds the
|
|
163
|
-
* inner `.map()` callback preamble locals (#1064). Emitted unwrapped
|
|
164
|
-
* because the forEach param is the literal item, not a signal accessor —
|
|
165
|
-
* no accessor rewrite is needed.
|
|
166
|
-
*/
|
|
167
|
-
preludeStatements: PreludeStatements;
|
|
168
|
-
/** Raw components (no inner-wrap; the static body has no signal accessor). */
|
|
169
|
-
components: readonly IRLoopChildComponent[];
|
|
170
|
-
/** Raw events (no inner-wrap). */
|
|
171
|
-
events: readonly LoopChildEvent[];
|
|
172
|
-
/** Imperative ref callbacks (unwrapped — static body has no signal accessor). */
|
|
173
|
-
childRefs: readonly LoopChildRefBinding[];
|
|
174
|
-
}
|
|
175
155
|
export type InnerLoopsPlan = readonly InnerLoopPlan[];
|
|
176
156
|
//# sourceMappingURL=inner-loop.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inner-loop.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/plan/inner-loop.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"inner-loop.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/plan/inner-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EACV,QAAQ,EACR,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAEnE;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS,MAAM,EAAE,CAAA;AAEjD,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,iBAAiB,EAAE,MAAM,CAAA;IACzB;;;;OAIG;IACH,iBAAiB,EAAE,OAAO,CAAA;CAC3B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAA;IAChB,2DAA2D;IAC3D,iBAAiB,EAAE,MAAM,CAAA;IACzB,yDAAyD;IACzD,IAAI,EAAE,QAAQ,CAAA;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAA;IACjB,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,MAAM,EAAE,MAAM,CAAA;IACd,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAA;IACrB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAA;IAChB,4DAA4D;IAC5D,IAAI,EAAE,qBAAqB,CAAA;IAC3B,mEAAmE;IACnE,WAAW,EAAE,SAAS,aAAa,EAAE,CAAA;IACrC,iEAAiE;IACjE,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,+CAA+C;IAC/C,sBAAsB,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAA;IACpD;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,UAAU,CAAA;IAChB,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAA;IACb,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAA;IACjB;;;;;OAKG;IACH,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,6DAA6D;IAC7D,eAAe,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,eAAe,EAAE,OAAO,CAAA;IACxB,wEAAwE;IACxE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,+DAA+D;IAC/D,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAA;IAC3C,2DAA2D;IAC3D,MAAM,EAAE,SAAS,cAAc,EAAE,CAAA;IACjC,iEAAiE;IACjE,aAAa,EAAE,SAAS,aAAa,EAAE,CAAA;IACvC,sEAAsE;IACtE,aAAa,EAAE,SAAS,qBAAqB,EAAE,CAAA;IAC/C;;;;;;;;;OASG;IACH,YAAY,EAAE,SAAS,wBAAwB,EAAE,CAAA;IACjD,4EAA4E;IAC5E,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAA;CAC1C;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,aAAa,EAAE,CAAA"}
|
|
@@ -139,6 +139,13 @@ export interface BranchInnerLoop {
|
|
|
139
139
|
outerLoopParam: string;
|
|
140
140
|
/** Outer loop param destructuring metadata. */
|
|
141
141
|
outerLoopParamBindings?: readonly import('../../../types.ts').LoopParamBinding[];
|
|
142
|
+
/**
|
|
143
|
+
* Outer loop's index param name, when present (#2861) — threaded into
|
|
144
|
+
* `emitComponentAndEventSetup`'s own outer-wrap pass alongside
|
|
145
|
+
* `outerLoopParam`/`outerLoopParamBindings`, mirroring `InnerLoopPlan`'s
|
|
146
|
+
* field of the same name.
|
|
147
|
+
*/
|
|
148
|
+
outerLoopIndex?: string | null;
|
|
142
149
|
}
|
|
143
150
|
export type BranchInnerLoopsPlan = readonly BranchInnerLoop[];
|
|
144
151
|
/**
|
|
@@ -195,5 +202,12 @@ export interface LoopChildConditionalPlan {
|
|
|
195
202
|
whenFalseTemplateHtml: string;
|
|
196
203
|
whenTrueArm: LoopChildArmPlan;
|
|
197
204
|
whenFalseArm: LoopChildArmPlan;
|
|
205
|
+
/**
|
|
206
|
+
* `wrappedCondition` reads a `.map()` callback preamble local (#2596,
|
|
207
|
+
* same field as `NestedConditionalPlan.readsPreamble` one level up) —
|
|
208
|
+
* the stringifier must run the row's preamble inside the getter passed
|
|
209
|
+
* to `insert()`; the local isn't otherwise in scope there.
|
|
210
|
+
*/
|
|
211
|
+
readsPreamble?: boolean;
|
|
198
212
|
}
|
|
199
213
|
//# sourceMappingURL=loop-child-arm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop-child-arm.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/plan/loop-child-arm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,oEAAoE;AACpE,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,iEAAiE;IACjE,cAAc,EAAE,MAAM,CAAA;IACtB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAA;CAC1C;AAED;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,SAAS,eAAe,EAAE,CAAA;AAEhE;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAA;IACrB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,6BAA6B,GAAG,SAAS,wBAAwB,EAAE,CAAA;AAE/E,2EAA2E;AAC3E,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,iBAAiB,EAAE,MAAM,CAAA;IACzB;;;;;OAKG;IACH,iBAAiB,EAAE,OAAO,CAAA;CAC3B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAA;IACjB,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAA;IACd,8EAA8E;IAC9E,aAAa,EAAE,MAAM,CAAA;IACrB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAA;IACjB,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAA;IACb,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAA;IACjB,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;;OAOG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,6DAA6D;IAC7D,eAAe,EAAE,MAAM,CAAA;IACvB,wEAAwE;IACxE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,gBAAgB,EAAE,SAAS,OAAO,mBAAmB,EAAE,oBAAoB,EAAE,CAAA;IAC7E,+DAA+D;IAC/D,YAAY,EAAE,SAAS,OAAO,gBAAgB,EAAE,cAAc,EAAE,CAAA;IAChE,iEAAiE;IACjE,aAAa,EAAE,SAAS,mBAAmB,EAAE,CAAA;IAC7C;;;;OAIG;IACH,kBAAkB,EAAE,SAAS,wBAAwB,EAAE,CAAA;IACvD,qEAAqE;IACrE,cAAc,EAAE,MAAM,CAAA;IACtB,+CAA+C;IAC/C,sBAAsB,CAAC,EAAE,SAAS,OAAO,mBAAmB,EAAE,gBAAgB,EAAE,CAAA;IAChF,8EAA8E;IAC9E,cAAc,EAAE,MAAM,CAAA;IACtB,+CAA+C;IAC/C,sBAAsB,CAAC,EAAE,SAAS,OAAO,mBAAmB,EAAE,gBAAgB,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"loop-child-arm.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/plan/loop-child-arm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Stringify `InnerLoopsPlan` into source lines.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* One emission shape (#2865 — the former second "static forEach,
|
|
5
|
+
* setup-only" shape for a nested loop whose array didn't reference the
|
|
6
|
+
* outer item was removed: it answered "does the array mention the outer
|
|
7
|
+
* item" instead of "is this reactive at all", so it silently froze any
|
|
8
|
+
* other reactivity — a signal, a memo, a prop, a preamble local — the
|
|
9
|
+
* inner array or its rows depended on):
|
|
6
10
|
*
|
|
7
11
|
* reactive — full mapArray:
|
|
8
12
|
* <indent>// Reactive inner loop: <arraySrc>
|
|
@@ -17,18 +21,6 @@
|
|
|
17
21
|
* <indent> per-item conditionals: insert() over __innerEl<uid> (#2706)
|
|
18
22
|
* <indent> return __innerEl<uid>
|
|
19
23
|
* <indent>}) }
|
|
20
|
-
*
|
|
21
|
-
* static — forEach setup-only:
|
|
22
|
-
* <indent>// Initialize <arraySrc> loop components and events
|
|
23
|
-
* <indent>{ const __ic<uid> = <containerExpr>
|
|
24
|
-
* <indent>if (__ic<uid> && <arrayExpr>) <arrayExpr>.forEach((<param>, __innerIdx<uid>) => {
|
|
25
|
-
* <indent> const __innerEl<uid> = __ic<uid>.children[__innerIdx<uid>]
|
|
26
|
-
* <indent> if (!__innerEl<uid>) return
|
|
27
|
-
* <indent> <preludeStatements*> // raw preamble (#1064)
|
|
28
|
-
* <indent> __innerEl<uid>.setAttribute('<keyAttr>', String(<rawKey>))?
|
|
29
|
-
* <indent> emitComponentAndEventSetup(...)
|
|
30
|
-
* <indent> recurse on childLevels
|
|
31
|
-
* <indent>}) }
|
|
32
24
|
*/
|
|
33
25
|
import type { InnerLoopsPlan } from '../plan/inner-loop.ts';
|
|
34
26
|
export declare function stringifyInnerLoops(lines: string[], plan: InnerLoopsPlan, indent: string, pc?: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inner-loop.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/stringify/inner-loop.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"inner-loop.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/stringify/inner-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AASH,OAAO,KAAK,EAEV,cAAc,EACf,MAAM,uBAAuB,CAAA;AAE9B,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,EAAE,CAAC,EAAE,MAAM,GACV,IAAI,CAIN"}
|
|
@@ -58,6 +58,7 @@
|
|
|
58
58
|
* A loop with NO outer binding emits no `applyOuter` at all — its rows do
|
|
59
59
|
* literally nothing at hydration.
|
|
60
60
|
*/
|
|
61
|
+
import { dedupGuard } from '../../emit-reactive.ts';
|
|
61
62
|
import type { SkeletonSlotPaths } from '../../html-template.ts';
|
|
62
63
|
import type { LazyRowAttrBinding, LazyRowPlanData } from '../plan/build-lazy-row.ts';
|
|
63
64
|
export interface StringifyLazyRowOptions {
|
|
@@ -78,9 +79,6 @@ export interface StringifyLazyRowOptions {
|
|
|
78
79
|
lazyRow: LazyRowPlanData;
|
|
79
80
|
}
|
|
80
81
|
export declare function stringifyLazyRowLoop(lines: string[], o: StringifyLazyRowOptions): void;
|
|
81
|
-
/** `entry.last`-backed dedup test. `in` (not a truthiness check) so a
|
|
82
|
-
* legitimately `undefined` value still records and still writes once. */
|
|
83
|
-
declare function dedupGuard(ordinal: number): string;
|
|
84
82
|
/**
|
|
85
83
|
* Read-compare-write seeding predicate (§9.3(1)): does the CURRENT DOM
|
|
86
84
|
* differ from the value `__x` this binding would write? Mirrors
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy-row.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/stringify/lazy-row.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;
|
|
1
|
+
{"version":3,"file":"lazy-row.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/stringify/lazy-row.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AAGH,OAAO,EAAyB,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAE1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAQ/D,OAAO,KAAK,EACV,kBAAkB,EAElB,eAAe,EAEhB,MAAM,2BAA2B,CAAA;AAElC,MAAM,WAAW,uBAAuB;IACtC,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,yEAAyE;IACzE,cAAc,EAAE,OAAO,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,iBAAiB,CAAA;IACjC,OAAO,EAAE,eAAe,CAAA;CACzB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,uBAAuB,GAAG,IAAI,CA6LtF;AAwQD;;;;;;GAMG;AACH,iBAAS,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,kBAAkB,GAAG,MAAM,CA4BtE;AAED,kDAAkD;AAClD,eAAO,MAAM,kBAAkB;;;CAAkC,CAAA"}
|
|
@@ -27,7 +27,9 @@ import type { ReactiveAttrSlot } from '../plan/reactive-effects.ts';
|
|
|
27
27
|
* Callers must declare `const __disposers = []` before emitting this and
|
|
28
28
|
* return `() => __disposers.forEach(d => d())` from `bindEvents`.
|
|
29
29
|
*/
|
|
30
|
-
export declare function stringifyBranchReactiveAttrs(lines: string[], plan: readonly ReactiveAttrSlot[], indent: string, pc
|
|
30
|
+
export declare function stringifyBranchReactiveAttrs(lines: string[], plan: readonly ReactiveAttrSlot[], indent: string, pc: string | undefined,
|
|
31
|
+
/** The row's preamble re-run statement, when this scope has one (#2596/#2447) — see `conditionGetterExpr`'s docstring for the shared contract. */
|
|
32
|
+
mapPreambleWrapped: string | undefined): void;
|
|
31
33
|
/**
|
|
32
34
|
* Emit `addEventListener` setup for a loop-cond branch arm. One qsa() per
|
|
33
35
|
* slot, then one listener line per (slotId, eventName) pair. The closing
|
|
@@ -67,7 +69,19 @@ export declare function stringifyBranchInnerLoops(lines: string[], plan: BranchI
|
|
|
67
69
|
* (only present at the outer-conditional level) are emitted via
|
|
68
70
|
* `LoopChildArmPlan.texts`.
|
|
69
71
|
*/
|
|
70
|
-
export declare function stringifyLoopChildConditionals(lines: string[], conditionals: readonly LoopChildConditionalPlan[], indent: string, pc
|
|
72
|
+
export declare function stringifyLoopChildConditionals(lines: string[], conditionals: readonly LoopChildConditionalPlan[], indent: string, pc: string | undefined,
|
|
73
|
+
/** The row's preamble re-run statement, when this scope has one (#2596/#2447). */
|
|
74
|
+
mapPreambleWrapped: string | undefined): void;
|
|
75
|
+
/**
|
|
76
|
+
* The `() => cond` getter handed to `insert()`. A condition flagged
|
|
77
|
+
* `readsPreamble` (#2596) re-runs the row preamble INSIDE the getter —
|
|
78
|
+
* `insert()` re-invokes this closure on every dependency change to decide
|
|
79
|
+
* the branch, and a preamble local is a plain per-row `const`, not a signal
|
|
80
|
+
* `insert()` can see through on its own. ONE implementation for both the
|
|
81
|
+
* outer (`emitOuterConditional`, reactive-effects.ts) and nested
|
|
82
|
+
* (`stringifyLoopChildConditional`, here) levels so the two can't drift.
|
|
83
|
+
*/
|
|
84
|
+
export declare function conditionGetterExpr(wrappedCondition: string, readsPreamble: boolean | undefined, mapPreambleWrapped: string | undefined): string;
|
|
71
85
|
/**
|
|
72
86
|
* Emit one arm's full body: events, child component inits, inner loops,
|
|
73
87
|
* then a disposable section (reactive attrs, nested conditionals, texts)
|
|
@@ -76,5 +90,7 @@ export declare function stringifyLoopChildConditionals(lines: string[], conditio
|
|
|
76
90
|
* the outer (top-of-loop-item) conditional stringifier in
|
|
77
91
|
* `reactive-effects.ts` — the two arm shapes are identical.
|
|
78
92
|
*/
|
|
79
|
-
export declare function stringifyLoopChildArm(lines: string[], arm: LoopChildArmPlan, armIndent: string, pc: string | undefined
|
|
93
|
+
export declare function stringifyLoopChildArm(lines: string[], arm: LoopChildArmPlan, armIndent: string, pc: string | undefined,
|
|
94
|
+
/** The row's preamble re-run statement, when this scope has one (#2596/#2447) — forwarded to this arm's own reactive attrs and nested conditionals. */
|
|
95
|
+
mapPreambleWrapped: string | undefined): void;
|
|
80
96
|
//# sourceMappingURL=loop-child-arm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop-child-arm.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/stringify/loop-child-arm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,OAAO,KAAK,EACV,6BAA6B,EAC7B,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAEnE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,SAAS,gBAAgB,EAAE,EACjC,MAAM,EAAE,MAAM,EACd,EAAE,
|
|
1
|
+
{"version":3,"file":"loop-child-arm.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/stringify/loop-child-arm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,OAAO,KAAK,EACV,6BAA6B,EAC7B,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAEnE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,SAAS,gBAAgB,EAAE,EACjC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,GAAG,SAAS;AACtB,kJAAkJ;AAClJ,kBAAkB,EAAE,MAAM,GAAG,SAAS,GACrC,IAAI,CAsBN;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,uBAAuB,EAC7B,MAAM,EAAE,MAAM,GACb,IAAI,CAYN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,6BAA6B,EACnC,MAAM,EAAE,MAAM,GACb,IAAI,CAIN;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,MAAM,EACd,EAAE,CAAC,EAAE,MAAM,GACV,IAAI,CAoEN;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,EAAE,EACf,YAAY,EAAE,SAAS,wBAAwB,EAAE,EACjD,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,GAAG,SAAS;AACtB,kFAAkF;AAClF,kBAAkB,EAAE,MAAM,GAAG,SAAS,GACrC,IAAI,CAIN;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,OAAO,GAAG,SAAS,EAClC,kBAAkB,EAAE,MAAM,GAAG,SAAS,GACrC,MAAM,CAIR;AA2BD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,EAAE,gBAAgB,EACrB,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,GAAG,SAAS;AACtB,uJAAuJ;AACvJ,kBAAkB,EAAE,MAAM,GAAG,SAAS,GACrC,IAAI,CAiDN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/stringify/loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAWH,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEpG;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,SAAS,mBAAmB,EAAE,EACpC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,OAAO,CAAC;IAAC,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAClH,IAAI,CAaN;AAED;;;;;;;;;;GAUG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAoBnE;AAYD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,aAAa,EACnB,SAAS,GAAE,MAAa,GACvB,IAAI,CA+KN;AAoDD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/stringify/loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAWH,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEpG;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,SAAS,mBAAmB,EAAE,EACpC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,OAAO,CAAC;IAAC,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAClH,IAAI,CAaN;AAED;;;;;;;;;;GAUG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAoBnE;AAYD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,aAAa,EACnB,SAAS,GAAE,MAAa,GACvB,IAAI,CA+KN;AAoDD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,CA8H/E"}
|
|
@@ -91,7 +91,11 @@ export interface StringifyReactiveEffectsOptions {
|
|
|
91
91
|
* The loop callback's pre-return preamble (already wrapped with the loop
|
|
92
92
|
* param accessor), re-run once per row-effect tick — BEFORE any preamble
|
|
93
93
|
* region read — so `preambleRegions`' `valueExpr`s see freshly recomputed
|
|
94
|
-
* locals.
|
|
94
|
+
* locals. Also consumed by every OTHER `readsPreamble` site in this row's
|
|
95
|
+
* scope: row-level attrs (`emitAttrSlotsGranular`/`emitConsolidatedRowEffect`),
|
|
96
|
+
* outer condition getters (`emitOuterConditional`), and — forwarded
|
|
97
|
+
* through `stringifyLoopChildArm` (#2596 follow-up) — that row's branch
|
|
98
|
+
* arms' own reactive attrs and nested condition getters.
|
|
95
99
|
*/
|
|
96
100
|
mapPreambleWrapped?: string;
|
|
97
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactive-effects.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/stringify/reactive-effects.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAMH,OAAO,KAAK,EAGV,mBAAmB,EAEpB,MAAM,6BAA6B,CAAA;AAEpC;;;+BAG+B;AAC/B,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,+BAA+B;IAC9C,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChD;;;;;;;;;;;;OAYG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChD;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAA;IAC9C
|
|
1
|
+
{"version":3,"file":"reactive-effects.d.ts","sourceRoot":"","sources":["../../../../src/ir-to-client-js/control-flow/stringify/reactive-effects.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAMH,OAAO,KAAK,EAGV,mBAAmB,EAEpB,MAAM,6BAA6B,CAAA;AAEpC;;;+BAG+B;AAC/B,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,+BAA+B;IAC9C,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChD;;;;;;;;;;;;OAYG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChD;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAA;IAC9C;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,mBAAmB,GAAG,IAAI,EAChC,IAAI,EAAE,+BAA+B,GACpC,IAAI,CA8BN"}
|
|
@@ -9,8 +9,62 @@ import type { ClientJsContext } from './types.ts';
|
|
|
9
9
|
* Generate JS statements to update a DOM attribute reactively.
|
|
10
10
|
* Centralizes the attribute-type dispatch (value, class, boolean, presence, generic)
|
|
11
11
|
* so that new AttrMeta flags are handled in one place.
|
|
12
|
+
*
|
|
13
|
+
* Per-kind WRITE dispatch only — an effect body must never call this
|
|
14
|
+
* directly, only through `emitDedupedAttrUpdate` below (#2869).
|
|
12
15
|
*/
|
|
13
16
|
export declare function emitAttrUpdate(target: string, attrName: string, expression: string, meta: AttrMeta): string[];
|
|
17
|
+
/**
|
|
18
|
+
* Last-value store every deduped attribute write in one emitting block
|
|
19
|
+
* shares — `const __l = []`, declared ONCE in the block that creates the
|
|
20
|
+
* effect(s), so the effect closure (a stable object across its own reruns)
|
|
21
|
+
* captures it and no other effect can see it. Each binding owns a fixed
|
|
22
|
+
* numeric ordinal into it. The lazy row graph (`control-flow/stringify/
|
|
23
|
+
* lazy-row.ts`) declares the same `__l` from the reconciler's `entry.last`
|
|
24
|
+
* instead — `applyItem` / `applyOuter` are separate invocations with no
|
|
25
|
+
* closure of their own to own the array — but the guard, the temp name,
|
|
26
|
+
* the ordinal scheme and the record-after-write rule below are shared with
|
|
27
|
+
* it (#2869).
|
|
28
|
+
*/
|
|
29
|
+
export declare const DEDUP_STORE_DECL = "const __l = []";
|
|
30
|
+
/**
|
|
31
|
+
* `__l`-backed dedup test. `in` (not a truthiness check) so a legitimately
|
|
32
|
+
* `undefined` value still records and still writes once; `!(N in __l)` on
|
|
33
|
+
* the first run is what makes the first write unconditional — the same
|
|
34
|
+
* "dedup, no trust-first-run" contract `claim-slots.ts` documents for
|
|
35
|
+
* 'markup' slots. Moved here from `control-flow/stringify/lazy-row.ts`
|
|
36
|
+
* so the eager paths below and the lazy row graph share one guard (#2869).
|
|
37
|
+
*/
|
|
38
|
+
export declare function dedupGuard(ordinal: number): string;
|
|
39
|
+
/**
|
|
40
|
+
* The ONLY way an effect body should write a reactive attribute (#2869).
|
|
41
|
+
* Wraps `emitAttrUpdate`'s per-kind write in a previous-value guard:
|
|
42
|
+
* compute once into `__x`, write only when `guard` holds, then record
|
|
43
|
+
* `__x` into `__l[ordinal]` whether or not the write happened, so the
|
|
44
|
+
* stored value always tracks the latest computation. Without this, every
|
|
45
|
+
* rerun of a shared effect — a keyed row's fused effect (#2869's report),
|
|
46
|
+
* or even a plain per-slot effect covering two attrs on one element — rewrote
|
|
47
|
+
* every attribute in it on every rerun, no matter which binding actually
|
|
48
|
+
* changed. `untrack()` cannot fix this on its own: it only suppresses
|
|
49
|
+
* dependency REGISTRATION for the read inside it, not re-execution of the
|
|
50
|
+
* surrounding effect when an unrelated sibling binding legitimately changes
|
|
51
|
+
* — so an `<iframe srcdoc={untrack(...)}>` kept reloading every time a
|
|
52
|
+
* sibling attribute in the same row effect changed.
|
|
53
|
+
*
|
|
54
|
+
* Self-contained block: `__x` (and `emitAttrUpdate`'s own `__v` / bare
|
|
55
|
+
* `const __val`) never leak into the caller's scope, so several bindings
|
|
56
|
+
* can sit in one effect body without a wrapper block of their own.
|
|
57
|
+
*
|
|
58
|
+
* Compares the RAW value, exactly like the lazy-row path always has: an
|
|
59
|
+
* object-valued `style` / `dangerouslySetInnerHTML` is a fresh object per
|
|
60
|
+
* run and simply keeps writing as before (no regression, no gain — a
|
|
61
|
+
* follow-up could compare the coerced value instead).
|
|
62
|
+
*
|
|
63
|
+
* `guard` is overridable for the lazy row graph's `__seed`-run DOM
|
|
64
|
+
* read-compare (`__seed ? <DOM read-compare> : <dedupGuard>`) and `null`
|
|
65
|
+
* for its `createRow` (fresh clone: write unconditionally, still record).
|
|
66
|
+
*/
|
|
67
|
+
export declare function emitDedupedAttrUpdate(target: string, attrName: string, expression: string, meta: AttrMeta, ordinal: number, guard?: string | null): string[];
|
|
14
68
|
/**
|
|
15
69
|
* Rewrite destructured prop names in an expression to `(props.xxx ?? default)`.
|
|
16
70
|
* Only applies when the component uses destructured props (not props.xxx style).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit-reactive.d.ts","sourceRoot":"","sources":["../../src/ir-to-client-js/emit-reactive.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,aAAa,CAAA;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AA0EjD
|
|
1
|
+
{"version":3,"file":"emit-reactive.d.ts","sourceRoot":"","sources":["../../src/ir-to-client-js/emit-reactive.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,aAAa,CAAA;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AA0EjD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAsC7G;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,mBAAmB,CAAA;AAEhD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAM,GAAG,IAA0B,GACzC,MAAM,EAAE,CAYV;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,MAAM,CA0BzF;AAwMD,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI,CAoFlF;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI,CAiBrF;AAED,kGAAkG;AAClG,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI,CAgCxF;AAED,+FAA+F;AAC/F,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI,CA2DpF;AAED,2FAA2F;AAC3F,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI,CAiDlF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-template.d.ts","sourceRoot":"","sources":["../../src/ir-to-client-js/html-template.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"html-template.d.ts","sourceRoot":"","sources":["../../src/ir-to-client-js/html-template.ts"],"names":[],"mappings":"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"}
|