{"version":3,"sources":["../src/reactivity/effect.ts","../src/reactivity/signal.ts","../src/reactivity/computed.ts","../src/reactivity/reactive.ts","../src/reactivity/scheduler.ts","../src/reactivity/index.ts","../src/registry/registry.ts","../src/scope/scope.ts","../src/evaluator/lexer.ts","../src/evaluator/parser.ts","../src/evaluator/interpreter.ts","../src/evaluator/index.ts","../src/errors.ts","../src/dom.ts","../src/scope/environment.ts","../src/lifecycle/attributes.ts","../src/magics/persist.ts","../src/lifecycle/tree.ts","../src/lifecycle/observer.ts","../src/directives/text.ts","../src/directives/shared.ts","../src/directives/bind.ts","../src/directives/on.ts","../src/directives/model.ts","../src/directives/transition.ts","../src/directives/show.ts","../src/directives/conditionals.ts","../src/directives/for.ts","../src/directives/teleport.ts","../src/idstore.ts","../src/directives/misc.ts","../src/directives/observe.ts","../src/directives/focusable.ts","../src/directives/focus.ts","../src/directives/anchor.ts","../src/directives/collapse.ts","../src/directives/mask.ts","../src/directives/index.ts","../src/magics/focus.ts","../src/magics/index.ts","../src/summit.ts","../src/index.ts"],"names":["tokens","start","id","init","body","key","computed","signal","value","meta","on","debounce","durationFor","visible","anchor","base","effect","ref"],"mappings":"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","file":"summit.cjs","sourcesContent":["/**\n * The reactive effect system.\n *\n * This is the heart of Summit. An `effect` is a function that automatically\n * re-runs whenever any reactive value it read during its last run changes.\n * Dependency tracking is fine-grained: a `dep` is a set of effects that\n * depend on one specific value, so a change only wakes the effects that\n * actually read that value. Nothing else re-runs.\n */\n\nexport type Dep = Set<ReactiveEffect>;\n\nexport interface EffectOptions {\n  /** Skip the initial run. The effect only runs when its scheduler fires. */\n  lazy?: boolean;\n  /** Called instead of re-running the effect directly when a dep changes. */\n  scheduler?: () => void;\n  /** Called when the effect is stopped. */\n  onStop?: () => void;\n}\n\nexport interface ReactiveEffect {\n  (): void;\n  /** The deps this effect is currently subscribed to. */\n  deps: Dep[];\n  /** Whether the effect is still live. Stopped effects never re-run. */\n  active: boolean;\n  scheduler?: () => void;\n  onStop?: () => void;\n  /** The user function this effect wraps. */\n  raw: () => unknown;\n}\n\nlet activeEffect: ReactiveEffect | undefined;\nconst effectStack: ReactiveEffect[] = [];\n\n// Batching. While a batch is open, triggered effects are collected instead of\n// run, then flushed once when the outermost batch closes.\nlet batchDepth = 0;\nlet pendingEffects = new Set<ReactiveEffect>();\n\n/**\n * Create a reactive effect. Runs immediately unless `lazy` is set. Returns a\n * runner you can call manually or hand to `stop()`.\n */\nexport function effect(fn: () => unknown, options: EffectOptions = {}): ReactiveEffect {\n  const runner = createReactiveEffect(fn, options);\n  if (!options.lazy) runner();\n  return runner;\n}\n\nfunction createReactiveEffect(fn: () => unknown, options: EffectOptions): ReactiveEffect {\n  const runner = function reactiveEffect(): unknown {\n    if (!runner.active) return fn();\n    // Guard against an effect that reads a value it also writes: it must not\n    // schedule itself into an infinite loop.\n    if (effectStack.includes(runner)) return undefined;\n    cleanupDeps(runner);\n    try {\n      effectStack.push(runner);\n      activeEffect = runner;\n      return fn();\n    } finally {\n      effectStack.pop();\n      activeEffect = effectStack[effectStack.length - 1];\n    }\n  } as ReactiveEffect;\n\n  runner.deps = [];\n  runner.active = true;\n  runner.scheduler = options.scheduler;\n  runner.onStop = options.onStop;\n  runner.raw = fn;\n  return runner;\n}\n\nfunction cleanupDeps(runner: ReactiveEffect): void {\n  const { deps } = runner;\n  for (const dep of deps) dep.delete(runner);\n  deps.length = 0;\n}\n\n/** Permanently stop an effect and unsubscribe it from every dep. */\nexport function stop(runner: ReactiveEffect): void {\n  if (runner.active) {\n    cleanupDeps(runner);\n    runner.onStop?.();\n    runner.active = false;\n  }\n}\n\n/** Record that the currently running effect depends on `dep`. */\nexport function track(dep: Dep): void {\n  if (activeEffect) {\n    if (!dep.has(activeEffect)) {\n      dep.add(activeEffect);\n      activeEffect.deps.push(dep);\n    }\n  }\n}\n\n/** Wake every effect subscribed to `dep`. */\nexport function trigger(dep: Dep): void {\n  if (dep.size === 0) return; // a value with no subscribers: nothing to wake\n  // Snapshot first: an effect re-subscribing during its run must not mutate the\n  // set we are iterating.\n  const effects = [...dep];\n  for (const eff of effects) {\n    // Never re-trigger the effect that is currently running (self-write guard).\n    if (eff === activeEffect) continue;\n    if (batchDepth > 0) {\n      pendingEffects.add(eff);\n      continue;\n    }\n    runEffect(eff);\n  }\n}\n\nfunction runEffect(eff: ReactiveEffect): void {\n  if (eff.scheduler) eff.scheduler();\n  else eff();\n}\n\n/** Run `fn` without subscribing the active effect to anything read inside it. */\nexport function untrack<T>(fn: () => T): T {\n  const prev = activeEffect;\n  activeEffect = undefined;\n  try {\n    return fn();\n  } finally {\n    activeEffect = prev;\n  }\n}\n\n/**\n * Group multiple writes so dependent effects run once at the end instead of\n * after each write. Batches nest; only the outermost flush runs effects.\n */\nexport function batch<T>(fn: () => T): T {\n  batchDepth++;\n  try {\n    return fn();\n  } finally {\n    if (--batchDepth === 0) flushBatch();\n  }\n}\n\nfunction flushBatch(): void {\n  if (pendingEffects.size === 0) return;\n  // Drain by swapping rather than copying: the flush runs with batchDepth 0, so\n  // any further triggers run synchronously instead of refilling this set.\n  const effects = pendingEffects;\n  pendingEffects = new Set();\n  for (const eff of effects) {\n    if (eff.active) runEffect(eff);\n  }\n}\n\n/** The effect that is currently executing, or undefined. For internal use. */\nexport function getActiveEffect(): ReactiveEffect | undefined {\n  return activeEffect;\n}\n","/**\n * A signal: a single reactive value with an explicit getter/setter.\n *\n * Reading the signal (calling it) subscribes the active effect. Writing it\n * (`.set`) wakes every subscribed effect, but only if the value actually\n * changed (`Object.is`). `.peek()` reads without subscribing.\n */\n\nimport { type Dep, track, trigger } from \"./effect.js\";\n\nexport interface Signal<T> {\n  (): T;\n  set(next: T | ((prev: T) => T)): void;\n  peek(): T;\n}\n\nexport function signal<T>(initial: T): Signal<T> {\n  let value = initial;\n  const dep: Dep = new Set();\n\n  const read = function (): T {\n    track(dep);\n    return value;\n  } as Signal<T>;\n\n  read.set = (next: T | ((prev: T) => T)): void => {\n    const nextValue = typeof next === \"function\" ? (next as (prev: T) => T)(value) : next;\n    if (!Object.is(nextValue, value)) {\n      value = nextValue;\n      trigger(dep);\n    }\n  };\n\n  read.peek = (): T => value;\n\n  return read;\n}\n\n/** True if `x` is a signal produced by `signal()`. */\nexport function isSignal<T = unknown>(x: unknown): x is Signal<T> {\n  return typeof x === \"function\" && typeof (x as Signal<T>).set === \"function\" && typeof (x as Signal<T>).peek === \"function\";\n}\n","/**\n * A computed value: a memoized, lazily-evaluated derivation.\n *\n * Unlike a plain getter (which Alpine re-runs on every read), a computed caches\n * its result and only recomputes when one of its own dependencies changes. It\n * stays lazy: the getter does not run until something reads the computed.\n */\n\nimport { type Dep, type ReactiveEffect, effect, track, trigger } from \"./effect.js\";\n\nexport interface Computed<T> {\n  (): T;\n  peek(): T;\n}\n\nexport function computed<T>(getter: () => T): Computed<T> {\n  let value: T;\n  let dirty = true;\n  const dep: Dep = new Set();\n\n  const runner: ReactiveEffect = effect(getter, {\n    lazy: true,\n    scheduler: () => {\n      // A dependency changed. Mark stale and notify our own subscribers so\n      // they re-read (and thereby recompute) on demand.\n      if (!dirty) {\n        dirty = true;\n        trigger(dep);\n      }\n    },\n  });\n\n  const read = function (): T {\n    if (dirty) {\n      value = runner() as T;\n      dirty = false;\n    }\n    track(dep);\n    return value;\n  } as Computed<T>;\n\n  read.peek = (): T => {\n    if (dirty) {\n      value = runner() as T;\n      dirty = false;\n    }\n    return value;\n  };\n\n  return read;\n}\n","/**\n * Deep reactive objects.\n *\n * `reactive(obj)` returns a Proxy that tracks property reads and triggers on\n * writes, so `this.open = true` inside a component method just works. Nested\n * objects and arrays are wrapped lazily on access. This is what backs a\n * component's `s-data` scope, giving Alpine-style ergonomics on top of\n * Summit's fine-grained effect system.\n */\n\nimport { type Dep, track, trigger } from \"./effect.js\";\n\nconst RAW = Symbol(\"summit.raw\");\nconst ITERATE_KEY = Symbol(\"summit.iterate\");\n\nconst targetMap = new WeakMap<object, Map<PropertyKey, Dep>>();\nconst proxyMap = new WeakMap<object, object>();\n\nfunction getDep(target: object, key: PropertyKey): Dep {\n  let depsMap = targetMap.get(target);\n  if (!depsMap) targetMap.set(target, (depsMap = new Map()));\n  let dep = depsMap.get(key);\n  if (!dep) depsMap.set(key, (dep = new Set()));\n  return dep;\n}\n\nfunction trackProp(target: object, key: PropertyKey): void {\n  track(getDep(target, key));\n}\n\nfunction triggerProp(target: object, key: PropertyKey): void {\n  const depsMap = targetMap.get(target);\n  if (!depsMap) return;\n  const dep = depsMap.get(key);\n  if (dep) trigger(dep);\n}\n\nfunction isObject(x: unknown): x is object {\n  return x !== null && typeof x === \"object\";\n}\n\n/**\n * Only plain objects and arrays are deeply reactive. Class instances (DOM\n * nodes, Date, Map, RegExp, ...) are returned untouched, so storing a DOM\n * element or other host object in reactive data never breaks it.\n */\nfunction isPlainObject(o: object): boolean {\n  const proto = Object.getPrototypeOf(o);\n  return proto === Object.prototype || proto === null;\n}\nfunction shouldWrap(o: unknown): o is object {\n  return isObject(o) && (Array.isArray(o) || isPlainObject(o));\n}\n\nconst handlers: ProxyHandler<Record<PropertyKey, unknown>> = {\n  get(target, key, receiver) {\n    if (key === RAW) return target;\n    const result = Reflect.get(target, key, receiver);\n    // Symbol keys and built-in prototype methods are not tracked as data.\n    if (typeof key === \"symbol\") return result;\n    trackProp(target, key);\n    if (shouldWrap(result)) return reactive(result);\n    return result;\n  },\n\n  set(target, key, value, receiver) {\n    const raw = isObject(value) ? toRaw(value) : value;\n    const isArray = Array.isArray(target);\n    const hadKey = isArray\n      ? Number(key) < target.length\n      : Object.prototype.hasOwnProperty.call(target, key);\n    const oldValue = (target as Record<PropertyKey, unknown>)[key as string];\n    const result = Reflect.set(target, key, raw, receiver);\n\n    if (!hadKey) {\n      // A brand new key: notify iteration watchers (s-for over objects) too.\n      triggerProp(target, key);\n      triggerProp(target, isArray ? \"length\" : ITERATE_KEY);\n    } else if (!Object.is(oldValue, raw)) {\n      triggerProp(target, key);\n    }\n    return result;\n  },\n\n  has(target, key) {\n    trackProp(target, key);\n    return Reflect.has(target, key);\n  },\n\n  deleteProperty(target, key) {\n    const had = Object.prototype.hasOwnProperty.call(target, key);\n    const result = Reflect.deleteProperty(target, key);\n    if (had && result) {\n      triggerProp(target, key);\n      triggerProp(target, ITERATE_KEY);\n    }\n    return result;\n  },\n\n  ownKeys(target) {\n    trackProp(target, Array.isArray(target) ? \"length\" : ITERATE_KEY);\n    return Reflect.ownKeys(target);\n  },\n};\n\n/** Wrap an object in a deep reactive proxy. Idempotent and cached per object. */\nexport function reactive<T extends object>(target: T): T {\n  if (!shouldWrap(target)) return target;\n  // Already a proxy.\n  if ((target as { [RAW]?: unknown })[RAW]) return target;\n  const existing = proxyMap.get(target);\n  if (existing) return existing as T;\n  const proxy = new Proxy(target as Record<PropertyKey, unknown>, handlers) as T;\n  proxyMap.set(target, proxy);\n  return proxy;\n}\n\n/** Unwrap a reactive proxy back to its plain object. Safe on non-proxies. */\nexport function toRaw<T>(observed: T): T {\n  const raw = observed && (observed as { [RAW]?: T })[RAW];\n  return raw ? toRaw(raw) : observed;\n}\n\n/** True if `x` is a reactive proxy. */\nexport function isReactive(x: unknown): boolean {\n  return isObject(x) && Boolean((x as { [RAW]?: unknown })[RAW]);\n}\n","/**\n * The microtask scheduler.\n *\n * DOM-facing effects do not run synchronously on every write. They queue here\n * and flush once per microtask, so a burst of state changes produces a single\n * coalesced DOM update. `nextTick` resolves after that flush, which is how a\n * component can read the freshly-updated DOM.\n */\n\ntype Job = () => void;\n\nlet queue = new Set<Job>();\nlet flushing = false;\nlet flushPromise: Promise<void> | null = null;\nconst resolved = Promise.resolve();\n\n/** Queue a job to run on the next microtask flush. Deduplicated. */\nexport function queueJob(job: Job): void {\n  queue.add(job);\n  if (!flushing) {\n    flushing = true;\n    flushPromise = resolved.then(flushJobs);\n  }\n}\n\nfunction flushJobs(): void {\n  // Drain by swapping the Set instead of copying it into an array: jobs queued\n  // during the flush land in the fresh queue and run next tick, same as before.\n  const jobs = queue;\n  queue = new Set();\n  flushing = false;\n  flushPromise = null;\n  for (const job of jobs) job();\n}\n\n/**\n * Resolve after the current flush completes. With a callback, runs it after the\n * flush; without one, returns a promise you can await.\n */\nexport function nextTick(callback?: () => void): Promise<void> {\n  const p = flushPromise ?? resolved;\n  return callback ? p.then(() => void callback()) : p.then(() => undefined);\n}\n","/**\n * Public surface of Summit's reactivity system.\n */\n\nexport { signal, isSignal, type Signal } from \"./signal.js\";\nexport { computed, type Computed } from \"./computed.js\";\nexport { reactive, toRaw, isReactive } from \"./reactive.js\";\nexport {\n  effect,\n  stop,\n  track,\n  trigger,\n  untrack,\n  batch,\n  getActiveEffect,\n  type Dep,\n  type ReactiveEffect,\n  type EffectOptions,\n} from \"./effect.js\";\nexport { queueJob, nextTick } from \"./scheduler.js\";\n\nimport { effect, stop, type ReactiveEffect } from \"./effect.js\";\nimport { queueJob } from \"./scheduler.js\";\n\n/**\n * A batched, DOM-facing effect. It runs once immediately, then re-runs on the\n * microtask queue whenever a dependency changes. Returns a disposer. This is\n * the primitive every reactive directive is built on.\n */\nexport function domEffect(fn: () => void): () => void {\n  let runner: ReactiveEffect;\n  runner = effect(fn, {\n    lazy: true,\n    scheduler: () => queueJob(runner),\n  });\n  runner();\n  return () => stop(runner);\n}\n","/**\n * The registries.\n *\n * Everything pluggable in Summit lives here: directives, magics, reusable data\n * providers, global stores, and reusable bind objects. Keeping these in a leaf\n * module (no imports from the rest of Summit) means registration can happen at\n * any time without import cycles, which is what makes Summit's registration\n * timing-safe instead of Alpine's load-order-sensitive model.\n */\n\nimport type { DataProvider, BindProvider, DirectiveHandler, MagicFactory } from \"../types.js\";\nimport { reactive } from \"../reactivity/index.js\";\n\ninterface DirectiveEntry {\n  handler: DirectiveHandler;\n  priority: number;\n}\n\nconst directives = new Map<string, DirectiveEntry>();\nconst magics = new Map<string, MagicFactory>();\nconst dataProviders = new Map<string, DataProvider>();\n// All stores live under one reactive root so single-value stores are reactive\n// too ($store.darkMode = !$store.darkMode just works).\nconst storeRoot = reactive<Record<string, unknown>>({});\nconst binds = new Map<string, BindProvider>();\n\n/** Default priority; lower numbers run earlier on a given element. */\nexport const DEFAULT_PRIORITY = 100;\n\nexport function registerDirective(name: string, handler: DirectiveHandler, priority = DEFAULT_PRIORITY): void {\n  directives.set(name, { handler, priority });\n}\nexport function getDirective(name: string): DirectiveEntry | undefined {\n  return directives.get(name);\n}\nexport function hasDirective(name: string): boolean {\n  return directives.has(name);\n}\nexport function directiveNames(): string[] {\n  return [...directives.keys()];\n}\n\nexport function registerMagic(name: string, factory: MagicFactory): void {\n  magics.set(name, factory);\n}\nexport function getMagic(name: string): MagicFactory | undefined {\n  return magics.get(name);\n}\nexport function hasMagic(name: string): boolean {\n  return magics.has(name);\n}\nexport function magicNames(): string[] {\n  return [...magics.keys()];\n}\n\nexport function registerData(name: string, provider: DataProvider): void {\n  dataProviders.set(name, provider);\n}\nexport function getData(name: string): DataProvider | undefined {\n  return dataProviders.get(name);\n}\n\nexport function setStore(name: string, value: unknown): void {\n  storeRoot[name] = value;\n}\nexport function getStore(name: string): unknown {\n  return storeRoot[name];\n}\nexport function hasStore(name: string): boolean {\n  return name in storeRoot;\n}\nexport function storeNames(): string[] {\n  return Object.keys(storeRoot);\n}\n/** The reactive object holding every store, used by the $store magic. */\nexport function getStoreRoot(): Record<string, unknown> {\n  return storeRoot;\n}\n\nexport function registerBind(name: string, provider: BindProvider): void {\n  binds.set(name, provider);\n}\nexport function getBind(name: string): BindProvider | undefined {\n  return binds.get(name);\n}\n","/**\n * Turns a plain data object into a reactive component scope.\n *\n * Two ergonomics fixes over Alpine happen here:\n *   - Methods are bound to the scope, so `toggle()` and `this.toggle()` both\n *     work and `this.open = x` triggers reactivity.\n *   - Getters become cached computeds, so a getter used in ten places runs\n *     once per dependency change instead of ten times per render.\n */\n\nimport { reactive, computed } from \"../reactivity/index.js\";\nimport type { Scope } from \"../dom.js\";\n\nexport function createScope(raw: Record<PropertyKey, unknown>): Scope {\n  const proxy = reactive(raw);\n\n  const descriptors = Object.getOwnPropertyDescriptors(raw);\n  for (const key of Object.keys(descriptors)) {\n    const desc = descriptors[key]!;\n    if (typeof desc.get === \"function\") {\n      // Cache the getter as a computed keyed to the reactive scope.\n      const getter = desc.get;\n      const setter = desc.set;\n      const cached = computed(() => getter.call(proxy));\n      Object.defineProperty(raw, key, {\n        get: () => cached(),\n        set: setter ? (v: unknown) => setter.call(proxy, v) : undefined,\n        enumerable: desc.enumerable,\n        configurable: true,\n      });\n    } else if (typeof desc.value === \"function\") {\n      // Bind methods to the scope so `this` is always the component.\n      raw[key] = (desc.value as (...a: unknown[]) => unknown).bind(proxy);\n    }\n  }\n\n  return proxy;\n}\n","/**\n * The lexer turns an expression string into a flat list of tokens.\n *\n * This is step one of Summit's CSP-safe evaluator. Because Summit never calls\n * `new Function` or `eval`, it must understand the expression language itself.\n * The lexer recognizes numbers, strings, template literals, identifiers, and a\n * fixed set of operators/punctuators.\n */\n\nexport type TokenType = \"num\" | \"str\" | \"tmpl\" | \"regex\" | \"ident\" | \"punc\" | \"eof\";\n\nexport interface Token {\n  type: TokenType;\n  value: string;\n  /** For template literals: the raw inner source between the backticks. */\n  raw?: string;\n  /** For regex literals: the flag string (e.g. \"gi\"). */\n  flags?: string;\n  start: number;\n  end: number;\n}\n\n// Keywords after which a `/` starts a regex, not a division. (Plain identifiers\n// and value keywords like `this`/`true` are operands, so `/` after them divides.)\nconst REGEX_PRECEDING_KEYWORDS = new Set([\n  \"return\",\n  \"typeof\",\n  \"void\",\n  \"in\",\n  \"instanceof\",\n  \"new\",\n  \"of\",\n  \"delete\",\n  \"do\",\n  \"else\",\n]);\n\n/** Decide whether a `/` at this point begins a regex literal or is division. */\nfunction regexAllowed(prev: Token | undefined): boolean {\n  if (!prev) return true; // start of input\n  switch (prev.type) {\n    case \"num\":\n    case \"str\":\n    case \"tmpl\":\n    case \"regex\":\n      return false; // a value precedes -> division\n    case \"ident\":\n      return REGEX_PRECEDING_KEYWORDS.has(prev.value);\n    case \"punc\":\n      // A value ends with `)` or `]`; anything else expects an operand next.\n      return prev.value !== \")\" && prev.value !== \"]\";\n    default:\n      return true;\n  }\n}\n\n// Multi-character punctuators, longest first so the scanner is greedy.\nconst PUNCTUATORS = [\n  \"...\",\n  \"===\",\n  \"!==\",\n  \"**=\",\n  \"&&=\",\n  \"||=\",\n  \"??=\",\n  \"==\",\n  \"!=\",\n  \"<=\",\n  \">=\",\n  \"&&\",\n  \"||\",\n  \"??\",\n  \"?.\",\n  \"=>\",\n  \"++\",\n  \"--\",\n  \"+=\",\n  \"-=\",\n  \"*=\",\n  \"/=\",\n  \"%=\",\n  \"**\",\n  \"(\",\n  \")\",\n  \"[\",\n  \"]\",\n  \"{\",\n  \"}\",\n  \".\",\n  \",\",\n  \";\",\n  \":\",\n  \"?\",\n  \"+\",\n  \"-\",\n  \"*\",\n  \"/\",\n  \"%\",\n  \"<\",\n  \">\",\n  \"=\",\n  \"!\",\n];\n\nexport class LexError extends Error {}\n\nfunction isIdentStart(ch: string): boolean {\n  return /[A-Za-z_$]/.test(ch);\n}\nfunction isIdentPart(ch: string): boolean {\n  return /[A-Za-z0-9_$]/.test(ch);\n}\nfunction isDigit(ch: string): boolean {\n  return ch >= \"0\" && ch <= \"9\";\n}\n\nexport function tokenize(input: string): Token[] {\n  const tokens: Token[] = [];\n  let i = 0;\n  const n = input.length;\n\n  while (i < n) {\n    const ch = input[i]!;\n\n    // Whitespace.\n    if (ch === \" \" || ch === \"\\t\" || ch === \"\\n\" || ch === \"\\r\") {\n      i++;\n      continue;\n    }\n\n    // Numbers: decimal, float, exponent, and hex (0x...).\n    if (isDigit(ch) || (ch === \".\" && isDigit(input[i + 1] ?? \"\"))) {\n      const start = i;\n      if (ch === \"0\" && (input[i + 1] === \"x\" || input[i + 1] === \"X\")) {\n        i += 2;\n        while (i < n && /[0-9a-fA-F]/.test(input[i]!)) i++;\n      } else {\n        while (i < n && isDigit(input[i]!)) i++;\n        if (input[i] === \".\") {\n          i++;\n          while (i < n && isDigit(input[i]!)) i++;\n        }\n        if (input[i] === \"e\" || input[i] === \"E\") {\n          i++;\n          if (input[i] === \"+\" || input[i] === \"-\") i++;\n          while (i < n && isDigit(input[i]!)) i++;\n        }\n      }\n      tokens.push({ type: \"num\", value: input.slice(start, i), start, end: i });\n      continue;\n    }\n\n    // Strings.\n    if (ch === '\"' || ch === \"'\") {\n      const start = i;\n      const quote = ch;\n      i++;\n      let value = \"\";\n      while (i < n && input[i] !== quote) {\n        if (input[i] === \"\\\\\") {\n          value += readEscape(input, i);\n          i += 2;\n        } else {\n          value += input[i];\n          i++;\n        }\n      }\n      if (i >= n) throw new LexError(`Unterminated string in expression: ${input}`);\n      i++; // closing quote\n      tokens.push({ type: \"str\", value, start, end: i });\n      continue;\n    }\n\n    // Template literals. Captured raw between backticks; parsed later. Nested\n    // `${ ... }` is tracked by brace depth so inner objects do not end it early.\n    if (ch === \"`\") {\n      const start = i;\n      i++;\n      let raw = \"\";\n      let depth = 0;\n      while (i < n) {\n        const c = input[i]!;\n        if (c === \"\\\\\") {\n          raw += input[i]! + (input[i + 1] ?? \"\");\n          i += 2;\n          continue;\n        }\n        if (c === \"`\" && depth === 0) break;\n        if (c === \"$\" && input[i + 1] === \"{\") {\n          depth++;\n          raw += \"${\";\n          i += 2;\n          continue;\n        }\n        if (c === \"}\" && depth > 0) {\n          depth--;\n          raw += \"}\";\n          i++;\n          continue;\n        }\n        raw += c;\n        i++;\n      }\n      if (i >= n) throw new LexError(`Unterminated template literal: ${input}`);\n      i++; // closing backtick\n      tokens.push({ type: \"tmpl\", value: raw, raw, start, end: i });\n      continue;\n    }\n\n    // Identifiers and keywords.\n    if (isIdentStart(ch)) {\n      const start = i;\n      i++;\n      while (i < n && isIdentPart(input[i]!)) i++;\n      tokens.push({ type: \"ident\", value: input.slice(start, i), start, end: i });\n      continue;\n    }\n\n    // Regex literals: `/pattern/flags`, but only where a value is expected, so\n    // `a / b` and `a /= b` are still division. A `/` inside a `[...]` class does\n    // not end the pattern.\n    if (ch === \"/\" && regexAllowed(tokens[tokens.length - 1])) {\n      const start = i;\n      i++;\n      let body = \"\";\n      let inClass = false;\n      while (i < n) {\n        const c = input[i]!;\n        if (c === \"\\\\\") {\n          body += c + (input[i + 1] ?? \"\");\n          i += 2;\n          continue;\n        }\n        if (c === \"\\n\") throw new LexError(`Unterminated regex in expression: ${input}`);\n        if (c === \"[\") inClass = true;\n        else if (c === \"]\") inClass = false;\n        else if (c === \"/\" && !inClass) break;\n        body += c;\n        i++;\n      }\n      if (input[i] !== \"/\") throw new LexError(`Unterminated regex in expression: ${input}`);\n      i++; // closing slash\n      let flags = \"\";\n      while (i < n && /[a-z]/i.test(input[i]!)) {\n        flags += input[i];\n        i++;\n      }\n      tokens.push({ type: \"regex\", value: body, flags, start, end: i });\n      continue;\n    }\n\n    // Punctuators / operators.\n    let matched = false;\n    for (const p of PUNCTUATORS) {\n      if (input.startsWith(p, i)) {\n        tokens.push({ type: \"punc\", value: p, start: i, end: i + p.length });\n        i += p.length;\n        matched = true;\n        break;\n      }\n    }\n    if (!matched) {\n      throw new LexError(`Unexpected character '${ch}' in expression: ${input}`);\n    }\n  }\n\n  tokens.push({ type: \"eof\", value: \"\", start: n, end: n });\n  return tokens;\n}\n\nfunction readEscape(input: string, at: number): string {\n  const next = input[at + 1];\n  switch (next) {\n    case \"n\":\n      return \"\\n\";\n    case \"t\":\n      return \"\\t\";\n    case \"r\":\n      return \"\\r\";\n    case \"b\":\n      return \"\\b\";\n    case \"f\":\n      return \"\\f\";\n    case \"v\":\n      return \"\\v\";\n    case \"0\":\n      return \"\\0\";\n    case \"\\\\\":\n      return \"\\\\\";\n    case \"'\":\n      return \"'\";\n    case '\"':\n      return '\"';\n    case \"`\":\n      return \"`\";\n    default:\n      return next ?? \"\";\n  }\n}\n","/**\n * The parser turns a token stream into an AST.\n *\n * It supports two entry modes:\n *   - \"expression\": a single expression, used for value directives like\n *     s-data, s-text, s-bind, s-show. A leading `{` is an object literal.\n *   - \"program\": a list of statements, used for action directives like\n *     s-on handlers and s-init. A leading `{` is a block.\n *\n * That split is how Summit resolves the classic `{ }` ambiguity without any\n * heuristics: the caller already knows whether it wants a value or an action.\n */\n\nimport type {\n  ArrayExpression,\n  ArrowFunction,\n  Expression,\n  ObjectExpression,\n  ObjectProperty,\n  Pattern,\n  Program,\n  SpreadElement,\n  Statement,\n  VariableDeclaration,\n} from \"./ast.js\";\nimport { type Token, tokenize } from \"./lexer.js\";\n\nexport class ParseError extends Error {}\n\nexport type ParseMode = \"expression\" | \"program\";\n\nconst KEYWORDS = new Set([\n  \"true\",\n  \"false\",\n  \"null\",\n  \"undefined\",\n  \"this\",\n  \"typeof\",\n  \"void\",\n  \"in\",\n  \"instanceof\",\n  \"if\",\n  \"else\",\n  \"return\",\n  \"let\",\n  \"const\",\n  \"var\",\n  \"for\",\n  \"of\",\n  \"while\",\n  \"break\",\n  \"continue\",\n]);\n\n// Binary operator precedence. Higher binds tighter. `**` is right-associative.\nconst BINARY_PREC: Record<string, number> = {\n  \"??\": 1,\n  \"||\": 2,\n  \"&&\": 3,\n  \"==\": 7,\n  \"!=\": 7,\n  \"===\": 7,\n  \"!==\": 7,\n  \"<\": 8,\n  \">\": 8,\n  \"<=\": 8,\n  \">=\": 8,\n  in: 8,\n  instanceof: 8,\n  \"+\": 10,\n  \"-\": 10,\n  \"*\": 11,\n  \"/\": 11,\n  \"%\": 11,\n  \"**\": 12,\n};\n\nconst ASSIGN_OPS = new Set([\"=\", \"+=\", \"-=\", \"*=\", \"/=\", \"%=\", \"**=\", \"&&=\", \"||=\", \"??=\"]);\n\nclass Parser {\n  private tokens: Token[];\n  private pos = 0;\n\n  constructor(source: string) {\n    this.tokens = tokenize(source);\n  }\n\n  private peek(offset = 0): Token {\n    return this.tokens[this.pos + offset] ?? this.tokens[this.tokens.length - 1]!;\n  }\n  private next(): Token {\n    return this.tokens[this.pos++] ?? this.tokens[this.tokens.length - 1]!;\n  }\n  private isPunc(value: string, offset = 0): boolean {\n    const t = this.peek(offset);\n    return t.type === \"punc\" && t.value === value;\n  }\n  private isKeyword(value: string, offset = 0): boolean {\n    const t = this.peek(offset);\n    return t.type === \"ident\" && t.value === value;\n  }\n  private eatPunc(value: string): void {\n    if (!this.isPunc(value)) {\n      throw new ParseError(`Expected '${value}' but found '${this.peek().value || \"end of input\"}'`);\n    }\n    this.pos++;\n  }\n  private atEnd(): boolean {\n    return this.peek().type === \"eof\";\n  }\n\n  // --- Entry points ---\n\n  parseProgram(): Program {\n    const body: Statement[] = [];\n    while (!this.atEnd()) {\n      if (this.isPunc(\";\")) {\n        this.pos++;\n        continue;\n      }\n      body.push(this.parseStatement());\n    }\n    return { type: \"Program\", body };\n  }\n\n  parseExpressionProgram(): Program {\n    const expr = this.parseExpression();\n    if (!this.atEnd()) {\n      throw new ParseError(`Unexpected trailing input '${this.peek().value}'`);\n    }\n    return { type: \"Program\", body: [{ type: \"ExpressionStatement\", expression: expr }] };\n  }\n\n  // --- Statements ---\n\n  private parseStatement(): Statement {\n    if (this.isPunc(\"{\")) return this.parseBlock();\n    if (this.isKeyword(\"if\")) return this.parseIf();\n    if (this.isKeyword(\"return\")) return this.parseReturn();\n    if (this.isKeyword(\"let\") || this.isKeyword(\"const\") || this.isKeyword(\"var\")) {\n      const decl = this.parseVarDecl();\n      this.consumeSemi();\n      return decl;\n    }\n    if (this.isKeyword(\"for\")) return this.parseFor();\n    if (this.isKeyword(\"while\")) return this.parseWhile();\n    if (this.isKeyword(\"break\")) {\n      this.pos++;\n      this.consumeSemi();\n      return { type: \"BreakStatement\" };\n    }\n    if (this.isKeyword(\"continue\")) {\n      this.pos++;\n      this.consumeSemi();\n      return { type: \"ContinueStatement\" };\n    }\n    const expression = this.parseExpression();\n    this.consumeSemi();\n    return { type: \"ExpressionStatement\", expression };\n  }\n\n  private consumeSemi(): void {\n    if (this.isPunc(\";\")) this.pos++;\n  }\n\n  private parseBlock(): Statement {\n    this.eatPunc(\"{\");\n    const body: Statement[] = [];\n    while (!this.isPunc(\"}\") && !this.atEnd()) {\n      if (this.isPunc(\";\")) {\n        this.pos++;\n        continue;\n      }\n      body.push(this.parseStatement());\n    }\n    this.eatPunc(\"}\");\n    return { type: \"BlockStatement\", body };\n  }\n\n  private parseIf(): Statement {\n    this.pos++; // if\n    this.eatPunc(\"(\");\n    const test = this.parseExpression();\n    this.eatPunc(\")\");\n    const consequent = this.parseStatement();\n    let alternate: Statement | null = null;\n    if (this.isKeyword(\"else\")) {\n      this.pos++;\n      alternate = this.parseStatement();\n    }\n    return { type: \"IfStatement\", test, consequent, alternate };\n  }\n\n  private parseReturn(): Statement {\n    this.pos++; // return\n    let argument: Expression | null = null;\n    if (!this.isPunc(\";\") && !this.isPunc(\"}\") && !this.atEnd()) {\n      argument = this.parseExpression();\n    }\n    this.consumeSemi();\n    return { type: \"ReturnStatement\", argument };\n  }\n\n  private parseVarDecl(): VariableDeclaration {\n    const kind = this.next().value as \"let\" | \"const\" | \"var\";\n    const declarations: VariableDeclaration[\"declarations\"] = [];\n    do {\n      const id = this.parsePattern();\n      let init: Expression | null = null;\n      if (this.isPunc(\"=\")) {\n        this.pos++;\n        init = this.parseAssignment();\n      }\n      declarations.push({ id, init });\n    } while (this.isPunc(\",\") && (this.pos++, true));\n    return { type: \"VariableDeclaration\", kind, declarations };\n  }\n\n  private parseFor(): Statement {\n    this.pos++; // for\n    this.eatPunc(\"(\");\n    // Detect for-of by scanning the init for the `of` keyword before `)`.\n    let init: VariableDeclaration | Expression | null = null;\n    if (this.isKeyword(\"let\") || this.isKeyword(\"const\") || this.isKeyword(\"var\")) {\n      const kind = this.next().value as \"let\" | \"const\" | \"var\";\n      const pattern = this.parsePattern();\n      if (this.isKeyword(\"of\")) {\n        this.pos++;\n        const right = this.parseExpression();\n        this.eatPunc(\")\");\n        const body = this.parseStatement();\n        return {\n          type: \"ForOfStatement\",\n          left: { type: \"VariableDeclaration\", kind, declarations: [{ id: pattern, init: null }] },\n          right,\n          body,\n        };\n      }\n      // classic for with declaration\n      let declInit: Expression | null = null;\n      if (this.isPunc(\"=\")) {\n        this.pos++;\n        declInit = this.parseAssignment();\n      }\n      const declarations: VariableDeclaration[\"declarations\"] = [{ id: pattern, init: declInit }];\n      while (this.isPunc(\",\")) {\n        this.pos++;\n        const id = this.parsePattern();\n        let vi: Expression | null = null;\n        if (this.isPunc(\"=\")) {\n          this.pos++;\n          vi = this.parseAssignment();\n        }\n        declarations.push({ id, init: vi });\n      }\n      init = { type: \"VariableDeclaration\", kind, declarations };\n    } else if (!this.isPunc(\";\")) {\n      init = this.parseExpression();\n    }\n    this.eatPunc(\";\");\n    const test = this.isPunc(\";\") ? null : this.parseExpression();\n    this.eatPunc(\";\");\n    const update = this.isPunc(\")\") ? null : this.parseExpression();\n    this.eatPunc(\")\");\n    const body = this.parseStatement();\n    return { type: \"ForStatement\", init, test, update, body };\n  }\n\n  private parseWhile(): Statement {\n    this.pos++; // while\n    this.eatPunc(\"(\");\n    const test = this.parseExpression();\n    this.eatPunc(\")\");\n    const body = this.parseStatement();\n    return { type: \"WhileStatement\", test, body };\n  }\n\n  // --- Expressions ---\n\n  parseExpression(): Expression {\n    return this.parseAssignment();\n  }\n\n  private parseAssignment(): Expression {\n    if (this.isArrowAhead()) return this.parseArrow();\n\n    const left = this.parseConditional();\n    const t = this.peek();\n    if (t.type === \"punc\" && ASSIGN_OPS.has(t.value)) {\n      this.pos++;\n      const right = this.parseAssignment();\n      return { type: \"AssignmentExpression\", operator: t.value, left, right };\n    }\n    return left;\n  }\n\n  private parseConditional(): Expression {\n    const test = this.parseBinary(1);\n    if (this.isPunc(\"?\")) {\n      this.pos++;\n      const consequent = this.parseAssignment();\n      this.eatPunc(\":\");\n      const alternate = this.parseAssignment();\n      return { type: \"ConditionalExpression\", test, consequent, alternate };\n    }\n    return test;\n  }\n\n  private parseBinary(minPrec: number): Expression {\n    let left = this.parseUnary();\n    for (;;) {\n      const t = this.peek();\n      const op =\n        t.type === \"punc\" ? t.value : t.type === \"ident\" && (t.value === \"in\" || t.value === \"instanceof\") ? t.value : null;\n      if (op === null) break;\n      const prec = BINARY_PREC[op];\n      if (prec === undefined || prec < minPrec) break;\n      this.pos++;\n      const rightAssoc = op === \"**\";\n      const right = this.parseBinary(rightAssoc ? prec : prec + 1);\n      if (op === \"&&\" || op === \"||\" || op === \"??\") {\n        left = { type: \"LogicalExpression\", operator: op, left, right };\n      } else {\n        left = { type: \"BinaryExpression\", operator: op, left, right };\n      }\n    }\n    return left;\n  }\n\n  private parseUnary(): Expression {\n    const t = this.peek();\n    if (t.type === \"punc\" && (t.value === \"!\" || t.value === \"-\" || t.value === \"+\")) {\n      this.pos++;\n      return { type: \"UnaryExpression\", operator: t.value, argument: this.parseUnary() };\n    }\n    if (t.type === \"ident\" && (t.value === \"typeof\" || t.value === \"void\")) {\n      this.pos++;\n      return { type: \"UnaryExpression\", operator: t.value, argument: this.parseUnary() };\n    }\n    if (t.type === \"punc\" && (t.value === \"++\" || t.value === \"--\")) {\n      this.pos++;\n      return { type: \"UpdateExpression\", operator: t.value, prefix: true, argument: this.parseUnary() };\n    }\n    return this.parsePostfix();\n  }\n\n  private parsePostfix(): Expression {\n    let node = this.parseCallMember();\n    const t = this.peek();\n    if (t.type === \"punc\" && (t.value === \"++\" || t.value === \"--\")) {\n      this.pos++;\n      node = { type: \"UpdateExpression\", operator: t.value, prefix: false, argument: node };\n    }\n    return node;\n  }\n\n  private parseNewExpr(): Expression {\n    this.pos++; // consume 'new'\n    // The callee is a member expression, but not a call: in `new a.b()` the\n    // parens belong to `new`, and in `new a().b` the `.b` applies to the result.\n    let callee = this.parsePrimary();\n    for (;;) {\n      if (this.isPunc(\".\")) {\n        this.pos++;\n        const name = this.next();\n        callee = {\n          type: \"MemberExpression\",\n          object: callee,\n          property: { type: \"Identifier\", name: name.value },\n          computed: false,\n          optional: false,\n        };\n      } else if (this.isPunc(\"[\")) {\n        this.pos++;\n        const property = this.parseExpression();\n        this.eatPunc(\"]\");\n        callee = { type: \"MemberExpression\", object: callee, property, computed: true, optional: false };\n      } else {\n        break;\n      }\n    }\n    const args = this.isPunc(\"(\") ? this.parseArguments() : [];\n    return { type: \"NewExpression\", callee, arguments: args };\n  }\n\n  private parseCallMember(): Expression {\n    let node = this.isKeyword(\"new\") ? this.parseNewExpr() : this.parsePrimary();\n    for (;;) {\n      if (this.isPunc(\".\")) {\n        this.pos++;\n        const name = this.next();\n        node = {\n          type: \"MemberExpression\",\n          object: node,\n          property: { type: \"Identifier\", name: name.value },\n          computed: false,\n          optional: false,\n        };\n      } else if (this.isPunc(\"?.\")) {\n        this.pos++;\n        if (this.isPunc(\"(\")) {\n          node = { type: \"CallExpression\", callee: node, arguments: this.parseArguments(), optional: true };\n        } else if (this.isPunc(\"[\")) {\n          this.pos++;\n          const property = this.parseExpression();\n          this.eatPunc(\"]\");\n          node = { type: \"MemberExpression\", object: node, property, computed: true, optional: true };\n        } else {\n          const name = this.next();\n          node = {\n            type: \"MemberExpression\",\n            object: node,\n            property: { type: \"Identifier\", name: name.value },\n            computed: false,\n            optional: true,\n          };\n        }\n      } else if (this.isPunc(\"[\")) {\n        this.pos++;\n        const property = this.parseExpression();\n        this.eatPunc(\"]\");\n        node = { type: \"MemberExpression\", object: node, property, computed: true, optional: false };\n      } else if (this.isPunc(\"(\")) {\n        node = { type: \"CallExpression\", callee: node, arguments: this.parseArguments(), optional: false };\n      } else {\n        break;\n      }\n    }\n    return node;\n  }\n\n  private parseArguments(): Expression[] {\n    this.eatPunc(\"(\");\n    const args: Expression[] = [];\n    while (!this.isPunc(\")\") && !this.atEnd()) {\n      if (this.isPunc(\"...\")) {\n        this.pos++;\n        args.push({ type: \"SpreadElement\", argument: this.parseAssignment() });\n      } else {\n        args.push(this.parseAssignment());\n      }\n      if (this.isPunc(\",\")) this.pos++;\n      else break;\n    }\n    this.eatPunc(\")\");\n    return args;\n  }\n\n  private parsePrimary(): Expression {\n    const t = this.peek();\n\n    if (t.type === \"num\") {\n      this.pos++;\n      const value = t.value.startsWith(\"0x\") || t.value.startsWith(\"0X\") ? parseInt(t.value, 16) : Number(t.value);\n      return { type: \"NumberLiteral\", value };\n    }\n    if (t.type === \"str\") {\n      this.pos++;\n      return { type: \"StringLiteral\", value: t.value };\n    }\n    if (t.type === \"tmpl\") {\n      this.pos++;\n      return this.parseTemplate(t.raw ?? \"\");\n    }\n    if (t.type === \"regex\") {\n      this.pos++;\n      return { type: \"RegexLiteral\", pattern: t.value, flags: t.flags ?? \"\" };\n    }\n    if (t.type === \"ident\") {\n      if (t.value === \"true\" || t.value === \"false\") {\n        this.pos++;\n        return { type: \"BooleanLiteral\", value: t.value === \"true\" };\n      }\n      if (t.value === \"null\") {\n        this.pos++;\n        return { type: \"NullLiteral\" };\n      }\n      if (t.value === \"undefined\") {\n        this.pos++;\n        return { type: \"UndefinedLiteral\" };\n      }\n      if (t.value === \"this\") {\n        this.pos++;\n        return { type: \"ThisExpression\" };\n      }\n      this.pos++;\n      return { type: \"Identifier\", name: t.value };\n    }\n    if (this.isPunc(\"(\")) {\n      this.pos++;\n      const first = this.parseAssignment();\n      if (this.isPunc(\",\")) {\n        const expressions = [first];\n        while (this.isPunc(\",\")) {\n          this.pos++;\n          expressions.push(this.parseAssignment());\n        }\n        this.eatPunc(\")\");\n        return { type: \"SequenceExpression\", expressions };\n      }\n      this.eatPunc(\")\");\n      return first;\n    }\n    if (this.isPunc(\"[\")) {\n      return this.parseArray();\n    }\n    if (this.isPunc(\"{\")) {\n      return this.parseObject();\n    }\n\n    throw new ParseError(`Unexpected token '${t.value || \"end of input\"}' in expression`);\n  }\n\n  private parseArray(): ArrayExpression {\n    this.eatPunc(\"[\");\n    const elements: (Expression | null)[] = [];\n    while (!this.isPunc(\"]\") && !this.atEnd()) {\n      if (this.isPunc(\",\")) {\n        // Elision, e.g. [a, , b].\n        elements.push(null);\n        this.pos++;\n        continue;\n      }\n      if (this.isPunc(\"...\")) {\n        this.pos++;\n        elements.push({ type: \"SpreadElement\", argument: this.parseAssignment() });\n      } else {\n        elements.push(this.parseAssignment());\n      }\n      if (this.isPunc(\",\")) this.pos++;\n      else break;\n    }\n    this.eatPunc(\"]\");\n    return { type: \"ArrayExpression\", elements };\n  }\n\n  private parseObject(): ObjectExpression {\n    this.eatPunc(\"{\");\n    const properties: (ObjectProperty | SpreadElement)[] = [];\n    while (!this.isPunc(\"}\") && !this.atEnd()) {\n      if (this.isPunc(\"...\")) {\n        this.pos++;\n        properties.push({ type: \"SpreadElement\", argument: this.parseAssignment() });\n      } else {\n        properties.push(this.parseObjectProperty());\n      }\n      if (this.isPunc(\",\")) this.pos++;\n      else break;\n    }\n    this.eatPunc(\"}\");\n    return { type: \"ObjectExpression\", properties };\n  }\n\n  private parseObjectProperty(): ObjectProperty {\n    // `async name() {}` methods are not supported; the synchronous interpreter\n    // has no await. Fail with an actionable message instead of misparsing.\n    if (this.isKeyword(\"async\") && this.peek(1).type === \"ident\") {\n      throw new ParseError(\n        \"async methods are not supported in Summit expressions. Use a regular method that returns a Promise and chain .then().\",\n      );\n    }\n\n    // getter / setter: `get name() {}` / `set name(v) {}`\n    if (\n      (this.isKeyword(\"get\") || this.isKeyword(\"set\")) &&\n      !this.isPunc(\":\", 1) &&\n      !this.isPunc(\",\", 1) &&\n      !this.isPunc(\"(\", 1) &&\n      !this.isPunc(\"}\", 1)\n    ) {\n      const kind = this.next().value as \"get\" | \"set\";\n      const { key, computed } = this.parsePropertyKey();\n      const fn = this.parseMethodTail();\n      return { key, computed, value: fn, kind, shorthand: false };\n    }\n\n    const { key, computed, keyName } = this.parsePropertyKey();\n\n    // Method shorthand: `name() {}`\n    if (this.isPunc(\"(\")) {\n      const fn = this.parseMethodTail();\n      return { key, computed, value: fn, kind: \"method\", shorthand: false };\n    }\n\n    // Normal `key: value`\n    if (this.isPunc(\":\")) {\n      this.pos++;\n      const value = this.parseAssignment();\n      return { key, computed, value, kind: \"init\", shorthand: false };\n    }\n\n    // Shorthand `{ name }`\n    if (keyName !== null && !computed) {\n      return { key, computed, value: { type: \"Identifier\", name: keyName }, kind: \"init\", shorthand: true };\n    }\n\n    throw new ParseError(`Invalid object property near '${this.peek().value}'`);\n  }\n\n  private parsePropertyKey(): { key: Expression; computed: boolean; keyName: string | null } {\n    if (this.isPunc(\"[\")) {\n      this.pos++;\n      const key = this.parseAssignment();\n      this.eatPunc(\"]\");\n      return { key, computed: true, keyName: null };\n    }\n    const t = this.next();\n    if (t.type === \"str\") return { key: { type: \"StringLiteral\", value: t.value }, computed: false, keyName: t.value };\n    if (t.type === \"num\")\n      return { key: { type: \"StringLiteral\", value: String(Number(t.value)) }, computed: false, keyName: null };\n    if (t.type === \"ident\") return { key: { type: \"StringLiteral\", value: t.value }, computed: false, keyName: t.value };\n    throw new ParseError(`Invalid property key '${t.value}'`);\n  }\n\n  private parseMethodTail(): ArrowFunction {\n    const params = this.parseParamList();\n    const body = this.parseBlock();\n    return { type: \"ArrowFunction\", params, body: body as never, expression: false };\n  }\n\n  // --- Arrow functions ---\n\n  private isArrowAhead(): boolean {\n    const t = this.peek();\n    if (t.type === \"ident\" && !KEYWORDS.has(t.value) && this.isPunc(\"=>\", 1)) return true;\n    if (this.isPunc(\"(\")) {\n      // Scan to the matching ')' and check for '=>' right after.\n      let depth = 0;\n      let i = this.pos;\n      for (; i < this.tokens.length; i++) {\n        const tok = this.tokens[i]!;\n        if (tok.type === \"punc\" && tok.value === \"(\") depth++;\n        else if (tok.type === \"punc\" && tok.value === \")\") {\n          depth--;\n          if (depth === 0) break;\n        } else if (tok.type === \"eof\") return false;\n      }\n      const after = this.tokens[i + 1];\n      return !!after && after.type === \"punc\" && after.value === \"=>\";\n    }\n    return false;\n  }\n\n  private parseArrow(): ArrowFunction {\n    let params: Pattern[];\n    if (this.peek().type === \"ident\") {\n      params = [{ type: \"Identifier\", name: this.next().value }];\n    } else {\n      params = this.parseParamList();\n    }\n    this.eatPunc(\"=>\");\n    if (this.isPunc(\"{\")) {\n      const body = this.parseBlock();\n      return { type: \"ArrowFunction\", params, body: body as never, expression: false };\n    }\n    const body = this.parseAssignment();\n    return { type: \"ArrowFunction\", params, body, expression: true };\n  }\n\n  private parseParamList(): Pattern[] {\n    this.eatPunc(\"(\");\n    const params: Pattern[] = [];\n    while (!this.isPunc(\")\") && !this.atEnd()) {\n      params.push(this.parsePattern());\n      if (this.isPunc(\",\")) this.pos++;\n      else break;\n    }\n    this.eatPunc(\")\");\n    return params;\n  }\n\n  // --- Patterns ---\n\n  private parsePattern(): Pattern {\n    let pattern: Pattern;\n    if (this.isPunc(\"...\")) {\n      this.pos++;\n      return { type: \"RestElement\", argument: this.parsePattern() };\n    }\n    if (this.isPunc(\"{\")) {\n      pattern = this.parseObjectPattern();\n    } else if (this.isPunc(\"[\")) {\n      pattern = this.parseArrayPattern();\n    } else {\n      const t = this.next();\n      if (t.type !== \"ident\") throw new ParseError(`Invalid binding target '${t.value}'`);\n      pattern = { type: \"Identifier\", name: t.value };\n    }\n    if (this.isPunc(\"=\")) {\n      this.pos++;\n      const right = this.parseAssignment();\n      return { type: \"AssignmentPattern\", left: pattern, right };\n    }\n    return pattern;\n  }\n\n  private parseObjectPattern(): Pattern {\n    this.eatPunc(\"{\");\n    const properties: { key: Expression; value: Pattern; computed: boolean }[] = [];\n    let rest: { type: \"Identifier\"; name: string } | null = null;\n    while (!this.isPunc(\"}\") && !this.atEnd()) {\n      if (this.isPunc(\"...\")) {\n        this.pos++;\n        const t = this.next();\n        rest = { type: \"Identifier\", name: t.value };\n        break;\n      }\n      const { key, computed, keyName } = this.parsePropertyKey();\n      let value: Pattern;\n      if (this.isPunc(\":\")) {\n        this.pos++;\n        value = this.parsePattern();\n      } else {\n        value = { type: \"Identifier\", name: keyName ?? \"\" };\n        if (this.isPunc(\"=\")) {\n          this.pos++;\n          value = { type: \"AssignmentPattern\", left: value, right: this.parseAssignment() };\n        }\n      }\n      properties.push({ key, value, computed });\n      if (this.isPunc(\",\")) this.pos++;\n      else break;\n    }\n    this.eatPunc(\"}\");\n    return { type: \"ObjectPattern\", properties, rest };\n  }\n\n  private parseArrayPattern(): Pattern {\n    this.eatPunc(\"[\");\n    const elements: (Pattern | null)[] = [];\n    let rest: Pattern | null = null;\n    while (!this.isPunc(\"]\") && !this.atEnd()) {\n      if (this.isPunc(\",\")) {\n        elements.push(null);\n        this.pos++;\n        continue;\n      }\n      if (this.isPunc(\"...\")) {\n        this.pos++;\n        rest = this.parsePattern();\n        break;\n      }\n      elements.push(this.parsePattern());\n      if (this.isPunc(\",\")) this.pos++;\n      else break;\n    }\n    this.eatPunc(\"]\");\n    return { type: \"ArrayPattern\", elements, rest };\n  }\n\n  // --- Template literals ---\n\n  private parseTemplate(raw: string): Expression {\n    const quasis: string[] = [];\n    const expressions: Expression[] = [];\n    let current = \"\";\n    let i = 0;\n    while (i < raw.length) {\n      if (raw[i] === \"$\" && raw[i + 1] === \"{\") {\n        quasis.push(current);\n        current = \"\";\n        i += 2;\n        let depth = 1;\n        let src = \"\";\n        while (i < raw.length && depth > 0) {\n          const c = raw[i]!;\n          if (c === \"{\") depth++;\n          else if (c === \"}\") {\n            depth--;\n            if (depth === 0) break;\n          }\n          src += c;\n          i++;\n        }\n        i++; // skip closing }\n        const stmt = parse(src, \"expression\").body[0];\n        expressions.push(stmt && stmt.type === \"ExpressionStatement\" ? stmt.expression : { type: \"UndefinedLiteral\" });\n      } else {\n        current += raw[i];\n        i++;\n      }\n    }\n    quasis.push(current);\n    return { type: \"TemplateLiteral\", quasis, expressions };\n  }\n}\n\nconst cache = new Map<string, Program>();\n\n/** Parse a source string into a Program AST. Cached by (mode, source). */\nexport function parse(source: string, mode: ParseMode): Program {\n  const key = mode + \"\u0000\" + source;\n  const cached = cache.get(key);\n  if (cached) return cached;\n  const parser = new Parser(source);\n  const program = mode === \"expression\" ? parser.parseExpressionProgram() : parser.parseProgram();\n  cache.set(key, program);\n  return program;\n}\n","/**\n * The interpreter walks an AST and produces a value. It never calls `eval` or\n * `new Function`, so a strict `script-src` CSP with no `unsafe-eval` is fully\n * satisfied. Identifiers resolve first against interpreter-local bindings\n * (arrow params, let/const), then the component data scope (the RootEnv), then\n * a small allowlist of safe globals.\n */\n\nimport type {\n  ArrowFunction,\n  BlockStatement,\n  Expression,\n  Node,\n  ObjectProperty,\n  Pattern,\n  Program,\n  SpreadElement,\n  Statement,\n} from \"./ast.js\";\n\n/** The component-level environment: the merged s-data stack plus magics. */\nexport interface RootEnv {\n  has(name: string): boolean;\n  get(name: string): unknown;\n  set(name: string, value: unknown): void;\n}\n\n// Control-flow signals, thrown and caught internally.\nclass ReturnSignal {\n  constructor(public value: unknown) {}\n}\nclass BreakSignal {}\nclass ContinueSignal {}\n\nclass LexicalScope {\n  private vars = new Map<string, { value: unknown; constant: boolean }>();\n  constructor(public parent: LexicalScope | null) {}\n\n  declare(name: string, value: unknown, constant: boolean): void {\n    this.vars.set(name, { value, constant });\n  }\n  private find(name: string): LexicalScope | null {\n    let s: LexicalScope | null = this;\n    while (s) {\n      if (s.vars.has(name)) return s;\n      s = s.parent;\n    }\n    return null;\n  }\n  has(name: string): boolean {\n    return this.find(name) !== null;\n  }\n  get(name: string): unknown {\n    return this.find(name)?.vars.get(name)?.value;\n  }\n  set(name: string, value: unknown): boolean {\n    const owner = this.find(name);\n    if (!owner) return false;\n    const entry = owner.vars.get(name)!;\n    if (entry.constant) throw new TypeError(`Assignment to constant '${name}'`);\n    entry.value = value;\n    return true;\n  }\n}\n\n// The allowlist of globals expressions may reach. Extensible via addGlobals().\nconst GLOBAL_ALLOW = new Set<string>([\n  \"Math\",\n  \"JSON\",\n  \"Date\",\n  \"Object\",\n  \"Array\",\n  \"Number\",\n  \"String\",\n  \"Boolean\",\n  \"parseInt\",\n  \"parseFloat\",\n  \"isNaN\",\n  \"isFinite\",\n  \"RegExp\",\n  \"Map\",\n  \"Set\",\n  \"WeakMap\",\n  \"WeakSet\",\n  \"Promise\",\n  \"Intl\",\n  \"console\",\n  \"window\",\n  \"document\",\n  \"location\",\n  \"navigator\",\n  \"history\",\n  \"localStorage\",\n  \"sessionStorage\",\n  \"setTimeout\",\n  \"clearTimeout\",\n  \"setInterval\",\n  \"clearInterval\",\n  \"requestAnimationFrame\",\n  \"cancelAnimationFrame\",\n  \"fetch\",\n  \"AbortController\",\n  \"Headers\",\n  \"Request\",\n  \"Response\",\n  \"alert\",\n  \"confirm\",\n  \"prompt\",\n  \"structuredClone\",\n  \"URL\",\n  \"URLSearchParams\",\n  \"encodeURIComponent\",\n  \"decodeURIComponent\",\n  \"NaN\",\n  \"Infinity\",\n]);\n\n/** Add names to the global allowlist that expressions may access. */\nexport function addGlobals(names: string[]): void {\n  for (const n of names) GLOBAL_ALLOW.add(n);\n}\n\nfunction memberGet(obj: unknown, key: PropertyKey): unknown {\n  // Tolerant reads: a property access on null/undefined yields undefined rather\n  // than throwing, which makes optional-chaining-style access safe by default.\n  if (obj == null) return undefined;\n  return (obj as Record<PropertyKey, unknown>)[key];\n}\n\nexport class Interpreter {\n  constructor(private root: RootEnv) {}\n\n  run(program: Program, thisVal: unknown): unknown {\n    const scope = new LexicalScope(null);\n    let result: unknown;\n    try {\n      for (const stmt of program.body) {\n        if (stmt.type === \"ExpressionStatement\") {\n          result = this.evalExpr(stmt.expression, scope, thisVal);\n        } else {\n          this.execStmt(stmt, scope, thisVal);\n        }\n      }\n    } catch (signal) {\n      if (signal instanceof ReturnSignal) return signal.value;\n      throw signal;\n    }\n    return result;\n  }\n\n  // --- Statements ---\n\n  private execBlock(body: Statement[], scope: LexicalScope, thisVal: unknown): void {\n    for (const stmt of body) this.execStmt(stmt, scope, thisVal);\n  }\n\n  private execStmt(node: Statement, scope: LexicalScope, thisVal: unknown): void {\n    switch (node.type) {\n      case \"ExpressionStatement\":\n        this.evalExpr(node.expression, scope, thisVal);\n        return;\n      case \"BlockStatement\":\n        this.execBlock(node.body, new LexicalScope(scope), thisVal);\n        return;\n      case \"IfStatement\":\n        if (this.evalExpr(node.test, scope, thisVal)) this.execStmt(node.consequent, scope, thisVal);\n        else if (node.alternate) this.execStmt(node.alternate, scope, thisVal);\n        return;\n      case \"ReturnStatement\":\n        throw new ReturnSignal(node.argument ? this.evalExpr(node.argument, scope, thisVal) : undefined);\n      case \"VariableDeclaration\":\n        for (const decl of node.declarations) {\n          const value = decl.init ? this.evalExpr(decl.init, scope, thisVal) : undefined;\n          this.bindPattern(decl.id, value, scope, node.kind === \"const\");\n        }\n        return;\n      case \"WhileStatement\":\n        while (this.evalExpr(node.test, scope, thisVal)) {\n          try {\n            this.execStmt(node.body, new LexicalScope(scope), thisVal);\n          } catch (s) {\n            if (s instanceof BreakSignal) break;\n            if (s instanceof ContinueSignal) continue;\n            throw s;\n          }\n        }\n        return;\n      case \"ForOfStatement\": {\n        const iterable = this.evalExpr(node.right, scope, thisVal) as Iterable<unknown>;\n        for (const item of iterable ?? []) {\n          const loopScope = new LexicalScope(scope);\n          if (node.left.type === \"VariableDeclaration\") {\n            this.bindPattern(node.left.declarations[0]!.id, item, loopScope, node.left.kind === \"const\");\n          } else {\n            this.assignPattern(node.left as Pattern, item, loopScope, thisVal);\n          }\n          try {\n            this.execStmt(node.body, loopScope, thisVal);\n          } catch (s) {\n            if (s instanceof BreakSignal) break;\n            if (s instanceof ContinueSignal) continue;\n            throw s;\n          }\n        }\n        return;\n      }\n      case \"ForStatement\": {\n        const forScope = new LexicalScope(scope);\n        if (node.init) {\n          if (node.init.type === \"VariableDeclaration\") this.execStmt(node.init, forScope, thisVal);\n          else this.evalExpr(node.init, forScope, thisVal);\n        }\n        while (node.test ? this.evalExpr(node.test, forScope, thisVal) : true) {\n          try {\n            this.execStmt(node.body, new LexicalScope(forScope), thisVal);\n          } catch (s) {\n            if (s instanceof BreakSignal) break;\n            if (s instanceof ContinueSignal) {\n              /* fall through to update */\n            } else throw s;\n          }\n          if (node.update) this.evalExpr(node.update, forScope, thisVal);\n        }\n        return;\n      }\n      case \"BreakStatement\":\n        throw new BreakSignal();\n      case \"ContinueStatement\":\n        throw new ContinueSignal();\n    }\n  }\n\n  // --- Expressions ---\n\n  private evalExpr(node: Expression, scope: LexicalScope, thisVal: unknown): unknown {\n    switch (node.type) {\n      case \"NumberLiteral\":\n      case \"StringLiteral\":\n      case \"BooleanLiteral\":\n        return node.value;\n      case \"NullLiteral\":\n        return null;\n      case \"UndefinedLiteral\":\n        return undefined;\n      case \"RegexLiteral\":\n        return new RegExp(node.pattern, node.flags);\n      case \"ThisExpression\":\n        return thisVal;\n      case \"Identifier\":\n        return this.resolve(node.name, scope);\n      case \"TemplateLiteral\": {\n        let out = node.quasis[0] ?? \"\";\n        for (let i = 0; i < node.expressions.length; i++) {\n          out += String(this.evalExpr(node.expressions[i]!, scope, thisVal) ?? \"\");\n          out += node.quasis[i + 1] ?? \"\";\n        }\n        return out;\n      }\n      case \"ArrayExpression\": {\n        const arr: unknown[] = [];\n        for (const el of node.elements) {\n          if (el === null) arr.push(undefined);\n          else if (el.type === \"SpreadElement\") arr.push(...(this.evalExpr(el.argument, scope, thisVal) as unknown[]));\n          else arr.push(this.evalExpr(el, scope, thisVal));\n        }\n        return arr;\n      }\n      case \"ObjectExpression\":\n        return this.evalObject(node, scope, thisVal);\n      case \"UnaryExpression\": {\n        const arg = this.evalExpr(node.argument, scope, thisVal);\n        switch (node.operator) {\n          case \"!\":\n            return !arg;\n          case \"-\":\n            return -(arg as number);\n          case \"+\":\n            return +(arg as number);\n          case \"typeof\":\n            return typeof arg;\n          case \"void\":\n            return undefined;\n        }\n        return undefined;\n      }\n      case \"UpdateExpression\": {\n        const old = Number(this.evalTarget(node.argument, scope, thisVal));\n        const next = node.operator === \"++\" ? old + 1 : old - 1;\n        this.assign(node.argument, next, scope, thisVal);\n        return node.prefix ? next : old;\n      }\n      case \"BinaryExpression\":\n        return this.evalBinary(\n          node.operator,\n          this.evalExpr(node.left, scope, thisVal),\n          this.evalExpr(node.right, scope, thisVal),\n        );\n      case \"LogicalExpression\": {\n        const left = this.evalExpr(node.left, scope, thisVal);\n        if (node.operator === \"&&\") return left ? this.evalExpr(node.right, scope, thisVal) : left;\n        if (node.operator === \"||\") return left ? left : this.evalExpr(node.right, scope, thisVal);\n        return left ?? this.evalExpr(node.right, scope, thisVal); // ??\n      }\n      case \"ConditionalExpression\":\n        return this.evalExpr(node.test, scope, thisVal)\n          ? this.evalExpr(node.consequent, scope, thisVal)\n          : this.evalExpr(node.alternate, scope, thisVal);\n      case \"AssignmentExpression\":\n        return this.evalAssignment(node, scope, thisVal);\n      case \"MemberExpression\": {\n        const obj = this.evalExpr(node.object, scope, thisVal);\n        if (node.optional && obj == null) return undefined;\n        const key = node.computed\n          ? (this.evalExpr(node.property, scope, thisVal) as PropertyKey)\n          : (node.property as { name: string }).name;\n        return memberGet(obj, key);\n      }\n      case \"CallExpression\":\n        return this.evalCall(node, scope, thisVal);\n      case \"NewExpression\": {\n        // The callee resolves through the same scope/allowlist as any other\n        // reference, so only allowlisted constructors (Date, Map, Set, RegExp,\n        // Promise, ...) or user-provided ones are reachable. Still no eval.\n        const ctor = this.evalExpr(node.callee, scope, thisVal);\n        const args = this.evalArguments(node.arguments, scope, thisVal);\n        if (typeof ctor !== \"function\") {\n          throw new TypeError(\"Expression value is not a constructor\");\n        }\n        return Reflect.construct(ctor as new (...a: unknown[]) => unknown, args);\n      }\n      case \"ArrowFunction\":\n        return this.makeFunction(node, scope, /* lexicalThis */ thisVal, /* dynamic */ false);\n      case \"SequenceExpression\": {\n        let v: unknown;\n        for (const e of node.expressions) v = this.evalExpr(e, scope, thisVal);\n        return v;\n      }\n      case \"SpreadElement\":\n        return this.evalExpr(node.argument, scope, thisVal);\n    }\n  }\n\n  private evalObject(\n    node: Extract<Expression, { type: \"ObjectExpression\" }>,\n    scope: LexicalScope,\n    thisVal: unknown,\n  ): Record<string, unknown> {\n    const obj: Record<string, unknown> = {};\n    for (const prop of node.properties) {\n      if ((prop as { type?: string }).type === \"SpreadElement\") {\n        Object.assign(obj, this.evalExpr((prop as SpreadElement).argument, scope, thisVal) as object);\n        continue;\n      }\n      const p = prop as ObjectProperty;\n      const key = p.computed\n        ? String(this.evalExpr(p.key, scope, thisVal))\n        : (p.key as { value: string }).value;\n      if (p.kind === \"get\") {\n        const fn = this.makeFunction(p.value as ArrowFunction, scope, thisVal, true);\n        Object.defineProperty(obj, key, { get: fn as () => unknown, enumerable: true, configurable: true });\n      } else if (p.kind === \"set\") {\n        const fn = this.makeFunction(p.value as ArrowFunction, scope, thisVal, true);\n        Object.defineProperty(obj, key, { set: fn as (v: unknown) => void, enumerable: true, configurable: true });\n      } else if (p.kind === \"method\") {\n        obj[key] = this.makeFunction(p.value as ArrowFunction, scope, thisVal, true);\n      } else {\n        obj[key] = this.evalExpr(p.value, scope, thisVal);\n      }\n    }\n    return obj;\n  }\n\n  private evalCall(\n    node: Extract<Expression, { type: \"CallExpression\" }>,\n    scope: LexicalScope,\n    thisVal: unknown,\n  ): unknown {\n    let fn: unknown;\n    let callThis: unknown = undefined;\n    if (node.callee.type === \"MemberExpression\") {\n      const m = node.callee;\n      const obj = this.evalExpr(m.object, scope, thisVal);\n      if (m.optional && obj == null) return undefined;\n      callThis = obj;\n      const key = m.computed ? (this.evalExpr(m.property, scope, thisVal) as PropertyKey) : (m.property as { name: string }).name;\n      fn = memberGet(obj, key);\n    } else {\n      fn = this.evalExpr(node.callee, scope, thisVal);\n    }\n    if (node.optional && fn == null) return undefined;\n    const args = this.evalArguments(node.arguments, scope, thisVal);\n    if (typeof fn !== \"function\") {\n      if (fn == null) return undefined; // tolerant: calling a missing method is a no-op\n      throw new TypeError(`Expression value is not a function`);\n    }\n    return (fn as (...a: unknown[]) => unknown).apply(callThis, args);\n  }\n\n  private evalArguments(nodes: Expression[], scope: LexicalScope, thisVal: unknown): unknown[] {\n    const args: unknown[] = [];\n    for (const a of nodes) {\n      if (a.type === \"SpreadElement\") args.push(...(this.evalExpr(a.argument, scope, thisVal) as unknown[]));\n      else args.push(this.evalExpr(a, scope, thisVal));\n    }\n    return args;\n  }\n\n  private evalBinary(op: string, l: unknown, r: unknown): unknown {\n    switch (op) {\n      case \"+\":\n        return (l as number) + (r as number);\n      case \"-\":\n        return (l as number) - (r as number);\n      case \"*\":\n        return (l as number) * (r as number);\n      case \"/\":\n        return (l as number) / (r as number);\n      case \"%\":\n        return (l as number) % (r as number);\n      case \"**\":\n        return (l as number) ** (r as number);\n      case \"==\":\n        return l == r;\n      case \"!=\":\n        return l != r;\n      case \"===\":\n        return l === r;\n      case \"!==\":\n        return l !== r;\n      case \"<\":\n        return (l as number) < (r as number);\n      case \">\":\n        return (l as number) > (r as number);\n      case \"<=\":\n        return (l as number) <= (r as number);\n      case \">=\":\n        return (l as number) >= (r as number);\n      case \"in\":\n        return (l as PropertyKey) in (r as object);\n      case \"instanceof\":\n        return l instanceof (r as never);\n    }\n    return undefined;\n  }\n\n  private evalAssignment(\n    node: Extract<Expression, { type: \"AssignmentExpression\" }>,\n    scope: LexicalScope,\n    thisVal: unknown,\n  ): unknown {\n    const op = node.operator;\n    if (op === \"=\") {\n      const value = this.evalExpr(node.right, scope, thisVal);\n      this.assign(node.left, value, scope, thisVal);\n      return value;\n    }\n    // Compound assignment.\n    const current = this.evalTarget(node.left, scope, thisVal);\n    let value: unknown;\n    if (op === \"&&=\") {\n      if (!current) return current;\n      value = this.evalExpr(node.right, scope, thisVal);\n    } else if (op === \"||=\") {\n      if (current) return current;\n      value = this.evalExpr(node.right, scope, thisVal);\n    } else if (op === \"??=\") {\n      if (current != null) return current;\n      value = this.evalExpr(node.right, scope, thisVal);\n    } else {\n      const rhs = this.evalExpr(node.right, scope, thisVal);\n      value = this.evalBinary(op.slice(0, -1), current, rhs);\n    }\n    this.assign(node.left, value, scope, thisVal);\n    return value;\n  }\n\n  /** Read the current value of an assignment target (for compound ops). */\n  private evalTarget(node: Expression, scope: LexicalScope, thisVal: unknown): unknown {\n    return this.evalExpr(node, scope, thisVal);\n  }\n\n  private assign(target: Expression, value: unknown, scope: LexicalScope, thisVal: unknown): void {\n    if (target.type === \"Identifier\") {\n      if (!scope.set(target.name, value)) this.root.set(target.name, value);\n      return;\n    }\n    if (target.type === \"MemberExpression\") {\n      const obj = this.evalExpr(target.object, scope, thisVal);\n      if (obj == null) throw new TypeError(\"Cannot assign to a property of null or undefined\");\n      const key = target.computed\n        ? (this.evalExpr(target.property, scope, thisVal) as PropertyKey)\n        : (target.property as { name: string }).name;\n      (obj as Record<PropertyKey, unknown>)[key] = value;\n      return;\n    }\n    throw new TypeError(\"Invalid assignment target\");\n  }\n\n  private resolve(name: string, scope: LexicalScope): unknown {\n    if (scope.has(name)) return scope.get(name);\n    if (this.root.has(name)) return this.root.get(name);\n    if (GLOBAL_ALLOW.has(name)) return (globalThis as Record<string, unknown>)[name];\n    return undefined;\n  }\n\n  // --- Functions ---\n\n  private makeFunction(\n    node: ArrowFunction,\n    definingScope: LexicalScope,\n    lexicalThis: unknown,\n    dynamicThis: boolean,\n  ): (...args: unknown[]) => unknown {\n    const self = this;\n    return function (this: unknown, ...args: unknown[]): unknown {\n      const fnScope = new LexicalScope(definingScope);\n      self.bindParams(node.params, args, fnScope);\n      const usedThis = dynamicThis ? this : lexicalThis;\n      if (node.expression) {\n        return self.evalExpr(node.body as Expression, fnScope, usedThis);\n      }\n      try {\n        self.execBlock((node.body as BlockStatement).body, new LexicalScope(fnScope), usedThis);\n      } catch (signal) {\n        if (signal instanceof ReturnSignal) return signal.value;\n        throw signal;\n      }\n      return undefined;\n    };\n  }\n\n  private bindParams(params: Pattern[], args: unknown[], scope: LexicalScope): void {\n    for (let i = 0; i < params.length; i++) {\n      const p = params[i]!;\n      if (p.type === \"RestElement\") {\n        this.bindPattern(p.argument, args.slice(i), scope, false);\n        break;\n      }\n      this.bindPattern(p, args[i], scope, false);\n    }\n  }\n\n  private bindPattern(pattern: Pattern, value: unknown, scope: LexicalScope, constant: boolean): void {\n    switch (pattern.type) {\n      case \"Identifier\":\n        scope.declare(pattern.name, value, constant);\n        return;\n      case \"AssignmentPattern\":\n        this.bindPattern(pattern.left, value === undefined ? this.evalExpr(pattern.right, scope, undefined) : value, scope, constant);\n        return;\n      case \"RestElement\":\n        this.bindPattern(pattern.argument, value, scope, constant);\n        return;\n      case \"ObjectPattern\": {\n        const obj = (value ?? {}) as Record<string, unknown>;\n        const used = new Set<string>();\n        for (const prop of pattern.properties) {\n          const key = prop.computed\n            ? String(this.evalExpr(prop.key, scope, undefined))\n            : (prop.key as { value: string }).value;\n          used.add(key);\n          this.bindPattern(prop.value, obj[key], scope, constant);\n        }\n        if (pattern.rest) {\n          const rest: Record<string, unknown> = {};\n          for (const k of Object.keys(obj)) if (!used.has(k)) rest[k] = obj[k];\n          scope.declare(pattern.rest.name, rest, constant);\n        }\n        return;\n      }\n      case \"ArrayPattern\": {\n        const arr = (value ?? []) as unknown[];\n        for (let i = 0; i < pattern.elements.length; i++) {\n          const el = pattern.elements[i];\n          if (el) this.bindPattern(el, arr[i], scope, constant);\n        }\n        if (pattern.rest) this.bindPattern(pattern.rest, arr.slice(pattern.elements.length), scope, constant);\n        return;\n      }\n    }\n  }\n\n  /** Assign into an existing pattern target (for-of without declaration). */\n  private assignPattern(pattern: Pattern, value: unknown, scope: LexicalScope, thisVal: unknown): void {\n    if (pattern.type === \"Identifier\") {\n      if (!scope.set(pattern.name, value)) this.root.set(pattern.name, value);\n      return;\n    }\n    // Fall back to declaring for destructuring targets.\n    this.bindPattern(pattern, value, scope, false);\n    void thisVal;\n  }\n}\n\n/** Convenience: is `x` a Node? Used only in tests/tools. */\nexport function isNode(x: unknown): x is Node {\n  return typeof x === \"object\" && x !== null && \"type\" in x;\n}\n","/**\n * Public evaluator API.\n *\n * `evaluateExpression` runs a value expression (s-data, s-text, :bind, s-show).\n * `evaluateAction` runs a statement list (s-on handlers, s-init). Both parse to\n * a cached AST and interpret it with no `eval` / `new Function`, so Summit runs\n * under a strict Content-Security-Policy out of the box.\n */\n\nimport { parse } from \"./parser.js\";\nimport { Interpreter, type RootEnv, addGlobals } from \"./interpreter.js\";\n\nexport { addGlobals };\nexport type { RootEnv };\nexport { ParseError } from \"./parser.js\";\nexport { LexError } from \"./lexer.js\";\n\n/** Evaluate a value expression against a component environment. */\nexport function evaluateExpression(source: string, root: RootEnv, thisVal?: unknown): unknown {\n  const program = parse(source, \"expression\");\n  return new Interpreter(root).run(program, thisVal);\n}\n\n/** Evaluate an action (one or more statements) against a component environment. */\nexport function evaluateAction(source: string, root: RootEnv, thisVal?: unknown): unknown {\n  const program = parse(source, \"program\");\n  return new Interpreter(root).run(program, thisVal);\n}\n\n/**\n * Pre-compile an expression into a reusable evaluator bound to nothing but the\n * source. Handy for directives that re-evaluate the same string many times.\n */\nexport function compileExpression(source: string): (root: RootEnv, thisVal?: unknown) => unknown {\n  const program = parse(source, \"expression\");\n  return (root, thisVal) => new Interpreter(root).run(program, thisVal);\n}\n\nexport function compileAction(source: string): (root: RootEnv, thisVal?: unknown) => unknown {\n  const program = parse(source, \"program\");\n  return (root, thisVal) => new Interpreter(root).run(program, thisVal);\n}\n","/**\n * Agent-friendly diagnostics.\n *\n * Summit's messages are written to be fixed, by a person or an AI agent, on the\n * next iteration. Each carries a stable code, a plain-language cause, a \"did you\n * mean\" suggestion where one fits, the offending expression and element, and a\n * link to the exact docs page. The literal `[summit]` prefix is preserved so\n * tooling that greps for it keeps working.\n */\n\nconst DOCS = \"https://velofy.github.io/summitjs\";\n\n/** Levenshtein edit distance between two short strings. */\nfunction distance(a: string, b: string): number {\n  const m = a.length;\n  const n = b.length;\n  if (!m) return n;\n  if (!n) return m;\n  let prev = Array.from({ length: n + 1 }, (_, j) => j);\n  for (let i = 1; i <= m; i++) {\n    const curr = [i];\n    for (let j = 1; j <= n; j++) {\n      const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n      curr[j] = Math.min(prev[j]! + 1, curr[j - 1]! + 1, prev[j - 1]! + cost);\n    }\n    prev = curr;\n  }\n  return prev[n]!;\n}\n\n/** The closest candidate to `name` within a small edit distance, or null. */\nexport function suggest(name: string, candidates: Iterable<string>): string | null {\n  let best: string | null = null;\n  let bestD = Infinity;\n  for (const c of candidates) {\n    const d = distance(name, c);\n    if (d < bestD) {\n      bestD = d;\n      best = c;\n    }\n  }\n  const limit = name.length <= 4 ? 1 : 2;\n  return best !== null && bestD <= limit ? best : null;\n}\n\nfunction describeEl(el: Element): string {\n  const tag = el.tagName.toLowerCase();\n  const id = el.id ? `#${el.id}` : \"\";\n  const cls = el.classList.length ? \".\" + Array.from(el.classList).slice(0, 2).join(\".\") : \"\";\n  return `<${tag}${id}${cls}>`;\n}\n\nexport interface Diag {\n  /** Element the problem is attached to. */\n  el?: Element;\n  /** The expression that failed, shown verbatim. */\n  expression?: string;\n  /** Docs slug to link, e.g. \"s-for\" -> https://.../s-for/. */\n  doc?: string;\n  /** A one-line \"here is how to fix it\" hint. */\n  hint?: string;\n  /** The underlying thrown value, logged after the formatted message. */\n  cause?: unknown;\n}\n\nfunction build(code: string, message: string, ctx: Diag): string {\n  const lines = [`[summit] ${code}: ${message}`];\n  if (ctx.hint) lines.push(`  ${ctx.hint}`);\n  if (ctx.expression) lines.push(`  expression: ${ctx.expression.trim()}`);\n  if (ctx.el) lines.push(`  element: ${describeEl(ctx.el)}`);\n  lines.push(`  docs: ${DOCS}/${ctx.doc ? ctx.doc + \"/\" : \"\"}`);\n  return lines.join(\"\\n\");\n}\n\nexport function warn(code: string, message: string, ctx: Diag = {}): void {\n  if (ctx.cause !== undefined) console.warn(build(code, message, ctx), \"\\n \", ctx.cause);\n  else console.warn(build(code, message, ctx));\n}\n\nexport function fail(code: string, message: string, ctx: Diag = {}): void {\n  if (ctx.cause !== undefined) console.error(build(code, message, ctx), \"\\n \", ctx.cause);\n  else console.error(build(code, message, ctx));\n}\n\nconst seen = new Set<string>();\n/** Warn once per unique key, so a repeated typo does not flood the console. */\nexport function warnOnce(key: string, code: string, message: string, ctx: Diag = {}): void {\n  if (seen.has(key)) return;\n  seen.add(key);\n  warn(code, message, ctx);\n}\n","/**\n * Per-element bookkeeping.\n *\n * Summit attaches a small metadata record to every element it touches: the\n * scope stack in effect there, teardown callbacks, a move-detection marker, and\n * whether the element is a component root. Kept in a WeakMap so nothing leaks\n * onto the DOM and everything is collected when a node is dropped.\n */\n\nimport { fail } from \"./errors.js\";\n\nexport type Scope = Record<PropertyKey, unknown>;\n\nexport interface SummitMeta {\n  /** The s-data scope stack visible at this element, outermost first. */\n  scopes?: Scope[];\n  /** Teardown callbacks: stop effects, remove listeners, clear timers. */\n  cleanups?: (() => void)[];\n  /** Callbacks from a component's data `destroy()` method. */\n  destroyCallbacks?: (() => void)[];\n  /** Unique id used to recognize a moved (not removed) node. */\n  marker?: number;\n  /** True if this element carries its own s-data (a component root). */\n  isRoot?: boolean;\n  /** The $refs registry for a component root. */\n  refs?: Record<string, Element>;\n  /** Skip this element and its subtree entirely. */\n  ignore?: boolean;\n  /** Guard against initializing the same element twice. */\n  initialized?: boolean;\n}\n\nconst metaMap = new WeakMap<Node, SummitMeta>();\n\nexport function meta(node: Node): SummitMeta {\n  let m = metaMap.get(node);\n  if (!m) metaMap.set(node, (m = {}));\n  return m;\n}\n\nexport function hasMeta(node: Node): boolean {\n  return metaMap.has(node);\n}\n\nlet markerCount = 0;\nexport function nextMarker(): number {\n  return ++markerCount;\n}\n\n/** Register a teardown callback for an element. */\nexport function addCleanup(el: Node, fn: () => void): void {\n  const m = meta(el);\n  (m.cleanups ??= []).push(fn);\n}\n\n/** Run and clear all teardown callbacks for an element. */\nexport function runCleanups(el: Node): void {\n  const m = metaMap.get(el);\n  if (!m) return;\n  if (m.cleanups) {\n    for (const fn of m.cleanups) {\n      try {\n        fn();\n      } catch (err) {\n        fail(\"E601\", \"a cleanup callback threw during teardown.\", { doc: \"lifecycle\", cause: err });\n      }\n    }\n    m.cleanups = [];\n  }\n  if (m.destroyCallbacks) {\n    for (const fn of m.destroyCallbacks) {\n      try {\n        fn();\n      } catch (err) {\n        fail(\"E602\", \"a destroy() callback threw during teardown.\", { doc: \"lifecycle\", cause: err });\n      }\n    }\n    m.destroyCallbacks = [];\n  }\n}\n\n/**\n * The scope stack visible at an element. Uses the stored stack if present,\n * otherwise climbs to the nearest ancestor that has one. Empty array if the\n * element is outside any Summit region.\n */\nexport function resolveScopes(el: Element): Scope[] {\n  const own = metaMap.get(el)?.scopes;\n  if (own) return own;\n  let parent = el.parentElement;\n  while (parent) {\n    const s = metaMap.get(parent)?.scopes;\n    if (s) return s;\n    parent = parent.parentElement;\n  }\n  return [];\n}\n\n/** The nearest ancestor element (or self) that is a component root. */\nexport function closestRoot(el: Element): Element | null {\n  let cur: Element | null = el;\n  while (cur) {\n    if (metaMap.get(cur)?.isRoot) return cur;\n    cur = cur.parentElement;\n  }\n  return null;\n}\n\n/** The $refs registry for the component `el` belongs to, creating it lazily. */\nexport function refsFor(el: Element): Record<string, Element> {\n  const root = closestRoot(el) ?? el;\n  const m = meta(root);\n  return (m.refs ??= {});\n}\n","/**\n * Builds the RootEnv the evaluator resolves identifiers against.\n *\n * Resolution order for a name:\n *   1. extra locals (e.g. $event in a handler, or the loop item in s-for)\n *   2. the s-data scope stack, innermost first (so inner scopes shadow outer)\n *   3. `$`-prefixed magics\n * Anything else falls through to the evaluator's global allowlist.\n */\n\nimport { evaluateExpression, evaluateAction, type RootEnv } from \"../evaluator/index.js\";\nimport { resolveScopes, addCleanup, type Scope } from \"../dom.js\";\nimport { getMagic, magicNames } from \"../registry/registry.js\";\nimport { domEffect } from \"../reactivity/index.js\";\nimport type { MagicContext } from \"../types.js\";\n\nconst DOLLAR = 36; // '$'\n\nexport interface EnvHandle {\n  env: RootEnv;\n  thisVal: unknown;\n  evaluate(expression: string): unknown;\n  evaluateAction(expression: string, extraLocals?: Scope): unknown;\n}\n\nexport function makeEnv(el: Element, locals?: Scope): EnvHandle {\n  const scopes = resolveScopes(el);\n  const thisVal = scopes.length ? scopes[scopes.length - 1] : undefined;\n\n  const ctx: MagicContext = {\n    el,\n    scopes,\n    evaluate: (expression: string) => evaluateExpression(expression, env, thisVal),\n    effect: (fn: () => void) => {\n      const dispose = domEffect(fn);\n      addCleanup(el, dispose);\n    },\n    cleanup: (fn: () => void) => addCleanup(el, fn),\n  };\n\n  const env: RootEnv = {\n    has(name: string): boolean {\n      if (locals && name in locals) return true;\n      for (let i = scopes.length - 1; i >= 0; i--) {\n        if (name in scopes[i]!) return true;\n      }\n      if (name.charCodeAt(0) === DOLLAR && getMagic(name.slice(1))) return true;\n      return false;\n    },\n    get(name: string): unknown {\n      if (locals && name in locals) return locals[name];\n      for (let i = scopes.length - 1; i >= 0; i--) {\n        if (name in scopes[i]!) return scopes[i]![name];\n      }\n      if (name.charCodeAt(0) === DOLLAR) {\n        const factory = getMagic(name.slice(1));\n        if (factory) return factory(ctx);\n      }\n      return undefined;\n    },\n    set(name: string, value: unknown): void {\n      for (let i = scopes.length - 1; i >= 0; i--) {\n        if (name in scopes[i]!) {\n          scopes[i]![name] = value;\n          return;\n        }\n      }\n      if (scopes.length) scopes[scopes.length - 1]![name] = value;\n    },\n  };\n\n  return {\n    env,\n    thisVal,\n    evaluate: (expression: string) => evaluateExpression(expression, env, thisVal),\n    evaluateAction: (expression: string, extraLocals?: Scope) => {\n      if (!extraLocals) return evaluateAction(expression, env, thisVal);\n      // Layer additional locals (e.g. $event) on top for this one evaluation.\n      const layered: RootEnv = {\n        has: (n) => (n in extraLocals ? true : env.has(n)),\n        get: (n) => (n in extraLocals ? extraLocals[n] : env.get(n)),\n        set: (n, v) => env.set(n, v),\n      };\n      return evaluateAction(expression, layered, thisVal);\n    },\n  };\n}\n\n/**\n * Expose `$`-magics on a component's scope object so they are reachable as\n * `this.$watch`, `this.$refs`, `this.$el`, etc. from inside data methods and\n * init(). Defined as non-enumerable getters bound to the component root, so\n * they never leak into iteration or spreads.\n */\nexport function attachMagics(rawTarget: Record<PropertyKey, unknown>, el: Element, scopes: Scope[]): void {\n  const ctx: MagicContext = {\n    el,\n    scopes,\n    evaluate: (expression: string) =>\n      evaluateExpression(expression, makeEnv(el).env, scopes.length ? scopes[scopes.length - 1] : undefined),\n    effect: (fn: () => void) => addCleanup(el, domEffect(fn)),\n    cleanup: (fn: () => void) => addCleanup(el, fn),\n  };\n\n  for (const name of magicNames()) {\n    Object.defineProperty(rawTarget, \"$\" + name, {\n      get: () => getMagic(name)!(ctx),\n      enumerable: false,\n      configurable: true,\n    });\n  }\n}\n","/**\n * Parses a raw DOM attribute name into a Summit directive descriptor.\n *\n * Grammar: `s-NAME:VALUE.MOD1.MOD2=\"EXPRESSION\"`, with `@` shorthand for\n * `s-on:` and `:` shorthand for `s-bind:`. Attributes that are not Summit\n * directives return null.\n */\n\nimport type { DirectiveMeta } from \"../types.js\";\n\nexport function parseAttribute(rawName: string, expression: string): DirectiveMeta | null {\n  let name = rawName;\n  if (name[0] === \"@\") name = \"on:\" + name.slice(1);\n  else if (name[0] === \":\") name = \"bind:\" + name.slice(1);\n  else if (name.startsWith(\"s-\")) name = name.slice(2);\n  else return null;\n\n  const parts = name.split(\".\");\n  const head = parts[0]!;\n  const modifiers = parts.slice(1);\n\n  const colon = head.indexOf(\":\");\n  let dirName: string;\n  let value: string | null;\n  if (colon === -1) {\n    dirName = head;\n    value = null;\n  } else {\n    dirName = head.slice(0, colon);\n    value = head.slice(colon + 1);\n  }\n\n  return { name: dirName, value, modifiers, expression, raw: rawName };\n}\n\n/** Is this a Summit attribute at all (by name shape)? */\nexport function isSummitAttribute(rawName: string): boolean {\n  return rawName[0] === \"@\" || rawName[0] === \":\" || rawName.startsWith(\"s-\");\n}\n","/**\n * $persist: reactive state backed by localStorage.\n *\n *   x = { count: $persist(0) }            persists under key \"count\"\n *   x = { count: $persist(0).as('c') }    persists under key \"c\"\n *\n * $persist returns a marker that s-data resolves after the scope is reactive:\n * it seeds the value from storage (or the default) and writes back on change.\n */\n\nconst MARK = \"__summitPersist\";\n\nexport interface PersistMarker {\n  [MARK]: true;\n  initial: unknown;\n  key: string | null;\n  as(key: string | number): PersistMarker;\n}\n\nexport function createPersist(initial: unknown): PersistMarker {\n  return {\n    [MARK]: true,\n    initial,\n    key: null,\n    as(key: string | number): PersistMarker {\n      this.key = String(key);\n      return this;\n    },\n  };\n}\n\nexport function isPersistMarker(value: unknown): value is PersistMarker {\n  return !!value && typeof value === \"object\" && (value as Record<string, unknown>)[MARK] === true;\n}\n","/**\n * initTree / destroyTree: the DOM engine.\n *\n * initTree walks an element and its descendants, establishing s-data scopes and\n * running directives in priority order. Structural directives (s-if, s-for,\n * s-teleport) take over their own subtree. destroyTree runs every teardown\n * callback so effects stop, listeners detach, and component `destroy()` fires.\n */\n\nimport { addCleanup, meta, nextMarker, resolveScopes, runCleanups, type Scope } from \"../dom.js\";\nimport { attachMagics, createScope, makeEnv } from \"../scope/index.js\";\nimport { domEffect } from \"../reactivity/index.js\";\nimport { getData, getDirective, directiveNames, DEFAULT_PRIORITY } from \"../registry/registry.js\";\nimport type { DirectiveMeta, DirectiveUtils, SummitGlobalLike } from \"../types.js\";\nimport { parseAttribute } from \"./attributes.js\";\nimport { warnOnce, fail, suggest } from \"../errors.js\";\nimport { isPersistMarker } from \"../magics/persist.js\";\n\nconst STRUCTURAL = new Set([\"if\", \"for\", \"teleport\"]);\n// Valid directive names that are not in the directive registry: s-data creates\n// scope, s-ignore is read directly off the element.\nconst SPECIAL = new Set([\"data\", \"ignore\"]);\n\nlet summitGlobal: SummitGlobalLike;\nexport function setSummitGlobal(g: SummitGlobalLike): void {\n  summitGlobal = g;\n}\n\n// --- Observer suppression -------------------------------------------------\n\nlet suppressDepth = 0;\nexport function isSuppressed(): boolean {\n  return suppressDepth > 0;\n}\n/** Run a DOM mutation that Summit itself performs, hidden from the observer. */\nexport function mutateDom<T>(fn: () => T): T {\n  suppressDepth++;\n  try {\n    return fn();\n  } finally {\n    suppressDepth--;\n  }\n}\n\n// --- Directive collection -------------------------------------------------\n\nfunction collectDirectives(el: Element): DirectiveMeta[] {\n  const out: DirectiveMeta[] = [];\n  for (const attr of Array.from(el.attributes)) {\n    const parsed = parseAttribute(attr.name, attr.value);\n    if (!parsed) continue;\n    if (SPECIAL.has(parsed.name) || getDirective(parsed.name)) {\n      out.push(parsed);\n    } else {\n      // Looks like a directive (s-*, @*, :*) but nothing handles it. A typo like\n      // s-clik or s-modle is a common first-try mistake; point at the right one.\n      const hit = suggest(parsed.name, [...directiveNames(), ...SPECIAL]);\n      warnOnce(\n        `dir:${parsed.name}`,\n        \"E201\",\n        `unknown directive \"${attr.name}\".`,\n        {\n          el,\n          doc: hit ? `s-${hit}` : \"start\",\n          hint: hit ? `Did you mean \"s-${hit}\"?` : \"See the directive reference.\",\n        },\n      );\n    }\n  }\n  return out;\n}\n\nfunction priorityOf(name: string): number {\n  return getDirective(name)?.priority ?? DEFAULT_PRIORITY;\n}\n\n// --- Utilities handed to directives --------------------------------------\n\nfunction makeUtils(el: Element, scopes: Scope[]): DirectiveUtils {\n  const handle = makeEnv(el);\n  return {\n    evaluate: (expression: string) => handle.evaluate(expression),\n    evaluateAction: (expression: string, locals?: Scope) => handle.evaluateAction(expression, locals),\n    effect: (fn: () => void) => {\n      const dispose = domEffect(fn);\n      addCleanup(el, dispose);\n    },\n    cleanup: (fn: () => void) => addCleanup(el, fn),\n    initTree,\n    destroyTree,\n    scopes,\n    makeEnv: (e: Element, locals?: Scope) => makeEnv(e, locals).env,\n    Summit: summitGlobal,\n  };\n}\n\nfunction runDirective(el: Element, dmeta: DirectiveMeta, scopes: Scope[]): void {\n  const entry = getDirective(dmeta.name);\n  if (!entry) return;\n  try {\n    entry.handler(el, dmeta, makeUtils(el, scopes));\n  } catch (err) {\n    fail(\"E301\", `s-${dmeta.name} failed while evaluating its expression.`, {\n      el,\n      expression: dmeta.expression,\n      doc: `s-${dmeta.name}`,\n      hint: \"Every name in the expression must be state from an enclosing s-data, or an allowed global.\",\n      cause: err,\n    });\n  }\n}\n\n// --- s-data ---------------------------------------------------------------\n\nconst DATA_PROVIDER_RE = /^([A-Za-z_$][\\w$]*)\\s*(\\(([\\s\\S]*)\\))?$/;\n\n/** Replace $persist() markers with their stored value and wire write-back. */\nfunction resolvePersist(scope: Scope, el: Element): void {\n  const hasLS = typeof localStorage !== \"undefined\";\n  for (const key of Object.keys(scope)) {\n    const marker = (scope as Record<string, unknown>)[key];\n    if (!isPersistMarker(marker)) continue;\n    const storeKey = marker.key ?? key;\n    let value = marker.initial;\n    if (hasLS) {\n      try {\n        const stored = localStorage.getItem(storeKey);\n        if (stored != null) value = JSON.parse(stored);\n      } catch {\n        /* ignore malformed storage */\n      }\n    }\n    (scope as Record<string, unknown>)[key] = value;\n    if (hasLS) {\n      const dispose = domEffect(() => {\n        try {\n          localStorage.setItem(storeKey, JSON.stringify((scope as Record<string, unknown>)[key]));\n        } catch {\n          /* storage full or unavailable */\n        }\n      });\n      addCleanup(el, dispose);\n    }\n  }\n}\n\nfunction initData(el: Element, dmeta: DirectiveMeta, parentScopes: Scope[]): Scope[] {\n  // The data expression is evaluated in the parent scope.\n  const parentEnv = makeEnv(el);\n  const expr = dmeta.expression.trim();\n\n  let raw: unknown;\n  try {\n    const match = expr.match(DATA_PROVIDER_RE);\n    if (match && getData(match[1]!)) {\n      const provider = getData(match[1]!)!;\n      const args = match[2] ? (parentEnv.evaluate(\"[\" + (match[3] ?? \"\") + \"]\") as unknown[]) : [];\n      raw = provider(...args);\n    } else if (expr === \"\") {\n      raw = {};\n    } else {\n      raw = parentEnv.evaluate(\"(\" + expr + \")\");\n    }\n  } catch (err) {\n    // A bad s-data must not take down the rest of the page: report it clearly\n    // and start this component with empty state so siblings still initialize.\n    fail(\"E104\", \"s-data could not be evaluated; the component starts with empty state.\", {\n      el,\n      expression: expr,\n      doc: \"s-data\",\n      hint: \"Check the object for unsupported syntax, e.g. an async method.\",\n      cause: err,\n    });\n    raw = {};\n  }\n  if (raw === null || typeof raw !== \"object\") raw = {};\n\n  const scope = createScope(raw as Record<PropertyKey, unknown>);\n  resolvePersist(scope, el);\n  const newScopes = [...parentScopes, scope];\n  const m = meta(el);\n  m.scopes = newScopes;\n  m.isRoot = true;\n  m.refs = {};\n\n  // Make $-magics reachable as this.$watch, this.$refs, etc. inside methods.\n  attachMagics(raw as Record<PropertyKey, unknown>, el, newScopes);\n\n  const initFn = (scope as Record<string, unknown>)[\"init\"];\n  if (typeof initFn === \"function\") {\n    try {\n      (initFn as () => void)();\n    } catch (err) {\n      fail(\"E101\", \"s-data init() threw.\", { el, doc: \"s-data\", cause: err });\n    }\n  }\n  const destroyFn = (scope as Record<string, unknown>)[\"destroy\"];\n  if (typeof destroyFn === \"function\") {\n    addCleanup(el, () => {\n      try {\n        (destroyFn as () => void)();\n      } catch (err) {\n        fail(\"E102\", \"s-data destroy() threw.\", { el, doc: \"s-data\", cause: err });\n      }\n    });\n  }\n\n  return newScopes;\n}\n\n// --- initTree / destroyTree ----------------------------------------------\n\nexport function initTree(el: Element, scopesArg?: Scope[]): void {\n  const m = meta(el);\n  if (m.initialized || m.ignore) return;\n  if (el.hasAttribute(\"s-ignore\")) {\n    m.ignore = true;\n    m.initialized = true;\n    return;\n  }\n\n  let scopes = scopesArg ?? resolveScopes(el);\n  m.scopes = scopes;\n  m.marker = nextMarker();\n\n  const dirs = collectDirectives(el);\n\n  const dataDir = dirs.find((d) => d.name === \"data\");\n  if (dataDir) scopes = initData(el, dataDir, scopes);\n\n  const structural = dirs.find((d) => STRUCTURAL.has(d.name));\n  if (structural) {\n    m.initialized = true;\n    runDirective(el, structural, scopes);\n    return; // structural directives own their subtree\n  }\n\n  const rest = dirs.filter((d) => d.name !== \"data\").sort((a, b) => priorityOf(a.name) - priorityOf(b.name));\n  for (const d of rest) runDirective(el, d, scopes);\n  m.initialized = true;\n\n  // Descend into element children with the (possibly extended) scope stack.\n  // Snapshot the children first: it survives sibling mutations during init\n  // (structural directives insert/remove nodes) and sidesteps host quirks\n  // where nextElementSibling is unreliable.\n  for (const child of Array.from(el.children)) {\n    initTree(child, scopes);\n  }\n}\n\nexport function destroyTree(el: Element): void {\n  runCleanups(el);\n  for (const child of Array.from(el.children)) {\n    destroyTree(child);\n  }\n  meta(el).initialized = false;\n}\n","/**\n * The MutationObserver.\n *\n * One observer watches the whole subtree for node additions and removals so\n * content added or removed after start (by fetch/HTMX/hand-written JS) is\n * initialized or torn down automatically. Idempotency guards make this safe:\n * an already-initialized node is skipped (which also handles moves, where a\n * node is removed and re-added in one batch), and a still-connected removed\n * node is treated as a move rather than a teardown.\n */\n\nimport { meta } from \"../dom.js\";\nimport { destroyTree, initTree } from \"./tree.js\";\n\nlet observer: MutationObserver | null = null;\n\nexport function startObserver(root: Node): void {\n  if (observer) return;\n  observer = new MutationObserver(handleMutations);\n  observer.observe(root, { childList: true, subtree: true });\n}\n\nexport function stopObserver(): void {\n  observer?.disconnect();\n  observer = null;\n}\n\nfunction handleMutations(records: MutationRecord[]): void {\n  const removed: Element[] = [];\n  const added: Element[] = [];\n\n  for (const rec of records) {\n    if (rec.type !== \"childList\") continue;\n    rec.removedNodes.forEach((n) => {\n      if (n.nodeType === 1) removed.push(n as Element);\n    });\n    rec.addedNodes.forEach((n) => {\n      if (n.nodeType === 1) added.push(n as Element);\n    });\n  }\n\n  // Tear down nodes that are genuinely gone (a moved node stays connected).\n  for (const el of removed) {\n    if (!el.isConnected) destroyTree(el);\n  }\n\n  // Initialize freshly added, not-yet-initialized nodes.\n  for (const el of added) {\n    if (el.isConnected && !meta(el).initialized) initTree(el);\n  }\n}\n","/**\n * s-text and s-html.\n *\n * s-text sets textContent (safe). s-html sets innerHTML and initializes any\n * Summit directives inside the injected markup, so server- or fetch-supplied\n * fragments become reactive. Only use s-html on trusted content.\n */\n\nimport type { DirectiveHandler } from \"../types.js\";\n\nfunction toDisplay(value: unknown): string {\n  return value == null ? \"\" : String(value);\n}\n\nexport const text: DirectiveHandler = (el, meta, utils) => {\n  utils.effect(() => {\n    el.textContent = toDisplay(utils.evaluate(meta.expression));\n  });\n};\n\nexport const html: DirectiveHandler = (el, meta, utils) => {\n  utils.effect(() => {\n    el.innerHTML = toDisplay(utils.evaluate(meta.expression));\n    let child = el.firstElementChild;\n    while (child) {\n      utils.initTree(child, utils.scopes);\n      child = child.nextElementSibling;\n    }\n  });\n};\n","/**\n * Small helpers shared across directives: class/style merging, attribute\n * application, and name casing.\n */\n\nconst BOOLEAN_ATTRS = new Set([\n  \"disabled\",\n  \"checked\",\n  \"required\",\n  \"readonly\",\n  \"hidden\",\n  \"selected\",\n  \"open\",\n  \"multiple\",\n  \"autofocus\",\n  \"novalidate\",\n  \"autoplay\",\n  \"controls\",\n  \"loop\",\n  \"muted\",\n  \"playsinline\",\n  \"default\",\n  \"ismap\",\n  \"reversed\",\n  \"async\",\n  \"defer\",\n  \"inert\",\n]);\n\n// Attributes better set as element properties than HTML attributes.\nconst PROP_ATTRS = new Set([\"value\", \"checked\", \"selected\", \"indeterminate\", \"muted\", \"volume\"]);\n\nexport function camelCase(input: string): string {\n  return input.replace(/-([a-z])/g, (_, c: string) => c.toUpperCase());\n}\n\nexport function kebabCase(input: string): string {\n  return input.replace(/[A-Z]/g, (c) => \"-\" + c.toLowerCase());\n}\n\n/** Turn a class binding value (string | array | object) into a token list. */\nfunction classTokens(value: unknown): string[] {\n  if (!value) return [];\n  if (typeof value === \"string\") return value.split(/\\s+/).filter(Boolean);\n  if (Array.isArray(value)) return value.flatMap((v) => classTokens(v));\n  if (typeof value === \"object\") {\n    return Object.entries(value as Record<string, unknown>)\n      .filter(([, on]) => on)\n      .map(([cls]) => cls);\n  }\n  return [];\n}\n\n/** Merge static base classes with a dynamic binding, preserving both. */\nexport function mergeClass(base: string, value: unknown): string {\n  const set = new Set<string>();\n  for (const t of base.split(/\\s+/)) if (t) set.add(t);\n  for (const t of classTokens(value)) set.add(t);\n  return [...set].join(\" \");\n}\n\n/** Merge static base styles with a dynamic style object/string. */\nexport function mergeStyle(base: string, value: unknown): string {\n  const parts: string[] = [];\n  if (base) parts.push(base.trim().replace(/;?\\s*$/, \"\"));\n  if (typeof value === \"string\") {\n    parts.push(value.trim().replace(/;?\\s*$/, \"\"));\n  } else if (value && typeof value === \"object\") {\n    for (const [prop, val] of Object.entries(value as Record<string, unknown>)) {\n      if (val == null || val === false) continue;\n      parts.push(`${kebabCase(prop)}: ${String(val)}`);\n    }\n  }\n  return parts.filter(Boolean).join(\"; \");\n}\n\n/** Apply a single attribute binding, handling booleans and property attrs. */\nexport function applyAttribute(el: Element, name: string, value: unknown): void {\n  if (BOOLEAN_ATTRS.has(name)) {\n    if (value) el.setAttribute(name, \"\");\n    else el.removeAttribute(name);\n    // Reflect to the property too, so form state stays in sync.\n    if (name in el) (el as unknown as Record<string, unknown>)[name] = !!value;\n    return;\n  }\n  if (PROP_ATTRS.has(name) && name in el) {\n    (el as unknown as Record<string, unknown>)[name] = value;\n    return;\n  }\n  if (value === false || value == null) {\n    el.removeAttribute(name);\n  } else {\n    el.setAttribute(name, String(value));\n  }\n}\n","/**\n * s-bind and its `:` shorthand.\n *\n *   :class  merges an object/array/string with the static class attribute\n *   :style  merges an object/string with the static style attribute\n *   :attr   sets any attribute; boolean attrs add/remove, false/null remove\n *   s-bind=\"obj\"  applies a whole object of attributes/handlers at once\n */\n\nimport type { DirectiveHandler, DirectiveUtils } from \"../types.js\";\nimport { applyAttribute, camelCase, mergeClass, mergeStyle } from \"./shared.js\";\n\nexport const bind: DirectiveHandler = (el, meta, utils) => {\n  if (meta.value === null) {\n    applyBindObject(el, meta.expression, utils);\n    return;\n  }\n\n  const name = meta.modifiers.includes(\"camel\") ? camelCase(meta.value) : meta.value;\n\n  if (name === \"class\") {\n    const base = el.getAttribute(\"class\") ?? \"\";\n    utils.effect(() => {\n      el.setAttribute(\"class\", mergeClass(base, utils.evaluate(meta.expression)));\n    });\n    return;\n  }\n\n  if (name === \"style\") {\n    const base = el.getAttribute(\"style\") ?? \"\";\n    utils.effect(() => {\n      const merged = mergeStyle(base, utils.evaluate(meta.expression));\n      if (merged) el.setAttribute(\"style\", merged);\n      else el.removeAttribute(\"style\");\n    });\n    return;\n  }\n\n  utils.effect(() => {\n    applyAttribute(el, name, utils.evaluate(meta.expression));\n  });\n};\n\n/**\n * Apply a bind object: `{ type: 'button', '@click'() {...}, ':disabled'() {...} }`.\n * Plain values become attributes, `@`/`:` keys become handlers/dynamic binds.\n */\nfunction applyBindObject(el: Element, expression: string, utils: DirectiveUtils): void {\n  const obj = utils.evaluate(expression) as Record<string, unknown> | null;\n  if (!obj || typeof obj !== \"object\") return;\n\n  for (const [key, raw] of Object.entries(obj)) {\n    if (key[0] === \"@\") {\n      const event = key.slice(1);\n      const handler = raw as EventListener;\n      el.addEventListener(event, handler);\n      utils.cleanup(() => el.removeEventListener(event, handler));\n    } else if (key[0] === \":\") {\n      const attr = key.slice(1);\n      const getter = raw as () => unknown;\n      utils.effect(() => applyAttribute(el, attr, typeof getter === \"function\" ? getter() : getter));\n    } else {\n      applyAttribute(el, key, raw);\n    }\n  }\n}\n","/**\n * s-on and its `@` shorthand.\n *\n * Supports the full modifier vocabulary: .prevent .stop .self .outside .once\n * .capture .passive .window .document .debounce .throttle, key filters\n * (.enter .escape .arrow-up ...), system-key combos (.shift .ctrl .alt .cmd),\n * and event-name transforms (.camel .dot). A bare method reference\n * (`@click=\"handler\"`) is called with the event.\n */\n\nimport type { DirectiveHandler } from \"../types.js\";\nimport { camelCase, kebabCase } from \"./shared.js\";\nimport { fail } from \"../errors.js\";\n\nconst SYSTEM = new Set([\"shift\", \"ctrl\", \"alt\", \"cmd\", \"meta\"]);\nconst BEHAVIOR = new Set([\n  \"prevent\",\n  \"stop\",\n  \"self\",\n  \"outside\",\n  \"once\",\n  \"capture\",\n  \"passive\",\n  \"window\",\n  \"document\",\n  \"camel\",\n  \"dot\",\n  \"debounce\",\n  \"throttle\",\n]);\n\nconst KEY_ALIASES: Record<string, string> = {\n  enter: \"Enter\",\n  tab: \"Tab\",\n  space: \" \",\n  esc: \"Escape\",\n  escape: \"Escape\",\n  up: \"ArrowUp\",\n  down: \"ArrowDown\",\n  left: \"ArrowLeft\",\n  right: \"ArrowRight\",\n  \"arrow-up\": \"ArrowUp\",\n  \"arrow-down\": \"ArrowDown\",\n  \"arrow-left\": \"ArrowLeft\",\n  \"arrow-right\": \"ArrowRight\",\n  \"page-up\": \"PageUp\",\n  \"page-down\": \"PageDown\",\n  home: \"Home\",\n  end: \"End\",\n  delete: \"Delete\",\n  backspace: \"Backspace\",\n};\n\nfunction isDuration(m: string): boolean {\n  return /^\\d+(ms|s)?$/.test(m);\n}\n\nfunction parseDuration(m: string): number {\n  if (m.endsWith(\"ms\")) return parseInt(m, 10);\n  if (m.endsWith(\"s\")) return parseInt(m, 10) * 1000;\n  return parseInt(m, 10);\n}\n\nfunction durationFor(mods: string[], name: string): number | null {\n  const i = mods.indexOf(name);\n  if (i === -1) return null;\n  const next = mods[i + 1];\n  return next && isDuration(next) ? parseDuration(next) : 250;\n}\n\nfunction matchKey(e: KeyboardEvent, mod: string): boolean {\n  const key = e.key;\n  if (!key) return false;\n  const alias = KEY_ALIASES[mod];\n  if (alias) return key === alias;\n  return kebabCase(key).toLowerCase() === mod.toLowerCase() || key.toLowerCase() === mod.toLowerCase();\n}\n\nfunction passesSystem(e: Event, mods: string[]): boolean {\n  const k = e as KeyboardEvent;\n  if (mods.includes(\"shift\") && !k.shiftKey) return false;\n  if (mods.includes(\"ctrl\") && !k.ctrlKey) return false;\n  if (mods.includes(\"alt\") && !k.altKey) return false;\n  if ((mods.includes(\"cmd\") || mods.includes(\"meta\")) && !k.metaKey) return false;\n  return true;\n}\n\nfunction debounce(fn: (e: Event) => void, ms: number): (e: Event) => void {\n  let t: ReturnType<typeof setTimeout> | undefined;\n  return (e: Event) => {\n    clearTimeout(t);\n    t = setTimeout(() => fn(e), ms);\n  };\n}\n\nfunction throttle(fn: (e: Event) => void, ms: number): (e: Event) => void {\n  let last = 0;\n  let scheduled: ReturnType<typeof setTimeout> | undefined;\n  return (e: Event) => {\n    const now = Date.now();\n    const remaining = ms - (now - last);\n    if (remaining <= 0) {\n      last = now;\n      fn(e);\n    } else if (!scheduled) {\n      scheduled = setTimeout(() => {\n        last = Date.now();\n        scheduled = undefined;\n        fn(e);\n      }, remaining);\n    }\n  };\n}\n\nexport const on: DirectiveHandler = (el, meta, utils) => {\n  const mods = meta.modifiers;\n  let event = meta.value ?? \"\";\n  if (mods.includes(\"camel\")) event = camelCase(event);\n  if (mods.includes(\"dot\")) event = event.replace(/-/g, \".\");\n\n  const keyMods = mods.filter((m) => !SYSTEM.has(m) && !BEHAVIOR.has(m) && !isDuration(m));\n\n  const target: EventTarget = mods.includes(\"window\")\n    ? window\n    : mods.includes(\"document\") || mods.includes(\"outside\")\n      ? document\n      : el;\n\n  const options: AddEventListenerOptions = {};\n  if (mods.includes(\"capture\")) options.capture = true;\n  if (mods.includes(\"passive\")) options.passive = true;\n  if (mods.includes(\"once\")) options.once = true;\n\n  const invoke = (e: Event): void => {\n    if (mods.includes(\"self\") && e.target !== el) return;\n    if (mods.includes(\"outside\")) {\n      const t = e.target as Node;\n      if (el === t || el.contains(t)) return;\n      if (!document.documentElement.contains(t)) return; // ignore removed nodes\n    }\n    if (keyMods.length && !keyMods.some((k) => matchKey(e as KeyboardEvent, k))) return;\n    if (!passesSystem(e, mods)) return;\n    if (mods.includes(\"prevent\")) e.preventDefault();\n    if (mods.includes(\"stop\")) e.stopPropagation();\n\n    try {\n      const result = utils.evaluateAction(meta.expression, { $event: e });\n      if (typeof result === \"function\") (result as (e: Event) => void)(e);\n    } catch (err) {\n      fail(\"E301\", `@${event} handler failed while evaluating its expression.`, {\n        el,\n        expression: meta.expression,\n        doc: \"s-on\",\n        hint: \"Names must be state from an enclosing s-data, a $magic, or an allowed global.\",\n        cause: err,\n      });\n    }\n  };\n\n  const debounceMs = durationFor(mods, \"debounce\");\n  const throttleMs = durationFor(mods, \"throttle\");\n  let handler: (e: Event) => void = invoke;\n  if (debounceMs != null) handler = debounce(invoke, debounceMs);\n  else if (throttleMs != null) handler = throttle(invoke, throttleMs);\n\n  target.addEventListener(event, handler as EventListener, options);\n  utils.cleanup(() => target.removeEventListener(event, handler as EventListener, options));\n};\n","/**\n * s-model: two-way binding for form controls.\n *\n * Handles text, textarea, number, range, checkbox (boolean or array), radio,\n * and select (single or multiple). Modifiers: .lazy .change .blur .number\n * .boolean .debounce .throttle .fill. The bound value is also exposed as\n * `el._summitModel = { get, set }` for building custom input components.\n */\n\nimport type { DirectiveHandler } from \"../types.js\";\n\nfunction coerce(value: string, mods: string[]): unknown {\n  if (mods.includes(\"number\")) {\n    const n = parseFloat(value);\n    return isNaN(n) ? value : n;\n  }\n  if (mods.includes(\"boolean\")) {\n    if (value === \"true\") return true;\n    if (value === \"false\") return false;\n    return Boolean(value);\n  }\n  return value;\n}\n\nfunction debounce(fn: () => void, ms: number): () => void {\n  let t: ReturnType<typeof setTimeout> | undefined;\n  return () => {\n    clearTimeout(t);\n    t = setTimeout(fn, ms);\n  };\n}\n\nfunction durationFor(mods: string[], name: string): number | null {\n  const i = mods.indexOf(name);\n  if (i === -1) return null;\n  const next = mods[i + 1];\n  if (next && /^\\d+(ms|s)?$/.test(next)) {\n    return next.endsWith(\"s\") && !next.endsWith(\"ms\") ? parseInt(next, 10) * 1000 : parseInt(next, 10);\n  }\n  return 250;\n}\n\nexport const model: DirectiveHandler = (el, meta, utils) => {\n  const input = el as HTMLInputElement;\n  const select = el as HTMLSelectElement;\n  const mods = meta.modifiers;\n  const expr = meta.expression;\n  const type = input.type;\n  const tag = el.tagName;\n\n  const getValue = (): unknown => utils.evaluate(expr);\n  const setValue = (v: unknown): void => {\n    utils.evaluateAction(expr + \" = $model\", { $model: v });\n  };\n\n  // .fill: seed the model from the control's initial value if the model is empty.\n  if (mods.includes(\"fill\")) {\n    const current = getValue();\n    if (current === undefined || current === null || current === \"\") {\n      setValue(coerce(input.value ?? input.getAttribute(\"value\") ?? \"\", mods));\n    }\n  }\n\n  const readFromElement = (): unknown => {\n    if (type === \"checkbox\") {\n      const current = getValue();\n      if (Array.isArray(current)) {\n        const next = new Set(current as unknown[]);\n        if (input.checked) next.add(input.value);\n        else next.delete(input.value);\n        return [...next];\n      }\n      return input.checked;\n    }\n    if (type === \"radio\") {\n      return coerce(input.value, mods);\n    }\n    if (tag === \"SELECT\" && select.multiple) {\n      return Array.from(select.selectedOptions).map((o) => o.value);\n    }\n    return coerce(input.value, mods);\n  };\n\n  const writeToElement = (value: unknown): void => {\n    if (type === \"checkbox\") {\n      input.checked = Array.isArray(value) ? (value as unknown[]).map(String).includes(input.value) : !!value;\n      return;\n    }\n    if (type === \"radio\") {\n      input.checked = String(value) === input.value;\n      return;\n    }\n    if (tag === \"SELECT\" && select.multiple) {\n      const set = new Set((value as unknown[] | null)?.map(String) ?? []);\n      for (const opt of Array.from(select.options)) opt.selected = set.has(opt.value);\n      return;\n    }\n    const str = value == null ? \"\" : String(value);\n    if (input.value !== str) input.value = str;\n  };\n\n  // Keep the element in sync with the data.\n  utils.effect(() => writeToElement(getValue()));\n\n  // Keep the data in sync with the element.\n  let eventName = \"input\";\n  if (tag === \"SELECT\" || type === \"checkbox\" || type === \"radio\") eventName = \"change\";\n  if (mods.includes(\"lazy\") || mods.includes(\"change\")) eventName = \"change\";\n  if (mods.includes(\"blur\")) eventName = \"blur\";\n\n  let onEvent = (): void => setValue(readFromElement());\n  const debounceMs = durationFor(mods, \"debounce\");\n  if (debounceMs != null) onEvent = debounce(onEvent, debounceMs);\n\n  el.addEventListener(eventName, onEvent);\n  utils.cleanup(() => el.removeEventListener(eventName, onEvent));\n\n  (el as unknown as { _summitModel: { get: () => unknown; set: (v: unknown) => void } })._summitModel = {\n    get: getValue,\n    set: setValue,\n  };\n};\n","/**\n * s-transition: enter/leave animations, paired with s-show.\n *\n * Two styles, matching Alpine's surface:\n *   - class style: s-transition:enter / enter-start / enter-end / leave /\n *     leave-start / leave-end each take a class list.\n *   - helper style: bare s-transition with .duration .delay .opacity .scale\n *     modifiers uses inline styles for a default fade + scale.\n */\n\nimport type { DirectiveHandler } from \"../types.js\";\n\ninterface TransitionConfig {\n  enter?: string;\n  enterStart?: string;\n  enterEnd?: string;\n  leave?: string;\n  leaveStart?: string;\n  leaveEnd?: string;\n  duration?: number;\n  delay?: number;\n  opacity?: boolean;\n  scale?: number;\n  classMode: boolean;\n}\n\nconst configs = new WeakMap<Element, TransitionConfig>();\n\nfunction config(el: Element): TransitionConfig {\n  let c = configs.get(el);\n  if (!c) configs.set(el, (c = { classMode: false }));\n  return c;\n}\n\nexport function hasTransition(el: Element): boolean {\n  return configs.has(el);\n}\n\nfunction tokens(list?: string): string[] {\n  return list ? list.split(/\\s+/).filter(Boolean) : [];\n}\n\nfunction durationMod(mods: string[], name: string): number | undefined {\n  const i = mods.indexOf(name);\n  if (i === -1) return undefined;\n  const next = mods[i + 1];\n  if (!next) return undefined;\n  if (next.endsWith(\"ms\")) return parseInt(next, 10);\n  if (next.endsWith(\"s\")) return parseInt(next, 10) * 1000;\n  return parseInt(next, 10);\n}\n\nexport const transition: DirectiveHandler = (el, meta) => {\n  const c = config(el);\n  const mods = meta.modifiers;\n\n  if (meta.value) {\n    // Class style: s-transition:enter=\"...\", etc.\n    c.classMode = true;\n    const key = meta.value as\n      | \"enter\"\n      | \"enter-start\"\n      | \"enter-end\"\n      | \"leave\"\n      | \"leave-start\"\n      | \"leave-end\";\n    const map: Record<string, keyof TransitionConfig> = {\n      enter: \"enter\",\n      \"enter-start\": \"enterStart\",\n      \"enter-end\": \"enterEnd\",\n      leave: \"leave\",\n      \"leave-start\": \"leaveStart\",\n      \"leave-end\": \"leaveEnd\",\n    };\n    (c as unknown as Record<string, unknown>)[map[key]!] = meta.expression;\n    return;\n  }\n\n  // Helper style.\n  c.duration = durationMod(mods, \"duration\") ?? c.duration;\n  c.delay = durationMod(mods, \"delay\") ?? c.delay;\n  if (mods.includes(\"opacity\")) c.opacity = true;\n  if (mods.includes(\"scale\")) {\n    const i = mods.indexOf(\"scale\");\n    const next = mods[i + 1];\n    c.scale = next && /^\\d+$/.test(next) ? parseInt(next, 10) / 100 : 0.95;\n  }\n  if (!mods.includes(\"opacity\") && c.scale === undefined) {\n    c.opacity = true;\n    c.scale = 0.95;\n  }\n};\n\nfunction afterDuration(el: Element, fallback: number, done: () => void): void {\n  const computed = getComputedStyle(el).transitionDuration;\n  const ms = computed && computed !== \"0s\" ? parseFloat(computed) * 1000 : fallback;\n  if (ms <= 0) {\n    // Run on the next frame so start styles are painted first.\n    requestAnimationFrame(() => done());\n  } else {\n    setTimeout(done, ms);\n  }\n}\n\nexport function transitionIn(el: HTMLElement, done?: () => void): void {\n  const c = configs.get(el);\n  if (!c) {\n    done?.();\n    return;\n  }\n  if (c.classMode) {\n    el.classList.add(...tokens(c.enter), ...tokens(c.enterStart));\n    requestAnimationFrame(() => {\n      el.classList.remove(...tokens(c.enterStart));\n      el.classList.add(...tokens(c.enterEnd));\n      afterDuration(el, c.duration ?? 150, () => {\n        el.classList.remove(...tokens(c.enter), ...tokens(c.enterEnd));\n        done?.();\n      });\n    });\n    return;\n  }\n  // Helper style.\n  const dur = c.duration ?? 150;\n  el.style.transition = \"none\";\n  if (c.opacity) el.style.opacity = \"0\";\n  if (c.scale !== undefined) el.style.transform = `scale(${c.scale})`;\n  requestAnimationFrame(() => {\n    el.style.transition = `all ${dur}ms ease-out ${c.delay ?? 0}ms`;\n    if (c.opacity) el.style.opacity = \"1\";\n    if (c.scale !== undefined) el.style.transform = \"scale(1)\";\n    setTimeout(() => {\n      el.style.removeProperty(\"transition\");\n      el.style.removeProperty(\"opacity\");\n      el.style.removeProperty(\"transform\");\n      done?.();\n    }, dur + (c.delay ?? 0));\n  });\n}\n\nexport function transitionOut(el: HTMLElement, done: () => void): void {\n  const c = configs.get(el);\n  if (!c) {\n    done();\n    return;\n  }\n  if (c.classMode) {\n    el.classList.add(...tokens(c.leave), ...tokens(c.leaveStart));\n    requestAnimationFrame(() => {\n      el.classList.remove(...tokens(c.leaveStart));\n      el.classList.add(...tokens(c.leaveEnd));\n      afterDuration(el, c.duration ?? 150, () => {\n        el.classList.remove(...tokens(c.leave), ...tokens(c.leaveEnd));\n        done();\n      });\n    });\n    return;\n  }\n  const dur = c.duration ?? 150;\n  el.style.transition = `all ${dur}ms ease-in ${c.delay ?? 0}ms`;\n  requestAnimationFrame(() => {\n    if (c.opacity) el.style.opacity = \"0\";\n    if (c.scale !== undefined) el.style.transform = `scale(${c.scale})`;\n    setTimeout(() => {\n      el.style.removeProperty(\"transition\");\n      el.style.removeProperty(\"opacity\");\n      el.style.removeProperty(\"transform\");\n      done();\n    }, dur + (c.delay ?? 0));\n  });\n};\n","/**\n * s-show: toggle visibility via `display`, keeping the element in the DOM.\n *\n * Cheap to toggle (unlike s-if), integrates with s-transition for enter/leave\n * animations, and supports the .important modifier to beat stubborn CSS.\n */\n\nimport type { DirectiveHandler } from \"../types.js\";\nimport { hasTransition, transitionIn, transitionOut } from \"./transition.js\";\n\nexport const show: DirectiveHandler = (el, meta, utils) => {\n  const element = el as HTMLElement;\n  const important = meta.modifiers.includes(\"important\");\n  const originalDisplay = element.style.display === \"none\" ? \"\" : element.style.display;\n\n  const reveal = (): void => {\n    if (originalDisplay) element.style.display = originalDisplay;\n    else element.style.removeProperty(\"display\");\n  };\n  const conceal = (): void => {\n    if (important) element.style.setProperty(\"display\", \"none\", \"important\");\n    else element.style.setProperty(\"display\", \"none\");\n  };\n\n  let first = true;\n  utils.effect(() => {\n    const visible = !!utils.evaluate(meta.expression);\n    const animate = hasTransition(el) && !first;\n    first = false;\n\n    if (!animate) {\n      if (visible) reveal();\n      else conceal();\n      return;\n    }\n\n    if (visible) {\n      reveal();\n      transitionIn(element);\n    } else {\n      transitionOut(element, conceal);\n    }\n  });\n};\n","/**\n * s-if: add or remove an element from the DOM based on a condition.\n *\n * Unlike Alpine, s-if works on ANY element, not just <template>. A comment\n * anchor marks the insertion point; the blueprint is cloned in when the\n * condition is true and torn down when false. Also unlike Alpine, a <template>\n * s-if may hold more than one root element (e.g. an overlay plus a dialog):\n * every top-level child is rendered, in order.\n */\n\nimport type { DirectiveHandler } from \"../types.js\";\n\nexport const sIf: DirectiveHandler = (el, meta, utils) => {\n  const parent = el.parentNode;\n  if (!parent) return;\n\n  const anchor = document.createComment(\"s-if\");\n  parent.insertBefore(anchor, el);\n\n  let blueprints: Element[];\n  if (el.tagName === \"TEMPLATE\") {\n    blueprints = Array.from((el as HTMLTemplateElement).content.children).map(\n      (child) => child.cloneNode(true) as Element,\n    );\n  } else {\n    const clone = el.cloneNode(true) as Element;\n    clone.removeAttribute(meta.raw);\n    blueprints = [clone];\n  }\n  el.remove();\n  if (!blueprints.length) return;\n\n  const scopes = utils.scopes;\n  let current: Element[] = [];\n\n  const remove = (): void => {\n    for (const node of current) {\n      utils.destroyTree(node);\n      node.remove();\n    }\n    current = [];\n  };\n\n  utils.effect(() => {\n    const condition = !!utils.evaluate(meta.expression);\n    if (condition && !current.length) {\n      const nodes = blueprints.map((b) => b.cloneNode(true) as Element);\n      const frag = document.createDocumentFragment();\n      for (const node of nodes) frag.appendChild(node);\n      anchor.parentNode?.insertBefore(frag, anchor.nextSibling);\n      for (const node of nodes) utils.initTree(node, scopes);\n      current = nodes;\n    } else if (!condition && current.length) {\n      remove();\n    }\n  });\n\n  utils.cleanup(remove);\n};\n","/**\n * s-for: keyed list rendering on a <template>.\n *\n *   s-for=\"item in items\"\n *   s-for=\"(item, index) in items\"\n *   s-for=\"(value, key) in object\"\n *   s-for=\"n in 10\"           (range 1..10)\n *\n * With :key, blocks are reconciled by key: matching blocks are reused and\n * moved rather than destroyed and recreated, which keeps DOM state (focus,\n * scroll, inputs) stable across reorders. This is the fix for Alpine's weakest\n * area on large or reordering lists.\n */\n\nimport type { DirectiveHandler } from \"../types.js\";\nimport { reactive } from \"../reactivity/index.js\";\nimport { makeEnv } from \"../scope/index.js\";\nimport { compileExpression } from \"../evaluator/index.js\";\nimport type { Scope } from \"../dom.js\";\nimport { warn } from \"../errors.js\";\n\ninterface Block {\n  node: Element;\n  scope: Scope;\n}\n\nconst FOR_RE = /^\\s*(.+?)\\s+(?:in|of)\\s+([\\s\\S]+)$/;\n\nfunction parseIterator(raw: string): { item: string; index: string | null } {\n  const trimmed = raw.trim();\n  if (trimmed.startsWith(\"(\")) {\n    const inner = trimmed.slice(1, -1);\n    const parts = inner.split(\",\").map((s) => s.trim());\n    return { item: parts[0]!, index: parts[1] ?? null };\n  }\n  return { item: trimmed, index: null };\n}\n\ninterface Item {\n  value: unknown;\n  index: number;\n  objectKey?: string;\n}\n\nfunction normalize(source: unknown): Item[] {\n  if (typeof source === \"number\") {\n    return Array.from({ length: source }, (_, i) => ({ value: i + 1, index: i }));\n  }\n  if (Array.isArray(source)) {\n    return source.map((value, index) => ({ value, index }));\n  }\n  if (source && typeof source === \"object\") {\n    return Object.entries(source as Record<string, unknown>).map(([k, value], index) => ({\n      value,\n      index,\n      objectKey: k,\n    }));\n  }\n  return [];\n}\n\nexport const sFor: DirectiveHandler = (el, meta, utils) => {\n  if (el.tagName !== \"TEMPLATE\") {\n    warn(\"E401\", \"s-for must be used on a <template> element.\", {\n      el,\n      doc: \"s-for\",\n      hint: `Wrap the repeated markup: <template s-for=\"${meta.expression}\"><li>...</li></template>`,\n    });\n    return;\n  }\n  const parent = el.parentNode;\n  if (!parent) return;\n\n  const blueprint = (el as HTMLTemplateElement).content.firstElementChild;\n  if (!blueprint) {\n    warn(\"E402\", \"s-for <template> needs exactly one root element.\", { el, doc: \"s-for\" });\n    return;\n  }\n\n  const { item: itemName, index: indexName } = parseIterator(meta.expression.replace(FOR_RE, \"$1\"));\n  const sourceExpr = meta.expression.replace(FOR_RE, \"$2\");\n  const keyExpr = el.getAttribute(\":key\") ?? el.getAttribute(\"s-bind:key\");\n\n  const anchor = document.createComment(\"s-for\");\n  parent.insertBefore(anchor, el);\n  el.remove();\n\n  const parentScopes = utils.scopes;\n  let blocks = new Map<unknown, Block>();\n\n  // Compile the key expression once instead of re-parsing/re-interpreting it per\n  // item on every run.\n  const keyEval = keyExpr ? compileExpression(keyExpr) : null;\n\n  const keyFor = (it: Item): unknown => {\n    if (!keyEval) return it.objectKey ?? it.index;\n    // A plain (non-reactive) scope is enough to read the key; the reactive\n    // Proxy is only paid for when a block is actually created.\n    const data: Record<string, unknown> = { [itemName]: it.value };\n    if (indexName) data[indexName] = it.objectKey ?? it.index;\n    try {\n      return keyEval(makeEnv(el, data).env);\n    } catch {\n      return it.index;\n    }\n  };\n\n  const makeBlockScope = (it: Item): Scope => {\n    const data: Record<string, unknown> = { [itemName]: it.value };\n    if (indexName) data[indexName] = it.objectKey ?? it.index;\n    return reactive(data);\n  };\n\n  const clear = (): void => {\n    for (const block of blocks.values()) {\n      utils.destroyTree(block.node);\n      block.node.remove();\n    }\n    blocks.clear();\n  };\n\n  utils.effect(() => {\n    const items = normalize(utils.evaluate(sourceExpr));\n    const next = new Map<unknown, Block>();\n    const orderedKeys: unknown[] = [];\n\n    for (const it of items) {\n      // Reuse an existing block for this key when possible.\n      const key = keyFor(it);\n      orderedKeys.push(key);\n\n      const existing = blocks.get(key);\n      if (existing) {\n        // Update the reused block's item and index reactively.\n        (existing.scope as Record<string, unknown>)[itemName] = it.value;\n        if (indexName) (existing.scope as Record<string, unknown>)[indexName] = it.objectKey ?? it.index;\n        next.set(key, existing);\n        blocks.delete(key);\n      } else {\n        const scope = makeBlockScope(it);\n        const node = blueprint.cloneNode(true) as Element;\n        // Attach before initializing so directives that resolve the component\n        // root by walking the DOM (e.g. s-ref into $refs) find it. The ordering\n        // pass below still puts every node in its final position.\n        parent.insertBefore(node, anchor);\n        utils.initTree(node, [...parentScopes, scope]);\n        next.set(key, { node, scope });\n      }\n    }\n\n    // Anything left in the old map was removed.\n    for (const block of blocks.values()) {\n      utils.destroyTree(block.node);\n      block.node.remove();\n    }\n\n    // Minimal-move placement: walk keys in reverse, inserting a node only when\n    // it is not already immediately before the node that should follow it. An\n    // unchanged list does zero DOM moves; append/remove/swap touch only what\n    // actually changed, instead of re-inserting all N nodes every run.\n    let expected: Node = anchor;\n    for (let i = orderedKeys.length - 1; i >= 0; i--) {\n      const node = next.get(orderedKeys[i])!.node;\n      if (node.nextSibling !== expected) {\n        parent.insertBefore(node, expected);\n      }\n      expected = node;\n    }\n\n    blocks = next;\n  });\n\n  utils.cleanup(clear);\n};\n","/**\n * s-teleport: render a <template>'s content at another place in the DOM while\n * keeping it bound to the current component's scope. Useful for modals and\n * popovers that must escape overflow/stacking contexts.\n *\n *   <template s-teleport=\"body\"> ... </template>\n *   modifiers: .prepend / .append place relative to the target instead of inside it.\n */\n\nimport type { DirectiveHandler } from \"../types.js\";\nimport { warn } from \"../errors.js\";\n\nexport const teleport: DirectiveHandler = (el, meta, utils) => {\n  if (el.tagName !== \"TEMPLATE\") {\n    warn(\"E501\", \"s-teleport must be used on a <template> element.\", { el, doc: \"s-teleport\" });\n    return;\n  }\n  const selector = meta.expression || meta.value || \"\";\n  const target = selector ? document.querySelector(selector) : null;\n  if (!target) {\n    warn(\"E502\", `s-teleport target not found: \"${selector}\".`, {\n      el,\n      doc: \"s-teleport\",\n      hint: \"The target must be a CSS selector that already exists in the DOM, e.g. body.\",\n    });\n    return;\n  }\n\n  const content = (el as HTMLTemplateElement).content;\n  const clones = Array.from(content.children).map((n) => n.cloneNode(true) as Element);\n\n  const frag = document.createDocumentFragment();\n  for (const c of clones) frag.appendChild(c);\n\n  if (meta.modifiers.includes(\"prepend\")) target.parentNode?.insertBefore(frag, target);\n  else if (meta.modifiers.includes(\"append\")) target.parentNode?.insertBefore(frag, target.nextSibling);\n  else target.appendChild(frag);\n\n  // Initialize with the component's scope so teleported content stays bound.\n  for (const c of clones) utils.initTree(c, utils.scopes);\n\n  utils.cleanup(() => {\n    for (const c of clones) {\n      utils.destroyTree(c);\n      c.remove();\n    }\n  });\n};\n","/**\n * Scoped unique-id generation for accessible label/input pairing.\n *\n * `s-id=\"['name']\"` opens an id group on an element; every `$id('name')` within\n * that subtree returns the same id, so a label and its input agree even when\n * the component is rendered many times. Without a group, each `$id` call gets a\n * fresh page-unique id.\n */\n\nlet counter = 0;\nconst groups = new WeakMap<Element, Map<string, number>>();\n\n/** Open id groups on an element for the given names. */\nexport function allocGroup(el: Element, names: string[]): void {\n  let map = groups.get(el);\n  if (!map) groups.set(el, (map = new Map()));\n  for (const name of names) map.set(name, ++counter);\n}\n\n/** Resolve an id for `name` at `el`, climbing to the nearest enclosing group. */\nexport function resolveId(el: Element, name: string, key?: string | number): string {\n  let cur: Element | null = el;\n  while (cur) {\n    const map = groups.get(cur);\n    if (map && map.has(name)) {\n      const base = `${name}-${map.get(name)}`;\n      return key != null ? `${base}-${key}` : base;\n    }\n    cur = cur.parentElement;\n  }\n  const base = `${name}-${++counter}`;\n  return key != null ? `${base}-${key}` : base;\n}\n","/**\n * The smaller directives:\n *   s-init    run an action once when the element initializes\n *   s-effect  run an action reactively, re-running when its data changes\n *   s-ref     register the element into the component's $refs (dynamic names ok)\n *   s-id      open an id group for accessible $id() pairing\n *   s-cloak   removed after init; pair with `[s-cloak]{display:none}` CSS\n */\n\nimport type { DirectiveHandler } from \"../types.js\";\nimport { refsFor } from \"../dom.js\";\nimport { allocGroup } from \"../idstore.js\";\n\nexport const init: DirectiveHandler = (_el, meta, utils) => {\n  utils.evaluateAction(meta.expression);\n};\n\nexport const effect: DirectiveHandler = (_el, meta, utils) => {\n  utils.effect(() => {\n    utils.evaluateAction(meta.expression);\n  });\n};\n\nexport const ref: DirectiveHandler = (el, meta, utils) => {\n  // A resolvable string name means a dynamic ref (e.g. inside s-for); otherwise\n  // the literal attribute value is the name (Alpine-compatible).\n  const evaluated = utils.evaluate(meta.expression);\n  const name = typeof evaluated === \"string\" && evaluated ? evaluated : meta.expression.trim();\n  const refs = refsFor(el);\n  refs[name] = el;\n  utils.cleanup(() => {\n    if (refs[name] === el) delete refs[name];\n  });\n};\n\nexport const id: DirectiveHandler = (el, meta, utils) => {\n  const names = utils.evaluate(meta.expression);\n  if (Array.isArray(names)) allocGroup(el, names.map(String));\n};\n\nexport const cloak: DirectiveHandler = (el) => {\n  el.removeAttribute(\"s-cloak\");\n};\n","/**\n * s-intersect and s-resize: run an action when the element enters or leaves the\n * viewport, or when it changes size.\n *\n *   <div s-intersect=\"load()\">                 runs once visible\n *   <div s-intersect.once=\"seen = true\">        then stops observing\n *   <div s-intersect:leave=\"pause()\">           runs when it leaves\n *   <div s-intersect.full=\"play()\">             requires full visibility\n *   <div s-resize=\"w = $width\">                 $width / $height locals\n */\n\nimport type { DirectiveHandler } from \"../types.js\";\n\nexport const intersect: DirectiveHandler = (el, meta, utils) => {\n  if (typeof IntersectionObserver === \"undefined\") return;\n  const onLeave = meta.value === \"leave\";\n  const threshold = meta.modifiers.includes(\"full\") ? 0.99 : meta.modifiers.includes(\"half\") ? 0.5 : 0;\n  const once = meta.modifiers.includes(\"once\");\n\n  const io = new IntersectionObserver(\n    (entries) => {\n      for (const entry of entries) {\n        const active = onLeave ? !entry.isIntersecting : entry.isIntersecting;\n        if (!active) continue;\n        utils.evaluateAction(meta.expression);\n        if (once) io.disconnect();\n      }\n    },\n    { threshold },\n  );\n  io.observe(el);\n  utils.cleanup(() => io.disconnect());\n};\n\nexport const resize: DirectiveHandler = (el, meta, utils) => {\n  if (typeof ResizeObserver === \"undefined\") return;\n  const ro = new ResizeObserver((entries) => {\n    const box = entries[0]?.contentRect;\n    utils.evaluateAction(meta.expression, { $width: box?.width ?? 0, $height: box?.height ?? 0 });\n  });\n  ro.observe(el);\n  utils.cleanup(() => ro.disconnect());\n};\n","/** Shared helpers for focus management (s-trap and $focus). */\n\nconst SELECTOR = [\n  \"a[href]\",\n  \"button:not([disabled])\",\n  \"input:not([disabled]):not([type=hidden])\",\n  \"select:not([disabled])\",\n  \"textarea:not([disabled])\",\n  \"[tabindex]:not([tabindex='-1'])\",\n  \"[contenteditable]\",\n].join(\",\");\n\nfunction visible(el: Element): boolean {\n  const r = el.getBoundingClientRect();\n  // In a real browser a hidden element has zero boxes; treat zero-size (as in\n  // headless DOM) as visible so tests and SSR do not silently drop everything.\n  if (r.width === 0 && r.height === 0) {\n    return (el as HTMLElement).offsetParent !== null || typeof (el as HTMLElement).offsetParent === \"undefined\";\n  }\n  return true;\n}\n\n/** The focusable descendants of `root`, in DOM order. */\nexport function focusable(root: Element): HTMLElement[] {\n  return Array.from(root.querySelectorAll<HTMLElement>(SELECTOR)).filter(visible);\n}\n","/**\n * s-trap: keep keyboard focus inside an element while an expression is truthy.\n *\n *   <div class=\"s-dialog\" s-trap=\"open\"> ... </div>\n *\n * When the expression flips true, focus moves to the first focusable child and\n * Tab cycles within the element. When it flips false, focus returns to whatever\n * was focused before. This is what makes modal dialogs and menus accessible.\n */\n\nimport type { DirectiveHandler } from \"../types.js\";\nimport { focusable } from \"./focusable.js\";\n\nexport const trap: DirectiveHandler = (el, meta, utils) => {\n  let active = false;\n  let released: HTMLElement | null = null;\n\n  const onKeydown = (e: KeyboardEvent): void => {\n    if (e.key !== \"Tab\") return;\n    const items = focusable(el);\n    if (!items.length) {\n      e.preventDefault();\n      return;\n    }\n    const first = items[0]!;\n    const last = items[items.length - 1]!;\n    const current = document.activeElement;\n    if (e.shiftKey && (current === first || !el.contains(current))) {\n      e.preventDefault();\n      last.focus();\n    } else if (!e.shiftKey && current === last) {\n      e.preventDefault();\n      first.focus();\n    }\n  };\n\n  const enable = (): void => {\n    if (active) return;\n    active = true;\n    released = document.activeElement as HTMLElement | null;\n    document.addEventListener(\"keydown\", onKeydown, true);\n    const focusFirst = (): void => {\n      const items = focusable(el);\n      (items[0] ?? (el as HTMLElement)).focus?.();\n    };\n    if (typeof requestAnimationFrame === \"function\") requestAnimationFrame(focusFirst);\n    else focusFirst();\n  };\n\n  const disable = (): void => {\n    if (!active) return;\n    active = false;\n    document.removeEventListener(\"keydown\", onKeydown, true);\n    released?.focus?.();\n  };\n\n  utils.effect(() => {\n    if (utils.evaluate(meta.expression)) enable();\n    else disable();\n  });\n  utils.cleanup(disable);\n};\n","/**\n * s-anchor: position this element next to a reference element, flipping and\n * shifting to stay in the viewport. For menus, popovers, and tooltips.\n *\n *   <div class=\"s-menu\" s-anchor=\"$refs.trigger\">        below, left-aligned\n *   <div s-anchor.top.end=\"$refs.trigger\">               above, right-aligned\n *   <div s-anchor.offset.12=\"$refs.trigger\">             12px gap\n *\n * The expression must resolve to the reference Element (usually via $refs).\n */\n\nimport type { DirectiveHandler } from \"../types.js\";\n\nexport const anchor: DirectiveHandler = (el, meta, utils) => {\n  const mods = meta.modifiers;\n  const placement = mods.includes(\"top\") ? \"top\" : \"bottom\";\n  const align = mods.includes(\"end\") ? \"end\" : mods.includes(\"center\") ? \"center\" : \"start\";\n  const oi = mods.indexOf(\"offset\");\n  const gap = oi >= 0 && /^\\d+$/.test(mods[oi + 1] ?? \"\") ? Number(mods[oi + 1]) : 8;\n\n  const node = el as HTMLElement;\n  node.style.position = \"fixed\";\n  if (!node.style.zIndex) node.style.zIndex = \"50\";\n  node.style.margin = \"0\";\n\n  let ref: Element | null = null;\n\n  const place = (): void => {\n    if (!ref || typeof window === \"undefined\") return;\n    const r = ref.getBoundingClientRect();\n    const ew = node.offsetWidth;\n    const eh = node.offsetHeight;\n    const vh = window.innerHeight;\n    const vw = window.innerWidth;\n\n    let top = placement === \"top\" ? r.top - eh - gap : r.bottom + gap;\n    if (placement === \"bottom\" && top + eh > vh && r.top - eh - gap >= 0) top = r.top - eh - gap;\n    if (placement === \"top\" && top < 0 && r.bottom + gap + eh <= vh) top = r.bottom + gap;\n\n    let left = align === \"end\" ? r.right - ew : align === \"center\" ? r.left + r.width / 2 - ew / 2 : r.left;\n    left = Math.max(8, Math.min(left, vw - ew - 8));\n\n    node.style.top = `${Math.round(top)}px`;\n    node.style.left = `${Math.round(left)}px`;\n  };\n\n  utils.effect(() => {\n    const value = utils.evaluate(meta.expression);\n    // Duck-type rather than `instanceof Element`: the reference just needs a\n    // bounding box, and Element is not a global in every host (e.g. SSR).\n    ref = value && typeof (value as Element).getBoundingClientRect === \"function\" ? (value as Element) : null;\n    if (ref) place();\n  });\n\n  if (typeof window !== \"undefined\") {\n    const on = (): void => place();\n    window.addEventListener(\"scroll\", on, true);\n    window.addEventListener(\"resize\", on);\n    utils.cleanup(() => {\n      window.removeEventListener(\"scroll\", on, true);\n      window.removeEventListener(\"resize\", on);\n    });\n  }\n};\n","/**\n * s-collapse: animate an element's height open and closed as an expression\n * toggles. A drop-in, smoother alternative to s-show for accordions and menus.\n *\n *   <div s-collapse=\"open\"> ... </div>\n */\n\nimport type { DirectiveHandler } from \"../types.js\";\n\nconst DURATION = 250;\n\nexport const collapse: DirectiveHandler = (el, meta, utils) => {\n  const node = el as HTMLElement;\n  node.style.overflow = \"hidden\";\n  let first = true;\n\n  utils.effect(() => {\n    const open = !!utils.evaluate(meta.expression);\n\n    if (first) {\n      first = false;\n      node.style.height = open ? \"auto\" : \"0px\";\n      if (!open) node.setAttribute(\"hidden\", \"until-found\");\n      return;\n    }\n\n    node.removeAttribute(\"hidden\");\n    const start = node.getBoundingClientRect().height;\n    node.style.height = `${start}px`;\n    const end = open ? node.scrollHeight : 0;\n\n    const animate = (): void => {\n      node.style.transition = `height ${DURATION}ms ease`;\n      node.style.height = `${end}px`;\n    };\n    if (typeof requestAnimationFrame === \"function\") requestAnimationFrame(animate);\n    else animate();\n\n    const done = (): void => {\n      node.style.transition = \"\";\n      if (open) node.style.height = \"auto\";\n      node.removeEventListener(\"transitionend\", done);\n    };\n    node.addEventListener(\"transitionend\", done);\n  });\n};\n","/**\n * s-mask: format an input as the user types against a pattern.\n *\n *   <input s-mask=\"'(999) 999-9999'\">\n *\n * Pattern tokens: 9 = digit, a = letter, * = letter or digit. Any other\n * character is a literal that is inserted automatically.\n */\n\nimport type { DirectiveHandler } from \"../types.js\";\n\nfunction matches(token: string, ch: string): boolean {\n  if (token === \"9\") return /\\d/.test(ch);\n  if (token === \"a\") return /[a-zA-Z]/.test(ch);\n  if (token === \"*\") return /[a-zA-Z0-9]/.test(ch);\n  return false;\n}\n\nexport function applyMask(value: string, pattern: string): string {\n  let out = \"\";\n  let ci = 0;\n  for (const token of pattern) {\n    if (ci >= value.length) break;\n    if (token === \"9\" || token === \"a\" || token === \"*\") {\n      while (ci < value.length) {\n        const ch = value[ci++]!;\n        if (matches(token, ch)) {\n          out += ch;\n          break;\n        }\n      }\n    } else {\n      out += token;\n      if (value[ci] === token) ci++;\n    }\n  }\n  return out;\n}\n\nexport const mask: DirectiveHandler = (el, meta, utils) => {\n  const input = el as HTMLInputElement;\n  const pattern = String(utils.evaluate(meta.expression) ?? meta.expression);\n  const format = (): void => {\n    input.value = applyMask(input.value, pattern);\n  };\n  input.addEventListener(\"input\", format);\n  if (input.value) format();\n  utils.cleanup(() => input.removeEventListener(\"input\", format));\n};\n","/**\n * Registers all built-in directives with their priorities.\n * Lower priority numbers run earlier on a given element.\n */\n\nimport { registerDirective } from \"../registry/registry.js\";\nimport { text, html } from \"./text.js\";\nimport { bind } from \"./bind.js\";\nimport { on } from \"./on.js\";\nimport { model } from \"./model.js\";\nimport { show } from \"./show.js\";\nimport { transition } from \"./transition.js\";\nimport { sIf } from \"./conditionals.js\";\nimport { sFor } from \"./for.js\";\nimport { teleport } from \"./teleport.js\";\nimport { init, effect, ref, id, cloak } from \"./misc.js\";\nimport { intersect, resize } from \"./observe.js\";\nimport { trap } from \"./focus.js\";\nimport { anchor } from \"./anchor.js\";\nimport { collapse } from \"./collapse.js\";\nimport { mask } from \"./mask.js\";\n\nexport function registerBuiltinDirectives(): void {\n  registerDirective(\"ref\", ref, 10);\n  registerDirective(\"id\", id, 15);\n  registerDirective(\"if\", sIf, 20);\n  registerDirective(\"for\", sFor, 20);\n  registerDirective(\"teleport\", teleport, 20);\n  registerDirective(\"bind\", bind, 50);\n  registerDirective(\"mask\", mask, 55);\n  registerDirective(\"model\", model, 60);\n  registerDirective(\"on\", on, 70);\n  registerDirective(\"text\", text, 80);\n  registerDirective(\"html\", html, 80);\n  registerDirective(\"transition\", transition, 85);\n  registerDirective(\"anchor\", anchor, 88);\n  registerDirective(\"collapse\", collapse, 89);\n  registerDirective(\"show\", show, 90);\n  registerDirective(\"trap\", trap, 95);\n  registerDirective(\"effect\", effect, 100);\n  registerDirective(\"intersect\", intersect, 100);\n  registerDirective(\"resize\", resize, 100);\n  registerDirective(\"init\", init, 200);\n  registerDirective(\"cloak\", cloak, 1000);\n}\n","/**\n * $focus: a small focus helper for moving keyboard focus around.\n *\n *   $focus.focus($refs.field)   focus a specific element\n *   $focus.first()              focus the first focusable inside $el\n *   $focus.next()               focus the next one, wrapping\n *   $focus.within(el).first()   change the root\n */\n\nimport { focusable } from \"../directives/focusable.js\";\n\nexport interface FocusHelper {\n  focus(target: Element | null): void;\n  first(): void;\n  last(): void;\n  next(): void;\n  previous(): void;\n  within(root: Element): FocusHelper;\n}\n\nexport function makeFocus(root: Element): FocusHelper {\n  const items = (): HTMLElement[] => focusable(root);\n  const at = (delta: number): void => {\n    const f = items();\n    if (!f.length) return;\n    const i = f.indexOf(document.activeElement as HTMLElement);\n    const next = i === -1 ? 0 : (i + delta + f.length) % f.length;\n    f[next]?.focus();\n  };\n  return {\n    focus(target) {\n      (target as HTMLElement | null)?.focus?.();\n    },\n    first() {\n      items()[0]?.focus();\n    },\n    last() {\n      const f = items();\n      f[f.length - 1]?.focus();\n    },\n    next() {\n      at(1);\n    },\n    previous() {\n      at(-1);\n    },\n    within(el) {\n      return makeFocus(el);\n    },\n  };\n}\n","/**\n * The built-in magics: `$`-prefixed helpers available in every expression.\n *\n *   $el $refs $root $store $data      values\n *   $watch $dispatch $nextTick $id     functions\n *\n * $watch improves on Alpine: it returns an unwatch function and only fires on\n * an actual change, so mutating the watched value in its own callback cannot\n * spin into an infinite loop.\n */\n\nimport { registerMagic, getStoreRoot } from \"../registry/registry.js\";\nimport { closestRoot, refsFor } from \"../dom.js\";\nimport { resolveId } from \"../idstore.js\";\nimport { domEffect, nextTick } from \"../reactivity/index.js\";\nimport { createPersist } from \"./persist.js\";\nimport { makeFocus } from \"./focus.js\";\n\nexport function registerBuiltinMagics(): void {\n  registerMagic(\"el\", (ctx) => ctx.el);\n\n  registerMagic(\"refs\", (ctx) => refsFor(ctx.el));\n\n  registerMagic(\"root\", (ctx) => closestRoot(ctx.el));\n\n  registerMagic(\"data\", (ctx) => (ctx.scopes.length ? ctx.scopes[ctx.scopes.length - 1] : {}));\n\n  // The reactive store root: reads track, writes trigger, so\n  // `$store.darkMode = !$store.darkMode` is reactive out of the box.\n  registerMagic(\"store\", () => getStoreRoot());\n\n  registerMagic(\"watch\", (ctx) => (path: string, callback: (n: unknown, o: unknown) => void) => {\n    let oldValue: unknown;\n    let first = true;\n    const dispose = domEffect(() => {\n      const newValue = ctx.evaluate(path);\n      if (first) {\n        oldValue = newValue;\n        first = false;\n        return;\n      }\n      if (Object.is(newValue, oldValue)) return;\n      const previous = oldValue;\n      oldValue = newValue;\n      callback(newValue, previous);\n    });\n    ctx.cleanup(dispose);\n    return dispose;\n  });\n\n  registerMagic(\n    \"dispatch\",\n    (ctx) =>\n      (name: string, detail?: unknown, options: CustomEventInit = {}) => {\n        const event = new CustomEvent(name, {\n          detail,\n          bubbles: true,\n          composed: true,\n          cancelable: true,\n          ...options,\n        });\n        return ctx.el.dispatchEvent(event);\n      },\n  );\n\n  registerMagic(\"nextTick\", () => (callback?: () => void) => nextTick(callback));\n\n  registerMagic(\"id\", (ctx) => (name: string, key?: string | number) => resolveId(ctx.el, name, key));\n\n  // localStorage-backed reactive state; resolved by s-data after the scope is reactive.\n  registerMagic(\"persist\", () => (initial: unknown) => createPersist(initial));\n\n  // Keyboard focus helper, rooted at the element it is used on.\n  registerMagic(\"focus\", (ctx) => makeFocus(ctx.el));\n}\n","/**\n * The Summit global.\n *\n * This is the object users interact with: register data, directives, magics,\n * stores, and plugins, then start. Registration is timing-safe. Built-ins are\n * registered at import, custom registrations override them, and start() can be\n * called whenever the DOM is ready. There is no load-order event to miss.\n */\n\nimport {\n  registerData,\n  registerBind,\n  registerDirective,\n  registerMagic,\n  setStore,\n  getStore,\n  getBind,\n} from \"./registry/registry.js\";\nimport { createScope } from \"./scope/index.js\";\nimport { initTree, destroyTree, startObserver, setSummitGlobal } from \"./lifecycle/index.js\";\nimport { registerBuiltinDirectives } from \"./directives/index.js\";\nimport { registerBuiltinMagics } from \"./magics/index.js\";\nimport { signal, computed, effect, reactive, batch, nextTick } from \"./reactivity/index.js\";\nimport { addGlobals } from \"./evaluator/index.js\";\nimport { fail } from \"./errors.js\";\nimport type { DataProvider, BindProvider, DirectiveHandler, MagicFactory } from \"./types.js\";\n\nexport const version = \"0.1.0\";\n\nlet started = false;\n\nfunction dispatch(name: string): void {\n  if (typeof document !== \"undefined\") document.dispatchEvent(new CustomEvent(name));\n}\n\nfunction start(root?: Element): void {\n  if (started) return;\n  started = true;\n  const el = root ?? (typeof document !== \"undefined\" ? document.body : undefined);\n  if (!el) return;\n  dispatch(\"summit:init\");\n  initTree(el);\n  startObserver(el.ownerDocument?.body ?? el);\n  dispatch(\"summit:initialized\");\n}\n\nexport interface SummitGlobal {\n  version: string;\n  started: () => boolean;\n  start(root?: Element): void;\n  data(name: string, provider: DataProvider): SummitGlobal;\n  directive(name: string, handler: DirectiveHandler, priority?: number): SummitGlobal;\n  magic(name: string, factory: MagicFactory): SummitGlobal;\n  bind(name: string, provider: BindProvider): SummitGlobal;\n  store(name: string, value?: unknown): unknown;\n  plugin(fn: (summit: SummitGlobal) => void): SummitGlobal;\n  addGlobals(names: string[]): SummitGlobal;\n  getBind: typeof getBind;\n  // Reactivity primitives, exposed for advanced use.\n  signal: typeof signal;\n  computed: typeof computed;\n  effect: typeof effect;\n  reactive: typeof reactive;\n  batch: typeof batch;\n  nextTick: typeof nextTick;\n  initTree: typeof initTree;\n  destroyTree: typeof destroyTree;\n}\n\nexport const Summit: SummitGlobal = {\n  version,\n  started: () => started,\n  start,\n\n  data(name, provider) {\n    registerData(name, provider);\n    return this;\n  },\n\n  directive(name, handler, priority) {\n    registerDirective(name, handler, priority);\n    return this;\n  },\n\n  magic(name, factory) {\n    registerMagic(name, factory);\n    return this;\n  },\n\n  bind(name, provider) {\n    registerBind(name, provider);\n    return this;\n  },\n\n  store(name, value) {\n    if (value === undefined) return getStore(name);\n    if (value !== null && typeof value === \"object\") {\n      const scoped = createScope(value as Record<PropertyKey, unknown>);\n      setStore(name, scoped);\n      const initFn = (scoped as Record<string, unknown>)[\"init\"];\n      if (typeof initFn === \"function\") {\n        try {\n          (initFn as () => void)();\n        } catch (err) {\n          fail(\"E103\", `store \"${name}\" init() threw.`, { doc: \"globals-store\", cause: err });\n        }\n      }\n      return scoped;\n    }\n    setStore(name, value);\n    return getStore(name);\n  },\n\n  plugin(fn) {\n    fn(this);\n    return this;\n  },\n\n  addGlobals(names) {\n    addGlobals(names);\n    return this;\n  },\n\n  getBind,\n  signal,\n  computed,\n  effect,\n  reactive,\n  batch,\n  nextTick,\n  initTree,\n  destroyTree,\n};\n\n// Register built-ins at import so they are always available. User registrations\n// made afterward override them.\nregisterBuiltinDirectives();\nregisterBuiltinMagics();\n\n// Let directives reach the global (utils.Summit).\nsetSummitGlobal(Summit as unknown as import(\"./types.js\").SummitGlobalLike);\n\nexport default Summit;\n","/**\n * Summit: a rugged, signal-powered framework for composing behavior directly\n * in your HTML. This is the package entry for bundler/npm users. Import the\n * default `Summit` global, register anything you like, then call `Summit.start()`.\n *\n * For a zero-build drop-in, use the CDN build (dist/summit.min.js), which\n * attaches `window.Summit` and starts automatically.\n */\n\nimport Summit from \"./summit.js\";\n\nexport default Summit;\nexport { Summit, version, type SummitGlobal } from \"./summit.js\";\n\n// Reactivity primitives for advanced/standalone use.\nexport {\n  signal,\n  computed,\n  effect,\n  reactive,\n  batch,\n  untrack,\n  stop,\n  nextTick,\n  toRaw,\n  isReactive,\n  isSignal,\n  type Signal,\n  type Computed,\n} from \"./reactivity/index.js\";\n\n// The evaluator, for tooling and tests.\nexport { evaluateExpression, evaluateAction, addGlobals } from \"./evaluator/index.js\";\n\n// Types for directive/magic authors.\nexport type {\n  DirectiveHandler,\n  DirectiveMeta,\n  DirectiveUtils,\n  MagicFactory,\n  MagicContext,\n  DataProvider,\n  BindProvider,\n} from \"./types.js\";\n"]}