diff --git a/.sizes.json b/.sizes.json index ab015c4ea..f43113531 100644 --- a/.sizes.json +++ b/.sizes.json @@ -51,9 +51,9 @@ { "name": "comments", "user": { - "min": 1133, - "gzip": 687, - "brotli": 612 + "min": 1142, + "gzip": 695, + "brotli": 625 }, "runtime": { "min": 7250, @@ -61,17 +61,17 @@ "brotli": 2965 }, "total": { - "min": 8383, - "gzip": 3955, - "brotli": 3577 + "min": 8392, + "gzip": 3963, + "brotli": 3590 } }, { "name": "comments 💧", "user": { - "min": 930, - "gzip": 579, - "brotli": 533 + "min": 944, + "gzip": 591, + "brotli": 540 }, "runtime": { "min": 8244, @@ -79,9 +79,9 @@ "brotli": 3361 }, "total": { - "min": 9174, - "gzip": 4292, - "brotli": 3894 + "min": 9188, + "gzip": 4304, + "brotli": 3901 } } ] diff --git a/packages/runtime/src/dom/hydrate.ts b/packages/runtime/src/dom/hydrate.ts index 56ef7a90c..01aed0515 100644 --- a/packages/runtime/src/dom/hydrate.ts +++ b/packages/runtime/src/dom/hydrate.ts @@ -135,9 +135,10 @@ export function init(runtimeId = "M" /* [a-zA-Z0-9]+ */) { } for (let i = 0; i < calls.length; i += 2) { - (registeredObjects.get(calls[i + 1] as string) as HydrateFn)!( - scopeLookup[calls[i] as number]! - ); + const hydrateFn = (registeredObjects.get( + calls[i + 1] as string + ) as HydrateFn)!; + hydrateFn(scopeLookup[calls[i] as number]!); } } } diff --git a/packages/runtime/src/html/writer.ts b/packages/runtime/src/html/writer.ts index 62c94bc33..e698cde07 100644 --- a/packages/runtime/src/html/writer.ts +++ b/packages/runtime/src/html/writer.ts @@ -329,9 +329,11 @@ export function markHydrateControlEnd(scopeId: number, index: Accessor) { export function markHydrateControlSingleNodeEnd( scopeId: number, index: Accessor, - childScopeIds: number | number[] + childScopeIds?: number | number[] ) { - return ``; + return ``; } function writeHydrateScript() { diff --git a/packages/translator/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/dom.expected/template.js b/packages/translator/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/dom.expected/template.js index df21badde..054ca3eb1 100644 --- a/packages/translator/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/dom.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/dom.expected/template.js @@ -1,7 +1,7 @@ let _thing; -import { write as _write, bindRenderer as _bindRenderer, createRenderer as _createRenderer, conditional as _conditional, dynamicSubscribers as _dynamicSubscribers, dynamicClosure as _dynamicClosure, source as _source, setSource as _setSource, destructureSources as _destructureSources, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; +import { write as _write, bindRenderer as _bindRenderer, createRenderer as _createRenderer, register as _register, conditional as _conditional, dynamicSubscribers as _dynamicSubscribers, dynamicClosure as _dynamicClosure, source as _source, setSource as _setSource, destructureSources as _destructureSources, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; import { setup as _customTag, template as _customTag_template, walks as _customTag_walks } from "./components/custom-tag/index.marko"; -const _ifBody = /* @__PURE__ */_createRenderer("", ""); +const _ifBody = _register("packages/translator/src/__tests__/fixtures/at-tag-inside-if-tag/template.marko_2_renderer", /* @__PURE__ */_createRenderer("", "")); const _if$customTagBody = /* @__PURE__ */_conditional("#text/0", 1, (_scope, x = _scope._["x"]) => x ? _ifBody : null); const _x$customTagBody = _dynamicClosure(1, "x", [_if$customTagBody]); const _customTagBody = /* @__PURE__ */_createRenderer("", /* replace */"%", null, [_x$customTagBody]); diff --git a/packages/translator/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/html.expected/components/custom-tag/index.js b/packages/translator/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/html.expected/components/custom-tag/index.js index fda3a01e2..f31d1bda1 100644 --- a/packages/translator/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/html.expected/components/custom-tag/index.js +++ b/packages/translator/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/html.expected/components/custom-tag/index.js @@ -1,6 +1,6 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
"); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/html.expected/template.js index a31828941..fed7b3b8f 100644 --- a/packages/translator/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/html.expected/template.js @@ -1,20 +1,33 @@ -import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; +import { write as _write, SYMBOL_OWNER as _SYMBOL_OWNER, nextScopeId as _nextScopeId, writeHydrateScope as _writeHydrateScope, register as _register, markHydrateControlSingleNodeEnd as _markHydrateControlSingleNodeEnd, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _customTag from "./components/custom-tag/index.marko"; const _renderer = ({ x }, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); let _thing; - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); + let _ifScopeId; + const _ifScope = {}, + _ifRenderer = () => {}; if (x) { - const _scope = _nextScopeId(); + const _scope2_ = _nextScopeId(); _thing = { x: 1, renderBody() { _write("Hello"); } }; + _writeHydrateScope(_scope2_, Object.assign(_ifScope, { + [_SYMBOL_OWNER]: _scope1_ + })); + _register(_ifRenderer, "packages/translator/src/__tests__/fixtures/at-tag-inside-if-tag/template.marko_2_renderer"); + _ifScopeId = _scope2_; } + _write(`${_markHydrateControlSingleNodeEnd(_scope1_, "#text/0", _ifScopeId)}`); + _writeHydrateScope(_scope1_, { + "#text/0!": _ifScope, + "#text/0(": _ifRenderer + }); _customTag({ thing: _thing }); diff --git a/packages/translator/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/html.expected/components/hello/index.js b/packages/translator/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/html.expected/components/hello/index.js index fda3a01e2..f31d1bda1 100644 --- a/packages/translator/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/html.expected/components/hello/index.js +++ b/packages/translator/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/html.expected/components/hello/index.js @@ -1,6 +1,6 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
"); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/html.expected/template.js index a723d390f..f893f0567 100644 --- a/packages/translator/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/html.expected/template.js @@ -1,14 +1,14 @@ import { nextScopeId as _nextScopeId, maybeFlush as _maybeFlush, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _hello from "./components/hello/index.marko"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const _item = []; - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); for (const a in { a: 1, b: 2 }) { - const _scope = _nextScopeId(); + const _scope2_ = _nextScopeId(); _item.push({}); _maybeFlush(); } diff --git a/packages/translator/src/__tests__/fixtures/at-tags-dynamic-tag-parent/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/at-tags-dynamic-tag-parent/__snapshots__/html.expected/template.js index 84b8a6946..c3e3794e5 100644 --- a/packages/translator/src/__tests__/fixtures/at-tags-dynamic-tag-parent/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/at-tags-dynamic-tag-parent/__snapshots__/html.expected/template.js @@ -2,7 +2,7 @@ import { write as _write, dynamicTag as _dynamicTag, nextScopeId as _nextScopeId const _renderer = ({ x }, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _dynamicTag(x, { header: { class: "my-header", diff --git a/packages/translator/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/dom.expected/template.js b/packages/translator/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/dom.expected/template.js index 32695a91d..eda8d5ac8 100644 --- a/packages/translator/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/dom.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/dom.expected/template.js @@ -1,11 +1,11 @@ let _item; -import { data as _data, write as _write, bindRenderer as _bindRenderer, createRenderer as _createRenderer, conditional as _conditional, dynamicSubscribers as _dynamicSubscribers, dynamicClosure as _dynamicClosure, source as _source, setSource as _setSource, destructureSources as _destructureSources, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; +import { data as _data, write as _write, bindRenderer as _bindRenderer, createRenderer as _createRenderer, register as _register, conditional as _conditional, dynamicSubscribers as _dynamicSubscribers, dynamicClosure as _dynamicClosure, source as _source, setSource as _setSource, destructureSources as _destructureSources, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; import { setup as _hello, template as _hello_template, walks as _hello_walks } from "./components/hello/index.marko"; const _setup$itemBody = _scope => { _data(_scope["#text/0"], y); }; const _itemBody = /* @__PURE__ */_createRenderer("", /* get */" ", _setup$itemBody); -const _ifBody = /* @__PURE__ */_createRenderer("", ""); +const _ifBody = _register("packages/translator/src/__tests__/fixtures/at-tags-dynamic-with-params/template.marko_2_renderer", /* @__PURE__ */_createRenderer("", "")); const _if$helloBody = /* @__PURE__ */_conditional("#text/0", 1, (_scope, x = _scope._["x"]) => x ? _ifBody : null); const _x$helloBody = _dynamicClosure(1, "x", [_if$helloBody]); const _helloBody = /* @__PURE__ */_createRenderer("", /* replace */"%", null, [_x$helloBody]); diff --git a/packages/translator/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/html.expected/components/hello/index.js b/packages/translator/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/html.expected/components/hello/index.js index fda3a01e2..f31d1bda1 100644 --- a/packages/translator/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/html.expected/components/hello/index.js +++ b/packages/translator/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/html.expected/components/hello/index.js @@ -1,6 +1,6 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
"); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/html.expected/template.js index b7a4835c1..1bb20df64 100644 --- a/packages/translator/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/html.expected/template.js @@ -1,19 +1,32 @@ -import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; +import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, SYMBOL_OWNER as _SYMBOL_OWNER, nextScopeId as _nextScopeId, writeHydrateScope as _writeHydrateScope, register as _register, markHydrateControlSingleNodeEnd as _markHydrateControlSingleNodeEnd, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _hello from "./components/hello/index.marko"; const _renderer = ({ x }, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); let _item; - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); + let _ifScopeId; + const _ifScope = {}, + _ifRenderer = () => {}; if (x) { - const _scope = _nextScopeId(); + const _scope2_ = _nextScopeId(); _item = { renderBody(y) { - _write(`${_escapeXML(y)}${_markHydrateNode(_scope, "#text/0")}`); + _write(`${_escapeXML(y)}${_markHydrateNode(_scope3_, "#text/0")}`); } }; + _writeHydrateScope(_scope2_, Object.assign(_ifScope, { + [_SYMBOL_OWNER]: _scope1_ + })); + _register(_ifRenderer, "packages/translator/src/__tests__/fixtures/at-tags-dynamic-with-params/template.marko_2_renderer"); + _ifScopeId = _scope2_; } + _write(`${_markHydrateControlSingleNodeEnd(_scope1_, "#text/0", _ifScopeId)}`); + _writeHydrateScope(_scope1_, { + "#text/0!": _ifScope, + "#text/0(": _ifRenderer + }); _hello({ item: _item }); diff --git a/packages/translator/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/html.expected/components/hello/index.js b/packages/translator/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/html.expected/components/hello/index.js index fda3a01e2..f31d1bda1 100644 --- a/packages/translator/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/html.expected/components/hello/index.js +++ b/packages/translator/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/html.expected/components/hello/index.js @@ -1,6 +1,6 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
"); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/html.expected/template.js index 0cf91cd78..d79055a9e 100644 --- a/packages/translator/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/html.expected/template.js @@ -1,14 +1,17 @@ -import { write as _write, nextScopeId as _nextScopeId, maybeFlush as _maybeFlush, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; +import { write as _write, SYMBOL_OWNER as _SYMBOL_OWNER, nextScopeId as _nextScopeId, writeHydrateScope as _writeHydrateScope, register as _register, markHydrateControlSingleNodeEnd as _markHydrateControlSingleNodeEnd, maybeFlush as _maybeFlush, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _hello from "./components/hello/index.marko"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const _col = []; - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); const _item = []; for (const color of ["red", "blue", "green"]) { - const _scope = _nextScopeId(); + const _scope3_ = _nextScopeId(); + let _ifScopeId; + const _ifScope = {}, + _ifRenderer = () => {}; if (color === "red") { - const _scope = _nextScopeId(); + const _scope4_ = _nextScopeId(); _item.push({ style: { color @@ -17,8 +20,13 @@ const _renderer = (input, _tagVar) => { _write("foo"); } }); + _writeHydrateScope(_scope4_, Object.assign(_ifScope, { + [_SYMBOL_OWNER]: _scope3_ + })); + _register(_ifRenderer, "packages/translator/src/__tests__/fixtures/at-tags-dynamic/template.marko_4_renderer"); + _ifScopeId = _scope4_; } else { - const _scope = _nextScopeId(); + const _scope5_ = _nextScopeId(); _item.push({ style: { color @@ -27,20 +35,30 @@ const _renderer = (input, _tagVar) => { _write("bar"); } }); + _writeHydrateScope(_scope5_, Object.assign(_ifScope, { + [_SYMBOL_OWNER]: _scope3_ + })); + _register(_ifRenderer, "packages/translator/src/__tests__/fixtures/at-tags-dynamic/template.marko_5_renderer"); + _ifScopeId = _scope5_; } + _write(`${_markHydrateControlSingleNodeEnd(_scope3_, "#text/0", _ifScopeId)}`); + _writeHydrateScope(_scope3_, { + "#text/0!": _ifScope, + "#text/0(": _ifRenderer + }); _maybeFlush(); } let _i = 0; for (const col of [["a", "b"], ["c", "d"]]) { let i = _i++; - const _scope = _nextScopeId(); + const _scope6_ = _nextScopeId(); const _row = []; for (const row of col) { - const _scope = _nextScopeId(); + const _scope8_ = _nextScopeId(); _row.push({ row: row, renderBody() { - _write(`${_escapeXML(row)}${_markHydrateNode(_scope, "#text/0")}`); + _write(`${_escapeXML(row)}${_markHydrateNode(_scope9_, "#text/0")}`); } }); _maybeFlush(); diff --git a/packages/translator/src/__tests__/fixtures/at-tags/__snapshots__/html.expected/components/hello/index.js b/packages/translator/src/__tests__/fixtures/at-tags/__snapshots__/html.expected/components/hello/index.js index 860f890ac..9ee49872b 100644 --- a/packages/translator/src/__tests__/fixtures/at-tags/__snapshots__/html.expected/components/hello/index.js +++ b/packages/translator/src/__tests__/fixtures/at-tags/__snapshots__/html.expected/components/hello/index.js @@ -1,6 +1,6 @@ import { nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/at-tags/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/at-tags/__snapshots__/html.expected/template.js index ee84dbb1d..b9bc9c30c 100644 --- a/packages/translator/src/__tests__/fixtures/at-tags/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/at-tags/__snapshots__/html.expected/template.js @@ -1,7 +1,7 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _hello from "./components/hello/index.marko"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _hello({ foo: { renderBody() { @@ -9,7 +9,7 @@ const _renderer = (input, _tagVar) => { } }, renderBody() { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); } }); }; diff --git a/packages/translator/src/__tests__/fixtures/attr-boolean/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/attr-boolean/__snapshots__/html.expected/template.js index b1bb5c789..4cd660941 100644 --- a/packages/translator/src/__tests__/fixtures/attr-boolean/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/attr-boolean/__snapshots__/html.expected/template.js @@ -1,6 +1,6 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write(""); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/attr-class/__snapshots__/html.expected/components/custom-tag.js b/packages/translator/src/__tests__/fixtures/attr-class/__snapshots__/html.expected/components/custom-tag.js index fda3a01e2..f31d1bda1 100644 --- a/packages/translator/src/__tests__/fixtures/attr-class/__snapshots__/html.expected/components/custom-tag.js +++ b/packages/translator/src/__tests__/fixtures/attr-class/__snapshots__/html.expected/components/custom-tag.js @@ -1,6 +1,6 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
"); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/attr-class/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/attr-class/__snapshots__/html.expected/template.js index a6c94b69c..13189b033 100644 --- a/packages/translator/src/__tests__/fixtures/attr-class/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/attr-class/__snapshots__/html.expected/template.js @@ -1,7 +1,7 @@ import { classAttr as _classAttr, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, dynamicTag as _dynamicTag, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _customTag from "./components/custom-tag.marko"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const { c, d @@ -9,20 +9,20 @@ const _renderer = (input, _tagVar) => { _write(`${_markHydrateNode(_scope, "#div/0")}
`); + }])}>${_markHydrateNode(_scope0_, "#div/0")}
`); _customTag({ class: ["a", { b: c, d }], renderBody() { - const _scope = _nextScopeId(); + const _scope2_ = _nextScopeId(); } }); _customTag({ class: ["a", false, "b"], renderBody() { - const _scope = _nextScopeId(); + const _scope3_ = _nextScopeId(); } }); _dynamicTag(input.test, { diff --git a/packages/translator/src/__tests__/fixtures/attr-escape/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/attr-escape/__snapshots__/html.expected/template.js index 6fce67f30..cff618052 100644 --- a/packages/translator/src/__tests__/fixtures/attr-escape/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/attr-escape/__snapshots__/html.expected/template.js @@ -1,7 +1,7 @@ import { classAttr as _classAttr, attr as _attr, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); - _write(`${_markHydrateNode(_scope, "#div/0")}`); + const _scope0_ = _nextScopeId(); + _write(`${_markHydrateNode(_scope0_, "#div/0")}`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/attr-falsey/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/attr-falsey/__snapshots__/html.expected/template.js index af76849a0..b70a1893d 100644 --- a/packages/translator/src/__tests__/fixtures/attr-falsey/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/attr-falsey/__snapshots__/html.expected/template.js @@ -1,6 +1,6 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
"); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/attr-scoped/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/attr-scoped/__snapshots__/html.expected/template.js index be425f07a..7aef9aca4 100644 --- a/packages/translator/src/__tests__/fixtures/attr-scoped/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/attr-scoped/__snapshots__/html.expected/template.js @@ -1,6 +1,6 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
"); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/attr-style/__snapshots__/html.expected/components/custom-tag.js b/packages/translator/src/__tests__/fixtures/attr-style/__snapshots__/html.expected/components/custom-tag.js index fda3a01e2..f31d1bda1 100644 --- a/packages/translator/src/__tests__/fixtures/attr-style/__snapshots__/html.expected/components/custom-tag.js +++ b/packages/translator/src/__tests__/fixtures/attr-style/__snapshots__/html.expected/components/custom-tag.js @@ -1,6 +1,6 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
"); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/attr-style/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/attr-style/__snapshots__/html.expected/template.js index 06aca296d..c4f7ada02 100644 --- a/packages/translator/src/__tests__/fixtures/attr-style/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/attr-style/__snapshots__/html.expected/template.js @@ -4,16 +4,16 @@ const _renderer = ({ color, test }, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write(`${_markHydrateNode(_scope, "#div/0")}
`); + })}>${_markHydrateNode(_scope0_, "#div/0")}
`); _customTag({ style: { color: color }, renderBody() { - const _scope = _nextScopeId(); + const _scope2_ = _nextScopeId(); } }); _customTag({ @@ -21,13 +21,13 @@ const _renderer = ({ width: 100 }, renderBody() { - const _scope = _nextScopeId(); + const _scope3_ = _nextScopeId(); } }); _customTag({ style: "color: green", renderBody() { - const _scope = _nextScopeId(); + const _scope4_ = _nextScopeId(); } }); _dynamicTag(test, { diff --git a/packages/translator/src/__tests__/fixtures/attr-template-literal-escape/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/attr-template-literal-escape/__snapshots__/html.expected/template.js index e3628ed97..d648d931c 100644 --- a/packages/translator/src/__tests__/fixtures/attr-template-literal-escape/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/attr-template-literal-escape/__snapshots__/html.expected/template.js @@ -2,8 +2,8 @@ import { attr as _attr, markHydrateNode as _markHydrateNode, write as _write, ne const _renderer = ({ name }, _tagVar) => { - const _scope = _nextScopeId(); - _write(`${_markHydrateNode(_scope, "#div/0")}`); + const _scope0_ = _nextScopeId(); + _write(`${_markHydrateNode(_scope0_, "#div/0")}`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/basic-chain/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-chain/__snapshots__/html.expected/template.js index 3775a9bda..0619c9e20 100644 --- a/packages/translator/src/__tests__/fixtures/basic-chain/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-chain/__snapshots__/html.expected/template.js @@ -1,10 +1,10 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const x = 1; const y = x * 2; const z = y * 3; - _write(`
${_escapeXML(z)}${_markHydrateNode(_scope, "#text/0")}
`); + _write(`
${_escapeXML(z)}${_markHydrateNode(_scope0_, "#text/0")}
`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/basic-component-attrs/__snapshots__/html.expected/components/my-button.js b/packages/translator/src/__tests__/fixtures/basic-component-attrs/__snapshots__/html.expected/components/my-button.js index a7da34389..6f3b8d0e8 100644 --- a/packages/translator/src/__tests__/fixtures/basic-component-attrs/__snapshots__/html.expected/components/my-button.js +++ b/packages/translator/src/__tests__/fixtures/basic-component-attrs/__snapshots__/html.expected/components/my-button.js @@ -3,10 +3,10 @@ const _renderer = ({ onClick, text }, _tagVar) => { - const _scope = _nextScopeId(); - _write(`${_markHydrateNode(_scope, "#button/0")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-component-attrs/components/my-button.marko_0_onClick"); - _writeHydrateScope(_scope, { + const _scope0_ = _nextScopeId(); + _write(`${_markHydrateNode(_scope0_, "#button/0")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-component-attrs/components/my-button.marko_0_onClick"); + _writeHydrateScope(_scope0_, { "onClick": onClick }); }; diff --git a/packages/translator/src/__tests__/fixtures/basic-component-attrs/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-component-attrs/__snapshots__/html.expected/template.js index 441121b05..0ec8994fb 100644 --- a/packages/translator/src/__tests__/fixtures/basic-component-attrs/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-component-attrs/__snapshots__/html.expected/template.js @@ -1,7 +1,7 @@ import { nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _myButton from "./components/my-button.marko"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const clickCount = 0; _myButton({ text: clickCount, @@ -9,7 +9,7 @@ const _renderer = (input, _tagVar) => { clickCount++; }, renderBody() { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); } }); }; diff --git a/packages/translator/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/html.expected/components/my-button.js b/packages/translator/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/html.expected/components/my-button.js index 76c4806cf..d0169c315 100644 --- a/packages/translator/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/html.expected/components/my-button.js +++ b/packages/translator/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/html.expected/components/my-button.js @@ -3,12 +3,12 @@ const _renderer = ({ onClick, renderBody }, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("${_markHydrateNode(_scope, "#button/0")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-component-renderBody/components/my-button.marko_0_onClick"); - _writeHydrateScope(_scope, { + _write(`${_markHydrateNode(_scope0_, "#button/0")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-component-renderBody/components/my-button.marko_0_onClick"); + _writeHydrateScope(_scope0_, { "onClick": onClick }); }; diff --git a/packages/translator/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/html.expected/template.js index cf45b5a05..cd666466e 100644 --- a/packages/translator/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/html.expected/template.js @@ -1,15 +1,15 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _myButton from "./components/my-button.marko"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const clickCount = 0; _myButton({ onClick: function () { clickCount++; }, renderBody() { - const _scope = _nextScopeId(); - _write(`${_escapeXML(clickCount)}${_markHydrateNode(_scope, "#text/0")}`); + const _scope1_ = _nextScopeId(); + _write(`${_escapeXML(clickCount)}${_markHydrateNode(_scope1_, "#text/0")}`); } }); }; diff --git a/packages/translator/src/__tests__/fixtures/basic-component/__snapshots__/html.expected/components/counter.js b/packages/translator/src/__tests__/fixtures/basic-component/__snapshots__/html.expected/components/counter.js index 52bf368cd..f5a40be76 100644 --- a/packages/translator/src/__tests__/fixtures/basic-component/__snapshots__/html.expected/components/counter.js +++ b/packages/translator/src/__tests__/fixtures/basic-component/__snapshots__/html.expected/components/counter.js @@ -1,10 +1,10 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const clickCount = 0; - _write(`${_markHydrateNode(_scope, "#button/0")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-component/components/counter.marko_0_clickCount"); - _writeHydrateScope(_scope, { + _write(`${_markHydrateNode(_scope0_, "#button/0")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-component/components/counter.marko_0_clickCount"); + _writeHydrateScope(_scope0_, { "clickCount": clickCount }); }; diff --git a/packages/translator/src/__tests__/fixtures/basic-component/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-component/__snapshots__/html.expected/template.js index 4360432e2..50b4bd73e 100644 --- a/packages/translator/src/__tests__/fixtures/basic-component/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-component/__snapshots__/html.expected/template.js @@ -1,11 +1,11 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _counter from "./components/counter.marko"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
"); _counter({ renderBody() { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); } }); _write("
"); diff --git a/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/csr.expected.md b/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/csr.expected.md index 021175aac..04708767a 100644 --- a/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/csr.expected.md +++ b/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/csr.expected.md @@ -44,14 +44,13 @@ container.querySelector("button.toggle").click(); "; +export const walks = /* get, over(1), get, over(1), replace, over(1) */" b b%b"; +export const setup = _setup; +export default /* @__PURE__ */_createRenderFn(template, walks, setup); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/html.expected/template.js new file mode 100644 index 000000000..f47c1e9a1 --- /dev/null +++ b/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/html.expected/template.js @@ -0,0 +1,28 @@ +import { markHydrateNode as _markHydrateNode, write as _write, escapeXML as _escapeXML, markHydrateScopeStart as _markHydrateScopeStart, SYMBOL_OWNER as _SYMBOL_OWNER, nextScopeId as _nextScopeId, writeHydrateScope as _writeHydrateScope, register as _register, markHydrateControlEnd as _markHydrateControlEnd, writeHydrateCall as _writeHydrateCall, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; +const _renderer = (input, _tagVar) => { + const _scope0_ = _nextScopeId(); + const show = true; + const count = 0; + _write(`${_markHydrateNode(_scope0_, "#button/0")}${_markHydrateNode(_scope0_, "#button/1")}`); + const _ifScope = {}, + _ifRenderer = () => {}; + if (show) { + const _scope1_ = _nextScopeId(); + _write(`${_markHydrateScopeStart(_scope1_)}The count is ${_escapeXML(count)}${_markHydrateNode(_scope1_, "#text/0")}`); + _writeHydrateScope(_scope1_, Object.assign(_ifScope, { + [_SYMBOL_OWNER]: _scope0_ + })); + _register(_ifRenderer, "packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/template.marko_1_renderer"); + } + _write(`${_markHydrateControlEnd(_scope0_, "#text/2")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/template.marko_0_show"); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/template.marko_0_count"); + _writeHydrateScope(_scope0_, { + "show": show, + "count": count, + "#text/2!": _ifScope, + "#text/2(": _ifRenderer + }); +}; +export default _renderer; +export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/hydrate.expected.md b/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/hydrate.expected.md index a41409d8e..3b23fb19d 100644 --- a/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/hydrate.expected.md +++ b/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/hydrate.expected.md @@ -16,9 +16,9 @@ 0 - + @@ -50,9 +50,9 @@ container.querySelector("button.inc").click(); 1 - + @@ -79,9 +79,9 @@ container.querySelector("button.toggle").click(); class="toggle" /> - + @@ -114,9 +114,9 @@ container.querySelector("button.inc").click(); class="toggle" /> - + @@ -145,7 +145,7 @@ container.querySelector("button.toggle").click(); The count is 2 @@ -177,7 +177,7 @@ container.querySelector("button.inc").click(); The count is 3 diff --git a/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/ssr.expected.md b/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/ssr.expected.md index 2785c7ce4..742dc121e 100644 --- a/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/ssr.expected.md +++ b/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/ssr.expected.md @@ -1,5 +1,5 @@ # Write - The count is 0 + The count is 0 # Render "End" @@ -20,9 +20,9 @@ 0 - + diff --git a/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/browser.ts b/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/browser.ts deleted file mode 100644 index 847fbffbb..000000000 --- a/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/browser.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { - on, - createRenderer, - createRenderFn, - conditional, - data, - bind, - source, - setSource, - queueSource, - closure, - inConditionalScope, - queueHydrate, - Scope, -} from "@marko/runtime-fluurt/src/dom"; - -import { get, next, over, replace } from "../../utils/walks"; - -const enum INDEX { - button = "#button/0", - button2 = "#button/1", - comment = "#comment/2", - conditional = "#comment/2", - show = "show", - count = "count", -} - -type ComponentScope = Scope<{ - [INDEX.button]: HTMLButtonElement; - [INDEX.comment]: Comment; - [INDEX.conditional]: Comment; - [INDEX.show]: boolean; - [INDEX.count]: string; -}>; - -const enum INDEX_BRANCH0 { - text = "#text/0", - count = "count", -} - -type Branch0Scope = Scope<{ - _: ComponentScope; - [INDEX_BRANCH0.text]: Text; - [INDEX_BRANCH0.count]: string; -}>; - -// -// -// -// -// The count is ${count} - -export const template = ``; -export const walks = get + over(1) + get + over(1) + get + over(1); -export const setup = (scope: ComponentScope) => { - setSource(scope, _count, 0); - setSource(scope, _show, true); - queueHydrate(scope, _hydrate); -}; - -export const _hydrate = (scope: ComponentScope) => { - on(scope[INDEX.button], "click", bind(scope, _onclick)); - on(scope[INDEX.button2], "click", bind(scope, _onclick2)); -}; - -const _onclick = (scope: ComponentScope) => { - queueSource(scope, _count, scope[INDEX.count] + 1); -}; - -const _onclick2 = (scope: ComponentScope) => { - queueSource(scope, _show, !scope[INDEX.show]); -}; - -const _count$if = closure( - 1, - INDEX.count, - [], - (scope: Branch0Scope, count: string) => { - data(scope[INDEX_BRANCH0.text], count); - } -); -const _if = conditional(INDEX.conditional, 1, (scope: ComponentScope) => - scope[INDEX.show] ? _ifBody : undefined -); -const _show = source(INDEX.show, [_if]); -const _count = source(INDEX.count, [ - inConditionalScope(_count$if, INDEX.conditional), -]); - -export default createRenderFn(template, walks, setup); - -export const _ifBody = createRenderer( - "The count is ", - next(1) + replace + next(1), - undefined, - [_count$if] -); diff --git a/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/hydrate.ts b/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/hydrate.ts deleted file mode 100644 index 4b777d42c..000000000 --- a/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/hydrate.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { init, register } from "@marko/runtime-fluurt/src/dom"; -import { _hydrate, _ifBody } from "./browser"; - -register("counter", _hydrate); -register("ifBody", _ifBody); -init(); diff --git a/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/server.ts b/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/server.ts deleted file mode 100644 index 8cf181874..000000000 --- a/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/server.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { - write, - markHydrateNode, - nextScopeId, - writeHydrateScope, - writeHydrateCall, - register, - SYMBOL_OWNER, - markHydrateControlEnd, - markHydrateScopeStart, -} from "@marko/runtime-fluurt/src/html"; - -export default () => { - write(""); - counter(); - write(""); -}; - -// -// -// -// -// The count is ${count} - -const counter = () => { - const show = true; - const count = 0; - const scopeId = nextScopeId(); - let childScope; - let childRenderer; - - write( - `${markHydrateNode( - scopeId, - "#button/0" - )}${markHydrateNode(scopeId, "#button/1")}` - ); - - if (show) { - const childScopeId = nextScopeId(); - write( - `${markHydrateScopeStart( - childScopeId - )}The count is ${count}${markHydrateNode(childScopeId, "#text/0")}` - ); - childRenderer = register(() => {}, "ifBody"); - writeHydrateScope(childScopeId, (childScope = { [SYMBOL_OWNER]: scopeId })); - } - write(`${markHydrateControlEnd(scopeId, "#comment/2")}`); - - // eslint-disable-next-line no-sparse-arrays - writeHydrateScope(scopeId, { - ["#comment/2!"]: childScope, - ["#comment/2("]: childRenderer, - show: show, - count: count, - }); - writeHydrateCall(scopeId, "counter"); -}; diff --git a/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/template.marko b/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/template.marko new file mode 100644 index 000000000..b5e0fdf36 --- /dev/null +++ b/packages/translator/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/template.marko @@ -0,0 +1,5 @@ + + + + +The count is ${count} \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/csr.expected.md b/packages/translator/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/csr.expected.md index b54107cec..d4b7e5828 100644 --- a/packages/translator/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/csr.expected.md +++ b/packages/translator/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/csr.expected.md @@ -48,13 +48,12 @@ container.querySelector("button.toggle").click(); "; +export const walks = /* get, over(1), get, over(1), replace, over(1) */" b b%b"; +export const setup = _setup; +export default /* @__PURE__ */_createRenderFn(template, walks, setup); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/html.expected/template.js new file mode 100644 index 000000000..fcd2a91d6 --- /dev/null +++ b/packages/translator/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/html.expected/template.js @@ -0,0 +1,30 @@ +import { markHydrateNode as _markHydrateNode, write as _write, escapeXML as _escapeXML, SYMBOL_OWNER as _SYMBOL_OWNER, nextScopeId as _nextScopeId, writeHydrateScope as _writeHydrateScope, register as _register, markHydrateControlSingleNodeEnd as _markHydrateControlSingleNodeEnd, writeHydrateCall as _writeHydrateCall, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; +const _renderer = (input, _tagVar) => { + const _scope0_ = _nextScopeId(); + const show = true; + const count = 0; + _write(`${_markHydrateNode(_scope0_, "#button/0")}${_markHydrateNode(_scope0_, "#button/1")}`); + let _ifScopeId; + const _ifScope = {}, + _ifRenderer = () => {}; + if (show) { + const _scope1_ = _nextScopeId(); + _write(`${_escapeXML(count)}${_markHydrateNode(_scope1_, "#text/0")}`); + _writeHydrateScope(_scope1_, Object.assign(_ifScope, { + [_SYMBOL_OWNER]: _scope0_ + })); + _register(_ifRenderer, "packages/translator/src/__tests__/fixtures/basic-conditional-counter/template.marko_1_renderer"); + _ifScopeId = _scope1_; + } + _write(`${_markHydrateControlSingleNodeEnd(_scope0_, "#text/2", _ifScopeId)}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-conditional-counter/template.marko_0_show"); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-conditional-counter/template.marko_0_count"); + _writeHydrateScope(_scope0_, { + "show": show, + "count": count, + "#text/2!": _ifScope, + "#text/2(": _ifRenderer + }); +}; +export default _renderer; +export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/hydrate.expected.md b/packages/translator/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/hydrate.expected.md index e731175b3..b5c43a54b 100644 --- a/packages/translator/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/hydrate.expected.md +++ b/packages/translator/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/hydrate.expected.md @@ -15,9 +15,9 @@ 0 - + @@ -48,9 +48,9 @@ container.querySelector("button.inc").click(); 1 - + @@ -77,9 +77,9 @@ container.querySelector("button.toggle").click(); class="toggle" /> - + @@ -108,9 +108,9 @@ container.querySelector("button.inc").click(); class="toggle" /> - + @@ -141,7 +141,7 @@ container.querySelector("button.toggle").click(); 2 @@ -174,7 +174,7 @@ container.querySelector("button.inc").click(); 3 diff --git a/packages/translator/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/ssr.expected.md b/packages/translator/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/ssr.expected.md index 9673865a5..81f47490a 100644 --- a/packages/translator/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/ssr.expected.md +++ b/packages/translator/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/ssr.expected.md @@ -1,5 +1,5 @@ # Write - 0 + 0 # Render "End" @@ -19,9 +19,9 @@ 0 - + diff --git a/packages/translator/src/__tests__/fixtures/basic-conditional-counter/browser.ts b/packages/translator/src/__tests__/fixtures/basic-conditional-counter/browser.ts deleted file mode 100644 index ec9c9eb78..000000000 --- a/packages/translator/src/__tests__/fixtures/basic-conditional-counter/browser.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { - on, - createRenderer, - createRenderFn, - conditional, - data, - bind, - source, - setSource, - queueSource, - closure, - inConditionalScope, - queueHydrate, - Scope, -} from "@marko/runtime-fluurt/src/dom"; - -import { get, next, over } from "../../utils/walks"; - -const enum INDEX { - button = "#button/0", - button2 = "#button/1", - comment = "#comment/2", - conditional = "#comment/2", - show = "show", - count = "count", -} - -type ComponentScope = Scope<{ - [INDEX.button]: HTMLButtonElement; - [INDEX.comment]: Comment; - [INDEX.conditional]: Comment; - [INDEX.show]: boolean; - [INDEX.count]: string; -}>; - -const enum INDEX_BRANCH0 { - text = "#text/0", - count = "count", -} - -type Branch0Scope = Scope<{ - _: ComponentScope; - [INDEX_BRANCH0.text]: Text; - [INDEX_BRANCH0.count]: string; -}>; - -// -// -// -// -// ${count} - -export const template = ``; -export const walks = get + over(1) + get + over(1) + get + over(1); -export const setup = (scope: ComponentScope) => { - setSource(scope, _count, 0); - setSource(scope, _show, true); - queueHydrate(scope, _hydrate); -}; - -export const _hydrate = (scope: ComponentScope) => { - on(scope[INDEX.button], "click", bind(scope, _onclick)); - on(scope[INDEX.button2], "click", bind(scope, _onclick2)); -}; - -const _onclick = (scope: ComponentScope) => { - queueSource(scope, _count, scope[INDEX.count] + 1); -}; - -const _onclick2 = (scope: ComponentScope) => { - queueSource(scope, _show, !scope[INDEX.show]); -}; - -const _count$if = closure( - 1, - INDEX.count, - [], - (scope: Branch0Scope, count: string) => { - data(scope[INDEX_BRANCH0.text], count); - } -); -const _if = conditional(INDEX.conditional, 1, (scope: ComponentScope) => - scope[INDEX.show] ? _ifBody : undefined -); -const _show = source(INDEX.show, [_if]); -const _count = source(INDEX.count, [ - inConditionalScope(_count$if, INDEX.conditional), -]); - -export default createRenderFn(template, walks, setup); - -export const _ifBody = createRenderer( - " ", - next(1) + get + next(1), - undefined, - [_count$if] -); diff --git a/packages/translator/src/__tests__/fixtures/basic-conditional-counter/hydrate.ts b/packages/translator/src/__tests__/fixtures/basic-conditional-counter/hydrate.ts deleted file mode 100644 index 4b777d42c..000000000 --- a/packages/translator/src/__tests__/fixtures/basic-conditional-counter/hydrate.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { init, register } from "@marko/runtime-fluurt/src/dom"; -import { _hydrate, _ifBody } from "./browser"; - -register("counter", _hydrate); -register("ifBody", _ifBody); -init(); diff --git a/packages/translator/src/__tests__/fixtures/basic-conditional-counter/server.ts b/packages/translator/src/__tests__/fixtures/basic-conditional-counter/server.ts deleted file mode 100644 index a6ec371f5..000000000 --- a/packages/translator/src/__tests__/fixtures/basic-conditional-counter/server.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { - write, - markHydrateNode, - nextScopeId, - writeHydrateScope, - writeHydrateCall, - markHydrateControlSingleNodeEnd, - register, - SYMBOL_OWNER, -} from "@marko/runtime-fluurt/src/html"; - -export default () => { - write(""); - counter(); - write(""); -}; - -// -// -// -// -// ${count} - -const counter = () => { - const show = true; - const count = 0; - const scopeId = nextScopeId(); - let childScope; - let childRenderer; - let childScopeId!: number; - - write( - `${markHydrateNode( - scopeId, - "#button/0" - )}${markHydrateNode(scopeId, "#button/1")}` - ); - - if (show) { - childScopeId = nextScopeId(); - write(`${count}${markHydrateNode(childScopeId, "#text/0")}`); - childRenderer = register(() => {}, "ifBody"); - writeHydrateScope(childScopeId, (childScope = { [SYMBOL_OWNER]: scopeId })); - } - write( - `${markHydrateControlSingleNodeEnd(scopeId, "#comment/2", childScopeId)}` - ); - - // eslint-disable-next-line no-sparse-arrays - writeHydrateScope(scopeId, { - ["#comment/2!"]: childScope, - ["#comment/2("]: childRenderer, - show: show, - count: count, - }); - writeHydrateCall(scopeId, "counter"); -}; diff --git a/packages/translator/src/__tests__/fixtures/basic-conditional-counter/template.marko b/packages/translator/src/__tests__/fixtures/basic-conditional-counter/template.marko new file mode 100644 index 000000000..97b354679 --- /dev/null +++ b/packages/translator/src/__tests__/fixtures/basic-conditional-counter/template.marko @@ -0,0 +1,5 @@ + + + + +${count} \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/html.expected/template.js index 819ff9c1d..68496588a 100644 --- a/packages/translator/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/html.expected/template.js @@ -1,11 +1,11 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const a = 0; const b = 0; if (true) { - const _scope = _nextScopeId(); - _write(`${_escapeXML(a + b)}${_markHydrateNode(_scope, "#text/0")}`); + const _scope1_ = _nextScopeId(); + _write(`${_escapeXML(a + b)}${_markHydrateNode(_scope1_, "#text/0")}`); } }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/basic-counter/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-counter/__snapshots__/html.expected/template.js index 3f2018266..829fb95bd 100644 --- a/packages/translator/src/__tests__/fixtures/basic-counter/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-counter/__snapshots__/html.expected/template.js @@ -1,10 +1,10 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const clickCount = 0; - _write(`
${_markHydrateNode(_scope, "#button/0")}
`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-counter/template.marko_0_clickCount"); - _writeHydrateScope(_scope, { + _write(`
${_markHydrateNode(_scope0_, "#button/0")}
`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-counter/template.marko_0_clickCount"); + _writeHydrateScope(_scope0_, { "clickCount": clickCount }); }; diff --git a/packages/translator/src/__tests__/fixtures/basic-dynamic-native-tag/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-dynamic-native-tag/__snapshots__/html.expected/template.js index 26970dec5..526db1b0e 100644 --- a/packages/translator/src/__tests__/fixtures/basic-dynamic-native-tag/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-dynamic-native-tag/__snapshots__/html.expected/template.js @@ -2,7 +2,7 @@ import { write as _write, dynamicTag as _dynamicTag, nextScopeId as _nextScopeId const _renderer = ({ tagName }, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _dynamicTag(tagName, { class: ["a", "b"] }, () => _write("Hello World")); diff --git a/packages/translator/src/__tests__/fixtures/basic-effect-no-deps/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-effect-no-deps/__snapshots__/html.expected/template.js index cd85c8871..12c580f23 100644 --- a/packages/translator/src/__tests__/fixtures/basic-effect-no-deps/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-effect-no-deps/__snapshots__/html.expected/template.js @@ -1,7 +1,7 @@ import { nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-effect-no-deps/template.marko_0"); + const _scope0_ = _nextScopeId(); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-effect-no-deps/template.marko_0"); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/basic-execution-order/__snapshots__/dom.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-execution-order/__snapshots__/dom.expected/template.js index 96d8764bc..cb58c32a8 100644 --- a/packages/translator/src/__tests__/fixtures/basic-execution-order/__snapshots__/dom.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-execution-order/__snapshots__/dom.expected/template.js @@ -1,6 +1,6 @@ -import { setSource as _setSource, on as _on, queueSource as _queueSource, data as _data, inConditionalScope as _inConditionalScope, closure as _closure, createRenderer as _createRenderer, conditional as _conditional, source as _source, register as _register, queueHydrate as _queueHydrate, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; +import { setSource as _setSource, on as _on, queueSource as _queueSource, data as _data, inConditionalScope as _inConditionalScope, closure as _closure, createRenderer as _createRenderer, register as _register, conditional as _conditional, source as _source, queueHydrate as _queueHydrate, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; const _message$ifBody = /* @__PURE__ */_closure(1, "message", [], (_scope, message) => _data(_scope["#text/0"], message.text)); -const _ifBody = /* @__PURE__ */_createRenderer(" ", /* get */" ", null, [_message$ifBody]); +const _ifBody = _register("packages/translator/src/__tests__/fixtures/basic-execution-order/template.marko_1_renderer", /* @__PURE__ */_createRenderer(" ", /* get */" ", null, [_message$ifBody])); const _if = /* @__PURE__ */_conditional("#text/1", 1, (_scope, show = _scope["show"]) => show ? _ifBody : null); const _show = /* @__PURE__ */_source("show", [_if]); const _message = /* @__PURE__ */_source("message", [/* @__PURE__ */_inConditionalScope(_message$ifBody, "#text/1")]); diff --git a/packages/translator/src/__tests__/fixtures/basic-execution-order/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-execution-order/__snapshots__/html.expected/template.js index 791879b40..0c9cd4bfc 100644 --- a/packages/translator/src/__tests__/fixtures/basic-execution-order/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-execution-order/__snapshots__/html.expected/template.js @@ -1,16 +1,29 @@ -import { markHydrateNode as _markHydrateNode, write as _write, escapeXML as _escapeXML, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; +import { markHydrateNode as _markHydrateNode, write as _write, escapeXML as _escapeXML, SYMBOL_OWNER as _SYMBOL_OWNER, nextScopeId as _nextScopeId, writeHydrateScope as _writeHydrateScope, register as _register, markHydrateControlSingleNodeEnd as _markHydrateControlSingleNodeEnd, writeHydrateCall as _writeHydrateCall, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const message = { text: "hi" }; const show = true; - _write(`${_markHydrateNode(_scope, "#button/0")}`); + _write(`${_markHydrateNode(_scope0_, "#button/0")}`); + let _ifScopeId; + const _ifScope = {}, + _ifRenderer = () => {}; if (show) { - const _scope = _nextScopeId(); - _write(`${_escapeXML(message.text)}${_markHydrateNode(_scope, "#text/0")}`); + const _scope1_ = _nextScopeId(); + _write(`${_escapeXML(message.text)}${_markHydrateNode(_scope1_, "#text/0")}`); + _writeHydrateScope(_scope1_, Object.assign(_ifScope, { + [_SYMBOL_OWNER]: _scope0_ + })); + _register(_ifRenderer, "packages/translator/src/__tests__/fixtures/basic-execution-order/template.marko_1_renderer"); + _ifScopeId = _scope1_; } - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-execution-order/template.marko_0"); + _write(`${_markHydrateControlSingleNodeEnd(_scope0_, "#text/1", _ifScopeId)}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-execution-order/template.marko_0"); + _writeHydrateScope(_scope0_, { + "#text/1!": _ifScope, + "#text/1(": _ifRenderer + }); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/basic-export/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-export/__snapshots__/html.expected/template.js index c5f96a4c4..561ded67c 100644 --- a/packages/translator/src/__tests__/fixtures/basic-export/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-export/__snapshots__/html.expected/template.js @@ -3,8 +3,8 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as const _renderer = ({ value }, _tagVar) => { - const _scope = _nextScopeId(); - _write(`
${_escapeXML(value)}${_markHydrateNode(_scope, "#text/0")}
`); + const _scope0_ = _nextScopeId(); + _write(`
${_escapeXML(value)}${_markHydrateNode(_scope0_, "#text/0")}
`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/basic-flush-here/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-flush-here/__snapshots__/html.expected/template.js index 1938fe04e..5b3fbccbb 100644 --- a/packages/translator/src/__tests__/fixtures/basic-flush-here/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-flush-here/__snapshots__/html.expected/template.js @@ -1,6 +1,6 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("

Hello World

"); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/basic-fn-with-block/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-fn-with-block/__snapshots__/html.expected/template.js index d6bebc1ae..c99e7ea48 100644 --- a/packages/translator/src/__tests__/fixtures/basic-fn-with-block/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-fn-with-block/__snapshots__/html.expected/template.js @@ -1,10 +1,10 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const count = 0; - _write(`${_markHydrateNode(_scope, "#button/0")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-fn-with-block/template.marko_0_count"); - _writeHydrateScope(_scope, { + _write(`${_markHydrateNode(_scope0_, "#button/0")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-fn-with-block/template.marko_0_count"); + _writeHydrateScope(_scope0_, { "count": count }); }; diff --git a/packages/translator/src/__tests__/fixtures/basic-handler-multi-ref-nested/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-handler-multi-ref-nested/__snapshots__/html.expected/template.js index 07ed8f71d..6bb093ba1 100644 --- a/packages/translator/src/__tests__/fixtures/basic-handler-multi-ref-nested/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-handler-multi-ref-nested/__snapshots__/html.expected/template.js @@ -1,11 +1,11 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const a = [0]; const b = 1; - _write(`${_markHydrateNode(_scope, "#button/0")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-handler-multi-ref-nested/template.marko_0_a_b"); - _writeHydrateScope(_scope, { + _write(`${_markHydrateNode(_scope0_, "#button/0")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-handler-multi-ref-nested/template.marko_0_a_b"); + _writeHydrateScope(_scope0_, { "a": a, "b": b }); diff --git a/packages/translator/src/__tests__/fixtures/basic-handler-refless/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-handler-refless/__snapshots__/html.expected/template.js index 49078d4b8..d3e04ce88 100644 --- a/packages/translator/src/__tests__/fixtures/basic-handler-refless/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-handler-refless/__snapshots__/html.expected/template.js @@ -1,9 +1,9 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const data = 0; - _write(`${_markHydrateNode(_scope, "#button/0")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-handler-refless/template.marko_0"); + _write(`${_markHydrateNode(_scope0_, "#button/0")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-handler-refless/template.marko_0"); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/dom.expected/components/comments.js b/packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/dom.expected/components/comments.js index b4d8bd67c..ba8db78f4 100644 --- a/packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/dom.expected/components/comments.js +++ b/packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/dom.expected/components/comments.js @@ -1,4 +1,4 @@ -import { setSource as _setSource, attr as _attr, data as _data, on as _on, queueSource as _queueSource, inChild as _inChild, subscriber as _subscriber, inConditionalScope as _inConditionalScope, closure as _closure, createRenderer as _createRenderer, conditional as _conditional, source as _source, register as _register, queueHydrate as _queueHydrate, derivation as _derivation, inLoopScope as _inLoopScope, loop as _loop, destructureSources as _destructureSources, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; +import { setSource as _setSource, attr as _attr, data as _data, on as _on, queueSource as _queueSource, inChild as _inChild, subscriber as _subscriber, inConditionalScope as _inConditionalScope, closure as _closure, createRenderer as _createRenderer, register as _register, conditional as _conditional, source as _source, queueHydrate as _queueHydrate, derivation as _derivation, inLoopScope as _inLoopScope, loop as _loop, destructureSources as _destructureSources, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; import { setup as _comments2, attrs as _comments_attrs, template as _comments_template, walks as _comments_walks } from "./comments.marko"; const _expr_comment_id$ifBody = /* @__PURE__ */_subscriber([_inChild(_comments_attrs, "#childScope/0")], 2, (_scope, comment = _scope._["comment"], id = _scope._["id"]) => _setSource(_scope["#childScope/0"], _comments_attrs, { comments: comment.comments, @@ -9,7 +9,7 @@ const _comment$ifBody = /* @__PURE__ */_closure(1, "comment", [_expr_comment_id$ const _setup$ifBody = _scope => { _comments2(_scope["#childScope/0"]); }; -const _ifBody = /* @__PURE__ */_createRenderer(`${_comments_template}`, /* beginChild, _comments_walks, endChild */`/${_comments_walks}&`, _setup$ifBody, [_comment$ifBody, _id$ifBody]); +const _ifBody = _register("packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/components/comments.marko_2_renderer", /* @__PURE__ */_createRenderer(`${_comments_template}`, /* beginChild, _comments_walks, endChild */`/${_comments_walks}&`, _setup$ifBody, [_comment$ifBody, _id$ifBody])); const _if$forBody = /* @__PURE__ */_conditional("#text/4", 1, (_scope, comment = _scope["comment"]) => comment.comments ? _ifBody : null); const _hydrate_open$forBody = _register("packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/components/comments.marko_1_open", _scope => _on(_scope["#button/2"], "click", function () { const open = _scope["open"]; diff --git a/packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/html.expected/components/comments.js b/packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/html.expected/components/comments.js index f0d8d1592..85f2655d0 100644 --- a/packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/html.expected/components/comments.js +++ b/packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/html.expected/components/comments.js @@ -1,36 +1,46 @@ -import { write as _write, attr as _attr, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, maybeFlush as _maybeFlush, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; +import { write as _write, attr as _attr, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, nextScopeId as _nextScopeId, SYMBOL_OWNER as _SYMBOL_OWNER, writeHydrateScope as _writeHydrateScope, register as _register, markHydrateControlSingleNodeEnd as _markHydrateControlSingleNodeEnd, writeHydrateCall as _writeHydrateCall, maybeFlush as _maybeFlush, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _comments from "./comments.marko"; const _renderer = ({ comments, path = "c" }, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
    "); let _i = 0; for (const comment of comments) { let i = _i++; - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); const id = `${path}-${i}`; const open = true; - _write(`${_escapeXML(comment.text)}${_markHydrateNode(_scope, "#text/1")}${_markHydrateNode(_scope, "#button/2")}`); + _write(`${_escapeXML(comment.text)}${_markHydrateNode(_scope1_, "#text/1")}${_markHydrateNode(_scope1_, "#button/2")}`); + let _ifScopeId; + const _ifScope = {}, + _ifRenderer = () => {}; if (comment.comments) { - const _scope = _nextScopeId(); + const _scope2_ = _nextScopeId(); _comments({ comments: comment.comments, path: id, renderBody() { - const _scope = _nextScopeId(); + const _scope3_ = _nextScopeId(); } }); + _writeHydrateScope(_scope2_, Object.assign(_ifScope, { + [_SYMBOL_OWNER]: _scope1_ + })); + _register(_ifRenderer, "packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/components/comments.marko_2_renderer"); + _ifScopeId = _scope2_; } - _write(`${_markHydrateNode(_scope, "#li/0")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/components/comments.marko_1_open"); - _writeHydrateScope(_scope, { - "open": open + _write(`${_markHydrateControlSingleNodeEnd(_scope1_, "#text/4", _ifScopeId)}${_markHydrateNode(_scope1_, "#li/0")}`); + _writeHydrateCall(_scope1_, "packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/components/comments.marko_1_open"); + _writeHydrateScope(_scope1_, { + "open": open, + "#text/4!": _ifScope, + "#text/4(": _ifRenderer }); _maybeFlush(); } - _write(`
${_markHydrateNode(_scope, "#ul/0")}`); + _write(`${_markHydrateNode(_scope0_, "#ul/0")}`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/html.expected/template.js index 57a903db6..37d7a8b1d 100644 --- a/packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/html.expected/template.js @@ -1,11 +1,11 @@ import { nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _comments from "./components/comments.marko"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _comments({ ...input, renderBody() { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); } }); }; diff --git a/packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/ssr.expected.md b/packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/ssr.expected.md index 3b1695a8b..a4a2b13e1 100644 --- a/packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/ssr.expected.md +++ b/packages/translator/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/ssr.expected.md @@ -1,5 +1,5 @@ # Write -
  • Hello World
    • testing 123
  • Goodbye World
+
  • Hello World
    • testing 123
  • Goodbye World
# Render "End" @@ -33,10 +33,12 @@ + +
  • +
  • @@ -85,8 +88,10 @@ inserted #document/html0/body1/ul0/li0/ul3/li0/button1 inserted #document/html0/body1/ul0/li0/ul3/li0/button1/#text0 inserted #document/html0/body1/ul0/li0/ul3/li0/button1/#comment1 inserted #document/html0/body1/ul0/li0/ul3/li0/#comment2 +inserted #document/html0/body1/ul0/li0/ul3/li0/#comment3 inserted #document/html0/body1/ul0/li0/ul3/#comment1 inserted #document/html0/body1/ul0/li0/#comment4 +inserted #document/html0/body1/ul0/li0/#comment5 inserted #document/html0/body1/ul0/#comment1 inserted #document/html0/body1/ul0/li2 inserted #document/html0/body1/ul0/li2/span0 @@ -96,6 +101,7 @@ inserted #document/html0/body1/ul0/li2/button1 inserted #document/html0/body1/ul0/li2/button1/#text0 inserted #document/html0/body1/ul0/li2/button1/#comment1 inserted #document/html0/body1/ul0/li2/#comment2 +inserted #document/html0/body1/ul0/li2/#comment3 inserted #document/html0/body1/ul0/#comment3 inserted #document/html0/body1/#comment1 inserted #document/html0/body1/script2 diff --git a/packages/translator/src/__tests__/fixtures/basic-layout/__snapshots__/html.expected/components/layout.js b/packages/translator/src/__tests__/fixtures/basic-layout/__snapshots__/html.expected/components/layout.js index f9a545266..1f7b55b20 100644 --- a/packages/translator/src/__tests__/fixtures/basic-layout/__snapshots__/html.expected/components/layout.js +++ b/packages/translator/src/__tests__/fixtures/basic-layout/__snapshots__/html.expected/components/layout.js @@ -2,7 +2,7 @@ import { write as _write, dynamicTag as _dynamicTag, nextScopeId as _nextScopeId const _renderer = ({ renderBody }, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write(""); _dynamicTag(renderBody, null); _write(""); diff --git a/packages/translator/src/__tests__/fixtures/basic-layout/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-layout/__snapshots__/html.expected/template.js index 01a1caa50..3e4bafa69 100644 --- a/packages/translator/src/__tests__/fixtures/basic-layout/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-layout/__snapshots__/html.expected/template.js @@ -3,11 +3,11 @@ import _layout from "./components/layout.marko"; const _renderer = ({ name }, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _layout({ renderBody() { - const _scope = _nextScopeId(); - _write(`

    Hello ${_escapeXML(name)}${_markHydrateNode(_scope, "#text/0")}

    `); + const _scope1_ = _nextScopeId(); + _write(`

    Hello ${_escapeXML(name)}${_markHydrateNode(_scope1_, "#text/0")}

    `); } }); }; diff --git a/packages/translator/src/__tests__/fixtures/basic-nested-scope-for/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-nested-scope-for/__snapshots__/html.expected/template.js index 3a85b8741..62fd4f8f1 100644 --- a/packages/translator/src/__tests__/fixtures/basic-nested-scope-for/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-nested-scope-for/__snapshots__/html.expected/template.js @@ -1,12 +1,12 @@ import { attr as _attr, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, maybeFlush as _maybeFlush, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const selected = 0; for (const num of [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) { - const _scope = _nextScopeId(); - _write(`${_escapeXML(num)}${_markHydrateNode(_scope, "#text/1")}${_markHydrateNode(_scope, "#button/0")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-nested-scope-for/template.marko_1_num"); - _writeHydrateScope(_scope, { + const _scope1_ = _nextScopeId(); + _write(`${_escapeXML(num)}${_markHydrateNode(_scope1_, "#text/1")}${_markHydrateNode(_scope1_, "#button/0")}`); + _writeHydrateCall(_scope1_, "packages/translator/src/__tests__/fixtures/basic-nested-scope-for/template.marko_1_num"); + _writeHydrateScope(_scope1_, { "num": num }); _maybeFlush(); diff --git a/packages/translator/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/dom.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/dom.expected/template.js index 2127cc343..35b0f2816 100644 --- a/packages/translator/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/dom.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/dom.expected/template.js @@ -1,6 +1,6 @@ import { setSource as _setSource, on as _on, queueSource as _queueSource, data as _data, inConditionalScope as _inConditionalScope, closure as _closure, createRenderer as _createRenderer, register as _register, queueHydrate as _queueHydrate, conditional as _conditional, source as _source, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; const _clickCount$elseBody = /* @__PURE__ */_closure(1, "clickCount", [], (_scope, clickCount) => _data(_scope["#text/0"], clickCount)); -const _elseBody = /* @__PURE__ */_createRenderer("The button was clicked times.", /* next(1), over(1), replace */"Db%", null, [_clickCount$elseBody]); +const _elseBody = _register("packages/translator/src/__tests__/fixtures/basic-nested-scope-if/template.marko_2_renderer", /* @__PURE__ */_createRenderer("The button was clicked times.", /* next(1), over(1), replace */"Db%", null, [_clickCount$elseBody])); const _hydrate_clickCount$ifBody = _register("packages/translator/src/__tests__/fixtures/basic-nested-scope-if/template.marko_1_clickCount", _scope => _on(_scope["#button/0"], "click", function () { const clickCount = _scope._["clickCount"]; _queueSource(_scope._, _clickCount, clickCount + 1); @@ -9,7 +9,7 @@ const _clickCount$ifBody = /* @__PURE__ */_closure(1, "clickCount", [], (_scope, _data(_scope["#text/1"], clickCount); _queueHydrate(_scope, _hydrate_clickCount$ifBody); }); -const _ifBody = /* @__PURE__ */_createRenderer("", /* get, next(1), get */" D ", null, [_clickCount$ifBody]); +const _ifBody = _register("packages/translator/src/__tests__/fixtures/basic-nested-scope-if/template.marko_1_renderer", /* @__PURE__ */_createRenderer("", /* get, next(1), get */" D ", null, [_clickCount$ifBody])); const _if = /* @__PURE__ */_conditional("#text/0", 1, (_scope, clickCount = _scope["clickCount"]) => clickCount < 3 ? _ifBody : _elseBody); const _clickCount = /* @__PURE__ */_source("clickCount", [_if, /* @__PURE__ */_inConditionalScope(_clickCount$elseBody, "#text/0"), /* @__PURE__ */_inConditionalScope(_clickCount$ifBody, "#text/0")]); const _setup = _scope => { diff --git a/packages/translator/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/html.expected/template.js index 55c3d5e93..254d5ae82 100644 --- a/packages/translator/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/html.expected/template.js @@ -1,20 +1,35 @@ -import { write as _write, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; +import { write as _write, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, SYMBOL_OWNER as _SYMBOL_OWNER, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, register as _register, markHydrateControlSingleNodeEnd as _markHydrateControlSingleNodeEnd, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const clickCount = 0; _write("
    "); + let _ifScopeId; + const _ifScope = {}, + _ifRenderer = () => {}; if (clickCount < 3) { - const _scope = _nextScopeId(); - _write(`${_markHydrateNode(_scope, "#button/0")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-nested-scope-if/template.marko_1_clickCount"); - _writeHydrateScope(_scope, { - "clickCount": clickCount - }); + const _scope1_ = _nextScopeId(); + _write(`${_markHydrateNode(_scope1_, "#button/0")}`); + _writeHydrateCall(_scope1_, "packages/translator/src/__tests__/fixtures/basic-nested-scope-if/template.marko_1_clickCount"); + _writeHydrateScope(_scope1_, Object.assign(_ifScope, { + "clickCount": clickCount, + [_SYMBOL_OWNER]: _scope0_ + })); + _register(_ifRenderer, "packages/translator/src/__tests__/fixtures/basic-nested-scope-if/template.marko_1_renderer"); + _ifScopeId = _scope1_; } else { - const _scope = _nextScopeId(); - _write(`The button was clicked ${_escapeXML(clickCount)}${_markHydrateNode(_scope, "#text/0")} times.`); + const _scope2_ = _nextScopeId(); + _write(`The button was clicked ${_escapeXML(clickCount)}${_markHydrateNode(_scope2_, "#text/0")} times.`); + _writeHydrateScope(_scope2_, Object.assign(_ifScope, { + [_SYMBOL_OWNER]: _scope0_ + })); + _register(_ifRenderer, "packages/translator/src/__tests__/fixtures/basic-nested-scope-if/template.marko_2_renderer"); + _ifScopeId = _scope2_; } - _write("
    "); + _write(`${_markHydrateControlSingleNodeEnd(_scope0_, "#text/0", _ifScopeId)}`); + _writeHydrateScope(_scope0_, { + "#text/0!": _ifScope, + "#text/0(": _ifRenderer + }); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/basic-push-pop-list/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-push-pop-list/__snapshots__/html.expected/template.js index 948a89463..69665b18e 100644 --- a/packages/translator/src/__tests__/fixtures/basic-push-pop-list/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-push-pop-list/__snapshots__/html.expected/template.js @@ -1,18 +1,18 @@ import { write as _write, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, nextScopeId as _nextScopeId, maybeFlush as _maybeFlush, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const id = 0; const items = []; _write("
    "); for (const item of items) { - const _scope = _nextScopeId(); - _write(`${_escapeXML(item)}${_markHydrateNode(_scope, "#text/0")}`); + const _scope1_ = _nextScopeId(); + _write(`${_escapeXML(item)}${_markHydrateNode(_scope1_, "#text/0")}`); _maybeFlush(); } - _write(`${_markHydrateNode(_scope, "#button/1")}${_markHydrateNode(_scope, "#button/2")}
    `); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-push-pop-list/template.marko_0_items"); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-push-pop-list/template.marko_0_id_items"); - _writeHydrateScope(_scope, { + _write(`${_markHydrateNode(_scope0_, "#button/1")}${_markHydrateNode(_scope0_, "#button/2")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-push-pop-list/template.marko_0_items"); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-push-pop-list/template.marko_0_id_items"); + _writeHydrateScope(_scope0_, { "id": id, "items": items }); diff --git a/packages/translator/src/__tests__/fixtures/basic-scriptlet/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-scriptlet/__snapshots__/html.expected/template.js index c3d9b650a..abab91bbd 100644 --- a/packages/translator/src/__tests__/fixtures/basic-scriptlet/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-scriptlet/__snapshots__/html.expected/template.js @@ -1,11 +1,11 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const clickCount = 0; const doubleCount = clickCount * 2; - _write(`
    ${_markHydrateNode(_scope, "#button/0")}
    `); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-scriptlet/template.marko_0_clickCount"); - _writeHydrateScope(_scope, { + _write(`
    ${_markHydrateNode(_scope0_, "#button/0")}
    `); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-scriptlet/template.marko_0_clickCount"); + _writeHydrateScope(_scope0_, { "clickCount": clickCount }); }; diff --git a/packages/translator/src/__tests__/fixtures/basic-shared-node-ref/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-shared-node-ref/__snapshots__/html.expected/template.js index d5a80adbe..8c42dfb15 100644 --- a/packages/translator/src/__tests__/fixtures/basic-shared-node-ref/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-shared-node-ref/__snapshots__/html.expected/template.js @@ -1,18 +1,18 @@ import { attr as _attr, write as _write, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, nextScopeId as _nextScopeId, maybeFlush as _maybeFlush, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const open = true; const list = [1, 2, 3]; _write(``); for (const x of list) { - const _scope = _nextScopeId(); - _write(`
  • ${_escapeXML(x)}${_markHydrateNode(_scope, "#text/0")}
  • `); + const _scope1_ = _nextScopeId(); + _write(`
  • ${_escapeXML(x)}${_markHydrateNode(_scope1_, "#text/0")}
  • `); _maybeFlush(); } - _write(`${_markHydrateNode(_scope, "#ul/0")}${_markHydrateNode(_scope, "#button/1")}${_markHydrateNode(_scope, "#button/2")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-shared-node-ref/template.marko_0_list"); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-shared-node-ref/template.marko_0_open"); - _writeHydrateScope(_scope, { + _write(`${_markHydrateNode(_scope0_, "#ul/0")}${_markHydrateNode(_scope0_, "#button/1")}${_markHydrateNode(_scope0_, "#button/2")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-shared-node-ref/template.marko_0_list"); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-shared-node-ref/template.marko_0_open"); + _writeHydrateScope(_scope0_, { "open": open, "list": list }); diff --git a/packages/translator/src/__tests__/fixtures/basic-static/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-static/__snapshots__/html.expected/template.js index 853e162b1..b68de132a 100644 --- a/packages/translator/src/__tests__/fixtures/basic-static/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-static/__snapshots__/html.expected/template.js @@ -1,7 +1,7 @@ const x = 1; import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
    1
    "); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/basic-toggle-show/__snapshots__/dom.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-toggle-show/__snapshots__/dom.expected/template.js index 897a1f984..3be9b7aed 100644 --- a/packages/translator/src/__tests__/fixtures/basic-toggle-show/__snapshots__/dom.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-toggle-show/__snapshots__/dom.expected/template.js @@ -1,5 +1,5 @@ -import { setSource as _setSource, on as _on, queueSource as _queueSource, createRenderer as _createRenderer, conditional as _conditional, source as _source, register as _register, queueHydrate as _queueHydrate, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; -const _ifBody = /* @__PURE__ */_createRenderer("Hello!", ""); +import { setSource as _setSource, on as _on, queueSource as _queueSource, createRenderer as _createRenderer, register as _register, conditional as _conditional, source as _source, queueHydrate as _queueHydrate, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; +const _ifBody = _register("packages/translator/src/__tests__/fixtures/basic-toggle-show/template.marko_1_renderer", /* @__PURE__ */_createRenderer("Hello!", "")); const _if = /* @__PURE__ */_conditional("#text/0", 1, (_scope, show = _scope["show"]) => show ? _ifBody : null); const _hydrate_show = _register("packages/translator/src/__tests__/fixtures/basic-toggle-show/template.marko_0_show", _scope => _on(_scope["#button/1"], "click", function () { const show = _scope["show"]; diff --git a/packages/translator/src/__tests__/fixtures/basic-toggle-show/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-toggle-show/__snapshots__/html.expected/template.js index 0579590af..467430476 100644 --- a/packages/translator/src/__tests__/fixtures/basic-toggle-show/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-toggle-show/__snapshots__/html.expected/template.js @@ -1,16 +1,26 @@ -import { write as _write, nextScopeId as _nextScopeId, markHydrateNode as _markHydrateNode, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; +import { write as _write, SYMBOL_OWNER as _SYMBOL_OWNER, nextScopeId as _nextScopeId, writeHydrateScope as _writeHydrateScope, register as _register, markHydrateControlSingleNodeEnd as _markHydrateControlSingleNodeEnd, markHydrateNode as _markHydrateNode, writeHydrateCall as _writeHydrateCall, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const show = true; _write("
    "); + let _ifScopeId; + const _ifScope = {}, + _ifRenderer = () => {}; if (show) { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); _write("Hello!"); + _writeHydrateScope(_scope1_, Object.assign(_ifScope, { + [_SYMBOL_OWNER]: _scope0_ + })); + _register(_ifRenderer, "packages/translator/src/__tests__/fixtures/basic-toggle-show/template.marko_1_renderer"); + _ifScopeId = _scope1_; } - _write(`${_markHydrateNode(_scope, "#button/1")}
    `); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-toggle-show/template.marko_0_show"); - _writeHydrateScope(_scope, { - "show": show + _write(`${_markHydrateControlSingleNodeEnd(_scope0_, "#text/0", _ifScopeId)}${_markHydrateNode(_scope0_, "#button/1")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-toggle-show/template.marko_0_show"); + _writeHydrateScope(_scope0_, { + "show": show, + "#text/0!": _ifScope, + "#text/0(": _ifRenderer }); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/basic-unused-ref/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/basic-unused-ref/__snapshots__/html.expected/template.js index a262350cf..1189fe6cc 100644 --- a/packages/translator/src/__tests__/fixtures/basic-unused-ref/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/basic-unused-ref/__snapshots__/html.expected/template.js @@ -1,12 +1,12 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const unused_1 = 123; const unused_2 = 456; const clickCount = 0; - _write(`
    ${_markHydrateNode(_scope, "#button/0")}
    `); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/basic-unused-ref/template.marko_0_clickCount"); - _writeHydrateScope(_scope, { + _write(`
    ${_markHydrateNode(_scope0_, "#button/0")}
    `); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/basic-unused-ref/template.marko_0_clickCount"); + _writeHydrateScope(_scope0_, { "clickCount": clickCount }); }; diff --git a/packages/translator/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/dom.expected/template.js b/packages/translator/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/dom.expected/template.js index 0eef90d65..6445334dd 100644 --- a/packages/translator/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/dom.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/dom.expected/template.js @@ -1,6 +1,6 @@ -import { setSource as _setSource, on as _on, queueSource as _queueSource, data as _data, inConditionalScope as _inConditionalScope, closure as _closure, createRenderer as _createRenderer, conditional as _conditional, source as _source, register as _register, queueHydrate as _queueHydrate, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; +import { setSource as _setSource, on as _on, queueSource as _queueSource, data as _data, inConditionalScope as _inConditionalScope, closure as _closure, createRenderer as _createRenderer, register as _register, conditional as _conditional, source as _source, queueHydrate as _queueHydrate, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; const _message$ifBody = /* @__PURE__ */_closure(1, "message", [], (_scope, message) => _data(_scope["#text/0"], message)); -const _ifBody = /* @__PURE__ */_createRenderer(" ", /* next(1), get */"D ", null, [_message$ifBody]); +const _ifBody = _register("packages/translator/src/__tests__/fixtures/batched-updates-cleanup/template.marko_1_renderer", /* @__PURE__ */_createRenderer(" ", /* next(1), get */"D ", null, [_message$ifBody])); const _if = /* @__PURE__ */_conditional("#text/1", 1, (_scope, show = _scope["show"]) => show ? _ifBody : null); const _message = /* @__PURE__ */_source("message", [/* @__PURE__ */_inConditionalScope(_message$ifBody, "#text/1")]); const _hydrate_show = _register("packages/translator/src/__tests__/fixtures/batched-updates-cleanup/template.marko_0_show", _scope => _on(_scope["#button/0"], "click", function () { diff --git a/packages/translator/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/html.expected/template.js index e8b8b560b..21845f8e4 100644 --- a/packages/translator/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/html.expected/template.js @@ -1,16 +1,27 @@ -import { markHydrateNode as _markHydrateNode, write as _write, escapeXML as _escapeXML, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; +import { markHydrateNode as _markHydrateNode, write as _write, escapeXML as _escapeXML, SYMBOL_OWNER as _SYMBOL_OWNER, nextScopeId as _nextScopeId, writeHydrateScope as _writeHydrateScope, register as _register, markHydrateControlSingleNodeEnd as _markHydrateControlSingleNodeEnd, writeHydrateCall as _writeHydrateCall, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const show = true; const message = "hi"; - _write(`${_markHydrateNode(_scope, "#button/0")}`); + _write(`${_markHydrateNode(_scope0_, "#button/0")}`); + let _ifScopeId; + const _ifScope = {}, + _ifRenderer = () => {}; if (show) { - const _scope = _nextScopeId(); - _write(`${_escapeXML(message)}${_markHydrateNode(_scope, "#text/0")}`); + const _scope1_ = _nextScopeId(); + _write(`${_escapeXML(message)}${_markHydrateNode(_scope1_, "#text/0")}`); + _writeHydrateScope(_scope1_, Object.assign(_ifScope, { + [_SYMBOL_OWNER]: _scope0_ + })); + _register(_ifRenderer, "packages/translator/src/__tests__/fixtures/batched-updates-cleanup/template.marko_1_renderer"); + _ifScopeId = _scope1_; } - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/batched-updates-cleanup/template.marko_0_show"); - _writeHydrateScope(_scope, { - "show": show + _write(`${_markHydrateControlSingleNodeEnd(_scope0_, "#text/1", _ifScopeId)}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/batched-updates-cleanup/template.marko_0_show"); + _writeHydrateScope(_scope0_, { + "show": show, + "#text/1!": _ifScope, + "#text/1(": _ifRenderer }); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/batched-updates/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/batched-updates/__snapshots__/html.expected/template.js index 6783de0f2..96f632898 100644 --- a/packages/translator/src/__tests__/fixtures/batched-updates/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/batched-updates/__snapshots__/html.expected/template.js @@ -1,11 +1,11 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const a = 0; const b = 0; - _write(`${_markHydrateNode(_scope, "#button/0")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/batched-updates/template.marko_0_a_b"); - _writeHydrateScope(_scope, { + _write(`${_markHydrateNode(_scope0_, "#button/0")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/batched-updates/template.marko_0_a_b"); + _writeHydrateScope(_scope0_, { "a": a, "b": b }); diff --git a/packages/translator/src/__tests__/fixtures/cdata/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/cdata/__snapshots__/html.expected/template.js index 2e0232919..e33ef6a49 100644 --- a/packages/translator/src/__tests__/fixtures/cdata/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/cdata/__snapshots__/html.expected/template.js @@ -1,6 +1,6 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
    Here is a CDATA section: & ]]> with all kinds of unescaped text.
    "); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/comments/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/comments/__snapshots__/html.expected/template.js index 83897dbbc..628b1ecd4 100644 --- a/packages/translator/src/__tests__/fixtures/comments/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/comments/__snapshots__/html.expected/template.js @@ -1,6 +1,6 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
    "); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/html.expected/components/display-intersection.js b/packages/translator/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/html.expected/components/display-intersection.js index da39bd07f..33251bf20 100644 --- a/packages/translator/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/html.expected/components/display-intersection.js +++ b/packages/translator/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/html.expected/components/display-intersection.js @@ -2,9 +2,9 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as const _renderer = ({ value }, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const dummy = {}; - _write(`
    ${_escapeXML((dummy, value))}${_markHydrateNode(_scope, "#text/0")}
    `); + _write(`
    ${_escapeXML((dummy, value))}${_markHydrateNode(_scope0_, "#text/0")}
    `); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/html.expected/template.js index 438c420ed..e0869ccae 100644 --- a/packages/translator/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/html.expected/template.js @@ -1,17 +1,17 @@ import { nextScopeId as _nextScopeId, markHydrateNode as _markHydrateNode, write as _write, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _displayIntersection from "./components/display-intersection.marko"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const count = 0; _displayIntersection({ value: count, renderBody() { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); } }); - _write(`${_markHydrateNode(_scope, "#button/1")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/component-attrs-intersection/template.marko_0_count"); - _writeHydrateScope(_scope, { + _write(`${_markHydrateNode(_scope0_, "#button/1")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/component-attrs-intersection/template.marko_0_count"); + _writeHydrateScope(_scope0_, { "count": count }); }; diff --git a/packages/translator/src/__tests__/fixtures/const-tag/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/const-tag/__snapshots__/html.expected/template.js index 6419ad822..9bd503b42 100644 --- a/packages/translator/src/__tests__/fixtures/const-tag/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/const-tag/__snapshots__/html.expected/template.js @@ -1,9 +1,9 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const x = 1; const y = 1; - _write(`
    ${_escapeXML(x)}${_markHydrateNode(_scope, "#text/0")}
    ${_escapeXML(y)}${_markHydrateNode(_scope, "#text/1")}`); + _write(`
    ${_escapeXML(x)}${_markHydrateNode(_scope0_, "#text/0")}
    ${_escapeXML(y)}${_markHydrateNode(_scope0_, "#text/1")}`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/context-tag-derivation/__snapshots__/html.expected/components/child.js b/packages/translator/src/__tests__/fixtures/context-tag-derivation/__snapshots__/html.expected/components/child.js index d9b403407..db05972eb 100644 --- a/packages/translator/src/__tests__/fixtures/context-tag-derivation/__snapshots__/html.expected/components/child.js +++ b/packages/translator/src/__tests__/fixtures/context-tag-derivation/__snapshots__/html.expected/components/child.js @@ -1,10 +1,10 @@ import { write as _write, getInContext as _getInContext, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
    "); const x = _getInContext("packages/translator/src/__tests__/fixtures/context-tag-derivation/template.marko"); const y = x; - _write(`${_escapeXML(y)}${_markHydrateNode(_scope, "#text/0")}
    `); + _write(`${_escapeXML(y)}${_markHydrateNode(_scope0_, "#text/0")}`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/context-tag-derivation/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/context-tag-derivation/__snapshots__/html.expected/template.js index 362ccf83c..7d8603bc4 100644 --- a/packages/translator/src/__tests__/fixtures/context-tag-derivation/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/context-tag-derivation/__snapshots__/html.expected/template.js @@ -1,11 +1,12 @@ import { pushContext as _pushContext, nextScopeId as _nextScopeId, popContext as _popContext, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _child from "./components/child.marko"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _pushContext("packages/translator/src/__tests__/fixtures/context-tag-derivation/template.marko", 123); + const _scope1_ = _nextScopeId(); _child({ renderBody() { - const _scope = _nextScopeId(); + const _scope2_ = _nextScopeId(); } }); _popContext(); diff --git a/packages/translator/src/__tests__/fixtures/context-tag-derivation/__snapshots__/ssr.expected.md b/packages/translator/src/__tests__/fixtures/context-tag-derivation/__snapshots__/ssr.expected.md index edcd83db3..779aeb2bd 100644 --- a/packages/translator/src/__tests__/fixtures/context-tag-derivation/__snapshots__/ssr.expected.md +++ b/packages/translator/src/__tests__/fixtures/context-tag-derivation/__snapshots__/ssr.expected.md @@ -1,5 +1,5 @@ # Write -
    123
    +
    123
    # Render "End" @@ -9,7 +9,7 @@
    123 - +
    diff --git a/packages/translator/src/__tests__/fixtures/context-tag-from-global/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/context-tag-from-global/__snapshots__/html.expected/template.js index a4b2adbfc..b9d45ced8 100644 --- a/packages/translator/src/__tests__/fixtures/context-tag-from-global/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/context-tag-from-global/__snapshots__/html.expected/template.js @@ -1,11 +1,11 @@ import { write as _write, getInContext as _getInContext, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
    "); const { x } = _getInContext("$"); - _write(`${_escapeXML(x)}${_markHydrateNode(_scope, "#text/0")}
    `); + _write(`${_escapeXML(x)}${_markHydrateNode(_scope0_, "#text/0")}`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/context-tag-from-relative-path/__snapshots__/html.expected/other.js b/packages/translator/src/__tests__/fixtures/context-tag-from-relative-path/__snapshots__/html.expected/other.js index 7b8063056..a444cebc2 100644 --- a/packages/translator/src/__tests__/fixtures/context-tag-from-relative-path/__snapshots__/html.expected/other.js +++ b/packages/translator/src/__tests__/fixtures/context-tag-from-relative-path/__snapshots__/html.expected/other.js @@ -1,6 +1,6 @@ import { write as _write, dynamicTag as _dynamicTag, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write(""); _dynamicTag(input.renderBody, null); _write(""); diff --git a/packages/translator/src/__tests__/fixtures/context-tag-from-relative-path/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/context-tag-from-relative-path/__snapshots__/html.expected/template.js index 47e1e3272..ca9346fbf 100644 --- a/packages/translator/src/__tests__/fixtures/context-tag-from-relative-path/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/context-tag-from-relative-path/__snapshots__/html.expected/template.js @@ -1,13 +1,13 @@ import Other from "./other.marko"; import { write as _write, getInContext as _getInContext, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); Other({ renderBody() { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); _write(""); const message = _getInContext("packages/translator/src/__tests__/fixtures/context-tag-from-relative-path/other.marko"); - _write(`${_escapeXML(message)}${_markHydrateNode(_scope, "#text/0")}`); + _write(`${_escapeXML(message)}${_markHydrateNode(_scope1_, "#text/0")}`); } }); }; diff --git a/packages/translator/src/__tests__/fixtures/context-tag-from-self/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/context-tag-from-self/__snapshots__/html.expected/template.js index 75bc7eaec..61f3c1f3e 100644 --- a/packages/translator/src/__tests__/fixtures/context-tag-from-self/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/context-tag-from-self/__snapshots__/html.expected/template.js @@ -1,11 +1,12 @@ -import { write as _write, pushContext as _pushContext, getInContext as _getInContext, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, popContext as _popContext, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; +import { write as _write, pushContext as _pushContext, getInContext as _getInContext, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, nextScopeId as _nextScopeId, popContext as _popContext, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
    "); _pushContext("packages/translator/src/__tests__/fixtures/context-tag-from-self/template.marko", 1); + const _scope1_ = _nextScopeId(); _write(""); const x = _getInContext("packages/translator/src/__tests__/fixtures/context-tag-from-self/template.marko"); - _write(`${_escapeXML(x)}${_markHydrateNode(_scope, "#text/0")}`); + _write(`${_escapeXML(x)}${_markHydrateNode(_scope1_, "#text/0")}`); _popContext(); _write("
    "); }; diff --git a/packages/translator/src/__tests__/fixtures/context-tag-from-self/__snapshots__/ssr.expected.md b/packages/translator/src/__tests__/fixtures/context-tag-from-self/__snapshots__/ssr.expected.md index 36f45c315..374babc65 100644 --- a/packages/translator/src/__tests__/fixtures/context-tag-from-self/__snapshots__/ssr.expected.md +++ b/packages/translator/src/__tests__/fixtures/context-tag-from-self/__snapshots__/ssr.expected.md @@ -1,5 +1,5 @@ # Write -
    1
    +
    1
    # Render "End" @@ -10,7 +10,7 @@
    1 - +
    diff --git a/packages/translator/src/__tests__/fixtures/context-tag-from-tag-name/__snapshots__/html.expected/components/other.js b/packages/translator/src/__tests__/fixtures/context-tag-from-tag-name/__snapshots__/html.expected/components/other.js index 1a6067094..af546e571 100644 --- a/packages/translator/src/__tests__/fixtures/context-tag-from-tag-name/__snapshots__/html.expected/components/other.js +++ b/packages/translator/src/__tests__/fixtures/context-tag-from-tag-name/__snapshots__/html.expected/components/other.js @@ -1,7 +1,8 @@ -import { pushContext as _pushContext, dynamicTag as _dynamicTag, popContext as _popContext, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; +import { pushContext as _pushContext, dynamicTag as _dynamicTag, nextScopeId as _nextScopeId, popContext as _popContext, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _pushContext("packages/translator/src/__tests__/fixtures/context-tag-from-tag-name/components/other.marko", "Hello"); + const _scope1_ = _nextScopeId(); _dynamicTag(input.renderBody, null); _popContext(); }; diff --git a/packages/translator/src/__tests__/fixtures/context-tag-from-tag-name/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/context-tag-from-tag-name/__snapshots__/html.expected/template.js index c2beb2444..ef745fadd 100644 --- a/packages/translator/src/__tests__/fixtures/context-tag-from-tag-name/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/context-tag-from-tag-name/__snapshots__/html.expected/template.js @@ -1,13 +1,13 @@ import { write as _write, getInContext as _getInContext, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _other from "./components/other.marko"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _other({ renderBody() { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); _write(""); const message = _getInContext("packages/translator/src/__tests__/fixtures/context-tag-from-tag-name/components/other.marko"); - _write(`${_escapeXML(message)}${_markHydrateNode(_scope, "#text/0")}`); + _write(`${_escapeXML(message)}${_markHydrateNode(_scope1_, "#text/0")}`); } }); }; diff --git a/packages/translator/src/__tests__/fixtures/context-tag-from-tag-name/__snapshots__/ssr.expected.md b/packages/translator/src/__tests__/fixtures/context-tag-from-tag-name/__snapshots__/ssr.expected.md index f9f0b8ce8..5d4a03b90 100644 --- a/packages/translator/src/__tests__/fixtures/context-tag-from-tag-name/__snapshots__/ssr.expected.md +++ b/packages/translator/src/__tests__/fixtures/context-tag-from-tag-name/__snapshots__/ssr.expected.md @@ -1,5 +1,5 @@ # Write - Hello + Hello # Render "End" @@ -9,7 +9,7 @@ Hello - + diff --git a/packages/translator/src/__tests__/fixtures/context-tag-in-if/__snapshots__/dom.expected/template.js b/packages/translator/src/__tests__/fixtures/context-tag-in-if/__snapshots__/dom.expected/template.js index 037b0d962..76e0faf1f 100644 --- a/packages/translator/src/__tests__/fixtures/context-tag-in-if/__snapshots__/dom.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/context-tag-in-if/__snapshots__/dom.expected/template.js @@ -1,6 +1,6 @@ -import { setSource as _setSource, dynamicSubscribers as _dynamicSubscribers, initContextProvider as _initContextProvider, data as _data, on as _on, queueSource as _queueSource, contextClosure as _contextClosure, createRenderer as _createRenderer, conditional as _conditional, dynamicClosure as _dynamicClosure, derivation as _derivation, source as _source, register as _register, queueHydrate as _queueHydrate, notifySignal as _notifySignal, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; +import { setSource as _setSource, dynamicSubscribers as _dynamicSubscribers, initContextProvider as _initContextProvider, data as _data, on as _on, queueSource as _queueSource, contextClosure as _contextClosure, createRenderer as _createRenderer, register as _register, conditional as _conditional, dynamicClosure as _dynamicClosure, derivation as _derivation, source as _source, queueHydrate as _queueHydrate, notifySignal as _notifySignal, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; const _x$ifBody = _contextClosure("x", "packages/translator/src/__tests__/fixtures/context-tag-in-if/template.marko", [], (_scope, x) => _data(_scope["#text/0"], x)); -const _ifBody = /* @__PURE__ */_createRenderer(" ", /* next(1), get */"D ", null, [_x$ifBody]); +const _ifBody = _register("packages/translator/src/__tests__/fixtures/context-tag-in-if/template.marko_2_renderer", /* @__PURE__ */_createRenderer(" ", /* next(1), get */"D ", null, [_x$ifBody])); const _if$putBody = /* @__PURE__ */_conditional("#text/0", 1, (_scope, show = _scope._["show"]) => show ? _ifBody : null); const _show$putBody = _dynamicClosure(1, "show", [_if$putBody]); const _putBody = /* @__PURE__ */_createRenderer("", /* replace */"%", null, [_show$putBody]); diff --git a/packages/translator/src/__tests__/fixtures/context-tag-in-if/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/context-tag-in-if/__snapshots__/html.expected/template.js index c5270c006..6cb54ab68 100644 --- a/packages/translator/src/__tests__/fixtures/context-tag-in-if/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/context-tag-in-if/__snapshots__/html.expected/template.js @@ -1,19 +1,33 @@ -import { write as _write, pushContext as _pushContext, getInContext as _getInContext, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, nextScopeId as _nextScopeId, popContext as _popContext, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; +import { write as _write, pushContext as _pushContext, getInContext as _getInContext, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, SYMBOL_OWNER as _SYMBOL_OWNER, nextScopeId as _nextScopeId, writeHydrateScope as _writeHydrateScope, register as _register, markHydrateControlSingleNodeEnd as _markHydrateControlSingleNodeEnd, popContext as _popContext, writeHydrateCall as _writeHydrateCall, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const show = true; _write("
    "); _pushContext("packages/translator/src/__tests__/fixtures/context-tag-in-if/template.marko", 123); + const _scope1_ = _nextScopeId(); + let _ifScopeId; + const _ifScope = {}, + _ifRenderer = () => {}; if (show) { - const _scope = _nextScopeId(); + const _scope2_ = _nextScopeId(); _write(""); const x = _getInContext("packages/translator/src/__tests__/fixtures/context-tag-in-if/template.marko"); - _write(`${_escapeXML(x)}${_markHydrateNode(_scope, "#text/0")}`); + _write(`${_escapeXML(x)}${_markHydrateNode(_scope2_, "#text/0")}`); + _writeHydrateScope(_scope2_, Object.assign(_ifScope, { + [_SYMBOL_OWNER]: _scope1_ + })); + _register(_ifRenderer, "packages/translator/src/__tests__/fixtures/context-tag-in-if/template.marko_2_renderer"); + _ifScopeId = _scope2_; } + _write(`${_markHydrateControlSingleNodeEnd(_scope1_, "#text/0", _ifScopeId)}`); + _writeHydrateScope(_scope1_, { + "#text/0!": _ifScope, + "#text/0(": _ifRenderer + }); _popContext(); - _write(`${_markHydrateNode(_scope, "#button/1")}
    `); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/context-tag-in-if/template.marko_0_show"); - _writeHydrateScope(_scope, { + _write(`${_markHydrateNode(_scope0_, "#button/1")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/context-tag-in-if/template.marko_0_show"); + _writeHydrateScope(_scope0_, { "show": show }); }; diff --git a/packages/translator/src/__tests__/fixtures/context-tag-in-if/__snapshots__/ssr.expected.md b/packages/translator/src/__tests__/fixtures/context-tag-in-if/__snapshots__/ssr.expected.md index 3603aa0bf..4f79e9f43 100644 --- a/packages/translator/src/__tests__/fixtures/context-tag-in-if/__snapshots__/ssr.expected.md +++ b/packages/translator/src/__tests__/fixtures/context-tag-in-if/__snapshots__/ssr.expected.md @@ -1,5 +1,5 @@ # Write -
    123
    +
    123
    # Render "End" @@ -10,8 +10,9 @@
    123 - + +
    @@ -35,9 +36,10 @@ inserted #document/html0/body1/div0 inserted #document/html0/body1/div0/span0 inserted #document/html0/body1/div0/span0/#text0 inserted #document/html0/body1/div0/span0/#comment1 -inserted #document/html0/body1/div0/button1 -inserted #document/html0/body1/div0/button1/#text0 -inserted #document/html0/body1/div0/#comment2 +inserted #document/html0/body1/div0/#comment1 +inserted #document/html0/body1/div0/button2 +inserted #document/html0/body1/div0/button2/#text0 +inserted #document/html0/body1/div0/#comment3 inserted #document/html0/body1/script1 inserted #document/html0/body1/script1/#text0 ``` \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/context-tag-reactive/__snapshots__/html.expected/components/child.js b/packages/translator/src/__tests__/fixtures/context-tag-reactive/__snapshots__/html.expected/components/child.js index 17ed70d55..3c51d88bd 100644 --- a/packages/translator/src/__tests__/fixtures/context-tag-reactive/__snapshots__/html.expected/components/child.js +++ b/packages/translator/src/__tests__/fixtures/context-tag-reactive/__snapshots__/html.expected/components/child.js @@ -1,8 +1,8 @@ import { getInContext as _getInContext, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const x = _getInContext("packages/translator/src/__tests__/fixtures/context-tag-reactive/template.marko"); - _write(`
    ${_escapeXML(x)}${_markHydrateNode(_scope, "#text/0")}
    `); + _write(`
    ${_escapeXML(x)}${_markHydrateNode(_scope0_, "#text/0")}
    `); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/context-tag-reactive/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/context-tag-reactive/__snapshots__/html.expected/template.js index 43207cfee..8aac2bb38 100644 --- a/packages/translator/src/__tests__/fixtures/context-tag-reactive/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/context-tag-reactive/__snapshots__/html.expected/template.js @@ -1,18 +1,19 @@ import { pushContext as _pushContext, nextScopeId as _nextScopeId, popContext as _popContext, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _child from "./components/child.marko"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const x = 123; _pushContext("packages/translator/src/__tests__/fixtures/context-tag-reactive/template.marko", x); + const _scope1_ = _nextScopeId(); _child({ renderBody() { - const _scope = _nextScopeId(); + const _scope2_ = _nextScopeId(); } }); _popContext(); - _write(`${_markHydrateNode(_scope, "#button/1")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/context-tag-reactive/template.marko_0_x"); - _writeHydrateScope(_scope, { + _write(`${_markHydrateNode(_scope0_, "#button/1")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/context-tag-reactive/template.marko_0_x"); + _writeHydrateScope(_scope0_, { "x": x }); }; diff --git a/packages/translator/src/__tests__/fixtures/context-tag-reactive/__snapshots__/ssr.expected.md b/packages/translator/src/__tests__/fixtures/context-tag-reactive/__snapshots__/ssr.expected.md index d202b440f..9df136f99 100644 --- a/packages/translator/src/__tests__/fixtures/context-tag-reactive/__snapshots__/ssr.expected.md +++ b/packages/translator/src/__tests__/fixtures/context-tag-reactive/__snapshots__/ssr.expected.md @@ -1,5 +1,5 @@ # Write -
    123
    +
    123
    # Render "End" @@ -9,7 +9,7 @@
    123 - +
    ${_markHydrateNode(_scope, "#button/0")}`); + _write(`${_markHydrateNode(_scope0_, "#button/0")}`); const _return = x; - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/custom-tag-var/components/child.marko_0_x"); - _writeHydrateScope(_scope, { + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/custom-tag-var/components/child.marko_0_x"); + _writeHydrateScope(_scope0_, { "x": x, "/": _tagVar }); diff --git a/packages/translator/src/__tests__/fixtures/custom-tag-var/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/custom-tag-var/__snapshots__/html.expected/template.js index 805f28cbe..a055d6ea9 100644 --- a/packages/translator/src/__tests__/fixtures/custom-tag-var/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/custom-tag-var/__snapshots__/html.expected/template.js @@ -1,14 +1,14 @@ import { nextScopeId as _nextScopeId, register as _register, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _child from "./components/child.marko"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const data = _child({ renderBody() { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); } - }, _register(() => {}, "packages/translator/src/__tests__/fixtures/custom-tag-var/template.marko_0_data", _scope)); - _write(`
    ${_escapeXML(data)}${_markHydrateNode(_scope, "#text/1")}
    `); - _writeHydrateScope(_scope, {}); + }, _register(() => {}, "packages/translator/src/__tests__/fixtures/custom-tag-var/template.marko_0_data", _scope0_)); + _write(`
    ${_escapeXML(data)}${_markHydrateNode(_scope0_, "#text/1")}
    `); + _writeHydrateScope(_scope0_, {}); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/declaration/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/declaration/__snapshots__/html.expected/template.js index ef285ede5..654316f76 100644 --- a/packages/translator/src/__tests__/fixtures/declaration/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/declaration/__snapshots__/html.expected/template.js @@ -1,6 +1,6 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("Hello World"); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/doctype/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/doctype/__snapshots__/html.expected/template.js index 5e7657477..60c6a6af5 100644 --- a/packages/translator/src/__tests__/fixtures/doctype/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/doctype/__snapshots__/html.expected/template.js @@ -1,6 +1,6 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("Title of the documentThe content of the document......"); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/dynamic-event-handlers/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/dynamic-event-handlers/__snapshots__/html.expected/template.js index 009602193..9e85142af 100644 --- a/packages/translator/src/__tests__/fixtures/dynamic-event-handlers/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/dynamic-event-handlers/__snapshots__/html.expected/template.js @@ -1,10 +1,10 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const clickCount = 0; - _write(`${_markHydrateNode(_scope, "#button/0")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/dynamic-event-handlers/template.marko_0_clickCount"); - _writeHydrateScope(_scope, { + _write(`${_markHydrateNode(_scope0_, "#button/0")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/dynamic-event-handlers/template.marko_0_clickCount"); + _writeHydrateScope(_scope0_, { "clickCount": clickCount }); }; diff --git a/packages/translator/src/__tests__/fixtures/dynamic-native-dynamic-tag/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/dynamic-native-dynamic-tag/__snapshots__/html.expected/template.js index 5c3c99b3d..3ea2dff97 100644 --- a/packages/translator/src/__tests__/fixtures/dynamic-native-dynamic-tag/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/dynamic-native-dynamic-tag/__snapshots__/html.expected/template.js @@ -1,11 +1,11 @@ import { classAttr as _classAttr, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const tagName = "span"; const className = "A"; - _write(`<${tagName}${_classAttr(className)}>body content${_markHydrateNode(_scope, "#undefined/0")}${_markHydrateNode(_scope, "#button/1")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/dynamic-native-dynamic-tag/template.marko_0_tagName"); - _writeHydrateScope(_scope, { + _write(`<${tagName}${_classAttr(className)}>body content${_markHydrateNode(_scope0_, "#undefined/0")}${_markHydrateNode(_scope0_, "#button/1")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/dynamic-native-dynamic-tag/template.marko_0_tagName"); + _writeHydrateScope(_scope0_, { "tagName": tagName }); }; diff --git a/packages/translator/src/__tests__/fixtures/dynamic-tag-attr-signal/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/dynamic-tag-attr-signal/__snapshots__/html.expected/template.js index 26ce816b8..575acb212 100644 --- a/packages/translator/src/__tests__/fixtures/dynamic-tag-attr-signal/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/dynamic-tag-attr-signal/__snapshots__/html.expected/template.js @@ -1,10 +1,10 @@ import { classAttr as _classAttr, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const className = "A"; - _write(`paragraph

    ${_markHydrateNode(_scope, "#undefined/0")}${_markHydrateNode(_scope, "#button/1")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/dynamic-tag-attr-signal/template.marko_0_className"); - _writeHydrateScope(_scope, { + _write(`paragraph

    ${_markHydrateNode(_scope0_, "#undefined/0")}${_markHydrateNode(_scope0_, "#button/1")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/dynamic-tag-attr-signal/template.marko_0_className"); + _writeHydrateScope(_scope0_, { "className": className }); }; diff --git a/packages/translator/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/html.expected/components/child1.js b/packages/translator/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/html.expected/components/child1.js index 4f13463b1..3168afd3d 100644 --- a/packages/translator/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/html.expected/components/child1.js +++ b/packages/translator/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/html.expected/components/child1.js @@ -2,8 +2,8 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as const _renderer = ({ value }, _tagVar) => { - const _scope = _nextScopeId(); - _write(`
    Child 1 has ${_escapeXML(value)}${_markHydrateNode(_scope, "#text/0")}
    `); + const _scope0_ = _nextScopeId(); + _write(`
    Child 1 has ${_escapeXML(value)}${_markHydrateNode(_scope0_, "#text/0")}
    `); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/html.expected/components/child2.js b/packages/translator/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/html.expected/components/child2.js index 4cbbaefdc..d46f9eff5 100644 --- a/packages/translator/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/html.expected/components/child2.js +++ b/packages/translator/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/html.expected/components/child2.js @@ -2,8 +2,8 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as const _renderer = ({ value }, _tagVar) => { - const _scope = _nextScopeId(); - _write(`
    Child 2 has ${_escapeXML(value)}${_markHydrateNode(_scope, "#text/0")}
    `); + const _scope0_ = _nextScopeId(); + _write(`
    Child 2 has ${_escapeXML(value)}${_markHydrateNode(_scope0_, "#text/0")}
    `); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/html.expected/template.js index 3415bd5c7..2e81fc31f 100644 --- a/packages/translator/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/dynamic-tag-custom-tags/__snapshots__/html.expected/template.js @@ -2,18 +2,18 @@ import child1 from "./components/child1.marko"; import child2 from "./components/child2.marko"; import { nextScopeId as _nextScopeId, markHydrateNode as _markHydrateNode, write as _write, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const tagName = child1; const val = 3; tagName({ value: val, renderBody() { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); } }); - _write(`${_markHydrateNode(_scope, "#button/0")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/dynamic-tag-custom-tags/template.marko_0_tagName"); - _writeHydrateScope(_scope, { + _write(`${_markHydrateNode(_scope0_, "#button/0")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/dynamic-tag-custom-tags/template.marko_0_tagName"); + _writeHydrateScope(_scope0_, { "tagName": tagName }); }; diff --git a/packages/translator/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/html.expected/components/tag-a/index.js b/packages/translator/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/html.expected/components/tag-a/index.js index 860f890ac..9ee49872b 100644 --- a/packages/translator/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/html.expected/components/tag-a/index.js +++ b/packages/translator/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/html.expected/components/tag-a/index.js @@ -1,6 +1,6 @@ import { nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/html.expected/components/tag-b/index.js b/packages/translator/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/html.expected/components/tag-b/index.js index 860f890ac..9ee49872b 100644 --- a/packages/translator/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/html.expected/components/tag-b/index.js +++ b/packages/translator/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/html.expected/components/tag-b/index.js @@ -1,6 +1,6 @@ import { nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/html.expected/template.js index 0786cf5d6..cff7986a3 100644 --- a/packages/translator/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/dynamic-tag-name/__snapshots__/html.expected/template.js @@ -11,7 +11,7 @@ const _renderer = ({ level, other }, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _dynamicTag(renderBody, { class: ["a", "b"], other: other @@ -24,22 +24,22 @@ const _renderer = ({ if (_tagName) _write(`<${_tagName} class="a b"${_attr("other", other)}>`); if (_tagName) _write(``); const _tagName2 = show && "div"; - _write(`${_markHydrateNode(_scope, "#undefined/2")}`); + _write(`${_markHydrateNode(_scope0_, "#undefined/2")}`); if (_tagName2) _write(`<${_tagName2} class="a b"${_attr("other", other)}>`); if (_tagName2) _write(``); - _write(`${_markHydrateNode(_scope, "#undefined/3")}<${large ? "h1" : "h2"} class="a b"${_attr("other", other)}>${_markHydrateNode(_scope, "#undefined/4")}`); + _write(`${_markHydrateNode(_scope0_, "#undefined/3")}<${large ? "h1" : "h2"} class="a b"${_attr("other", other)}>${_markHydrateNode(_scope0_, "#undefined/4")}`); (showTagA ? tagA : tagB)({ class: ["a", "b"], other: other, class: ["a", "b"], other: other, renderBody() { - const _scope = _nextScopeId(); + const _scope2_ = _nextScopeId(); } }); const _tagName3 = showTagA && tagA; function _renderBody2() { - const _scope = _nextScopeId(); + const _scope3_ = _nextScopeId(); } if (_tagName3) _tagName3({ class: ["a", "b"], @@ -47,7 +47,7 @@ const _renderer = ({ });else _renderBody2(); const _tagName4 = showTagA && tagA; function _renderBody3() { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); _write("Body content"); } if (_tagName4) _tagName4({ @@ -58,7 +58,7 @@ const _renderer = ({ class: ["a", "b"], other: other, renderBody() { - const _scope = _nextScopeId(); + const _scope4_ = _nextScopeId(); } }); const largeHeading = isLarge && "h1"; @@ -67,10 +67,10 @@ const _renderer = ({ if (_tagName5) _write(``); const tagConstA = "a"; const tagConstB = show ? "div" : null; - _write(`${_markHydrateNode(_scope, "#undefined/5")}<${global.x = "a" + "b"} class="a b"${_attr("other", other)}>${_markHydrateNode(_scope, "#undefined/6")}<${"h" + level} class="a b"${_attr("other", other)}>${_markHydrateNode(_scope, "#undefined/7")}${_markHydrateNode(_scope, "#undefined/8")}<${tagConstA} class="a b"${_attr("other", other)}>${_markHydrateNode(_scope, "#undefined/9")}`); + _write(`${_markHydrateNode(_scope0_, "#undefined/5")}<${global.x = "a" + "b"} class="a b"${_attr("other", other)}>${_markHydrateNode(_scope0_, "#undefined/6")}<${"h" + level} class="a b"${_attr("other", other)}>${_markHydrateNode(_scope0_, "#undefined/7")}${_markHydrateNode(_scope0_, "#undefined/8")}<${tagConstA} class="a b"${_attr("other", other)}>${_markHydrateNode(_scope0_, "#undefined/9")}`); if (tagConstB) _write(`<${tagConstB} class="a b"${_attr("other", other)}>`); if (tagConstB) _write(``); - _write(`${_markHydrateNode(_scope, "#undefined/10")}`); + _write(`${_markHydrateNode(_scope0_, "#undefined/10")}`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/dynamic-tag-native/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/dynamic-tag-native/__snapshots__/html.expected/template.js index 7d8da8582..ddbf6174a 100644 --- a/packages/translator/src/__tests__/fixtures/dynamic-tag-native/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/dynamic-tag-native/__snapshots__/html.expected/template.js @@ -1,6 +1,6 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("

    paragraph

    "); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/dynamic-tag-var/__snapshots__/html.expected/components/child/index.js b/packages/translator/src/__tests__/fixtures/dynamic-tag-var/__snapshots__/html.expected/components/child/index.js index 930c5248a..86061c274 100644 --- a/packages/translator/src/__tests__/fixtures/dynamic-tag-var/__snapshots__/html.expected/components/child/index.js +++ b/packages/translator/src/__tests__/fixtures/dynamic-tag-var/__snapshots__/html.expected/components/child/index.js @@ -1,8 +1,8 @@ import { nextScopeId as _nextScopeId, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const _return = 1; - _writeHydrateScope(_scope, { + _writeHydrateScope(_scope0_, { "/": _tagVar }); return _return; diff --git a/packages/translator/src/__tests__/fixtures/dynamic-tag-var/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/dynamic-tag-var/__snapshots__/html.expected/template.js index b8d1b16bd..dd8f2cefc 100644 --- a/packages/translator/src/__tests__/fixtures/dynamic-tag-var/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/dynamic-tag-var/__snapshots__/html.expected/template.js @@ -4,15 +4,15 @@ const _renderer = ({ show, dynamic }, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const data1 = child({ renderBody() { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); } - }, _register(() => {}, "packages/translator/src/__tests__/fixtures/dynamic-tag-var/template.marko_0_data1", _scope)); + }, _register(() => {}, "packages/translator/src/__tests__/fixtures/dynamic-tag-var/template.marko_0_data1", _scope0_)); const _tagName = show && child; function _renderBody() { - const _scope = _nextScopeId(); + const _scope2_ = _nextScopeId(); } let data2 = void 0; if (_tagName) data2 = _tagName();else _renderBody(); @@ -23,8 +23,8 @@ const _renderer = ({ }; if (_tagName2) _write(`<${_tagName2}>`); if (_tagName2) _write(``); - _write(`${_markHydrateNode(_scope, "#undefined/1")}`); - _writeHydrateScope(_scope, {}); + _write(`${_markHydrateNode(_scope0_, "#undefined/1")}`); + _writeHydrateScope(_scope0_, {}); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/html.expected/components/counter.js b/packages/translator/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/html.expected/components/counter.js index 9eb9fed9f..a2b86e99d 100644 --- a/packages/translator/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/html.expected/components/counter.js +++ b/packages/translator/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/html.expected/components/counter.js @@ -1,10 +1,10 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const count = 0; - _write(`${_markHydrateNode(_scope, "#button/0")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/dynamic-tag-with-updating-body/components/counter.marko_0_count"); - _writeHydrateScope(_scope, { + _write(`${_markHydrateNode(_scope0_, "#button/0")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/dynamic-tag-with-updating-body/components/counter.marko_0_count"); + _writeHydrateScope(_scope0_, { "count": count }); }; diff --git a/packages/translator/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/html.expected/template.js index b8ea521f2..7efbe7573 100644 --- a/packages/translator/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/dynamic-tag-with-updating-body/__snapshots__/html.expected/template.js @@ -1,17 +1,17 @@ import { write as _write, nextScopeId as _nextScopeId, markHydrateNode as _markHydrateNode, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _counter from "./components/counter.marko"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const tagName = "div"; _write(`<${tagName}>`); _counter({ renderBody() { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); } }); - _write(`${_markHydrateNode(_scope, "#button/1")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/dynamic-tag-with-updating-body/template.marko_0_tagName"); - _writeHydrateScope(_scope, { + _write(`${_markHydrateNode(_scope0_, "#button/1")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/dynamic-tag-with-updating-body/template.marko_0_tagName"); + _writeHydrateScope(_scope0_, { "tagName": tagName }); }; diff --git a/packages/translator/src/__tests__/fixtures/effect-counter/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/effect-counter/__snapshots__/html.expected/template.js index 87404b4f2..df186d280 100644 --- a/packages/translator/src/__tests__/fixtures/effect-counter/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/effect-counter/__snapshots__/html.expected/template.js @@ -1,10 +1,10 @@ import { markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const clickCount = 0; - _write(`
    ${_markHydrateNode(_scope, "#button/0")}
    `); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/effect-counter/template.marko_0_clickCount"); - _writeHydrateScope(_scope, { + _write(`
    ${_markHydrateNode(_scope0_, "#button/0")}
    `); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/effect-counter/template.marko_0_clickCount"); + _writeHydrateScope(_scope0_, { "clickCount": clickCount }); }; diff --git a/packages/translator/src/__tests__/fixtures/effect-tag/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/effect-tag/__snapshots__/html.expected/template.js index 977645085..5a8bcc10e 100644 --- a/packages/translator/src/__tests__/fixtures/effect-tag/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/effect-tag/__snapshots__/html.expected/template.js @@ -1,10 +1,10 @@ import { write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const x = 1; _write("
    0
    "); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/effect-tag/template.marko_0_x"); - _writeHydrateScope(_scope, { + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/effect-tag/template.marko_0_x"); + _writeHydrateScope(_scope0_, { "x": x }); }; diff --git a/packages/translator/src/__tests__/fixtures/entities/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/entities/__snapshots__/html.expected/template.js index d69dbf4b7..45f0a2ea7 100644 --- a/packages/translator/src/__tests__/fixtures/entities/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/entities/__snapshots__/html.expected/template.js @@ -1,6 +1,6 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("Hello John & Suzy Invalid Entity: &b ; Valid Numeric Entity: " Valid Hexadecimal Entity: ¢"); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/event-handlers/__snapshots__/html.expected/components/child/index.js b/packages/translator/src/__tests__/fixtures/event-handlers/__snapshots__/html.expected/components/child/index.js index a5f75c47c..daf4e208c 100644 --- a/packages/translator/src/__tests__/fixtures/event-handlers/__snapshots__/html.expected/components/child/index.js +++ b/packages/translator/src/__tests__/fixtures/event-handlers/__snapshots__/html.expected/components/child/index.js @@ -1,6 +1,6 @@ import { dynamicTag as _dynamicTag, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _dynamicTag(input.renderBody, null); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/event-handlers/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/event-handlers/__snapshots__/html.expected/template.js index 0726cdc41..5dfc20d79 100644 --- a/packages/translator/src/__tests__/fixtures/event-handlers/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/event-handlers/__snapshots__/html.expected/template.js @@ -1,18 +1,18 @@ import { nextScopeId as _nextScopeId, markHydrateNode as _markHydrateNode, write as _write, writeHydrateCall as _writeHydrateCall, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _child from "./components/child/index.marko"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _child({ class: "hi", onClick: () => { console.log("hello world"); }, renderBody() { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); } }); - _write(`
    ${_markHydrateNode(_scope, "#div/1")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/event-handlers/template.marko_0"); + _write(`
    ${_markHydrateNode(_scope0_, "#div/1")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/event-handlers/template.marko_0"); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/for-tag-siblings/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/for-tag-siblings/__snapshots__/html.expected/template.js index 4b2978344..41927dde8 100644 --- a/packages/translator/src/__tests__/fixtures/for-tag-siblings/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/for-tag-siblings/__snapshots__/html.expected/template.js @@ -1,17 +1,17 @@ import { write as _write, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, nextScopeId as _nextScopeId, maybeFlush as _maybeFlush, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const arrA = [1, 2, 3]; _write("
    "); for (const val of arrA) { - const _scope = _nextScopeId(); - _write(`
    ${_escapeXML(val)}${_markHydrateNode(_scope, "#text/0")}
    `); + const _scope1_ = _nextScopeId(); + _write(`
    ${_escapeXML(val)}${_markHydrateNode(_scope1_, "#text/0")}
    `); _maybeFlush(); } - _write(`
    ${_markHydrateNode(_scope, "#div/0")}
    `); + _write(`
    ${_markHydrateNode(_scope0_, "#div/0")}
    `); for (const val of arrA) { - const _scope = _nextScopeId(); - _write(`
    ${_escapeXML(val)}${_markHydrateNode(_scope, "#text/0")}
    `); + const _scope2_ = _nextScopeId(); + _write(`
    ${_escapeXML(val)}${_markHydrateNode(_scope2_, "#text/0")}
    `); _maybeFlush(); } _write("
    "); diff --git a/packages/translator/src/__tests__/fixtures/for-tag-with-state/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/for-tag-with-state/__snapshots__/html.expected/template.js index ec9e42e93..882c753f6 100644 --- a/packages/translator/src/__tests__/fixtures/for-tag-with-state/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/for-tag-with-state/__snapshots__/html.expected/template.js @@ -1,20 +1,20 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, maybeFlush as _maybeFlush, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const arrA = [1, 2, 3]; let _i = 0; for (const val of arrA) { let i = _i++; - const _scope = _nextScopeId(); - _write(`
    ${_escapeXML(i)}${_markHydrateNode(_scope, "#text/0")}: ${_escapeXML(val)}${_markHydrateNode(_scope, "#text/1")}
    `); + const _scope1_ = _nextScopeId(); + _write(`
    ${_escapeXML(i)}${_markHydrateNode(_scope1_, "#text/0")}: ${_escapeXML(val)}${_markHydrateNode(_scope1_, "#text/1")}
    `); _maybeFlush(); } const arrB = [1, 2, 3]; let _i2 = 0; for (const val of arrB) { let i = _i2++; - const _scope = _nextScopeId(); - _write(`
    ${_escapeXML(i)}${_markHydrateNode(_scope, "#text/0")}: ${_escapeXML(val)}${_markHydrateNode(_scope, "#text/1")}
    `); + const _scope2_ = _nextScopeId(); + _write(`
    ${_escapeXML(i)}${_markHydrateNode(_scope2_, "#text/0")}: ${_escapeXML(val)}${_markHydrateNode(_scope2_, "#text/1")}
    `); _maybeFlush(); } }; diff --git a/packages/translator/src/__tests__/fixtures/for-tag/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/for-tag/__snapshots__/html.expected/template.js index 6916888e2..3a272d00a 100644 --- a/packages/translator/src/__tests__/fixtures/for-tag/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/for-tag/__snapshots__/html.expected/template.js @@ -1,6 +1,6 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, maybeFlush as _maybeFlush, attr as _attr, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const arr = [1, 2, 3]; const obj = { a: 1, @@ -10,68 +10,68 @@ const _renderer = (input, _tagVar) => { let _i = 0; for (const val of arr) { let i = _i++; - const _scope = _nextScopeId(); - _write(`
    ${_escapeXML(i)}${_markHydrateNode(_scope, "#text/0")}: ${_escapeXML(val)}${_markHydrateNode(_scope, "#text/1")}
    `); + const _scope1_ = _nextScopeId(); + _write(`
    ${_escapeXML(i)}${_markHydrateNode(_scope1_, "#text/0")}: ${_escapeXML(val)}${_markHydrateNode(_scope1_, "#text/1")}
    `); _maybeFlush(); } for (const key in obj) { const val = obj[key]; - const _scope = _nextScopeId(); - _write(`
    ${_escapeXML(key)}${_markHydrateNode(_scope, "#text/0")}: ${_escapeXML(val)}${_markHydrateNode(_scope, "#text/1")}
    `); + const _scope2_ = _nextScopeId(); + _write(`
    ${_escapeXML(key)}${_markHydrateNode(_scope2_, "#text/0")}: ${_escapeXML(val)}${_markHydrateNode(_scope2_, "#text/1")}
    `); _maybeFlush(); } for (let _steps = (10 - 0) / 2, _step = 0; _step <= _steps; _step++) { const i = 0 + _step * 2; - const _scope = _nextScopeId(); - _write(`
    ${_escapeXML(i)}${_markHydrateNode(_scope, "#text/0")}
    `); + const _scope3_ = _nextScopeId(); + _write(`
    ${_escapeXML(i)}${_markHydrateNode(_scope3_, "#text/0")}
    `); _maybeFlush(); } let _i2 = 0; for (const val of arr) { let i = _i2++; - const _scope = _nextScopeId(); - _write(`${_escapeXML(i)}${_markHydrateNode(_scope, "#text/1")}: ${_escapeXML(val)}${_markHydrateNode(_scope, "#text/2")}${_markHydrateNode(_scope, "#div/0")}
    ${_markHydrateNode(_scope, "#div/3")}`); + const _scope4_ = _nextScopeId(); + _write(`${_escapeXML(i)}${_markHydrateNode(_scope4_, "#text/1")}: ${_escapeXML(val)}${_markHydrateNode(_scope4_, "#text/2")}${_markHydrateNode(_scope4_, "#div/0")}
    ${_markHydrateNode(_scope4_, "#div/3")}`); _maybeFlush(); } let _i3 = 0; const list = arr; for (const val of list) { let i = _i3++; - const _scope = _nextScopeId(); - _write(`${_escapeXML(list.length)}${_markHydrateNode(_scope, "#text/1")}: ${_escapeXML(val)}${_markHydrateNode(_scope, "#text/2")}${_markHydrateNode(_scope, "#div/0")}`); + const _scope5_ = _nextScopeId(); + _write(`${_escapeXML(list.length)}${_markHydrateNode(_scope5_, "#text/1")}: ${_escapeXML(val)}${_markHydrateNode(_scope5_, "#text/2")}${_markHydrateNode(_scope5_, "#div/0")}`); _maybeFlush(); } for (const key in obj) { const val = obj[key]; - const _scope = _nextScopeId(); - _write(`${_escapeXML(key)}${_markHydrateNode(_scope, "#text/1")}: ${_escapeXML(val)}${_markHydrateNode(_scope, "#text/2")}${_markHydrateNode(_scope, "#div/0")}
    ${_markHydrateNode(_scope, "#div/3")}`); + const _scope6_ = _nextScopeId(); + _write(`${_escapeXML(key)}${_markHydrateNode(_scope6_, "#text/1")}: ${_escapeXML(val)}${_markHydrateNode(_scope6_, "#text/2")}${_markHydrateNode(_scope6_, "#div/0")}
    ${_markHydrateNode(_scope6_, "#div/3")}`); _maybeFlush(); } for (let _steps3 = (10 - 0) / 2, _step3 = 0; _step3 <= _steps3; _step3++) { const i = 0 + _step3 * 2; - const _scope = _nextScopeId(); - _write(`${_escapeXML(i)}${_markHydrateNode(_scope, "#text/1")}${_markHydrateNode(_scope, "#div/0")}
    ${_markHydrateNode(_scope, "#div/2")}`); + const _scope7_ = _nextScopeId(); + _write(`${_escapeXML(i)}${_markHydrateNode(_scope7_, "#text/1")}${_markHydrateNode(_scope7_, "#div/0")}
    ${_markHydrateNode(_scope7_, "#div/2")}`); for (let _steps2 = (10 - 0) / 2, _step2 = 0; _step2 <= _steps2; _step2++) { const i = 0 + _step2 * 2; - const _scope = _nextScopeId(); - _write(`${_escapeXML(i)}${_markHydrateNode(_scope, "#text/1")}${_markHydrateNode(_scope, "#div/0")}
    ${_markHydrateNode(_scope, "#div/2")}`); + const _scope8_ = _nextScopeId(); + _write(`${_escapeXML(i)}${_markHydrateNode(_scope8_, "#text/1")}${_markHydrateNode(_scope8_, "#div/0")}
    ${_markHydrateNode(_scope8_, "#div/2")}`); _maybeFlush(); } _maybeFlush(); } for (let _steps4 = (0 - 10) / -2, _step4 = 0; _step4 <= _steps4; _step4++) { const i = 10 + _step4 * -2; - const _scope = _nextScopeId(); - _write(`${_escapeXML(i)}${_markHydrateNode(_scope, "#text/1")}${_markHydrateNode(_scope, "#div/0")}
    ${_markHydrateNode(_scope, "#div/2")}`); + const _scope9_ = _nextScopeId(); + _write(`${_escapeXML(i)}${_markHydrateNode(_scope9_, "#text/1")}${_markHydrateNode(_scope9_, "#div/0")}
    ${_markHydrateNode(_scope9_, "#div/2")}`); _maybeFlush(); } for (let _steps5 = (10 - 0) / 1, _step5 = 0; _step5 <= _steps5; _step5++) { - const _scope = _nextScopeId(); + const _scope10_ = _nextScopeId(); _write("Hello"); _maybeFlush(); } for (let _steps6 = (10 - 0) / 1, _step6 = 0; _step6 <= _steps6; _step6++) { - const _scope = _nextScopeId(); + const _scope11_ = _nextScopeId(); _write("Hello"); _maybeFlush(); } diff --git a/packages/translator/src/__tests__/fixtures/hello-dynamic/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/hello-dynamic/__snapshots__/html.expected/template.js index 98c74ef1e..33f40a689 100644 --- a/packages/translator/src/__tests__/fixtures/hello-dynamic/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/hello-dynamic/__snapshots__/html.expected/template.js @@ -3,8 +3,8 @@ const _renderer = ({ name, missing }, _tagVar) => { - const _scope = _nextScopeId(); - _write(`Hello ${_escapeXML(name)}${_markHydrateNode(_scope, "#text/0")}! Hello ${_toString(name)}${_markHydrateNode(_scope, "#text/1")}! Hello ${_toString(missing)}${_markHydrateNode(_scope, "#text/2")}!`); + const _scope0_ = _nextScopeId(); + _write(`Hello ${_escapeXML(name)}${_markHydrateNode(_scope0_, "#text/0")}! Hello ${_toString(name)}${_markHydrateNode(_scope0_, "#text/1")}! Hello ${_toString(missing)}${_markHydrateNode(_scope0_, "#text/2")}!`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/html-entity/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/html-entity/__snapshots__/html.expected/template.js index 0de7f0bc0..93615a572 100644 --- a/packages/translator/src/__tests__/fixtures/html-entity/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/html-entity/__snapshots__/html.expected/template.js @@ -1,6 +1,6 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
    <div>
    "); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/id-tag/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/id-tag/__snapshots__/html.expected/template.js index 3a80f6ee4..8237640f6 100644 --- a/packages/translator/src/__tests__/fixtures/id-tag/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/id-tag/__snapshots__/html.expected/template.js @@ -1,9 +1,9 @@ import { nextTagId as _nextTagId, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const x = _nextTagId(); const y = _nextTagId(); - _write(`
    ${_escapeXML(x)}${_markHydrateNode(_scope, "#text/0")}
    ${_escapeXML(y)}${_markHydrateNode(_scope, "#text/1")}`); + _write(`
    ${_escapeXML(x)}${_markHydrateNode(_scope0_, "#text/0")}
    ${_escapeXML(y)}${_markHydrateNode(_scope0_, "#text/1")}`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/if-tag/__snapshots__/dom.expected/template.js b/packages/translator/src/__tests__/fixtures/if-tag/__snapshots__/dom.expected/template.js index dcbf0c122..0e6618827 100644 --- a/packages/translator/src/__tests__/fixtures/if-tag/__snapshots__/dom.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/if-tag/__snapshots__/dom.expected/template.js @@ -1,9 +1,9 @@ -import { createRenderer as _createRenderer, conditional as _conditional, source as _source, setSource as _setSource, destructureSources as _destructureSources, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; -const _elseBody = /* @__PURE__ */_createRenderer("C", ""); -const _elseIfBody = /* @__PURE__ */_createRenderer("B", ""); -const _ifBody3 = /* @__PURE__ */_createRenderer("A", ""); -const _ifBody2 = /* @__PURE__ */_createRenderer("World", ""); -const _ifBody = /* @__PURE__ */_createRenderer("Hello", ""); +import { createRenderer as _createRenderer, register as _register, conditional as _conditional, source as _source, setSource as _setSource, destructureSources as _destructureSources, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; +const _elseBody = _register("packages/translator/src/__tests__/fixtures/if-tag/template.marko_5_renderer", /* @__PURE__ */_createRenderer("C", "")); +const _elseIfBody = _register("packages/translator/src/__tests__/fixtures/if-tag/template.marko_4_renderer", /* @__PURE__ */_createRenderer("B", "")); +const _ifBody3 = _register("packages/translator/src/__tests__/fixtures/if-tag/template.marko_3_renderer", /* @__PURE__ */_createRenderer("A", "")); +const _ifBody2 = _register("packages/translator/src/__tests__/fixtures/if-tag/template.marko_2_renderer", /* @__PURE__ */_createRenderer("World", "")); +const _ifBody = _register("packages/translator/src/__tests__/fixtures/if-tag/template.marko_1_renderer", /* @__PURE__ */_createRenderer("Hello", "")); const _if3 = /* @__PURE__ */_conditional("#text/2", 2, (_scope, x = _scope["x"], y = _scope["y"]) => x ? _ifBody3 : y ? _elseIfBody : _elseBody); const _if2 = /* @__PURE__ */_conditional("#text/1", 2, (_scope, a = _scope["a"], b = _scope["b"]) => (a, b) ? _ifBody2 : null); const _if = /* @__PURE__ */_conditional("#text/0", 2, (_scope, a = _scope["a"], b = _scope["b"]) => a + b ? _ifBody : null); diff --git a/packages/translator/src/__tests__/fixtures/if-tag/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/if-tag/__snapshots__/html.expected/template.js index 8aa7bea1e..34421c265 100644 --- a/packages/translator/src/__tests__/fixtures/if-tag/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/if-tag/__snapshots__/html.expected/template.js @@ -1,31 +1,74 @@ -import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; +import { SYMBOL_OWNER as _SYMBOL_OWNER, write as _write, nextScopeId as _nextScopeId, writeHydrateScope as _writeHydrateScope, register as _register, markHydrateControlSingleNodeEnd as _markHydrateControlSingleNodeEnd, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = ({ a, b, x, y }, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); + let _ifScopeId; + const _ifScope = {}, + _ifRenderer = () => {}; if (a + b) { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); _write("Hello"); + _writeHydrateScope(_scope1_, Object.assign(_ifScope, { + [_SYMBOL_OWNER]: _scope0_ + })); + _register(_ifRenderer, "packages/translator/src/__tests__/fixtures/if-tag/template.marko_1_renderer"); + _ifScopeId = _scope1_; } + _write(`${_markHydrateControlSingleNodeEnd(_scope0_, "#text/0", _ifScopeId)}`); + let _ifScopeId2; + const _ifScope2 = {}, + _ifRenderer2 = () => {}; if (a, b) { - const _scope = _nextScopeId(); + const _scope2_ = _nextScopeId(); _write("World"); + _writeHydrateScope(_scope2_, Object.assign(_ifScope2, { + [_SYMBOL_OWNER]: _scope0_ + })); + _register(_ifRenderer2, "packages/translator/src/__tests__/fixtures/if-tag/template.marko_2_renderer"); + _ifScopeId2 = _scope2_; } - _write("
    "); + _write(`${_markHydrateControlSingleNodeEnd(_scope0_, "#text/1", _ifScopeId2)}
    `); + let _ifScopeId3; + const _ifScope3 = {}, + _ifRenderer3 = () => {}; if (x) { - const _scope = _nextScopeId(); + const _scope3_ = _nextScopeId(); _write("A"); + _writeHydrateScope(_scope3_, Object.assign(_ifScope3, { + [_SYMBOL_OWNER]: _scope0_ + })); + _register(_ifRenderer3, "packages/translator/src/__tests__/fixtures/if-tag/template.marko_3_renderer"); + _ifScopeId3 = _scope3_; } else if (y) { - const _scope = _nextScopeId(); + const _scope4_ = _nextScopeId(); _write("B"); + _writeHydrateScope(_scope4_, Object.assign(_ifScope3, { + [_SYMBOL_OWNER]: _scope0_ + })); + _register(_ifRenderer3, "packages/translator/src/__tests__/fixtures/if-tag/template.marko_4_renderer"); + _ifScopeId3 = _scope4_; } else { - const _scope = _nextScopeId(); + const _scope5_ = _nextScopeId(); _write("C"); + _writeHydrateScope(_scope5_, Object.assign(_ifScope3, { + [_SYMBOL_OWNER]: _scope0_ + })); + _register(_ifRenderer3, "packages/translator/src/__tests__/fixtures/if-tag/template.marko_5_renderer"); + _ifScopeId3 = _scope5_; } - _write("
    "); + _write(`${_markHydrateControlSingleNodeEnd(_scope0_, "#text/2", _ifScopeId3)}
    `); + _writeHydrateScope(_scope0_, { + "#text/0!": _ifScope, + "#text/0(": _ifRenderer, + "#text/1!": _ifScope2, + "#text/1(": _ifRenderer2, + "#text/2!": _ifScope3, + "#text/2(": _ifRenderer3 + }); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/import-tag-conflict/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/import-tag-conflict/__snapshots__/html.expected/template.js index bda9decae..ba5e7b571 100644 --- a/packages/translator/src/__tests__/fixtures/import-tag-conflict/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/import-tag-conflict/__snapshots__/html.expected/template.js @@ -2,8 +2,8 @@ import { asset as asset1 } from "./asset1"; import { asset as asset2 } from "./asset2"; import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); - _write(`${_escapeXML(asset1)}${_markHydrateNode(_scope, "#text/0")} ${_escapeXML(asset2)}${_markHydrateNode(_scope, "#text/1")}`); + const _scope0_ = _nextScopeId(); + _write(`${_escapeXML(asset1)}${_markHydrateNode(_scope0_, "#text/0")} ${_escapeXML(asset2)}${_markHydrateNode(_scope0_, "#text/1")}`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/import-tag/__snapshots__/html.expected/components/baz.js b/packages/translator/src/__tests__/fixtures/import-tag/__snapshots__/html.expected/components/baz.js index fda3a01e2..f31d1bda1 100644 --- a/packages/translator/src/__tests__/fixtures/import-tag/__snapshots__/html.expected/components/baz.js +++ b/packages/translator/src/__tests__/fixtures/import-tag/__snapshots__/html.expected/components/baz.js @@ -1,6 +1,6 @@ import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
    "); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/import-tag/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/import-tag/__snapshots__/html.expected/template.js index c89498d82..8ca30fe82 100644 --- a/packages/translator/src/__tests__/fixtures/import-tag/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/import-tag/__snapshots__/html.expected/template.js @@ -3,13 +3,13 @@ import { b as c } from "./bar"; import baz from "./components/baz.marko"; import { nextScopeId as _nextScopeId, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); baz({ renderBody() { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); } }); - _write(`${_escapeXML(c)}${_markHydrateNode(_scope, "#text/0")}`); + _write(`${_escapeXML(c)}${_markHydrateNode(_scope0_, "#text/0")}`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/input-tracking/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/input-tracking/__snapshots__/html.expected/template.js index 2e94e2362..02a99b467 100644 --- a/packages/translator/src/__tests__/fixtures/input-tracking/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/input-tracking/__snapshots__/html.expected/template.js @@ -1,11 +1,11 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const { a, b } = input; - _write(`${_escapeXML(a)}${_markHydrateNode(_scope, "#text/0")} ${_escapeXML(b)}${_markHydrateNode(_scope, "#text/1")}`); + _write(`${_escapeXML(a)}${_markHydrateNode(_scope0_, "#text/0")} ${_escapeXML(b)}${_markHydrateNode(_scope0_, "#text/1")}`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/let-tag-set-in-effect/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/let-tag-set-in-effect/__snapshots__/html.expected/template.js index b59387f74..5058e3df3 100644 --- a/packages/translator/src/__tests__/fixtures/let-tag-set-in-effect/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/let-tag-set-in-effect/__snapshots__/html.expected/template.js @@ -1,11 +1,11 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const x = 1; const y = 0; - _write(`${_escapeXML(x)}${_markHydrateNode(_scope, "#text/0")}${_escapeXML(y)}${_markHydrateNode(_scope, "#text/1")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/let-tag-set-in-effect/template.marko_0_x"); - _writeHydrateScope(_scope, { + _write(`${_escapeXML(x)}${_markHydrateNode(_scope0_, "#text/0")}${_escapeXML(y)}${_markHydrateNode(_scope0_, "#text/1")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/let-tag-set-in-effect/template.marko_0_x"); + _writeHydrateScope(_scope0_, { "x": x }); }; diff --git a/packages/translator/src/__tests__/fixtures/let-tag/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/let-tag/__snapshots__/html.expected/template.js index 19d62dbfc..a3972254a 100644 --- a/packages/translator/src/__tests__/fixtures/let-tag/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/let-tag/__snapshots__/html.expected/template.js @@ -1,11 +1,11 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const x = 1; const y = 1; - _write(`${_markHydrateNode(_scope, "#button/0")}${_escapeXML(y)}${_markHydrateNode(_scope, "#text/2")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/let-tag/template.marko_0_x_y"); - _writeHydrateScope(_scope, { + _write(`${_markHydrateNode(_scope0_, "#button/0")}${_escapeXML(y)}${_markHydrateNode(_scope0_, "#text/2")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/let-tag/template.marko_0_x_y"); + _writeHydrateScope(_scope0_, { "x": x, "y": y }); diff --git a/packages/translator/src/__tests__/fixtures/lifecycle-tag-assignment/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/lifecycle-tag-assignment/__snapshots__/html.expected/template.js index 965623426..99020256b 100644 --- a/packages/translator/src/__tests__/fixtures/lifecycle-tag-assignment/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/lifecycle-tag-assignment/__snapshots__/html.expected/template.js @@ -1,11 +1,11 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const x = 0; const prev = false; - _write(`
    x=${_escapeXML(x)}${_markHydrateNode(_scope, "#text/0")}, was=${_escapeXML(prev)}${_markHydrateNode(_scope, "#text/1")}
    ${_markHydrateNode(_scope, "#button/2")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/lifecycle-tag-assignment/template.marko_0_x"); - _writeHydrateScope(_scope, { + _write(`
    x=${_escapeXML(x)}${_markHydrateNode(_scope0_, "#text/0")}, was=${_escapeXML(prev)}${_markHydrateNode(_scope0_, "#text/1")}
    ${_markHydrateNode(_scope0_, "#button/2")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/lifecycle-tag-assignment/template.marko_0_x"); + _writeHydrateScope(_scope0_, { "x": x }); }; diff --git a/packages/translator/src/__tests__/fixtures/lifecycle-tag-conditional/__snapshots__/dom.expected/template.js b/packages/translator/src/__tests__/fixtures/lifecycle-tag-conditional/__snapshots__/dom.expected/template.js index 0f8b34368..7855bb146 100644 --- a/packages/translator/src/__tests__/fixtures/lifecycle-tag-conditional/__snapshots__/dom.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/lifecycle-tag-conditional/__snapshots__/dom.expected/template.js @@ -13,7 +13,7 @@ const _hydrate_x$ifBody = _register("packages/translator/src/__tests__/fixtures/ } })); const _x$ifBody = /* @__PURE__ */_closure(1, "x", [], (_scope, x) => _queueHydrate(_scope, _hydrate_x$ifBody)); -const _ifBody = /* @__PURE__ */_createRenderer("", "", null, [_x$ifBody]); +const _ifBody = _register("packages/translator/src/__tests__/fixtures/lifecycle-tag-conditional/template.marko_1_renderer", /* @__PURE__ */_createRenderer("", "", null, [_x$ifBody])); const _if = /* @__PURE__ */_conditional("#text/0", 1, (_scope, show = _scope["show"]) => show ? _ifBody : null); const _hydrate_show = _register("packages/translator/src/__tests__/fixtures/lifecycle-tag-conditional/template.marko_0_show", _scope => _on(_scope["#button/2"], "click", function () { const show = _scope["show"]; diff --git a/packages/translator/src/__tests__/fixtures/lifecycle-tag-conditional/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/lifecycle-tag-conditional/__snapshots__/html.expected/template.js index a5f6cdf07..9fc794562 100644 --- a/packages/translator/src/__tests__/fixtures/lifecycle-tag-conditional/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/lifecycle-tag-conditional/__snapshots__/html.expected/template.js @@ -1,21 +1,29 @@ -import { nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, markHydrateNode as _markHydrateNode, write as _write, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; +import { SYMBOL_OWNER as _SYMBOL_OWNER, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, register as _register, markHydrateControlSingleNodeEnd as _markHydrateControlSingleNodeEnd, markHydrateNode as _markHydrateNode, write as _write, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const x = 0; const show = true; + let _ifScopeId; + const _ifScope = {}, + _ifRenderer = () => {}; if (show) { - const _scope = _nextScopeId(); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/lifecycle-tag-conditional/template.marko_1_x"); - _writeHydrateScope(_scope, { - "x": x - }); + const _scope1_ = _nextScopeId(); + _writeHydrateCall(_scope1_, "packages/translator/src/__tests__/fixtures/lifecycle-tag-conditional/template.marko_1_x"); + _writeHydrateScope(_scope1_, Object.assign(_ifScope, { + "x": x, + [_SYMBOL_OWNER]: _scope0_ + })); + _register(_ifRenderer, "packages/translator/src/__tests__/fixtures/lifecycle-tag-conditional/template.marko_1_renderer"); + _ifScopeId = _scope1_; } - _write(`
    ${_markHydrateNode(_scope, "#button/1")}${_markHydrateNode(_scope, "#button/2")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/lifecycle-tag-conditional/template.marko_0_show"); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/lifecycle-tag-conditional/template.marko_0_x"); - _writeHydrateScope(_scope, { + _write(`${_markHydrateControlSingleNodeEnd(_scope0_, "#text/0", _ifScopeId)}
    ${_markHydrateNode(_scope0_, "#button/1")}${_markHydrateNode(_scope0_, "#button/2")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/lifecycle-tag-conditional/template.marko_0_show"); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/lifecycle-tag-conditional/template.marko_0_x"); + _writeHydrateScope(_scope0_, { "x": x, - "show": show + "show": show, + "#text/0!": _ifScope, + "#text/0(": _ifRenderer }); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/lifecycle-tag-this/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/lifecycle-tag-this/__snapshots__/html.expected/template.js index e783fc2fb..55d403802 100644 --- a/packages/translator/src/__tests__/fixtures/lifecycle-tag-this/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/lifecycle-tag-this/__snapshots__/html.expected/template.js @@ -1,10 +1,10 @@ import { markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const x = 0; - _write(`
    ${_markHydrateNode(_scope, "#button/0")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/lifecycle-tag-this/template.marko_0_x"); - _writeHydrateScope(_scope, { + _write(`
    ${_markHydrateNode(_scope0_, "#button/0")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/lifecycle-tag-this/template.marko_0_x"); + _writeHydrateScope(_scope0_, { "x": x }); }; diff --git a/packages/translator/src/__tests__/fixtures/lifecycle-tag/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/lifecycle-tag/__snapshots__/html.expected/template.js index 0030836c7..6533e5d8f 100644 --- a/packages/translator/src/__tests__/fixtures/lifecycle-tag/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/lifecycle-tag/__snapshots__/html.expected/template.js @@ -1,10 +1,10 @@ import { markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const x = 0; - _write(`
    ${_markHydrateNode(_scope, "#button/0")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/lifecycle-tag/template.marko_0_x"); - _writeHydrateScope(_scope, { + _write(`
    ${_markHydrateNode(_scope0_, "#button/0")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/lifecycle-tag/template.marko_0_x"); + _writeHydrateScope(_scope0_, { "x": x }); }; diff --git a/packages/translator/src/__tests__/fixtures/migrate-input/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/migrate-input/__snapshots__/html.expected/template.js index 9cce91c5e..c1d612198 100644 --- a/packages/translator/src/__tests__/fixtures/migrate-input/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/migrate-input/__snapshots__/html.expected/template.js @@ -1,7 +1,7 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); - _write(`
    ${_escapeXML(input.x)}${_markHydrateNode(_scope, "#text/0")}
    `); + const _scope0_ = _nextScopeId(); + _write(`
    ${_escapeXML(input.x)}${_markHydrateNode(_scope0_, "#text/0")}
    `); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/migrate-out-global/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/migrate-out-global/__snapshots__/html.expected/template.js index 7e654c46a..16c44cc5d 100644 --- a/packages/translator/src/__tests__/fixtures/migrate-out-global/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/migrate-out-global/__snapshots__/html.expected/template.js @@ -1,8 +1,8 @@ import { getInContext as _getInContext, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const _$global = _getInContext("$"); - _write(`
    ${_escapeXML(_$global.x)}${_markHydrateNode(_scope, "#text/0")}
    `); + _write(`
    ${_escapeXML(_$global.x)}${_markHydrateNode(_scope0_, "#text/0")}
    `); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/move-and-clear-children/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/move-and-clear-children/__snapshots__/html.expected/template.js index 0fda0e74b..43f2d39cc 100644 --- a/packages/translator/src/__tests__/fixtures/move-and-clear-children/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/move-and-clear-children/__snapshots__/html.expected/template.js @@ -2,14 +2,14 @@ import { write as _write, escapeXML as _escapeXML, markHydrateNode as _markHydra const _renderer = ({ children }, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
    "); for (const child of children) { - const _scope = _nextScopeId(); - _write(`${_escapeXML(child.text)}${_markHydrateNode(_scope, "#text/0")}`); + const _scope1_ = _nextScopeId(); + _write(`${_escapeXML(child.text)}${_markHydrateNode(_scope1_, "#text/0")}`); _maybeFlush(); } - _write(`
    ${_markHydrateNode(_scope, "#div/0")}`); + _write(`${_markHydrateNode(_scope0_, "#div/0")}`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/move-and-clear-top-level/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/move-and-clear-top-level/__snapshots__/html.expected/template.js index d914a4799..24192c8cc 100644 --- a/packages/translator/src/__tests__/fixtures/move-and-clear-top-level/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/move-and-clear-top-level/__snapshots__/html.expected/template.js @@ -1,9 +1,9 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, maybeFlush as _maybeFlush, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); for (const child of input.children) { - const _scope = _nextScopeId(); - _write(`${_escapeXML(child.text)}${_markHydrateNode(_scope, "#text/0")}`); + const _scope1_ = _nextScopeId(); + _write(`${_escapeXML(child.text)}${_markHydrateNode(_scope1_, "#text/0")}`); _maybeFlush(); } }; diff --git a/packages/translator/src/__tests__/fixtures/native-tag-ref-downstream-effect/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/native-tag-ref-downstream-effect/__snapshots__/html.expected/template.js index 3d2a3b224..fbd214b27 100644 --- a/packages/translator/src/__tests__/fixtures/native-tag-ref-downstream-effect/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/native-tag-ref-downstream-effect/__snapshots__/html.expected/template.js @@ -1,13 +1,13 @@ import { markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const el = () => { throw new Error("Cannot reference DOM node from server"); }; - _write(`
    ${_markHydrateNode(_scope, "#div/0")}`); + _write(`
    ${_markHydrateNode(_scope0_, "#div/0")}`); if (true) { - const _scope = _nextScopeId(); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/native-tag-ref-downstream-effect/template.marko_1"); + const _scope1_ = _nextScopeId(); + _writeHydrateCall(_scope1_, "packages/translator/src/__tests__/fixtures/native-tag-ref-downstream-effect/template.marko_1"); } }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/html.expected/components/hello-setter.js b/packages/translator/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/html.expected/components/hello-setter.js index 8736b8a1b..598178f59 100644 --- a/packages/translator/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/html.expected/components/hello-setter.js +++ b/packages/translator/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/html.expected/components/hello-setter.js @@ -2,9 +2,9 @@ import { nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, wri const _renderer = ({ el }, _tagVar) => { - const _scope = _nextScopeId(); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/native-tag-ref-effect-child/components/hello-setter.marko_0_el"); - _writeHydrateScope(_scope, { + const _scope0_ = _nextScopeId(); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/native-tag-ref-effect-child/components/hello-setter.marko_0_el"); + _writeHydrateScope(_scope0_, { "el": el }); }; diff --git a/packages/translator/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/html.expected/template.js index d1434a847..f2bdfa97a 100644 --- a/packages/translator/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/native-tag-ref-effect-child/__snapshots__/html.expected/template.js @@ -1,15 +1,15 @@ import { markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _helloSetter from "./components/hello-setter.marko"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const el = () => { throw new Error("Cannot reference DOM node from server"); }; - _write(`
    ${_markHydrateNode(_scope, "#div/0")}`); + _write(`
    ${_markHydrateNode(_scope0_, "#div/0")}`); _helloSetter({ el: el, renderBody() { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); } }); }; diff --git a/packages/translator/src/__tests__/fixtures/native-tag-ref-effect/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/native-tag-ref-effect/__snapshots__/html.expected/template.js index 882a4a6ff..e292d48e4 100644 --- a/packages/translator/src/__tests__/fixtures/native-tag-ref-effect/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/native-tag-ref-effect/__snapshots__/html.expected/template.js @@ -1,11 +1,11 @@ import { markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const el = () => { throw new Error("Cannot reference DOM node from server"); }; - _write(`
    ${_markHydrateNode(_scope, "#div/0")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/native-tag-ref-effect/template.marko_0"); + _write(`
    ${_markHydrateNode(_scope0_, "#div/0")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/native-tag-ref-effect/template.marko_0"); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/native-tag-ref-hoisting/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/native-tag-ref-hoisting/__snapshots__/html.expected/template.js index e2be27041..5f4c033b6 100644 --- a/packages/translator/src/__tests__/fixtures/native-tag-ref-hoisting/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/native-tag-ref-hoisting/__snapshots__/html.expected/template.js @@ -1,14 +1,14 @@ import { markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); if (true) { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); const el = () => { throw new Error("Cannot reference DOM node from server"); }; - _write(`
    ${_markHydrateNode(_scope, "#div/0")}`); + _write(`
    ${_markHydrateNode(_scope1_, "#div/0")}`); } - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/native-tag-ref-hoisting/template.marko_0"); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/native-tag-ref-hoisting/template.marko_0"); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/nested-assignment-expression/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/nested-assignment-expression/__snapshots__/html.expected/template.js index a51b7f7e9..6dafae27e 100644 --- a/packages/translator/src/__tests__/fixtures/nested-assignment-expression/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/nested-assignment-expression/__snapshots__/html.expected/template.js @@ -1,12 +1,12 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const clickCount = 0; const lastCount = 0; const lastCount2 = 0; - _write(`${_markHydrateNode(_scope, "#button/0")}used to be ${_escapeXML(lastCount)}${_markHydrateNode(_scope, "#text/2")} which should be the same as ${_escapeXML(lastCount2)}${_markHydrateNode(_scope, "#text/3")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/nested-assignment-expression/template.marko_0_clickCount"); - _writeHydrateScope(_scope, { + _write(`${_markHydrateNode(_scope0_, "#button/0")}used to be ${_escapeXML(lastCount)}${_markHydrateNode(_scope0_, "#text/2")} which should be the same as ${_escapeXML(lastCount2)}${_markHydrateNode(_scope0_, "#text/3")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/nested-assignment-expression/template.marko_0_clickCount"); + _writeHydrateScope(_scope0_, { "clickCount": clickCount }); }; diff --git a/packages/translator/src/__tests__/fixtures/placeholders/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/placeholders/__snapshots__/html.expected/template.js index 2fe711dfe..684e66233 100644 --- a/packages/translator/src/__tests__/fixtures/placeholders/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/placeholders/__snapshots__/html.expected/template.js @@ -2,8 +2,8 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, toString const _renderer = ({ x }, _tagVar) => { - const _scope = _nextScopeId(); - _write(`${_escapeXML(x)}${_markHydrateNode(_scope, "#text/0")}${_escapeXML(x)}${_markHydrateNode(_scope, "#text/1")}
    `); }; diff --git a/packages/translator/src/__tests__/fixtures/reassignment-expression-counter/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/reassignment-expression-counter/__snapshots__/html.expected/template.js index 26338fb66..6c054e277 100644 --- a/packages/translator/src/__tests__/fixtures/reassignment-expression-counter/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/reassignment-expression-counter/__snapshots__/html.expected/template.js @@ -1,10 +1,10 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, writeHydrateCall as _writeHydrateCall, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const count = 0; - _write(`${_markHydrateNode(_scope, "#button/0")}${_markHydrateNode(_scope, "#button/2")}${_markHydrateNode(_scope, "#button/4")}`); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/reassignment-expression-counter/template.marko_0_count"); - _writeHydrateScope(_scope, { + _write(`${_markHydrateNode(_scope0_, "#button/0")}${_markHydrateNode(_scope0_, "#button/2")}${_markHydrateNode(_scope0_, "#button/4")}`); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/reassignment-expression-counter/template.marko_0_count"); + _writeHydrateScope(_scope0_, { "count": count }); }; diff --git a/packages/translator/src/__tests__/fixtures/remove-and-add-rows/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/remove-and-add-rows/__snapshots__/html.expected/template.js index 0fda0e74b..43f2d39cc 100644 --- a/packages/translator/src/__tests__/fixtures/remove-and-add-rows/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/remove-and-add-rows/__snapshots__/html.expected/template.js @@ -2,14 +2,14 @@ import { write as _write, escapeXML as _escapeXML, markHydrateNode as _markHydra const _renderer = ({ children }, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
    "); for (const child of children) { - const _scope = _nextScopeId(); - _write(`${_escapeXML(child.text)}${_markHydrateNode(_scope, "#text/0")}`); + const _scope1_ = _nextScopeId(); + _write(`${_escapeXML(child.text)}${_markHydrateNode(_scope1_, "#text/0")}`); _maybeFlush(); } - _write(`
    ${_markHydrateNode(_scope, "#div/0")}`); + _write(`${_markHydrateNode(_scope0_, "#div/0")}`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/return-tag-no-var/__snapshots__/html.expected/components/child.js b/packages/translator/src/__tests__/fixtures/return-tag-no-var/__snapshots__/html.expected/components/child.js index 4169a20b7..bcd423f94 100644 --- a/packages/translator/src/__tests__/fixtures/return-tag-no-var/__snapshots__/html.expected/components/child.js +++ b/packages/translator/src/__tests__/fixtures/return-tag-no-var/__snapshots__/html.expected/components/child.js @@ -1,10 +1,10 @@ import { write as _write, nextScopeId as _nextScopeId, writeHydrateScope as _writeHydrateScope, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const x = 1; _write("child"); const _return = x; - _writeHydrateScope(_scope, { + _writeHydrateScope(_scope0_, { "/": _tagVar }); return _return; diff --git a/packages/translator/src/__tests__/fixtures/return-tag-no-var/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/return-tag-no-var/__snapshots__/html.expected/template.js index 5ae9f80dd..2c1a84f5d 100644 --- a/packages/translator/src/__tests__/fixtures/return-tag-no-var/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/return-tag-no-var/__snapshots__/html.expected/template.js @@ -1,10 +1,10 @@ import { nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; import _child from "./components/child.marko"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _child({ renderBody() { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); } }); }; diff --git a/packages/translator/src/__tests__/fixtures/style-tag-modules-default/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/style-tag-modules-default/__snapshots__/html.expected/template.js index b00e73d51..040a0f131 100644 --- a/packages/translator/src/__tests__/fixtures/style-tag-modules-default/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/style-tag-modules-default/__snapshots__/html.expected/template.js @@ -1,8 +1,8 @@ import myStyles from "virtual:./template.marko.module.css \n .content {\n color: green;\n }\n"; import { classAttr as _classAttr, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); - _write(`Hello${_markHydrateNode(_scope, "#div/1")}`); + const _scope0_ = _nextScopeId(); + _write(`Hello${_markHydrateNode(_scope0_, "#div/1")}`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/style-tag-modules-destructured/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/style-tag-modules-destructured/__snapshots__/html.expected/template.js index f77166db5..c8d7dbec2 100644 --- a/packages/translator/src/__tests__/fixtures/style-tag-modules-destructured/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/style-tag-modules-destructured/__snapshots__/html.expected/template.js @@ -1,11 +1,11 @@ import _style from "virtual:./template.marko.module.css \n .content {\n color: green;\n }\n"; import { classAttr as _classAttr, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const { content } = _style; - _write(`Hello${_markHydrateNode(_scope, "#div/1")}`); + _write(`Hello${_markHydrateNode(_scope0_, "#div/1")}`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/style-tag-type/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/style-tag-type/__snapshots__/html.expected/template.js index 3dbce8466..4f4d94414 100644 --- a/packages/translator/src/__tests__/fixtures/style-tag-type/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/style-tag-type/__snapshots__/html.expected/template.js @@ -3,7 +3,7 @@ import "virtual:./template.marko.less \n .content {\n color: blue;\n }\n"; import "virtual:./template.marko.less \n .content {\n color: red;\n }\n"; import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
    Hello
    "); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/style-tag/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/style-tag/__snapshots__/html.expected/template.js index ab2bfccc6..15bd13012 100644 --- a/packages/translator/src/__tests__/fixtures/style-tag/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/style-tag/__snapshots__/html.expected/template.js @@ -1,7 +1,7 @@ import "virtual:./template.marko.css \n .content {\n color: green;\n }\n"; import { write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
    Hello
    "); }; export default _renderer; diff --git a/packages/translator/src/__tests__/fixtures/tag-tag/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/tag-tag/__snapshots__/html.expected/template.js index d9f519972..2739df83e 100644 --- a/packages/translator/src/__tests__/fixtures/tag-tag/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/tag-tag/__snapshots__/html.expected/template.js @@ -1,11 +1,11 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as _write, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = (input, _tagVar) => { - const _scope = _nextScopeId(); - const MyTag = input => _write(`Hello ${_escapeXML(input.name)}${_markHydrateNode(_scope, "#text/0")}`); + const _scope0_ = _nextScopeId(); + const MyTag = input => _write(`Hello ${_escapeXML(input.name)}${_markHydrateNode(_scope1_, "#text/0")}`); MyTag({ name: "World", renderBody() { - const _scope = _nextScopeId(); + const _scope2_ = _nextScopeId(); } }); }; diff --git a/packages/translator/src/__tests__/fixtures/toggle-first-child/__snapshots__/dom.expected/template.js b/packages/translator/src/__tests__/fixtures/toggle-first-child/__snapshots__/dom.expected/template.js index b71878c42..f337c4eeb 100644 --- a/packages/translator/src/__tests__/fixtures/toggle-first-child/__snapshots__/dom.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/toggle-first-child/__snapshots__/dom.expected/template.js @@ -1,6 +1,6 @@ -import { data as _data, inConditionalScope as _inConditionalScope, closure as _closure, createRenderer as _createRenderer, conditional as _conditional, source as _source, setSource as _setSource, destructureSources as _destructureSources, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; +import { data as _data, inConditionalScope as _inConditionalScope, closure as _closure, createRenderer as _createRenderer, register as _register, conditional as _conditional, source as _source, setSource as _setSource, destructureSources as _destructureSources, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; const _value$ifBody = /* @__PURE__ */_closure(1, "value", [], (_scope, value) => _data(_scope["#text/0"], value)); -const _ifBody = /* @__PURE__ */_createRenderer(" ", /* next(1), get */"D ", null, [_value$ifBody]); +const _ifBody = _register("packages/translator/src/__tests__/fixtures/toggle-first-child/template.marko_1_renderer", /* @__PURE__ */_createRenderer(" ", /* next(1), get */"D ", null, [_value$ifBody])); const _if = /* @__PURE__ */_conditional("#text/0", 1, (_scope, value = _scope["value"]) => value ? _ifBody : null); const _value = /* @__PURE__ */_source("value", [_if, /* @__PURE__ */_inConditionalScope(_value$ifBody, "#text/0")]); export const attrs = /* @__PURE__ */_destructureSources([_value], (_scope, { diff --git a/packages/translator/src/__tests__/fixtures/toggle-first-child/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/toggle-first-child/__snapshots__/html.expected/template.js index 9651cfad5..927d16cd2 100644 --- a/packages/translator/src/__tests__/fixtures/toggle-first-child/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/toggle-first-child/__snapshots__/html.expected/template.js @@ -1,14 +1,26 @@ -import { write as _write, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; +import { write as _write, escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, SYMBOL_OWNER as _SYMBOL_OWNER, nextScopeId as _nextScopeId, writeHydrateScope as _writeHydrateScope, register as _register, markHydrateControlSingleNodeEnd as _markHydrateControlSingleNodeEnd, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = ({ value }, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); _write("
    "); + let _ifScopeId; + const _ifScope = {}, + _ifRenderer = () => {}; if (value) { - const _scope = _nextScopeId(); - _write(`${_escapeXML(value)}${_markHydrateNode(_scope, "#text/0")}`); + const _scope1_ = _nextScopeId(); + _write(`${_escapeXML(value)}${_markHydrateNode(_scope1_, "#text/0")}`); + _writeHydrateScope(_scope1_, Object.assign(_ifScope, { + [_SYMBOL_OWNER]: _scope0_ + })); + _register(_ifRenderer, "packages/translator/src/__tests__/fixtures/toggle-first-child/template.marko_1_renderer"); + _ifScopeId = _scope1_; } - _write("
    "); + _write(`${_markHydrateControlSingleNodeEnd(_scope0_, "#text/0", _ifScopeId)}`); + _writeHydrateScope(_scope0_, { + "#text/0!": _ifScope, + "#text/0(": _ifRenderer + }); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/update-attr/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/update-attr/__snapshots__/html.expected/template.js index e1ddfb299..ef5e71b9a 100644 --- a/packages/translator/src/__tests__/fixtures/update-attr/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/update-attr/__snapshots__/html.expected/template.js @@ -2,8 +2,8 @@ import { attr as _attr, markHydrateNode as _markHydrateNode, write as _write, ne const _renderer = ({ value }, _tagVar) => { - const _scope = _nextScopeId(); - _write(`
    ${_markHydrateNode(_scope, "#div/0")}`); + const _scope0_ = _nextScopeId(); + _write(`
    ${_markHydrateNode(_scope0_, "#div/0")}`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/update-html/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/update-html/__snapshots__/html.expected/template.js index 6e5ba35a5..ec7c6a6d6 100644 --- a/packages/translator/src/__tests__/fixtures/update-html/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/update-html/__snapshots__/html.expected/template.js @@ -2,8 +2,8 @@ import { toString as _toString, markHydrateNode as _markHydrateNode, write as _w const _renderer = ({ value }, _tagVar) => { - const _scope = _nextScopeId(); - _write(`Testing ${_toString(value)}${_markHydrateNode(_scope, "#text/0")}`); + const _scope0_ = _nextScopeId(); + _write(`Testing ${_toString(value)}${_markHydrateNode(_scope0_, "#text/0")}`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/update-text/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/update-text/__snapshots__/html.expected/template.js index 7a613153f..9bac823db 100644 --- a/packages/translator/src/__tests__/fixtures/update-text/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/update-text/__snapshots__/html.expected/template.js @@ -2,8 +2,8 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as const _renderer = ({ value }, _tagVar) => { - const _scope = _nextScopeId(); - _write(`Static ${_escapeXML(value)}${_markHydrateNode(_scope, "#text/0")}`); + const _scope0_ = _nextScopeId(); + _write(`Static ${_escapeXML(value)}${_markHydrateNode(_scope0_, "#text/0")}`); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/user-effect-cleanup/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/user-effect-cleanup/__snapshots__/html.expected/template.js index 53bd42540..b1e9e2599 100644 --- a/packages/translator/src/__tests__/fixtures/user-effect-cleanup/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/user-effect-cleanup/__snapshots__/html.expected/template.js @@ -2,12 +2,12 @@ import { escapeXML as _escapeXML, markHydrateNode as _markHydrateNode, write as const _renderer = ({ value }, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); const a = 0; const b = 0; - _write(`
    ${_escapeXML("" + a + b)}${_markHydrateNode(_scope, "#text/0")}
    `); - _writeHydrateCall(_scope, "packages/translator/src/__tests__/fixtures/user-effect-cleanup/template.marko_0_value"); - _writeHydrateScope(_scope, { + _write(`
    ${_escapeXML("" + a + b)}${_markHydrateNode(_scope0_, "#text/0")}
    `); + _writeHydrateCall(_scope0_, "packages/translator/src/__tests__/fixtures/user-effect-cleanup/template.marko_0_value"); + _writeHydrateScope(_scope0_, { "value": value }); }; diff --git a/packages/translator/src/__tests__/fixtures/yield-tag/__snapshots__/dom.expected/template.js b/packages/translator/src/__tests__/fixtures/yield-tag/__snapshots__/dom.expected/template.js index 2d1e6b682..29fd0233a 100644 --- a/packages/translator/src/__tests__/fixtures/yield-tag/__snapshots__/dom.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/yield-tag/__snapshots__/dom.expected/template.js @@ -1,14 +1,14 @@ -import { tagVarSignal as _tagVarSignal, setSource as _setSource, notifySignal as _notifySignal, createRenderer as _createRenderer, conditional as _conditional, source as _source, destructureSources as _destructureSources, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; +import { tagVarSignal as _tagVarSignal, setSource as _setSource, notifySignal as _notifySignal, createRenderer as _createRenderer, register as _register, conditional as _conditional, source as _source, destructureSources as _destructureSources, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; const _setup$elseBody = _scope => { _setSource(_scope, _tagVarSignal, 2); _notifySignal(_scope, _tagVarSignal); }; -const _elseBody = /* @__PURE__ */_createRenderer("", "", _setup$elseBody); +const _elseBody = _register("packages/translator/src/__tests__/fixtures/yield-tag/template.marko_2_renderer", /* @__PURE__ */_createRenderer("", "", _setup$elseBody)); const _setup$ifBody = _scope => { _setSource(_scope, _tagVarSignal, 1); _notifySignal(_scope, _tagVarSignal); }; -const _ifBody = /* @__PURE__ */_createRenderer("", "", _setup$ifBody); +const _ifBody = _register("packages/translator/src/__tests__/fixtures/yield-tag/template.marko_1_renderer", /* @__PURE__ */_createRenderer("", "", _setup$ifBody)); const _if = /* @__PURE__ */_conditional("#text/0", 1, (_scope, show = _scope["show"]) => show ? _ifBody : _elseBody); const _show = /* @__PURE__ */_source("show", [_if]); export const attrs = /* @__PURE__ */_destructureSources([_show], (_scope, { diff --git a/packages/translator/src/__tests__/fixtures/yield-tag/__snapshots__/html.expected/template.js b/packages/translator/src/__tests__/fixtures/yield-tag/__snapshots__/html.expected/template.js index 39a839537..0e488af7b 100644 --- a/packages/translator/src/__tests__/fixtures/yield-tag/__snapshots__/html.expected/template.js +++ b/packages/translator/src/__tests__/fixtures/yield-tag/__snapshots__/html.expected/template.js @@ -1,15 +1,33 @@ -import { nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; +import { SYMBOL_OWNER as _SYMBOL_OWNER, nextScopeId as _nextScopeId, writeHydrateScope as _writeHydrateScope, register as _register, markHydrateControlSingleNodeEnd as _markHydrateControlSingleNodeEnd, write as _write, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; const _renderer = ({ show }, _tagVar) => { - const _scope = _nextScopeId(); + const _scope0_ = _nextScopeId(); + let _ifScopeId; + const _ifScope = {}, + _ifRenderer = () => {}; if (show) { - const _scope = _nextScopeId(); + const _scope1_ = _nextScopeId(); const _return = 1; + _writeHydrateScope(_scope1_, Object.assign(_ifScope, { + [_SYMBOL_OWNER]: _scope0_ + })); + _register(_ifRenderer, "packages/translator/src/__tests__/fixtures/yield-tag/template.marko_1_renderer"); + _ifScopeId = _scope1_; } else { - const _scope = _nextScopeId(); + const _scope2_ = _nextScopeId(); const _return2 = 2; + _writeHydrateScope(_scope2_, Object.assign(_ifScope, { + [_SYMBOL_OWNER]: _scope0_ + })); + _register(_ifRenderer, "packages/translator/src/__tests__/fixtures/yield-tag/template.marko_2_renderer"); + _ifScopeId = _scope2_; } + _write(`${_markHydrateControlSingleNodeEnd(_scope0_, "#text/0", _ifScopeId)}`); + _writeHydrateScope(_scope0_, { + "#text/0!": _ifScope, + "#text/0(": _ifRenderer + }); }; export default _renderer; export const render = /* @__PURE__ */_createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/core/condition/if.ts b/packages/translator/src/core/condition/if.ts index 4be6968a0..7e8ff9beb 100644 --- a/packages/translator/src/core/condition/if.ts +++ b/packages/translator/src/core/condition/if.ts @@ -8,11 +8,18 @@ import { getSignal, setSubscriberBuilder, writeHTMLHydrateStatements, + getSerializedScopeProperties, + setHydrateScopeBuilder, + getHydrateRegisterId, } from "../../util/signals"; -import { callRuntime } from "../../util/runtime"; +import { callRuntime, importRuntime } from "../../util/runtime"; import { isCoreTagName } from "../../util/is-core-tag"; import toFirstStatementOrBlock from "../../util/to-first-statement-or-block"; -import { getOrCreateSectionId, getSectionId } from "../../util/sections"; +import { + getOrCreateSectionId, + getScopeIdentifier, + getSectionId, +} from "../../util/sections"; import { ReserveType, reserveScope, @@ -126,29 +133,61 @@ export function exitBranchAnalyze(tag: t.NodePath) { const bodySectionId = getOrCreateSectionId(tagBody); const [isLast, branches] = getBranches(tag, bodySectionId); if (isLast) { - branches[0].tag.node.extra.conditionalReferences = mergeReferenceGroups( + const rootExtra = branches[0].tag.node.extra; + const conditionalReferences = mergeReferenceGroups( sectionId, branches .filter(({ tag }) => tag.node.attributes[0]?.extra?.valueReferences) .map(({ tag }) => [tag.node.attributes[0].extra, "valueReferences"]) ); + rootExtra.conditionalReferences = conditionalReferences; + rootExtra.isStateful = !!conditionalReferences.references; + rootExtra.hoistedScopeIdentifier = + rootExtra.isStateful && tag.scope.generateUidIdentifier("ifScope"); + rootExtra.singleNodeOptimization = branches.every(({ tag }) => { + return tag.node.body.body.length === 1; + }); } } export function exitBranchTranslate(tag: t.NodePath) { const tagBody = tag.get("body"); + const sectionId = getSectionId(tag); const bodySectionId = getSectionId(tagBody); const [isLast, branches] = getBranches(tag, bodySectionId); + const rootExtra = branches[0].tag.node.extra; + const isStateful = rootExtra.isStateful; + const singleNodeOptimization = rootExtra.singleNodeOptimization; if (isOutputHTML()) { + if (isStateful) { + if (!singleNodeOptimization) { + writer.writePrependTo(tagBody)`${callRuntime( + "markHydrateScopeStart", + getScopeIdentifier(bodySectionId) + )}`; + } + setHydrateScopeBuilder(bodySectionId, (object: t.ObjectExpression) => { + return t.callExpression( + t.memberExpression(t.identifier("Object"), t.identifier("assign")), + [ + branches[0].tag.node.extra.hoistedScopeIdentifier as t.Identifier, + object, + ] + ); + }); + getSerializedScopeProperties(bodySectionId).set( + importRuntime("SYMBOL_OWNER"), + getScopeIdentifier(sectionId) + ); + } writer.flushInto(tag); writeHTMLHydrateStatements(tagBody); } if (isLast) { + const { extra } = branches[0].tag.node; if (isOutputDOM()) { - const sectionId = getSectionId(tag); - const { extra } = branches[0].tag.node; let expr: t.Expression = t.nullLiteral(); for (let i = branches.length; i--; ) { @@ -165,6 +204,10 @@ export function exitBranchTranslate(tag: t.NodePath) { ); }); + if (isStateful) { + writer.setRegisterRenderer(sectionId, true); + } + tag.remove(); if (testAttr) { @@ -187,11 +230,42 @@ export function exitBranchTranslate(tag: t.NodePath) { }; subscribe(references, signal); } else { + const write = writer.writeTo(tag); const nextTag = tag.getNextSibling(); + const ifScopeIdIdentifier = tag.scope.generateUidIdentifier("ifScopeId"); + const ifScopeIdentifier = branches[0].tag.node.extra + .hoistedScopeIdentifier as t.Identifier; + const ifRendererIdentifier = + tag.scope.generateUidIdentifier("ifRenderer"); let statement: t.Statement | undefined; for (let i = branches.length; i--; ) { - const { tag } = branches[i]; + const { tag, sectionId } = branches[i]; + + if (isStateful) { + tag.node.body.body.push( + t.expressionStatement( + callRuntime( + "register", + ifRendererIdentifier, + t.stringLiteral(getHydrateRegisterId(sectionId, "renderer")) + ) + ) as any + ); + + if (singleNodeOptimization) { + tag.node.body.body.push( + t.expressionStatement( + t.assignmentExpression( + "=", + ifScopeIdIdentifier, + getScopeIdentifier(sectionId) + ) + ) as any + ); + } + } + const [testAttr] = tag.node.attributes; const curStatement = toFirstStatementOrBlock(tag.node.body); @@ -204,7 +278,48 @@ export function exitBranchTranslate(tag: t.NodePath) { tag.remove(); } - nextTag.insertBefore(statement!); + if (!isStateful) { + nextTag.insertBefore(statement!); + } else { + nextTag.insertBefore( + [ + singleNodeOptimization && + t.variableDeclaration("let", [ + t.variableDeclarator(ifScopeIdIdentifier), + ]), + t.variableDeclaration("const", [ + t.variableDeclarator(ifScopeIdentifier, t.objectExpression([])), + t.variableDeclarator( + ifRendererIdentifier, + t.arrowFunctionExpression([], t.blockStatement([])) + ), + ]), + statement!, + ].filter(Boolean) as t.Statement[] + ); + if (singleNodeOptimization) { + write`${callRuntime( + "markHydrateControlSingleNodeEnd", + getScopeIdentifier(sectionId), + getNodeLiteral(extra.reserve!), + ifScopeIdIdentifier + )}`; + } else { + write`${callRuntime( + "markHydrateControlEnd", + getScopeIdentifier(sectionId), + getNodeLiteral(extra.reserve!) + )}`; + } + getSerializedScopeProperties(sectionId).set( + t.stringLiteral(getNodeLiteral(extra.reserve!).value + "!"), + ifScopeIdentifier + ); + getSerializedScopeProperties(sectionId).set( + t.stringLiteral(getNodeLiteral(extra.reserve!).value + "("), + ifRendererIdentifier + ); + } } } } diff --git a/packages/translator/src/core/put.ts b/packages/translator/src/core/put.ts index 1afac286e..ab245ceec 100644 --- a/packages/translator/src/core/put.ts +++ b/packages/translator/src/core/put.ts @@ -5,7 +5,10 @@ import * as walks from "../util/walks"; import { callRuntime } from "../util/runtime"; import { isOutputHTML } from "../util/marko-config"; import customTag from "../visitors/tag/custom-tag"; -import { initContextProvider } from "../util/signals"; +import { + initContextProvider, + writeHTMLHydrateStatements, +} from "../util/signals"; import { reserveScope, ReserveType } from "../util/reserve"; import { getOrCreateSectionId, getSectionId } from "../util/sections"; @@ -92,6 +95,7 @@ export default { assertNoVar(tag); if (isOutputHTML()) { writer.flushInto(tag); + writeHTMLHydrateStatements(tag.get("body")); tag.insertAfter(t.expressionStatement(callRuntime("popContext"))); } tag.replaceWithMultiple(tag.node.body.body); diff --git a/packages/translator/src/util/runtime.ts b/packages/translator/src/util/runtime.ts index 0b4e1bc04..5fdd9376a 100644 --- a/packages/translator/src/util/runtime.ts +++ b/packages/translator/src/util/runtime.ts @@ -26,7 +26,11 @@ const pureFunctions: Array< "inConditionalScope", ]; -export function importRuntime(name: string) { +export function importRuntime( + name: + | keyof typeof import("@marko/runtime-fluurt/src/dom") + | keyof typeof import("@marko/runtime-fluurt/src/html") +) { const { output } = getMarkoOpts(); return importNamed(currentProgramPath.hub.file, getRuntimePath(output), name); } @@ -38,7 +42,7 @@ export function callRuntime( ...args: Array[1][number] | Falsy> ) { const callExpression = t.callExpression( - importRuntime(name as string), + importRuntime(name), filterArguments(args) ); if ( diff --git a/packages/translator/src/util/sections.ts b/packages/translator/src/util/sections.ts index 2a3af8c7a..3df760a5d 100644 --- a/packages/translator/src/util/sections.ts +++ b/packages/translator/src/util/sections.ts @@ -87,6 +87,12 @@ export function createSectionState( ] as const; } +export const [getScopeIdentifier] = createSectionState( + "scopeIdentifier", + (sectionId) => + currentProgramPath.scope.generateUidIdentifier(`scope${sectionId}_`) +); + export function forEachSectionId(fn: (id: number) => void) { const { nextSectionId } = currentProgramPath.node.extra; for (let sectionId = 0; sectionId < nextSectionId!; sectionId++) { diff --git a/packages/translator/src/util/signals.ts b/packages/translator/src/util/signals.ts index 635a0a7e8..6bd8992b0 100644 --- a/packages/translator/src/util/signals.ts +++ b/packages/translator/src/util/signals.ts @@ -5,6 +5,7 @@ import { createSectionState, forEachSectionIdReverse, getOrCreateSectionId, + getScopeIdentifier, } from "./sections"; import { Reserve, insertReserve, getNodeLiteral } from "./reserve"; import { currentProgramPath, scopeIdentifier } from "../visitors/program"; @@ -63,6 +64,15 @@ const [forceHydrateScope, _setForceHydrateScope] = createSectionState< undefined | true >("forceHydrateScope"); +export const [getSerializedScopeProperties] = createSectionState< + Map +>("serializedScopeProperties", () => new Map()); + +export const [getHydrateScopeBuilder, setHydrateScopeBuilder] = + createSectionState t.Expression)>( + "hydrateScopeBuilder" + ); + export function setForceHydrateScope(sectionId: number) { _setForceHydrateScope(sectionId, true); } @@ -439,7 +449,7 @@ export function addHydrateReferences(signal: Signal, expression: t.Expression) { export function getHydrateRegisterId( sectionId: number, - references: ReferenceGroup["references"] + references: string | ReferenceGroup["references"] ) { const { markoOpts: { optimize }, @@ -447,7 +457,9 @@ export function getHydrateRegisterId( } = currentProgramPath.hub.file; let name = ""; if (references) { - if (Array.isArray(references)) { + if (typeof references === "string") { + name += `_${references}`; + } else if (Array.isArray(references)) { for (const ref of references) { name += `_${ref.name}`; } @@ -728,6 +740,7 @@ export function writeHTMLHydrateStatements( ) { const sectionId = getOrCreateSectionId(path); const allSignals = Array.from(getSignals(sectionId).values()); + const scopeIdentifier = getScopeIdentifier(sectionId); path.unshiftContainer( "body", @@ -777,14 +790,22 @@ export function writeHTMLHydrateStatements( ); } + const additionalProperties = getSerializedScopeProperties(sectionId); + for (const [key, value] of additionalProperties) { + serializedProperties.push(t.objectProperty(key, value, !t.isLiteral(key))); + } + if (serializedProperties.length || forceHydrateScope(sectionId)) { + const hydrateScopeBuilder = getHydrateScopeBuilder(sectionId); path.pushContainer( "body", t.expressionStatement( callRuntime( "writeHydrateScope", scopeIdentifier, - t.objectExpression(serializedProperties) + hydrateScopeBuilder + ? hydrateScopeBuilder(t.objectExpression(serializedProperties)) + : t.objectExpression(serializedProperties) ) ) ); diff --git a/packages/translator/src/util/writer.ts b/packages/translator/src/util/writer.ts index 893c03e98..827e77624 100644 --- a/packages/translator/src/util/writer.ts +++ b/packages/translator/src/util/writer.ts @@ -1,12 +1,16 @@ import { types as t } from "@marko/compiler"; -import { getSectionId, createSectionState } from "../util/sections"; +import { + getSectionId, + createSectionState, + getScopeIdentifier, +} from "../util/sections"; import { callRuntime } from "./runtime"; import toTemplateOrStringLiteral, { appendLiteral, } from "./to-template-string-or-literal"; import { getWalkString } from "./walks"; import { getSetup } from "./signals"; -import { currentProgramPath, scopeIdentifier } from "../visitors/program"; +import { currentProgramPath } from "../visitors/program"; import { isOutputHTML } from "./marko-config"; import { getNodeLiteral, ReserveType } from "./reserve"; @@ -25,6 +29,13 @@ const [getWrites] = createSectionState<(string | t.Expression)[]>( () => [""] ); +const [getRegisterRenderer, setRegisterRenderer] = createSectionState( + "registerRenderer", + () => false +); + +export { setRegisterRenderer }; + export function writeTo(path: t.NodePath) { const sectionId = getSectionId(path); return ( @@ -41,6 +52,22 @@ export function writeTo(path: t.NodePath) { }; } +export function writePrependTo(path: t.NodePath) { + const sectionId = getSectionId(path); + return ( + strs: TemplateStringsArray, + ...exprs: Array + ): void => { + const exprsLen = exprs.length; + const writes = getWrites(sectionId); + writes[0] += strs[exprsLen]; + + for (let i = 0; i < exprsLen; i++) { + writes.unshift(strs[i], exprs[i]); + } + }; +} + export function consumeHTML(path: t.NodePath) { const writes = getWrites(getSectionId(path)); const result = toTemplateOrStringLiteral(writes); @@ -83,10 +110,12 @@ export function getSectionMeta(sectionId: number) { apply: getSetup(sectionId), walks: getWalkString(sectionId), writes: toTemplateOrStringLiteral(writes) || t.stringLiteral(""), + register: getRegisterRenderer(sectionId), }; } export function markNode(path: t.NodePath) { + const sectionId = getSectionId(path); const { reserve } = path.node.extra; if (reserve?.type !== ReserveType.Visit) { @@ -98,7 +127,7 @@ export function markNode(path: t.NodePath) { if (isOutputHTML()) { writeTo(path)`${callRuntime( "markHydrateNode", - scopeIdentifier, + getScopeIdentifier(sectionId), getNodeLiteral(reserve!) )}`; } diff --git a/packages/translator/src/visitors/program/dom.ts b/packages/translator/src/visitors/program/dom.ts index dfe9701d9..33a9753bd 100644 --- a/packages/translator/src/visitors/program/dom.ts +++ b/packages/translator/src/visitors/program/dom.ts @@ -1,7 +1,12 @@ import { types as t } from "@marko/compiler"; import { callRuntime } from "../../util/runtime"; import { forEachSectionIdReverse, getSectionId } from "../../util/sections"; -import { getClosures, getSignal, writeSignals } from "../../util/signals"; +import { + getClosures, + getHydrateRegisterId, + getSignal, + writeSignals, +} from "../../util/signals"; import * as writer from "../../util/writer"; import { visit } from "../../util/walks"; import { scopeIdentifier } from "."; @@ -23,21 +28,30 @@ export default { writeSignals(childSectionId); if (childSectionId !== sectionId) { - const { walks, writes, apply } = + const { walks, writes, apply, register } = writer.getSectionMeta(childSectionId); const closures = getClosures(childSectionId); const identifier = writer.getRenderer(childSectionId); + const renderer = callRuntime( + "createRenderer", + writes, + walks, + apply, + closures.length && t.arrayExpression(closures) + ); program.node.body.push( t.variableDeclaration("const", [ t.variableDeclarator( identifier, - callRuntime( - "createRenderer", - writes, - walks, - apply, - closures.length && t.arrayExpression(closures) - ) + register + ? callRuntime( + "register", + t.stringLiteral( + getHydrateRegisterId(childSectionId, "renderer") + ), + renderer + ) + : renderer ), ]) ); diff --git a/packages/translator/src/visitors/program/index.ts b/packages/translator/src/visitors/program/index.ts index 550037901..69f831abb 100644 --- a/packages/translator/src/visitors/program/index.ts +++ b/packages/translator/src/visitors/program/index.ts @@ -1,5 +1,9 @@ import { types as t } from "@marko/compiler"; -import { getMarkoOpts, isOutputHTML } from "../../util/marko-config"; +import { + getMarkoOpts, + isOutputDOM, + isOutputHTML, +} from "../../util/marko-config"; import programHTML from "./html"; import programDOM from "./dom"; import { startSection } from "../../util/sections"; @@ -44,7 +48,9 @@ export default { enter(program: t.NodePath) { previousProgramPath.set(program, currentProgramPath); currentProgramPath = program; - scopeIdentifier = program.scope.generateUidIdentifier("scope"); + scopeIdentifier = isOutputDOM() + ? program.scope.generateUidIdentifier("scope") + : (null as any as t.Identifier); if (getMarkoOpts().output === ("hydrate" as "html")) { program.skip(); program.node.body = [ diff --git a/packages/translator/src/visitors/tag/custom-tag.ts b/packages/translator/src/visitors/tag/custom-tag.ts index 78e3fa067..9575761f2 100644 --- a/packages/translator/src/visitors/tag/custom-tag.ts +++ b/packages/translator/src/visitors/tag/custom-tag.ts @@ -16,6 +16,7 @@ import { startSection, getSectionId, getOrCreateSectionId, + getScopeIdentifier, } from "../../util/sections"; import trackReferences, { mergeReferenceGroups, @@ -161,6 +162,7 @@ function translateHTML(tag: t.NodePath) { )[0] .skip(); } else if (tagVar) { + const sectionId = getSectionId(tag); translateVar( tag, callExpression( @@ -171,15 +173,15 @@ function translateHTML(tag: t.NodePath) { t.arrowFunctionExpression([], t.blockStatement([])), t.stringLiteral( getHydrateRegisterId( - getSectionId(tag), + sectionId, (node.var as t.Identifier).extra?.reserve ) ), - scopeIdentifier + getScopeIdentifier(sectionId) ) ) ); - setForceHydrateScope(getSectionId(tag)); + setForceHydrateScope(sectionId); tag.remove(); } else { tag.replaceWith(callStatement(tagIdentifier, attrsObject))[0].skip();