@llui/compiler 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -47,10 +47,11 @@ export function elementRewriteModule(options) {
47
47
  usesElSplit: false,
48
48
  usesElTemplate: false,
49
49
  usesCloneStaticTemplate: false,
50
+ usesBindUncertain: false,
50
51
  };
51
52
  if (!slot)
52
53
  ctx.analysis.perModule.set(ELEMENT_REWRITE_SLOT, state);
53
- const transformed = tryTransformElementCall(node, importedHelpers, fieldBits, state.compiled, state.bailed, ctx.factory, fieldBitsHi);
54
+ const transformed = tryTransformElementCall(node, importedHelpers, fieldBits, state.compiled, state.bailed, ctx.factory, fieldBitsHi, state);
54
55
  if (!transformed)
55
56
  return null;
56
57
  if (ts.isIdentifier(transformed.expression)) {
@@ -180,7 +181,7 @@ function emitStaticProp(staticProps, f, kind, resolvedKey, value) {
180
181
  }
181
182
  }
182
183
  // ── Pass 1: Element → elSplit ────────────────────────────────────
183
- function tryTransformElementCall(node, helpers, fieldBits, compiled, bailed, f, fieldBitsHi = new Map()) {
184
+ function tryTransformElementCall(node, helpers, fieldBits, compiled, bailed, f, fieldBitsHi = new Map(), state) {
184
185
  if (!ts.isIdentifier(node.expression))
185
186
  return null;
186
187
  const localName = node.expression.text;
@@ -281,8 +282,28 @@ function tryTransformElementCall(node, helpers, fieldBits, compiled, bailed, f,
281
282
  return null;
282
283
  }
283
284
  if (classified.kind === 'bail') {
284
- bailed.add(localName);
285
- return null;
285
+ // v0.4 size-cut: instead of bailing the whole element call to the
286
+ // runtime element-helper (which keeps `createElement` + ~1.8 kB of
287
+ // elements.ts alive), emit a `__bindUncertain` call in the static-
288
+ // fn that dispatches at mount time on `typeof value`. Function
289
+ // values become reactive bindings (FULL_MASK gating — the
290
+ // compiler couldn't analyze the accessor); non-function values
291
+ // apply directly via the regular applyBinding path. Net effect:
292
+ // we keep the elSplit compilation and lose the elements.ts
293
+ // fallback.
294
+ const kind = classifyKind(key);
295
+ const resolvedKey = resolveKey(key, kind);
296
+ staticProps.push(f.createExpressionStatement(f.createCallExpression(f.createIdentifier('__bindUncertain'), undefined, [
297
+ f.createIdentifier('__e'),
298
+ f.createStringLiteral(kind),
299
+ resolvedKey === undefined
300
+ ? f.createIdentifier('undefined')
301
+ : f.createStringLiteral(resolvedKey),
302
+ value,
303
+ ])));
304
+ if (state)
305
+ state.usesBindUncertain = true;
306
+ continue;
286
307
  }
287
308
  if (classified.kind === 'static-literal') {
288
309
  // Fall through to emitStaticProp (`__e.disabled = X`). Safe because
@@ -610,7 +631,7 @@ function collectUsedHelpers(node, out) {
610
631
  function buildTemplateHTML(node) {
611
632
  let html = `<${node.tag}`;
612
633
  for (const [key, value] of node.staticAttrs) {
613
- html += ` ${key}="${escapeAttr(value)}"`;
634
+ html += formatStaticAttr(key, value);
614
635
  }
615
636
  html += '>';
616
637
  if (VOID_ELEMENTS.has(node.tag))
@@ -854,7 +875,11 @@ function isStaticChildren(children) {
854
875
  });
855
876
  }
856
877
  function buildStaticHTML(tag, staticProps, children, _f) {
857
- // Extract static attributes from staticFn statements
878
+ // Extract static attributes from staticFn statements. Any statement that
879
+ // doesn't match the recognized "static prop assignment" shapes forces a
880
+ // bail to the runtime elSplit path — silently skipping would drop the
881
+ // statement's effect (e.g. `__bindUncertain(__e, ...)` calls that bind
882
+ // unresolvable values at mount).
858
883
  let attrs = '';
859
884
  for (const stmt of staticProps) {
860
885
  if (!ts.isExpressionStatement(stmt))
@@ -864,8 +889,10 @@ function buildStaticHTML(tag, staticProps, children, _f) {
864
889
  if (ts.isBinaryExpression(expr) && ts.isPropertyAccessExpression(expr.left)) {
865
890
  const prop = expr.left.name.text;
866
891
  if (prop === 'className' && ts.isStringLiteral(expr.right)) {
867
- attrs += ` class="${escapeAttr(expr.right.text)}"`;
892
+ attrs += formatStaticAttr('class', expr.right.text);
893
+ continue;
868
894
  }
895
+ return null;
869
896
  }
870
897
  // __e.setAttribute('key', 'value')
871
898
  if (ts.isCallExpression(expr) && ts.isPropertyAccessExpression(expr.expression)) {
@@ -873,13 +900,17 @@ function buildStaticHTML(tag, staticProps, children, _f) {
873
900
  const key = expr.arguments[0];
874
901
  const val = expr.arguments[1];
875
902
  if (key && val && ts.isStringLiteral(key) && ts.isStringLiteral(val)) {
876
- attrs += ` ${key.text}="${escapeAttr(val.text)}"`;
877
- }
878
- else {
879
- return null; // non-literal attribute
903
+ attrs += formatStaticAttr(key.text, val.text);
904
+ continue;
880
905
  }
906
+ return null; // non-literal attribute
881
907
  }
908
+ return null;
882
909
  }
910
+ // Unrecognized statement shape — bail to elSplit. This catches
911
+ // `__bindUncertain(...)` and any future emission added to staticProps
912
+ // that the static-HTML extractor doesn't know how to serialise.
913
+ return null;
883
914
  }
884
915
  // Extract text children
885
916
  let inner = '';
@@ -908,6 +939,18 @@ function escapeHTML(s) {
908
939
  function escapeAttr(s) {
909
940
  return s.replace(/&/g, '&amp;').replace(/"/g, '&quot;');
910
941
  }
942
+ // Per HTML5, attribute values may appear unquoted when they contain none of
943
+ // the unsafe characters listed below. Eliminating the surrounding quotes
944
+ // saves 2 bundle bytes per static attribute — multiplied across each row
945
+ // template the compiler emits via `__cloneStaticTemplate`. Tier 9.
946
+ const UNQUOTED_ATTR_VALUE = /^[^\s"'`=<>&]+$/;
947
+ function formatStaticAttr(key, value) {
948
+ if (value === '')
949
+ return ` ${key}=""`;
950
+ if (UNQUOTED_ATTR_VALUE.test(value))
951
+ return ` ${key}=${value}`;
952
+ return ` ${key}="${escapeAttr(value)}"`;
953
+ }
911
954
  function emitTemplateClone(html, f) {
912
955
  // Emits: __cloneStaticTemplate("<html>")
913
956
  //
@@ -1 +1 @@
1
- {"version":3,"file":"element-rewrite.js","sourceRoot":"","sources":["../../src/modules/element-rewrite.ts"],"names":[],"mappings":"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","sourcesContent":["// `element-rewrite` — transforms `div(...)` / `button(...)` / etc.\n// (every helper in `ELEMENT_HELPERS`) into `elSplit(...)` /\n// `elTemplate(...)` / `__cloneStaticTemplate(...)` calls.\n//\n// The transform classifies each prop of the element call:\n// - Static literals → emit as a one-time `__e.prop = X` setter\n// - Event handlers (`onClick`, `onInput`, ...) → emit as\n// `[eventName, handler]` tuples\n// - Reactive accessors (arrows / `memo(arrow)` / identifier-bound\n// forms) → emit as `[mask, kind, key, accessor]` binding tuples\n// - Per-item shapes (`item.field`, `item((r) => r.x)`) inside\n// each() render callbacks → emit with `FULL_MASK` since the\n// accessor closes over a per-row argument the runtime supplies\n//\n// When the element has only static + event content, the rewrite\n// further specializes into `__cloneStaticTemplate(...)` (prerendered\n// HTML clone). When the element's subtree has multiple nested\n// elements, `analyzeSubtree` + `emitSubtreeTemplate` collapse the\n// whole subtree into a single `elTemplate(...)` call with a\n// patch-by-walk function.\n//\n// Owned by this module since v2c/decomp-22. The thin-wrapper\n// migration (decomp-17) put the registry on the call path; the\n// helpers (and `tryTransformElementCall` itself) moved here in this\n// commit so the module is self-contained.\n//\n// Fires top-down (`transformCallEnter`). Sets module-level state\n// via `ELEMENT_REWRITE_SLOT` for the umbrella's `cleanupImports`\n// to decide whether `elSplit` / `elTemplate` / `__cloneStaticTemplate`\n// need their runtime imports.\n\nimport ts from 'typescript'\nimport type { CompilerModule } from '../module.js'\nimport { resolveLocalConstInitializer, isMemoCallWithArrowArg } from '../accessor-resolver.js'\nimport { computeAccessorMask, createMaskLiteral } from '../transform.js'\n\n// ─── Module wiring ────────────────────────────────────────────────\n\nexport interface ElementRewriteModuleOptions {\n /** localName → originalName for element-helper imports (alias-aware). */\n importedHelpers: Map<string, string>\n fieldBits: Map<string, number>\n fieldBitsHi: Map<string, number>\n}\n\nexport interface ElementRewriteSlot {\n /** Helpers whose call sites the module successfully rewrote. */\n compiled: Set<string>\n /** Helpers that bailed (kept their import — runtime falls back). */\n bailed: Set<string>\n /** Module emitted at least one `elSplit(...)` call. */\n usesElSplit: boolean\n /** Module emitted at least one `elTemplate(...)` call. */\n usesElTemplate: boolean\n /** Module emitted at least one `__cloneStaticTemplate(...)` call. */\n usesCloneStaticTemplate: boolean\n}\n\nexport const ELEMENT_REWRITE_SLOT = 'element-rewrite:state'\n\nexport function elementRewriteModule(options: ElementRewriteModuleOptions): CompilerModule {\n const { importedHelpers, fieldBits, fieldBitsHi } = options\n return {\n name: 'element-rewrite',\n compilerVersion: '^0.3.0',\n diagnostics: [],\n visitors: {},\n\n transformCallEnter(ctx, node) {\n const slot = ctx.analysis.perModule.get(ELEMENT_REWRITE_SLOT) as\n | ElementRewriteSlot\n | undefined\n const state: ElementRewriteSlot = slot ?? {\n compiled: new Set<string>(),\n bailed: new Set<string>(),\n usesElSplit: false,\n usesElTemplate: false,\n usesCloneStaticTemplate: false,\n }\n if (!slot) ctx.analysis.perModule.set(ELEMENT_REWRITE_SLOT, state)\n\n const transformed = tryTransformElementCall(\n node,\n importedHelpers,\n fieldBits,\n state.compiled,\n state.bailed,\n ctx.factory,\n fieldBitsHi,\n )\n if (!transformed) return null\n\n if (ts.isIdentifier(transformed.expression)) {\n if (transformed.expression.text === 'elTemplate') state.usesElTemplate = true\n else if (transformed.expression.text === 'elSplit') state.usesElSplit = true\n else if (transformed.expression.text === '__cloneStaticTemplate')\n state.usesCloneStaticTemplate = true\n }\n return transformed\n },\n }\n}\n\n// ─── Rewrite implementation (moved verbatim from transform.ts) ─────\n\nconst PROP_KEYS = new Set([\n 'value',\n 'checked',\n 'selected',\n 'disabled',\n 'readOnly',\n 'multiple',\n 'indeterminate',\n 'defaultValue',\n 'defaultChecked',\n 'innerHTML',\n 'textContent',\n])\n\ntype BindingKind = 'text' | 'prop' | 'attr' | 'class' | 'style'\n\n/**\n * A `value` at a reactive-prop position — classified for the compiler.\n *\n * Element-helper props (`{ disabled: X, class: X, title: X, ... }`) and the\n * driver accessor of structural primitives (`each.items`, `branch.on`,\n * `show.when`) accept any callable that takes the state and returns a\n * value. The compiler must distinguish recognized shapes from values it\n * can't safely classify (imports, parameters, opaque expressions) — the\n * latter must bail to the runtime helper, never to a static assignment.\n *\n * Bailing is load-bearing: emitting `__e.disabled = identifier` statically\n * when the runtime value happens to be a function silently binds the\n * function ref to the boolean DOM property and never re-runs.\n */\ntype ResolvedReactiveBinding =\n | {\n kind: 'arrow'\n accessor: ts.ArrowFunction | ts.FunctionExpression\n valueForBinding: ts.Expression\n }\n | {\n kind: 'fn-decl'\n accessor: ts.FunctionDeclaration\n valueForBinding: ts.Expression\n }\n | {\n kind: 'memo-call'\n accessor: ts.ArrowFunction | ts.FunctionExpression\n valueForBinding: ts.Expression\n }\n\ntype ResolvedReactiveValue =\n | ResolvedReactiveBinding\n | { kind: 'static-literal' }\n | { kind: 'bail' }\n | null\n\nfunction isStaticPrimitiveLiteral(expr: ts.Expression): boolean {\n return (\n ts.isStringLiteral(expr) ||\n ts.isNumericLiteral(expr) ||\n ts.isNoSubstitutionTemplateLiteral(expr) ||\n expr.kind === ts.SyntaxKind.TrueKeyword ||\n expr.kind === ts.SyntaxKind.FalseKeyword ||\n expr.kind === ts.SyntaxKind.NullKeyword\n )\n}\n\n/**\n * Classify a reactive-prop value. See `ResolvedReactiveValue` for the\n * contract. Returns `null` only when the value is none of the recognized\n * shapes (caller can fall back to its own branches — currently only\n * `tryTransformElementCall` does this for `isPerItemFieldAccess` /\n * `isHoistedPerItem`).\n */\nfunction classifyReactiveValue(value: ts.Expression): ResolvedReactiveValue {\n // Inline arrow / function expression at the call site\n if (ts.isArrowFunction(value) || ts.isFunctionExpression(value)) {\n return { kind: 'arrow', accessor: value, valueForBinding: value }\n }\n\n // Inline `memo(arrow)` at the call site\n if (isMemoCallWithArrowArg(value)) {\n return {\n kind: 'memo-call',\n accessor: value.arguments[0] as ts.ArrowFunction | ts.FunctionExpression,\n valueForBinding: value,\n }\n }\n\n // Identifier — resolve and classify the resolved declaration\n if (ts.isIdentifier(value)) {\n const resolved = resolveLocalConstInitializer(value)\n if (!resolved) {\n // Imported / parameter / unbound — can't prove it's a primitive,\n // can't prove it's a function. Caller must bail to runtime.\n return { kind: 'bail' }\n }\n if (ts.isArrowFunction(resolved) || ts.isFunctionExpression(resolved)) {\n return { kind: 'arrow', accessor: resolved, valueForBinding: value }\n }\n if (ts.isFunctionDeclaration(resolved)) {\n return { kind: 'fn-decl', accessor: resolved, valueForBinding: value }\n }\n if (isMemoCallWithArrowArg(resolved)) {\n return {\n kind: 'memo-call',\n accessor: resolved.arguments[0] as ts.ArrowFunction | ts.FunctionExpression,\n valueForBinding: value,\n }\n }\n if (isStaticPrimitiveLiteral(resolved)) {\n return { kind: 'static-literal' }\n }\n // Resolved to something else (object/array/expression) — conservative\n // bail. We don't know if the runtime value is a function; the runtime\n // element helper handles both cases correctly.\n return { kind: 'bail' }\n }\n\n // Static literals at the call site\n if (isStaticPrimitiveLiteral(value)) {\n return { kind: 'static-literal' }\n }\n\n // CallExpression — caller decides (per-item, etc.)\n return null\n}\n\nfunction classifyKind(key: string): BindingKind {\n if (key === 'class' || key === 'className') return 'class'\n if (key.startsWith('style.')) return 'style'\n if (PROP_KEYS.has(key)) return 'prop'\n return 'attr'\n}\n\nfunction resolveKey(key: string, kind: BindingKind): string {\n if (kind === 'class') return 'class'\n if (kind === 'style') return key.slice(6)\n if (kind === 'prop') return key\n if (key === 'className') return 'class'\n return key\n}\n\n// ─── emitStaticProp + tryTransformElementCall ────────────────────\n\nfunction emitStaticProp(\n staticProps: ts.Statement[],\n f: ts.NodeFactory,\n kind: BindingKind,\n resolvedKey: string,\n value: ts.Expression,\n): void {\n switch (kind) {\n case 'class':\n staticProps.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), 'className'),\n ts.SyntaxKind.EqualsToken,\n value,\n ),\n ),\n )\n break\n case 'prop':\n staticProps.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), resolvedKey),\n ts.SyntaxKind.EqualsToken,\n value,\n ),\n ),\n )\n break\n case 'style':\n staticProps.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), 'style'),\n 'setProperty',\n ),\n undefined,\n [f.createStringLiteral(resolvedKey), value],\n ),\n ),\n )\n break\n default: // attr\n staticProps.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), 'setAttribute'),\n undefined,\n [f.createStringLiteral(resolvedKey), value],\n ),\n ),\n )\n }\n}\n\n// ── Pass 1: Element → elSplit ────────────────────────────────────\n\nfunction tryTransformElementCall(\n node: ts.CallExpression,\n helpers: Map<string, string>,\n fieldBits: Map<string, number>,\n compiled: Set<string>,\n bailed: Set<string>,\n f: ts.NodeFactory,\n fieldBitsHi: Map<string, number> = new Map(),\n): ts.CallExpression | null {\n if (!ts.isIdentifier(node.expression)) return null\n const localName = node.expression.text\n const originalName = helpers.get(localName)\n if (!originalName) return null\n\n // Handle children-only overload: `div([...])` — first arg is the children array.\n // Normalize to props=undefined, children=firstArg so downstream logic works.\n const firstArg = node.arguments[0]\n const usesChildrenOnlyOverload = firstArg && ts.isArrayLiteralExpression(firstArg)\n const propsArg = usesChildrenOnlyOverload ? undefined : firstArg\n if (propsArg && !ts.isObjectLiteralExpression(propsArg)) {\n bailed.add(localName)\n return null\n }\n // Bail on spread assignments (`...parts.root`) — the compiler cannot\n // statically classify spread contents, and silently dropping them would\n // break consumers (e.g. @llui/components parts spreading). Fall back to\n // the runtime element helper so spreads are applied normally.\n if (\n propsArg &&\n ts.isObjectLiteralExpression(propsArg) &&\n propsArg.properties.some((p) => ts.isSpreadAssignment(p))\n ) {\n bailed.add(localName)\n return null\n }\n\n const tag = f.createStringLiteral(originalName)\n\n // Classify props\n const staticProps: ts.Statement[] = []\n const events: ts.ArrayLiteralExpression[] = []\n const bindings: ts.ArrayLiteralExpression[] = []\n\n if (propsArg && ts.isObjectLiteralExpression(propsArg)) {\n for (const prop of propsArg.properties) {\n // Handle both PropertyAssignment (key: value) and ShorthandPropertyAssignment ({ id })\n let key: string\n let value: ts.Expression\n\n if (ts.isPropertyAssignment(prop)) {\n if (!ts.isIdentifier(prop.name) && !ts.isStringLiteral(prop.name)) continue\n key = ts.isIdentifier(prop.name) ? prop.name.text : prop.name.text\n value = prop.initializer\n } else if (ts.isShorthandPropertyAssignment(prop)) {\n key = prop.name.text\n value = prop.name // The identifier itself is the value\n } else {\n continue\n }\n if (key === 'key') continue\n\n // Event handler\n if (/^on[A-Z]/.test(key)) {\n const eventName = key.slice(2).toLowerCase()\n events.push(f.createArrayLiteralExpression([f.createStringLiteral(eventName), value]))\n continue\n }\n\n // Per-item shapes — handled before the general classifier because\n // they appear inside `each().render` callbacks where `item` is a\n // closed-over per-row accessor (zero-arg). The resolver above can't\n // see them; they're shape-matched syntactically.\n if (isPerItemFieldAccess(value) || isHoistedPerItem(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push(\n f.createArrayLiteralExpression([\n createMaskLiteral(f, 0xffffffff | 0),\n f.createStringLiteral(kind),\n f.createStringLiteral(resolvedKey),\n value,\n ]),\n )\n continue\n }\n if (ts.isCallExpression(value) && isPerItemCall(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push(\n f.createArrayLiteralExpression([\n createMaskLiteral(f, 0xffffffff | 0),\n f.createStringLiteral(kind),\n f.createStringLiteral(resolvedKey),\n value,\n ]),\n )\n continue\n }\n\n // Classify the value at a reactive-prop position:\n // - inline arrow / fn-expr at the call site\n // - inline `memo(arrow)` at the call site\n // - Identifier referencing a const-bound arrow/fn-expr in scope\n // - Identifier referencing a hoisted function declaration in scope\n // - Identifier referencing `const x = memo(arrow)` in scope\n // - Identifier referencing a static primitive literal\n // - Anything else (imports, parameters, opaque expressions) — bail\n // to runtime; the runtime helper handles `typeof v === 'function'`\n // correctly for both function and primitive values.\n const classified = classifyReactiveValue(value)\n if (classified === null) {\n // Unknown shape (a CallExpression that isn't memo/per-item, etc.)\n // — historically bailed to runtime. Preserve that.\n bailed.add(localName)\n return null\n }\n if (classified.kind === 'bail') {\n bailed.add(localName)\n return null\n }\n if (classified.kind === 'static-literal') {\n // Fall through to emitStaticProp (`__e.disabled = X`). Safe because\n // we proved X is a primitive.\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n emitStaticProp(staticProps, f, kind, resolvedKey, value)\n continue\n }\n // 'arrow' | 'fn-decl' | 'memo-call' — emit as a binding tuple. Mask is\n // analyzed from the resolved accessor body (or the inner arrow inside\n // a memo() call); the value emitted into the binding tuple is what the\n // runtime calls as `accessor(state)` — for inline arrows we keep the\n // arrow itself (preserves the historical inlining behavior), for\n // identifier-bound forms we keep the identifier so consumers see\n // a single canonical reference (and `memo()` proxies aren't rebuilt\n // per render).\n {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n const { mask, maskHi, readsState } = computeAccessorMask(\n classified.accessor,\n fieldBits,\n undefined,\n fieldBitsHi,\n )\n\n // Zero-mask constant folding only applies to inline arrows whose body\n // we can safely call at compile time. For identifier-bound forms\n // (`accessor !== value`) we skip the fold — calling the identifier's\n // declaration at compile time would be unsafe (different scope) and\n // calling the identifier in the emitted output would defeat the point.\n if (\n classified.kind === 'arrow' &&\n classified.accessor === value &&\n mask === 0 &&\n maskHi === 0 &&\n !readsState\n ) {\n emitStaticProp(\n staticProps,\n f,\n kind,\n resolvedKey,\n f.createCallExpression(classified.accessor, undefined, []),\n )\n continue\n }\n\n const effectiveMask = mask === 0 && maskHi === 0 && readsState ? 0xffffffff | 0 : mask\n // Emit a 5-tuple only when the accessor reads a high-word\n // prefix (positions 31..61). For the common ≤31-prefix case\n // the emit stays byte-identical to the pre-multi-word baseline,\n // and stale runtime bundles ignore the 5th slot.\n const tupleEls = [\n createMaskLiteral(f, effectiveMask),\n f.createStringLiteral(kind),\n f.createStringLiteral(resolvedKey),\n classified.valueForBinding,\n ]\n if (maskHi !== 0) tupleEls.push(createMaskLiteral(f, maskHi))\n bindings.push(f.createArrayLiteralExpression(tupleEls))\n }\n }\n }\n\n // Build elSplit args\n const staticFn =\n staticProps.length > 0\n ? f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, '__e')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(staticProps, true),\n )\n : f.createNull()\n\n const eventsArr = events.length > 0 ? f.createArrayLiteralExpression(events) : f.createNull()\n\n const bindingsArr =\n bindings.length > 0 ? f.createArrayLiteralExpression(bindings) : f.createNull()\n\n const children = usesChildrenOnlyOverload\n ? node.arguments[0]!\n : (node.arguments[1] ?? f.createNull())\n\n compiled.add(localName)\n\n // Subtree collapse: if children contain nested element helpers,\n // collapse the entire tree into a single elTemplate() call\n const analyzed = analyzeSubtree(node, helpers, fieldBits, [], fieldBitsHi)\n if (analyzed && hasNestedElements(analyzed)) {\n // Mark all descendant helpers as compiled for import cleanup\n collectUsedHelpers(analyzed, compiled)\n const templateCall = emitSubtreeTemplate(analyzed, fieldBits, f)\n return templateCall\n }\n\n // Static subtree prerendering: if no events, no bindings, and children\n // are all static text, emit a <template> clone\n if (events.length === 0 && bindings.length === 0 && isStaticChildren(children)) {\n const html = buildStaticHTML(originalName, staticProps, children, f)\n if (html) {\n return emitTemplateClone(html, f) as ts.CallExpression\n }\n }\n\n const call = f.createCallExpression(f.createIdentifier('elSplit'), undefined, [\n tag,\n staticFn,\n eventsArr,\n bindingsArr,\n children,\n ])\n ts.addSyntheticLeadingComment(call, ts.SyntaxKind.MultiLineCommentTrivia, '@__PURE__', false)\n return call\n}\n\n// ─── Analysis + per-item heuristics ───────────────────────────────\n\nconst VOID_ELEMENTS = new Set([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n])\n\ninterface AnalyzedNode {\n tag: string\n localName: string\n /** Static HTML attributes (class, id, etc.) */\n staticAttrs: Array<[string, string]>\n /** Event handlers: [eventName, handlerExpression] */\n events: Array<[string, ts.Expression]>\n /** Reactive bindings: [mask, maskHi, kind, key, accessor]. `maskHi` is\n * 0 for low-word-only bindings (the common case) and a non-zero\n * high-word mask when the accessor reads a prefix at bit position\n * 31..61. Emit serializes maskHi as a 5th tuple slot only when\n * non-zero — see `__bind` / elSplit's tuple-length detection. */\n bindings: Array<[number, number, string, string, ts.Expression]>\n /** Children: analyzed elements, static text, or reactive text */\n children: AnalyzedChild[]\n /** Path from template root as childNodes indices */\n path: number[]\n}\n\ntype AnalyzedChild =\n | { type: 'element'; node: AnalyzedNode }\n | { type: 'staticText'; value: string }\n | {\n type: 'reactiveText'\n accessor: ts.Expression\n mask: number\n maskHi: number\n childIdx: number\n }\n\n/**\n * Try to analyze an element call and all its descendants as a collapsible subtree.\n * Returns null if any part of the tree is not eligible for collapse.\n */\nfunction analyzeSubtree(\n node: ts.CallExpression,\n helpers: Map<string, string>,\n fieldBits: Map<string, number>,\n path: number[],\n fieldBitsHi: Map<string, number> = new Map(),\n): AnalyzedNode | null {\n if (!ts.isIdentifier(node.expression)) return null\n const localName = node.expression.text\n const tag = helpers.get(localName)\n if (!tag) return null\n\n // Handle children-only overload: `div([...])` — first arg is the children array.\n // In that case, treat it as no props + children=firstArg.\n const firstArg = node.arguments[0]\n const usesChildrenOnlyOverload = firstArg && ts.isArrayLiteralExpression(firstArg)\n const propsArg = usesChildrenOnlyOverload ? undefined : firstArg\n const childrenArg = usesChildrenOnlyOverload ? firstArg : node.arguments[1]\n\n if (propsArg && !ts.isObjectLiteralExpression(propsArg)) return null\n\n const staticAttrs: Array<[string, string]> = []\n const events: Array<[string, ts.Expression]> = []\n const bindings: Array<[number, number, string, string, ts.Expression]> = []\n\n if (propsArg && ts.isObjectLiteralExpression(propsArg)) {\n for (const prop of propsArg.properties) {\n let key: string\n let value: ts.Expression\n\n if (ts.isPropertyAssignment(prop)) {\n if (!ts.isIdentifier(prop.name) && !ts.isStringLiteral(prop.name)) return null\n key = ts.isIdentifier(prop.name) ? prop.name.text : prop.name.text\n value = prop.initializer\n } else if (ts.isShorthandPropertyAssignment(prop)) {\n key = prop.name.text\n value = prop.name\n } else {\n return null\n }\n if (key === 'key') continue\n\n // Event handler\n if (/^on[A-Z]/.test(key)) {\n events.push([key.slice(2).toLowerCase(), value])\n continue\n }\n\n // Resolve identifier → local const arrow initializer (see elSplit\n // path for the full rationale).\n if (ts.isIdentifier(value)) {\n const resolved = resolveLocalConstInitializer(value)\n if (resolved && (ts.isArrowFunction(resolved) || ts.isFunctionExpression(resolved))) {\n value = resolved\n }\n }\n\n // Reactive binding\n if (ts.isArrowFunction(value) || ts.isFunctionExpression(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n const { mask, maskHi, readsState } = computeAccessorMask(\n value,\n fieldBits,\n undefined,\n fieldBitsHi,\n )\n if (mask === 0 && maskHi === 0 && !readsState) {\n // Constant fold — treat as static if we can extract a string\n const staticVal = tryExtractStaticString(value)\n if (staticVal !== null) {\n const attrKey = kind === 'class' ? 'class' : resolvedKey\n staticAttrs.push([attrKey, staticVal])\n continue\n }\n }\n const finalMask = mask === 0 && maskHi === 0 && readsState ? 0xffffffff | 0 : mask\n bindings.push([finalMask, maskHi, kind, resolvedKey, value])\n continue\n }\n\n // Per-item accessor call\n if (ts.isCallExpression(value) && isPerItemCall(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push([0xffffffff | 0, 0, kind, resolvedKey, value])\n continue\n }\n\n // Per-item property access: item.field (or hoisted __a0/__a1/…)\n if (isPerItemFieldAccess(value) || isHoistedPerItem(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push([0xffffffff | 0, 0, kind, resolvedKey, value])\n continue\n }\n\n // Static literal prop\n if (ts.isStringLiteral(value)) {\n const kind = classifyKind(key)\n const attrKey = kind === 'class' ? 'class' : resolveKey(key, kind)\n staticAttrs.push([attrKey, value.text])\n continue\n }\n if (ts.isNumericLiteral(value)) {\n const kind = classifyKind(key)\n const attrKey = kind === 'class' ? 'class' : resolveKey(key, kind)\n staticAttrs.push([attrKey, value.text])\n continue\n }\n if (value.kind === ts.SyntaxKind.TrueKeyword) {\n const kind = classifyKind(key)\n const attrKey = kind === 'class' ? 'class' : resolveKey(key, kind)\n staticAttrs.push([attrKey, ''])\n continue\n }\n\n // Non-literal prop — can't collapse\n return null\n }\n }\n\n // Analyze children\n const children: AnalyzedChild[] = []\n\n if (childrenArg && ts.isArrayLiteralExpression(childrenArg)) {\n let childIdx = 0\n for (const child of childrenArg.elements) {\n // String literal child — static text node\n if (ts.isStringLiteral(child) || ts.isNoSubstitutionTemplateLiteral(child)) {\n children.push({ type: 'staticText', value: child.text })\n childIdx++\n continue\n }\n\n // text('literal') — static text\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n child.expression.text === 'text'\n ) {\n if (child.arguments.length >= 1 && ts.isStringLiteral(child.arguments[0]!)) {\n children.push({ type: 'staticText', value: child.arguments[0]!.text })\n childIdx++ // static text creates a text node in the template DOM\n continue\n }\n // Reactive text — accessor is first arg\n const accessor = child.arguments[0]!\n if (ts.isArrowFunction(accessor) || ts.isFunctionExpression(accessor)) {\n const { mask, maskHi, readsState } = computeAccessorMask(\n accessor,\n fieldBits,\n undefined,\n fieldBitsHi,\n )\n children.push({\n type: 'reactiveText',\n accessor,\n mask: mask === 0 && maskHi === 0 && readsState ? 0xffffffff | 0 : mask,\n maskHi,\n childIdx,\n })\n childIdx++ // placeholder text node in template\n continue\n }\n // Per-item text: text(item(t => t.label))\n if (ts.isCallExpression(accessor) && isPerItemCall(accessor)) {\n children.push({\n type: 'reactiveText',\n accessor,\n mask: 0xffffffff | 0,\n maskHi: 0,\n childIdx,\n })\n childIdx++ // placeholder text node in template\n continue\n }\n // Per-item text via property access: text(item.label)\n // Also matches hoisted __a0/__a1/… identifiers produced by dedup.\n if (isPerItemFieldAccess(accessor) || isHoistedPerItem(accessor)) {\n children.push({\n type: 'reactiveText',\n accessor,\n mask: 0xffffffff | 0,\n maskHi: 0,\n childIdx,\n })\n childIdx++\n continue\n }\n return null // unsupported text() form\n }\n\n // Element helper call — recurse\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n helpers.has(child.expression.text)\n ) {\n const childNode = analyzeSubtree(\n child,\n helpers,\n fieldBits,\n [...path, childIdx],\n fieldBitsHi,\n )\n if (!childNode) return null\n children.push({ type: 'element', node: childNode })\n childIdx++\n continue\n }\n\n // Anything else (each, branch, show, arbitrary expressions) — bail\n return null\n }\n\n // Note: mixed static + reactive text in the same parent is now supported\n // because reactive text uses <!--$--> comment placeholders that break\n // text-node merging at parse time.\n } else if (childrenArg && childrenArg.kind !== ts.SyntaxKind.NullKeyword) {\n // Non-array children (e.g., spread, variable) — bail\n return null\n }\n\n return { tag, localName, staticAttrs, events, bindings, children, path }\n}\n\nfunction tryExtractStaticString(accessor: ts.ArrowFunction | ts.FunctionExpression): string | null {\n const body = ts.isArrowFunction(accessor) ? accessor.body : null\n if (body && ts.isStringLiteral(body)) return body.text\n return null\n}\n\n/**\n * Check if a subtree has any nested element children (worth collapsing).\n */\nfunction hasNestedElements(node: AnalyzedNode): boolean {\n return node.children.some((c) => c.type === 'element')\n}\n\n/**\n * Collect all local helper names used in the subtree for import cleanup.\n */\nfunction collectUsedHelpers(node: AnalyzedNode, out: Set<string>): void {\n out.add(node.localName)\n for (const child of node.children) {\n if (child.type === 'element') collectUsedHelpers(child.node, out)\n }\n}\n\n/**\n * Build the static HTML string from an analyzed subtree.\n */\nfunction buildTemplateHTML(node: AnalyzedNode): string {\n let html = `<${node.tag}`\n for (const [key, value] of node.staticAttrs) {\n html += ` ${key}=\"${escapeAttr(value)}\"`\n }\n html += '>'\n\n if (VOID_ELEMENTS.has(node.tag)) return html\n\n for (let ci = 0; ci < node.children.length; ci++) {\n const child = node.children[ci]!\n if (child.type === 'staticText') {\n html += escapeHTML(child.value)\n } else if (child.type === 'element') {\n html += buildTemplateHTML(child.node)\n } else if (child.type === 'reactiveText') {\n // When the reactive text is not adjacent to another text-type child,\n // we can use a literal text node placeholder instead of a comment.\n // The cloned text node is reused in the patch function — no\n // createTextNode + replaceChild needed. This saves 2 DOM operations\n // per text binding per row.\n //\n // When adjacent text WOULD cause HTML-parser merging (two text nodes\n // collapse into one), we fall back to the comment placeholder.\n const prev = ci > 0 ? node.children[ci - 1]! : null\n const next = ci < node.children.length - 1 ? node.children[ci + 1]! : null\n const adjText =\n prev?.type === 'staticText' ||\n prev?.type === 'reactiveText' ||\n next?.type === 'staticText' ||\n next?.type === 'reactiveText'\n if (adjText) {\n html += '<!--$-->'\n } else {\n // Space character becomes a Text node in the cloned template.\n // Mark the child so the patch codegen knows to skip replaceChild.\n html += ' '\n ;(child as { inlineText?: boolean }).inlineText = true\n }\n }\n }\n\n html += `</${node.tag}>`\n return html\n}\n\ninterface PatchOp {\n /** Variable name for this node (e.g., __n0) */\n varName: string\n /** Expression to walk to this node from root */\n walkExpr: ts.Expression\n /** Event listeners to attach */\n events: Array<[string, ts.Expression]>\n /** Bindings to register via __bind: [mask, maskHi, kind, key, accessor] */\n bindings: Array<[number, number, string, string, ts.Expression]>\n /** Reactive text children — reference existing placeholder text nodes */\n reactiveTexts: Array<{\n accessor: ts.Expression\n mask: number\n maskHi: number\n childIdx: number\n }>\n}\n\n/**\n * Collect all patch operations from an analyzed subtree.\n */\nfunction collectPatchOps(\n node: AnalyzedNode,\n f: ts.NodeFactory,\n rootExpr: ts.Expression,\n ops: PatchOp[],\n counter: { n: number; t: number },\n): void {\n const hasDynamic =\n node.events.length > 0 ||\n node.bindings.length > 0 ||\n node.children.some((c) => c.type === 'reactiveText')\n\n let nodeExpr = rootExpr\n\n if (hasDynamic) {\n const varName = `__n${counter.n++}`\n // Build walk expression: root.childNodes[i].childNodes[j]...\n nodeExpr = f.createIdentifier(varName)\n ops.push({\n varName,\n walkExpr: buildWalkExpr(node.path, f),\n events: node.events,\n bindings: node.bindings,\n reactiveTexts: node.children.filter(\n (c): c is Extract<AnalyzedChild, { type: 'reactiveText' }> => c.type === 'reactiveText',\n ),\n })\n }\n\n // Recurse into element children\n for (const child of node.children) {\n if (child.type === 'element') {\n collectPatchOps(child.node, f, nodeExpr, ops, counter)\n }\n }\n}\n\nfunction buildWalkExpr(path: number[], f: ts.NodeFactory): ts.Expression {\n let expr: ts.Expression = f.createIdentifier('root')\n for (const idx of path) {\n // Use firstChild + nextSibling chain instead of childNodes[n]\n // firstChild/nextSibling are direct pointer lookups, childNodes is a live NodeList\n expr = f.createPropertyAccessExpression(expr, 'firstChild')\n for (let i = 0; i < idx; i++) {\n expr = f.createPropertyAccessExpression(expr, 'nextSibling')\n }\n }\n return expr\n}\n\n/**\n * Emit elTemplate(htmlString, (root, __bind) => { ... }) call.\n */\nfunction emitSubtreeTemplate(\n analyzed: AnalyzedNode,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const html = buildTemplateHTML(analyzed)\n const ops: PatchOp[] = []\n const counter = { n: 0, t: 0 }\n\n // Collect root-level patches\n const rootHasDynamic =\n analyzed.events.length > 0 ||\n analyzed.bindings.length > 0 ||\n analyzed.children.some((c) => c.type === 'reactiveText')\n\n if (rootHasDynamic) {\n ops.push({\n varName: '', // use 'root' directly\n walkExpr: f.createIdentifier('root'),\n events: analyzed.events,\n bindings: analyzed.bindings,\n reactiveTexts: analyzed.children.filter(\n (c): c is Extract<AnalyzedChild, { type: 'reactiveText' }> => c.type === 'reactiveText',\n ),\n })\n }\n\n // Collect child patches\n for (const child of analyzed.children) {\n if (child.type === 'element') {\n collectPatchOps(child.node, f, f.createIdentifier('root'), ops, counter)\n }\n }\n\n // Collect delegatable events: group by event type across all ops\n // Events on child nodes with the same type are delegated to the root\n const delegatableEvents = new Map<string, Array<{ nodeVar: string; handler: ts.Expression }>>()\n for (const op of ops) {\n for (const [eventName, handler] of op.events) {\n if (!op.varName) {\n // Root-level events — can't delegate further up\n continue\n }\n const list = delegatableEvents.get(eventName)\n if (list) list.push({ nodeVar: op.varName, handler })\n else delegatableEvents.set(eventName, [{ nodeVar: op.varName, handler }])\n }\n }\n\n // Build patch function body\n const stmts: ts.Statement[] = []\n\n for (const op of ops) {\n const nodeRef = op.varName ? f.createIdentifier(op.varName) : f.createIdentifier('root')\n\n // Variable declaration for walking to node\n if (op.varName) {\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(op.varName, undefined, undefined, op.walkExpr)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n }\n\n // Non-delegatable events (root-level or single-use event types)\n for (const [eventName, handler] of op.events) {\n const delegated = delegatableEvents.get(eventName)\n if (op.varName && delegated && delegated.length >= 2) continue // handled below\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(nodeRef, 'addEventListener'),\n undefined,\n [f.createStringLiteral(eventName), handler],\n ),\n ),\n )\n }\n\n // Reactive text children — walk to placeholder, create text node, bind\n for (const rt of op.reactiveTexts) {\n const tVar = `__t${counter.t++}`\n const isInline = !!(rt as { inlineText?: boolean }).inlineText\n\n if (isInline) {\n // Inline text placeholder: the template HTML has a space character\n // that cloneNode already created as a Text node. Walk to it and\n // bind directly — no createTextNode, no replaceChild.\n let walk: ts.Expression = f.createPropertyAccessExpression(nodeRef, 'firstChild')\n for (let i = 0; i < rt.childIdx; i++) {\n walk = f.createPropertyAccessExpression(walk, 'nextSibling')\n }\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(tVar, undefined, undefined, walk)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n } else {\n // Comment placeholder: create a new text node and replace the comment.\n const cVar = `__c${counter.t - 1}`\n let walk: ts.Expression = f.createPropertyAccessExpression(nodeRef, 'firstChild')\n for (let i = 0; i < rt.childIdx; i++) {\n walk = f.createPropertyAccessExpression(walk, 'nextSibling')\n }\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(cVar, undefined, undefined, walk)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n tVar,\n undefined,\n undefined,\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__dom'), 'createTextNode'),\n undefined,\n [f.createStringLiteral('')],\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier(cVar), 'parentNode'),\n 'replaceChild',\n ),\n undefined,\n [f.createIdentifier(tVar), f.createIdentifier(cVar)],\n ),\n ),\n )\n }\n // __bind(__t0, mask, 'text', undefined, accessor, [maskHi])\n const rtArgs: ts.Expression[] = [\n f.createIdentifier(tVar),\n createMaskLiteral(f, rt.mask),\n f.createStringLiteral('text'),\n f.createIdentifier('undefined'),\n rt.accessor,\n ]\n // Only pass the 6th positional arg when the accessor reads a\n // high-word prefix. Keeps the emit byte-identical to the\n // pre-multi-word baseline for the common case.\n if (rt.maskHi !== 0) rtArgs.push(createMaskLiteral(f, rt.maskHi))\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__bind'), undefined, rtArgs),\n ),\n )\n }\n\n // Reactive bindings — __bind(node, mask, kind, key, accessor, [maskHi])\n for (const [mask, maskHi, kind, key, accessor] of op.bindings) {\n const args: ts.Expression[] = [\n nodeRef,\n createMaskLiteral(f, mask),\n f.createStringLiteral(kind),\n key ? f.createStringLiteral(key) : f.createIdentifier('undefined'),\n accessor,\n ]\n if (maskHi !== 0) args.push(createMaskLiteral(f, maskHi))\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__bind'), undefined, args),\n ),\n )\n }\n }\n\n // Emit delegated event listeners on root\n for (const [eventName, entries] of delegatableEvents) {\n if (entries.length < 2) continue\n // root.onclick = (e) => { if (n1.contains(e.target)) { h1(); return } if (n2.contains(e.target)) { h2(); return } }\n const eParam = f.createIdentifier('__e')\n const eTarget = f.createPropertyAccessExpression(eParam, 'target')\n\n const ifStmts: ts.Statement[] = []\n for (const { nodeVar, handler } of entries) {\n // if (nodeVar.contains(e.target)) { handler(e); return }\n ifStmts.push(\n f.createIfStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier(nodeVar), 'contains'),\n undefined,\n [eTarget],\n ),\n f.createBlock(\n [\n f.createExpressionStatement(f.createCallExpression(handler, undefined, [eParam])),\n f.createReturnStatement(),\n ],\n true,\n ),\n ),\n )\n }\n\n const delegateHandler = f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, '__e')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(ifStmts, true),\n )\n\n // root.addEventListener(eventName, handler)\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('root'), 'addEventListener'),\n undefined,\n [f.createStringLiteral(eventName), delegateHandler],\n ),\n ),\n )\n }\n\n // (root, __bind, __dom) => { ... }\n const patchFn = f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 'root'),\n f.createParameterDeclaration(undefined, undefined, '__bind'),\n f.createParameterDeclaration(undefined, undefined, '__dom'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(stmts, true),\n )\n\n const call = f.createCallExpression(f.createIdentifier('elTemplate'), undefined, [\n f.createStringLiteral(html),\n patchFn,\n ])\n\n return call\n}\n\n// ── Static subtree detection ─────────────────────────────────────\n\nfunction isStaticChildren(children: ts.Expression): boolean {\n if (children.kind === ts.SyntaxKind.NullKeyword) return true\n if (!ts.isArrayLiteralExpression(children)) return false\n return children.elements.every((child) => {\n // text('literal') — static text\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n child.expression.text === 'text'\n ) {\n return child.arguments.length === 1 && ts.isStringLiteral(child.arguments[0]!)\n }\n // Another elSplit or element helper that was already determined static\n // For now, only handle text() children\n return false\n })\n}\n\nfunction buildStaticHTML(\n tag: string,\n staticProps: ts.Statement[],\n children: ts.Expression,\n _f: ts.NodeFactory,\n): string | null {\n // Extract static attributes from staticFn statements\n let attrs = ''\n for (const stmt of staticProps) {\n if (!ts.isExpressionStatement(stmt)) return null\n const expr = stmt.expression\n // __e.className = 'value'\n if (ts.isBinaryExpression(expr) && ts.isPropertyAccessExpression(expr.left)) {\n const prop = expr.left.name.text\n if (prop === 'className' && ts.isStringLiteral(expr.right)) {\n attrs += ` class=\"${escapeAttr(expr.right.text)}\"`\n }\n }\n // __e.setAttribute('key', 'value')\n if (ts.isCallExpression(expr) && ts.isPropertyAccessExpression(expr.expression)) {\n if (expr.expression.name.text === 'setAttribute' && expr.arguments.length === 2) {\n const key = expr.arguments[0]\n const val = expr.arguments[1]\n if (key && val && ts.isStringLiteral(key) && ts.isStringLiteral(val)) {\n attrs += ` ${key.text}=\"${escapeAttr(val.text)}\"`\n } else {\n return null // non-literal attribute\n }\n }\n }\n }\n\n // Extract text children\n let inner = ''\n if (ts.isArrayLiteralExpression(children)) {\n for (const child of children.elements) {\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n child.expression.text === 'text'\n ) {\n if (ts.isStringLiteral(child.arguments[0]!)) {\n inner += escapeHTML(child.arguments[0]!.text)\n } else {\n return null\n }\n } else {\n return null\n }\n }\n }\n\n return `<${tag}${attrs}>${inner}</${tag}>`\n}\n\nfunction escapeHTML(s: string): string {\n return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')\n}\n\nfunction escapeAttr(s: string): string {\n return s.replace(/&/g, '&amp;').replace(/\"/g, '&quot;')\n}\n\nfunction emitTemplateClone(html: string, f: ts.NodeFactory): ts.Expression {\n // Emits: __cloneStaticTemplate(\"<html>\")\n //\n // The helper lives in `@llui/dom` and threads through `ctx.dom` so SSR\n // under jsdom/linkedom works without touching globalThis. The import\n // cleanup pass (see cleanupImports) auto-injects the import when this\n // emission fires.\n return f.createCallExpression(f.createIdentifier('__cloneStaticTemplate'), undefined, [\n f.createStringLiteral(html),\n ])\n}\n\nfunction isPerItemCall(node: ts.CallExpression): boolean {\n // Matches: item(t => t.field) or item(t => expr)\n // where item is an identifier (the scoped accessor from each() render)\n if (!ts.isIdentifier(node.expression)) return false\n // Check that the first argument is an arrow function (the selector)\n if (node.arguments.length !== 1) return false\n const arg = node.arguments[0]!\n return ts.isArrowFunction(arg) || ts.isFunctionExpression(arg)\n}\n\n// Matches: item.FIELD — the item-proxy shorthand equivalent of item(t => t.FIELD).\n// Lifetime-checked: the `item` identifier must resolve to a parameter of an\n// `each({ render })` callback. Without this check, plain\n// `arr.map((item) => item.field)` outside each() would be rewritten as a\n// per-item binding and crash at runtime with \"accessor is not a function\"\n// because `item.field` evaluates to a bare value (not a function) when\n// treated as an accessor.\nfunction isPerItemFieldAccess(node: ts.Node): node is ts.PropertyAccessExpression {\n if (!ts.isPropertyAccessExpression(node)) return false\n if (!ts.isIdentifier(node.expression)) return false\n if (node.expression.text !== 'item') return false\n if (!ts.isIdentifier(node.name)) return false\n return isItemBoundToEachRender(node)\n}\n\n/**\n * Walks up from a node and returns true iff the nearest enclosing function\n * that binds an `item` parameter is the `render` property of an `each()`\n * call. Handles both positional (`(item) => …`) and destructured\n * (`({ item, index }) => …`) parameter bindings.\n */\nfunction isItemBoundToEachRender(node: ts.Node): boolean {\n let current: ts.Node | undefined = node.parent\n while (current) {\n if (ts.isArrowFunction(current) || ts.isFunctionExpression(current)) {\n if (functionParamsBindItem(current)) {\n return isEachRenderCallback(current)\n }\n }\n current = current.parent\n }\n return false\n}\n\nfunction functionParamsBindItem(fn: ts.ArrowFunction | ts.FunctionExpression): boolean {\n for (const param of fn.parameters) {\n if (bindingNameBindsItem(param.name)) return true\n }\n return false\n}\n\nfunction bindingNameBindsItem(name: ts.BindingName): boolean {\n if (ts.isIdentifier(name)) return name.text === 'item'\n if (ts.isObjectBindingPattern(name) || ts.isArrayBindingPattern(name)) {\n for (const el of name.elements) {\n if (ts.isBindingElement(el) && bindingNameBindsItem(el.name)) return true\n }\n }\n return false\n}\n\nfunction isEachRenderCallback(fn: ts.ArrowFunction | ts.FunctionExpression): boolean {\n const parent = fn.parent\n if (!parent || !ts.isPropertyAssignment(parent)) return false\n if (!ts.isIdentifier(parent.name) || parent.name.text !== 'render') return false\n const objLit = parent.parent\n if (!objLit || !ts.isObjectLiteralExpression(objLit)) return false\n const call = objLit.parent\n if (!call || !ts.isCallExpression(call)) return false\n if (!ts.isIdentifier(call.expression) || call.expression.text !== 'each') return false\n return true\n}\n\n// Matches the hoisted identifiers produced by tryDeduplicateItemSelectors: __a0, __a1, …\n// These represent already-cached per-item accessors.\nfunction isHoistedPerItem(node: ts.Node): node is ts.Identifier {\n if (!ts.isIdentifier(node)) return false\n return /^__a\\d+$/.test(node.text)\n}\n\n// ── Mask computation ─────────────────────────────────────────────\n\n// Returns { mask, readsState }\n// mask = 0 + readsState = false → constant (can fold to static)\n// mask = 0 + readsState = true → unresolvable state access (FULL_MASK)\n// mask > 0 → precise mask\n// See `NON_DELEGATION_HELPERS` in collect-deps.ts — same set of names\n// that aren't followed when scanning for `helper(s)` delegation calls.\n"]}
1
+ {"version":3,"file":"element-rewrite.js","sourceRoot":"","sources":["../../src/modules/element-rewrite.ts"],"names":[],"mappings":"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","sourcesContent":["// `element-rewrite` — transforms `div(...)` / `button(...)` / etc.\n// (every helper in `ELEMENT_HELPERS`) into `elSplit(...)` /\n// `elTemplate(...)` / `__cloneStaticTemplate(...)` calls.\n//\n// The transform classifies each prop of the element call:\n// - Static literals → emit as a one-time `__e.prop = X` setter\n// - Event handlers (`onClick`, `onInput`, ...) → emit as\n// `[eventName, handler]` tuples\n// - Reactive accessors (arrows / `memo(arrow)` / identifier-bound\n// forms) → emit as `[mask, kind, key, accessor]` binding tuples\n// - Per-item shapes (`item.field`, `item((r) => r.x)`) inside\n// each() render callbacks → emit with `FULL_MASK` since the\n// accessor closes over a per-row argument the runtime supplies\n//\n// When the element has only static + event content, the rewrite\n// further specializes into `__cloneStaticTemplate(...)` (prerendered\n// HTML clone). When the element's subtree has multiple nested\n// elements, `analyzeSubtree` + `emitSubtreeTemplate` collapse the\n// whole subtree into a single `elTemplate(...)` call with a\n// patch-by-walk function.\n//\n// Owned by this module since v2c/decomp-22. The thin-wrapper\n// migration (decomp-17) put the registry on the call path; the\n// helpers (and `tryTransformElementCall` itself) moved here in this\n// commit so the module is self-contained.\n//\n// Fires top-down (`transformCallEnter`). Sets module-level state\n// via `ELEMENT_REWRITE_SLOT` for the umbrella's `cleanupImports`\n// to decide whether `elSplit` / `elTemplate` / `__cloneStaticTemplate`\n// need their runtime imports.\n\nimport ts from 'typescript'\nimport type { CompilerModule } from '../module.js'\nimport { resolveLocalConstInitializer, isMemoCallWithArrowArg } from '../accessor-resolver.js'\nimport { computeAccessorMask, createMaskLiteral } from '../transform.js'\n\n// ─── Module wiring ────────────────────────────────────────────────\n\nexport interface ElementRewriteModuleOptions {\n /** localName → originalName for element-helper imports (alias-aware). */\n importedHelpers: Map<string, string>\n fieldBits: Map<string, number>\n fieldBitsHi: Map<string, number>\n}\n\nexport interface ElementRewriteSlot {\n /** Helpers whose call sites the module successfully rewrote. */\n compiled: Set<string>\n /** Helpers that bailed (kept their import — runtime falls back). */\n bailed: Set<string>\n /** Module emitted at least one `elSplit(...)` call. */\n usesElSplit: boolean\n /** Module emitted at least one `elTemplate(...)` call. */\n usesElTemplate: boolean\n /** Module emitted at least one `__cloneStaticTemplate(...)` call. */\n usesCloneStaticTemplate: boolean\n /**\n * v0.4 size-cut — module emitted at least one `__bindUncertain(...)`\n * call for a prop value with unresolvable type (function parameter,\n * etc.). Drives the runtime import addition.\n */\n usesBindUncertain: boolean\n}\n\nexport const ELEMENT_REWRITE_SLOT = 'element-rewrite:state'\n\nexport function elementRewriteModule(options: ElementRewriteModuleOptions): CompilerModule {\n const { importedHelpers, fieldBits, fieldBitsHi } = options\n return {\n name: 'element-rewrite',\n compilerVersion: '^0.3.0',\n diagnostics: [],\n visitors: {},\n\n transformCallEnter(ctx, node) {\n const slot = ctx.analysis.perModule.get(ELEMENT_REWRITE_SLOT) as\n | ElementRewriteSlot\n | undefined\n const state: ElementRewriteSlot = slot ?? {\n compiled: new Set<string>(),\n bailed: new Set<string>(),\n usesElSplit: false,\n usesElTemplate: false,\n usesCloneStaticTemplate: false,\n usesBindUncertain: false,\n }\n if (!slot) ctx.analysis.perModule.set(ELEMENT_REWRITE_SLOT, state)\n\n const transformed = tryTransformElementCall(\n node,\n importedHelpers,\n fieldBits,\n state.compiled,\n state.bailed,\n ctx.factory,\n fieldBitsHi,\n state,\n )\n if (!transformed) return null\n\n if (ts.isIdentifier(transformed.expression)) {\n if (transformed.expression.text === 'elTemplate') state.usesElTemplate = true\n else if (transformed.expression.text === 'elSplit') state.usesElSplit = true\n else if (transformed.expression.text === '__cloneStaticTemplate')\n state.usesCloneStaticTemplate = true\n }\n return transformed\n },\n }\n}\n\n// ─── Rewrite implementation (moved verbatim from transform.ts) ─────\n\nconst PROP_KEYS = new Set([\n 'value',\n 'checked',\n 'selected',\n 'disabled',\n 'readOnly',\n 'multiple',\n 'indeterminate',\n 'defaultValue',\n 'defaultChecked',\n 'innerHTML',\n 'textContent',\n])\n\ntype BindingKind = 'text' | 'prop' | 'attr' | 'class' | 'style'\n\n/**\n * A `value` at a reactive-prop position — classified for the compiler.\n *\n * Element-helper props (`{ disabled: X, class: X, title: X, ... }`) and the\n * driver accessor of structural primitives (`each.items`, `branch.on`,\n * `show.when`) accept any callable that takes the state and returns a\n * value. The compiler must distinguish recognized shapes from values it\n * can't safely classify (imports, parameters, opaque expressions) — the\n * latter must bail to the runtime helper, never to a static assignment.\n *\n * Bailing is load-bearing: emitting `__e.disabled = identifier` statically\n * when the runtime value happens to be a function silently binds the\n * function ref to the boolean DOM property and never re-runs.\n */\ntype ResolvedReactiveBinding =\n | {\n kind: 'arrow'\n accessor: ts.ArrowFunction | ts.FunctionExpression\n valueForBinding: ts.Expression\n }\n | {\n kind: 'fn-decl'\n accessor: ts.FunctionDeclaration\n valueForBinding: ts.Expression\n }\n | {\n kind: 'memo-call'\n accessor: ts.ArrowFunction | ts.FunctionExpression\n valueForBinding: ts.Expression\n }\n\ntype ResolvedReactiveValue =\n | ResolvedReactiveBinding\n | { kind: 'static-literal' }\n | { kind: 'bail' }\n | null\n\nfunction isStaticPrimitiveLiteral(expr: ts.Expression): boolean {\n return (\n ts.isStringLiteral(expr) ||\n ts.isNumericLiteral(expr) ||\n ts.isNoSubstitutionTemplateLiteral(expr) ||\n expr.kind === ts.SyntaxKind.TrueKeyword ||\n expr.kind === ts.SyntaxKind.FalseKeyword ||\n expr.kind === ts.SyntaxKind.NullKeyword\n )\n}\n\n/**\n * Classify a reactive-prop value. See `ResolvedReactiveValue` for the\n * contract. Returns `null` only when the value is none of the recognized\n * shapes (caller can fall back to its own branches — currently only\n * `tryTransformElementCall` does this for `isPerItemFieldAccess` /\n * `isHoistedPerItem`).\n */\nfunction classifyReactiveValue(value: ts.Expression): ResolvedReactiveValue {\n // Inline arrow / function expression at the call site\n if (ts.isArrowFunction(value) || ts.isFunctionExpression(value)) {\n return { kind: 'arrow', accessor: value, valueForBinding: value }\n }\n\n // Inline `memo(arrow)` at the call site\n if (isMemoCallWithArrowArg(value)) {\n return {\n kind: 'memo-call',\n accessor: value.arguments[0] as ts.ArrowFunction | ts.FunctionExpression,\n valueForBinding: value,\n }\n }\n\n // Identifier — resolve and classify the resolved declaration\n if (ts.isIdentifier(value)) {\n const resolved = resolveLocalConstInitializer(value)\n if (!resolved) {\n // Imported / parameter / unbound — can't prove it's a primitive,\n // can't prove it's a function. Caller must bail to runtime.\n return { kind: 'bail' }\n }\n if (ts.isArrowFunction(resolved) || ts.isFunctionExpression(resolved)) {\n return { kind: 'arrow', accessor: resolved, valueForBinding: value }\n }\n if (ts.isFunctionDeclaration(resolved)) {\n return { kind: 'fn-decl', accessor: resolved, valueForBinding: value }\n }\n if (isMemoCallWithArrowArg(resolved)) {\n return {\n kind: 'memo-call',\n accessor: resolved.arguments[0] as ts.ArrowFunction | ts.FunctionExpression,\n valueForBinding: value,\n }\n }\n if (isStaticPrimitiveLiteral(resolved)) {\n return { kind: 'static-literal' }\n }\n // Resolved to something else (object/array/expression) — conservative\n // bail. We don't know if the runtime value is a function; the runtime\n // element helper handles both cases correctly.\n return { kind: 'bail' }\n }\n\n // Static literals at the call site\n if (isStaticPrimitiveLiteral(value)) {\n return { kind: 'static-literal' }\n }\n\n // CallExpression — caller decides (per-item, etc.)\n return null\n}\n\nfunction classifyKind(key: string): BindingKind {\n if (key === 'class' || key === 'className') return 'class'\n if (key.startsWith('style.')) return 'style'\n if (PROP_KEYS.has(key)) return 'prop'\n return 'attr'\n}\n\nfunction resolveKey(key: string, kind: BindingKind): string {\n if (kind === 'class') return 'class'\n if (kind === 'style') return key.slice(6)\n if (kind === 'prop') return key\n if (key === 'className') return 'class'\n return key\n}\n\n// ─── emitStaticProp + tryTransformElementCall ────────────────────\n\nfunction emitStaticProp(\n staticProps: ts.Statement[],\n f: ts.NodeFactory,\n kind: BindingKind,\n resolvedKey: string,\n value: ts.Expression,\n): void {\n switch (kind) {\n case 'class':\n staticProps.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), 'className'),\n ts.SyntaxKind.EqualsToken,\n value,\n ),\n ),\n )\n break\n case 'prop':\n staticProps.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), resolvedKey),\n ts.SyntaxKind.EqualsToken,\n value,\n ),\n ),\n )\n break\n case 'style':\n staticProps.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), 'style'),\n 'setProperty',\n ),\n undefined,\n [f.createStringLiteral(resolvedKey), value],\n ),\n ),\n )\n break\n default: // attr\n staticProps.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), 'setAttribute'),\n undefined,\n [f.createStringLiteral(resolvedKey), value],\n ),\n ),\n )\n }\n}\n\n// ── Pass 1: Element → elSplit ────────────────────────────────────\n\nfunction tryTransformElementCall(\n node: ts.CallExpression,\n helpers: Map<string, string>,\n fieldBits: Map<string, number>,\n compiled: Set<string>,\n bailed: Set<string>,\n f: ts.NodeFactory,\n fieldBitsHi: Map<string, number> = new Map(),\n state?: ElementRewriteSlot,\n): ts.CallExpression | null {\n if (!ts.isIdentifier(node.expression)) return null\n const localName = node.expression.text\n const originalName = helpers.get(localName)\n if (!originalName) return null\n\n // Handle children-only overload: `div([...])` — first arg is the children array.\n // Normalize to props=undefined, children=firstArg so downstream logic works.\n const firstArg = node.arguments[0]\n const usesChildrenOnlyOverload = firstArg && ts.isArrayLiteralExpression(firstArg)\n const propsArg = usesChildrenOnlyOverload ? undefined : firstArg\n if (propsArg && !ts.isObjectLiteralExpression(propsArg)) {\n bailed.add(localName)\n return null\n }\n // Bail on spread assignments (`...parts.root`) — the compiler cannot\n // statically classify spread contents, and silently dropping them would\n // break consumers (e.g. @llui/components parts spreading). Fall back to\n // the runtime element helper so spreads are applied normally.\n if (\n propsArg &&\n ts.isObjectLiteralExpression(propsArg) &&\n propsArg.properties.some((p) => ts.isSpreadAssignment(p))\n ) {\n bailed.add(localName)\n return null\n }\n\n const tag = f.createStringLiteral(originalName)\n\n // Classify props\n const staticProps: ts.Statement[] = []\n const events: ts.ArrayLiteralExpression[] = []\n const bindings: ts.ArrayLiteralExpression[] = []\n\n if (propsArg && ts.isObjectLiteralExpression(propsArg)) {\n for (const prop of propsArg.properties) {\n // Handle both PropertyAssignment (key: value) and ShorthandPropertyAssignment ({ id })\n let key: string\n let value: ts.Expression\n\n if (ts.isPropertyAssignment(prop)) {\n if (!ts.isIdentifier(prop.name) && !ts.isStringLiteral(prop.name)) continue\n key = ts.isIdentifier(prop.name) ? prop.name.text : prop.name.text\n value = prop.initializer\n } else if (ts.isShorthandPropertyAssignment(prop)) {\n key = prop.name.text\n value = prop.name // The identifier itself is the value\n } else {\n continue\n }\n if (key === 'key') continue\n\n // Event handler\n if (/^on[A-Z]/.test(key)) {\n const eventName = key.slice(2).toLowerCase()\n events.push(f.createArrayLiteralExpression([f.createStringLiteral(eventName), value]))\n continue\n }\n\n // Per-item shapes — handled before the general classifier because\n // they appear inside `each().render` callbacks where `item` is a\n // closed-over per-row accessor (zero-arg). The resolver above can't\n // see them; they're shape-matched syntactically.\n if (isPerItemFieldAccess(value) || isHoistedPerItem(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push(\n f.createArrayLiteralExpression([\n createMaskLiteral(f, 0xffffffff | 0),\n f.createStringLiteral(kind),\n f.createStringLiteral(resolvedKey),\n value,\n ]),\n )\n continue\n }\n if (ts.isCallExpression(value) && isPerItemCall(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push(\n f.createArrayLiteralExpression([\n createMaskLiteral(f, 0xffffffff | 0),\n f.createStringLiteral(kind),\n f.createStringLiteral(resolvedKey),\n value,\n ]),\n )\n continue\n }\n\n // Classify the value at a reactive-prop position:\n // - inline arrow / fn-expr at the call site\n // - inline `memo(arrow)` at the call site\n // - Identifier referencing a const-bound arrow/fn-expr in scope\n // - Identifier referencing a hoisted function declaration in scope\n // - Identifier referencing `const x = memo(arrow)` in scope\n // - Identifier referencing a static primitive literal\n // - Anything else (imports, parameters, opaque expressions) — bail\n // to runtime; the runtime helper handles `typeof v === 'function'`\n // correctly for both function and primitive values.\n const classified = classifyReactiveValue(value)\n if (classified === null) {\n // Unknown shape (a CallExpression that isn't memo/per-item, etc.)\n // — historically bailed to runtime. Preserve that.\n bailed.add(localName)\n return null\n }\n if (classified.kind === 'bail') {\n // v0.4 size-cut: instead of bailing the whole element call to the\n // runtime element-helper (which keeps `createElement` + ~1.8 kB of\n // elements.ts alive), emit a `__bindUncertain` call in the static-\n // fn that dispatches at mount time on `typeof value`. Function\n // values become reactive bindings (FULL_MASK gating — the\n // compiler couldn't analyze the accessor); non-function values\n // apply directly via the regular applyBinding path. Net effect:\n // we keep the elSplit compilation and lose the elements.ts\n // fallback.\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n staticProps.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__bindUncertain'), undefined, [\n f.createIdentifier('__e'),\n f.createStringLiteral(kind),\n resolvedKey === undefined\n ? f.createIdentifier('undefined')\n : f.createStringLiteral(resolvedKey),\n value,\n ]),\n ),\n )\n if (state) state.usesBindUncertain = true\n continue\n }\n if (classified.kind === 'static-literal') {\n // Fall through to emitStaticProp (`__e.disabled = X`). Safe because\n // we proved X is a primitive.\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n emitStaticProp(staticProps, f, kind, resolvedKey, value)\n continue\n }\n // 'arrow' | 'fn-decl' | 'memo-call' — emit as a binding tuple. Mask is\n // analyzed from the resolved accessor body (or the inner arrow inside\n // a memo() call); the value emitted into the binding tuple is what the\n // runtime calls as `accessor(state)` — for inline arrows we keep the\n // arrow itself (preserves the historical inlining behavior), for\n // identifier-bound forms we keep the identifier so consumers see\n // a single canonical reference (and `memo()` proxies aren't rebuilt\n // per render).\n {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n const { mask, maskHi, readsState } = computeAccessorMask(\n classified.accessor,\n fieldBits,\n undefined,\n fieldBitsHi,\n )\n\n // Zero-mask constant folding only applies to inline arrows whose body\n // we can safely call at compile time. For identifier-bound forms\n // (`accessor !== value`) we skip the fold — calling the identifier's\n // declaration at compile time would be unsafe (different scope) and\n // calling the identifier in the emitted output would defeat the point.\n if (\n classified.kind === 'arrow' &&\n classified.accessor === value &&\n mask === 0 &&\n maskHi === 0 &&\n !readsState\n ) {\n emitStaticProp(\n staticProps,\n f,\n kind,\n resolvedKey,\n f.createCallExpression(classified.accessor, undefined, []),\n )\n continue\n }\n\n const effectiveMask = mask === 0 && maskHi === 0 && readsState ? 0xffffffff | 0 : mask\n // Emit a 5-tuple only when the accessor reads a high-word\n // prefix (positions 31..61). For the common ≤31-prefix case\n // the emit stays byte-identical to the pre-multi-word baseline,\n // and stale runtime bundles ignore the 5th slot.\n const tupleEls = [\n createMaskLiteral(f, effectiveMask),\n f.createStringLiteral(kind),\n f.createStringLiteral(resolvedKey),\n classified.valueForBinding,\n ]\n if (maskHi !== 0) tupleEls.push(createMaskLiteral(f, maskHi))\n bindings.push(f.createArrayLiteralExpression(tupleEls))\n }\n }\n }\n\n // Build elSplit args\n const staticFn =\n staticProps.length > 0\n ? f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, '__e')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(staticProps, true),\n )\n : f.createNull()\n\n const eventsArr = events.length > 0 ? f.createArrayLiteralExpression(events) : f.createNull()\n\n const bindingsArr =\n bindings.length > 0 ? f.createArrayLiteralExpression(bindings) : f.createNull()\n\n const children = usesChildrenOnlyOverload\n ? node.arguments[0]!\n : (node.arguments[1] ?? f.createNull())\n\n compiled.add(localName)\n\n // Subtree collapse: if children contain nested element helpers,\n // collapse the entire tree into a single elTemplate() call\n const analyzed = analyzeSubtree(node, helpers, fieldBits, [], fieldBitsHi)\n if (analyzed && hasNestedElements(analyzed)) {\n // Mark all descendant helpers as compiled for import cleanup\n collectUsedHelpers(analyzed, compiled)\n const templateCall = emitSubtreeTemplate(analyzed, fieldBits, f)\n return templateCall\n }\n\n // Static subtree prerendering: if no events, no bindings, and children\n // are all static text, emit a <template> clone\n if (events.length === 0 && bindings.length === 0 && isStaticChildren(children)) {\n const html = buildStaticHTML(originalName, staticProps, children, f)\n if (html) {\n return emitTemplateClone(html, f) as ts.CallExpression\n }\n }\n\n const call = f.createCallExpression(f.createIdentifier('elSplit'), undefined, [\n tag,\n staticFn,\n eventsArr,\n bindingsArr,\n children,\n ])\n ts.addSyntheticLeadingComment(call, ts.SyntaxKind.MultiLineCommentTrivia, '@__PURE__', false)\n return call\n}\n\n// ─── Analysis + per-item heuristics ───────────────────────────────\n\nconst VOID_ELEMENTS = new Set([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n])\n\ninterface AnalyzedNode {\n tag: string\n localName: string\n /** Static HTML attributes (class, id, etc.) */\n staticAttrs: Array<[string, string]>\n /** Event handlers: [eventName, handlerExpression] */\n events: Array<[string, ts.Expression]>\n /** Reactive bindings: [mask, maskHi, kind, key, accessor]. `maskHi` is\n * 0 for low-word-only bindings (the common case) and a non-zero\n * high-word mask when the accessor reads a prefix at bit position\n * 31..61. Emit serializes maskHi as a 5th tuple slot only when\n * non-zero — see `__bind` / elSplit's tuple-length detection. */\n bindings: Array<[number, number, string, string, ts.Expression]>\n /** Children: analyzed elements, static text, or reactive text */\n children: AnalyzedChild[]\n /** Path from template root as childNodes indices */\n path: number[]\n}\n\ntype AnalyzedChild =\n | { type: 'element'; node: AnalyzedNode }\n | { type: 'staticText'; value: string }\n | {\n type: 'reactiveText'\n accessor: ts.Expression\n mask: number\n maskHi: number\n childIdx: number\n }\n\n/**\n * Try to analyze an element call and all its descendants as a collapsible subtree.\n * Returns null if any part of the tree is not eligible for collapse.\n */\nfunction analyzeSubtree(\n node: ts.CallExpression,\n helpers: Map<string, string>,\n fieldBits: Map<string, number>,\n path: number[],\n fieldBitsHi: Map<string, number> = new Map(),\n): AnalyzedNode | null {\n if (!ts.isIdentifier(node.expression)) return null\n const localName = node.expression.text\n const tag = helpers.get(localName)\n if (!tag) return null\n\n // Handle children-only overload: `div([...])` — first arg is the children array.\n // In that case, treat it as no props + children=firstArg.\n const firstArg = node.arguments[0]\n const usesChildrenOnlyOverload = firstArg && ts.isArrayLiteralExpression(firstArg)\n const propsArg = usesChildrenOnlyOverload ? undefined : firstArg\n const childrenArg = usesChildrenOnlyOverload ? firstArg : node.arguments[1]\n\n if (propsArg && !ts.isObjectLiteralExpression(propsArg)) return null\n\n const staticAttrs: Array<[string, string]> = []\n const events: Array<[string, ts.Expression]> = []\n const bindings: Array<[number, number, string, string, ts.Expression]> = []\n\n if (propsArg && ts.isObjectLiteralExpression(propsArg)) {\n for (const prop of propsArg.properties) {\n let key: string\n let value: ts.Expression\n\n if (ts.isPropertyAssignment(prop)) {\n if (!ts.isIdentifier(prop.name) && !ts.isStringLiteral(prop.name)) return null\n key = ts.isIdentifier(prop.name) ? prop.name.text : prop.name.text\n value = prop.initializer\n } else if (ts.isShorthandPropertyAssignment(prop)) {\n key = prop.name.text\n value = prop.name\n } else {\n return null\n }\n if (key === 'key') continue\n\n // Event handler\n if (/^on[A-Z]/.test(key)) {\n events.push([key.slice(2).toLowerCase(), value])\n continue\n }\n\n // Resolve identifier → local const arrow initializer (see elSplit\n // path for the full rationale).\n if (ts.isIdentifier(value)) {\n const resolved = resolveLocalConstInitializer(value)\n if (resolved && (ts.isArrowFunction(resolved) || ts.isFunctionExpression(resolved))) {\n value = resolved\n }\n }\n\n // Reactive binding\n if (ts.isArrowFunction(value) || ts.isFunctionExpression(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n const { mask, maskHi, readsState } = computeAccessorMask(\n value,\n fieldBits,\n undefined,\n fieldBitsHi,\n )\n if (mask === 0 && maskHi === 0 && !readsState) {\n // Constant fold — treat as static if we can extract a string\n const staticVal = tryExtractStaticString(value)\n if (staticVal !== null) {\n const attrKey = kind === 'class' ? 'class' : resolvedKey\n staticAttrs.push([attrKey, staticVal])\n continue\n }\n }\n const finalMask = mask === 0 && maskHi === 0 && readsState ? 0xffffffff | 0 : mask\n bindings.push([finalMask, maskHi, kind, resolvedKey, value])\n continue\n }\n\n // Per-item accessor call\n if (ts.isCallExpression(value) && isPerItemCall(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push([0xffffffff | 0, 0, kind, resolvedKey, value])\n continue\n }\n\n // Per-item property access: item.field (or hoisted __a0/__a1/…)\n if (isPerItemFieldAccess(value) || isHoistedPerItem(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push([0xffffffff | 0, 0, kind, resolvedKey, value])\n continue\n }\n\n // Static literal prop\n if (ts.isStringLiteral(value)) {\n const kind = classifyKind(key)\n const attrKey = kind === 'class' ? 'class' : resolveKey(key, kind)\n staticAttrs.push([attrKey, value.text])\n continue\n }\n if (ts.isNumericLiteral(value)) {\n const kind = classifyKind(key)\n const attrKey = kind === 'class' ? 'class' : resolveKey(key, kind)\n staticAttrs.push([attrKey, value.text])\n continue\n }\n if (value.kind === ts.SyntaxKind.TrueKeyword) {\n const kind = classifyKind(key)\n const attrKey = kind === 'class' ? 'class' : resolveKey(key, kind)\n staticAttrs.push([attrKey, ''])\n continue\n }\n\n // Non-literal prop — can't collapse\n return null\n }\n }\n\n // Analyze children\n const children: AnalyzedChild[] = []\n\n if (childrenArg && ts.isArrayLiteralExpression(childrenArg)) {\n let childIdx = 0\n for (const child of childrenArg.elements) {\n // String literal child — static text node\n if (ts.isStringLiteral(child) || ts.isNoSubstitutionTemplateLiteral(child)) {\n children.push({ type: 'staticText', value: child.text })\n childIdx++\n continue\n }\n\n // text('literal') — static text\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n child.expression.text === 'text'\n ) {\n if (child.arguments.length >= 1 && ts.isStringLiteral(child.arguments[0]!)) {\n children.push({ type: 'staticText', value: child.arguments[0]!.text })\n childIdx++ // static text creates a text node in the template DOM\n continue\n }\n // Reactive text — accessor is first arg\n const accessor = child.arguments[0]!\n if (ts.isArrowFunction(accessor) || ts.isFunctionExpression(accessor)) {\n const { mask, maskHi, readsState } = computeAccessorMask(\n accessor,\n fieldBits,\n undefined,\n fieldBitsHi,\n )\n children.push({\n type: 'reactiveText',\n accessor,\n mask: mask === 0 && maskHi === 0 && readsState ? 0xffffffff | 0 : mask,\n maskHi,\n childIdx,\n })\n childIdx++ // placeholder text node in template\n continue\n }\n // Per-item text: text(item(t => t.label))\n if (ts.isCallExpression(accessor) && isPerItemCall(accessor)) {\n children.push({\n type: 'reactiveText',\n accessor,\n mask: 0xffffffff | 0,\n maskHi: 0,\n childIdx,\n })\n childIdx++ // placeholder text node in template\n continue\n }\n // Per-item text via property access: text(item.label)\n // Also matches hoisted __a0/__a1/… identifiers produced by dedup.\n if (isPerItemFieldAccess(accessor) || isHoistedPerItem(accessor)) {\n children.push({\n type: 'reactiveText',\n accessor,\n mask: 0xffffffff | 0,\n maskHi: 0,\n childIdx,\n })\n childIdx++\n continue\n }\n return null // unsupported text() form\n }\n\n // Element helper call — recurse\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n helpers.has(child.expression.text)\n ) {\n const childNode = analyzeSubtree(\n child,\n helpers,\n fieldBits,\n [...path, childIdx],\n fieldBitsHi,\n )\n if (!childNode) return null\n children.push({ type: 'element', node: childNode })\n childIdx++\n continue\n }\n\n // Anything else (each, branch, show, arbitrary expressions) — bail\n return null\n }\n\n // Note: mixed static + reactive text in the same parent is now supported\n // because reactive text uses <!--$--> comment placeholders that break\n // text-node merging at parse time.\n } else if (childrenArg && childrenArg.kind !== ts.SyntaxKind.NullKeyword) {\n // Non-array children (e.g., spread, variable) — bail\n return null\n }\n\n return { tag, localName, staticAttrs, events, bindings, children, path }\n}\n\nfunction tryExtractStaticString(accessor: ts.ArrowFunction | ts.FunctionExpression): string | null {\n const body = ts.isArrowFunction(accessor) ? accessor.body : null\n if (body && ts.isStringLiteral(body)) return body.text\n return null\n}\n\n/**\n * Check if a subtree has any nested element children (worth collapsing).\n */\nfunction hasNestedElements(node: AnalyzedNode): boolean {\n return node.children.some((c) => c.type === 'element')\n}\n\n/**\n * Collect all local helper names used in the subtree for import cleanup.\n */\nfunction collectUsedHelpers(node: AnalyzedNode, out: Set<string>): void {\n out.add(node.localName)\n for (const child of node.children) {\n if (child.type === 'element') collectUsedHelpers(child.node, out)\n }\n}\n\n/**\n * Build the static HTML string from an analyzed subtree.\n */\nfunction buildTemplateHTML(node: AnalyzedNode): string {\n let html = `<${node.tag}`\n for (const [key, value] of node.staticAttrs) {\n html += formatStaticAttr(key, value)\n }\n html += '>'\n\n if (VOID_ELEMENTS.has(node.tag)) return html\n\n for (let ci = 0; ci < node.children.length; ci++) {\n const child = node.children[ci]!\n if (child.type === 'staticText') {\n html += escapeHTML(child.value)\n } else if (child.type === 'element') {\n html += buildTemplateHTML(child.node)\n } else if (child.type === 'reactiveText') {\n // When the reactive text is not adjacent to another text-type child,\n // we can use a literal text node placeholder instead of a comment.\n // The cloned text node is reused in the patch function — no\n // createTextNode + replaceChild needed. This saves 2 DOM operations\n // per text binding per row.\n //\n // When adjacent text WOULD cause HTML-parser merging (two text nodes\n // collapse into one), we fall back to the comment placeholder.\n const prev = ci > 0 ? node.children[ci - 1]! : null\n const next = ci < node.children.length - 1 ? node.children[ci + 1]! : null\n const adjText =\n prev?.type === 'staticText' ||\n prev?.type === 'reactiveText' ||\n next?.type === 'staticText' ||\n next?.type === 'reactiveText'\n if (adjText) {\n html += '<!--$-->'\n } else {\n // Space character becomes a Text node in the cloned template.\n // Mark the child so the patch codegen knows to skip replaceChild.\n html += ' '\n ;(child as { inlineText?: boolean }).inlineText = true\n }\n }\n }\n\n html += `</${node.tag}>`\n return html\n}\n\ninterface PatchOp {\n /** Variable name for this node (e.g., __n0) */\n varName: string\n /** Expression to walk to this node from root */\n walkExpr: ts.Expression\n /** Event listeners to attach */\n events: Array<[string, ts.Expression]>\n /** Bindings to register via __bind: [mask, maskHi, kind, key, accessor] */\n bindings: Array<[number, number, string, string, ts.Expression]>\n /** Reactive text children — reference existing placeholder text nodes */\n reactiveTexts: Array<{\n accessor: ts.Expression\n mask: number\n maskHi: number\n childIdx: number\n }>\n}\n\n/**\n * Collect all patch operations from an analyzed subtree.\n */\nfunction collectPatchOps(\n node: AnalyzedNode,\n f: ts.NodeFactory,\n rootExpr: ts.Expression,\n ops: PatchOp[],\n counter: { n: number; t: number },\n): void {\n const hasDynamic =\n node.events.length > 0 ||\n node.bindings.length > 0 ||\n node.children.some((c) => c.type === 'reactiveText')\n\n let nodeExpr = rootExpr\n\n if (hasDynamic) {\n const varName = `__n${counter.n++}`\n // Build walk expression: root.childNodes[i].childNodes[j]...\n nodeExpr = f.createIdentifier(varName)\n ops.push({\n varName,\n walkExpr: buildWalkExpr(node.path, f),\n events: node.events,\n bindings: node.bindings,\n reactiveTexts: node.children.filter(\n (c): c is Extract<AnalyzedChild, { type: 'reactiveText' }> => c.type === 'reactiveText',\n ),\n })\n }\n\n // Recurse into element children\n for (const child of node.children) {\n if (child.type === 'element') {\n collectPatchOps(child.node, f, nodeExpr, ops, counter)\n }\n }\n}\n\nfunction buildWalkExpr(path: number[], f: ts.NodeFactory): ts.Expression {\n let expr: ts.Expression = f.createIdentifier('root')\n for (const idx of path) {\n // Use firstChild + nextSibling chain instead of childNodes[n]\n // firstChild/nextSibling are direct pointer lookups, childNodes is a live NodeList\n expr = f.createPropertyAccessExpression(expr, 'firstChild')\n for (let i = 0; i < idx; i++) {\n expr = f.createPropertyAccessExpression(expr, 'nextSibling')\n }\n }\n return expr\n}\n\n/**\n * Emit elTemplate(htmlString, (root, __bind) => { ... }) call.\n */\nfunction emitSubtreeTemplate(\n analyzed: AnalyzedNode,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const html = buildTemplateHTML(analyzed)\n const ops: PatchOp[] = []\n const counter = { n: 0, t: 0 }\n\n // Collect root-level patches\n const rootHasDynamic =\n analyzed.events.length > 0 ||\n analyzed.bindings.length > 0 ||\n analyzed.children.some((c) => c.type === 'reactiveText')\n\n if (rootHasDynamic) {\n ops.push({\n varName: '', // use 'root' directly\n walkExpr: f.createIdentifier('root'),\n events: analyzed.events,\n bindings: analyzed.bindings,\n reactiveTexts: analyzed.children.filter(\n (c): c is Extract<AnalyzedChild, { type: 'reactiveText' }> => c.type === 'reactiveText',\n ),\n })\n }\n\n // Collect child patches\n for (const child of analyzed.children) {\n if (child.type === 'element') {\n collectPatchOps(child.node, f, f.createIdentifier('root'), ops, counter)\n }\n }\n\n // Collect delegatable events: group by event type across all ops\n // Events on child nodes with the same type are delegated to the root\n const delegatableEvents = new Map<string, Array<{ nodeVar: string; handler: ts.Expression }>>()\n for (const op of ops) {\n for (const [eventName, handler] of op.events) {\n if (!op.varName) {\n // Root-level events — can't delegate further up\n continue\n }\n const list = delegatableEvents.get(eventName)\n if (list) list.push({ nodeVar: op.varName, handler })\n else delegatableEvents.set(eventName, [{ nodeVar: op.varName, handler }])\n }\n }\n\n // Build patch function body\n const stmts: ts.Statement[] = []\n\n for (const op of ops) {\n const nodeRef = op.varName ? f.createIdentifier(op.varName) : f.createIdentifier('root')\n\n // Variable declaration for walking to node\n if (op.varName) {\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(op.varName, undefined, undefined, op.walkExpr)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n }\n\n // Non-delegatable events (root-level or single-use event types)\n for (const [eventName, handler] of op.events) {\n const delegated = delegatableEvents.get(eventName)\n if (op.varName && delegated && delegated.length >= 2) continue // handled below\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(nodeRef, 'addEventListener'),\n undefined,\n [f.createStringLiteral(eventName), handler],\n ),\n ),\n )\n }\n\n // Reactive text children — walk to placeholder, create text node, bind\n for (const rt of op.reactiveTexts) {\n const tVar = `__t${counter.t++}`\n const isInline = !!(rt as { inlineText?: boolean }).inlineText\n\n if (isInline) {\n // Inline text placeholder: the template HTML has a space character\n // that cloneNode already created as a Text node. Walk to it and\n // bind directly — no createTextNode, no replaceChild.\n let walk: ts.Expression = f.createPropertyAccessExpression(nodeRef, 'firstChild')\n for (let i = 0; i < rt.childIdx; i++) {\n walk = f.createPropertyAccessExpression(walk, 'nextSibling')\n }\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(tVar, undefined, undefined, walk)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n } else {\n // Comment placeholder: create a new text node and replace the comment.\n const cVar = `__c${counter.t - 1}`\n let walk: ts.Expression = f.createPropertyAccessExpression(nodeRef, 'firstChild')\n for (let i = 0; i < rt.childIdx; i++) {\n walk = f.createPropertyAccessExpression(walk, 'nextSibling')\n }\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(cVar, undefined, undefined, walk)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n tVar,\n undefined,\n undefined,\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__dom'), 'createTextNode'),\n undefined,\n [f.createStringLiteral('')],\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier(cVar), 'parentNode'),\n 'replaceChild',\n ),\n undefined,\n [f.createIdentifier(tVar), f.createIdentifier(cVar)],\n ),\n ),\n )\n }\n // __bind(__t0, mask, 'text', undefined, accessor, [maskHi])\n const rtArgs: ts.Expression[] = [\n f.createIdentifier(tVar),\n createMaskLiteral(f, rt.mask),\n f.createStringLiteral('text'),\n f.createIdentifier('undefined'),\n rt.accessor,\n ]\n // Only pass the 6th positional arg when the accessor reads a\n // high-word prefix. Keeps the emit byte-identical to the\n // pre-multi-word baseline for the common case.\n if (rt.maskHi !== 0) rtArgs.push(createMaskLiteral(f, rt.maskHi))\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__bind'), undefined, rtArgs),\n ),\n )\n }\n\n // Reactive bindings — __bind(node, mask, kind, key, accessor, [maskHi])\n for (const [mask, maskHi, kind, key, accessor] of op.bindings) {\n const args: ts.Expression[] = [\n nodeRef,\n createMaskLiteral(f, mask),\n f.createStringLiteral(kind),\n key ? f.createStringLiteral(key) : f.createIdentifier('undefined'),\n accessor,\n ]\n if (maskHi !== 0) args.push(createMaskLiteral(f, maskHi))\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__bind'), undefined, args),\n ),\n )\n }\n }\n\n // Emit delegated event listeners on root\n for (const [eventName, entries] of delegatableEvents) {\n if (entries.length < 2) continue\n // root.onclick = (e) => { if (n1.contains(e.target)) { h1(); return } if (n2.contains(e.target)) { h2(); return } }\n const eParam = f.createIdentifier('__e')\n const eTarget = f.createPropertyAccessExpression(eParam, 'target')\n\n const ifStmts: ts.Statement[] = []\n for (const { nodeVar, handler } of entries) {\n // if (nodeVar.contains(e.target)) { handler(e); return }\n ifStmts.push(\n f.createIfStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier(nodeVar), 'contains'),\n undefined,\n [eTarget],\n ),\n f.createBlock(\n [\n f.createExpressionStatement(f.createCallExpression(handler, undefined, [eParam])),\n f.createReturnStatement(),\n ],\n true,\n ),\n ),\n )\n }\n\n const delegateHandler = f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, '__e')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(ifStmts, true),\n )\n\n // root.addEventListener(eventName, handler)\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('root'), 'addEventListener'),\n undefined,\n [f.createStringLiteral(eventName), delegateHandler],\n ),\n ),\n )\n }\n\n // (root, __bind, __dom) => { ... }\n const patchFn = f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 'root'),\n f.createParameterDeclaration(undefined, undefined, '__bind'),\n f.createParameterDeclaration(undefined, undefined, '__dom'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(stmts, true),\n )\n\n const call = f.createCallExpression(f.createIdentifier('elTemplate'), undefined, [\n f.createStringLiteral(html),\n patchFn,\n ])\n\n return call\n}\n\n// ── Static subtree detection ─────────────────────────────────────\n\nfunction isStaticChildren(children: ts.Expression): boolean {\n if (children.kind === ts.SyntaxKind.NullKeyword) return true\n if (!ts.isArrayLiteralExpression(children)) return false\n return children.elements.every((child) => {\n // text('literal') — static text\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n child.expression.text === 'text'\n ) {\n return child.arguments.length === 1 && ts.isStringLiteral(child.arguments[0]!)\n }\n // Another elSplit or element helper that was already determined static\n // For now, only handle text() children\n return false\n })\n}\n\nfunction buildStaticHTML(\n tag: string,\n staticProps: ts.Statement[],\n children: ts.Expression,\n _f: ts.NodeFactory,\n): string | null {\n // Extract static attributes from staticFn statements. Any statement that\n // doesn't match the recognized \"static prop assignment\" shapes forces a\n // bail to the runtime elSplit path — silently skipping would drop the\n // statement's effect (e.g. `__bindUncertain(__e, ...)` calls that bind\n // unresolvable values at mount).\n let attrs = ''\n for (const stmt of staticProps) {\n if (!ts.isExpressionStatement(stmt)) return null\n const expr = stmt.expression\n // __e.className = 'value'\n if (ts.isBinaryExpression(expr) && ts.isPropertyAccessExpression(expr.left)) {\n const prop = expr.left.name.text\n if (prop === 'className' && ts.isStringLiteral(expr.right)) {\n attrs += formatStaticAttr('class', expr.right.text)\n continue\n }\n return null\n }\n // __e.setAttribute('key', 'value')\n if (ts.isCallExpression(expr) && ts.isPropertyAccessExpression(expr.expression)) {\n if (expr.expression.name.text === 'setAttribute' && expr.arguments.length === 2) {\n const key = expr.arguments[0]\n const val = expr.arguments[1]\n if (key && val && ts.isStringLiteral(key) && ts.isStringLiteral(val)) {\n attrs += formatStaticAttr(key.text, val.text)\n continue\n }\n return null // non-literal attribute\n }\n return null\n }\n // Unrecognized statement shape — bail to elSplit. This catches\n // `__bindUncertain(...)` and any future emission added to staticProps\n // that the static-HTML extractor doesn't know how to serialise.\n return null\n }\n\n // Extract text children\n let inner = ''\n if (ts.isArrayLiteralExpression(children)) {\n for (const child of children.elements) {\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n child.expression.text === 'text'\n ) {\n if (ts.isStringLiteral(child.arguments[0]!)) {\n inner += escapeHTML(child.arguments[0]!.text)\n } else {\n return null\n }\n } else {\n return null\n }\n }\n }\n\n return `<${tag}${attrs}>${inner}</${tag}>`\n}\n\nfunction escapeHTML(s: string): string {\n return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')\n}\n\nfunction escapeAttr(s: string): string {\n return s.replace(/&/g, '&amp;').replace(/\"/g, '&quot;')\n}\n\n// Per HTML5, attribute values may appear unquoted when they contain none of\n// the unsafe characters listed below. Eliminating the surrounding quotes\n// saves 2 bundle bytes per static attribute — multiplied across each row\n// template the compiler emits via `__cloneStaticTemplate`. Tier 9.\nconst UNQUOTED_ATTR_VALUE = /^[^\\s\"'`=<>&]+$/\n\nfunction formatStaticAttr(key: string, value: string): string {\n if (value === '') return ` ${key}=\"\"`\n if (UNQUOTED_ATTR_VALUE.test(value)) return ` ${key}=${value}`\n return ` ${key}=\"${escapeAttr(value)}\"`\n}\n\nfunction emitTemplateClone(html: string, f: ts.NodeFactory): ts.Expression {\n // Emits: __cloneStaticTemplate(\"<html>\")\n //\n // The helper lives in `@llui/dom` and threads through `ctx.dom` so SSR\n // under jsdom/linkedom works without touching globalThis. The import\n // cleanup pass (see cleanupImports) auto-injects the import when this\n // emission fires.\n return f.createCallExpression(f.createIdentifier('__cloneStaticTemplate'), undefined, [\n f.createStringLiteral(html),\n ])\n}\n\nfunction isPerItemCall(node: ts.CallExpression): boolean {\n // Matches: item(t => t.field) or item(t => expr)\n // where item is an identifier (the scoped accessor from each() render)\n if (!ts.isIdentifier(node.expression)) return false\n // Check that the first argument is an arrow function (the selector)\n if (node.arguments.length !== 1) return false\n const arg = node.arguments[0]!\n return ts.isArrowFunction(arg) || ts.isFunctionExpression(arg)\n}\n\n// Matches: item.FIELD — the item-proxy shorthand equivalent of item(t => t.FIELD).\n// Lifetime-checked: the `item` identifier must resolve to a parameter of an\n// `each({ render })` callback. Without this check, plain\n// `arr.map((item) => item.field)` outside each() would be rewritten as a\n// per-item binding and crash at runtime with \"accessor is not a function\"\n// because `item.field` evaluates to a bare value (not a function) when\n// treated as an accessor.\nfunction isPerItemFieldAccess(node: ts.Node): node is ts.PropertyAccessExpression {\n if (!ts.isPropertyAccessExpression(node)) return false\n if (!ts.isIdentifier(node.expression)) return false\n if (node.expression.text !== 'item') return false\n if (!ts.isIdentifier(node.name)) return false\n return isItemBoundToEachRender(node)\n}\n\n/**\n * Walks up from a node and returns true iff the nearest enclosing function\n * that binds an `item` parameter is the `render` property of an `each()`\n * call. Handles both positional (`(item) => …`) and destructured\n * (`({ item, index }) => …`) parameter bindings.\n */\nfunction isItemBoundToEachRender(node: ts.Node): boolean {\n let current: ts.Node | undefined = node.parent\n while (current) {\n if (ts.isArrowFunction(current) || ts.isFunctionExpression(current)) {\n if (functionParamsBindItem(current)) {\n return isEachRenderCallback(current)\n }\n }\n current = current.parent\n }\n return false\n}\n\nfunction functionParamsBindItem(fn: ts.ArrowFunction | ts.FunctionExpression): boolean {\n for (const param of fn.parameters) {\n if (bindingNameBindsItem(param.name)) return true\n }\n return false\n}\n\nfunction bindingNameBindsItem(name: ts.BindingName): boolean {\n if (ts.isIdentifier(name)) return name.text === 'item'\n if (ts.isObjectBindingPattern(name) || ts.isArrayBindingPattern(name)) {\n for (const el of name.elements) {\n if (ts.isBindingElement(el) && bindingNameBindsItem(el.name)) return true\n }\n }\n return false\n}\n\nfunction isEachRenderCallback(fn: ts.ArrowFunction | ts.FunctionExpression): boolean {\n const parent = fn.parent\n if (!parent || !ts.isPropertyAssignment(parent)) return false\n if (!ts.isIdentifier(parent.name) || parent.name.text !== 'render') return false\n const objLit = parent.parent\n if (!objLit || !ts.isObjectLiteralExpression(objLit)) return false\n const call = objLit.parent\n if (!call || !ts.isCallExpression(call)) return false\n if (!ts.isIdentifier(call.expression) || call.expression.text !== 'each') return false\n return true\n}\n\n// Matches the hoisted identifiers produced by tryDeduplicateItemSelectors: __a0, __a1, …\n// These represent already-cached per-item accessors.\nfunction isHoistedPerItem(node: ts.Node): node is ts.Identifier {\n if (!ts.isIdentifier(node)) return false\n return /^__a\\d+$/.test(node.text)\n}\n\n// ── Mask computation ─────────────────────────────────────────────\n\n// Returns { mask, readsState }\n// mask = 0 + readsState = false → constant (can fold to static)\n// mask = 0 + readsState = true → unresolvable state access (FULL_MASK)\n// mask > 0 → precise mask\n// See `NON_DELEGATION_HELPERS` in collect-deps.ts — same set of names\n// that aren't followed when scanning for `helper(s)` delegation calls.\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"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"}