diff --git a/.changeset/dynamic-tag-owner-compare.md b/.changeset/dynamic-tag-owner-compare.md new file mode 100644 index 00000000000..f86ebaa50b7 --- /dev/null +++ b/.changeset/dynamic-tag-owner-compare.md @@ -0,0 +1,5 @@ +--- +"@marko/runtime-tags": patch +--- + +Fix a dynamic tag silently ignoring a switch between two instances of the same content section (e.g. two `` contents from two instances of one provider tag, or the list-detail pattern `<${selected.content}/>`). The change check compared only the shared content id, so no teardown or re-render occurred and closures stayed subscribed to the old owner. Renderers now also compare their owner scope, and SSR serializes an owned renderer's registered reference so resumed slots stay instance-aware. diff --git a/.sizes.json b/.sizes.json index c766e3320f8..9eb6773c65e 100644 --- a/.sizes.json +++ b/.sizes.json @@ -7,8 +7,8 @@ { "name": "*", "total": { - "min": 25964, - "brotli": 9537 + "min": 26049, + "brotli": 9582 } }, { diff --git a/.sizes/dom.js b/.sizes/dom.js index ef2e7f9866d..f2f95596294 100644 --- a/.sizes/dom.js +++ b/.sizes/dom.js @@ -1,4 +1,4 @@ -// size: 25964 (min) 9537 (brotli) +// size: 26049 (min) 9582 (brotli) //#region packages/runtime-tags/dist/dom.mjs let empty = [], rest = Symbol(), @@ -99,9 +99,7 @@ let empty = [], (scope, newRenderer, getInput) => { let normalizedRenderer = normalizeDynamicRenderer(newRenderer); if ( - scope[rendererAccessor] !== - (scope[rendererAccessor] = - normalizedRenderer?.a || normalizedRenderer) || + rendererChanged(scope, rendererAccessor, normalizedRenderer) || (getContent && !(normalizedRenderer || scope[childScopeAccessor])) ) if ( @@ -1633,7 +1631,7 @@ function attrsInternal(scope, nodeAccessor, nextAttrs) { } function _attr_content(scope, nodeAccessor, value) { let content = normalizeClientRender(value); - scope["D" + nodeAccessor] !== (scope["D" + nodeAccessor] = content?.a) && + rendererChanged(scope, "D" + nodeAccessor, content) && (setConditionalRenderer(scope, nodeAccessor, content, createAndSetupBranch), content?.f && subscribeToScopeSet(content.e, content.f, scope["A" + nodeAccessor])); @@ -2044,6 +2042,15 @@ function _show(nodeAccessor, startNodeAccessor) { function patchDynamicTag(fn) { _dynamic_tag = fn(_dynamic_tag); } +function rendererChanged(scope, rendererAccessor, renderer) { + let prev = scope[rendererAccessor], + changed = + (prev?.a || prev) !== (renderer?.a || renderer) || + (typeof prev != "string" && + typeof renderer != "string" && + prev?.e !== renderer?.e); + return ((scope[rendererAccessor] = renderer), changed); +} function _dynamic_tag_content(nodeAccessor) { nodeAccessor = decodeAccessor(nodeAccessor); let childScopeAccessor = "A" + nodeAccessor, @@ -2052,8 +2059,7 @@ function _dynamic_tag_content(nodeAccessor) { enableBranches(), (scope, renderer) => { if ( - (scope[rendererAccessor] !== - (scope[rendererAccessor] = renderer?.a || renderer) && + (rendererChanged(scope, rendererAccessor, renderer) && (setConditionalRenderer( scope, nodeAccessor, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/sizes.json index a44f7bdc96d..5a33189336b 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 66703, - "brotli": 20489 + "min": 66801, + "brotli": 20512 }, "files": { "components/tags-counter.marko": 681, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/sizes.json index 33a70b4f993..f5c4150913c 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 68311, - "brotli": 21125 + "min": 68409, + "brotli": 21195 }, "files": { "components/class-counter.marko": 1028, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/sizes.json index a44f7bdc96d..5a33189336b 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 66703, - "brotli": 20489 + "min": 66801, + "brotli": 20512 }, "files": { "components/tags-counter.marko": 681, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-dynamic-tag-class-to-tags/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-dynamic-tag-class-to-tags/sizes.json index 59aa49f9f95..05cc2af0e3c 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-dynamic-tag-class-to-tags/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-dynamic-tag-class-to-tags/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 66601, - "brotli": 20409 + "min": 66699, + "brotli": 20493 }, "files": { "components/tags-child.marko": 509, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-dynamic-tag-conditional-class-to-tags/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-dynamic-tag-conditional-class-to-tags/sizes.json index 98ba9762f55..34c74d196e3 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-dynamic-tag-conditional-class-to-tags/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-dynamic-tag-conditional-class-to-tags/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 66642, - "brotli": 20447 + "min": 66740, + "brotli": 20468 }, "files": { "components/tags-child.marko": 509, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-emit-inline-tags-to-class/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-emit-inline-tags-to-class/sizes.json index 7f0d11cd6e2..bbca4759dd9 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-emit-inline-tags-to-class/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-emit-inline-tags-to-class/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 68303, - "brotli": 21107 + "min": 68404, + "brotli": 21141 }, "files": { "components/inline-button.marko": 1094, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-emit-split-tags-to-class/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-emit-split-tags-to-class/sizes.json index d4206ca5c8f..9a36bc05476 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-emit-split-tags-to-class/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-emit-split-tags-to-class/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 68422, - "brotli": 21165 + "min": 68520, + "brotli": 21234 }, "files": { "components/split-button/component-browser.js": 373, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-class-to-tags/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-class-to-tags/sizes.json index b306ce9a2b9..0e704c1d37e 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-class-to-tags/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-class-to-tags/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 66741, - "brotli": 20505 + "min": 66839, + "brotli": 20551 }, "files": { "components/tags-pinger.marko": 663, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-handler-render-body-tags-to-class/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-handler-render-body-tags-to-class/sizes.json index e9c3b8f278e..e6dab5c4fda 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-handler-render-body-tags-to-class/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-handler-render-body-tags-to-class/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 68607, - "brotli": 21263 + "min": 68705, + "brotli": 21320 }, "files": { "components/my-button.marko": 1048, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-split-class-to-tags/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-split-class-to-tags/sizes.json index ad6fbcab1fb..5b3a0fe1b89 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-split-class-to-tags/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-split-class-to-tags/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 69833, - "brotli": 21527 + "min": 69931, + "brotli": 21607 }, "files": { "components/tags-pinger.marko": 706, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/sizes.json index b62c2c2da13..c8f979c5283 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 68243, - "brotli": 21070 + "min": 68343, + "brotli": 21134 }, "files": { "components/class-counter.marko": 1043, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-mixed-inert-and-stateful-tags-to-class/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-mixed-inert-and-stateful-tags-to-class/sizes.json index b120a6eaee0..bd7b7fe4797 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-mixed-inert-and-stateful-tags-to-class/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-mixed-inert-and-stateful-tags-to-class/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 68311, - "brotli": 21154 + "min": 68409, + "brotli": 21217 }, "files": { "components/class-counter.marko": 1028, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/sizes.json index d01fc5d01e0..132dfec37a3 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 67008, - "brotli": 20605 + "min": 67106, + "brotli": 20602 }, "files": { "components/tags-layout.marko": 838, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/sizes.json index 896f9d2b743..3e90c921700 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 66680, - "brotli": 20507 + "min": 66778, + "brotli": 20548 }, "files": { "components/tags-layout.marko": 696, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/sizes.json index 64fb57b0116..a4452c713bc 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 68751, - "brotli": 21327 + "min": 68849, + "brotli": 21357 }, "files": { "components/class-layout.marko": 1227, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-reactive-split-tags-to-class/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-reactive-split-tags-to-class/sizes.json index ece53edead9..a1c39c16a21 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-reactive-split-tags-to-class/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-reactive-split-tags-to-class/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 68253, - "brotli": 21082 + "min": 68351, + "brotli": 21118 }, "files": { "components/split-display/component-browser.js": 182, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-rerender-inert-class/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-rerender-inert-class/sizes.json index a1c956bbee9..e3704a9e341 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-rerender-inert-class/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-rerender-inert-class/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 67923, - "brotli": 20984 + "min": 68021, + "brotli": 21056 }, "files": { "components/class-display.marko": 856, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-roundtrip-split-tags-to-class/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-roundtrip-split-tags-to-class/sizes.json index 4dd59d5750b..60fcea73c22 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-roundtrip-split-tags-to-class/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-roundtrip-split-tags-to-class/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 68416, - "brotli": 21169 + "min": 68517, + "brotli": 21210 }, "files": { "components/split-counter/component-browser.js": 228, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/sizes.json index 64170363ffe..99967fd2672 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 68026, - "brotli": 21034 + "min": 68124, + "brotli": 21003 }, "files": { "components/my-button/component-browser.js": 457, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/sizes.json index 2a270a61445..8338810165c 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 67062, - "brotli": 20656 + "min": 67160, + "brotli": 20696 }, "files": { "components/tags-layout.marko": 912, diff --git a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/sizes.json b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/sizes.json index 9f6dbf0d438..d3cc9f5165d 100644 --- a/packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 69111, - "brotli": 21500 + "min": 69209, + "brotli": 21508 }, "files": { "components/class-layout.marko": 1245, diff --git a/packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/sizes.json index a7a8cf2ff68..acc4ee2eac6 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 13437, - "brotli": 5145 + "min": 13535, + "brotli": 5178 }, "files": { "tags/hello/index.marko": 194, diff --git a/packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/writes.debug.html index 5a2f55fb60a..306f5dddc2b 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/writes.debug.html @@ -11,10 +11,10 @@ y: 2, "#childScope/1": _(2) }, { - "ConditionalRenderer:#text/0": "packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/template.marko_1_content", - content: _(1, + "ConditionalRenderer:#text/0": _.a = _(1, "packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/template.marko_1_content" - ) + ), + content: _.a }, { outer: 1, _: _(1), diff --git a/packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/writes.html index e7abeca787c..bf8b33c70d7 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/writes.html +++ b/packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/writes.html @@ -11,8 +11,8 @@ d: 2, b: _(2) }, { - Da: "a1", - d: _(1, "a1") + Da: _.a = _(1, "a1"), + d: _.a }, { c: 1, _: _(1), diff --git a/packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/sizes.json index 52cc96c3c53..2bc78215db4 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 14018, - "brotli": 5390 + "min": 14116, + "brotli": 5421 }, "files": { "tags/child.marko": 432, @@ -12,7 +12,7 @@ } }, "html": { - "min": 494, - "brotli": 330 + "min": 497, + "brotli": 333 } } diff --git a/packages/runtime-tags/src/__tests__/fixtures/conditional-dynamic-tag-in-loop-closure/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/conditional-dynamic-tag-in-loop-closure/__snapshots__/writes.debug.html index f271a4d054e..1f9d114d92d 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/conditional-dynamic-tag-in-loop-closure/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/conditional-dynamic-tag-in-loop-closure/__snapshots__/writes.debug.html @@ -6,11 +6,11 @@ "ClosureScopes:count": new Set([_(5)]), "#childScope/0": _(2) }, 1, { - content: _(1, + content: _.a = _(1, "packages/runtime-tags/src/__tests__/fixtures/conditional-dynamic-tag-in-loop-closure/template.marko_1_content" ) }, { - "ConditionalRenderer:#text/0": "packages/runtime-tags/src/__tests__/fixtures/conditional-dynamic-tag-in-loop-closure/template.marko_1_content", + "ConditionalRenderer:#text/0": _.a, _: _(3) }, { _: _(1) diff --git a/packages/runtime-tags/src/__tests__/fixtures/conditional-dynamic-tag-in-loop-closure/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/conditional-dynamic-tag-in-loop-closure/__snapshots__/writes.html index 98f29e39be2..480c5b92472 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/conditional-dynamic-tag-in-loop-closure/__snapshots__/writes.html +++ b/packages/runtime-tags/src/__tests__/fixtures/conditional-dynamic-tag-in-loop-closure/__snapshots__/writes.html @@ -6,9 +6,9 @@ c: new Set([_(5)]), a: _(2) }, 1, { - d: _(1, "a1") + d: _.a = _(1, "a1") }, { - Da: "a1", + Da: _.a, _: _(3) }, { _: _(1) diff --git a/packages/runtime-tags/src/__tests__/fixtures/conditional-dynamic-tag-in-loop-closure/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/conditional-dynamic-tag-in-loop-closure/sizes.json index c94b5398ab5..4c761567e19 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/conditional-dynamic-tag-in-loop-closure/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/conditional-dynamic-tag-in-loop-closure/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 15623, - "brotli": 6089 + "min": 15721, + "brotli": 6131 }, "files": { "tags/sections.marko": 736, @@ -12,7 +12,7 @@ } }, "html": { - "min": 449, - "brotli": 295 + "min": 452, + "brotli": 300 } } diff --git a/packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open-spread/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open-spread/sizes.json index a3f198d0006..99144544386 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open-spread/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open-spread/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 10415, - "brotli": 3890 + "min": 10525, + "brotli": 3932 }, "files": { "tags/my-dialog.marko": 244, diff --git a/packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/sizes.json index 1a82a83a8c7..40013887264 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/sizes.json @@ -1,8 +1,8 @@ { "dom": { "template.marko.page.mjs": { - "min": 13658, - "brotli": 5207 + "min": 13756, + "brotli": 5237 } }, "html": { diff --git a/packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/sizes.json index 1a668367120..ee16a2c9549 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 11757, - "brotli": 4377 + "min": 11867, + "brotli": 4421 }, "files": { "tags/my-select.marko": 244, diff --git a/packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/__snapshots__/writes.debug.html index 508b39d614d..dbed54e03b1 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/__snapshots__/writes.debug.html @@ -5,10 +5,10 @@ diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-native-dynamic-tag/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/dynamic-native-dynamic-tag/sizes.json index adeb8510eb6..df5aa5d5a47 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-native-dynamic-tag/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-native-dynamic-tag/sizes.json @@ -1,12 +1,12 @@ { "dom": { "template.marko.page.mjs": { - "min": 13331, - "brotli": 5102 + "min": 13429, + "brotli": 5136 } }, "html": { - "min": 442, - "brotli": 288 + "min": 447, + "brotli": 295 } } diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/__snapshots__/writes.debug.html index b729557134a..39463707f5e 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/__snapshots__/writes.debug.html @@ -11,7 +11,9 @@ "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/template.marko_0/onClick" ) }, - "ConditionalRenderer:#span/0": "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/template.marko_1_content", + "ConditionalRenderer:#span/0": _(1, + "packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/template.marko_1_content" + ), "#Renderer": "span" }], "_dynamicTagScript 2"]; M._.w() diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/__snapshots__/writes.html index 8027e87cf15..33ba0cf489b 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/__snapshots__/writes.html +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/__snapshots__/writes.html @@ -8,7 +8,7 @@ Ia: { click: _(1, "a0") }, - Da: "a1", + Da: _(1, "a1"), R: "span" }], "d 2"]; M._.w() diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/sizes.json index 73771017f69..e174238ae06 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-native-tag-events/sizes.json @@ -1,12 +1,12 @@ { "dom": { "template.marko.page.mjs": { - "min": 13220, - "brotli": 5044 + "min": 13318, + "brotli": 5078 } }, "html": { - "min": 435, + "min": 440, "brotli": 293 } } diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/sizes.json index 0206085dcb3..014a6ad96c6 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args-tag-var/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 14170, - "brotli": 5401 + "min": 14268, + "brotli": 5435 }, "files": { "tags/custom-tag.marko": 339, diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/sizes.json index e07dfc3c5c2..766489da325 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-args/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 13981, - "brotli": 5342 + "min": 14079, + "brotli": 5373 }, "files": { "tags/custom-tag.marko": 289, diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-conditional/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-conditional/sizes.json index 7225d9b42d4..b1b9d670df9 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-conditional/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-conditional/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 6403, - "brotli": 2906 + "min": 6514, + "brotli": 2948 }, "files": { "tags/inner.marko": 165, diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/dom.bundle.debug.js b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/dom.bundle.debug.js new file mode 100644 index 00000000000..15e1b718b1e --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/dom.bundle.debug.js @@ -0,0 +1,37 @@ +// tags/panel.marko +const $template$1 = ""; +const $walks$1 = ""; +const $section_content__input_label = /*@__PURE__*/ _closure_get("input_label", ($scope) => _text($scope["#text/0"], $scope._.input_label)); +const $section_content__setup = $section_content__input_label; +const $section_content = _content_resume("__tests__/tags/panel.marko_1_content", " ", "D l", $section_content__setup); +const $section = /*@__PURE__*/ _const("section", ($scope) => _return($scope, { section: $scope.section })); +function $setup$1($scope) { + $section($scope, { content: $section_content($scope) }); +} +const $input = ($scope, input) => $input_label($scope, input.label); +const $input_label__closure = /*@__PURE__*/ _closure($section_content__input_label); +const $input_label = /*@__PURE__*/ _const("input_label", $input_label__closure); +var panel_default = /*@__PURE__*/ _template("__tests__/tags/panel.marko", "", "", $setup$1, $input); + +// template.marko +const $template = /*@__PURE__*/ ((_w0, _w1) => `${_w0}${_w1}
`)("", ""); +const $walks = /*@__PURE__*/ ((_w0, _w1) => `0${_w0}&0${_w1}&D%l b`)("", ""); +const $dynamicTag = /*@__PURE__*/ _dynamic_tag("#text/4"); +const $idx__OR__a__OR__b = /*@__PURE__*/ _or(9, ($scope) => $dynamicTag($scope, ($scope.idx ? $scope.b : $scope.a).section), 2); +const $idx = /*@__PURE__*/ _let("idx/6", $idx__OR__a__OR__b); +const $setup__script = _script("__tests__/template.marko_0", ($scope) => _on($scope["#button/5"], "click", function() { + $idx($scope, 1 - $scope.idx); +})); +function $setup($scope) { + _var($scope, "#childScope/0", $a); + $setup$1($scope["#childScope/0"]); + $input_label($scope["#childScope/0"], "alpha"); + _var($scope, "#childScope/2", $b); + $setup$1($scope["#childScope/2"]); + $input_label($scope["#childScope/2"], "beta"); + $idx($scope, 0); + $setup__script($scope); +} +const $a = _var_resume("__tests__/template.marko_0_a/var", /*@__PURE__*/ _const("a", $idx__OR__a__OR__b)); +const $b = _var_resume("__tests__/template.marko_0_b/var", /*@__PURE__*/ _const("b", $idx__OR__a__OR__b)); +var template_default = /*@__PURE__*/ _template("__tests__/template.marko", $template, $walks, $setup); diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/dom.bundle.js b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/dom.bundle.js new file mode 100644 index 00000000000..df9d8471f66 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/dom.bundle.js @@ -0,0 +1,13 @@ +// tags/panel.marko +const $section_content__input_label = /*@__PURE__*/ _closure_get(4, ($scope) => _text($scope.a, $scope._.c)); +const $section_content = _content_resume("b0", " ", "D l", $section_content__input_label); + +// template.marko +const $dynamicTag = /*@__PURE__*/ _dynamic_tag(4); +const $idx__OR__a__OR__b = /*@__PURE__*/ _or(9, ($scope) => $dynamicTag($scope, ($scope.g ? $scope.i : $scope.h).section), 2); +const $idx = /*@__PURE__*/ _let(6, $idx__OR__a__OR__b); +const $setup__script = _script("a0", ($scope) => _on($scope.f, "click", function() { + $idx($scope, 1 - $scope.g); +})); +const $a = _var_resume("a1", /*@__PURE__*/ _const(7, $idx__OR__a__OR__b)); +const $b = _var_resume("a2", /*@__PURE__*/ _const(8, $idx__OR__a__OR__b)); diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/html.bundle.debug.js b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/html.bundle.debug.js new file mode 100644 index 00000000000..ad87e902ade --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/html.bundle.debug.js @@ -0,0 +1,42 @@ +// tags/panel.marko +var panel_default = _template("__tests__/tags/panel.marko", (input) => { + const $scope0_reason = _scope_reason(), $si__input_label = _serialize_if($scope0_reason, 0); + const $scope0_id = _scope_id(); + const $input_label__closures = new Set(); + const section = { content: _content_resume("__tests__/tags/panel.marko_1_content", () => { + const $scope1_id = _scope_id(); + const $scope1_reason = _scope_reason(); + _html(`${_escape(input.label)}${_el_resume($scope1_id, "#text/0", _serialize_guard($scope0_reason, 0))}`); + _subscribe($si__input_label && $input_label__closures, writeScope($scope1_id, { _: _scope_with_id($scope0_id) }, "__tests__/tags/panel.marko", "1:2")); + _resume_branch($scope1_id); + }, $scope0_id) }; + const $return = { section }; + writeScope($scope0_id, { + input_label: input.label, + "ClosureScopes:input_label": $si__input_label && $input_label__closures + }, "__tests__/tags/panel.marko", 0, { input_label: ["input.label"] }); + return $return; +}); + +// template.marko +var template_default = _template("__tests__/template.marko", (input) => { + _scope_reason(); + const $scope0_id = _scope_id(); + let idx = 0; + let a = panel_default({ label: "alpha" }); + let b = panel_default({ label: "beta" }); + _html("
"); + _dynamic_tag($scope0_id, "#text/4", (idx ? b : a).section, {}); + _html(`
${_el_resume($scope0_id, "#button/5")}`); + _script($scope0_id, "__tests__/template.marko_0"); + writeScope($scope0_id, { + idx, + a, + b + }, "__tests__/template.marko", 0, { + idx: "1:6", + a: "2:8", + b: "3:8" + }); + _resume_branch($scope0_id); +}, 1); diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/html.bundle.js b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/html.bundle.js new file mode 100644 index 00000000000..6b826ca790f --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/html.bundle.js @@ -0,0 +1,37 @@ +// tags/panel.marko +var panel_default = _template("b", (input) => { + const $scope0_reason = _scope_reason(), $si__input_label = _serialize_if($scope0_reason, 0); + const $scope0_id = _scope_id(); + const $input_label__closures = /* @__PURE__ */ new Set(); + const $return = { section: { content: _content_resume("b0", () => { + const $scope1_id = _scope_id(); + _scope_reason(); + _html(`${_escape(input.label)}${_el_resume($scope1_id, "a", _serialize_guard($scope0_reason, 0))}`); + _subscribe($si__input_label && $input_label__closures, writeScope($scope1_id, { _: _scope_with_id($scope0_id) })); + _resume_branch($scope1_id); + }, $scope0_id) } }; + writeScope($scope0_id, { + c: input.label, + e: $si__input_label && $input_label__closures + }); + return $return; +}); + +// template.marko +var template_default = _template("a", (input) => { + _scope_reason(); + const $scope0_id = _scope_id(); + let idx = 0; + let a = panel_default({ label: "alpha" }); + let b = panel_default({ label: "beta" }); + _html("
"); + _dynamic_tag($scope0_id, "e", a.section, {}); + _html(`
${_el_resume($scope0_id, "f")}`); + _script($scope0_id, "a0"); + writeScope($scope0_id, { + g: idx, + h: a, + i: b + }); + _resume_branch($scope0_id); +}, 1); diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/render.debug.md b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/render.debug.md new file mode 100644 index 00000000000..2143bdbcf3b --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/render.debug.md @@ -0,0 +1,53 @@ +# Render +```html +
+ + alpha + +
+ +``` + +# Update +```js +container.querySelector(`button`).click(); +``` +```html +
+ + beta + +
+ +``` +## Change +``` +INSERT: div > span +REMOVE: div > span + span +UPDATE: div > span::text " " => "beta" +``` + +# Update +```js +container.querySelector(`button`).click(); +``` +```html +
+ + alpha + +
+ +``` +## Change +``` +INSERT: div > span +REMOVE: div > span + span +UPDATE: div > span::text " " => "alpha" +``` diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/render.md b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/render.md new file mode 100644 index 00000000000..2143bdbcf3b --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/render.md @@ -0,0 +1,53 @@ +# Render +```html +
+ + alpha + +
+ +``` + +# Update +```js +container.querySelector(`button`).click(); +``` +```html +
+ + beta + +
+ +``` +## Change +``` +INSERT: div > span +REMOVE: div > span + span +UPDATE: div > span::text " " => "beta" +``` + +# Update +```js +container.querySelector(`button`).click(); +``` +```html +
+ + alpha + +
+ +``` +## Change +``` +INSERT: div > span +REMOVE: div > span + span +UPDATE: div > span::text " " => "alpha" +``` diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/writes.debug.html new file mode 100644 index 00000000000..a3f7071a486 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/writes.debug.html @@ -0,0 +1,32 @@ +
alpha
+ + diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/writes.html new file mode 100644 index 00000000000..12632bd78ab --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/__snapshots__/writes.html @@ -0,0 +1,26 @@ +
alpha
+ + diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/sizes.json new file mode 100644 index 00000000000..946b30e8ffc --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/sizes.json @@ -0,0 +1,18 @@ +{ + "dom": { + "template.marko.page.mjs": { + "total": { + "min": 13808, + "brotli": 5279 + }, + "files": { + "tags/panel.marko": 254, + "template.marko": 541 + } + } + }, + "html": { + "min": 503, + "brotli": 321 + } +} diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/tags/panel.marko b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/tags/panel.marko new file mode 100644 index 00000000000..089c32a5b56 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/tags/panel.marko @@ -0,0 +1,2 @@ +${input.label} + diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/template.marko b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/template.marko new file mode 100644 index 00000000000..27a106e090a --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/template.marko @@ -0,0 +1,5 @@ + + + +
<${(idx ? b : a).section}/>
+ diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/test.ts b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/test.ts new file mode 100644 index 00000000000..524f9249286 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-content-instance-swap/test.ts @@ -0,0 +1,9 @@ +import type { TestConfig } from "../../main.test"; + +function swap(container: Element) { + container.querySelector(`button`)!.click(); +} + +export const config: TestConfig = { + steps: [{}, swap, swap], +}; diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/sizes.json index 8225a1fd267..70e193ec185 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-native/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 14004, - "brotli": 5356 + "min": 14102, + "brotli": 5391 }, "files": { "tags/child.marko": 321, diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/sizes.json index 42974174e48..1e23abb0fdf 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-custom-tags/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 14236, - "brotli": 5419 + "min": 14334, + "brotli": 5461 }, "files": { "tags/child1.marko": 364, diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/sizes.json index 9fd8a37ce70..f03ffa62d3d 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 13358, - "brotli": 5110 + "min": 13456, + "brotli": 5148 }, "files": { "tags/my-tag.marko": 509, diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-resume-owns-branch-cleanup/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-resume-owns-branch-cleanup/sizes.json index e9908e9e304..5ebeb210273 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-resume-owns-branch-cleanup/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-resume-owns-branch-cleanup/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 13897, - "brotli": 5324 + "min": 13995, + "brotli": 5358 }, "files": { "tags/child.marko": 393, diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/sizes.json index 7db9d141d7a..0751e7f6fce 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-single-arg/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 14026, - "brotli": 5352 + "min": 14124, + "brotli": 5377 }, "files": { "tags/custom-tag.marko": 314, diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-sometimes-null/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-sometimes-null/sizes.json index 35f3984688f..1334bf5f473 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-sometimes-null/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-sometimes-null/sizes.json @@ -1,8 +1,8 @@ { "dom": { "template.marko.page.mjs": { - "min": 13185, - "brotli": 5028 + "min": 13283, + "brotli": 5075 } }, "html": { diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/writes.debug.html index b017ed76f64..ec1cfed191d 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/writes.debug.html @@ -13,7 +13,9 @@ "#TagVariable": _(1, "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/template.marko_0_setHtml/var" ), - "ConditionalRenderer:#text/0": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/template.marko_1_content" + "ConditionalRenderer:#text/0": _(1, + "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/template.marko_1_content" + ) }, { _: _(1) }], diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/writes.html index 63bf598f524..c8c4f3bbe10 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/writes.html +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/__snapshots__/writes.html @@ -9,7 +9,7 @@ d: new Set([_(3)]) }, { T: _(1, "a2"), - Da: "a0" + Da: _(1, "a0") }, { _: _(1) }], "a1 3"]; diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/sizes.json index a9723233477..057dffd0e88 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-var-in-body/sizes.json @@ -12,7 +12,7 @@ } }, "html": { - "min": 450, - "brotli": 305 + "min": 455, + "brotli": 307 } } diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/writes.debug.html index 6ae3ec99351..8ca3a34e212 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/writes.debug.html @@ -7,7 +7,9 @@ "ConditionalRenderer:#text/0": "div", tagName: "div" }, { - "ConditionalRenderer:#div/0": "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/template.marko_1_content" + "ConditionalRenderer:#div/0": _(1, + "packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/template.marko_1_content" + ) }, 1, { count: 0, "#ClosestBranchId": 3 diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/writes.html index d2895ad268a..fbdbf135cbe 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/writes.html +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/writes.html @@ -7,7 +7,7 @@ Da: "div", c: "div" }, { - Da: "a0" + Da: _(1, "a0") }, 1, { c: 0, G: 3 diff --git a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/sizes.json index e0b30734a4b..5c82177fdbf 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-with-updating-body/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 13446, - "brotli": 5123 + "min": 13544, + "brotli": 5160 }, "files": { "tags/counter.marko": 389, @@ -12,7 +12,7 @@ } }, "html": { - "min": 495, - "brotli": 317 + "min": 500, + "brotli": 322 } } diff --git a/packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/sizes.json index 0123bc46b8a..eb3a7312301 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-from-dynamic/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 13829, - "brotli": 5270 + "min": 13927, + "brotli": 5307 }, "files": { "tags/thing.marko": 360, diff --git a/packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/sizes.json index c2c7116a6f4..85e8f43d972 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-from-dynamic/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 14560, - "brotli": 5540 + "min": 14658, + "brotli": 5576 }, "files": { "tags/child.marko": 349, diff --git a/packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/sizes.json index 0572025d862..4b4c1fe2f07 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/hoist-native-tag-var-from-dynamic/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 13639, - "brotli": 5191 + "min": 13737, + "brotli": 5224 }, "files": { "tags/child.marko": 356, diff --git a/packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/__snapshots__/writes.debug.html index 129a88a23e1..908b1c63f58 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/__snapshots__/writes.debug.html @@ -17,11 +17,17 @@ Parent: "div", Child: "a" }, { - "ConditionalRenderer:#a/0": "packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/template.marko_2_content" + "ConditionalRenderer:#a/0": _(1, + "packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/template.marko_2_content" + ) }, 1, { - "ConditionalRenderer:#a/0": "packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/template.marko_3_content" + "ConditionalRenderer:#a/0": _(1, + "packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/template.marko_3_content" + ) }, 1, { - "ConditionalRenderer:#div/0": "packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/template.marko_1_content" + "ConditionalRenderer:#div/0": _(1, + "packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/template.marko_1_content" + ) }, { _: _(1) }], diff --git a/packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/__snapshots__/writes.html index b28c7dfe41e..2b42e89509e 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/__snapshots__/writes.html +++ b/packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/__snapshots__/writes.html @@ -16,11 +16,11 @@ l: "div", m: "a" }, { - Da: "a0" + Da: _(1, "a0") }, 1, { - Da: "a1" + Da: _(1, "a1") }, 1, { - Da: "a2" + Da: _(1, "a2") }, { _: _(1) }], "a3 1 a4 1"]; diff --git a/packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/sizes.json index 2e036dd7074..0dfd48d9cda 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/namespaced-tags/sizes.json @@ -1,12 +1,12 @@ { "dom": { "template.marko.page.mjs": { - "min": 13993, - "brotli": 5332 + "min": 14091, + "brotli": 5364 } }, "html": { - "min": 797, - "brotli": 419 + "min": 812, + "brotli": 423 } } diff --git a/packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/__snapshots__/writes.debug.html index 337af399df9..96b96fbd316 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/__snapshots__/writes.debug.html @@ -7,7 +7,9 @@ "#childScope/0": _(2) }, 1, { "BranchScopes:#div/0": _(4), - "ConditionalRenderer:#div/0": "packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/template.marko_3_content" + "ConditionalRenderer:#div/0": _(1, + "packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/template.marko_3_content" + ) }], "packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/template.marko_2_item 3 packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/template.marko_0 1" ]; diff --git a/packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/__snapshots__/writes.html index 5c0a2a0cd45..a4cecfdae40 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/__snapshots__/writes.html +++ b/packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/__snapshots__/writes.html @@ -7,7 +7,7 @@ a: _(2) }, 1, { Aa: _(4), - Da: "a2" + Da: _(1, "a2") }], "a0 3 a3 1"]; M._.w() diff --git a/packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/sizes.json index 231264ab48b..5d3f023e35c 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/native-tag-local-closures/sizes.json @@ -1,12 +1,12 @@ { "dom": { "template.marko.page.mjs": { - "min": 14551, - "brotli": 5637 + "min": 14661, + "brotli": 5657 } }, "html": { - "min": 426, - "brotli": 291 + "min": 431, + "brotli": 295 } } diff --git a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-attr-tag-also-custom/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-attr-tag-also-custom/__snapshots__/writes.debug.html index febd74d5b85..1b4d6978c45 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-attr-tag-also-custom/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-attr-tag-also-custom/__snapshots__/writes.debug.html @@ -4,12 +4,12 @@ WALKER_RUNTIME("M")("_"); M._.r = [_ => [2, { "BranchScopes:#div/0": _(3), - "ConditionalRenderer:#div/0": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-attr-tag-also-custom/template.marko_1_content", + "ConditionalRenderer:#div/0": _.a = _(1, + "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-attr-tag-also-custom/template.marko_1_content" + ), input_head: { class: "h", - content: _(1, - "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-attr-tag-also-custom/template.marko_1_content" - ), + content: _.a, *[Symbol.iterator]() { yield this } diff --git a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-attr-tag-also-custom/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-attr-tag-also-custom/__snapshots__/writes.html index 81f639aad9b..e3a6a863893 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-attr-tag-also-custom/__snapshots__/writes.html +++ b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-attr-tag-also-custom/__snapshots__/writes.html @@ -4,10 +4,10 @@ WALKER_RUNTIME("M")("_"); M._.r = [_ => [2, { Aa: _(3), - Da: "a0", + Da: _.a = _(1, "a0"), e: { class: "h", - content: _(1, "a0"), + content: _.a, *[Symbol.iterator]() { yield this } diff --git a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-attr-tag-also-custom/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-attr-tag-also-custom/sizes.json index 680bf1ff002..6ccf492f265 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-attr-tag-also-custom/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-attr-tag-also-custom/sizes.json @@ -12,7 +12,7 @@ } }, "html": { - "min": 449, - "brotli": 307 + "min": 452, + "brotli": 309 } } diff --git a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-also-custom/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-also-custom/__snapshots__/writes.debug.html index 6f5de3e5b77..51313d8fe7c 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-also-custom/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-also-custom/__snapshots__/writes.debug.html @@ -4,12 +4,12 @@ WALKER_RUNTIME("M")("_"); M._.r = [_ => [2, { "BranchScopes:#div/0": _(3), - "ConditionalRenderer:#div/0": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-also-custom/template.marko_1_content", + "ConditionalRenderer:#div/0": _.a = _(1, + "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-also-custom/template.marko_1_content" + ), input: { class: "x", - content: _(1, - "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-also-custom/template.marko_1_content" - ) + content: _.a } }], "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-also-custom/tags/my-box.marko_0_input 2" diff --git a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-also-custom/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-also-custom/__snapshots__/writes.html index 024abb7676e..f200ef97c0c 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-also-custom/__snapshots__/writes.html +++ b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-also-custom/__snapshots__/writes.html @@ -4,10 +4,10 @@ WALKER_RUNTIME("M")("_"); M._.r = [_ => [2, { Aa: _(3), - Da: "a0", + Da: _.a = _(1, "a0"), d: { class: "x", - content: _(1, "a0") + content: _.a } }], "c0 2"]; M._.w() diff --git a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-also-custom/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-also-custom/sizes.json index 8243d2ca6f2..39d108b3401 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-also-custom/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-also-custom/sizes.json @@ -12,7 +12,7 @@ } }, "html": { - "min": 416, - "brotli": 287 + "min": 419, + "brotli": 288 } } diff --git a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-handler-read/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-handler-read/__snapshots__/writes.debug.html index 7b373fdc708..0bb659bc242 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-handler-read/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-handler-read/__snapshots__/writes.debug.html @@ -5,12 +5,12 @@ WALKER_RUNTIME("M")("_"); M._.r = [_ => [2, { "BranchScopes:#div/0": _(3), - "ConditionalRenderer:#div/0": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-handler-read/template.marko_1_content", + "ConditionalRenderer:#div/0": _.a = _(1, + "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-handler-read/template.marko_1_content" + ), input: { class: "x", - content: _.a = _(1, - "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-handler-read/template.marko_1_content" - ) + content: _.a }, input_content: _.a }], diff --git a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-handler-read/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-handler-read/__snapshots__/writes.html index 27237ded10a..6ac31f13a7b 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-handler-read/__snapshots__/writes.html +++ b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-handler-read/__snapshots__/writes.html @@ -5,10 +5,10 @@ WALKER_RUNTIME("M")("_"); M._.r = [_ => [2, { Aa: _(3), - Da: "a0", + Da: _.a = _(1, "a0"), e: { class: "x", - content: _.a = _(1, "a0") + content: _.a }, f: _.a }], "b0 2 b1 2"]; diff --git a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-handler-read/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-handler-read/sizes.json index f3b8d8a2b9a..ef46e0a6761 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-handler-read/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-handler-read/sizes.json @@ -12,7 +12,7 @@ } }, "html": { - "min": 506, - "brotli": 324 + "min": 505, + "brotli": 318 } } diff --git a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-opaque/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-opaque/__snapshots__/writes.debug.html index 9bb4a3f3461..e55f2a51888 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-opaque/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-opaque/__snapshots__/writes.debug.html @@ -5,12 +5,12 @@ WALKER_RUNTIME("M")("_"); M._.r = [_ => [2, { "BranchScopes:#div/0": _(3), - "ConditionalRenderer:#div/0": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-opaque/template.marko_1_content", + "ConditionalRenderer:#div/0": _.a = _(1, + "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-opaque/template.marko_1_content" + ), input: { class: "x", - content: _(1, - "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-opaque/template.marko_1_content" - ) + content: _.a }, show: !1 }], diff --git a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-opaque/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-opaque/__snapshots__/writes.html index 0dff135d910..179cd8f8662 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-opaque/__snapshots__/writes.html +++ b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-opaque/__snapshots__/writes.html @@ -5,10 +5,10 @@ WALKER_RUNTIME("M")("_"); M._.r = [_ => [2, { Aa: _(3), - Da: "a0", + Da: _.a = _(1, "a0"), e: { class: "x", - content: _(1, "a0") + content: _.a }, f: !1 }], "b0 2 b1 2"]; diff --git a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-opaque/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-opaque/sizes.json index ab4c78490bf..f709f395f61 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-opaque/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content-opaque/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 13625, - "brotli": 5222 + "min": 13723, + "brotli": 5254 }, "files": { "tags/render-input.marko": 289, @@ -13,7 +13,7 @@ } }, "html": { - "min": 512, + "min": 515, "brotli": 321 } } diff --git a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/writes.debug.html index fdcad2d2ada..981c4f57d11 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/writes.debug.html @@ -11,12 +11,12 @@ "BranchScopes:#button/1": _(4), "ConditionalRenderer:#button/1": _.a, "BranchScopes:#strong/4": _(6), - "ConditionalRenderer:#strong/4": "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/tags/my-div.marko_1_content", + "ConditionalRenderer:#strong/4": _.b = _(2, + "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/tags/my-div.marko_1_content" + ), "BranchScopes:#p/5": _(7), "ConditionalRenderer:#p/5": _.a, - CustomContent_content: _(2, - "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/tags/my-div.marko_1_content" - ) + CustomContent_content: _.b }], "packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/tags/my-div.marko_0_input_CustomContent_content 2 packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/tags/my-div.marko_0_input 2" ]; diff --git a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/writes.html index 1971705684b..2128c1f37f7 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/writes.html +++ b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/__snapshots__/writes.html @@ -10,10 +10,10 @@ Ab: _(4), Db: "a0", Ae: _(6), - De: "b0", + De: _.a = _(2, "b0"), Af: _(7), Df: "a0", - k: _(2, "b0") + k: _.a }], "b1 2 b2 2"]; M._.w() diff --git a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/sizes.json index 6686f3e73e0..ef24a31607d 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/native-tag-spread-content/sizes.json @@ -6,7 +6,7 @@ } }, "html": { - "min": 613, - "brotli": 353 + "min": 616, + "brotli": 362 } } diff --git a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/writes.debug.html index e255664b703..e60421562f5 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/writes.debug.html @@ -7,13 +7,19 @@ WALKER_RUNTIME("M")("_"); M._.r = [_ => [4, { "BranchScopes:#option/0": _(5), - "ConditionalRenderer:#option/0": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/template.marko_1_content" + "ConditionalRenderer:#option/0": _(1, + "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/template.marko_1_content" + ) }, 1, { "BranchScopes:#option/0": _(7), - "ConditionalRenderer:#option/0": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/template.marko_2_content" + "ConditionalRenderer:#option/0": _(1, + "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/template.marko_2_content" + ) }, 1, { "BranchScopes:#option/0": _(9), - "ConditionalRenderer:#option/0": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/template.marko_3_content" + "ConditionalRenderer:#option/0": _(1, + "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/template.marko_3_content" + ) }], "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/tags/child.marko_1_option 4 6 8" ]; diff --git a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/writes.html index 941078375b6..cdfb93a008b 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/writes.html +++ b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/__snapshots__/writes.html @@ -7,13 +7,13 @@ WALKER_RUNTIME("M")("_"); M._.r = [_ => [4, { Aa: _(5), - Da: "a0" + Da: _(1, "a0") }, 1, { Aa: _(7), - Da: "a1" + Da: _(1, "a1") }, 1, { Aa: _(9), - Da: "a2" + Da: _(1, "a2") }], "b0 4 6 8"]; M._.w() diff --git a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/sizes.json index 40536d4da17..752fd570124 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-custom-tag/sizes.json @@ -12,7 +12,7 @@ } }, "html": { - "min": 516, - "brotli": 304 + "min": 531, + "brotli": 307 } } diff --git a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/__snapshots__/writes.debug.html index d9031ad6d64..13ce324519e 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/__snapshots__/writes.debug.html @@ -7,13 +7,19 @@ WALKER_RUNTIME("M")("_"); M._.r = [_ => [4, { "BranchScopes:#option/0": _(5), - "ConditionalRenderer:#option/0": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/template.marko_4_content" + "ConditionalRenderer:#option/0": _(1, + "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/template.marko_4_content" + ) }, 1, { "BranchScopes:#option/0": _(7), - "ConditionalRenderer:#option/0": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/template.marko_5_content" + "ConditionalRenderer:#option/0": _(1, + "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/template.marko_5_content" + ) }, 1, { "BranchScopes:#option/0": _(9), - "ConditionalRenderer:#option/0": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/template.marko_6_content" + "ConditionalRenderer:#option/0": _(1, + "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/template.marko_6_content" + ) }], "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/template.marko_3_option 4 6 8" ]; diff --git a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/__snapshots__/writes.html index d912270b0e8..b0beee96525 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/__snapshots__/writes.html +++ b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/__snapshots__/writes.html @@ -7,13 +7,13 @@ WALKER_RUNTIME("M")("_"); M._.r = [_ => [4, { Aa: _(5), - Da: "a3" + Da: _(1, "a3") }, 1, { Aa: _(7), - Da: "a4" + Da: _(1, "a4") }, 1, { Aa: _(9), - Da: "a5" + Da: _(1, "a5") }], "a0 4 6 8"]; M._.w() diff --git a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/sizes.json index 5fde7e3fb1c..ae20466c451 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-attr-tag-define-tag/sizes.json @@ -6,7 +6,7 @@ } }, "html": { - "min": 516, - "brotli": 304 + "min": 531, + "brotli": 306 } } diff --git a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/writes.debug.html index d0085ef1037..d6b65addc39 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/writes.debug.html @@ -18,11 +18,15 @@ input_class: "foo" }, 2, { "BranchScopes:#p/0": _(10), - "ConditionalRenderer:#p/0": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/template.marko_1_content", + "ConditionalRenderer:#p/0": _(1, + "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/template.marko_1_content" + ), input_class: "foo" }, 2, { "BranchScopes:#p/0": _(13), - "ConditionalRenderer:#p/0": "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/template.marko_2_content", + "ConditionalRenderer:#p/0": _(1, + "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/template.marko_2_content" + ), input_class: "bar" }], "packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/tags/child.marko_0_input_class_rest 3 6 9 12" diff --git a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/writes.html index 0357dbccb37..05fc5a2bed7 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/writes.html +++ b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/__snapshots__/writes.html @@ -18,11 +18,11 @@ d: "foo" }, 2, { Aa: _(10), - Da: "a0", + Da: _(1, "a0"), d: "foo" }, 2, { Aa: _(13), - Da: "a1", + Da: _(1, "a1"), d: "bar" }], "b0 3 6 9 12"]; M._.w() diff --git a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/sizes.json index 19ece57d6fc..4f5b6f02029 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-content-rest/sizes.json @@ -12,7 +12,7 @@ } }, "html": { - "min": 642, - "brotli": 337 + "min": 652, + "brotli": 338 } } diff --git a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/sizes.json index 9a076f494cf..b5d81a64484 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/spread-to-known-rest-input-with-attr-tags-deopt/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 14704, - "brotli": 5757 + "min": 14802, + "brotli": 5776 }, "files": { "tags/child.marko": 759, diff --git a/packages/runtime-tags/src/__tests__/fixtures/static-content-conditional-consumer/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/static-content-conditional-consumer/sizes.json index 2ef12f4766f..fab208b5592 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/static-content-conditional-consumer/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/static-content-conditional-consumer/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 13531, - "brotli": 5172 + "min": 13629, + "brotli": 5207 }, "files": { "tags/consumer.marko": 510, diff --git a/packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/__snapshots__/writes.debug.html index a172fb31dbc..8875864f770 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/__snapshots__/writes.debug.html @@ -16,11 +16,17 @@ "ConditionalRenderer:#text/6": _.a, x: !0 }, { - "ConditionalRenderer:#div/0": "packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/template.marko_1_content" + "ConditionalRenderer:#div/0": _(1, + "packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/template.marko_1_content" + ) }, 1, { - "ConditionalRenderer:#div/0": "packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/template.marko_2_content" + "ConditionalRenderer:#div/0": _(1, + "packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/template.marko_2_content" + ) }, 3, { - "ConditionalRenderer:#div/0": "packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/template.marko_4_content" + "ConditionalRenderer:#div/0": _(1, + "packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/template.marko_4_content" + ) }], "packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/template.marko_0 1" ]; diff --git a/packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/__snapshots__/writes.html index fae7f49040c..2cc957375fd 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/__snapshots__/writes.html +++ b/packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/__snapshots__/writes.html @@ -14,11 +14,11 @@ Dg: "b", h: !0 }, { - Da: "a0" + Da: _(1, "a0") }, 1, { - Da: "a1" + Da: _(1, "a1") }, 3, { - Da: "a3" + Da: _(1, "a3") }], "a4 1"]; M._.w() diff --git a/packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/sizes.json index 9b7c5c06003..93f7543c8bf 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/tag-name-type-unions/sizes.json @@ -2,8 +2,8 @@ "dom": { "template.marko.page.mjs": { "total": { - "min": 14410, - "brotli": 5482 + "min": 14508, + "brotli": 5513 }, "files": { "tags/a/index.marko": 374, @@ -13,7 +13,7 @@ } }, "html": { - "min": 706, - "brotli": 383 + "min": 721, + "brotli": 387 } } diff --git a/packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/__snapshots__/writes.debug.html index 61f141297d1..e681c1b354a 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/__snapshots__/writes.debug.html @@ -6,10 +6,10 @@ a: "abc", "#childScope/1": _(2) }, { - "ConditionalRenderer:#text/0": "packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/template.marko_1_content", - input_content: _(1, + "ConditionalRenderer:#text/0": _.a = _(1, "packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/template.marko_1_content" - ) + ), + input_content: _.a }, { _: _(1) }], diff --git a/packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/__snapshots__/writes.html index 0a26209a684..a9f9dffe0e6 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/__snapshots__/writes.html +++ b/packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/__snapshots__/writes.html @@ -6,8 +6,8 @@ d: "abc", b: _(2) }, { - Da: "a1", - d: _(1, "a1") + Da: _.a = _(1, "a1"), + d: _.a }, { _: _(1) }], "a2 1"]; diff --git a/packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/sizes.json index f5bc591d467..41bd09935db 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/tag-param-if-closure/sizes.json @@ -1,12 +1,12 @@ { "dom": { "template.marko.page.mjs": { - "min": 13885, - "brotli": 5325 + "min": 13983, + "brotli": 5362 } }, "html": { - "min": 431, - "brotli": 295 + "min": 434, + "brotli": 300 } } diff --git a/packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/__snapshots__/writes.debug.html b/packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/__snapshots__/writes.debug.html index 355c8c905e8..ccf8cedea92 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/__snapshots__/writes.debug.html +++ b/packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/__snapshots__/writes.debug.html @@ -7,7 +7,7 @@ }, { "ConditionalRenderer:#text/0": "div", as: "div", - content: _(1, + content: _.a = _(1, "packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/template.marko_3_content" ) }, { @@ -16,7 +16,7 @@ "packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/template.marko_0/onClick" ) }, - "ConditionalRenderer:#div/0": "packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/template.marko_3_content", + "ConditionalRenderer:#div/0": _.a, "#Renderer": "div" }], "_dynamicTagScript 3"]; M._.w() diff --git a/packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/__snapshots__/writes.html b/packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/__snapshots__/writes.html index 9bfec52510c..89eb1e07041 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/__snapshots__/writes.html +++ b/packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/__snapshots__/writes.html @@ -7,12 +7,12 @@ }, { Da: "div", d: "div", - f: _(1, "a3") + f: _.a = _(1, "a3") }, { Ia: { click: _(1, "a0") }, - Da: "a3", + Da: _.a, R: "div" }], "d 3"]; M._.w() diff --git a/packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/sizes.json b/packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/sizes.json index ca73c5f957f..1128970c4c4 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/sizes.json +++ b/packages/runtime-tags/src/__tests__/fixtures/unused-dynamic-tag-body-serialize-reason/sizes.json @@ -1,12 +1,12 @@ { "dom": { "template.marko.page.mjs": { - "min": 13646, - "brotli": 5238 + "min": 13744, + "brotli": 5271 } }, "html": { - "min": 445, - "brotli": 302 + "min": 448, + "brotli": 308 } } diff --git a/packages/runtime-tags/src/dom/control-flow.ts b/packages/runtime-tags/src/dom/control-flow.ts index f93c290adee..a19038fcc2a 100644 --- a/packages/runtime-tags/src/dom/control-flow.ts +++ b/packages/runtime-tags/src/dom/control-flow.ts @@ -530,10 +530,7 @@ export let _dynamic_tag = function dynamicTag( return (scope, newRenderer, getInput?: () => any) => { const normalizedRenderer = normalizeDynamicRenderer(newRenderer); if ( - scope[rendererAccessor] !== - (scope[rendererAccessor] = - (normalizedRenderer as Renderer | undefined)?.[RendererProp.Id] || - normalizedRenderer) || + rendererChanged(scope, rendererAccessor, normalizedRenderer) || (getContent && !(normalizedRenderer || scope[childScopeAccessor])) ) { setConditionalRenderer( @@ -631,6 +628,26 @@ export let _dynamic_tag = function dynamicTag( }; }; +// The renderer id is shared by every instance of a content section, so a +// renderer only counts as unchanged when its owner scope also matches; +// bare string slots (tag names, resumed unregistered ids) have no owner. +export function rendererChanged( + scope: Scope, + rendererAccessor: string, + renderer: Renderer | string | undefined, +) { + const prev = scope[rendererAccessor] as Renderer | string | undefined; + const changed = + ((prev as Renderer | undefined)?.[RendererProp.Id] || prev) !== + ((renderer as Renderer | undefined)?.[RendererProp.Id] || renderer) || + (typeof prev !== "string" && + typeof renderer !== "string" && + (prev as Renderer | undefined)?.[RendererProp.Owner] !== + (renderer as Renderer | undefined)?.[RendererProp.Owner]); + scope[rendererAccessor] = renderer; + return changed; +} + // Specialized `_dynamic_tag` for a content passthrough. The caller guarantees a // normalized content `Renderer` (or undefined) rendered with no input or // parameters. @@ -642,10 +659,7 @@ export function _dynamic_tag_content( const rendererAccessor = AccessorPrefix.ConditionalRenderer + nodeAccessor; enableBranches(); return (scope, renderer) => { - if ( - scope[rendererAccessor] !== - (scope[rendererAccessor] = renderer?.[RendererProp.Id] || renderer) - ) { + if (rendererChanged(scope, rendererAccessor, renderer)) { setConditionalRenderer( scope, nodeAccessor as string, diff --git a/packages/runtime-tags/src/dom/dom.ts b/packages/runtime-tags/src/dom/dom.ts index 69a5ea8192e..242db558595 100644 --- a/packages/runtime-tags/src/dom/dom.ts +++ b/packages/runtime-tags/src/dom/dom.ts @@ -23,7 +23,7 @@ import { type Scope, } from "../common/types"; import { $signal } from "./abort-signal"; -import { setConditionalRenderer } from "./control-flow"; +import { rendererChanged, setConditionalRenderer } from "./control-flow"; import { _attr_details_or_dialog_open, _attr_details_or_dialog_open_script, @@ -367,9 +367,11 @@ export function _attr_content( ) { const content = normalizeClientRender(value); if ( - scope[AccessorPrefix.ConditionalRenderer + nodeAccessor] !== - (scope[AccessorPrefix.ConditionalRenderer + nodeAccessor] = - content?.[RendererProp.Id]) + rendererChanged( + scope, + AccessorPrefix.ConditionalRenderer + nodeAccessor, + content, + ) ) { setConditionalRenderer(scope, nodeAccessor, content, createAndSetupBranch); if (content?.[RendererProp.Accessor]) { diff --git a/packages/runtime-tags/src/html/dynamic-tag.ts b/packages/runtime-tags/src/html/dynamic-tag.ts index 7b970d08b43..3aafd840df6 100644 --- a/packages/runtime-tags/src/html/dynamic-tag.ts +++ b/packages/runtime-tags/src/html/dynamic-tag.ts @@ -9,6 +9,7 @@ import { ResumeSymbol, } from "../common/types"; import { _attr_select_value, _attr_textarea_value, _attrs } from "./attrs"; +import { getRegistered } from "./serializer"; import type { ServerRenderer } from "./template"; import { _html, @@ -186,9 +187,16 @@ export let _dynamic_tag = ( if (rendered) { if (shouldResume) { _scope(scopeId, { + // A renderer registered with a scope resumes as the owned client + // renderer so instances of the same content stay distinguishable; + // otherwise the bare id matches any instance-less renderer. [AccessorPrefix.ConditionalRenderer + accessor]: - (renderer as ServerRenderer | undefined)?.[RendererProp.Id] || - renderer, + renderer && + typeof renderer !== "string" && + getRegistered(renderer)?.scope + ? renderer + : (renderer as ServerRenderer | undefined)?.[RendererProp.Id] || + renderer, }); } } else { diff --git a/packages/runtime-tags/src/html/writer.ts b/packages/runtime-tags/src/html/writer.ts index 8ffa2c00787..0b22c6805a5 100644 --- a/packages/runtime-tags/src/html/writer.ts +++ b/packages/runtime-tags/src/html/writer.ts @@ -23,6 +23,7 @@ import { WALKER_RUNTIME_CODE, } from "./inlined-runtimes.debug"; import { + getRegistered, K_SCOPE_ID, quote, register as serializerRegister, @@ -146,8 +147,12 @@ export function _attr_content( if (shouldResume) { writeScope(scopeId, { [AccessorPrefix.BranchScopes + nodeAccessor]: writeScope(branchId, {}), + // A renderer registered with a scope resumes as the owned client + // renderer so instances of the same content stay distinguishable. [AccessorPrefix.ConditionalRenderer + nodeAccessor]: - render?.[RendererProp.Id], + render && getRegistered(render)?.scope + ? render + : render?.[RendererProp.Id], }); } } else {