summitjs 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"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/cdn.ts"],"names":["activeEffect","effectStack","batchDepth","pendingEffects","effect","fn","options","runner","createReactiveEffect","cleanupDeps","deps","dep","stop","track","trigger","effects","eff","runEffect","batch","flushBatch","signal","initial","value","read","next","nextValue","computed","getter","dirty","RAW","ITERATE_KEY","targetMap","proxyMap","getDep","target","key","depsMap","trackProp","triggerProp","isObject","x","isPlainObject","o","proto","shouldWrap","handlers","receiver","result","reactive","raw","toRaw","isArray","hadKey","oldValue","had","existing","proxy","observed","queue","flushing","flushPromise","resolved","queueJob","job","flushJobs","jobs","nextTick","callback","p","domEffect","directives","magics","dataProviders","storeRoot","binds","DEFAULT_PRIORITY","registerDirective","name","handler","priority","getDirective","directiveNames","registerMagic","factory","getMagic","magicNames","registerData","provider","getData","setStore","getStore","getStoreRoot","registerBind","getBind","createScope","descriptors","desc","setter","cached","v","PUNCTUATORS","LexError","isIdentStart","ch","isIdentPart","isDigit","tokenize","input","tokens","i","n","start","quote","readEscape","depth","c","matched","at","ParseError","KEYWORDS","BINARY_PREC","ASSIGN_OPS","Parser","source","offset","t","body","expr","decl","expression","test","consequent","alternate","argument","kind","declarations","id","init","pattern","right","declInit","vi","update","left","minPrec","op","prec","rightAssoc","node","property","args","first","expressions","elements","properties","keyName","params","tok","after","rest","quasis","current","src","stmt","parse","cache","mode","parser","program","ReturnSignal","BreakSignal","ContinueSignal","LexicalScope","parent","constant","s","owner","entry","GLOBAL_ALLOW","addGlobals","names","memberGet","obj","Interpreter","root","thisVal","scope","iterable","item","loopScope","forScope","out","arr","el","arg","old","e","prop","callThis","m","nodes","a","l","rhs","definingScope","lexicalThis","dynamicThis","self","fnScope","usedThis","used","k","evaluateExpression","evaluateAction","DOCS","distance","b","prev","_","j","curr","cost","suggest","candidates","best","bestD","d","limit","describeEl","tag","cls","build","code","message","ctx","lines","warn","fail","seen","warnOnce","metaMap","meta","markerCount","nextMarker","addCleanup","runCleanups","err","resolveScopes","own","closestRoot","cur","refsFor","DOLLAR","makeEnv","locals","scopes","env","dispose","extraLocals","attachMagics","rawTarget","parseAttribute","rawName","parts","head","modifiers","colon","dirName","MARK","createPersist","isPersistMarker","STRUCTURAL","SPECIAL","summitGlobal","setSummitGlobal","g","collectDirectives","attr","parsed","hit","priorityOf","makeUtils","handle","initTree","destroyTree","runDirective","dmeta","DATA_PROVIDER_RE","resolvePersist","hasLS","marker","storeKey","stored","initData","parentScopes","parentEnv","match","newScopes","initFn","destroyFn","scopesArg","dirs","dataDir","structural","child","observer","startObserver","handleMutations","records","removed","added","rec","toDisplay","text","utils","html","BOOLEAN_ATTRS","PROP_ATTRS","camelCase","kebabCase","classTokens","on","mergeClass","base","set","mergeStyle","val","applyAttribute","bind","applyBindObject","merged","event","SYSTEM","BEHAVIOR","KEY_ALIASES","isDuration","parseDuration","durationFor","mods","matchKey","mod","alias","passesSystem","debounce","ms","throttle","last","scheduled","now","remaining","keyMods","invoke","debounceMs","throttleMs","coerce","model","select","type","getValue","setValue","readFromElement","writeToElement","opt","str","eventName","onEvent","configs","config","hasTransition","list","durationMod","transition","map","afterDuration","fallback","done","transitionIn","dur","transitionOut","show","element","important","originalDisplay","reveal","conceal","visible","animate","sIf","anchor","blueprints","clone","remove","condition","frag","FOR_RE","parseIterator","trimmed","normalize","index","sFor","blueprint","itemName","indexName","sourceExpr","keyExpr","blocks","keyFor","it","block","makeBlockScope","data","clear","items","orderedKeys","teleport","selector","content","clones","counter","groups","allocGroup","resolveId","_el","ref","evaluated","refs","cloak","intersect","onLeave","threshold","once","io","entries","resize","ro","box","SELECTOR","r","focusable","trap","active","released","onKeydown","enable","focusFirst","disable","placement","align","oi","gap","place","ew","eh","vh","vw","top","collapse","open","end","matches","token","applyMask","ci","mask","format","registerBuiltinDirectives","makeFocus","delta","f","registerBuiltinMagics","path","newValue","previous","detail","version","started","dispatch","Summit","scoped","summit_default","boot","cdn_default"],"mappings":"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","file":"summit.min.js","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;\nconst 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 // 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 const effects = [...pendingEffects];\n pendingEffects.clear();\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\nconst 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 const jobs = [...queue];\n queue.clear();\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\" | \"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 start: number;\n end: number;\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 // 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 parseCallMember(): Expression {\n let node = 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 === \"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 // 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 \"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 \"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 \"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/summit\";\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 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 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 { evaluateExpression } 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 const keyFor = (it: Item, block: Scope): unknown => {\n if (!keyExpr) return it.objectKey ?? it.index;\n const env = makeEnv(el, block).env;\n try {\n return evaluateExpression(keyExpr, 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 let scope = makeBlockScope(it);\n const key = keyFor(it, scope);\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 node = blueprint.cloneNode(true) as Element;\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 // Place nodes in order, just before the anchor.\n for (const key of orderedKeys) {\n const block = next.get(key)!;\n parent.insertBefore(block.node, anchor);\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 * CDN entry: the drop-in-a-script build.\n *\n * Attaches `window.Summit` and starts automatically once the DOM is ready, so a\n * single <script> tag is all you need. No build step, no manual start.\n */\n\nimport Summit from \"./summit.js\";\n\ndeclare global {\n interface Window {\n Summit: typeof Summit;\n }\n}\n\nwindow.Summit = Summit;\n\nfunction boot(): void {\n Summit.start();\n}\n\nif (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", boot, { once: true });\n} else {\n boot();\n}\n\nexport default Summit;\n"]}
1
+ {"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/cdn.ts"],"names":["activeEffect","effectStack","batchDepth","pendingEffects","effect","fn","options","runner","createReactiveEffect","cleanupDeps","deps","dep","stop","track","trigger","effects","eff","runEffect","batch","flushBatch","signal","initial","value","read","next","nextValue","computed","getter","dirty","RAW","ITERATE_KEY","targetMap","proxyMap","getDep","target","key","depsMap","trackProp","triggerProp","isObject","x","isPlainObject","o","proto","shouldWrap","handlers","receiver","result","reactive","raw","toRaw","isArray","hadKey","oldValue","had","existing","proxy","observed","queue","flushing","flushPromise","resolved","queueJob","job","flushJobs","jobs","nextTick","callback","p","domEffect","directives","magics","dataProviders","storeRoot","binds","DEFAULT_PRIORITY","registerDirective","name","handler","priority","getDirective","directiveNames","registerMagic","factory","getMagic","magicNames","registerData","provider","getData","setStore","getStore","getStoreRoot","registerBind","getBind","createScope","descriptors","desc","setter","cached","v","REGEX_PRECEDING_KEYWORDS","regexAllowed","prev","PUNCTUATORS","LexError","isIdentStart","ch","isIdentPart","isDigit","tokenize","input","tokens","i","n","start","quote","readEscape","depth","c","body","inClass","flags","matched","at","ParseError","KEYWORDS","BINARY_PREC","ASSIGN_OPS","Parser","source","offset","t","expr","decl","expression","test","consequent","alternate","argument","kind","declarations","id","init","pattern","right","declInit","vi","update","left","minPrec","op","prec","rightAssoc","node","callee","property","args","first","expressions","elements","properties","keyName","params","tok","after","rest","quasis","current","src","stmt","parse","cache","mode","parser","program","ReturnSignal","BreakSignal","ContinueSignal","LexicalScope","parent","constant","s","owner","entry","GLOBAL_ALLOW","addGlobals","names","memberGet","obj","Interpreter","root","thisVal","scope","iterable","item","loopScope","forScope","out","arr","el","arg","old","ctor","e","prop","callThis","m","nodes","a","l","rhs","definingScope","lexicalThis","dynamicThis","self","fnScope","usedThis","used","k","evaluateExpression","evaluateAction","compileExpression","DOCS","distance","b","_","j","curr","cost","suggest","candidates","best","bestD","d","limit","describeEl","tag","cls","build","code","message","ctx","lines","warn","fail","seen","warnOnce","metaMap","meta","markerCount","nextMarker","addCleanup","runCleanups","err","resolveScopes","own","closestRoot","cur","refsFor","DOLLAR","makeEnv","locals","scopes","env","dispose","extraLocals","attachMagics","rawTarget","parseAttribute","rawName","parts","head","modifiers","colon","dirName","MARK","createPersist","isPersistMarker","STRUCTURAL","SPECIAL","summitGlobal","setSummitGlobal","g","collectDirectives","attr","parsed","hit","priorityOf","makeUtils","handle","initTree","destroyTree","runDirective","dmeta","DATA_PROVIDER_RE","resolvePersist","hasLS","marker","storeKey","stored","initData","parentScopes","parentEnv","match","newScopes","initFn","destroyFn","scopesArg","dirs","dataDir","structural","child","observer","startObserver","handleMutations","records","removed","added","rec","toDisplay","text","utils","html","BOOLEAN_ATTRS","PROP_ATTRS","camelCase","kebabCase","classTokens","on","mergeClass","base","set","mergeStyle","val","applyAttribute","bind","applyBindObject","merged","event","SYSTEM","BEHAVIOR","KEY_ALIASES","isDuration","parseDuration","durationFor","mods","matchKey","mod","alias","passesSystem","debounce","ms","throttle","last","scheduled","now","remaining","keyMods","invoke","debounceMs","throttleMs","coerce","model","select","type","getValue","setValue","readFromElement","writeToElement","opt","str","eventName","onEvent","configs","config","hasTransition","list","durationMod","transition","map","afterDuration","fallback","done","transitionIn","dur","transitionOut","show","element","important","originalDisplay","reveal","conceal","visible","animate","sIf","anchor","blueprints","clone","remove","condition","frag","FOR_RE","parseIterator","trimmed","normalize","index","sFor","blueprint","itemName","indexName","sourceExpr","keyExpr","blocks","keyEval","keyFor","it","data","makeBlockScope","clear","block","items","orderedKeys","expected","teleport","selector","content","clones","counter","groups","allocGroup","resolveId","_el","ref","evaluated","refs","cloak","intersect","onLeave","threshold","once","io","entries","resize","ro","box","SELECTOR","r","focusable","trap","active","released","onKeydown","enable","focusFirst","disable","placement","align","oi","gap","place","ew","eh","vh","vw","top","collapse","open","end","matches","token","applyMask","ci","mask","format","registerBuiltinDirectives","makeFocus","delta","f","registerBuiltinMagics","path","newValue","previous","detail","version","started","dispatch","Summit","scoped","summit_default","boot","cdn_default"],"mappings":"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","file":"summit.min.js","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;\nconst 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 // 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 const effects = [...pendingEffects];\n pendingEffects.clear();\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\nconst 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 const jobs = [...queue];\n queue.clear();\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/summit\";\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 * CDN entry: the drop-in-a-script build.\n *\n * Attaches `window.Summit` and starts automatically once the DOM is ready, so a\n * single <script> tag is all you need. No build step, no manual start.\n */\n\nimport Summit from \"./summit.js\";\n\ndeclare global {\n interface Window {\n Summit: typeof Summit;\n }\n}\n\nwindow.Summit = Summit;\n\nfunction boot(): void {\n Summit.start();\n}\n\nif (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", boot, { once: true });\n} else {\n boot();\n}\n\nexport default Summit;\n"]}