sprae 13.3.6 → 13.3.7

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,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../core.js", "../store.js", "../signal.js", "../directive/if.js", "../directive/else.js", "../directive/text.js", "../directive/class.js", "../directive/style.js", "../directive/fx.js", "../directive/value.js", "../directive/ref.js", "../directive/scope.js", "../directive/each.js", "../directive/_.js", "../directive/spread.js", "../directive/event.js", "../directive/sequence.js", "../directive/html.js", "../directive/portal.js", "../directive/hidden.js", "../directive/mount.js", "../directive/change.js", "../directive/intersect.js", "../directive/resize.js", "../sprae.js", "../node_modules/@preact/signals-core/src/index.ts", "<stdin>"],
4
- "sourcesContent": ["import store, { _change, _signals } from \"./store.js\";\n\n\n\n/** Symbol for disposal (using standard Symbol.dispose if available) */\nexport const _dispose = (Symbol.dispose ||= Symbol(\"dispose\"))\n\n/** Symbol for accessing element's reactive state */\nexport const _state = Symbol(\"state\")\n\n/** Symbol for enabling element effects */\nexport const _on = Symbol('on')\n\n/** Symbol for disabling element effects */\nexport const _off = Symbol('off')\n\n/** Symbol for adding child to element */\nexport const _add = Symbol('init')\n\n/** Directive prefix (default: ':') */\nexport let prefix = ':';\n\n/** Check if element is a custom element (has hyphen in tag name) */\nexport const isCE = (el) => el.localName?.includes('-')\n\n/**\n * A reactive signal containing a value.\n * @template T\n * @typedef {Object} Signal\n * @property {T} value - Current value (reading subscribes, writing notifies)\n * @property {() => T} peek - Read without subscribing\n * @property {() => T} valueOf - Get value for coercion\n * @property {() => T} toJSON - Get value for JSON serialization\n * @property {() => string} toString - Get value as string\n */\n\n/**\n * Internal effect function type.\n * @typedef {Object} EffectFn\n * @property {Set<Set<EffectFn>>} deps - Dependency sets\n * @property {() => void} fn - Original function\n */\n\n/**\n * Creates a reactive signal.\n * @template T\n * @type {<T>(value: T) => Signal<T>}\n */\nexport let signal;\n\n/**\n * Creates a reactive effect that re-runs when dependencies change.\n * @type {(fn: () => void | (() => void)) => () => void}\n */\nexport let effect;\n\n/**\n * Creates a computed signal derived from other signals.\n * @template T\n * @type {<T>(fn: () => T) => Signal<T>}\n */\nexport let computed;\n\n/**\n * Batches multiple signal updates into a single notification.\n * @template T\n * @type {<T>(fn: () => T) => T}\n */\nexport let batch = (fn) => fn();\n\n/**\n * Runs a function without tracking signal dependencies.\n * @template T\n * @type {<T>(fn: () => T) => T}\n */\nexport let untracked = batch;\n\n/**\n * Registry of directive handlers.\n * @type {Record<string, DirectiveHandler>}\n */\nexport let directive = {};\n\n/**\n * Registry of modifier functions.\n * @type {Record<string, ModifierHandler>}\n */\nexport let modifier = {}\n\n\nlet currentDir = null;\nlet currentEl = null;\n\n/**\n * Formats element for error message (minimal context).\n * @param {Element} [el] - Element to format\n * @returns {string} Element hint like \"<div#id.class>\"\n */\nconst elHint = (el) => {\n if (!el?.tagName) return ''\n let hint = el.tagName.toLowerCase()\n if (el.id) hint += '#' + el.id\n else if (el.className) hint += '.' + el.className.split(' ')[0]\n return `<${hint}>`\n}\n\n/**\n * Reports an error with context.\n * @param {Error|string} e - Error to report\n * @param {string} [expr] - Expression that caused error\n */\nconst err = (e, expr, el = currentEl) => {\n let msg = `\u2234 ${e}`\n if (el) msg += `\\n in ${elHint(el)}`\n if (expr) {\n const display = expr.length > 100 ? expr.slice(0, 80) + `\u2026 (${expr.length} chars)` : expr\n msg += currentDir ? `\\n ${currentDir}=\"${display}\"` : `\\n =\"${display}\"`\n }\n console.error(msg)\n}\n\n/**\n * @callback DirectiveHandler\n * @param {Element} el - Target element\n * @param {Object} state - Reactive state object\n * @param {string} expr - Expression string\n * @param {string} [name] - Directive name with modifiers\n * @returns {((value: any) => void | (() => void)) | { [Symbol.dispose]: () => void } | void}\n */\n\n/**\n * @callback ModifierHandler\n * @param {Function} fn - Function to modify\n * @param {...string} args - Modifier arguments (from dash-separated values)\n * @returns {Function}\n */\n\n/**\n * @typedef {Object} SpraeState\n * @property {Record<string, Signal>} [_signals] - Internal signals map\n */\n\n/**\n * Applies directives to an HTML element and manages its reactive state.\n *\n * @param {Element} [el=document.body] - The target HTML element to apply directives to.\n * @param {Object} [state] - Initial state values to populate the element's reactive state.\n * @returns {SpraeState & Object} The reactive state object associated with the element.\n */\nconst sprae = (root = document.body, state) => {\n // repeated call can be caused by eg. :each with new objects with old keys\n if (root[_state]) return Object.assign(root[_state], state)\n\n // console.group('sprae', root)\n\n // take over existing state instead of creating a clone\n state = store(state || {})\n\n let el = root, fx = [], offs = []\n\n // on/off all effects\n // we don't call prevOn as convention: everything defined before :else :if won't be disabled by :if\n // imagine <x :onx=\"...\" :if=\"...\"/> - when :if is false, it disables directives after :if (calls _off) but ignores :onx\n el[_on] = () => {\n if (offs) return offs\n offs = Array(fx.length)\n for (let i = 0; i < fx.length; i++) offs[i] = fx[i]()\n return offs\n }\n el[_off] = () => {\n if (!offs) return\n let current = offs\n offs = null\n for (let i = 0; i < current.length; i++) current[i]?.()\n }\n\n // destroy\n el[_dispose] ||= () => {\n el[_off]?.()\n if (mo?._root === el) { mo.disconnect(); mo = null }\n el[_off] = el[_on] = el[_dispose] = el[_add] = el[_state] = null\n }\n\n const add = el[_add] = (el) => {\n let _attrs = el.attributes, start;\n\n if (_attrs) for (let i = 0; i < _attrs.length;) {\n let { name, value } = _attrs[i]\n\n if (name.startsWith(prefix)) {\n el.removeAttribute(name)\n\n let prev = el[_state]\n currentDir = name;\n currentEl = el;\n\n // directive initializer can be redefined\n fx.push(start = dir(el, name.slice(prefix.length), value, state)), offs.push(start())\n\n // stop after subsprae directives (:each, :if, :scope) that change element's state identity\n if (el[_state] !== prev) return\n } else i++\n }\n\n // custom elements own their children \u2014 don't descend\n if (el !== root && isCE(el)) return\n\n // :if and :each replace element with text node, which tweaks .children length, but .childNodes length persists\n // real DOM: firstChild/nextSibling avoids array copy; frag.childNodes is already snapshot array\n if (el.firstChild !== undefined) {\n let child = el.firstChild, next\n while (child) (next = child.nextSibling, child.nodeType == 1 && add(child), child = next)\n }\n else for (let child of el.childNodes) child.nodeType == 1 && add(child)\n };\n\n add(el);\n\n currentDir = currentEl = null;\n\n // if element was spraed by inline :with/:if/:each/etc instruction (meaning it has state placeholder) - skip, otherwise save _state\n // CE roots: don't claim _state \u2014 CE manages its own via connectedCallback (parent processes attrs, CE processes children)\n if (el[_state] === undefined && !isCE(root)) el[_state] = state\n\n // console.groupEnd()\n\n return state;\n}\n\n/** Package version (injected by bundler) */\nsprae.version = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'dev'\n\n\n// directive initializer\n/** @type {(el: Element, name: string, expr: string, state: Object) => () => (() => void) | void} */\nexport let dir\n\n/**\n * Compiles an expression string into an evaluator function.\n * @type {(expr: string) => (state: Object) => any}\n */\nexport let compile\n\n/**\n * Parses an expression into an evaluator function, caching the result for reuse.\n *\n * @param {string} expr - The expression to parse and compile into a function.\n * @returns {(state: Object, cb?: (value: any) => any) => any} The compiled evaluator function for the expression.\n */\nexport const parse = (expr) => {\n let fn = cache[expr=expr.trim()]\n if (fn) return fn\n\n // static time errors\n try {\n fn = compile(expr || 'undefined')\n // Object.defineProperty(fn, \"name\", { value: `\u2234 ${expr}` })\n } catch (e) { err(e, expr) }\n\n // run time errors\n return cache[expr] = function (state, cb, _out) {\n try {\n let result = fn?.call(this, state)\n // if cb is given (to handle async/await exprs, usually directive update) - call it with result and return a cleanup function\n if (cb) return result?.then\n ? (result.then(v => _out = cb(v)).catch(e => err(e, expr, this)), () => typeof _out === 'function' && _out())\n : cb(result)\n else return result\n } catch (e) {\n err(e, expr, this)\n }\n }\n}\nconst cache = {};\n\n\n/**\n * @typedef {Object} SpraeConfig\n * @property {(expr: string) => (state: Object) => any} [compile] - Custom expression compiler\n * @property {string} [prefix] - Directive prefix (default: ':')\n * @property {<T>(value: T) => Signal<T>} [signal] - Signal factory\n * @property {(fn: () => void | (() => void)) => () => void} [effect] - Effect factory\n * @property {<T>(fn: () => T) => Signal<T>} [computed] - Computed factory\n * @property {<T>(fn: () => T) => T} [batch] - Batch function\n * @property {<T>(fn: () => T) => T} [untracked] - Untracked function\n * @property {(el: Element, name: string, expr: string, state: Object) => () => (() => void) | void} [dir] - Directive initializer\n */\n\n/**\n * Configure sprae with custom signals, compiler, or prefix.\n * @param {SpraeConfig} config - Configuration options\n * @returns {void}\n */\nexport const use = (config) => (\n config.compile && (compile = config.compile),\n config.prefix && (prefix = config.prefix),\n config.signal && (signal = config.signal),\n config.effect && (effect = config.effect),\n config.computed && (computed = config.computed),\n config.batch && (batch = config.batch),\n config.untracked && (untracked = config.untracked),\n config.dir && (dir = config.dir)\n)\n\n/**\n * Applies modifiers to a function.\n * @param {Function & { target?: Element }} fn - Function to decorate\n * @param {string[]} mods - Modifier names with arguments (e.g., ['throttle-500', 'prevent'])\n * @returns {Function} Decorated function\n */\nexport const decorate = (fn, mods) => {\n while (mods.length) {\n let [name, ...params] = mods.pop().split('-'), mod = modifier[name], wrapFn\n if (mod) {\n if ((wrapFn = mod(fn, ...params)) !== fn) {\n for (let k in fn) wrapFn[k] ??= fn[k];\n fn = wrapFn\n }\n }\n }\n return fn\n}\n\n\n/** MutationObserver reference, set by sprae.start() */\nexport let mo = null\n/** Pauses MO during DOM mutations to prevent disposing managed elements */\nexport const mutate = (fn) => { mo?.disconnect(); fn(); mo?.observe(mo._root, { childList: true, subtree: true }) }\n\n/**\n * Auto-initializes sprae on dynamically added elements.\n * Uses MutationObserver to detect new DOM nodes and apply directives.\n *\n * @param {Element} [root=document.body] - Root element to observe\n * @param {Object} [values] - Initial state values\n * @returns {Object} The reactive state object\n *\n * @example\n * ```js\n * // Auto-init on page load\n * sprae.start(document.body, { count: 0 })\n * ```\n */\nexport const start = (root = document.body, values) => {\n const state = store(values)\n sprae(root, state);\n mo = new MutationObserver(mutations => {\n for (const m of mutations) {\n for (const el of m.addedNodes) {\n // el can be spraed or removed by subsprae (like within :each/:if)\n if (el.nodeType === 1 && el[_state] === undefined && root.contains(el)) {\n // even if element has no spraeable attrs, some of its children can have\n root[_add](el)\n }\n }\n for (const el of m.removedNodes) {\n // Only dispose if element is truly removed from document\n if (el.nodeType === 1 && !root.contains(el)) el[_dispose]?.()\n }\n }\n });\n mo._root = root\n mo.observe(root, { childList: true, subtree: true });\n return state\n}\n\n/**\n * @typedef {Object} FragmentLike\n * @property {Document} ownerDocument - The owner document\n * @property {Node[]} childNodes - Child nodes of the fragment\n * @property {DocumentFragment} content - The document fragment content\n * @property {() => void} remove - Remove the fragment from DOM\n * @property {(el: Node) => void} replaceWith - Replace the fragment with an element\n * @property {Attr[]} attributes - Attributes from the original template\n * @property {(name: string) => void} removeAttribute - Remove an attribute\n */\n\n/**\n * Creates a fragment holder from a template element with minimal API surface.\n * @param {HTMLTemplateElement | FragmentLike} tpl - Template element or existing fragment\n * @returns {FragmentLike} Fragment-like object\n */\nexport const frag = (tpl) => {\n if (!tpl.nodeType) return tpl // existing tpl\n\n let doc = tpl.ownerDocument,\n content = tpl.content.cloneNode(true), // document fragment holder of content\n attributes = [...tpl.attributes],\n ref = doc.createTextNode(''),\n // ensure at least one node\n childNodes = (content.append(ref), [...content.childNodes])\n\n return {\n ownerDocument: doc,\n childNodes,\n content,\n remove: () => content.append(...childNodes),\n replaceWith(el) {\n if (el === ref) return\n ref.before(el)\n content.append(...childNodes)\n },\n attributes,\n removeAttribute(name) { attributes.splice(attributes.findIndex(a => a.name === name), 1) },\n }\n}\n\n/**\n * Converts camelCase to kebab-case.\n * @param {string} str - String to convert\n * @returns {string} Kebab-case string\n */\nexport const dashcase = (str) => str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? '-' : '') + match.toLowerCase());\n\n/**\n * Sets or removes an attribute on an element.\n * @param {Element} el - Target element\n * @param {string} name - Attribute name\n * @param {string | boolean | null | undefined} v - Attribute value (null/false removes, true sets empty)\n * @returns {void}\n */\nconst camelcase = (str) => str.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n\nexport const attr = (el, name, v) => (v == null || v === false) ? el.removeAttribute(name) :\n isCE(el) ? (el[camelcase(name)] = v) :\n el.setAttribute(name, v === true ? \"\" : v);\n\n/**\n * Converts class input to className string (like clsx/classnames).\n * @param {string | string[] | Record<string, boolean> | null | undefined} c - Class input\n * @returns {string} Space-separated class string\n */\nexport const clsx = (c) => !c ? '' : typeof c === 'string' ? c : (\n Array.isArray(c) ? c.map(clsx) :\n Object.entries(c).reduce((s, [k, v]) => (v && s.push(k), s), [])\n).join(' ')\n\n/**\n * Throttles a function to run at most once per tick (or custom scheduler).\n * Fires on leading edge, then on trailing edge if called during throttle.\n * @template {Function} T\n * @param {T} fn - Function to throttle\n * @param {number|Function} [ms] - Delay in ms or scheduler function (default: microtask)\n * @returns {T} Throttled function\n */\nexport const throttle = (fn, ms) => {\n let _planned = 0, _depth = 0, arg, schedule = typeof ms === 'function' ? ms : ms ? (fn) => setTimeout(fn, ms) : queueMicrotask;\n const throttled = (e) => {\n arg = e\n if (!_planned++) fn(arg), schedule(() => {\n let dirty = _planned > 1\n _planned = 0\n if (dirty) {\n if (++_depth > 50) { _depth = 0; console.error('\u2234 Reactive loop detected'); return }\n throttled(arg)\n } else _depth = 0\n });\n }\n return throttled;\n}\n\n/**\n * Debounces a function to run after a delay since the last call.\n * @template {Function} T\n * @param {T} fn - Function to debounce\n * @param {number|Function} [ms] - Delay in ms or scheduler function (default: microtask)\n * @param {boolean} [immediate=false] - Fire on leading edge instead of trailing\n * @returns {T} Debounced function\n */\nexport const debounce = (fn, ms, immediate) => {\n let schedule = typeof ms === 'function' ? ms : ms ? (fn) => setTimeout(fn, ms) : queueMicrotask;\n return immediate\n ? ((_blocked) => (arg) => !_blocked && (fn(arg), _blocked = 1, schedule(() => _blocked = 0)))()\n : ((_count = 0) => (arg, _c = ++_count) => schedule(() => _c == _count && fn(arg)))()\n}\n\nexport * from './store.js';\n\nexport default sprae\n", "/**\n * @fileoverview Signals-powered reactive proxy store\n * @module sprae/store\n */\n\nimport { signal, computed, batch, untracked } from './core.js'\n\n/** Symbol for accessing the internal signals map */\nexport const _signals = Symbol('signals')\n\n/** Symbol for the change signal that tracks object keys or array length */\nexport const _change = Symbol('change')\n\n/** Symbol for stashed setter on computed values */\nexport const _set = Symbol('set')\n\n/** Symbol for parent scope link */\nconst _parent = Symbol('parent')\n\n// a hack to simulate sandbox for `with` in evaluator\nlet sandbox = true\n\n/**\n * Reactive store with signals backing.\n * @template T\n * @typedef {T & { [_signals]: Record<string | symbol, import('./core.js').Signal<any>> }} ReactiveStore\n */\n\n/**\n * Creates a reactive proxy store from an object or array.\n * Properties become signals for fine-grained reactivity.\n * Supports nested objects, arrays, computed getters, and methods.\n *\n * @template {Object} T\n * @param {T} values - Initial values object\n * @param {Object} [parent] - Parent scope for inheritance\n * @returns {ReactiveStore<T>} Reactive proxy store\n *\n * @example\n * const state = store({ count: 0, get doubled() { return this.count * 2 } })\n * state.count = 5 // triggers updates\n * state.doubled // 10 (computed)\n */\nexport const store = (values, parent) => {\n if (!values) return values\n\n // ignore globals\n // FIXME: handle via has trap\n if (values[Symbol.toStringTag]) return values;\n\n // bypass existing store\n if (values[_signals]) return values\n\n // non-objects: for array redirect to list\n if (values.constructor !== Object) return Array.isArray(values) ? list(values) : values\n\n // _change stores total number of keys to track new props\n let keyCount = Object.keys(values).length,\n signals = {}\n\n // proxy conducts prop access to signals\n let state = new Proxy(Object.assign(signals, {\n [_change]: signal(keyCount),\n [_signals]: signals,\n }), {\n get: (_, k) => {\n if (k in signals) {\n // raw methods (no prototype) - bind to state for consistent `this`\n if (signals.hasOwnProperty(k) && typeof signals[k] === 'function' && !signals[k].prototype) return signals[k].bind(state)\n return (signals[k] ? signals[k].valueOf() : signals[k])\n }\n if (parent) {\n return parent[k]\n }\n return (typeof globalThis[k] === 'function' && !globalThis[k].prototype ? globalThis[k].bind(globalThis) : globalThis[k])\n },\n\n set: (_, k, v) => {\n // console.group('SET', k, v)\n if (k in signals) return set(signals, k, v), 1\n\n // turn off sandbox to check if parents have the prop - we don't want to create new prop in global scope\n sandbox = false\n\n // write transparency for parent scope, unlike prototype chain\n // if prop is defined in parent scope (except global) - write there\n if (parent && k in parent) {\n parent[k] = v\n }\n // else create in current scope\n else {\n create(signals, k, v)\n signals[_change].value = ++keyCount\n }\n\n sandbox = true\n\n // console.groupEnd()\n // bump length for new signal\n return 1\n },\n\n // FIXME: try to avild calling Symbol.dispose here. Maybe _delete method?\n deleteProperty: (_, k) => {\n k in signals && (k[0] != '_' && signals[k]?.[Symbol.dispose]?.(), delete signals[k], signals[_change].value = --keyCount)\n return 1\n },\n\n // subscribe to length when spreading\n ownKeys: () => (signals[_change].value, Reflect.ownKeys(signals).filter(k => k !== _parent)),\n\n // sandbox prevents writing to global\n has: (_, k) => {\n if (k in signals) return true\n if (parent) return k in parent\n return sandbox\n }\n })\n Object.defineProperty(signals, _parent, { value: parent, configurable: true })\n\n // init signals for values\n const descs = Object.getOwnPropertyDescriptors(values)\n\n for (let k in values) {\n // getter turns into computed\n if (descs[k]?.get)\n // stash setter\n (signals[k] = computed(descs[k].get.bind(state)))[_set] = descs[k].set?.bind(state);\n\n // init blank signal - make sure we don't take prototype one\n else create(signals, k, values[k])\n }\n\n return state\n}\n\n/**\n * Creates a reactive array store with lazy signal initialization.\n * Arrays can be large, so signals are created on-demand.\n * @param {any[]} values - Initial array values\n * @param {Object} [parent=globalThis] - Parent scope\n * @returns {ReactiveStore<any[]>} Reactive array proxy\n */\nconst list = (values, parent = globalThis) => {\n\n // init signals eagerly \u2014 shallow() is cheap (1 Proxy + 1 signal per object item)\n let signals = values.map(v => signal(shallow(v))),\n\n // if .length was accessed from mutator (.push/etc) method\n isMut = false,\n\n // since array mutator methods read .length internally only once, we disable it on the moment of call, allowing rest of operations to be reactive\n mut = fn => function () { isMut = true; return fn.apply(this, arguments); },\n\n length = signal(values.length),\n\n // proxy passes prop access to signals\n state = new Proxy(\n Object.assign(signals, {\n [_change]: length,\n [_signals]: signals,\n // patch mutators\n push: mut(signals.push),\n pop: mut(signals.pop),\n shift: mut(signals.shift),\n unshift: mut(signals.unshift),\n splice: mut(signals.splice),\n }),\n {\n get(_, k) {\n // console.log('GET', k, isMut)\n\n // if .length is read within mutators - peek signal to avoid recursive subscription\n // we need to ignore it only once and keep for the rest of the mutator call\n if (k === 'length') return isMut ? (isMut = false, signals.length) : length.value;\n\n // non-numeric\n if (typeof k === 'symbol' || isNaN(k)) return signals[k]?.valueOf() ?? parent[k];\n\n // signals are eagerly initialized; null slots from .length extension default to undefined\n return (signals[k] ??= signal(undefined)).valueOf()\n },\n\n set(_, k, v) {\n // console.log('SET', k, v)\n\n // .length\n if (k === 'length') {\n // force cleaning up tail\n for (let i = v; i < signals.length; i++) delete state[i]\n // .length = N directly\n length.value = signals.length = v;\n }\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n else if (k >= signals.length) create(signals, k, v, shallow), state.length = +k + 1\n\n // existing signal\n else signals[k] ? set(signals, k, v, shallow) : create(signals, k, v, shallow)\n\n return 1\n },\n\n // dispose notifies any signal deps, like :each\n deleteProperty: (_, k) => (signals[k]?.[Symbol.dispose]?.(), delete signals[k], 1),\n })\n Object.defineProperty(signals, _parent, { value: parent, configurable: true })\n\n return state\n}\n\n/**\n * Creates a signal for a property value.\n * Skips wrapping for untracked props (underscore prefix), existing signals, and functions.\n * @param {Object} signals - Signals storage object\n * @param {string} k - Property key\n * @param {any} v - Property value\n */\nconst create = (signals, k, v, wrap = store) => (signals[k] = (k[0] == '_' || v?.peek || typeof v === 'function') ? v : signal(wrap(v)))\n\n/** Lightweight reactive wrapper for array items \u2014 avoids full store() per item. */\nconst shallow = (v) => {\n if (!v || typeof v !== 'object' || v.constructor !== Object) return v\n if (v[_change]) return v // already reactive (store or shallow proxy)\n let ver = signal(0)\n return new Proxy(v, {\n get: (t, k) => k === _signals ? t : k === _change ? ver : (ver.value, t[k]),\n set: (t, k, val) => { let prev = t[k]; t[k] = val; if (prev !== val) ver.value++; return 1 },\n has: () => true\n })\n}\n\n/**\n * Updates a signal value, handling arrays specially for efficient patching.\n * @param {Object} signals - Signals storage object\n * @param {string} k - Property key\n * @param {any} v - New value\n */\nconst set = (signals, k, v, wrap = store) => {\n if (k[0] === '_' || typeof signals[k] === 'function') return (signals[k] = v)\n let _s = signals[k], _v = _s.peek?.() ?? _s\n if (v === _v) return\n // stashed _set for value with getter/setter\n if (_s[_set]) return _s[_set](v)\n // patch store array in-place to preserve identity (avoids reactive loops when an effect reads + writes same prop)\n if (Array.isArray(v) && Array.isArray(_v)) {\n if (_change in _v) untracked(() => batch(() => { for (let i = 0; i < v.length; i++) _v[i] = v[i]; _v.length = v.length }))\n else _s.value = _change in v ? v : list(v)\n }\n else _s.value = wrap(v)\n}\n\nexport default store\n", "/**\n * @fileoverview Minimal signals implementation (preact-signals compatible)\n * @module sprae/signal\n */\n\n/** @type {import('./core.js').EffectFn | null} */\nlet current\n\nlet depth = 0\n\n/** @type {Set<import('./core.js').EffectFn> | null} */\nlet batched;\n\n/**\n * Creates a reactive signal.\n * @template T\n * @param {T} v - Initial value\n * @returns {import('./core.js').Signal<T>}\n */\nexport const signal = (v, _s, _obs = new Set, _v = () => _s.value) => (\n _s = {\n get value() {\n current?.deps.add(_obs.add(current));\n return v\n },\n set value(val) {\n if (val === v) return\n v = val;\n for (let sub of _obs) batched ? batched.add(sub) : sub(); // notify effects\n },\n peek() { return v },\n toJSON: _v, toString: _v, valueOf: _v\n }\n)\n\n/**\n * Creates a reactive effect that re-runs when dependencies change.\n * @param {() => void | (() => void)} fn - Effect function, may return cleanup\n * @returns {() => void} Dispose function\n */\nexport const effect = (fn, _teardown, _fx, _deps) => (\n _fx = (prev) => {\n if (!fn) return // disposed during batch flush\n let tmp = _teardown;\n _teardown = null;\n tmp?.call?.();\n prev = current, current = _fx\n if (depth++ > 50) {\n depth--; current = prev;\n // dispose: unsubscribe from all deps so this effect never fires again\n _teardown = fn = _fx.fn = null; for (let dep of _deps) dep.delete(_fx); _deps.clear()\n console.error('\u2234 Reactive loop detected'); return\n }\n try { _teardown = fn() } finally { current = prev; depth-- }\n },\n _fx.fn = fn,\n _deps = _fx.deps = new Set(),\n\n _fx(),\n (dep) => { _teardown?.call?.(); _teardown = fn = _fx.fn = null; for (dep of _deps) dep.delete(_fx); _deps.clear() }\n)\n\n/**\n * Creates a computed signal derived from other signals.\n * @template T\n * @param {() => T} fn - Computation function\n * @returns {import('./core.js').Signal<T>}\n */\nexport const computed = (fn, _s = signal(), _c, _e, _v = () => _c.value) => (\n _c = {\n get value() {\n _e ||= effect(() => _s.value = fn());\n return _s.value\n },\n peek: _s.peek,\n toJSON: _v, toString: _v, valueOf: _v\n }\n)\n\n/**\n * Batches multiple signal updates into a single notification.\n * @template T\n * @param {() => T} fn - Function containing updates\n * @returns {T}\n */\nexport const batch = (fn, _first = !batched, _list) => {\n batched ??= new Set;\n try { fn(); }\n finally { if (_first) { [batched, _list] = [null, batched]; for (const fx of _list) fx(); } }\n}\n\n/**\n * Runs a function without tracking dependencies.\n * @template T\n * @param {() => T} fn - Function to run untracked\n * @returns {T}\n */\nexport const untracked = (fn, _prev, _v) => (_prev = current, current = null, _v = fn(), current = _prev, _v)\n", "import sprae, { throttle, _on, _off, _state, frag, mutate } from '../core.js';\n\n/**\n * Conditional directive - shows/hides element based on condition.\n * Works with :else and :else :if for branching.\n * @param {Element | HTMLTemplateElement} el - Target element\n * @param {Object} state - State object\n * @returns {(value: any) => void} Update function\n */\nexport default (el, state) => {\n let _holder, _el\n\n // new element :if\n if (!el._holder) {\n // mark el as fake-spraed to delay init, since we sprae rest when branch matches, both :if and :else :if\n el[_state] ??= null\n\n _el = el.content ? frag(el) : el\n _el[_state] ??= null // mark _el (frag) as needing sprae\n\n mutate(() => el.replaceWith(_holder = el.ownerDocument.createTextNode('')))\n _el._holder = _holder._holder = _holder\n\n\n _holder._clauses = [_el._clause = [_el, false]]\n _holder._match = null\n\n _holder.update = throttle(() => {\n let match = _holder._clauses.find(([, s]) => s)\n\n if (match != _holder._match) {\n mutate(() => {\n _holder._match?.[0].remove()\n _holder._match?.[0][_off]?.()\n if (_holder._match = match) {\n _holder.before(_holder._match[0].content || _holder._match[0])\n // check if element needs initial sprae (null) vs just re-enabling (_on)\n !_holder._match[0][_state] ? (delete _holder._match[0][_state], sprae(_holder._match[0], state)) : _holder._match[0][_on]?.()\n }\n })\n }\n })\n }\n // :else :if needs to be spraed all over to have clean list of offable effects\n else sprae(_el = el, state)\n\n // :else may have children to init which is called after :if\n // or preact can schedule :else after :if, so we ensure order of call by next tick\n let cb = value => {\n _el._clause[1] = value\n _el._holder.update()\n }\n cb[_off] = () => { _el._holder._match?.[0][_off]?.(); _el._holder._match = null }\n return cb\n}\n", "import { _on, _off, _state, frag } from '../core.js';\n\n/**\n * Else directive - conditional branch following :if.\n * Can be used as `:else` or `:else :if=\"condition\"`.\n * @param {Element | HTMLTemplateElement} el - Element with directive\n * @returns {() => void} Update function\n */\nexport default (el) => {\n let _el, _prev = el\n\n _el = el.content ? frag(el) : el\n _el[_state] ??= null // mark _el (frag) as needing sprae\n\n // find holder\n while (_prev && !(_el._holder = _prev._holder)) _prev = _prev.previousSibling\n\n el.remove()\n el[_state] = null // mark as fake-spraed to stop further init, to lazy-sprae when branch matches\n\n _el._holder._clauses.push(_el._clause = [_el, true])\n\n return _el._holder.update\n}\n", "import { frag } from \"../core.js\"\n\n/**\n * Text directive - sets textContent reactively.\n * Preserves caret/selection position across updates.\n * @param {Element | HTMLTemplateElement} el - Target element\n * @returns {(v: any) => void} Update function\n */\nexport default el => (\n // <template :text=\"a\"/> or previously initialized template\n el.content && el.replaceWith(el = frag(el).childNodes[0]),\n v => {\n v = typeof v === 'function' ? v(el.textContent) : v\n v = v == null ? \"\" : \"\" + v\n let cur = el.textContent\n if (cur === v) return\n\n // append-only: reuse text node, skip caret save/restore\n let node = el.firstChild\n if (node && v.startsWith(cur)) { node.appendData(v.slice(cur.length)); return }\n\n // caret preservation only matters when this element holds focus \u2014\n // calling getSelection() during DOM mutations forces sync layout in Chromium (O(n\u00B2) for lists)\n let root = el.ownerDocument, active = root.activeElement\n let s = active && (active === el || el.contains(active)) ? root.getSelection?.() : null\n let off = s?.rangeCount && el.contains(s.anchorNode) ? s.getRangeAt(0).startOffset : -1\n\n el.textContent = v\n\n // restore caret\n if (off >= 0 && el.firstChild) {\n let pos = Math.min(off, el.firstChild.textContent.length)\n let r = new Range()\n r.setStart(el.firstChild, pos)\n r.collapse(true)\n s.removeAllRanges()\n s.addRange(r)\n }\n }\n)\n", "import { clsx } from \"../core.js\";\n\n/**\n * Class directive - manages CSS classes reactively.\n * Supports strings, arrays, and objects (like clsx/classnames).\n * @param {Element} el - Target element\n * @param {Object} st - State object\n * @param {string} ex - Expression\n * @param {string} name - Directive name with modifiers\n * @returns {(v: string | string[] | Record<string, boolean>) => void} Update function\n */\nexport default (el, st, ex, name) => {\n let _cur = null, _new, _prev = null\n let clearAttr = () => !el.classList.length && el.removeAttribute('class')\n\n return (v) => {\n v = typeof v === 'function' ? v(el.className) : v\n\n if (v?.constructor === Object) {\n _prev = null\n if (_cur) for (let c of _cur) if (!v[c]) el.classList.remove(c), _cur.delete(c)\n if (!_cur?.size) _cur = null\n for (let c in v) if (v[c] && !_cur?.has(c)) el.classList.add(c), (_cur ||= new Set).add(c)\n if (!_cur) clearAttr()\n return\n }\n\n v = clsx(v)\n if (v === _prev) return\n _prev = v\n\n _new = null\n if (v) for (let c of v.split(' ')) c && (_new ||= new Set).add(c)\n if (_cur) for (let c of _cur) if (!_new?.has(c)) el.classList.remove(c)\n if (_new) for (let c of _new) if (!_cur?.has(c)) el.classList.add(c)\n if (!_new) clearAttr()\n _cur = _new\n }\n}\n", "import { attr } from \"../core.js\";\n\n/**\n * Style directive - sets inline styles reactively.\n * Accepts string or object. Preserves static styles.\n * @param {Element} el - Target element\n * @param {Object} st - State object\n * @param {string} ex - Expression\n * @param {string} name - Directive name with modifiers\n * @returns {(v: string | Record<string, string> | ((style: CSSStyleDeclaration) => any)) => void} Update function\n */\nexport default (el, st, ex, name) => {\n let _static;\n\n return v => {\n if (_static === undefined) _static = el.getAttribute(\"style\") ?? \"\"\n v = typeof v === \"function\" ? v(el.style) : v\n if (typeof v === \"string\") attr(el, \"style\", _static ? _static + '; ' + v : v)\n else {\n if (_static) attr(el, \"style\", _static);\n // NOTE: we skip names not starting with a letter - eg. el.style stores properties as { 0: --x } or JSDOM has _pfx\n for (let k in v) k[0] == '-' ? el.style.setProperty(k, v[k]) : k[0] >= 'A' && (el.style[k] = v[k])\n }\n }\n}\n", "/**\n * Effect directive - runs side effects.\n * Calls function result if expression evaluates to a function.\n * @returns {(fn: any) => any} Update function\n */\nexport default () => (fn) => typeof fn === 'function' && fn()\n", "import sprae, { attr, _dispose } from \"../core.js\";\n\n/**\n * Value directive - one-way binding (state \u2192 DOM).\n * Sets element value/checked/selected from state.\n * For write-back (DOM \u2192 state), use :change directive.\n *\n * @param {HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement} el - Form element\n * @param {Object} state - State object\n * @returns {(value: any) => void} Update function\n */\nexport default (el, state) => {\n // select elements need children spraed first (for :each options)\n if (el.type?.startsWith('select')) sprae(el, state)\n\n return (el.type === \"text\" || el.type === \"\" || el.tagName === \"TEXTAREA\") ?\n (value, _from, _to) => (\n _from = el.selectionStart,\n _to = el.selectionEnd,\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n _from && el.setSelectionRange(_from, _to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === 'radio') ? (value) => (\n el.checked = el.value === value, attr(el, 'checked', el.checked || null)\n ) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) value.some(v => v == o.value) ? o.setAttribute('selected', '') : o.removeAttribute('selected')\n } :\n (value) => (el.value = value)\n}\n", "import { parse } from \"../core.js\"\n\n/**\n * Creates a setter function for assigning a value to a state path.\n * @param {string} expr - Expression to assign to (e.g., \"x\" or \"refs.el\")\n * @returns {(target: Object, value: any) => void} Setter function\n */\nconst setter = (expr, _set = parse(`${expr}=__`)) => (target, value) => {\n target.__ = value; _set(target), delete target.__\n}\n\n/**\n * Ref directive - stores element reference in state or calls callback with element.\n *\n * :ref=\"x\" \u2192 state.x = el\n * :ref=\"refs.el\" \u2192 state.refs.el = el\n * :ref=\"el => setup(el)\" \u2192 calls callback with element\n *\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Variable name, path, or callback expression\n */\nexport default (el, state, expr) => {\n let result = parse(expr).call(el, state)\n if (typeof result === 'function') result(el)\n else setter(expr)(state, el)\n}\n", "import sprae, { store, untracked, frag, _state, _signals, signal, computed } from '../core.js'\nimport { _set } from '../store.js'\n\n/**\n * Scope directive - creates a child scope with local state.\n * Properties merge into a new scope inheriting from parent.\n */\nexport default (el, rootState) => {\n let state = el[_state] = store({}, rootState), init = false\n\n let holder, _frag = el.content && frag(el)\n if (_frag) el.replaceWith(holder = el.ownerDocument.createTextNode(''))\n\n return values => {\n values = typeof values === 'function' ? values(state) : values;\n\n if (values !== state) {\n for (let k in values) {\n let d = Object.getOwnPropertyDescriptor(values, k)\n // getter \u2192 computed signal (same pattern as store.js:122-124)\n if (d?.get) { (state[_signals][k] = computed(d.get.bind(state)))[_set] = d.set?.bind(state); continue }\n let v = typeof values[k] === 'function' ? values[k].bind(state) : values[k]\n if (k in state[_signals]) state[k] = v\n else (state[_signals][k] = (k[0] == '_' || v?.peek) ? v : signal(store(v)))\n }\n }\n\n return !init && (init = true, !holder && (delete el[_state]), untracked(() => (holder?.before(_frag.content || el), sprae(_frag || el, state))))\n }\n}\n", "import sprae, { parse, _state, _off, effect, _change, _signals, frag, throttle, mutate } from \"../core.js\";\n\n// Row scope proxies \u2014 positional reads item via cur[idx], keyed holds direct ref\nconst posHandler = {\n get: (s, k) => k === s.v ? s.c?.[s.i] : k === s.k ? (s.o ? s.o[s.i] : s.i) : k === _signals ? s : s.l?.[k] !== undefined ? s.l[k] : s.p?.[k],\n set: (s, k, v) => (k === s.v ? (s.c && (s.c[s.i] = v)) : k === s.k ? 0 : s.l?.[k] !== undefined ? ((s.l[k] = v), 0) : k in (s.p?.[_signals] || {}) ? (s.p[k] = v) : (s.l ||= {})[k] = v, 1),\n has: () => true\n}\nconst keyHandler = {\n get: (s, k) => k === s.v ? s.r : k === s.k ? s.i : k === _signals ? s : s.l?.[k] !== undefined ? s.l[k] : s.p?.[k],\n set: (s, k, v) => (k === s.v ? (s.r = v) : k === s.k ? 0 : s.l?.[k] !== undefined ? ((s.l[k] = v), 0) : k in (s.p?.[_signals] || {}) ? (s.p[k] = v) : (s.l ||= {})[k] = v, 1),\n has: () => true\n}\n\nconst rm = r => { r.el[Symbol.dispose]?.(); r.el.remove() }\n\n/**\n * Each directive - renders list items from array/object/number.\n * Syntax: `:each=\"item in items\"` or `:each=\"(item, idx) of items\"`\n *\n * Keyed by object identity for plain arrays of objects.\n * Store arrays / primitives use positional (index-based) mode.\n */\nexport default (tpl, state, expr) => {\n const [lhs, rhs] = expr.split(/\\bin|of\\b/)\n let [itemVar, idxVar = \"$\"] = lhs.trim().replace(/\\(|\\)/g, '').split(/\\s*,\\s*/)\n\n let doc = tpl.ownerDocument\n let holder = tpl._eachHolder || (tpl._eachHolder = doc.createTextNode(\"\"))\n let rowMap = new Map, rows = [], items, keys, cur, keyed = false\n\n let mkrow = (scope, h) => {\n let proxy = new Proxy(scope, h)\n let el = tpl.content ? frag(tpl) : tpl.cloneNode(true)\n return { el, scope, proxy, node: el.content || el }\n }\n\n let insert = pending => {\n if (!pending.length) return\n let f = pending.length > 1 ? doc.createDocumentFragment() : null\n for (let r of pending) f ? f.appendChild(r.node) : holder.before(r.node)\n if (f) holder.before(f)\n for (let r of pending) sprae(r.el, r.proxy)\n }\n\n let update = throttle(() => mutate(() => {\n let src = items, newl = src.length, prevl = rows.length\n\n // detect keyed: plain array of objects (store arrays use positional \u2014 proxies break identity)\n keyed = false\n if (!src[_change]) for (let i = 0; i < newl; i++) {\n if (src[i] != null) { keyed = typeof src[i] === 'object'; break }\n }\n\n if (keyed && prevl) {\n // --- KEYED DIFF ---\n let newRows = [], pending = [], moved = false\n\n for (let i = 0; i < newl; i++) {\n let id = src[i], row = rowMap.get(id)\n if (row) {\n if (row.scope.i !== i) moved = true\n row.scope.i = i; row.scope.r = id\n } else {\n row = mkrow({ p: state, v: itemVar, k: idxVar, r: id, i, l: null }, keyHandler)\n rowMap.set(id, row)\n pending.push(row)\n }\n newRows.push(row)\n }\n\n // remove stale (works even when list grew but items changed)\n if (rowMap.size > newl) {\n let keep = new Set(src)\n for (let [id, row] of rowMap) if (!keep.has(id)) { rm(row); rowMap.delete(id); moved = true }\n }\n\n insert(pending)\n\n if (moved) {\n let next = holder\n for (let i = newRows.length - 1; i >= 0; i--) {\n let n = newRows[i].el._holder || newRows[i].el.content || newRows[i].el\n if (n.nextSibling !== next) next.before(n)\n next = n\n }\n }\n\n rows = newRows\n } else {\n // --- POSITIONAL ---\n if (prevl && cur !== src) {\n for (let r of rows) rm(r)\n rows.length = 0; prevl = 0; rowMap.clear()\n }\n cur = src\n\n if (newl < prevl) {\n for (let i = newl; i < prevl; i++) rm(rows[i])\n rows.length = newl\n }\n\n for (let i = 0; i < Math.min(prevl, newl); i++) {\n rows[i].scope.c = src\n if (keys) rows[i].scope.o = keys\n }\n\n if (newl > prevl) {\n let pending = []\n for (let i = prevl; i < newl; i++) {\n let row = keyed\n ? mkrow({ p: state, v: itemVar, k: idxVar, r: src[i], i, l: null }, keyHandler)\n : mkrow({ p: state, v: itemVar, k: idxVar, c: src, i, o: keys, l: null }, posHandler)\n rows.push(row)\n if (keyed) rowMap.set(src[i], row)\n pending.push(row)\n }\n insert(pending)\n }\n }\n }))\n\n if (tpl.parentNode) mutate(() => tpl.replaceWith(holder))\n tpl[_state] = null\n\n let cb = value => {\n keys = null\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1)\n else if (value?.constructor === Object) keys = Object.keys(value), items = Object.values(value)\n else items = value || []\n let off = effect(() => { items[_change]?.value; update() })\n return () => off()\n }\n cb.eval = parse(rhs)\n cb[_off] = () => { for (let r of rows) rm(r); rows.length = 0; rowMap.clear() }\n return cb\n}\n", "import { attr, isCE } from \"../core.js\";\n\n/**\n * Default attribute directive - sets any attribute value.\n * @param {Element} el - Target element\n * @param {Object} st - State object\n * @param {string} ex - Expression\n * @param {string} name - Attribute name\n * @returns {(v: any) => void} Update function\n */\nexport default (el, st, ex, name) => v => attr(el, name, typeof v === 'function' && !isCE(el) ? v(el.getAttribute(name)) : v)\n", "import { attr, dashcase, isCE } from \"../core.js\";\n\n/**\n * Spread directive - sets multiple attributes from object.\n * Keys are converted from camelCase to kebab-case.\n * @param {Element} target - Target element\n * @returns {(value: Record<string, any>) => void} Update function\n */\nexport default (target) => value => { let ce = isCE(target); for (let key in value) attr(target, ce ? key : dashcase(key), value[key]) }\n", "import { parse, decorate } from \"../core.js\"\n\n/**\n * Event directive - attaches event listeners with modifiers.\n * Syntax: `:onclick=\"handler\"` or `:onclick.prevent.stop=\"handler\"`\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} name - Event name with modifiers (e.g., 'onclick.prevent')\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nexport default (el, state, expr, name) => {\n // wrap inline cb into function\n // if (!/^(?:[\\w$]+|\\([^()]*\\))\\s*=>/.test(expr) && !/^function\\b/.test(expr)) expr = `()=>{${expr}}`;\n\n const [type, ...mods] = name.slice(2).split('.'),\n evaluate = parse(expr).bind(el),\n trigger = decorate(Object.assign(e => evaluate(state, (fn) => typeof fn === 'function' ? fn(e) : fn), { target: el }), mods);\n\n trigger.target.addEventListener(type, trigger, trigger)\n return {\n [Symbol.dispose]() {\n trigger.target.removeEventListener(type, trigger)\n trigger[Symbol.dispose]?.()\n }\n }\n}\n", "import { _dispose, parse, decorate } from \"../core.js\"\n\n/**\n * Sequence directive - chains event handlers.\n * Syntax: `:onclick..keyup.enter=\"handler\"` - click triggers, then waits for Enter.\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} names - Chained event names separated by `..`\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nexport default (el, state, expr, names) => {\n let cur, // current step callback\n off // current step disposal\n\n const evaluate = parse(expr).bind(el)\n\n let steps = names.split('..').map((step, i, { length }) => step.split(':').reduce(\n (prev, str) => {\n const [name, ...mods] = str.slice(2).split('.')\n\n const next = (fn, e) => cur = typeof fn === 'function' ? fn(e) : fn\n const trigger = decorate(Object.assign(\n e => (!i ? evaluate(state, (fn) => next(fn, e)) : next(cur, e), off(), off = steps[(i + 1) % length]()),\n { target: el }\n ), mods)\n\n\n return (_poff) => (\n _poff = prev?.(),\n trigger.target.addEventListener(name, trigger, trigger),\n () => (_poff?.(), trigger.target.removeEventListener(name, trigger))\n )\n }, null)\n )\n\n off = steps[0]()\n\n return {\n [Symbol.dispose]() {\n off?.()\n }\n }\n}\n", "import sprae, { untracked, frag, _dispose, _state } from \"../core.js\"\n\nconst isTemplate = v => !!v?.content\n\n/**\n * HTML directive - sets innerHTML and initializes nested directives.\n * Supports templates for fragment insertion.\n * @param {Element | HTMLTemplateElement} el - Target element\n * @param {Object} state - State object\n * @returns {(v: string | HTMLTemplateElement | ((html: string) => string)) => void | (() => void)} Update function\n */\nexport default (el, state) => {\n // <template :html=\"a\"/> - fragment case: use placeholder + frag\n if (el.content) {\n let _el, html = el.innerHTML,\n doc = el.ownerDocument,\n holder = el._holder\n\n if (!holder) el.replaceWith(holder = doc.createTextNode(''))\n\n return v => {\n if (typeof v === 'function') v = v(html)\n\n // :if case: remove current content from DOM\n if (el._holder) el.remove(), el.content.replaceChildren()\n _el?.[_dispose]?.()\n _el?.remove()\n\n if (v != null && v !== '') {\n _el = isTemplate(v)\n ? (html = v.innerHTML, frag(v))\n : frag((_el = doc.createElement('template'), _el.innerHTML = html = v, _el))\n\n untracked(() => sprae(_el, state))\n\n holder.before(_el.content)\n\n // :if case: update childNodes in-place for remove() closure\n if (el._holder) el.childNodes.splice(0, Infinity, ..._el.childNodes)\n\n return _el[_dispose]\n }\n else if (el._holder) el.childNodes.length = 0, html = ''\n }\n }\n\n return v => (\n v = typeof v === 'function' ? v(el.innerHTML) : v,\n isTemplate(v) ? el.replaceChildren(v.content.cloneNode(true)) : (el.innerHTML = v == null ? \"\" : v),\n el[_state] &&= null,\n untracked(() => sprae(el, state)),\n el[_dispose]\n )\n}\n", "/**\n * Portal directive - teleports element to another container.\n * Value can be selector string, element, or falsy to return home.\n * @param {Element} el - Element to teleport\n * @param {Object} state - State object\n * @param {string} expr - Expression\n * @returns {(value: string | Element | null | false) => void} Update function\n */\nexport default (el, state, expr) => {\n const doc = el.ownerDocument\n const comment = doc.createComment(':portal')\n let currentTarget = null\n\n // Insert placeholder before element\n el.before(comment)\n\n return (value) => {\n const root = el.getRootNode()\n const target = typeof value === 'string'\n ? (root.querySelector?.(value) || doc.querySelector(value))\n : value?.nodeType === 1 ? value\n : value ? doc.body : null\n\n if (target === currentTarget) return\n\n if (target) target.appendChild(el)\n else comment.after(el)\n\n currentTarget = target\n\n return () => { currentTarget && (comment.after(el), currentTarget = null) }\n }\n}\n", "/**\n * Hidden directive - toggles the hidden attribute.\n * @param {Element} el - Target element\n * @returns {(value: any) => boolean} Update function\n */\nexport default (el) => (value) => el.hidden = !!value\n", "import { parse, decorate, _dispose } from \"../core.js\"\n\n/**\n * Mount directive - lifecycle observer.\n * Runs once on connect. Function form receives element, can return cleanup.\n * Statement form runs directly.\n *\n * :mount=\"console.log('connected')\"\n * :mount=\"el => (setup(el), () => cleanup(el))\"\n * :mount=\"el => ref = el\"\n *\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} name - Directive name with modifiers\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nexport default (el, state, expr, name) => {\n const [, ...mods] = name.split('.'),\n evaluate = parse(expr).bind(el)\n\n let cleanup\n\n const trigger = decorate(Object.assign(() => {\n const result = evaluate(state, fn => typeof fn === 'function' ? fn(el) : fn)\n if (typeof result === 'function') cleanup = result\n }, { target: el }), mods)\n\n trigger()\n\n return {\n [_dispose]() {\n cleanup?.()\n cleanup = null\n }\n }\n}\n", "import { parse, decorate, _dispose } from \"../core.js\"\n\n/**\n * Change directive - normalized input write-back observer.\n * Handles type detection, coercion, caret preservation.\n *\n * :change=\"v => x = v\"\n * :change.debounce-300=\"v => query = v\"\n *\n * @param {Element} el - Form element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression (receives coerced value)\n * @param {string} name - Directive name with modifiers\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nexport default (el, state, expr, name) => {\n const [, ...mods] = name.split('.'),\n evaluate = parse(expr).bind(el)\n\n // coerce value from element based on input type\n const coerce =\n el.type === 'checkbox' ? () => el.checked :\n el.type === 'select-multiple' ? () => [...el.selectedOptions].map(o => o.value) :\n /^(date|time|month|week)/.test(el.type) ? () => el.value :\n () => el.selectedIndex < 0 ? null : isNaN(el.valueAsNumber) ? el.value : el.valueAsNumber\n\n const handler = decorate(Object.assign(() => {\n evaluate(state, fn => typeof fn === 'function' ? fn(coerce()) : fn)\n }, { target: el }), mods)\n\n el.addEventListener('input', handler)\n el.addEventListener('change', handler)\n\n return {\n [_dispose]() {\n el.removeEventListener('input', handler)\n el.removeEventListener('change', handler)\n }\n }\n}\n", "import { parse, decorate, _dispose } from \"../core.js\"\n\n/**\n * Intersect directive - IntersectionObserver wrapper.\n * Statement form fires on enter. Function form receives entry for full control.\n *\n * :intersect=\"visible = true\"\n * :intersect.once=\"loadImage()\"\n * :intersect=\"entry => visible = entry.isIntersecting\"\n *\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} name - Directive name with modifiers\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nconst intersect = (el, state, expr, name) => {\n const [, ...mods] = name.split('.')\n const evaluate = parse(expr).bind(el)\n\n let once = mods.includes('once')\n\n const trigger = decorate(Object.assign((entry) => {\n evaluate(state, fn => typeof fn === 'function' ? fn(entry) : fn)\n }, { target: el }), mods)\n\n const io = new IntersectionObserver(entries => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n trigger(entry)\n if (once) io.disconnect()\n }\n }\n })\n\n io.observe(el)\n\n return {\n [_dispose]() { io.disconnect() }\n }\n}\n\nintersect.observer = true\nexport default intersect\n", "import { parse, decorate, _dispose } from \"../core.js\"\n\n/**\n * Resize directive - ResizeObserver wrapper.\n * Function form receives {width, height, entry} object.\n *\n * :resize=\"({width, height}) => cols = Math.floor(width / 200)\"\n * :resize.throttle-100=\"({width}) => narrow = width < 600\"\n *\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} name - Directive name with modifiers\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nconst resize = (el, state, expr, name) => {\n const [, ...mods] = name.split('.')\n const evaluate = parse(expr).bind(el)\n\n const trigger = decorate(Object.assign((size) => {\n evaluate(state, fn => typeof fn === 'function' ? fn(size) : fn)\n }, { target: el }), mods)\n\n const ro = new ResizeObserver(entries => {\n for (const entry of entries) {\n const rect = entry.contentRect\n trigger({ width: rect.width, height: rect.height, entry })\n }\n })\n\n ro.observe(el)\n\n return {\n [_dispose]() { ro.disconnect() }\n }\n}\n\nresize.observer = true\nexport default resize\n", "/**\n * @fileoverview Sprae - lightweight reactive HTML templating library\n * @module sprae\n */\n\nimport store from \"./store.js\";\nimport { batch, computed, effect, signal, untracked } from './core.js';\nimport * as signals from './signal.js';\nimport sprae, { use, decorate, directive, modifier, parse, throttle, debounce, _off, _state, _on, _dispose, _add, start, isCE } from './core.js';\n\nimport _if from \"./directive/if.js\";\nimport _else from \"./directive/else.js\";\nimport _text from \"./directive/text.js\";\nimport _class from \"./directive/class.js\";\nimport _style from \"./directive/style.js\";\nimport _fx from \"./directive/fx.js\";\nimport _value from \"./directive/value.js\";\nimport _ref from \"./directive/ref.js\";\nimport _scope from \"./directive/scope.js\";\nimport _each from \"./directive/each.js\";\nimport _default from \"./directive/_.js\";\nimport _spread from \"./directive/spread.js\";\nimport _event from \"./directive/event.js\";\nimport _seq from \"./directive/sequence.js\";\nimport _html from \"./directive/html.js\";\nimport _portal from \"./directive/portal.js\";\nimport _hidden from \"./directive/hidden.js\";\nimport _mount from \"./directive/mount.js\";\nimport _change from \"./directive/change.js\";\nimport _intersect from \"./directive/intersect.js\";\nimport _resize from \"./directive/resize.js\";\n\n\n// mark observers: they handle own modifiers, bypass reactive plumbing\n_mount.observer = _change.observer = true\n\nObject.assign(directive, {\n _: _default,\n '': _spread,\n class: _class,\n text: _text,\n html: _html,\n style: _style,\n fx: _fx,\n value: _value,\n ref: _ref,\n scope: _scope,\n if: _if,\n else: _else,\n each: _each,\n portal: _portal,\n hidden: _hidden,\n mount: _mount,\n change: _change,\n intersect: _intersect,\n resize: _resize,\n})\n\n\n/**\n * Directive initializer with modifiers support.\n * @param {Element} target - Target element\n * @param {string} name - Directive name with modifiers (e.g., 'onclick.throttle-500')\n * @param {string} expr - Expression string\n * @param {Object} state - Reactive state object\n * @returns {() => (() => void) | void} Initializer function that returns a disposer\n */\nconst dir = (target, name, expr, state) => {\n let [dirName, ...mods] = name.split('.'), create = directive[dirName] || directive._\n let hasMods = mods.length > 0\n\n return () => {\n let el = target, update, change, trigger, count = 0\n\n if (hasMods) {\n // modifiers can retarget the update or schedule it, so they keep the trigger indirection\n change = signal(0)\n trigger = decorate(Object.assign(() => change.value++, { target }), mods)\n el = trigger.target ?? target\n }\n\n update = create(el, state, expr, dirName)\n\n if (!update?.call) return update?.[_dispose]\n\n let evaluate = update.eval ?? parse(expr).bind(el),\n _out, out = () => (typeof _out === 'function' && _out(), _out=null) // effect trigger and invoke may happen in the same tick, so it will be effect-within-effect call - we need to store output of evaluate to return from trigger effect\n\n // use element's own state for expression evaluation, unless it's a custom element\n // (custom elements: directives are parent prop setters, must evaluate against parent state)\n if (!isCE(el)) state = el[_state] ?? state\n\n let off = hasMods ? effect(() => {\n change.value == count ? trigger() : (count = change.value, _out = evaluate(state, update))\n return out\n }) : effect(() => (_out = evaluate(state, update), out))\n if (!(_state in el)) return off\n let _d = 0\n return () => { if (_d) return; _d = 1; off(); update[_off] ? update[_off]() : el[_dispose]?.() }\n }\n}\n\n// Parses time string to ms: 100, 100ms, 1s, 1m\nconst parseTime = (t) => !t ? 0 : typeof t === 'number' ? t :\n (([, n, u] = t.match(/^(\\d+)(ms|s|m)?$/) || []) => (n = +n, u === 's' ? n * 1000 : u === 'm' ? n * 60000 : n))()\n\n// Creates scheduler from time/keyword (idle, raf, tick, or ms)\nconst scheduler = (t) =>\n t === 'idle' ? requestIdleCallback :\n t === 'raf' ? requestAnimationFrame :\n !t || t === 'tick' ? queueMicrotask :\n (fn) => setTimeout(fn, parseTime(t))\n\n// Built-in modifiers for timing, targeting, and event handling\nObject.assign(modifier, {\n /**\n * Delays callback by interval since last call (trailing edge).\n * Supports: tick (default), raf, idle, N, Nms, Ns, Nm. Add -immediate for leading edge.\n * Examples: .debounce, .debounce-100, .debounce-1s, .debounce-raf, .debounce-idle, .debounce-100-immediate\n */\n debounce: (fn, a, b) => debounce(fn, scheduler(a === 'immediate' ? b : a), a === 'immediate' || b === 'immediate'),\n /**\n * Limits callback rate to interval (leading + trailing edges).\n * Supports: tick (default), raf, idle, N, Nms, Ns, Nm.\n * Examples: .throttle, .throttle-100, .throttle-1s, .throttle-raf, .throttle-idle\n */\n throttle: (fn, a) => throttle(fn, scheduler(a)),\n /** Runs callback after delay. Supports: tick (default), raf, idle, N, Nms, Ns, Nm. */\n delay: (fn, a) => ((sched = scheduler(a)) => (e) => sched(() => fn(e)))(),\n /** Shortcut for delay-tick (next microtask). */\n tick: (fn) => (e) => queueMicrotask(() => fn(e)),\n /** Shortcut for delay-raf (next animation frame). */\n raf: (fn) => (e) => requestAnimationFrame(() => fn(e)),\n\n /** Calls handler only once. */\n once: (fn, _done, _fn) => (_fn = (e) => !_done && (_done = 1, fn(e)), _fn.once = true, _fn),\n\n /** Attaches event listener to window. */\n window: fn => (fn.target = fn.target.ownerDocument.defaultView, fn),\n /** Attaches event listener to document. */\n document: fn => (fn.target = fn.target.ownerDocument, fn),\n /** Attaches event listener to document root element (<html>). */\n root: fn => (fn.target = fn.target.ownerDocument.documentElement, fn),\n /** Attaches event listener to body. */\n body: fn => (fn.target = fn.target.ownerDocument.body, fn),\n /** Attaches event listener to parent element. */\n parent: fn => (fn.target = fn.target.parentNode, fn),\n /** Triggers only when event target is the element itself. */\n self: (fn) => (e) => (e.target === fn.target && fn(e)),\n /** Triggers when event is outside the element. Ignores drag-out (pointerdown inside, pointerup outside). */\n away: (fn, _pd) => {\n let doc = fn.target.ownerDocument, pdHandler = e => _pd = e.target, _skip = doc.currentEvent || doc.defaultView?.event\n doc.addEventListener('pointerdown', pdHandler, true)\n return Object.assign(\n (e) => e !== _skip && !fn.target.contains(e.type === 'click' ? _pd ?? e.target : e.target) && e.target.isConnected && fn(e),\n { target: doc, [_dispose]: () => doc.removeEventListener('pointerdown', pdHandler, true) }\n )\n },\n\n /** Calls preventDefault() before handler. */\n prevent: (fn) => (e) => (e?.preventDefault(), fn(e)),\n /** Calls stopPropagation() or stopImmediatePropagation() (with -immediate). */\n stop: (fn, _how) => (e) => (_how?.[0] === 'i' ? e?.stopImmediatePropagation() : e?.stopPropagation(), fn(e)),\n /** Sets passive option for event listener. */\n passive: fn => (fn.passive = true, fn),\n /** Sets capture option for event listener. */\n capture: fn => (fn.capture = true, fn),\n})\n/** Alias for .away modifier */\nmodifier.outside = modifier.away\n\n/**\n * Key testers for keyboard event modifiers.\n * @type {Record<string, (e: KeyboardEvent) => boolean>}\n */\nconst keys = {\n ctrl: e => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: e => e.shiftKey || e.key === \"Shift\",\n alt: e => e.altKey || e.key === \"Alt\",\n meta: e => e.metaKey || e.key === \"Meta\",\n cmd: e => e.metaKey || e.key === \"Command\",\n arrow: e => e.key?.startsWith(\"Arrow\"),\n enter: e => e.key === \"Enter\",\n esc: e => e.key?.startsWith(\"Esc\"),\n tab: e => e.key === \"Tab\",\n space: e => e.key === \"\u00A0\" || e.key === \"Space\" || e.key === \" \",\n delete: e => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: e => /^\\d$/.test(e.key),\n letter: e => /^\\p{L}$/gu.test(e.key),\n char: e => /^\\S$/.test(e.key),\n};\n\n// match key by name, or by e.key (case-insensitive), or by keyCode (digits)\nconst keyMatch = (k, e) => keys[k]?.(e) || e.key?.toLowerCase() === k || e.keyCode == k\n\n// Augment modifiers with key testers (e.g., .enter, .ctrl, .ctrl-a, .ctrl-65)\nfor (let k in keys) modifier[k] = (fn, a, b) => (e) => keys[k](e) && (!a || keyMatch(a, e)) && (!b || keyMatch(b, e)) && fn(e)\n\n\n// Checks for first-level semicolons (statement vs expression)\nconst hasSemi = s => {\n let d = 0, q = '', esc = 0\n for (let ch of s) {\n if (q) {\n if (esc) esc = 0\n else if (ch === '\\\\') esc = 1\n else if (ch === q) q = ''\n continue\n }\n if (ch === ';' && !d) return true\n if (ch === '{') d++\n else if (ch === '}') d--\n else if (ch === '\"' || ch === \"'\" || ch === '`') q = ch\n }\n return false\n}\n\n// Configure sprae with default compiler and signals\nuse({\n\n// Default compiler wraps expression for new Function\n compile: expr => {\n // if, const, let - no return\n if (/^(if|let|const)\\b/.test(expr));\n // first-level semicolons - no return\n else if (hasSemi(expr));\n else expr = `return ${expr}`\n // async expression\n if (/\\bawait\\s/.test(expr)) expr = `return (async()=>{${expr}})()`\n return sprae.constructor(`with(arguments[0]){${expr}}`)\n },\n // these 2 exceptions might look inconsistent, but arguably that's the cleanest way to avoid coupling\n dir: (el, name, expr, state) => {\n // sequences: handle own modifiers, return dispose\n if (name.includes('..')) return () => _seq(el, state, expr, name)[_dispose]\n return name.split(':').reduce((prev, str) => {\n let dirName = str.split('.')[0]\n // events and observers handle own modifiers, return dispose\n let obs = directive[dirName]\n let start = str.startsWith('on') ? () => _event(el, state, expr, str)[_dispose]\n : obs?.observer ? () => obs(el, state, expr, str)[_dispose]\n : dir(el, str, expr, state)\n return !prev ? start : (p, s) => (p = prev(), s = start(), () => { p(); s() })\n }, null)\n },\n ...signals\n})\n\n\n// Expose for runtime configuration\nsprae.use = use\nsprae.store = store\nsprae.directive = directive\nsprae.modifier = modifier\n\n/**\n * Disposes a spraed element, cleaning up all effects and state.\n * @param {Element} el - Element to dispose\n */\nconst dispose = sprae.dispose = (el) => el[_dispose]?.()\n\n\nsprae.start = start\n\nexport default sprae\nexport { sprae, store, signal, effect, computed, batch, untracked, start, use, throttle, debounce, dispose }\n", "// An named symbol/brand for detecting Signal instances even when they weren't\n// created using the same signals library version.\nconst BRAND_SYMBOL = Symbol.for(\"preact-signals\");\n\n// Flags for Computed and Effect.\nconst RUNNING = 1 << 0;\nconst NOTIFIED = 1 << 1;\nconst OUTDATED = 1 << 2;\nconst DISPOSED = 1 << 3;\nconst HAS_ERROR = 1 << 4;\nconst TRACKING = 1 << 5;\n\n// A linked list node used to track dependencies (sources) and dependents (targets).\n// Also used to remember the source's last version number that the target saw.\ntype Node = {\n\t// A source whose value the target depends on.\n\t_source: Signal;\n\t_prevSource?: Node;\n\t_nextSource?: Node;\n\n\t// A target that depends on the source and should be notified when the source changes.\n\t_target: Computed | Effect;\n\t_prevTarget?: Node;\n\t_nextTarget?: Node;\n\n\t// The version number of the source that target has last seen. We use version numbers\n\t// instead of storing the source value, because source values can take arbitrary amount\n\t// of memory, and computeds could hang on to them forever because they're lazily evaluated.\n\t// Use the special value -1 to mark potentially unused but recyclable nodes.\n\t_version: number;\n\n\t// Used to remember & roll back the source's previous `._node` value when entering &\n\t// exiting a new evaluation context.\n\t_rollbackNode?: Node;\n};\n\nfunction startBatch() {\n\tbatchDepth++;\n}\n\nfunction endBatch() {\n\tif (batchDepth > 1) {\n\t\tbatchDepth--;\n\t\treturn;\n\t}\n\n\tlet error: unknown;\n\tlet hasError = false;\n\n\twhile (batchedEffect !== undefined) {\n\t\tlet effect: Effect | undefined = batchedEffect;\n\t\tbatchedEffect = undefined;\n\n\t\tbatchIteration++;\n\n\t\twhile (effect !== undefined) {\n\t\t\tconst next: Effect | undefined = effect._nextBatchedEffect;\n\t\t\teffect._nextBatchedEffect = undefined;\n\t\t\teffect._flags &= ~NOTIFIED;\n\n\t\t\tif (!(effect._flags & DISPOSED) && needsToRecompute(effect)) {\n\t\t\t\ttry {\n\t\t\t\t\teffect._callback();\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (!hasError) {\n\t\t\t\t\t\terror = err;\n\t\t\t\t\t\thasError = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\teffect = next;\n\t\t}\n\t}\n\tbatchIteration = 0;\n\tbatchDepth--;\n\n\tif (hasError) {\n\t\tthrow error;\n\t}\n}\n\n/**\n * Combine multiple value updates into one \"commit\" at the end of the provided callback.\n *\n * Batches can be nested and changes are only flushed once the outermost batch callback\n * completes.\n *\n * Accessing a signal that has been modified within a batch will reflect its updated\n * value.\n *\n * @param fn The callback function.\n * @returns The value returned by the callback.\n */\nfunction batch<T>(fn: () => T): T {\n\tif (batchDepth > 0) {\n\t\treturn fn();\n\t}\n\t/*@__INLINE__**/ startBatch();\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tendBatch();\n\t}\n}\n\n// Currently evaluated computed or effect.\nlet evalContext: Computed | Effect | undefined = undefined;\n\n/**\n * Run a callback function that can access signal values without\n * subscribing to the signal updates.\n *\n * @param fn The callback function.\n * @returns The value returned by the callback.\n */\nfunction untracked<T>(fn: () => T): T {\n\tconst prevContext = evalContext;\n\tevalContext = undefined;\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tevalContext = prevContext;\n\t}\n}\n\n// Effects collected into a batch.\nlet batchedEffect: Effect | undefined = undefined;\nlet batchDepth = 0;\nlet batchIteration = 0;\n\n// A global version number for signals, used for fast-pathing repeated\n// computed.peek()/computed.value calls when nothing has changed globally.\nlet globalVersion = 0;\n\nfunction addDependency(signal: Signal): Node | undefined {\n\tif (evalContext === undefined) {\n\t\treturn undefined;\n\t}\n\n\tlet node = signal._node;\n\tif (node === undefined || node._target !== evalContext) {\n\t\t/**\n\t\t * `signal` is a new dependency. Create a new dependency node, and set it\n\t\t * as the tail of the current context's dependency list. e.g:\n\t\t *\n\t\t * { A <-> B }\n\t\t * ↑ ↑\n\t\t * tail node (new)\n\t\t * ↓\n\t\t * { A <-> B <-> C }\n\t\t * ↑\n\t\t * tail (evalContext._sources)\n\t\t */\n\t\tnode = {\n\t\t\t_version: 0,\n\t\t\t_source: signal,\n\t\t\t_prevSource: evalContext._sources,\n\t\t\t_nextSource: undefined,\n\t\t\t_target: evalContext,\n\t\t\t_prevTarget: undefined,\n\t\t\t_nextTarget: undefined,\n\t\t\t_rollbackNode: node,\n\t\t};\n\n\t\tif (evalContext._sources !== undefined) {\n\t\t\tevalContext._sources._nextSource = node;\n\t\t}\n\t\tevalContext._sources = node;\n\t\tsignal._node = node;\n\n\t\t// Subscribe to change notifications from this dependency if we're in an effect\n\t\t// OR evaluating a computed signal that in turn has subscribers.\n\t\tif (evalContext._flags & TRACKING) {\n\t\t\tsignal._subscribe(node);\n\t\t}\n\t\treturn node;\n\t} else if (node._version === -1) {\n\t\t// `signal` is an existing dependency from a previous evaluation. Reuse it.\n\t\tnode._version = 0;\n\n\t\t/**\n\t\t * If `node` is not already the current tail of the dependency list (i.e.\n\t\t * there is a next node in the list), then make the `node` the new tail. e.g:\n\t\t *\n\t\t * { A <-> B <-> C <-> D }\n\t\t * ↑ ↑\n\t\t * node ┌─── tail (evalContext._sources)\n\t\t * └─────│─────┐\n\t\t * ↓ ↓\n\t\t * { A <-> C <-> D <-> B }\n\t\t * ↑\n\t\t * tail (evalContext._sources)\n\t\t */\n\t\tif (node._nextSource !== undefined) {\n\t\t\tnode._nextSource._prevSource = node._prevSource;\n\n\t\t\tif (node._prevSource !== undefined) {\n\t\t\t\tnode._prevSource._nextSource = node._nextSource;\n\t\t\t}\n\n\t\t\tnode._prevSource = evalContext._sources;\n\t\t\tnode._nextSource = undefined;\n\n\t\t\tevalContext._sources!._nextSource = node;\n\t\t\tevalContext._sources = node;\n\t\t}\n\n\t\t// We can assume that the currently evaluated effect / computed signal is already\n\t\t// subscribed to change notifications from `signal` if needed.\n\t\treturn node;\n\t}\n\treturn undefined;\n}\n\n/**\n * The base class for plain and computed signals.\n */\n//\n// A function with the same name is defined later, so we need to ignore TypeScript's\n// warning about a redeclared variable.\n//\n// The class is declared here, but later implemented with ES5-style prototypes.\n// This enables better control of the transpiled output size.\n// @ts-ignore: \"Cannot redeclare exported variable 'Signal'.\"\ndeclare class Signal<T = any> {\n\t/** @internal */\n\t_value: unknown;\n\n\t/**\n\t * @internal\n\t * Version numbers should always be >= 0, because the special value -1 is used\n\t * by Nodes to signify potentially unused but recyclable nodes.\n\t */\n\t_version: number;\n\n\t/** @internal */\n\t_node?: Node;\n\n\t/** @internal */\n\t_targets?: Node;\n\n\tconstructor(value?: T, options?: SignalOptions<T>);\n\n\t/** @internal */\n\t_refresh(): boolean;\n\n\t/** @internal */\n\t_subscribe(node: Node): void;\n\n\t/** @internal */\n\t_unsubscribe(node: Node): void;\n\n\t/** @internal */\n\t_watched?(this: Signal<T>): void;\n\n\t/** @internal */\n\t_unwatched?(this: Signal<T>): void;\n\n\tsubscribe(fn: (value: T) => void): () => void;\n\n\tname?: string;\n\n\tvalueOf(): T;\n\n\ttoString(): string;\n\n\ttoJSON(): T;\n\n\tpeek(): T;\n\n\tbrand: typeof BRAND_SYMBOL;\n\n\tget value(): T;\n\tset value(value: T);\n}\n\nexport interface SignalOptions<T = any> {\n\twatched?: (this: Signal<T>) => void;\n\tunwatched?: (this: Signal<T>) => void;\n\tname?: string;\n}\n\n/** @internal */\n// A class with the same name has already been declared, so we need to ignore\n// TypeScript's warning about a redeclared variable.\n//\n// The previously declared class is implemented here with ES5-style prototypes.\n// This enables better control of the transpiled output size.\n// @ts-ignore: \"Cannot redeclare exported variable 'Signal'.\"\nfunction Signal(this: Signal, value?: unknown, options?: SignalOptions) {\n\tthis._value = value;\n\tthis._version = 0;\n\tthis._node = undefined;\n\tthis._targets = undefined;\n\tthis._watched = options?.watched;\n\tthis._unwatched = options?.unwatched;\n\tthis.name = options?.name;\n}\n\nSignal.prototype.brand = BRAND_SYMBOL;\n\nSignal.prototype._refresh = function () {\n\treturn true;\n};\n\nSignal.prototype._subscribe = function (node) {\n\tconst targets = this._targets;\n\tif (targets !== node && node._prevTarget === undefined) {\n\t\tnode._nextTarget = targets;\n\t\tthis._targets = node;\n\n\t\tif (targets !== undefined) {\n\t\t\ttargets._prevTarget = node;\n\t\t} else {\n\t\t\tuntracked(() => {\n\t\t\t\tthis._watched?.call(this);\n\t\t\t});\n\t\t}\n\t}\n};\n\nSignal.prototype._unsubscribe = function (node) {\n\t// Only run the unsubscribe step if the signal has any subscribers to begin with.\n\tif (this._targets !== undefined) {\n\t\tconst prev = node._prevTarget;\n\t\tconst next = node._nextTarget;\n\t\tif (prev !== undefined) {\n\t\t\tprev._nextTarget = next;\n\t\t\tnode._prevTarget = undefined;\n\t\t}\n\n\t\tif (next !== undefined) {\n\t\t\tnext._prevTarget = prev;\n\t\t\tnode._nextTarget = undefined;\n\t\t}\n\n\t\tif (node === this._targets) {\n\t\t\tthis._targets = next;\n\t\t\tif (next === undefined) {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tthis._unwatched?.call(this);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\n\nSignal.prototype.subscribe = function (fn) {\n\treturn effect(\n\t\t() => {\n\t\t\tconst value = this.value;\n\t\t\tconst prevContext = evalContext;\n\t\t\tevalContext = undefined;\n\t\t\ttry {\n\t\t\t\tfn(value);\n\t\t\t} finally {\n\t\t\t\tevalContext = prevContext;\n\t\t\t}\n\t\t},\n\t\t{ name: \"sub\" }\n\t);\n};\n\nSignal.prototype.valueOf = function () {\n\treturn this.value;\n};\n\nSignal.prototype.toString = function () {\n\treturn this.value + \"\";\n};\n\nSignal.prototype.toJSON = function () {\n\treturn this.value;\n};\n\nSignal.prototype.peek = function () {\n\tconst prevContext = evalContext;\n\tevalContext = undefined;\n\ttry {\n\t\treturn this.value;\n\t} finally {\n\t\tevalContext = prevContext;\n\t}\n};\n\nObject.defineProperty(Signal.prototype, \"value\", {\n\tget(this: Signal) {\n\t\tconst node = addDependency(this);\n\t\tif (node !== undefined) {\n\t\t\tnode._version = this._version;\n\t\t}\n\t\treturn this._value;\n\t},\n\tset(this: Signal, value) {\n\t\tif (value !== this._value) {\n\t\t\tif (batchIteration > 100) {\n\t\t\t\tthrow new Error(\"Cycle detected\");\n\t\t\t}\n\n\t\t\tthis._value = value;\n\t\t\tthis._version++;\n\t\t\tglobalVersion++;\n\n\t\t\t/**@__INLINE__*/ startBatch();\n\t\t\ttry {\n\t\t\t\tfor (\n\t\t\t\t\tlet node = this._targets;\n\t\t\t\t\tnode !== undefined;\n\t\t\t\t\tnode = node._nextTarget\n\t\t\t\t) {\n\t\t\t\t\tnode._target._notify();\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tendBatch();\n\t\t\t}\n\t\t}\n\t},\n});\n\n/**\n * Create a new plain signal.\n *\n * @param value The initial value for the signal.\n * @returns A new signal.\n */\nexport function signal<T>(value: T, options?: SignalOptions<T>): Signal<T>;\nexport function signal<T = undefined>(): Signal<T | undefined>;\nexport function signal<T>(value?: T, options?: SignalOptions<T>): Signal<T> {\n\treturn new Signal(value, options);\n}\n\nfunction needsToRecompute(target: Computed | Effect): boolean {\n\t// Check the dependencies for changed values. The dependency list is already\n\t// in order of use. Therefore if multiple dependencies have changed values, only\n\t// the first used dependency is re-evaluated at this point.\n\tfor (\n\t\tlet node = target._sources;\n\t\tnode !== undefined;\n\t\tnode = node._nextSource\n\t) {\n\t\tif (\n\t\t\t// If the dependency has definitely been updated since its version number\n\t\t\t// was observed, then we need to recompute. This first check is not strictly\n\t\t\t// necessary for correctness, but allows us to skip the refresh call if the\n\t\t\t// dependency has already been updated.\n\t\t\tnode._source._version !== node._version ||\n\t\t\t// Refresh the dependency. If there's something blocking the refresh (e.g. a\n\t\t\t// dependency cycle), then we need to recompute.\n\t\t\t!node._source._refresh() ||\n\t\t\t// If the dependency got a new version after the refresh, then we need to recompute.\n\t\t\tnode._source._version !== node._version\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\t// If none of the dependencies have changed values since last recompute then\n\t// there's no need to recompute.\n\treturn false;\n}\n\nfunction prepareSources(target: Computed | Effect) {\n\t/**\n\t * 1. Mark all current sources as re-usable nodes (version: -1)\n\t * 2. Set a rollback node if the current node is being used in a different context\n\t * 3. Point 'target._sources' to the tail of the doubly-linked list, e.g:\n\t *\n\t * { undefined <- A <-> B <-> C -> undefined }\n\t * ↑ ↑\n\t * │ └──────┐\n\t * target._sources = A; (node is head) │\n\t * ↓ │\n\t * target._sources = C; (node is tail) ─┘\n\t */\n\tfor (\n\t\tlet node = target._sources;\n\t\tnode !== undefined;\n\t\tnode = node._nextSource\n\t) {\n\t\tconst rollbackNode = node._source._node;\n\t\tif (rollbackNode !== undefined) {\n\t\t\tnode._rollbackNode = rollbackNode;\n\t\t}\n\t\tnode._source._node = node;\n\t\tnode._version = -1;\n\n\t\tif (node._nextSource === undefined) {\n\t\t\ttarget._sources = node;\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nfunction cleanupSources(target: Computed | Effect) {\n\tlet node = target._sources;\n\tlet head: Node | undefined = undefined;\n\n\t/**\n\t * At this point 'target._sources' points to the tail of the doubly-linked list.\n\t * It contains all existing sources + new sources in order of use.\n\t * Iterate backwards until we find the head node while dropping old dependencies.\n\t */\n\twhile (node !== undefined) {\n\t\tconst prev = node._prevSource;\n\n\t\t/**\n\t\t * The node was not re-used, unsubscribe from its change notifications and remove itself\n\t\t * from the doubly-linked list. e.g:\n\t\t *\n\t\t * { A <-> B <-> C }\n\t\t * ↓\n\t\t * { A <-> C }\n\t\t */\n\t\tif (node._version === -1) {\n\t\t\tnode._source._unsubscribe(node);\n\n\t\t\tif (prev !== undefined) {\n\t\t\t\tprev._nextSource = node._nextSource;\n\t\t\t}\n\t\t\tif (node._nextSource !== undefined) {\n\t\t\t\tnode._nextSource._prevSource = prev;\n\t\t\t}\n\t\t} else {\n\t\t\t/**\n\t\t\t * The new head is the last node seen which wasn't removed/unsubscribed\n\t\t\t * from the doubly-linked list. e.g:\n\t\t\t *\n\t\t\t * { A <-> B <-> C }\n\t\t\t * ↑ ↑ ↑\n\t\t\t * │ │ └ head = node\n\t\t\t * │ └ head = node\n\t\t\t * └ head = node\n\t\t\t */\n\t\t\thead = node;\n\t\t}\n\n\t\tnode._source._node = node._rollbackNode;\n\t\tif (node._rollbackNode !== undefined) {\n\t\t\tnode._rollbackNode = undefined;\n\t\t}\n\n\t\tnode = prev;\n\t}\n\n\ttarget._sources = head;\n}\n\n/**\n * The base class for computed signals.\n */\ndeclare class Computed<T = any> extends Signal<T> {\n\t_fn: () => T;\n\t_sources?: Node;\n\t_globalVersion: number;\n\t_flags: number;\n\n\tconstructor(fn: () => T, options?: SignalOptions<T>);\n\n\t_notify(): void;\n\tget value(): T;\n}\n\n/** @internal */\nfunction Computed(this: Computed, fn: () => unknown, options?: SignalOptions) {\n\tSignal.call(this, undefined);\n\n\tthis._fn = fn;\n\tthis._sources = undefined;\n\tthis._globalVersion = globalVersion - 1;\n\tthis._flags = OUTDATED;\n\tthis._watched = options?.watched;\n\tthis._unwatched = options?.unwatched;\n\tthis.name = options?.name;\n}\n\nComputed.prototype = new Signal() as Computed;\n\nComputed.prototype._refresh = function () {\n\tthis._flags &= ~NOTIFIED;\n\n\tif (this._flags & RUNNING) {\n\t\treturn false;\n\t}\n\n\t// If this computed signal has subscribed to updates from its dependencies\n\t// (TRACKING flag set) and none of them have notified about changes (OUTDATED\n\t// flag not set), then the computed value can't have changed.\n\tif ((this._flags & (OUTDATED | TRACKING)) === TRACKING) {\n\t\treturn true;\n\t}\n\tthis._flags &= ~OUTDATED;\n\n\tif (this._globalVersion === globalVersion) {\n\t\treturn true;\n\t}\n\tthis._globalVersion = globalVersion;\n\n\t// Mark this computed signal running before checking the dependencies for value\n\t// changes, so that the RUNNING flag can be used to notice cyclical dependencies.\n\tthis._flags |= RUNNING;\n\tif (this._version > 0 && !needsToRecompute(this)) {\n\t\tthis._flags &= ~RUNNING;\n\t\treturn true;\n\t}\n\n\tconst prevContext = evalContext;\n\ttry {\n\t\tprepareSources(this);\n\t\tevalContext = this;\n\t\tconst value = this._fn();\n\t\tif (\n\t\t\tthis._flags & HAS_ERROR ||\n\t\t\tthis._value !== value ||\n\t\t\tthis._version === 0\n\t\t) {\n\t\t\tthis._value = value;\n\t\t\tthis._flags &= ~HAS_ERROR;\n\t\t\tthis._version++;\n\t\t}\n\t} catch (err) {\n\t\tthis._value = err;\n\t\tthis._flags |= HAS_ERROR;\n\t\tthis._version++;\n\t}\n\tevalContext = prevContext;\n\tcleanupSources(this);\n\tthis._flags &= ~RUNNING;\n\treturn true;\n};\n\nComputed.prototype._subscribe = function (node) {\n\tif (this._targets === undefined) {\n\t\tthis._flags |= OUTDATED | TRACKING;\n\n\t\t// A computed signal subscribes lazily to its dependencies when it\n\t\t// gets its first subscriber.\n\t\tfor (\n\t\t\tlet node = this._sources;\n\t\t\tnode !== undefined;\n\t\t\tnode = node._nextSource\n\t\t) {\n\t\t\tnode._source._subscribe(node);\n\t\t}\n\t}\n\tSignal.prototype._subscribe.call(this, node);\n};\n\nComputed.prototype._unsubscribe = function (node) {\n\t// Only run the unsubscribe step if the computed signal has any subscribers.\n\tif (this._targets !== undefined) {\n\t\tSignal.prototype._unsubscribe.call(this, node);\n\n\t\t// Computed signal unsubscribes from its dependencies when it loses its last subscriber.\n\t\t// This makes it possible for unreferences subgraphs of computed signals to get garbage collected.\n\t\tif (this._targets === undefined) {\n\t\t\tthis._flags &= ~TRACKING;\n\n\t\t\tfor (\n\t\t\t\tlet node = this._sources;\n\t\t\t\tnode !== undefined;\n\t\t\t\tnode = node._nextSource\n\t\t\t) {\n\t\t\t\tnode._source._unsubscribe(node);\n\t\t\t}\n\t\t}\n\t}\n};\n\nComputed.prototype._notify = function () {\n\tif (!(this._flags & NOTIFIED)) {\n\t\tthis._flags |= OUTDATED | NOTIFIED;\n\n\t\tfor (\n\t\t\tlet node = this._targets;\n\t\t\tnode !== undefined;\n\t\t\tnode = node._nextTarget\n\t\t) {\n\t\t\tnode._target._notify();\n\t\t}\n\t}\n};\n\nObject.defineProperty(Computed.prototype, \"value\", {\n\tget(this: Computed) {\n\t\tif (this._flags & RUNNING) {\n\t\t\tthrow new Error(\"Cycle detected\");\n\t\t}\n\t\tconst node = addDependency(this);\n\t\tthis._refresh();\n\t\tif (node !== undefined) {\n\t\t\tnode._version = this._version;\n\t\t}\n\t\tif (this._flags & HAS_ERROR) {\n\t\t\tthrow this._value;\n\t\t}\n\t\treturn this._value;\n\t},\n});\n\n/**\n * An interface for read-only signals.\n */\ninterface ReadonlySignal<T = any> {\n\treadonly value: T;\n\tpeek(): T;\n\n\tsubscribe(fn: (value: T) => void): () => void;\n\tvalueOf(): T;\n\ttoString(): string;\n\ttoJSON(): T;\n\tbrand: typeof BRAND_SYMBOL;\n}\n\n/**\n * Create a new signal that is computed based on the values of other signals.\n *\n * The returned computed signal is read-only, and its value is automatically\n * updated when any signals accessed from within the callback function change.\n *\n * @param fn The effect callback.\n * @returns A new read-only signal.\n */\nfunction computed<T>(\n\tfn: () => T,\n\toptions?: SignalOptions<T>\n): ReadonlySignal<T> {\n\treturn new Computed(fn, options);\n}\n\nfunction cleanupEffect(effect: Effect) {\n\tconst cleanup = effect._cleanup;\n\teffect._cleanup = undefined;\n\n\tif (typeof cleanup === \"function\") {\n\t\t/*@__INLINE__**/ startBatch();\n\n\t\t// Run cleanup functions always outside of any context.\n\t\tconst prevContext = evalContext;\n\t\tevalContext = undefined;\n\t\ttry {\n\t\t\tcleanup();\n\t\t} catch (err) {\n\t\t\teffect._flags &= ~RUNNING;\n\t\t\teffect._flags |= DISPOSED;\n\t\t\tdisposeEffect(effect);\n\t\t\tthrow err;\n\t\t} finally {\n\t\t\tevalContext = prevContext;\n\t\t\tendBatch();\n\t\t}\n\t}\n}\n\nfunction disposeEffect(effect: Effect) {\n\tfor (\n\t\tlet node = effect._sources;\n\t\tnode !== undefined;\n\t\tnode = node._nextSource\n\t) {\n\t\tnode._source._unsubscribe(node);\n\t}\n\teffect._fn = undefined;\n\teffect._sources = undefined;\n\n\tcleanupEffect(effect);\n}\n\nfunction endEffect(this: Effect, prevContext?: Computed | Effect) {\n\tif (evalContext !== this) {\n\t\tthrow new Error(\"Out-of-order effect\");\n\t}\n\tcleanupSources(this);\n\tevalContext = prevContext;\n\n\tthis._flags &= ~RUNNING;\n\tif (this._flags & DISPOSED) {\n\t\tdisposeEffect(this);\n\t}\n\tendBatch();\n}\n\ntype EffectFn =\n\t| ((this: { dispose: () => void }) => void | (() => void))\n\t| (() => void | (() => void));\n\n/**\n * The base class for reactive effects.\n */\ndeclare class Effect {\n\t_fn?: EffectFn;\n\t_cleanup?: () => void;\n\t_sources?: Node;\n\t_nextBatchedEffect?: Effect;\n\t_flags: number;\n\tname?: string;\n\n\tconstructor(fn: EffectFn, options?: EffectOptions);\n\n\t_callback(): void;\n\t_start(): () => void;\n\t_notify(): void;\n\t_dispose(): void;\n\tdispose(): void;\n}\n\nexport interface EffectOptions {\n\tname?: string;\n}\n\n/** @internal */\nfunction Effect(this: Effect, fn: EffectFn, options?: EffectOptions) {\n\tthis._fn = fn;\n\tthis._cleanup = undefined;\n\tthis._sources = undefined;\n\tthis._nextBatchedEffect = undefined;\n\tthis._flags = TRACKING;\n\tthis.name = options?.name;\n}\n\nEffect.prototype._callback = function () {\n\tconst finish = this._start();\n\ttry {\n\t\tif (this._flags & DISPOSED) return;\n\t\tif (this._fn === undefined) return;\n\n\t\tconst cleanup = this._fn();\n\t\tif (typeof cleanup === \"function\") {\n\t\t\tthis._cleanup = cleanup;\n\t\t}\n\t} finally {\n\t\tfinish();\n\t}\n};\n\nEffect.prototype._start = function () {\n\tif (this._flags & RUNNING) {\n\t\tthrow new Error(\"Cycle detected\");\n\t}\n\tthis._flags |= RUNNING;\n\tthis._flags &= ~DISPOSED;\n\tcleanupEffect(this);\n\tprepareSources(this);\n\n\t/*@__INLINE__**/ startBatch();\n\tconst prevContext = evalContext;\n\tevalContext = this;\n\treturn endEffect.bind(this, prevContext);\n};\n\nEffect.prototype._notify = function () {\n\tif (!(this._flags & NOTIFIED)) {\n\t\tthis._flags |= NOTIFIED;\n\t\tthis._nextBatchedEffect = batchedEffect;\n\t\tbatchedEffect = this;\n\t}\n};\n\nEffect.prototype._dispose = function () {\n\tthis._flags |= DISPOSED;\n\n\tif (!(this._flags & RUNNING)) {\n\t\tdisposeEffect(this);\n\t}\n};\n\nEffect.prototype.dispose = function () {\n\tthis._dispose();\n};\n/**\n * Create an effect to run arbitrary code in response to signal changes.\n *\n * An effect tracks which signals are accessed within the given callback\n * function `fn`, and re-runs the callback when those signals change.\n *\n * The callback may return a cleanup function. The cleanup function gets\n * run once, either when the callback is next called or when the effect\n * gets disposed, whichever happens first.\n *\n * @param fn The effect callback.\n * @returns A function for disposing the effect.\n */\nfunction effect(fn: EffectFn, options?: EffectOptions): () => void {\n\tconst effect = new Effect(fn, options);\n\ttry {\n\t\teffect._callback();\n\t} catch (err) {\n\t\teffect._dispose();\n\t\tthrow err;\n\t}\n\t// Return a bound function instead of a wrapper like `() => effect._dispose()`,\n\t// because bound functions seem to be just as fast and take up a lot less memory.\n\tconst dispose = effect._dispose.bind(effect);\n\t(dispose as any)[Symbol.dispose] = dispose;\n\treturn dispose as any;\n}\n\nexport {\n\tcomputed,\n\teffect,\n\tbatch,\n\tuntracked,\n\tSignal,\n\tReadonlySignal,\n\tEffect,\n\tComputed,\n};\n", "var sprae = require(\"./sprae.js\").default; var signals = require(\"@preact/signals-core\"); var use = require(\"./core.js\").use; use(signals); module.exports = sprae; var cur = document.currentScript;\nvar prefix = cur.getAttribute(\"prefix\") ?? cur.dataset.prefix ?? cur.dataset.spraePrefix;\nvar start = cur.getAttribute(\"start\") ?? cur.dataset.start ?? cur.dataset.spraeStart;\ncur.removeAttribute(\"prefix\"); cur.removeAttribute(\"start\"); delete cur.dataset.prefix; delete cur.dataset.start; delete cur.dataset.spraePrefix; delete cur.dataset.spraeStart;\nif (prefix) sprae.use({ prefix });\nif (start != null && start !== 'false') (start && start !== 'true' ? document.querySelectorAll(start) : [document.body || document.documentElement]).forEach(el => sprae.start(el))"],
5
- "mappings": ";6cAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,UAAAE,GAAA,YAAAC,EAAA,aAAAC,EAAA,SAAAC,EAAA,QAAAC,GAAA,SAAAC,GAAA,aAAAC,EAAA,WAAAC,EAAA,SAAAC,EAAA,UAAAC,GAAA,SAAAC,GAAA,YAAAC,GAAA,aAAAC,EAAA,aAAAC,GAAA,aAAAC,GAAA,aAAAC,EAAA,YAAAC,EAAA,QAAAC,GAAA,cAAAC,GAAA,WAAAC,EAAA,SAAAC,EAAA,SAAAC,EAAA,OAAAC,EAAA,aAAAC,EAAA,WAAAC,GAAA,UAAAC,EAAA,WAAAC,GAAA,WAAAC,EAAA,UAAAC,GAAA,UAAAC,GAAA,aAAAC,EAAA,cAAAC,EAAA,QAAAC,KAAA,IAKa9B,EAGAK,EAGAH,GAGAD,EAGAH,GAGF0B,GAGEL,EAyBFM,EAMAR,EAOAP,EAOAH,GAOAsB,EAMAb,GAMAK,EAGPU,GACAC,GAOEC,GAaAC,GAsCAC,GAsFKpB,GAMAN,GAQEc,EAwBPa,GAoBON,GAiBAjB,EAeFO,EAEEE,GAgBAI,GAuCAR,EA8BAP,GASP0B,GAEO/B,EASAE,GAaAoB,EAwBAhB,GASNE,EA9dPwB,EAAAC,EAAA,KAAAC,KA4dAA,KAvdaxC,EAAY,OAAO,UAAP,OAAO,QAAY,OAAO,SAAS,GAG/CK,EAAS,OAAO,OAAO,EAGvBH,GAAM,OAAO,IAAI,EAGjBD,EAAO,OAAO,KAAK,EAGnBH,GAAO,OAAO,MAAM,EAGtB0B,GAAS,IAGPL,EAAQsB,GAAOA,EAAG,WAAW,SAAS,GAAG,EA6C3ClC,GAASmC,GAAOA,EAAG,EAOnBb,EAAYtB,GAMZS,GAAY,CAAC,EAMbK,EAAW,CAAC,EAGnBU,GAAa,KACbC,GAAY,KAOVC,GAAUQ,GAAO,CACrB,GAAI,CAACA,GAAI,QAAS,MAAO,GACzB,IAAIE,EAAOF,EAAG,QAAQ,YAAY,EAClC,OAAIA,EAAG,GAAIE,GAAQ,IAAMF,EAAG,GACnBA,EAAG,YAAWE,GAAQ,IAAMF,EAAG,UAAU,MAAM,GAAG,EAAE,CAAC,GACvD,IAAIE,CAAI,GACjB,EAOMT,GAAM,CAACU,EAAGC,EAAMJ,EAAKT,KAAc,CACvC,IAAIc,EAAM,UAAKF,CAAC,GAEhB,GADIH,IAAIK,GAAO;AAAA,OAAUb,GAAOQ,CAAE,CAAC,IAC/BI,EAAM,CACR,IAAME,EAAUF,EAAK,OAAS,IAAMA,EAAK,MAAM,EAAG,EAAE,EAAI,WAAMA,EAAK,MAAM,UAAYA,EACrFC,GAAOf,GAAa;AAAA,IAAOA,EAAU,KAAKgB,CAAO,IAAM;AAAA,MAASA,CAAO,GACzE,CACA,QAAQ,MAAMD,CAAG,CACnB,EA8BMX,GAAQ,CAACa,EAAO,SAAS,KAAMC,IAAU,CAE7C,GAAID,EAAK3C,CAAM,EAAG,OAAO,OAAO,OAAO2C,EAAK3C,CAAM,EAAG4C,CAAK,EAK1DA,EAAQC,GAAMD,GAAS,CAAC,CAAC,EAEzB,IAAIR,EAAKO,EAAMG,EAAK,CAAC,EAAGC,EAAO,CAAC,EAKhCX,EAAGvC,EAAG,EAAI,IAAM,CACd,GAAIkD,EAAM,OAAOA,EACjBA,EAAO,MAAMD,EAAG,MAAM,EACtB,QAASE,EAAI,EAAGA,EAAIF,EAAG,OAAQE,IAAKD,EAAKC,CAAC,EAAIF,EAAGE,CAAC,EAAE,EACpD,OAAOD,CACT,EACAX,EAAGxC,CAAI,EAAI,IAAM,CACf,GAAI,CAACmD,EAAM,OACX,IAAIE,EAAUF,EACdA,EAAO,KACP,QAASC,EAAI,EAAGA,EAAIC,EAAQ,OAAQD,IAAKC,EAAQD,CAAC,IAAI,CACxD,EAGAZ,EAAAzC,KAAAyC,EAAAzC,GAAiB,IAAM,CACrByC,EAAGxC,CAAI,IAAI,EACPmB,GAAI,QAAUqB,IAAMrB,EAAG,WAAW,EAAGA,EAAK,MAC9CqB,EAAGxC,CAAI,EAAIwC,EAAGvC,EAAG,EAAIuC,EAAGzC,CAAQ,EAAIyC,EAAG3C,EAAI,EAAI2C,EAAGpC,CAAM,EAAI,IAC9D,GAEA,IAAMkD,EAAMd,EAAG3C,EAAI,EAAK2C,GAAO,CAC7B,IAAIe,EAASf,EAAG,WAAYf,EAE5B,GAAI8B,EAAQ,QAASH,EAAI,EAAGA,EAAIG,EAAO,QAAS,CAC9C,GAAI,CAAE,KAAAC,EAAM,MAAAC,CAAM,EAAIF,EAAOH,CAAC,EAE9B,GAAII,EAAK,WAAWjC,EAAM,EAAG,CAC3BiB,EAAG,gBAAgBgB,CAAI,EAEvB,IAAIE,EAAOlB,EAAGpC,CAAM,EAQpB,GAPA0B,GAAa0B,EACbzB,GAAYS,EAGZU,EAAG,KAAKzB,EAAQX,GAAI0B,EAAIgB,EAAK,MAAMjC,GAAO,MAAM,EAAGkC,EAAOT,CAAK,CAAC,EAAGG,EAAK,KAAK1B,EAAM,CAAC,EAGhFe,EAAGpC,CAAM,IAAMsD,EAAM,MAC3B,MAAON,GACT,CAGA,GAAI,EAAAZ,IAAOO,GAAQ7B,EAAKsB,CAAE,GAI1B,GAAIA,EAAG,aAAe,OAAW,CAC/B,IAAImB,EAAQnB,EAAG,WAAYoB,EAC3B,KAAOD,GAAQC,EAAOD,EAAM,YAAaA,EAAM,UAAY,GAAKL,EAAIK,CAAK,EAAGA,EAAQC,CACtF,KACK,SAASD,KAASnB,EAAG,WAAYmB,EAAM,UAAY,GAAKL,EAAIK,CAAK,CACxE,EAEA,OAAAL,EAAId,CAAE,EAENV,GAAaC,GAAY,KAIrBS,EAAGpC,CAAM,IAAM,QAAa,CAACc,EAAK6B,CAAI,IAAGP,EAAGpC,CAAM,EAAI4C,GAInDA,CACT,EAGAd,GAAM,QAA+C,SAmBxCZ,EAASsB,GAAS,CAC7B,IAAIH,EAAMN,GAAMS,EAAKA,EAAK,KAAK,CAAC,EAChC,GAAIH,EAAI,OAAOA,EAGf,GAAI,CACFA,EAAKjC,GAAQoC,GAAQ,WAAW,CAElC,OAASD,EAAG,CAAEV,GAAIU,EAAGC,CAAI,CAAE,CAG3B,OAAOT,GAAMS,CAAI,EAAI,SAAUI,EAAOa,EAAIC,EAAM,CAC9C,GAAI,CACF,IAAIC,EAAStB,GAAI,KAAK,KAAMO,CAAK,EAEjC,OAAIa,EAAWE,GAAQ,MAClBA,EAAO,KAAKC,GAAKF,EAAOD,EAAGG,CAAC,CAAC,EAAE,MAAMrB,GAAKV,GAAIU,EAAGC,EAAM,IAAI,CAAC,EAAG,IAAM,OAAOkB,GAAS,YAAcA,EAAK,GACzGD,EAAGE,CAAM,EACDA,CACd,OAASpB,EAAG,CACVV,GAAIU,EAAGC,EAAM,IAAI,CACnB,CACF,CACF,EACMT,GAAQ,CAAC,EAoBFN,GAAOoC,IAClBA,EAAO,UAAYzD,GAAUyD,EAAO,SACpCA,EAAO,SAAW1C,GAAS0C,EAAO,QAClCA,EAAO,SAAWzC,EAASyC,EAAO,QAClCA,EAAO,SAAWjD,EAASiD,EAAO,QAClCA,EAAO,WAAaxD,EAAWwD,EAAO,UACtCA,EAAO,QAAU3D,GAAQ2D,EAAO,OAChCA,EAAO,YAAcrC,EAAYqC,EAAO,WACxCA,EAAO,MAAQnD,GAAMmD,EAAO,MASjBrD,EAAW,CAAC6B,EAAIyB,IAAS,CACpC,KAAOA,EAAK,QAAQ,CAClB,GAAI,CAACV,EAAM,GAAGW,CAAM,EAAID,EAAK,IAAI,EAAE,MAAM,GAAG,EAAGE,EAAMhD,EAASoC,CAAI,EAAGa,EACrE,GAAID,IACGC,EAASD,EAAI3B,EAAI,GAAG0B,CAAM,KAAO1B,EAAI,CACxC,QAAS6B,KAAK7B,EAAI4B,EAAAC,KAAAD,EAAAC,GAAc7B,EAAG6B,CAAC,GACpC7B,EAAK4B,CACP,CAEJ,CACA,OAAO5B,CACT,EAIWtB,EAAK,KAEHE,GAAUoB,GAAO,CAAEtB,GAAI,WAAW,EAAGsB,EAAG,EAAGtB,GAAI,QAAQA,EAAG,MAAO,CAAE,UAAW,GAAM,QAAS,EAAK,CAAC,CAAE,EAgBrGM,GAAQ,CAACsB,EAAO,SAAS,KAAMwB,IAAW,CACrD,IAAMvB,EAAQC,GAAMsB,CAAM,EAC1B,OAAArC,GAAMa,EAAMC,CAAK,EACjB7B,EAAK,IAAI,iBAAiBqD,GAAa,CACrC,QAAWC,KAAKD,EAAW,CACzB,QAAWhC,KAAMiC,EAAE,WAEbjC,EAAG,WAAa,GAAKA,EAAGpC,CAAM,IAAM,QAAa2C,EAAK,SAASP,CAAE,GAEnEO,EAAKlD,EAAI,EAAE2C,CAAE,EAGjB,QAAWA,KAAMiC,EAAE,aAEbjC,EAAG,WAAa,GAAK,CAACO,EAAK,SAASP,CAAE,GAAGA,EAAGzC,CAAQ,IAAI,CAEhE,CACF,CAAC,EACDoB,EAAG,MAAQ4B,EACX5B,EAAG,QAAQ4B,EAAM,CAAE,UAAW,GAAM,QAAS,EAAK,CAAC,EAC5CC,CACT,EAkBa/B,EAAQyD,GAAQ,CAC3B,GAAI,CAACA,EAAI,SAAU,OAAOA,EAE1B,IAAIC,EAAMD,EAAI,cACZE,EAAUF,EAAI,QAAQ,UAAU,EAAI,EACpCG,EAAa,CAAC,GAAGH,EAAI,UAAU,EAC/BI,EAAMH,EAAI,eAAe,EAAE,EAE3BI,GAAcH,EAAQ,OAAOE,CAAG,EAAG,CAAC,GAAGF,EAAQ,UAAU,GAE3D,MAAO,CACL,cAAeD,EACf,WAAAI,EACA,QAAAH,EACA,OAAQ,IAAMA,EAAQ,OAAO,GAAGG,CAAU,EAC1C,YAAYvC,EAAI,CACVA,IAAOsC,IACXA,EAAI,OAAOtC,CAAE,EACboC,EAAQ,OAAO,GAAGG,CAAU,EAC9B,EACA,WAAAF,EACA,gBAAgBrB,EAAM,CAAEqB,EAAW,OAAOA,EAAW,UAAU,GAAK,EAAE,OAASrB,CAAI,EAAG,CAAC,CAAE,CAC3F,CACF,EAOa9C,GAAYsE,GAAQA,EAAI,QAAQ,mCAAoC,CAACC,EAAO7B,KAAOA,EAAI,IAAM,IAAM6B,EAAM,YAAY,CAAC,EAS7H7C,GAAa4C,GAAQA,EAAI,QAAQ,YAAa,CAACE,EAAGC,IAAMA,EAAE,YAAY,CAAC,EAEhE9E,EAAO,CAACmC,EAAIgB,EAAMQ,IAAOA,GAAK,MAAQA,IAAM,GAASxB,EAAG,gBAAgBgB,CAAI,EACvFtC,EAAKsB,CAAE,EAAKA,EAAGJ,GAAUoB,CAAI,CAAC,EAAIQ,EAClCxB,EAAG,aAAagB,EAAMQ,IAAM,GAAO,GAAKA,CAAC,EAO9BzD,GAAQ4E,GAAOA,EAAS,OAAOA,GAAM,SAAWA,GAC3D,MAAM,QAAQA,CAAC,EAAIA,EAAE,IAAI5E,EAAI,EAC3B,OAAO,QAAQ4E,CAAC,EAAE,OAAO,CAACC,EAAG,CAACd,EAAGN,CAAC,KAAOA,GAAKoB,EAAE,KAAKd,CAAC,EAAGc,GAAI,CAAC,CAAC,GACjE,KAAK,GAAG,EAHsB,GAanBzD,EAAW,CAACc,EAAI4C,IAAO,CAClC,IAAIC,EAAW,EAAGC,EAAS,EAAGC,EAAKC,EAAW,OAAOJ,GAAO,WAAaA,EAAKA,EAAM5C,GAAO,WAAWA,EAAI4C,CAAE,EAAI,eAC1GK,EAAa/C,GAAM,CACvB6C,EAAM7C,EACD2C,MAAY7C,EAAG+C,CAAG,EAAGC,EAAS,IAAM,CACvC,IAAIE,EAAQL,EAAW,EAEvB,GADAA,EAAW,EACPK,EAAO,CACT,GAAI,EAAEJ,EAAS,GAAI,CAAEA,EAAS,EAAG,QAAQ,MAAM,+BAA0B,EAAG,MAAO,CACnFG,EAAUF,CAAG,CACf,MAAOD,EAAS,CAClB,CAAC,EACH,EACA,OAAOG,CACT,EAUa/E,GAAW,CAAC8B,EAAI4C,EAAIO,IAAc,CAC7C,IAAIH,EAAW,OAAOJ,GAAO,WAAaA,EAAKA,EAAM5C,GAAO,WAAWA,EAAI4C,CAAE,EAAI,eACjF,OAAOO,GACDC,GAAcL,GAAQ,CAACK,IAAapD,EAAG+C,CAAG,EAAGK,EAAW,EAAGJ,EAAS,IAAMI,EAAW,CAAC,IAAI,GAC3F,CAACC,EAAS,IAAM,CAACN,EAAKO,EAAK,EAAED,IAAWL,EAAS,IAAMM,GAAMD,GAAUrD,EAAG+C,CAAG,CAAC,GAAG,CACxF,EAIO3E,EAAQqB,KC9df,IAQa8D,EAGAC,EAGAC,GAGPC,GAGFC,GAuBSC,GAoGPC,GA2EAC,GAGAC,GAiBAC,GAcCC,GA5PPC,GAAAC,EAAA,KAKAC,IAGab,EAAW,OAAO,SAAS,EAG3BC,EAAU,OAAO,QAAQ,EAGzBC,GAAO,OAAO,KAAK,EAG1BC,GAAU,OAAO,QAAQ,EAG3BC,GAAU,GAuBDC,GAAQ,CAACS,EAAQC,IAAW,CAQvC,GAPI,CAACD,GAIDA,EAAO,OAAO,WAAW,GAGzBA,EAAOd,CAAQ,EAAG,OAAOc,EAG7B,GAAIA,EAAO,cAAgB,OAAQ,OAAO,MAAM,QAAQA,CAAM,EAAIR,GAAKQ,CAAM,EAAIA,EAGjF,IAAIE,EAAW,OAAO,KAAKF,CAAM,EAAE,OACjCG,EAAU,CAAC,EAGTC,EAAQ,IAAI,MAAM,OAAO,OAAOD,EAAS,CAC3C,CAAChB,CAAO,EAAGkB,EAAOH,CAAQ,EAC1B,CAAChB,CAAQ,EAAGiB,CACd,CAAC,EAAG,CACF,IAAK,CAACG,EAAGC,IACHA,KAAKJ,EAEHA,EAAQ,eAAeI,CAAC,GAAK,OAAOJ,EAAQI,CAAC,GAAM,YAAc,CAACJ,EAAQI,CAAC,EAAE,UAAkBJ,EAAQI,CAAC,EAAE,KAAKH,CAAK,EAChHD,EAAQI,CAAC,EAAIJ,EAAQI,CAAC,EAAE,QAAQ,EAAIJ,EAAQI,CAAC,EAEnDN,EACKA,EAAOM,CAAC,EAET,OAAO,WAAWA,CAAC,GAAM,YAAc,CAAC,WAAWA,CAAC,EAAE,UAAY,WAAWA,CAAC,EAAE,KAAK,UAAU,EAAI,WAAWA,CAAC,EAGzH,IAAK,CAACD,EAAGC,EAAGC,IAEND,KAAKJ,GAAgBR,GAAIQ,EAASI,EAAGC,CAAC,EAAG,IAG7ClB,GAAU,GAINW,GAAUM,KAAKN,EACjBA,EAAOM,CAAC,EAAIC,GAIZf,GAAOU,EAASI,EAAGC,CAAC,EACpBL,EAAQhB,CAAO,EAAE,MAAQ,EAAEe,GAG7BZ,GAAU,GAIH,GAIT,eAAgB,CAACgB,EAAGC,KAClBA,KAAKJ,IAAYI,EAAE,CAAC,GAAK,KAAOJ,EAAQI,CAAC,IAAI,OAAO,OAAO,IAAI,EAAG,OAAOJ,EAAQI,CAAC,EAAGJ,EAAQhB,CAAO,EAAE,MAAQ,EAAEe,GACzG,GAIT,QAAS,KAAOC,EAAQhB,CAAO,EAAE,MAAO,QAAQ,QAAQgB,CAAO,EAAE,OAAOI,GAAKA,IAAMlB,EAAO,GAG1F,IAAK,CAACiB,EAAGC,IACHA,KAAKJ,EAAgB,GACrBF,EAAeM,KAAKN,EACjBX,EAEX,CAAC,EACD,OAAO,eAAea,EAASd,GAAS,CAAE,MAAOY,EAAQ,aAAc,EAAK,CAAC,EAG7E,IAAMQ,EAAQ,OAAO,0BAA0BT,CAAM,EAErD,QAASO,KAAKP,EAERS,EAAMF,CAAC,GAAG,KAEXJ,EAAQI,CAAC,EAAIG,EAASD,EAAMF,CAAC,EAAE,IAAI,KAAKH,CAAK,CAAC,GAAGhB,EAAI,EAAIqB,EAAMF,CAAC,EAAE,KAAK,KAAKH,CAAK,EAG/EX,GAAOU,EAASI,EAAGP,EAAOO,CAAC,CAAC,EAGnC,OAAOH,CACT,EASMZ,GAAO,CAACQ,EAAQC,EAAS,aAAe,CAG5C,IAAIE,EAAUH,EAAO,IAAIQ,GAAKH,EAAOX,GAAQc,CAAC,CAAC,CAAC,EAG9CG,EAAQ,GAGRC,EAAMC,GAAM,UAAY,CAAE,OAAAF,EAAQ,GAAaE,EAAG,MAAM,KAAM,SAAS,CAAG,EAE1EC,EAAST,EAAOL,EAAO,MAAM,EAG7BI,EAAQ,IAAI,MACV,OAAO,OAAOD,EAAS,CACrB,CAAChB,CAAO,EAAG2B,EACX,CAAC5B,CAAQ,EAAGiB,EAEZ,KAAMS,EAAIT,EAAQ,IAAI,EACtB,IAAKS,EAAIT,EAAQ,GAAG,EACpB,MAAOS,EAAIT,EAAQ,KAAK,EACxB,QAASS,EAAIT,EAAQ,OAAO,EAC5B,OAAQS,EAAIT,EAAQ,MAAM,CAC5B,CAAC,EACD,CACE,IAAIG,EAAGC,EAAG,CAKR,OAAIA,IAAM,SAAiBI,GAASA,EAAQ,GAAOR,EAAQ,QAAUW,EAAO,MAGxE,OAAOP,GAAM,UAAY,MAAMA,CAAC,EAAUJ,EAAQI,CAAC,GAAG,QAAQ,GAAKN,EAAOM,CAAC,GAGvEJ,EAAAI,KAAAJ,EAAAI,GAAeF,EAAO,MAAS,IAAG,QAAQ,CACpD,EAEA,IAAIC,EAAGC,EAAGC,EAAG,CAIX,GAAID,IAAM,SAAU,CAElB,QAASQ,EAAIP,EAAGO,EAAIZ,EAAQ,OAAQY,IAAK,OAAOX,EAAMW,CAAC,EAEvDD,EAAO,MAAQX,EAAQ,OAASK,CAClC,MAGSD,GAAKJ,EAAQ,QAAQV,GAAOU,EAASI,EAAGC,EAAGd,EAAO,EAAGU,EAAM,OAAS,CAACG,EAAI,GAG7EJ,EAAQI,CAAC,EAAIZ,GAAIQ,EAASI,EAAGC,EAAGd,EAAO,EAAID,GAAOU,EAASI,EAAGC,EAAGd,EAAO,EAE7E,MAAO,EACT,EAGA,eAAgB,CAACY,EAAGC,KAAOJ,EAAQI,CAAC,IAAI,OAAO,OAAO,IAAI,EAAG,OAAOJ,EAAQI,CAAC,EAAG,EAClF,CAAC,EACL,cAAO,eAAeJ,EAASd,GAAS,CAAE,MAAOY,EAAQ,aAAc,EAAK,CAAC,EAEtEG,CACT,EASMX,GAAS,CAACU,EAASI,EAAGC,EAAGQ,EAAOzB,KAAWY,EAAQI,CAAC,EAAKA,EAAE,CAAC,GAAK,KAAOC,GAAG,MAAQ,OAAOA,GAAM,WAAcA,EAAIH,EAAOW,EAAKR,CAAC,CAAC,EAGhId,GAAWc,GAAM,CAErB,GADI,CAACA,GAAK,OAAOA,GAAM,UAAYA,EAAE,cAAgB,QACjDA,EAAErB,CAAO,EAAG,OAAOqB,EACvB,IAAIS,EAAMZ,EAAO,CAAC,EAClB,OAAO,IAAI,MAAMG,EAAG,CAClB,IAAK,CAACU,EAAGX,IAAMA,IAAMrB,EAAWgC,EAAIX,IAAMpB,EAAU8B,GAAOA,EAAI,MAAOC,EAAEX,CAAC,GACzE,IAAK,CAACW,EAAGX,EAAGY,IAAQ,CAAE,IAAIC,EAAOF,EAAEX,CAAC,EAAG,OAAAW,EAAEX,CAAC,EAAIY,EAASC,IAASD,GAAKF,EAAI,QAAgB,CAAE,EAC3F,IAAK,IAAM,EACb,CAAC,CACH,EAQMtB,GAAM,CAACQ,EAASI,EAAGC,EAAGQ,EAAOzB,KAAU,CAC3C,GAAIgB,EAAE,CAAC,IAAM,KAAO,OAAOJ,EAAQI,CAAC,GAAM,WAAY,OAAQJ,EAAQI,CAAC,EAAIC,EAC3E,IAAIa,EAAKlB,EAAQI,CAAC,EAAGe,EAAKD,EAAG,OAAO,GAAKA,EACzC,GAAIb,IAAMc,EAEV,IAAID,EAAGjC,EAAI,EAAG,OAAOiC,EAAGjC,EAAI,EAAEoB,CAAC,EAE3B,MAAM,QAAQA,CAAC,GAAK,MAAM,QAAQc,CAAE,EAClCnC,KAAWmC,EAAIC,EAAU,IAAMC,GAAM,IAAM,CAAE,QAAST,EAAI,EAAGA,EAAIP,EAAE,OAAQO,IAAKO,EAAGP,CAAC,EAAIP,EAAEO,CAAC,EAAGO,EAAG,OAASd,EAAE,MAAO,CAAC,CAAC,EACpHa,EAAG,MAAQlC,KAAWqB,EAAIA,EAAIhB,GAAKgB,CAAC,EAEtCa,EAAG,MAAQL,EAAKR,CAAC,EACxB,EAEOZ,GAAQL,KC5Pf,IAAAkC,GAAA,GAAAC,GAAAD,GAAA,WAAAE,GAAA,aAAAC,GAAA,WAAAC,GAAA,WAAAC,GAAA,cAAAC,KAAA,IAMIC,EAEAC,GAGAC,GAQSJ,GAqBAD,GA4BAD,GAiBAD,GAYAI,GAjGbI,GAAAC,EAAA,KAQIH,GAAQ,EAWCH,GAAS,CAACO,EAAGC,EAAIC,EAAO,IAAI,IAAKC,EAAK,IAAMF,EAAG,QAC1DA,EAAK,CACH,IAAI,OAAQ,CACV,OAAAN,GAAS,KAAK,IAAIO,EAAK,IAAIP,CAAO,CAAC,EAC5BK,CACT,EACA,IAAI,MAAMI,EAAK,CACb,GAAIA,IAAQJ,EACZ,CAAAA,EAAII,EACJ,QAASC,KAAOH,EAAML,GAAUA,GAAQ,IAAIQ,CAAG,EAAIA,EAAI,EACzD,EACA,MAAO,CAAE,OAAOL,CAAE,EAClB,OAAQG,EAAI,SAAUA,EAAI,QAASA,CACrC,EAQWX,GAAS,CAACc,EAAIC,EAAWC,EAAKC,KACzCD,EAAOE,GAAS,CACd,GAAI,CAACJ,EAAI,OACT,IAAIK,EAAMJ,EAIV,GAHAA,EAAY,KACZI,GAAK,OAAO,EACZD,EAAOf,EAASA,EAAUa,EACtBZ,KAAU,GAAI,CAChBA,KAASD,EAAUe,EAEnBH,EAAYD,EAAKE,EAAI,GAAK,KAAM,QAASI,KAAOH,EAAOG,EAAI,OAAOJ,CAAG,EAAGC,EAAM,MAAM,EACpF,QAAQ,MAAM,+BAA0B,EAAG,MAC7C,CACA,GAAI,CAAEF,EAAYD,EAAG,CAAE,QAAE,CAAUX,EAAUe,EAAMd,IAAQ,CAC7D,EACAY,EAAI,GAAKF,EACTG,EAAQD,EAAI,KAAO,IAAI,IAEvBA,EAAI,EACHI,GAAQ,CAAEL,GAAW,OAAO,EAAGA,EAAYD,EAAKE,EAAI,GAAK,KAAM,IAAKI,KAAOH,EAAOG,EAAI,OAAOJ,CAAG,EAAGC,EAAM,MAAM,CAAE,GASvGlB,GAAW,CAACe,EAAIL,EAAKR,GAAO,EAAGoB,EAAIC,EAAIX,EAAK,IAAMU,EAAG,QAChEA,EAAK,CACH,IAAI,OAAQ,CACV,OAAAC,MAAOtB,GAAO,IAAMS,EAAG,MAAQK,EAAG,CAAC,GAC5BL,EAAG,KACZ,EACA,KAAMA,EAAG,KACT,OAAQE,EAAI,SAAUA,EAAI,QAASA,CACrC,EASWb,GAAQ,CAACgB,EAAIS,EAAS,CAAClB,GAASmB,IAAU,CACrDnB,QAAY,IAAI,KAChB,GAAI,CAAES,EAAG,CAAG,QACZ,CAAU,GAAIS,EAAQ,CAAE,CAAClB,GAASmB,CAAK,EAAI,CAAC,KAAMnB,EAAO,EAAG,QAAWoB,KAAMD,EAAOC,EAAG,CAAG,CAAE,CAC9F,EAQavB,GAAY,CAACY,EAAIY,EAAOf,KAAQe,EAAQvB,EAASA,EAAU,KAAMQ,EAAKG,EAAG,EAAGX,EAAUuB,EAAOf,KCjG1G,IASOgB,GATPC,GAAAC,EAAA,KAAAC,IASOH,GAAQ,CAACI,EAAIC,IAAU,CAT9B,IAAAC,EAAAC,EAUE,IAAIC,EAASC,EAGRL,EAAG,QA+BHM,EAAMD,EAAML,EAAIC,CAAK,GA7BxBD,EAAAE,EAAGK,KAAHP,EAAAE,GAAe,MAEfG,EAAML,EAAG,QAAUQ,EAAKR,CAAE,EAAIA,EAC9BK,EAAAF,EAAII,KAAJF,EAAAF,GAAgB,MAEhBM,GAAO,IAAMT,EAAG,YAAYI,EAAUJ,EAAG,cAAc,eAAe,EAAE,CAAC,CAAC,EAC1EK,EAAI,QAAUD,EAAQ,QAAUA,EAGhCA,EAAQ,SAAW,CAACC,EAAI,QAAU,CAACA,EAAK,EAAK,CAAC,EAC9CD,EAAQ,OAAS,KAEjBA,EAAQ,OAASM,EAAS,IAAM,CAC9B,IAAIC,EAAQP,EAAQ,SAAS,KAAK,CAAC,CAAC,CAAEQ,CAAC,IAAMA,CAAC,EAE1CD,GAASP,EAAQ,QACnBK,GAAO,IAAM,CACXL,EAAQ,SAAS,CAAC,EAAE,OAAO,EAC3BA,EAAQ,SAAS,CAAC,EAAES,CAAI,IAAI,GACxBT,EAAQ,OAASO,KACnBP,EAAQ,OAAOA,EAAQ,OAAO,CAAC,EAAE,SAAWA,EAAQ,OAAO,CAAC,CAAC,EAE5DA,EAAQ,OAAO,CAAC,EAAEG,CAAM,EAA0EH,EAAQ,OAAO,CAAC,EAAEU,EAAG,IAAI,GAA9F,OAAOV,EAAQ,OAAO,CAAC,EAAEG,CAAM,EAAGD,EAAMF,EAAQ,OAAO,CAAC,EAAGH,CAAK,GAElG,CAAC,CAEL,CAAC,GAOH,IAAIc,EAAKC,GAAS,CAChBX,EAAI,QAAQ,CAAC,EAAIW,EACjBX,EAAI,QAAQ,OAAO,CACrB,EACA,OAAAU,EAAGF,CAAI,EAAI,IAAM,CAAER,EAAI,QAAQ,SAAS,CAAC,EAAEQ,CAAI,IAAI,EAAGR,EAAI,QAAQ,OAAS,IAAK,EACzEU,CACT,ICtDA,IAQOE,GARPC,GAAAC,EAAA,KAAAC,IAQOH,GAASI,GAAO,CARvB,IAAAC,EASE,IAAIC,EAAKC,EAAQH,EAMjB,IAJAE,EAAMF,EAAG,QAAUI,EAAKJ,CAAE,EAAIA,EAC9BE,EAAAD,EAAII,KAAJH,EAAAD,GAAgB,MAGTE,GAAS,EAAED,EAAI,QAAUC,EAAM,UAAUA,EAAQA,EAAM,gBAE9D,OAAAH,EAAG,OAAO,EACVA,EAAGK,CAAM,EAAI,KAEbH,EAAI,QAAQ,SAAS,KAAKA,EAAI,QAAU,CAACA,EAAK,EAAI,CAAC,EAE5CA,EAAI,QAAQ,MACrB,ICvBA,IAQOI,GARPC,GAAAC,EAAA,KAAAC,IAQOH,GAAQI,IAEbA,EAAG,SAAWA,EAAG,YAAYA,EAAKC,EAAKD,CAAE,EAAE,WAAW,CAAC,CAAC,EACxDE,GAAK,CACHA,EAAI,OAAOA,GAAM,WAAaA,EAAEF,EAAG,WAAW,EAAIE,EAClDA,EAAIA,GAAK,KAAO,GAAK,GAAKA,EAC1B,IAAIC,EAAMH,EAAG,YACb,GAAIG,IAAQD,EAAG,OAGf,IAAIE,EAAOJ,EAAG,WACd,GAAII,GAAQF,EAAE,WAAWC,CAAG,EAAG,CAAEC,EAAK,WAAWF,EAAE,MAAMC,EAAI,MAAM,CAAC,EAAG,MAAO,CAI9E,IAAIE,EAAOL,EAAG,cAAeM,EAASD,EAAK,cACvC,EAAIC,IAAWA,IAAWN,GAAMA,EAAG,SAASM,CAAM,GAAKD,EAAK,eAAe,EAAI,KAC/EE,EAAM,GAAG,YAAcP,EAAG,SAAS,EAAE,UAAU,EAAI,EAAE,WAAW,CAAC,EAAE,YAAc,GAKrF,GAHAA,EAAG,YAAcE,EAGbK,GAAO,GAAKP,EAAG,WAAY,CAC7B,IAAIQ,EAAM,KAAK,IAAID,EAAKP,EAAG,WAAW,YAAY,MAAM,EACpDS,EAAI,IAAI,MACZA,EAAE,SAAST,EAAG,WAAYQ,CAAG,EAC7BC,EAAE,SAAS,EAAI,EACf,EAAE,gBAAgB,EAClB,EAAE,SAASA,CAAC,CACd,CACF,KCtCF,IAWOC,GAXPC,GAAAC,EAAA,KAAAC,IAWOH,GAAQ,CAACI,EAAIC,EAAIC,EAAIC,IAAS,CACnC,IAAIC,EAAO,KAAMC,EAAMC,EAAQ,KAC3BC,EAAY,IAAM,CAACP,EAAG,UAAU,QAAUA,EAAG,gBAAgB,OAAO,EAExE,OAAQQ,GAAM,CAGZ,GAFAA,EAAI,OAAOA,GAAM,WAAaA,EAAER,EAAG,SAAS,EAAIQ,EAE5CA,GAAG,cAAgB,OAAQ,CAE7B,GADAF,EAAQ,KACJF,EAAM,QAASK,KAAKL,EAAWI,EAAEC,CAAC,IAAGT,EAAG,UAAU,OAAOS,CAAC,EAAGL,EAAK,OAAOK,CAAC,GACzEL,GAAM,OAAMA,EAAO,MACxB,QAASK,KAAKD,EAAOA,EAAEC,CAAC,GAAK,CAACL,GAAM,IAAIK,CAAC,IAAGT,EAAG,UAAU,IAAIS,CAAC,GAAIL,MAAS,IAAI,MAAK,IAAIK,CAAC,GACpFL,GAAMG,EAAU,EACrB,MACF,CAGA,GADAC,EAAIE,GAAKF,CAAC,EACNA,IAAMF,EAIV,IAHAA,EAAQE,EAERH,EAAO,KACHG,EAAG,QAASC,KAAKD,EAAE,MAAM,GAAG,EAAGC,IAAMJ,MAAS,IAAI,MAAK,IAAII,CAAC,EAChE,GAAIL,EAAM,QAASK,KAAKL,EAAWC,GAAM,IAAII,CAAC,GAAGT,EAAG,UAAU,OAAOS,CAAC,EACtE,GAAIJ,EAAM,QAASI,KAAKJ,EAAWD,GAAM,IAAIK,CAAC,GAAGT,EAAG,UAAU,IAAIS,CAAC,EAC9DJ,GAAME,EAAU,EACrBH,EAAOC,EACT,CACF,ICtCA,IAWOM,GAXPC,GAAAC,EAAA,KAAAC,IAWOH,GAAQ,CAACI,EAAIC,EAAIC,EAAIC,IAAS,CACnC,IAAIC,EAEJ,OAAOC,GAAK,CAGV,GAFID,IAAY,SAAWA,EAAUJ,EAAG,aAAa,OAAO,GAAK,IACjEK,EAAI,OAAOA,GAAM,WAAaA,EAAEL,EAAG,KAAK,EAAIK,EACxC,OAAOA,GAAM,SAAUC,EAAKN,EAAI,QAASI,EAAUA,EAAU,KAAOC,EAAIA,CAAC,MACxE,CACCD,GAASE,EAAKN,EAAI,QAASI,CAAO,EAEtC,QAASG,KAAKF,EAAGE,EAAE,CAAC,GAAK,IAAMP,EAAG,MAAM,YAAYO,EAAGF,EAAEE,CAAC,CAAC,EAAIA,EAAE,CAAC,GAAK,MAAQP,EAAG,MAAMO,CAAC,EAAIF,EAAEE,CAAC,EAClG,CACF,CACF,ICxBA,IAKOC,GALPC,GAAAC,EAAA,KAKOF,GAAQ,IAAOG,GAAO,OAAOA,GAAO,YAAcA,EAAG,ICL5D,IAWOC,GAXPC,GAAAC,EAAA,KAAAC,IAWOH,GAAQ,CAACI,EAAIC,KAEdD,EAAG,MAAM,WAAW,QAAQ,GAAGE,EAAMF,EAAIC,CAAK,EAE1CD,EAAG,OAAS,QAAUA,EAAG,OAAS,IAAMA,EAAG,UAAY,WAC7D,CAACG,EAAOC,EAAOC,KACbD,EAAQJ,EAAG,eACXK,EAAML,EAAG,aACTA,EAAG,aAAa,QAAUA,EAAG,MAAQG,GAAgB,EAAW,EAChEC,GAASJ,EAAG,kBAAkBI,EAAOC,CAAG,GAEzCL,EAAG,OAAS,WACVG,IAAWH,EAAG,QAAUG,EAAOG,EAAKN,EAAI,UAAWG,CAAK,GACxDH,EAAG,OAAS,QAAYG,IACvBH,EAAG,QAAUA,EAAG,QAAUG,EAAOG,EAAKN,EAAI,UAAWA,EAAG,SAAW,IAAI,GAEtEA,EAAG,OAAS,aACVG,GAAU,CACT,QAAS,KAAKH,EAAG,QACf,EAAE,OAASG,EAAQ,EAAE,aAAa,WAAY,EAAE,EAAI,EAAE,gBAAgB,UAAU,EAClFH,EAAG,MAAQG,CACb,EACCH,EAAG,OAAS,kBAAsBG,GAAU,CAC3C,QAAS,KAAKH,EAAG,QAASG,EAAM,KAAKI,GAAKA,GAAK,EAAE,KAAK,EAAI,EAAE,aAAa,WAAY,EAAE,EAAI,EAAE,gBAAgB,UAAU,CACzH,EACGJ,GAAWH,EAAG,MAAQG,KCpCnC,IAOMK,GAeCC,GAtBPC,GAAAC,EAAA,KAAAC,IAOMJ,GAAS,CAACK,EAAMC,EAAOC,EAAM,GAAGF,CAAI,KAAK,IAAM,CAACG,EAAQC,IAAU,CACtED,EAAO,GAAKC,EAAOH,EAAKE,CAAM,EAAG,OAAOA,EAAO,EACjD,EAaOP,GAAQ,CAACS,EAAIC,EAAON,IAAS,CAClC,IAAIO,EAASL,EAAMF,CAAI,EAAE,KAAKK,EAAIC,CAAK,EACnC,OAAOC,GAAW,WAAYA,EAAOF,CAAE,EACtCV,GAAOK,CAAI,EAAEM,EAAOD,CAAE,CAC7B,IC1BA,IAOOG,GAPPC,GAAAC,EAAA,KAAAC,IACAC,KAMOJ,GAAQ,CAACK,EAAIC,IAAc,CAChC,IAAIC,EAAQF,EAAGG,CAAM,EAAIC,GAAM,CAAC,EAAGH,CAAS,EAAGI,EAAO,GAElDC,EAAQC,EAAQP,EAAG,SAAWQ,EAAKR,CAAE,EACzC,OAAIO,GAAOP,EAAG,YAAYM,EAASN,EAAG,cAAc,eAAe,EAAE,CAAC,EAE/DS,GAAU,CAGf,GAFAA,EAAS,OAAOA,GAAW,WAAaA,EAAOP,CAAK,EAAIO,EAEpDA,IAAWP,EACb,QAASQ,KAAKD,EAAQ,CACpB,IAAIE,EAAI,OAAO,yBAAyBF,EAAQC,CAAC,EAEjD,GAAIC,GAAG,IAAK,EAAGT,EAAMU,CAAQ,EAAEF,CAAC,EAAIG,EAASF,EAAE,IAAI,KAAKT,CAAK,CAAC,GAAGY,EAAI,EAAIH,EAAE,KAAK,KAAKT,CAAK,EAAG,QAAS,CACtG,IAAIa,EAAI,OAAON,EAAOC,CAAC,GAAM,WAAaD,EAAOC,CAAC,EAAE,KAAKR,CAAK,EAAIO,EAAOC,CAAC,EACtEA,KAAKR,EAAMU,CAAQ,EAAGV,EAAMQ,CAAC,EAAIK,EAC/Bb,EAAMU,CAAQ,EAAEF,CAAC,EAAKA,EAAE,CAAC,GAAK,KAAOK,GAAG,KAAQA,EAAIC,EAAOZ,GAAMW,CAAC,CAAC,CAC3E,CAGF,MAAO,CAACV,IAASA,EAAO,GAAM,CAACC,GAAW,OAAON,EAAGG,CAAM,EAAIc,EAAU,KAAOX,GAAQ,OAAOC,EAAM,SAAWP,CAAE,EAAGkB,EAAMX,GAASP,EAAIE,CAAK,EAAE,EAChJ,CACF,IC7BA,IAGMiB,GAKAC,GAMAC,GASCC,GAvBPC,GAAAC,EAAA,KAAAC,IAGMN,GAAa,CACjB,IAAK,CAACO,EAAGC,IAAMA,IAAMD,EAAE,EAAIA,EAAE,IAAIA,EAAE,CAAC,EAAIC,IAAMD,EAAE,EAAKA,EAAE,EAAIA,EAAE,EAAEA,EAAE,CAAC,EAAIA,EAAE,EAAKC,IAAMC,EAAWF,EAAIA,EAAE,IAAIC,CAAC,IAAM,OAAYD,EAAE,EAAEC,CAAC,EAAID,EAAE,IAAIC,CAAC,EAC3I,IAAK,CAACD,EAAGC,EAAGE,KAAOF,IAAMD,EAAE,EAAKA,EAAE,IAAMA,EAAE,EAAEA,EAAE,CAAC,EAAIG,GAAMF,IAAMD,EAAE,IAAQA,EAAE,IAAIC,CAAC,IAAM,OAAcD,EAAE,EAAEC,CAAC,EAAIE,EAASF,KAAMD,EAAE,IAAIE,CAAQ,GAAK,CAAC,GAAMF,EAAE,EAAEC,CAAC,EAAIE,GAAMH,EAAE,IAAFA,EAAE,EAAM,CAAC,IAAGC,CAAC,EAAIE,GAAG,GACzL,IAAK,IAAM,EACb,EACMT,GAAa,CACjB,IAAK,CAACM,EAAGC,IAAMA,IAAMD,EAAE,EAAIA,EAAE,EAAIC,IAAMD,EAAE,EAAIA,EAAE,EAAIC,IAAMC,EAAWF,EAAIA,EAAE,IAAIC,CAAC,IAAM,OAAYD,EAAE,EAAEC,CAAC,EAAID,EAAE,IAAIC,CAAC,EACjH,IAAK,CAACD,EAAGC,EAAGE,KAAOF,IAAMD,EAAE,EAAKA,EAAE,EAAIG,EAAKF,IAAMD,EAAE,IAAQA,EAAE,IAAIC,CAAC,IAAM,OAAcD,EAAE,EAAEC,CAAC,EAAIE,EAASF,KAAMD,EAAE,IAAIE,CAAQ,GAAK,CAAC,GAAMF,EAAE,EAAEC,CAAC,EAAIE,GAAMH,EAAE,IAAFA,EAAE,EAAM,CAAC,IAAGC,CAAC,EAAIE,GAAG,GAC3K,IAAK,IAAM,EACb,EAEMR,GAAKS,GAAK,CAAEA,EAAE,GAAG,OAAO,OAAO,IAAI,EAAGA,EAAE,GAAG,OAAO,CAAE,EASnDR,GAAQ,CAACS,EAAKC,EAAOC,IAAS,CACnC,GAAM,CAACC,EAAKC,CAAG,EAAIF,EAAK,MAAM,WAAW,EACrC,CAACG,EAASC,EAAS,GAAG,EAAIH,EAAI,KAAK,EAAE,QAAQ,SAAU,EAAE,EAAE,MAAM,SAAS,EAE1EI,EAAMP,EAAI,cACVQ,EAASR,EAAI,cAAgBA,EAAI,YAAcO,EAAI,eAAe,EAAE,GACpEE,EAAS,IAAI,IAAKC,EAAO,CAAC,EAAGC,EAAOC,EAAMC,EAAKC,EAAQ,GAEvDC,EAAQ,CAACC,EAAOC,IAAM,CACxB,IAAIC,EAAQ,IAAI,MAAMF,EAAOC,CAAC,EAC1BE,EAAKnB,EAAI,QAAUoB,EAAKpB,CAAG,EAAIA,EAAI,UAAU,EAAI,EACrD,MAAO,CAAE,GAAAmB,EAAI,MAAAH,EAAO,MAAAE,EAAO,KAAMC,EAAG,SAAWA,CAAG,CACpD,EAEIE,EAASC,GAAW,CACtB,GAAI,CAACA,EAAQ,OAAQ,OACrB,IAAIC,EAAID,EAAQ,OAAS,EAAIf,EAAI,uBAAuB,EAAI,KAC5D,QAASR,KAAKuB,EAASC,EAAIA,EAAE,YAAYxB,EAAE,IAAI,EAAIS,EAAO,OAAOT,EAAE,IAAI,EACnEwB,GAAGf,EAAO,OAAOe,CAAC,EACtB,QAASxB,KAAKuB,EAASE,EAAMzB,EAAE,GAAIA,EAAE,KAAK,CAC5C,EAEI0B,EAASC,EAAS,IAAMC,GAAO,IAAM,CACvC,IAAIC,EAAMjB,EAAOkB,EAAOD,EAAI,OAAQE,EAAQpB,EAAK,OAIjD,GADAI,EAAQ,GACJ,CAACc,EAAIG,CAAO,GAAG,QAASC,EAAI,EAAGA,EAAIH,EAAMG,IAC3C,GAAIJ,EAAII,CAAC,GAAK,KAAM,CAAElB,EAAQ,OAAOc,EAAII,CAAC,GAAM,SAAU,KAAM,EAGlE,GAAIlB,GAASgB,EAAO,CAElB,IAAIG,EAAU,CAAC,EAAGX,EAAU,CAAC,EAAGY,EAAQ,GAExC,QAASF,EAAI,EAAGA,EAAIH,EAAMG,IAAK,CAC7B,IAAIG,EAAKP,EAAII,CAAC,EAAGI,EAAM3B,EAAO,IAAI0B,CAAE,EAChCC,GACEA,EAAI,MAAM,IAAMJ,IAAGE,EAAQ,IAC/BE,EAAI,MAAM,EAAIJ,EAAGI,EAAI,MAAM,EAAID,IAE/BC,EAAMrB,EAAM,CAAE,EAAGd,EAAO,EAAGI,EAAS,EAAGC,EAAQ,EAAG6B,EAAI,EAAAH,EAAG,EAAG,IAAK,EAAG3C,EAAU,EAC9EoB,EAAO,IAAI0B,EAAIC,CAAG,EAClBd,EAAQ,KAAKc,CAAG,GAElBH,EAAQ,KAAKG,CAAG,CAClB,CAGA,GAAI3B,EAAO,KAAOoB,EAAM,CACtB,IAAIQ,EAAO,IAAI,IAAIT,CAAG,EACtB,OAAS,CAACO,EAAIC,CAAG,IAAK3B,EAAa4B,EAAK,IAAIF,CAAE,IAAK7C,GAAG8C,CAAG,EAAG3B,EAAO,OAAO0B,CAAE,EAAGD,EAAQ,GACzF,CAIA,GAFAb,EAAOC,CAAO,EAEVY,EAAO,CACT,IAAII,EAAO9B,EACX,QAASwB,EAAIC,EAAQ,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAC5C,IAAIO,EAAIN,EAAQD,CAAC,EAAE,GAAG,SAAWC,EAAQD,CAAC,EAAE,GAAG,SAAWC,EAAQD,CAAC,EAAE,GACjEO,EAAE,cAAgBD,GAAMA,EAAK,OAAOC,CAAC,EACzCD,EAAOC,CACT,CACF,CAEA7B,EAAOuB,CACT,KAAO,CAEL,GAAIH,GAASjB,IAAQe,EAAK,CACxB,QAAS7B,KAAKW,EAAMpB,GAAGS,CAAC,EACxBW,EAAK,OAAS,EAAGoB,EAAQ,EAAGrB,EAAO,MAAM,CAC3C,CAGA,GAFAI,EAAMe,EAEFC,EAAOC,EAAO,CAChB,QAASE,EAAIH,EAAMG,EAAIF,EAAOE,IAAK1C,GAAGoB,EAAKsB,CAAC,CAAC,EAC7CtB,EAAK,OAASmB,CAChB,CAEA,QAASG,EAAI,EAAGA,EAAI,KAAK,IAAIF,EAAOD,CAAI,EAAGG,IACzCtB,EAAKsB,CAAC,EAAE,MAAM,EAAIJ,EACdhB,IAAMF,EAAKsB,CAAC,EAAE,MAAM,EAAIpB,GAG9B,GAAIiB,EAAOC,EAAO,CAChB,IAAIR,EAAU,CAAC,EACf,QAASU,EAAIF,EAAOE,EAAIH,EAAMG,IAAK,CACjC,IAAII,EAAMtB,EACNC,EAAM,CAAE,EAAGd,EAAO,EAAGI,EAAS,EAAGC,EAAQ,EAAGsB,EAAII,CAAC,EAAG,EAAAA,EAAG,EAAG,IAAK,EAAG3C,EAAU,EAC5E0B,EAAM,CAAE,EAAGd,EAAO,EAAGI,EAAS,EAAGC,EAAQ,EAAGsB,EAAK,EAAAI,EAAG,EAAGpB,EAAM,EAAG,IAAK,EAAGxB,EAAU,EACtFsB,EAAK,KAAK0B,CAAG,EACTtB,GAAOL,EAAO,IAAImB,EAAII,CAAC,EAAGI,CAAG,EACjCd,EAAQ,KAAKc,CAAG,CAClB,CACAf,EAAOC,CAAO,CAChB,CACF,CACF,CAAC,CAAC,EAEEtB,EAAI,YAAY2B,GAAO,IAAM3B,EAAI,YAAYQ,CAAM,CAAC,EACxDR,EAAIwC,CAAM,EAAI,KAEd,IAAIC,EAAKC,GAAS,CAChB9B,EAAO,KACH,OAAO8B,GAAU,SAAU/B,EAAQ,MAAM,KAAK,CAAE,OAAQ+B,CAAM,EAAG,CAAC,EAAGV,IAAMA,EAAI,CAAC,EAC3EU,GAAO,cAAgB,QAAQ9B,EAAO,OAAO,KAAK8B,CAAK,EAAG/B,EAAQ,OAAO,OAAO+B,CAAK,GACzF/B,EAAQ+B,GAAS,CAAC,EACvB,IAAIC,EAAMC,EAAO,IAAM,CAAEjC,EAAMoB,CAAO,GAAG,MAAON,EAAO,CAAE,CAAC,EAC1D,MAAO,IAAMkB,EAAI,CACnB,EACA,OAAAF,EAAG,KAAOI,EAAMzC,CAAG,EACnBqC,EAAGK,CAAI,EAAI,IAAM,CAAE,QAAS/C,KAAKW,EAAMpB,GAAGS,CAAC,EAAGW,EAAK,OAAS,EAAGD,EAAO,MAAM,CAAE,EACvEgC,CACT,ICxIA,IAUOM,GAVPC,GAAAC,EAAA,KAAAC,IAUOH,GAAQ,CAACI,EAAIC,EAAIC,EAAIC,IAASC,GAAKC,EAAKL,EAAIG,EAAM,OAAOC,GAAM,YAAc,CAACE,EAAKN,CAAE,EAAII,EAAEJ,EAAG,aAAaG,CAAI,CAAC,EAAIC,CAAC,ICV5H,IAQOG,GARPC,GAAAC,EAAA,KAAAC,IAQOH,GAASI,GAAWC,GAAS,CAAE,IAAIC,EAAKC,EAAKH,CAAM,EAAG,QAASI,KAAOH,EAAOI,EAAKL,EAAQE,EAAKE,EAAME,GAASF,CAAG,EAAGH,EAAMG,CAAG,CAAC,CAAE,ICRvI,IAWOG,GAXPC,GAAAC,EAAA,KAAAC,IAWOH,GAAQ,CAACI,EAAIC,EAAOC,EAAMC,IAAS,CAIxC,GAAM,CAACC,EAAM,GAAGC,CAAI,EAAIF,EAAK,MAAM,CAAC,EAAE,MAAM,GAAG,EAC7CG,EAAWC,EAAML,CAAI,EAAE,KAAKF,CAAE,EAC9BQ,EAAUC,EAAS,OAAO,OAAOC,GAAKJ,EAASL,EAAQU,GAAO,OAAOA,GAAO,WAAaA,EAAGD,CAAC,EAAIC,CAAE,EAAG,CAAE,OAAQX,CAAG,CAAC,EAAGK,CAAI,EAE7H,OAAAG,EAAQ,OAAO,iBAAiBJ,EAAMI,EAASA,CAAO,EAC/C,CACL,CAAC,OAAO,OAAO,GAAI,CACjBA,EAAQ,OAAO,oBAAoBJ,EAAMI,CAAO,EAChDA,EAAQ,OAAO,OAAO,IAAI,CAC5B,CACF,CACF,IC1BA,IAWOI,GAXPC,GAAAC,EAAA,KAAAC,IAWOH,GAAQ,CAACI,EAAIC,EAAOC,EAAMC,IAAU,CACzC,IAAIC,EACFC,EAEIC,EAAWC,EAAML,CAAI,EAAE,KAAKF,CAAE,EAEhCQ,EAAQL,EAAM,MAAM,IAAI,EAAE,IAAI,CAACM,EAAMC,EAAG,CAAE,OAAAC,CAAO,IAAMF,EAAK,MAAM,GAAG,EAAE,OACzE,CAACG,EAAMC,IAAQ,CACb,GAAM,CAACC,EAAM,GAAGC,CAAI,EAAIF,EAAI,MAAM,CAAC,EAAE,MAAM,GAAG,EAExCG,EAAO,CAACC,EAAIC,IAAMd,EAAM,OAAOa,GAAO,WAAaA,EAAGC,CAAC,EAAID,EAC3DE,EAAUC,EAAS,OAAO,OAC9BF,IAAOR,EAA2CM,EAAKZ,EAAKc,CAAC,EAAlDZ,EAASL,EAAQgB,GAAOD,EAAKC,EAAIC,CAAC,CAAC,EAAkBb,EAAI,EAAGA,EAAMG,GAAOE,EAAI,GAAKC,CAAM,EAAE,GACrG,CAAE,OAAQX,CAAG,CACf,EAAGe,CAAI,EAGP,OAAQM,IACNA,EAAQT,IAAO,EACfO,EAAQ,OAAO,iBAAiBL,EAAMK,EAASA,CAAO,EACtD,KAAOE,IAAQ,EAAGF,EAAQ,OAAO,oBAAoBL,EAAMK,CAAO,GAEtE,EAAG,IAAI,CACT,EAEA,OAAAd,EAAMG,EAAM,CAAC,EAAE,EAER,CACL,CAAC,OAAO,OAAO,GAAI,CACjBH,IAAM,CACR,CACF,CACF,IC3CA,IAEMiB,GASCC,GAXPC,GAAAC,EAAA,KAAAC,IAEMJ,GAAaK,GAAK,CAAC,CAACA,GAAG,QAStBJ,GAAQ,CAACK,EAAIC,IAAU,CAE5B,GAAID,EAAG,QAAS,CACd,IAAIE,EAAKC,EAAOH,EAAG,UACjBI,EAAMJ,EAAG,cACTK,EAASL,EAAG,QAEd,OAAKK,GAAQL,EAAG,YAAYK,EAASD,EAAI,eAAe,EAAE,CAAC,EAEpDL,GAAK,CAQV,GAPI,OAAOA,GAAM,aAAYA,EAAIA,EAAEI,CAAI,GAGnCH,EAAG,UAASA,EAAG,OAAO,EAAGA,EAAG,QAAQ,gBAAgB,GACxDE,IAAMI,CAAQ,IAAI,EAClBJ,GAAK,OAAO,EAERH,GAAK,MAAQA,IAAM,GACrB,OAAAG,EAAMR,GAAWK,CAAC,GACbI,EAAOJ,EAAE,UAAWQ,EAAKR,CAAC,GAC3BQ,GAAML,EAAME,EAAI,cAAc,UAAU,EAAGF,EAAI,UAAYC,EAAOJ,EAAGG,EAAI,EAE7EM,EAAU,IAAMC,EAAMP,EAAKD,CAAK,CAAC,EAEjCI,EAAO,OAAOH,EAAI,OAAO,EAGrBF,EAAG,SAASA,EAAG,WAAW,OAAO,EAAG,IAAU,GAAGE,EAAI,UAAU,EAE5DA,EAAII,CAAQ,EAEZN,EAAG,UAASA,EAAG,WAAW,OAAS,EAAGG,EAAO,GACxD,CACF,CAEA,OAAOJ,GAAE,CA9CX,IAAAW,EA+CI,OAAAX,EAAI,OAAOA,GAAM,WAAaA,EAAEC,EAAG,SAAS,EAAID,EAChDL,GAAWK,CAAC,EAAIC,EAAG,gBAAgBD,EAAE,QAAQ,UAAU,EAAI,CAAC,EAAKC,EAAG,UAAYD,GAAY,GAC5FC,EAAAU,EAAGC,KAAHX,EAAAU,GAAe,MACfF,EAAU,IAAMC,EAAMT,EAAIC,CAAK,CAAC,EAChCD,EAAGM,CAAQ,EAEf,ICrDA,IAQOM,GARPC,GAAAC,EAAA,KAQOF,GAAQ,CAACG,EAAIC,EAAOC,IAAS,CAClC,IAAMC,EAAMH,EAAG,cACTI,EAAUD,EAAI,cAAc,SAAS,EACvCE,EAAgB,KAGpB,OAAAL,EAAG,OAAOI,CAAO,EAETE,GAAU,CAChB,IAAMC,EAAOP,EAAG,YAAY,EACtBQ,EAAS,OAAOF,GAAU,SAC3BC,EAAK,gBAAgBD,CAAK,GAAKH,EAAI,cAAcG,CAAK,EACvDA,GAAO,WAAa,EAAIA,EACtBA,EAAQH,EAAI,KAAO,KAEzB,GAAIK,IAAWH,EAEf,OAAIG,EAAQA,EAAO,YAAYR,CAAE,EAC5BI,EAAQ,MAAMJ,CAAE,EAErBK,EAAgBG,EAET,IAAM,CAAEH,IAAkBD,EAAQ,MAAMJ,CAAE,EAAGK,EAAgB,KAAM,CAC5E,CACF,IChCA,IAKOI,GALPC,GAAAC,EAAA,KAKOF,GAASG,GAAQC,GAAUD,EAAG,OAAS,CAAC,CAACC,ICLhD,IAiBOC,GAjBPC,GAAAC,EAAA,KAAAC,IAiBOH,GAAQ,CAACI,EAAIC,EAAOC,EAAMC,IAAS,CACxC,GAAM,CAAC,CAAE,GAAGC,CAAI,EAAID,EAAK,MAAM,GAAG,EAChCE,EAAWC,EAAMJ,CAAI,EAAE,KAAKF,CAAE,EAE5BO,EAOJ,OALgBC,EAAS,OAAO,OAAO,IAAM,CAC3C,IAAMC,EAASJ,EAASJ,EAAOS,GAAM,OAAOA,GAAO,WAAaA,EAAGV,CAAE,EAAIU,CAAE,EACvE,OAAOD,GAAW,aAAYF,EAAUE,EAC9C,EAAG,CAAE,OAAQT,CAAG,CAAC,EAAGI,CAAI,EAEhB,EAED,CACL,CAACO,CAAQ,GAAI,CACXJ,IAAU,EACVA,EAAU,IACZ,CACF,CACF,ICpCA,IAeOK,GAfPC,GAAAC,EAAA,KAAAC,IAeOH,GAAQ,CAACI,EAAIC,EAAOC,EAAMC,IAAS,CACxC,GAAM,CAAC,CAAE,GAAGC,CAAI,EAAID,EAAK,MAAM,GAAG,EAChCE,EAAWC,EAAMJ,CAAI,EAAE,KAAKF,CAAE,EAG1BO,EACJP,EAAG,OAAS,WAAa,IAAMA,EAAG,QAClCA,EAAG,OAAS,kBAAoB,IAAM,CAAC,GAAGA,EAAG,eAAe,EAAE,IAAIQ,GAAKA,EAAE,KAAK,EAC9E,0BAA0B,KAAKR,EAAG,IAAI,EAAI,IAAMA,EAAG,MACnD,IAAMA,EAAG,cAAgB,EAAI,KAAO,MAAMA,EAAG,aAAa,EAAIA,EAAG,MAAQA,EAAG,cAExES,EAAUC,EAAS,OAAO,OAAO,IAAM,CAC3CL,EAASJ,EAAOU,GAAM,OAAOA,GAAO,WAAaA,EAAGJ,EAAO,CAAC,EAAII,CAAE,CACpE,EAAG,CAAE,OAAQX,CAAG,CAAC,EAAGI,CAAI,EAExB,OAAAJ,EAAG,iBAAiB,QAASS,CAAO,EACpCT,EAAG,iBAAiB,SAAUS,CAAO,EAE9B,CACL,CAACG,CAAQ,GAAI,CACXZ,EAAG,oBAAoB,QAASS,CAAO,EACvCT,EAAG,oBAAoB,SAAUS,CAAO,CAC1C,CACF,CACF,ICvCA,IAgBMI,GA2BCC,GA3CPC,GAAAC,EAAA,KAAAC,IAgBMJ,GAAY,CAACK,EAAIC,EAAOC,EAAMC,IAAS,CAC3C,GAAM,CAAC,CAAE,GAAGC,CAAI,EAAID,EAAK,MAAM,GAAG,EAC5BE,EAAWC,EAAMJ,CAAI,EAAE,KAAKF,CAAE,EAEhCO,EAAOH,EAAK,SAAS,MAAM,EAEzBI,EAAUC,EAAS,OAAO,OAAQC,GAAU,CAChDL,EAASJ,EAAOU,GAAM,OAAOA,GAAO,WAAaA,EAAGD,CAAK,EAAIC,CAAE,CACjE,EAAG,CAAE,OAAQX,CAAG,CAAC,EAAGI,CAAI,EAElBQ,EAAK,IAAI,qBAAqBC,GAAW,CAC7C,QAAWH,KAASG,EACdH,EAAM,iBACRF,EAAQE,CAAK,EACTH,GAAMK,EAAG,WAAW,EAG9B,CAAC,EAED,OAAAA,EAAG,QAAQZ,CAAE,EAEN,CACL,CAACc,CAAQ,GAAI,CAAEF,EAAG,WAAW,CAAE,CACjC,CACF,EAEAjB,GAAU,SAAW,GACdC,GAAQD,KC3Cf,IAeMoB,GAuBCC,GAtCPC,GAAAC,EAAA,KAAAC,IAeMJ,GAAS,CAACK,EAAIC,EAAOC,EAAMC,IAAS,CACxC,GAAM,CAAC,CAAE,GAAGC,CAAI,EAAID,EAAK,MAAM,GAAG,EAC5BE,EAAWC,EAAMJ,CAAI,EAAE,KAAKF,CAAE,EAE9BO,EAAUC,EAAS,OAAO,OAAQC,GAAS,CAC/CJ,EAASJ,EAAOS,GAAM,OAAOA,GAAO,WAAaA,EAAGD,CAAI,EAAIC,CAAE,CAChE,EAAG,CAAE,OAAQV,CAAG,CAAC,EAAGI,CAAI,EAElBO,EAAK,IAAI,eAAeC,GAAW,CACvC,QAAWC,KAASD,EAAS,CAC3B,IAAME,EAAOD,EAAM,YACnBN,EAAQ,CAAE,MAAOO,EAAK,MAAO,OAAQA,EAAK,OAAQ,MAAAD,CAAM,CAAC,CAC3D,CACF,CAAC,EAED,OAAAF,EAAG,QAAQX,CAAE,EAEN,CACL,CAACe,CAAQ,GAAI,CAAEJ,EAAG,WAAW,CAAE,CACjC,CACF,EAEAhB,GAAO,SAAW,GACXC,GAAQD,KCtCf,IAAAqB,GAAA,GAAAC,GAAAD,GAAA,WAAAE,GAAA,aAAAC,EAAA,aAAAC,GAAA,YAAAC,GAAA,YAAAC,GAAA,WAAAC,EAAA,WAAAC,EAAA,UAAAC,EAAA,UAAAC,GAAA,UAAAC,GAAA,aAAAC,EAAA,cAAAC,EAAA,QAAAC,KAAA,IAmEMC,GAoCAC,GAIAC,GAoEAC,GAkBAC,GAOAC,GA2DAd,GAKCD,GAxQPgB,GAAAC,EAAA,KAKAC,KACAC,IACAC,KACAD,IAEAE,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAIAC,GAAO,SAAWC,GAAQ,SAAW,GAErC,OAAO,OAAOC,GAAW,CACvB,EAAGC,GACH,GAAIC,GACJ,MAAOC,GACP,KAAMC,GACN,KAAMC,GACN,MAAOC,GACP,GAAIC,GACJ,MAAOC,GACP,IAAKC,GACL,MAAOC,GACP,GAAIC,GACJ,KAAMC,GACN,KAAMC,GACN,OAAQC,GACR,OAAQC,GACR,MAAOjB,GACP,OAAQC,GACR,UAAWiB,GACX,OAAQC,EACV,CAAC,EAWKnD,GAAM,CAACoD,EAAQC,EAAMC,EAAMC,IAAU,CACzC,GAAI,CAACC,EAAS,GAAGC,CAAI,EAAIJ,EAAK,MAAM,GAAG,EAAGK,EAASxB,GAAUsB,CAAO,GAAKtB,GAAU,EAC/EyB,EAAUF,EAAK,OAAS,EAE5B,MAAO,IAAM,CACX,IAAIG,EAAKR,EAAQS,EAAQC,EAAQC,EAASC,EAAQ,EAWlD,GATIL,IAEFG,EAASrE,EAAO,CAAC,EACjBsE,EAAUE,EAAS,OAAO,OAAO,IAAMH,EAAO,QAAS,CAAE,OAAAV,CAAO,CAAC,EAAGK,CAAI,EACxEG,EAAKG,EAAQ,QAAUX,GAGzBS,EAASH,EAAOE,EAAIL,EAAOD,EAAME,CAAO,EAEpC,CAACK,GAAQ,KAAM,OAAOA,IAASK,CAAQ,EAE3C,IAAIC,EAAWN,EAAO,MAAQO,EAAMd,CAAI,EAAE,KAAKM,CAAE,EAC/CS,EAAMC,EAAM,KAAO,OAAOD,GAAS,YAAcA,EAAK,EAAGA,EAAK,MAI3DE,EAAKX,CAAE,IAAGL,EAAQK,EAAGY,CAAM,GAAKjB,GAErC,IAAIkB,EAAMd,EAAUnE,EAAO,KACzBsE,EAAO,OAASE,EAAQD,EAAQ,GAAKC,EAAQF,EAAO,MAAOO,EAAOF,EAASZ,EAAOM,CAAM,GACjFS,EACR,EAAI9E,EAAO,KAAO6E,EAAOF,EAASZ,EAAOM,CAAM,EAAGS,EAAI,EACvD,GAAI,EAAEE,KAAUZ,GAAK,OAAOa,EAC5B,IAAIC,EAAK,EACT,MAAO,IAAM,CAAMA,IAAYA,EAAK,EAAGD,EAAI,EAAGZ,EAAOc,CAAI,EAAId,EAAOc,CAAI,EAAE,EAAIf,EAAGM,CAAQ,IAAI,EAAE,CACjG,CACF,EAGMjE,GAAa,GAAO,EAAQ,OAAO,GAAM,SAAW,GACvD,CAAC,CAAC,CAAE2E,EAAGC,CAAC,EAAI,EAAE,MAAM,kBAAkB,GAAK,CAAC,KAAOD,EAAI,CAACA,EAAGC,IAAM,IAAMD,EAAI,IAAOC,IAAM,IAAMD,EAAI,IAAQA,IAAI,EADnF,EAIxB1E,GAAa,GACjB,IAAM,OAAS,oBACf,IAAM,MAAQ,sBACd,CAAC,GAAK,IAAM,OAAS,eACpB4E,GAAO,WAAWA,EAAI7E,GAAU,CAAC,CAAC,EAGrC,OAAO,OAAO8E,EAAU,CAMtB,SAAU,CAACD,EAAIE,EAAGC,IAAM5F,GAASyF,EAAI5E,GAAU8E,IAAM,YAAcC,EAAID,CAAC,EAAGA,IAAM,aAAeC,IAAM,WAAW,EAMjH,SAAU,CAACH,EAAIE,IAAMnF,EAASiF,EAAI5E,GAAU8E,CAAC,CAAC,EAE9C,MAAO,CAACF,EAAIE,KAAO,CAACE,EAAQhF,GAAU8E,CAAC,IAAOG,GAAMD,EAAM,IAAMJ,EAAGK,CAAC,CAAC,GAAG,EAExE,KAAOL,GAAQ,GAAM,eAAe,IAAMA,EAAG,CAAC,CAAC,EAE/C,IAAMA,GAAQ,GAAM,sBAAsB,IAAMA,EAAG,CAAC,CAAC,EAGrD,KAAM,CAACA,EAAIM,EAAOC,KAASA,EAAOF,GAAM,CAACC,IAAUA,EAAQ,EAAGN,EAAGK,CAAC,GAAIE,EAAI,KAAO,GAAMA,GAGvF,OAAQP,IAAOA,EAAG,OAASA,EAAG,OAAO,cAAc,YAAaA,GAEhE,SAAUA,IAAOA,EAAG,OAASA,EAAG,OAAO,cAAeA,GAEtD,KAAMA,IAAOA,EAAG,OAASA,EAAG,OAAO,cAAc,gBAAiBA,GAElE,KAAMA,IAAOA,EAAG,OAASA,EAAG,OAAO,cAAc,KAAMA,GAEvD,OAAQA,IAAOA,EAAG,OAASA,EAAG,OAAO,WAAYA,GAEjD,KAAOA,GAAQ,GAAO,EAAE,SAAWA,EAAG,QAAUA,EAAG,CAAC,EAEpD,KAAM,CAACA,EAAIQ,IAAQ,CACjB,IAAIC,EAAMT,EAAG,OAAO,cAAeU,EAAYL,GAAKG,EAAMH,EAAE,OAAQM,EAAQF,EAAI,cAAgBA,EAAI,aAAa,MACjH,OAAAA,EAAI,iBAAiB,cAAeC,EAAW,EAAI,EAC5C,OAAO,OACXL,GAAMA,IAAMM,GAAS,CAACX,EAAG,OAAO,SAASK,EAAE,OAAS,QAAUG,GAAOH,EAAE,OAASA,EAAE,MAAM,GAAKA,EAAE,OAAO,aAAeL,EAAGK,CAAC,EAC1H,CAAE,OAAQI,EAAK,CAACrB,CAAQ,EAAG,IAAMqB,EAAI,oBAAoB,cAAeC,EAAW,EAAI,CAAE,CAC3F,CACF,EAGA,QAAUV,GAAQ,IAAO,GAAG,eAAe,EAAGA,EAAG,CAAC,GAElD,KAAM,CAACA,EAAIY,IAAUP,IAAOO,IAAO,CAAC,IAAM,IAAMP,GAAG,yBAAyB,EAAIA,GAAG,gBAAgB,EAAGL,EAAGK,CAAC,GAE1G,QAASL,IAAOA,EAAG,QAAU,GAAMA,GAEnC,QAASA,IAAOA,EAAG,QAAU,GAAMA,EACrC,CAAC,EAEDC,EAAS,QAAUA,EAAS,KAMtB5E,GAAO,CACX,KAAMgF,GAAKA,EAAE,SAAWA,EAAE,MAAQ,WAAaA,EAAE,MAAQ,OACzD,MAAOA,GAAKA,EAAE,UAAYA,EAAE,MAAQ,QACpC,IAAKA,GAAKA,EAAE,QAAUA,EAAE,MAAQ,MAChC,KAAMA,GAAKA,EAAE,SAAWA,EAAE,MAAQ,OAClC,IAAKA,GAAKA,EAAE,SAAWA,EAAE,MAAQ,UACjC,MAAOA,GAAKA,EAAE,KAAK,WAAW,OAAO,EACrC,MAAOA,GAAKA,EAAE,MAAQ,QACtB,IAAKA,GAAKA,EAAE,KAAK,WAAW,KAAK,EACjC,IAAKA,GAAKA,EAAE,MAAQ,MACpB,MAAOA,GAAKA,EAAE,MAAQ,QAAOA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,IAC5D,OAAQA,GAAKA,EAAE,MAAQ,UAAYA,EAAE,MAAQ,YAC7C,MAAOA,GAAK,OAAO,KAAKA,EAAE,GAAG,EAC7B,OAAQA,GAAK,YAAY,KAAKA,EAAE,GAAG,EACnC,KAAMA,GAAK,OAAO,KAAKA,EAAE,GAAG,CAC9B,EAGM/E,GAAW,CAACuF,EAAG,IAAMxF,GAAKwF,CAAC,IAAI,CAAC,GAAK,EAAE,KAAK,YAAY,IAAMA,GAAK,EAAE,SAAWA,EAGtF,QAASA,KAAKxF,GAAM4E,EAASY,CAAC,EAAI,CAACb,EAAIE,EAAGC,IAAOE,GAAMhF,GAAKwF,CAAC,EAAER,CAAC,IAAM,CAACH,GAAK5E,GAAS4E,EAAGG,CAAC,KAAO,CAACF,GAAK7E,GAAS6E,EAAGE,CAAC,IAAML,EAAGK,CAAC,EAIvH9E,GAAUuF,GAAK,CACnB,IAAIC,EAAI,EAAGC,EAAI,GAAIC,EAAM,EACzB,QAASC,KAAMJ,EAAG,CAChB,GAAIE,EAAG,CACDC,EAAKA,EAAM,EACNC,IAAO,KAAMD,EAAM,EACnBC,IAAOF,IAAGA,EAAI,IACvB,QACF,CACA,GAAIE,IAAO,KAAO,CAACH,EAAG,MAAO,GACzBG,IAAO,IAAKH,IACPG,IAAO,IAAKH,KACZG,IAAO,KAAOA,IAAO,KAAOA,IAAO,OAAKF,EAAIE,EACvD,CACA,MAAO,EACT,EAGAjG,GAAI,CAGF,QAASuD,IAEH,oBAAoB,KAAKA,CAAI,GAExBjD,GAAQiD,CAAI,IAChBA,EAAO,UAAUA,CAAI,IAEtB,YAAY,KAAKA,CAAI,IAAGA,EAAO,qBAAqBA,CAAI,QACrD5D,EAAM,YAAY,sBAAsB4D,CAAI,GAAG,GAGxD,IAAK,CAACM,EAAIP,EAAMC,EAAMC,IAEhBF,EAAK,SAAS,IAAI,EAAU,IAAM4C,GAAKrC,EAAIL,EAAOD,EAAMD,CAAI,EAAEa,CAAQ,EACnEb,EAAK,MAAM,GAAG,EAAE,OAAO,CAAC6C,EAAMC,IAAQ,CAC3C,IAAI3C,EAAU2C,EAAI,MAAM,GAAG,EAAE,CAAC,EAE1BC,EAAMlE,GAAUsB,CAAO,EACvB7D,EAAQwG,EAAI,WAAW,IAAI,EAAI,IAAME,GAAOzC,EAAIL,EAAOD,EAAM6C,CAAG,EAAEjC,CAAQ,EAC1EkC,GAAK,SAAW,IAAMA,EAAIxC,EAAIL,EAAOD,EAAM6C,CAAG,EAAEjC,CAAQ,EACxDlE,GAAI4D,EAAIuC,EAAK7C,EAAMC,CAAK,EAC5B,OAAQ2C,EAAe,CAACI,EAAGV,KAAOU,EAAIJ,EAAK,EAAGN,EAAIjG,EAAM,EAAG,IAAM,CAAE2G,EAAE,EAAGV,EAAE,CAAE,GAA7DjG,CACjB,EAAG,IAAI,EAET,GAAG4G,EACL,CAAC,EAID7G,EAAM,IAAMK,GACZL,EAAM,MAAQE,GACdF,EAAM,UAAYwC,GAClBxC,EAAM,SAAWqF,EAMXxF,GAAUG,EAAM,QAAWkE,GAAOA,EAAGM,CAAQ,IAAI,EAGvDxE,EAAM,MAAQC,GAEPL,GAAQI,ICtQf,IAAA8G,GAAA,GAAAC,GAAAD,GAAA,cAAAE,EAAA,WAAAC,GAAA,WAAAC,EAAA,UAAAC,GAAA,aAAAC,GAAA,WAAAC,GAAA,WAAAC,GAAA,cAAAC,KAsCA,SAASC,IAAAA,CACR,GAAIC,EAAa,EAChBA,QADD,CAQA,QAHIC,EACAC,EAAAA,GAEGC,KAAP,QAAoC,CACnC,IAAIC,EAA6BD,GAKjC,IAJAA,GAAAA,OAEAE,KAEOD,IAAP,QAA6B,CAC5B,IAAME,EAA2BF,EAAOG,EAIxC,GAHAH,EAAOG,EAAAA,OACPH,EAAOI,GAAAA,GAEP,EApDc,EAoDRJ,EAAOI,IAAsBC,GAAiBL,CAAAA,EACnD,GAAA,CACCA,EAAOM,EAAAA,CAMR,OALSC,EAAAA,CACHT,IACJD,EAAQU,EACRT,EAAAA,GAEF,CAEDE,EAASE,CACV,CACD,CAIA,GAHAD,GAAiB,EACjBL,IAEIE,EACH,MAAMD,CAjCP,CAmCD,CAcA,SAASW,GAASC,EAAAA,CACjB,GAAIb,EAAa,EAChB,OAAOa,EAAAA,EA1DRb,IA6DA,GAAA,CACC,OAAOa,EAAAA,CAGR,QAFC,CACAd,GAAAA,CACD,CACD,CAYA,SAASe,GAAaD,EAAAA,CACrB,IAAME,EAAcC,EACpBA,EAAAA,OACA,GAAA,CACC,OAAOH,EAAAA,CAGR,QAFC,CACAG,EAAcD,CACf,CACD,CAWA,SAASE,GAAcC,EAAAA,CACtB,GAAIF,IAAJ,OAAA,CAIA,IAAIG,EAAOD,EAAOE,EAClB,GAAID,IAAJ,QAA0BA,EAAKE,IAAYL,EAa1CG,OAAAA,EAAO,CACNG,EAAU,EACVC,EAASL,EACTM,EAAaR,EAAYS,EACzBC,EAAAA,OACAL,EAASL,EACTW,EAAAA,OACAC,EAAAA,OACAC,EAAeV,CAAAA,EAGZH,EAAYS,IAAhB,SACCT,EAAYS,EAASC,EAAcP,GAEpCH,EAAYS,EAAWN,EACvBD,EAAOE,EAAQD,EA9JA,GAkKXH,EAAYR,GACfU,EAAOY,EAAWX,CAAAA,EAEZA,EACR,GAAWA,EAAKG,IAAhB,GAECH,OAAAA,EAAKG,EAAW,EAeZH,EAAKO,IAAT,SACCP,EAAKO,EAAYF,EAAcL,EAAKK,EAEhCL,EAAKK,IAAT,SACCL,EAAKK,EAAYE,EAAcP,EAAKO,GAGrCP,EAAKK,EAAcR,EAAYS,EAC/BN,EAAKO,EAAAA,OAELV,EAAYS,EAAUC,EAAcP,EACpCH,EAAYS,EAAWN,GAKjBA,CAxER,CA2ED,CA6EA,SAASY,EAAqBC,EAAiBC,EAAAA,CAC9CC,KAAKC,EAASH,EACdE,KAAKZ,EAAW,EAChBY,KAAKd,EAAAA,OACLc,KAAKE,EAAAA,OACLF,KAAKG,EAAWJ,GAASK,QACzBJ,KAAKK,EAAaN,GAASO,UAC3BN,KAAKO,KAAOR,GAASQ,IACtB,CAkIgB,SAAAvB,GAAUc,EAAWC,EAAAA,CACpC,OAAW,IAAAF,EAAOC,EAAOC,CAAAA,CAC1B,CAEA,SAASxB,GAAiBiC,EAAAA,CAIzB,QACKvB,EAAOuB,EAAOjB,EAClBN,IADkBM,OAElBN,EAAOA,EAAKO,EAEZ,GAKCP,EAAKI,EAAQD,IAAaH,EAAKG,GAAAA,CAG9BH,EAAKI,EAAQoB,EAAAA,GAEdxB,EAAKI,EAAQD,IAAaH,EAAKG,EAE/B,MAAA,GAKF,MAAA,EACD,CAEA,SAASsB,GAAeF,EAAAA,CAavB,QACKvB,EAAOuB,EAAOjB,EAClBN,IADkBM,OAElBN,EAAOA,EAAKO,EACX,CACD,IAAMmB,EAAe1B,EAAKI,EAAQH,EAOlC,GANIyB,IAAJ,SACC1B,EAAKU,EAAgBgB,GAEtB1B,EAAKI,EAAQH,EAAQD,EACrBA,EAAKG,EAAAA,GAEDH,EAAKO,IAAT,OAAoC,CACnCgB,EAAOjB,EAAWN,EAClB,KACD,CACD,CACD,CAEA,SAAS2B,GAAeJ,EAAAA,CASvB,QARIvB,EAAOuB,EAAOjB,EACdsB,EAAAA,OAOG5B,IAAP,QAA2B,CAC1B,IAAM6B,EAAO7B,EAAKK,EAUdL,EAAKG,IAAT,IACCH,EAAKI,EAAQ0B,EAAa9B,CAAAA,EAEtB6B,IAAJ,SACCA,EAAKtB,EAAcP,EAAKO,GAErBP,EAAKO,IAAT,SACCP,EAAKO,EAAYF,EAAcwB,IAahCD,EAAO5B,EAGRA,EAAKI,EAAQH,EAAQD,EAAKU,EACtBV,EAAKU,IAAT,SACCV,EAAKU,EAAAA,QAGNV,EAAO6B,CACR,CAEAN,EAAOjB,EAAWsB,CACnB,CAkBA,SAASG,EAAyBrC,EAAmBoB,EAAAA,CACpDF,EAAOoB,KAAKjB,KAAAA,MAAMkB,EAElBlB,KAAKmB,EAAMxC,EACXqB,KAAKT,EAAAA,OACLS,KAAKoB,EAAiBC,GAAgB,EACtCrB,KAAK1B,EAjjBW,EAkjBhB0B,KAAKG,EAAWJ,GAASK,QACzBJ,KAAKK,EAAaN,GAASO,UAC3BN,KAAKO,KAAOR,GAASQ,IACtB,CAqJA,SAASe,GACR3C,EACAoB,EAAAA,CAEA,OAAW,IAAAiB,EAASrC,EAAIoB,CAAAA,CACzB,CAEA,SAASwB,GAAcrD,EAAAA,CACtB,IAAMsD,EAAUtD,EAAOuD,EAGvB,GAFAvD,EAAOuD,EAAAA,OAEgB,OAAZD,GAAY,WAAY,CAvrBnC1D,IA2rBC,IAAMe,EAAcC,EACpBA,EAAAA,OACA,GAAA,CACC0C,EAAAA,CASD,OARS/C,EAAAA,CACRP,MAAAA,EAAOI,GAAAA,GACPJ,EAAOI,GA9tBO,EA+tBdoD,GAAcxD,CAAAA,EACRO,CACP,QAAC,CACAK,EAAcD,EACdhB,GAAAA,CACD,CACD,CACD,CAEA,SAAS6D,GAAcxD,EAAAA,CACtB,QACKe,EAAOf,EAAOqB,EAClBN,IADkBM,OAElBN,EAAOA,EAAKO,EAEZP,EAAKI,EAAQ0B,EAAa9B,CAAAA,EAE3Bf,EAAOiD,EAAAA,OACPjD,EAAOqB,EAAAA,OAEPgC,GAAcrD,CAAAA,CACf,CAEA,SAASyD,GAAwB9C,EAAAA,CAChC,GAAIC,IAAgBkB,KACnB,MAAU,IAAA4B,MAAM,qBAAA,EAEjBhB,GAAeZ,IAAAA,EACflB,EAAcD,EAEdmB,KAAK1B,GAAAA,GA7vBW,EA8vBZ0B,KAAK1B,GACRoD,GAAc1B,IAAAA,EAEfnC,GAAAA,CACD,CA+BA,SAASgE,GAAqBlD,EAAcoB,EAAAA,CAC3CC,KAAKmB,EAAMxC,EACXqB,KAAKyB,EAAAA,OACLzB,KAAKT,EAAAA,OACLS,KAAK3B,EAAAA,OACL2B,KAAK1B,EApyBW,GAqyBhB0B,KAAKO,KAAOR,GAASQ,IACtB,CAgEA,SAASrC,GAAOS,EAAcoB,EAAAA,CAC7B,IAAM7B,EAAS,IAAI2D,GAAOlD,EAAIoB,CAAAA,EAC9B,GAAA,CACC7B,EAAOM,EAAAA,CAIR,OAHSC,EAAAA,CACRP,QAAO4D,EAAAA,EACDrD,CACP,CAGA,IAAMsD,EAAU7D,EAAO4D,EAASE,KAAK9D,CAAAA,EACpC6D,SAAgBE,OAAOF,OAAAA,EAAWA,EAC5BA,CACR,CA33BA,IAAMG,GAwGFpD,EAoBAb,GACAH,EACAK,GAIAkD,GAlIJc,GAAAC,EAAA,KAAMF,GAAeD,OAAAA,IAAW,gBAAA,EAwG5BnD,EAAAA,OAoBAb,GAAAA,OACAH,EAAa,EACbK,GAAiB,EAIjBkD,GAAgB,EAuKpBxB,EAAOwC,UAAUC,MAAQJ,GAEzBrC,EAAOwC,UAAU5B,EAAW,UAAA,CAC3B,MAAA,EACD,EAEAZ,EAAOwC,UAAUzC,EAAa,SAAUX,EAAAA,CAAI,IAAAsD,EAAAvC,KACrCwC,EAAUxC,KAAKE,EACjBsC,IAAYvD,GAAQA,EAAKQ,IAAbR,SACfA,EAAKS,EAAc8C,EACnBxC,KAAKE,EAAWjB,EAEZuD,IAAJ,OACCA,EAAQ/C,EAAcR,EAEtBL,GAAU,UAAA,CAAA,IAAK6D,GACdA,EAAAF,EAAKpC,IAAQ,MAAbsC,EAAexB,KAAKsB,CAAAA,CACrB,CAAA,EAGH,EAEA1C,EAAOwC,UAAUtB,EAAe,SAAU9B,EAAAA,CAAI,IAAAyD,EAAA1C,KAE7C,GAAIA,KAAKE,IAAT,OAAiC,CAChC,IAAMY,EAAO7B,EAAKQ,EACZrB,EAAOa,EAAKS,EACdoB,IAAJ,SACCA,EAAKpB,EAActB,EACnBa,EAAKQ,EAAAA,QAGFrB,IAAJ,SACCA,EAAKqB,EAAcqB,EACnB7B,EAAKS,EAAAA,QAGFT,IAASe,KAAKE,IACjBF,KAAKE,EAAW9B,EACZA,IAAJ,QACCQ,GAAU,UAAA,CAAK,IAAA+D,GACdA,EAAAD,EAAKrC,IAALsC,MAAAA,EAAiB1B,KAAKyB,CAAAA,CACvB,CAAA,EAGH,CACD,EAEA7C,EAAOwC,UAAUO,UAAY,SAAUjE,EAAAA,CAAE,IAAAkE,EAAA7C,KACxC,OAAO9B,GACN,UAAA,CACC,IAAM4B,EAAQ+C,EAAK/C,MACbjB,EAAcC,EACpBA,EAAAA,OACA,GAAA,CACCH,EAAGmB,CAAAA,CAGJ,QAFC,CACAhB,EAAcD,CACf,CACD,EACA,CAAE0B,KAAM,KAAA,CAAA,CAEV,EAEAV,EAAOwC,UAAUS,QAAU,UAAA,CAC1B,OAAW9C,KAACF,KACb,EAEAD,EAAOwC,UAAUU,SAAW,UAAA,CAC3B,OAAO/C,KAAKF,MAAQ,EACrB,EAEAD,EAAOwC,UAAUW,OAAS,UAAA,CACzB,OAAWhD,KAACF,KACb,EAEAD,EAAOwC,UAAUY,KAAO,UAAA,CACvB,IAAMpE,EAAcC,EACpBA,EAAAA,OACA,GAAA,CACC,OAAOkB,KAAKF,KAGb,QAFC,CACAhB,EAAcD,CACf,CACD,EAEAqE,OAAOC,eAAetD,EAAOwC,UAAW,QAAS,CAChDe,IAAG,UAAA,CACF,IAAMnE,EAAOF,GAAciB,IAAAA,EAC3B,OAAIf,IAAJ,SACCA,EAAKG,EAAWY,KAAKZ,GAEfY,KAAKC,CACb,EACAoD,IAAA,SAAkBvD,EAAAA,CACjB,GAAIA,IAAUE,KAAKC,EAAQ,CAC1B,GAAI9B,GAAiB,IACpB,MAAU,IAAAyD,MAAM,gBAAA,EAGjB5B,KAAKC,EAASH,EACdE,KAAKZ,IACLiC,KA5WFvD,IA+WE,GAAA,CACC,QACKmB,EAAOe,KAAKE,EAChBjB,IADgBiB,OAEhBjB,EAAOA,EAAKS,EAEZT,EAAKE,EAAQmE,EAAAA,CAIf,QAFC,CACAzF,GAAAA,CACD,CACD,CACD,CAAA,CAAA,EA8JDmD,EAASqB,UAAY,IAAIxC,EAEzBmB,EAASqB,UAAU5B,EAAW,UAAA,CAG7B,GAFAT,KAAK1B,GAAAA,GA5jBU,EA8jBX0B,KAAK1B,EACR,MAAA,GAWD,IALgB,GAAX0B,KAAK1B,IAhkBM,KAmkBhB0B,KAAK1B,GAAAA,GAED0B,KAAKoB,IAAmBC,IAC3B,MAAA,GAOD,GALArB,KAAKoB,EAAiBC,GAItBrB,KAAK1B,GAjlBU,EAklBX0B,KAAKZ,EAAW,GAAA,CAAMb,GAAiByB,IAAAA,EAC1CA,YAAK1B,GAAAA,GACL,GAGD,IAAMO,EAAcC,EACpB,GAAA,CACC4B,GAAeV,IAAAA,EACflB,EAAckB,KACd,IAAMF,EAAQE,KAAKmB,EAAAA,GAvlBH,GAylBfnB,KAAK1B,GACL0B,KAAKC,IAAWH,GAChBE,KAAKZ,IAAa,KAElBY,KAAKC,EAASH,EACdE,KAAK1B,GAAAA,IACL0B,KAAKZ,IAMP,OAJSX,EAAAA,CACRuB,KAAKC,EAASxB,EACduB,KAAK1B,GAnmBW,GAomBhB0B,KAAKZ,GACN,CACAN,OAAAA,EAAcD,EACd+B,GAAeZ,IAAAA,EACfA,KAAK1B,GAAAA,GACL,EACD,EAEA0C,EAASqB,UAAUzC,EAAa,SAAUX,EAAAA,CACzC,GAAIe,KAAKE,IAAT,OAAiC,CAChCF,KAAK1B,GAAUiF,GAIf,QACKtE,EAAOe,KAAKT,EAChBN,IADgBM,OAEhBN,EAAOA,EAAKO,EAEZP,EAAKI,EAAQO,EAAWX,CAAAA,CAE1B,CACAY,EAAOwC,UAAUzC,EAAWqB,KAAKjB,KAAMf,CAAAA,CACxC,EAEA+B,EAASqB,UAAUtB,EAAe,SAAU9B,EAAAA,CAE3C,GAAIe,KAAKE,IAAT,SACCL,EAAOwC,UAAUtB,EAAaE,KAAKjB,KAAMf,CAAAA,EAIrCe,KAAKE,IAAT,QAAiC,CAChCF,KAAK1B,GAAAA,IAEL,QACKW,EAAOe,KAAKT,EAChBN,IADgBM,OAEhBN,EAAOA,EAAKO,EAEZP,EAAKI,EAAQ0B,EAAa9B,CAAAA,CAE5B,CAEF,EAEA+B,EAASqB,UAAUiB,EAAU,UAAA,CAC5B,GAAA,EAtpBgB,EAspBVtD,KAAK1B,GAAoB,CAC9B0B,KAAK1B,GAAUiF,EAEf,QACKtE,EAAOe,KAAKE,EAChBjB,IADgBiB,OAEhBjB,EAAOA,EAAKS,EAEZT,EAAKE,EAAQmE,EAAAA,CAEf,CACD,EAEAJ,OAAOC,eAAenC,EAASqB,UAAW,QAAS,CAClDe,IAAG,UAAA,CACF,GAtqBc,EAsqBVpD,KAAK1B,EACR,MAAM,IAAIsD,MAAM,gBAAA,EAEjB,IAAM3C,EAAOF,GAAciB,IAAAA,EAK3B,GAJAA,KAAKS,EAAAA,EACDxB,IAAJ,SACCA,EAAKG,EAAWY,KAAKZ,GAxqBN,GA0qBZY,KAAK1B,EACR,MAAM0B,KAAKC,EAEZ,OAAOD,KAAKC,CACb,CAAA,CAAA,EA2HD4B,GAAOQ,UAAU7D,EAAY,UAAA,CAC5B,IAAMgF,EAASxD,KAAKyD,EAAAA,EACpB,GAAA,CAEC,GA9yBe,EA6yBXzD,KAAK1B,GACL0B,KAAKmB,IAAT,OAA4B,OAE5B,IAAMK,EAAUxB,KAAKmB,EAAAA,EACE,OAAZK,GAAY,aACtBxB,KAAKyB,EAAWD,EAIlB,QAFC,CACAgC,EAAAA,CACD,CACD,EAEA3B,GAAOQ,UAAUoB,EAAS,UAAA,CACzB,GA7zBe,EA6zBXzD,KAAK1B,EACR,MAAM,IAAIsD,MAAM,gBAAA,EAEjB5B,KAAK1B,GAh0BU,EAi0Bf0B,KAAK1B,GAAAA,GACLiD,GAAcvB,IAAAA,EACdU,GAAeV,IAAAA,EAnyBflC,IAsyBA,IAAMe,EAAcC,EACpBA,OAAAA,EAAckB,KACP2B,GAAUK,KAAKhC,KAAMnB,CAAAA,CAC7B,EAEAgD,GAAOQ,UAAUiB,EAAU,UAAA,CA10BV,EA20BVtD,KAAK1B,IACV0B,KAAK1B,GA50BU,EA60Bf0B,KAAK3B,EAAqBJ,GAC1BA,GAAgB+B,KAElB,EAEA6B,GAAOQ,UAAUP,EAAW,UAAA,CAC3B9B,KAAK1B,GAj1BW,EAHD,EAs1BT0B,KAAK1B,GACVoD,GAAc1B,IAAAA,CAEhB,EAEA6B,GAAOQ,UAAUN,QAAU,UAAA,CAC1B/B,KAAK8B,EAAAA,CACN,ICl2BA,IAAI4B,GAAQ,cAAsB,QAAaC,GAAU,cAAqCC,GAAM,aAAqB,IAAKA,GAAID,EAAO,EAAG,OAAO,QAAUD,GAAO,IAAIG,EAAM,SAAS,cACnLC,GAASD,EAAI,aAAa,QAAQ,GAAKA,EAAI,QAAQ,QAAUA,EAAI,QAAQ,YACzEE,GAAQF,EAAI,aAAa,OAAO,GAAKA,EAAI,QAAQ,OAASA,EAAI,QAAQ,WAC1EA,EAAI,gBAAgB,QAAQ,EAAGA,EAAI,gBAAgB,OAAO,EAAG,OAAOA,EAAI,QAAQ,OAAQ,OAAOA,EAAI,QAAQ,MAAO,OAAOA,EAAI,QAAQ,YAAa,OAAOA,EAAI,QAAQ,WACjKC,IAAQJ,GAAM,IAAI,CAAE,OAAAI,EAAO,CAAC,EAC5BC,IAAS,MAAQA,KAAU,UAAUA,IAASA,KAAU,OAAS,SAAS,iBAAiBA,EAAK,EAAI,CAAC,SAAS,MAAQ,SAAS,eAAe,GAAG,QAAQC,GAAMN,GAAM,MAAMM,CAAE,CAAC",
6
- "names": ["core_exports", "__export", "_add", "_change", "_dispose", "_off", "_on", "_set", "_signals", "_state", "attr", "batch", "clsx", "compile", "computed", "dashcase", "debounce", "decorate", "core_default", "dir", "directive", "effect", "frag", "isCE", "mo", "modifier", "mutate", "parse", "prefix", "signal", "start", "store", "throttle", "untracked", "use", "currentDir", "currentEl", "elHint", "err", "sprae", "cache", "camelcase", "init_core", "__esmMin", "init_store", "el", "fn", "hint", "e", "expr", "msg", "display", "root", "state", "store_default", "fx", "offs", "i", "current", "add", "_attrs", "name", "value", "prev", "child", "next", "cb", "_out", "result", "v", "config", "mods", "params", "mod", "wrapFn", "k", "values", "mutations", "m", "tpl", "doc", "content", "attributes", "ref", "childNodes", "str", "match", "_", "c", "s", "ms", "_planned", "_depth", "arg", "schedule", "throttled", "dirty", "immediate", "_blocked", "_count", "_c", "_signals", "_change", "_set", "_parent", "sandbox", "store", "list", "create", "shallow", "set", "store_default", "init_store", "__esmMin", "init_core", "values", "parent", "keyCount", "signals", "state", "signal", "_", "k", "v", "descs", "computed", "isMut", "mut", "fn", "length", "i", "wrap", "ver", "t", "val", "prev", "_s", "_v", "untracked", "batch", "signal_exports", "__export", "batch", "computed", "effect", "signal", "untracked", "current", "depth", "batched", "init_signal", "__esmMin", "v", "_s", "_obs", "_v", "val", "sub", "fn", "_teardown", "_fx", "_deps", "prev", "tmp", "dep", "_c", "_e", "_first", "_list", "fx", "_prev", "if_default", "init_if", "__esmMin", "init_core", "el", "state", "_a", "_b", "_holder", "_el", "core_default", "_state", "frag", "mutate", "throttle", "match", "s", "_off", "_on", "cb", "value", "else_default", "init_else", "__esmMin", "init_core", "el", "_a", "_el", "_prev", "frag", "_state", "text_default", "init_text", "__esmMin", "init_core", "el", "frag", "v", "cur", "node", "root", "active", "off", "pos", "r", "class_default", "init_class", "__esmMin", "init_core", "el", "st", "ex", "name", "_cur", "_new", "_prev", "clearAttr", "v", "c", "clsx", "style_default", "init_style", "__esmMin", "init_core", "el", "st", "ex", "name", "_static", "v", "attr", "k", "fx_default", "init_fx", "__esmMin", "fn", "value_default", "init_value", "__esmMin", "init_core", "el", "state", "core_default", "value", "_from", "_to", "attr", "v", "setter", "ref_default", "init_ref", "__esmMin", "init_core", "expr", "_set", "parse", "target", "value", "el", "state", "result", "scope_default", "init_scope", "__esmMin", "init_core", "init_store", "el", "rootState", "state", "_state", "store", "init", "holder", "_frag", "frag", "values", "k", "d", "_signals", "computed", "_set", "v", "signal", "untracked", "core_default", "posHandler", "keyHandler", "rm", "each_default", "init_each", "__esmMin", "init_core", "s", "k", "_signals", "v", "r", "tpl", "state", "expr", "lhs", "rhs", "itemVar", "idxVar", "doc", "holder", "rowMap", "rows", "items", "keys", "cur", "keyed", "mkrow", "scope", "h", "proxy", "el", "frag", "insert", "pending", "f", "core_default", "update", "throttle", "mutate", "src", "newl", "prevl", "_change", "i", "newRows", "moved", "id", "row", "keep", "next", "n", "_state", "cb", "value", "off", "effect", "parse", "_off", "__default", "init__", "__esmMin", "init_core", "el", "st", "ex", "name", "v", "attr", "isCE", "spread_default", "init_spread", "__esmMin", "init_core", "target", "value", "ce", "isCE", "key", "attr", "dashcase", "event_default", "init_event", "__esmMin", "init_core", "el", "state", "expr", "name", "type", "mods", "evaluate", "parse", "trigger", "decorate", "e", "fn", "sequence_default", "init_sequence", "__esmMin", "init_core", "el", "state", "expr", "names", "cur", "off", "evaluate", "parse", "steps", "step", "i", "length", "prev", "str", "name", "mods", "next", "fn", "e", "trigger", "decorate", "_poff", "isTemplate", "html_default", "init_html", "__esmMin", "init_core", "v", "el", "state", "_el", "html", "doc", "holder", "_dispose", "frag", "untracked", "core_default", "_a", "_state", "portal_default", "init_portal", "__esmMin", "el", "state", "expr", "doc", "comment", "currentTarget", "value", "root", "target", "hidden_default", "init_hidden", "__esmMin", "el", "value", "mount_default", "init_mount", "__esmMin", "init_core", "el", "state", "expr", "name", "mods", "evaluate", "parse", "cleanup", "decorate", "result", "fn", "_dispose", "change_default", "init_change", "__esmMin", "init_core", "el", "state", "expr", "name", "mods", "evaluate", "parse", "coerce", "o", "handler", "decorate", "fn", "_dispose", "intersect", "intersect_default", "init_intersect", "__esmMin", "init_core", "el", "state", "expr", "name", "mods", "evaluate", "parse", "once", "trigger", "decorate", "entry", "fn", "io", "entries", "_dispose", "resize", "resize_default", "init_resize", "__esmMin", "init_core", "el", "state", "expr", "name", "mods", "evaluate", "parse", "trigger", "decorate", "size", "fn", "ro", "entries", "entry", "rect", "_dispose", "sprae_exports", "__export", "batch", "computed", "debounce", "sprae_default", "dispose", "effect", "signal", "core_default", "start", "store_default", "throttle", "untracked", "use", "dir", "parseTime", "scheduler", "keys", "keyMatch", "hasSemi", "init_sprae", "__esmMin", "init_store", "init_core", "init_signal", "init_if", "init_else", "init_text", "init_class", "init_style", "init_fx", "init_value", "init_ref", "init_scope", "init_each", "init__", "init_spread", "init_event", "init_sequence", "init_html", "init_portal", "init_hidden", "init_mount", "init_change", "init_intersect", "init_resize", "mount_default", "change_default", "directive", "__default", "spread_default", "class_default", "text_default", "html_default", "style_default", "fx_default", "value_default", "ref_default", "scope_default", "if_default", "else_default", "each_default", "portal_default", "hidden_default", "intersect_default", "resize_default", "target", "name", "expr", "state", "dirName", "mods", "create", "hasMods", "el", "update", "change", "trigger", "count", "decorate", "_dispose", "evaluate", "parse", "_out", "out", "isCE", "_state", "off", "_d", "_off", "n", "u", "fn", "modifier", "a", "b", "sched", "e", "_done", "_fn", "_pd", "doc", "pdHandler", "_skip", "_how", "k", "s", "d", "q", "esc", "ch", "sequence_default", "prev", "str", "obs", "event_default", "p", "signal_exports", "signals_core_module_exports", "__export", "y", "p", "u", "r", "w", "E", "d", "n", "endBatch", "batchDepth", "error", "hasError", "batchedEffect", "effect", "batchIteration", "next", "_nextBatchedEffect", "_flags", "needsToRecompute", "_callback", "err", "batch", "fn", "untracked", "prevContext", "evalContext", "addDependency", "signal", "node", "_node", "_target", "_version", "_source", "_prevSource", "_sources", "_nextSource", "_prevTarget", "_nextTarget", "_rollbackNode", "_subscribe", "Signal", "value", "options", "this", "_value", "_targets", "_watched", "watched", "_unwatched", "unwatched", "name", "target", "_refresh", "prepareSources", "rollbackNode", "cleanupSources", "head", "prev", "_unsubscribe", "Computed", "call", "undefined", "_fn", "_globalVersion", "globalVersion", "computed", "cleanupEffect", "cleanup", "_cleanup", "disposeEffect", "endEffect", "Error", "Effect", "_dispose", "dispose", "bind", "Symbol", "BRAND_SYMBOL", "init_signals_core_module", "__esmMin", "prototype", "brand", "_this", "targets", "_this$_watched", "_this2", "_this2$_unwatched", "subscribe", "_this3", "valueOf", "toString", "toJSON", "peek", "Object", "defineProperty", "get", "set", "_notify", "OUTDATED", "finish", "_start", "sprae", "signals", "use", "cur", "prefix", "start", "el"]
4
+ "sourcesContent": ["import store, { _change, _signals } from \"./store.js\";\n\n\n\n/** Symbol for disposal (using standard Symbol.dispose if available) */\nexport const _dispose = (Symbol.dispose ||= Symbol(\"dispose\"))\n\n/** Symbol for accessing element's reactive state */\nexport const _state = Symbol(\"state\")\n\n/** Symbol for enabling element effects */\nexport const _on = Symbol('on')\n\n/** Symbol for disabling element effects */\nexport const _off = Symbol('off')\n\n/** Symbol for adding child to element */\nexport const _add = Symbol('init')\n\n/** Directive prefix (default: ':') */\nexport let prefix = ':';\n\n/** Check if element is a custom element (has hyphen in tag name) */\nexport const isCE = (el) => el.localName?.includes('-')\n\n/**\n * A reactive signal containing a value.\n * @template T\n * @typedef {Object} Signal\n * @property {T} value - Current value (reading subscribes, writing notifies)\n * @property {() => T} peek - Read without subscribing\n * @property {() => T} valueOf - Get value for coercion\n * @property {() => T} toJSON - Get value for JSON serialization\n * @property {() => string} toString - Get value as string\n */\n\n/**\n * Internal effect function type.\n * @typedef {Object} EffectFn\n * @property {Set<Set<EffectFn>>} deps - Dependency sets\n * @property {() => void} fn - Original function\n */\n\n/**\n * Creates a reactive signal.\n * @template T\n * @type {<T>(value: T) => Signal<T>}\n */\nexport let signal;\n\n/**\n * Creates a reactive effect that re-runs when dependencies change.\n * @type {(fn: () => void | (() => void)) => () => void}\n */\nexport let effect;\n\n/**\n * Creates a computed signal derived from other signals.\n * @template T\n * @type {<T>(fn: () => T) => Signal<T>}\n */\nexport let computed;\n\n/**\n * Batches multiple signal updates into a single notification.\n * @template T\n * @type {<T>(fn: () => T) => T}\n */\nexport let batch = (fn) => fn();\n\n/**\n * Runs a function without tracking signal dependencies.\n * @template T\n * @type {<T>(fn: () => T) => T}\n */\nexport let untracked = batch;\n\n/**\n * Registry of directive handlers.\n * @type {Record<string, DirectiveHandler>}\n */\nexport let directive = {};\n\n/**\n * Registry of modifier functions.\n * @type {Record<string, ModifierHandler>}\n */\nexport let modifier = {}\n\n\nlet currentDir = null;\nlet currentEl = null;\n\n/**\n * Formats element for error message (minimal context).\n * @param {Element} [el] - Element to format\n * @returns {string} Element hint like \"<div#id.class>\"\n */\nconst elHint = (el) => {\n if (!el?.tagName) return ''\n let hint = el.tagName.toLowerCase()\n if (el.id) hint += '#' + el.id\n else if (el.className) hint += '.' + el.className.split(' ')[0]\n return `<${hint}>`\n}\n\n/**\n * Reports an error with context.\n * @param {Error|string} e - Error to report\n * @param {string} [expr] - Expression that caused error\n */\nconst err = (e, expr, el = currentEl) => {\n let msg = `\u2234 ${e}`\n if (el) msg += `\\n in ${elHint(el)}`\n if (expr) {\n const display = expr.length > 100 ? expr.slice(0, 80) + `\u2026 (${expr.length} chars)` : expr\n msg += currentDir ? `\\n ${currentDir}=\"${display}\"` : `\\n =\"${display}\"`\n }\n console.error(msg)\n}\n\n/**\n * @callback DirectiveHandler\n * @param {Element} el - Target element\n * @param {Object} state - Reactive state object\n * @param {string} expr - Expression string\n * @param {string} [name] - Directive name with modifiers\n * @returns {((value: any) => void | (() => void)) | { [Symbol.dispose]: () => void } | void}\n */\n\n/**\n * @callback ModifierHandler\n * @param {Function} fn - Function to modify\n * @param {...string} args - Modifier arguments (from dash-separated values)\n * @returns {Function}\n */\n\n/**\n * @typedef {Object} SpraeState\n * @property {Record<string, Signal>} [_signals] - Internal signals map\n */\n\n/**\n * Applies directives to an HTML element and manages its reactive state.\n *\n * @param {Element} [el=document.body] - The target HTML element to apply directives to.\n * @param {Object} [state] - Initial state values to populate the element's reactive state.\n * @returns {SpraeState & Object} The reactive state object associated with the element.\n */\nconst sprae = (root = document.body, state) => {\n // repeated call can be caused by eg. :each with new objects with old keys\n if (root[_state]) return Object.assign(root[_state], state)\n\n // console.group('sprae', root)\n\n // take over existing state instead of creating a clone\n state = store(state || {})\n\n let el = root, fx = [], offs = []\n\n // on/off all effects\n // we don't call prevOn as convention: everything defined before :else :if won't be disabled by :if\n // imagine <x :onx=\"...\" :if=\"...\"/> - when :if is false, it disables directives after :if (calls _off) but ignores :onx\n el[_on] = () => {\n if (offs) return offs\n offs = Array(fx.length)\n for (let i = 0; i < fx.length; i++) offs[i] = fx[i]()\n return offs\n }\n el[_off] = () => {\n if (!offs) return\n let current = offs\n offs = null\n for (let i = 0; i < current.length; i++) current[i]?.()\n }\n\n // destroy\n el[_dispose] ||= () => {\n el[_off]?.()\n if (mo?._root === el) { mo.disconnect(); mo = null }\n el[_off] = el[_on] = el[_dispose] = el[_add] = el[_state] = null\n }\n\n const add = el[_add] = (el) => {\n let _attrs = el.attributes, start;\n\n if (_attrs) for (let i = 0; i < _attrs.length;) {\n let { name, value } = _attrs[i]\n\n if (name.startsWith(prefix)) {\n el.removeAttribute(name)\n\n let prev = el[_state]\n currentDir = name;\n currentEl = el;\n\n // directive initializer can be redefined\n fx.push(start = dir(el, name.slice(prefix.length), value, state)), offs.push(start())\n\n // stop after subsprae directives (:each, :if, :scope) that change element's state identity\n if (el[_state] !== prev) return\n } else i++\n }\n\n // custom elements own their children \u2014 don't descend\n if (el !== root && isCE(el)) return\n\n // :if and :each replace element with text node, which tweaks .children length, but .childNodes length persists\n // real DOM: firstChild/nextSibling avoids array copy; frag.childNodes is already snapshot array\n if (el.firstChild !== undefined) {\n let child = el.firstChild, next\n while (child) (next = child.nextSibling, child.nodeType == 1 && add(child), child = next)\n }\n else for (let child of el.childNodes) child.nodeType == 1 && add(child)\n };\n\n add(el);\n\n currentDir = currentEl = null;\n\n // if element was spraed by inline :with/:if/:each/etc instruction (meaning it has state placeholder) - skip, otherwise save _state\n // CE roots: don't claim _state \u2014 CE manages its own via connectedCallback (parent processes attrs, CE processes children)\n if (el[_state] === undefined && !isCE(root)) el[_state] = state\n\n // console.groupEnd()\n\n return state;\n}\n\n/** Package version (injected by bundler) */\nsprae.version = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'dev'\n\n\n// directive initializer\n/** @type {(el: Element, name: string, expr: string, state: Object) => () => (() => void) | void} */\nexport let dir\n\n/**\n * Compiles an expression string into an evaluator function.\n * @type {(expr: string) => (state: Object) => any}\n */\nexport let compile\n\n/**\n * Parses an expression into an evaluator function, caching the result for reuse.\n *\n * @param {string} expr - The expression to parse and compile into a function.\n * @returns {(state: Object, cb?: (value: any) => any) => any} The compiled evaluator function for the expression.\n */\nexport const parse = (expr) => {\n let fn = cache[expr=expr.trim()]\n if (fn) return fn\n\n // static time errors\n try {\n fn = compile(expr || 'undefined')\n // Object.defineProperty(fn, \"name\", { value: `\u2234 ${expr}` })\n } catch (e) { err(e, expr) }\n\n // run time errors\n return cache[expr] = function (state, cb, _out) {\n try {\n let result = fn?.call(this, state)\n // if cb is given (to handle async/await exprs, usually directive update) - call it with result and return a cleanup function\n if (cb) return result?.then\n ? (result.then(v => _out = cb(v)).catch(e => err(e, expr, this)), () => typeof _out === 'function' && _out())\n : cb(result)\n else return result\n } catch (e) {\n err(e, expr, this)\n }\n }\n}\nconst cache = {};\n\n\n/**\n * @typedef {Object} SpraeConfig\n * @property {(expr: string) => (state: Object) => any} [compile] - Custom expression compiler\n * @property {string} [prefix] - Directive prefix (default: ':')\n * @property {<T>(value: T) => Signal<T>} [signal] - Signal factory\n * @property {(fn: () => void | (() => void)) => () => void} [effect] - Effect factory\n * @property {<T>(fn: () => T) => Signal<T>} [computed] - Computed factory\n * @property {<T>(fn: () => T) => T} [batch] - Batch function\n * @property {<T>(fn: () => T) => T} [untracked] - Untracked function\n * @property {(el: Element, name: string, expr: string, state: Object) => () => (() => void) | void} [dir] - Directive initializer\n */\n\n/**\n * Configure sprae with custom signals, compiler, or prefix.\n * @param {SpraeConfig} config - Configuration options\n * @returns {void}\n */\nexport const use = (config) => (\n config.compile && (compile = config.compile),\n config.prefix && (prefix = config.prefix),\n config.signal && (signal = config.signal),\n config.effect && (effect = config.effect),\n config.computed && (computed = config.computed),\n config.batch && (batch = config.batch),\n config.untracked && (untracked = config.untracked),\n config.dir && (dir = config.dir)\n)\n\n/**\n * Applies modifiers to a function.\n * @param {Function & { target?: Element }} fn - Function to decorate\n * @param {string[]} mods - Modifier names with arguments (e.g., ['throttle-500', 'prevent'])\n * @returns {Function} Decorated function\n */\nexport const decorate = (fn, mods) => {\n while (mods.length) {\n let [name, ...params] = mods.pop().split('-'), mod = modifier[name], wrapFn\n if (mod) {\n if ((wrapFn = mod(fn, ...params)) !== fn) {\n for (let k in fn) wrapFn[k] ??= fn[k];\n fn = wrapFn\n }\n }\n }\n return fn\n}\n\n\n/** MutationObserver reference, set by sprae.start() */\nexport let mo = null\n/** Pauses MO during DOM mutations to prevent disposing managed elements */\nexport const mutate = (fn) => { mo?.disconnect(); fn(); mo?.observe(mo._root, { childList: true, subtree: true }) }\n\n/**\n * Auto-initializes sprae on dynamically added elements.\n * Uses MutationObserver to detect new DOM nodes and apply directives.\n *\n * @param {Element} [root=document.body] - Root element to observe\n * @param {Object} [values] - Initial state values\n * @returns {Object} The reactive state object\n *\n * @example\n * ```js\n * // Auto-init on page load\n * sprae.start(document.body, { count: 0 })\n * ```\n */\nexport const start = (root = document.body, values) => {\n const state = store(values)\n sprae(root, state);\n mo = new MutationObserver(mutations => {\n for (const m of mutations) {\n for (const el of m.addedNodes) {\n // el can be spraed or removed by subsprae (like within :each/:if)\n if (el.nodeType === 1 && el[_state] === undefined && root.contains(el)) {\n // even if element has no spraeable attrs, some of its children can have\n root[_add](el)\n }\n }\n for (const el of m.removedNodes) {\n // Only dispose if element is truly removed from document\n if (el.nodeType === 1 && !root.contains(el)) el[_dispose]?.()\n }\n }\n });\n mo._root = root\n mo.observe(root, { childList: true, subtree: true });\n return state\n}\n\n/**\n * @typedef {Object} FragmentLike\n * @property {Document} ownerDocument - The owner document\n * @property {Node[]} childNodes - Child nodes of the fragment\n * @property {DocumentFragment} content - The document fragment content\n * @property {() => void} remove - Remove the fragment from DOM\n * @property {(el: Node) => void} replaceWith - Replace the fragment with an element\n * @property {Attr[]} attributes - Attributes from the original template\n * @property {(name: string) => void} removeAttribute - Remove an attribute\n */\n\n/**\n * Creates a fragment holder from a template element with minimal API surface.\n * @param {HTMLTemplateElement | FragmentLike} tpl - Template element or existing fragment\n * @returns {FragmentLike} Fragment-like object\n */\nexport const frag = (tpl) => {\n if (!tpl.nodeType) return tpl // existing tpl\n\n let doc = tpl.ownerDocument,\n content = tpl.content.cloneNode(true), // document fragment holder of content\n attributes = [...tpl.attributes],\n ref = doc.createTextNode(''),\n // ensure at least one node\n childNodes = (content.append(ref), [...content.childNodes])\n\n return {\n ownerDocument: doc,\n childNodes,\n content,\n remove: () => content.append(...childNodes),\n replaceWith(el) {\n if (el === ref) return\n ref.before(el)\n content.append(...childNodes)\n },\n attributes,\n removeAttribute(name) { attributes.splice(attributes.findIndex(a => a.name === name), 1) },\n }\n}\n\n/**\n * Converts camelCase to kebab-case.\n * @param {string} str - String to convert\n * @returns {string} Kebab-case string\n */\nexport const dashcase = (str) => str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? '-' : '') + match.toLowerCase());\n\n/**\n * Sets or removes an attribute on an element.\n * @param {Element} el - Target element\n * @param {string} name - Attribute name\n * @param {string | boolean | null | undefined} v - Attribute value (null/false removes, true sets empty)\n * @returns {void}\n */\nconst camelcase = (str) => str.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n\nexport const attr = (el, name, v) => (v == null || v === false) ? el.removeAttribute(name) :\n isCE(el) ? (el[camelcase(name)] = v) :\n el.setAttribute(name, v === true ? \"\" : v);\n\n/**\n * Converts class input to className string (like clsx/classnames).\n * @param {string | string[] | Record<string, boolean> | null | undefined} c - Class input\n * @returns {string} Space-separated class string\n */\nexport const clsx = (c) => !c ? '' : typeof c === 'string' ? c : (\n Array.isArray(c) ? c.map(clsx) :\n Object.entries(c).reduce((s, [k, v]) => (v && s.push(k), s), [])\n).join(' ')\n\n/**\n * Throttles a function to run at most once per tick (or custom scheduler).\n * Fires on leading edge, then on trailing edge if called during throttle.\n * @template {Function} T\n * @param {T} fn - Function to throttle\n * @param {number|Function} [ms] - Delay in ms or scheduler function (default: microtask)\n * @returns {T} Throttled function\n */\nexport const throttle = (fn, ms) => {\n let _planned = 0, _depth = 0, arg, schedule = typeof ms === 'function' ? ms : ms ? (fn) => setTimeout(fn, ms) : queueMicrotask;\n const throttled = (e) => {\n arg = e\n if (!_planned++) fn(arg), schedule(() => {\n let dirty = _planned > 1\n _planned = 0\n if (dirty) {\n if (++_depth > 50) { _depth = 0; console.error('\u2234 Reactive loop detected'); return }\n throttled(arg)\n } else _depth = 0\n });\n }\n return throttled;\n}\n\n/**\n * Debounces a function to run after a delay since the last call.\n * @template {Function} T\n * @param {T} fn - Function to debounce\n * @param {number|Function} [ms] - Delay in ms or scheduler function (default: microtask)\n * @param {boolean} [immediate=false] - Fire on leading edge instead of trailing\n * @returns {T} Debounced function\n */\nexport const debounce = (fn, ms, immediate) => {\n let schedule = typeof ms === 'function' ? ms : ms ? (fn) => setTimeout(fn, ms) : queueMicrotask;\n return immediate\n ? ((_blocked) => (arg) => !_blocked && (fn(arg), _blocked = 1, schedule(() => _blocked = 0)))()\n : ((_count = 0) => (arg, _c = ++_count) => schedule(() => _c == _count && fn(arg)))()\n}\n\nexport * from './store.js';\n\nexport default sprae\n", "/**\n * @fileoverview Signals-powered reactive proxy store\n * @module sprae/store\n */\n\nimport { signal, computed, batch, untracked } from './core.js'\n\n/** Symbol for accessing the internal signals map */\nexport const _signals = Symbol('signals')\n\n/** Symbol for the change signal that tracks object keys or array length */\nexport const _change = Symbol('change')\n\n/** Symbol for stashed setter on computed values */\nexport const _set = Symbol('set')\n\n/** Symbol for parent scope link */\nconst _parent = Symbol('parent')\n\n// a hack to simulate sandbox for `with` in evaluator\nlet sandbox = true\n\n/**\n * Reactive store with signals backing.\n * @template T\n * @typedef {T & { [_signals]: Record<string | symbol, import('./core.js').Signal<any>> }} ReactiveStore\n */\n\n/**\n * Creates a reactive proxy store from an object or array.\n * Properties become signals for fine-grained reactivity.\n * Supports nested objects, arrays, computed getters, and methods.\n *\n * @template {Object} T\n * @param {T} values - Initial values object\n * @param {Object} [parent] - Parent scope for inheritance\n * @returns {ReactiveStore<T>} Reactive proxy store\n *\n * @example\n * const state = store({ count: 0, get doubled() { return this.count * 2 } })\n * state.count = 5 // triggers updates\n * state.doubled // 10 (computed)\n */\nexport const store = (values, parent) => {\n if (!values) return values\n\n // ignore globals\n // FIXME: handle via has trap\n if (values[Symbol.toStringTag]) return values;\n\n // bypass existing store\n if (values[_signals]) return values\n\n // non-objects: for array redirect to list\n if (values.constructor !== Object) return Array.isArray(values) ? list(values) : values\n\n // _change stores total number of keys to track new props\n let keyCount = Object.keys(values).length,\n signals = {}\n\n // proxy conducts prop access to signals\n let state = new Proxy(Object.assign(signals, {\n [_change]: signal(keyCount),\n [_signals]: signals,\n }), {\n get: (_, k) => {\n if (k in signals) {\n // raw methods (no prototype) - bind to state for consistent `this`\n if (signals.hasOwnProperty(k) && typeof signals[k] === 'function' && !signals[k].prototype) return signals[k].bind(state)\n return (signals[k] ? signals[k].valueOf() : signals[k])\n }\n if (parent) {\n return parent[k]\n }\n return (typeof globalThis[k] === 'function' && !globalThis[k].prototype ? globalThis[k].bind(globalThis) : globalThis[k])\n },\n\n set: (_, k, v) => {\n // console.group('SET', k, v)\n if (k in signals) return set(signals, k, v), 1\n\n // turn off sandbox to check if parents have the prop - we don't want to create new prop in global scope\n sandbox = false\n\n // write transparency for parent scope, unlike prototype chain\n // if prop is defined in parent scope (except global) - write there\n if (parent && k in parent) {\n parent[k] = v\n }\n // else create in current scope\n else {\n create(signals, k, v)\n signals[_change].value = ++keyCount\n }\n\n sandbox = true\n\n // console.groupEnd()\n // bump length for new signal\n return 1\n },\n\n // FIXME: try to avild calling Symbol.dispose here. Maybe _delete method?\n deleteProperty: (_, k) => {\n k in signals && (k[0] != '_' && signals[k]?.[Symbol.dispose]?.(), delete signals[k], signals[_change].value = --keyCount)\n return 1\n },\n\n // subscribe to length when spreading\n ownKeys: () => (signals[_change].value, Reflect.ownKeys(signals).filter(k => k !== _parent)),\n\n // sandbox prevents writing to global\n has: (_, k) => {\n if (k in signals) return true\n if (parent) return k in parent\n return sandbox\n }\n })\n Object.defineProperty(signals, _parent, { value: parent, configurable: true })\n\n // init signals for values\n const descs = Object.getOwnPropertyDescriptors(values)\n\n for (let k in values) {\n // getter turns into computed\n if (descs[k]?.get)\n // stash setter\n (signals[k] = computed(descs[k].get.bind(state)))[_set] = descs[k].set?.bind(state);\n\n // init blank signal - make sure we don't take prototype one\n else create(signals, k, values[k])\n }\n\n return state\n}\n\n/**\n * Creates a reactive array store with lazy signal initialization.\n * Arrays can be large, so signals are created on-demand.\n * @param {any[]} values - Initial array values\n * @param {Object} [parent=globalThis] - Parent scope\n * @returns {ReactiveStore<any[]>} Reactive array proxy\n */\nconst list = (values, parent = globalThis) => {\n\n // init signals eagerly \u2014 shallow() is cheap (1 Proxy + 1 signal per object item)\n let signals = values.map(v => signal(shallow(v))),\n\n // if .length was accessed from mutator (.push/etc) method\n isMut = false,\n\n // since array mutator methods read .length internally only once, we disable it on the moment of call, allowing rest of operations to be reactive\n mut = fn => function () { isMut = true; return fn.apply(this, arguments); },\n\n length = signal(values.length),\n\n // proxy passes prop access to signals\n state = new Proxy(\n Object.assign(signals, {\n [_change]: length,\n [_signals]: signals,\n // patch mutators\n push: mut(signals.push),\n pop: mut(signals.pop),\n shift: mut(signals.shift),\n unshift: mut(signals.unshift),\n splice: mut(signals.splice),\n }),\n {\n get(_, k) {\n // console.log('GET', k, isMut)\n\n // if .length is read within mutators - peek signal to avoid recursive subscription\n // we need to ignore it only once and keep for the rest of the mutator call\n if (k === 'length') return isMut ? (isMut = false, signals.length) : length.value;\n\n // non-numeric\n if (typeof k === 'symbol' || isNaN(k)) return signals[k]?.valueOf() ?? parent[k];\n\n // signals are eagerly initialized; null slots from .length extension default to undefined\n return (signals[k] ??= signal(undefined)).valueOf()\n },\n\n set(_, k, v) {\n // console.log('SET', k, v)\n\n // .length\n if (k === 'length') {\n // force cleaning up tail\n for (let i = v; i < signals.length; i++) delete state[i]\n // .length = N directly\n length.value = signals.length = v;\n }\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n else if (k >= signals.length) create(signals, k, v, shallow), state.length = +k + 1\n\n // existing signal\n else signals[k] ? set(signals, k, v, shallow) : create(signals, k, v, shallow)\n\n return 1\n },\n\n // dispose notifies any signal deps, like :each\n deleteProperty: (_, k) => (signals[k]?.[Symbol.dispose]?.(), delete signals[k], 1),\n })\n Object.defineProperty(signals, _parent, { value: parent, configurable: true })\n\n return state\n}\n\n/**\n * Creates a signal for a property value.\n * Skips wrapping for untracked props (underscore prefix), existing signals, and functions.\n * @param {Object} signals - Signals storage object\n * @param {string} k - Property key\n * @param {any} v - Property value\n */\nconst create = (signals, k, v, wrap = store) => (signals[k] = (k[0] == '_' || v?.peek || typeof v === 'function') ? v : signal(wrap(v)))\n\n/** Lightweight reactive wrapper for array items \u2014 avoids full store() per item. */\nconst shallow = (v) => {\n if (!v || typeof v !== 'object' || v.constructor !== Object) return v\n if (v[_change]) return v // already reactive (store or shallow proxy)\n let ver = signal(0)\n return new Proxy(v, {\n get: (t, k) => k === _signals ? t : k === _change ? ver : (ver.value, t[k]),\n set: (t, k, val) => { let prev = t[k]; t[k] = val; if (prev !== val) ver.value++; return 1 },\n has: () => true\n })\n}\n\n/**\n * Updates a signal value, handling arrays specially for efficient patching.\n * @param {Object} signals - Signals storage object\n * @param {string} k - Property key\n * @param {any} v - New value\n */\nconst set = (signals, k, v, wrap = store) => {\n if (k[0] === '_' || typeof signals[k] === 'function') return (signals[k] = v)\n let _s = signals[k], _v = _s.peek?.() ?? _s\n if (v === _v) return\n // stashed _set for value with getter/setter\n if (_s[_set]) return _s[_set](v)\n // patch store array in-place to preserve identity (avoids reactive loops when an effect reads + writes same prop)\n if (Array.isArray(v) && Array.isArray(_v)) {\n if (_change in _v) untracked(() => batch(() => { for (let i = 0; i < v.length; i++) _v[i] = v[i]; _v.length = v.length }))\n else _s.value = _change in v ? v : list(v)\n }\n else _s.value = wrap(v)\n}\n\nexport default store\n", "/**\n * @fileoverview Minimal signals implementation (preact-signals compatible)\n * @module sprae/signal\n */\n\n/** @type {import('./core.js').EffectFn | null} */\nlet current\n\nlet depth = 0\n\n/** @type {Set<import('./core.js').EffectFn> | null} */\nlet batched;\n\n/**\n * Creates a reactive signal.\n * @template T\n * @param {T} v - Initial value\n * @returns {import('./core.js').Signal<T>}\n */\nexport const signal = (v, _s, _obs = new Set, _v = () => _s.value) => (\n _s = {\n get value() {\n current?.deps.add(_obs.add(current));\n return v\n },\n set value(val) {\n if (val === v) return\n v = val;\n for (let sub of _obs) batched ? batched.add(sub) : sub(); // notify effects\n },\n peek() { return v },\n toJSON: _v, toString: _v, valueOf: _v\n }\n)\n\n/**\n * Creates a reactive effect that re-runs when dependencies change.\n * @param {() => void | (() => void)} fn - Effect function, may return cleanup\n * @returns {() => void} Dispose function\n */\nexport const effect = (fn, _teardown, _fx, _deps) => (\n _fx = (prev) => {\n if (!fn) return // disposed during batch flush\n let tmp = _teardown;\n _teardown = null;\n tmp?.call?.();\n prev = current, current = _fx\n if (depth++ > 50) {\n depth--; current = prev;\n // dispose: unsubscribe from all deps so this effect never fires again\n _teardown = fn = _fx.fn = null; for (let dep of _deps) dep.delete(_fx); _deps.clear()\n console.error('\u2234 Reactive loop detected'); return\n }\n try { _teardown = fn() } finally { current = prev; depth-- }\n },\n _fx.fn = fn,\n _deps = _fx.deps = new Set(),\n\n _fx(),\n (dep) => { _teardown?.call?.(); _teardown = fn = _fx.fn = null; for (dep of _deps) dep.delete(_fx); _deps.clear() }\n)\n\n/**\n * Creates a computed signal derived from other signals.\n * @template T\n * @param {() => T} fn - Computation function\n * @returns {import('./core.js').Signal<T>}\n */\nexport const computed = (fn, _s = signal(), _c, _e, _v = () => _c.value) => (\n _c = {\n get value() {\n _e ||= effect(() => _s.value = fn());\n return _s.value\n },\n peek: _s.peek,\n toJSON: _v, toString: _v, valueOf: _v\n }\n)\n\n/**\n * Batches multiple signal updates into a single notification.\n * @template T\n * @param {() => T} fn - Function containing updates\n * @returns {T}\n */\nexport const batch = (fn, _first = !batched, _list) => {\n batched ??= new Set;\n try { fn(); }\n finally { if (_first) { [batched, _list] = [null, batched]; for (const fx of _list) fx(); } }\n}\n\n/**\n * Runs a function without tracking dependencies.\n * @template T\n * @param {() => T} fn - Function to run untracked\n * @returns {T}\n */\nexport const untracked = (fn, _prev, _v) => (_prev = current, current = null, _v = fn(), current = _prev, _v)\n", "import sprae, { throttle, _on, _off, _state, frag, mutate } from '../core.js';\n\n/**\n * Conditional directive - shows/hides element based on condition.\n * Works with :else and :else :if for branching.\n * @param {Element | HTMLTemplateElement} el - Target element\n * @param {Object} state - State object\n * @returns {(value: any) => void} Update function\n */\nexport default (el, state) => {\n let _holder, _el\n\n // new element :if\n if (!el._holder) {\n // mark el as fake-spraed to delay init, since we sprae rest when branch matches, both :if and :else :if\n el[_state] ??= null\n\n _el = el.content ? frag(el) : el\n _el[_state] ??= null // mark _el (frag) as needing sprae\n\n mutate(() => el.replaceWith(_holder = el.ownerDocument.createTextNode('')))\n _el._holder = _holder._holder = _holder\n\n\n _holder._clauses = [_el._clause = [_el, false]]\n _holder._match = null\n\n _holder.update = throttle(() => {\n let match = _holder._clauses.find(([, s]) => s)\n\n if (match != _holder._match) {\n mutate(() => {\n _holder._match?.[0].remove()\n _holder._match?.[0][_off]?.()\n if (_holder._match = match) {\n _holder.before(_holder._match[0].content || _holder._match[0])\n // check if element needs initial sprae (null) vs just re-enabling (_on)\n !_holder._match[0][_state] ? (delete _holder._match[0][_state], sprae(_holder._match[0], state)) : _holder._match[0][_on]?.()\n }\n })\n }\n })\n }\n // :else :if needs to be spraed all over to have clean list of offable effects\n else sprae(_el = el, state)\n\n // :else may have children to init which is called after :if\n // or preact can schedule :else after :if, so we ensure order of call by next tick\n let cb = value => {\n _el._clause[1] = value\n _el._holder.update()\n }\n cb[_off] = () => { _el._holder._match?.[0][_off]?.(); _el._holder._match = null }\n return cb\n}\n", "import { _on, _off, _state, frag } from '../core.js';\n\n/**\n * Else directive - conditional branch following :if.\n * Can be used as `:else` or `:else :if=\"condition\"`.\n * @param {Element | HTMLTemplateElement} el - Element with directive\n * @returns {() => void} Update function\n */\nexport default (el) => {\n let _el, _prev = el\n\n _el = el.content ? frag(el) : el\n _el[_state] ??= null // mark _el (frag) as needing sprae\n\n // find holder\n while (_prev && !(_el._holder = _prev._holder)) _prev = _prev.previousSibling\n\n el.remove()\n el[_state] = null // mark as fake-spraed to stop further init, to lazy-sprae when branch matches\n\n _el._holder._clauses.push(_el._clause = [_el, true])\n\n return _el._holder.update\n}\n", "import { frag } from \"../core.js\"\n\n/**\n * Text directive - sets textContent reactively.\n * Preserves caret/selection position across updates.\n * @param {Element | HTMLTemplateElement} el - Target element\n * @returns {(v: any) => void} Update function\n */\nexport default el => (\n // <template :text=\"a\"/> or previously initialized template\n el.content && el.replaceWith(el = frag(el).childNodes[0]),\n v => {\n v = typeof v === 'function' ? v(el.textContent) : v\n v = v == null ? \"\" : \"\" + v\n let cur = el.textContent\n if (cur === v) return\n\n // append-only: reuse text node, skip caret save/restore\n let node = el.firstChild\n if (node && v.startsWith(cur)) { node.appendData(v.slice(cur.length)); return }\n\n // caret preservation only matters when this element holds focus \u2014\n // calling getSelection() during DOM mutations forces sync layout in Chromium (O(n\u00B2) for lists)\n let root = el.ownerDocument, active = root.activeElement\n let s = active && (active === el || el.contains(active)) ? root.getSelection?.() : null\n let off = s?.rangeCount && el.contains(s.anchorNode) ? s.getRangeAt(0).startOffset : -1\n\n el.textContent = v\n\n // restore caret\n if (off >= 0 && el.firstChild) {\n let pos = Math.min(off, el.firstChild.textContent.length)\n let r = new Range()\n r.setStart(el.firstChild, pos)\n r.collapse(true)\n s.removeAllRanges()\n s.addRange(r)\n }\n }\n)\n", "import { clsx } from \"../core.js\";\n\n/**\n * Class directive - manages CSS classes reactively.\n * Supports strings, arrays, and objects (like clsx/classnames).\n * @param {Element} el - Target element\n * @param {Object} st - State object\n * @param {string} ex - Expression\n * @param {string} name - Directive name with modifiers\n * @returns {(v: string | string[] | Record<string, boolean>) => void} Update function\n */\nexport default (el, st, ex, name) => {\n let _cur = null, _new, _prev = null\n let clearAttr = () => !el.classList.length && el.removeAttribute('class')\n\n return (v) => {\n v = typeof v === 'function' ? v(el.className) : v\n\n if (v?.constructor === Object) {\n _prev = null\n if (_cur) for (let c of _cur) if (!v[c]) el.classList.remove(c), _cur.delete(c)\n if (!_cur?.size) _cur = null\n for (let c in v) if (v[c] && !_cur?.has(c)) el.classList.add(c), (_cur ||= new Set).add(c)\n if (!_cur) clearAttr()\n return\n }\n\n v = clsx(v)\n if (v === _prev) return\n _prev = v\n\n _new = null\n if (v) for (let c of v.split(' ')) c && (_new ||= new Set).add(c)\n if (_cur) for (let c of _cur) if (!_new?.has(c)) el.classList.remove(c)\n if (_new) for (let c of _new) if (!_cur?.has(c)) el.classList.add(c)\n if (!_new) clearAttr()\n _cur = _new\n }\n}\n", "import { attr } from \"../core.js\";\n\n/**\n * Style directive - sets inline styles reactively.\n * Accepts string or object. Preserves static styles.\n * @param {Element} el - Target element\n * @param {Object} st - State object\n * @param {string} ex - Expression\n * @param {string} name - Directive name with modifiers\n * @returns {(v: string | Record<string, string> | ((style: CSSStyleDeclaration) => any)) => void} Update function\n */\nexport default (el, st, ex, name) => {\n let _static;\n\n return v => {\n if (_static === undefined) _static = el.getAttribute(\"style\") ?? \"\"\n v = typeof v === \"function\" ? v(el.style) : v\n if (typeof v === \"string\") attr(el, \"style\", _static ? _static + '; ' + v : v)\n else {\n if (_static) attr(el, \"style\", _static);\n // NOTE: we skip names not starting with a letter - eg. el.style stores properties as { 0: --x } or JSDOM has _pfx\n for (let k in v) k[0] == '-' ? el.style.setProperty(k, v[k]) : k[0] >= 'A' && (el.style[k] = v[k])\n }\n }\n}\n", "/**\n * Effect directive - runs side effects.\n * Calls function result if expression evaluates to a function.\n * @returns {(fn: any) => any} Update function\n */\nexport default () => (fn) => typeof fn === 'function' && fn()\n", "import sprae, { attr, _dispose } from \"../core.js\";\n\n/**\n * Value directive - one-way binding (state \u2192 DOM).\n * Sets element value/checked/selected from state.\n * For write-back (DOM \u2192 state), use :change directive.\n *\n * @param {HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement} el - Form element\n * @param {Object} state - State object\n * @returns {(value: any) => void} Update function\n */\nexport default (el, state) => {\n // select elements need children spraed first (for :each options)\n if (el.type?.startsWith('select')) sprae(el, state)\n\n return (el.type === \"text\" || el.type === \"\" || el.tagName === \"TEXTAREA\") ?\n (value, _from, _to) => (\n _from = el.selectionStart,\n _to = el.selectionEnd,\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n _from && el.setSelectionRange(_from, _to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === 'radio') ? (value) => (\n el.checked = el.value === value, attr(el, 'checked', el.checked || null)\n ) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) value.some(v => v == o.value) ? o.setAttribute('selected', '') : o.removeAttribute('selected')\n } :\n (value) => (el.value = value)\n}\n", "import { parse } from \"../core.js\"\n\n/**\n * Creates a setter function for assigning a value to a state path.\n * @param {string} expr - Expression to assign to (e.g., \"x\" or \"refs.el\")\n * @returns {(target: Object, value: any) => void} Setter function\n */\nconst setter = (expr, _set = parse(`${expr}=__`)) => (target, value) => {\n target.__ = value; _set(target), delete target.__\n}\n\n/**\n * Ref directive - stores element reference in state or calls callback with element.\n *\n * :ref=\"x\" \u2192 state.x = el\n * :ref=\"refs.el\" \u2192 state.refs.el = el\n * :ref=\"el => setup(el)\" \u2192 calls callback with element\n *\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Variable name, path, or callback expression\n */\nexport default (el, state, expr) => {\n let result = parse(expr).call(el, state)\n if (typeof result === 'function') result(el)\n else setter(expr)(state, el)\n}\n", "import sprae, { store, untracked, frag, _state, _signals, signal, computed } from '../core.js'\nimport { _set } from '../store.js'\n\n/**\n * Scope directive - creates a child scope with local state.\n * Properties merge into a new scope inheriting from parent.\n */\nexport default (el, rootState) => {\n let state = el[_state] = store({}, rootState), init = false\n\n let holder, _frag = el.content && frag(el)\n if (_frag) el.replaceWith(holder = el.ownerDocument.createTextNode(''))\n\n return values => {\n values = typeof values === 'function' ? values(state) : values;\n\n if (values !== state) {\n for (let k in values) {\n let d = Object.getOwnPropertyDescriptor(values, k)\n // getter \u2192 computed signal (same pattern as store.js:122-124)\n if (d?.get) { (state[_signals][k] = computed(d.get.bind(state)))[_set] = d.set?.bind(state); continue }\n let v = typeof values[k] === 'function' ? values[k].bind(state) : values[k]\n if (k in state[_signals]) state[k] = v\n else (state[_signals][k] = (k[0] == '_' || v?.peek) ? v : signal(store(v)))\n }\n }\n\n return !init && (init = true, !holder && (delete el[_state]), untracked(() => (holder?.before(_frag.content || el), sprae(_frag || el, state))))\n }\n}\n", "import sprae, { parse, _state, _off, effect, _change, _signals, frag, throttle, mutate } from \"../core.js\";\n\n// Row scope proxies \u2014 positional reads item via cur[idx], keyed holds direct ref\nconst posHandler = {\n get: (s, k) => k === s.v ? s.c?.[s.i] : k === s.k ? (s.o ? s.o[s.i] : s.i) : k === _signals ? s : s.l?.[k] !== undefined ? s.l[k] : s.p?.[k],\n set: (s, k, v) => (k === s.v ? (s.c && (s.c[s.i] = v)) : k === s.k ? 0 : s.l?.[k] !== undefined ? ((s.l[k] = v), 0) : k in (s.p?.[_signals] || {}) ? (s.p[k] = v) : (s.l ||= {})[k] = v, 1),\n has: () => true\n}\nconst keyHandler = {\n get: (s, k) => k === s.v ? s.r : k === s.k ? s.i : k === _signals ? s : s.l?.[k] !== undefined ? s.l[k] : s.p?.[k],\n set: (s, k, v) => (k === s.v ? (s.r = v) : k === s.k ? 0 : s.l?.[k] !== undefined ? ((s.l[k] = v), 0) : k in (s.p?.[_signals] || {}) ? (s.p[k] = v) : (s.l ||= {})[k] = v, 1),\n has: () => true\n}\n\nconst rm = r => { r.el[Symbol.dispose]?.(); r.el.remove() }\n\n/**\n * Each directive - renders list items from array/object/number.\n * Syntax: `:each=\"item in items\"` or `:each=\"(item, idx) of items\"`\n *\n * Keyed by object identity for arrays of objects (including store arrays).\n * Primitives use positional (index-based) mode.\n */\nexport default (tpl, state, expr) => {\n const [lhs, rhs] = expr.split(/\\bin|of\\b/)\n let [itemVar, idxVar = \"$\"] = lhs.trim().replace(/\\(|\\)/g, '').split(/\\s*,\\s*/)\n\n let doc = tpl.ownerDocument\n let holder = tpl._eachHolder || (tpl._eachHolder = doc.createTextNode(\"\"))\n let rowMap = new Map, rows = [], items, keys, cur, keyed = false\n\n let mkrow = (scope, h) => {\n let proxy = new Proxy(scope, h)\n let el = tpl.content ? frag(tpl) : tpl.cloneNode(true)\n return { el, scope, proxy, node: el.content || el }\n }\n\n let insert = pending => {\n if (!pending.length) return\n let f = pending.length > 1 ? doc.createDocumentFragment() : null\n for (let r of pending) f ? f.appendChild(r.node) : holder.before(r.node)\n if (f) holder.before(f)\n for (let r of pending) sprae(r.el, r.proxy)\n }\n\n let update = throttle(() => mutate(() => {\n let src = items, newl = src.length, prevl = rows.length\n\n // detect keyed: array of objects (store items are shallow proxies \u2014 keyed by proxy identity)\n keyed = false\n for (let i = 0; i < newl; i++) {\n if (src[i] != null) { keyed = typeof src[i] === 'object'; break }\n }\n\n if (keyed && prevl) {\n let newRows = [], pending = [], seen = new Set(), moved = false\n\n for (let i = 0; i < newl; i++) {\n let id = src[i]\n if (id != null && typeof id === 'object') {\n if (seen.has(id)) return // intermediate swap \u2014 retry after next index write\n seen.add(id)\n }\n let row = rowMap.get(id)\n if (row) {\n if (row.scope.i !== i) moved = true\n row.scope.i = i; row.scope.r = id\n } else {\n row = mkrow({ p: state, v: itemVar, k: idxVar, r: id, i, l: null }, keyHandler)\n rowMap.set(id, row)\n pending.push(row)\n }\n newRows.push(row)\n }\n\n for (let [id, row] of rowMap) if (!seen.has(id)) { rm(row); rowMap.delete(id); moved = true }\n\n insert(pending)\n\n if (moved) {\n let next = holder\n for (let i = newRows.length - 1; i >= 0; i--) {\n let n = newRows[i].el._holder || newRows[i].el.content || newRows[i].el\n if (n.nextSibling !== next) next.before(n)\n next = n\n }\n }\n\n rows = newRows\n } else {\n // --- POSITIONAL ---\n if (prevl && cur !== src) {\n for (let r of rows) rm(r)\n rows.length = 0; prevl = 0; rowMap.clear()\n }\n cur = src\n\n if (newl < prevl) {\n for (let i = newl; i < prevl; i++) rm(rows[i])\n rows.length = newl\n }\n\n for (let i = 0; i < Math.min(prevl, newl); i++) {\n rows[i].scope.c = src\n if (keys) rows[i].scope.o = keys\n }\n\n if (newl > prevl) {\n let pending = []\n for (let i = prevl; i < newl; i++) {\n let row = keyed\n ? mkrow({ p: state, v: itemVar, k: idxVar, r: src[i], i, l: null }, keyHandler)\n : mkrow({ p: state, v: itemVar, k: idxVar, c: src, i, o: keys, l: null }, posHandler)\n rows.push(row)\n if (keyed) rowMap.set(src[i], row)\n pending.push(row)\n }\n insert(pending)\n }\n }\n }))\n\n if (tpl.parentNode) mutate(() => tpl.replaceWith(holder))\n tpl[_state] = null\n\n let cb = value => {\n keys = null\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1)\n else if (value?.constructor === Object) keys = Object.keys(value), items = Object.values(value)\n else items = value || []\n let off = effect(() => {\n items[_change]?.value\n if (items[_signals]) for (let i = 0, n = items.length; i < n; i++) items[i] // index writes (swap/replace)\n update()\n })\n return () => off()\n }\n cb.eval = parse(rhs)\n cb[_off] = () => { for (let r of rows) rm(r); rows.length = 0; rowMap.clear() }\n return cb\n}\n", "import { attr, isCE } from \"../core.js\";\n\n/**\n * Default attribute directive - sets any attribute value.\n * @param {Element} el - Target element\n * @param {Object} st - State object\n * @param {string} ex - Expression\n * @param {string} name - Attribute name\n * @returns {(v: any) => void} Update function\n */\nexport default (el, st, ex, name) => v => attr(el, name, typeof v === 'function' && !isCE(el) ? v(el.getAttribute(name)) : v)\n", "import { attr, dashcase, isCE } from \"../core.js\";\n\n/**\n * Spread directive - sets multiple attributes from object.\n * Keys are converted from camelCase to kebab-case.\n * @param {Element} target - Target element\n * @returns {(value: Record<string, any>) => void} Update function\n */\nexport default (target) => value => { let ce = isCE(target); for (let key in value) attr(target, ce ? key : dashcase(key), value[key]) }\n", "import { parse, decorate } from \"../core.js\"\n\n/**\n * Event directive - attaches event listeners with modifiers.\n * Syntax: `:onclick=\"handler\"` or `:onclick.prevent.stop=\"handler\"`\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} name - Event name with modifiers (e.g., 'onclick.prevent')\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nexport default (el, state, expr, name) => {\n // wrap inline cb into function\n // if (!/^(?:[\\w$]+|\\([^()]*\\))\\s*=>/.test(expr) && !/^function\\b/.test(expr)) expr = `()=>{${expr}}`;\n\n const [type, ...mods] = name.slice(2).split('.'),\n evaluate = parse(expr).bind(el),\n trigger = decorate(Object.assign(e => evaluate(state, (fn) => typeof fn === 'function' ? fn(e) : fn), { target: el }), mods);\n\n trigger.target.addEventListener(type, trigger, trigger)\n return {\n [Symbol.dispose]() {\n trigger.target.removeEventListener(type, trigger)\n trigger[Symbol.dispose]?.()\n }\n }\n}\n", "import { _dispose, parse, decorate } from \"../core.js\"\n\n/**\n * Sequence directive - chains event handlers.\n * Syntax: `:onclick..keyup.enter=\"handler\"` - click triggers, then waits for Enter.\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} names - Chained event names separated by `..`\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nexport default (el, state, expr, names) => {\n let cur, // current step callback\n off // current step disposal\n\n const evaluate = parse(expr).bind(el)\n\n let steps = names.split('..').map((step, i, { length }) => step.split(':').reduce(\n (prev, str) => {\n const [name, ...mods] = str.slice(2).split('.')\n\n const next = (fn, e) => cur = typeof fn === 'function' ? fn(e) : fn\n const trigger = decorate(Object.assign(\n e => (!i ? evaluate(state, (fn) => next(fn, e)) : next(cur, e), off(), off = steps[(i + 1) % length]()),\n { target: el }\n ), mods)\n\n\n return (_poff) => (\n _poff = prev?.(),\n trigger.target.addEventListener(name, trigger, trigger),\n () => (_poff?.(), trigger.target.removeEventListener(name, trigger))\n )\n }, null)\n )\n\n off = steps[0]()\n\n return {\n [Symbol.dispose]() {\n off?.()\n }\n }\n}\n", "import sprae, { untracked, frag, _dispose, _state } from \"../core.js\"\n\nconst isTemplate = v => !!v?.content\n\n/**\n * HTML directive - sets innerHTML and initializes nested directives.\n * Supports templates for fragment insertion.\n * @param {Element | HTMLTemplateElement} el - Target element\n * @param {Object} state - State object\n * @returns {(v: string | HTMLTemplateElement | ((html: string) => string)) => void | (() => void)} Update function\n */\nexport default (el, state) => {\n // <template :html=\"a\"/> - fragment case: use placeholder + frag\n if (el.content) {\n let _el, html = el.innerHTML,\n doc = el.ownerDocument,\n holder = el._holder\n\n if (!holder) el.replaceWith(holder = doc.createTextNode(''))\n\n return v => {\n if (typeof v === 'function') v = v(html)\n\n // :if case: remove current content from DOM\n if (el._holder) el.remove(), el.content.replaceChildren()\n _el?.[_dispose]?.()\n _el?.remove()\n\n if (v != null && v !== '') {\n _el = isTemplate(v)\n ? (html = v.innerHTML, frag(v))\n : frag((_el = doc.createElement('template'), _el.innerHTML = html = v, _el))\n\n untracked(() => sprae(_el, state))\n\n holder.before(_el.content)\n\n // :if case: update childNodes in-place for remove() closure\n if (el._holder) el.childNodes.splice(0, Infinity, ..._el.childNodes)\n\n return _el[_dispose]\n }\n else if (el._holder) el.childNodes.length = 0, html = ''\n }\n }\n\n return v => (\n v = typeof v === 'function' ? v(el.innerHTML) : v,\n isTemplate(v) ? el.replaceChildren(v.content.cloneNode(true)) : (el.innerHTML = v == null ? \"\" : v),\n el[_state] &&= null,\n untracked(() => sprae(el, state)),\n el[_dispose]\n )\n}\n", "/**\n * Portal directive - teleports element to another container.\n * Value can be selector string, element, or falsy to return home.\n * @param {Element} el - Element to teleport\n * @param {Object} state - State object\n * @param {string} expr - Expression\n * @returns {(value: string | Element | null | false) => void} Update function\n */\nexport default (el, state, expr) => {\n const doc = el.ownerDocument\n const comment = doc.createComment(':portal')\n let currentTarget = null\n\n // Insert placeholder before element\n el.before(comment)\n\n return (value) => {\n const root = el.getRootNode()\n const target = typeof value === 'string'\n ? (root.querySelector?.(value) || doc.querySelector(value))\n : value?.nodeType === 1 ? value\n : value ? doc.body : null\n\n if (target === currentTarget) return\n\n if (target) target.appendChild(el)\n else comment.after(el)\n\n currentTarget = target\n\n return () => { currentTarget && (comment.after(el), currentTarget = null) }\n }\n}\n", "/**\n * Hidden directive - toggles the hidden attribute.\n * @param {Element} el - Target element\n * @returns {(value: any) => boolean} Update function\n */\nexport default (el) => (value) => el.hidden = !!value\n", "import { parse, decorate, _dispose } from \"../core.js\"\n\n/**\n * Mount directive - lifecycle observer.\n * Runs once on connect. Function form receives element, can return cleanup.\n * Statement form runs directly.\n *\n * :mount=\"console.log('connected')\"\n * :mount=\"el => (setup(el), () => cleanup(el))\"\n * :mount=\"el => ref = el\"\n *\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} name - Directive name with modifiers\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nexport default (el, state, expr, name) => {\n const [, ...mods] = name.split('.'),\n evaluate = parse(expr).bind(el)\n\n let cleanup\n\n const trigger = decorate(Object.assign(() => {\n const result = evaluate(state, fn => typeof fn === 'function' ? fn(el) : fn)\n if (typeof result === 'function') cleanup = result\n }, { target: el }), mods)\n\n trigger()\n\n return {\n [_dispose]() {\n cleanup?.()\n cleanup = null\n }\n }\n}\n", "import { parse, decorate, _dispose } from \"../core.js\"\n\n/**\n * Change directive - normalized input write-back observer.\n * Handles type detection, coercion, caret preservation.\n *\n * :change=\"v => x = v\"\n * :change.debounce-300=\"v => query = v\"\n *\n * @param {Element} el - Form element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression (receives coerced value)\n * @param {string} name - Directive name with modifiers\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nexport default (el, state, expr, name) => {\n const [, ...mods] = name.split('.'),\n evaluate = parse(expr).bind(el)\n\n // coerce value from element based on input type\n const coerce =\n el.type === 'checkbox' ? () => el.checked :\n el.type === 'select-multiple' ? () => [...el.selectedOptions].map(o => o.value) :\n /^(date|time|month|week)/.test(el.type) ? () => el.value :\n () => el.selectedIndex < 0 ? null : isNaN(el.valueAsNumber) ? el.value : el.valueAsNumber\n\n const handler = decorate(Object.assign(() => {\n evaluate(state, fn => typeof fn === 'function' ? fn(coerce()) : fn)\n }, { target: el }), mods)\n\n el.addEventListener('input', handler)\n el.addEventListener('change', handler)\n\n return {\n [_dispose]() {\n el.removeEventListener('input', handler)\n el.removeEventListener('change', handler)\n }\n }\n}\n", "import { parse, decorate, _dispose } from \"../core.js\"\n\n/**\n * Intersect directive - IntersectionObserver wrapper.\n * Statement form fires on enter. Function form receives entry for full control.\n *\n * :intersect=\"visible = true\"\n * :intersect.once=\"loadImage()\"\n * :intersect=\"entry => visible = entry.isIntersecting\"\n *\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} name - Directive name with modifiers\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nconst intersect = (el, state, expr, name) => {\n const [, ...mods] = name.split('.')\n const evaluate = parse(expr).bind(el)\n\n let once = mods.includes('once')\n\n const trigger = decorate(Object.assign((entry) => {\n evaluate(state, fn => typeof fn === 'function' ? fn(entry) : fn)\n }, { target: el }), mods)\n\n const io = new IntersectionObserver(entries => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n trigger(entry)\n if (once) io.disconnect()\n }\n }\n })\n\n io.observe(el)\n\n return {\n [_dispose]() { io.disconnect() }\n }\n}\n\nintersect.observer = true\nexport default intersect\n", "import { parse, decorate, _dispose } from \"../core.js\"\n\n/**\n * Resize directive - ResizeObserver wrapper.\n * Function form receives {width, height, entry} object.\n *\n * :resize=\"({width, height}) => cols = Math.floor(width / 200)\"\n * :resize.throttle-100=\"({width}) => narrow = width < 600\"\n *\n * @param {Element} el - Target element\n * @param {Object} state - State object\n * @param {string} expr - Handler expression\n * @param {string} name - Directive name with modifiers\n * @returns {{ [Symbol.dispose]: () => void }} Disposal object\n */\nconst resize = (el, state, expr, name) => {\n const [, ...mods] = name.split('.')\n const evaluate = parse(expr).bind(el)\n\n const trigger = decorate(Object.assign((size) => {\n evaluate(state, fn => typeof fn === 'function' ? fn(size) : fn)\n }, { target: el }), mods)\n\n const ro = new ResizeObserver(entries => {\n for (const entry of entries) {\n const rect = entry.contentRect\n trigger({ width: rect.width, height: rect.height, entry })\n }\n })\n\n ro.observe(el)\n\n return {\n [_dispose]() { ro.disconnect() }\n }\n}\n\nresize.observer = true\nexport default resize\n", "/**\n * @fileoverview Sprae - lightweight reactive HTML templating library\n * @module sprae\n */\n\nimport store from \"./store.js\";\nimport { batch, computed, effect, signal, untracked } from './core.js';\nimport * as signals from './signal.js';\nimport sprae, { use, decorate, directive, modifier, parse, throttle, debounce, _off, _state, _on, _dispose, _add, start, isCE } from './core.js';\n\nimport _if from \"./directive/if.js\";\nimport _else from \"./directive/else.js\";\nimport _text from \"./directive/text.js\";\nimport _class from \"./directive/class.js\";\nimport _style from \"./directive/style.js\";\nimport _fx from \"./directive/fx.js\";\nimport _value from \"./directive/value.js\";\nimport _ref from \"./directive/ref.js\";\nimport _scope from \"./directive/scope.js\";\nimport _each from \"./directive/each.js\";\nimport _default from \"./directive/_.js\";\nimport _spread from \"./directive/spread.js\";\nimport _event from \"./directive/event.js\";\nimport _seq from \"./directive/sequence.js\";\nimport _html from \"./directive/html.js\";\nimport _portal from \"./directive/portal.js\";\nimport _hidden from \"./directive/hidden.js\";\nimport _mount from \"./directive/mount.js\";\nimport _change from \"./directive/change.js\";\nimport _intersect from \"./directive/intersect.js\";\nimport _resize from \"./directive/resize.js\";\n\n\n// mark observers: they handle own modifiers, bypass reactive plumbing\n_mount.observer = _change.observer = true\n\nObject.assign(directive, {\n _: _default,\n '': _spread,\n class: _class,\n text: _text,\n html: _html,\n style: _style,\n fx: _fx,\n value: _value,\n ref: _ref,\n scope: _scope,\n if: _if,\n else: _else,\n each: _each,\n portal: _portal,\n hidden: _hidden,\n mount: _mount,\n change: _change,\n intersect: _intersect,\n resize: _resize,\n})\n\n\n/**\n * Directive initializer with modifiers support.\n * @param {Element} target - Target element\n * @param {string} name - Directive name with modifiers (e.g., 'onclick.throttle-500')\n * @param {string} expr - Expression string\n * @param {Object} state - Reactive state object\n * @returns {() => (() => void) | void} Initializer function that returns a disposer\n */\nconst dir = (target, name, expr, state) => {\n let [dirName, ...mods] = name.split('.'), create = directive[dirName] || directive._\n let hasMods = mods.length > 0\n\n return () => {\n let el = target, update, change, trigger, count = 0\n\n if (hasMods) {\n // modifiers can retarget the update or schedule it, so they keep the trigger indirection\n change = signal(0)\n trigger = decorate(Object.assign(() => change.value++, { target }), mods)\n el = trigger.target ?? target\n }\n\n update = create(el, state, expr, dirName)\n\n if (!update?.call) return update?.[_dispose]\n\n let evaluate = update.eval ?? parse(expr).bind(el),\n _out, out = () => (typeof _out === 'function' && _out(), _out=null) // effect trigger and invoke may happen in the same tick, so it will be effect-within-effect call - we need to store output of evaluate to return from trigger effect\n\n // use element's own state for expression evaluation, unless it's a custom element\n // (custom elements: directives are parent prop setters, must evaluate against parent state)\n if (!isCE(el)) state = el[_state] ?? state\n\n let off = hasMods ? effect(() => {\n change.value == count ? trigger() : (count = change.value, _out = evaluate(state, update))\n return out\n }) : effect(() => (_out = evaluate(state, update), out))\n if (!(_state in el)) return off\n let _d = 0\n return () => { if (_d) return; _d = 1; off(); update[_off] ? update[_off]() : el[_dispose]?.() }\n }\n}\n\n// Parses time string to ms: 100, 100ms, 1s, 1m\nconst parseTime = (t) => !t ? 0 : typeof t === 'number' ? t :\n (([, n, u] = t.match(/^(\\d+)(ms|s|m)?$/) || []) => (n = +n, u === 's' ? n * 1000 : u === 'm' ? n * 60000 : n))()\n\n// Creates scheduler from time/keyword (idle, raf, tick, or ms)\nconst scheduler = (t) =>\n t === 'idle' ? requestIdleCallback :\n t === 'raf' ? requestAnimationFrame :\n !t || t === 'tick' ? queueMicrotask :\n (fn) => setTimeout(fn, parseTime(t))\n\n// Built-in modifiers for timing, targeting, and event handling\nObject.assign(modifier, {\n /**\n * Delays callback by interval since last call (trailing edge).\n * Supports: tick (default), raf, idle, N, Nms, Ns, Nm. Add -immediate for leading edge.\n * Examples: .debounce, .debounce-100, .debounce-1s, .debounce-raf, .debounce-idle, .debounce-100-immediate\n */\n debounce: (fn, a, b) => debounce(fn, scheduler(a === 'immediate' ? b : a), a === 'immediate' || b === 'immediate'),\n /**\n * Limits callback rate to interval (leading + trailing edges).\n * Supports: tick (default), raf, idle, N, Nms, Ns, Nm.\n * Examples: .throttle, .throttle-100, .throttle-1s, .throttle-raf, .throttle-idle\n */\n throttle: (fn, a) => throttle(fn, scheduler(a)),\n /** Runs callback after delay. Supports: tick (default), raf, idle, N, Nms, Ns, Nm. */\n delay: (fn, a) => ((sched = scheduler(a)) => (e) => sched(() => fn(e)))(),\n /** Shortcut for delay-tick (next microtask). */\n tick: (fn) => (e) => queueMicrotask(() => fn(e)),\n /** Shortcut for delay-raf (next animation frame). */\n raf: (fn) => (e) => requestAnimationFrame(() => fn(e)),\n\n /** Calls handler only once. */\n once: (fn, _done, _fn) => (_fn = (e) => !_done && (_done = 1, fn(e)), _fn.once = true, _fn),\n\n /** Attaches event listener to window. */\n window: fn => (fn.target = fn.target.ownerDocument.defaultView, fn),\n /** Attaches event listener to document. */\n document: fn => (fn.target = fn.target.ownerDocument, fn),\n /** Attaches event listener to document root element (<html>). */\n root: fn => (fn.target = fn.target.ownerDocument.documentElement, fn),\n /** Attaches event listener to body. */\n body: fn => (fn.target = fn.target.ownerDocument.body, fn),\n /** Attaches event listener to parent element. */\n parent: fn => (fn.target = fn.target.parentNode, fn),\n /** Triggers only when event target is the element itself. */\n self: (fn) => (e) => (e.target === fn.target && fn(e)),\n /** Triggers when event is outside the element. Ignores drag-out (pointerdown inside, pointerup outside). */\n away: (fn, _pd) => {\n let doc = fn.target.ownerDocument, pdHandler = e => _pd = e.target, _skip = doc.currentEvent || doc.defaultView?.event\n doc.addEventListener('pointerdown', pdHandler, true)\n return Object.assign(\n (e) => e !== _skip && !fn.target.contains(e.type === 'click' ? _pd ?? e.target : e.target) && e.target.isConnected && fn(e),\n { target: doc, [_dispose]: () => doc.removeEventListener('pointerdown', pdHandler, true) }\n )\n },\n\n /** Calls preventDefault() before handler. */\n prevent: (fn) => (e) => (e?.preventDefault(), fn(e)),\n /** Calls stopPropagation() or stopImmediatePropagation() (with -immediate). */\n stop: (fn, _how) => (e) => (_how?.[0] === 'i' ? e?.stopImmediatePropagation() : e?.stopPropagation(), fn(e)),\n /** Sets passive option for event listener. */\n passive: fn => (fn.passive = true, fn),\n /** Sets capture option for event listener. */\n capture: fn => (fn.capture = true, fn),\n})\n/** Alias for .away modifier */\nmodifier.outside = modifier.away\n\n/**\n * Key testers for keyboard event modifiers.\n * @type {Record<string, (e: KeyboardEvent) => boolean>}\n */\nconst keys = {\n ctrl: e => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: e => e.shiftKey || e.key === \"Shift\",\n alt: e => e.altKey || e.key === \"Alt\",\n meta: e => e.metaKey || e.key === \"Meta\",\n cmd: e => e.metaKey || e.key === \"Command\",\n arrow: e => e.key?.startsWith(\"Arrow\"),\n enter: e => e.key === \"Enter\",\n esc: e => e.key?.startsWith(\"Esc\"),\n tab: e => e.key === \"Tab\",\n space: e => e.key === \"\u00A0\" || e.key === \"Space\" || e.key === \" \",\n delete: e => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: e => /^\\d$/.test(e.key),\n letter: e => /^\\p{L}$/gu.test(e.key),\n char: e => /^\\S$/.test(e.key),\n};\n\n// match key by name, or by e.key (case-insensitive), or by keyCode (digits)\nconst keyMatch = (k, e) => keys[k]?.(e) || e.key?.toLowerCase() === k || e.keyCode == k\n\n// Augment modifiers with key testers (e.g., .enter, .ctrl, .ctrl-a, .ctrl-65)\nfor (let k in keys) modifier[k] = (fn, a, b) => (e) => keys[k](e) && (!a || keyMatch(a, e)) && (!b || keyMatch(b, e)) && fn(e)\n\n\n// Checks for first-level semicolons (statement vs expression)\nconst hasSemi = s => {\n let d = 0, q = '', esc = 0\n for (let ch of s) {\n if (q) {\n if (esc) esc = 0\n else if (ch === '\\\\') esc = 1\n else if (ch === q) q = ''\n continue\n }\n if (ch === ';' && !d) return true\n if (ch === '{') d++\n else if (ch === '}') d--\n else if (ch === '\"' || ch === \"'\" || ch === '`') q = ch\n }\n return false\n}\n\n// Configure sprae with default compiler and signals\nuse({\n\n// Default compiler wraps expression for new Function\n compile: expr => {\n // if, const, let - no return\n if (/^(if|let|const)\\b/.test(expr));\n // first-level semicolons - no return\n else if (hasSemi(expr));\n else expr = `return ${expr}`\n // async expression\n if (/\\bawait\\s/.test(expr)) expr = `return (async()=>{${expr}})()`\n return sprae.constructor(`with(arguments[0]){${expr}}`)\n },\n // these 2 exceptions might look inconsistent, but arguably that's the cleanest way to avoid coupling\n dir: (el, name, expr, state) => {\n // sequences: handle own modifiers, return dispose\n if (name.includes('..')) return () => _seq(el, state, expr, name)[_dispose]\n return name.split(':').reduce((prev, str) => {\n let dirName = str.split('.')[0]\n // events and observers handle own modifiers, return dispose\n let obs = directive[dirName]\n let start = str.startsWith('on') ? () => _event(el, state, expr, str)[_dispose]\n : obs?.observer ? () => obs(el, state, expr, str)[_dispose]\n : dir(el, str, expr, state)\n return !prev ? start : (p, s) => (p = prev(), s = start(), () => { p(); s() })\n }, null)\n },\n ...signals\n})\n\n\n// Expose for runtime configuration\nsprae.use = use\nsprae.store = store\nsprae.directive = directive\nsprae.modifier = modifier\n\n/**\n * Disposes a spraed element, cleaning up all effects and state.\n * @param {Element} el - Element to dispose\n */\nconst dispose = sprae.dispose = (el) => el[_dispose]?.()\n\n\nsprae.start = start\n\nexport default sprae\nexport { sprae, store, signal, effect, computed, batch, untracked, start, use, throttle, debounce, dispose }\n", "// An named symbol/brand for detecting Signal instances even when they weren't\n// created using the same signals library version.\nconst BRAND_SYMBOL = Symbol.for(\"preact-signals\");\n\n// Flags for Computed and Effect.\nconst RUNNING = 1 << 0;\nconst NOTIFIED = 1 << 1;\nconst OUTDATED = 1 << 2;\nconst DISPOSED = 1 << 3;\nconst HAS_ERROR = 1 << 4;\nconst TRACKING = 1 << 5;\n\n// A linked list node used to track dependencies (sources) and dependents (targets).\n// Also used to remember the source's last version number that the target saw.\ntype Node = {\n\t// A source whose value the target depends on.\n\t_source: Signal;\n\t_prevSource?: Node;\n\t_nextSource?: Node;\n\n\t// A target that depends on the source and should be notified when the source changes.\n\t_target: Computed | Effect;\n\t_prevTarget?: Node;\n\t_nextTarget?: Node;\n\n\t// The version number of the source that target has last seen. We use version numbers\n\t// instead of storing the source value, because source values can take arbitrary amount\n\t// of memory, and computeds could hang on to them forever because they're lazily evaluated.\n\t// Use the special value -1 to mark potentially unused but recyclable nodes.\n\t_version: number;\n\n\t// Used to remember & roll back the source's previous `._node` value when entering &\n\t// exiting a new evaluation context.\n\t_rollbackNode?: Node;\n};\n\nfunction startBatch() {\n\tbatchDepth++;\n}\n\nfunction endBatch() {\n\tif (batchDepth > 1) {\n\t\tbatchDepth--;\n\t\treturn;\n\t}\n\n\tlet error: unknown;\n\tlet hasError = false;\n\n\twhile (batchedEffect !== undefined) {\n\t\tlet effect: Effect | undefined = batchedEffect;\n\t\tbatchedEffect = undefined;\n\n\t\tbatchIteration++;\n\n\t\twhile (effect !== undefined) {\n\t\t\tconst next: Effect | undefined = effect._nextBatchedEffect;\n\t\t\teffect._nextBatchedEffect = undefined;\n\t\t\teffect._flags &= ~NOTIFIED;\n\n\t\t\tif (!(effect._flags & DISPOSED) && needsToRecompute(effect)) {\n\t\t\t\ttry {\n\t\t\t\t\teffect._callback();\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (!hasError) {\n\t\t\t\t\t\terror = err;\n\t\t\t\t\t\thasError = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\teffect = next;\n\t\t}\n\t}\n\tbatchIteration = 0;\n\tbatchDepth--;\n\n\tif (hasError) {\n\t\tthrow error;\n\t}\n}\n\n/**\n * Combine multiple value updates into one \"commit\" at the end of the provided callback.\n *\n * Batches can be nested and changes are only flushed once the outermost batch callback\n * completes.\n *\n * Accessing a signal that has been modified within a batch will reflect its updated\n * value.\n *\n * @param fn The callback function.\n * @returns The value returned by the callback.\n */\nfunction batch<T>(fn: () => T): T {\n\tif (batchDepth > 0) {\n\t\treturn fn();\n\t}\n\t/*@__INLINE__**/ startBatch();\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tendBatch();\n\t}\n}\n\n// Currently evaluated computed or effect.\nlet evalContext: Computed | Effect | undefined = undefined;\n\n/**\n * Run a callback function that can access signal values without\n * subscribing to the signal updates.\n *\n * @param fn The callback function.\n * @returns The value returned by the callback.\n */\nfunction untracked<T>(fn: () => T): T {\n\tconst prevContext = evalContext;\n\tevalContext = undefined;\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tevalContext = prevContext;\n\t}\n}\n\n// Effects collected into a batch.\nlet batchedEffect: Effect | undefined = undefined;\nlet batchDepth = 0;\nlet batchIteration = 0;\n\n// A global version number for signals, used for fast-pathing repeated\n// computed.peek()/computed.value calls when nothing has changed globally.\nlet globalVersion = 0;\n\nfunction addDependency(signal: Signal): Node | undefined {\n\tif (evalContext === undefined) {\n\t\treturn undefined;\n\t}\n\n\tlet node = signal._node;\n\tif (node === undefined || node._target !== evalContext) {\n\t\t/**\n\t\t * `signal` is a new dependency. Create a new dependency node, and set it\n\t\t * as the tail of the current context's dependency list. e.g:\n\t\t *\n\t\t * { A <-> B }\n\t\t * ↑ ↑\n\t\t * tail node (new)\n\t\t * ↓\n\t\t * { A <-> B <-> C }\n\t\t * ↑\n\t\t * tail (evalContext._sources)\n\t\t */\n\t\tnode = {\n\t\t\t_version: 0,\n\t\t\t_source: signal,\n\t\t\t_prevSource: evalContext._sources,\n\t\t\t_nextSource: undefined,\n\t\t\t_target: evalContext,\n\t\t\t_prevTarget: undefined,\n\t\t\t_nextTarget: undefined,\n\t\t\t_rollbackNode: node,\n\t\t};\n\n\t\tif (evalContext._sources !== undefined) {\n\t\t\tevalContext._sources._nextSource = node;\n\t\t}\n\t\tevalContext._sources = node;\n\t\tsignal._node = node;\n\n\t\t// Subscribe to change notifications from this dependency if we're in an effect\n\t\t// OR evaluating a computed signal that in turn has subscribers.\n\t\tif (evalContext._flags & TRACKING) {\n\t\t\tsignal._subscribe(node);\n\t\t}\n\t\treturn node;\n\t} else if (node._version === -1) {\n\t\t// `signal` is an existing dependency from a previous evaluation. Reuse it.\n\t\tnode._version = 0;\n\n\t\t/**\n\t\t * If `node` is not already the current tail of the dependency list (i.e.\n\t\t * there is a next node in the list), then make the `node` the new tail. e.g:\n\t\t *\n\t\t * { A <-> B <-> C <-> D }\n\t\t * ↑ ↑\n\t\t * node ┌─── tail (evalContext._sources)\n\t\t * └─────│─────┐\n\t\t * ↓ ↓\n\t\t * { A <-> C <-> D <-> B }\n\t\t * ↑\n\t\t * tail (evalContext._sources)\n\t\t */\n\t\tif (node._nextSource !== undefined) {\n\t\t\tnode._nextSource._prevSource = node._prevSource;\n\n\t\t\tif (node._prevSource !== undefined) {\n\t\t\t\tnode._prevSource._nextSource = node._nextSource;\n\t\t\t}\n\n\t\t\tnode._prevSource = evalContext._sources;\n\t\t\tnode._nextSource = undefined;\n\n\t\t\tevalContext._sources!._nextSource = node;\n\t\t\tevalContext._sources = node;\n\t\t}\n\n\t\t// We can assume that the currently evaluated effect / computed signal is already\n\t\t// subscribed to change notifications from `signal` if needed.\n\t\treturn node;\n\t}\n\treturn undefined;\n}\n\n/**\n * The base class for plain and computed signals.\n */\n//\n// A function with the same name is defined later, so we need to ignore TypeScript's\n// warning about a redeclared variable.\n//\n// The class is declared here, but later implemented with ES5-style prototypes.\n// This enables better control of the transpiled output size.\n// @ts-ignore: \"Cannot redeclare exported variable 'Signal'.\"\ndeclare class Signal<T = any> {\n\t/** @internal */\n\t_value: unknown;\n\n\t/**\n\t * @internal\n\t * Version numbers should always be >= 0, because the special value -1 is used\n\t * by Nodes to signify potentially unused but recyclable nodes.\n\t */\n\t_version: number;\n\n\t/** @internal */\n\t_node?: Node;\n\n\t/** @internal */\n\t_targets?: Node;\n\n\tconstructor(value?: T, options?: SignalOptions<T>);\n\n\t/** @internal */\n\t_refresh(): boolean;\n\n\t/** @internal */\n\t_subscribe(node: Node): void;\n\n\t/** @internal */\n\t_unsubscribe(node: Node): void;\n\n\t/** @internal */\n\t_watched?(this: Signal<T>): void;\n\n\t/** @internal */\n\t_unwatched?(this: Signal<T>): void;\n\n\tsubscribe(fn: (value: T) => void): () => void;\n\n\tname?: string;\n\n\tvalueOf(): T;\n\n\ttoString(): string;\n\n\ttoJSON(): T;\n\n\tpeek(): T;\n\n\tbrand: typeof BRAND_SYMBOL;\n\n\tget value(): T;\n\tset value(value: T);\n}\n\nexport interface SignalOptions<T = any> {\n\twatched?: (this: Signal<T>) => void;\n\tunwatched?: (this: Signal<T>) => void;\n\tname?: string;\n}\n\n/** @internal */\n// A class with the same name has already been declared, so we need to ignore\n// TypeScript's warning about a redeclared variable.\n//\n// The previously declared class is implemented here with ES5-style prototypes.\n// This enables better control of the transpiled output size.\n// @ts-ignore: \"Cannot redeclare exported variable 'Signal'.\"\nfunction Signal(this: Signal, value?: unknown, options?: SignalOptions) {\n\tthis._value = value;\n\tthis._version = 0;\n\tthis._node = undefined;\n\tthis._targets = undefined;\n\tthis._watched = options?.watched;\n\tthis._unwatched = options?.unwatched;\n\tthis.name = options?.name;\n}\n\nSignal.prototype.brand = BRAND_SYMBOL;\n\nSignal.prototype._refresh = function () {\n\treturn true;\n};\n\nSignal.prototype._subscribe = function (node) {\n\tconst targets = this._targets;\n\tif (targets !== node && node._prevTarget === undefined) {\n\t\tnode._nextTarget = targets;\n\t\tthis._targets = node;\n\n\t\tif (targets !== undefined) {\n\t\t\ttargets._prevTarget = node;\n\t\t} else {\n\t\t\tuntracked(() => {\n\t\t\t\tthis._watched?.call(this);\n\t\t\t});\n\t\t}\n\t}\n};\n\nSignal.prototype._unsubscribe = function (node) {\n\t// Only run the unsubscribe step if the signal has any subscribers to begin with.\n\tif (this._targets !== undefined) {\n\t\tconst prev = node._prevTarget;\n\t\tconst next = node._nextTarget;\n\t\tif (prev !== undefined) {\n\t\t\tprev._nextTarget = next;\n\t\t\tnode._prevTarget = undefined;\n\t\t}\n\n\t\tif (next !== undefined) {\n\t\t\tnext._prevTarget = prev;\n\t\t\tnode._nextTarget = undefined;\n\t\t}\n\n\t\tif (node === this._targets) {\n\t\t\tthis._targets = next;\n\t\t\tif (next === undefined) {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tthis._unwatched?.call(this);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\n\nSignal.prototype.subscribe = function (fn) {\n\treturn effect(\n\t\t() => {\n\t\t\tconst value = this.value;\n\t\t\tconst prevContext = evalContext;\n\t\t\tevalContext = undefined;\n\t\t\ttry {\n\t\t\t\tfn(value);\n\t\t\t} finally {\n\t\t\t\tevalContext = prevContext;\n\t\t\t}\n\t\t},\n\t\t{ name: \"sub\" }\n\t);\n};\n\nSignal.prototype.valueOf = function () {\n\treturn this.value;\n};\n\nSignal.prototype.toString = function () {\n\treturn this.value + \"\";\n};\n\nSignal.prototype.toJSON = function () {\n\treturn this.value;\n};\n\nSignal.prototype.peek = function () {\n\tconst prevContext = evalContext;\n\tevalContext = undefined;\n\ttry {\n\t\treturn this.value;\n\t} finally {\n\t\tevalContext = prevContext;\n\t}\n};\n\nObject.defineProperty(Signal.prototype, \"value\", {\n\tget(this: Signal) {\n\t\tconst node = addDependency(this);\n\t\tif (node !== undefined) {\n\t\t\tnode._version = this._version;\n\t\t}\n\t\treturn this._value;\n\t},\n\tset(this: Signal, value) {\n\t\tif (value !== this._value) {\n\t\t\tif (batchIteration > 100) {\n\t\t\t\tthrow new Error(\"Cycle detected\");\n\t\t\t}\n\n\t\t\tthis._value = value;\n\t\t\tthis._version++;\n\t\t\tglobalVersion++;\n\n\t\t\t/**@__INLINE__*/ startBatch();\n\t\t\ttry {\n\t\t\t\tfor (\n\t\t\t\t\tlet node = this._targets;\n\t\t\t\t\tnode !== undefined;\n\t\t\t\t\tnode = node._nextTarget\n\t\t\t\t) {\n\t\t\t\t\tnode._target._notify();\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tendBatch();\n\t\t\t}\n\t\t}\n\t},\n});\n\n/**\n * Create a new plain signal.\n *\n * @param value The initial value for the signal.\n * @returns A new signal.\n */\nexport function signal<T>(value: T, options?: SignalOptions<T>): Signal<T>;\nexport function signal<T = undefined>(): Signal<T | undefined>;\nexport function signal<T>(value?: T, options?: SignalOptions<T>): Signal<T> {\n\treturn new Signal(value, options);\n}\n\nfunction needsToRecompute(target: Computed | Effect): boolean {\n\t// Check the dependencies for changed values. The dependency list is already\n\t// in order of use. Therefore if multiple dependencies have changed values, only\n\t// the first used dependency is re-evaluated at this point.\n\tfor (\n\t\tlet node = target._sources;\n\t\tnode !== undefined;\n\t\tnode = node._nextSource\n\t) {\n\t\tif (\n\t\t\t// If the dependency has definitely been updated since its version number\n\t\t\t// was observed, then we need to recompute. This first check is not strictly\n\t\t\t// necessary for correctness, but allows us to skip the refresh call if the\n\t\t\t// dependency has already been updated.\n\t\t\tnode._source._version !== node._version ||\n\t\t\t// Refresh the dependency. If there's something blocking the refresh (e.g. a\n\t\t\t// dependency cycle), then we need to recompute.\n\t\t\t!node._source._refresh() ||\n\t\t\t// If the dependency got a new version after the refresh, then we need to recompute.\n\t\t\tnode._source._version !== node._version\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\t// If none of the dependencies have changed values since last recompute then\n\t// there's no need to recompute.\n\treturn false;\n}\n\nfunction prepareSources(target: Computed | Effect) {\n\t/**\n\t * 1. Mark all current sources as re-usable nodes (version: -1)\n\t * 2. Set a rollback node if the current node is being used in a different context\n\t * 3. Point 'target._sources' to the tail of the doubly-linked list, e.g:\n\t *\n\t * { undefined <- A <-> B <-> C -> undefined }\n\t * ↑ ↑\n\t * │ └──────┐\n\t * target._sources = A; (node is head) │\n\t * ↓ │\n\t * target._sources = C; (node is tail) ─┘\n\t */\n\tfor (\n\t\tlet node = target._sources;\n\t\tnode !== undefined;\n\t\tnode = node._nextSource\n\t) {\n\t\tconst rollbackNode = node._source._node;\n\t\tif (rollbackNode !== undefined) {\n\t\t\tnode._rollbackNode = rollbackNode;\n\t\t}\n\t\tnode._source._node = node;\n\t\tnode._version = -1;\n\n\t\tif (node._nextSource === undefined) {\n\t\t\ttarget._sources = node;\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nfunction cleanupSources(target: Computed | Effect) {\n\tlet node = target._sources;\n\tlet head: Node | undefined = undefined;\n\n\t/**\n\t * At this point 'target._sources' points to the tail of the doubly-linked list.\n\t * It contains all existing sources + new sources in order of use.\n\t * Iterate backwards until we find the head node while dropping old dependencies.\n\t */\n\twhile (node !== undefined) {\n\t\tconst prev = node._prevSource;\n\n\t\t/**\n\t\t * The node was not re-used, unsubscribe from its change notifications and remove itself\n\t\t * from the doubly-linked list. e.g:\n\t\t *\n\t\t * { A <-> B <-> C }\n\t\t * ↓\n\t\t * { A <-> C }\n\t\t */\n\t\tif (node._version === -1) {\n\t\t\tnode._source._unsubscribe(node);\n\n\t\t\tif (prev !== undefined) {\n\t\t\t\tprev._nextSource = node._nextSource;\n\t\t\t}\n\t\t\tif (node._nextSource !== undefined) {\n\t\t\t\tnode._nextSource._prevSource = prev;\n\t\t\t}\n\t\t} else {\n\t\t\t/**\n\t\t\t * The new head is the last node seen which wasn't removed/unsubscribed\n\t\t\t * from the doubly-linked list. e.g:\n\t\t\t *\n\t\t\t * { A <-> B <-> C }\n\t\t\t * ↑ ↑ ↑\n\t\t\t * │ │ └ head = node\n\t\t\t * │ └ head = node\n\t\t\t * └ head = node\n\t\t\t */\n\t\t\thead = node;\n\t\t}\n\n\t\tnode._source._node = node._rollbackNode;\n\t\tif (node._rollbackNode !== undefined) {\n\t\t\tnode._rollbackNode = undefined;\n\t\t}\n\n\t\tnode = prev;\n\t}\n\n\ttarget._sources = head;\n}\n\n/**\n * The base class for computed signals.\n */\ndeclare class Computed<T = any> extends Signal<T> {\n\t_fn: () => T;\n\t_sources?: Node;\n\t_globalVersion: number;\n\t_flags: number;\n\n\tconstructor(fn: () => T, options?: SignalOptions<T>);\n\n\t_notify(): void;\n\tget value(): T;\n}\n\n/** @internal */\nfunction Computed(this: Computed, fn: () => unknown, options?: SignalOptions) {\n\tSignal.call(this, undefined);\n\n\tthis._fn = fn;\n\tthis._sources = undefined;\n\tthis._globalVersion = globalVersion - 1;\n\tthis._flags = OUTDATED;\n\tthis._watched = options?.watched;\n\tthis._unwatched = options?.unwatched;\n\tthis.name = options?.name;\n}\n\nComputed.prototype = new Signal() as Computed;\n\nComputed.prototype._refresh = function () {\n\tthis._flags &= ~NOTIFIED;\n\n\tif (this._flags & RUNNING) {\n\t\treturn false;\n\t}\n\n\t// If this computed signal has subscribed to updates from its dependencies\n\t// (TRACKING flag set) and none of them have notified about changes (OUTDATED\n\t// flag not set), then the computed value can't have changed.\n\tif ((this._flags & (OUTDATED | TRACKING)) === TRACKING) {\n\t\treturn true;\n\t}\n\tthis._flags &= ~OUTDATED;\n\n\tif (this._globalVersion === globalVersion) {\n\t\treturn true;\n\t}\n\tthis._globalVersion = globalVersion;\n\n\t// Mark this computed signal running before checking the dependencies for value\n\t// changes, so that the RUNNING flag can be used to notice cyclical dependencies.\n\tthis._flags |= RUNNING;\n\tif (this._version > 0 && !needsToRecompute(this)) {\n\t\tthis._flags &= ~RUNNING;\n\t\treturn true;\n\t}\n\n\tconst prevContext = evalContext;\n\ttry {\n\t\tprepareSources(this);\n\t\tevalContext = this;\n\t\tconst value = this._fn();\n\t\tif (\n\t\t\tthis._flags & HAS_ERROR ||\n\t\t\tthis._value !== value ||\n\t\t\tthis._version === 0\n\t\t) {\n\t\t\tthis._value = value;\n\t\t\tthis._flags &= ~HAS_ERROR;\n\t\t\tthis._version++;\n\t\t}\n\t} catch (err) {\n\t\tthis._value = err;\n\t\tthis._flags |= HAS_ERROR;\n\t\tthis._version++;\n\t}\n\tevalContext = prevContext;\n\tcleanupSources(this);\n\tthis._flags &= ~RUNNING;\n\treturn true;\n};\n\nComputed.prototype._subscribe = function (node) {\n\tif (this._targets === undefined) {\n\t\tthis._flags |= OUTDATED | TRACKING;\n\n\t\t// A computed signal subscribes lazily to its dependencies when it\n\t\t// gets its first subscriber.\n\t\tfor (\n\t\t\tlet node = this._sources;\n\t\t\tnode !== undefined;\n\t\t\tnode = node._nextSource\n\t\t) {\n\t\t\tnode._source._subscribe(node);\n\t\t}\n\t}\n\tSignal.prototype._subscribe.call(this, node);\n};\n\nComputed.prototype._unsubscribe = function (node) {\n\t// Only run the unsubscribe step if the computed signal has any subscribers.\n\tif (this._targets !== undefined) {\n\t\tSignal.prototype._unsubscribe.call(this, node);\n\n\t\t// Computed signal unsubscribes from its dependencies when it loses its last subscriber.\n\t\t// This makes it possible for unreferences subgraphs of computed signals to get garbage collected.\n\t\tif (this._targets === undefined) {\n\t\t\tthis._flags &= ~TRACKING;\n\n\t\t\tfor (\n\t\t\t\tlet node = this._sources;\n\t\t\t\tnode !== undefined;\n\t\t\t\tnode = node._nextSource\n\t\t\t) {\n\t\t\t\tnode._source._unsubscribe(node);\n\t\t\t}\n\t\t}\n\t}\n};\n\nComputed.prototype._notify = function () {\n\tif (!(this._flags & NOTIFIED)) {\n\t\tthis._flags |= OUTDATED | NOTIFIED;\n\n\t\tfor (\n\t\t\tlet node = this._targets;\n\t\t\tnode !== undefined;\n\t\t\tnode = node._nextTarget\n\t\t) {\n\t\t\tnode._target._notify();\n\t\t}\n\t}\n};\n\nObject.defineProperty(Computed.prototype, \"value\", {\n\tget(this: Computed) {\n\t\tif (this._flags & RUNNING) {\n\t\t\tthrow new Error(\"Cycle detected\");\n\t\t}\n\t\tconst node = addDependency(this);\n\t\tthis._refresh();\n\t\tif (node !== undefined) {\n\t\t\tnode._version = this._version;\n\t\t}\n\t\tif (this._flags & HAS_ERROR) {\n\t\t\tthrow this._value;\n\t\t}\n\t\treturn this._value;\n\t},\n});\n\n/**\n * An interface for read-only signals.\n */\ninterface ReadonlySignal<T = any> {\n\treadonly value: T;\n\tpeek(): T;\n\n\tsubscribe(fn: (value: T) => void): () => void;\n\tvalueOf(): T;\n\ttoString(): string;\n\ttoJSON(): T;\n\tbrand: typeof BRAND_SYMBOL;\n}\n\n/**\n * Create a new signal that is computed based on the values of other signals.\n *\n * The returned computed signal is read-only, and its value is automatically\n * updated when any signals accessed from within the callback function change.\n *\n * @param fn The effect callback.\n * @returns A new read-only signal.\n */\nfunction computed<T>(\n\tfn: () => T,\n\toptions?: SignalOptions<T>\n): ReadonlySignal<T> {\n\treturn new Computed(fn, options);\n}\n\nfunction cleanupEffect(effect: Effect) {\n\tconst cleanup = effect._cleanup;\n\teffect._cleanup = undefined;\n\n\tif (typeof cleanup === \"function\") {\n\t\t/*@__INLINE__**/ startBatch();\n\n\t\t// Run cleanup functions always outside of any context.\n\t\tconst prevContext = evalContext;\n\t\tevalContext = undefined;\n\t\ttry {\n\t\t\tcleanup();\n\t\t} catch (err) {\n\t\t\teffect._flags &= ~RUNNING;\n\t\t\teffect._flags |= DISPOSED;\n\t\t\tdisposeEffect(effect);\n\t\t\tthrow err;\n\t\t} finally {\n\t\t\tevalContext = prevContext;\n\t\t\tendBatch();\n\t\t}\n\t}\n}\n\nfunction disposeEffect(effect: Effect) {\n\tfor (\n\t\tlet node = effect._sources;\n\t\tnode !== undefined;\n\t\tnode = node._nextSource\n\t) {\n\t\tnode._source._unsubscribe(node);\n\t}\n\teffect._fn = undefined;\n\teffect._sources = undefined;\n\n\tcleanupEffect(effect);\n}\n\nfunction endEffect(this: Effect, prevContext?: Computed | Effect) {\n\tif (evalContext !== this) {\n\t\tthrow new Error(\"Out-of-order effect\");\n\t}\n\tcleanupSources(this);\n\tevalContext = prevContext;\n\n\tthis._flags &= ~RUNNING;\n\tif (this._flags & DISPOSED) {\n\t\tdisposeEffect(this);\n\t}\n\tendBatch();\n}\n\ntype EffectFn =\n\t| ((this: { dispose: () => void }) => void | (() => void))\n\t| (() => void | (() => void));\n\n/**\n * The base class for reactive effects.\n */\ndeclare class Effect {\n\t_fn?: EffectFn;\n\t_cleanup?: () => void;\n\t_sources?: Node;\n\t_nextBatchedEffect?: Effect;\n\t_flags: number;\n\tname?: string;\n\n\tconstructor(fn: EffectFn, options?: EffectOptions);\n\n\t_callback(): void;\n\t_start(): () => void;\n\t_notify(): void;\n\t_dispose(): void;\n\tdispose(): void;\n}\n\nexport interface EffectOptions {\n\tname?: string;\n}\n\n/** @internal */\nfunction Effect(this: Effect, fn: EffectFn, options?: EffectOptions) {\n\tthis._fn = fn;\n\tthis._cleanup = undefined;\n\tthis._sources = undefined;\n\tthis._nextBatchedEffect = undefined;\n\tthis._flags = TRACKING;\n\tthis.name = options?.name;\n}\n\nEffect.prototype._callback = function () {\n\tconst finish = this._start();\n\ttry {\n\t\tif (this._flags & DISPOSED) return;\n\t\tif (this._fn === undefined) return;\n\n\t\tconst cleanup = this._fn();\n\t\tif (typeof cleanup === \"function\") {\n\t\t\tthis._cleanup = cleanup;\n\t\t}\n\t} finally {\n\t\tfinish();\n\t}\n};\n\nEffect.prototype._start = function () {\n\tif (this._flags & RUNNING) {\n\t\tthrow new Error(\"Cycle detected\");\n\t}\n\tthis._flags |= RUNNING;\n\tthis._flags &= ~DISPOSED;\n\tcleanupEffect(this);\n\tprepareSources(this);\n\n\t/*@__INLINE__**/ startBatch();\n\tconst prevContext = evalContext;\n\tevalContext = this;\n\treturn endEffect.bind(this, prevContext);\n};\n\nEffect.prototype._notify = function () {\n\tif (!(this._flags & NOTIFIED)) {\n\t\tthis._flags |= NOTIFIED;\n\t\tthis._nextBatchedEffect = batchedEffect;\n\t\tbatchedEffect = this;\n\t}\n};\n\nEffect.prototype._dispose = function () {\n\tthis._flags |= DISPOSED;\n\n\tif (!(this._flags & RUNNING)) {\n\t\tdisposeEffect(this);\n\t}\n};\n\nEffect.prototype.dispose = function () {\n\tthis._dispose();\n};\n/**\n * Create an effect to run arbitrary code in response to signal changes.\n *\n * An effect tracks which signals are accessed within the given callback\n * function `fn`, and re-runs the callback when those signals change.\n *\n * The callback may return a cleanup function. The cleanup function gets\n * run once, either when the callback is next called or when the effect\n * gets disposed, whichever happens first.\n *\n * @param fn The effect callback.\n * @returns A function for disposing the effect.\n */\nfunction effect(fn: EffectFn, options?: EffectOptions): () => void {\n\tconst effect = new Effect(fn, options);\n\ttry {\n\t\teffect._callback();\n\t} catch (err) {\n\t\teffect._dispose();\n\t\tthrow err;\n\t}\n\t// Return a bound function instead of a wrapper like `() => effect._dispose()`,\n\t// because bound functions seem to be just as fast and take up a lot less memory.\n\tconst dispose = effect._dispose.bind(effect);\n\t(dispose as any)[Symbol.dispose] = dispose;\n\treturn dispose as any;\n}\n\nexport {\n\tcomputed,\n\teffect,\n\tbatch,\n\tuntracked,\n\tSignal,\n\tReadonlySignal,\n\tEffect,\n\tComputed,\n};\n", "var sprae = require(\"./sprae.js\").default; var signals = require(\"@preact/signals-core\"); var use = require(\"./core.js\").use; use(signals); module.exports = sprae; var cur = document.currentScript;\nvar prefix = cur.getAttribute(\"prefix\") ?? cur.dataset.prefix ?? cur.dataset.spraePrefix;\nvar start = cur.getAttribute(\"start\") ?? cur.dataset.start ?? cur.dataset.spraeStart;\ncur.removeAttribute(\"prefix\"); cur.removeAttribute(\"start\"); delete cur.dataset.prefix; delete cur.dataset.start; delete cur.dataset.spraePrefix; delete cur.dataset.spraeStart;\nif (prefix) sprae.use({ prefix });\nif (start != null && start !== 'false') (start && start !== 'true' ? document.querySelectorAll(start) : [document.body || document.documentElement]).forEach(el => sprae.start(el))"],
5
+ "mappings": "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",
6
+ "names": ["core_exports", "__export", "_add", "_change", "_dispose", "_off", "_on", "_set", "_signals", "_state", "attr", "batch", "clsx", "compile", "computed", "dashcase", "debounce", "decorate", "core_default", "dir", "directive", "effect", "frag", "isCE", "mo", "modifier", "mutate", "parse", "prefix", "signal", "start", "store", "throttle", "untracked", "use", "currentDir", "currentEl", "elHint", "err", "sprae", "cache", "camelcase", "init_core", "__esmMin", "init_store", "el", "fn", "hint", "e", "expr", "msg", "display", "root", "state", "store_default", "fx", "offs", "i", "current", "add", "_attrs", "name", "value", "prev", "child", "next", "cb", "_out", "result", "v", "config", "mods", "params", "mod", "wrapFn", "k", "values", "mutations", "m", "tpl", "doc", "content", "attributes", "ref", "childNodes", "str", "match", "_", "c", "s", "ms", "_planned", "_depth", "arg", "schedule", "throttled", "dirty", "immediate", "_blocked", "_count", "_c", "_signals", "_change", "_set", "_parent", "sandbox", "store", "list", "create", "shallow", "set", "store_default", "init_store", "__esmMin", "init_core", "values", "parent", "keyCount", "signals", "state", "signal", "_", "k", "v", "descs", "computed", "isMut", "mut", "fn", "length", "i", "wrap", "ver", "t", "val", "prev", "_s", "_v", "untracked", "batch", "signal_exports", "__export", "batch", "computed", "effect", "signal", "untracked", "current", "depth", "batched", "init_signal", "__esmMin", "v", "_s", "_obs", "_v", "val", "sub", "fn", "_teardown", "_fx", "_deps", "prev", "tmp", "dep", "_c", "_e", "_first", "_list", "fx", "_prev", "if_default", "init_if", "__esmMin", "init_core", "el", "state", "_a", "_b", "_holder", "_el", "core_default", "_state", "frag", "mutate", "throttle", "match", "s", "_off", "_on", "cb", "value", "else_default", "init_else", "__esmMin", "init_core", "el", "_a", "_el", "_prev", "frag", "_state", "text_default", "init_text", "__esmMin", "init_core", "el", "frag", "v", "cur", "node", "root", "active", "off", "pos", "r", "class_default", "init_class", "__esmMin", "init_core", "el", "st", "ex", "name", "_cur", "_new", "_prev", "clearAttr", "v", "clsx", "style_default", "init_style", "__esmMin", "init_core", "el", "st", "ex", "name", "_static", "v", "attr", "k", "fx_default", "init_fx", "__esmMin", "fn", "value_default", "init_value", "__esmMin", "init_core", "el", "state", "core_default", "value", "_from", "_to", "attr", "v", "setter", "ref_default", "init_ref", "__esmMin", "init_core", "expr", "_set", "parse", "target", "value", "el", "state", "result", "scope_default", "init_scope", "__esmMin", "init_core", "init_store", "el", "rootState", "state", "_state", "store", "init", "holder", "_frag", "frag", "values", "k", "d", "_signals", "computed", "_set", "v", "signal", "untracked", "core_default", "posHandler", "keyHandler", "rm", "each_default", "init_each", "__esmMin", "init_core", "s", "k", "_signals", "v", "r", "tpl", "state", "expr", "lhs", "rhs", "itemVar", "idxVar", "doc", "holder", "rowMap", "rows", "items", "keys", "cur", "keyed", "mkrow", "scope", "h", "proxy", "el", "frag", "insert", "pending", "f", "core_default", "update", "throttle", "mutate", "src", "newl", "prevl", "i", "newRows", "seen", "moved", "id", "row", "next", "n", "_state", "cb", "value", "_", "off", "effect", "_change", "parse", "_off", "__default", "init__", "__esmMin", "init_core", "el", "st", "ex", "name", "v", "attr", "isCE", "spread_default", "init_spread", "__esmMin", "init_core", "target", "value", "ce", "isCE", "key", "attr", "dashcase", "event_default", "init_event", "__esmMin", "init_core", "el", "state", "expr", "name", "type", "mods", "evaluate", "parse", "trigger", "decorate", "e", "fn", "sequence_default", "init_sequence", "__esmMin", "init_core", "el", "state", "expr", "names", "cur", "off", "evaluate", "parse", "steps", "step", "i", "length", "prev", "str", "name", "mods", "next", "fn", "e", "trigger", "decorate", "_poff", "isTemplate", "html_default", "init_html", "__esmMin", "init_core", "v", "el", "state", "_el", "html", "doc", "holder", "_dispose", "frag", "untracked", "core_default", "_a", "_state", "portal_default", "init_portal", "__esmMin", "el", "state", "expr", "doc", "comment", "currentTarget", "value", "root", "target", "hidden_default", "init_hidden", "__esmMin", "el", "value", "mount_default", "init_mount", "__esmMin", "init_core", "el", "state", "expr", "name", "mods", "evaluate", "parse", "cleanup", "decorate", "result", "fn", "_dispose", "change_default", "init_change", "__esmMin", "init_core", "el", "state", "expr", "name", "mods", "evaluate", "parse", "coerce", "o", "handler", "decorate", "fn", "_dispose", "intersect", "intersect_default", "init_intersect", "__esmMin", "init_core", "el", "state", "expr", "name", "mods", "evaluate", "parse", "once", "trigger", "decorate", "entry", "fn", "io", "entries", "_dispose", "resize", "resize_default", "init_resize", "__esmMin", "init_core", "el", "state", "expr", "name", "mods", "evaluate", "parse", "trigger", "decorate", "size", "fn", "ro", "entries", "entry", "rect", "_dispose", "sprae_exports", "__export", "batch", "computed", "debounce", "sprae_default", "dispose", "effect", "signal", "core_default", "start", "store_default", "throttle", "untracked", "use", "dir", "parseTime", "scheduler", "keys", "keyMatch", "hasSemi", "init_sprae", "__esmMin", "init_store", "init_core", "init_signal", "init_if", "init_else", "init_text", "init_class", "init_style", "init_fx", "init_value", "init_ref", "init_scope", "init_each", "init__", "init_spread", "init_event", "init_sequence", "init_html", "init_portal", "init_hidden", "init_mount", "init_change", "init_intersect", "init_resize", "mount_default", "change_default", "directive", "__default", "spread_default", "class_default", "text_default", "html_default", "style_default", "fx_default", "value_default", "ref_default", "scope_default", "if_default", "else_default", "each_default", "portal_default", "hidden_default", "intersect_default", "resize_default", "target", "name", "expr", "state", "dirName", "mods", "create", "hasMods", "el", "update", "change", "trigger", "count", "decorate", "_dispose", "evaluate", "parse", "_out", "out", "isCE", "_state", "off", "_d", "_off", "n", "u", "fn", "modifier", "a", "b", "sched", "e", "_done", "_fn", "_pd", "doc", "pdHandler", "_skip", "_how", "k", "s", "d", "q", "esc", "ch", "sequence_default", "prev", "str", "obs", "event_default", "p", "signal_exports", "signals_core_module_exports", "__export", "y", "p", "u", "r", "w", "E", "d", "n", "endBatch", "batchDepth", "error", "hasError", "batchedEffect", "effect", "batchIteration", "next", "_nextBatchedEffect", "_flags", "needsToRecompute", "_callback", "err", "batch", "fn", "untracked", "prevContext", "evalContext", "addDependency", "signal", "node", "_node", "_target", "_version", "_source", "_prevSource", "_sources", "_nextSource", "_prevTarget", "_nextTarget", "_rollbackNode", "_subscribe", "Signal", "value", "options", "this", "_value", "_targets", "_watched", "watched", "_unwatched", "unwatched", "name", "target", "_refresh", "prepareSources", "rollbackNode", "cleanupSources", "head", "prev", "_unsubscribe", "Computed", "call", "undefined", "_fn", "_globalVersion", "globalVersion", "computed", "cleanupEffect", "cleanup", "_cleanup", "disposeEffect", "endEffect", "Error", "Effect", "_dispose", "dispose", "bind", "Symbol", "BRAND_SYMBOL", "init_signals_core_module", "__esmMin", "prototype", "brand", "_this", "targets", "_this$_watched", "_this2", "_this2$_unwatched", "subscribe", "_this3", "valueOf", "toString", "toJSON", "peek", "Object", "defineProperty", "get", "set", "_notify", "OUTDATED", "finish", "_start", "sprae", "signals", "use", "cur", "prefix", "start", "el"]
7
7
  }