dothtml 6.0.2 → 6.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/constants.ts","../src/reactivity/binding.ts","../src/v-meta-nodes/v-meta-node.ts","../src/helpers/tools.ts","../src/vdom-nodes/vdom.ts","../src/vdom-nodes/text-vdom.ts","../src/vdom-nodes/fragment-vdom.ts","../src/reactivity/priority.ts","../src/reactivity/scheduler.ts","../src/vdom-nodes/collection-vdom.ts","../src/vdom-nodes/conditional-vdom.ts","../src/vdom-nodes/html-vdom.ts","../src/reactivity/reactive-attr.ts","../src/reactivity/subscription.ts","../src/reactivity/signal.ts","../src/v-meta-nodes/attribute-v-node.ts","../src/css/css-props.ts","../src/v-style-nodes/css-function-builder-v-style.ts","../src/css/format-css-type.ts","../src/v-style-nodes/filter-v-style.ts","../src/v-style-nodes/transform-v-style.ts","../src/v-style-nodes/base-v-style.ts","../src/v-meta-nodes/style-v-node.ts","../src/events/synthetic-event.ts","../src/events/event-manager.ts","../src/vdom-nodes/element-vdom.ts","../src/vdom-nodes/container-vdom.ts","../src/reactivity/ref.ts","../src/dot-event-attrs.ts","../src/dot-helpers.ts","../src/helpers/render-stylesheet.ts","../src/vdom-nodes/component-context.ts","../src/reactivity/computed.ts","../src/v-style-nodes/keyframes-builder.ts","../src/v-style-nodes/style-sheet-builder.ts","../src/reactivity/ref-collection.ts","../src/hmr-registry.ts","../src/vdom-nodes/component-vdom.ts","../src/vdom-nodes/reactive-vdom.ts","../src/reactivity/effect.ts","../src/decoration/component.ts","../src/window-wrapper.ts","../src/reactivity/store.ts","../src/tags.ts","../src/vdom-nodes/slot-vdom.ts","../src/dot-chain.ts","../src/dot.ts","../src/routing/state.ts","../src/routing/router.ts","../src/routing/helpers.ts","../src/routing/link.ts","../src/helpers/dom-utils.ts","../src/routing/scroll-manager.ts","../src/base-component.ts"],"sourcesContent":["\nexport type * from \"dothtml-interfaces\";\n\nimport dot from \"./dot\";\nimport { Priority } from \"./reactivity/priority\";\nimport { \n\tcurrentPath, \n\tcurrentSearch, \n\tcurrentHash, \n\tnavigate, \n\tuseQueryParams, \n\tuseHash, \n\tRouter, \n\tLink \n} from \"./routing\";\nimport { initScrollManager } from \"./routing/scroll-manager\";\n\ndot.version = \"6.0.0\";\n\n// Initialize scroll manager\ninitScrollManager();\n\n// Attach routing features to dot.\n(dot as any).currentPath = currentPath;\n(dot as any).currentSearch = currentSearch;\n(dot as any).currentHash = currentHash;\n(dot as any).navigate = navigate;\n(dot as any).useQueryParams = useQueryParams;\n(dot as any).useHash = useHash;\n(dot as any).Router = Router;\n(dot as any).Link = Link;\n\n\n// Extend the Window interface to include your dot property\ndeclare global {\n\tinterface Window {\n\t\tdot: typeof dot;\n\t}\n}\n\n// Attach dot to the window object\nwindow.dot = dot;\ndocument[\"_dotId\"] = \"default\";\n\nexport { dot, Priority };\nexport * from \"./routing\";\nexport * from \"./base-component\";\n\n\n","export const DOT_VDOM_PROP_NAME = \"_dotVDom\";\nexport const IS_DEV = typeof process !== 'undefined' \n ? process.env.NODE_ENV !== 'production' \n : (() => {\n\t\ttry {\n\t\t\treturn (new Function(\"return import.meta.env?.DEV\")());\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t})() ?? false;","import { IBinding, IWatcher } from \"dothtml-interfaces\";\nimport Signal from \"./signal\";\n\nexport default class Binding<T = any, Td = T> implements IBinding<T, Td> {\n\t_source: IWatcher<T>;\n\n\t_transform: {\n\t\tdisplay?: (v: T)=>Td;\n\t\tread?: (v: string)=>T;\n\t}\n\n\tget isWritable(): boolean {\n\t\treturn (this._source as any).isWritable && (!this._transform || !!this._transform.read);\n\t}\n\n\tget value(): Td {\n\t\treturn this._get();\n\t}\n\n\t_get(): Td{\n\t\t\n\t\tlet v = this._transform?.display ? this._transform.display(this._source.value) : this._source.value as unknown as Td;\n\n\t\treturn v;\n\t}\n\n\t_set(v: string|number|boolean){\n\t\tlet value = this._transform?.read ? this._transform.read(v as string) : v as unknown as T;\n\t\tthis._source.value = value;\n\t}\n\n\t_subscribe(subscriber: any, sync: boolean = false): number{\n\t\treturn (this._source as any)._subscribe(this, subscriber, sync);\n\t}\n\n\tsubscribe(callback: Function, sync: boolean = false): number {\n\t\treturn this._subscribe(callback, sync);\n\t}\n\n\t_unsubscribe(id: number){\n\t\tthis._source.unsubscribe(id);\n\t}\n\n\tunsubscribe(id: number) {\n\t\tthis._source.unsubscribe(id);\n\t}\n\n\tconstructor(source: IWatcher<T>){\n\t\tthis._source = source;\n\t}\n}\n","\n\nexport default abstract class VMetaNode{\n\tabstract render(target: HTMLElement): void;\n\tabstract unrender(): void;\n\tabstract update(): void;\n}","import { DOT_VDOM_PROP_NAME } from \"../constants\";\n\nexport function removeNodesBetween(start: Node, end: Node): void {\n\t// Check if the start and end nodes have the same parent\n\tif (start.parentNode !== end.parentNode) {\n\t\tthrow new Error(\"Start and end nodes must have the same parent.\");\n\t}\n\n\tlet current: Node|null = start.nextSibling;\n\n\t// Traverse and remove nodes between start and end\n\twhile (current && current !== end) {\n\t\tconst next: Node|null = current.nextSibling;\n\t\t// TODO: this condition won't entirely work because of the possibility of deeply-nested children. \n\t\t// Until a solution is found, this behaviour just won't be fully supported for HTML nodes.\n // At the very least, a test case should be added to track this.\n\t\tif(current[DOT_VDOM_PROP_NAME]){\n\t\t\tcurrent[DOT_VDOM_PROP_NAME]._unrender();\n\t\t}\n\t\telse{\n\t\t\tcurrent.parentNode?.removeChild(current);\n\t\t}\n\t\tcurrent = next;\n\t}\n}\n\nexport function deepEqual(obj1: any, obj2: any, visited = new Map()): boolean {\n if (obj1 === obj2) {\n return true;\n }\n\n if (obj1 == null || obj2 == null || typeof obj1 !== 'object' || typeof obj2 !== 'object') {\n return false;\n }\n\n // Handle cyclic references\n if (visited.has(obj1)) {\n return visited.get(obj1) === obj2;\n }\n visited.set(obj1, obj2);\n\n if (Array.isArray(obj1) && Array.isArray(obj2)) {\n if (obj1.length !== obj2.length) {\n return false;\n }\n }\n\n for (const prop in obj1) {\n if (!obj2.hasOwnProperty(prop)) {\n return false;\n }\n if (!deepEqual(obj1[prop], obj2[prop], visited)) {\n return false;\n }\n }\n\n for (const prop in obj2) {\n if (!obj1.hasOwnProperty(prop)) {\n return false;\n }\n }\n\n return true;\n}\n\nexport const floatRegex = new RegExp(\"[-+]?[0-9]*\\\\.?[0-9]+(?:[eE][-+]?[0-9]+)?\", \"g\");","import { IDotCore } from \"dothtml-interfaces\";\n\nexport abstract class Vdom{\n\n\t_dot: IDotCore;\n\t_onEnterHook?: (el: HTMLElement) => void;\n\t_onLeaveHook?: (el: HTMLElement) => Promise<void> | void;\n\n\tconstructor(dot?: IDotCore){\n\t\tthis._dot = dot;\n\t}\n\n\t// One (and only one) of these is valid:\n\n\tabstract _render(target: HTMLElement);\n\tabstract _unrender();\n\n\tasync _unrenderAsync() {\n\t\tconst nodes = this._getNodes();\n\t\tconst el = nodes.find(n => n instanceof HTMLElement) as HTMLElement;\n\t\tif (this._onLeaveHook && el) {\n\t\t\tawait this._onLeaveHook(el);\n\t\t}\n\t\tthis._unrender();\n\t}\n\n\tabstract _getNodes(): Node[];\n\tabstract _getLastChild(): Vdom | null;\n\n\t_moveBefore(reference: Node, parent?: Node){\n\t\tlet nodes = this._getNodes();\n\t\tif (nodes.length === 0) return;\n\t\tlet p = reference?.parentElement || parent;\n\t\tif (!p) throw new Error(\"Internal Error: Cannot move nodes without a parent.\");\n\t\t\n\t\tfor (let i = 0; i < nodes.length; i++) {\n\t\t\tif (nodes[i] === reference) return;\n\t\t}\n\n\t\tlet fragment = (reference?.ownerDocument || p.ownerDocument || document).createDocumentFragment();\n\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\tfragment.appendChild(nodes[i]);\n\t\t}\n\t\tp.insertBefore(fragment, reference);\n\t}\n\n\t__isRendered = false;\n\tget _isRendered(){\n\t\treturn this.__isRendered\n\t}\n\tset _isRendered(value: boolean){\n\t\tif(value && this.__isRendered) throw new Error(\"Internal Error: Node is already rendered.\");\n\t\tif(!value && !this.__isRendered) throw new Error(\"Internal Error: Node is not rendered.\");\n\t\tthis.__isRendered = value;\n\t}\n\t\n\ttoString(): string {\n\t\tlet el = document.createElement(\"div\");\n\t\tthis._render(el);\n\t\treturn el.innerHTML;\n\t}\n\n\t_renderBefore(reference: Node){\n\t\tlet dummy = reference.ownerDocument.createElement(\"div\");\n\t\tthis._render(dummy);\n\t\twhile(dummy.childNodes.length > 0){\n\t\t\tlet cn = dummy.childNodes[0];\n\t\t\tcn.parentElement.removeChild(cn);\n\t\t\treference.parentElement.insertBefore(cn, reference);\n\t\t}\n\t}\n\t_renderAfter(reference: Node){\n\t\tif(reference.nextSibling){\n\t\t\tthis._renderBefore(reference.nextSibling);\n\t\t}\n\t\telse{\n\t\t\tlet temp = reference.ownerDocument.createTextNode(\"\");\n\t\t\treference.parentElement.appendChild(temp);\n\t\t\tthis._renderBefore(temp);\n\t\t\ttemp.parentElement.removeChild(temp);\n\t\t}\n\t}\n\n\t_moveTo(target: HTMLElement){\n\t\tlet nodes = this._getNodes();\n\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\ttarget.appendChild(nodes[i]);\n\t\t}\n\t}\n\n\t// Chaining methods (implemented in dot-chain.ts)\n\ttext(c: any): this { return null as any; }\n\thtml(c: any): this { return null as any; }\n\tmd(c: any): this { return null as any; }\n\tmount(c: any, attrs?: any): this { return null as any; }\n\twhen(condition: any, then: any): this { return null as any; }\n\teach(collection: any, callback: any): this { return null as any; }\n\totherwiseWhen(condition: any, then: any, seal?: boolean): this { return null as any; }\n\totherwise(then: any): this { return null as any; }\n\tattr(A: string, c: any): this { return null as any; }\n\tstyle(c: any): this { return null as any; }\n\ton(event: string, callback: (e: any)=>void): this { return null as any; }\n\tonEnter(callback: (el: HTMLElement)=>void): this { return null as any; }\n\tonLeave(callback: (el: HTMLElement)=>Promise<void>|void): this { return null as any; }\n\tempty(): this { return null as any; }\n\tremove(): void { }\n\t[key: string]: any;\n}\n","import Binding from \"../reactivity/binding\";\nimport Signal from \"../reactivity/signal\";\nimport { Vdom } from \"./vdom\";\n\n// TODO: experiment with turning all text into an observable to see if it improves render performance.\n\nexport class TextVdom extends Vdom{\n\n\t_text: string|boolean|number|Binding;\n\ttextNode: Node = null;\n\tobserverId = 0;\n\n\tconstructor(text: string|boolean|number|Binding){\n\t\tsuper();\n\t\tthis._text = text;\n\t}\n\n\t_render(node: HTMLElement) {\n\t\tif(this._text instanceof Binding){\n\t\t\tthis.textNode = node.ownerDocument.createTextNode(this._text._get() ?? \"\");\n\t\t\tthis.observerId = this._text._subscribe(this);\n\t\t}\n\t\telse{\n\t\t\tthis.textNode = node.ownerDocument.createTextNode(`${this._text ?? \"\"}`);\n\t\t}\n\t\t\n\t\tnode.appendChild(this.textNode);\n\t}\n\n\t_unrender() {\n\t\tif(this.textNode){\n\t\t\tif (this.textNode.parentElement) {\n\t\t\t\tthis.textNode.parentElement.removeChild(this.textNode);\n\t\t\t}\n\t\t\tthis.textNode = null;\n\t\t}\n\n\t\tif(this.observerId && this._text instanceof Binding){\n\t\t\tthis._text._unsubscribe(this.observerId);\n\t\t\tthis.observerId = 0;\n\t\t}\n\t}\n\n\t_getNodes(): Node[] {\n\t\treturn this.textNode ? [this.textNode] : [];\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this;\n\t}\n\n\ttoString(){\n\t\tlet temp = document.createTextNode((this._text instanceof Binding ? this._text._get() : this._text) ?? \"\");\n\t\tlet div = document.createElement(\"div\");\n\t\tdiv.appendChild(temp);\n\t\treturn div.innerHTML;\n\t}\n}","import { Vdom } from \"./vdom\";\nimport { IDotCore } from \"dothtml-interfaces\";\n\nexport class FragmentVdom extends Vdom {\n\t_children: Vdom[] = [];\n\n\tconstructor(dot?: IDotCore) {\n\t\tsuper(dot);\n\t}\n\n\t_render(target: HTMLElement) {\n\t\tthis._isRendered = true;\n\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\tthis._children[i]._render(target);\n\t\t}\n\t}\n\n\t_unrender() {\n\t\tif (!this._isRendered) return;\n\t\tthis._isRendered = false;\n\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\tthis._children[i]._unrender();\n\t\t}\n\t}\n\n\t_getNodes(): Node[] {\n\t\tlet nodes: Node[] = [];\n\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\tnodes.push(...this._children[i]._getNodes());\n\t\t}\n\t\treturn nodes;\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this._children[this._children.length - 1] || null;\n\t}\n}\n","export enum Priority {\n\tImmediate = 0,\n\tUserBlocking = 1,\n\tNormal = 2,\n\tBackground = 3\n}\n","import { Priority } from \"./priority\";\nimport Subscription from \"./subscription\";\n\n/**\n * The Scheduler is responsible for batching updates to the DOM.\n * It supports priority-based scheduling and time-slicing (concurrent rendering).\n */\nclass Scheduler {\n\tprivate queues: Array<Set<Subscription>> = [\n\t\tnew Set(), // Immediate\n\t\tnew Set(), // UserBlocking\n\t\tnew Set(), // Normal\n\t\tnew Set(), // Background\n\t];\n\tprivate isPending: boolean = false;\n\tprivate startTime: number = 0;\n\tprivate frameYieldMs: number = 5; // Yield after 5ms of work.\n\tprivate isSync: boolean = false;\n\tprivate isSyncing: boolean = false;\n\n\tpublic onError?: (err: any) => void;\n\n\tprivate channel = typeof MessageChannel !== \"undefined\" ? new MessageChannel() : null;\n\n\tconstructor() {\n\t\tif (this.channel) {\n\t\t\tthis.channel.port1.onmessage = () => this.workLoop();\n\t\t}\n\t}\n\n\t/**\n\t * Adds a subscription to the next batch with a specific priority.\n\t */\n\tenqueue(subscription: Subscription, priority: Priority = Priority.Normal) {\n\t\tif (!subscription.isQueued) {\n\t\t\tsubscription.isQueued = true;\n\t\t\tthis.queues[priority].add(subscription);\n\t\t}\n\n\t\tif (priority === Priority.Immediate || this.isSync) {\n\t\t\tthis.flushSync();\n\t\t} else {\n\t\t\tthis.scheduleFlush();\n\t\t}\n\t}\n\n\tprivate scheduleFlush() {\n\t\tif (this.isPending) return;\n\t\tthis.isPending = true;\n\n\t\tif (this.channel) {\n\t\t\tthis.channel.port2.postMessage(null);\n\t\t} else {\n\t\t\t// Fallback for environments without MessageChannel\n\t\t\tsetTimeout(() => this.workLoop(), 0);\n\t\t}\n\t}\n\n\t/**\n\t * Returns true if the current work chunk has exceeded the time budget.\n\t */\n\tshouldYield(): boolean {\n\t\treturn performance.now() - this.startTime >= this.frameYieldMs;\n\t}\n\n\t/**\n\t * The main work loop for processing enqueued updates.\n\t */\n\tprivate workLoop() {\n\t\tthis.startTime = performance.now();\n\t\tthis.isPending = false;\n\n\t\tlet hasMoreWork = this.flushQueues();\n\n\t\tif (hasMoreWork) {\n\t\t\tthis.scheduleFlush();\n\t\t}\n\t}\n\n\t/**\n\t * Flushes the queues based on priority.\n\t * Returns true if there is still work remaining (due to yielding).\n\t */\n\tprivate flushQueues(): boolean {\n\t\tfor (let p = Priority.Immediate; p <= Priority.Background; p++) {\n\t\t\tconst queue = this.queues[p];\n\t\t\tif (queue.size === 0) continue;\n\n\t\t\t// Take a snapshot and clear the queue immediately.\n\t\t\tconst items = Array.from(queue);\n\t\t\tqueue.clear();\n\n\t\t\tfor (let i = 0; i < items.length; i++) {\n\t\t\t\tconst subscription = items[i];\n\t\t\t\tsubscription.isQueued = false;\n\n\t\t\t\tif (subscription.active) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst continuation = subscription.update();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (continuation) {\n\t\t\t\t\t\t\tsubscription.isQueued = true;\n\t\t\t\t\t\t\tqueue.add(subscription);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tif (this.onError) {\n\t\t\t\t\t\t\tthis.onError(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.error(\"Scheduler error:\", err);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.shouldYield()) {\n\t\t\t\t\t// Put remaining items from the snapshot back into the queue.\n\t\t\t\t\tfor (let j = i + 1; j < items.length; j++) {\n\t\t\t\t\t\tqueue.add(items[j]);\n\t\t\t\t\t\t// items[j].isQueued is already true.\n\t\t\t\t\t}\n\t\t\t\t\treturn true; // We need to yield, work is not finished.\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Check if any new work was added to higher priority queues while processing lower ones.\n\t\tfor (let p = Priority.Immediate; p <= Priority.Background; p++) {\n\t\t\tif (this.queues[p].size > 0) return true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Synchronously flushes all pending updates.\n\t */\n\tflushSync() {\n\t\tif (this.isSyncing) return;\n\n\t\tthis.isSyncing = true;\n\t\t// We don't want the work loop to trigger while we're doing a sync flush.\n\t\tthis.isPending = true; \n\t\t\n\t\t// During flushSync, we should never yield.\n\t\tconst originalShouldYield = this.shouldYield;\n\t\tthis.shouldYield = () => false;\n\n\t\ttry {\n\t\t\tlet hasMoreWork = true;\n\t\t\twhile (hasMoreWork) {\n\t\t\t\thasMoreWork = false;\n\t\t\t\tfor (let p = Priority.Immediate; p <= Priority.Background; p++) {\n\t\t\t\t\tconst queue = this.queues[p];\n\t\t\t\t\tif (queue.size === 0) continue;\n\n\t\t\t\t\tconst items = Array.from(queue);\n\t\t\t\t\tqueue.clear();\n\n\t\t\t\t\tfor (const subscription of items) {\n\t\t\t\t\t\tsubscription.isQueued = false;\n\t\t\t\t\t\tif (subscription.active) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst continuation = subscription.update();\n\t\t\t\t\t\t\t\tif (continuation) {\n\t\t\t\t\t\t\t\t\tsubscription.isQueued = true;\n\t\t\t\t\t\t\t\t\tqueue.add(subscription);\n\t\t\t\t\t\t\t\t\thasMoreWork = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\tif (this.onError) {\n\t\t\t\t\t\t\t\t\tthis.onError(err);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconsole.error(\"Scheduler error (sync):\", err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (queue.size > 0) hasMoreWork = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tthis.shouldYield = originalShouldYield;\n\t\t\tthis.isPending = false;\n\t\t\tthis.isSyncing = false;\n\t\t}\n\t}\n\n\tsetSync(sync: boolean) {\n\t\tthis.isSync = sync;\n\t}\n\n\t/**\n\t * Clears all pending updates.\n\t */\n\tclear() {\n\t\tfor (const queue of this.queues) {\n\t\t\tqueue.clear();\n\t\t}\n\t\tthis.isPending = false;\n\t}\n}\n\nexport const scheduler = new Scheduler();\n","import { deepEqual } from \"../helpers/tools\";\nimport Binding from \"../reactivity/binding\";\nimport Signal from \"../reactivity/signal\";\nimport { TextVdom } from \"./text-vdom\";\nimport { Vdom } from \"./vdom\";\nimport { FragmentVdom } from \"./fragment-vdom\";\nimport { ObservableCollection } from \"./vdom-types\";\nimport { scheduler } from \"../reactivity/scheduler\";\nimport { IDotCore } from \"dothtml-interfaces\";\n\ntype DatumMap = {\n\tvdom: Vdom; \n\tvalue: any;\n\tkeyValue: any;\n\tafterNode: Node;\n\tobservableIndex: Binding<number>\n};\n\n/**\n * This is a VDOM for storing a collection, such as an array or dictionary.\n */\nexport default class CollectionVdom extends Vdom{\n\n\tprivate static readonly MAX_BATCH_SIZE = 128;\n\n\tvalue: ObservableCollection;\n\trenderCallback: (x: any, i: number|string|Binding, k: string)=>any;\n\tstartNode: Node;\n\tendNode: Node;\n\tobserverId = 0;\n\n\tmappedItems: Array<DatumMap> = [];\n\n\t// State for incremental updates\n\tprivate updateState: {\n\t\tnewItems: Array<any>;\n\t\tnewKeys: Array<any>;\n\t\toldMap: Map<any, DatumMap>;\n\t\tnextMappedItems: Array<DatumMap>;\n\t\tcurrentIndex: number;\n\t\tlastNode: Node;\n\t\ttailAppendPrefix: number;\n\t\tstep: \"diff\" | \"reorder\" | \"cleanup\";\n\t} | null = null;\n\n\tconstructor(dot: IDotCore, value: ObservableCollection, renderCallback: (x: any, i: number|string, k: string)=>any){\n\t\tsuper(dot);\n\t\tthis.value = value;\n\t\tthis.renderCallback = renderCallback;\n\t}\n\n\t_render(target: HTMLElement) {\n\n\t\tif(this.value instanceof Binding){\n\t\t\tthis.observerId = this.value._subscribe(this);\n\t\t}\n\n\t\tthis.startNode = target.ownerDocument.createTextNode(\"\");\n\t\tthis.endNode = target.ownerDocument.createTextNode(\"\");\n\t\ttarget.appendChild(this.startNode);\n\t\ttarget.appendChild(this.endNode);\n\t\t\n\t\tconst originalShouldYield = scheduler.shouldYield;\n\t\tscheduler.shouldYield = () => false;\n\t\ttry {\n\t\t\tthis.updateList();\n\t\t} finally {\n\t\t\tscheduler.shouldYield = originalShouldYield;\n\t\t}\n\t}\n\n\t_unrender() {\n\t\tif(this.observerId && this.value instanceof Binding){\n\t\t\tthis.value._unsubscribe(this.observerId);\n\t\t\tthis.observerId = null;\n\t\t}\n\n\t\tfor(let i = 0; i < this.mappedItems.length; i++){\n\t\t\tlet I = this.mappedItems[i];\n\t\t\tI.vdom._unrender();\n\t\t\tI.afterNode.parentElement.removeChild(I.afterNode);\n\t\t}\n\t\tthis.mappedItems.length = 0;\n\n\t\tthis.startNode.parentElement.removeChild(this.startNode);\n\t\tthis.endNode.parentElement.removeChild(this.endNode);\n\t\tthis.startNode = null;\n\t\tthis.endNode = null;\n\t}\n\n\t_getNodes(): Node[] {\n\t\tif(!this.startNode) return [];\n\t\tlet nodes = [this.startNode];\n\t\tfor(let i = 0; i < this.mappedItems.length; i++){\n\t\t\tnodes.push(...this.mappedItems[i].vdom._getNodes());\n\t\t\tnodes.push(this.mappedItems[i].afterNode);\n\t\t}\n\t\tnodes.push(this.endNode);\n\t\treturn nodes;\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this;\n\t}\n\n\tprivate getTailAppendPrefixLength(newKeys: Array<any>): number {\n\t\tconst old = this.mappedItems;\n\t\tif (old.length === 0 || newKeys.length <= old.length) return 0;\n\t\tfor (let i = 0; i < old.length; i++) {\n\t\t\tif (newKeys[i] !== old[i].keyValue) return 0;\n\t\t}\n\t\treturn old.length;\n\t}\n\n\tprivate isItemPositionedAfter(item: DatumMap, anchor: Node): boolean {\n\t\tconst nodes = item.vdom._getNodes();\n\t\tif (!nodes.length || !anchor.parentElement) return false;\n\t\tif (nodes[0] !== anchor.nextSibling) return false;\n\t\tconst lastNode = nodes[nodes.length - 1];\n\t\treturn item.afterNode === lastNode.nextSibling;\n\t}\n\n\tprivate reuseExistingItem(existing: DatumMap, value: any, index: number) {\n\t\tif (existing.value !== value && !deepEqual(existing.value, value)) {\n\t\t\texisting.vdom._unrender();\n\t\t\texisting.value = value;\n\t\t\tlet vdomOrContent = this.renderCallback(value, this.value instanceof Binding ? existing.observableIndex : index, existing.keyValue);\n\t\t\tlet vdom: Vdom;\n\t\t\tif (vdomOrContent instanceof Vdom) {\n\t\t\t\tvdom = vdomOrContent;\n\t\t\t} else if (typeof vdomOrContent === \"object\" && vdomOrContent?.build) {\n\t\t\t\tvdom = new FragmentVdom(this._dot);\n\t\t\t\t(vdom as any).mount(vdomOrContent);\n\t\t\t} else {\n\t\t\t\tvdom = new TextVdom(vdomOrContent as any);\n\t\t\t}\n\t\t\tif ((vdom as any)._root) vdom = (vdom as any)._root;\n\t\t\texisting.vdom = vdom;\n\t\t} else {\n\t\t\texisting.observableIndex._set(index);\n\t\t}\n\t}\n\n\tprivate getInsertBeforeAnchor(fromIndex: number, items: DatumMap[]): Node {\n\t\tfor (let i = fromIndex; i < items.length; i++) {\n\t\t\tif (items[i].vdom._isRendered) {\n\t\t\t\tconst nodes = items[i].vdom._getNodes();\n\t\t\t\tif (nodes.length) return nodes[0];\n\t\t\t}\n\t\t}\n\t\treturn this.endNode;\n\t}\n\n\tprivate countConsecutiveUnrendered(fromIndex: number, items: DatumMap[]): number {\n\t\tlet count = 0;\n\t\twhile (\n\t\t\tfromIndex + count < items.length &&\n\t\t\t!items[fromIndex + count].vdom._isRendered &&\n\t\t\tcount < CollectionVdom.MAX_BATCH_SIZE\n\t\t) {\n\t\t\tcount++;\n\t\t}\n\t\treturn count;\n\t}\n\n\tprivate batchRenderNewItems(items: DatumMap[], parent: Node, insertBefore: Node): void {\n\t\tconst fragment = parent.ownerDocument.createDocumentFragment();\n\t\tfor (const item of items) {\n\t\t\titem.vdom._render(fragment as unknown as HTMLElement);\n\t\t\tfragment.appendChild(item.afterNode);\n\t\t}\n\t\tparent.insertBefore(fragment, insertBefore);\n\t}\n\n\t/**\n\t * Removes a single item from the DOM, including anchors.\n\t */\n\tprivate async removeItem(item: DatumMap){\n\t\tawait item.vdom._unrenderAsync();\n\t\tif (item.afterNode.parentElement) {\n\t\t\titem.afterNode.parentElement.removeChild(item.afterNode);\n\t\t}\n\t}\n\n\tupdateList(): boolean {\n\t\tlet unmappedCollection = null as Array<any>|Record<string|number, any>;\n\t\tif(this.value instanceof Binding){\n\t\t\tunmappedCollection = this.value._get() as any;\n\t\t}\n\t\telse{\n\t\t\tunmappedCollection = this.value;\n\t\t}\n\n\t\tconst currentItems: Array<any> = Array.isArray(unmappedCollection) \n\t\t\t? unmappedCollection \n\t\t\t: Object.values(unmappedCollection);\n\n\t\tif (this.updateState) {\n\t\t\t// If we are already updating, check if the data has changed since we started.\n\t\t\tif (!deepEqual(this.updateState.newItems, currentItems)) {\n\t\t\t\t// The data changed while we were yielded! \n\t\t\t\t// Discard the old state and start fresh.\n\t\t\t\tthis.updateState = null;\n\t\t\t}\n\t\t}\n\n\t\tif (!this.updateState) {\n\t\t\t// Initialize update state\n\t\t\tlet key: string = null;\n\t\t\tif(this.value instanceof Binding){\n\t\t\t\tkey = this.value._source.key ?? null;\n\t\t\t}\n\n\t\t\tconst newItems = currentItems;\n\t\t\t\n\t\t\tconst newKeys: Array<any> = Array.isArray(unmappedCollection)\n\t\t\t\t? newItems.map((v, i) => key ? v[key] : i)\n\t\t\t\t: Object.keys(unmappedCollection).map((k, i) => key ? unmappedCollection[k][key] : k);\n\n\t\t\tconst tailAppendPrefix = this.getTailAppendPrefixLength(newKeys);\n\n\t\t\tconst oldMap = new Map<any, DatumMap>();\n\t\t\tfor (let i = 0; i < this.mappedItems.length; i++) {\n\t\t\t\tconst item = this.mappedItems[i];\n\t\t\t\tif (i >= tailAppendPrefix) {\n\t\t\t\t\toldMap.set(item.keyValue, item);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.updateState = {\n\t\t\t\tnewItems,\n\t\t\t\tnewKeys,\n\t\t\t\toldMap,\n\t\t\t\tnextMappedItems: [],\n\t\t\t\tcurrentIndex: 0,\n\t\t\t\tlastNode: this.startNode,\n\t\t\t\ttailAppendPrefix,\n\t\t\t\tstep: \"diff\"\n\t\t\t};\n\t\t}\n\n\t\tconst state = this.updateState;\n\n\t\t// 1. Diffing Step\n\t\tif (state.step === \"diff\") {\n\t\t\twhile (state.currentIndex < state.newItems.length) {\n\t\t\t\tconst value = state.newItems[state.currentIndex];\n\t\t\t\tconst keyValue = state.newKeys[state.currentIndex];\n\n\t\t\t\tif (state.currentIndex < state.tailAppendPrefix) {\n\t\t\t\t\tconst existing = this.mappedItems[state.currentIndex];\n\t\t\t\t\tthis.reuseExistingItem(existing, value, state.currentIndex);\n\t\t\t\t\tstate.nextMappedItems.push(existing);\n\t\t\t\t} else {\n\t\t\t\t\tlet existing = state.oldMap.get(keyValue);\n\n\t\t\t\t\tif (existing) {\n\t\t\t\t\t\tstate.oldMap.delete(keyValue);\n\t\t\t\t\t\tthis.reuseExistingItem(existing, value, state.currentIndex);\n\t\t\t\t\t\tstate.nextMappedItems.push(existing);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst reactive = new Signal();\n\t\t\t\t\t\tconst observableIndex = reactive.bind();\n\t\t\t\t\t\tobservableIndex._set(state.currentIndex);\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst vdomOrContent = this.renderCallback(value, this.value instanceof Binding ? observableIndex : state.currentIndex, keyValue);\n\t\t\t\t\t\tlet vdom: Vdom;\n\t\t\t\t\t\tif (vdomOrContent instanceof Vdom) {\n\t\t\t\t\t\t\tvdom = vdomOrContent;\n\t\t\t\t\t\t} else if (typeof vdomOrContent === \"object\" && vdomOrContent?.build) {\n\t\t\t\t\t\t\tvdom = new FragmentVdom(this._dot);\n\t\t\t\t\t\t\t(vdom as any).mount(vdomOrContent);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvdom = new TextVdom(vdomOrContent as any);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ((vdom as any)._root) vdom = (vdom as any)._root;\n\t\t\t\t\t\tconst afterNode = this.startNode.ownerDocument.createTextNode(\"\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tstate.nextMappedItems.push({\n\t\t\t\t\t\t\tvdom, value, keyValue, afterNode, observableIndex\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tstate.currentIndex++;\n\n\t\t\t\tif (scheduler.shouldYield()) {\n\t\t\t\t\treturn true; // Yielding\n\t\t\t\t}\n\t\t\t}\n\t\t\tstate.step = \"cleanup\";\n\t\t}\n\n\t\t// 2. Cleanup Step (Remove items no longer present)\n\t\tif (state.step === \"cleanup\") {\n\t\t\tconst oldItems = Array.from(state.oldMap.values());\n\t\t\tfor (const item of oldItems) {\n\t\t\t\tthis.removeItem(item);\n\t\t\t}\n\t\t\tstate.step = \"reorder\";\n\t\t\tstate.currentIndex = 0;\n\t\t\tthis.mappedItems = [];\n\t\t}\n\n\t\t// 3. Reordering Step\n\t\tif (state.step === \"reorder\") {\n\t\t\twhile (state.currentIndex < state.nextMappedItems.length) {\n\t\t\t\tconst item = state.nextMappedItems[state.currentIndex];\n\n\t\t\t\tif (!item.vdom._isRendered) {\n\t\t\t\t\tconst runLength = this.countConsecutiveUnrendered(state.currentIndex, state.nextMappedItems);\n\n\t\t\t\t\tif (runLength >= 2) {\n\t\t\t\t\t\tconst batch = state.nextMappedItems.slice(state.currentIndex, state.currentIndex + runLength);\n\t\t\t\t\t\tconst parent = state.lastNode.parentElement;\n\t\t\t\t\t\tconst insertBefore = this.getInsertBeforeAnchor(state.currentIndex + runLength, state.nextMappedItems);\n\t\t\t\t\t\tthis.batchRenderNewItems(batch, parent, insertBefore);\n\n\t\t\t\t\t\tfor (const batchItem of batch) {\n\t\t\t\t\t\t\tstate.lastNode = batchItem.afterNode;\n\t\t\t\t\t\t\tthis.mappedItems.push(batchItem);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.currentIndex += runLength;\n\t\t\t\t\t} else {\n\t\t\t\t\t\titem.vdom._renderAfter(state.lastNode);\n\t\t\t\t\t\tstate.lastNode.parentElement.insertBefore(item.afterNode, item.vdom._getNodes().slice(-1)[0].nextSibling);\n\t\t\t\t\t\tstate.lastNode = item.afterNode;\n\t\t\t\t\t\tthis.mappedItems.push(item);\n\t\t\t\t\t\tstate.currentIndex++;\n\t\t\t\t\t}\n\t\t\t\t} else if (!this.isItemPositionedAfter(item, state.lastNode)) {\n\t\t\t\t\titem.vdom._moveBefore(state.lastNode.nextSibling, state.lastNode.parentElement);\n\t\t\t\t\tstate.lastNode.parentElement.insertBefore(item.afterNode, item.vdom._getNodes().slice(-1)[0].nextSibling);\n\t\t\t\t\tstate.lastNode = item.afterNode;\n\t\t\t\t\tthis.mappedItems.push(item);\n\t\t\t\t\tstate.currentIndex++;\n\t\t\t\t} else {\n\t\t\t\t\tstate.lastNode = item.afterNode;\n\t\t\t\t\tthis.mappedItems.push(item);\n\t\t\t\t\tstate.currentIndex++;\n\t\t\t\t}\n\n\t\t\t\tif (scheduler.shouldYield()) {\n\t\t\t\t\treturn true; // Yielding\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Finalize\n\t\tthis.updateState = null;\n\t\treturn false; // Finished\n\t}\n}\n","import { removeNodesBetween } from \"../helpers/tools\";\nimport Binding from \"../reactivity/binding\";\nimport { ContainerVdom } from \"./container-vdom\";\nimport { Vdom } from \"./vdom\";\nimport { ConditionalNodeItem } from \"./vdom-types\";\nimport { IDotCore } from \"dothtml-interfaces\";\n\nexport class ConditionalVdom extends Vdom{\n\n\tprivate conditions: Array<ConditionalNodeItem> = []\n\tprivate sealed = false;\n\tprivate renderedIndex = -1;\n\tprivate currentUpdatePromise: Promise<void> | null = null;\n\tprivate nextIndex: number | null = null;\n\n\tconstructor(dot: IDotCore){\n\t\tsuper(dot);\n\t}\n\n\taddCondition(condition:Binding|boolean, vNode: Vdom, seal = false){\n\n\t\tif(this.sealed){\n\t\t\tthrow new Error(\"Cannot add additional conditions to a sealed block.\");\n\t\t}\n\t\tthis.sealed = seal;\n\n\t\tlet C = {\n\t\t\tcondition,\n\t\t\tvNode,\n\t\t\tstartAnchor: null,\n\t\t\tendAnchor: null,\n\t\t\tobserverId: 0\n\t\t};\n\n\t\tthis.conditions.push(C);\n\n\t\t// If we're rendered\n\t\tif(this._isRendered){\n\t\t\t// This means it's rendered.\n\n\t\t\tthis.renderClause(C, this.conditions[0].startAnchor.parentElement);\n\n\t\t\t// If we're rendered but none of the previous conditions were true.\n\t\t\tif(this.renderedIndex == -1){\n\t\t\t\tthis.updateConditions();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate renderClause(C: ConditionalNodeItem, node: HTMLElement){\n\t\t// Add the anchors.\n\t\tif(C.startAnchor) throw new Error(\"Item is already rendered.\");\n\t\tC.startAnchor = node.ownerDocument.createTextNode(\"\");\n\t\tC.endAnchor = node.ownerDocument.createTextNode(\"\");\n\t\tnode.appendChild(C.startAnchor);\n\t\tnode.appendChild(C.endAnchor);\n\n\t\t// Subscribe if necessary.\n\t\tif(C.condition instanceof Binding){\n\t\t\tC.observerId = C.condition._subscribe(this);\n\t\t}\n\t}\n\n\t_render(node: HTMLElement) {\n\t\t// this._node = targetDocument.createTextNode(this._textContent);\n\t\t// return this._node;\n\t\tthis._isRendered = true;\n\n\t\t// First render all of the text nodes.\n\n\t\t// Need to readd all the conditions.\n\t\tfor(let c = 0; c < this.conditions.length; c++){\n\t\t\tthis.renderClause(this.conditions[c], node);\n\t\t}\n\n\t\t// Now render the first node with a positive conidion (if any)\n\t\tthis.updateConditions();\n\t}\n\n\tremoveCNode(C: ConditionalNodeItem){\n\n\t\tif(C.condition instanceof Binding){\n\t\t\tC.condition._unsubscribe(C.observerId);\n\t\t\tC.observerId = 0;\n\t\t}\n\n\t\tlet start = C.startAnchor;\n\t\tlet end = C.endAnchor;\n\t\tstart.parentElement.removeChild(start);\n\t\tend.parentElement.removeChild(end);\n\t\tC.startAnchor = null;\n\t\tC.endAnchor = null;\n\t\tC.vNode._unrender();\n\t}\n\n\t_unrender() {\n\t\tif(!this._isRendered) return;\n\t\tthis._isRendered = false;\n\t\tthis.renderedIndex = -1;\n\t\tthis.nextIndex = null;\n\t\tthis.currentUpdatePromise = null;\n\n\t\tfor(let i = 0; i < this.conditions.length; i++){\n\t\t\tlet C = this.conditions[i]\n\t\t\tthis.removeCNode(C);\n\t\t}\n\t}\n\n\t_getNodes(): Node[] {\n\t\tif(!this._isRendered) return [];\n\t\tlet nodes = [];\n\t\tfor(let i = 0; i < this.conditions.length; i++){\n\t\t\tlet C = this.conditions[i];\n\t\t\tnodes.push(C.startAnchor);\n\t\t\tif(i == this.renderedIndex){\n\t\t\t\tnodes.push(...C.vNode._getNodes());\n\t\t\t}\n\t\t\tnodes.push(C.endAnchor);\n\t\t}\n\t\treturn nodes;\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this;\n\t}\n\n\tupdateConditions(){\n\n\t\tlet newIndex = -1;\n\t\tfor(let c = 0; c < this.conditions.length; c++){\n\t\t\tlet C = this.conditions[c];\n\n\t\t\tif(C.condition instanceof Binding ? C.condition._get() : C.condition){\n\t\t\t\tnewIndex = c;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (this.currentUpdatePromise) {\n\t\t\tthis.nextIndex = newIndex;\n\t\t\treturn;\n\t\t}\n\n\t\tif(newIndex != this.renderedIndex){\n\t\t\tthis.performUpdate(newIndex);\n\t\t}\n\t}\n\n\tprivate async performUpdate(newIndex: number) {\n\t\tconst oldIndex = this.renderedIndex;\n\t\tthis.renderedIndex = newIndex;\n\n\t\tif(oldIndex != -1){\n\t\t\tconst C = this.conditions[oldIndex];\n\t\t\tthis.currentUpdatePromise = Promise.resolve(C.vNode._unrenderAsync());\n\t\t\tawait this.currentUpdatePromise;\n\t\t\tthis.currentUpdatePromise = null;\n\t\t}\n\n\t\t// Check if we were interrupted during unrender\n\t\tif (this.nextIndex !== null) {\n\t\t\tconst next = this.nextIndex;\n\t\t\tthis.nextIndex = null;\n\t\t\tif (next !== this.renderedIndex) {\n\t\t\t\tthis.performUpdate(next);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif(this.renderedIndex != -1){\n\t\t\tconst C = this.conditions[this.renderedIndex];\n\t\t\tC.vNode._renderBefore(C.endAnchor);\n\t\t}\n\n\t\t// Check if we were interrupted during render\n\t\tif (this.nextIndex !== null) {\n\t\t\tconst next = this.nextIndex;\n\t\t\tthis.nextIndex = null;\n\t\t\tif (next !== this.renderedIndex) {\n\t\t\t\tthis.performUpdate(next);\n\t\t\t}\n\t\t}\n\t}\n}","import { removeNodesBetween } from \"../helpers/tools\";\nimport Binding from \"../reactivity/binding\";\nimport Signal from \"../reactivity/signal\";\nimport { Vdom } from \"./vdom\";\n\nexport class HtmlVdom extends Vdom{\n\n\tbeforeNode: Node;\n\tafterNode: Node;\n\n\t_html: string|Binding;\n\tobserverId: number = 0;\n\n\tconstructor(html: string|Binding){\n\t\tsuper();\n\t\tthis._html = html;\n\t}\n\n\tupdateHtml(html){\n\t\tif(this.beforeNode){\n\t\t\tremoveNodesBetween(this.beforeNode, this.afterNode);\n\t\t\t\n\t\t\t// Need to render everything to a temporary div them move everything to the target.\n\t\t\tlet temp = this.beforeNode.ownerDocument.createElement(\"div\");\n\t\t\ttemp.innerHTML = html;\n\n\t\t\twhile (temp.firstChild) {\n\t\t\t\tthis.afterNode.parentElement.insertBefore(temp.firstChild, this.afterNode);\n\t\t\t}\n\t\t}\n\t}\n\n\t_render(target: HTMLElement) {\n\t\tlet html = \"\";\n\t\tif(this._html instanceof Binding){\n\t\t\thtml = this._html._get() ?? \"\";\n\t\t\tthis.observerId = this._html._subscribe(this);\n\t\t}\n\t\telse{\n\t\t\thtml = this._html;\n\t\t}\n\n\t\tthis.beforeNode = target.ownerDocument.createTextNode(\"\");\n\t\tthis.afterNode = target.ownerDocument.createTextNode(\"\");\n\t\ttarget.appendChild(this.beforeNode);\n\t\ttarget.appendChild(this.afterNode);\n\t\tthis.updateHtml(html ?? \"\");\n\t}\n\n\t_unrender() {\n\t\tif(this.beforeNode){\n\t\t\tlet parent = this.beforeNode.parentElement;\n\n\t\t\t// TODO: once we set up bindings, need the ability to clear them.\n\t\t\tremoveNodesBetween(this.beforeNode, this.afterNode);\n\n\t\t\tparent.removeChild(this.beforeNode);\n\t\t\tparent.removeChild(this.afterNode);\n\t\t\tthis.beforeNode = null;\n\t\t\tthis.afterNode = null;\n\t\t}\n\n\t\tif(this.observerId && this._html instanceof Binding){\n\t\t\tthis._html._unsubscribe(this.observerId);\n\t\t\tthis.observerId = 0;\n\t\t}\n\t}\n\n\t_getNodes(): Node[] {\n\t\tif(!this.beforeNode) return [];\n\t\tlet nodes = [this.beforeNode];\n\t\tlet curr = this.beforeNode.nextSibling;\n\t\twhile(curr && curr !== this.afterNode){\n\t\t\tnodes.push(curr);\n\t\t\tcurr = curr.nextSibling;\n\t\t}\n\t\tnodes.push(this.afterNode);\n\t\treturn nodes;\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this;\n\t}\n\n\ttoString(){\n\t\treturn this._html instanceof Binding ? this._html._get() : this._html;\n\t}\n}","import ElementVdom from \"../vdom-nodes/element-vdom\";\n\nexport default class ReactiveAttr{\n\t\n\telementVdom: ElementVdom;\n\tattribute: string;\n\n\tconstructor(elementVdom: ElementVdom, attribute: string){\n\t\tthis.elementVdom = elementVdom;\n\t\tthis.attribute = attribute;\n\t}\n}","import { IBinding } from \"dothtml-interfaces\";\nimport VMetaNode from \"../v-meta-nodes/v-meta-node\";\nimport CollectionVdom from \"../vdom-nodes/collection-vdom\";\nimport { ConditionalVdom } from \"../vdom-nodes/conditional-vdom\";\nimport { HtmlVdom } from \"../vdom-nodes/html-vdom\";\nimport { TextVdom } from \"../vdom-nodes/text-vdom\";\nimport Binding from \"./binding\";\nimport ReactiveAttr from \"./reactive-attr\";\n\n\n/**\n * Bindings link a reactive to a vdom node or other item using a bound reactive.\n */\nexport default class Subscription{\n\tboundReactive: IBinding;\n\titem: any;\n\tactive: boolean = true;\n\tisQueued: boolean = false;\n\n\tconstructor(boundReactive: IBinding, item: any){\n\t\tthis.boundReactive = boundReactive;\n\t\tthis.item = item;\n\t}\n\n\t// TODO: would be more efficient to compute the _get first then pass it into this function.\n\tupdate(): any {\n\t\tif(!this.active) return;\n\t\tlet value = this.boundReactive._get();\n\n\t\tif(this.item instanceof TextVdom){\n\t\t\tthis.item.textNode.textContent = value as string ?? \"\";\n\t\t}\n\t\telse if(this.item._isReactiveVdom){\n\t\t\tthis.item.update(value);\n\t\t}\n\t\telse if(this.item instanceof HtmlVdom){\n\t\t\tthis.item.updateHtml(value);\n\t\t}\n\t\telse if(this.item instanceof ReactiveAttr){\n\t\t\tthis.item.elementVdom.updateReactiveAttr(this.item.attribute, value as any);\n\t\t}\n\t\telse if(this.item instanceof VMetaNode){\n\t\t\tthis.item.update();\n\t\t}\n\t\telse if(this.item instanceof CollectionVdom){\n\t\t\t// TODO: shouldn't I pass the value in here???\n\t\t\treturn this.item.updateList();\n\t\t}\n\t\telse if(this.item instanceof ConditionalVdom){\n\t\t\t// TODO: shouldn't I pass the value in here???\n\t\t\tthis.item.updateConditions();\n\t\t}\n\t\telse if(this.item instanceof Function){\n\t\t\tthis.item(value);\n\t\t}\n\t}\n}","import { IBinding, IDotDocument, IReactive, IWatcher } from \"dothtml-interfaces\";\nimport { DOT_VDOM_PROP_NAME } from \"../constants\";\nimport ElementVdom from \"../vdom-nodes/element-vdom\";\nimport { TextVdom } from \"../vdom-nodes/text-vdom\";\nimport { HtmlVdom } from \"../vdom-nodes/html-vdom\";\nimport { ConditionalVdom } from \"../vdom-nodes/conditional-vdom\";\nimport CollectionVdom from \"../vdom-nodes/collection-vdom\";\nimport AttributeVNode from \"../v-meta-nodes/attribute-v-node\";\nimport VMetaNode from \"../v-meta-nodes/v-meta-node\";\nimport Binding from \"./binding\";\nimport Subscription from \"./subscription\";\nimport { Priority } from \"./priority\";\nimport { scheduler } from \"./scheduler\";\n\nexport const dependencyStack: Array<any> = [];\n\nconst TEXT_OFFSET = 0;\nconst HTML_OFFSET = 1;\nconst ATTR_OFFSET = 2;\n// Note: this specific interface is extremely simple, and it may be possible to generalize it and use it for other places\n// where we need reactive values. All you need is an update function pretty much.\nconst ATTR_COLLECTION_OFFSET = 3;\nconst STYLE_OFFSET = 4;\nconst COND_OFFSET = 5;\nconst ARRAY_OFFSET = 6;\nconst CB_OFFSET = 7; // Always last. User callbacks happen after the DOM is updated.\n\nconst CATEGORIES = CB_OFFSET + 1;\n\nexport default class Signal<T = any> implements IWatcher<T>{\n\n\tbindAs<Td>(transform: ((v:T)=>Td)|{\n\t\tdisplay?: (v: T)=>Td;\n\t\tread?: (v: string)=>T;\n\t}): IBinding<T, Td> {\n\t\tlet br = new Binding<T, Td>(this) as IBinding<T, Td>;\n\n\t\tif(transform[\"call\"] && transform[\"apply\"]){\n\t\t\tbr._transform = {\n\t\t\t\tdisplay: transform as (v: T)=>Td\n\t\t\t};\n\t\t}\n\t\telse{\n\t\t\tbr._transform = transform as any;\n\t\t}\n\n\t\treturn br;\n\t}\n\n\tbind(): Binding<T, T> {\n\t\treturn new Binding<T, T>(this);\n\t}\n\n\t_value: T;\n\tkey: string;\n\n\tsubscribers = new Map<number, Subscription>();\n\n\tget isWritable(): boolean {\n\t\treturn true;\n\t}\n\n\tconstructor() {\n\t}\n\n\tget value(): T {\n\t\tconst active = dependencyStack[dependencyStack.length - 1];\n\t\tif (active && active.addDependency) {\n\t\t\tactive.addDependency(this);\n\t\t}\n\t\treturn this._value;\n\t}\n\n\tset value(v: T) {\n\t\tthis.setValue(v);\n\t}\n\n\tgetValue(): T {\n\t\treturn this.value;\n\t}\n\n\tsetValue(v: T, priority: Priority = Priority.Normal) {\n\t\tif (this._value === v) return;\n\t\tthis._value = v;\n\t\tthis.updater(this._value, priority);\n\t}\n\n\tprivate updater(value: T, priority: Priority = Priority.Normal){\n\t\tfor(const sub of this.subscribers.values()){\n\t\t\tif ((sub as any).sync) {\n\t\t\t\tsub.update();\n\t\t\t} else {\n\t\t\t\tif (!sub.isQueued || priority === Priority.Immediate) {\n\t\t\t\t\tscheduler.enqueue(sub, priority);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tnextId = 1;\n\n\tsubscribe(callback: Function, sync: boolean = false) {\n\t\tlet br = new Binding(this);\n\t\treturn br._subscribe(callback, sync);\n\t}\n\n\t_subscribe(boundReactive: IBinding, item: any, sync: boolean = false){\n\t\tlet id = this.nextId++;\n\t\tconst sub = new Subscription(boundReactive, item);\n\t\t(sub as any).sync = sync;\n\t\tthis.subscribers.set(id, sub);\n\n\t\treturn id;\n\t}\n\n\tunsubscribe(id: number) {\n\t\tif(this.subscribers.has(id)){\n\t\t\tthis.subscribers.get(id)!.active = false;\n\t\t\tthis.subscribers.delete(id);\n\t\t}\n\t}\n\n\t_detachBinding(id: number) {\n\t\tthis.unsubscribe(id);\n\t}\n\n\t// Called manually by the user to trigger an update.\n\t// Useful for arrays and objects.\n\trefresh(priority: Priority = Priority.Normal): void {\n\t\tlet updatedValue = this.value;\n\t\t// this._cachedLastValue = updatedValue;\n\t\tthis.updater(updatedValue, priority);\n\t}\n\n\tupdateObservers(priority: Priority = Priority.Normal): void {\n\t\tthis.refresh(priority);\n\t}\n\t\n}\n","import Binding from \"../reactivity/binding\";\nimport Signal from \"../reactivity/signal\";\nimport VMetaNode from \"./v-meta-node\";\n\n/**\n * Attribute Virtual Nodes apply to a single attribute, such as class.\n * They're designed to allow users to set classes (and other attributes) using JSON objects.\n */\nexport default class AttributeVNode extends VMetaNode{\n\n\tattr: string;\n\tvalue: Record<string, string|Binding>;\n\ttarget: HTMLElement;\n\n\tobservables: Record<number, Binding> = {};\n\n\tconstructor(attrName, attrValue){\n\t\tsuper();\n\t\tthis.attr = attrName;\n\t\tthis.value = attrValue;\n\t}\n\n\trender(target: HTMLElement){\n\t\tthis.target = target;\n\n\t\t{ // Register observables.\n\t\t\tfor(let k in this.value){\n\t\t\t\tlet v = (this.value as any)[k];\n\n\t\t\t\tif(v instanceof Signal) v = v.bind(); // TODO: this probably isn't the right place for this.\n\n\t\t\t\tif(v && v instanceof Binding){\n\t\t\t\t\tlet id = v._subscribe(this);\n\t\t\t\t\tthis.observables[id] = v;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t{ // Update.\n\t\t\tthis.update();\n\t\t}\n\t}\n\n\tupdate(){\n\t\tif(!this.target) return;\n\n\t\tlet tokens = [];\n\t\tfor(let k in this.value){\n\t\t\tlet v = (this.value as any)[k];\n\t\t\tif(v){\n\t\t\t\tif(v instanceof Signal) v = v.bind();\n\t\t\t\tif(!(v instanceof Binding) || v._get()){\t\n\t\t\t\t\ttokens.push(k);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.target.setAttribute(this.attr, tokens.join(\" \"));\n\t}\n\n\tunrender(){\n\t\tthis.target = null;\n\n\t\tfor(let o in this.observables){\n\t\t\tlet v = this.observables[o];\n\t\t\tv._unsubscribe(Number(o));\n\t\t}\n\n\t\tthis.observables = {};\n\t}\n}","// TODO: I've created a list of shorthands, and we should handle those individually.\n// Ideally, everything below should be categorized by CSS data type.\nconst allProps = {\n\tcolor: \"color|background-Color|border-Bottom-Color|border-Color|border-Left-Color|border-Right-Color|border-Top-Color|text-Decoration-Color|outline-Color|column-Rule-Color\",\n\tlength: \"background-Size|block-Size|border-Bottom-Left-Radius|border-Bottom-Right-Radius|border-Bottom-Width|border-Left-Width|border-Radius|border-Right-Width|border-Top-Left-Radius|border-Top-Right-Radius|border-Top-Width|border-Width|bottom|gap|height|left|margin|margin-Bottom|margin-Left|margin-Right|margin-Top|max-Height|max-Width|min-Height|min-Width|padding|padding-Bottom|padding-Left|padding-Right|padding-Top|right|top|width|flex-Basis|font-Size|text-Indent|letter-Spacing|word-Spacing|border-Spacing|outline-Offset|outline-Width|column-Gap|column-Rule-Width|grid-Column-Gap|grid-Gap|grid-Row-Gap|column-Width|perspective|row-Gap\",\n\thybrid: \"line-Height|border-Image-Width|border-Image-Outset|tab-Size|flex\",\n\turl: \"background-Image|border-Image|list-Style-Image|content|image-Orientation\",\n\ttransformation: \"transform\",\n\tfilter: \"filter|backdrop-Filter\",\n\ttime: \"animation-Delay|animation-Direction|animation-Duration|transition-Duration|transition-Delay\",\n\tmisc: \"appearance|aspect-Ratio|opacity|background|background-Attachment|background-Blend-Mode|background-Position|background-Repeat|background-Clip|background-Origin|border|border-Bottom|border-Bottom-Style|border-Image-Repeat|border-Image-Slice|border-Image-Source|border-Left|border-Left-Style|border-Right|border-Right-Style|border-Style|border-Top|border-Top-Style|box-Decoration-Break|box-Shadow|clear|clip|display|float|overflow|box|overflow-X|overflow-Y|position|visibility|vertical-Align|z-Index|align-Content|align-Items|align-Self|flex-Direction|flex-Flow|flex-Grow|flex-Shrink|flex-Wrap|grid|grid-Area|grid-Auto-Columns|grid-auto-Rows|grid-Column|grid-Column-End|grid-Column-Start|grid-Row|grid-Row-End|grid-Row-Start|grid-Template|grid-Template-Areas|grid-Template-Columns|grid-Template-Rows|justify-Content|order|hanging-Punctuation|hyphens|line-Break|overflow-Wrap|text-Align|text-Align-Last|text-Combine-Upright|text-Justify|text-Transform|white-Space|word-Break|word-Wrap|text-Decoration|text-Decoration-Line|text-Decoration-Style|text-Shadow|text-Underline-Position|font|font-Family|font-Feature-Settings|font-Kerning|font-Language-Override|font-Size-Adjust|font-Stretch|font-Style|font-Synthesis|font-Variant|font-Variant-Alternates|font-Variant-Caps|font-Variant-East-Asian|font-Variant-Ligatures|font-Variant-Numeric|font-Variant-Position|font-Weight|direction|text-Orientation|text-Combine-Upright|unicode-Bidi|user-Select|writing-Mode|border-Collapse|caption-Side|empty-Cells|table-Layout|counter-Increment|counter-Reset|list-Style|list-Style-Position|list-Style-Type|animation|animation-Fill-Mode|animation-Iteration-Count|animation-Name|animation-Play-State|animation-Timing-Function|animation-Timeline|container-Type|container-Name|backface-Visibility|perspective2d|perspective-Origin|transform-Origin|transform-Style|transition|transition-Property|transition-Timing-Function|box-Sizing|cursor|ime-Mode|nav-Down|nav-Index|nav-Left|nav-Right|nav-Up|outline|outline-Style|resize|text-Overflow|break-After|break-Before|break-Inside|column-Count|column-Fill|column-Rule|column-Rule-Style|column-Span|columns|widows|orphans|page-Break-After|page-Break-Before|page-Break-Inside|marks|quotes|image-Rendering|image-Resolution|object-Fit|object-Position|mask|mask-Type|mark|mark-After|mark-Before|phonemes|rest|rest-After|rest-Before|voice-Balance|voice-Duration|voice-Pitch|voice-Pitch-Range|voice-Rate|voice-Stress|voice-Volume|marquee-Direction|marquee-Play-Count|marquee-Speed|marquee-Style|pointer-Events\"\n}\n\nconst lengthSuffixes = \"Cm|Mm|In|Px|Pt|Pc|Ch|Em|Ex|Lh|Rem|Vh|Vw|Vmin|Vmax|Cqw|Cqh|Cqi|Cqb|Cqmin|Cqmax|P\".split(\"|\"); \n// Following esoteric options removed: \"Q|Cap|Ic|Rlh|Vb|Vi\". Keep this comment here in case there's demand for one or more of them.\nconst timeSuffixes = \"Ms|S\".split(\"|\");\nconst angleSuffixes = \"Deg|Grad|Rad|Turn\".split(\"|\");\nconst frequencySuffixes = \"Hz|Khz\".split(\"|\");\n\n// TODO: add other types suffixes here. For instance: time, frequency, angle.\n\ntype CssRule = {\n\tdotName: string;\n\tcssName: string;\n\ttype: string;\n\tunit: string;\n};\n\nconst cssProps: Record<string, CssRule> = {};\n\nfor(let cssType in allProps){\n\tlet props = allProps[cssType].split(\"|\");\n\tfor(let p of props){\n\t\tlet key = p.split(\"-\").join(\"\");\n\t\tswitch(cssType){\n\t\t\tcase \"hybrid\":\n\t\t\tcase \"length\": {\n\t\t\t\tfor(let s of lengthSuffixes){\n\t\t\t\t\tcssProps[`${key}${s}`] = {\n\t\t\t\t\t\tdotName: key,\n\t\t\t\t\t\tcssName: p.toLowerCase(),\n\t\t\t\t\t\ttype: cssType,\n\t\t\t\t\t\tunit: s == \"P\" ? \"%\" : s.toLowerCase()\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"time\": {\n\t\t\t\tfor(let s of timeSuffixes){\n\t\t\t\t\tcssProps[`${key}${s}`] = {\n\t\t\t\t\t\tdotName: key,\n\t\t\t\t\t\tcssName: p.toLowerCase(),\n\t\t\t\t\t\ttype: cssType,\n\t\t\t\t\t\tunit: s.toLowerCase()\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"angle\": {\n\t\t\t\tfor(let s of angleSuffixes){\n\t\t\t\t\tcssProps[`${key}${s}`] = {\n\t\t\t\t\t\tdotName: key,\n\t\t\t\t\t\tcssName: p.toLowerCase(),\n\t\t\t\t\t\ttype: cssType,\n\t\t\t\t\t\tunit: s.toLowerCase()\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"frequency\": {\n\t\t\t\tfor(let s of frequencySuffixes){\n\t\t\t\t\tcssProps[`${key}${s}`] = {\n\t\t\t\t\t\tdotName: key,\n\t\t\t\t\t\tcssName: p.toLowerCase(),\n\t\t\t\t\t\ttype: cssType,\n\t\t\t\t\t\tunit: s.toLowerCase()\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tcssProps[key] = {\n\t\t\tdotName: key,\n\t\t\tcssName: p.toLowerCase(),\n\t\t\ttype: cssType,\n\t\t\tunit: undefined\n\t\t};\n\t}\n}\n\nexport default cssProps;","import Binding from \"../reactivity/binding\";\nimport Signal from \"../reactivity/signal\";\n\nexport default abstract class CssFunctionBuilderVStyle{\n\n\tfuncs: Array<{\n\t\tfunc: string,\n\t\targs: Array<{v: number|boolean|string|Binding, f: (v:number|boolean|string|Binding)=>string}>\n\t}> = [];\n\treadonly propName: string;\n\n\tconstructor(propName: string){\n\t\tthis.propName = propName;\n\t}\n\n\ttoString(): string {\n\t\tlet result = \"\";\n\n\t\t// Set the bindings.\n\t\tfor (let t of this.funcs) {\n\t\t\tlet argValues = Array.from(t.args).map(arg => {\n\t\t\t\tlet v = (arg as any).v !== undefined ? (arg as any).v : arg;\n\t\t\t\tlet f = (arg as any).f || ((val) => `${val}`);\n\n\t\t\t\tif (v instanceof Binding) {\n\t\t\t\t\treturn f(v._get());\n\t\t\t\t} else if (v instanceof Signal) {\n\t\t\t\t\treturn f(v.value);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn f(v).toString().split(\" \").join(\", \");\n\t\t\t\t}\n\t\t\t}).join(\", \");\n\n\n\t\t\tresult += `${t.func}(${argValues}) `;\n\t\t}\n\n\t\treturn result.trim();\n\t}\n\n\tappendFunction(filter: string, args){\n\t\tthis.funcs.push({func: filter, args: args});\n\t\treturn this;\n\t}\n\n}\n","import { floatRegex } from \"../helpers/tools\";\nimport Binding from \"../reactivity/binding\";\nimport Signal from \"../reactivity/signal\";\n\nexport function formatCssLength(value:string|number|Binding|Signal|Array<string|number|Binding|Signal>, defaultUnits = \"px\"){\n\tvalue = value || \"0px\";\n\tif(value instanceof Binding) value = value._get();\n\tif(value instanceof Signal) value = value.value;\n\tif(value instanceof Array){\n\t\treturn value.map(v=>formatCssLength(v, defaultUnits)).join(\" \");\n\t}\n\tif(!isNaN(value as number)) value = (value as number) + defaultUnits;\n\tlet tokens = (value as string).trim().split(\" \");\n\tif(tokens.length > 1){\n\t\treturn tokens.map(t=>formatCssLength(t, defaultUnits)).join(\" \");\n\t}\n\telse{\n\t\tlet length = Number((value as string).match(floatRegex)[0]);\n\t\tlet units = (value as string).split(floatRegex)[1] || defaultUnits;\n\n\t\treturn `${length}${units}`;\n\t}\n}\n\nexport function formatCssPercentage(value: string|number|Binding|Signal|Array<string|number|Binding|Signal>){\n\tvalue = value || \"0%\";\n\tif(value instanceof Binding) value = value._get();\n\tif(value instanceof Signal) value = value.value;\n\tif(value instanceof Array){\n\t\treturn value.map(v=>formatCssPercentage(v)).join(\" \");\n\t}\n\tlet tokens = (value as string).trim().split(\" \");\n\tif(tokens.length > 1){\n\t\treturn tokens.map(t=>formatCssPercentage(t)).join(\" \");\n\t}\n\telse{\n\t\treturn isNaN(value as any) ? value : `${value}%`;\n\t}\n}\n\nexport function formatCssColor(value: string|number){\n\n\t// Probably will not take arrays anymore. They don't actually solve any problems.\n\t// if(Array.isArray(value) && value.length == 1) value = value[0];\n\n\t// TODO: should add provisions for more complex types. Either a builder or JSON.\n\t// TODO: doesn't currently handle reactive or arrays. Arrays might not be used in CSS (doesn't make sense - you only set one color).\n\n\tif(typeof value == \"number\") {\n\n\t\tlet r = 0;\n\t\tlet g = 0;\n\t\tlet b = 0;\n\t\tlet a = 1;\n\n\t\tb = value & 0xFF;\n\t\tvalue >>= 8;\n\t\tg = value & 0xFF;\n\t\tvalue >>= 8;\n\t\tr = value & 0xFF;\n\n\t\treturn `rgb(${r} ${g} ${b})`;\n\t}\n\telse if(typeof value == \"string\") {\n\t\treturn value;\n\t}\n}\n\nexport function formatCssAngle(value: string|number|Binding|Signal|Array<string|number|Binding|Signal>){\n\tvalue = value || \"0deg\";\n\tif(value instanceof Binding) value = value._get();\n\tif(value instanceof Signal) value = value.value;\n\tif(value instanceof Array){\n\t\treturn value.map(v=>formatCssAngle(v)).join(\" \");\n\t}\n\tif(!isNaN(value as number)) value = `${value as number}deg`;\n\tlet tokens = (value as string).trim().split(\" \");\n\tif(tokens.length > 1){\n\t\treturn tokens.map(t=>formatCssAngle(t)).join(\" \");\n\t}\n\telse{\n\t\tlet angle = Number((value as string).match(floatRegex)[0]);\n\t\tlet units = (value as string).split(floatRegex)[1] || \"deg\";\n\n\t\treturn `${angle}${units}`;\n\t}\n}","import { formatCssColor, formatCssLength, formatCssPercentage } from \"../css/format-css-type\";\nimport CssFunctionBuilderVStyle from \"./css-function-builder-v-style\";\n\nexport default class FilterVStyle extends CssFunctionBuilderVStyle{\n\n\tblur(v){\n\t\treturn this.appendFunction(\"blur\", [{v, f: formatCssLength}]);\n\t}\n\tbrightness(v){\n\t\treturn this.appendFunction(\"brightness\", [{v, f: formatCssPercentage}]);\n\t}\n\tcontrast(v){\n\t\treturn this.appendFunction(\"contrast\", [{v, f: formatCssLength}]);\n\t}\n\tdropShadow(x, y, blur, color){\n\t\treturn this.appendFunction(\"drop-shadow\", [{v: x, f: formatCssLength}, {v: y, f: formatCssLength}, {v: blur, f: formatCssLength}, {v: color, f: formatCssColor}]);\n\t}\n\tgrayscale(v){\n\t\treturn this.appendFunction(\"grayscale\", [{v, f: formatCssLength}]);\n\t}\n\thueRotate(v){\n\t\treturn this.appendFunction(\"hue-rotate\", [{v, f: formatCssLength}]);\n\t}\n\tinvert(v){\n\t\treturn this.appendFunction(\"invert\", [{v, f: formatCssLength}]);\n\t}\n\topacity(v){\n\t\treturn this.appendFunction(\"opacity\", [{v, f: formatCssLength}]);\n\t}\n\tsepia(v){\n\t\treturn this.appendFunction(\"sepia\", [{v, f: formatCssLength}]);\n\t}\n\tsaturate(v){\n\t\treturn this.appendFunction(\"saturate\", [{v, f: formatCssLength}]);\n\t}\n}\n","import CssFunctionBuilderVStyle from \"./css-function-builder-v-style\";\nimport { formatCssAngle, formatCssLength } from \"../css/format-css-type\";\n\n\nexport default class TransformVStyle extends CssFunctionBuilderVStyle{\n\n\tmatrix3d(a1:number, b1:number, c1:number, d1:number, a2:number, b2:number, c2:number, d2:number, a3:number, b3:number, c3:number, d3:number, a4:number, b4:number, c4:number, d4:number){\n\t\treturn this.appendFunction(\"matrix3d\", arguments);\n\t}\n\t\n\tmatrix(a: number, b: number, c: number, d: number, tx: number, ty: number){\n\t\treturn this.appendFunction(\"matrix\", arguments);\n\t}\n\t\n\ttranslate(x,y?){\n\t\treturn arguments.length == 1 \n\t\t\t? this.appendFunction(\"translate\", [{f:formatCssLength, v:x}]) \n\t\t\t: this.appendFunction(\"translate\", [{f:formatCssLength, v:x}, {f:formatCssLength, v:y}]);\n\t}\n\t\n\ttranslate3d(x,y,z){\n\t\treturn this.appendFunction(\"translate3d\", [{f:formatCssLength, v:x}, {f:formatCssLength, v:y}, {f:formatCssLength, v:z}]);\n\t}\n\t\n\ttranslateX(x){\n\t\treturn this.appendFunction(\"translateX\", [{f:formatCssLength, v:x}]);\n\t}\n\t\n\ttranslateY(y){\n\t\treturn this.appendFunction(\"translateY\", [{f:formatCssLength, v:y}]);\n\t}\n\t\n\ttranslateZ(z){\n\t\treturn this.appendFunction(\"translateZ\", [{f:formatCssLength, v:z}]);\n\t}\n\t\n\tscale(x:number,y?:number){\n\t\treturn this.appendFunction(\"scale\", [x,y??1]);\n\t}\n\t\n\tscale3d(x:number,y:number,z:number){\n\t\treturn this.appendFunction(\"scale3d\", [x,y,z]);\n\t}\n\t\n\tscaleX(x:number){\n\t\treturn this.appendFunction(\"scaleX\", [x]);\n\t}\n\t\n\tscaleY(y:number){\n\t\treturn this.appendFunction(\"scaleY\", [y]);\n\t}\n\t\n\tscaleZ(z:number){\n\t\treturn this.appendFunction(\"scaleZ\", [z]);\n\t}\n\t\n\trotate(x){\n\t\treturn this.appendFunction(\"rotate\", [{f:formatCssAngle, v:x}]);\n\t}\n\t\n\trotate3d(x: number, y: number, z: number, a){\n\t\treturn this.appendFunction(\"rotate3d\", [x, y, z, {f:formatCssAngle, v:a}]);\n\t}\n\n\t// Manually create the 4 unit functions for rotate 3d since the arg structure is mixed.\n\trotate3dDeg(x: number, y: number, z: number, a: number){return this.rotate3d(x,y,z,a);}\n\trotate3dRad(x: number, y: number, z: number, a: number){return this.rotate3d(x,y,z,`${a}rad`);}\n\trotate3dGrad(x: number, y: number, z: number, a: number){return this.rotate3d(x,y,z,`${a}grad`);}\n\trotate3dTurn(x: number, y: number, z: number, a: number){return this.rotate3d(x,y,z,`${a}turn`);}\n\t\n\trotateX(x){\n\t\treturn this.appendFunction(\"rotateX\", [{f:formatCssAngle, v:x}]);\n\t}\n\t\n\trotateY(y){\n\t\treturn this.appendFunction(\"rotateY\", [{f:formatCssAngle, v:y}]);\n\t}\n\t\n\trotateZ(z){\n\t\treturn this.appendFunction(\"rotateZ\", [{f:formatCssAngle, v:z}]);\n\t}\n\t\n\tskew(x, y?){\n\t\treturn arguments.length == 1 \n\t\t\t? this.appendFunction(\"skew\", [{f:formatCssAngle, v:x}])\n\t\t\t: this.appendFunction(\"skew\", [{f:formatCssAngle, v:x}, {f:formatCssAngle, v:y}]);\n\t}\n\t\n\tskewX(x){\n\t\treturn this.appendFunction(\"skewX\", [{f:formatCssAngle, v:x}]);\n\t}\n\t\n\tskewY(y){\n\t\treturn this.appendFunction(\"skewY\", [{f:formatCssAngle, v:y}]);\n\t}\n\t\n\tperspective(d){\n\t\treturn this.appendFunction(\"perspective\", [{f:formatCssLength, v:d}]);\n\t}\n}\n","import Binding from \"../reactivity/binding\";\nimport Signal from \"../reactivity/signal\";\nimport cssProps from \"../css/css-props\";\n\nexport default class BaseVStyle {\n\t[key: string]: any;\n\n\t// Used internally to indicate that this is the base style builder.\n\t// Calling style functions on this object will create (and return) a new BaseVStyle, rather than extend this one.\n\tprivate readonly _isBase = false;\n\tprivate props: Array<{ prop: string, value: any }> = [];\n\tprivate onUpdate: () => void;\n\n\tsetProp(propName: string, value: any) {\n\t\tif (this._isBase) {\n\t\t\tlet newStyle = new BaseVStyle();\n\t\t\treturn newStyle.setProp(propName, value);\n\t\t}\n\t\telse {\n\t\t\tthis.props.push({ prop: propName, value: value });\n\t\t\tif (this.onUpdate) this.onUpdate();\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t_setOnUpdate(callback: () => void) {\n\t\tthis.onUpdate = callback;\n\t}\n\n\t/**\n\t * Sets a CSS variable (custom property).\n\t * @param name The name of the variable (e.g., \"my-color\" or \"--my-color\").\n\t * @param value The value of the variable.\n\t */\n\tvariable(name: string, value: any) {\n\t\tif (!name.startsWith(\"--\")) name = \"--\" + name;\n\t\treturn this.setProp(name, value);\n\t}\n\n\t/**\n\t * Returns a CSS variable reference string.\n\t * @param name The name of the variable (e.g., \"my-color\" or \"--my-color\").\n\t * @returns A string in the format \"var(--name)\".\n\t */\n\tv(name: string): string {\n\t\tif (!name.startsWith(\"--\")) name = \"--\" + name;\n\t\treturn `var(${name})`;\n\t}\n\n\tgetProps() {\n\t\treturn this.props;\n\t}\n}\n\n// Generate fluent methods from cssProps.\nfor (let key in cssProps) {\n\tBaseVStyle.prototype[key] = function (value: any) {\n\t\t// If it's a length property with a unit, we might want to handle it specially later.\n\t\t// For now, just pass it through.\n\t\treturn this.setProp(key, value);\n\t};\n}\n","import { IDotCss } from \"dothtml-interfaces\";\nimport cssProps from \"../css/css-props\";\nimport VMetaNode from \"./v-meta-node\";\nimport CssFunctionBuilderVStyle from \"../v-style-nodes/css-function-builder-v-style\";\nimport FilterVStyle from \"../v-style-nodes/filter-v-style\";\nimport TransformVStyle from \"../v-style-nodes/transform-v-style\";\nimport { formatCssLength } from \"../css/format-css-type\";\nimport Binding from \"../reactivity/binding\";\nimport BaseVStyle from \"../v-style-nodes/base-v-style\";\nimport { scheduler } from \"../reactivity/scheduler\";\nimport { Priority } from \"../reactivity/priority\";\n\nimport Signal from \"../reactivity/signal\";\n\nexport default class StyleVNode extends VMetaNode {\n\ttarget: HTMLElement | string;\n\tdocument: Document;\n\tshadowRoot: ShadowRoot;\n\tstyleSource: IDotCss | BaseVStyle;\n\tprivate styleElement: HTMLStyleElement;\n\n\tprivate observables: Array<Binding> = [];\n\tprivate observableIds: Array<number> = [];\n\tprivate isQueued = false;\n\tprivate updateSubscription = {\n\t\tactive: true,\n\t\tupdate: () => {\n\t\t\tthis.isQueued = false;\n\t\t\tthis.applyStyles();\n\t\t}\n\t};\n\n\tconstructor(styleSource: IDotCss | BaseVStyle) {\n\t\tsuper();\n\t\tthis.styleSource = styleSource;\n\n\t\tif (this.styleSource instanceof BaseVStyle) {\n\t\t\tthis.styleSource._setOnUpdate(() => this.update());\n\t\t}\n\n\t\tthis.extractObservables();\n\t}\n\n\tprivate extractObservables() {\n\t\tconst source = this.styleSource instanceof BaseVStyle ? this.styleSource.getProps() : this.styleSource;\n\n\t\tif (Array.isArray(source)) {\n\t\t\t// It's from BaseVStyle.getProps()\n\t\t\tfor (let i = 0; i < source.length; i++) {\n\t\t\t\tlet p = source[i];\n\t\t\t\tthis.processValue(p.prop, p.value, (newVal) => p.value = newVal);\n\t\t\t}\n\t\t} else {\n\t\t\t// It's a plain IDotCss object.\n\t\t\tfor (let prop in source) {\n\t\t\t\tthis.processValue(prop, source[prop], (newVal) => source[prop] = newVal);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate processValue(prop: string, value: any, setter: (v: any) => void) {\n\t\tif (!this.tryExtractObservable(value)) {\n\t\t\tif (typeof value === \"object\" && value !== null && !(value instanceof CssFunctionBuilderVStyle)) {\n\t\t\t\t// Handle nested builders like filter: { blur: 5 }\n\t\t\t\tlet builder: CssFunctionBuilderVStyle;\n\t\t\t\tswitch (prop) {\n\t\t\t\t\tcase \"filter\": {\n\t\t\t\t\t\tbuilder = new FilterVStyle(prop);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"transform\": {\n\t\t\t\t\t\tbuilder = new TransformVStyle(prop);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (builder) {\n\t\t\t\t\tlet funcArray = Array.isArray(value) ? value : [value];\n\t\t\t\t\tfor (let funcValue of funcArray) {\n\t\t\t\t\t\tfor (let k in funcValue) {\n\t\t\t\t\t\t\tlet v = funcValue[k];\n\t\t\t\t\t\t\tthis.tryExtractObservable(v);\n\t\t\t\t\t\t\tif (Array.isArray(v)) {\n\t\t\t\t\t\t\t\tfor (let w of v) {\n\t\t\t\t\t\t\t\t\tthis.tryExtractObservable(w);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlet methodKey = k.replace(/_\\d+$/, \"\");\n\t\t\t\t\t\t\tif (typeof builder[methodKey] === \"function\") {\n\t\t\t\t\t\t\t\tif (Array.isArray(v)) {\n\t\t\t\t\t\t\t\t\tbuilder[methodKey](...v);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tbuilder[methodKey](v);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsetter(builder);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate tryExtractObservable(value: any): boolean {\n\t\tif (value instanceof Binding || value instanceof Signal) {\n\t\t\tif (this.observables.indexOf(value as any) === -1) {\n\t\t\t\tthis.observables.push(value as any);\n\t\t\t\tif (this.target) {\n\t\t\t\t\t// If already rendered, subscribe immediately.\n\t\t\t\t\tlet id = (value as any).subscribe(() => this.update());\n\t\t\t\t\tthis.observableIds.push(id);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\trender(target: HTMLElement | string, document: Document = window.document, shadowRoot?: ShadowRoot) {\n\t\tthis.target = target;\n\t\tthis.document = document;\n\t\tthis.shadowRoot = shadowRoot;\n\n\t\tfor (let observable of this.observables) {\n\t\t\tlet id = (observable as any).subscribe(() => this.update());\n\t\t\tthis.observableIds.push(id);\n\t\t}\n\n\t\tif (typeof target === \"string\") {\n\t\t\tthis.styleElement = this.document.createElement(\"style\");\n\t\t\tif (this.shadowRoot) {\n\t\t\t\tthis.shadowRoot.appendChild(this.styleElement);\n\t\t\t} else {\n\t\t\t\tthis.document.head.appendChild(this.styleElement);\n\t\t\t}\n\t\t}\n\n\t\tthis.applyStyles();\n\t}\n\n\tupdate() {\n\t\tif (!this.isQueued) {\n\t\t\tthis.isQueued = true;\n\t\t\tscheduler.enqueue(this.updateSubscription as any, Priority.Normal);\n\t\t}\n\t}\n\n\tprivate applyStyles() {\n\t\tif (!this.target) return;\n\n\t\tif (typeof this.target === \"string\") {\n\t\t\tif (this.styleElement) {\n\t\t\t\tthis.styleElement.textContent = `${this.target} { ${this.getStyleString()} }`;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.extractObservables();\n\n\t\t\tconst source = this.styleSource instanceof BaseVStyle ? this.styleSource.getProps() : this.styleSource;\n\n\t\t\tif (Array.isArray(source)) {\n\t\t\t\tfor (const p of source) {\n\t\t\t\t\tconst value = p.value instanceof Binding ? p.value._get() : (p.value instanceof Signal ? p.value.value : p.value);\n\t\t\t\t\tthis.applySingleStyle(p.prop, value);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (let prop in source) {\n\t\t\t\t\tconst value = source[prop] instanceof Binding ? source[prop]._get() : (source[prop] instanceof Signal ? source[prop].value : source[prop]);\n\t\t\t\t\tthis.applySingleStyle(prop, value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate applySingleStyle(prop: string, value: any) {\n\t\tlet cssValue;\n\t\tif (value instanceof CssFunctionBuilderVStyle) {\n\t\t\tcssValue = value.toString();\n\t\t} else if (typeof value === \"object\" && value !== null && (prop === \"transform\" || prop === \"filter\")) {\n\t\t\tconst builder = prop === \"transform\" ? new TransformVStyle(prop) : new FilterVStyle(prop);\n\t\t\tthis.applyObjectToBuilder(builder, value);\n\t\t\tcssValue = builder.toString();\n\t\t} else {\n\t\t\tcssValue = value;\n\t\t}\n\n\t\tlet cssProp = prop;\n\t\tlet cssUnit = undefined;\n\n\t\tconst registeredProp = cssProps[prop];\n\t\tif (registeredProp) {\n\t\t\tcssProp = registeredProp.cssName;\n\t\t\tcssUnit = registeredProp.unit;\n\t\t\tif ((registeredProp.type === \"length\" || registeredProp.type === \"hybrid\") && typeof cssValue === \"number\") {\n\t\t\t\tif (registeredProp.type === \"hybrid\" && cssUnit === undefined) {\n\t\t\t\t\t// Leave as unitless number\n\t\t\t\t} else {\n\t\t\t\t\tcssValue = formatCssLength(cssValue, cssUnit);\n\t\t\t\t}\n\t\t\t} else if (registeredProp.unit && typeof cssValue === \"number\") {\n\t\t\t\tcssValue = `${cssValue}${registeredProp.unit}`;\n\t\t\t}\n\t\t}\n\n\t\tif (this.target instanceof HTMLElement) {\n\t\t\tthis.target.style.setProperty(cssProp, `${cssValue}`);\n\t\t}\n\t}\n\n\tprivate getStyleString(): string {\n\t\tlet styles = \"\";\n\t\tconst source = this.styleSource instanceof BaseVStyle ? this.styleSource.getProps() : this.styleSource;\n\n\t\tif (Array.isArray(source)) {\n\t\t\tfor (const p of source) {\n\t\t\t\tstyles += this.formatSingleStyle(p.prop, p.value);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (let prop in source) {\n\t\t\t\tstyles += this.formatSingleStyle(prop, source[prop]);\n\t\t\t}\n\t\t}\n\t\treturn styles;\n\t}\n\n\tprivate applyObjectToBuilder(builder: CssFunctionBuilderVStyle, value: any) {\n\t\tlet funcArray = Array.isArray(value) ? value : [value];\n\t\tfor (let funcValue of funcArray) {\n\t\t\tfor (let k in funcValue) {\n\t\t\t\tlet v = funcValue[k];\n\t\t\t\tlet methodKey = k.replace(/_\\d+$/, \"\");\n\t\t\t\tif (typeof builder[methodKey] === \"function\") {\n\t\t\t\t\tif (Array.isArray(v)) {\n\t\t\t\t\t\tbuilder[methodKey](...v);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuilder[methodKey](v);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate formatSingleStyle(prop: string, value: any): string {\n\t\tlet cssValue = value instanceof Binding ? value._get() : (value instanceof Signal ? value.value : value);\n\t\tif (cssValue instanceof CssFunctionBuilderVStyle) {\n\t\t\tcssValue = cssValue.toString();\n\t\t} else if (typeof cssValue === \"object\" && cssValue !== null && (prop === \"transform\" || prop === \"filter\")) {\n\t\t\tconst builder = prop === \"transform\" ? new TransformVStyle(prop) : new FilterVStyle(prop);\n\t\t\tthis.applyObjectToBuilder(builder, cssValue);\n\t\t\tcssValue = builder.toString();\n\t\t}\n\n\t\tlet cssProp = prop;\n\t\tlet cssUnit = undefined;\n\n\t\tconst registeredProp = cssProps[prop];\n\t\tif (registeredProp) {\n\t\t\tcssProp = registeredProp.cssName;\n\t\t\tcssUnit = registeredProp.unit;\n\t\t\tif ((registeredProp.type === \"length\" || registeredProp.type === \"hybrid\") && typeof cssValue === \"number\") {\n\t\t\t\tif (registeredProp.type === \"hybrid\" && cssUnit === undefined) {\n\t\t\t\t\t// Leave as unitless number\n\t\t\t\t} else {\n\t\t\t\t\tcssValue = formatCssLength(cssValue, cssUnit);\n\t\t\t\t}\n\t\t\t} else if (registeredProp.unit && typeof cssValue === \"number\") {\n\t\t\t\tcssValue = `${cssValue}${registeredProp.unit}`;\n\t\t\t}\n\t\t}\n\t\treturn `${cssProp}: ${cssValue}; `;\n\t}\n\n\tunrender() {\n\t\tfor (let i = 0; i < this.observableIds.length; i++) {\n\t\t\tlet id = this.observableIds[i];\n\t\t\tlet observable = this.observables[i];\n\t\t\tif (observable instanceof Binding) {\n\t\t\t\t(observable as any)._unsubscribe(id);\n\t\t\t} else {\n\t\t\t\t(observable as any).unsubscribe(id);\n\t\t\t}\n\t\t}\n\t\tthis.observableIds = [];\n\t\tthis.observables = [];\n\t\t\n\t\tif (this.styleElement) {\n\t\t\tthis.styleElement.remove();\n\t\t\tthis.styleElement = null;\n\t\t}\n\n\t\tthis.target = null;\n\t\tthis.updateSubscription.active = false;\n\t}\n\n\ttoString() {\n\t\tif (typeof this.target === \"string\") {\n\t\t\treturn `${this.target} { ${this.getStyleString()} }`;\n\t\t} else {\n\t\t\treturn this.getStyleString();\n\t\t}\n\t}\n}\n","\nexport default class SyntheticEvent {\n\tpublic nativeEvent: Event;\n\tpublic target: EventTarget;\n\tpublic currentTarget: EventTarget;\n\tpublic type: string;\n\tpublic timeStamp: number;\n\tpublic defaultPrevented: boolean;\n\tpublic detail: any;\n\tprivate _propagationStopped = false;\n\tprivate _immediatePropagationStopped = false;\n\n\tconstructor(e: Event) {\n\t\tthis.nativeEvent = e;\n\t\tthis.target = e.target;\n\t\tthis.currentTarget = e.currentTarget;\n\t\tthis.type = e.type;\n\t\tthis.timeStamp = e.timeStamp;\n\t\tthis.defaultPrevented = e.defaultPrevented;\n\t\tthis.detail = (e as any).detail;\n\t}\n\n\tpreventDefault() {\n\t\tthis.defaultPrevented = true;\n\t\tthis.nativeEvent.preventDefault();\n\t}\n\n\tstopPropagation() {\n\t\tthis._propagationStopped = true;\n\t\tthis.nativeEvent.stopPropagation();\n\t}\n\n\tstopImmediatePropagation() {\n\t\tthis._immediatePropagationStopped = true;\n\t\tthis._propagationStopped = true;\n\t\tthis.nativeEvent.stopImmediatePropagation();\n\t}\n\n\tisPropagationStopped() {\n\t\treturn this._propagationStopped;\n\t}\n\n\tisImmediatePropagationStopped() {\n\t\treturn this._immediatePropagationStopped;\n\t}\n}\n","\nimport SyntheticEvent from \"./synthetic-event\";\n\nexport type EventHandler = (e: SyntheticEvent) => void;\n\ninterface RegisteredListener {\n\thandler: EventHandler;\n\tmodifiers: string[];\n}\n\nexport class EventManager {\n\tprivate static managers = new Map<Document, EventManager>();\n\n\tpublic static getForDocument(document: Document): EventManager {\n\t\tlet manager = this.managers.get(document);\n\t\tif (!manager) {\n\t\t\tmanager = new EventManager(document);\n\t\t\tthis.managers.set(document, manager);\n\t\t}\n\t\treturn manager;\n\t}\n\n\tprivate document: Document;\n\tprivate listeners = new WeakMap<Element, Map<string, RegisteredListener[]>>();\n\tprivate activeEventTypes = new Set<string>();\n\n\tconstructor(document: Document) {\n\t\tthis.document = document;\n\t}\n\n\tpublic addListener(element: Element, eventType: string, handler: EventHandler, modifiers: string[] = []) {\n\t\tlet elementListeners = this.listeners.get(element);\n\t\tif (!elementListeners) {\n\t\t\telementListeners = new Map();\n\t\t\tthis.listeners.set(element, elementListeners);\n\t\t}\n\n\t\tlet handlers = elementListeners.get(eventType);\n\t\tif (!handlers) {\n\t\t\thandlers = [];\n\t\t\telementListeners.set(eventType, handlers);\n\t\t}\n\n\t\thandlers.push({ handler, modifiers });\n\n\t\tthis.ensureGlobalListener(eventType);\n\t}\n\n\tpublic removeListener(element: Element, eventType: string, handler: EventHandler) {\n\t\tconst elementListeners = this.listeners.get(element);\n\t\tif (!elementListeners) return;\n\n\t\tconst handlers = elementListeners.get(eventType);\n\t\tif (!handlers) return;\n\n\t\tconst index = handlers.findIndex(h => h.handler === handler);\n\t\tif (index !== -1) {\n\t\t\thandlers.splice(index, 1);\n\t\t}\n\n\t\tif (handlers.length === 0) {\n\t\t\telementListeners.delete(eventType);\n\t\t}\n\t}\n\n\tprivate ensureGlobalListener(eventType: string) {\n\t\tif (this.activeEventTypes.has(eventType)) return;\n\n\t\tconst useCapture = eventType === \"focus\" || eventType === \"blur\";\n\t\tthis.document.addEventListener(eventType, (nativeEvent: Event) => {\n\t\t\tthis.dispatchEvent(eventType, nativeEvent);\n\t\t}, useCapture);\n\n\t\tthis.activeEventTypes.add(eventType);\n\t}\n\n\tprivate dispatchEvent(eventType: string, nativeEvent: Event) {\n\t\tlet path = nativeEvent.composedPath() as Element[];\n\t\tif (!path || path.length === 0) {\n\t\t\t// Fallback for environments where composedPath is not available or empty\n\t\t\tpath = [];\n\t\t\tlet current = nativeEvent.target as any;\n\t\t\twhile (current) {\n\t\t\t\tpath.push(current);\n\t\t\t\tcurrent = current.parentNode || current.host;\n\t\t\t}\n\t\t}\n\t\tconst syntheticEvent = new SyntheticEvent(nativeEvent);\n\n\t\tfor (const element of path) {\n\t\t\tif (element === this.document as any || element === window as any) continue;\n\t\t\t\n\t\t\tconst elementListeners = this.listeners.get(element);\n\t\t\tif (!elementListeners) continue;\n\n\t\t\tconst handlers = elementListeners.get(eventType);\n\t\t\tif (!handlers) continue;\n\n\t\t\t// Set currentTarget to the element that has the listener\n\t\t\t(syntheticEvent as any).currentTarget = element;\n\n\t\t\tfor (const { handler, modifiers } of [...handlers]) {\n\t\t\t\tif (modifiers.includes(\"self\") && nativeEvent.target !== element) continue;\n\n\t\t\t\tif (modifiers.includes(\"stop\")) syntheticEvent.stopPropagation();\n\t\t\t\tif (modifiers.includes(\"prevent\")) syntheticEvent.preventDefault();\n\n\t\t\t\thandler(syntheticEvent);\n\n\t\t\t\tif (modifiers.includes(\"once\")) {\n\t\t\t\t\tthis.removeListener(element, eventType, handler);\n\t\t\t\t}\n\n\t\t\t\tif (syntheticEvent.isImmediatePropagationStopped()) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (syntheticEvent.isPropagationStopped()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n","import { IDotCore, IDotCss } from \"dothtml-interfaces\";\nimport { DOT_VDOM_PROP_NAME } from \"../constants\";\nimport Signal from \"../reactivity/signal\";\nimport AttributeVNode from \"../v-meta-nodes/attribute-v-node\";\nimport StyleVNode from \"../v-meta-nodes/style-v-node\";\nimport { ContainerVdom } from \"./container-vdom\";\nimport { Vdom } from \"./vdom\";\nimport { AttributeValueType } from \"./vdom-types\";\nimport Binding from \"../reactivity/binding\";\nimport ReactiveAttr from \"../reactivity/reactive-attr\";\nimport BaseVStyle from \"../v-style-nodes/base-v-style\";\nimport { IRef } from \"dothtml-interfaces/src/bindings/i-ref\";\nimport Ref from \"../reactivity/ref\";\nimport SyntheticEvent from \"../events/synthetic-event\";\nimport { EventManager } from \"../events/event-manager\";\n\nexport class AttributeItem{\n\telementVDom: ElementVdom;\n\tattribute: string;\n}\n\nexport default class ElementVdom extends Vdom{\n\n\tprivate _children: ContainerVdom = null;\n\tget children(): ContainerVdom {\n\t\tif(!this._children){\n\t\t\tthis._children = new ContainerVdom(this._dot);\n\t\t\tthis._children._parent = this;\n\t\t}\n\t\treturn this._children;\n\t}\n\tset children(value: ContainerVdom) {\n\t\tthis._children = value;\n\t}\n\telement: HTMLElement;\n\ttag: string = null;\n\tprivate attributes: Record<string, AttributeValueType> = {};\n\tprivate events: Array<{name: string, callback: (e: any)=>void, modifiers: string[]}> = [];\n\tprivate attributeObserverIds: Array<{id: number, observable: Binding, attr: string}> = [];\n\tprivate childBuilders: Array<{_render: (el: HTMLElement)=>void, _unrender: ()=>void}> = [];\n\tprivate attrVNodes: Array<AttributeVNode> = [];\n\tprivate styleVNodes: Array<StyleVNode> = [];\n\tprivate ref: Ref | ((el: HTMLElement | null) => void);\n\tinputListener: (e: any) => void;\n\tcompositionStartListener: () => void;\n\tcompositionEndListener: (e: any) => void;\n\tprivate manualInputAllowed: boolean = true;\n\tprivate isComposing: boolean = false;\n\tprivate activeBindings: Record<string, Binding> = {};\n\tprivate lastSyncedValues: Record<string, any> = {};\n\n\tconstructor(dot: IDotCore, tag: string){\n\t\tsuper(dot);\n\t\tthis.tag = tag;\n\t}\n\n\t_render(node: HTMLElement){\n\t\tthis._isRendered = true;\n\n\t\tthis.element = node.ownerDocument.createElement(this.tag);\n\t\tthis.element[DOT_VDOM_PROP_NAME] = this;\n\t\tif(this.ref){\n\t\t\tif (typeof this.ref === \"function\") {\n\t\t\t\tthis.ref(this.element);\n\t\t\t} else {\n\t\t\t\tthis.ref.value = this.element;\n\t\t\t}\n\t\t}\n\n\t\tnode.appendChild(this.element);\n\n\t\tif(this._children){\n\t\t\tthis._children._render(this.element);\n\t\t}\n\n\t\t// Render events first so they are available for attribute checks.\n\t\tfor(let i = 0; i < this.events.length; i++){\n\t\t\tlet e = this.events[i];\n\t\t\tthis.renderEvent(e.name, e.callback, e.modifiers);\n\t\t}\n\n\t\t// Render 'type' first if it exists, as it affects how 'bind', 'value', and 'checked' are handled.\n\t\tif (this.attributes[\"type\"] !== undefined) {\n\t\t\tthis.renderAttr(\"type\", this.attributes[\"type\"], this.element);\n\t\t}\n\n\t\tfor(let a in this.attributes){\n\t\t\tif (a === \"type\") continue;\n\t\t\tthis.renderAttr(a, this.attributes[a], this.element);\n\t\t}\n\n\t\tif (this._onEnterHook) {\n\t\t\tthis._onEnterHook(this.element);\n\t\t}\n\t}\n\n\t_unrender() {\n\t\tif(!this._isRendered) return;\n\t\tthis._isRendered = false;\n\t\tif(this._children) this._children._unrender();\n\n\t\tif(!this.element) return;\n\n\t\tconst eventManager = EventManager.getForDocument(this.element.ownerDocument);\n\t\tif(this.inputListener){\n\t\t\teventManager.removeListener(this.element, \"input\", this.inputListener);\n\t\t\tthis.inputListener = null;\n\t\t}\n\n\t\tif(this.compositionStartListener){\n\t\t\teventManager.removeListener(this.element, \"compositionstart\", this.compositionStartListener);\n\t\t\tthis.compositionStartListener = null;\n\t\t}\n\n\t\tif(this.compositionEndListener){\n\t\t\teventManager.removeListener(this.element, \"compositionend\", this.compositionEndListener);\n\t\t\tthis.compositionEndListener = null;\n\t\t}\n\n\t\tfor(let i = 0; i < this.events.length; i++){\n\t\t\tlet e = this.events[i];\n\t\t\teventManager.removeListener(this.element, e.name.toLowerCase(), e.callback);\n\t\t}\n\n\t\tthis.element.parentNode?.removeChild(this.element);\n\n\t\tfor(let i = 0; i < this.childBuilders.length; i++){\n\t\t\tthis.childBuilders[i]._unrender();\n\t\t}\n\t\tthis.childBuilders.length = 0;\n\n\t\tfor(let i = 0; i < this.attrVNodes.length; i++){\n\t\t\tthis.attrVNodes[i].unrender();\n\t\t}\n\t\tthis.attrVNodes.length = 0;\n\n\t\tfor(let i = 0; i < this.styleVNodes.length; i++){\n\t\t\tthis.styleVNodes[i].unrender();\n\t\t}\n\t\tthis.styleVNodes.length = 0;\n\n\t\tfor(let i = 0; i < this.attributeObserverIds.length; i++){\n\t\t\tlet item = this.attributeObserverIds[i];\n\t\t\titem.observable._unsubscribe(item.id);\n\t\t}\n\t\tthis.attributeObserverIds.length = 0;\n\n\t\tif(this.ref){\n\t\t\tif (typeof this.ref === \"function\") {\n\t\t\t\tthis.ref(null);\n\t\t\t} else {\n\t\t\t\tthis.ref.value = null;\n\t\t\t}\n\t\t}\n\t\tthis.element = null;\n\t}\n\n\t_getNodes(): Node[] {\n\t\treturn this.element ? [this.element] : [];\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this;\n\t}\n\n\ttoString(): string {\n\t\tif(this.element){\n\t\t\treturn this.element.outerHTML;\n\t\t}\n\t\telse{\n\t\t\treturn super.toString();\n\t\t}\n\t}\n\n\tsetAttr(attr, value){\n\n\t\tattr = (attr ?? \"\").toLowerCase();\n\t\tlet targetAttr = attr;\n\t\tif(attr == \"bind\"){\n\t\t\tlet typeAttr = this.attributes[\"type\"];\n\t\t\tif (typeAttr instanceof Binding) typeAttr = typeAttr._get();\n\t\t\telse if (typeAttr instanceof Signal) typeAttr = typeAttr.value;\n\n\t\t\tconst type = (typeof typeAttr === \"string\") ? typeAttr.toLowerCase() : null;\n\t\t\ttargetAttr = (this.tag.toLowerCase() == \"input\" && (type == \"checkbox\" || type == \"radio\")) ? \"checked\" : \"value\";\n\t\t}\n\n\t\tconst oldVal = this.attributes[attr];\n\t\tif (oldVal instanceof StyleVNode) {\n\t\t\toldVal.unrender();\n\t\t\tconst idx = this.styleVNodes.indexOf(oldVal);\n\t\t\tif (idx !== -1) this.styleVNodes.splice(idx, 1);\n\t\t}\n\t\tif (oldVal instanceof AttributeVNode) {\n\t\t\toldVal.unrender();\n\t\t\tconst idx = this.attrVNodes.indexOf(oldVal);\n\t\t\tif (idx !== -1) this.attrVNodes.splice(idx, 1);\n\t\t}\n\n\t\t// Clean up old binding if it exists.\n\t\tfor (let i = 0; i < this.attributeObserverIds.length; i++) {\n\t\t\tlet item = this.attributeObserverIds[i];\n\t\t\tif (item.attr === attr || item.attr === targetAttr) {\n\t\t\t\titem.observable._unsubscribe(item.id);\n\t\t\t\tthis.attributeObserverIds.splice(i, 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(value && typeof value === \"object\" && !(value instanceof Array || value instanceof Binding || value instanceof Signal || value instanceof BaseVStyle)){\n\t\t\t// Supports attributes that are space-separated, such as class and aria-*.\n\t\t\t// Also supports styles.\n\t\t\tswitch(attr){\n\t\t\t\tcase \"style\": {\n\t\t\t\t\tvalue = new StyleVNode(value as IDotCss);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"ref\": {\n\t\t\t\t\t// Just a ref nothing to do.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\t// Other attributes.\n\t\t\t\t\tvalue = new AttributeVNode(attr, value);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (typeof value === \"function\" && attr === \"style\") {\n\t\t\tconst builder = new BaseVStyle();\n\t\t\tvalue(builder);\n\t\t\tvalue = new StyleVNode(builder);\n\t\t}\n\n\t\tif (value instanceof BaseVStyle && attr === \"style\") {\n\t\t\tvalue = new StyleVNode(value);\n\t\t}\n\n\t\tthis.attributes[attr] = value;\n\t\tif(this.element){\n\t\t\tthis.renderAttr(attr, value, this.element);\n\t\t}\n\t}\n\n\tupdateReactiveAttr(attr: string, value: AttributeValueType){\n\t\tif(!this.element) return;\n\t\tthis.renderAttr((attr ?? \"\").toLowerCase(), value, this.element);\n\t}\n\n\tprivate renderAttr(attr: string, value: AttributeValueType, node: HTMLElement, isExplicitBind: boolean = false){\n\n\t\tif(attr == \"bind\"){\n\t\t\tlet typeAttr = this.attributes[\"type\"];\n\t\t\tif (typeAttr instanceof Binding) typeAttr = typeAttr._get();\n\t\t\telse if (typeAttr instanceof Signal) typeAttr = typeAttr.value;\n\n\t\t\tconst type = (typeof typeAttr === \"string\") ? typeAttr.toLowerCase() : null;\n\t\t\tattr = (this.tag.toLowerCase() == \"input\" && (type == \"checkbox\" || type == \"radio\")) ? \"checked\" : \"value\";\n\t\t\tisExplicitBind = true;\n\t\t}\n\n\t\tif(attr == \"ref\"){\n\t\t\tthis.ref = value as any;\n\t\t\tif(this.element) {\n\t\t\t\tif (typeof this.ref === \"function\") {\n\t\t\t\t\tthis.ref(this.element);\n\t\t\t\t} else {\n\t\t\t\t\tthis.ref.value = this.element;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if(typeof value === \"string\" || typeof value === \"number\"){\n\t\t\tif(attr == \"value\" && (this.tag.toLowerCase() == \"input\" || this.tag.toLowerCase() == \"textarea\" || this.tag.toLowerCase() == \"select\")){\n\t\t\t\t(node as any).value = value ?? \"\";\n\t\t\t\tthis.lastSyncedValues[attr] = value ?? \"\";\n\t\t\t}\n\t\t\telse{\n\t\t\t\tnode.setAttribute(attr, `${value}`);\n\t\t\t}\n\t\t}\n\t\telse if (typeof value === \"boolean\" || value == null || value == undefined){\n\t\t\tif(attr == \"checked\" && this.tag.toLowerCase() == \"input\"){\n\t\t\t\t(node as HTMLInputElement).checked = !!value;\n\t\t\t\tthis.lastSyncedValues[attr] = !!value;\n\t\t\t}\n\t\t\telse if(attr == \"selected\" && this.tag.toLowerCase() == \"option\"){\n\t\t\t\t(node as HTMLOptionElement).selected = !!value;\n\t\t\t}\n\t\t\telse if(attr == \"value\" && (this.tag.toLowerCase() == \"input\" || this.tag.toLowerCase() == \"textarea\" || this.tag.toLowerCase() == \"select\")){\n\t\t\t\t(node as any).value = value ?? \"\";\n\t\t\t\tthis.lastSyncedValues[attr] = value ?? \"\";\n\t\t\t}\n\t\t\t\n\t\t\tif(value) node.setAttribute(attr, `${value}`);\n\t\t\telse node.removeAttribute(attr);\n\t\t}\n\t\telse if(value instanceof Array){\n\t\t\t// Like a space-separated class list.\n\t\t\tnode.setAttribute(attr, value.join(\" \"));\n\t\t}\n\t\telse if (value instanceof Binding){\n\t\t\tthis.renderAttr(attr, value._get(), node, isExplicitBind);\n\t\t\t\n\t\t\t// Only subscribe if we haven't already for this attribute.\n\t\t\tif (!this.attributeObserverIds.some(item => item.attr === attr && item.observable === value)) {\n\t\t\t\tlet id = value._subscribe(new ReactiveAttr(this, attr));\n\t\t\t\tthis.attributeObserverIds.push({id: id, observable: value, attr: attr});\n\t\t\t}\n\n\t\t\t// If it's a value prop, update the observable on change.\n\t\t\tif((attr == \"value\" || attr == \"checked\") && value.isWritable && isExplicitBind){\n\t\t\t\tthis.activeBindings[attr] = value;\n\t\t\t\tif(!this.inputListener){\n\t\t\t\t\tthis.inputListener = (e)=>{\n\t\t\t\t\t\tif (this.isComposing) return;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst targetAttr = ((e.target as any).type === \"checkbox\" || (e.target as any).type === \"radio\") ? \"checked\" : \"value\";\n\t\t\t\t\t\t\tconst binding = this.activeBindings[targetAttr];\n\t\t\t\t\t\t\tif(!binding) return;\n\n\t\t\t\t\t\t\tconst val = (this.element as HTMLInputElement)[targetAttr];\n\t\t\t\t\t\t\tconst currentSigVal = binding._get();\n\t\t\t\t\t\t\tconst lastVal = this.lastSyncedValues[targetAttr];\n\n\t\t\t\t\t\t\t// Only update the signal if the DOM changed AND the signal hasn't already been updated to this value.\n\t\t\t\t\t\t\t// We use loose equality here to handle null/undefined/empty string transitions gracefully.\n\t\t\t\t\t\t\tif (currentSigVal == lastVal && val != lastVal) {\n\t\t\t\t\t\t\t\tbinding._set(val);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Always update the last synced value to match the current state.\n\t\t\t\t\t\t\tthis.lastSyncedValues[targetAttr] = binding._get();\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.error(\"CAUGHT ERROR: \" + e.message);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.compositionStartListener = () => {\n\t\t\t\t\t\tthis.isComposing = true;\n\t\t\t\t\t};\n\n\t\t\t\t\tthis.compositionEndListener = (e) => {\n\t\t\t\t\t\tthis.isComposing = false;\n\t\t\t\t\t\t// Manually trigger an update after composition ends.\n\t\t\t\t\t\tthis.inputListener(e);\n\t\t\t\t\t};\n\n\t\t\t\t\tconst eventManager = EventManager.getForDocument(this.element.ownerDocument);\n\t\t\t\t\teventManager.addListener(this.element, \"input\", this.inputListener);\n\t\t\t\t\teventManager.addListener(this.element, \"compositionstart\", this.compositionStartListener);\n\t\t\t\t\teventManager.addListener(this.element, \"compositionend\", this.compositionEndListener);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if(value instanceof AttributeVNode){\n\t\t\tvalue.render(node);\n\t\t\tthis.attrVNodes.push(value);\n\t\t}\n\t\telse if(value instanceof StyleVNode){\n\t\t\tvalue.render(node);\n\t\t\tthis.styleVNodes.push(value);\n\t\t}\n\t}\n\n\taddEventListener(event: string, callback: (e: any)=>void, modifiers: string[] = []){\n\t\t// Check if listener already exists to avoid duplicates.\n\t\tif (this.events.some(e => e.name === event && e.callback === callback)) return;\n\t\t\n\t\tthis.events.push({name: event, callback: callback, modifiers: modifiers});\n\t\tif(this.element) this.renderEvent(event, callback, modifiers);\n\t}\n\n\tprivate renderEvent(e: string, callback: (e: any)=>void, modifiers: string[] = []){\n\t\tEventManager.getForDocument(this.element.ownerDocument).addListener(this.element, e.toLowerCase(), callback, modifiers);\n\t}\n}\n","import { IDotComponent, IDotCore, IDotCss } from \"dothtml-interfaces\";\nimport Signal from \"../reactivity/signal\";\nimport CollectionVdom from \"./collection-vdom\";\nimport { ConditionalVdom } from \"./conditional-vdom\";\nimport ElementVdom from \"./element-vdom\";\nimport { HtmlVdom } from \"./html-vdom\";\nimport { TextVdom } from \"./text-vdom\";\nimport { ReactiveVdom } from \"./reactive-vdom\";\nimport { Vdom } from \"./vdom\";\nimport { AttributeValueType, ObservableCollection } from \"./vdom-types\";\nimport { ComponentVdom } from \"./component-vdom\";\nimport Binding from \"../reactivity/binding\";\nimport BaseVStyle from \"../v-style-nodes/base-v-style\";\n\ntype ParentVdom = ContainerVdom|ConditionalVdom|ElementVdom;\n\n/**\n * This is the actual document builder.\n */\nexport class ContainerVdom extends Vdom{\n\t_children: Array<Vdom> = [];\n\t_parent: ParentVdom = null;\n\n\tconstructor(dot: IDotCore){\n\t\tsuper(dot);\n\t}\n\n\t_addChild(content: Vdom){\n\t\tthis._children.push(content);\n\t\tif(this._parent && this._parent instanceof ElementVdom && this._parent.element) content._render(this._parent.element);\n\t\treturn this;\n\t}\n\n\t_render(node: HTMLElement){\t\n\t\tthis._isRendered = true;\n\t\tfor(let c = 0; c < this._children.length; c++){\n\t\t\tthis._children[c]._render(node);\n\t\t}\n\t}\n\n\t_unrender() {\n\t\tif(!this._isRendered) return;\n\t\tthis._isRendered = false;\n\t\tfor(let c = 0; c < this._children.length; c++){\n\t\t\tthis._children[c]._unrender();\n\t\t}\n\t}\n\n\t_getNodes(): Node[] {\n\t\tlet nodes = [];\n\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\tnodes.push(...this._children[i]._getNodes());\n\t\t}\n\t\treturn nodes;\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this._children[this._children.length - 1] || null;\n\t}\n}\n","import { IRef } from \"dothtml-interfaces/src/bindings/i-ref\";\nimport Signal from \"./signal\";\n\n/**\n * A reactive reference to a DOM element or component instance.\n * Supports method proxying, allowing direct calls like `myRef.focus()`.\n */\nexport default class Ref<T = any> extends Signal<T | null> implements IRef<any>{\n\tconstructor() {\n\t\tsuper();\n\t\tthis._value = null;\n\n\t\treturn new Proxy(this, {\n\t\t\tget(target, prop, receiver) {\n\t\t\t\tif (prop in target) {\n\t\t\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t\t\t}\n\t\t\t\tconst val = target.value;\n\t\t\t\tif (val && typeof (val as any)[prop] === \"function\") {\n\t\t\t\t\treturn (...args: any[]) => (val as any)[prop].apply(val, args);\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t}) as any;\n\t}\n\n\t/**\n\t * Returns the underlying element or component instance.\n\t */\n\tget element(): T {\n\t\treturn this.value as T;\n\t}\n\n\t/**\n\t * Returns a promise that resolves when the reference is populated.\n\t */\n\tasync ready(): Promise<T> {\n\t\tif (this.value) return this.value as T;\n\t\treturn new Promise((resolve) => {\n\t\t\tconst id = this.subscribe((val: T | null) => {\n\t\t\t\tif (val) {\n\t\t\t\t\tthis.unsubscribe(id);\n\t\t\t\t\tresolve(val);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n","export const allEventAttr: Record<string, number> = {\n\tonAbort: 1, onBlur: 1, onChange: 1, onInput: 1, onCanPlay: 1, onCantPlayThrough: 1, onClick: 1, onCopy: 1, onContextMenu: 1, onCueChange: 1, onCut: 1, onDblClick: 1, onDrag: 1, onDragEnd: 1, onDragEnter: 1, onDragLeave: 1, onDragOver: 1, onDragStart: 1, onDrop: 1, onDurationChange: 1, onEmptied: 1, onEnded: 1, onError: 1, onFocus: 1, onHashChange: 1, onInvalid: 1, onKeyDown: 1, onKeyPress: 1, onKeyUp: 1, onLoad: 1, onLoadedData: 1, onLoadedMetadata: 1, onLoadStart: 1, onMouseDown: 1, onMouseEnter: 1, onMouseLeave: 1, onMouseMove: 1, onMouseOut: 1, onMouseOver: 1, onMouseUp: 1, onPointerCancel: 1, onPointerDown: 1, onPointerEnter: 1, onPointerLeave: 1, onPointerMove: 1, onPointerOut: 1, onPointerOver: 1, onPointerUp: 1, onTouchStart: 1, onTouchEnd: 1, onTouchCancel: 1, onTouchMove: 1, onMouseWheel: 1, onOffline: 1, onOnline: 1, onPageHide: 1, onPagePaste: 1, onPageShow: 1, onPause: 1, onPlay: 1, onPlaying: 1, onPopState: 1, onProgress: 1, onRateChange: 1, onReset: 1, onResize: 1, onScroll: 1, onSearch: 1, onSeeked: 1, onSeeking: 1, onSelect: 1, onStalled: 1, onStorage: 1, onSubmit: 1, onSuspend: 1, onTimeUpdate: 1, onToggle: 1, onUnload: 1, onVolumeChange: 1, onWaiting: 1, onWheel: 1,\n};\n","import { IDotCore } from \"dothtml-interfaces\";\nimport { ContainerVdom } from \"./vdom-nodes/container-vdom\";\nimport { Vdom } from \"./vdom-nodes/vdom\";\nimport Signal from \"./reactivity/signal\";\nimport Binding from \"./reactivity/binding\";\nimport ElementVdom from \"./vdom-nodes/element-vdom\";\nimport { ReactiveVdom } from \"./vdom-nodes/reactive-vdom\";\nimport { TextVdom } from \"./vdom-nodes/text-vdom\";\nimport Ref from \"./reactivity/ref\";\nimport { allEventAttr } from \"./dot-event-attrs\";\n\nexport const isContent = (arg: any) => {\n\treturn arg instanceof ContainerVdom || \n\t\targ instanceof Vdom || \n\t\targ?._root || // DotChain\n\t\targ?._children || // FragmentVdom or ContainerVdom\n\t\t(typeof arg == \"object\" && arg?.build) || \n\t\targ instanceof Signal || \n\t\targ instanceof Binding || \n\t\ttypeof arg === \"string\" || \n\t\ttypeof arg === \"number\" || \n\t\ttypeof arg === \"boolean\" || \n\t\tArray.isArray(arg);\n};\n\nexport const applyContent = (dot: IDotCore, n: ElementVdom | ContainerVdom, cont: any) => {\n\tconst target = n instanceof ElementVdom ? n.children : n;\n\tif(Array.isArray(cont)){\n\t\tfor(let i = 0; i < cont.length; i++) applyContent(dot, n, cont[i]);\n\t}\n\telse if(Array.isArray(cont?._children)){\n\t\tconst children = cont._children;\n\t\tif (children && children.length > 0) {\n\t\t\tfor(let i = 0; i < children.length; i++) target._addChild(children[i]);\n\t\t}\n\t}\n\telse if(cont?._root){\n\t\tapplyContent(dot, n, cont._root);\n\t}\n\telse if(cont instanceof Vdom){\n\t\ttarget._addChild(cont);\n\t}\n\telse if(typeof cont == \"object\" && cont?.build){\n\t\ttarget.mount(cont);\n\t}\n\telse{\n\t\tif(cont !== null && cont !== undefined){\n\t\t\tlet val = cont;\n\t\t\tif(val instanceof Signal){\n\t\t\t\tval = val.bind();\n\t\t\t}\n\t\t\tif(val instanceof Binding){\n\t\t\t\ttarget._addChild(new ReactiveVdom(dot, val));\n\t\t\t}\n\t\t\telse{\n\t\t\t\ttarget._addChild(new TextVdom(val));\n\t\t\t}\n\t\t}\n\t}\n};\n\nexport const applyAttributes = (n: ElementVdom, attrs: any) => {\n\tfor(let k in attrs) {\n\t\tlet attr = attrs[k];\n\t\tif(attr instanceof Signal && !(attr instanceof Ref)) attr = attr.bind();\n\t\tlet eventName = k;\n\t\tlet modifiers = [];\n\t\tif(k.includes(\".\")){\n\t\t\tconst parts = k.split(\".\");\n\t\t\teventName = parts[0];\n\t\t\tmodifiers = parts.slice(1);\n\t\t}\n\n\t\tconst isEvent = allEventAttr[eventName] || (eventName.startsWith(\"on\") && eventName[2] && eventName[2] === eventName[2].toUpperCase());\n\n\t\tif(isEvent) {\n\t\t\tif(typeof attrs[k] !== \"function\") {\n\t\t\t\tthrow new Error(`Value of event attribute ${k} must be a function.`);\n\t\t\t}\n\n\t\t\t(n as any).addEventListener(eventName.substring(2).toLowerCase(), attr, modifiers);\n\t\t} else {\n\t\t\tn.setAttr(k, attr);\n\t\t}\n\t}\n};\n\nexport const createElement = (dot: IDotCore, tag: string, args: any[] | IArguments): ElementVdom => {\n\tlet n = new ElementVdom(dot, tag);\n\n\tfor(let j = 0; j < args.length; j++){\n\t\tlet arg = args[j];\n\t\tif(isContent(arg)){\n\t\t\tapplyContent(dot, n, arg);\n\t\t}\n\t\telse if(arg && typeof arg === \"object\"){\n\t\t\tapplyAttributes(n, arg);\n\t\t}\n\t}\n\n\treturn n;\n}\n","import { IDotCss } from \"dothtml-interfaces\";\n\nconst stylesheetCache = new WeakMap<Document, Map<string, CSSStyleSheet>>();\n\nexport default function renderStylesheet(styleCallback: string|CSSStyleSheet|((css: any)=>(string|IDotCss)), document: Document): CSSStyleSheet|HTMLStyleElement {\n\n\tlet finalStylesheet = \"\";\n\n\tif (styleCallback instanceof (document.defaultView as any)?.CSSStyleSheet) {\n\t\treturn styleCallback as CSSStyleSheet;\n\t}\n\n\tif (typeof styleCallback == \"string\") {\n\t\tfinalStylesheet = styleCallback;\n\t}\n\telse if (typeof styleCallback == \"function\") {\n\t\tlet css = null;\n\t\tlet styles = styleCallback(css);\n\n\t\tif (typeof styles == \"string\") {\n\t\t\tfinalStylesheet = styles;\n\t\t}\n\t\telse {\n\t\t\t// TODO: handle dot syntax if needed.\n\t\t}\n\t}\n\n\tlet docCache = stylesheetCache.get(document);\n\tif (!docCache) {\n\t\tdocCache = new Map();\n\t\tstylesheetCache.set(document, docCache);\n\t}\n\n\tif (docCache.has(finalStylesheet)) {\n\t\treturn docCache.get(finalStylesheet);\n\t}\n\n\tlet DocumentCSSStyleSheet = (document.defaultView as any)?.CSSStyleSheet;\n\n\tif (DocumentCSSStyleSheet) {\n\t\ttry {\n\t\t\tlet sharedStyles = new DocumentCSSStyleSheet();\n\t\t\tif (sharedStyles.replaceSync) {\n\t\t\t\tsharedStyles.replaceSync(finalStylesheet);\n\t\t\t\tdocCache.set(finalStylesheet, sharedStyles);\n\t\t\t\treturn sharedStyles;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Constructor might fail in some environments.\n\t\t}\n\t}\n\n\t// Fallback on a style tag.\n\tlet style = document.createElement(\"style\");\n\tstyle.innerHTML = finalStylesheet;\n\treturn style;\n}\n","import type { ComponentVdom } from \"./component-vdom\";\n\nexport const componentStack: ComponentVdom[] = [];\nexport const getCurrentComponent = () => componentStack[componentStack.length - 1] || null;\nexport const pushComponent = (component: ComponentVdom) => componentStack.push(component);\nexport const popComponent = () => componentStack.pop();\n","import Signal, { dependencyStack } from \"./signal\";\nimport { scheduler } from \"./scheduler\";\nimport { Priority } from \"./priority\";\n\nexport default class Computed<T> extends Signal<T> {\n\tprivate getter: () => T;\n\tprivate dependencies = new Map<Signal, number>();\n\tprivate isQueued = false;\n\tprivate isEvaluating = false;\n\tprivate active = true;\n\tprivate dirty = true;\n\tprivate error: any = null;\n\n\tget isWritable(): boolean {\n\t\treturn false;\n\t}\n\n\tprivate updateSubscription = {\n\t\tactive: true,\n\t\tupdate: () => {\n\t\t\tthis.isQueued = false;\n\t\t\tif (this.dirty) {\n\t\t\t\tthis._update();\n\t\t\t}\n\t\t}\n\t};\n\n\tconstructor(getter: () => T) {\n\t\tsuper();\n\t\tthis.getter = getter;\n\t\t// Initial evaluation is done immediately to set up initial dependencies.\n\t\tthis._update();\n\t}\n\n\tget value(): T {\n\t\tif (this.isEvaluating) {\n\t\t\tthrow new Error(\"Circular dependency detected in computed signal.\");\n\t\t}\n\t\tif (this.dirty) {\n\t\t\tthis._update();\n\t\t}\n\t\tif (this.error) {\n\t\t\tthrow this.error;\n\t\t}\n\t\treturn super.value;\n\t}\n\n\taddDependency(signal: Signal) {\n\t\tif (!this.active) return;\n\t\tif (!this.newDependencies.has(signal)) {\n\t\t\tthis.newDependencies.add(signal);\n\t\t}\n\t}\n\n\tprivate requestUpdate() {\n\t\tif (!this.active) return;\n\t\tthis.dirty = true;\n\t\tif (!this.isQueued) {\n\t\t\tthis.isQueued = true;\n\t\t\tscheduler.enqueue(this.updateSubscription as any, Priority.Normal);\n\t\t}\n\t}\n\n\tprivate newDependencies = new Set<Signal>();\n\n\tprivate _update() {\n\t\tif (!this.active) return;\n\t\tif (this.isEvaluating) {\n\t\t\tthrow new Error(\"Circular dependency detected in computed signal.\");\n\t\t}\n\n\t\tthis.isEvaluating = true;\n\t\tthis.dirty = false;\n\t\tthis.error = null;\n\t\tthis.newDependencies.clear();\n\t\tdependencyStack.push(this);\n\n\t\tlet newValue: T;\n\t\tlet hasError = false;\n\n\t\ttry {\n\t\t\tnewValue = this.getter();\n\t\t} catch (e) {\n\t\t\tthis.error = e;\n\t\t\thasError = true;\n\t\t} finally {\n\t\t\tdependencyStack.pop();\n\t\t\tthis.isEvaluating = false;\n\t\t}\n\n\t\tif (!hasError) {\n\t\t\tthis.setValue(newValue);\n\t\t}\n\n\t\t// Update dependencies\n\t\tconst toRemove: Signal[] = [];\n\t\tfor (const [signal, subId] of this.dependencies) {\n\t\t\tif (!this.newDependencies.has(signal)) {\n\t\t\t\tsignal.unsubscribe(subId);\n\t\t\t\ttoRemove.push(signal);\n\t\t\t}\n\t\t}\n\t\tfor (const signal of toRemove) {\n\t\t\tthis.dependencies.delete(signal);\n\t\t}\n\n\t\tfor (const signal of this.newDependencies) {\n\t\t\tif (!this.dependencies.has(signal)) {\n\t\t\t\tconst subId = signal.subscribe(() => this.requestUpdate(), true);\n\t\t\t\tthis.dependencies.set(signal, subId);\n\t\t\t}\n\t\t}\n\t}\n\n\tdispose() {\n\t\tthis.active = false;\n\t\tfor (const [signal, subId] of this.dependencies) {\n\t\t\tsignal.unsubscribe(subId);\n\t\t}\n\t\tthis.dependencies.clear();\n\t}\n}\n","import BaseVStyle from \"./base-v-style\";\n\nexport interface IStylePropHost {\n\tformatPropsForBlock(style: BaseVStyle): string;\n}\n\nexport default class KeyframesBuilder {\n\tprivate steps: Array<{ selector: string, style: BaseVStyle }> = [];\n\n\tconstructor(private sheet: IStylePropHost) {}\n\n\tprivate step(selector: string, callback: (s: BaseVStyle) => void) {\n\t\tconst style = new BaseVStyle();\n\t\tcallback(style);\n\t\tthis.steps.push({ selector, style });\n\t\treturn this;\n\t}\n\n\tfrom(callback: (s: BaseVStyle) => void) {\n\t\treturn this.step(\"from\", callback);\n\t}\n\n\tto(callback: (s: BaseVStyle) => void) {\n\t\treturn this.step(\"to\", callback);\n\t}\n\n\tat(percent: number | string, callback: (s: BaseVStyle) => void) {\n\t\tconst selector = typeof percent === \"number\" ? `${percent}%` : percent;\n\t\treturn this.step(selector, callback);\n\t}\n\n\ttoString(indent: string = \"\") {\n\t\treturn this.steps.map(s =>\n\t\t\t`${indent}${s.selector} { ${this.sheet.formatPropsForBlock(s.style)} }`\n\t\t).join(\"\\n\");\n\t}\n}\n","import BaseVStyle from \"./base-v-style\";\nimport cssProps from \"../css/css-props\";\nimport { formatCssLength } from \"../css/format-css-type\";\nimport Signal from \"../reactivity/signal\";\nimport Binding from \"../reactivity/binding\";\nimport Computed from \"../reactivity/computed\";\nimport CssFunctionBuilderVStyle from \"./css-function-builder-v-style\";\nimport FilterVStyle from \"./filter-v-style\";\nimport TransformVStyle from \"./transform-v-style\";\nimport KeyframesBuilder from \"./keyframes-builder\";\n\n\ntype StyleRule = \n\t| { type: \"rule\", selector: string, style: BaseVStyle }\n\t| { type: \"media\", condition: string, builder: StyleSheetBuilder }\n\t| { type: \"container\", condition: string, builder: StyleSheetBuilder }\n\t| { type: \"supports\", condition: string, builder: StyleSheetBuilder }\n\t| { type: \"keyframes\", name: string, builder: KeyframesBuilder };\n\nexport default class StyleSheetBuilder {\n\tprivate rules: Array<StyleRule> = [];\n\tpublic theme: any = null;\n\tprivate ghostVars: Array<{ name: string, value: Signal | Binding }> = [];\n\tprivate varCounter = 0;\n\n\tgetGhostVars() {\n\t\treturn this.ghostVars;\n\t}\n\n\tsetTheme(theme: any) {\n\t\tthis.theme = theme;\n\t\treturn this;\n\t}\n\n\ttemplate(strings: TemplateStringsArray, ...values: any[]) {\n\t\treturn new Computed(() => {\n\t\t\tlet result = \"\";\n\t\t\tfor (let i = 0; i < strings.length; i++) {\n\t\t\t\tresult += strings[i];\n\t\t\t\tif (i < values.length) {\n\t\t\t\t\tlet val = values[i];\n\t\t\t\t\tif (val instanceof Signal || val instanceof Binding) {\n\t\t\t\t\t\tresult += val instanceof Binding ? val._get() : val.value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult += val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t});\n\t}\n\n\tclass(name: string, callback: (s: BaseVStyle) => void) {\n\t\treturn this.rule(`.${name}`, callback);\n\t}\n\n\trule(selector: string, callback: (s: BaseVStyle) => void) {\n\t\tconst style = new BaseVStyle();\n\t\tcallback(style);\n\t\tthis.rules.push({ type: \"rule\", selector, style });\n\t\treturn this;\n\t}\n\n\tselector(selector: string, callback: (s: BaseVStyle) => void) {\n\t\treturn this.rule(selector, callback);\n\t}\n\n\tmedia(condition: string, callback: (s: StyleSheetBuilder) => void) {\n\t\tconst builder = new StyleSheetBuilder();\n\t\tcallback(builder);\n\t\tthis.rules.push({ type: \"media\", condition, builder });\n\t\treturn this;\n\t}\n\n\tcontainer(condition: string, callback: (s: StyleSheetBuilder) => void) {\n\t\tconst builder = new StyleSheetBuilder();\n\t\tcallback(builder);\n\t\tthis.rules.push({ type: \"container\", condition, builder });\n\t\treturn this;\n\t}\n\n\tsupports(condition: string, callback: (s: StyleSheetBuilder) => void) {\n\t\tconst builder = new StyleSheetBuilder();\n\t\tcallback(builder);\n\t\tthis.rules.push({ type: \"supports\", condition, builder });\n\t\treturn this;\n\t}\n\n\tkeyframes(name: string, callback: (k: KeyframesBuilder) => void) {\n\t\tconst builder = new KeyframesBuilder(this);\n\t\tcallback(builder);\n\t\tthis.rules.push({ type: \"keyframes\", name, builder });\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns a CSS variable reference string.\n\t * @param name The name of the variable (e.g., \"my-color\" or \"--my-color\").\n\t * @returns A string in the format \"var(--name)\".\n\t */\n\tv(name: string): string {\n\t\tif (!name.startsWith(\"--\")) name = \"--\" + name;\n\t\treturn `var(${name})`;\n\t}\n\n\tprivate applyObjectToBuilder(builder: CssFunctionBuilderVStyle, cssValue: any) {\n\t\tlet funcArray = Array.isArray(cssValue) ? cssValue : [cssValue];\n\t\tfor (let funcValue of funcArray) {\n\t\t\tfor (let k in funcValue) {\n\t\t\t\tlet v = funcValue[k];\n\t\t\t\tlet methodKey = k.replace(/_\\d+$/, \"\");\n\t\t\t\tif (typeof builder[methodKey] === \"function\") {\n\t\t\t\t\tif (Array.isArray(v)) {\n\t\t\t\t\t\tbuilder[methodKey](...v);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuilder[methodKey](v);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tformatPropsForBlock(style: BaseVStyle): string {\n\t\treturn style.getProps().map(p => {\n\t\t\tconst registered = cssProps[p.prop];\n\t\t\tlet cssProp = p.prop;\n\t\t\tlet cssValue = p.value;\n\n\t\t\tif (typeof cssValue === \"object\" && cssValue !== null && !(cssValue instanceof CssFunctionBuilderVStyle) && !(cssValue instanceof Signal) && !(cssValue instanceof Binding)) {\n\t\t\t\tlet builder: CssFunctionBuilderVStyle;\n\t\t\t\tswitch (p.prop) {\n\t\t\t\t\tcase \"filter\": {\n\t\t\t\t\t\tbuilder = new FilterVStyle(p.prop);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"transform\": {\n\t\t\t\t\t\tbuilder = new TransformVStyle(p.prop);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (builder) {\n\t\t\t\t\tthis.applyObjectToBuilder(builder, cssValue);\n\t\t\t\t\tcssValue = builder;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (cssValue instanceof Signal || cssValue instanceof Binding || cssValue instanceof CssFunctionBuilderVStyle) {\n\t\t\t\tlet isReactive = cssValue instanceof Signal || cssValue instanceof Binding;\n\t\t\t\tif (cssValue instanceof CssFunctionBuilderVStyle) {\n\t\t\t\t\tfor (const f of cssValue.funcs) {\n\t\t\t\t\t\tfor (const arg of f.args) {\n\t\t\t\t\t\t\tif ((arg as any).v instanceof Signal || (arg as any).v instanceof Binding || arg instanceof Signal || arg instanceof Binding) {\n\t\t\t\t\t\t\t\tisReactive = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (isReactive) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (isReactive) {\n\t\t\t\t\tconst varName = `--dh-v${++this.varCounter}`;\n\t\t\t\t\tconst reactiveSource = cssValue;\n\t\t\t\t\tlet reactiveValue: any = cssValue;\n\n\t\t\t\t\tif ((p.prop === \"transform\" || p.prop === \"filter\") && !(reactiveSource instanceof CssFunctionBuilderVStyle)) {\n\t\t\t\t\t\treactiveValue = new Computed(() => {\n\t\t\t\t\t\t\tconst val = reactiveSource instanceof Binding ? reactiveSource._get() : (reactiveSource as any).value;\n\t\t\t\t\t\t\tif (typeof val === \"object\" && val !== null) {\n\t\t\t\t\t\t\t\tconst builder = p.prop === \"transform\" ? new TransformVStyle(p.prop) : new FilterVStyle(p.prop);\n\t\t\t\t\t\t\t\tthis.applyObjectToBuilder(builder, val);\n\t\t\t\t\t\t\t\treturn builder.toString();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn val;\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (registered && registered.unit && !(reactiveSource instanceof CssFunctionBuilderVStyle)) {\n\t\t\t\t\t\treactiveValue = new Computed(() => {\n\t\t\t\t\t\t\tconst val = reactiveSource instanceof Binding ? reactiveSource._get() : (reactiveSource as any).value;\n\t\t\t\t\t\t\treturn typeof val === \"number\" ? `${val}${registered.unit}` : val;\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (registered && (registered.type === \"length\" || registered.type === \"hybrid\") && !(reactiveSource instanceof CssFunctionBuilderVStyle)) {\n\t\t\t\t\t\treactiveValue = new Computed(() => {\n\t\t\t\t\t\t\tconst val = reactiveSource instanceof Binding ? reactiveSource._get() : (reactiveSource as any).value;\n\t\t\t\t\t\t\tif (typeof val === \"number\") {\n\t\t\t\t\t\t\t\treturn formatCssLength(val, registered.unit);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn val;\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (reactiveSource instanceof CssFunctionBuilderVStyle) {\n\t\t\t\t\t\treactiveValue = new Computed(() => reactiveSource.toString());\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.ghostVars.push({ name: varName, value: reactiveValue as any });\n\t\t\t\t\tcssValue = `var(${varName})`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (registered) {\n\t\t\t\tcssProp = registered.cssName;\n\t\t\t\tif ((registered.type === \"length\" || registered.type === \"hybrid\") && typeof p.value === \"number\") {\n\t\t\t\t\tif (registered.type === \"hybrid\" && registered.unit === undefined) {\n\t\t\t\t\t\t// Leave as unitless number\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcssValue = formatCssLength(p.value, registered.unit);\n\t\t\t\t\t}\n\t\t\t\t} else if (registered.unit && typeof p.value === \"number\") {\n\t\t\t\t\tcssValue = `${p.value}${registered.unit}`;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn `${cssProp}: ${cssValue};`;\n\t\t}).join(\" \");\n\t}\n\n\ttoString(indent: string = \"\") {\n\t\treturn this.rules.map(r => {\n\t\t\tif (r.type === \"media\") {\n\t\t\t\treturn `${indent}@media ${r.condition} {\\n${r.builder.toString(indent + \" \")}\\n${indent}}`;\n\t\t\t}\n\t\t\tif (r.type === \"container\") {\n\t\t\t\treturn `${indent}@container ${r.condition} {\\n${r.builder.toString(indent + \" \")}\\n${indent}}`;\n\t\t\t}\n\t\t\tif (r.type === \"supports\") {\n\t\t\t\treturn `${indent}@supports ${r.condition} {\\n${r.builder.toString(indent + \" \")}\\n${indent}}`;\n\t\t\t}\n\t\t\tif (r.type === \"keyframes\") {\n\t\t\t\treturn `${indent}@keyframes ${r.name} {\\n${r.builder.toString(indent + \" \")}\\n${indent}}`;\n\t\t\t}\n\n\t\t\tconst props = this.formatPropsForBlock(r.style);\n\t\t\treturn `${indent}${r.selector} { ${props} }`;\n\t\t}).join(\"\\n\");\n\t}\n\n\thasRules() {\n\t\treturn this.rules.length > 0;\n\t}\n\n\tdispose() {\n\t\tfor (const gv of this.ghostVars) {\n\t\t\tif (gv.value instanceof Computed) {\n\t\t\t\tgv.value.dispose();\n\t\t\t} else if (gv.value instanceof Binding && (gv.value as any)._source instanceof Computed) {\n\t\t\t\t(gv.value as any)._source.dispose();\n\t\t\t}\n\t\t}\n\t\tfor (const r of this.rules) {\n\t\t\tif (r.type === \"media\" || r.type === \"container\" || r.type === \"supports\") {\n\t\t\t\tr.builder.dispose();\n\t\t\t}\n\t\t}\n\t}\n}\n","import Ref from \"./ref\";\n\nexport default class RefCollection<T = any> {\n\tprivate _refs: Map<string | number, Ref<T>> = new Map();\n\n\tget(key: string | number): Ref<T> {\n\t\tif (!this._refs.has(key)) {\n\t\t\tthis._refs.set(key, new Ref<T>());\n\t\t}\n\t\treturn this._refs.get(key)!;\n\t}\n\n\tget elements(): Record<string | number, T | null> {\n\t\tconst result: Record<string | number, T | null> = {};\n\t\tthis._refs.forEach((ref, key) => {\n\t\t\tresult[key] = ref.value;\n\t\t});\n\t\treturn result;\n\t}\n\n\t/**\n\t * Iterates over each populated element in the collection.\n\t */\n\tforEach(callback: (el: T | null, key: string | number) => void): void {\n\t\tthis._refs.forEach((ref, key) => {\n\t\t\tcallback(ref.value, key);\n\t\t});\n\t}\n\n\t/**\n\t * Maps each populated element in the collection to a new array.\n\t */\n\tmap<U>(callback: (el: T | null, key: string | number) => U): U[] {\n\t\tconst result: U[] = [];\n\t\tthis._refs.forEach((ref, key) => {\n\t\t\tresult.push(callback(ref.value, key));\n\t\t});\n\t\treturn result;\n\t}\n}\n","import type { ComponentVdom } from \"./vdom-nodes/component-vdom\";\n\nconst registry = new Map<string, Set<ComponentVdom>>();\n\nexport function registerInstance(id: string, instance: ComponentVdom) {\n\tif (!registry.has(id)) registry.set(id, new Set());\n\tregistry.get(id)!.add(instance);\n}\n\nexport function unregisterInstance(id: string, instance: ComponentVdom) {\n\tregistry.get(id)?.delete(instance);\n}\n\nexport function getInstances(id: string) {\n\treturn registry.get(id) || new Set<ComponentVdom>();\n}\n","import { IDotComponent, IDotCore } from \"dothtml-interfaces\";\nimport { Vdom } from \"./vdom\";\nimport { ContainerVdom } from \"./container-vdom\";\nimport { applyContent } from \"../dot-helpers\";\nimport { TextVdom } from \"./text-vdom\";\nimport { FragmentVdom } from \"./fragment-vdom\";\nimport renderStylesheet from \"../helpers/render-stylesheet\";\nimport { EventManager } from \"../events/event-manager\";\nimport Signal from \"../reactivity/signal\";\nimport Binding from \"../reactivity/binding\";\nimport { scheduler } from \"../reactivity/scheduler\";\nimport { Priority } from \"../reactivity/priority\";\nimport Computed from \"../reactivity/computed\";\nimport { pushComponent, popComponent, getCurrentComponent } from \"./component-context\";\nimport BaseVStyle from \"../v-style-nodes/base-v-style\";\nimport StyleVNode from \"../v-meta-nodes/style-v-node\";\nimport StyleSheetBuilder from \"../v-style-nodes/style-sheet-builder\";\nimport Ref from \"../reactivity/ref\";\nimport RefCollection from \"../reactivity/ref-collection\";\nimport { IS_DEV } from \"../constants\";\nimport { registerInstance, unregisterInstance } from \"../hmr-registry\";\n\nexport class HandledError extends Error {\n\tconstructor() {\n\t\tsuper(\"Error handled by error boundary.\");\n\t\tObject.setPrototypeOf(this, HandledError.prototype);\n\t}\n}\n\nlet tagId = 0x10000;\n\nfunction getStableTagName(hmrId: string): string {\n\t// Sanitize hmrId to be a valid custom element name\n\t// Custom element names must contain a hyphen and consist of lowercase letters, digits, and some symbols.\n\t// We'll replace non-alphanumeric characters with hyphens and ensure it starts with 'dothtml-'\n\tconst sanitized = hmrId\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9]/g, '-')\n\t\t.replace(/-+/g, '-')\n\t\t.replace(/^-|-$/g, '');\n\treturn `dothtml-${sanitized}`;\n}\n\n// dot[\"_addTimestamp\"] = true; // Turn off for testing.\n\nexport class ComponentVdom extends Vdom{\n\n\tcomponent: IDotComponent;\n\tshadowEl: HTMLElement;\n\tchildShadowVdom: ContainerVdom;\n\tprivate events: Array<{name: string, callback: (e: any)=>void, modifiers: string[]}> = [];\n\tprivate styleVNodes: Array<StyleVNode> = [];\n\tprivate isQueued = false;\n\tprivate isBuilding = false;\n\tprivate computedSignals: Computed<any>[] = [];\n\tprivate buildComputedSignals: Computed<any>[] = [];\n\tprivate effects: any[] = [];\n\tprivate disposables: Array<() => void> = [];\n\tprivate ref: Ref<any> | ((comp: IDotComponent | null) => void);\n\tprivate slots: Record<string, ContainerVdom> = {};\n\tprivate parentComponent: ComponentVdom | null = null;\n\tprivate lastError: any = null;\n\tprivate updateSubscription = {\n\t\tactive: true,\n\t\tupdate: () => {\n\t\t\tthis.isQueued = false;\n\t\t\tthis.rebuild();\n\t\t}\n\t};\n\n\tconstructor(dot: IDotCore, component: IDotComponent){\n\t\tsuper(dot);\n\t\tthis.component = component;\n\t\tthis.childShadowVdom = new ContainerVdom(dot);\n\t\tthis.parentComponent = getCurrentComponent();\n\n\t\tif(component._?._meta){\n\t\t\tthrow new Error(\"Component has already been added to the VDOM.\");\n\t\t}\n\n\t\tif(!component.constructor[\"_dotHtmlComponent\"]){\n\t\t\tcomponent.constructor[\"_dotHtmlComponent\"] = {};\n\t\t\t// set up the global component properties (if they haven't been set yet).\n\t\t\tconst hmrId = (component.constructor as any).__hmrId;\n\t\t\tif (IS_DEV && hmrId) {\n\t\t\t\tcomponent.constructor[\"_dotHtmlComponent\"].tagName = getStableTagName(hmrId);\n\t\t\t} else {\n\t\t\t\tlet ts = (Math.floor(performance.now()*10000000000000)).toString(16);\n\t\t\t\tlet tId = (tagId++).toString(16);\n\t\t\t\tcomponent.constructor[\"_dotHtmlComponent\"].tagName = `dothtml-${tId}${dot[\"_addTimestamp\"] ? `-${ts}` : \"\"}`;\n\t\t\t}\n\t\t}\n\n\t\tif(!component._){\n\t\t\t(component._ as any) = {};\n\t\t}\n\t\t(component._ as any).cvdom = this;\n\t\t(component._.refs as any) = {};\n\t\t// (component._.props as any) = args[0] || {}; // TODO\n\t\t// (component._.restyle as any) = ()=>{restyle(this)}; // TODO (not sure if this is needed - we don't have a separate builder (for now)).\n\t\t(component._._meta as any) = component._._meta || {};\n\t\t// (component._._meta.args as any) = args; // TODO: can't get this anymore. Consider trying to obtain mount args.\n\t\t(component._._meta.isRendered as any) = false;\n\t\t(component._._meta.tagName as any) = component.constructor[\"_dotHtmlComponent\"].tagName;\n\t\t// (component._._meta.styles as any) = styles;\n\n\t\t(component as any).emit = (name: string, detail?: any) => {\n\t\t\tif (this.shadowEl) {\n\t\t\t\tthis.shadowEl.dispatchEvent(new CustomEvent(name.toLowerCase(), {\n\t\t\t\t\tdetail,\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true\n\t\t\t\t}));\n\t\t\t}\n\t\t};\n\n\t\tif ((component as any)._trackedComputeds) {\n\t\t\tfor (const w of (component as any)._trackedComputeds) {\n\t\t\t\tthis.registerComputed(w);\n\t\t\t}\n\t\t\tdelete (component as any)._trackedComputeds;\n\t\t}\n\n\t\tif ((component as any)._trackedEffects) {\n\t\t\tfor (const e of (component as any)._trackedEffects) {\n\t\t\t\tthis.registerEffect(e);\n\t\t\t}\n\t\t\tdelete (component as any)._trackedEffects;\n\t\t}\n\n\t\tif ((component as any)._trackedDisposables) {\n\t\t\tfor (const d of (component as any)._trackedDisposables) {\n\t\t\t\tthis.registerDisposable(d);\n\t\t\t}\n\t\t\tdelete (component as any)._trackedDisposables;\n\t\t}\n\n\t\tif (IS_DEV) {\n\t\t\tconst hmrId = (component.constructor as any).__hmrId;\n\t\t\tif (hmrId) {\n\t\t\t\tregisterInstance(hmrId, this);\n\t\t\t}\n\t\t}\n\t}\n\n\tregisterComputed(signal: Computed<any>) {\n\t\tif (this.isBuilding) {\n\t\t\tthis.buildComputedSignals.push(signal);\n\t\t} else {\n\t\t\tthis.computedSignals.push(signal);\n\t\t}\n\t}\n\n\tregisterEffect(effect: any) {\n\t\tthis.effects.push(effect);\n\t}\n\n\tregisterDisposable(disposable: () => void) {\n\t\tthis.disposables.push(disposable);\n\t}\n\n\tsetRef(ref: Ref<any> | ((comp: IDotComponent | null) => void)) {\n\t\tthis.ref = ref;\n\t}\n\n\tinit() {\n\t\ttry {\n\t\t\tthis.validateProps();\n\n\t\t\t// TODO: Do I really need to call build more than once? Why can't I just copy the VDOM?\n\t\t\t// TODO: I believe this is incorrect. Shouldn't the vdom be built inside the render function?\n\t\t\tpushComponent(this);\n\t\t\tthis.isBuilding = true;\n\t\t\ttry {\n\t\t\t\tthis.childShadowVdom = this.component.build(this._dot) as unknown as ContainerVdom;\n\t\t\t} finally {\n\t\t\t\tthis.isBuilding = false;\n\t\t\t\tpopComponent();\n\t\t\t}\n\t\t\t\n\t\t\tthis.component.built && this.component.built();\n\n\t\t\tthis.subscribeToProps();\n\t\t} catch (err) {\n\t\t\tif (err instanceof HandledError) return;\n\t\t\tthis.handleError(err);\n\t\t}\n\t}\n\n\tprivate handleError(err: any) {\n\t\tthis.lastError = err;\n\t\tif (IS_DEV && !this.component.errorCaught) {\n\t\t\tif (this.shadowEl) {\n\t\t\t\tthis.renderErrorBox(err);\n\t\t\t}\n\t\t\tthrow new HandledError();\n\t\t}\n\n\t\tif (this.component.errorCaught) {\n\t\t\ttry {\n\t\t\t\tconst fallback = this.component.errorCaught(err);\n\t\t\t\tif (fallback) {\n\t\t\t\t\tthis.childShadowVdom = new ContainerVdom(this._dot);\n\t\t\t\t\tapplyContent(this._dot, this.childShadowVdom as any, fallback);\n\n\t\t\t\t\tif (this.shadowEl) {\n\t\t\t\t\t\tconst shadow = (this.component._._meta as any).shadowRoot;\n\t\t\t\t\t\tif (shadow) {\n\t\t\t\t\t\t\tshadow.innerHTML = \"\"; // Clear existing content\n\t\t\t\t\t\t\tpushComponent(this);\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tthis.childShadowVdom._render(shadow);\n\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\tpopComponent();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthrow new HandledError();\n\t\t\t\t}\n\t\t\t} catch (secondErr) {\n\t\t\t\tif (secondErr instanceof HandledError) throw secondErr;\n\t\t\t\terr = secondErr; // Error in error boundary itself\n\t\t\t}\n\t\t}\n\n\t\tif (this.parentComponent && (this.parentComponent as any).handleError) {\n\t\t\t(this.parentComponent as any).handleError(err);\n\t\t} else if ((this._dot as any).onError) {\n\t\t\t(this._dot as any).onError(err);\n\t\t\tthrow new HandledError();\n\t\t} else {\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tprivate subscribeToProps() {\n\t\tconst props = (this.component as any).props;\n\t\tif (!props) return;\n\t\tfor (const key in props) {\n\t\t\tconst prop = props[key];\n\t\t\tif (prop instanceof Signal || prop instanceof Binding) {\n\t\t\t\tprop.subscribe(() => this.requestUpdate());\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate requestUpdate() {\n\t\tif (!this.isQueued) {\n\t\t\tthis.isQueued = true;\n\t\t\tscheduler.enqueue(this.updateSubscription as any, Priority.Normal);\n\t\t}\n\t}\n\n\tpublic rebuild() {\n\t\tif (!this.shadowEl) return;\n\n\t\ttry {\n\t\t\t// Unrender old children\n\t\t\tthis.childShadowVdom._unrender();\n\n\t\t\t// Dispose of build-time computed signals\n\t\t\tfor (const signal of this.buildComputedSignals) {\n\t\t\t\tsignal.dispose();\n\t\t\t}\n\t\t\tthis.buildComputedSignals = [];\n\n\t\t\tthis.validateProps();\n\n\t\t\t// Re-build\n\t\t\tpushComponent(this);\n\t\t\tthis.isBuilding = true;\n\t\t\ttry {\n\t\t\t\tthis.childShadowVdom = this.component.build(this._dot) as unknown as ContainerVdom;\n\t\t\t} finally {\n\t\t\t\tthis.isBuilding = false;\n\t\t\t\tpopComponent();\n\t\t\t}\n\n\t\t\t// Render new children into the existing shadow root\n\t\t\tconst shadow = (this.component._._meta as any).shadowRoot;\n\t\t\tif (shadow && this.lastError) {\n\t\t\t\tshadow.innerHTML = \"\";\n\t\t\t}\n\t\t\tpushComponent(this);\n\t\t\ttry {\n\t\t\t\tthis.childShadowVdom._render(shadow);\n\t\t\t} finally {\n\t\t\t\tpopComponent();\n\t\t\t}\n\n\t\t\tthis.lastError = null;\n\t\t\tthis.component.built && this.component.built();\n\t\t} catch (err) {\n\t\t\tif (err instanceof HandledError) return;\n\t\t\tthis.handleError(err);\n\t\t}\n\t}\n\n\tprivate renderErrorBox(err: any) {\n\t\tif (!this.shadowEl) return;\n\t\tconst shadow = (this.component._._meta as any).shadowRoot;\n\t\tif (!shadow) return;\n\n\t\tshadow.innerHTML = \"\"; // Clear existing content\n\t\t\n\t\tconst errorBox = document.createElement(\"div\");\n\t\terrorBox.setAttribute(\"style\", `\n\t\t\tbackground-color: rgba(255, 0, 0, 0.9);\n\t\t\tcolor: white;\n\t\t\tpadding: 20px;\n\t\t\tmargin: 10px;\n\t\t\tborder-radius: 8px;\n\t\t\tfont-family: monospace;\n\t\t\twhite-space: pre-wrap;\n\t\t\tbox-shadow: 0 4px 15px rgba(0,0,0,0.5);\n\t\t\tz-index: 10000;\n\t\t\tposition: relative;\n\t\t\toverflow: auto;\n\t\t\tmax-height: 90vh;\n\t\t`);\n\n\t\tconst title = document.createElement(\"h2\");\n\t\ttitle.textContent = \"DOThtml HMR Error\";\n\t\ttitle.style.marginTop = \"0\";\n\t\terrorBox.appendChild(title);\n\n\t\tconst message = document.createElement(\"div\");\n\t\tmessage.style.fontWeight = \"bold\";\n\t\tmessage.style.fontSize = \"1.2em\";\n\t\tmessage.style.marginBottom = \"10px\";\n\t\tmessage.textContent = err.message || err;\n\t\terrorBox.appendChild(message);\n\n\t\tif (err.stack) {\n\t\t\tconst stack = document.createElement(\"pre\");\n\t\t\tstack.style.fontSize = \"0.9em\";\n\t\t\tstack.style.opacity = \"0.8\";\n\t\t\tstack.textContent = err.stack;\n\t\t\terrorBox.appendChild(stack);\n\t\t}\n\n\t\tshadow.appendChild(errorBox);\n\t}\n\n\tprivate validateProps() {\n\t\tconst schema = (this.component.constructor as any).props;\n\t\tif (!schema) return;\n\n\t\tconst props = (this.component as any).props || {};\n\t\tconst componentName = this.component.constructor.name;\n\n\t\tfor (const key in schema) {\n\t\t\tconst rule = schema[key];\n\t\t\tlet value = props[key];\n\n\t\t\t// Apply default\n\t\t\tif (value === undefined && rule.default !== undefined) {\n\t\t\t\tif (typeof rule.default === \"function\" && (rule.type === Object || rule.type === Array)) {\n\t\t\t\t\tvalue = rule.default();\n\t\t\t\t} else {\n\t\t\t\t\tvalue = rule.default;\n\t\t\t\t}\n\t\t\t\tprops[key] = value;\n\t\t\t}\n\n\t\t\t// Check required\n\t\t\tif (rule.required && value === undefined) {\n\t\t\t\tthrow new Error(`[${componentName}] Prop \"${key}\" is required.`);\n\t\t\t}\n\n\t\t\t// Extract value for validation if it's a Signal or Binding\n\t\t\tlet valueToValidate = value;\n\t\t\tif (value instanceof Signal || value instanceof Binding) {\n\t\t\t\tvalueToValidate = value.value;\n\t\t\t}\n\n\t\t\t// Check type\n\t\t\tif (valueToValidate !== undefined && valueToValidate !== null && rule.type) {\n\t\t\t\tconst actualType = typeof valueToValidate;\n\t\t\t\tif (rule.type === String && actualType !== \"string\") {\n\t\t\t\t\tthrow new Error(`[${componentName}] Prop \"${key}\" expected string, but got ${actualType}.`);\n\t\t\t\t} else if (rule.type === Number && actualType !== \"number\") {\n\t\t\t\t\tthrow new Error(`[${componentName}] Prop \"${key}\" expected number, but got ${actualType}.`);\n\t\t\t\t} else if (rule.type === Boolean && actualType !== \"boolean\") {\n\t\t\t\t\tthrow new Error(`[${componentName}] Prop \"${key}\" expected boolean, but got ${actualType}.`);\n\t\t\t\t} else if (rule.type === Function && actualType !== \"function\") {\n\t\t\t\t\tthrow new Error(`[${componentName}] Prop \"${key}\" expected function, but got ${actualType}.`);\n\t\t\t\t} else if (rule.type === Array && !Array.isArray(valueToValidate)) {\n\t\t\t\t\tthrow new Error(`[${componentName}] Prop \"${key}\" expected array, but got ${actualType}.`);\n\t\t\t\t} else if (rule.type === Object && (actualType !== \"object\" || Array.isArray(valueToValidate))) {\n\t\t\t\t\tthrow new Error(`[${componentName}] Prop \"${key}\" expected object, but got ${Array.isArray(valueToValidate) ? \"array\" : actualType}.`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Custom validator\n\t\t\tif (valueToValidate !== undefined && typeof rule.validator === \"function\") {\n\t\t\t\tif (!rule.validator(valueToValidate)) {\n\t\t\t\t\tthrow new Error(`[${componentName}] Prop \"${key}\" failed custom validation.`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t(this.component as any).props = props;\n\t}\n\n\t// Sets up the custom element for the component.\n\tprivate setupCustomElement(document: Document){\n\t\tlet CustomElementConstructor = document.defaultView.customElements.get(this.component._._meta.tagName);\n\t\tif(CustomElementConstructor == undefined){\n\t\t\t\n\t\t\tlet DocSpecificHtmlEl = document.defaultView.HTMLElement;\n\t\t\tconst cvdom = this;\n\t\t\t\n\t\t\tCustomElementConstructor = class extends DocSpecificHtmlEl{\n\t\t\t\tprivate _component: IDotComponent;\n\t\t\t\tget component(){ return this._component; }\n\t\t\t\tset component(value: IDotComponent){\n\t\t\t\t\tthis._component = value;\n\t\t\t\t\tthis._renderComponent();\n\t\t\t\t}\n\n\t\t\t\tcvdom: ComponentVdom;\n\n\t\t\t\t_renderComponent(){\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif(this.cvdom instanceof Vdom){\n\t\t\t\t\t\t\tlet shadow = this.shadowRoot || this.attachShadow({ mode: 'open' });\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Collect styles\n\t\t\t\t\t\t\tlet cachedStyles = (this._component.constructor as any)._cachedStyles;\n\t\t\t\t\t\t\tif (!cachedStyles) {\n\t\t\t\t\t\t\t\tcachedStyles = cvdom.generateStyles(document);\n\t\t\t\t\t\t\t\t(this._component.constructor as any)._cachedStyles = cachedStyles;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tshadow.adoptedStyleSheets = [...cachedStyles.allSharedStylesheets];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Clear old style tags if any (except dynamic one)\n\t\t\t\t\t\t\tconst oldTags = shadow.querySelectorAll(\"style:not(#--dh-dynamic-style)\");\n\t\t\t\t\t\t\tfor (const t of Array.from(oldTags)) t.remove();\n\n\t\t\t\t\t\t\tfor(let i = 0; i < cachedStyles.allStyleTags.length; i++){\n\t\t\t\t\t\t\t\tshadow.appendChild(cachedStyles.allStyleTags[i].cloneNode(true));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t(this._component._._meta as any).shadowRoot = shadow;\n\n\t\t\t\t\t\t\tif ((this._component.constructor as any)._isDynamicStyle) {\n\t\t\t\t\t\t\t\tconst updateDynamicStyle = () => {\n\t\t\t\t\t\t\t\t\tconst builder = new StyleSheetBuilder();\n\t\t\t\t\t\t\t\t\tif ((this.cvdom._dot as any)._theme) {\n\t\t\t\t\t\t\t\t\t\tbuilder.setTheme((this.cvdom._dot as any)._theme);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst styles = (this._component.stylize as any)(builder);\n\t\t\t\t\t\t\t\t\tconst styleVal = styles instanceof Binding ? styles._get() : (styles instanceof Signal ? styles.value : styles);\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tlet finalStyle = styleVal;\n\t\t\t\t\t\t\t\t\tif (styleVal === builder || (!styleVal && builder.hasRules())) {\n\t\t\t\t\t\t\t\t\t\tfinalStyle = builder.toString();\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// For dynamic styles, we'll use a dedicated style tag in the shadow root.\n\t\t\t\t\t\t\t\t\tlet dynamicStyleTag = shadow.getElementById(\"--dh-dynamic-style\") as HTMLStyleElement;\n\t\t\t\t\t\t\t\t\tif (!dynamicStyleTag) {\n\t\t\t\t\t\t\t\t\t\tdynamicStyleTag = document.createElement(\"style\");\n\t\t\t\t\t\t\t\t\t\tdynamicStyleTag.id = \"--dh-dynamic-style\";\n\t\t\t\t\t\t\t\t\t\tshadow.appendChild(dynamicStyleTag);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdynamicStyleTag.textContent = finalStyle;\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tconst styles = (this._component.stylize as any)(new StyleSheetBuilder());\n\t\t\t\t\t\t\t\tif (styles instanceof Signal || styles instanceof Binding) {\n\t\t\t\t\t\t\t\t\tconst subId = (styles as any).subscribe(updateDynamicStyle);\n\t\t\t\t\t\t\t\t\tthis.cvdom.registerDisposable(() => (styles as any).unsubscribe(subId));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tupdateDynamicStyle();\n\t\t\t\t\t\t\t} else if (this._component.stylize) {\n\t\t\t\t\t\t\t\tconst builder = new StyleSheetBuilder();\n\t\t\t\t\t\t\t\tif ((this.cvdom._dot as any)._theme) {\n\t\t\t\t\t\t\t\t\tbuilder.setTheme((this.cvdom._dot as any)._theme);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t(this._component.stylize as any)(builder);\n\t\t\t\t\t\t\t\tbuilder.toString(); // Trigger ghost variable generation\n\t\t\t\t\t\t\t\tconst ghostVars = builder.getGhostVars();\n\t\t\t\t\t\t\t\tif (ghostVars.length > 0) {\n\t\t\t\t\t\t\t\t\tconst ghostStyleSource: any = {};\n\t\t\t\t\t\t\t\t\tfor (const gv of ghostVars) {\n\t\t\t\t\t\t\t\t\t\tghostStyleSource[gv.name] = gv.value;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst ghostVNode = new StyleVNode(ghostStyleSource);\n\t\t\t\t\t\t\t\t\tghostVNode.render(this); \n\t\t\t\t\t\t\t\t\tthis.cvdom.styleVNodes.push(ghostVNode);\n\t\t\t\t\t\t\t\t\tthis.cvdom.registerDisposable(() => builder.dispose());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (this._component.stylize) {\n\t\t\t\t\t\t\t\tconst builder = new StyleSheetBuilder();\n\t\t\t\t\t\t\t\tif ((this.cvdom._dot as any)._theme) {\n\t\t\t\t\t\t\t\t\tbuilder.setTheme((this.cvdom._dot as any)._theme);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t(this._component.stylize as any)(builder);\n\t\t\t\t\t\t\t\tbuilder.toString(); // Trigger ghost variable generation\n\t\t\t\t\t\t\t\tconst ghostVars = builder.getGhostVars();\n\t\t\t\t\t\t\t\tif (ghostVars.length > 0) {\n\t\t\t\t\t\t\t\t\tconst ghostStyleSource: any = {};\n\t\t\t\t\t\t\t\t\tfor (const gv of ghostVars) {\n\t\t\t\t\t\t\t\t\t\tghostStyleSource[gv.name] = gv.value;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst ghostVNode = new StyleVNode(ghostStyleSource);\n\t\t\t\t\t\t\t\t\tghostVNode.render(this); \n\t\t\t\t\t\t\t\t\tthis.cvdom.styleVNodes.push(ghostVNode);\n\t\t\t\t\t\t\t\t\tthis.cvdom.registerDisposable(() => builder.dispose());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (this.cvdom.childShadowVdom._isRendered) {\n\t\t\t\t\t\t\t\tthis.cvdom.rebuild();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpushComponent(this.cvdom);\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tthis.cvdom.childShadowVdom._render(shadow as any);\n\t\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\t\tpopComponent();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tthrow new Error(\"Component build function returned invalid object.\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tif (err instanceof HandledError) return;\n\t\t\t\t\t\t(this.cvdom as any).handleError(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdocument.defaultView.customElements.define(this.component._._meta.tagName, CustomElementConstructor);\n\t\t}\n\t}\n\n\tprivate generateStyles(document: Document) {\n\t\t// Constructed stylesheets.\n\t\tconst builder = new StyleSheetBuilder();\n\t\tif ((this._dot as any)._theme) {\n\t\t\tbuilder.setTheme((this._dot as any)._theme);\n\t\t}\n\t\tlet styles: any = this.component.stylize && (this.component.stylize as any)(builder) || [];\n\n\t\tif (styles instanceof Signal || styles instanceof Binding) {\n\t\t\t// Dynamic stylesheet. We'll handle this per-instance.\n\t\t\t(this.component.constructor as any)._isDynamicStyle = true;\n\t\t\tstyles = null; \n\t\t}\n\n\t\tif (styles === builder || (!styles && builder.hasRules())) {\n\t\t\tstyles = builder.toString();\n\t\t}\n\n\t\tif(typeof styles == \"string\") styles = [styles];\n\t\t\n\t\tlet sharedStylesheets = [];\n\t\tlet styleTags = [];\n\n\t\tif(styles){\n\t\t\tfor(let i = 0; i < styles.length; i++){\n\t\t\t\tlet styleItem = renderStylesheet(styles[i], document);\n\t\t\t\tif(styleItem instanceof (document.defaultView as any).CSSStyleSheet){\n\t\t\t\t\tsharedStylesheets.push(styleItem);\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tstyleTags.push(styleItem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst ghostVars = builder.getGhostVars();\n\t\tbuilder.dispose();\n\n\t\t// Add global styles.\n\t\tlet allSharedStylesheets = [...sharedStylesheets];\n\t\tlet allStyleTags = [...styleTags];\n\t\tlet globalStyles = (this._dot as any).globalStyles || [];\n\t\tfor (let gs of globalStyles) {\n\t\t\tif (gs instanceof (document.defaultView as any).CSSStyleSheet) {\n\t\t\t\tallSharedStylesheets.push(gs);\n\t\t\t} else if (typeof gs === \"string\") {\n\t\t\t\t// Transform html/body to :host for shadow dom.\n\t\t\t\tconst transformedGs = gs.replace(/\\b(html|body)(?=[\\s,{.#[:]|$)/g, ':host');\n\t\t\t\tlet styleItem = renderStylesheet(transformedGs, document);\n\t\t\t\tif (styleItem instanceof (document.defaultView as any).CSSStyleSheet) {\n\t\t\t\t\tallSharedStylesheets.push(styleItem);\n\t\t\t\t} else {\n\t\t\t\t\tallStyleTags.push(styleItem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { allSharedStylesheets, allStyleTags, ghostVars };\n\t}\n\n\taddSlot(name: string, content: any) {\n\t\tif (typeof content === \"function\") {\n\t\t\tif (!(this.component as any).slots) (this.component as any).slots = {};\n\t\t\t(this.component as any).slots[name] = content;\n\t\t\tif (this.shadowEl) {\n\t\t\t\tthis.requestUpdate();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.slots[name]) {\n\t\t\tthis.slots[name] = new ContainerVdom(this._dot);\n\t\t}\n\t\t\n\t\tapplyContent(this._dot, this.slots[name] as any, content);\n\t\t\n\t\tif (this.shadowEl) {\n\t\t\tthis.slots[name]._render(this.shadowEl);\n\t\t\tthis.applySlotAttribute(name);\n\t\t}\n\t}\n\n\tprivate applySlotAttribute(name: string) {\n\t\tif (name !== \"default\") {\n\t\t\tconst nodes = this.slots[name]._getNodes();\n\t\t\tfor (const node of nodes) {\n\t\t\t\tif (node instanceof HTMLElement) {\n\t\t\t\t\tnode.setAttribute(\"slot\", name);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t_render(node: HTMLElement) {\n\t\ttry {\n\t\t\tif(!this.component._) throw new Error(\"Invalid component. Ensure components are created through the component factory or through decoration.\");\n\t\t\tif((this.component._ as any)?._meta?.isRendered) throw new Error(\"Individual component instances cannot be rendered twice at once.\");\n\t\t\tif(!(this.component._ as any)._meta) (this.component._ as any)._meta = {};\n\t\t\t\n\t\t\tpushComponent(this);\n\t\t\ttry {\n\t\t\t\tthis.component.mounting && this.component.mounting();\n\t\t\t} finally {\n\t\t\t\tpopComponent();\n\t\t\t}\n\t\t\t\n\t\t\t(this.component._._meta as any).isRendered = true;\n\n\t\t\tlet document = node.ownerDocument;\n\n\t\t\t// Needs to be run once per component per document.\n\t\t\tthis.setupCustomElement(document);\n\n\t\t\tthis.shadowEl = document.createElement(this.component._._meta.tagName);\n\t\t\tthis.shadowEl[\"cvdom\"] = this;\n\t\t\tthis.shadowEl.setAttribute(\"cvdom\", \"\");\n\t\t\t\n\t\t\tnode.appendChild(this.shadowEl);\n\n\t\t\tthis.shadowEl[\"component\"] = this.component;\n\n\t\t\tif (IS_DEV && this.lastError) {\n\t\t\t\tthis.renderErrorBox(this.lastError);\n\t\t\t}\n\n\t\t\tfor(let i = 0; i < this.events.length; i++){\n\t\t\t\tlet e = this.events[i];\n\t\t\t\tthis.renderEvent(e.name, e.callback, e.modifiers);\n\t\t\t}\n\n\t\t\tpushComponent(this);\n\t\t\ttry {\n\t\t\t\tthis.component.mounted && this.component.mounted();\n\t\t\t} finally {\n\t\t\t\tpopComponent();\n\t\t\t}\n\n\t\t\tif (this._onEnterHook) {\n\t\t\t\tthis._onEnterHook(this.shadowEl);\n\t\t\t}\n\n\t\t\tif (this.component.onEnter) {\n\t\t\t\tthis.component.onEnter();\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tif (err instanceof HandledError) return;\n\t\t\tthis.handleError(err);\n\t\t}\n\t}\n\n\t_unrender() {\n\t\tpushComponent(this);\n\t\ttry {\n\t\t\tthis.component.unmounting && this.component.unmounting();\n\t\t} finally {\n\t\t\tpopComponent();\n\t\t}\n\n\t\tthis.childShadowVdom._unrender();\n\n\t\tfor (const name in this.slots) {\n\t\t\tthis.slots[name]._unrender();\n\t\t}\n\n\t\tif (this.shadowEl) {\n\t\t\tconst eventManager = EventManager.getForDocument(this.shadowEl.ownerDocument);\n\t\t\tfor(let i = 0; i < this.events.length; i++){\n\t\t\t\tlet e = this.events[i];\n\t\t\t\teventManager.removeListener(this.shadowEl, e.name.toLowerCase(), e.callback);\n\t\t\t}\n\n\t\t\tthis.shadowEl.remove();\n\t\t\tthis.shadowEl = null;\n\t\t}\n\n\t\tfor (let i = 0; i < this.styleVNodes.length; i++) {\n\t\t\tthis.styleVNodes[i].unrender();\n\t\t}\n\t\tthis.styleVNodes = [];\n\n\t\tfor (const signal of this.computedSignals) {\n\t\t\tsignal.dispose();\n\t\t}\n\t\tthis.computedSignals = [];\n\n\t\tfor (const signal of this.buildComputedSignals) {\n\t\t\tsignal.dispose();\n\t\t}\n\t\tthis.buildComputedSignals = [];\n\n\t\tfor (const effect of this.effects) {\n\t\t\teffect.dispose();\n\t\t}\n\t\tthis.effects = [];\n\n\t\tfor (const disposable of this.disposables) {\n\t\t\tdisposable();\n\t\t}\n\t\tthis.disposables = [];\n\n\t\tdelete (this.component._ as any)._meta;\n\t\t\n\t\tpushComponent(this);\n\t\ttry {\n\t\t\tthis.component.unmounted && this.component.unmounted();\n\t\t} finally {\n\t\t\tpopComponent();\n\t\t}\n\n\t\tif(this.ref){\n\t\t\tif (typeof this.ref === \"function\") {\n\t\t\t\tthis.ref(null);\n\t\t\t} else {\n\t\t\t\tthis.ref.value = null;\n\t\t\t}\n\t\t}\n\n\t\tif (IS_DEV) {\n\t\t\tconst hmrId = (this.component.constructor as any).__hmrId;\n\t\t\tif (hmrId) {\n\t\t\t\tunregisterInstance(hmrId, this);\n\t\t\t}\n\t\t}\n\t}\n\n\t_hmrSwap(NewClass: any) {\n\t\tconst oldComponent = this.component;\n\t\tconst props = (oldComponent as any).props;\n\t\tconst refs = (oldComponent as any).refs;\n\n\t\t// 1. Lifecycle: unmounting\n\t\tpushComponent(this);\n\t\ttry {\n\t\t\toldComponent.unmounting && oldComponent.unmounting();\n\t\t} finally {\n\t\t\tpopComponent();\n\t\t}\n\n\t\t// 2. Cleanup\n\t\tfor (const signal of this.computedSignals) {\n\t\t\tsignal.dispose();\n\t\t}\n\t\tthis.computedSignals = [];\n\n\t\tfor (const effect of this.effects) {\n\t\t\teffect.dispose();\n\t\t}\n\t\tthis.effects = [];\n\n\t\tfor (const disposable of this.disposables) {\n\t\t\tdisposable();\n\t\t}\n\t\tthis.disposables = [];\n\n\t\t// Create new instance\n\t\t// Note: we don't use dot.create here because we want to manually manage the transition\n\t\tconst newComponent = new NewClass();\n\t\t\n\t\t// Transfer state\n\t\t(newComponent as any).props = props;\n\t\t(newComponent as any).refs = refs;\n\t\t\n\t\t// Phase 3: Preserve internal state (Signals and RefCollections not in props)\n\t\tfor (const key in oldComponent) {\n\t\t\tif (key === \"props\" || key === \"refs\" || key === \"_\") continue;\n\t\t\tconst oldVal = (oldComponent as any)[key];\n\t\t\tconst newVal = (newComponent as any)[key];\n\t\t\t\n\t\t\tif (oldVal instanceof Signal && newVal instanceof Signal) {\n\t\t\t\tif (newVal.isWritable) {\n\t\t\t\t\tnewVal.value = oldVal.value;\n\t\t\t\t}\n\t\t\t} else if (oldVal instanceof RefCollection && newVal instanceof RefCollection) {\n\t\t\t\t(newComponent as any)[key] = oldVal;\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Transfer framework internal state\n\t\tnewComponent._ = oldComponent._;\n\t\t(newComponent._ as any).cvdom = this;\n\n\t\tthis.component = newComponent;\n\n\t\t// 3. Register new tracked items\n\t\tif ((newComponent as any)._trackedComputeds) {\n\t\t\tfor (const w of (newComponent as any)._trackedComputeds) {\n\t\t\t\tthis.registerComputed(w);\n\t\t\t}\n\t\t\tdelete (newComponent as any)._trackedComputeds;\n\t\t}\n\n\t\tif ((newComponent as any)._trackedEffects) {\n\t\t\tfor (const e of (newComponent as any)._trackedEffects) {\n\t\t\t\tthis.registerEffect(e);\n\t\t\t}\n\t\t\tdelete (newComponent as any)._trackedEffects;\n\t\t}\n\n\t\tif ((newComponent as any)._trackedDisposables) {\n\t\t\tfor (const d of (newComponent as any)._trackedDisposables) {\n\t\t\t\tthis.registerDisposable(d);\n\t\t\t}\n\t\t\tdelete (newComponent as any)._trackedDisposables;\n\t\t}\n\t\t\n\t\t// Invalidate style cache on the new constructor if it exists\n\t\tif ((NewClass as any)._cachedStyles) {\n\t\t\tdelete (NewClass as any)._cachedStyles;\n\t\t}\n\n\t\tif (this.shadowEl) {\n\t\t\t(this.shadowEl as any).component = newComponent;\n\n\t\t\t// 4. Lifecycle: mounted\n\t\t\tpushComponent(this);\n\t\t\ttry {\n\t\t\t\tthis.component.mounted && this.component.mounted();\n\t\t\t} finally {\n\t\t\t\tpopComponent();\n\t\t\t}\n\t\t} else {\n\t\t\tthis.rebuild();\n\t\t}\n\t}\n\n\t_getNodes(): Node[] {\n\t\treturn this.shadowEl ? [this.shadowEl] : [];\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this;\n\t}\n\n\tasync _unrenderAsync() {\n\t\tif (this._onLeaveHook && this.shadowEl) {\n\t\t\tawait this._onLeaveHook(this.shadowEl);\n\t\t}\n\t\tif (this.component.onLeave) {\n\t\t\tawait this.component.onLeave();\n\t\t}\n\t\tthis._unrender();\n\t}\n\n\t_moveTo(target: HTMLElement){\n\t\tconst oldDoc = this.shadowEl?.ownerDocument;\n\t\tconst newDoc = target.ownerDocument;\n\t\t\n\t\tif(oldDoc && newDoc && oldDoc !== newDoc){\n\t\t\t// Re-setup custom element in the new document\n\t\t\tthis.setupCustomElement(newDoc);\n\t\t}\n\t\t\n\t\tsuper._moveTo(target);\n\t}\n\n\taddEventListener(event: string, callback: (e: any)=>void, modifiers: string[] = []){\n\t\tthis.events.push({name: event, callback: callback, modifiers: modifiers});\n\t\tif(this.shadowEl) this.renderEvent(event, callback, modifiers);\n\t}\n\n\tprivate renderEvent(e: string, callback: (e: any)=>void, modifiers: string[] = []){\n\t\tEventManager.getForDocument(this.shadowEl.ownerDocument).addListener(this.shadowEl, e.toLowerCase(), callback, modifiers);\n\t}\n\n\ton(event: string, callback: (e: any)=>void){\n\t\tthis.addEventListener(event, callback);\n\t\treturn this;\n\t}\n\n\ttoString(){\n\t\t// TODO: would be nice to have something more sophisitacetd. \n\t\t// It doesn't even handle slots.\n\t\treturn `<${this.component._._meta.tagName}></${this.component._._meta.tagName}>`;\n\t}\n}\n","import { removeNodesBetween } from \"../helpers/tools\";\nimport Binding from \"../reactivity/binding\";\nimport { ContainerVdom } from \"./container-vdom\";\nimport { TextVdom } from \"./text-vdom\";\nimport { Vdom } from \"./vdom\";\nimport { IDotCore } from \"dothtml-interfaces\";\nimport { ComponentVdom } from \"./component-vdom\";\n\nexport class ReactiveVdom extends Vdom {\n\tprivate binding: Binding;\n\tprivate beforeNode: Node = null;\n\tprivate afterNode: Node = null;\n\tprivate currentVdom: Vdom = null;\n\tprivate observerId: number = 0;\n\t_isReactiveVdom = true;\n\n\tconstructor(dot: IDotCore, binding: Binding) {\n\t\tsuper(dot);\n\t\tthis.binding = binding;\n\t}\n\n\tprivate _toVdom(value: any): Vdom {\n\t\tif (value === null || value === undefined) {\n\t\t\treturn new TextVdom(\"\");\n\t\t}\n\t\tif (value instanceof Vdom) {\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof value === \"object\" && value.build) {\n\t\t\tconst cv = new ComponentVdom(this._dot, value);\n\t\t\tcv.init();\n\t\t\treturn cv;\n\t\t}\n\t\tif (Array.isArray(value)) {\n\t\t\tconst container = new ContainerVdom(this._dot);\n\t\t\tfor (const item of value) {\n\t\t\t\tcontainer._addChild(this._toVdom(item));\n\t\t\t}\n\t\t\treturn container;\n\t\t}\n\t\treturn new TextVdom(value);\n\t}\n\n\t_render(target: HTMLElement) {\n\t\tthis._isRendered = true;\n\t\tthis.beforeNode = target.ownerDocument.createTextNode(\"\");\n\t\tthis.afterNode = target.ownerDocument.createTextNode(\"\");\n\t\ttarget.appendChild(this.beforeNode);\n\t\ttarget.appendChild(this.afterNode);\n\n\t\tconst value = this.binding._get();\n\t\tthis.update(value);\n\n\t\tthis.observerId = this.binding._subscribe(this);\n\t}\n\n\tupdate(value: any) {\n\t\tif (!this._isRendered) return;\n\n\t\tif (this.currentVdom) {\n\t\t\tthis.currentVdom._unrender();\n\t\t}\n\n\t\tremoveNodesBetween(this.beforeNode, this.afterNode);\n\n\t\tthis.currentVdom = this._toVdom(value);\n\t\tthis.currentVdom._renderBefore(this.afterNode);\n\t}\n\n\t_unrender() {\n\t\tif (!this._isRendered) return;\n\t\tthis._isRendered = false;\n\n\t\tif (this.currentVdom) {\n\t\t\tthis.currentVdom._unrender();\n\t\t\tthis.currentVdom = null;\n\t\t}\n\n\t\tif (this.observerId) {\n\t\t\tthis.binding._unsubscribe(this.observerId);\n\t\t\tthis.observerId = 0;\n\t\t}\n\n\t\tremoveNodesBetween(this.beforeNode, this.afterNode);\n\t\tif (this.beforeNode.parentElement) this.beforeNode.parentElement.removeChild(this.beforeNode);\n\t\tif (this.afterNode.parentElement) this.afterNode.parentElement.removeChild(this.afterNode);\n\t\tthis.beforeNode = null;\n\t\tthis.afterNode = null;\n\t}\n\n\t_getNodes(): Node[] {\n\t\tif (!this._isRendered) return [];\n\t\tconst nodes = [this.beforeNode];\n\t\tif (this.currentVdom) {\n\t\t\tnodes.push(...this.currentVdom._getNodes());\n\t\t}\n\t\tnodes.push(this.afterNode);\n\t\treturn nodes;\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this;\n\t}\n\n\ttoString() {\n\t\treturn this.currentVdom ? this.currentVdom.toString() : \"\";\n\t}\n}\n","import Signal, { dependencyStack } from \"./signal\";\nimport { scheduler } from \"./scheduler\";\nimport { Priority } from \"./priority\";\n\nexport type EffectCallback = () => (void | (() => void));\n\nexport default class Effect {\n\tprivate callback: EffectCallback;\n\tprivate cleanup?: () => void;\n\tprivate dependencies = new Map<Signal, number>();\n\tprivate isQueued = false;\n\tprivate isEvaluating = false;\n\tprivate active = true;\n\tprivate dirty = true;\n\tprivate newDependencies = new Set<Signal>();\n\n\tprivate updateSubscription = {\n\t\tactive: true,\n\t\tupdate: () => {\n\t\t\tthis.isQueued = false;\n\t\t\tif (this.dirty) {\n\t\t\t\tthis.run();\n\t\t\t}\n\t\t}\n\t};\n\n\tconstructor(callback: EffectCallback) {\n\t\tthis.callback = callback;\n\t\tthis.run();\n\t}\n\n\taddDependency(signal: Signal) {\n\t\tif (!this.active) return;\n\t\tif (!this.newDependencies.has(signal)) {\n\t\t\tthis.newDependencies.add(signal);\n\t\t}\n\t}\n\n\tprivate requestUpdate() {\n\t\tif (!this.active) return;\n\t\tthis.dirty = true;\n\t\tif (!this.isQueued) {\n\t\t\tthis.isQueued = true;\n\t\t\tscheduler.enqueue(this.updateSubscription as any, Priority.Normal);\n\t\t}\n\t}\n\n\trun() {\n\t\tif (!this.active) return;\n\t\tif (this.isEvaluating) {\n\t\t\tthrow new Error(\"Circular dependency detected in effect.\");\n\t\t}\n\n\t\t// Run cleanup from previous execution\n\t\tif (this.cleanup) {\n\t\t\ttry {\n\t\t\t\tthis.cleanup();\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(\"Error during effect cleanup:\", e);\n\t\t\t}\n\t\t\tthis.cleanup = undefined;\n\t\t}\n\n\t\tthis.isEvaluating = true;\n\t\tthis.dirty = false;\n\t\tthis.newDependencies.clear();\n\t\tdependencyStack.push(this);\n\n\t\ttry {\n\t\t\tconst result = this.callback();\n\t\t\tif (typeof result === \"function\") {\n\t\t\t\tthis.cleanup = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(\"Error during effect execution:\", e);\n\t\t} finally {\n\t\t\tdependencyStack.pop();\n\t\t\tthis.isEvaluating = false;\n\t\t}\n\n\t\t// Update dependencies\n\t\tconst toRemove: Signal[] = [];\n\t\tfor (const [signal, subId] of this.dependencies) {\n\t\t\tif (!this.newDependencies.has(signal)) {\n\t\t\t\tsignal.unsubscribe(subId);\n\t\t\t\ttoRemove.push(signal);\n\t\t\t}\n\t\t}\n\t\tfor (const signal of toRemove) {\n\t\t\tthis.dependencies.delete(signal);\n\t\t}\n\n\t\tfor (const signal of this.newDependencies) {\n\t\t\tif (!this.dependencies.has(signal)) {\n\t\t\t\tconst subId = signal.subscribe(() => this.requestUpdate(), true);\n\t\t\t\tthis.dependencies.set(signal, subId);\n\t\t\t}\n\t\t}\n\t}\n\n\tdispose() {\n\t\tif (!this.active) return;\n\t\tthis.active = false;\n\t\tif (this.cleanup) {\n\t\t\ttry {\n\t\t\t\tthis.cleanup();\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(\"Error during effect disposal cleanup:\", e);\n\t\t\t}\n\t\t\tthis.cleanup = undefined;\n\t\t}\n\t\tfor (const [signal, subId] of this.dependencies) {\n\t\t\tsignal.unsubscribe(subId);\n\t\t}\n\t\tthis.dependencies.clear();\n\t}\n}\n","import { IDotComponent } from \"dothtml-interfaces\";\nimport { pushComponent, popComponent } from \"../vdom-nodes/component-context\";\n\nexport function component<T extends { new(...args: any[]): IDotComponent }>(Ctor: T): T {\n\tconst decorated = class extends (Ctor as any) {\n\t\tconstructor(...args: any[]) {\n\t\t\tconst tracker = {\n\t\t\t\tcomputedSignals: [],\n\t\t\t\teffects: [],\n\t\t\t\tdisposables: [],\n\t\t\t\tregisterComputed(w: any) { this.computedSignals.push(w); },\n\t\t\t\tregisterEffect(e: any) { this.effects.push(e); },\n\t\t\t\tregisterDisposable(d: any) { this.disposables.push(d); }\n\t\t\t};\n\t\t\tpushComponent(tracker as any);\n\t\t\ttry {\n\t\t\t\tsuper(...args);\n\t\t\t} finally {\n\t\t\t\tpopComponent();\n\t\t\t}\n\n\t\t\t// Support passing props via constructor: new MyComponent({ prop1: 'val' })\n\t\t\tif (args[0] && typeof args[0] === \"object\" && !args[0].build && (Ctor as any).props) {\n\t\t\t\tif (!this.props) this.props = {};\n\t\t\t\tObject.assign(this.props, args[0]);\n\t\t\t}\n\n\t\t\t// Store the tracked items on the instance so ComponentVdom can pick them up\n\t\t\t(this as any)._trackedComputeds = tracker.computedSignals;\n\t\t\t(this as any)._trackedEffects = tracker.effects;\n\t\t\t(this as any)._trackedDisposables = tracker.disposables;\n\t\t}\n\t};\n\n\t// Preserve the original class name for better debugging and error messages\n\tObject.defineProperty(decorated, 'name', { value: Ctor.name });\n\t\n\t// Copy static properties (like props schema)\n\tfor (const key of Object.getOwnPropertyNames(Ctor)) {\n\t\tif (key !== \"prototype\" && key !== \"name\" && key !== \"length\") {\n\t\t\t(decorated as any)[key] = (Ctor as any)[key];\n\t\t}\n\t}\n\n\treturn decorated as any;\n}\n","import { IDotComponent, IDotCore, IDotDocument, IDotWindowWrapper } from \"dothtml-interfaces\";\nimport { ContainerVdom } from \"./vdom-nodes/container-vdom\";\nimport dot from \"./dot\";\nimport { DOT_VDOM_PROP_NAME } from \"./constants\";\n\nlet documentId = 1;\n\nexport default class WindowWrapper implements IDotWindowWrapper{\n\twindow: Window;\n\tdocument: Document;\n\ttitle: string;\n\troot: IDotComponent;\n\t_vdom: ContainerVdom;\n\twidth: number; \n\theight: number;\n\tisOpen = false;\n\ttether = false;\n\tsyncStyles = false;\n\tposition: \"center\" | \"parent-center\" | \"beside-parent\" | {left: number, top: number} | null = null;\n\n\tprivate static tetheredWindows = new Set<WindowWrapper>();\n\tprivate eventListeners: Array<{name: string, callback: (e: any) => void}> = [];\n\tprivate wrapperEventListeners: Array<{name: string, callback: (e: any) => void}> = [];\n\n\tconstructor(options: {content: IDotComponent, width?: number, height?: number, title?: string, tether?: boolean, syncStyles?: boolean, position?: \"center\" | \"parent-center\" | \"beside-parent\" | {left: number, top: number}}){\n\t\tthis.root = options.content;\n\t\tthis.width = options.width || options.height || 600;\n\t\tthis.height = options.height || options.width || 400;\n\t\tthis.title = options.title || \"Window\";\n\t\tthis.tether = options.tether || false;\n\t\tthis.syncStyles = options.syncStyles || false;\n\t\tthis.position = options.position || null;\n\t}\n\n\tasync open(): Promise<void>{\n\t\tif(this.isOpen){\n\t\t\tconsole.warn(\"Window is already open.\");\n\t\t\treturn;\n\t\t}\n\n\t\tlet left = 0;\n\t\tlet top = 0;\n\t\tlet features = `width=${this.width},height=${this.height}`;\n\n\t\tif(this.position){\n\t\t\tif(typeof this.position === \"object\"){\n\t\t\t\tleft = this.position.left;\n\t\t\t\ttop = this.position.top;\n\t\t\t}\n\t\t\telse if(this.position === \"center\"){\n\t\t\t\tleft = (window.screen.width - this.width) / 2;\n\t\t\t\ttop = (window.screen.height - this.height) / 2;\n\t\t\t}\n\t\t\telse if(this.position === \"parent-center\"){\n\t\t\t\tleft = window.screenX + (window.outerWidth - this.width) / 2;\n\t\t\t\ttop = window.screenY + (window.outerHeight - this.height) / 2;\n\t\t\t}\n\t\t\telse if(this.position === \"beside-parent\"){\n\t\t\t\tleft = window.screenX + window.outerWidth;\n\t\t\t\ttop = window.screenY;\n\t\t\t}\n\t\t\tfeatures += `,left=${left},top=${top}`;\n\t\t}\n\n\t\tthis.window = window.open(\"\", this.title, features);\n\t\tif(!this.window){\n\t\t\tthrow new Error(\"Popup window could not be opened.\");\n\t\t}\n\n\t\tthis.setupDocument();\n\n\t\tthis.isOpen = true;\n\n\t\tif(this.tether){\n\t\t\tWindowWrapper.tetheredWindows.add(this);\n\t\t\tif(WindowWrapper.tetheredWindows.size === 1){\n\t\t\t\twindow.addEventListener(\"pagehide\", WindowWrapper.closeAllTethered);\n\t\t\t\twindow.addEventListener(\"beforeunload\", WindowWrapper.closeAllTethered);\n\t\t\t\twindow.addEventListener(\"unload\", WindowWrapper.closeAllTethered);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate setupDocument(){\n\t\tif(this._vdom){\n\t\t\tthis._vdom._unrender();\n\t\t\tthis._vdom = null;\n\t\t}\n\n\t\tthis.document = this.window.document;\n\t\tthis.document[\"_dotId\"] = `${documentId++}`;\n\n\t\tlet tempElement = document.createElement(\"div\");\n\t\ttempElement.textContent = this.title;\n\t\tlet encodedTitle = tempElement.innerHTML;\n\t\t\n\t\tthis.document.open();\n\t\tthis.document.write(`<!DOCTYPE html><html><head><title>${encodedTitle}</title></head><body></body></html>`);\n\t\tthis.document.close();\n\n\t\t// Re-acquire the document and body as document.write can replace the document object\n\t\tthis.document = this.window.document;\n\t\tconst body = this.document.body;\n\t\tbody.innerHTML = \"\";\n\t\tdelete body[DOT_VDOM_PROP_NAME];\n\n\t\tif(this.syncStyles){\n\t\t\tthis.syncStylesWithParent();\n\t\t}\n\n\t\tthis._vdom = dot(body, this.window).mount(this.root) as unknown as ContainerVdom;\n\n\t\t// Attach event listeners\n\t\tfor(const {name, callback} of this.eventListeners){\n\t\t\tthis.document.addEventListener(name, callback);\n\t\t}\n\n\t\tthis.window.addEventListener(\"unload\", () => {\n\t\t\tif (this.isOpen) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (this.window && !this.window.closed) {\n\t\t\t\t\t\tthis.setupDocument();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.isOpen = false;\n\t\t\t\t\t\tif (this.tether) {\n\t\t\t\t\t\t\tWindowWrapper.tetheredWindows.delete(this);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.emit(\"close\");\n\t\t\t\t\t}\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t});\n\t}\n\n\ton(event: string, callback: (e: any) => void): this {\n\t\tif (event === \"close\") {\n\t\t\tthis.wrapperEventListeners.push({ name: event, callback });\n\t\t} else {\n\t\t\tthis.eventListeners.push({ name: event, callback });\n\t\t\tif (this.document) {\n\t\t\t\tthis.document.addEventListener(event, callback);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\tprivate emit(event: string, detail?: any) {\n\t\tfor (const { name, callback } of this.wrapperEventListeners) {\n\t\t\tif (name === event) {\n\t\t\t\tcallback(detail);\n\t\t\t}\n\t\t}\n\t}\n\n\tfocus(): void {\n\t\tif(this.window) this.window.focus();\n\t}\n\n\tbringToFront(): void {\n\t\tif(this.window) this.window.focus();\n\t}\n\n\tresizeTo(width: number, height: number): void {\n\t\tif(this.window) this.window.resizeTo(width, height);\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t}\n\n\tmoveTo(left: number, top: number): void {\n\t\tif(this.window) this.window.moveTo(left, top);\n\t}\n\n\tprivate static closeAllTethered = () => {\n\t\tWindowWrapper.tetheredWindows.forEach(w => w.close());\n\t\tWindowWrapper.tetheredWindows.clear();\n\t}\n\n\tprivate syncStylesWithParent(){\n\t\t// 1. Copy body class\n\t\tthis.document.body.className = document.body.className;\n\n\t\t// 2. Copy CSS variables from :root\n\t\tconst rootStyles = getComputedStyle(document.documentElement);\n\t\tfor(let i = 0; i < document.documentElement.style.length; i++){\n\t\t\tconst prop = document.documentElement.style[i];\n\t\t\tif(prop.startsWith(\"--\")){\n\t\t\t\tthis.document.documentElement.style.setProperty(prop, rootStyles.getPropertyValue(prop));\n\t\t\t}\n\t\t}\n\t\t// Also check for properties set directly on the style object that might not be in the enumeration\n\t\t// (though usually they are if they are set via setProperty)\n\n\t\t// 3. Copy adoptedStyleSheets\n\t\tif(this.document.adoptedStyleSheets && document.adoptedStyleSheets){\n\t\t\tconst clonedSheets = [];\n\t\t\tfor(const sheet of document.adoptedStyleSheets){\n\t\t\t\ttry{\n\t\t\t\t\tconst newSheet = new (this.window as any).CSSStyleSheet();\n\t\t\t\t\tlet cssText = \"\";\n\t\t\t\t\tfor(let i = 0; i < sheet.cssRules.length; i++){\n\t\t\t\t\t\tcssText += sheet.cssRules[i].cssText + \"\\n\";\n\t\t\t\t\t}\n\t\t\t\t\tnewSheet.replaceSync(cssText);\n\t\t\t\t\tclonedSheets.push(newSheet);\n\t\t\t\t}\n\t\t\t\tcatch(e){\n\t\t\t\t\tconsole.warn(\"Failed to clone adopted stylesheet:\", e);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.document.adoptedStyleSheets = clonedSheets;\n\t\t}\n\n\t\t// 4. Copy <style> and <link> tags\n\t\tconst styles = document.head.querySelectorAll(\"style, link[rel='stylesheet']\");\n\t\tstyles.forEach(style => {\n\t\t\tthis.document.head.appendChild(style.cloneNode(true));\n\t\t});\n\t}\n\n\tclose(): void {\n\t\tif(this.window){\n\t\t\tif(this._vdom){\n\t\t\t\tthis._vdom._unrender();\n\t\t\t\tthis._vdom = null;\n\t\t\t}\n\n\t\t\tthis.window.close();\n\t\t\tthis.window = null;\n\t\t\tthis.document = null;\n\t\t\tthis.isOpen = false;\n\n\t\t\tif(this.tether){\n\t\t\t\tWindowWrapper.tetheredWindows.delete(this);\n\t\t\t}\n\n\t\t\tthis.emit(\"close\");\n\t\t}\n\t}\n}\n","import Signal from \"./signal\";\nimport Computed from \"./computed\";\nimport { getCurrentComponent, pushComponent, popComponent } from \"../vdom-nodes/component-context\";\n\nconst storeRegistry = new Map<string, any>();\n\nexport interface StoreOptions<TState, TActions, TGetters> {\n\tid?: string;\n\tstate?: () => TState;\n\tgetters?: TGetters & ThisType<TState & TGetters & { $id: string }>;\n\tactions?: TActions & ThisType<TState & TGetters & TActions & { $id: string }>;\n}\n\nexport function createStore<\n\tTState extends Record<string, any>, \n\tTActions extends Record<string, Function>,\n\tTGetters extends Record<string, (state: any) => any>\n>(options: StoreOptions<TState, TActions, TGetters>) {\n\tconst { id, state: stateFn, getters, actions } = options;\n\n\tif (id && storeRegistry.has(id)) {\n\t\treturn () => storeRegistry.get(id);\n\t}\n\n\tconst createInstance = () => {\n\t\tconst store: any = {\n\t\t\t$id: id,\n\t\t\t_state: {} as Record<string, Signal>,\n\t\t\t_getters: {} as Record<string, Computed<any>>,\n\t\t\t_effects: [] as any[]\n\t\t};\n\n\t\tconst tracker = {\n\t\t\tcomputedSignals: [],\n\t\t\teffects: [],\n\t\t\tdisposables: [],\n\t\t\tregisterComputed(w: any) { this.computedSignals.push(w); },\n\t\t\tregisterEffect(e: any) { this.effects.push(e); },\n\t\t\tregisterDisposable(d: any) { this.disposables.push(d); }\n\t\t};\n\n\t\tpushComponent(tracker as any);\n\n\t\ttry {\n\t\t\t// Initialize state\n\t\t\tif (stateFn) {\n\t\t\t\tconst rawState = stateFn();\n\t\t\t\tfor (const key in rawState) {\n\t\t\t\t\tconst val = rawState[key];\n\t\t\t\t\tconst signal = (val as any) instanceof Signal ? (val as Signal) : new Signal();\n\t\t\t\t\tif (signal !== (val as any)) {\n\t\t\t\t\t\tsignal.value = val;\n\t\t\t\t\t}\n\t\t\t\t\tstore._state[key] = signal;\n\t\t\t\t\t\n\t\t\t\t\tObject.defineProperty(store, key, {\n\t\t\t\t\t\tget: () => store._state[key],\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Initialize getters - first define them as undefined so they can be accessed\n\t\t\tif (getters) {\n\t\t\t\tfor (const key in getters) {\n\t\t\t\t\tObject.defineProperty(store, key, {\n\t\t\t\t\t\tget: () => store._getters[key],\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfor (const key in getters) {\n\t\t\t\t\tconst computed = new Computed(() => getters[key].call(store, store));\n\t\t\t\t\tstore._getters[key] = computed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Bind actions\n\t\t\tif (actions) {\n\t\t\t\tfor (const key in actions) {\n\t\t\t\t\tstore[key] = (...args: any[]) => {\n\t\t\t\t\t\tpushComponent(tracker as any);\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\treturn actions[key].apply(store, args);\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tpopComponent();\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tpopComponent();\n\t\t}\n\n\t\tstore._getters_list = tracker.computedSignals;\n\t\tstore._effects = tracker.effects;\n\t\tstore._disposables = tracker.disposables;\n\n\t\tstore.$dispose = () => {\n\t\t\tfor (const key in store._getters) {\n\t\t\t\tstore._getters[key].dispose();\n\t\t\t}\n\t\t\tfor (const computed of store._getters_list || []) {\n\t\t\t\tcomputed.dispose();\n\t\t\t}\n\t\t\tfor (const effect of store._effects || []) {\n\t\t\t\teffect.dispose();\n\t\t\t}\n\t\t\tfor (const disposable of store._disposables || []) {\n\t\t\t\tdisposable();\n\t\t\t}\n\t\t\tif (id) {\n\t\t\t\tstoreRegistry.delete(id);\n\t\t\t}\n\t\t\tstore._state = {};\n\t\t\tstore._getters = {};\n\t\t\tstore._effects = [];\n\t\t};\n\n\t\tif (id) {\n\t\t\tstoreRegistry.set(id, store);\n\t\t}\n\n\t\treturn store;\n\t};\n\n\tlet singletonStore: any;\n\tif (id) {\n\t\tsingletonStore = createInstance();\n\t}\n\n\treturn () => {\n\t\tlet currentStore = id ? singletonStore : createInstance();\n\t\t\n\t\tif (!id) {\n\t\t\tconst currentComponent = getCurrentComponent();\n\t\t\tif (currentComponent && (currentComponent as any).registerDisposable) {\n\t\t\t\t(currentComponent as any).registerDisposable(() => currentStore.$dispose());\n\t\t\t}\n\t\t}\n\t\treturn currentStore;\n\t};\n}\n\nexport function getStore(id: string) {\n\treturn storeRegistry.get(id);\n}\n\nexport function clearStores() {\n\tstoreRegistry.forEach(store => store.$dispose());\n\tstoreRegistry.clear();\n}\n\nexport function getStores() {\n\tconst stores: Record<string, any> = {};\n\tstoreRegistry.forEach((store, id) => {\n\t\tstores[id] = store;\n\t});\n\treturn stores;\n}\n","export const allTags = [\n\t\"a\", \"aside\", \"abbr\", \"address\", \"area\", \"article\", \"audio\", \"b\", \"bdi\", \"bdo\", \"blockQuote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"cite\", \"code\", \"col\", \"colGroup\", \"content\", \"data\", \"dataList\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"div\", \"dl\", \"dt\", \"em\", \"embed\", \"fieldSet\", \"figCaption\", \"figure\", \"footer\", \"form\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"header\", \"hr\", \"i\", \"iFrame\", \"img\", \"input\", \"ins\", \"kbd\", \"keyGen\", \"label\", \"legend\", \"li\", \"main\", \"map\", \"mark\", \"menu\", \"menuItem\", \"meter\", \"nav\", \"object\", \"ol\", \"optGroup\", \"option\", \"output\", \"p\", \"param\", \"pre\", \"progress\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"section\", \"select\", \"small\", \"source\", \"span\", \"strong\", \"svg\", \"sub\", \"summary\", \"sup\", \"table\", \"tBody\", \"td\", \"textArea\", \"tFoot\", \"th\", \"tHead\", \"time\", \"tr\", \"track\", \"u\", \"ul\", \"var\", \"video\", \"wbr\"\n];\n\nexport const allTagsSet = new Set(allTags);\n\nexport const allCoreWrappers = [\"each\", \"html\", \"mount\", \"text\", \"md\", \"when\", \"on\"];\n","import { IDotCore } from \"dothtml-interfaces\";\nimport { Vdom } from \"./vdom\";\nimport { ContainerVdom } from \"./container-vdom\";\nimport { applyContent } from \"../dot-helpers\";\nimport { getCurrentComponent } from \"./component-context\";\n\nexport class SlotVdom extends Vdom {\n\tname: string;\n\tfallbackOrScope: any;\n\tfallback: ContainerVdom | null = null;\n\tscopedContent: ContainerVdom | null = null;\n\telement: HTMLElement | null = null;\n\n\tconstructor(dot: IDotCore, name?: string, fallbackOrScope?: any) {\n\t\tsuper(dot);\n\t\tthis.name = name || \"default\";\n\t\tthis.fallbackOrScope = fallbackOrScope;\n\t}\n\n\t_render(node: HTMLElement) {\n\t\tthis._isRendered = true;\n\t\tconst document = node.ownerDocument;\n\n\t\tconst currentComp = getCurrentComponent() as any;\n\t\tconst slotContent = currentComp?.component?.slots?.[this.name];\n\n\t\tif (typeof slotContent === \"function\") {\n\t\t\tthis.scopedContent = new ContainerVdom(this._dot);\n\t\t\tapplyContent(this._dot, this.scopedContent as any, slotContent(this.fallbackOrScope));\n\t\t} else if (this.fallbackOrScope !== undefined) {\n\t\t\tthis.fallback = new ContainerVdom(this._dot);\n\t\t\tapplyContent(this._dot, this.fallback as any, this.fallbackOrScope);\n\t\t}\n\n\t\tif (this.scopedContent) {\n\t\t\tthis.scopedContent._render(node);\n\t\t} else {\n\t\t\tthis.element = document.createElement(\"slot\");\n\t\t\tif (this.name !== \"default\") {\n\t\t\t\t(this.element as HTMLSlotElement).name = this.name;\n\t\t\t}\n\n\t\t\tif (this.fallback) {\n\t\t\t\tthis.fallback._render(this.element as any);\n\t\t\t}\n\n\t\t\tnode.appendChild(this.element);\n\t\t}\n\t}\n\n\t_unrender() {\n\t\tif (this.scopedContent) {\n\t\t\tthis.scopedContent._unrender();\n\t\t} else if (this.element) {\n\t\t\tif (this.fallback) {\n\t\t\t\tthis.fallback._unrender();\n\t\t\t}\n\t\t\tthis.element.remove();\n\t\t\tthis.element = null;\n\t\t}\n\t\tthis._isRendered = false;\n\t}\n\n\t_getNodes(): Node[] {\n\t\tif (this.scopedContent) {\n\t\t\treturn this.scopedContent._getNodes();\n\t\t}\n\t\treturn this.element ? [this.element] : [];\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this;\n\t}\n}\n","import { Vdom } from \"./vdom-nodes/vdom\";\nimport { FragmentVdom } from \"./vdom-nodes/fragment-vdom\";\nimport { IDotCore } from \"dothtml-interfaces\";\nimport { ComponentVdom } from \"./vdom-nodes/component-vdom\";\nimport { SlotVdom } from \"./vdom-nodes/slot-vdom\";\nimport { ContainerVdom } from \"./vdom-nodes/container-vdom\";\n\nexport class DotChain extends Vdom {\n\t_root: Vdom;\n\n\tconstructor(dot: IDotCore, initial: Vdom) {\n\t\tsuper(dot);\n\t\tthis._root = initial;\n\t}\n\n\t_addChild(node: Vdom) {\n\t\tif (this._root instanceof ContainerVdom) {\n\t\t\tthis._root._addChild(node);\n\t\t} else if (!(this._root instanceof FragmentVdom)) {\n\t\t\tconst frag = new FragmentVdom(this._dot);\n\t\t\tfrag._children.push(this._root);\n\t\t\tfrag._children.push(node);\n\t\t\tthis._root = frag;\n\t\t} else {\n\t\t\tthis._root._children.push(node);\n\t\t}\n\t\treturn this;\n\t}\n\n\t_render(target: HTMLElement) {\n\t\tthis._root._render(target);\n\t}\n\n\t_unrender() {\n\t\tthis._root._unrender();\n\t}\n\n\tasync _unrenderAsync() {\n\t\tawait this._root._unrenderAsync();\n\t}\n\n\t_renderBefore(reference: Node) {\n\t\tthis._root._renderBefore(reference);\n\t}\n\n\t_renderAfter(reference: Node) {\n\t\tthis._root._renderAfter(reference);\n\t}\n\n\t_moveBefore(reference: Node, parent?: Node) {\n\t\tthis._root._moveBefore(reference, parent);\n\t}\n\n\tget _isRendered() {\n\t\treturn this._root._isRendered;\n\t}\n\n\tset _isRendered(value: boolean) {\n\t\tthis._root._isRendered = value;\n\t}\n\n\t_getNodes(): Node[] {\n\t\treturn this._root._getNodes();\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this._root._getLastChild();\n\t}\n\n\tslot(name: string | any, content?: any) {\n\t\tlet lastChild = this._getLastChild();\n\t\twhile (lastChild instanceof DotChain) {\n\t\t\tlastChild = (lastChild as any)._root;\n\t\t}\n\n\t\tif (lastChild instanceof ComponentVdom) {\n\t\t\tif (typeof name !== \"string\") {\n\t\t\t\tcontent = name;\n\t\t\t\tname = \"default\";\n\t\t\t}\n\t\t\tlastChild.addSlot(name || \"default\", content);\n\t\t} else {\n\t\t\tif (typeof name !== \"string\") {\n\t\t\t\tcontent = name;\n\t\t\t\tname = undefined;\n\t\t\t}\n\t\t\tthis._addChild(new SlotVdom(this._dot, name, content));\n\t\t}\n\t\treturn this;\n\t}\n}\n","\nimport { ContainerVdom } from \"./vdom-nodes/container-vdom\";\nimport { TextVdom } from \"./vdom-nodes/text-vdom\";\nimport { ReactiveVdom } from \"./vdom-nodes/reactive-vdom\";\nimport ElementVdom from \"./vdom-nodes/element-vdom\";\nimport { Vdom } from \"./vdom-nodes/vdom\";\nimport { DOT_VDOM_PROP_NAME, IS_DEV } from \"./constants\";\nimport Signal from \"./reactivity/signal\";\nimport Computed from \"./reactivity/computed\";\nimport Effect from \"./reactivity/effect\";\nimport { component } from \"./decoration/component\";\nimport { ComponentVdom, HandledError } from \"./vdom-nodes/component-vdom\";\nimport renderStylesheet from \"./helpers/render-stylesheet\";\nimport BaseVStyle from \"./v-style-nodes/base-v-style\";\nimport StyleVNode from \"./v-meta-nodes/style-v-node\";\nimport { IDotCore, IDotCss, IDotComponent } from \"dothtml-interfaces\";\nimport WindowWrapper from \"./window-wrapper\";\nimport Binding from \"./reactivity/binding\";\nimport Ref from \"./reactivity/ref\";\nimport RefCollection from \"./reactivity/ref-collection\";\nimport { scheduler } from \"./reactivity/scheduler\";\nimport { createStore, getStore, clearStores, getStores } from \"./reactivity/store\";\nimport { getCurrentComponent, pushComponent, popComponent } from \"./vdom-nodes/component-context\";\nimport { registerInstance, unregisterInstance, getInstances } from \"./hmr-registry\";\nimport { createElement, isContent } from \"./dot-helpers\";\nimport { allTags, allCoreWrappers, allTagsSet } from \"./tags\";\nimport { DotChain } from \"./dot-chain\";\nimport { HtmlVdom } from \"./vdom-nodes/html-vdom\";\nimport { ConditionalVdom } from \"./vdom-nodes/conditional-vdom\";\nimport CollectionVdom from \"./vdom-nodes/collection-vdom\";\nimport { FragmentVdom } from \"./vdom-nodes/fragment-vdom\";\nimport { SlotVdom } from \"./vdom-nodes/slot-vdom\";\n\nfunction reduceReactive(value: any){\n\tif(value instanceof Signal) return value.bind();\n\telse return value;\n}\n\nfunction promote(vdom: Vdom): DotChain {\n\tif (vdom instanceof DotChain) return vdom;\n\treturn new DotChain(vdom._dot, vdom);\n}\n\n(Vdom.prototype as any)._addChild = function(node: Vdom) {\n\treturn promote(this)._addChild(node);\n};\n\n(Vdom.prototype as any).text = function(c: any) {\n\tlet val = reduceReactive(c);\n\tif(val instanceof Binding){\n\t\treturn this._addChild(new ReactiveVdom(this._dot, val));\n\t}\n\treturn this._addChild(new TextVdom(val));\n};\n\n(Vdom.prototype as any).html = function(c: any) {\n\treturn this._addChild(new HtmlVdom(reduceReactive(c)));\n};\n\n(Vdom.prototype as any).md = function(c: any) {\n\treturn this.text(c);\n};\n\n(Vdom.prototype as any).slot = function(name?: any, fallback?: any) {\n\tlet lastChild = this._getLastChild();\n\twhile (lastChild instanceof DotChain) {\n\t\tlastChild = (lastChild as any)._root;\n\t}\n\n\tif (lastChild instanceof ComponentVdom) {\n\t\tif (typeof name !== \"string\" && name !== undefined) {\n\t\t\tfallback = name;\n\t\t\tname = \"default\";\n\t\t}\n\t\tlastChild.addSlot(name || \"default\", fallback);\n\t\treturn this;\n\t} else {\n\t\tif (typeof name !== \"string\" && name !== undefined) {\n\t\t\tfallback = name;\n\t\t\tname = undefined;\n\t\t}\n\t\treturn this._addChild(new SlotVdom(this._dot, name, fallback));\n\t}\n};\n\n(Vdom.prototype as any).mount = function(c: any, ...args: any[]) {\n\tlet cn = new ComponentVdom(this._dot, c);\n\tfor (let i = 0; i < args.length; i++) {\n\t\tlet arg = args[i];\n\t\tif (isContent(arg)) {\n\t\t\tcn.addSlot(\"default\", arg);\n\t\t} else if (arg && typeof arg === \"object\") {\n\t\t\tfor (let k in arg) {\n\t\t\t\tlet val = arg[k];\n\t\t\t\tif (k === \"ref\") {\n\t\t\t\t\tcn.setRef(val);\n\t\t\t\t}\n\t\t\t\telse if (k.startsWith(\"on\") && typeof val === \"function\") {\n\t\t\t\t\tlet eventName = k;\n\t\t\t\t\tlet modifiers = [];\n\t\t\t\t\tif (k.includes(\".\")) {\n\t\t\t\t\t\tconst parts = k.split(\".\");\n\t\t\t\t\t\teventName = parts[0];\n\t\t\t\t\t\tmodifiers = parts.slice(1);\n\t\t\t\t\t}\n\t\t\t\t\tcn.addEventListener(eventName.substring(2).toLowerCase(), val, modifiers);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (!c[\"props\"]) (c as any).props = {};\n\t\t\t\t\t(c as any).props[k] = val;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\ttry {\n\t\tcn.init();\n\t} catch (e) {\n\t\tif (!(e instanceof HandledError)) throw e;\n\t}\n\treturn this._addChild(cn);\n};\n\n(Vdom.prototype as any).when = function(condition: any, then: any) {\n\tlet condNode = new ConditionalVdom(this._dot);\n\tlet thenContainer: Vdom;\n\tif (then instanceof Vdom) {\n\t\tthenContainer = then;\n\t} else if (typeof then === \"object\" && then?.build) {\n\t\tthenContainer = new FragmentVdom(this._dot);\n\t\t(thenContainer as FragmentVdom).mount(then);\n\t} else {\n\t\tthenContainer = new FragmentVdom(this._dot);\n\t\t(thenContainer as FragmentVdom)._children.push(new TextVdom(reduceReactive(then)));\n\t}\n\tcondNode.addCondition(reduceReactive(condition), thenContainer as any);\n\treturn this._addChild(condNode);\n};\n\n(Vdom.prototype as any).each = function(collection: any, callback: any) {\n\tlet collectionVdom = new CollectionVdom(this._dot, reduceReactive(collection), callback);\n\treturn this._addChild(collectionVdom);\n};\n\n(Vdom.prototype as any).otherwiseWhen = function(condition: any, then: any, seal = false) {\n\tlet lastChild = this._getLastChild();\n\n\tif (lastChild instanceof ConditionalVdom) {\n\t\tlet thenNode: Vdom;\n\t\tif (then instanceof Vdom) {\n\t\t\tthenNode = then;\n\t\t} else if (typeof then === \"object\" && then?.build) {\n\t\t\tthenNode = new FragmentVdom(this._dot);\n\t\t\t(thenNode as FragmentVdom).mount(then);\n\t\t} else {\n\t\t\tthenNode = new TextVdom(reduceReactive(then));\n\t\t}\n\t\tlastChild.addCondition(reduceReactive(condition), thenNode, seal);\n\t} else {\n\t\tthrow new Error(\"Can't branch off of a non-conditional node.\");\n\t}\n\treturn this;\n};\n\n(Vdom.prototype as any).otherwise = function(then: any) {\n\treturn this.otherwiseWhen(true, then, true);\n};\n\n(Vdom.prototype as any).attr = function(A: string, c: any) {\n\tlet lastChild = this._getLastChild();\n\n\tif (lastChild instanceof ElementVdom) {\n\t\tlastChild.setAttr(A, c);\n\t} else {\n\t\tthrow new Error(`Invalid node to set ${A} attribute.`);\n\t}\n\treturn this;\n};\n\n(Vdom.prototype as any).style = function(c: string | Signal | Binding | IDotCss | ((s: BaseVStyle) => void)) {\n\tif (typeof c === \"function\") {\n\t\tconst builder = new BaseVStyle();\n\t\tc(builder);\n\t\tthis.attr(\"style\", builder);\n\t} else {\n\t\tthis.attr(\"style\", c);\n\t}\n\treturn this;\n};\n\n(Vdom.prototype as any).on = function(event: string, callback: (e: any)=>void) {\n\tlet lastChild = this._getLastChild();\n\n\tif(lastChild && (lastChild instanceof ElementVdom || lastChild instanceof ComponentVdom)){\n\t\tlastChild.addEventListener(event, callback);\n\t}\n\telse{\n\t\tthrow new Error(`Invalid node to set ${event} listener.`);\n\t}\n\treturn this;\n};\n\n(Vdom.prototype as any).onEnter = function(callback: (el: HTMLElement)=>void) {\n\tlet lastChild = this._getLastChild();\n\tif (lastChild) {\n\t\tlastChild._onEnterHook = callback;\n\t\tif (lastChild._isRendered) {\n\t\t\tconst nodes = lastChild._getNodes();\n\t\t\tconst el = nodes.find(n => n instanceof HTMLElement) as HTMLElement;\n\t\t\tif (el) callback(el);\n\t\t}\n\t}\n\treturn this;\n};\n\n(Vdom.prototype as any).onLeave = function(callback: (el: HTMLElement)=>Promise<void>|void) {\n\tlet lastChild = this._getLastChild();\n\tif (lastChild) {\n\t\tlastChild._onLeaveHook = callback;\n\t}\n\treturn this;\n};\n\n(Vdom.prototype as any).empty = function() {\n\tlet root = this;\n\twhile (root instanceof DotChain) {\n\t\troot = (root as any)._root;\n\t}\n\n\tlet lastChild = root._getLastChild();\n\twhile (lastChild instanceof DotChain) {\n\t\tlastChild = (lastChild as any)._root;\n\t}\n\n\tif (lastChild instanceof ElementVdom) {\n\t\tif (lastChild.element) lastChild.element.innerHTML = \"\";\n\t\tlastChild.children._unrender();\n\t\tlastChild.children._children = [];\n\t\tlastChild.children._isRendered = true;\n\t} else if (root instanceof ContainerVdom) {\n\t\troot._unrender();\n\t\troot._children = [];\n\t\troot._isRendered = true;\n\t\tif (root._parent instanceof ElementVdom && root._parent.element) {\n\t\t\troot._parent.element.innerHTML = \"\";\n\t\t}\n\t}\n\treturn this;\n};\n\n(Vdom.prototype as any).remove = function() {\n\tlet root = this;\n\twhile (root instanceof DotChain) {\n\t\troot = (root as any)._root;\n\t}\n\n\tlet lastChild = root._getLastChild();\n\twhile (lastChild instanceof DotChain) {\n\t\tlastChild = (lastChild as any)._root;\n\t}\n\n\tif (lastChild instanceof ElementVdom || lastChild instanceof ComponentVdom) {\n\t\tlastChild._unrender();\n\t} else if (root instanceof ContainerVdom && root._parent instanceof ElementVdom) {\n\t\troot._parent._unrender();\n\t} else if (root instanceof Vdom) {\n\t\troot._unrender();\n\t}\n};\n\n(Vdom.prototype as any).fade = function(duration: number = 300) {\n\treturn this.onEnter((el: HTMLElement) => {\n\t\tel.animate([{ opacity: 0 }, { opacity: 1 }], { duration });\n\t}).onLeave(async (el: HTMLElement) => {\n\t\tconst anim = el.animate([{ opacity: 1 }, { opacity: 0 }], { duration });\n\t\tawait anim.finished;\n\t});\n};\n\n(Vdom.prototype as any).slide = function(duration: number = 300) {\n\treturn this.onEnter((el: HTMLElement) => {\n\t\tel.animate([\n\t\t\t{ height: '0', opacity: 0, overflow: 'hidden' },\n\t\t\t{ height: el.scrollHeight + 'px', opacity: 1, overflow: 'hidden' }\n\t\t], { duration });\n\t}).onLeave(async (el: HTMLElement) => {\n\t\tconst anim = el.animate([\n\t\t\t{ height: el.scrollHeight + 'px', opacity: 1, overflow: 'hidden' },\n\t\t\t{ height: '0', opacity: 0, overflow: 'hidden' }\n\t\t], { duration });\n\t\tawait anim.finished;\n\t});\n};\n\nfor (let i = 0; i < allTags.length; i++) {\n\tconst tag = allTags[i];\n\t(Vdom.prototype as any)[tag] = function(...args: any[]) {\n\t\treturn this._addChild(createElement(this._dot, tag, args));\n\t};\n}\n\nconst makeCoreWrapper = (d, fn)=>{\n\td[fn] = function(){\n\t\tif (allTagsSet.has(fn)) {\n\t\t\treturn promote(createElement(d, fn, arguments));\n\t\t} else {\n\t\t\tlet n = new ContainerVdom(d);\n\t\t\tn[fn](...arguments);\n\t\t\treturn promote(n);\n\t\t}\n\t}\n}\n\nconst makeDot = ()=>{\n\tconst _dot: any = function(targetSelector, targetWindow: Window = window){\n\n\t\tif(targetSelector?.ownerDocument?.defaultView){\n\t\t\tlet el = (targetSelector as HTMLElement);\n\t\t\tlet node = el[DOT_VDOM_PROP_NAME] as ElementVdom;\n\t\t\tif(node){\n\t\t\t\treturn promote(node.children);\n\t\t\t}\n\t\t\telse{\n\t\t\t\tnode = new ElementVdom(_dot, el.tagName.toLocaleLowerCase());\n\t\t\t\tnode.element = el;\n\t\t\t\tnode._isRendered = true;\n\t\t\t\tnode.children._parent = node;\n\t\t\t\tnode.children._isRendered = true;\n\t\t\t\tel[DOT_VDOM_PROP_NAME] = node;\n\t\t\t\treturn promote(node.children);\n\t\t\t}\n\t\t}\n\t\telse if(typeof targetSelector == \"string\"){\n\t\t\treturn _dot(targetWindow.document.querySelectorAll(targetSelector)[0]);\n\t\t}\n\t\telse{\n\t\t\tthrow new Error(\"Invalid render target.\");\n\t\t}\n\t}\n\n\t_dot.onError = null;\n\n\t_dot.state = function<T extends Signal|Array<any>|{[key: string|number]: any}|string|number|boolean = any>(value: T, key?: string): Signal<T>{\n\t\tlet o = new Signal();\n\t\to.key = key;\n\t\to.value = (value);\n\t\treturn o;\n\t}\n\n\t_dot.computed = function<T>(getter: () => T): Signal<T>{\n\t\tconst c = new Computed(getter);\n\t\tconst currentComponent = getCurrentComponent();\n\t\tif (currentComponent) {\n\t\t\tcurrentComponent.registerComputed(c);\n\t\t}\n\t\treturn c;\n\t}\n\n\t_dot.effect = function(callback: () => void | (() => void)): () => void {\n\t\tconst e = new Effect(callback);\n\t\tconst currentComponent = getCurrentComponent();\n\t\tif (currentComponent) {\n\t\t\t(currentComponent as any).registerEffect ? (currentComponent as any).registerEffect(e) : currentComponent.registerComputed(e as any);\n\t\t}\n\t\treturn () => e.dispose();\n\t}\n\n\t_dot.component = component;\n\t_dot.hmr = {\n\t\tswap(id: string, NewClass: any) {\n\t\t\tconst instances = getInstances(id);\n\t\t\tfor (const instance of instances) {\n\t\t\t\t(instance as any)._hmrSwap(NewClass);\n\t\t\t}\n\t\t}\n\t};\n\t_dot.slot = function(name?: any, fallback?: any) {\n\t\tif (typeof name !== \"string\" && name !== undefined) {\n\t\t\tfallback = name;\n\t\t\tname = undefined;\n\t\t}\n\t\treturn new SlotVdom(_dot as any, name, fallback);\n\t};\n\t_dot.getCurrentComponent = getCurrentComponent;\n\n\t_dot.store = createStore;\n\t_dot.getStore = getStore;\n\t_dot.clearStores = clearStores;\n\tObject.defineProperty(_dot, \"stores\", { get: () => getStores() });\n\n\t_dot.create = function<T extends IDotComponent>(Ctor: { new(...args: any[]): T }, ...args: any[]): T {\n\t\tconst tracker = {\n\t\t\tcomputedSignals: [],\n\t\t\teffects: [],\n\t\t\tdisposables: [],\n\t\t\tregisterComputed(w: any) { this.computedSignals.push(w); },\n\t\t\tregisterEffect(e: any) { this.effects.push(e); },\n\t\t\tregisterDisposable(d: any) { this.disposables.push(d); }\n\t\t};\n\t\tpushComponent(tracker as any);\n\t\tlet instance: T;\n\t\ttry {\n\t\t\tinstance = new Ctor(...args);\n\t\t} finally {\n\t\t\tpopComponent();\n\t\t}\n\n\t\tif ((instance as any)._trackedComputeds) {\n\t\t\t(instance as any)._trackedComputeds.push(...tracker.computedSignals);\n\t\t} else {\n\t\t\t(instance as any)._trackedComputeds = tracker.computedSignals;\n\t\t}\n\n\t\tif ((instance as any)._trackedEffects) {\n\t\t\t(instance as any)._trackedEffects.push(...tracker.effects);\n\t\t} else {\n\t\t\t(instance as any)._trackedEffects = tracker.effects;\n\t\t}\n\n\t\tif ((instance as any)._trackedDisposables) {\n\t\t\t(instance as any)._trackedDisposables.push(...tracker.disposables);\n\t\t} else {\n\t\t\t(instance as any)._trackedDisposables = tracker.disposables;\n\t\t}\n\n\t\treturn instance;\n\t}\n\n\t_dot.ref = function<T extends HTMLElement | IDotComponent = HTMLElement>(){\n\t\treturn new Ref<T>();\n\t}\n\n\t_dot.refCollection = function<T extends HTMLElement | IDotComponent = HTMLElement>(){\n\t\treturn new RefCollection<T>();\n\t}\n\n\t_dot.alpha = function(color: string | Signal<string> | Binding<string>, opacity: number | Signal<number> | Binding<number>) {\n\t\treturn new Computed(() => {\n\t\t\tconst c = color instanceof Binding ? color._get() : (color instanceof Signal ? color.value : color);\n\t\t\tconst o = opacity instanceof Binding ? opacity._get() : (opacity instanceof Signal ? opacity.value : opacity);\n\t\t\t\n\t\t\tconst percentage = Math.round(Math.max(0, Math.min(100, (1 - o) * 100)) * 100) / 100;\n\t\t\treturn `color-mix(in srgb, ${c}, transparent ${percentage}%)`;\n\t\t});\n\t};\n\n\t_dot.globalStyles = [];\n\t_dot.useGlobalStyles = (styles: string | CSSStyleSheet | Array<string | CSSStyleSheet>) => {\n\t\tconst stylesArray = Array.isArray(styles) ? styles : [styles];\n\t\tfor (const s of stylesArray) {\n\t\t\t_dot.globalStyles.push(s);\n\t\t\tif (typeof document !== \"undefined\") {\n\t\t\t\t_dot.useStyles(document, s);\n\t\t\t}\n\t\t}\n\t};\n\n\t_dot.css = new BaseVStyle();\n\n\t_dot._theme = null;\n\t_dot.setTheme = (theme: any) => {\n\t\t_dot._theme = theme;\n\t};\n\n\t_dot.useStyles = (applyToDocument: Document, styles: string | CSSStyleSheet | ((css: any) => string | IDotCss)) => {\n\t\tif (applyToDocument && !styles) {\n\t\t\tif (typeof applyToDocument == \"string\" || (applyToDocument[\"call\"] && applyToDocument[\"apply\"])) {\n\t\t\t\tstyles = applyToDocument as any;\n\t\t\t\tapplyToDocument = document;\n\t\t\t}\n\t\t}\n\n\t\tconst styleItem = renderStylesheet(styles as any, applyToDocument);\n\t\tif (styleItem instanceof (applyToDocument.defaultView as any)?.CSSStyleSheet) {\n\t\t\tapplyToDocument.adoptedStyleSheets = [...applyToDocument.adoptedStyleSheets, styleItem as CSSStyleSheet];\n\t\t} else if (styleItem instanceof HTMLElement) {\n\t\t\tapplyToDocument.head.appendChild(styleItem);\n\t\t}\n\t};\n\n\tif (typeof document !== \"undefined\") {\n\t\tconst globalStyleVNode = new StyleVNode(_dot.css);\n\t\tglobalStyleVNode.render(document.documentElement);\n\t}\n\n\t_dot.window = (options) => {\n\t\treturn new WindowWrapper(options);\n\t}\n\n\t_dot.flushSync = () => {\n\t\tscheduler.flushSync();\n\t}\n\n\t_dot.setSync = (sync: boolean) => {\n\t\tscheduler.setSync(sync);\n\t}\n\n\tscheduler.onError = (err) => {\n\t\tif (_dot.onError) {\n\t\t\t_dot.onError(err);\n\t\t} else {\n\t\t\tconsole.error(\"DOThtml Error:\", err);\n\t\t}\n\t};\n\n\tfor(let i = 0; i < allTags.length; i++){\n\t\tlet E = allTags[i];\n\t\tmakeCoreWrapper(_dot, E);\n\t}\n\n\tfor(let i = 0; i < allCoreWrappers.length; i++){\n\t\tlet W = allCoreWrappers[i];\n\t\tmakeCoreWrapper(_dot, W);\n\t}\n\n\treturn _dot as unknown as IDotCore;\n}\n\nconst dot = makeDot();\n\nif (IS_DEV && typeof window !== \"undefined\") {\n\t(window as any).dot = dot;\n}\n\nexport default dot;\n","import dot from \"../dot\";\n\nconst getRouteInfo = () => {\n\tif (typeof window === \"undefined\") return { path: \"/\", search: \"\", hash: \"\" };\n\t\n\tlet path = window.location.pathname;\n\tlet search = window.location.search;\n\tlet hash = window.location.hash;\n\n\tif (hash.startsWith(\"#/\")) {\n\t\tconst hashContent = hash.substring(1); // e.g., \"/docs?id=123#section1\"\n\t\t\n\t\t// Find where the path ends\n\t\tconst firstMark = hashContent.search(/[?#]/);\n\t\tif (firstMark === -1) {\n\t\t\tpath = hashContent;\n\t\t\tsearch = \"\";\n\t\t\thash = \"\";\n\t\t} else {\n\t\t\tpath = hashContent.substring(0, firstMark);\n\t\t\tconst remainder = hashContent.substring(firstMark);\n\t\t\t\n\t\t\tconst hashMark = remainder.indexOf(\"#\");\n\t\t\tif (hashMark === -1) {\n\t\t\t\tsearch = remainder;\n\t\t\t\thash = \"\";\n\t\t\t} else {\n\t\t\t\tsearch = remainder.substring(0, hashMark);\n\t\t\t\thash = remainder.substring(hashMark);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { path, search, hash };\n};\n\nconst initialRoute = getRouteInfo();\nexport const currentPath = dot.state(initialRoute.path);\nexport const previousPath = dot.state(initialRoute.path);\nexport const currentSearch = dot.state(initialRoute.search);\nexport const currentHash = dot.state(initialRoute.hash);\n\n/**\n * Navigates to a new path programmatically.\n * @param path The path to navigate to.\n * @param replace If true, uses replaceState instead of pushState.\n */\nexport function navigate(path: string, replace: boolean = false) {\n\tif (typeof window === \"undefined\") return;\n\t\n\tpreviousPath.value = currentPath.value;\n\t\n\tif (replace) {\n\t\twindow.history.replaceState({}, \"\", path);\n\t} else {\n\t\twindow.history.pushState({}, \"\", path);\n\t}\n\t\n\tconst info = getRouteInfo();\n\tcurrentPath.value = info.path;\n\tcurrentSearch.value = info.search;\n\tcurrentHash.value = info.hash;\n}\n\n/**\n * Returns a reactive object containing the current query parameters.\n */\nexport function useQueryParams() {\n\treturn dot.computed(() => {\n\t\tconst search = currentSearch.value;\n\t\tconst params = new URLSearchParams(search);\n\t\tconst result: Record<string, string> = {};\n\t\tparams.forEach((value, key) => {\n\t\t\tresult[key] = value;\n\t\t});\n\t\treturn result;\n\t});\n}\n\n/**\n * Returns a reactive string containing the current hash (without the #).\n */\nexport function useHash() {\n\treturn dot.computed(() => {\n\t\tconst hash = currentHash.value;\n\t\treturn hash.startsWith(\"#\") ? hash.substring(1) : hash;\n\t});\n}\n\n// Keep the reactive state in sync with browser back/forward buttons.\nif (typeof window !== \"undefined\") {\n\tconst updateState = () => {\n\t\tconst info = getRouteInfo();\n\t\tpreviousPath.value = currentPath.value;\n\t\tcurrentPath.value = info.path;\n\t\tcurrentSearch.value = info.search;\n\t\tcurrentHash.value = info.hash;\n\t};\n\n\twindow.addEventListener(\"popstate\", updateState);\n\twindow.addEventListener(\"hashchange\", updateState);\n}\n","import dot from \"../dot\";\nimport { currentPath, previousPath, navigate } from \"./state\";\nimport { IDotComponent } from \"dothtml-interfaces\";\nimport { Vdom } from \"../vdom-nodes/vdom\";\nimport { ContainerVdom } from \"../vdom-nodes/container-vdom\";\n\nexport type DotComponentSource = any | { new (...args: any[]): IDotComponent } | Vdom;\n\nexport interface RouteDefinition {\n\tpath: string;\n\tcomponent?: DotComponentSource | (() => Promise<any>);\n\tredirect?: string | ((params: Record<string, string>) => string);\n\tname?: string;\n\ttitle?: string | ((params: Record<string, string>) => string);\n\tchildren?: RouteDefinition[];\n\tbeforeEnter?: NavigationGuard;\n}\n\nexport type NavigationGuard = (\n\tto: string, \n\tfrom: string, \n\tnext: (path?: string | boolean) => void\n) => void | string | boolean | Promise<void | string | boolean>;\ntype AfterNavigationHook = (to: string, from: string) => void;\n\nconst beforeHooks: NavigationGuard[] = [];\nconst afterHooks: AfterNavigationHook[] = [];\nconst globalRoutes = dot.state<RouteDefinition[]>([]);\n\nexport function setGlobalRoutes(routes: RouteDefinition[]) {\n\tglobalRoutes.value = routes;\n}\n\nexport function getGlobalRoutes() {\n\treturn globalRoutes.value;\n}\n\n/**\n * Matches a path against a list of route definitions.\n * Supports:\n * - Literal segments: \"about\"\n * - Parameter segments: \"{id}\" or \":id\"\n * - Single segment wildcard: \"+\"\n * - Multi-segment wildcard: \"*\" (must be at the end)\n */\nexport function matchRoute(routes: RouteDefinition[], path: string, basePath: string = \"\") {\n\tconst relativePath = path.startsWith(basePath) ? path.slice(basePath.length) : path;\n\tconst pathSegments = relativePath.split(\"/\").filter(s => s !== \"\");\n\t\n\tfor (const route of routes) {\n\t\tconst routeSegments = route.path.split(\"/\").filter(s => s !== \"\");\n\t\tconst params: Record<string, string> = {};\n\t\tlet match = true;\n\t\t\n\t\tconst hasMultiWildcard = routeSegments.indexOf(\"*\") !== -1;\n\t\tconst isPrefixMatchAllowed = !!(route.children && route.children.length > 0);\n\n\t\tif (!hasMultiWildcard && !isPrefixMatchAllowed && routeSegments.length !== pathSegments.length) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (routeSegments.length > pathSegments.length) {\n\t\t\tcontinue;\n\t\t}\n\t\t\n\t\tfor (let i = 0; i < routeSegments.length; i++) {\n\t\t\tconst rSeg = routeSegments[i];\n\t\t\tconst pSeg = pathSegments[i];\n\t\t\t\n\t\t\tif (rSeg === \"*\") {\n\t\t\t\tmatch = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tif (pSeg === undefined) {\n\t\t\t\tmatch = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tif (rSeg === \"+\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tif (rSeg.startsWith(\"{\") && rSeg.endsWith(\"}\")) {\n\t\t\t\tconst paramName = rSeg.slice(1, -1);\n\t\t\t\tparams[paramName] = pSeg;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tif (rSeg.startsWith(\":\")) {\n\t\t\t\tconst paramName = rSeg.slice(1);\n\t\t\t\tparams[paramName] = pSeg;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tif (rSeg !== pSeg) {\n\t\t\t\tmatch = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (match) {\n\t\t\tconst matchedSegments = pathSegments.slice(0, routeSegments.length);\n\t\t\tconst matchedPath = (basePath.endsWith(\"/\") ? basePath.slice(0, -1) : basePath) + \"/\" + matchedSegments.join(\"/\");\n\t\t\treturn { route, params, matchedPath };\n\t\t}\n\t}\n\t\n\treturn null;\n}\n\nexport const Router = dot.component(\n\tclass implements IDotComponent {\n\t\tstatic props = {\n\t\t\troutes: { type: Array, required: true },\n\t\t\tnotFound: { type: Object, default: null },\n\t\t\tloading: { type: Object, default: null },\n\t\t\tbasePath: { type: String, default: \"\" }\n\t\t};\n\n\t\tprops: any;\n\t\tresolvedComponent = dot.state<any>(null);\n\t\tcurrentMatch: { route: RouteDefinition, params: Record<string, string>, matchedPath: string } | null = null;\n\t\tlastPath = \"\";\n\t\tsubId: number = -1;\n\t\tloaderCache = new Map<any, any>();\n\n\t\tmounting() {\n\t\t\tthis.subId = currentPath.subscribe(() => {\n\t\t\t\t(this as any)._?.cvdom.requestUpdate();\n\t\t\t});\n\t\t}\n\n\t\tunmounting() {\n\t\t\tcurrentPath.unsubscribe(this.subId);\n\t\t}\n\n\t\tbuild(dot: any) {\n\t\t\tsetGlobalRoutes(this.props.routes);\n\t\t\tconst path = currentPath.value;\n\t\t\t\n\t\t\tconst match = matchRoute(this.props.routes, path, this.props.basePath);\n\t\t\tthis.currentMatch = match;\n\n\t\t\tconst proceed = (comp: any) => {\n\t\t\t\tif (!match) return;\n\n\t\t\t\tlet title = match.route.title;\n\t\t\t\tif (typeof title === \"function\") {\n\t\t\t\t\ttitle = title(match.params);\n\t\t\t\t}\n\t\t\t\tif (title) {\n\t\t\t\t\tdocument.title = title;\n\t\t\t\t}\n\n\t\t\t\tif (typeof comp === \"function\" && !comp.prototype?.build) {\n\t\t\t\t\t// Potential lazy loader\n\t\t\t\t\tif (this.loaderCache.has(comp)) {\n\t\t\t\t\t\tthis.resolvedComponent.value = this.loaderCache.get(comp);\n\t\t\t\t\t\tafterHooks.forEach(h => h(path, previousPath.value));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = comp();\n\t\t\t\t\tif (result instanceof Promise) {\n\t\t\t\t\t\tresult.then(m => {\n\t\t\t\t\t\t\tconst resolved = m.default || m;\n\t\t\t\t\t\t\tthis.loaderCache.set(comp, resolved);\n\t\t\t\t\t\t\tthis.resolvedComponent.value = resolved;\n\t\t\t\t\t\t\t(this as any)._?.cvdom.requestUpdate();\n\t\t\t\t\t\t\tafterHooks.forEach(h => h(path, previousPath.value));\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tthis.resolvedComponent.value = this.props.loading || dot.div(\"Loading...\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.resolvedComponent.value = comp;\n\t\t\t\tafterHooks.forEach(h => h(path, previousPath.value));\n\t\t\t};\n\n\t\t\tif (!match) {\n\t\t\t\tthis.resolvedComponent.value = this.props.notFound || dot.div(\"404 - Not Found\");\n\t\t\t} else if (match.route.redirect) {\n\t\t\t\tconst target = typeof match.route.redirect === \"function\" \n\t\t\t\t\t? match.route.redirect(match.params) \n\t\t\t\t\t: match.route.redirect;\n\t\t\t\tnavigate(target, true);\n\t\t\t\treturn dot.div();\n\t\t\t} else {\n\t\t\t\tconst guards = [...beforeHooks];\n\t\t\t\tif (match.route.beforeEnter) {\n\t\t\t\t\tguards.push(match.route.beforeEnter);\n\t\t\t\t}\n\n\t\t\t\tconst runGuards = async (index: number) => {\n\t\t\t\t\tif (index >= guards.length) {\n\t\t\t\t\t\tproceed(match.route.component);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst guard = guards[index];\n\t\t\t\t\tlet nextCalled = false;\n\n\t\t\t\t\tconst handleNext = (nextVal?: string | boolean) => {\n\t\t\t\t\t\tif (nextCalled) return;\n\t\t\t\t\t\tnextCalled = true;\n\n\t\t\t\t\t\tif (nextVal === false) {\n\t\t\t\t\t\t\tnavigate(previousPath.value, true);\n\t\t\t\t\t\t} else if (typeof nextVal === \"string\") {\n\t\t\t\t\t\t\tnavigate(nextVal, true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\trunGuards(index + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tconst result = guard(path, previousPath.value, handleNext);\n\t\t\t\t\t\n\t\t\t\t\tif (result instanceof Promise) {\n\t\t\t\t\t\tconst asyncResult = await result;\n\t\t\t\t\t\tif (!nextCalled) {\n\t\t\t\t\t\t\tif (asyncResult === false || typeof asyncResult === \"string\") {\n\t\t\t\t\t\t\t\thandleNext(asyncResult);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\thandleNext();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (result !== undefined && !nextCalled) {\n\t\t\t\t\t\thandleNext(result as string | boolean);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\trunGuards(0);\n\t\t\t}\n\n\t\t\tconst C = this.resolvedComponent.value;\n\t\t\tif (!C) return dot.div();\n\t\t\t\n\t\t\tconst currentMatch = this.currentMatch;\n\t\t\t\n\t\t\tif (typeof C === \"function\" && C.prototype?.build) {\n\t\t\t\treturn dot.mount(new C(), { \n\t\t\t\t\trouteParams: currentMatch?.params,\n\t\t\t\t\tbasePath: currentMatch?.matchedPath \n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (typeof C === \"object\" && C.build) {\n\t\t\t\treturn dot.mount(C, {\n\t\t\t\t\trouteParams: currentMatch?.params,\n\t\t\t\t\tbasePath: currentMatch?.matchedPath \n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tif (C instanceof Vdom) return C;\n\t\t\treturn dot.div(C);\n\t\t}\n\t}\n);\n\n(Router as any).beforeEach = (guard: NavigationGuard) => {\n\tbeforeHooks.push(guard);\n};\n\n(Router as any).afterEach = (hook: AfterNavigationHook) => {\n\tafterHooks.push(hook);\n};\n\n(Router as any).clearHooks = () => {\n\tbeforeHooks.length = 0;\n\tafterHooks.length = 0;\n};\n","import { RouteDefinition } from \"./router\";\n\n/**\n * Generates a path from a route name and parameters.\n * @param routes The route definitions to search.\n * @param name The name of the route.\n * @param params The parameters to inject into the path.\n * @param basePath The base path for the search (used for recursion).\n */\nexport function generatePath(routes: RouteDefinition[], name: string, params: any = {}, basePath: string = \"\"): string | null {\n\tfor (const route of routes) {\n\t\tconst fullPath = (basePath.endsWith(\"/\") ? basePath.slice(0, -1) : basePath) + (route.path.startsWith(\"/\") ? \"\" : \"/\") + route.path;\n\t\t\n\t\tif (route.name === name) {\n\t\t\t// Inject params into the path.\n\t\t\tlet resolvedPath = fullPath;\n\t\t\tfor (const key in params) {\n\t\t\t\tconst value = params[key];\n\t\t\t\tresolvedPath = resolvedPath.replace(new RegExp(`\\\\{${key}\\\\}`, \"g\"), value);\n\t\t\t\tresolvedPath = resolvedPath.replace(new RegExp(`:${key}`, \"g\"), value);\n\t\t\t}\n\t\t\treturn resolvedPath;\n\t\t}\n\t\t\n\t\tif (route.children) {\n\t\t\tconst result = generatePath(route.children, name, params, fullPath);\n\t\t\tif (result) return result;\n\t\t}\n\t}\n\t\n\treturn null;\n}\n","import dot from \"../dot\";\nimport { currentPath, navigate } from \"./state\";\nimport { IDotComponent } from \"dothtml-interfaces\";\nimport { getGlobalRoutes } from \"./router\";\nimport { generatePath } from \"./helpers\";\n\nexport const Link = dot.component(\n\tclass implements IDotComponent {\n\t\tstatic props = {\n\t\t\tto: { type: String, default: \"\" },\n\t\t\tname: { type: String, default: \"\" },\n\t\t\tparams: { type: Object, default: () => ({}) },\n\t\t\tactiveClass: { type: String, default: \"active\" },\n\t\t\texact: { type: Boolean, default: false },\n\t\t\tlabel: { type: String, default: \"\" }\n\t\t};\n\n\t\tprops: any;\n\t\tslots: any;\n\n\t\tgetResolvedPath() {\n\t\t\tif (this.props.name) {\n\t\t\t\treturn generatePath(getGlobalRoutes(), this.props.name, this.props.params) || \"\";\n\t\t\t}\n\t\t\treturn this.props.to;\n\t\t}\n\n\t\tbuild() {\n\t\t\tconst resolvedPath = dot.computed(() => this.getResolvedPath());\n\n\t\t\treturn dot.a({\n\t\t\t\thRef: resolvedPath,\n\t\t\t\tclass: dot.computed(() => {\n\t\t\t\t\tconst path = currentPath.value;\n\t\t\t\t\tlet target = resolvedPath.value;\n\t\t\t\t\tif (target.startsWith(\"#/\")) {\n\t\t\t\t\t\ttarget = target.substring(1).split(/[?#]/)[0];\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget = target.split(/[?#]/)[0];\n\t\t\t\t\t}\n\t\t\t\t\tconst isActive = this.props.exact \n\t\t\t\t\t\t? path === target \n\t\t\t\t\t\t: path.startsWith(target);\n\t\t\t\t\t\n\t\t\t\t\treturn isActive ? this.props.activeClass : \"\";\n\t\t\t\t}),\n\t\t\t\tonClick: (e: MouseEvent) => {\n\t\t\t\t\t// Only handle left clicks without modifier keys.\n\t\t\t\t\tif (\n\t\t\t\t\t\t(e.button === 0 || e.button === undefined) &&\n\t\t\t\t\t\t!e.ctrlKey &&\n\t\t\t\t\t\t!e.shiftKey &&\n\t\t\t\t\t\t!e.altKey &&\n\t\t\t\t\t\t!e.metaKey\n\t\t\t\t\t) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tnavigate(resolvedPath.value);\n\t\t\t\t\t}\n\n\n\t\t\t\t}\n\n\t\t\t}, this.props.label || this.slots?.default);\n\t\t}\n\t}\n);\n","/**\n * A deep-searching alternative to getElementById that traverses Shadow Roots.\n * Optimized to only recurse when a shadowRoot is present.\n */\nexport function getElementByIdDeep(id: string, root: Document | ShadowRoot = document): HTMLElement | null {\n\t// 1. Check the current root (Light DOM)\n\tlet element = root.getElementById(id);\n\tif (element) return element as HTMLElement;\n\n\t// 2. Only search descendants that might have their own Shadow Roots\n\tconst descendants = root.querySelectorAll('*');\n\tfor (let i = 0; i < descendants.length; i++) {\n\t\tconst shadowRoot = descendants[i].shadowRoot;\n\t\tif (shadowRoot) {\n\t\t\telement = getElementByIdDeep(id, shadowRoot);\n\t\t\tif (element) return element as HTMLElement;\n\t\t}\n\t}\n\n\treturn null;\n}\n","import { currentPath, currentHash } from \"./state\";\nimport { getElementByIdDeep } from \"../helpers/dom-utils\";\nimport dot from \"../dot\";\n\nconst scrollPositions = new Map<string, { x: number, y: number }>();\nlet scrollTimeout: any = null;\n\n/**\n * Performs scrolling based on the current hash or saved position.\n */\nfunction performScroll(path: string, smooth: boolean = false) {\n\tconst hash = currentHash.value;\n\tif (hash && hash.startsWith(\"#\")) {\n\t\tconst id = hash.substring(1);\n\t\tconst element = getElementByIdDeep(id);\n\t\tif (element) {\n\t\t\tconst prefersReducedMotion = typeof window !== \"undefined\" && window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n\t\t\telement.scrollIntoView({ \n\t\t\t\tbehavior: smooth && !prefersReducedMotion ? \"smooth\" : \"auto\" \n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t}\n\n\tconst savedPosition = scrollPositions.get(path);\n\tif (savedPosition) {\n\t\twindow.scrollTo(savedPosition.x, savedPosition.y);\n\t} else {\n\t\twindow.scrollTo(0, 0);\n\t}\n}\n\n/**\n * Schedules a scroll operation, cancelling any previously scheduled one.\n */\nfunction scheduleScroll(path: string, smooth: boolean) {\n\tif (scrollTimeout) clearTimeout(scrollTimeout);\n\tscrollTimeout = setTimeout(() => {\n\t\tperformScroll(path, smooth);\n\t\tscrollTimeout = null;\n\t}, 0);\n}\n\n/**\n * Initializes the scroll manager.\n * Listens for path changes and manages scroll behavior.\n */\nexport function initScrollManager() {\n\tif (typeof window === \"undefined\") return;\n\n\t// Save scroll position before navigation (if possible)\n\t// Note: popstate happens after the URL has changed, so we need to save the position\n\t// of the *previous* page.\n\t\n\twindow.addEventListener(\"scroll\", () => {\n\t\tscrollPositions.set(currentPath.value, {\n\t\t\tx: window.pageXOffset,\n\t\t\ty: window.pageYOffset\n\t\t});\n\t}, { passive: true });\n\n\tconst routeState = dot.computed(() => ({\n\t\tpath: currentPath.value,\n\t\thash: currentHash.value\n\t}));\n\n\trouteState.subscribe((state) => {\n\t\t// Wait for the DOM to update\n\t\tscheduleScroll(state.path, true);\n\t});\n\n\t// Handle initial scroll\n\tscheduleScroll(currentPath.value, false);\n}\n","import { IDotComponent, IDotCore, FrameworkItems } from \"dothtml-interfaces\";\nimport dot from \"./dot\";\n\n/**\n * Base class for DOThtml components.\n * Provides typed props, refs, and framework-injected properties.\n */\nexport abstract class DotComponent<P = any, R = any> implements IDotComponent {\n\t/**\n\t * Typed props for the component.\n\t */\n\tpublic props: P;\n\n\t/**\n\t * Typed refs for the component.\n\t * These are automatically populated by the framework when using the `dot.ref` or `dot.refCollection` features.\n\t */\n\tpublic refs: R = {} as R;\n\n\t/**\n\t * Internal framework metadata and utilities.\n\t */\n\tpublic _: FrameworkItems;\n\n\tconstructor(props?: P) {\n\t\tthis.props = props || {} as P;\n\t}\n\n\t/**\n\t * Emits a custom event from the component's root element.\n\t * This method is automatically injected/overridden by the framework at runtime.\n\t * @param name The name of the event to emit.\n\t * @param detail Optional data to attach to the event.\n\t */\n\tpublic emit(name: string, detail?: any): void {\n\t\t// Implementation is provided by ComponentVdom at runtime.\n\t}\n\n\t/**\n\t * Registers a side effect that is automatically cleaned up when the component is unmounted.\n\t * @param callback The side effect to run. Can return a cleanup function.\n\t */\n\tpublic effect(callback: () => void | (() => void)): void {\n\t\tdot.effect(callback);\n\t}\n\n\t/**\n\t * The build method defines the structure of the component.\n\t * @param dot The DOThtml core object used to create elements and other components.\n\t */\n\tabstract build(dot: IDotCore): any;\n\n\t/**\n\t * Called after the component has been mounted to the DOM.\n\t */\n\tmounted?(): void;\n\n\t/**\n\t * Called when the component is about to be unmounted from the DOM.\n\t */\n\tunmounting?(): void;\n\n\t/**\n\t * Called after the component has been unmounted from the DOM.\n\t */\n\tunmounted?(): void;\n\n\t/**\n\t * Called after the component's VDOM has been built for the first time.\n\t */\n\tbuilt?(): void;\n}\n"],"mappings":"8dAGA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,kBAAAE,GAAA,SAAAC,GAAA,aAAAC,EAAA,WAAAC,GAAA,gBAAAC,EAAA,gBAAAC,EAAA,kBAAAC,GAAA,QAAAC,EAAA,iBAAAC,GAAA,oBAAAC,GAAA,sBAAAC,GAAA,eAAAC,GAAA,aAAAC,EAAA,iBAAAC,EAAA,oBAAAC,GAAA,YAAAC,GAAA,mBAAAC,KAAA,eAAAC,GAAAnB,ICHO,IAAMoB,EAAqB,WACrBC,EAAS,OAAOC,QAAY,IACrCA,QAAQC,IAAIC,WAAa,cACxB,IAAA,CACH,GAAI,CACH,OAAQ,IAAIC,SAAS,6BAAA,EAAA,CACtB,MAAQ,CACP,MAAO,EACR,CACD,GAAA,GAAQ,GCNT,IAAqBC,EAArB,KAAqBA,CAArB,MAAqBA,CAAAA,EAAAA,gBACpBC,QAEAC,WAKA,IAAIC,YAAsB,CACzB,OAAQ,KAAKF,QAAgBE,aAAe,CAAC,KAAKD,YAAc,CAAC,CAAC,KAAKA,WAAWE,KACnF,CAEA,IAAIC,OAAY,CACf,OAAO,KAAKC,KAAI,CACjB,CAEAA,MAAU,CAIT,OAFQ,KAAKJ,YAAYK,QAAU,KAAKL,WAAWK,QAAQ,KAAKN,QAAQI,KAAK,EAAI,KAAKJ,QAAQI,KAG/F,CAEAG,KAAKC,EAAyB,CAC7B,IAAIJ,EAAQ,KAAKH,YAAYE,KAAO,KAAKF,WAAWE,KAAKK,CAAAA,EAAeA,EACxE,KAAKR,QAAQI,MAAQA,CACtB,CAEAK,WAAWC,EAAiBC,EAAgB,GAAc,CACzD,OAAQ,KAAKX,QAAgBS,WAAW,KAAMC,EAAYC,CAAAA,CAC3D,CAEAC,UAAUC,EAAoBF,EAAgB,GAAe,CAC5D,OAAO,KAAKF,WAAWI,EAAUF,CAAAA,CAClC,CAEAG,aAAaC,EAAW,CACvB,KAAKf,QAAQgB,YAAYD,CAAAA,CAC1B,CAEAC,YAAYD,EAAY,CACvB,KAAKf,QAAQgB,YAAYD,CAAAA,CAC1B,CAEA,YAAYE,EAAoB,CAC/B,KAAKjB,QAAUiB,CAChB,CACD,EChDA,IAA8BC,EAA9B,KAA8BA,CAA9B,MAA8BA,CAAAA,EAAAA,kBAI9B,ECJO,SAASC,GAAmBC,EAAaC,EAAS,CAExD,GAAID,EAAME,aAAeD,EAAIC,WAC5B,MAAM,IAAIC,MAAM,gDAAA,EAGjB,IAAIC,EAAqBJ,EAAMK,YAG/B,KAAOD,GAAWA,IAAYH,GAAK,CAClC,IAAMK,EAAkBF,EAAQC,YAI7BD,EAAQG,CAAAA,EACVH,EAAQG,CAAAA,EAAoBC,UAAS,EAGrCJ,EAAQF,YAAYO,YAAYL,CAAAA,EAEjCA,EAAUE,CACX,CACD,CAtBgBP,EAAAA,GAAAA,sBAwBT,SAASW,GAAUC,EAAWC,EAAWC,EAAU,IAAIC,IAAK,CAC/D,GAAIH,IAASC,EACT,MAAO,GAGX,GAAID,GAAQ,MAAQC,GAAQ,MAAQ,OAAOD,GAAS,UAAY,OAAOC,GAAS,SAC5E,MAAO,GAIX,GAAIC,EAAQE,IAAIJ,CAAAA,EACZ,OAAOE,EAAQG,IAAIL,CAAAA,IAAUC,EAIjC,GAFAC,EAAQI,IAAIN,EAAMC,CAAAA,EAEdM,MAAMC,QAAQR,CAAAA,GAASO,MAAMC,QAAQP,CAAAA,GACjCD,EAAKS,SAAWR,EAAKQ,OACrB,MAAO,GAIf,QAAWC,KAAQV,EAIf,GAHI,CAACC,EAAKU,eAAeD,CAAAA,GAGrB,CAACX,GAAUC,EAAKU,CAAAA,EAAOT,EAAKS,CAAAA,EAAOR,CAAAA,EACnC,MAAO,GAIf,QAAWQ,KAAQT,EACf,GAAI,CAACD,EAAKW,eAAeD,CAAAA,EACrB,MAAO,GAIf,MAAO,EACX,CArCgBX,EAAAA,GAAAA,aAuCT,IAAMa,GAAa,IAAIC,OAAO,4CAA6C,GAAA,EC/D3E,IAAeC,EAAf,KAAeA,CAAtB,MAAsBA,CAAAA,EAAAA,aAErBC,KACAC,aACAC,aAEA,YAAYC,EAAe,CAC1B,KAAKH,KAAOG,CACb,CAOA,MAAMC,gBAAiB,CAEtB,IAAMC,EADQ,KAAKC,UAAS,EACXC,KAAKC,GAAKA,aAAaC,WAAAA,EACpC,KAAKP,cAAgBG,GACxB,MAAM,KAAKH,aAAaG,CAAAA,EAEzB,KAAKK,UAAS,CACf,CAKAC,YAAYC,EAAiBC,EAAc,CAC1C,IAAIC,EAAQ,KAAKR,UAAS,EAC1B,GAAIQ,EAAMC,SAAW,EAAG,OACxB,IAAIC,EAAIJ,GAAWK,eAAiBJ,EACpC,GAAI,CAACG,EAAG,MAAM,IAAIE,MAAM,qDAAA,EAExB,QAASC,EAAI,EAAGA,EAAIL,EAAMC,OAAQI,IACjC,GAAIL,EAAMK,CAAAA,IAAOP,EAAW,OAG7B,IAAIQ,GAAYR,GAAWS,eAAiBL,EAAEK,eAAiBC,UAAUC,uBAAsB,EAC/F,QAAQJ,EAAI,EAAGA,EAAIL,EAAMC,OAAQI,IAChCC,EAASI,YAAYV,EAAMK,CAAAA,CAAE,EAE9BH,EAAES,aAAaL,EAAUR,CAAAA,CAC1B,CAEAc,aAAe,GACf,IAAIC,aAAa,CAChB,OAAO,KAAKD,YACb,CACA,IAAIC,YAAYC,EAAe,CAC9B,GAAGA,GAAS,KAAKF,aAAc,MAAM,IAAIR,MAAM,2CAAA,EAC/C,GAAG,CAACU,GAAS,CAAC,KAAKF,aAAc,MAAM,IAAIR,MAAM,uCAAA,EACjD,KAAKQ,aAAeE,CACrB,CAEAC,UAAmB,CAClB,IAAIxB,EAAKiB,SAASQ,cAAc,KAAA,EAChC,YAAKC,QAAQ1B,CAAAA,EACNA,EAAG2B,SACX,CAEAC,cAAcrB,EAAgB,CAC7B,IAAIsB,EAAQtB,EAAUS,cAAcS,cAAc,KAAA,EAElD,IADA,KAAKC,QAAQG,CAAAA,EACPA,EAAMC,WAAWpB,OAAS,GAAE,CACjC,IAAIqB,EAAKF,EAAMC,WAAW,CAAA,EAC1BC,EAAGnB,cAAcoB,YAAYD,CAAAA,EAC7BxB,EAAUK,cAAcQ,aAAaW,EAAIxB,CAAAA,CAC1C,CACD,CACA0B,aAAa1B,EAAgB,CAC5B,GAAGA,EAAU2B,YACZ,KAAKN,cAAcrB,EAAU2B,WAAW,MAErC,CACH,IAAIC,EAAO5B,EAAUS,cAAcoB,eAAe,EAAA,EAClD7B,EAAUK,cAAcO,YAAYgB,CAAAA,EACpC,KAAKP,cAAcO,CAAAA,EACnBA,EAAKvB,cAAcoB,YAAYG,CAAAA,CAChC,CACD,CAEAE,QAAQC,EAAoB,CAC3B,IAAI7B,EAAQ,KAAKR,UAAS,EAC1B,QAAQa,EAAI,EAAGA,EAAIL,EAAMC,OAAQI,IAChCwB,EAAOnB,YAAYV,EAAMK,CAAAA,CAAE,CAE7B,CAGAyB,KAAKC,EAAc,CAAE,OAAO,IAAa,CACzCC,KAAKD,EAAc,CAAE,OAAO,IAAa,CACzCE,GAAGF,EAAc,CAAE,OAAO,IAAa,CACvCG,MAAMH,EAAQI,EAAmB,CAAE,OAAO,IAAa,CACvDC,KAAKC,EAAgBC,EAAiB,CAAE,OAAO,IAAa,CAC5DC,KAAKC,EAAiBC,EAAqB,CAAE,OAAO,IAAa,CACjEC,cAAcL,EAAgBC,EAAWK,EAAsB,CAAE,OAAO,IAAa,CACrFC,UAAUN,EAAiB,CAAE,OAAO,IAAa,CACjDO,KAAKC,EAAWf,EAAc,CAAE,OAAO,IAAa,CACpDgB,MAAMhB,EAAc,CAAE,OAAO,IAAa,CAC1CiB,GAAGC,EAAeR,EAAgC,CAAE,OAAO,IAAa,CACxES,QAAQT,EAAyC,CAAE,OAAO,IAAa,CACvEU,QAAQV,EAAuD,CAAE,OAAO,IAAa,CACrFW,OAAc,CAAE,OAAO,IAAa,CACpCC,QAAe,CAAE,CAElB,ECrGO,IAAMC,EAAN,cAAuBC,CAAAA,CAN9B,MAM8BA,CAAAA,EAAAA,iBAE7BC,MACAC,SAAiB,KACjBC,WAAa,EAEb,YAAYC,EAAoC,CAC/C,MAAK,EACL,KAAKH,MAAQG,CACd,CAEAC,QAAQC,EAAmB,CACvB,KAAKL,iBAAiBM,GACxB,KAAKL,SAAWI,EAAKE,cAAcC,eAAe,KAAKR,MAAMS,KAAI,GAAM,EAAA,EACvE,KAAKP,WAAa,KAAKF,MAAMU,WAAW,IAAI,GAG5C,KAAKT,SAAWI,EAAKE,cAAcC,eAAe,GAAG,KAAKR,OAAS,EAAA,EAAI,EAGxEK,EAAKM,YAAY,KAAKV,QAAQ,CAC/B,CAEAW,WAAY,CACR,KAAKX,WACH,KAAKA,SAASY,eACjB,KAAKZ,SAASY,cAAcC,YAAY,KAAKb,QAAQ,EAEtD,KAAKA,SAAW,MAGd,KAAKC,YAAc,KAAKF,iBAAiBM,IAC3C,KAAKN,MAAMe,aAAa,KAAKb,UAAU,EACvC,KAAKA,WAAa,EAEpB,CAEAc,WAAoB,CACnB,OAAO,KAAKf,SAAW,CAAC,KAAKA,UAAY,CAAA,CAC1C,CAEAgB,eAA6B,CAC5B,OAAO,IACR,CAEAC,UAAU,CACT,IAAIC,EAAOC,SAASZ,gBAAgB,KAAKR,iBAAiBM,EAAU,KAAKN,MAAMS,KAAI,EAAK,KAAKT,QAAU,EAAA,EACnGqB,EAAMD,SAASE,cAAc,KAAA,EACjCD,OAAAA,EAAIV,YAAYQ,CAAAA,EACTE,EAAIE,SACZ,CACD,ECtDO,IAAMC,EAAN,cAA2BC,CAAAA,CAHlC,MAGkCA,CAAAA,EAAAA,qBACjCC,UAAoB,CAAA,EAEpB,YAAYC,EAAgB,CAC3B,MAAMA,CAAAA,CACP,CAEAC,QAAQC,EAAqB,CAC5B,KAAKC,YAAc,GACnB,QAASC,EAAI,EAAGA,EAAI,KAAKL,UAAUM,OAAQD,IAC1C,KAAKL,UAAUK,CAAAA,EAAGH,QAAQC,CAAAA,CAE5B,CAEAI,WAAY,CACX,GAAK,KAAKH,YACV,MAAKA,YAAc,GACnB,QAASC,EAAI,EAAGA,EAAI,KAAKL,UAAUM,OAAQD,IAC1C,KAAKL,UAAUK,CAAAA,EAAGE,UAAS,EAE7B,CAEAC,WAAoB,CACnB,IAAIC,EAAgB,CAAA,EACpB,QAASJ,EAAI,EAAGA,EAAI,KAAKL,UAAUM,OAAQD,IAC1CI,EAAMC,KAAI,GAAI,KAAKV,UAAUK,CAAAA,EAAGG,UAAS,CAAA,EAE1C,OAAOC,CACR,CAEAE,eAA6B,CAC5B,OAAO,KAAKX,UAAU,KAAKA,UAAUM,OAAS,CAAA,GAAM,IACrD,CACD,ECpCO,IAAKM,GAAAA,SAAAA,EAAAA,8HAAAA,QCOZ,IAAMC,GAAN,KAAMA,CAPN,MAOMA,CAAAA,EAAAA,kBACGC,OAAmC,CAC1C,IAAIC,IACJ,IAAIA,IACJ,IAAIA,IACJ,IAAIA,KAEGC,UAAqB,GACrBC,UAAoB,EACpBC,aAAuB,EACvBC,OAAkB,GAClBC,UAAqB,GAEtBC,QAECC,QAAU,OAAOC,eAAmB,IAAc,IAAIA,eAAmB,KAEjF,aAAc,CACT,KAAKD,UACR,KAAKA,QAAQE,MAAMC,UAAY,IAAM,KAAKC,SAAQ,EAEpD,CAKAC,QAAQC,EAA4BC,EAAqBC,EAASC,OAAQ,CACpEH,EAAaI,WACjBJ,EAAaI,SAAW,GACxB,KAAKlB,OAAOe,CAAAA,EAAUI,IAAIL,CAAAA,GAGvBC,IAAaC,EAASI,WAAa,KAAKf,OAC3C,KAAKgB,UAAS,EAEd,KAAKC,cAAa,CAEpB,CAEQA,eAAgB,CACnB,KAAKpB,YACT,KAAKA,UAAY,GAEb,KAAKM,QACR,KAAKA,QAAQe,MAAMC,YAAY,IAAA,EAG/BC,WAAW,IAAM,KAAKb,SAAQ,EAAI,CAAA,EAEpC,CAKAc,aAAuB,CACtB,OAAOC,YAAYC,IAAG,EAAK,KAAKzB,WAAa,KAAKC,YACnD,CAKQQ,UAAW,CAClB,KAAKT,UAAYwB,YAAYC,IAAG,EAChC,KAAK1B,UAAY,GAEC,KAAK2B,YAAW,GAGjC,KAAKP,cAAa,CAEpB,CAMQO,aAAuB,CAC9B,QAASC,EAAId,EAASI,UAAWU,GAAKd,EAASe,WAAYD,IAAK,CAC/D,IAAME,EAAQ,KAAKhC,OAAO8B,CAAAA,EAC1B,GAAIE,EAAMC,OAAS,EAAG,SAGtB,IAAMC,EAAQC,MAAMC,KAAKJ,CAAAA,EACzBA,EAAMK,MAAK,EAEX,QAASC,EAAI,EAAGA,EAAIJ,EAAMK,OAAQD,IAAK,CACtC,IAAMxB,EAAeoB,EAAMI,CAAAA,EAG3B,GAFAxB,EAAaI,SAAW,GAEpBJ,EAAa0B,OAChB,GAAI,CACkB1B,EAAa2B,OAAM,IAGvC3B,EAAaI,SAAW,GACxBc,EAAMb,IAAIL,CAAAA,EAEZ,OAAS4B,EAAK,CACT,KAAKnC,QACR,KAAKA,QAAQmC,CAAAA,EAEbC,QAAQC,MAAM,mBAAoBF,CAAAA,CAEpC,CAGD,GAAI,KAAKhB,YAAW,EAAI,CAEvB,QAASmB,EAAIP,EAAI,EAAGO,EAAIX,EAAMK,OAAQM,IACrCb,EAAMb,IAAIe,EAAMW,CAAAA,CAAE,EAGnB,MAAO,EACR,CACD,CACD,CAGA,QAASf,EAAId,EAASI,UAAWU,GAAKd,EAASe,WAAYD,IAC1D,GAAI,KAAK9B,OAAO8B,CAAAA,EAAGG,KAAO,EAAG,MAAO,GAGrC,MAAO,EACR,CAKAZ,WAAY,CACX,GAAI,KAAKf,UAAW,OAEpB,KAAKA,UAAY,GAEjB,KAAKJ,UAAY,GAGjB,IAAM4C,EAAsB,KAAKpB,YACjC,KAAKA,YAAc,IAAM,GAEzB,GAAI,CACH,IAAIqB,EAAc,GAClB,KAAOA,GAAa,CACnBA,EAAc,GACd,QAASjB,EAAId,EAASI,UAAWU,GAAKd,EAASe,WAAYD,IAAK,CAC/D,IAAME,EAAQ,KAAKhC,OAAO8B,CAAAA,EAC1B,GAAIE,EAAMC,OAAS,EAAG,SAEtB,IAAMC,EAAQC,MAAMC,KAAKJ,CAAAA,EACzBA,EAAMK,MAAK,EAEX,QAAWvB,KAAgBoB,EAE1B,GADApB,EAAaI,SAAW,GACpBJ,EAAa0B,OAChB,GAAI,CACkB1B,EAAa2B,OAAM,IAEvC3B,EAAaI,SAAW,GACxBc,EAAMb,IAAIL,CAAAA,EACViC,EAAc,GAEhB,OAASL,EAAK,CACT,KAAKnC,QACR,KAAKA,QAAQmC,CAAAA,EAEbC,QAAQC,MAAM,0BAA2BF,CAAAA,CAE3C,CAGEV,EAAMC,KAAO,IAAGc,EAAc,GACnC,CACD,CACD,QAAA,CACC,KAAKrB,YAAcoB,EACnB,KAAK5C,UAAY,GACjB,KAAKI,UAAY,EAClB,CACD,CAEA0C,QAAQC,EAAe,CACtB,KAAK5C,OAAS4C,CACf,CAKAZ,OAAQ,CACP,QAAWL,KAAS,KAAKhC,OACxBgC,EAAMK,MAAK,EAEZ,KAAKnC,UAAY,EAClB,CACD,EAEagD,EAAY,IAAInD,GCpL7B,IAAqBoD,GAArB,MAAqBA,UAAuBC,CAAAA,CArB5C,MAqB4CA,CAAAA,EAAAA,uBAE3C,OAAwBC,eAAiB,IAEzCC,MACAC,eACAC,UACAC,QACAC,WAAa,EAEbC,YAA+B,CAAA,EAGvBC,YASG,KAEX,YAAYC,EAAeP,EAA6BC,EAA2D,CAClH,MAAMM,CAAAA,EACN,KAAKP,MAAQA,EACb,KAAKC,eAAiBA,CACvB,CAEAO,QAAQC,EAAqB,CAEzB,KAAKT,iBAAiBU,IACxB,KAAKN,WAAa,KAAKJ,MAAMW,WAAW,IAAI,GAG7C,KAAKT,UAAYO,EAAOG,cAAcC,eAAe,EAAA,EACrD,KAAKV,QAAUM,EAAOG,cAAcC,eAAe,EAAA,EACnDJ,EAAOK,YAAY,KAAKZ,SAAS,EACjCO,EAAOK,YAAY,KAAKX,OAAO,EAE/B,IAAMY,EAAsBC,EAAUC,YACtCD,EAAUC,YAAc,IAAM,GAC9B,GAAI,CACH,KAAKC,WAAU,CAChB,QAAA,CACCF,EAAUC,YAAcF,CACzB,CACD,CAEAI,WAAY,CACR,KAAKf,YAAc,KAAKJ,iBAAiBU,IAC3C,KAAKV,MAAMoB,aAAa,KAAKhB,UAAU,EACvC,KAAKA,WAAa,MAGnB,QAAQiB,EAAI,EAAGA,EAAI,KAAKhB,YAAYiB,OAAQD,IAAI,CAC/C,IAAIE,EAAI,KAAKlB,YAAYgB,CAAAA,EACzBE,EAAEC,KAAKL,UAAS,EAChBI,EAAEE,UAAUC,cAAcC,YAAYJ,EAAEE,SAAS,CAClD,CACA,KAAKpB,YAAYiB,OAAS,EAE1B,KAAKpB,UAAUwB,cAAcC,YAAY,KAAKzB,SAAS,EACvD,KAAKC,QAAQuB,cAAcC,YAAY,KAAKxB,OAAO,EACnD,KAAKD,UAAY,KACjB,KAAKC,QAAU,IAChB,CAEAyB,WAAoB,CACnB,GAAG,CAAC,KAAK1B,UAAW,MAAO,CAAA,EAC3B,IAAI2B,EAAQ,CAAC,KAAK3B,WAClB,QAAQmB,EAAI,EAAGA,EAAI,KAAKhB,YAAYiB,OAAQD,IAC3CQ,EAAMC,KAAI,GAAI,KAAKzB,YAAYgB,CAAAA,EAAGG,KAAKI,UAAS,CAAA,EAChDC,EAAMC,KAAK,KAAKzB,YAAYgB,CAAAA,EAAGI,SAAS,EAEzCI,OAAAA,EAAMC,KAAK,KAAK3B,OAAO,EAChB0B,CACR,CAEAE,eAA6B,CAC5B,OAAO,IACR,CAEQC,0BAA0BC,EAA6B,CAC9D,IAAMC,EAAM,KAAK7B,YACjB,GAAI6B,EAAIZ,SAAW,GAAKW,EAAQX,QAAUY,EAAIZ,OAAQ,MAAO,GAC7D,QAASD,EAAI,EAAGA,EAAIa,EAAIZ,OAAQD,IAC/B,GAAIY,EAAQZ,CAAAA,IAAOa,EAAIb,CAAAA,EAAGc,SAAU,MAAO,GAE5C,OAAOD,EAAIZ,MACZ,CAEQc,sBAAsBC,EAAgBC,EAAuB,CACpE,IAAMT,EAAQQ,EAAKb,KAAKI,UAAS,EAEjC,GADI,CAACC,EAAMP,QAAU,CAACgB,EAAOZ,eACzBG,EAAM,CAAA,IAAOS,EAAOC,YAAa,MAAO,GAC5C,IAAMC,EAAWX,EAAMA,EAAMP,OAAS,CAAA,EACtC,OAAOe,EAAKZ,YAAce,EAASD,WACpC,CAEQE,kBAAkBC,EAAoB1C,EAAY2C,EAAe,CACxE,GAAID,EAAS1C,QAAUA,GAAS,CAAC4C,GAAUF,EAAS1C,MAAOA,CAAAA,EAAQ,CAClE0C,EAASlB,KAAKL,UAAS,EACvBuB,EAAS1C,MAAQA,EACjB,IAAI6C,EAAgB,KAAK5C,eAAeD,EAAO,KAAKA,iBAAiBU,EAAUgC,EAASI,gBAAkBH,EAAOD,EAASP,QAAQ,EAC9HX,EACAqB,aAAyB/C,EAC5B0B,EAAOqB,EACG,OAAOA,GAAkB,UAAYA,GAAeE,OAC9DvB,EAAO,IAAIwB,EAAa,KAAKC,IAAI,EAChCzB,EAAa0B,MAAML,CAAAA,GAEpBrB,EAAO,IAAI2B,EAASN,CAAAA,EAEhBrB,EAAa4B,QAAO5B,EAAQA,EAAa4B,OAC9CV,EAASlB,KAAOA,CACjB,MACCkB,EAASI,gBAAgBO,KAAKV,CAAAA,CAEhC,CAEQW,sBAAsBC,EAAmBC,EAAyB,CACzE,QAASnC,EAAIkC,EAAWlC,EAAImC,EAAMlC,OAAQD,IACzC,GAAImC,EAAMnC,CAAAA,EAAGG,KAAKiC,YAAa,CAC9B,IAAM5B,EAAQ2B,EAAMnC,CAAAA,EAAGG,KAAKI,UAAS,EACrC,GAAIC,EAAMP,OAAQ,OAAOO,EAAM,CAAA,CAChC,CAED,OAAO,KAAK1B,OACb,CAEQuD,2BAA2BH,EAAmBC,EAA2B,CAChF,IAAIG,EAAQ,EACZ,KACCJ,EAAYI,EAAQH,EAAMlC,QAC1B,CAACkC,EAAMD,EAAYI,CAAAA,EAAOnC,KAAKiC,aAC/BE,EAAQ9D,EAAeE,gBAEvB4D,IAED,OAAOA,CACR,CAEQC,oBAAoBJ,EAAmBK,EAAcC,EAA0B,CACtF,IAAMC,EAAWF,EAAOjD,cAAcoD,uBAAsB,EAC5D,QAAW3B,KAAQmB,EAClBnB,EAAKb,KAAKhB,QAAQuD,CAAAA,EAClBA,EAASjD,YAAYuB,EAAKZ,SAAS,EAEpCoC,EAAOC,aAAaC,EAAUD,CAAAA,CAC/B,CAKA,MAAcG,WAAW5B,EAAe,CACvC,MAAMA,EAAKb,KAAK0C,eAAc,EAC1B7B,EAAKZ,UAAUC,eAClBW,EAAKZ,UAAUC,cAAcC,YAAYU,EAAKZ,SAAS,CAEzD,CAEAP,YAAsB,CACrB,IAAIiD,EAAqB,KACtB,KAAKnE,iBAAiBU,EACxByD,EAAqB,KAAKnE,MAAMoE,KAAI,EAGpCD,EAAqB,KAAKnE,MAG3B,IAAMqE,EAA2BC,MAAMC,QAAQJ,CAAAA,EAC5CA,EACAK,OAAOC,OAAON,CAAAA,EAWjB,GATI,KAAK7D,cAEHsC,GAAU,KAAKtC,YAAYoE,SAAUL,CAAAA,IAGzC,KAAK/D,YAAc,OAIjB,CAAC,KAAKA,YAAa,CAEtB,IAAIqE,EAAc,KACf,KAAK3E,iBAAiBU,IACxBiE,EAAM,KAAK3E,MAAM4E,QAAQD,KAAO,MAGjC,IAAMD,EAAWL,EAEXpC,EAAsBqC,MAAMC,QAAQJ,CAAAA,EACvCO,EAASG,IAAI,CAACC,EAAGzD,IAAMsD,EAAMG,EAAEH,CAAAA,EAAOtD,CAAAA,EACtCmD,OAAOO,KAAKZ,CAAAA,EAAoBU,IAAI,CAACG,EAAG3D,IAAMsD,EAAMR,EAAmBa,CAAAA,EAAGL,CAAAA,EAAOK,CAAAA,EAE9EC,EAAmB,KAAKjD,0BAA0BC,CAAAA,EAElDiD,EAAS,IAAIC,IACnB,QAAS9D,EAAI,EAAGA,EAAI,KAAKhB,YAAYiB,OAAQD,IAAK,CACjD,IAAMgB,EAAO,KAAKhC,YAAYgB,CAAAA,EAC1BA,GAAK4D,GACRC,EAAOE,IAAI/C,EAAKF,SAAUE,CAAAA,CAE5B,CAEA,KAAK/B,YAAc,CAClBoE,SAAAA,EACAzC,QAAAA,EACAiD,OAAAA,EACAG,gBAAiB,CAAA,EACjBC,aAAc,EACd9C,SAAU,KAAKtC,UACf+E,iBAAAA,EACAM,KAAM,MACP,CACD,CAEA,IAAMC,EAAQ,KAAKlF,YAGnB,GAAIkF,EAAMD,OAAS,OAAQ,CAC1B,KAAOC,EAAMF,aAAeE,EAAMd,SAASpD,QAAQ,CAClD,IAAMtB,EAAQwF,EAAMd,SAASc,EAAMF,YAAY,EACzCnD,EAAWqD,EAAMvD,QAAQuD,EAAMF,YAAY,EAEjD,GAAIE,EAAMF,aAAeE,EAAMP,iBAAkB,CAChD,IAAMvC,EAAW,KAAKrC,YAAYmF,EAAMF,YAAY,EACpD,KAAK7C,kBAAkBC,EAAU1C,EAAOwF,EAAMF,YAAY,EAC1DE,EAAMH,gBAAgBvD,KAAKY,CAAAA,CAC5B,KAAO,CACN,IAAIA,EAAW8C,EAAMN,OAAOO,IAAItD,CAAAA,EAEhC,GAAIO,EACH8C,EAAMN,OAAOQ,OAAOvD,CAAAA,EACpB,KAAKM,kBAAkBC,EAAU1C,EAAOwF,EAAMF,YAAY,EAC1DE,EAAMH,gBAAgBvD,KAAKY,CAAAA,MACrB,CAEN,IAAMI,EADW,IAAI6C,EAAAA,EACYC,KAAI,EACrC9C,EAAgBO,KAAKmC,EAAMF,YAAY,EAEvC,IAAMzC,EAAgB,KAAK5C,eAAeD,EAAO,KAAKA,iBAAiBU,EAAUoC,EAAkB0C,EAAMF,aAAcnD,CAAAA,EACnHX,EACAqB,aAAyB/C,EAC5B0B,EAAOqB,EACG,OAAOA,GAAkB,UAAYA,GAAeE,OAC9DvB,EAAO,IAAIwB,EAAa,KAAKC,IAAI,EAChCzB,EAAa0B,MAAML,CAAAA,GAEpBrB,EAAO,IAAI2B,EAASN,CAAAA,EAEhBrB,EAAa4B,QAAO5B,EAAQA,EAAa4B,OAC9C,IAAM3B,EAAY,KAAKvB,UAAUU,cAAcC,eAAe,EAAA,EAE9D2E,EAAMH,gBAAgBvD,KAAK,CAC1BN,KAAAA,EAAMxB,MAAAA,EAAOmC,SAAAA,EAAUV,UAAAA,EAAWqB,gBAAAA,CACnC,CAAA,CACD,CACD,CAIA,GAFA0C,EAAMF,eAEFtE,EAAUC,YAAW,EACxB,MAAO,EAET,CACAuE,EAAMD,KAAO,SACd,CAGA,GAAIC,EAAMD,OAAS,UAAW,CAC7B,IAAMM,EAAWvB,MAAMwB,KAAKN,EAAMN,OAAOT,OAAM,CAAA,EAC/C,QAAWpC,KAAQwD,EAClB,KAAK5B,WAAW5B,CAAAA,EAEjBmD,EAAMD,KAAO,UACbC,EAAMF,aAAe,EACrB,KAAKjF,YAAc,CAAA,CACpB,CAGA,GAAImF,EAAMD,OAAS,UAClB,KAAOC,EAAMF,aAAeE,EAAMH,gBAAgB/D,QAAQ,CACzD,IAAMe,EAAOmD,EAAMH,gBAAgBG,EAAMF,YAAY,EAErD,GAAKjD,EAAKb,KAAKiC,YAqBH,KAAKrB,sBAAsBC,EAAMmD,EAAMhD,QAAQ,GAO1DgD,EAAMhD,SAAWH,EAAKZ,UACtB,KAAKpB,YAAYyB,KAAKO,CAAAA,EACtBmD,EAAMF,iBARNjD,EAAKb,KAAKuE,YAAYP,EAAMhD,SAASD,YAAaiD,EAAMhD,SAASd,aAAa,EAC9E8D,EAAMhD,SAASd,cAAcoC,aAAazB,EAAKZ,UAAWY,EAAKb,KAAKI,UAAS,EAAGoE,MAAM,EAAC,EAAG,CAAA,EAAGzD,WAAW,EACxGiD,EAAMhD,SAAWH,EAAKZ,UACtB,KAAKpB,YAAYyB,KAAKO,CAAAA,EACtBmD,EAAMF,oBA1BqB,CAC3B,IAAMW,EAAY,KAAKvC,2BAA2B8B,EAAMF,aAAcE,EAAMH,eAAe,EAE3F,GAAIY,GAAa,EAAG,CACnB,IAAMC,EAAQV,EAAMH,gBAAgBW,MAAMR,EAAMF,aAAcE,EAAMF,aAAeW,CAAAA,EAC7EpC,EAAS2B,EAAMhD,SAASd,cACxBoC,EAAe,KAAKR,sBAAsBkC,EAAMF,aAAeW,EAAWT,EAAMH,eAAe,EACrG,KAAKzB,oBAAoBsC,EAAOrC,EAAQC,CAAAA,EAExC,QAAWqC,KAAaD,EACvBV,EAAMhD,SAAW2D,EAAU1E,UAC3B,KAAKpB,YAAYyB,KAAKqE,CAAAA,EAEvBX,EAAMF,cAAgBW,CACvB,MACC5D,EAAKb,KAAK4E,aAAaZ,EAAMhD,QAAQ,EACrCgD,EAAMhD,SAASd,cAAcoC,aAAazB,EAAKZ,UAAWY,EAAKb,KAAKI,UAAS,EAAGoE,MAAM,EAAC,EAAG,CAAA,EAAGzD,WAAW,EACxGiD,EAAMhD,SAAWH,EAAKZ,UACtB,KAAKpB,YAAYyB,KAAKO,CAAAA,EACtBmD,EAAMF,cAER,CAYA,GAAItE,EAAUC,YAAW,EACxB,MAAO,EAET,CAID,YAAKX,YAAc,KACZ,EACR,CACD,ECzVO,IAAM+F,GAAN,cAA8BC,CAAAA,CANrC,MAMqCA,CAAAA,EAAAA,wBAE5BC,WAAyC,CAAA,EACzCC,OAAS,GACTC,cAAgB,GAChBC,qBAA6C,KAC7CC,UAA2B,KAEnC,YAAYC,EAAc,CACzB,MAAMA,CAAAA,CACP,CAEAC,aAAaC,EAA2BC,EAAaC,EAAO,GAAM,CAEjE,GAAG,KAAKR,OACP,MAAM,IAAIS,MAAM,qDAAA,EAEjB,KAAKT,OAASQ,EAEd,IAAIE,EAAI,CACPJ,UAAAA,EACAC,MAAAA,EACAI,YAAa,KACbC,UAAW,KACXC,WAAY,CACb,EAEA,KAAKd,WAAWe,KAAKJ,CAAAA,EAGlB,KAAKK,cAGP,KAAKC,aAAaN,EAAG,KAAKX,WAAW,CAAA,EAAGY,YAAYM,aAAa,EAG9D,KAAKhB,eAAiB,IACxB,KAAKiB,iBAAgB,EAGxB,CAEQF,aAAaN,EAAwBS,EAAkB,CAE9D,GAAGT,EAAEC,YAAa,MAAM,IAAIF,MAAM,2BAAA,EAClCC,EAAEC,YAAcQ,EAAKC,cAAcC,eAAe,EAAA,EAClDX,EAAEE,UAAYO,EAAKC,cAAcC,eAAe,EAAA,EAChDF,EAAKG,YAAYZ,EAAEC,WAAW,EAC9BQ,EAAKG,YAAYZ,EAAEE,SAAS,EAGzBF,EAAEJ,qBAAqBiB,IACzBb,EAAEG,WAAaH,EAAEJ,UAAUkB,WAAW,IAAI,EAE5C,CAEAC,QAAQN,EAAmB,CAG1B,KAAKJ,YAAc,GAKnB,QAAQW,EAAI,EAAGA,EAAI,KAAK3B,WAAW4B,OAAQD,IAC1C,KAAKV,aAAa,KAAKjB,WAAW2B,CAAAA,EAAIP,CAAAA,EAIvC,KAAKD,iBAAgB,CACtB,CAEAU,YAAYlB,EAAuB,CAE/BA,EAAEJ,qBAAqBiB,IACzBb,EAAEJ,UAAUuB,aAAanB,EAAEG,UAAU,EACrCH,EAAEG,WAAa,GAGhB,IAAIiB,EAAQpB,EAAEC,YACVoB,EAAMrB,EAAEE,UACZkB,EAAMb,cAAce,YAAYF,CAAAA,EAChCC,EAAId,cAAce,YAAYD,CAAAA,EAC9BrB,EAAEC,YAAc,KAChBD,EAAEE,UAAY,KACdF,EAAEH,MAAM0B,UAAS,CAClB,CAEAA,WAAY,CACX,GAAI,KAAKlB,YACT,MAAKA,YAAc,GACnB,KAAKd,cAAgB,GACrB,KAAKE,UAAY,KACjB,KAAKD,qBAAuB,KAE5B,QAAQgC,EAAI,EAAGA,EAAI,KAAKnC,WAAW4B,OAAQO,IAAI,CAC9C,IAAIxB,EAAI,KAAKX,WAAWmC,CAAAA,EACxB,KAAKN,YAAYlB,CAAAA,CAClB,EACD,CAEAyB,WAAoB,CACnB,GAAG,CAAC,KAAKpB,YAAa,MAAO,CAAA,EAC7B,IAAIqB,EAAQ,CAAA,EACZ,QAAQF,EAAI,EAAGA,EAAI,KAAKnC,WAAW4B,OAAQO,IAAI,CAC9C,IAAIxB,EAAI,KAAKX,WAAWmC,CAAAA,EACxBE,EAAMtB,KAAKJ,EAAEC,WAAW,EACrBuB,GAAK,KAAKjC,eACZmC,EAAMtB,KAAI,GAAIJ,EAAEH,MAAM4B,UAAS,CAAA,EAEhCC,EAAMtB,KAAKJ,EAAEE,SAAS,CACvB,CACA,OAAOwB,CACR,CAEAC,eAA6B,CAC5B,OAAO,IACR,CAEAnB,kBAAkB,CAEjB,IAAIoB,EAAW,GACf,QAAQZ,EAAI,EAAGA,EAAI,KAAK3B,WAAW4B,OAAQD,IAAI,CAC9C,IAAIhB,EAAI,KAAKX,WAAW2B,CAAAA,EAExB,GAAGhB,EAAEJ,qBAAqBiB,EAAUb,EAAEJ,UAAUiC,KAAI,EAAK7B,EAAEJ,UAAU,CACpEgC,EAAWZ,EACX,KACD,CACD,CAEA,GAAI,KAAKxB,qBAAsB,CAC9B,KAAKC,UAAYmC,EACjB,MACD,CAEGA,GAAY,KAAKrC,eACnB,KAAKuC,cAAcF,CAAAA,CAErB,CAEA,MAAcE,cAAcF,EAAkB,CAC7C,IAAMG,EAAW,KAAKxC,cAGtB,GAFA,KAAKA,cAAgBqC,EAElBG,GAAY,GAAG,CACjB,IAAM/B,EAAI,KAAKX,WAAW0C,CAAAA,EAC1B,KAAKvC,qBAAuBwC,QAAQC,QAAQjC,EAAEH,MAAMqC,eAAc,CAAA,EAClE,MAAM,KAAK1C,qBACX,KAAKA,qBAAuB,IAC7B,CAGA,GAAI,KAAKC,YAAc,KAAM,CAC5B,IAAM0C,EAAO,KAAK1C,UAElB,GADA,KAAKA,UAAY,KACb0C,IAAS,KAAK5C,cAAe,CAChC,KAAKuC,cAAcK,CAAAA,EACnB,MACD,CACD,CAEA,GAAG,KAAK5C,eAAiB,GAAG,CAC3B,IAAMS,EAAI,KAAKX,WAAW,KAAKE,aAAa,EAC5CS,EAAEH,MAAMuC,cAAcpC,EAAEE,SAAS,CAClC,CAGA,GAAI,KAAKT,YAAc,KAAM,CAC5B,IAAM0C,EAAO,KAAK1C,UAClB,KAAKA,UAAY,KACb0C,IAAS,KAAK5C,eACjB,KAAKuC,cAAcK,CAAAA,CAErB,CACD,CACD,EClLO,IAAME,GAAN,cAAuBC,CAAAA,CAL9B,MAK8BA,CAAAA,EAAAA,iBAE7BC,WACAC,UAEAC,MACAC,WAAqB,EAErB,YAAYC,EAAqB,CAChC,MAAK,EACL,KAAKF,MAAQE,CACd,CAEAC,WAAWD,EAAK,CACf,GAAG,KAAKJ,WAAW,CAClBM,GAAmB,KAAKN,WAAY,KAAKC,SAAS,EAGlD,IAAIM,EAAO,KAAKP,WAAWQ,cAAcC,cAAc,KAAA,EAGvD,IAFAF,EAAKG,UAAYN,EAEVG,EAAKI,YACX,KAAKV,UAAUW,cAAcC,aAAaN,EAAKI,WAAY,KAAKV,SAAS,CAE3E,CACD,CAEAa,QAAQC,EAAqB,CAC5B,IAAIX,EAAO,GACR,KAAKF,iBAAiBc,GACxBZ,EAAO,KAAKF,MAAMe,KAAI,GAAM,GAC5B,KAAKd,WAAa,KAAKD,MAAMgB,WAAW,IAAI,GAG5Cd,EAAO,KAAKF,MAGb,KAAKF,WAAae,EAAOP,cAAcW,eAAe,EAAA,EACtD,KAAKlB,UAAYc,EAAOP,cAAcW,eAAe,EAAA,EACrDJ,EAAOK,YAAY,KAAKpB,UAAU,EAClCe,EAAOK,YAAY,KAAKnB,SAAS,EACjC,KAAKI,WAAWD,GAAQ,EAAA,CACzB,CAEAiB,WAAY,CACX,GAAG,KAAKrB,WAAW,CAClB,IAAIsB,EAAS,KAAKtB,WAAWY,cAG7BN,GAAmB,KAAKN,WAAY,KAAKC,SAAS,EAElDqB,EAAOC,YAAY,KAAKvB,UAAU,EAClCsB,EAAOC,YAAY,KAAKtB,SAAS,EACjC,KAAKD,WAAa,KAClB,KAAKC,UAAY,IAClB,CAEG,KAAKE,YAAc,KAAKD,iBAAiBc,IAC3C,KAAKd,MAAMsB,aAAa,KAAKrB,UAAU,EACvC,KAAKA,WAAa,EAEpB,CAEAsB,WAAoB,CACnB,GAAG,CAAC,KAAKzB,WAAY,MAAO,CAAA,EAC5B,IAAI0B,EAAQ,CAAC,KAAK1B,YACd2B,EAAO,KAAK3B,WAAW4B,YAC3B,KAAMD,GAAQA,IAAS,KAAK1B,WAC3ByB,EAAMG,KAAKF,CAAAA,EACXA,EAAOA,EAAKC,YAEbF,OAAAA,EAAMG,KAAK,KAAK5B,SAAS,EAClByB,CACR,CAEAI,eAA6B,CAC5B,OAAO,IACR,CAEAC,UAAU,CACT,OAAO,KAAK7B,iBAAiBc,EAAU,KAAKd,MAAMe,KAAI,EAAK,KAAKf,KACjE,CACD,ECrFA,IAAqB8B,GAArB,KAAqBA,CAArB,MAAqBA,CAAAA,EAAAA,qBAEpBC,YACAC,UAEA,YAAYD,EAA0BC,EAAkB,CACvD,KAAKD,YAAcA,EACnB,KAAKC,UAAYA,CAClB,CACD,ECEA,IAAqBC,GAArB,KAAqBA,CAZrB,MAYqBA,CAAAA,EAAAA,qBACpBC,cACAC,KACAC,OAAkB,GAClBC,SAAoB,GAEpB,YAAYH,EAAyBC,EAAU,CAC9C,KAAKD,cAAgBA,EACrB,KAAKC,KAAOA,CACb,CAGAG,QAAc,CACb,GAAG,CAAC,KAAKF,OAAQ,OACjB,IAAIG,EAAQ,KAAKL,cAAcM,KAAI,EAEnC,GAAG,KAAKL,gBAAgBM,EACvB,KAAKN,KAAKO,SAASC,YAAcJ,GAAmB,WAE7C,KAAKJ,KAAKS,gBACjB,KAAKT,KAAKG,OAAOC,CAAAA,UAEV,KAAKJ,gBAAgBU,GAC5B,KAAKV,KAAKW,WAAWP,CAAAA,UAEd,KAAKJ,gBAAgBY,GAC5B,KAAKZ,KAAKa,YAAYC,mBAAmB,KAAKd,KAAKe,UAAWX,CAAAA,UAEvD,KAAKJ,gBAAgBgB,EAC5B,KAAKhB,KAAKG,OAAM,MAEZ,IAAG,KAAKH,gBAAgBiB,GAE5B,OAAO,KAAKjB,KAAKkB,WAAU,EAEpB,KAAKlB,gBAAgBmB,GAE5B,KAAKnB,KAAKoB,iBAAgB,EAEnB,KAAKpB,gBAAgBqB,UAC5B,KAAKrB,KAAKI,CAAAA,EAEZ,CACD,EC1CO,IAAMkB,EAA8B,CAAA,EAW3C,IAAMC,GAAY,EAEZC,GAAaD,GAAY,EAEVE,EAArB,KAAqBA,CApBrB,MAoBqBA,CAAAA,EAAAA,eAEpBC,OAAWC,EAGS,CACnB,IAAIC,EAAK,IAAIC,EAAe,IAAI,EAEhC,OAAGF,EAAU,MAAWA,EAAU,MACjCC,EAAGE,WAAa,CACfC,QAASJ,CACV,EAGAC,EAAGE,WAAaH,EAGVC,CACR,CAEAI,MAAsB,CACrB,OAAO,IAAIH,EAAc,IAAI,CAC9B,CAEAI,OACAC,IAEAC,YAAc,IAAIC,IAElB,IAAIC,YAAsB,CACzB,MAAO,EACR,CAEA,aAAc,CACd,CAEA,IAAIC,OAAW,CACd,IAAMC,EAASC,EAAgBA,EAAgBC,OAAS,CAAA,EACxD,OAAIF,GAAUA,EAAOG,eACpBH,EAAOG,cAAc,IAAI,EAEnB,KAAKT,MACb,CAEA,IAAIK,MAAMK,EAAM,CACf,KAAKC,SAASD,CAAAA,CACf,CAEAE,UAAc,CACb,OAAO,KAAKP,KACb,CAEAM,SAASD,EAAMG,EAAqBC,EAASC,OAAQ,CAChD,KAAKf,SAAWU,IACpB,KAAKV,OAASU,EACd,KAAKM,QAAQ,KAAKhB,OAAQa,CAAAA,EAC3B,CAEQG,QAAQX,EAAUQ,EAAqBC,EAASC,OAAO,CAC9D,QAAUE,KAAO,KAAKf,YAAYgB,OAAM,EAClCD,EAAYE,KAChBF,EAAIG,OAAM,GAEN,CAACH,EAAII,UAAYR,IAAaC,EAASQ,YAC1CC,EAAUC,QAAQP,EAAKJ,CAAAA,CAI3B,CAEAY,OAAS,EAETC,UAAUC,EAAoBR,EAAgB,GAAO,CAEpD,OADS,IAAIvB,EAAQ,IAAI,EACfgC,WAAWD,EAAUR,CAAAA,CAChC,CAEAS,WAAWC,EAAyBC,EAAWX,EAAgB,GAAM,CACpE,IAAIY,EAAK,KAAKN,SACRR,EAAM,IAAIe,GAAaH,EAAeC,CAAAA,EAC3Cb,OAAAA,EAAYE,KAAOA,EACpB,KAAKjB,YAAY+B,IAAIF,EAAId,CAAAA,EAElBc,CACR,CAEAG,YAAYH,EAAY,CACpB,KAAK7B,YAAYiC,IAAIJ,CAAAA,IACvB,KAAK7B,YAAYkC,IAAIL,CAAAA,EAAKzB,OAAS,GACnC,KAAKJ,YAAYmC,OAAON,CAAAA,EAE1B,CAEAO,eAAeP,EAAY,CAC1B,KAAKG,YAAYH,CAAAA,CAClB,CAIAQ,QAAQ1B,EAAqBC,EAASC,OAAc,CACnD,IAAIyB,EAAe,KAAKnC,MAExB,KAAKW,QAAQwB,EAAc3B,CAAAA,CAC5B,CAEA4B,gBAAgB5B,EAAqBC,EAASC,OAAc,CAC3D,KAAKwB,QAAQ1B,CAAAA,CACd,CAED,EClIA,IAAqB6B,GAArB,cAA4CC,CAAAA,CAR5C,MAQ4CA,CAAAA,EAAAA,uBAE3CC,KACAC,MACAC,OAEAC,YAAuC,CAAC,EAExC,YAAYC,EAAUC,EAAU,CAC/B,MAAK,EACL,KAAKL,KAAOI,EACZ,KAAKH,MAAQI,CACd,CAEAC,OAAOJ,EAAoB,CAC1B,KAAKA,OAASA,EAGb,QAAQK,KAAK,KAAKN,MAAM,CACvB,IAAIO,EAAK,KAAKP,MAAcM,CAAAA,EAI5B,GAFGC,aAAaC,IAAQD,EAAIA,EAAEE,KAAI,GAE/BF,GAAKA,aAAaG,EAAQ,CAC5B,IAAIC,EAAKJ,EAAEK,WAAW,IAAI,EAC1B,KAAKV,YAAYS,CAAAA,EAAMJ,CACxB,CACD,CAIA,KAAKM,OAAM,CAEb,CAEAA,QAAQ,CACP,GAAG,CAAC,KAAKZ,OAAQ,OAEjB,IAAIa,EAAS,CAAA,EACb,QAAQR,KAAK,KAAKN,MAAM,CACvB,IAAIO,EAAK,KAAKP,MAAcM,CAAAA,EACzBC,IACCA,aAAaC,IAAQD,EAAIA,EAAEE,KAAI,IAC/B,EAAEF,aAAaG,IAAYH,EAAEQ,KAAI,IACnCD,EAAOE,KAAKV,CAAAA,EAGf,CACA,KAAKL,OAAOgB,aAAa,KAAKlB,KAAMe,EAAOI,KAAK,GAAA,CAAA,CACjD,CAEAC,UAAU,CACT,KAAKlB,OAAS,KAEd,QAAQmB,KAAK,KAAKlB,YACT,KAAKA,YAAYkB,CAAAA,EACvBC,aAAaC,OAAOF,CAAAA,CAAAA,EAGvB,KAAKlB,YAAc,CAAC,CACrB,CACD,ECnEA,IAAMqB,GAAW,CAChBC,MAAO,sKACPC,OAAQ,2nBACRC,OAAQ,mEACRC,IAAK,2EACLC,eAAgB,YAChBC,OAAQ,yBACRC,KAAM,8FACNC,KAAM,w9EACP,EAEMC,GAAiB,kFAAkFC,MAAM,GAAA,EAEzGC,GAAe,OAAOD,MAAM,GAAA,EAC5BE,GAAgB,oBAAoBF,MAAM,GAAA,EAC1CG,GAAoB,SAASH,MAAM,GAAA,EAWnCI,GAAoC,CAAC,EAE3C,QAAQC,KAAWf,GAAS,CAC3B,IAAIgB,EAAQhB,GAASe,CAAAA,EAASL,MAAM,GAAA,EACpC,QAAQO,KAAKD,EAAM,CAClB,IAAIE,EAAMD,EAAEP,MAAM,GAAA,EAAKS,KAAK,EAAA,EAC5B,OAAOJ,EAAAA,CACN,IAAK,SACL,IAAK,SAAU,CACd,QAAQK,KAAKX,GACZK,GAAS,GAAGI,CAAAA,GAAME,CAAAA,EAAG,EAAI,CACxBC,QAASH,EACTI,QAASL,EAAEM,YAAW,EACtBC,KAAMT,EACNU,KAAML,GAAK,IAAM,IAAMA,EAAEG,YAAW,CACrC,EAED,KACD,CACA,IAAK,OAAQ,CACZ,QAAQH,KAAKT,GACZG,GAAS,GAAGI,CAAAA,GAAME,CAAAA,EAAG,EAAI,CACxBC,QAASH,EACTI,QAASL,EAAEM,YAAW,EACtBC,KAAMT,EACNU,KAAML,EAAEG,YAAW,CACpB,EAED,KACD,CACA,IAAK,QAAS,CACb,QAAQH,KAAKR,GACZE,GAAS,GAAGI,CAAAA,GAAME,CAAAA,EAAG,EAAI,CACxBC,QAASH,EACTI,QAASL,EAAEM,YAAW,EACtBC,KAAMT,EACNU,KAAML,EAAEG,YAAW,CACpB,EAED,KACD,CACA,IAAK,YAAa,CACjB,QAAQH,KAAKP,GACZC,GAAS,GAAGI,CAAAA,GAAME,CAAAA,EAAG,EAAI,CACxBC,QAASH,EACTI,QAASL,EAAEM,YAAW,EACtBC,KAAMT,EACNU,KAAML,EAAEG,YAAW,CACpB,EAED,KACD,CACA,QACC,KAEF,CAEAT,GAASI,CAAAA,EAAO,CACfG,QAASH,EACTI,QAASL,EAAEM,YAAW,EACtBC,KAAMT,EACNU,KAAMC,MACP,CACD,CACD,CAEA,IAAAC,GAAeb,GC3Ff,IAA8Bc,EAA9B,KAA8BA,CAH9B,MAG8BA,CAAAA,EAAAA,iCAE7BC,MAGK,CAAA,EACIC,SAET,YAAYA,EAAiB,CAC5B,KAAKA,SAAWA,CACjB,CAEAC,UAAmB,CAClB,IAAIC,EAAS,GAGb,QAASC,KAAK,KAAKJ,MAAO,CACzB,IAAIK,EAAYC,MAAMC,KAAKH,EAAEI,IAAI,EAAEC,IAAIC,GAAAA,CACtC,IAAIC,EAAKD,EAAYC,IAAMC,OAAaF,EAAYC,EAAID,EACpDG,EAAKH,EAAYG,IAAOC,GAAQ,GAAGA,CAAAA,IAEvC,OAAIH,aAAaI,EACTF,EAAEF,EAAEK,KAAI,CAAA,EACLL,aAAaM,EAChBJ,EAAEF,EAAEO,KAAK,EAGTL,EAAEF,CAAAA,EAAGT,SAAQ,EAAGiB,MAAM,GAAA,EAAKC,KAAK,IAAA,CAEzC,CAAA,EAAGA,KAAK,IAAA,EAGRjB,GAAU,GAAGC,EAAEiB,IAAI,IAAIhB,CAAAA,IACxB,CAEA,OAAOF,EAAOmB,KAAI,CACnB,CAEAC,eAAeC,EAAgBhB,EAAK,CACnC,YAAKR,MAAMyB,KAAK,CAACJ,KAAMG,EAAQhB,KAAMA,CAAI,CAAA,EAClC,IACR,CAED,EC1CO,SAASkB,EAAgBC,EAAwEC,EAAe,KAAI,CAI1H,GAHAD,EAAQA,GAAS,MACdA,aAAiBE,IAASF,EAAQA,EAAMG,KAAI,GAC5CH,aAAiBI,IAAQJ,EAAQA,EAAMA,OACvCA,aAAiBK,MACnB,OAAOL,EAAMM,IAAIC,GAAGR,EAAgBQ,EAAGN,CAAAA,CAAAA,EAAeO,KAAK,GAAA,EAExDC,MAAMT,CAAAA,IAAkBA,EAASA,EAAmBC,GACxD,IAAIS,EAAUV,EAAiBW,KAAI,EAAGC,MAAM,GAAA,EAC5C,GAAGF,EAAOG,OAAS,EAClB,OAAOH,EAAOJ,IAAIQ,GAAGf,EAAgBe,EAAGb,CAAAA,CAAAA,EAAeO,KAAK,GAAA,EAEzD,CACH,IAAIK,EAASE,OAAQf,EAAiBgB,MAAMC,EAAAA,EAAY,CAAA,CAAE,EACtDC,EAASlB,EAAiBY,MAAMK,EAAAA,EAAY,CAAA,GAAMhB,EAEtD,MAAO,GAAGY,CAAAA,GAASK,CAAAA,EACpB,CACD,CAlBgBnB,EAAAA,EAAAA,mBAoBT,SAASoB,GAAoBnB,EAAuE,CAI1G,GAHAA,EAAQA,GAAS,KACdA,aAAiBE,IAASF,EAAQA,EAAMG,KAAI,GAC5CH,aAAiBI,IAAQJ,EAAQA,EAAMA,OACvCA,aAAiBK,MACnB,OAAOL,EAAMM,IAAIC,GAAGY,GAAoBZ,CAAAA,CAAAA,EAAIC,KAAK,GAAA,EAElD,IAAIE,EAAUV,EAAiBW,KAAI,EAAGC,MAAM,GAAA,EAC5C,OAAGF,EAAOG,OAAS,EACXH,EAAOJ,IAAIQ,GAAGK,GAAoBL,CAAAA,CAAAA,EAAIN,KAAK,GAAA,EAG3CC,MAAMT,CAAAA,EAAgBA,EAAQ,GAAGA,CAAAA,GAE1C,CAdgBmB,EAAAA,GAAAA,uBAgBT,SAASC,GAAepB,EAAoB,CAQlD,GAAG,OAAOA,GAAS,SAAU,CAE5B,IAAIqB,EAAI,EACJC,EAAI,EACJC,EAAI,EACJC,EAAI,EAERD,OAAAA,EAAIvB,EAAQ,IACZA,IAAU,EACVsB,EAAItB,EAAQ,IACZA,IAAU,EACVqB,EAAIrB,EAAQ,IAEL,OAAOqB,CAAAA,IAAKC,CAAAA,IAAKC,CAAAA,GACzB,SACQ,OAAOvB,GAAS,SACvB,OAAOA,CAET,CA1BgBoB,EAAAA,GAAAA,kBA4BT,SAASK,EAAezB,EAAuE,CAIrG,GAHAA,EAAQA,GAAS,OACdA,aAAiBE,IAASF,EAAQA,EAAMG,KAAI,GAC5CH,aAAiBI,IAAQJ,EAAQA,EAAMA,OACvCA,aAAiBK,MACnB,OAAOL,EAAMM,IAAIC,GAAGkB,EAAelB,CAAAA,CAAAA,EAAIC,KAAK,GAAA,EAEzCC,MAAMT,CAAAA,IAAkBA,EAAQ,GAAGA,CAAAA,OACvC,IAAIU,EAAUV,EAAiBW,KAAI,EAAGC,MAAM,GAAA,EAC5C,GAAGF,EAAOG,OAAS,EAClB,OAAOH,EAAOJ,IAAIQ,GAAGW,EAAeX,CAAAA,CAAAA,EAAIN,KAAK,GAAA,EAE1C,CACH,IAAIkB,EAAQX,OAAQf,EAAiBgB,MAAMC,EAAAA,EAAY,CAAA,CAAE,EACrDC,EAASlB,EAAiBY,MAAMK,EAAAA,EAAY,CAAA,GAAM,MAEtD,MAAO,GAAGS,CAAAA,GAAQR,CAAAA,EACnB,CACD,CAlBgBO,EAAAA,EAAAA,kBCjEhB,IAAqBE,EAArB,cAA0CC,CAAAA,CAH1C,MAG0CA,CAAAA,EAAAA,qBAEzCC,KAAKC,EAAE,CACN,OAAO,KAAKC,eAAe,OAAQ,CAAC,CAACD,EAAAA,EAAGE,EAAGC,CAAe,EAAE,CAC7D,CACAC,WAAWJ,EAAE,CACZ,OAAO,KAAKC,eAAe,aAAc,CAAC,CAACD,EAAAA,EAAGE,EAAGG,EAAmB,EAAE,CACvE,CACAC,SAASN,EAAE,CACV,OAAO,KAAKC,eAAe,WAAY,CAAC,CAACD,EAAAA,EAAGE,EAAGC,CAAe,EAAE,CACjE,CACAI,WAAWC,EAAGC,EAAGV,EAAMW,EAAM,CAC5B,OAAO,KAAKT,eAAe,cAAe,CAAC,CAACD,EAAGQ,EAAGN,EAAGC,CAAe,EAAG,CAACH,EAAGS,EAAGP,EAAGC,CAAe,EAAG,CAACH,EAAGD,EAAMG,EAAGC,CAAe,EAAG,CAACH,EAAGU,EAAOR,EAAGS,EAAc,EAAE,CACjK,CACAC,UAAUZ,EAAE,CACX,OAAO,KAAKC,eAAe,YAAa,CAAC,CAACD,EAAAA,EAAGE,EAAGC,CAAe,EAAE,CAClE,CACAU,UAAUb,EAAE,CACX,OAAO,KAAKC,eAAe,aAAc,CAAC,CAACD,EAAAA,EAAGE,EAAGC,CAAe,EAAE,CACnE,CACAW,OAAOd,EAAE,CACR,OAAO,KAAKC,eAAe,SAAU,CAAC,CAACD,EAAAA,EAAGE,EAAGC,CAAe,EAAE,CAC/D,CACAY,QAAQf,EAAE,CACT,OAAO,KAAKC,eAAe,UAAW,CAAC,CAACD,EAAAA,EAAGE,EAAGC,CAAe,EAAE,CAChE,CACAa,MAAMhB,EAAE,CACP,OAAO,KAAKC,eAAe,QAAS,CAAC,CAACD,EAAAA,EAAGE,EAAGC,CAAe,EAAE,CAC9D,CACAc,SAASjB,EAAE,CACV,OAAO,KAAKC,eAAe,WAAY,CAAC,CAACD,EAAAA,EAAGE,EAAGC,CAAe,EAAE,CACjE,CACD,EC/BA,IAAqBe,EAArB,cAA6CC,CAAAA,CAJ7C,MAI6CA,CAAAA,EAAAA,wBAE5CC,SAASC,EAAWC,EAAWC,EAAWC,EAAWC,EAAWC,EAAWC,EAAWC,EAAWC,EAAWC,EAAWC,EAAWC,EAAWC,EAAWC,EAAWC,GAAWC,GAAU,CACvL,OAAO,KAAKC,eAAe,WAAYC,SAAAA,CACxC,CAEAC,OAAOC,EAAWC,EAAWC,EAAWC,EAAWC,EAAYC,EAAW,CACzE,OAAO,KAAKR,eAAe,SAAUC,SAAAA,CACtC,CAEAQ,UAAUC,EAAEC,EAAG,CACd,OAAOV,UAAUW,QAAU,EACxB,KAAKZ,eAAe,YAAa,CAAC,CAACa,EAAEC,EAAiBC,EAAEL,CAAC,EAAE,EAC3D,KAAKV,eAAe,YAAa,CAAC,CAACa,EAAEC,EAAiBC,EAAEL,CAAC,EAAG,CAACG,EAAEC,EAAiBC,EAAEJ,CAAC,EAAE,CACzF,CAEAK,YAAYN,EAAEC,EAAEM,EAAE,CACjB,OAAO,KAAKjB,eAAe,cAAe,CAAC,CAACa,EAAEC,EAAiBC,EAAEL,CAAC,EAAG,CAACG,EAAEC,EAAiBC,EAAEJ,CAAC,EAAG,CAACE,EAAEC,EAAiBC,EAAEE,CAAC,EAAE,CACzH,CAEAC,WAAWR,EAAE,CACZ,OAAO,KAAKV,eAAe,aAAc,CAAC,CAACa,EAAEC,EAAiBC,EAAEL,CAAC,EAAE,CACpE,CAEAS,WAAWR,EAAE,CACZ,OAAO,KAAKX,eAAe,aAAc,CAAC,CAACa,EAAEC,EAAiBC,EAAEJ,CAAC,EAAE,CACpE,CAEAS,WAAWH,EAAE,CACZ,OAAO,KAAKjB,eAAe,aAAc,CAAC,CAACa,EAAEC,EAAiBC,EAAEE,CAAC,EAAE,CACpE,CAEAI,MAAMX,EAASC,EAAU,CACxB,OAAO,KAAKX,eAAe,QAAS,CAACU,EAAEC,GAAG,EAAE,CAC7C,CAEAW,QAAQZ,EAASC,EAASM,EAAS,CAClC,OAAO,KAAKjB,eAAe,UAAW,CAACU,EAAEC,EAAEM,EAAE,CAC9C,CAEAM,OAAOb,EAAS,CACf,OAAO,KAAKV,eAAe,SAAU,CAACU,EAAE,CACzC,CAEAc,OAAOb,EAAS,CACf,OAAO,KAAKX,eAAe,SAAU,CAACW,EAAE,CACzC,CAEAc,OAAOR,EAAS,CACf,OAAO,KAAKjB,eAAe,SAAU,CAACiB,EAAE,CACzC,CAEAS,OAAOhB,EAAE,CACR,OAAO,KAAKV,eAAe,SAAU,CAAC,CAACa,EAAEc,EAAgBZ,EAAEL,CAAC,EAAE,CAC/D,CAEAkB,SAASlB,EAAWC,EAAWM,EAAWd,EAAE,CAC3C,OAAO,KAAKH,eAAe,WAAY,CAACU,EAAGC,EAAGM,EAAG,CAACJ,EAAEc,EAAgBZ,EAAEZ,CAAC,EAAE,CAC1E,CAGA0B,YAAYnB,EAAWC,EAAWM,EAAWd,EAAU,CAAC,OAAO,KAAKyB,SAASlB,EAAEC,EAAEM,EAAEd,CAAAA,CAAG,CACtF2B,YAAYpB,EAAWC,EAAWM,EAAWd,EAAU,CAAC,OAAO,KAAKyB,SAASlB,EAAEC,EAAEM,EAAE,GAAGd,CAAAA,KAAM,CAAE,CAC9F4B,aAAarB,EAAWC,EAAWM,EAAWd,EAAU,CAAC,OAAO,KAAKyB,SAASlB,EAAEC,EAAEM,EAAE,GAAGd,CAAAA,MAAO,CAAE,CAChG6B,aAAatB,EAAWC,EAAWM,EAAWd,EAAU,CAAC,OAAO,KAAKyB,SAASlB,EAAEC,EAAEM,EAAE,GAAGd,CAAAA,MAAO,CAAE,CAEhG8B,QAAQvB,EAAE,CACT,OAAO,KAAKV,eAAe,UAAW,CAAC,CAACa,EAAEc,EAAgBZ,EAAEL,CAAC,EAAE,CAChE,CAEAwB,QAAQvB,EAAE,CACT,OAAO,KAAKX,eAAe,UAAW,CAAC,CAACa,EAAEc,EAAgBZ,EAAEJ,CAAC,EAAE,CAChE,CAEAwB,QAAQlB,EAAE,CACT,OAAO,KAAKjB,eAAe,UAAW,CAAC,CAACa,EAAEc,EAAgBZ,EAAEE,CAAC,EAAE,CAChE,CAEAmB,KAAK1B,EAAGC,EAAG,CACV,OAAOV,UAAUW,QAAU,EACxB,KAAKZ,eAAe,OAAQ,CAAC,CAACa,EAAEc,EAAgBZ,EAAEL,CAAC,EAAE,EACrD,KAAKV,eAAe,OAAQ,CAAC,CAACa,EAAEc,EAAgBZ,EAAEL,CAAC,EAAG,CAACG,EAAEc,EAAgBZ,EAAEJ,CAAC,EAAE,CAClF,CAEA0B,MAAM3B,EAAE,CACP,OAAO,KAAKV,eAAe,QAAS,CAAC,CAACa,EAAEc,EAAgBZ,EAAEL,CAAC,EAAE,CAC9D,CAEA4B,MAAM3B,EAAE,CACP,OAAO,KAAKX,eAAe,QAAS,CAAC,CAACa,EAAEc,EAAgBZ,EAAEJ,CAAC,EAAE,CAC9D,CAEA4B,YAAYjC,EAAE,CACb,OAAO,KAAKN,eAAe,cAAe,CAAC,CAACa,EAAEC,EAAiBC,EAAET,CAAC,EAAE,CACrE,CACD,EC/FA,IAAqBkC,EAArB,MAAqBA,CAAAA,CAFrB,MAEqBA,CAAAA,EAAAA,mBAKHC,QAAU,GACnBC,MAA6C,CAAA,EAC7CC,SAERC,QAAQC,EAAkBC,EAAY,CACrC,OAAI,KAAKL,QACO,IAAID,EAAAA,EACHI,QAAQC,EAAUC,CAAAA,GAGlC,KAAKJ,MAAMK,KAAK,CAAEC,KAAMH,EAAUC,MAAOA,CAAM,CAAA,EAC3C,KAAKH,UAAU,KAAKA,SAAQ,EACzB,KAET,CAEAM,aAAaC,EAAsB,CAClC,KAAKP,SAAWO,CACjB,CAOAC,SAASC,EAAcN,EAAY,CAClC,OAAKM,EAAKC,WAAW,IAAA,IAAOD,EAAO,KAAOA,GACnC,KAAKR,QAAQQ,EAAMN,CAAAA,CAC3B,CAOAQ,EAAEF,EAAsB,CACvB,OAAKA,EAAKC,WAAW,IAAA,IAAOD,EAAO,KAAOA,GACnC,OAAOA,CAAAA,GACf,CAEAG,UAAW,CACV,OAAO,KAAKb,KACb,CACD,EAGA,QAASc,KAAOC,GACfjB,EAAWkB,UAAUF,CAAAA,EAAO,SAAUV,EAAU,CAG/C,OAAO,KAAKF,QAAQY,EAAKV,CAAAA,CAC1B,EC9CD,IAAqBa,EAArB,cAAwCC,CAAAA,CAbxC,MAawCA,CAAAA,EAAAA,mBACvCC,OACAC,SACAC,WACAC,YACQC,aAEAC,YAA8B,CAAA,EAC9BC,cAA+B,CAAA,EAC/BC,SAAW,GACXC,mBAAqB,CAC5BC,OAAQ,GACRC,OAAQC,EAAA,IAAA,CACP,KAAKJ,SAAW,GAChB,KAAKK,YAAW,CACjB,EAHQ,SAIT,EAEA,YAAYT,EAAmC,CAC9C,MAAK,EACL,KAAKA,YAAcA,EAEf,KAAKA,uBAAuBU,GAC/B,KAAKV,YAAYW,aAAa,IAAM,KAAKJ,OAAM,CAAA,EAGhD,KAAKK,mBAAkB,CACxB,CAEQA,oBAAqB,CAC5B,IAAMC,EAAS,KAAKb,uBAAuBU,EAAa,KAAKV,YAAYc,SAAQ,EAAK,KAAKd,YAE3F,GAAIe,MAAMC,QAAQH,CAAAA,EAEjB,QAASI,EAAI,EAAGA,EAAIJ,EAAOK,OAAQD,IAAK,CACvC,IAAIE,EAAIN,EAAOI,CAAAA,EACf,KAAKG,aAAaD,EAAEE,KAAMF,EAAEG,MAAQC,GAAWJ,EAAEG,MAAQC,CAAAA,CAC1D,KAGA,SAASF,KAAQR,EAChB,KAAKO,aAAaC,EAAMR,EAAOQ,CAAAA,EAAQE,GAAWV,EAAOQ,CAAAA,EAAQE,CAAAA,CAGpE,CAEQH,aAAaC,EAAcC,EAAYE,EAA0B,CACxE,GAAI,CAAC,KAAKC,qBAAqBH,CAAAA,GAC1B,OAAOA,GAAU,UAAYA,IAAU,MAAQ,EAAEA,aAAiBI,GAA2B,CAEhG,IAAIC,EACJ,OAAQN,EAAAA,CACP,IAAK,SAAU,CACdM,EAAU,IAAIC,EAAaP,CAAAA,EAC3B,KACD,CACA,IAAK,YAAa,CACjBM,EAAU,IAAIE,EAAgBR,CAAAA,EAC9B,KACD,CACD,CAEA,GAAIM,EAAS,CACZ,IAAIG,EAAYf,MAAMC,QAAQM,CAAAA,EAASA,EAAQ,CAACA,GAChD,QAASS,KAAaD,EACrB,QAASE,KAAKD,EAAW,CACxB,IAAIE,EAAIF,EAAUC,CAAAA,EAElB,GADA,KAAKP,qBAAqBQ,CAAAA,EACtBlB,MAAMC,QAAQiB,CAAAA,EACjB,QAASC,KAAKD,EACb,KAAKR,qBAAqBS,CAAAA,EAI5B,IAAIC,EAAYH,EAAEI,QAAQ,QAAS,EAAA,EAC/B,OAAOT,EAAQQ,CAAAA,GAAe,aAC7BpB,MAAMC,QAAQiB,CAAAA,EACjBN,EAAQQ,CAAAA,EAAU,GAAIF,CAAAA,EAEtBN,EAAQQ,CAAAA,EAAWF,CAAAA,EAGtB,CAEDT,EAAOG,CAAAA,CACR,CACD,CAEF,CAEQF,qBAAqBH,EAAqB,CACjD,GAAIA,aAAiBe,GAAWf,aAAiBgB,EAAQ,CACxD,GAAI,KAAKpC,YAAYqC,QAAQjB,CAAAA,IAAkB,KAC9C,KAAKpB,YAAYsC,KAAKlB,CAAAA,EAClB,KAAKzB,QAAQ,CAEhB,IAAI4C,EAAMnB,EAAcoB,UAAU,IAAM,KAAKnC,OAAM,CAAA,EACnD,KAAKJ,cAAcqC,KAAKC,CAAAA,CACzB,CAED,MAAO,EACR,CACA,MAAO,EACR,CAEAE,OAAO9C,EAA8BC,EAAqB8C,OAAO9C,SAAUC,EAAyB,CACnG,KAAKF,OAASA,EACd,KAAKC,SAAWA,EAChB,KAAKC,WAAaA,EAElB,QAAS8C,KAAc,KAAK3C,YAAa,CACxC,IAAIuC,EAAMI,EAAmBH,UAAU,IAAM,KAAKnC,OAAM,CAAA,EACxD,KAAKJ,cAAcqC,KAAKC,CAAAA,CACzB,CAEI,OAAO5C,GAAW,WACrB,KAAKI,aAAe,KAAKH,SAASgD,cAAc,OAAA,EAC5C,KAAK/C,WACR,KAAKA,WAAWgD,YAAY,KAAK9C,YAAY,EAE7C,KAAKH,SAASkD,KAAKD,YAAY,KAAK9C,YAAY,GAIlD,KAAKQ,YAAW,CACjB,CAEAF,QAAS,CACH,KAAKH,WACT,KAAKA,SAAW,GAChB6C,EAAUC,QAAQ,KAAK7C,mBAA2B8C,EAASC,MAAM,EAEnE,CAEQ3C,aAAc,CACrB,GAAK,KAAKZ,OAEV,GAAI,OAAO,KAAKA,QAAW,SACtB,KAAKI,eACR,KAAKA,aAAaoD,YAAc,GAAG,KAAKxD,MAAM,MAAM,KAAKyD,eAAc,CAAA,UAElE,CACN,KAAK1C,mBAAkB,EAEvB,IAAMC,EAAS,KAAKb,uBAAuBU,EAAa,KAAKV,YAAYc,SAAQ,EAAK,KAAKd,YAE3F,GAAIe,MAAMC,QAAQH,CAAAA,EACjB,QAAWM,KAAKN,EAAQ,CACvB,IAAMS,EAAQH,EAAEG,iBAAiBe,EAAUlB,EAAEG,MAAMiC,KAAI,EAAMpC,EAAEG,iBAAiBgB,EAASnB,EAAEG,MAAMA,MAAQH,EAAEG,MAC3G,KAAKkC,iBAAiBrC,EAAEE,KAAMC,CAAAA,CAC/B,KAEA,SAASD,KAAQR,EAAQ,CACxB,IAAMS,EAAQT,EAAOQ,CAAAA,YAAiBgB,EAAUxB,EAAOQ,CAAAA,EAAMkC,KAAI,EAAM1C,EAAOQ,CAAAA,YAAiBiB,EAASzB,EAAOQ,CAAAA,EAAMC,MAAQT,EAAOQ,CAAAA,EACpI,KAAKmC,iBAAiBnC,EAAMC,CAAAA,CAC7B,CAEF,CACD,CAEQkC,iBAAiBnC,EAAcC,EAAY,CAClD,IAAImC,EACJ,GAAInC,aAAiBI,EACpB+B,EAAWnC,EAAMoC,SAAQ,UACf,OAAOpC,GAAU,UAAYA,IAAU,OAASD,IAAS,aAAeA,IAAS,UAAW,CACtG,IAAMM,EAAUN,IAAS,YAAc,IAAIQ,EAAgBR,CAAAA,EAAQ,IAAIO,EAAaP,CAAAA,EACpF,KAAKsC,qBAAqBhC,EAASL,CAAAA,EACnCmC,EAAW9B,EAAQ+B,SAAQ,CAC5B,MACCD,EAAWnC,EAGZ,IAAIsC,EAAUvC,EACVwC,EAEEC,EAAiBC,GAAS1C,CAAAA,EAC5ByC,IACHF,EAAUE,EAAeE,QACzBH,EAAUC,EAAeG,MACpBH,EAAeI,OAAS,UAAYJ,EAAeI,OAAS,WAAa,OAAOT,GAAa,SAC7FK,EAAeI,OAAS,UAAYL,IAAYM,SAGnDV,EAAWW,EAAgBX,EAAUI,CAAAA,GAE5BC,EAAeG,MAAQ,OAAOR,GAAa,WACrDA,EAAW,GAAGA,CAAAA,GAAWK,EAAeG,IAAI,KAI1C,KAAKpE,kBAAkBwE,aAC1B,KAAKxE,OAAOyE,MAAMC,YAAYX,EAAS,GAAGH,CAAAA,EAAU,CAEtD,CAEQH,gBAAyB,CAChC,IAAIkB,EAAS,GACP3D,EAAS,KAAKb,uBAAuBU,EAAa,KAAKV,YAAYc,SAAQ,EAAK,KAAKd,YAE3F,GAAIe,MAAMC,QAAQH,CAAAA,EACjB,QAAWM,KAAKN,EACf2D,GAAU,KAAKC,kBAAkBtD,EAAEE,KAAMF,EAAEG,KAAK,MAGjD,SAASD,KAAQR,EAChB2D,GAAU,KAAKC,kBAAkBpD,EAAMR,EAAOQ,CAAAA,CAAK,EAGrD,OAAOmD,CACR,CAEQb,qBAAqBhC,EAAmCL,EAAY,CAC3E,IAAIQ,EAAYf,MAAMC,QAAQM,CAAAA,EAASA,EAAQ,CAACA,GAChD,QAASS,KAAaD,EACrB,QAASE,KAAKD,EAAW,CACxB,IAAIE,EAAIF,EAAUC,CAAAA,EACdG,EAAYH,EAAEI,QAAQ,QAAS,EAAA,EAC/B,OAAOT,EAAQQ,CAAAA,GAAe,aAC7BpB,MAAMC,QAAQiB,CAAAA,EACjBN,EAAQQ,CAAAA,EAAU,GAAIF,CAAAA,EAEtBN,EAAQQ,CAAAA,EAAWF,CAAAA,EAGtB,CAEF,CAEQwC,kBAAkBpD,EAAcC,EAAoB,CAC3D,IAAImC,EAAWnC,aAAiBe,EAAUf,EAAMiC,KAAI,EAAMjC,aAAiBgB,EAAShB,EAAMA,MAAQA,EAClG,GAAImC,aAAoB/B,EACvB+B,EAAWA,EAASC,SAAQ,UAClB,OAAOD,GAAa,UAAYA,IAAa,OAASpC,IAAS,aAAeA,IAAS,UAAW,CAC5G,IAAMM,EAAUN,IAAS,YAAc,IAAIQ,EAAgBR,CAAAA,EAAQ,IAAIO,EAAaP,CAAAA,EACpF,KAAKsC,qBAAqBhC,EAAS8B,CAAAA,EACnCA,EAAW9B,EAAQ+B,SAAQ,CAC5B,CAEA,IAAIE,EAAUvC,EACVwC,EAEEC,EAAiBC,GAAS1C,CAAAA,EAChC,OAAIyC,IACHF,EAAUE,EAAeE,QACzBH,EAAUC,EAAeG,MACpBH,EAAeI,OAAS,UAAYJ,EAAeI,OAAS,WAAa,OAAOT,GAAa,SAC7FK,EAAeI,OAAS,UAAYL,IAAYM,SAGnDV,EAAWW,EAAgBX,EAAUI,CAAAA,GAE5BC,EAAeG,MAAQ,OAAOR,GAAa,WACrDA,EAAW,GAAGA,CAAAA,GAAWK,EAAeG,IAAI,KAGvC,GAAGL,CAAAA,KAAYH,CAAAA,IACvB,CAEAiB,UAAW,CACV,QAASzD,EAAI,EAAGA,EAAI,KAAKd,cAAce,OAAQD,IAAK,CACnD,IAAIwB,EAAK,KAAKtC,cAAcc,CAAAA,EACxB4B,EAAa,KAAK3C,YAAYe,CAAAA,EAC9B4B,aAAsBR,EACxBQ,EAAmB8B,aAAalC,CAAAA,EAEhCI,EAAmB+B,YAAYnC,CAAAA,CAElC,CACA,KAAKtC,cAAgB,CAAA,EACrB,KAAKD,YAAc,CAAA,EAEf,KAAKD,eACR,KAAKA,aAAa4E,OAAM,EACxB,KAAK5E,aAAe,MAGrB,KAAKJ,OAAS,KACd,KAAKQ,mBAAmBC,OAAS,EAClC,CAEAoD,UAAW,CACV,OAAI,OAAO,KAAK7D,QAAW,SACnB,GAAG,KAAKA,MAAM,MAAM,KAAKyD,eAAc,CAAA,KAEvC,KAAKA,eAAc,CAE5B,CACD,EC5SA,IAAqBwB,GAArB,KAAqBA,CAArB,MAAqBA,CAAAA,EAAAA,uBACbC,YACAC,OACAC,cACAC,KACAC,UACAC,iBACAC,OACCC,oBAAsB,GACtBC,6BAA+B,GAEvC,YAAYC,EAAU,CACrB,KAAKT,YAAcS,EACnB,KAAKR,OAASQ,EAAER,OAChB,KAAKC,cAAgBO,EAAEP,cACvB,KAAKC,KAAOM,EAAEN,KACd,KAAKC,UAAYK,EAAEL,UACnB,KAAKC,iBAAmBI,EAAEJ,iBAC1B,KAAKC,OAAUG,EAAUH,MAC1B,CAEAI,gBAAiB,CAChB,KAAKL,iBAAmB,GACxB,KAAKL,YAAYU,eAAc,CAChC,CAEAC,iBAAkB,CACjB,KAAKJ,oBAAsB,GAC3B,KAAKP,YAAYW,gBAAe,CACjC,CAEAC,0BAA2B,CAC1B,KAAKJ,6BAA+B,GACpC,KAAKD,oBAAsB,GAC3B,KAAKP,YAAYY,yBAAwB,CAC1C,CAEAC,sBAAuB,CACtB,OAAO,KAAKN,mBACb,CAEAO,+BAAgC,CAC/B,OAAO,KAAKN,4BACb,CACD,ECnCO,IAAMO,EAAN,MAAMA,CAAAA,CATb,MASaA,CAAAA,EAAAA,qBACZ,OAAeC,SAAW,IAAIC,IAE9B,OAAcC,eAAeC,EAAkC,CAC9D,IAAIC,EAAU,KAAKJ,SAASK,IAAIF,CAAAA,EAChC,OAAKC,IACJA,EAAU,IAAIL,EAAaI,CAAAA,EAC3B,KAAKH,SAASM,IAAIH,EAAUC,CAAAA,GAEtBA,CACR,CAEQD,SACAI,UAAY,IAAIC,QAChBC,iBAAmB,IAAIC,IAE/B,YAAYP,EAAoB,CAC/B,KAAKA,SAAWA,CACjB,CAEOQ,YAAYC,EAAkBC,EAAmBC,EAAuBC,EAAsB,CAAA,EAAI,CACxG,IAAIC,EAAmB,KAAKT,UAAUF,IAAIO,CAAAA,EACrCI,IACJA,EAAmB,IAAIf,IACvB,KAAKM,UAAUD,IAAIM,EAASI,CAAAA,GAG7B,IAAIC,EAAWD,EAAiBX,IAAIQ,CAAAA,EAC/BI,IACJA,EAAW,CAAA,EACXD,EAAiBV,IAAIO,EAAWI,CAAAA,GAGjCA,EAASC,KAAK,CAAEJ,QAAAA,EAASC,UAAAA,CAAU,CAAA,EAEnC,KAAKI,qBAAqBN,CAAAA,CAC3B,CAEOO,eAAeR,EAAkBC,EAAmBC,EAAuB,CACjF,IAAME,EAAmB,KAAKT,UAAUF,IAAIO,CAAAA,EAC5C,GAAI,CAACI,EAAkB,OAEvB,IAAMC,EAAWD,EAAiBX,IAAIQ,CAAAA,EACtC,GAAI,CAACI,EAAU,OAEf,IAAMI,EAAQJ,EAASK,UAAUC,GAAKA,EAAET,UAAYA,CAAAA,EAChDO,IAAU,IACbJ,EAASO,OAAOH,EAAO,CAAA,EAGpBJ,EAASQ,SAAW,GACvBT,EAAiBU,OAAOb,CAAAA,CAE1B,CAEQM,qBAAqBN,EAAmB,CAC/C,GAAI,KAAKJ,iBAAiBkB,IAAId,CAAAA,EAAY,OAE1C,IAAMe,EAAaf,IAAc,SAAWA,IAAc,OAC1D,KAAKV,SAAS0B,iBAAiBhB,EAAYiB,GAAAA,CAC1C,KAAKC,cAAclB,EAAWiB,CAAAA,CAC/B,EAAGF,CAAAA,EAEH,KAAKnB,iBAAiBuB,IAAInB,CAAAA,CAC3B,CAEQkB,cAAclB,EAAmBiB,EAAoB,CAC5D,IAAIG,EAAOH,EAAYI,aAAY,EACnC,GAAI,CAACD,GAAQA,EAAKR,SAAW,EAAG,CAE/BQ,EAAO,CAAA,EACP,IAAIE,EAAUL,EAAYM,OAC1B,KAAOD,GACNF,EAAKf,KAAKiB,CAAAA,EACVA,EAAUA,EAAQE,YAAcF,EAAQG,IAE1C,CACA,IAAMC,EAAiB,IAAIC,GAAeV,CAAAA,EAE1C,QAAWlB,KAAWqB,EAAM,CAC3B,GAAIrB,IAAY,KAAKT,UAAmBS,IAAY6B,OAAe,SAEnE,IAAMzB,EAAmB,KAAKT,UAAUF,IAAIO,CAAAA,EAC5C,GAAI,CAACI,EAAkB,SAEvB,IAAMC,EAAWD,EAAiBX,IAAIQ,CAAAA,EACtC,GAAKI,EAGJsB,CAAAA,EAAuBG,cAAgB9B,EAExC,OAAW,CAAEE,QAAAA,EAASC,UAAAA,CAAS,GAAM,IAAIE,GACxC,GAAIF,EAAAA,EAAU4B,SAAS,MAAA,GAAWb,EAAYM,SAAWxB,KAErDG,EAAU4B,SAAS,MAAA,GAASJ,EAAeK,gBAAe,EAC1D7B,EAAU4B,SAAS,SAAA,GAAYJ,EAAeM,eAAc,EAEhE/B,EAAQyB,CAAAA,EAEJxB,EAAU4B,SAAS,MAAA,GACtB,KAAKvB,eAAeR,EAASC,EAAWC,CAAAA,EAGrCyB,EAAeO,8BAA6B,GAC/C,MAIF,GAAIP,EAAeQ,qBAAoB,EACtC,MAEF,CACD,CACD,ECtGA,IAAqBC,EAArB,cAAyCC,CAAAA,CApBzC,MAoByCA,CAAAA,EAAAA,oBAEhCC,UAA2B,KACnC,IAAIC,UAA0B,CAC7B,OAAI,KAAKD,YACR,KAAKA,UAAY,IAAIE,EAAc,KAAKC,IAAI,EAC5C,KAAKH,UAAUI,QAAU,MAEnB,KAAKJ,SACb,CACA,IAAIC,SAASI,EAAsB,CAClC,KAAKL,UAAYK,CAClB,CACAC,QACAC,IAAc,KACNC,WAAiD,CAAC,EAClDC,OAA+E,CAAA,EAC/EC,qBAA+E,CAAA,EAC/EC,cAAgF,CAAA,EAChFC,WAAoC,CAAA,EACpCC,YAAiC,CAAA,EACjCC,IACRC,cACAC,yBACAC,uBACQC,mBAA8B,GAC9BC,YAAuB,GACvBC,eAA0C,CAAC,EAC3CC,iBAAwC,CAAC,EAEjD,YAAYC,EAAef,EAAY,CACtC,MAAMe,CAAAA,EACN,KAAKf,IAAMA,CACZ,CAEAgB,QAAQC,EAAkB,CACzB,KAAKC,YAAc,GAEnB,KAAKnB,QAAUkB,EAAKE,cAAcC,cAAc,KAAKpB,GAAG,EACxD,KAAKD,QAAQsB,CAAAA,EAAsB,KAChC,KAAKd,MACH,OAAO,KAAKA,KAAQ,WACvB,KAAKA,IAAI,KAAKR,OAAO,EAErB,KAAKQ,IAAIT,MAAQ,KAAKC,SAIxBkB,EAAKK,YAAY,KAAKvB,OAAO,EAE1B,KAAKN,WACP,KAAKA,UAAUuB,QAAQ,KAAKjB,OAAO,EAIpC,QAAQwB,EAAI,EAAGA,EAAI,KAAKrB,OAAOsB,OAAQD,IAAI,CAC1C,IAAIE,EAAI,KAAKvB,OAAOqB,CAAAA,EACpB,KAAKG,YAAYD,EAAEE,KAAMF,EAAEG,SAAUH,EAAEI,SAAS,CACjD,CAGI,KAAK5B,WAAW,OAAY6B,QAC/B,KAAKC,WAAW,OAAQ,KAAK9B,WAAW,KAAS,KAAKF,OAAO,EAG9D,QAAQiC,KAAK,KAAK/B,WACb+B,IAAM,QACV,KAAKD,WAAWC,EAAG,KAAK/B,WAAW+B,CAAAA,EAAI,KAAKjC,OAAO,EAGhD,KAAKkC,cACR,KAAKA,aAAa,KAAKlC,OAAO,CAEhC,CAEAmC,WAAY,CAKX,GAJG,CAAC,KAAKhB,cACT,KAAKA,YAAc,GAChB,KAAKzB,WAAW,KAAKA,UAAUyC,UAAS,EAExC,CAAC,KAAKnC,SAAS,OAElB,IAAMoC,EAAeC,EAAaC,eAAe,KAAKtC,QAAQoB,aAAa,EACxE,KAAKX,gBACP2B,EAAaG,eAAe,KAAKvC,QAAS,QAAS,KAAKS,aAAa,EACrE,KAAKA,cAAgB,MAGnB,KAAKC,2BACP0B,EAAaG,eAAe,KAAKvC,QAAS,mBAAoB,KAAKU,wBAAwB,EAC3F,KAAKA,yBAA2B,MAG9B,KAAKC,yBACPyB,EAAaG,eAAe,KAAKvC,QAAS,iBAAkB,KAAKW,sBAAsB,EACvF,KAAKA,uBAAyB,MAG/B,QAAQa,EAAI,EAAGA,EAAI,KAAKrB,OAAOsB,OAAQD,IAAI,CAC1C,IAAIE,EAAI,KAAKvB,OAAOqB,CAAAA,EACpBY,EAAaG,eAAe,KAAKvC,QAAS0B,EAAEE,KAAKY,YAAW,EAAId,EAAEG,QAAQ,CAC3E,CAEA,KAAK7B,QAAQyC,YAAYC,YAAY,KAAK1C,OAAO,EAEjD,QAAQwB,EAAI,EAAGA,EAAI,KAAKnB,cAAcoB,OAAQD,IAC7C,KAAKnB,cAAcmB,CAAAA,EAAGW,UAAS,EAEhC,KAAK9B,cAAcoB,OAAS,EAE5B,QAAQD,EAAI,EAAGA,EAAI,KAAKlB,WAAWmB,OAAQD,IAC1C,KAAKlB,WAAWkB,CAAAA,EAAGmB,SAAQ,EAE5B,KAAKrC,WAAWmB,OAAS,EAEzB,QAAQD,EAAI,EAAGA,EAAI,KAAKjB,YAAYkB,OAAQD,IAC3C,KAAKjB,YAAYiB,CAAAA,EAAGmB,SAAQ,EAE7B,KAAKpC,YAAYkB,OAAS,EAE1B,QAAQD,EAAI,EAAGA,EAAI,KAAKpB,qBAAqBqB,OAAQD,IAAI,CACxD,IAAIoB,EAAO,KAAKxC,qBAAqBoB,CAAAA,EACrCoB,EAAKC,WAAWC,aAAaF,EAAKG,EAAE,CACrC,CACA,KAAK3C,qBAAqBqB,OAAS,EAEhC,KAAKjB,MACH,OAAO,KAAKA,KAAQ,WACvB,KAAKA,IAAI,IAAA,EAET,KAAKA,IAAIT,MAAQ,MAGnB,KAAKC,QAAU,IAChB,CAEAgD,WAAoB,CACnB,OAAO,KAAKhD,QAAU,CAAC,KAAKA,SAAW,CAAA,CACxC,CAEAiD,eAA6B,CAC5B,OAAO,IACR,CAEAC,UAAmB,CAClB,OAAG,KAAKlD,QACA,KAAKA,QAAQmD,UAGb,MAAMD,SAAAA,CAEf,CAEAE,QAAQC,EAAMtD,EAAM,CAEnBsD,GAAQA,GAAQ,IAAIb,YAAW,EAC/B,IAAIc,EAAaD,EACjB,GAAGA,GAAQ,OAAO,CACjB,IAAIE,EAAW,KAAKrD,WAAW,KAC3BqD,aAAoBC,EAASD,EAAWA,EAASE,KAAI,EAChDF,aAAoBG,IAAQH,EAAWA,EAASxD,OAEzD,IAAM4D,EAAQ,OAAOJ,GAAa,SAAYA,EAASf,YAAW,EAAK,KACvEc,EAAc,KAAKrD,IAAIuC,YAAW,GAAM,UAAYmB,GAAQ,YAAcA,GAAQ,SAAY,UAAY,OAC3G,CAEA,IAAMC,EAAS,KAAK1D,WAAWmD,CAAAA,EAC/B,GAAIO,aAAkBC,EAAY,CACjCD,EAAOjB,SAAQ,EACf,IAAMmB,EAAM,KAAKvD,YAAYwD,QAAQH,CAAAA,EACjCE,IAAQ,IAAI,KAAKvD,YAAYyD,OAAOF,EAAK,CAAA,CAC9C,CACA,GAAIF,aAAkBK,GAAgB,CACrCL,EAAOjB,SAAQ,EACf,IAAMmB,EAAM,KAAKxD,WAAWyD,QAAQH,CAAAA,EAChCE,IAAQ,IAAI,KAAKxD,WAAW0D,OAAOF,EAAK,CAAA,CAC7C,CAGA,QAAStC,EAAI,EAAGA,EAAI,KAAKpB,qBAAqBqB,OAAQD,IAAK,CAC1D,IAAIoB,EAAO,KAAKxC,qBAAqBoB,CAAAA,EACrC,GAAIoB,EAAKS,OAASA,GAAQT,EAAKS,OAASC,EAAY,CACnDV,EAAKC,WAAWC,aAAaF,EAAKG,EAAE,EACpC,KAAK3C,qBAAqB4D,OAAOxC,EAAG,CAAA,EACpC,KACD,CACD,CAEA,GAAGzB,GAAS,OAAOA,GAAU,UAAY,EAAEA,aAAiBmE,OAASnE,aAAiByD,GAAWzD,aAAiB2D,GAAU3D,aAAiBoE,GAG5I,OAAOd,EAAAA,CACN,IAAK,QAAS,CACbtD,EAAQ,IAAI8D,EAAW9D,CAAAA,EACvB,KACD,CACA,IAAK,MAEJ,MAED,QAAS,CAERA,EAAQ,IAAIkE,GAAeZ,EAAMtD,CAAAA,EACjC,KACD,CACD,CAGD,GAAI,OAAOA,GAAU,YAAcsD,IAAS,QAAS,CACpD,IAAMe,EAAU,IAAID,EACpBpE,EAAMqE,CAAAA,EACNrE,EAAQ,IAAI8D,EAAWO,CAAAA,CACxB,CAEIrE,aAAiBoE,GAAcd,IAAS,UAC3CtD,EAAQ,IAAI8D,EAAW9D,CAAAA,GAGxB,KAAKG,WAAWmD,CAAAA,EAAQtD,EACrB,KAAKC,SACP,KAAKgC,WAAWqB,EAAMtD,EAAO,KAAKC,OAAO,CAE3C,CAEAqE,mBAAmBhB,EAActD,EAA0B,CACtD,KAAKC,SACT,KAAKgC,YAAYqB,GAAQ,IAAIb,YAAW,EAAIzC,EAAO,KAAKC,OAAO,CAChE,CAEQgC,WAAWqB,EAActD,EAA2BmB,EAAmBoD,EAA0B,GAAM,CAE9G,GAAGjB,GAAQ,OAAO,CACjB,IAAIE,EAAW,KAAKrD,WAAW,KAC3BqD,aAAoBC,EAASD,EAAWA,EAASE,KAAI,EAChDF,aAAoBG,IAAQH,EAAWA,EAASxD,OAEzD,IAAM4D,EAAQ,OAAOJ,GAAa,SAAYA,EAASf,YAAW,EAAK,KACvEa,EAAQ,KAAKpD,IAAIuC,YAAW,GAAM,UAAYmB,GAAQ,YAAcA,GAAQ,SAAY,UAAY,QACpGW,EAAiB,EAClB,CAEA,GAAGjB,GAAQ,MACV,KAAK7C,IAAMT,EACR,KAAKC,UACH,OAAO,KAAKQ,KAAQ,WACvB,KAAKA,IAAI,KAAKR,OAAO,EAErB,KAAKQ,IAAIT,MAAQ,KAAKC,iBAIjB,OAAOD,GAAU,UAAY,OAAOA,GAAU,SAClDsD,GAAQ,UAAY,KAAKpD,IAAIuC,YAAW,GAAM,SAAW,KAAKvC,IAAIuC,YAAW,GAAM,YAAc,KAAKvC,IAAIuC,YAAW,GAAM,WAC5HtB,EAAanB,MAAQA,GAAS,GAC/B,KAAKgB,iBAAiBsC,CAAAA,EAAQtD,GAAS,IAGvCmB,EAAKqD,aAAalB,EAAM,GAAGtD,CAAAA,EAAO,UAG3B,OAAOA,GAAU,WAAaA,GAAS,MAAQA,GAASgC,KAC7DsB,GAAQ,WAAa,KAAKpD,IAAIuC,YAAW,GAAM,SAChDtB,EAA0BsD,QAAU,CAAC,CAACzE,EACvC,KAAKgB,iBAAiBsC,CAAAA,EAAQ,CAAC,CAACtD,GAEzBsD,GAAQ,YAAc,KAAKpD,IAAIuC,YAAW,GAAM,SACtDtB,EAA2BuD,SAAW,CAAC,CAAC1E,EAElCsD,GAAQ,UAAY,KAAKpD,IAAIuC,YAAW,GAAM,SAAW,KAAKvC,IAAIuC,YAAW,GAAM,YAAc,KAAKvC,IAAIuC,YAAW,GAAM,YACjItB,EAAanB,MAAQA,GAAS,GAC/B,KAAKgB,iBAAiBsC,CAAAA,EAAQtD,GAAS,IAGrCA,EAAOmB,EAAKqD,aAAalB,EAAM,GAAGtD,CAAAA,EAAO,EACvCmB,EAAKwD,gBAAgBrB,CAAAA,UAEnBtD,aAAiBmE,MAExBhD,EAAKqD,aAAalB,EAAMtD,EAAM4E,KAAK,GAAA,CAAA,UAE3B5E,aAAiByD,EAAQ,CAIjC,GAHA,KAAKxB,WAAWqB,EAAMtD,EAAM0D,KAAI,EAAIvC,EAAMoD,CAAAA,EAGtC,CAAC,KAAKlE,qBAAqBwE,KAAKhC,GAAQA,EAAKS,OAASA,GAAQT,EAAKC,aAAe9C,CAAAA,EAAQ,CAC7F,IAAIgD,EAAKhD,EAAM8E,WAAW,IAAIC,GAAa,KAAMzB,CAAAA,CAAAA,EACjD,KAAKjD,qBAAqB2E,KAAK,CAAChC,GAAIA,EAAIF,WAAY9C,EAAOsD,KAAMA,CAAI,CAAA,CACtE,CAGA,IAAIA,GAAQ,SAAWA,GAAQ,YAActD,EAAMiF,YAAcV,IAChE,KAAKxD,eAAeuC,CAAAA,EAAQtD,EACzB,CAAC,KAAKU,eAAc,CACtB,KAAKA,cAAiBiB,GAAAA,CACrB,GAAI,MAAKb,YACT,GAAI,CACH,IAAMyC,EAAe5B,EAAEuD,OAAetB,OAAS,YAAejC,EAAEuD,OAAetB,OAAS,QAAW,UAAY,QACzGuB,EAAU,KAAKpE,eAAewC,CAAAA,EACpC,GAAG,CAAC4B,EAAS,OAEb,IAAMC,EAAO,KAAKnF,QAA6BsD,CAAAA,EACzC8B,EAAgBF,EAAQzB,KAAI,EAC5B4B,EAAU,KAAKtE,iBAAiBuC,CAAAA,EAIlC8B,GAAiBC,GAAWF,GAAOE,GACtCH,EAAQI,KAAKH,CAAAA,EAId,KAAKpE,iBAAiBuC,CAAAA,EAAc4B,EAAQzB,KAAI,CACjD,OAAS/B,EAAG,CACX6D,QAAQC,MAAM,iBAAmB9D,EAAE+D,OAAO,CAC3C,CACD,EAEA,KAAK/E,yBAA2B,IAAA,CAC/B,KAAKG,YAAc,EACpB,EAEA,KAAKF,uBAA0Be,GAAAA,CAC9B,KAAKb,YAAc,GAEnB,KAAKJ,cAAciB,CAAAA,CACpB,EAEA,IAAMU,EAAeC,EAAaC,eAAe,KAAKtC,QAAQoB,aAAa,EAC3EgB,EAAasD,YAAY,KAAK1F,QAAS,QAAS,KAAKS,aAAa,EAClE2B,EAAasD,YAAY,KAAK1F,QAAS,mBAAoB,KAAKU,wBAAwB,EACxF0B,EAAasD,YAAY,KAAK1F,QAAS,iBAAkB,KAAKW,sBAAsB,CACrF,CAEF,MACQZ,aAAiBkE,IACxBlE,EAAM4F,OAAOzE,CAAAA,EACb,KAAKZ,WAAWyE,KAAKhF,CAAAA,GAEdA,aAAiB8D,IACxB9D,EAAM4F,OAAOzE,CAAAA,EACb,KAAKX,YAAYwE,KAAKhF,CAAAA,EAExB,CAEA6F,iBAAiBC,EAAehE,EAA0BC,EAAsB,CAAA,EAAG,CAE9E,KAAK3B,OAAOyE,KAAKlD,GAAKA,EAAEE,OAASiE,GAASnE,EAAEG,WAAaA,CAAAA,IAE7D,KAAK1B,OAAO4E,KAAK,CAACnD,KAAMiE,EAAOhE,SAAUA,EAAUC,UAAWA,CAAS,CAAA,EACpE,KAAK9B,SAAS,KAAK2B,YAAYkE,EAAOhE,EAAUC,CAAAA,EACpD,CAEQH,YAAYD,EAAWG,EAA0BC,EAAsB,CAAA,EAAG,CACjFO,EAAaC,eAAe,KAAKtC,QAAQoB,aAAa,EAAEsE,YAAY,KAAK1F,QAAS0B,EAAEc,YAAW,EAAIX,EAAUC,CAAAA,CAC9G,CACD,ECrWO,IAAMgE,EAAN,cAA4BC,CAAAA,CAfnC,MAemCA,CAAAA,EAAAA,sBAClCC,UAAyB,CAAA,EACzBC,QAAsB,KAEtB,YAAYC,EAAc,CACzB,MAAMA,CAAAA,CACP,CAEAC,UAAUC,EAAc,CACvB,YAAKJ,UAAUK,KAAKD,CAAAA,EACjB,KAAKH,SAAW,KAAKA,mBAAmBK,GAAe,KAAKL,QAAQM,SAASH,EAAQI,QAAQ,KAAKP,QAAQM,OAAO,EAC7G,IACR,CAEAC,QAAQC,EAAkB,CACzB,KAAKC,YAAc,GACnB,QAAQC,EAAI,EAAGA,EAAI,KAAKX,UAAUY,OAAQD,IACzC,KAAKX,UAAUW,CAAAA,EAAGH,QAAQC,CAAAA,CAE5B,CAEAI,WAAY,CACX,GAAI,KAAKH,YACT,MAAKA,YAAc,GACnB,QAAQC,EAAI,EAAGA,EAAI,KAAKX,UAAUY,OAAQD,IACzC,KAAKX,UAAUW,CAAAA,EAAGE,UAAS,EAE7B,CAEAC,WAAoB,CACnB,IAAIC,EAAQ,CAAA,EACZ,QAAQC,EAAI,EAAGA,EAAI,KAAKhB,UAAUY,OAAQI,IACzCD,EAAMV,KAAI,GAAI,KAAKL,UAAUgB,CAAAA,EAAGF,UAAS,CAAA,EAE1C,OAAOC,CACR,CAEAE,eAA6B,CAC5B,OAAO,KAAKjB,UAAU,KAAKA,UAAUY,OAAS,CAAA,GAAM,IACrD,CACD,ECpDA,IAAqBM,EAArB,cAA0CC,CAAAA,CAN1C,MAM0CA,CAAAA,EAAAA,YACzC,aAAc,CACb,aAAK,EACL,KAAKC,OAAS,KAEP,IAAIC,MAAM,KAAM,CACtBC,IAAIC,EAAQC,EAAMC,EAAQ,CACzB,GAAID,KAAQD,EACX,OAAOG,QAAQJ,IAAIC,EAAQC,EAAMC,CAAAA,EAElC,IAAME,EAAMJ,EAAOK,MACnB,GAAID,GAAO,OAAQA,EAAYH,CAAAA,GAAU,WACxC,MAAO,IAAIK,IAAiBF,EAAYH,CAAAA,EAAMM,MAAMH,EAAKE,CAAAA,CAG3D,CACD,CAAA,CACD,CAKA,IAAIE,SAAa,CAChB,OAAO,KAAKH,KACb,CAKA,MAAMI,OAAoB,CACzB,OAAI,KAAKJ,MAAc,KAAKA,MACrB,IAAIK,QAASC,GAAAA,CACnB,IAAMC,EAAK,KAAKC,UAAWT,GAAAA,CACtBA,IACH,KAAKU,YAAYF,CAAAA,EACjBD,EAAQP,CAAAA,EAEV,CAAA,CACD,CAAA,CACD,CACD,EC/CO,IAAMW,GAAuC,CACnDC,QAAS,EAAGC,OAAQ,EAAGC,SAAU,EAAGC,QAAS,EAAGC,UAAW,EAAGC,kBAAmB,EAAGC,QAAS,EAAGC,OAAQ,EAAGC,cAAe,EAAGC,YAAa,EAAGC,MAAO,EAAGC,WAAY,EAAGC,OAAQ,EAAGC,UAAW,EAAGC,YAAa,EAAGC,YAAa,EAAGC,WAAY,EAAGC,YAAa,EAAGC,OAAQ,EAAGC,iBAAkB,EAAGC,UAAW,EAAGC,QAAS,EAAGC,QAAS,EAAGC,QAAS,EAAGC,aAAc,EAAGC,UAAW,EAAGC,UAAW,EAAGC,WAAY,EAAGC,QAAS,EAAGC,OAAQ,EAAGC,aAAc,EAAGC,iBAAkB,EAAGC,YAAa,EAAGC,YAAa,EAAGC,aAAc,EAAGC,aAAc,EAAGC,YAAa,EAAGC,WAAY,EAAGC,YAAa,EAAGC,UAAW,EAAGC,gBAAiB,EAAGC,cAAe,EAAGC,eAAgB,EAAGC,eAAgB,EAAGC,cAAe,EAAGC,aAAc,EAAGC,cAAe,EAAGC,YAAa,EAAGC,aAAc,EAAGC,WAAY,EAAGC,cAAe,EAAGC,YAAa,EAAGC,aAAc,EAAGC,UAAW,EAAGC,SAAU,EAAGC,WAAY,EAAGC,YAAa,EAAGC,WAAY,EAAGC,QAAS,EAAGC,OAAQ,EAAGC,UAAW,EAAGC,WAAY,EAAGC,WAAY,EAAGC,aAAc,EAAGC,QAAS,EAAGC,SAAU,EAAGC,SAAU,EAAGC,SAAU,EAAGC,SAAU,EAAGC,UAAW,EAAGC,SAAU,EAAGC,UAAW,EAAGC,UAAW,EAAGC,SAAU,EAAGC,UAAW,EAAGC,aAAc,EAAGC,SAAU,EAAGC,SAAU,EAAGC,eAAgB,EAAGC,UAAW,EAAGC,QAAS,CACjrC,ECSO,IAAMC,GAAYC,EAACC,GAClBA,aAAeC,GACrBD,aAAeE,GACfF,GAAKG,OACLH,GAAKI,WACJ,OAAOJ,GAAO,UAAYA,GAAKK,OAChCL,aAAeM,GACfN,aAAeO,GACf,OAAOP,GAAQ,UACf,OAAOA,GAAQ,UACf,OAAOA,GAAQ,WACfQ,MAAMC,QAAQT,CAAAA,EAXS,aAcZU,EAAeX,EAAA,CAACY,EAAeC,EAAgCC,IAAAA,CAC3E,IAAMC,EAASF,aAAaG,EAAcH,EAAEI,SAAWJ,EACvD,GAAGJ,MAAMC,QAAQI,CAAAA,EAChB,QAAQI,EAAI,EAAGA,EAAIJ,EAAKK,OAAQD,IAAKP,EAAaC,EAAKC,EAAGC,EAAKI,CAAAA,CAAE,UAE1DT,MAAMC,QAAQI,GAAMT,SAAAA,EAAW,CACtC,IAAMY,EAAWH,EAAKT,UACtB,GAAIY,GAAYA,EAASE,OAAS,EACjC,QAAQD,EAAI,EAAGA,EAAID,EAASE,OAAQD,IAAKH,EAAOK,UAAUH,EAASC,CAAAA,CAAE,CAEvE,SACQJ,GAAMV,MACbO,EAAaC,EAAKC,EAAGC,EAAKV,KAAK,UAExBU,aAAgBX,EACvBY,EAAOK,UAAUN,CAAAA,UAEV,OAAOA,GAAQ,UAAYA,GAAMR,MACxCS,EAAOM,MAAMP,CAAAA,UAGVA,GAAS,KAA2B,CACtC,IAAIQ,EAAMR,EACPQ,aAAef,IACjBe,EAAMA,EAAIC,KAAI,GAEZD,aAAed,EACjBO,EAAOK,UAAU,IAAII,GAAaZ,EAAKU,CAAAA,CAAAA,EAGvCP,EAAOK,UAAU,IAAIK,EAASH,CAAAA,CAAAA,CAEhC,CAEF,EAlC4B,gBAoCfI,GAAkB1B,EAAA,CAACa,EAAgBc,IAAAA,CAC/C,QAAQC,KAAKD,EAAO,CACnB,IAAIE,EAAOF,EAAMC,CAAAA,EACdC,aAAgBtB,GAAU,EAAEsB,aAAgBC,KAAMD,EAAOA,EAAKN,KAAI,GACrE,IAAIQ,EAAYH,EACZI,EAAY,CAAA,EAChB,GAAGJ,EAAEK,SAAS,GAAA,EAAK,CAClB,IAAMC,EAAQN,EAAEO,MAAM,GAAA,EACtBJ,EAAYG,EAAM,CAAA,EAClBF,EAAYE,EAAME,MAAM,CAAA,CACzB,CAIA,GAFgBC,GAAaN,CAAAA,GAAeA,EAAUO,WAAW,IAAA,GAASP,EAAU,CAAA,GAAMA,EAAU,CAAA,IAAOA,EAAU,CAAA,EAAGQ,YAAW,EAEvH,CACX,GAAG,OAAOZ,EAAMC,CAAAA,GAAO,WACtB,MAAM,IAAIY,MAAM,4BAA4BZ,CAAAA,sBAAuB,EAGnEf,EAAU4B,iBAAiBV,EAAUW,UAAU,CAAA,EAAGC,YAAW,EAAId,EAAMG,CAAAA,CACzE,MACCnB,EAAE+B,QAAQhB,EAAGC,CAAAA,CAEf,CACD,EAxB+B,mBA0BlBgB,GAAgB7C,EAAA,CAACY,EAAekC,EAAaC,IAAAA,CACzD,IAAIlC,EAAI,IAAIG,EAAYJ,EAAKkC,CAAAA,EAE7B,QAAQE,EAAI,EAAGA,EAAID,EAAK5B,OAAQ6B,IAAI,CACnC,IAAI/C,EAAM8C,EAAKC,CAAAA,EACZjD,GAAUE,CAAAA,EACZU,EAAaC,EAAKC,EAAGZ,CAAAA,EAEdA,GAAO,OAAOA,GAAQ,UAC7ByB,GAAgBb,EAAGZ,CAAAA,CAErB,CAEA,OAAOY,CACR,EAd6B,iBCrF7B,IAAMoC,GAAkB,IAAIC,QAEb,SAAfC,GAAyCC,EAAoEC,EAAkB,CAE9H,IAAIC,EAAkB,GAEtB,GAAIF,aAA0BC,EAASE,aAAqBC,cAC3D,OAAOJ,EAGR,GAAI,OAAOA,GAAiB,SAC3BE,EAAkBF,UAEV,OAAOA,GAAiB,WAAY,CAE5C,IAAIK,EAASL,EADH,IACiBM,EAEvB,OAAOD,GAAU,WACpBH,EAAkBG,EAKpB,CAEA,IAAIE,EAAWV,GAAgBW,IAAIP,CAAAA,EAMnC,GALKM,IACJA,EAAW,IAAIE,IACfZ,GAAgBa,IAAIT,EAAUM,CAAAA,GAG3BA,EAASI,IAAIT,CAAAA,EAChB,OAAOK,EAASC,IAAIN,CAAAA,EAGrB,IAAIU,EAAyBX,EAASE,aAAqBC,cAE3D,GAAIQ,EACH,GAAI,CACH,IAAIC,EAAe,IAAID,EACvB,GAAIC,EAAaC,YAChBD,OAAAA,EAAaC,YAAYZ,CAAAA,EACzBK,EAASG,IAAIR,EAAiBW,CAAAA,EACvBA,CAET,MAAY,CAEZ,CAID,IAAIE,EAAQd,EAASe,cAAc,OAAA,EACnCD,OAAAA,EAAME,UAAYf,EACXa,CACR,CApDwBhB,EAAAA,GAAAA,oBCFjB,IAAMmB,GAAkC,CAAA,EAClCC,EAAsBC,EAAA,IAAMF,GAAeA,GAAeG,OAAS,CAAA,GAAM,KAAnD,uBACtBC,EAAgBF,EAACG,GAA6BL,GAAeM,KAAKD,CAAAA,EAAlD,iBAChBE,EAAeL,EAAA,IAAMF,GAAeQ,IAAG,EAAxB,gBCD5B,IAAqBC,EAArB,cAAyCC,CAAAA,CAJzC,MAIyCA,CAAAA,EAAAA,iBAChCC,OACAC,aAAe,IAAIC,IACnBC,SAAW,GACXC,aAAe,GACfC,OAAS,GACTC,MAAQ,GACRC,MAAa,KAErB,IAAIC,YAAsB,CACzB,MAAO,EACR,CAEQC,mBAAqB,CAC5BJ,OAAQ,GACRK,OAAQC,EAAA,IAAA,CACP,KAAKR,SAAW,GACZ,KAAKG,OACR,KAAKM,QAAO,CAEd,EALQ,SAMT,EAEA,YAAYZ,EAAiB,CAC5B,MAAK,EACL,KAAKA,OAASA,EAEd,KAAKY,QAAO,CACb,CAEA,IAAIC,OAAW,CACd,GAAI,KAAKT,aACR,MAAM,IAAIU,MAAM,kDAAA,EAKjB,GAHI,KAAKR,OACR,KAAKM,QAAO,EAET,KAAKL,MACR,MAAM,KAAKA,MAEZ,OAAO,MAAMM,KACd,CAEAE,cAAcC,EAAgB,CACxB,KAAKX,SACL,KAAKY,gBAAgBC,IAAIF,CAAAA,GAC7B,KAAKC,gBAAgBE,IAAIH,CAAAA,EAE3B,CAEQI,eAAgB,CAClB,KAAKf,SACV,KAAKC,MAAQ,GACR,KAAKH,WACT,KAAKA,SAAW,GAChBkB,EAAUC,QAAQ,KAAKb,mBAA2Bc,EAASC,MAAM,GAEnE,CAEQP,gBAAkB,IAAIQ,IAEtBb,SAAU,CACjB,GAAI,CAAC,KAAKP,OAAQ,OAClB,GAAI,KAAKD,aACR,MAAM,IAAIU,MAAM,kDAAA,EAGjB,KAAKV,aAAe,GACpB,KAAKE,MAAQ,GACb,KAAKC,MAAQ,KACb,KAAKU,gBAAgBS,MAAK,EAC1BC,EAAgBC,KAAK,IAAI,EAEzB,IAAIC,EACAC,EAAW,GAEf,GAAI,CACHD,EAAW,KAAK7B,OAAM,CACvB,OAAS+B,EAAG,CACX,KAAKxB,MAAQwB,EACbD,EAAW,EACZ,QAAA,CACCH,EAAgBK,IAAG,EACnB,KAAK5B,aAAe,EACrB,CAEK0B,GACJ,KAAKG,SAASJ,CAAAA,EAIf,IAAMK,EAAqB,CAAA,EAC3B,OAAW,CAAClB,EAAQmB,CAAAA,IAAU,KAAKlC,aAC7B,KAAKgB,gBAAgBC,IAAIF,CAAAA,IAC7BA,EAAOoB,YAAYD,CAAAA,EACnBD,EAASN,KAAKZ,CAAAA,GAGhB,QAAWA,KAAUkB,EACpB,KAAKjC,aAAaoC,OAAOrB,CAAAA,EAG1B,QAAWA,KAAU,KAAKC,gBACzB,GAAI,CAAC,KAAKhB,aAAaiB,IAAIF,CAAAA,EAAS,CACnC,IAAMmB,EAAQnB,EAAOsB,UAAU,IAAM,KAAKlB,cAAa,EAAI,EAAA,EAC3D,KAAKnB,aAAasC,IAAIvB,EAAQmB,CAAAA,CAC/B,CAEF,CAEAK,SAAU,CACT,KAAKnC,OAAS,GACd,OAAW,CAACW,EAAQmB,CAAAA,IAAU,KAAKlC,aAClCe,EAAOoB,YAAYD,CAAAA,EAEpB,KAAKlC,aAAayB,MAAK,CACxB,CACD,ECnHA,IAAqBe,GAArB,KAAqBA,CANrB,MAMqBA,CAAAA,EAAAA,+BACZC,MAAwD,CAAA,EAEhE,YAAoBC,EAAuB,MAAvBA,MAAAA,CAAwB,CAEpCC,KAAKC,EAAkBC,EAAmC,CACjE,IAAMC,EAAQ,IAAIC,EAClBF,OAAAA,EAASC,CAAAA,EACT,KAAKL,MAAMO,KAAK,CAAEJ,SAAAA,EAAUE,MAAAA,CAAM,CAAA,EAC3B,IACR,CAEAG,KAAKJ,EAAmC,CACvC,OAAO,KAAKF,KAAK,OAAQE,CAAAA,CAC1B,CAEAK,GAAGL,EAAmC,CACrC,OAAO,KAAKF,KAAK,KAAME,CAAAA,CACxB,CAEAM,GAAGC,EAA0BP,EAAmC,CAC/D,IAAMD,EAAW,OAAOQ,GAAY,SAAW,GAAGA,CAAAA,IAAaA,EAC/D,OAAO,KAAKT,KAAKC,EAAUC,CAAAA,CAC5B,CAEAQ,SAASC,EAAiB,GAAI,CAC7B,OAAO,KAAKb,MAAMc,IAAIC,GACrB,GAAGF,CAAAA,GAASE,EAAEZ,QAAQ,MAAM,KAAKF,MAAMe,oBAAoBD,EAAEV,KAAK,CAAA,IAAK,EACtEY,KAAK;CAAA,CACR,CACD,ECjBA,IAAqBC,EAArB,MAAqBA,CAAAA,CAnBrB,MAmBqBA,CAAAA,EAAAA,0BACZC,MAA0B,CAAA,EAC3BC,MAAa,KACZC,UAA8D,CAAA,EAC9DC,WAAa,EAErBC,cAAe,CACd,OAAO,KAAKF,SACb,CAEAG,SAASJ,EAAY,CACpB,YAAKA,MAAQA,EACN,IACR,CAEAK,SAASC,KAAkCC,EAAe,CACzD,OAAO,IAAIC,EAAS,IAAA,CACnB,IAAIC,EAAS,GACb,QAASC,EAAI,EAAGA,EAAIJ,EAAQK,OAAQD,IAEnC,GADAD,GAAUH,EAAQI,CAAAA,EACdA,EAAIH,EAAOI,OAAQ,CACtB,IAAIC,EAAML,EAAOG,CAAAA,EACbE,aAAeC,GAAUD,aAAeE,EAC3CL,GAAUG,aAAeE,EAAUF,EAAIG,KAAI,EAAKH,EAAII,MAEpDP,GAAUG,CAEZ,CAED,OAAOH,CACR,CAAA,CACD,CAEAQ,MAAMC,EAAcC,EAAmC,CACtD,OAAO,KAAKC,KAAK,IAAIF,CAAAA,GAAQC,CAAAA,CAC9B,CAEAC,KAAKC,EAAkBF,EAAmC,CACzD,IAAMG,EAAQ,IAAIC,EAClBJ,OAAAA,EAASG,CAAAA,EACT,KAAKvB,MAAMyB,KAAK,CAAEC,KAAM,OAAQJ,SAAAA,EAAUC,MAAAA,CAAM,CAAA,EACzC,IACR,CAEAD,SAASA,EAAkBF,EAAmC,CAC7D,OAAO,KAAKC,KAAKC,EAAUF,CAAAA,CAC5B,CAEAO,MAAMC,EAAmBR,EAA0C,CAClE,IAAMS,EAAU,IAAI9B,EACpBqB,OAAAA,EAASS,CAAAA,EACT,KAAK7B,MAAMyB,KAAK,CAAEC,KAAM,QAASE,UAAAA,EAAWC,QAAAA,CAAQ,CAAA,EAC7C,IACR,CAEAC,UAAUF,EAAmBR,EAA0C,CACtE,IAAMS,EAAU,IAAI9B,EACpBqB,OAAAA,EAASS,CAAAA,EACT,KAAK7B,MAAMyB,KAAK,CAAEC,KAAM,YAAaE,UAAAA,EAAWC,QAAAA,CAAQ,CAAA,EACjD,IACR,CAEAE,SAASH,EAAmBR,EAA0C,CACrE,IAAMS,EAAU,IAAI9B,EACpBqB,OAAAA,EAASS,CAAAA,EACT,KAAK7B,MAAMyB,KAAK,CAAEC,KAAM,WAAYE,UAAAA,EAAWC,QAAAA,CAAQ,CAAA,EAChD,IACR,CAEAG,UAAUb,EAAcC,EAAyC,CAChE,IAAMS,EAAU,IAAII,GAAiB,IAAI,EACzCb,OAAAA,EAASS,CAAAA,EACT,KAAK7B,MAAMyB,KAAK,CAAEC,KAAM,YAAaP,KAAAA,EAAMU,QAAAA,CAAQ,CAAA,EAC5C,IACR,CAOAK,EAAEf,EAAsB,CACvB,OAAKA,EAAKgB,WAAW,IAAA,IAAOhB,EAAO,KAAOA,GACnC,OAAOA,CAAAA,GACf,CAEQiB,qBAAqBP,EAAmCQ,EAAe,CAC9E,IAAIC,EAAYC,MAAMC,QAAQH,CAAAA,EAAYA,EAAW,CAACA,GACtD,QAASI,KAAaH,EACrB,QAASI,KAAKD,EAAW,CACxB,IAAIP,EAAIO,EAAUC,CAAAA,EACdC,EAAYD,EAAEE,QAAQ,QAAS,EAAA,EAC/B,OAAOf,EAAQc,CAAAA,GAAe,aAC7BJ,MAAMC,QAAQN,CAAAA,EACjBL,EAAQc,CAAAA,EAAU,GAAIT,CAAAA,EAEtBL,EAAQc,CAAAA,EAAWT,CAAAA,EAGtB,CAEF,CAEAW,oBAAoBtB,EAA2B,CAC9C,OAAOA,EAAMuB,SAAQ,EAAGC,IAAIC,GAAAA,CAC3B,IAAMC,EAAaC,GAASF,EAAEG,IAAI,EAC9BC,EAAUJ,EAAEG,KACZd,EAAWW,EAAE/B,MAEjB,GAAI,OAAOoB,GAAa,UAAYA,IAAa,MAAQ,EAAEA,aAAoBgB,IAA6B,EAAEhB,aAAoBvB,IAAW,EAAEuB,aAAoBtB,GAAU,CAC5K,IAAIc,EACJ,OAAQmB,EAAEG,KAAI,CACb,IAAK,SAAU,CACdtB,EAAU,IAAIyB,EAAaN,EAAEG,IAAI,EACjC,KACD,CACA,IAAK,YAAa,CACjBtB,EAAU,IAAI0B,EAAgBP,EAAEG,IAAI,EACpC,KACD,CACD,CAEItB,IACH,KAAKO,qBAAqBP,EAASQ,CAAAA,EACnCA,EAAWR,EAEb,CAEA,GAAIQ,aAAoBvB,GAAUuB,aAAoBtB,GAAWsB,aAAoBgB,EAA0B,CAC9G,IAAIG,EAAanB,aAAoBvB,GAAUuB,aAAoBtB,EACnE,GAAIsB,aAAoBgB,EACvB,QAAWI,KAAKpB,EAASqB,MAAO,CAC/B,QAAWC,KAAOF,EAAEG,KACnB,GAAKD,EAAYzB,aAAapB,GAAW6C,EAAYzB,aAAanB,GAAW4C,aAAe7C,GAAU6C,aAAe5C,EAAS,CAC7HyC,EAAa,GACb,KACD,CAED,GAAIA,EAAY,KACjB,CAGD,GAAIA,EAAY,CACf,IAAMK,EAAU,SAAS,EAAE,KAAK1D,UAAU,GACpC2D,EAAiBzB,EACnB0B,EAAqB1B,GAEpBW,EAAEG,OAAS,aAAeH,EAAEG,OAAS,WAAa,EAAEW,aAA0BT,GAClFU,EAAgB,IAAItD,EAAS,IAAA,CAC5B,IAAMI,EAAMiD,aAA0B/C,EAAU+C,EAAe9C,KAAI,EAAM8C,EAAuB7C,MAChG,GAAI,OAAOJ,GAAQ,UAAYA,IAAQ,KAAM,CAC5C,IAAMgB,EAAUmB,EAAEG,OAAS,YAAc,IAAII,EAAgBP,EAAEG,IAAI,EAAI,IAAIG,EAAaN,EAAEG,IAAI,EAC9F,YAAKf,qBAAqBP,EAAShB,CAAAA,EAC5BgB,EAAQmC,SAAQ,CACxB,CACA,OAAOnD,CACR,CAAA,EACUoC,GAAcA,EAAWgB,MAAQ,EAAEH,aAA0BT,GACvEU,EAAgB,IAAItD,EAAS,IAAA,CAC5B,IAAMI,EAAMiD,aAA0B/C,EAAU+C,EAAe9C,KAAI,EAAM8C,EAAuB7C,MAChG,OAAO,OAAOJ,GAAQ,SAAW,GAAGA,CAAAA,GAAMoC,EAAWgB,IAAI,GAAKpD,CAC/D,CAAA,EACUoC,IAAeA,EAAWvB,OAAS,UAAYuB,EAAWvB,OAAS,WAAa,EAAEoC,aAA0BT,GACtHU,EAAgB,IAAItD,EAAS,IAAA,CAC5B,IAAMI,EAAMiD,aAA0B/C,EAAU+C,EAAe9C,KAAI,EAAM8C,EAAuB7C,MAChG,OAAI,OAAOJ,GAAQ,SACXqD,EAAgBrD,EAAKoC,EAAWgB,IAAI,EAErCpD,CACR,CAAA,EACUiD,aAA0BT,IACpCU,EAAgB,IAAItD,EAAS,IAAMqD,EAAeE,SAAQ,CAAA,GAG3D,KAAK9D,UAAUuB,KAAK,CAAEN,KAAM0C,EAAS5C,MAAO8C,CAAqB,CAAA,EACjE1B,EAAW,OAAOwB,CAAAA,GACnB,CACD,CAEA,OAAIZ,IACHG,EAAUH,EAAWkB,SAChBlB,EAAWvB,OAAS,UAAYuB,EAAWvB,OAAS,WAAa,OAAOsB,EAAE/B,OAAU,SACpFgC,EAAWvB,OAAS,UAAYuB,EAAWgB,OAASG,SAGvD/B,EAAW6B,EAAgBlB,EAAE/B,MAAOgC,EAAWgB,IAAI,GAE1ChB,EAAWgB,MAAQ,OAAOjB,EAAE/B,OAAU,WAChDoB,EAAW,GAAGW,EAAE/B,KAAK,GAAGgC,EAAWgB,IAAI,KAGlC,GAAGb,CAAAA,KAAYf,CAAAA,GACvB,CAAA,EAAGgC,KAAK,GAAA,CACT,CAEAL,SAASM,EAAiB,GAAI,CAC7B,OAAO,KAAKtE,MAAM+C,IAAIwB,GAAAA,CACrB,GAAIA,EAAE7C,OAAS,QACd,MAAO,GAAG4C,CAAAA,UAAgBC,EAAE3C,SAAS;EAAO2C,EAAE1C,QAAQmC,SAASM,EAAS,IAAA,CAAA;EAAUA,CAAAA,IAEnF,GAAIC,EAAE7C,OAAS,YACd,MAAO,GAAG4C,CAAAA,cAAoBC,EAAE3C,SAAS;EAAO2C,EAAE1C,QAAQmC,SAASM,EAAS,IAAA,CAAA;EAAUA,CAAAA,IAEvF,GAAIC,EAAE7C,OAAS,WACd,MAAO,GAAG4C,CAAAA,aAAmBC,EAAE3C,SAAS;EAAO2C,EAAE1C,QAAQmC,SAASM,EAAS,IAAA,CAAA;EAAUA,CAAAA,IAEtF,GAAIC,EAAE7C,OAAS,YACd,MAAO,GAAG4C,CAAAA,cAAoBC,EAAEpD,IAAI;EAAOoD,EAAE1C,QAAQmC,SAASM,EAAS,IAAA,CAAA;EAAUA,CAAAA,IAGlF,IAAME,EAAQ,KAAK3B,oBAAoB0B,EAAEhD,KAAK,EAC9C,MAAO,GAAG+C,CAAAA,GAASC,EAAEjD,QAAQ,MAAMkD,CAAAA,IACpC,CAAA,EAAGH,KAAK;CAAA,CACT,CAEAI,UAAW,CACV,OAAO,KAAKzE,MAAMY,OAAS,CAC5B,CAEA8D,SAAU,CACT,QAAWC,KAAM,KAAKzE,UACjByE,EAAG1D,iBAAiBR,EACvBkE,EAAG1D,MAAMyD,QAAO,EACNC,EAAG1D,iBAAiBF,GAAY4D,EAAG1D,MAAc2D,mBAAmBnE,GAC7EkE,EAAG1D,MAAc2D,QAAQF,QAAO,EAGnC,QAAWH,KAAK,KAAKvE,OAChBuE,EAAE7C,OAAS,SAAW6C,EAAE7C,OAAS,aAAe6C,EAAE7C,OAAS,aAC9D6C,EAAE1C,QAAQ6C,QAAO,CAGpB,CACD,EC1PA,IAAqBG,EAArB,KAAqBA,CAFrB,MAEqBA,CAAAA,EAAAA,sBACZC,MAAsC,IAAIC,IAElDC,IAAIC,EAA8B,CACjC,OAAK,KAAKH,MAAMI,IAAID,CAAAA,GACnB,KAAKH,MAAMK,IAAIF,EAAK,IAAIG,CAAAA,EAElB,KAAKN,MAAME,IAAIC,CAAAA,CACvB,CAEA,IAAII,UAA8C,CACjD,IAAMC,EAA4C,CAAC,EACnD,YAAKR,MAAMS,QAAQ,CAACC,EAAKP,IAAAA,CACxBK,EAAOL,CAAAA,EAAOO,EAAIC,KACnB,CAAA,EACOH,CACR,CAKAC,QAAQG,EAA8D,CACrE,KAAKZ,MAAMS,QAAQ,CAACC,EAAKP,IAAAA,CACxBS,EAASF,EAAIC,MAAOR,CAAAA,CACrB,CAAA,CACD,CAKAU,IAAOD,EAA0D,CAChE,IAAMJ,EAAc,CAAA,EACpB,YAAKR,MAAMS,QAAQ,CAACC,EAAKP,IAAAA,CACxBK,EAAOM,KAAKF,EAASF,EAAIC,MAAOR,CAAAA,CAAAA,CACjC,CAAA,EACOK,CACR,CACD,ECrCA,IAAMO,GAAW,IAAIC,IAEd,SAASC,GAAiBC,EAAYC,EAAuB,CAC9DJ,GAASK,IAAIF,CAAAA,GAAKH,GAASM,IAAIH,EAAI,IAAII,GAAAA,EAC5CP,GAASQ,IAAIL,CAAAA,EAAKM,IAAIL,CAAAA,CACvB,CAHgBF,EAAAA,GAAAA,oBAKT,SAASQ,GAAmBP,EAAYC,EAAuB,CACrEJ,GAASQ,IAAIL,CAAAA,GAAKQ,OAAOP,CAAAA,CAC1B,CAFgBM,EAAAA,GAAAA,sBAIT,SAASE,GAAaT,EAAU,CACtC,OAAOH,GAASQ,IAAIL,CAAAA,GAAO,IAAII,GAChC,CAFgBK,EAAAA,GAAAA,gBCST,IAAMC,EAAN,MAAMA,UAAqBC,KAAAA,CArBlC,MAqBkCA,CAAAA,EAAAA,qBACjC,aAAc,CACb,MAAM,kCAAA,EACNC,OAAOC,eAAe,KAAMH,EAAaI,SAAS,CACnD,CACD,EAEIC,GAAQ,MAEZ,SAASC,GAAiBC,EAAa,CAStC,MAAO,WALWA,EAChBC,YAAW,EACXC,QAAQ,aAAc,GAAA,EACtBA,QAAQ,MAAO,GAAA,EACfA,QAAQ,SAAU,EAAA,CACFC,EACnB,CAVSJ,EAAAA,GAAAA,oBAcF,IAAMK,EAAN,cAA4BC,CAAAA,CA5CnC,MA4CmCA,CAAAA,EAAAA,sBAElCC,UACAC,SACAC,gBACQC,OAA+E,CAAA,EAC/EC,YAAiC,CAAA,EACjCC,SAAW,GACXC,WAAa,GACbC,gBAAmC,CAAA,EACnCC,qBAAwC,CAAA,EACxCC,QAAiB,CAAA,EACjBC,YAAiC,CAAA,EACjCC,IACAC,MAAuC,CAAC,EACxCC,gBAAwC,KACxCC,UAAiB,KACjBC,mBAAqB,CAC5BC,OAAQ,GACRC,OAAQC,EAAA,IAAA,CACP,KAAKb,SAAW,GAChB,KAAKc,QAAO,CACb,EAHQ,SAIT,EAEA,YAAYC,EAAepB,EAAyB,CAMnD,GALA,MAAMoB,CAAAA,EACN,KAAKpB,UAAYA,EACjB,KAAKE,gBAAkB,IAAImB,EAAcD,CAAAA,EACzC,KAAKP,gBAAkBS,EAAAA,EAEpBtB,EAAUuB,GAAGC,MACf,MAAM,IAAIpC,MAAM,+CAAA,EAGjB,GAAG,CAACY,EAAU,YAAY,kBAAqB,CAC9CA,EAAU,YAAY,kBAAuB,CAAC,EAE9C,IAAMN,EAASM,EAAU,YAAoByB,QAC7C,GAAIC,GAAUhC,EACbM,EAAU,YAAY,kBAAqB2B,QAAUlC,GAAiBC,CAAAA,MAChE,CACN,IAAIkC,EAAMC,KAAKC,MAAMC,YAAYC,IAAG,EAAG,IAAA,EAAiBC,SAAS,EAAA,EAC7DC,GAAO1C,MAASyC,SAAS,EAAA,EAC7BjC,EAAU,YAAY,kBAAqB2B,QAAU,WAAWO,CAAAA,GAAMd,EAAI,cAAmB,IAAIQ,CAAAA,GAAO,EAAA,EACzG,CACD,CAyBA,GAvBI5B,EAAUuB,IACZvB,EAAUuB,EAAY,CAAC,GAExBvB,EAAUuB,EAAUY,MAAQ,KAC5BnC,EAAUuB,EAAEa,KAAe,CAAC,EAG5BpC,EAAUuB,EAAEC,MAAgBxB,EAAUuB,EAAEC,OAAS,CAAC,EAElDxB,EAAUuB,EAAEC,MAAMa,WAAqB,GACvCrC,EAAUuB,EAAEC,MAAMG,QAAkB3B,EAAU,YAAY,kBAAqB2B,QAG/E3B,EAAkBsC,KAAO,CAACC,EAAcC,IAAAA,CACpC,KAAKvC,UACR,KAAKA,SAASwC,cAAc,IAAIC,YAAYH,EAAK5C,YAAW,EAAI,CAC/D6C,OAAAA,EACAG,QAAS,GACTC,SAAU,EACX,CAAA,CAAA,CAEF,EAEK5C,EAAkB6C,kBAAmB,CACzC,QAAWC,KAAM9C,EAAkB6C,kBAClC,KAAKE,iBAAiBD,CAAAA,EAEvB,OAAQ9C,EAAkB6C,iBAC3B,CAEA,GAAK7C,EAAkBgD,gBAAiB,CACvC,QAAWC,KAAMjD,EAAkBgD,gBAClC,KAAKE,eAAeD,CAAAA,EAErB,OAAQjD,EAAkBgD,eAC3B,CAEA,GAAKhD,EAAkBmD,oBAAqB,CAC3C,QAAWC,KAAMpD,EAAkBmD,oBAClC,KAAKE,mBAAmBD,CAAAA,EAEzB,OAAQpD,EAAkBmD,mBAC3B,CAEA,GAAIzB,EAAQ,CACX,IAAMhC,EAASM,EAAU,YAAoByB,QACzC/B,GACH4D,GAAiB5D,EAAO,IAAI,CAE9B,CACD,CAEAqD,iBAAiBQ,EAAuB,CACnC,KAAKjD,WACR,KAAKE,qBAAqBgD,KAAKD,CAAAA,EAE/B,KAAKhD,gBAAgBiD,KAAKD,CAAAA,CAE5B,CAEAL,eAAeO,EAAa,CAC3B,KAAKhD,QAAQ+C,KAAKC,CAAAA,CACnB,CAEAJ,mBAAmBK,EAAwB,CAC1C,KAAKhD,YAAY8C,KAAKE,CAAAA,CACvB,CAEAC,OAAOhD,EAAwD,CAC9D,KAAKA,IAAMA,CACZ,CAEAiD,MAAO,CACN,GAAI,CACH,KAAKC,cAAa,EAIlBC,EAAc,IAAI,EAClB,KAAKxD,WAAa,GAClB,GAAI,CACH,KAAKJ,gBAAkB,KAAKF,UAAU+D,MAAM,KAAKC,IAAI,CACtD,QAAA,CACC,KAAK1D,WAAa,GAClB2D,EAAAA,CACD,CAEA,KAAKjE,UAAUkE,OAAS,KAAKlE,UAAUkE,MAAK,EAE5C,KAAKC,iBAAgB,CACtB,OAASC,EAAK,CACb,GAAIA,aAAejF,EAAc,OACjC,KAAKkF,YAAYD,CAAAA,CAClB,CACD,CAEQC,YAAYD,EAAU,CAE7B,GADA,KAAKtD,UAAYsD,EACb1C,GAAU,CAAC,KAAK1B,UAAUsE,YAC7B,MAAI,KAAKrE,UACR,KAAKsE,eAAeH,CAAAA,EAEf,IAAIjF,EAGX,GAAI,KAAKa,UAAUsE,YAClB,GAAI,CACH,IAAME,EAAW,KAAKxE,UAAUsE,YAAYF,CAAAA,EAC5C,GAAII,EAAU,CAIb,GAHA,KAAKtE,gBAAkB,IAAImB,EAAc,KAAK2C,IAAI,EAClDS,EAAa,KAAKT,KAAM,KAAK9D,gBAAwBsE,CAAAA,EAEjD,KAAKvE,SAAU,CAClB,IAAMyE,EAAU,KAAK1E,UAAUuB,EAAEC,MAAcmD,WAC/C,GAAID,EAAQ,CACXA,EAAOE,UAAY,GACnBd,EAAc,IAAI,EAClB,GAAI,CACH,KAAK5D,gBAAgB2E,QAAQH,CAAAA,CAC9B,QAAA,CACCT,EAAAA,CACD,CACD,CACD,CACA,MAAM,IAAI9E,CACX,CACD,OAAS2F,EAAW,CACnB,GAAIA,aAAqB3F,EAAc,MAAM2F,EAC7CV,EAAMU,CACP,CAGD,GAAI,KAAKjE,iBAAoB,KAAKA,gBAAwBwD,YACxD,KAAKxD,gBAAwBwD,YAAYD,CAAAA,MACpC,OAAK,KAAKJ,KAAae,SAC5B,KAAKf,KAAae,QAAQX,CAAAA,EACrB,IAAIjF,GAEJiF,CAER,CAEQD,kBAAmB,CAC1B,IAAMa,EAAS,KAAKhF,UAAkBgF,MACtC,GAAKA,EACL,QAAWC,KAAOD,EAAO,CACxB,IAAME,EAAOF,EAAMC,CAAAA,GACfC,aAAgBC,GAAUD,aAAgBE,IAC7CF,EAAKG,UAAU,IAAM,KAAKC,cAAa,CAAA,CAEzC,CACD,CAEQA,eAAgB,CAClB,KAAKjF,WACT,KAAKA,SAAW,GAChBkF,EAAUC,QAAQ,KAAKzE,mBAA2B0E,EAASC,MAAM,EAEnE,CAEOvE,SAAU,CAChB,GAAK,KAAKlB,SAEV,GAAI,CAEH,KAAKC,gBAAgByF,UAAS,EAG9B,QAAWpC,KAAU,KAAK/C,qBACzB+C,EAAOqC,QAAO,EAEf,KAAKpF,qBAAuB,CAAA,EAE5B,KAAKqD,cAAa,EAGlBC,EAAc,IAAI,EAClB,KAAKxD,WAAa,GAClB,GAAI,CACH,KAAKJ,gBAAkB,KAAKF,UAAU+D,MAAM,KAAKC,IAAI,CACtD,QAAA,CACC,KAAK1D,WAAa,GAClB2D,EAAAA,CACD,CAGA,IAAMS,EAAU,KAAK1E,UAAUuB,EAAEC,MAAcmD,WAC3CD,GAAU,KAAK5D,YAClB4D,EAAOE,UAAY,IAEpBd,EAAc,IAAI,EAClB,GAAI,CACH,KAAK5D,gBAAgB2E,QAAQH,CAAAA,CAC9B,QAAA,CACCT,EAAAA,CACD,CAEA,KAAKnD,UAAY,KACjB,KAAKd,UAAUkE,OAAS,KAAKlE,UAAUkE,MAAK,CAC7C,OAASE,EAAK,CACb,GAAIA,aAAejF,EAAc,OACjC,KAAKkF,YAAYD,CAAAA,CAClB,CACD,CAEQG,eAAeH,EAAU,CAChC,GAAI,CAAC,KAAKnE,SAAU,OACpB,IAAMyE,EAAU,KAAK1E,UAAUuB,EAAEC,MAAcmD,WAC/C,GAAI,CAACD,EAAQ,OAEbA,EAAOE,UAAY,GAEnB,IAAMiB,EAAWC,SAASC,cAAc,KAAA,EACxCF,EAASG,aAAa,QAAS;;;;;;;;;;;;;GAa9B,EAED,IAAMC,EAAQH,SAASC,cAAc,IAAA,EACrCE,EAAMC,YAAc,oBACpBD,EAAME,MAAMC,UAAY,IACxBP,EAASQ,YAAYJ,CAAAA,EAErB,IAAMK,EAAUR,SAASC,cAAc,KAAA,EAOvC,GANAO,EAAQH,MAAMI,WAAa,OAC3BD,EAAQH,MAAMK,SAAW,QACzBF,EAAQH,MAAMM,aAAe,OAC7BH,EAAQJ,YAAc9B,EAAIkC,SAAWlC,EACrCyB,EAASQ,YAAYC,CAAAA,EAEjBlC,EAAIsC,MAAO,CACd,IAAMA,EAAQZ,SAASC,cAAc,KAAA,EACrCW,EAAMP,MAAMK,SAAW,QACvBE,EAAMP,MAAMQ,QAAU,MACtBD,EAAMR,YAAc9B,EAAIsC,MACxBb,EAASQ,YAAYK,CAAAA,CACtB,CAEAhC,EAAO2B,YAAYR,CAAAA,CACpB,CAEQhC,eAAgB,CACvB,IAAM+C,EAAU,KAAK5G,UAAU,YAAoBgF,MACnD,GAAI,CAAC4B,EAAQ,OAEb,IAAM5B,EAAS,KAAKhF,UAAkBgF,OAAS,CAAC,EAC1C6B,EAAgB,KAAK7G,UAAU,YAAYuC,KAEjD,QAAW0C,KAAO2B,EAAQ,CACzB,IAAME,EAAOF,EAAO3B,CAAAA,EAChB8B,EAAQ/B,EAAMC,CAAAA,EAalB,GAVI8B,IAAUC,QAAaF,EAAKG,UAAYD,SACvC,OAAOF,EAAKG,SAAY,aAAeH,EAAKI,OAAS7H,QAAUyH,EAAKI,OAASC,OAChFJ,EAAQD,EAAKG,QAAO,EAEpBF,EAAQD,EAAKG,QAEdjC,EAAMC,CAAAA,EAAO8B,GAIVD,EAAKM,UAAYL,IAAUC,OAC9B,MAAM,IAAI5H,MAAM,IAAIyH,CAAAA,WAAwB5B,CAAAA,gBAAmB,EAIhE,IAAIoC,EAAkBN,EAMtB,IALIA,aAAiB5B,GAAU4B,aAAiB3B,KAC/CiC,EAAkBN,EAAMA,OAIYM,GAAoB,MAAQP,EAAKI,KAAM,CAC3E,IAAMI,EAAa,OAAOD,EAC1B,GAAIP,EAAKI,OAASK,QAAUD,IAAe,SAC1C,MAAM,IAAIlI,MAAM,IAAIyH,CAAAA,WAAwB5B,CAAAA,8BAAiCqC,CAAAA,GAAa,EACpF,GAAIR,EAAKI,OAASM,QAAUF,IAAe,SACjD,MAAM,IAAIlI,MAAM,IAAIyH,CAAAA,WAAwB5B,CAAAA,8BAAiCqC,CAAAA,GAAa,EACpF,GAAIR,EAAKI,OAASO,SAAWH,IAAe,UAClD,MAAM,IAAIlI,MAAM,IAAIyH,CAAAA,WAAwB5B,CAAAA,+BAAkCqC,CAAAA,GAAa,EACrF,GAAIR,EAAKI,OAASQ,UAAYJ,IAAe,WACnD,MAAM,IAAIlI,MAAM,IAAIyH,CAAAA,WAAwB5B,CAAAA,gCAAmCqC,CAAAA,GAAa,EACtF,GAAIR,EAAKI,OAASC,OAAS,CAACA,MAAMQ,QAAQN,CAAAA,EAChD,MAAM,IAAIjI,MAAM,IAAIyH,CAAAA,WAAwB5B,CAAAA,6BAAgCqC,CAAAA,GAAa,EACnF,GAAIR,EAAKI,OAAS7H,SAAWiI,IAAe,UAAYH,MAAMQ,QAAQN,CAAAA,GAC5E,MAAM,IAAIjI,MAAM,IAAIyH,CAAAA,WAAwB5B,CAAAA,8BAAiCkC,MAAMQ,QAAQN,CAAAA,EAAmB,QAAUC,CAAAA,GAAa,CAEvI,CAGA,GAAID,IAAoBL,QAAa,OAAOF,EAAKc,WAAc,YAC1D,CAACd,EAAKc,UAAUP,CAAAA,EACnB,MAAM,IAAIjI,MAAM,IAAIyH,CAAAA,WAAwB5B,CAAAA,6BAAgC,CAG/E,CACC,KAAKjF,UAAkBgF,MAAQA,CACjC,CAGQ6C,mBAAmB/B,EAAmB,CAC7C,IAAIgC,EAA2BhC,EAASiC,YAAYC,eAAeC,IAAI,KAAKjI,UAAUuB,EAAEC,MAAMG,OAAO,EACrG,GAAGmG,GAA4Bd,KAAU,CAExC,IAAIkB,EAAoBpC,EAASiC,YAAYI,YACvChG,EAAQ,KAEd2F,EAA2B,cAAcI,CAAAA,CA3Z5C,MA2Z4CA,CAAAA,EAAAA,iCAChCE,WACR,IAAIpI,WAAW,CAAE,OAAO,KAAKoI,UAAY,CACzC,IAAIpI,UAAU+G,EAAqB,CAClC,KAAKqB,WAAarB,EAClB,KAAKsB,iBAAgB,CACtB,CAEAlG,MAEAkG,kBAAkB,CACjB,GAAI,CACH,GAAG,KAAKlG,iBAAiBpC,EAAK,CAC7B,IAAI2E,EAAS,KAAKC,YAAc,KAAK2D,aAAa,CAAEC,KAAM,MAAO,CAAA,EAG7DC,EAAgB,KAAKJ,WAAW,YAAoBK,cACnDD,IACJA,EAAerG,EAAMuG,eAAe5C,CAAAA,EACnC,KAAKsC,WAAW,YAAoBK,cAAgBD,GAGtD9D,EAAOiE,mBAAqB,IAAIH,EAAaI,sBAG7C,IAAMC,EAAUnE,EAAOoE,iBAAiB,gCAAA,EACxC,QAAWC,KAAK5B,MAAM6B,KAAKH,CAAAA,EAAUE,EAAEE,OAAM,EAE7C,QAAQC,EAAI,EAAGA,EAAIV,EAAaW,aAAaC,OAAQF,IACpDxE,EAAO2B,YAAYmC,EAAaW,aAAaD,CAAAA,EAAGG,UAAU,EAAA,CAAA,EAK3D,GAFC,KAAKjB,WAAW7G,EAAEC,MAAcmD,WAAaD,EAEzC,KAAK0D,WAAW,YAAoBkB,gBAAiB,CACzD,IAAMC,EAAqBrI,EAAA,IAAA,CAC1B,IAAMsI,EAAU,IAAIC,EACf,KAAKtH,MAAM6B,KAAa0F,QAC5BF,EAAQG,SAAU,KAAKxH,MAAM6B,KAAa0F,MAAM,EAEjD,IAAME,EAAU,KAAKxB,WAAWyB,QAAgBL,CAAAA,EAC1CM,EAAWF,aAAkBxE,EAAUwE,EAAOG,KAAI,EAAMH,aAAkBzE,EAASyE,EAAO7C,MAAQ6C,EAEpGI,EAAaF,GACbA,IAAaN,GAAY,CAACM,GAAYN,EAAQS,SAAQ,KACzDD,EAAaR,EAAQvH,SAAQ,GAI9B,IAAIiI,EAAkBxF,EAAOyF,eAAe,oBAAA,EACvCD,IACJA,EAAkBpE,EAASC,cAAc,OAAA,EACzCmE,EAAgBE,GAAK,qBACrB1F,EAAO2B,YAAY6D,CAAAA,GAEpBA,EAAgBhE,YAAc8D,CAC/B,EArB2B,sBAuBrBJ,EAAU,KAAKxB,WAAWyB,QAAgB,IAAIJ,CAAAA,EACpD,GAAIG,aAAkBzE,GAAUyE,aAAkBxE,EAAS,CAC1D,IAAMiF,EAAST,EAAevE,UAAUkE,CAAAA,EACxC,KAAKpH,MAAMkB,mBAAmB,IAAOuG,EAAeU,YAAYD,CAAAA,CAAAA,CACjE,CACAd,EAAAA,CACD,SAAW,KAAKnB,WAAWyB,QAAS,CACnC,IAAML,EAAU,IAAIC,EACf,KAAKtH,MAAM6B,KAAa0F,QAC5BF,EAAQG,SAAU,KAAKxH,MAAM6B,KAAa0F,MAAM,EAEhD,KAAKtB,WAAWyB,QAAgBL,CAAAA,EACjCA,EAAQvH,SAAQ,EAChB,IAAMsI,EAAYf,EAAQgB,aAAY,EACtC,GAAID,EAAUnB,OAAS,EAAG,CACzB,IAAMqB,EAAwB,CAAC,EAC/B,QAAWC,KAAMH,EAChBE,EAAiBC,EAAGnI,IAAI,EAAImI,EAAG3D,MAEhC,IAAM4D,EAAa,IAAIC,EAAWH,CAAAA,EAClCE,EAAWE,OAAO,IAAI,EACtB,KAAK1I,MAAM/B,YAAYoD,KAAKmH,CAAAA,EAC5B,KAAKxI,MAAMkB,mBAAmB,IAAMmG,EAAQ5D,QAAO,CAAA,CACpD,CACD,SAAW,KAAKwC,WAAWyB,QAAS,CACnC,IAAML,EAAU,IAAIC,EACf,KAAKtH,MAAM6B,KAAa0F,QAC5BF,EAAQG,SAAU,KAAKxH,MAAM6B,KAAa0F,MAAM,EAEhD,KAAKtB,WAAWyB,QAAgBL,CAAAA,EACjCA,EAAQvH,SAAQ,EAChB,IAAMsI,EAAYf,EAAQgB,aAAY,EACtC,GAAID,EAAUnB,OAAS,EAAG,CACzB,IAAMqB,EAAwB,CAAC,EAC/B,QAAWC,KAAMH,EAChBE,EAAiBC,EAAGnI,IAAI,EAAImI,EAAG3D,MAEhC,IAAM4D,EAAa,IAAIC,EAAWH,CAAAA,EAClCE,EAAWE,OAAO,IAAI,EACtB,KAAK1I,MAAM/B,YAAYoD,KAAKmH,CAAAA,EAC5B,KAAKxI,MAAMkB,mBAAmB,IAAMmG,EAAQ5D,QAAO,CAAA,CACpD,CACD,CAEA,GAAI,KAAKzD,MAAMjC,gBAAgB4K,YAC9B,KAAK3I,MAAMhB,QAAO,MACZ,CACN2C,EAAc,KAAK3B,KAAK,EACxB,GAAI,CACH,KAAKA,MAAMjC,gBAAgB2E,QAAQH,CAAAA,CACpC,QAAA,CACCT,EAAAA,CACD,CACD,CACD,KAEC,OAAM,IAAI7E,MAAM,mDAAA,CAElB,OAASgF,EAAK,CACb,GAAIA,aAAejF,EAAc,OAChC,KAAKgD,MAAckC,YAAYD,CAAAA,CACjC,CACD,CACD,EAEA0B,EAASiC,YAAYC,eAAe+C,OAAO,KAAK/K,UAAUuB,EAAEC,MAAMG,QAASmG,CAAAA,CAC5E,CACD,CAEQY,eAAe5C,EAAoB,CAE1C,IAAM0D,EAAU,IAAIC,EACf,KAAKzF,KAAa0F,QACtBF,EAAQG,SAAU,KAAK3F,KAAa0F,MAAM,EAE3C,IAAIE,EAAc,KAAK5J,UAAU6J,SAAY,KAAK7J,UAAU6J,QAAgBL,CAAAA,GAAY,CAAA,GAEpFI,aAAkBzE,GAAUyE,aAAkBxE,KAEhD,KAAKpF,UAAU,YAAoBsJ,gBAAkB,GACtDM,EAAS,OAGNA,IAAWJ,GAAY,CAACI,GAAUJ,EAAQS,SAAQ,KACrDL,EAASJ,EAAQvH,SAAQ,GAGvB,OAAO2H,GAAU,WAAUA,EAAS,CAACA,IAExC,IAAIoB,EAAoB,CAAA,EACpBC,EAAY,CAAA,EAEhB,GAAGrB,EACF,QAAQV,EAAI,EAAGA,EAAIU,EAAOR,OAAQF,IAAI,CACrC,IAAIgC,EAAYC,GAAiBvB,EAAOV,CAAAA,EAAIpD,CAAAA,EACzCoF,aAAsBpF,EAASiC,YAAoBqD,cACrDJ,EAAkBxH,KAAK0H,CAAAA,EAGvBD,EAAUzH,KAAK0H,CAAAA,CAEjB,CAED,IAAMX,EAAYf,EAAQgB,aAAY,EACtChB,EAAQ5D,QAAO,EAGf,IAAIgD,EAAuB,IAAIoC,GAC3B7B,EAAe,IAAI8B,GACnBI,EAAgB,KAAKrH,KAAaqH,cAAgB,CAAA,EACtD,QAASC,KAAMD,EACd,GAAIC,aAAexF,EAASiC,YAAoBqD,cAC/CxC,EAAqBpF,KAAK8H,CAAAA,UAChB,OAAOA,GAAO,SAAU,CAElC,IAAMC,EAAgBD,EAAG1L,QAAQ,iCAAkC,OAAA,EAC/DsL,EAAYC,GAAiBI,EAAezF,CAAAA,EAC5CoF,aAAsBpF,EAASiC,YAAoBqD,cACtDxC,EAAqBpF,KAAK0H,CAAAA,EAE1B/B,EAAa3F,KAAK0H,CAAAA,CAEpB,CAGD,MAAO,CAAEtC,qBAAAA,EAAsBO,aAAAA,EAAcoB,UAAAA,CAAU,CACxD,CAEAiB,QAAQjJ,EAAckJ,EAAc,CACnC,GAAI,OAAOA,GAAY,WAAY,CAC5B,KAAKzL,UAAkBY,QAAQ,KAAKZ,UAAkBY,MAAQ,CAAC,GACpE,KAAKZ,UAAkBY,MAAM2B,CAAAA,EAAQkJ,EAClC,KAAKxL,UACR,KAAKqF,cAAa,EAEnB,MACD,CAEK,KAAK1E,MAAM2B,CAAAA,IACf,KAAK3B,MAAM2B,CAAAA,EAAQ,IAAIlB,EAAc,KAAK2C,IAAI,GAG/CS,EAAa,KAAKT,KAAM,KAAKpD,MAAM2B,CAAAA,EAAckJ,CAAAA,EAE7C,KAAKxL,WACR,KAAKW,MAAM2B,CAAAA,EAAMsC,QAAQ,KAAK5E,QAAQ,EACtC,KAAKyL,mBAAmBnJ,CAAAA,EAE1B,CAEQmJ,mBAAmBnJ,EAAc,CACxC,GAAIA,IAAS,UAAW,CACvB,IAAMoJ,EAAQ,KAAK/K,MAAM2B,CAAAA,EAAMqJ,UAAS,EACxC,QAAWC,KAAQF,EACdE,aAAgB1D,aACnB0D,EAAK7F,aAAa,OAAQzD,CAAAA,CAG7B,CACD,CAEAsC,QAAQgH,EAAmB,CAC1B,GAAI,CACH,GAAG,CAAC,KAAK7L,UAAUuB,EAAG,MAAM,IAAInC,MAAM,uGAAA,EACtC,GAAI,KAAKY,UAAUuB,GAAWC,OAAOa,WAAY,MAAM,IAAIjD,MAAM,kEAAA,EAC5D,KAAKY,UAAUuB,EAAUC,QAAQ,KAAKxB,UAAUuB,EAAUC,MAAQ,CAAC,GAExEsC,EAAc,IAAI,EAClB,GAAI,CACH,KAAK9D,UAAU8L,UAAY,KAAK9L,UAAU8L,SAAQ,CACnD,QAAA,CACC7H,EAAAA,CACD,CAEC,KAAKjE,UAAUuB,EAAEC,MAAca,WAAa,GAE7C,IAAIyD,EAAW+F,EAAKE,cAGpB,KAAKlE,mBAAmB/B,CAAAA,EAExB,KAAK7F,SAAW6F,EAASC,cAAc,KAAK/F,UAAUuB,EAAEC,MAAMG,OAAO,EACrE,KAAK1B,SAAS,MAAW,KACzB,KAAKA,SAAS+F,aAAa,QAAS,EAAA,EAEpC6F,EAAKxF,YAAY,KAAKpG,QAAQ,EAE9B,KAAKA,SAAS,UAAe,KAAKD,UAE9B0B,GAAU,KAAKZ,WAClB,KAAKyD,eAAe,KAAKzD,SAAS,EAGnC,QAAQoI,EAAI,EAAGA,EAAI,KAAK/I,OAAOiJ,OAAQF,IAAI,CAC1C,IAAIjG,EAAI,KAAK9C,OAAO+I,CAAAA,EACpB,KAAK8C,YAAY/I,EAAEV,KAAMU,EAAEgJ,SAAUhJ,EAAEiJ,SAAS,CACjD,CAEApI,EAAc,IAAI,EAClB,GAAI,CACH,KAAK9D,UAAUmM,SAAW,KAAKnM,UAAUmM,QAAO,CACjD,QAAA,CACClI,EAAAA,CACD,CAEI,KAAKmI,cACR,KAAKA,aAAa,KAAKnM,QAAQ,EAG5B,KAAKD,UAAUqM,SAClB,KAAKrM,UAAUqM,QAAO,CAExB,OAASjI,EAAK,CACb,GAAIA,aAAejF,EAAc,OACjC,KAAKkF,YAAYD,CAAAA,CAClB,CACD,CAEAuB,WAAY,CACX7B,EAAc,IAAI,EAClB,GAAI,CACH,KAAK9D,UAAUsM,YAAc,KAAKtM,UAAUsM,WAAU,CACvD,QAAA,CACCrI,EAAAA,CACD,CAEA,KAAK/D,gBAAgByF,UAAS,EAE9B,QAAWpD,KAAQ,KAAK3B,MACvB,KAAKA,MAAM2B,CAAAA,EAAMoD,UAAS,EAG3B,GAAI,KAAK1F,SAAU,CAClB,IAAMsM,EAAeC,EAAaC,eAAe,KAAKxM,SAAS8L,aAAa,EAC5E,QAAQ7C,EAAI,EAAGA,EAAI,KAAK/I,OAAOiJ,OAAQF,IAAI,CAC1C,IAAIjG,EAAI,KAAK9C,OAAO+I,CAAAA,EACpBqD,EAAaG,eAAe,KAAKzM,SAAUgD,EAAEV,KAAK5C,YAAW,EAAIsD,EAAEgJ,QAAQ,CAC5E,CAEA,KAAKhM,SAASgJ,OAAM,EACpB,KAAKhJ,SAAW,IACjB,CAEA,QAASiJ,EAAI,EAAGA,EAAI,KAAK9I,YAAYgJ,OAAQF,IAC5C,KAAK9I,YAAY8I,CAAAA,EAAGyD,SAAQ,EAE7B,KAAKvM,YAAc,CAAA,EAEnB,QAAWmD,KAAU,KAAKhD,gBACzBgD,EAAOqC,QAAO,EAEf,KAAKrF,gBAAkB,CAAA,EAEvB,QAAWgD,KAAU,KAAK/C,qBACzB+C,EAAOqC,QAAO,EAEf,KAAKpF,qBAAuB,CAAA,EAE5B,QAAWiD,KAAU,KAAKhD,QACzBgD,EAAOmC,QAAO,EAEf,KAAKnF,QAAU,CAAA,EAEf,QAAWiD,KAAc,KAAKhD,YAC7BgD,EAAAA,EAED,KAAKhD,YAAc,CAAA,EAEnB,OAAQ,KAAKV,UAAUuB,EAAUC,MAEjCsC,EAAc,IAAI,EAClB,GAAI,CACH,KAAK9D,UAAU4M,WAAa,KAAK5M,UAAU4M,UAAS,CACrD,QAAA,CACC3I,EAAAA,CACD,CAUA,GARG,KAAKtD,MACH,OAAO,KAAKA,KAAQ,WACvB,KAAKA,IAAI,IAAA,EAET,KAAKA,IAAIoG,MAAQ,MAIfrF,EAAQ,CACX,IAAMhC,EAAS,KAAKM,UAAU,YAAoByB,QAC9C/B,GACHmN,GAAmBnN,EAAO,IAAI,CAEhC,CACD,CAEAoN,SAASC,EAAe,CACvB,IAAMC,EAAe,KAAKhN,UACpBgF,EAASgI,EAAqBhI,MAC9B5C,EAAQ4K,EAAqB5K,KAGnC0B,EAAc,IAAI,EAClB,GAAI,CACHkJ,EAAaV,YAAcU,EAAaV,WAAU,CACnD,QAAA,CACCrI,EAAAA,CACD,CAGA,QAAWV,KAAU,KAAKhD,gBACzBgD,EAAOqC,QAAO,EAEf,KAAKrF,gBAAkB,CAAA,EAEvB,QAAWkD,KAAU,KAAKhD,QACzBgD,EAAOmC,QAAO,EAEf,KAAKnF,QAAU,CAAA,EAEf,QAAWiD,KAAc,KAAKhD,YAC7BgD,EAAAA,EAED,KAAKhD,YAAc,CAAA,EAInB,IAAMuM,EAAe,IAAIF,EAGxBE,EAAqBjI,MAAQA,EAC7BiI,EAAqB7K,KAAOA,EAG7B,QAAW6C,KAAO+H,EAAc,CAC/B,GAAI/H,IAAQ,SAAWA,IAAQ,QAAUA,IAAQ,IAAK,SACtD,IAAMiI,EAAUF,EAAqB/H,CAAAA,EAC/BkI,EAAUF,EAAqBhI,CAAAA,EAEjCiI,aAAkB/H,GAAUgI,aAAkBhI,EAC7CgI,EAAOC,aACVD,EAAOpG,MAAQmG,EAAOnG,OAEbmG,aAAkBG,GAAiBF,aAAkBE,IAC9DJ,EAAqBhI,CAAAA,EAAOiI,EAE/B,CASA,GANAD,EAAa1L,EAAIyL,EAAazL,EAC7B0L,EAAa1L,EAAUY,MAAQ,KAEhC,KAAKnC,UAAYiN,EAGZA,EAAqBpK,kBAAmB,CAC5C,QAAWC,KAAMmK,EAAqBpK,kBACrC,KAAKE,iBAAiBD,CAAAA,EAEvB,OAAQmK,EAAqBpK,iBAC9B,CAEA,GAAKoK,EAAqBjK,gBAAiB,CAC1C,QAAWC,KAAMgK,EAAqBjK,gBACrC,KAAKE,eAAeD,CAAAA,EAErB,OAAQgK,EAAqBjK,eAC9B,CAEA,GAAKiK,EAAqB9J,oBAAqB,CAC9C,QAAWC,KAAM6J,EAAqB9J,oBACrC,KAAKE,mBAAmBD,CAAAA,EAEzB,OAAQ6J,EAAqB9J,mBAC9B,CAOA,GAJK4J,EAAiBtE,eACrB,OAAQsE,EAAiBtE,cAGtB,KAAKxI,SAAU,CACjB,KAAKA,SAAiBD,UAAYiN,EAGnCnJ,EAAc,IAAI,EAClB,GAAI,CACH,KAAK9D,UAAUmM,SAAW,KAAKnM,UAAUmM,QAAO,CACjD,QAAA,CACClI,EAAAA,CACD,CACD,MACC,KAAK9C,QAAO,CAEd,CAEAyK,WAAoB,CACnB,OAAO,KAAK3L,SAAW,CAAC,KAAKA,UAAY,CAAA,CAC1C,CAEAqN,eAA6B,CAC5B,OAAO,IACR,CAEA,MAAMC,gBAAiB,CAClB,KAAKC,cAAgB,KAAKvN,UAC7B,MAAM,KAAKuN,aAAa,KAAKvN,QAAQ,EAElC,KAAKD,UAAUyN,SAClB,MAAM,KAAKzN,UAAUyN,QAAO,EAE7B,KAAK9H,UAAS,CACf,CAEA+H,QAAQC,EAAoB,CAC3B,IAAMC,EAAS,KAAK3N,UAAU8L,cACxB8B,EAASF,EAAO5B,cAEnB6B,GAAUC,GAAUD,IAAWC,GAEjC,KAAKhG,mBAAmBgG,CAAAA,EAGzB,MAAMH,QAAQC,CAAAA,CACf,CAEAG,iBAAiBC,EAAe9B,EAA0BC,EAAsB,CAAA,EAAG,CAClF,KAAK/L,OAAOqD,KAAK,CAACjB,KAAMwL,EAAO9B,SAAUA,EAAUC,UAAWA,CAAS,CAAA,EACpE,KAAKjM,UAAU,KAAK+L,YAAY+B,EAAO9B,EAAUC,CAAAA,CACrD,CAEQF,YAAY/I,EAAWgJ,EAA0BC,EAAsB,CAAA,EAAG,CACjFM,EAAaC,eAAe,KAAKxM,SAAS8L,aAAa,EAAEiC,YAAY,KAAK/N,SAAUgD,EAAEtD,YAAW,EAAIsM,EAAUC,CAAAA,CAChH,CAEA+B,GAAGF,EAAe9B,EAAyB,CAC1C,YAAK6B,iBAAiBC,EAAO9B,CAAAA,EACtB,IACR,CAEAhK,UAAU,CAGT,MAAO,IAAI,KAAKjC,UAAUuB,EAAEC,MAAMG,OAAO,MAAM,KAAK3B,UAAUuB,EAAEC,MAAMG,OAAO,GAC9E,CACD,ECx4BO,IAAMuM,GAAN,cAA2BC,CAAAA,CARlC,MAQkCA,CAAAA,EAAAA,qBACzBC,QACAC,WAAmB,KACnBC,UAAkB,KAClBC,YAAoB,KACpBC,WAAqB,EAC7BC,gBAAkB,GAElB,YAAYC,EAAeN,EAAkB,CAC5C,MAAMM,CAAAA,EACN,KAAKN,QAAUA,CAChB,CAEQO,QAAQC,EAAkB,CACjC,GAAIA,GAAU,KACb,OAAO,IAAIC,EAAS,EAAA,EAErB,GAAID,aAAiBT,EACpB,OAAOS,EAER,GAAI,OAAOA,GAAU,UAAYA,EAAME,MAAO,CAC7C,IAAMC,EAAK,IAAIC,EAAc,KAAKC,KAAML,CAAAA,EACxCG,OAAAA,EAAGG,KAAI,EACAH,CACR,CACA,GAAII,MAAMC,QAAQR,CAAAA,EAAQ,CACzB,IAAMS,EAAY,IAAIC,EAAc,KAAKL,IAAI,EAC7C,QAAWM,KAAQX,EAClBS,EAAUG,UAAU,KAAKb,QAAQY,CAAAA,CAAAA,EAElC,OAAOF,CACR,CACA,OAAO,IAAIR,EAASD,CAAAA,CACrB,CAEAa,QAAQC,EAAqB,CAC5B,KAAKC,YAAc,GACnB,KAAKtB,WAAaqB,EAAOE,cAAcC,eAAe,EAAA,EACtD,KAAKvB,UAAYoB,EAAOE,cAAcC,eAAe,EAAA,EACrDH,EAAOI,YAAY,KAAKzB,UAAU,EAClCqB,EAAOI,YAAY,KAAKxB,SAAS,EAEjC,IAAMM,EAAQ,KAAKR,QAAQ2B,KAAI,EAC/B,KAAKC,OAAOpB,CAAAA,EAEZ,KAAKJ,WAAa,KAAKJ,QAAQ6B,WAAW,IAAI,CAC/C,CAEAD,OAAOpB,EAAY,CACb,KAAKe,cAEN,KAAKpB,aACR,KAAKA,YAAY2B,UAAS,EAG3BC,GAAmB,KAAK9B,WAAY,KAAKC,SAAS,EAElD,KAAKC,YAAc,KAAKI,QAAQC,CAAAA,EAChC,KAAKL,YAAY6B,cAAc,KAAK9B,SAAS,EAC9C,CAEA4B,WAAY,CACN,KAAKP,cACV,KAAKA,YAAc,GAEf,KAAKpB,cACR,KAAKA,YAAY2B,UAAS,EAC1B,KAAK3B,YAAc,MAGhB,KAAKC,aACR,KAAKJ,QAAQiC,aAAa,KAAK7B,UAAU,EACzC,KAAKA,WAAa,GAGnB2B,GAAmB,KAAK9B,WAAY,KAAKC,SAAS,EAC9C,KAAKD,WAAWiC,eAAe,KAAKjC,WAAWiC,cAAcC,YAAY,KAAKlC,UAAU,EACxF,KAAKC,UAAUgC,eAAe,KAAKhC,UAAUgC,cAAcC,YAAY,KAAKjC,SAAS,EACzF,KAAKD,WAAa,KAClB,KAAKC,UAAY,KAClB,CAEAkC,WAAoB,CACnB,GAAI,CAAC,KAAKb,YAAa,MAAO,CAAA,EAC9B,IAAMc,EAAQ,CAAC,KAAKpC,YACpB,OAAI,KAAKE,aACRkC,EAAMC,KAAI,GAAI,KAAKnC,YAAYiC,UAAS,CAAA,EAEzCC,EAAMC,KAAK,KAAKpC,SAAS,EAClBmC,CACR,CAEAE,eAA6B,CAC5B,OAAO,IACR,CAEAC,UAAW,CACV,OAAO,KAAKrC,YAAc,KAAKA,YAAYqC,SAAQ,EAAK,EACzD,CACD,ECrGA,IAAqBC,GAArB,KAAqBA,CANrB,MAMqBA,CAAAA,EAAAA,eACZC,SACAC,QACAC,aAAe,IAAIC,IACnBC,SAAW,GACXC,aAAe,GACfC,OAAS,GACTC,MAAQ,GACRC,gBAAkB,IAAIC,IAEtBC,mBAAqB,CAC5BJ,OAAQ,GACRK,OAAQC,EAAA,IAAA,CACP,KAAKR,SAAW,GACZ,KAAKG,OACR,KAAKM,IAAG,CAEV,EALQ,SAMT,EAEA,YAAYb,EAA0B,CACrC,KAAKA,SAAWA,EAChB,KAAKa,IAAG,CACT,CAEAC,cAAcC,EAAgB,CACxB,KAAKT,SACL,KAAKE,gBAAgBQ,IAAID,CAAAA,GAC7B,KAAKP,gBAAgBS,IAAIF,CAAAA,EAE3B,CAEQG,eAAgB,CAClB,KAAKZ,SACV,KAAKC,MAAQ,GACR,KAAKH,WACT,KAAKA,SAAW,GAChBe,EAAUC,QAAQ,KAAKV,mBAA2BW,EAASC,MAAM,GAEnE,CAEAT,KAAM,CACL,GAAI,CAAC,KAAKP,OAAQ,OAClB,GAAI,KAAKD,aACR,MAAM,IAAIkB,MAAM,yCAAA,EAIjB,GAAI,KAAKtB,QAAS,CACjB,GAAI,CACH,KAAKA,QAAO,CACb,OAASuB,EAAG,CACXC,QAAQC,MAAM,+BAAgCF,CAAAA,CAC/C,CACA,KAAKvB,QAAU0B,MAChB,CAEA,KAAKtB,aAAe,GACpB,KAAKE,MAAQ,GACb,KAAKC,gBAAgBoB,MAAK,EAC1BC,EAAgBC,KAAK,IAAI,EAEzB,GAAI,CACH,IAAMC,EAAS,KAAK/B,SAAQ,EACxB,OAAO+B,GAAW,aACrB,KAAK9B,QAAU8B,EAEjB,OAASP,EAAG,CACXC,QAAQC,MAAM,iCAAkCF,CAAAA,CACjD,QAAA,CACCK,EAAgBG,IAAG,EACnB,KAAK3B,aAAe,EACrB,CAGA,IAAM4B,EAAqB,CAAA,EAC3B,OAAW,CAAClB,EAAQmB,CAAAA,IAAU,KAAKhC,aAC7B,KAAKM,gBAAgBQ,IAAID,CAAAA,IAC7BA,EAAOoB,YAAYD,CAAAA,EACnBD,EAASH,KAAKf,CAAAA,GAGhB,QAAWA,KAAUkB,EACpB,KAAK/B,aAAakC,OAAOrB,CAAAA,EAG1B,QAAWA,KAAU,KAAKP,gBACzB,GAAI,CAAC,KAAKN,aAAac,IAAID,CAAAA,EAAS,CACnC,IAAMmB,EAAQnB,EAAOsB,UAAU,IAAM,KAAKnB,cAAa,EAAI,EAAA,EAC3D,KAAKhB,aAAaoC,IAAIvB,EAAQmB,CAAAA,CAC/B,CAEF,CAEAK,SAAU,CACT,GAAK,KAAKjC,OAEV,IADA,KAAKA,OAAS,GACV,KAAKL,QAAS,CACjB,GAAI,CACH,KAAKA,QAAO,CACb,OAASuB,EAAG,CACXC,QAAQC,MAAM,wCAAyCF,CAAAA,CACxD,CACA,KAAKvB,QAAU0B,MAChB,CACA,OAAW,CAACZ,EAAQmB,CAAAA,IAAU,KAAKhC,aAClCa,EAAOoB,YAAYD,CAAAA,EAEpB,KAAKhC,aAAa0B,MAAK,EACxB,CACD,ECjHO,SAASY,GAA4DC,EAAO,CAClF,IAAMC,EAAY,cAAeD,CAAAA,CAHlC,MAGkCA,CAAAA,EAAAA,kBAChC,eAAeE,EAAa,CAC3B,IAAMC,EAAU,CACfC,gBAAiB,CAAA,EACjBC,QAAS,CAAA,EACTC,YAAa,CAAA,EACbC,iBAAiBC,EAAM,CAAI,KAAKJ,gBAAgBK,KAAKD,CAAAA,CAAI,EACzDE,eAAeC,EAAM,CAAI,KAAKN,QAAQI,KAAKE,CAAAA,CAAI,EAC/CC,mBAAmBC,EAAM,CAAI,KAAKP,YAAYG,KAAKI,CAAAA,CAAI,CACxD,EACAC,EAAcX,CAAAA,EACd,GAAI,CACH,MAAK,GAAID,CAAAA,CACV,QAAA,CACCa,EAAAA,CACD,CAGIb,EAAK,CAAA,GAAM,OAAOA,EAAK,CAAA,GAAO,UAAY,CAACA,EAAK,CAAA,EAAGc,OAAUhB,EAAaiB,QACxE,KAAKA,QAAO,KAAKA,MAAQ,CAAC,GAC/BC,OAAOC,OAAO,KAAKF,MAAOf,EAAK,CAAA,CAAE,GAIjC,KAAakB,kBAAoBjB,EAAQC,gBACzC,KAAaiB,gBAAkBlB,EAAQE,QACvC,KAAaiB,oBAAsBnB,EAAQG,WAC7C,CACD,EAGAY,OAAOK,eAAetB,EAAW,OAAQ,CAAEuB,MAAOxB,EAAKyB,IAAK,CAAA,EAG5D,QAAWC,KAAOR,OAAOS,oBAAoB3B,CAAAA,EACxC0B,IAAQ,aAAeA,IAAQ,QAAUA,IAAQ,WACnDzB,EAAkByB,CAAAA,EAAQ1B,EAAa0B,CAAAA,GAI1C,OAAOzB,CACR,CA1CgBF,EAAAA,GAAAA,aCEhB,IAAI6B,GAAa,EAEIC,GAArB,MAAqBA,CAAAA,CALrB,MAKqBA,CAAAA,EAAAA,sBACpBC,OACAC,SACAC,MACAC,KACAC,MACAC,MACAC,OACAC,OAAS,GACTC,OAAS,GACTC,WAAa,GACbC,SAA8F,KAE9F,OAAeC,gBAAkB,IAAIC,IAC7BC,eAAoE,CAAA,EACpEC,sBAA2E,CAAA,EAEnF,YAAYC,EAAkN,CAC7N,KAAKZ,KAAOY,EAAQC,QACpB,KAAKX,MAAQU,EAAQV,OAASU,EAAQT,QAAU,IAChD,KAAKA,OAASS,EAAQT,QAAUS,EAAQV,OAAS,IACjD,KAAKH,MAAQa,EAAQb,OAAS,SAC9B,KAAKM,OAASO,EAAQP,QAAU,GAChC,KAAKC,WAAaM,EAAQN,YAAc,GACxC,KAAKC,SAAWK,EAAQL,UAAY,IACrC,CAEA,MAAMO,MAAqB,CAC1B,GAAG,KAAKV,OAAO,CACdW,QAAQC,KAAK,yBAAA,EACb,MACD,CAEA,IAAIC,EAAO,EACPC,EAAM,EACNC,EAAW,SAAS,KAAKjB,KAAK,WAAW,KAAKC,MAAM,GAuBxD,GArBG,KAAKI,WACJ,OAAO,KAAKA,UAAa,UAC3BU,EAAO,KAAKV,SAASU,KACrBC,EAAM,KAAKX,SAASW,KAEb,KAAKX,WAAa,UACzBU,GAAQpB,OAAOuB,OAAOlB,MAAQ,KAAKA,OAAS,EAC5CgB,GAAOrB,OAAOuB,OAAOjB,OAAS,KAAKA,QAAU,GAEtC,KAAKI,WAAa,iBACzBU,EAAOpB,OAAOwB,SAAWxB,OAAOyB,WAAa,KAAKpB,OAAS,EAC3DgB,EAAMrB,OAAO0B,SAAW1B,OAAO2B,YAAc,KAAKrB,QAAU,GAErD,KAAKI,WAAa,kBACzBU,EAAOpB,OAAOwB,QAAUxB,OAAOyB,WAC/BJ,EAAMrB,OAAO0B,SAEdJ,GAAY,SAASF,CAAAA,QAAYC,CAAAA,IAGlC,KAAKrB,OAASA,OAAOiB,KAAK,GAAI,KAAKf,MAAOoB,CAAAA,EACvC,CAAC,KAAKtB,OACR,MAAM,IAAI4B,MAAM,mCAAA,EAGjB,KAAKC,cAAa,EAElB,KAAKtB,OAAS,GAEX,KAAKC,SACPT,EAAcY,gBAAgBmB,IAAI,IAAI,EACnC/B,EAAcY,gBAAgBoB,OAAS,IACzC/B,OAAOgC,iBAAiB,WAAYjC,EAAckC,gBAAgB,EAClEjC,OAAOgC,iBAAiB,eAAgBjC,EAAckC,gBAAgB,EACtEjC,OAAOgC,iBAAiB,SAAUjC,EAAckC,gBAAgB,GAGnE,CAEQJ,eAAe,CACnB,KAAKzB,QACP,KAAKA,MAAM8B,UAAS,EACpB,KAAK9B,MAAQ,MAGd,KAAKH,SAAW,KAAKD,OAAOC,SAC5B,KAAKA,SAAS,OAAY,GAAGH,IAAAA,GAE7B,IAAIqC,EAAclC,SAASmC,cAAc,KAAA,EACzCD,EAAYE,YAAc,KAAKnC,MAC/B,IAAIoC,EAAeH,EAAYI,UAE/B,KAAKtC,SAASgB,KAAI,EAClB,KAAKhB,SAASuC,MAAM,qCAAqCF,CAAAA,qCAAiD,EAC1G,KAAKrC,SAASwC,MAAK,EAGnB,KAAKxC,SAAW,KAAKD,OAAOC,SAC5B,IAAMyC,EAAO,KAAKzC,SAASyC,KAC3BA,EAAKH,UAAY,GACjB,OAAOG,EAAKC,CAAAA,EAET,KAAKlC,YACP,KAAKmC,qBAAoB,EAG1B,KAAKxC,MAAQyC,EAAIH,EAAM,KAAK1C,MAAM,EAAE8C,MAAM,KAAK3C,IAAI,EAGnD,OAAU,CAAC4C,KAAAA,EAAMC,SAAAA,CAAQ,IAAK,KAAKnC,eAClC,KAAKZ,SAAS+B,iBAAiBe,EAAMC,CAAAA,EAGtC,KAAKhD,OAAOgC,iBAAiB,SAAU,IAAA,CAClC,KAAKzB,QACR0C,WAAW,IAAA,CACN,KAAKjD,QAAU,CAAC,KAAKA,OAAOkD,OAC/B,KAAKrB,cAAa,GAElB,KAAKtB,OAAS,GACV,KAAKC,QACRT,EAAcY,gBAAgBwC,OAAO,IAAI,EAE1C,KAAKC,KAAK,OAAA,EAEZ,EAAG,GAAA,CAEL,CAAA,CACD,CAEAC,GAAGC,EAAeN,EAAkC,CACnD,OAAIM,IAAU,QACb,KAAKxC,sBAAsByC,KAAK,CAAER,KAAMO,EAAON,SAAAA,CAAS,CAAA,GAExD,KAAKnC,eAAe0C,KAAK,CAAER,KAAMO,EAAON,SAAAA,CAAS,CAAA,EAC7C,KAAK/C,UACR,KAAKA,SAAS+B,iBAAiBsB,EAAON,CAAAA,GAGjC,IACR,CAEQI,KAAKE,EAAeE,EAAc,CACzC,OAAW,CAAET,KAAAA,EAAMC,SAAAA,CAAQ,IAAM,KAAKlC,sBACjCiC,IAASO,GACZN,EAASQ,CAAAA,CAGZ,CAEAC,OAAc,CACV,KAAKzD,QAAQ,KAAKA,OAAOyD,MAAK,CAClC,CAEAC,cAAqB,CACjB,KAAK1D,QAAQ,KAAKA,OAAOyD,MAAK,CAClC,CAEAE,SAAStD,EAAeC,EAAsB,CAC1C,KAAKN,QAAQ,KAAKA,OAAO2D,SAAStD,EAAOC,CAAAA,EAC5C,KAAKD,MAAQA,EACb,KAAKC,OAASA,CACf,CAEAsD,OAAOxC,EAAcC,EAAmB,CACpC,KAAKrB,QAAQ,KAAKA,OAAO4D,OAAOxC,EAAMC,CAAAA,CAC1C,CAEA,OAAeY,iBAAmB4B,EAAA,IAAA,CACjC9D,EAAcY,gBAAgBmD,QAAQC,GAAKA,EAAEtB,MAAK,CAAA,EAClD1C,EAAcY,gBAAgBqD,MAAK,CACpC,EAHkC,oBAK1BpB,sBAAsB,CAE7B,KAAK3C,SAASyC,KAAKuB,UAAYhE,SAASyC,KAAKuB,UAG7C,IAAMC,EAAaC,iBAAiBlE,SAASmE,eAAe,EAC5D,QAAQC,EAAI,EAAGA,EAAIpE,SAASmE,gBAAgBE,MAAMC,OAAQF,IAAI,CAC7D,IAAMG,EAAOvE,SAASmE,gBAAgBE,MAAMD,CAAAA,EACzCG,EAAKC,WAAW,IAAA,GAClB,KAAKxE,SAASmE,gBAAgBE,MAAMI,YAAYF,EAAMN,EAAWS,iBAAiBH,CAAAA,CAAAA,CAEpF,CAKA,GAAG,KAAKvE,SAAS2E,oBAAsB3E,SAAS2E,mBAAmB,CAClE,IAAMC,EAAe,CAAA,EACrB,QAAUC,KAAS7E,SAAS2E,mBAC3B,GAAG,CACF,IAAMG,EAAW,IAAK,KAAK/E,OAAegF,cACtCC,EAAU,GACd,QAAQZ,EAAI,EAAGA,EAAIS,EAAMI,SAASX,OAAQF,IACzCY,GAAWH,EAAMI,SAASb,CAAAA,EAAGY,QAAU;EAExCF,EAASI,YAAYF,CAAAA,EACrBJ,EAAatB,KAAKwB,CAAAA,CACnB,OACMK,EAAE,CACPlE,QAAQC,KAAK,sCAAuCiE,CAAAA,CACrD,CAED,KAAKnF,SAAS2E,mBAAqBC,CACpC,CAGe5E,SAASoF,KAAKC,iBAAiB,+BAAA,EACvCxB,QAAQQ,GAAAA,CACd,KAAKrE,SAASoF,KAAKE,YAAYjB,EAAMkB,UAAU,EAAA,CAAA,CAChD,CAAA,CACD,CAEA/C,OAAc,CACV,KAAKzC,SACJ,KAAKI,QACP,KAAKA,MAAM8B,UAAS,EACpB,KAAK9B,MAAQ,MAGd,KAAKJ,OAAOyC,MAAK,EACjB,KAAKzC,OAAS,KACd,KAAKC,SAAW,KAChB,KAAKM,OAAS,GAEX,KAAKC,QACPT,EAAcY,gBAAgBwC,OAAO,IAAI,EAG1C,KAAKC,KAAK,OAAA,EAEZ,CACD,EC1OA,IAAMqC,EAAgB,IAAIC,IASnB,SAASC,GAIdC,EAAiD,CAClD,GAAM,CAAEC,GAAAA,EAAIC,MAAOC,EAASC,QAAAA,EAASC,QAAAA,CAAO,EAAKL,EAEjD,GAAIC,GAAMJ,EAAcS,IAAIL,CAAAA,EAC3B,MAAO,IAAMJ,EAAcU,IAAIN,CAAAA,EAGhC,IAAMO,EAAiBC,EAAA,IAAA,CACtB,IAAMC,EAAa,CAClBC,IAAKV,EACLW,OAAQ,CAAC,EACTC,SAAU,CAAC,EACXC,SAAU,CAAA,CACX,EAEMC,EAAU,CACfC,gBAAiB,CAAA,EACjBC,QAAS,CAAA,EACTC,YAAa,CAAA,EACbC,iBAAiBC,EAAM,CAAI,KAAKJ,gBAAgBK,KAAKD,CAAAA,CAAI,EACzDE,eAAeC,EAAM,CAAI,KAAKN,QAAQI,KAAKE,CAAAA,CAAI,EAC/CC,mBAAmBC,EAAM,CAAI,KAAKP,YAAYG,KAAKI,CAAAA,CAAI,CACxD,EAEAC,EAAcX,CAAAA,EAEd,GAAI,CAEH,GAAIZ,EAAS,CACZ,IAAMwB,EAAWxB,EAAAA,EACjB,QAAWyB,KAAOD,EAAU,CAC3B,IAAME,EAAMF,EAASC,CAAAA,EACfE,EAAUD,aAAuBE,EAAUF,EAAiB,IAAIE,EAClED,IAAYD,IACfC,EAAOE,MAAQH,GAEhBnB,EAAME,OAAOgB,CAAAA,EAAOE,EAEpBG,OAAOC,eAAexB,EAAOkB,EAAK,CACjCrB,IAAKE,EAAA,IAAMC,EAAME,OAAOgB,CAAAA,EAAnB,OACLO,WAAY,GACZC,aAAc,EACf,CAAA,CACD,CACD,CAGA,GAAIhC,EAAS,CACZ,QAAWwB,KAAOxB,EACjB6B,OAAOC,eAAexB,EAAOkB,EAAK,CACjCrB,IAAKE,EAAA,IAAMC,EAAMG,SAASe,CAAAA,EAArB,OACLO,WAAY,GACZC,aAAc,EACf,CAAA,EAGD,QAAWR,KAAOxB,EAAS,CAC1B,IAAMiC,EAAW,IAAIC,EAAS,IAAMlC,EAAQwB,CAAAA,EAAKW,KAAK7B,EAAOA,CAAAA,CAAAA,EAC7DA,EAAMG,SAASe,CAAAA,EAAOS,CACvB,CACD,CAGA,GAAIhC,EACH,QAAWuB,KAAOvB,EACjBK,EAAMkB,CAAAA,EAAO,IAAIY,IAAAA,CAChBd,EAAcX,CAAAA,EACd,GAAI,CACH,OAAOV,EAAQuB,CAAAA,EAAKa,MAAM/B,EAAO8B,CAAAA,CAClC,QAAA,CACCE,EAAAA,CACD,CACD,CAGH,QAAA,CACCA,EAAAA,CACD,CAEAhC,OAAAA,EAAMiC,cAAgB5B,EAAQC,gBAC9BN,EAAMI,SAAWC,EAAQE,QACzBP,EAAMkC,aAAe7B,EAAQG,YAE7BR,EAAMmC,SAAW,IAAA,CAChB,QAAWjB,KAAOlB,EAAMG,SACvBH,EAAMG,SAASe,CAAAA,EAAKkB,QAAO,EAE5B,QAAWT,KAAY3B,EAAMiC,eAAiB,CAAA,EAC7CN,EAASS,QAAO,EAEjB,QAAWC,KAAUrC,EAAMI,UAAY,CAAA,EACtCiC,EAAOD,QAAO,EAEf,QAAWE,KAActC,EAAMkC,cAAgB,CAAA,EAC9CI,EAAAA,EAEG/C,GACHJ,EAAcoD,OAAOhD,CAAAA,EAEtBS,EAAME,OAAS,CAAC,EAChBF,EAAMG,SAAW,CAAC,EAClBH,EAAMI,SAAW,CAAA,CAClB,EAEIb,GACHJ,EAAcqD,IAAIjD,EAAIS,CAAAA,EAGhBA,CACR,EAtGuB,kBAwGnByC,EACJ,OAAIlD,IACHkD,EAAiB3C,EAAAA,GAGX,IAAA,CACN,IAAI4C,EAAenD,EAAKkD,EAAiB3C,EAAAA,EAEzC,GAAI,CAACP,EAAI,CACR,IAAMoD,EAAmBC,EAAAA,EACrBD,GAAqBA,EAAyB7B,oBAChD6B,EAAyB7B,mBAAmB,IAAM4B,EAAaP,SAAQ,CAAA,CAE1E,CACA,OAAOO,CACR,CACD,CAnIgBrD,EAAAA,GAAAA,eAqIT,SAASwD,GAAStD,EAAU,CAClC,OAAOJ,EAAcU,IAAIN,CAAAA,CAC1B,CAFgBsD,EAAAA,GAAAA,YAIT,SAASC,IAAAA,CACf3D,EAAc4D,QAAQ/C,GAASA,EAAMmC,SAAQ,CAAA,EAC7ChD,EAAc6D,MAAK,CACpB,CAHgBF,EAAAA,GAAAA,eAKT,SAASG,IAAAA,CACf,IAAMC,EAA8B,CAAC,EACrC/D,OAAAA,EAAc4D,QAAQ,CAAC/C,EAAOT,IAAAA,CAC7B2D,EAAO3D,CAAAA,EAAMS,CACd,CAAA,EACOkD,CACR,CANgBD,EAAAA,GAAAA,aC3JT,IAAME,GAAU,CACtB,IAAK,QAAS,OAAQ,UAAW,OAAQ,UAAW,QAAS,IAAK,MAAO,MAAO,aAAc,OAAQ,KAAM,SAAU,SAAU,UAAW,OAAQ,OAAQ,MAAO,WAAY,UAAW,OAAQ,WAAY,KAAM,MAAO,UAAW,MAAO,SAAU,MAAO,KAAM,KAAM,KAAM,QAAS,WAAY,aAAc,SAAU,SAAU,OAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SAAU,KAAM,IAAK,SAAU,MAAO,QAAS,MAAO,MAAO,SAAU,QAAS,SAAU,KAAM,OAAQ,MAAO,OAAQ,OAAQ,WAAY,QAAS,MAAO,SAAU,KAAM,WAAY,SAAU,SAAU,IAAK,QAAS,MAAO,WAAY,IAAK,KAAM,KAAM,OAAQ,IAAK,OAAQ,UAAW,SAAU,QAAS,SAAU,OAAQ,SAAU,MAAO,MAAO,UAAW,MAAO,QAAS,QAAS,KAAM,WAAY,QAAS,KAAM,QAAS,OAAQ,KAAM,QAAS,IAAK,KAAM,MAAO,QAAS,OAGh0BC,GAAa,IAAIC,IAAIF,EAAAA,EAErBG,GAAkB,CAAC,OAAQ,OAAQ,QAAS,OAAQ,KAAM,OAAQ,MCAxE,IAAMC,GAAN,cAAuBC,CAAAA,CAL9B,MAK8BA,CAAAA,EAAAA,iBAC7BC,KACAC,gBACAC,SAAiC,KACjCC,cAAsC,KACtCC,QAA8B,KAE9B,YAAYC,EAAeL,EAAeC,EAAuB,CAChE,MAAMI,CAAAA,EACN,KAAKL,KAAOA,GAAQ,UACpB,KAAKC,gBAAkBA,CACxB,CAEAK,QAAQC,EAAmB,CAC1B,KAAKC,YAAc,GACnB,IAAMC,EAAWF,EAAKG,cAGhBC,EADcC,EAAAA,GACaC,WAAWC,QAAQ,KAAKd,IAAI,EAEzD,OAAOW,GAAgB,YAC1B,KAAKR,cAAgB,IAAIY,EAAc,KAAKC,IAAI,EAChDC,EAAa,KAAKD,KAAM,KAAKb,cAAsBQ,EAAY,KAAKV,eAAe,CAAA,GACzE,KAAKA,kBAAoBiB,SACnC,KAAKhB,SAAW,IAAIa,EAAc,KAAKC,IAAI,EAC3CC,EAAa,KAAKD,KAAM,KAAKd,SAAiB,KAAKD,eAAe,GAG/D,KAAKE,cACR,KAAKA,cAAcG,QAAQC,CAAAA,GAE3B,KAAKH,QAAUK,EAASU,cAAc,MAAA,EAClC,KAAKnB,OAAS,YAChB,KAAKI,QAA4BJ,KAAO,KAAKA,MAG3C,KAAKE,UACR,KAAKA,SAASI,QAAQ,KAAKF,OAAO,EAGnCG,EAAKa,YAAY,KAAKhB,OAAO,EAE/B,CAEAiB,WAAY,CACP,KAAKlB,cACR,KAAKA,cAAckB,UAAS,EAClB,KAAKjB,UACX,KAAKF,UACR,KAAKA,SAASmB,UAAS,EAExB,KAAKjB,QAAQkB,OAAM,EACnB,KAAKlB,QAAU,MAEhB,KAAKI,YAAc,EACpB,CAEAe,WAAoB,CACnB,OAAI,KAAKpB,cACD,KAAKA,cAAcoB,UAAS,EAE7B,KAAKnB,QAAU,CAAC,KAAKA,SAAW,CAAA,CACxC,CAEAoB,eAA6B,CAC5B,OAAO,IACR,CACD,EClEO,IAAMC,EAAN,MAAMA,UAAiBC,CAAAA,CAP9B,MAO8BA,CAAAA,EAAAA,iBAC7BC,MAEA,YAAYC,EAAeC,EAAe,CACzC,MAAMD,CAAAA,EACN,KAAKD,MAAQE,CACd,CAEAC,UAAUC,EAAY,CACrB,GAAI,KAAKJ,iBAAiBK,EACzB,KAAKL,MAAMG,UAAUC,CAAAA,UACT,KAAKJ,iBAAiBM,EAMlC,KAAKN,MAAMO,UAAUC,KAAKJ,CAAAA,MANuB,CACjD,IAAMK,EAAO,IAAIH,EAAa,KAAKI,IAAI,EACvCD,EAAKF,UAAUC,KAAK,KAAKR,KAAK,EAC9BS,EAAKF,UAAUC,KAAKJ,CAAAA,EACpB,KAAKJ,MAAQS,CACd,CAGA,OAAO,IACR,CAEAE,QAAQC,EAAqB,CAC5B,KAAKZ,MAAMW,QAAQC,CAAAA,CACpB,CAEAC,WAAY,CACX,KAAKb,MAAMa,UAAS,CACrB,CAEA,MAAMC,gBAAiB,CACtB,MAAM,KAAKd,MAAMc,eAAc,CAChC,CAEAC,cAAcC,EAAiB,CAC9B,KAAKhB,MAAMe,cAAcC,CAAAA,CAC1B,CAEAC,aAAaD,EAAiB,CAC7B,KAAKhB,MAAMiB,aAAaD,CAAAA,CACzB,CAEAE,YAAYF,EAAiBG,EAAe,CAC3C,KAAKnB,MAAMkB,YAAYF,EAAWG,CAAAA,CACnC,CAEA,IAAIC,aAAc,CACjB,OAAO,KAAKpB,MAAMoB,WACnB,CAEA,IAAIA,YAAYC,EAAgB,CAC/B,KAAKrB,MAAMoB,YAAcC,CAC1B,CAEAC,WAAoB,CACnB,OAAO,KAAKtB,MAAMsB,UAAS,CAC5B,CAEAC,eAA6B,CAC5B,OAAO,KAAKvB,MAAMuB,cAAa,CAChC,CAEAC,KAAKC,EAAoBC,EAAe,CACvC,IAAIC,EAAY,KAAKJ,cAAa,EAClC,KAAOI,aAAqB7B,GAC3B6B,EAAaA,EAAkB3B,MAGhC,OAAI2B,aAAqBC,GACpB,OAAOH,GAAS,WACnBC,EAAUD,EACVA,EAAO,WAERE,EAAUE,QAAQJ,GAAQ,UAAWC,CAAAA,IAEjC,OAAOD,GAAS,WACnBC,EAAUD,EACVA,EAAOK,QAER,KAAK3B,UAAU,IAAI4B,GAAS,KAAKrB,KAAMe,EAAMC,CAAAA,CAAAA,GAEvC,IACR,CACD,ECzDA,SAASM,GAAeC,EAAU,CACjC,OAAGA,aAAiBC,EAAeD,EAAME,KAAI,EACjCF,CACb,CAHSD,EAAAA,GAAAA,kBAKT,SAASI,GAAQC,EAAU,CAC1B,OAAIA,aAAgBC,EAAiBD,EAC9B,IAAIC,EAASD,EAAKE,KAAMF,CAAAA,CAChC,CAHSD,EAAAA,GAAAA,WAKRI,EAAKC,UAAkBC,UAAY,SAASC,EAAU,CACtD,OAAOP,GAAQ,IAAI,EAAEM,UAAUC,CAAAA,CAChC,EAECH,EAAKC,UAAkBG,KAAO,SAASC,EAAM,CAC7C,IAAIC,EAAMd,GAAea,CAAAA,EACzB,OAAGC,aAAeC,EACV,KAAKL,UAAU,IAAIM,GAAa,KAAKT,KAAMO,CAAAA,CAAAA,EAE5C,KAAKJ,UAAU,IAAIO,EAASH,CAAAA,CAAAA,CACpC,EAECN,EAAKC,UAAkBS,KAAO,SAASL,EAAM,CAC7C,OAAO,KAAKH,UAAU,IAAIS,GAASnB,GAAea,CAAAA,CAAAA,CAAAA,CACnD,EAECL,EAAKC,UAAkBW,GAAK,SAASP,EAAM,CAC3C,OAAO,KAAKD,KAAKC,CAAAA,CAClB,EAECL,EAAKC,UAAkBY,KAAO,SAASC,EAAYC,EAAc,CACjE,IAAIC,EAAY,KAAKC,cAAa,EAClC,KAAOD,aAAqBlB,GAC3BkB,EAAaA,EAAkBE,MAGhC,OAAIF,aAAqBG,GACpB,OAAOL,GAAS,UAAYA,IAASM,SACxCL,EAAWD,EACXA,EAAO,WAERE,EAAUK,QAAQP,GAAQ,UAAWC,CAAAA,EAC9B,OAEH,OAAOD,GAAS,UAAYA,IAASM,SACxCL,EAAWD,EACXA,EAAOM,QAED,KAAKlB,UAAU,IAAIoB,GAAS,KAAKvB,KAAMe,EAAMC,CAAAA,CAAAA,EAEtD,EAECf,EAAKC,UAAkBsB,MAAQ,SAASlB,KAAWmB,EAAW,CAC9D,IAAIC,EAAK,IAAIN,EAAc,KAAKpB,KAAMM,CAAAA,EACtC,QAASqB,EAAI,EAAGA,EAAIF,EAAKG,OAAQD,IAAK,CACrC,IAAIE,EAAMJ,EAAKE,CAAAA,EACf,GAAIG,GAAUD,CAAAA,EACbH,EAAGJ,QAAQ,UAAWO,CAAAA,UACZA,GAAO,OAAOA,GAAQ,SAChC,QAASE,KAAKF,EAAK,CAClB,IAAItB,EAAMsB,EAAIE,CAAAA,EACd,GAAIA,IAAM,MACTL,EAAGM,OAAOzB,CAAAA,UAEFwB,EAAEE,WAAW,IAAA,GAAS,OAAO1B,GAAQ,WAAY,CACzD,IAAI2B,EAAYH,EACZI,EAAY,CAAA,EAChB,GAAIJ,EAAEK,SAAS,GAAA,EAAM,CACpB,IAAMC,EAAQN,EAAEO,MAAM,GAAA,EACtBJ,EAAYG,EAAM,CAAA,EAClBF,EAAYE,EAAME,MAAM,CAAA,CACzB,CACAb,EAAGc,iBAAiBN,EAAUO,UAAU,CAAA,EAAGC,YAAW,EAAInC,EAAK4B,CAAAA,CAChE,MAEM7B,EAAE,QAAWA,EAAUqC,MAAQ,CAAC,GACpCrC,EAAUqC,MAAMZ,CAAAA,EAAKxB,CAExB,CAEF,CACA,GAAI,CACHmB,EAAGkB,KAAI,CACR,OAASC,EAAG,CACX,GAAI,EAAEA,aAAaC,GAAe,MAAMD,CACzC,CACA,OAAO,KAAK1C,UAAUuB,CAAAA,CACvB,EAECzB,EAAKC,UAAkB6C,KAAO,SAASC,EAAgBC,EAAS,CAChE,IAAIC,EAAW,IAAIC,GAAgB,KAAKnD,IAAI,EACxCoD,EACJ,OAAIH,aAAgBhD,EACnBmD,EAAgBH,EACN,OAAOA,GAAS,UAAYA,GAAMI,OAC5CD,EAAgB,IAAIE,EAAa,KAAKtD,IAAI,EACzCoD,EAA+B5B,MAAMyB,CAAAA,IAEtCG,EAAgB,IAAIE,EAAa,KAAKtD,IAAI,EACzCoD,EAA+BG,UAAUC,KAAK,IAAI9C,EAASjB,GAAewD,CAAAA,CAAAA,CAAAA,GAE5EC,EAASO,aAAahE,GAAeuD,CAAAA,EAAYI,CAAAA,EAC1C,KAAKjD,UAAU+C,CAAAA,CACvB,EAECjD,EAAKC,UAAkBwD,KAAO,SAASC,EAAiBC,EAAa,CACrE,IAAIC,EAAiB,IAAIC,GAAe,KAAK9D,KAAMP,GAAekE,CAAAA,EAAaC,CAAAA,EAC/E,OAAO,KAAKzD,UAAU0D,CAAAA,CACvB,EAEC5D,EAAKC,UAAkB6D,cAAgB,SAASf,EAAgBC,EAAWe,EAAO,GAAK,CACvF,IAAI/C,EAAY,KAAKC,cAAa,EAElC,GAAID,aAAqBkC,GAAiB,CACzC,IAAIc,EACAhB,aAAgBhD,EACnBgE,EAAWhB,EACD,OAAOA,GAAS,UAAYA,GAAMI,OAC5CY,EAAW,IAAIX,EAAa,KAAKtD,IAAI,EACpCiE,EAA0BzC,MAAMyB,CAAAA,GAEjCgB,EAAW,IAAIvD,EAASjB,GAAewD,CAAAA,CAAAA,EAExChC,EAAUwC,aAAahE,GAAeuD,CAAAA,EAAYiB,EAAUD,CAAAA,CAC7D,KACC,OAAM,IAAIE,MAAM,6CAAA,EAEjB,OAAO,IACR,EAECjE,EAAKC,UAAkBiE,UAAY,SAASlB,EAAS,CACrD,OAAO,KAAKc,cAAc,GAAMd,EAAM,EAAA,CACvC,EAEChD,EAAKC,UAAkBkE,KAAO,SAASC,EAAW/D,EAAM,CACxD,IAAIW,EAAY,KAAKC,cAAa,EAElC,GAAID,aAAqBqD,EACxBrD,EAAUsD,QAAQF,EAAG/D,CAAAA,MAErB,OAAM,IAAI4D,MAAM,uBAAuBG,CAAAA,aAAc,EAEtD,OAAO,IACR,EAECpE,EAAKC,UAAkBsE,MAAQ,SAASlE,EAAkE,CAC1G,GAAI,OAAOA,GAAM,WAAY,CAC5B,IAAMmE,EAAU,IAAIC,EACpBpE,EAAEmE,CAAAA,EACF,KAAKL,KAAK,QAASK,CAAAA,CACpB,MACC,KAAKL,KAAK,QAAS9D,CAAAA,EAEpB,OAAO,IACR,EAECL,EAAKC,UAAkByE,GAAK,SAASC,EAAehB,EAAwB,CAC5E,IAAI3C,EAAY,KAAKC,cAAa,EAElC,GAAGD,IAAcA,aAAqBqD,GAAerD,aAAqBG,GACzEH,EAAUuB,iBAAiBoC,EAAOhB,CAAAA,MAGlC,OAAM,IAAIM,MAAM,uBAAuBU,CAAAA,YAAiB,EAEzD,OAAO,IACR,EAEC3E,EAAKC,UAAkB2E,QAAU,SAASjB,EAAiC,CAC3E,IAAI3C,EAAY,KAAKC,cAAa,EAClC,GAAID,IACHA,EAAU6D,aAAelB,EACrB3C,EAAU8D,aAAa,CAE1B,IAAMC,EADQ/D,EAAUgE,UAAS,EAChBC,KAAKC,GAAKA,aAAaC,WAAAA,EACpCJ,GAAIpB,EAASoB,CAAAA,CAClB,CAED,OAAO,IACR,EAEC/E,EAAKC,UAAkBmF,QAAU,SAASzB,EAA+C,CACzF,IAAI3C,EAAY,KAAKC,cAAa,EAClC,OAAID,IACHA,EAAUqE,aAAe1B,GAEnB,IACR,EAEC3D,EAAKC,UAAkBqF,MAAQ,UAAA,CAC/B,IAAIC,EAAO,KACX,KAAOA,aAAgBzF,GACtByF,EAAQA,EAAarE,MAGtB,IAAIF,EAAYuE,EAAKtE,cAAa,EAClC,KAAOD,aAAqBlB,GAC3BkB,EAAaA,EAAkBE,MAGhC,OAAIF,aAAqBqD,GACpBrD,EAAUwE,UAASxE,EAAUwE,QAAQC,UAAY,IACrDzE,EAAU0E,SAASC,UAAS,EAC5B3E,EAAU0E,SAASpC,UAAY,CAAA,EAC/BtC,EAAU0E,SAASZ,YAAc,IACvBS,aAAgBK,IAC1BL,EAAKI,UAAS,EACdJ,EAAKjC,UAAY,CAAA,EACjBiC,EAAKT,YAAc,GACfS,EAAKM,mBAAmBxB,GAAekB,EAAKM,QAAQL,UACvDD,EAAKM,QAAQL,QAAQC,UAAY,KAG5B,IACR,EAECzF,EAAKC,UAAkB6F,OAAS,UAAA,CAChC,IAAIP,EAAO,KACX,KAAOA,aAAgBzF,GACtByF,EAAQA,EAAarE,MAGtB,IAAIF,EAAYuE,EAAKtE,cAAa,EAClC,KAAOD,aAAqBlB,GAC3BkB,EAAaA,EAAkBE,MAG5BF,aAAqBqD,GAAerD,aAAqBG,EAC5DH,EAAU2E,UAAS,EACTJ,aAAgBK,GAAiBL,EAAKM,mBAAmBxB,EACnEkB,EAAKM,QAAQF,UAAS,EACZJ,aAAgBvF,GAC1BuF,EAAKI,UAAS,CAEhB,EAEC3F,EAAKC,UAAkB8F,KAAO,SAASC,EAAmB,IAAG,CAC7D,OAAO,KAAKpB,QAASG,GAAAA,CACpBA,EAAGkB,QAAQ,CAAC,CAAEC,QAAS,CAAE,EAAG,CAAEA,QAAS,CAAE,GAAI,CAAEF,SAAAA,CAAS,CAAA,CACzD,CAAA,EAAGZ,QAAQ,MAAOL,GAAAA,CAEjB,MADaA,EAAGkB,QAAQ,CAAC,CAAEC,QAAS,CAAE,EAAG,CAAEA,QAAS,CAAE,GAAI,CAAEF,SAAAA,CAAS,CAAA,EAC1DG,QACZ,CAAA,CACD,EAECnG,EAAKC,UAAkBmG,MAAQ,SAASJ,EAAmB,IAAG,CAC9D,OAAO,KAAKpB,QAASG,GAAAA,CACpBA,EAAGkB,QAAQ,CACV,CAAEI,OAAQ,IAAKH,QAAS,EAAGI,SAAU,QAAS,EAC9C,CAAED,OAAQtB,EAAGwB,aAAe,KAAML,QAAS,EAAGI,SAAU,QAAS,GAC/D,CAAEN,SAAAA,CAAS,CAAA,CACf,CAAA,EAAGZ,QAAQ,MAAOL,GAAAA,CAKjB,MAJaA,EAAGkB,QAAQ,CACvB,CAAEI,OAAQtB,EAAGwB,aAAe,KAAML,QAAS,EAAGI,SAAU,QAAS,EACjE,CAAED,OAAQ,IAAKH,QAAS,EAAGI,SAAU,QAAS,GAC5C,CAAEN,SAAAA,CAAS,CAAA,EACHG,QACZ,CAAA,CACD,EAEA,QAASzE,EAAI,EAAGA,EAAI8E,GAAQ7E,OAAQD,IAAK,CACxC,IAAM+E,EAAMD,GAAQ9E,CAAAA,EACnB1B,EAAKC,UAAkBwG,CAAAA,EAAO,YAAYjF,EAAW,CACrD,OAAO,KAAKtB,UAAUwG,GAAc,KAAK3G,KAAM0G,EAAKjF,CAAAA,CAAAA,CACrD,CACD,CAEA,IAAMmF,GAAkBC,EAAA,CAACC,EAAGC,IAAAA,CAC3BD,EAAEC,CAAAA,EAAM,UAAA,CACP,GAAIC,GAAWC,IAAIF,CAAAA,EAClB,OAAOlH,GAAQ8G,GAAcG,EAAGC,EAAIG,SAAAA,CAAAA,EAC9B,CACN,IAAI/B,EAAI,IAAIU,EAAciB,CAAAA,EAC1B3B,OAAAA,EAAE4B,CAAAA,EAAG,GAAIG,SAAAA,EACFrH,GAAQsF,CAAAA,CAChB,CACD,CACD,EAVwB,mBAYlBgC,GAAUN,EAAA,IAAA,CACf,IAAM7G,EAAY6G,EAAA,SAASO,EAAgBC,EAAuBC,OAAM,CAEvE,GAAGF,GAAgBG,eAAeC,YAAY,CAC7C,IAAIxC,EAAMoC,EACNhH,EAAO4E,EAAGyC,CAAAA,EACd,OAAGrH,IAIFA,EAAO,IAAIkE,EAAYtE,EAAMgF,EAAG0C,QAAQC,kBAAiB,CAAA,EACzDvH,EAAKqF,QAAUT,EACf5E,EAAK2E,YAAc,GACnB3E,EAAKuF,SAASG,QAAU1F,EACxBA,EAAKuF,SAASZ,YAAc,GAC5BC,EAAGyC,CAAAA,EAAsBrH,GAClBP,GAAQO,EAAKuF,QAAQ,CAE9B,KACK,IAAG,OAAOyB,GAAkB,SAChC,OAAOpH,EAAKqH,EAAaO,SAASC,iBAAiBT,CAAAA,EAAgB,CAAA,CAAE,EAGrE,MAAM,IAAIlD,MAAM,wBAAA,EAElB,EAxBkB,QA0BlBlE,EAAK8H,QAAU,KAEf9H,EAAK+H,MAAQ,SAA8FrI,EAAUsI,EAAY,CAChI,IAAIC,EAAI,IAAItI,EACZsI,OAAAA,EAAED,IAAMA,EACRC,EAAEvI,MAASA,EACJuI,CACR,EAEAjI,EAAKkI,SAAW,SAAYC,EAAe,CAC1C,IAAM7H,EAAI,IAAI8H,EAASD,CAAAA,EACjBE,EAAmBC,EAAAA,EACzB,OAAID,GACHA,EAAiBE,iBAAiBjI,CAAAA,EAE5BA,CACR,EAEAN,EAAKwI,OAAS,SAAS5E,EAAmC,CACzD,IAAMf,EAAI,IAAI4F,GAAO7E,CAAAA,EACfyE,EAAmBC,EAAAA,EACzB,OAAID,IACFA,EAAyBK,eAAkBL,EAAyBK,eAAe7F,CAAAA,EAAKwF,EAAiBE,iBAAiB1F,CAAAA,GAErH,IAAMA,EAAE8F,QAAO,CACvB,EAEA3I,EAAK4I,UAAYA,GACjB5I,EAAK6I,IAAM,CACVC,KAAKC,EAAYC,EAAa,CAC7B,IAAMC,EAAYC,GAAaH,CAAAA,EAC/B,QAAWI,KAAYF,EACrBE,EAAiBC,SAASJ,CAAAA,CAE7B,CACD,EACAhJ,EAAKc,KAAO,SAASC,EAAYC,EAAc,CAC9C,OAAI,OAAOD,GAAS,UAAYA,IAASM,SACxCL,EAAWD,EACXA,EAAOM,QAED,IAAIE,GAASvB,EAAae,EAAMC,CAAAA,CACxC,EACAhB,EAAKsI,oBAAsBA,EAE3BtI,EAAKqJ,MAAQC,GACbtJ,EAAKuJ,SAAWA,GAChBvJ,EAAKwJ,YAAcA,GACnBC,OAAOC,eAAe1J,EAAM,SAAU,CAAE2J,IAAK9C,EAAA,IAAM+C,GAAAA,EAAN,MAAkB,CAAA,EAE/D5J,EAAK6J,OAAS,SAAkCC,KAAqCrI,EAAW,CAC/F,IAAMsI,EAAU,CACfC,gBAAiB,CAAA,EACjBC,QAAS,CAAA,EACTC,YAAa,CAAA,EACb3B,iBAAiB4B,EAAM,CAAI,KAAKH,gBAAgBxG,KAAK2G,CAAAA,CAAI,EACzDzB,eAAe7F,EAAM,CAAI,KAAKoH,QAAQzG,KAAKX,CAAAA,CAAI,EAC/CuH,mBAAmBtD,EAAM,CAAI,KAAKoD,YAAY1G,KAAKsD,CAAAA,CAAI,CACxD,EACAuD,EAAcN,CAAAA,EACd,IAAIZ,EACJ,GAAI,CACHA,EAAW,IAAIW,EAAAA,GAAQrI,CAAAA,CACxB,QAAA,CACC6I,EAAAA,CACD,CAEA,OAAKnB,EAAiBoB,kBACpBpB,EAAiBoB,kBAAkB/G,KAAI,GAAIuG,EAAQC,eAAe,EAElEb,EAAiBoB,kBAAoBR,EAAQC,gBAG1Cb,EAAiBqB,gBACpBrB,EAAiBqB,gBAAgBhH,KAAI,GAAIuG,EAAQE,OAAO,EAExDd,EAAiBqB,gBAAkBT,EAAQE,QAGxCd,EAAiBsB,oBACpBtB,EAAiBsB,oBAAoBjH,KAAI,GAAIuG,EAAQG,WAAW,EAEhEf,EAAiBsB,oBAAsBV,EAAQG,YAG1Cf,CACR,EAEAnJ,EAAK0K,IAAM,UAAA,CACV,OAAO,IAAIC,CACZ,EAEA3K,EAAK4K,cAAgB,UAAA,CACpB,OAAO,IAAIC,CACZ,EAEA7K,EAAK8K,MAAQ,SAASC,EAAkD5E,EAAkD,CACzH,OAAO,IAAIiC,EAAS,IAAA,CACnB,IAAM9H,EAAIyK,aAAiBvK,EAAUuK,EAAMC,KAAI,EAAMD,aAAiBpL,EAASoL,EAAMrL,MAAQqL,EACvF9C,EAAI9B,aAAmB3F,EAAU2F,EAAQ6E,KAAI,EAAM7E,aAAmBxG,EAASwG,EAAQzG,MAAQyG,EAE/F8E,EAAaC,KAAKC,MAAMD,KAAKE,IAAI,EAAGF,KAAKG,IAAI,KAAM,EAAIpD,GAAK,GAAA,CAAA,EAAQ,GAAA,EAAO,IACjF,MAAO,sBAAsB3H,CAAAA,iBAAkB2K,CAAAA,IAChD,CAAA,CACD,EAEAjL,EAAKsL,aAAe,CAAA,EACpBtL,EAAKuL,gBAAmBC,GAAAA,CACvB,IAAMC,EAAcC,MAAMC,QAAQH,CAAAA,EAAUA,EAAS,CAACA,GACtD,QAAWI,KAAKH,EACfzL,EAAKsL,aAAa9H,KAAKoI,CAAAA,EACnB,OAAOhE,SAAa,KACvB5H,EAAK6L,UAAUjE,SAAUgE,CAAAA,CAG5B,EAEA5L,EAAK8L,IAAM,IAAIpH,EAEf1E,EAAK+L,OAAS,KACd/L,EAAKgM,SAAYC,GAAAA,CAChBjM,EAAK+L,OAASE,CACf,EAEAjM,EAAK6L,UAAY,CAACK,EAA2BV,IAAAA,CACxCU,GAAmB,CAACV,IACnB,OAAOU,GAAmB,UAAaA,EAAgB,MAAWA,EAAgB,SACrFV,EAASU,EACTA,EAAkBtE,UAIpB,IAAMuE,EAAYC,GAAiBZ,EAAeU,CAAAA,EAC9CC,aAAsBD,EAAgB1E,aAAqB6E,cAC9DH,EAAgBI,mBAAqB,IAAIJ,EAAgBI,mBAAoBH,GACnEA,aAAqB/G,aAC/B8G,EAAgBK,KAAKC,YAAYL,CAAAA,CAEnC,EAEI,OAAOvE,SAAa,KACE,IAAI6E,EAAWzM,EAAK8L,GAAG,EAC/BY,OAAO9E,SAAS+E,eAAe,EAGjD3M,EAAKsH,OAAUsF,GACP,IAAIC,GAAcD,CAAAA,EAG1B5M,EAAK8M,UAAY,IAAA,CAChBC,EAAUD,UAAS,CACpB,EAEA9M,EAAKgN,QAAWC,GAAAA,CACfF,EAAUC,QAAQC,CAAAA,CACnB,EAEAF,EAAUjF,QAAWoF,GAAAA,CAChBlN,EAAK8H,QACR9H,EAAK8H,QAAQoF,CAAAA,EAEbC,QAAQC,MAAM,iBAAkBF,CAAAA,CAElC,EAEA,QAAQvL,EAAI,EAAGA,EAAI8E,GAAQ7E,OAAQD,IAAI,CACtC,IAAI0L,EAAI5G,GAAQ9E,CAAAA,EAChBiF,GAAgB5G,EAAMqN,CAAAA,CACvB,CAEA,QAAQ1L,EAAI,EAAGA,EAAI2L,GAAgB1L,OAAQD,IAAI,CAC9C,IAAI4L,EAAID,GAAgB3L,CAAAA,EACxBiF,GAAgB5G,EAAMuN,CAAAA,CACvB,CAEA,OAAOvN,CACR,EA3MgB,WA6MVwN,GAAMrG,GAAAA,EAERsG,GAAU,OAAOnG,OAAW,MAC9BA,OAAekG,IAAMA,IAGvB,IAAAE,EAAeF,GCzgBf,IAAMG,GAAeC,EAAA,IAAA,CACpB,GAAI,OAAOC,OAAW,IAAa,MAAO,CAAEC,KAAM,IAAKC,OAAQ,GAAIC,KAAM,EAAG,EAE5E,IAAIF,EAAOD,OAAOI,SAASC,SACvBH,EAASF,OAAOI,SAASF,OACzBC,EAAOH,OAAOI,SAASD,KAE3B,GAAIA,EAAKG,WAAW,IAAA,EAAO,CAC1B,IAAMC,EAAcJ,EAAKK,UAAU,CAAA,EAG7BC,EAAYF,EAAYL,OAAO,MAAA,EACrC,GAAIO,IAAc,GACjBR,EAAOM,EACPL,EAAS,GACTC,EAAO,OACD,CACNF,EAAOM,EAAYC,UAAU,EAAGC,CAAAA,EAChC,IAAMC,EAAYH,EAAYC,UAAUC,CAAAA,EAElCE,EAAWD,EAAUE,QAAQ,GAAA,EAC/BD,IAAa,IAChBT,EAASQ,EACTP,EAAO,KAEPD,EAASQ,EAAUF,UAAU,EAAGG,CAAAA,EAChCR,EAAOO,EAAUF,UAAUG,CAAAA,EAE7B,CACD,CAEA,MAAO,CAAEV,KAAAA,EAAMC,OAAAA,EAAQC,KAAAA,CAAK,CAC7B,EAhCqB,gBAkCfU,GAAef,GAAAA,EACRgB,EAAcC,EAAIC,MAAMH,GAAaZ,IAAI,EACzCgB,EAAeF,EAAIC,MAAMH,GAAaZ,IAAI,EAC1CiB,GAAgBH,EAAIC,MAAMH,GAAaX,MAAM,EAC7CiB,EAAcJ,EAAIC,MAAMH,GAAaV,IAAI,EAO/C,SAASiB,EAASnB,EAAcoB,EAAmB,GAAK,CAC9D,GAAI,OAAOrB,OAAW,IAAa,OAEnCiB,EAAaK,MAAQR,EAAYQ,MAE7BD,EACHrB,OAAOuB,QAAQC,aAAa,CAAC,EAAG,GAAIvB,CAAAA,EAEpCD,OAAOuB,QAAQE,UAAU,CAAC,EAAG,GAAIxB,CAAAA,EAGlC,IAAMyB,EAAO5B,GAAAA,EACbgB,EAAYQ,MAAQI,EAAKzB,KACzBiB,GAAcI,MAAQI,EAAKxB,OAC3BiB,EAAYG,MAAQI,EAAKvB,IAC1B,CAfgBiB,EAAAA,EAAAA,YAoBT,SAASO,IAAAA,CACf,OAAOZ,EAAIa,SAAS,IAAA,CACnB,IAAM1B,EAASgB,GAAcI,MACvBO,EAAS,IAAIC,gBAAgB5B,CAAAA,EAC7B6B,EAAiC,CAAC,EACxCF,OAAAA,EAAOG,QAAQ,CAACV,EAAOW,IAAAA,CACtBF,EAAOE,CAAAA,EAAOX,CACf,CAAA,EACOS,CACR,CAAA,CACD,CAVgBJ,EAAAA,GAAAA,kBAeT,SAASO,IAAAA,CACf,OAAOnB,EAAIa,SAAS,IAAA,CACnB,IAAMzB,EAAOgB,EAAYG,MACzB,OAAOnB,EAAKG,WAAW,GAAA,EAAOH,EAAKK,UAAU,CAAA,EAAKL,CACnD,CAAA,CACD,CALgB+B,EAAAA,GAAAA,WAQhB,GAAI,OAAOlC,OAAW,IAAa,CAClC,IAAMmC,EAAcpC,EAAA,IAAA,CACnB,IAAM2B,EAAO5B,GAAAA,EACbmB,EAAaK,MAAQR,EAAYQ,MACjCR,EAAYQ,MAAQI,EAAKzB,KACzBiB,GAAcI,MAAQI,EAAKxB,OAC3BiB,EAAYG,MAAQI,EAAKvB,IAC1B,EANoB,eAQpBH,OAAOoC,iBAAiB,WAAYD,CAAAA,EACpCnC,OAAOoC,iBAAiB,aAAcD,CAAAA,CACvC,CC5EA,IAAME,GAAiC,CAAA,EACjCC,GAAoC,CAAA,EACpCC,GAAeC,EAAIC,MAAyB,CAAA,CAAE,EAE7C,SAASC,GAAgBC,EAAyB,CACxDJ,GAAaK,MAAQD,CACtB,CAFgBD,EAAAA,GAAAA,mBAIT,SAASG,IAAAA,CACf,OAAON,GAAaK,KACrB,CAFgBC,EAAAA,GAAAA,mBAYT,SAASC,GAAWH,EAA2BI,EAAcC,EAAmB,GAAE,CAExF,IAAMC,GADeF,EAAKG,WAAWF,CAAAA,EAAYD,EAAKI,MAAMH,EAASI,MAAM,EAAIL,GAC7CM,MAAM,GAAA,EAAKC,OAAOC,GAAKA,IAAM,EAAA,EAE/D,QAAWC,KAASb,EAAQ,CAC3B,IAAMc,EAAgBD,EAAMT,KAAKM,MAAM,GAAA,EAAKC,OAAOC,GAAKA,IAAM,EAAA,EACxDG,EAAiC,CAAC,EACpCC,EAAQ,GAENC,EAAmBH,EAAcI,QAAQ,GAAA,IAAS,GAClDC,EAAuB,CAAC,EAAEN,EAAMO,UAAYP,EAAMO,SAASX,OAAS,GAE1E,GAAI,GAACQ,GAAoB,CAACE,GAAwBL,EAAcL,SAAWH,EAAaG,SAIpFK,EAAAA,EAAcL,OAASH,EAAaG,QAIxC,SAASY,EAAI,EAAGA,EAAIP,EAAcL,OAAQY,IAAK,CAC9C,IAAMC,EAAOR,EAAcO,CAAAA,EACrBE,EAAOjB,EAAae,CAAAA,EAE1B,GAAIC,IAAS,IAAK,CACjBN,EAAQ,GACR,KACD,CAEA,GAAIO,IAASC,OAAW,CACvBR,EAAQ,GACR,KACD,CAEA,GAAIM,IAAS,IAIb,IAAIA,EAAKf,WAAW,GAAA,GAAQe,EAAKG,SAAS,GAAA,EAAM,CAC/C,IAAMC,EAAYJ,EAAKd,MAAM,EAAG,EAAC,EACjCO,EAAOW,CAAAA,EAAaH,EACpB,QACD,CAEA,GAAID,EAAKf,WAAW,GAAA,EAAM,CACzB,IAAMmB,EAAYJ,EAAKd,MAAM,CAAA,EAC7BO,EAAOW,CAAAA,EAAaH,EACpB,QACD,CAEA,GAAID,IAASC,EAAM,CAClBP,EAAQ,GACR,KACD,EACD,CAEA,GAAIA,EAAO,CACV,IAAMW,EAAkBrB,EAAaE,MAAM,EAAGM,EAAcL,MAAM,EAC5DmB,GAAevB,EAASoB,SAAS,GAAA,EAAOpB,EAASG,MAAM,EAAG,EAAC,EAAKH,GAAY,IAAMsB,EAAgBE,KAAK,GAAA,EAC7G,MAAO,CAAEhB,MAAAA,EAAOE,OAAAA,EAAQa,YAAAA,CAAY,CACrC,EACD,CAEA,OAAO,IACR,CAhEgBzB,EAAAA,GAAAA,cAkET,IAAM2B,GAASjC,EAAIkC,UACzB,KAAA,CACC,OAAOC,MAAQ,CACdhC,OAAQ,CAAEiC,KAAMC,MAAOC,SAAU,EAAK,EACtCC,SAAU,CAAEH,KAAMI,OAAQC,QAAS,IAAK,EACxCC,QAAS,CAAEN,KAAMI,OAAQC,QAAS,IAAK,EACvCjC,SAAU,CAAE4B,KAAMO,OAAQF,QAAS,EAAG,CACvC,EAEAN,MACAS,kBAAoB5C,EAAIC,MAAW,IAAA,EACnC4C,aAAuG,KACvGC,SAAW,GACXC,MAAgB,GAChBC,YAAc,IAAIC,IAElBC,UAAW,CACV,KAAKH,MAAQI,EAAYC,UAAU,IAAA,CACjC,KAAaC,GAAGC,MAAMC,cAAAA,CACxB,CAAA,CACD,CAEAC,YAAa,CACZL,EAAYM,YAAY,KAAKV,KAAK,CACnC,CAEAW,MAAM1D,EAAU,CACfE,GAAgB,KAAKiC,MAAMhC,MAAM,EACjC,IAAMI,EAAO4C,EAAY/C,MAEnBe,EAAQb,GAAW,KAAK6B,MAAMhC,OAAQI,EAAM,KAAK4B,MAAM3B,QAAQ,EACrE,KAAKqC,aAAe1B,EAEpB,IAAMwC,EAAUC,EAACC,GAAAA,CAChB,GAAI,CAAC1C,EAAO,OAEZ,IAAI2C,EAAQ3C,EAAMH,MAAM8C,MAQxB,GAPI,OAAOA,GAAU,aACpBA,EAAQA,EAAM3C,EAAMD,MAAM,GAEvB4C,IACHC,SAASD,MAAQA,GAGd,OAAOD,GAAS,YAAc,CAACA,EAAKG,WAAWN,MAAO,CAEzD,GAAI,KAAKV,YAAYiB,IAAIJ,CAAAA,EAAO,CAC/B,KAAKjB,kBAAkBxC,MAAQ,KAAK4C,YAAYkB,IAAIL,CAAAA,EACpD/D,GAAWqE,QAAQC,GAAKA,EAAE7D,EAAM8D,EAAajE,KAAK,CAAA,EAClD,MACD,CAEA,IAAMkE,EAAST,EAAAA,EACf,GAAIS,aAAkBC,QAAS,CAC9BD,EAAOE,KAAKC,GAAAA,CACX,IAAMC,EAAWD,EAAEhC,SAAWgC,EAC9B,KAAKzB,YAAY2B,IAAId,EAAMa,CAAAA,EAC3B,KAAK9B,kBAAkBxC,MAAQsE,EAC9B,KAAarB,GAAGC,MAAMC,cAAAA,EACvBzD,GAAWqE,QAAQC,GAAKA,EAAE7D,EAAM8D,EAAajE,KAAK,CAAA,CACnD,CAAA,EAEA,KAAKwC,kBAAkBxC,MAAQ,KAAK+B,MAAMO,SAAW1C,EAAI4E,IAAI,YAAA,EAC7D,MACD,CACD,CACA,KAAKhC,kBAAkBxC,MAAQyD,EAC/B/D,GAAWqE,QAAQC,GAAKA,EAAE7D,EAAM8D,EAAajE,KAAK,CAAA,CACnD,EAnCgB,WAqChB,GAAI,CAACe,EACJ,KAAKyB,kBAAkBxC,MAAQ,KAAK+B,MAAMI,UAAYvC,EAAI4E,IAAI,iBAAA,UACpDzD,EAAMH,MAAM6D,SAAU,CAChC,IAAMC,EAAS,OAAO3D,EAAMH,MAAM6D,UAAa,WAC5C1D,EAAMH,MAAM6D,SAAS1D,EAAMD,MAAM,EACjCC,EAAMH,MAAM6D,SACfE,OAAAA,EAASD,EAAQ,EAAA,EACV9E,EAAI4E,IAAG,CACf,KAAO,CACN,IAAMI,EAAS,IAAInF,IACfsB,EAAMH,MAAMiE,aACfD,EAAOE,KAAK/D,EAAMH,MAAMiE,WAAW,EAGpC,IAAME,EAAYvB,EAAA,MAAOwB,GAAAA,CACxB,GAAIA,GAASJ,EAAOpE,OAAQ,CAC3B+C,EAAQxC,EAAMH,MAAMkB,SAAS,EAC7B,MACD,CAEA,IAAMmD,EAAQL,EAAOI,CAAAA,EACjBE,EAAa,GAEXC,EAAa3B,EAAC4B,GAAAA,CACfF,IACJA,EAAa,GAETE,IAAY,GACfT,EAASV,EAAajE,MAAO,EAAA,EACnB,OAAOoF,GAAY,SAC7BT,EAASS,EAAS,EAAA,EAElBL,EAAUC,EAAQ,CAAA,EAEpB,EAXmB,cAabd,EAASe,EAAM9E,EAAM8D,EAAajE,MAAOmF,CAAAA,EAE/C,GAAIjB,aAAkBC,QAAS,CAC9B,IAAMkB,EAAc,MAAMnB,EACrBgB,IACAG,IAAgB,IAAS,OAAOA,GAAgB,SACnDF,EAAWE,CAAAA,EAEXF,EAAAA,EAGH,MAAWjB,IAAW3C,QAAa,CAAC2D,GACnCC,EAAWjB,CAAAA,CAEb,EApCkB,aAsClBa,EAAU,CAAA,CACX,CAEA,IAAMO,EAAI,KAAK9C,kBAAkBxC,MACjC,GAAI,CAACsF,EAAG,OAAO1F,EAAI4E,IAAG,EAEtB,IAAM/B,EAAe,KAAKA,aAE1B,OAAI,OAAO6C,GAAM,YAAcA,EAAE1B,WAAWN,MACpC1D,EAAI2F,MAAM,IAAID,EAAK,CACzBE,YAAa/C,GAAc3B,OAC3BV,SAAUqC,GAAcd,WACzB,CAAA,EAGG,OAAO2D,GAAM,UAAYA,EAAEhC,MACvB1D,EAAI2F,MAAMD,EAAG,CACnBE,YAAa/C,GAAc3B,OAC3BV,SAAUqC,GAAcd,WACzB,CAAA,EAGG2D,aAAaG,EAAaH,EACvB1F,EAAI4E,IAAIc,CAAAA,CAChB,CACD,CAAA,EAGAzD,GAAe6D,WAAcT,GAAAA,CAC7BxF,GAAYqF,KAAKG,CAAAA,CAClB,EAECpD,GAAe8D,UAAaC,GAAAA,CAC5BlG,GAAWoF,KAAKc,CAAAA,CACjB,EAEC/D,GAAegE,WAAa,IAAA,CAC5BpG,GAAYe,OAAS,EACrBd,GAAWc,OAAS,CACrB,ECvQO,SAASsF,GAAaC,EAA2BC,EAAcC,EAAc,CAAC,EAAGC,EAAmB,GAAE,CAC5G,QAAWC,KAASJ,EAAQ,CAC3B,IAAMK,GAAYF,EAASG,SAAS,GAAA,EAAOH,EAASI,MAAM,EAAG,EAAC,EAAKJ,IAAaC,EAAMI,KAAKC,WAAW,GAAA,EAAO,GAAK,KAAOL,EAAMI,KAE/H,GAAIJ,EAAMH,OAASA,EAAM,CAExB,IAAIS,EAAeL,EACnB,QAAWM,KAAOT,EAAQ,CACzB,IAAMU,EAAQV,EAAOS,CAAAA,EACrBD,EAAeA,EAAaG,QAAQ,IAAIC,OAAO,MAAMH,CAAAA,MAAU,GAAA,EAAMC,CAAAA,EACrEF,EAAeA,EAAaG,QAAQ,IAAIC,OAAO,IAAIH,CAAAA,GAAO,GAAA,EAAMC,CAAAA,CACjE,CACA,OAAOF,CACR,CAEA,GAAIN,EAAMW,SAAU,CACnB,IAAMC,EAASjB,GAAaK,EAAMW,SAAUd,EAAMC,EAAQG,CAAAA,EAC1D,GAAIW,EAAQ,OAAOA,CACpB,CACD,CAEA,OAAO,IACR,CAtBgBjB,EAAAA,GAAAA,gBCHT,IAAMkB,GAAOC,EAAIC,UACvB,KAAA,CACC,OAAOC,MAAQ,CACdC,GAAI,CAAEC,KAAMC,OAAQC,QAAS,EAAG,EAChCC,KAAM,CAAEH,KAAMC,OAAQC,QAAS,EAAG,EAClCE,OAAQ,CAAEJ,KAAMK,OAAQH,QAASI,EAAA,KAAO,CAAC,GAAR,UAAW,EAC5CC,YAAa,CAAEP,KAAMC,OAAQC,QAAS,QAAS,EAC/CM,MAAO,CAAER,KAAMS,QAASP,QAAS,EAAM,EACvCQ,MAAO,CAAEV,KAAMC,OAAQC,QAAS,EAAG,CACpC,EAEAJ,MACAa,MAEAC,iBAAkB,CACjB,OAAI,KAAKd,MAAMK,KACPU,GAAaC,GAAAA,EAAmB,KAAKhB,MAAMK,KAAM,KAAKL,MAAMM,MAAM,GAAK,GAExE,KAAKN,MAAMC,EACnB,CAEAgB,OAAQ,CACP,IAAMC,EAAepB,EAAIqB,SAAS,IAAM,KAAKL,gBAAe,CAAA,EAE5D,OAAOhB,EAAIsB,EAAE,CACZC,KAAMH,EACNI,MAAOxB,EAAIqB,SAAS,IAAA,CACnB,IAAMI,EAAOC,EAAYC,MACrBC,EAASR,EAAaO,MAC1B,OAAIC,EAAOC,WAAW,IAAA,EACrBD,EAASA,EAAOE,UAAU,CAAA,EAAGC,MAAM,MAAA,EAAQ,CAAA,EAE3CH,EAASA,EAAOG,MAAM,MAAA,EAAQ,CAAA,GAEd,KAAK7B,MAAMU,MACzBa,IAASG,EACTH,EAAKI,WAAWD,CAAAA,GAED,KAAK1B,MAAMS,YAAc,EAC5C,CAAA,EACAqB,QAAStB,EAACuB,GAAAA,EAGPA,EAAEC,SAAW,GAAKD,EAAEC,SAAWC,SAChC,CAACF,EAAEG,SACH,CAACH,EAAEI,UACH,CAACJ,EAAEK,QACH,CAACL,EAAEM,UAEHN,EAAEO,eAAc,EAChBC,EAASrB,EAAaO,KAAK,EAI7B,EAdS,UAgBV,EAAG,KAAKzB,MAAMY,OAAS,KAAKC,OAAOT,OAAAA,CACpC,CACD,CAAA,EC5DM,SAASoC,GAAmBC,EAAYC,EAA8BC,SAAQ,CAEpF,IAAIC,EAAUF,EAAKG,eAAeJ,CAAAA,EAClC,GAAIG,EAAS,OAAOA,EAGpB,IAAME,EAAcJ,EAAKK,iBAAiB,GAAA,EAC1C,QAASC,EAAI,EAAGA,EAAIF,EAAYG,OAAQD,IAAK,CAC5C,IAAME,EAAaJ,EAAYE,CAAAA,EAAGE,WAClC,GAAIA,IACHN,EAAUJ,GAAmBC,EAAIS,CAAAA,EAC7BN,GAAS,OAAOA,CAEtB,CAEA,OAAO,IACR,CAhBgBJ,EAAAA,GAAAA,sBCAhB,IAAMW,GAAkB,IAAIC,IACxBC,GAAqB,KAKzB,SAASC,GAAcC,EAAcC,EAAkB,GAAK,CAC3D,IAAMC,EAAOC,EAAYC,MACzB,GAAIF,GAAQA,EAAKG,WAAW,GAAA,EAAM,CACjC,IAAMC,EAAKJ,EAAKK,UAAU,CAAA,EACpBC,EAAUC,GAAmBH,CAAAA,EACnC,GAAIE,EAAS,CACZ,IAAME,EAAuB,OAAOC,OAAW,KAAeA,OAAOC,WAAW,kCAAA,EAAoCC,QACpHL,EAAQM,eAAe,CACtBC,SAAUd,GAAU,CAACS,EAAuB,SAAW,MACxD,CAAA,EACA,MACD,CACD,CAEA,IAAMM,EAAgBpB,GAAgBqB,IAAIjB,CAAAA,EACtCgB,EACHL,OAAOO,SAASF,EAAcG,EAAGH,EAAcI,CAAC,EAEhDT,OAAOO,SAAS,EAAG,CAAA,CAErB,CApBSnB,EAAAA,GAAAA,iBAyBT,SAASsB,GAAerB,EAAcC,EAAe,CAChDH,IAAewB,aAAaxB,EAAAA,EAChCA,GAAgByB,WAAW,IAAA,CAC1BxB,GAAcC,EAAMC,CAAAA,EACpBH,GAAgB,IACjB,EAAG,CAAA,CACJ,CANSuB,EAAAA,GAAAA,kBAYF,SAASG,IAAAA,CACf,GAAI,OAAOb,OAAW,IAAa,OAMnCA,OAAOc,iBAAiB,SAAU,IAAA,CACjC7B,GAAgB8B,IAAIC,EAAYvB,MAAO,CACtCe,EAAGR,OAAOiB,YACVR,EAAGT,OAAOkB,WACX,CAAA,CACD,EAAG,CAAEC,QAAS,EAAK,CAAA,EAEAC,EAAIC,SAAS,KAAO,CACtChC,KAAM2B,EAAYvB,MAClBF,KAAMC,EAAYC,KACnB,EAAA,EAEW6B,UAAWC,GAAAA,CAErBb,GAAea,EAAMlC,KAAM,EAAA,CAC5B,CAAA,EAGAqB,GAAeM,EAAYvB,MAAO,EAAA,CACnC,CA1BgBoB,EAAAA,GAAAA,qBCxCT,IAAeW,GAAf,KAAeA,CANtB,MAMsBA,CAAAA,EAAAA,qBAIdC,MAMAC,KAAU,CAAC,EAKXC,EAEP,YAAYF,EAAW,CACtB,KAAKA,MAAQA,GAAS,CAAC,CACxB,CAQOG,KAAKC,EAAcC,EAAoB,CAE9C,CAMOC,OAAOC,EAA2C,CACxDC,EAAIF,OAAOC,CAAAA,CACZ,CA2BD,EtDtDAE,EAAIC,QAAU,QAGdC,GAAAA,EAGCF,EAAYG,YAAcA,EAC1BH,EAAYI,cAAgBA,GAC5BJ,EAAYK,YAAcA,EAC1BL,EAAYM,SAAWA,EACvBN,EAAYO,eAAiBA,GAC7BP,EAAYQ,QAAUA,GACtBR,EAAYS,OAASA,GACrBT,EAAYU,KAAOA,GAWpBC,OAAOX,IAAMA,EACbY,SAAS,OAAY","names":["index_exports","__export","DotComponent","Link","Priority","Router","currentHash","currentPath","currentSearch","dot_default","generatePath","getGlobalRoutes","initScrollManager","matchRoute","navigate","previousPath","setGlobalRoutes","useHash","useQueryParams","__toCommonJS","DOT_VDOM_PROP_NAME","IS_DEV","process","env","NODE_ENV","Function","Binding","_source","_transform","isWritable","read","value","_get","display","_set","v","_subscribe","subscriber","sync","subscribe","callback","_unsubscribe","id","unsubscribe","source","VMetaNode","removeNodesBetween","start","end","parentNode","Error","current","nextSibling","next","DOT_VDOM_PROP_NAME","_unrender","removeChild","deepEqual","obj1","obj2","visited","Map","has","get","set","Array","isArray","length","prop","hasOwnProperty","floatRegex","RegExp","Vdom","_dot","_onEnterHook","_onLeaveHook","dot","_unrenderAsync","el","_getNodes","find","n","HTMLElement","_unrender","_moveBefore","reference","parent","nodes","length","p","parentElement","Error","i","fragment","ownerDocument","document","createDocumentFragment","appendChild","insertBefore","__isRendered","_isRendered","value","toString","createElement","_render","innerHTML","_renderBefore","dummy","childNodes","cn","removeChild","_renderAfter","nextSibling","temp","createTextNode","_moveTo","target","text","c","html","md","mount","attrs","when","condition","then","each","collection","callback","otherwiseWhen","seal","otherwise","attr","A","style","on","event","onEnter","onLeave","empty","remove","TextVdom","Vdom","_text","textNode","observerId","text","_render","node","Binding","ownerDocument","createTextNode","_get","_subscribe","appendChild","_unrender","parentElement","removeChild","_unsubscribe","_getNodes","_getLastChild","toString","temp","document","div","createElement","innerHTML","FragmentVdom","Vdom","_children","dot","_render","target","_isRendered","i","length","_unrender","_getNodes","nodes","push","_getLastChild","Priority","Scheduler","queues","Set","isPending","startTime","frameYieldMs","isSync","isSyncing","onError","channel","MessageChannel","port1","onmessage","workLoop","enqueue","subscription","priority","Priority","Normal","isQueued","add","Immediate","flushSync","scheduleFlush","port2","postMessage","setTimeout","shouldYield","performance","now","flushQueues","p","Background","queue","size","items","Array","from","clear","i","length","active","update","err","console","error","j","originalShouldYield","hasMoreWork","setSync","sync","scheduler","CollectionVdom","Vdom","MAX_BATCH_SIZE","value","renderCallback","startNode","endNode","observerId","mappedItems","updateState","dot","_render","target","Binding","_subscribe","ownerDocument","createTextNode","appendChild","originalShouldYield","scheduler","shouldYield","updateList","_unrender","_unsubscribe","i","length","I","vdom","afterNode","parentElement","removeChild","_getNodes","nodes","push","_getLastChild","getTailAppendPrefixLength","newKeys","old","keyValue","isItemPositionedAfter","item","anchor","nextSibling","lastNode","reuseExistingItem","existing","index","deepEqual","vdomOrContent","observableIndex","build","FragmentVdom","_dot","mount","TextVdom","_root","_set","getInsertBeforeAnchor","fromIndex","items","_isRendered","countConsecutiveUnrendered","count","batchRenderNewItems","parent","insertBefore","fragment","createDocumentFragment","removeItem","_unrenderAsync","unmappedCollection","_get","currentItems","Array","isArray","Object","values","newItems","key","_source","map","v","keys","k","tailAppendPrefix","oldMap","Map","set","nextMappedItems","currentIndex","step","state","get","delete","Signal","bind","oldItems","from","_moveBefore","slice","runLength","batch","batchItem","_renderAfter","ConditionalVdom","Vdom","conditions","sealed","renderedIndex","currentUpdatePromise","nextIndex","dot","addCondition","condition","vNode","seal","Error","C","startAnchor","endAnchor","observerId","push","_isRendered","renderClause","parentElement","updateConditions","node","ownerDocument","createTextNode","appendChild","Binding","_subscribe","_render","c","length","removeCNode","_unsubscribe","start","end","removeChild","_unrender","i","_getNodes","nodes","_getLastChild","newIndex","_get","performUpdate","oldIndex","Promise","resolve","_unrenderAsync","next","_renderBefore","HtmlVdom","Vdom","beforeNode","afterNode","_html","observerId","html","updateHtml","removeNodesBetween","temp","ownerDocument","createElement","innerHTML","firstChild","parentElement","insertBefore","_render","target","Binding","_get","_subscribe","createTextNode","appendChild","_unrender","parent","removeChild","_unsubscribe","_getNodes","nodes","curr","nextSibling","push","_getLastChild","toString","ReactiveAttr","elementVdom","attribute","Subscription","boundReactive","item","active","isQueued","update","value","_get","TextVdom","textNode","textContent","_isReactiveVdom","HtmlVdom","updateHtml","ReactiveAttr","elementVdom","updateReactiveAttr","attribute","VMetaNode","CollectionVdom","updateList","ConditionalVdom","updateConditions","Function","dependencyStack","CB_OFFSET","CATEGORIES","Signal","bindAs","transform","br","Binding","_transform","display","bind","_value","key","subscribers","Map","isWritable","value","active","dependencyStack","length","addDependency","v","setValue","getValue","priority","Priority","Normal","updater","sub","values","sync","update","isQueued","Immediate","scheduler","enqueue","nextId","subscribe","callback","_subscribe","boundReactive","item","id","Subscription","set","unsubscribe","has","get","delete","_detachBinding","refresh","updatedValue","updateObservers","AttributeVNode","VMetaNode","attr","value","target","observables","attrName","attrValue","render","k","v","Signal","bind","Binding","id","_subscribe","update","tokens","_get","push","setAttribute","join","unrender","o","_unsubscribe","Number","allProps","color","length","hybrid","url","transformation","filter","time","misc","lengthSuffixes","split","timeSuffixes","angleSuffixes","frequencySuffixes","cssProps","cssType","props","p","key","join","s","dotName","cssName","toLowerCase","type","unit","undefined","css_props_default","CssFunctionBuilderVStyle","funcs","propName","toString","result","t","argValues","Array","from","args","map","arg","v","undefined","f","val","Binding","_get","Signal","value","split","join","func","trim","appendFunction","filter","push","formatCssLength","value","defaultUnits","Binding","_get","Signal","Array","map","v","join","isNaN","tokens","trim","split","length","t","Number","match","floatRegex","units","formatCssPercentage","formatCssColor","r","g","b","a","formatCssAngle","angle","FilterVStyle","CssFunctionBuilderVStyle","blur","v","appendFunction","f","formatCssLength","brightness","formatCssPercentage","contrast","dropShadow","x","y","color","formatCssColor","grayscale","hueRotate","invert","opacity","sepia","saturate","TransformVStyle","CssFunctionBuilderVStyle","matrix3d","a1","b1","c1","d1","a2","b2","c2","d2","a3","b3","c3","d3","a4","b4","c4","d4","appendFunction","arguments","matrix","a","b","c","d","tx","ty","translate","x","y","length","f","formatCssLength","v","translate3d","z","translateX","translateY","translateZ","scale","scale3d","scaleX","scaleY","scaleZ","rotate","formatCssAngle","rotate3d","rotate3dDeg","rotate3dRad","rotate3dGrad","rotate3dTurn","rotateX","rotateY","rotateZ","skew","skewX","skewY","perspective","BaseVStyle","_isBase","props","onUpdate","setProp","propName","value","push","prop","_setOnUpdate","callback","variable","name","startsWith","v","getProps","key","cssProps","prototype","StyleVNode","VMetaNode","target","document","shadowRoot","styleSource","styleElement","observables","observableIds","isQueued","updateSubscription","active","update","__name","applyStyles","BaseVStyle","_setOnUpdate","extractObservables","source","getProps","Array","isArray","i","length","p","processValue","prop","value","newVal","setter","tryExtractObservable","CssFunctionBuilderVStyle","builder","FilterVStyle","TransformVStyle","funcArray","funcValue","k","v","w","methodKey","replace","Binding","Signal","indexOf","push","id","subscribe","render","window","observable","createElement","appendChild","head","scheduler","enqueue","Priority","Normal","textContent","getStyleString","_get","applySingleStyle","cssValue","toString","applyObjectToBuilder","cssProp","cssUnit","registeredProp","cssProps","cssName","unit","type","undefined","formatCssLength","HTMLElement","style","setProperty","styles","formatSingleStyle","unrender","_unsubscribe","unsubscribe","remove","SyntheticEvent","nativeEvent","target","currentTarget","type","timeStamp","defaultPrevented","detail","_propagationStopped","_immediatePropagationStopped","e","preventDefault","stopPropagation","stopImmediatePropagation","isPropagationStopped","isImmediatePropagationStopped","EventManager","managers","Map","getForDocument","document","manager","get","set","listeners","WeakMap","activeEventTypes","Set","addListener","element","eventType","handler","modifiers","elementListeners","handlers","push","ensureGlobalListener","removeListener","index","findIndex","h","splice","length","delete","has","useCapture","addEventListener","nativeEvent","dispatchEvent","add","path","composedPath","current","target","parentNode","host","syntheticEvent","SyntheticEvent","window","currentTarget","includes","stopPropagation","preventDefault","isImmediatePropagationStopped","isPropagationStopped","ElementVdom","Vdom","_children","children","ContainerVdom","_dot","_parent","value","element","tag","attributes","events","attributeObserverIds","childBuilders","attrVNodes","styleVNodes","ref","inputListener","compositionStartListener","compositionEndListener","manualInputAllowed","isComposing","activeBindings","lastSyncedValues","dot","_render","node","_isRendered","ownerDocument","createElement","DOT_VDOM_PROP_NAME","appendChild","i","length","e","renderEvent","name","callback","modifiers","undefined","renderAttr","a","_onEnterHook","_unrender","eventManager","EventManager","getForDocument","removeListener","toLowerCase","parentNode","removeChild","unrender","item","observable","_unsubscribe","id","_getNodes","_getLastChild","toString","outerHTML","setAttr","attr","targetAttr","typeAttr","Binding","_get","Signal","type","oldVal","StyleVNode","idx","indexOf","splice","AttributeVNode","Array","BaseVStyle","builder","updateReactiveAttr","isExplicitBind","setAttribute","checked","selected","removeAttribute","join","some","_subscribe","ReactiveAttr","push","isWritable","target","binding","val","currentSigVal","lastVal","_set","console","error","message","addListener","render","addEventListener","event","ContainerVdom","Vdom","_children","_parent","dot","_addChild","content","push","ElementVdom","element","_render","node","_isRendered","c","length","_unrender","_getNodes","nodes","i","_getLastChild","Ref","Signal","_value","Proxy","get","target","prop","receiver","Reflect","val","value","args","apply","element","ready","Promise","resolve","id","subscribe","unsubscribe","allEventAttr","onAbort","onBlur","onChange","onInput","onCanPlay","onCantPlayThrough","onClick","onCopy","onContextMenu","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onError","onFocus","onHashChange","onInvalid","onKeyDown","onKeyPress","onKeyUp","onLoad","onLoadedData","onLoadedMetadata","onLoadStart","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onPointerCancel","onPointerDown","onPointerEnter","onPointerLeave","onPointerMove","onPointerOut","onPointerOver","onPointerUp","onTouchStart","onTouchEnd","onTouchCancel","onTouchMove","onMouseWheel","onOffline","onOnline","onPageHide","onPagePaste","onPageShow","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onReset","onResize","onScroll","onSearch","onSeeked","onSeeking","onSelect","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnload","onVolumeChange","onWaiting","onWheel","isContent","__name","arg","ContainerVdom","Vdom","_root","_children","build","Signal","Binding","Array","isArray","applyContent","dot","n","cont","target","ElementVdom","children","i","length","_addChild","mount","val","bind","ReactiveVdom","TextVdom","applyAttributes","attrs","k","attr","Ref","eventName","modifiers","includes","parts","split","slice","allEventAttr","startsWith","toUpperCase","Error","addEventListener","substring","toLowerCase","setAttr","createElement","tag","args","j","stylesheetCache","WeakMap","renderStylesheet","styleCallback","document","finalStylesheet","defaultView","CSSStyleSheet","styles","css","docCache","get","Map","set","has","DocumentCSSStyleSheet","sharedStyles","replaceSync","style","createElement","innerHTML","componentStack","getCurrentComponent","__name","length","pushComponent","component","push","popComponent","pop","Computed","Signal","getter","dependencies","Map","isQueued","isEvaluating","active","dirty","error","isWritable","updateSubscription","update","__name","_update","value","Error","addDependency","signal","newDependencies","has","add","requestUpdate","scheduler","enqueue","Priority","Normal","Set","clear","dependencyStack","push","newValue","hasError","e","pop","setValue","toRemove","subId","unsubscribe","delete","subscribe","set","dispose","KeyframesBuilder","steps","sheet","step","selector","callback","style","BaseVStyle","push","from","to","at","percent","toString","indent","map","s","formatPropsForBlock","join","StyleSheetBuilder","rules","theme","ghostVars","varCounter","getGhostVars","setTheme","template","strings","values","Computed","result","i","length","val","Signal","Binding","_get","value","class","name","callback","rule","selector","style","BaseVStyle","push","type","media","condition","builder","container","supports","keyframes","KeyframesBuilder","v","startsWith","applyObjectToBuilder","cssValue","funcArray","Array","isArray","funcValue","k","methodKey","replace","formatPropsForBlock","getProps","map","p","registered","cssProps","prop","cssProp","CssFunctionBuilderVStyle","FilterVStyle","TransformVStyle","isReactive","f","funcs","arg","args","varName","reactiveSource","reactiveValue","toString","unit","formatCssLength","cssName","undefined","join","indent","r","props","hasRules","dispose","gv","_source","RefCollection","_refs","Map","get","key","has","set","Ref","elements","result","forEach","ref","value","callback","map","push","registry","Map","registerInstance","id","instance","has","set","Set","get","add","unregisterInstance","delete","getInstances","HandledError","Error","Object","setPrototypeOf","prototype","tagId","getStableTagName","hmrId","toLowerCase","replace","sanitized","ComponentVdom","Vdom","component","shadowEl","childShadowVdom","events","styleVNodes","isQueued","isBuilding","computedSignals","buildComputedSignals","effects","disposables","ref","slots","parentComponent","lastError","updateSubscription","active","update","__name","rebuild","dot","ContainerVdom","getCurrentComponent","_","_meta","__hmrId","IS_DEV","tagName","ts","Math","floor","performance","now","toString","tId","cvdom","refs","isRendered","emit","name","detail","dispatchEvent","CustomEvent","bubbles","composed","_trackedComputeds","w","registerComputed","_trackedEffects","e","registerEffect","_trackedDisposables","d","registerDisposable","registerInstance","signal","push","effect","disposable","setRef","init","validateProps","pushComponent","build","_dot","popComponent","built","subscribeToProps","err","handleError","errorCaught","renderErrorBox","fallback","applyContent","shadow","shadowRoot","innerHTML","_render","secondErr","onError","props","key","prop","Signal","Binding","subscribe","requestUpdate","scheduler","enqueue","Priority","Normal","_unrender","dispose","errorBox","document","createElement","setAttribute","title","textContent","style","marginTop","appendChild","message","fontWeight","fontSize","marginBottom","stack","opacity","schema","componentName","rule","value","undefined","default","type","Array","required","valueToValidate","actualType","String","Number","Boolean","Function","isArray","validator","setupCustomElement","CustomElementConstructor","defaultView","customElements","get","DocSpecificHtmlEl","HTMLElement","_component","_renderComponent","attachShadow","mode","cachedStyles","_cachedStyles","generateStyles","adoptedStyleSheets","allSharedStylesheets","oldTags","querySelectorAll","t","from","remove","i","allStyleTags","length","cloneNode","_isDynamicStyle","updateDynamicStyle","builder","StyleSheetBuilder","_theme","setTheme","styles","stylize","styleVal","_get","finalStyle","hasRules","dynamicStyleTag","getElementById","id","subId","unsubscribe","ghostVars","getGhostVars","ghostStyleSource","gv","ghostVNode","StyleVNode","render","_isRendered","define","sharedStylesheets","styleTags","styleItem","renderStylesheet","CSSStyleSheet","globalStyles","gs","transformedGs","addSlot","content","applySlotAttribute","nodes","_getNodes","node","mounting","ownerDocument","renderEvent","callback","modifiers","mounted","_onEnterHook","onEnter","unmounting","eventManager","EventManager","getForDocument","removeListener","unrender","unmounted","unregisterInstance","_hmrSwap","NewClass","oldComponent","newComponent","oldVal","newVal","isWritable","RefCollection","_getLastChild","_unrenderAsync","_onLeaveHook","onLeave","_moveTo","target","oldDoc","newDoc","addEventListener","event","addListener","on","ReactiveVdom","Vdom","binding","beforeNode","afterNode","currentVdom","observerId","_isReactiveVdom","dot","_toVdom","value","TextVdom","build","cv","ComponentVdom","_dot","init","Array","isArray","container","ContainerVdom","item","_addChild","_render","target","_isRendered","ownerDocument","createTextNode","appendChild","_get","update","_subscribe","_unrender","removeNodesBetween","_renderBefore","_unsubscribe","parentElement","removeChild","_getNodes","nodes","push","_getLastChild","toString","Effect","callback","cleanup","dependencies","Map","isQueued","isEvaluating","active","dirty","newDependencies","Set","updateSubscription","update","__name","run","addDependency","signal","has","add","requestUpdate","scheduler","enqueue","Priority","Normal","Error","e","console","error","undefined","clear","dependencyStack","push","result","pop","toRemove","subId","unsubscribe","delete","subscribe","set","dispose","component","Ctor","decorated","args","tracker","computedSignals","effects","disposables","registerComputed","w","push","registerEffect","e","registerDisposable","d","pushComponent","popComponent","build","props","Object","assign","_trackedComputeds","_trackedEffects","_trackedDisposables","defineProperty","value","name","key","getOwnPropertyNames","documentId","WindowWrapper","window","document","title","root","_vdom","width","height","isOpen","tether","syncStyles","position","tetheredWindows","Set","eventListeners","wrapperEventListeners","options","content","open","console","warn","left","top","features","screen","screenX","outerWidth","screenY","outerHeight","Error","setupDocument","add","size","addEventListener","closeAllTethered","_unrender","tempElement","createElement","textContent","encodedTitle","innerHTML","write","close","body","DOT_VDOM_PROP_NAME","syncStylesWithParent","dot","mount","name","callback","setTimeout","closed","delete","emit","on","event","push","detail","focus","bringToFront","resizeTo","moveTo","__name","forEach","w","clear","className","rootStyles","getComputedStyle","documentElement","i","style","length","prop","startsWith","setProperty","getPropertyValue","adoptedStyleSheets","clonedSheets","sheet","newSheet","CSSStyleSheet","cssText","cssRules","replaceSync","e","head","querySelectorAll","appendChild","cloneNode","storeRegistry","Map","createStore","options","id","state","stateFn","getters","actions","has","get","createInstance","__name","store","$id","_state","_getters","_effects","tracker","computedSignals","effects","disposables","registerComputed","w","push","registerEffect","e","registerDisposable","d","pushComponent","rawState","key","val","signal","Signal","value","Object","defineProperty","enumerable","configurable","computed","Computed","call","args","apply","popComponent","_getters_list","_disposables","$dispose","dispose","effect","disposable","delete","set","singletonStore","currentStore","currentComponent","getCurrentComponent","getStore","clearStores","forEach","clear","getStores","stores","allTags","allTagsSet","Set","allCoreWrappers","SlotVdom","Vdom","name","fallbackOrScope","fallback","scopedContent","element","dot","_render","node","_isRendered","document","ownerDocument","slotContent","getCurrentComponent","component","slots","ContainerVdom","_dot","applyContent","undefined","createElement","appendChild","_unrender","remove","_getNodes","_getLastChild","DotChain","Vdom","_root","dot","initial","_addChild","node","ContainerVdom","FragmentVdom","_children","push","frag","_dot","_render","target","_unrender","_unrenderAsync","_renderBefore","reference","_renderAfter","_moveBefore","parent","_isRendered","value","_getNodes","_getLastChild","slot","name","content","lastChild","ComponentVdom","addSlot","undefined","SlotVdom","reduceReactive","value","Signal","bind","promote","vdom","DotChain","_dot","Vdom","prototype","_addChild","node","text","c","val","Binding","ReactiveVdom","TextVdom","html","HtmlVdom","md","slot","name","fallback","lastChild","_getLastChild","_root","ComponentVdom","undefined","addSlot","SlotVdom","mount","args","cn","i","length","arg","isContent","k","setRef","startsWith","eventName","modifiers","includes","parts","split","slice","addEventListener","substring","toLowerCase","props","init","e","HandledError","when","condition","then","condNode","ConditionalVdom","thenContainer","build","FragmentVdom","_children","push","addCondition","each","collection","callback","collectionVdom","CollectionVdom","otherwiseWhen","seal","thenNode","Error","otherwise","attr","A","ElementVdom","setAttr","style","builder","BaseVStyle","on","event","onEnter","_onEnterHook","_isRendered","el","_getNodes","find","n","HTMLElement","onLeave","_onLeaveHook","empty","root","element","innerHTML","children","_unrender","ContainerVdom","_parent","remove","fade","duration","animate","opacity","finished","slide","height","overflow","scrollHeight","allTags","tag","createElement","makeCoreWrapper","__name","d","fn","allTagsSet","has","arguments","makeDot","targetSelector","targetWindow","window","ownerDocument","defaultView","DOT_VDOM_PROP_NAME","tagName","toLocaleLowerCase","document","querySelectorAll","onError","state","key","o","computed","getter","Computed","currentComponent","getCurrentComponent","registerComputed","effect","Effect","registerEffect","dispose","component","hmr","swap","id","NewClass","instances","getInstances","instance","_hmrSwap","store","createStore","getStore","clearStores","Object","defineProperty","get","getStores","create","Ctor","tracker","computedSignals","effects","disposables","w","registerDisposable","pushComponent","popComponent","_trackedComputeds","_trackedEffects","_trackedDisposables","ref","Ref","refCollection","RefCollection","alpha","color","_get","percentage","Math","round","max","min","globalStyles","useGlobalStyles","styles","stylesArray","Array","isArray","s","useStyles","css","_theme","setTheme","theme","applyToDocument","styleItem","renderStylesheet","CSSStyleSheet","adoptedStyleSheets","head","appendChild","StyleVNode","render","documentElement","options","WindowWrapper","flushSync","scheduler","setSync","sync","err","console","error","E","allCoreWrappers","W","dot","IS_DEV","dot_default","getRouteInfo","__name","window","path","search","hash","location","pathname","startsWith","hashContent","substring","firstMark","remainder","hashMark","indexOf","initialRoute","currentPath","dot","state","previousPath","currentSearch","currentHash","navigate","replace","value","history","replaceState","pushState","info","useQueryParams","computed","params","URLSearchParams","result","forEach","key","useHash","updateState","addEventListener","beforeHooks","afterHooks","globalRoutes","dot","state","setGlobalRoutes","routes","value","getGlobalRoutes","matchRoute","path","basePath","pathSegments","startsWith","slice","length","split","filter","s","route","routeSegments","params","match","hasMultiWildcard","indexOf","isPrefixMatchAllowed","children","i","rSeg","pSeg","undefined","endsWith","paramName","matchedSegments","matchedPath","join","Router","component","props","type","Array","required","notFound","Object","default","loading","String","resolvedComponent","currentMatch","lastPath","subId","loaderCache","Map","mounting","currentPath","subscribe","_","cvdom","requestUpdate","unmounting","unsubscribe","build","proceed","__name","comp","title","document","prototype","has","get","forEach","h","previousPath","result","Promise","then","m","resolved","set","div","redirect","target","navigate","guards","beforeEnter","push","runGuards","index","guard","nextCalled","handleNext","nextVal","asyncResult","C","mount","routeParams","Vdom","beforeEach","afterEach","hook","clearHooks","generatePath","routes","name","params","basePath","route","fullPath","endsWith","slice","path","startsWith","resolvedPath","key","value","replace","RegExp","children","result","Link","dot","component","props","to","type","String","default","name","params","Object","__name","activeClass","exact","Boolean","label","slots","getResolvedPath","generatePath","getGlobalRoutes","build","resolvedPath","computed","a","hRef","class","path","currentPath","value","target","startsWith","substring","split","onClick","e","button","undefined","ctrlKey","shiftKey","altKey","metaKey","preventDefault","navigate","getElementByIdDeep","id","root","document","element","getElementById","descendants","querySelectorAll","i","length","shadowRoot","scrollPositions","Map","scrollTimeout","performScroll","path","smooth","hash","currentHash","value","startsWith","id","substring","element","getElementByIdDeep","prefersReducedMotion","window","matchMedia","matches","scrollIntoView","behavior","savedPosition","get","scrollTo","x","y","scheduleScroll","clearTimeout","setTimeout","initScrollManager","addEventListener","set","currentPath","pageXOffset","pageYOffset","passive","dot","computed","subscribe","state","DotComponent","props","refs","_","emit","name","detail","effect","callback","dot","dot","version","initScrollManager","currentPath","currentSearch","currentHash","navigate","useQueryParams","useHash","Router","Link","window","document"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/constants.ts","../src/reactivity/binding.ts","../src/v-meta-nodes/v-meta-node.ts","../src/helpers/tools.ts","../src/vdom-nodes/vdom.ts","../src/vdom-nodes/text-vdom.ts","../src/vdom-nodes/fragment-vdom.ts","../src/reactivity/priority.ts","../src/reactivity/scheduler.ts","../src/vdom-nodes/collection-vdom.ts","../src/vdom-nodes/conditional-vdom.ts","../src/vdom-nodes/html-vdom.ts","../src/reactivity/reactive-attr.ts","../src/reactivity/subscription.ts","../src/reactivity/signal.ts","../src/v-meta-nodes/attribute-v-node.ts","../src/css/css-props.ts","../src/v-style-nodes/css-function-builder-v-style.ts","../src/css/format-css-type.ts","../src/v-style-nodes/filter-v-style.ts","../src/v-style-nodes/transform-v-style.ts","../src/v-style-nodes/base-v-style.ts","../src/v-meta-nodes/style-v-node.ts","../src/events/synthetic-event.ts","../src/events/event-manager.ts","../src/vdom-nodes/element-vdom.ts","../src/vdom-nodes/container-vdom.ts","../src/reactivity/ref.ts","../src/dot-event-attrs.ts","../src/dot-helpers.ts","../src/helpers/render-stylesheet.ts","../src/vdom-nodes/component-context.ts","../src/reactivity/computed.ts","../src/v-style-nodes/keyframes-builder.ts","../src/v-style-nodes/style-sheet-builder.ts","../src/reactivity/ref-collection.ts","../src/hmr-registry.ts","../src/vdom-nodes/component-vdom.ts","../src/vdom-nodes/reactive-vdom.ts","../src/reactivity/effect.ts","../src/decoration/component.ts","../src/window-wrapper.ts","../src/reactivity/store.ts","../src/tags.ts","../src/vdom-nodes/slot-vdom.ts","../src/dot-chain.ts","../src/dot.ts","../src/routing/state.ts","../src/routing/router.ts","../src/routing/helpers.ts","../src/routing/link.ts","../src/helpers/dom-utils.ts","../src/routing/scroll-manager.ts","../src/base-component.ts"],"sourcesContent":["\nexport type * from \"dothtml-interfaces\";\n\nimport dot from \"./dot\";\nimport { Priority } from \"./reactivity/priority\";\nimport { \n\tcurrentPath, \n\tcurrentSearch, \n\tcurrentHash, \n\tnavigate, \n\tuseQueryParams, \n\tuseHash, \n\tRouter, \n\tLink \n} from \"./routing\";\nimport { initScrollManager } from \"./routing/scroll-manager\";\n\ndot.version = \"6.0.0\";\n\n// Initialize scroll manager\ninitScrollManager();\n\n// Attach routing features to dot.\n(dot as any).currentPath = currentPath;\n(dot as any).currentSearch = currentSearch;\n(dot as any).currentHash = currentHash;\n(dot as any).navigate = navigate;\n(dot as any).useQueryParams = useQueryParams;\n(dot as any).useHash = useHash;\n(dot as any).Router = Router;\n(dot as any).Link = Link;\n\n\n// Extend the Window interface to include your dot property\ndeclare global {\n\tinterface Window {\n\t\tdot: typeof dot;\n\t}\n}\n\n// Attach dot to the window object\nwindow.dot = dot;\ndocument[\"_dotId\"] = \"default\";\n\nexport { dot, Priority };\nexport * from \"./routing\";\nexport * from \"./base-component\";\n\n\n","export const DOT_VDOM_PROP_NAME = \"_dotVDom\";\nexport const IS_DEV = typeof process !== 'undefined' \n ? process.env.NODE_ENV !== 'production' \n : (() => {\n\t\ttry {\n\t\t\treturn (new Function(\"return import.meta.env?.DEV\")());\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t})() ?? false;","import { IBinding, IWatcher } from \"dothtml-interfaces\";\nimport Signal from \"./signal\";\n\nexport default class Binding<T = any, Td = T> implements IBinding<T, Td> {\n\t_source: IWatcher<T>;\n\n\t_transform: {\n\t\tdisplay?: (v: T)=>Td;\n\t\tread?: (v: string)=>T;\n\t}\n\n\tget isWritable(): boolean {\n\t\treturn (this._source as any).isWritable && (!this._transform || !!this._transform.read);\n\t}\n\n\tget value(): Td {\n\t\treturn this._get();\n\t}\n\n\t_get(): Td{\n\t\t\n\t\tlet v = this._transform?.display ? this._transform.display(this._source.value) : this._source.value as unknown as Td;\n\n\t\treturn v;\n\t}\n\n\t_set(v: string|number|boolean){\n\t\tlet value = this._transform?.read ? this._transform.read(v as string) : v as unknown as T;\n\t\tthis._source.value = value;\n\t}\n\n\t_subscribe(subscriber: any, sync: boolean = false): number{\n\t\treturn (this._source as any)._subscribe(this, subscriber, sync);\n\t}\n\n\tsubscribe(callback: Function, sync: boolean = false): number {\n\t\treturn this._subscribe(callback, sync);\n\t}\n\n\t_unsubscribe(id: number){\n\t\tthis._source.unsubscribe(id);\n\t}\n\n\tunsubscribe(id: number) {\n\t\tthis._source.unsubscribe(id);\n\t}\n\n\tconstructor(source: IWatcher<T>){\n\t\tthis._source = source;\n\t}\n}\n","\n\nexport default abstract class VMetaNode{\n\tabstract render(target: HTMLElement): void;\n\tabstract unrender(): void;\n\tabstract update(): void;\n}","import { DOT_VDOM_PROP_NAME } from \"../constants\";\n\nexport function removeNodesBetween(start: Node, end: Node): void {\n\t// Check if the start and end nodes have the same parent\n\tif (start.parentNode !== end.parentNode) {\n\t\tthrow new Error(\"Start and end nodes must have the same parent.\");\n\t}\n\n\tlet current: Node|null = start.nextSibling;\n\n\t// Traverse and remove nodes between start and end\n\twhile (current && current !== end) {\n\t\tconst next: Node|null = current.nextSibling;\n\t\t// TODO: this condition won't entirely work because of the possibility of deeply-nested children. \n\t\t// Until a solution is found, this behaviour just won't be fully supported for HTML nodes.\n // At the very least, a test case should be added to track this.\n\t\tif(current[DOT_VDOM_PROP_NAME]){\n\t\t\tcurrent[DOT_VDOM_PROP_NAME]._unrender();\n\t\t}\n\t\telse{\n\t\t\tcurrent.parentNode?.removeChild(current);\n\t\t}\n\t\tcurrent = next;\n\t}\n}\n\nexport function deepEqual(obj1: any, obj2: any, visited = new Map()): boolean {\n if (obj1 === obj2) {\n return true;\n }\n\n if (obj1 == null || obj2 == null || typeof obj1 !== 'object' || typeof obj2 !== 'object') {\n return false;\n }\n\n // Handle cyclic references\n if (visited.has(obj1)) {\n return visited.get(obj1) === obj2;\n }\n visited.set(obj1, obj2);\n\n if (Array.isArray(obj1) && Array.isArray(obj2)) {\n if (obj1.length !== obj2.length) {\n return false;\n }\n }\n\n for (const prop in obj1) {\n if (!obj2.hasOwnProperty(prop)) {\n return false;\n }\n if (!deepEqual(obj1[prop], obj2[prop], visited)) {\n return false;\n }\n }\n\n for (const prop in obj2) {\n if (!obj1.hasOwnProperty(prop)) {\n return false;\n }\n }\n\n return true;\n}\n\nexport const floatRegex = new RegExp(\"[-+]?[0-9]*\\\\.?[0-9]+(?:[eE][-+]?[0-9]+)?\", \"g\");","import { IDotCore } from \"dothtml-interfaces\";\n\nexport abstract class Vdom{\n\n\t_dot: IDotCore;\n\t_onEnterHook?: (el: HTMLElement) => void;\n\t_onLeaveHook?: (el: HTMLElement) => Promise<void> | void;\n\n\tconstructor(dot?: IDotCore){\n\t\tthis._dot = dot;\n\t}\n\n\t// One (and only one) of these is valid:\n\n\tabstract _render(target: HTMLElement);\n\tabstract _unrender();\n\n\tasync _unrenderAsync() {\n\t\tconst nodes = this._getNodes();\n\t\tconst el = nodes.find(n => n instanceof HTMLElement) as HTMLElement;\n\t\tif (this._onLeaveHook && el) {\n\t\t\tawait this._onLeaveHook(el);\n\t\t}\n\t\tthis._unrender();\n\t}\n\n\tabstract _getNodes(): Node[];\n\tabstract _getLastChild(): Vdom | null;\n\n\t_moveBefore(reference: Node, parent?: Node){\n\t\tlet nodes = this._getNodes();\n\t\tif (nodes.length === 0) return;\n\t\tlet p = reference?.parentElement || parent;\n\t\tif (!p) throw new Error(\"Internal Error: Cannot move nodes without a parent.\");\n\t\t\n\t\tfor (let i = 0; i < nodes.length; i++) {\n\t\t\tif (nodes[i] === reference) return;\n\t\t}\n\n\t\tlet fragment = (reference?.ownerDocument || p.ownerDocument || document).createDocumentFragment();\n\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\tfragment.appendChild(nodes[i]);\n\t\t}\n\t\tp.insertBefore(fragment, reference);\n\t}\n\n\t__isRendered = false;\n\tget _isRendered(){\n\t\treturn this.__isRendered\n\t}\n\tset _isRendered(value: boolean){\n\t\tif(value && this.__isRendered) throw new Error(\"Internal Error: Node is already rendered.\");\n\t\tif(!value && !this.__isRendered) throw new Error(\"Internal Error: Node is not rendered.\");\n\t\tthis.__isRendered = value;\n\t}\n\t\n\ttoString(): string {\n\t\tlet el = document.createElement(\"div\");\n\t\tthis._render(el);\n\t\treturn el.innerHTML;\n\t}\n\n\t_renderBefore(reference: Node){\n\t\tlet dummy = reference.ownerDocument.createElement(\"div\");\n\t\tthis._render(dummy);\n\t\twhile(dummy.childNodes.length > 0){\n\t\t\tlet cn = dummy.childNodes[0];\n\t\t\tcn.parentElement.removeChild(cn);\n\t\t\treference.parentElement.insertBefore(cn, reference);\n\t\t}\n\t}\n\t_renderAfter(reference: Node){\n\t\tif(reference.nextSibling){\n\t\t\tthis._renderBefore(reference.nextSibling);\n\t\t}\n\t\telse{\n\t\t\tlet temp = reference.ownerDocument.createTextNode(\"\");\n\t\t\treference.parentElement.appendChild(temp);\n\t\t\tthis._renderBefore(temp);\n\t\t\ttemp.parentElement.removeChild(temp);\n\t\t}\n\t}\n\n\t_moveTo(target: HTMLElement){\n\t\tlet nodes = this._getNodes();\n\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\ttarget.appendChild(nodes[i]);\n\t\t}\n\t}\n\n\t// Chaining methods (implemented in dot-chain.ts)\n\ttext(c: any): this { return null as any; }\n\thtml(c: any): this { return null as any; }\n\tmd(c: any): this { return null as any; }\n\tmount(c: any, attrs?: any): this { return null as any; }\n\twhen(condition: any, then: any): this { return null as any; }\n\teach(collection: any, callback: any): this { return null as any; }\n\totherwiseWhen(condition: any, then: any, seal?: boolean): this { return null as any; }\n\totherwise(then: any): this { return null as any; }\n\tattr(A: string, c: any): this { return null as any; }\n\tstyle(c: any): this { return null as any; }\n\ton(event: string, callback: (e: any)=>void): this { return null as any; }\n\tonEnter(callback: (el: HTMLElement)=>void): this { return null as any; }\n\tonLeave(callback: (el: HTMLElement)=>Promise<void>|void): this { return null as any; }\n\tempty(): this { return null as any; }\n\tremove(): void { }\n\t[key: string]: any;\n}\n","import Binding from \"../reactivity/binding\";\nimport Signal from \"../reactivity/signal\";\nimport { Vdom } from \"./vdom\";\n\n// TODO: experiment with turning all text into an observable to see if it improves render performance.\n\nexport class TextVdom extends Vdom{\n\n\t_text: string|boolean|number|Binding;\n\ttextNode: Node = null;\n\tobserverId = 0;\n\n\tconstructor(text: string|boolean|number|Binding){\n\t\tsuper();\n\t\tthis._text = text;\n\t}\n\n\t_render(node: HTMLElement) {\n\t\tif(this._text instanceof Binding){\n\t\t\tthis.textNode = node.ownerDocument.createTextNode(this._text._get() ?? \"\");\n\t\t\tthis.observerId = this._text._subscribe(this);\n\t\t}\n\t\telse{\n\t\t\tthis.textNode = node.ownerDocument.createTextNode(`${this._text ?? \"\"}`);\n\t\t}\n\t\t\n\t\tnode.appendChild(this.textNode);\n\t}\n\n\t_unrender() {\n\t\tif(this.textNode){\n\t\t\tif (this.textNode.parentElement) {\n\t\t\t\tthis.textNode.parentElement.removeChild(this.textNode);\n\t\t\t}\n\t\t\tthis.textNode = null;\n\t\t}\n\n\t\tif(this.observerId && this._text instanceof Binding){\n\t\t\tthis._text._unsubscribe(this.observerId);\n\t\t\tthis.observerId = 0;\n\t\t}\n\t}\n\n\t_getNodes(): Node[] {\n\t\treturn this.textNode ? [this.textNode] : [];\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this;\n\t}\n\n\ttoString(){\n\t\tlet temp = document.createTextNode((this._text instanceof Binding ? this._text._get() : this._text) ?? \"\");\n\t\tlet div = document.createElement(\"div\");\n\t\tdiv.appendChild(temp);\n\t\treturn div.innerHTML;\n\t}\n}","import { Vdom } from \"./vdom\";\nimport { IDotCore } from \"dothtml-interfaces\";\n\nexport class FragmentVdom extends Vdom {\n\t_children: Vdom[] = [];\n\n\tconstructor(dot?: IDotCore) {\n\t\tsuper(dot);\n\t}\n\n\t_render(target: HTMLElement) {\n\t\tthis._isRendered = true;\n\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\tthis._children[i]._render(target);\n\t\t}\n\t}\n\n\t_unrender() {\n\t\tif (!this._isRendered) return;\n\t\tthis._isRendered = false;\n\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\tthis._children[i]._unrender();\n\t\t}\n\t}\n\n\t_getNodes(): Node[] {\n\t\tlet nodes: Node[] = [];\n\t\tfor (let i = 0; i < this._children.length; i++) {\n\t\t\tnodes.push(...this._children[i]._getNodes());\n\t\t}\n\t\treturn nodes;\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this._children[this._children.length - 1] || null;\n\t}\n}\n","export enum Priority {\n\tImmediate = 0,\n\tUserBlocking = 1,\n\tNormal = 2,\n\tBackground = 3\n}\n","import { Priority } from \"./priority\";\nimport Subscription from \"./subscription\";\n\n/**\n * The Scheduler is responsible for batching updates to the DOM.\n * It supports priority-based scheduling and time-slicing (concurrent rendering).\n */\nclass Scheduler {\n\tprivate queues: Array<Set<Subscription>> = [\n\t\tnew Set(), // Immediate\n\t\tnew Set(), // UserBlocking\n\t\tnew Set(), // Normal\n\t\tnew Set(), // Background\n\t];\n\tprivate isPending: boolean = false;\n\tprivate startTime: number = 0;\n\tprivate frameYieldMs: number = 5; // Yield after 5ms of work.\n\tprivate isSync: boolean = false;\n\tprivate isSyncing: boolean = false;\n\n\tpublic onError?: (err: any) => void;\n\n\tprivate channel = typeof MessageChannel !== \"undefined\" ? new MessageChannel() : null;\n\n\tconstructor() {\n\t\tif (this.channel) {\n\t\t\tthis.channel.port1.onmessage = () => this.workLoop();\n\t\t}\n\t}\n\n\t/**\n\t * Adds a subscription to the next batch with a specific priority.\n\t */\n\tenqueue(subscription: Subscription, priority: Priority = Priority.Normal) {\n\t\tif (!subscription.isQueued) {\n\t\t\tsubscription.isQueued = true;\n\t\t\tthis.queues[priority].add(subscription);\n\t\t}\n\n\t\tif (priority === Priority.Immediate || this.isSync) {\n\t\t\tthis.flushSync();\n\t\t} else {\n\t\t\tthis.scheduleFlush();\n\t\t}\n\t}\n\n\tprivate scheduleFlush() {\n\t\tif (this.isPending) return;\n\t\tthis.isPending = true;\n\n\t\tif (this.channel) {\n\t\t\tthis.channel.port2.postMessage(null);\n\t\t} else {\n\t\t\t// Fallback for environments without MessageChannel\n\t\t\tsetTimeout(() => this.workLoop(), 0);\n\t\t}\n\t}\n\n\t/**\n\t * Returns true if the current work chunk has exceeded the time budget.\n\t */\n\tshouldYield(): boolean {\n\t\treturn performance.now() - this.startTime >= this.frameYieldMs;\n\t}\n\n\t/**\n\t * The main work loop for processing enqueued updates.\n\t */\n\tprivate workLoop() {\n\t\tthis.startTime = performance.now();\n\t\tthis.isPending = false;\n\n\t\tlet hasMoreWork = this.flushQueues();\n\n\t\tif (hasMoreWork) {\n\t\t\tthis.scheduleFlush();\n\t\t}\n\t}\n\n\t/**\n\t * Flushes the queues based on priority.\n\t * Returns true if there is still work remaining (due to yielding).\n\t */\n\tprivate flushQueues(): boolean {\n\t\tfor (let p = Priority.Immediate; p <= Priority.Background; p++) {\n\t\t\tconst queue = this.queues[p];\n\t\t\tif (queue.size === 0) continue;\n\n\t\t\t// Take a snapshot and clear the queue immediately.\n\t\t\tconst items = Array.from(queue);\n\t\t\tqueue.clear();\n\n\t\t\tfor (let i = 0; i < items.length; i++) {\n\t\t\t\tconst subscription = items[i];\n\t\t\t\tsubscription.isQueued = false;\n\n\t\t\t\tif (subscription.active) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst continuation = subscription.update();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (continuation) {\n\t\t\t\t\t\t\tsubscription.isQueued = true;\n\t\t\t\t\t\t\tqueue.add(subscription);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tif (this.onError) {\n\t\t\t\t\t\t\tthis.onError(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.error(\"Scheduler error:\", err);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.shouldYield()) {\n\t\t\t\t\t// Put remaining items from the snapshot back into the queue.\n\t\t\t\t\tfor (let j = i + 1; j < items.length; j++) {\n\t\t\t\t\t\tqueue.add(items[j]);\n\t\t\t\t\t\t// items[j].isQueued is already true.\n\t\t\t\t\t}\n\t\t\t\t\treturn true; // We need to yield, work is not finished.\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Check if any new work was added to higher priority queues while processing lower ones.\n\t\tfor (let p = Priority.Immediate; p <= Priority.Background; p++) {\n\t\t\tif (this.queues[p].size > 0) return true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Synchronously flushes all pending updates.\n\t */\n\tflushSync() {\n\t\tif (this.isSyncing) return;\n\n\t\tthis.isSyncing = true;\n\t\t// We don't want the work loop to trigger while we're doing a sync flush.\n\t\tthis.isPending = true; \n\t\t\n\t\t// During flushSync, we should never yield.\n\t\tconst originalShouldYield = this.shouldYield;\n\t\tthis.shouldYield = () => false;\n\n\t\ttry {\n\t\t\tlet hasMoreWork = true;\n\t\t\twhile (hasMoreWork) {\n\t\t\t\thasMoreWork = false;\n\t\t\t\tfor (let p = Priority.Immediate; p <= Priority.Background; p++) {\n\t\t\t\t\tconst queue = this.queues[p];\n\t\t\t\t\tif (queue.size === 0) continue;\n\n\t\t\t\t\tconst items = Array.from(queue);\n\t\t\t\t\tqueue.clear();\n\n\t\t\t\t\tfor (const subscription of items) {\n\t\t\t\t\t\tsubscription.isQueued = false;\n\t\t\t\t\t\tif (subscription.active) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst continuation = subscription.update();\n\t\t\t\t\t\t\t\tif (continuation) {\n\t\t\t\t\t\t\t\t\tsubscription.isQueued = true;\n\t\t\t\t\t\t\t\t\tqueue.add(subscription);\n\t\t\t\t\t\t\t\t\thasMoreWork = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\tif (this.onError) {\n\t\t\t\t\t\t\t\t\tthis.onError(err);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconsole.error(\"Scheduler error (sync):\", err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (queue.size > 0) hasMoreWork = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tthis.shouldYield = originalShouldYield;\n\t\t\tthis.isPending = false;\n\t\t\tthis.isSyncing = false;\n\t\t}\n\t}\n\n\tsetSync(sync: boolean) {\n\t\tthis.isSync = sync;\n\t}\n\n\t/**\n\t * Clears all pending updates.\n\t */\n\tclear() {\n\t\tfor (const queue of this.queues) {\n\t\t\tqueue.clear();\n\t\t}\n\t\tthis.isPending = false;\n\t}\n}\n\nexport const scheduler = new Scheduler();\n","import { deepEqual } from \"../helpers/tools\";\nimport Binding from \"../reactivity/binding\";\nimport Signal from \"../reactivity/signal\";\nimport { TextVdom } from \"./text-vdom\";\nimport { Vdom } from \"./vdom\";\nimport { FragmentVdom } from \"./fragment-vdom\";\nimport { ObservableCollection } from \"./vdom-types\";\nimport { scheduler } from \"../reactivity/scheduler\";\nimport { IDotCore } from \"dothtml-interfaces\";\n\ntype DatumMap = {\n\tvdom: Vdom; \n\tvalue: any;\n\tkeyValue: any;\n\tafterNode: Node;\n\tobservableIndex: Binding<number>\n};\n\n/**\n * This is a VDOM for storing a collection, such as an array or dictionary.\n */\nexport default class CollectionVdom extends Vdom{\n\n\tprivate static readonly MAX_BATCH_SIZE = 128;\n\n\tvalue: ObservableCollection;\n\trenderCallback: (x: any, i: number|string|Binding, k: string)=>any;\n\tstartNode: Node;\n\tendNode: Node;\n\tobserverId = 0;\n\n\tmappedItems: Array<DatumMap> = [];\n\n\t// State for incremental updates\n\tprivate updateState: {\n\t\tnewItems: Array<any>;\n\t\tnewKeys: Array<any>;\n\t\toldMap: Map<any, DatumMap>;\n\t\tnextMappedItems: Array<DatumMap>;\n\t\tcurrentIndex: number;\n\t\tlastNode: Node;\n\t\ttailAppendPrefix: number;\n\t\tstep: \"diff\" | \"reorder\" | \"cleanup\";\n\t} | null = null;\n\n\tconstructor(dot: IDotCore, value: ObservableCollection, renderCallback: (x: any, i: number|string, k: string)=>any){\n\t\tsuper(dot);\n\t\tthis.value = value;\n\t\tthis.renderCallback = renderCallback;\n\t}\n\n\t_render(target: HTMLElement) {\n\n\t\tif(this.value instanceof Binding){\n\t\t\tthis.observerId = this.value._subscribe(this);\n\t\t}\n\n\t\tthis.startNode = target.ownerDocument.createTextNode(\"\");\n\t\tthis.endNode = target.ownerDocument.createTextNode(\"\");\n\t\ttarget.appendChild(this.startNode);\n\t\ttarget.appendChild(this.endNode);\n\t\t\n\t\tconst originalShouldYield = scheduler.shouldYield;\n\t\tscheduler.shouldYield = () => false;\n\t\ttry {\n\t\t\tthis.updateList();\n\t\t} finally {\n\t\t\tscheduler.shouldYield = originalShouldYield;\n\t\t}\n\t}\n\n\t_unrender() {\n\t\tif(this.observerId && this.value instanceof Binding){\n\t\t\tthis.value._unsubscribe(this.observerId);\n\t\t\tthis.observerId = null;\n\t\t}\n\n\t\tfor(let i = 0; i < this.mappedItems.length; i++){\n\t\t\tlet I = this.mappedItems[i];\n\t\t\tI.vdom._unrender();\n\t\t\tI.afterNode.parentElement.removeChild(I.afterNode);\n\t\t}\n\t\tthis.mappedItems.length = 0;\n\n\t\tthis.startNode.parentElement.removeChild(this.startNode);\n\t\tthis.endNode.parentElement.removeChild(this.endNode);\n\t\tthis.startNode = null;\n\t\tthis.endNode = null;\n\t}\n\n\t_getNodes(): Node[] {\n\t\tif(!this.startNode) return [];\n\t\tlet nodes = [this.startNode];\n\t\tfor(let i = 0; i < this.mappedItems.length; i++){\n\t\t\tnodes.push(...this.mappedItems[i].vdom._getNodes());\n\t\t\tnodes.push(this.mappedItems[i].afterNode);\n\t\t}\n\t\tnodes.push(this.endNode);\n\t\treturn nodes;\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this;\n\t}\n\n\tprivate getTailAppendPrefixLength(newKeys: Array<any>): number {\n\t\tconst old = this.mappedItems;\n\t\tif (old.length === 0 || newKeys.length <= old.length) return 0;\n\t\tfor (let i = 0; i < old.length; i++) {\n\t\t\tif (newKeys[i] !== old[i].keyValue) return 0;\n\t\t}\n\t\treturn old.length;\n\t}\n\n\tprivate isItemPositionedAfter(item: DatumMap, anchor: Node): boolean {\n\t\tconst nodes = item.vdom._getNodes();\n\t\tif (!nodes.length || !anchor.parentElement) return false;\n\t\tif (nodes[0] !== anchor.nextSibling) return false;\n\t\tconst lastNode = nodes[nodes.length - 1];\n\t\treturn item.afterNode === lastNode.nextSibling;\n\t}\n\n\tprivate reuseExistingItem(existing: DatumMap, value: any, index: number) {\n\t\tif (existing.value !== value && !deepEqual(existing.value, value)) {\n\t\t\texisting.vdom._unrender();\n\t\t\texisting.value = value;\n\t\t\tlet vdomOrContent = this.renderCallback(value, this.value instanceof Binding ? existing.observableIndex : index, existing.keyValue);\n\t\t\tlet vdom: Vdom;\n\t\t\tif (vdomOrContent instanceof Vdom) {\n\t\t\t\tvdom = vdomOrContent;\n\t\t\t} else if (typeof vdomOrContent === \"object\" && vdomOrContent?.build) {\n\t\t\t\tvdom = new FragmentVdom(this._dot);\n\t\t\t\t(vdom as any).mount(vdomOrContent);\n\t\t\t} else {\n\t\t\t\tvdom = new TextVdom(vdomOrContent as any);\n\t\t\t}\n\t\t\tif ((vdom as any)._root) vdom = (vdom as any)._root;\n\t\t\texisting.vdom = vdom;\n\t\t} else {\n\t\t\texisting.observableIndex._set(index);\n\t\t}\n\t}\n\n\tprivate getInsertBeforeAnchor(fromIndex: number, items: DatumMap[]): Node {\n\t\tfor (let i = fromIndex; i < items.length; i++) {\n\t\t\tif (items[i].vdom._isRendered) {\n\t\t\t\tconst nodes = items[i].vdom._getNodes();\n\t\t\t\tif (nodes.length) return nodes[0];\n\t\t\t}\n\t\t}\n\t\treturn this.endNode;\n\t}\n\n\tprivate countConsecutiveUnrendered(fromIndex: number, items: DatumMap[]): number {\n\t\tlet count = 0;\n\t\twhile (\n\t\t\tfromIndex + count < items.length &&\n\t\t\t!items[fromIndex + count].vdom._isRendered &&\n\t\t\tcount < CollectionVdom.MAX_BATCH_SIZE\n\t\t) {\n\t\t\tcount++;\n\t\t}\n\t\treturn count;\n\t}\n\n\tprivate batchRenderNewItems(items: DatumMap[], parent: Node, insertBefore: Node): void {\n\t\tconst fragment = parent.ownerDocument.createDocumentFragment();\n\t\tfor (const item of items) {\n\t\t\titem.vdom._render(fragment as unknown as HTMLElement);\n\t\t\tfragment.appendChild(item.afterNode);\n\t\t}\n\t\tparent.insertBefore(fragment, insertBefore);\n\t}\n\n\t/**\n\t * Removes a single item from the DOM, including anchors.\n\t */\n\tprivate async removeItem(item: DatumMap){\n\t\tawait item.vdom._unrenderAsync();\n\t\tif (item.afterNode.parentElement) {\n\t\t\titem.afterNode.parentElement.removeChild(item.afterNode);\n\t\t}\n\t}\n\n\tupdateList(): boolean {\n\t\tlet unmappedCollection = null as Array<any>|Record<string|number, any>;\n\t\tif(this.value instanceof Binding){\n\t\t\tunmappedCollection = this.value._get() as any;\n\t\t}\n\t\telse{\n\t\t\tunmappedCollection = this.value;\n\t\t}\n\n\t\tconst currentItems: Array<any> = Array.isArray(unmappedCollection) \n\t\t\t? unmappedCollection \n\t\t\t: Object.values(unmappedCollection);\n\n\t\tif (this.updateState) {\n\t\t\t// If we are already updating, check if the data has changed since we started.\n\t\t\tif (!deepEqual(this.updateState.newItems, currentItems)) {\n\t\t\t\t// The data changed while we were yielded! \n\t\t\t\t// Discard the old state and start fresh.\n\t\t\t\tthis.updateState = null;\n\t\t\t}\n\t\t}\n\n\t\tif (!this.updateState) {\n\t\t\t// Initialize update state\n\t\t\tlet key: string = null;\n\t\t\tif(this.value instanceof Binding){\n\t\t\t\tkey = this.value._source.key ?? null;\n\t\t\t}\n\n\t\t\tconst newItems = currentItems;\n\t\t\t\n\t\t\tconst newKeys: Array<any> = Array.isArray(unmappedCollection)\n\t\t\t\t? newItems.map((v, i) => key ? v[key] : i)\n\t\t\t\t: Object.keys(unmappedCollection).map((k, i) => key ? unmappedCollection[k][key] : k);\n\n\t\t\tconst tailAppendPrefix = this.getTailAppendPrefixLength(newKeys);\n\n\t\t\tconst oldMap = new Map<any, DatumMap>();\n\t\t\tfor (let i = 0; i < this.mappedItems.length; i++) {\n\t\t\t\tconst item = this.mappedItems[i];\n\t\t\t\tif (i >= tailAppendPrefix) {\n\t\t\t\t\toldMap.set(item.keyValue, item);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.updateState = {\n\t\t\t\tnewItems,\n\t\t\t\tnewKeys,\n\t\t\t\toldMap,\n\t\t\t\tnextMappedItems: [],\n\t\t\t\tcurrentIndex: 0,\n\t\t\t\tlastNode: this.startNode,\n\t\t\t\ttailAppendPrefix,\n\t\t\t\tstep: \"diff\"\n\t\t\t};\n\t\t}\n\n\t\tconst state = this.updateState;\n\n\t\t// 1. Diffing Step\n\t\tif (state.step === \"diff\") {\n\t\t\twhile (state.currentIndex < state.newItems.length) {\n\t\t\t\tconst value = state.newItems[state.currentIndex];\n\t\t\t\tconst keyValue = state.newKeys[state.currentIndex];\n\n\t\t\t\tif (state.currentIndex < state.tailAppendPrefix) {\n\t\t\t\t\tconst existing = this.mappedItems[state.currentIndex];\n\t\t\t\t\tthis.reuseExistingItem(existing, value, state.currentIndex);\n\t\t\t\t\tstate.nextMappedItems.push(existing);\n\t\t\t\t} else {\n\t\t\t\t\tlet existing = state.oldMap.get(keyValue);\n\n\t\t\t\t\tif (existing) {\n\t\t\t\t\t\tstate.oldMap.delete(keyValue);\n\t\t\t\t\t\tthis.reuseExistingItem(existing, value, state.currentIndex);\n\t\t\t\t\t\tstate.nextMappedItems.push(existing);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst reactive = new Signal();\n\t\t\t\t\t\tconst observableIndex = reactive.bind();\n\t\t\t\t\t\tobservableIndex._set(state.currentIndex);\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst vdomOrContent = this.renderCallback(value, this.value instanceof Binding ? observableIndex : state.currentIndex, keyValue);\n\t\t\t\t\t\tlet vdom: Vdom;\n\t\t\t\t\t\tif (vdomOrContent instanceof Vdom) {\n\t\t\t\t\t\t\tvdom = vdomOrContent;\n\t\t\t\t\t\t} else if (typeof vdomOrContent === \"object\" && vdomOrContent?.build) {\n\t\t\t\t\t\t\tvdom = new FragmentVdom(this._dot);\n\t\t\t\t\t\t\t(vdom as any).mount(vdomOrContent);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvdom = new TextVdom(vdomOrContent as any);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ((vdom as any)._root) vdom = (vdom as any)._root;\n\t\t\t\t\t\tconst afterNode = this.startNode.ownerDocument.createTextNode(\"\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tstate.nextMappedItems.push({\n\t\t\t\t\t\t\tvdom, value, keyValue, afterNode, observableIndex\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tstate.currentIndex++;\n\n\t\t\t\tif (scheduler.shouldYield()) {\n\t\t\t\t\treturn true; // Yielding\n\t\t\t\t}\n\t\t\t}\n\t\t\tstate.step = \"cleanup\";\n\t\t}\n\n\t\t// 2. Cleanup Step (Remove items no longer present)\n\t\tif (state.step === \"cleanup\") {\n\t\t\tconst oldItems = Array.from(state.oldMap.values());\n\t\t\tfor (const item of oldItems) {\n\t\t\t\tthis.removeItem(item);\n\t\t\t}\n\t\t\tstate.step = \"reorder\";\n\t\t\tstate.currentIndex = 0;\n\t\t\tthis.mappedItems = [];\n\t\t}\n\n\t\t// 3. Reordering Step\n\t\tif (state.step === \"reorder\") {\n\t\t\twhile (state.currentIndex < state.nextMappedItems.length) {\n\t\t\t\tconst item = state.nextMappedItems[state.currentIndex];\n\n\t\t\t\tif (!item.vdom._isRendered) {\n\t\t\t\t\tconst runLength = this.countConsecutiveUnrendered(state.currentIndex, state.nextMappedItems);\n\n\t\t\t\t\tif (runLength >= 2) {\n\t\t\t\t\t\tconst batch = state.nextMappedItems.slice(state.currentIndex, state.currentIndex + runLength);\n\t\t\t\t\t\tconst parent = state.lastNode.parentElement;\n\t\t\t\t\t\tconst insertBefore = this.getInsertBeforeAnchor(state.currentIndex + runLength, state.nextMappedItems);\n\t\t\t\t\t\tthis.batchRenderNewItems(batch, parent, insertBefore);\n\n\t\t\t\t\t\tfor (const batchItem of batch) {\n\t\t\t\t\t\t\tstate.lastNode = batchItem.afterNode;\n\t\t\t\t\t\t\tthis.mappedItems.push(batchItem);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.currentIndex += runLength;\n\t\t\t\t\t} else {\n\t\t\t\t\t\titem.vdom._renderAfter(state.lastNode);\n\t\t\t\t\t\tstate.lastNode.parentElement.insertBefore(item.afterNode, item.vdom._getNodes().slice(-1)[0].nextSibling);\n\t\t\t\t\t\tstate.lastNode = item.afterNode;\n\t\t\t\t\t\tthis.mappedItems.push(item);\n\t\t\t\t\t\tstate.currentIndex++;\n\t\t\t\t\t}\n\t\t\t\t} else if (!this.isItemPositionedAfter(item, state.lastNode)) {\n\t\t\t\t\titem.vdom._moveBefore(state.lastNode.nextSibling, state.lastNode.parentElement);\n\t\t\t\t\tstate.lastNode.parentElement.insertBefore(item.afterNode, item.vdom._getNodes().slice(-1)[0].nextSibling);\n\t\t\t\t\tstate.lastNode = item.afterNode;\n\t\t\t\t\tthis.mappedItems.push(item);\n\t\t\t\t\tstate.currentIndex++;\n\t\t\t\t} else {\n\t\t\t\t\tstate.lastNode = item.afterNode;\n\t\t\t\t\tthis.mappedItems.push(item);\n\t\t\t\t\tstate.currentIndex++;\n\t\t\t\t}\n\n\t\t\t\tif (scheduler.shouldYield()) {\n\t\t\t\t\treturn true; // Yielding\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Finalize\n\t\tthis.updateState = null;\n\t\treturn false; // Finished\n\t}\n}\n","import { removeNodesBetween } from \"../helpers/tools\";\nimport Binding from \"../reactivity/binding\";\nimport { ContainerVdom } from \"./container-vdom\";\nimport { Vdom } from \"./vdom\";\nimport { ConditionalNodeItem } from \"./vdom-types\";\nimport { IDotCore } from \"dothtml-interfaces\";\n\nexport class ConditionalVdom extends Vdom{\n\n\tprivate conditions: Array<ConditionalNodeItem> = []\n\tprivate sealed = false;\n\tprivate renderedIndex = -1;\n\tprivate currentUpdatePromise: Promise<void> | null = null;\n\tprivate nextIndex: number | null = null;\n\n\tconstructor(dot: IDotCore){\n\t\tsuper(dot);\n\t}\n\n\taddCondition(condition:Binding|boolean, vNode: Vdom, seal = false){\n\n\t\tif(this.sealed){\n\t\t\tthrow new Error(\"Cannot add additional conditions to a sealed block.\");\n\t\t}\n\t\tthis.sealed = seal;\n\n\t\tlet C = {\n\t\t\tcondition,\n\t\t\tvNode,\n\t\t\tstartAnchor: null,\n\t\t\tendAnchor: null,\n\t\t\tobserverId: 0\n\t\t};\n\n\t\tthis.conditions.push(C);\n\n\t\t// If we're rendered\n\t\tif(this._isRendered){\n\t\t\t// This means it's rendered.\n\n\t\t\tthis.renderClause(C, this.conditions[0].startAnchor.parentElement);\n\n\t\t\t// If we're rendered but none of the previous conditions were true.\n\t\t\tif(this.renderedIndex == -1){\n\t\t\t\tthis.updateConditions();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate renderClause(C: ConditionalNodeItem, node: HTMLElement){\n\t\t// Add the anchors.\n\t\tif(C.startAnchor) throw new Error(\"Item is already rendered.\");\n\t\tC.startAnchor = node.ownerDocument.createTextNode(\"\");\n\t\tC.endAnchor = node.ownerDocument.createTextNode(\"\");\n\t\tnode.appendChild(C.startAnchor);\n\t\tnode.appendChild(C.endAnchor);\n\n\t\t// Subscribe if necessary.\n\t\tif(C.condition instanceof Binding){\n\t\t\tC.observerId = C.condition._subscribe(this);\n\t\t}\n\t}\n\n\t_render(node: HTMLElement) {\n\t\t// this._node = targetDocument.createTextNode(this._textContent);\n\t\t// return this._node;\n\t\tthis._isRendered = true;\n\n\t\t// First render all of the text nodes.\n\n\t\t// Need to readd all the conditions.\n\t\tfor(let c = 0; c < this.conditions.length; c++){\n\t\t\tthis.renderClause(this.conditions[c], node);\n\t\t}\n\n\t\t// Now render the first node with a positive conidion (if any)\n\t\tthis.updateConditions();\n\t}\n\n\tremoveCNode(C: ConditionalNodeItem){\n\n\t\tif(C.condition instanceof Binding){\n\t\t\tC.condition._unsubscribe(C.observerId);\n\t\t\tC.observerId = 0;\n\t\t}\n\n\t\tlet start = C.startAnchor;\n\t\tlet end = C.endAnchor;\n\t\tstart.parentElement.removeChild(start);\n\t\tend.parentElement.removeChild(end);\n\t\tC.startAnchor = null;\n\t\tC.endAnchor = null;\n\t\tC.vNode._unrender();\n\t}\n\n\t_unrender() {\n\t\tif(!this._isRendered) return;\n\t\tthis._isRendered = false;\n\t\tthis.renderedIndex = -1;\n\t\tthis.nextIndex = null;\n\t\tthis.currentUpdatePromise = null;\n\n\t\tfor(let i = 0; i < this.conditions.length; i++){\n\t\t\tlet C = this.conditions[i]\n\t\t\tthis.removeCNode(C);\n\t\t}\n\t}\n\n\t_getNodes(): Node[] {\n\t\tif(!this._isRendered) return [];\n\t\tlet nodes = [];\n\t\tfor(let i = 0; i < this.conditions.length; i++){\n\t\t\tlet C = this.conditions[i];\n\t\t\tnodes.push(C.startAnchor);\n\t\t\tif(i == this.renderedIndex){\n\t\t\t\tnodes.push(...C.vNode._getNodes());\n\t\t\t}\n\t\t\tnodes.push(C.endAnchor);\n\t\t}\n\t\treturn nodes;\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this;\n\t}\n\n\tupdateConditions(){\n\n\t\tlet newIndex = -1;\n\t\tfor(let c = 0; c < this.conditions.length; c++){\n\t\t\tlet C = this.conditions[c];\n\n\t\t\tif(C.condition instanceof Binding ? C.condition._get() : C.condition){\n\t\t\t\tnewIndex = c;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (this.currentUpdatePromise) {\n\t\t\tthis.nextIndex = newIndex;\n\t\t\treturn;\n\t\t}\n\n\t\tif(newIndex != this.renderedIndex){\n\t\t\tthis.performUpdate(newIndex);\n\t\t}\n\t}\n\n\tprivate async performUpdate(newIndex: number) {\n\t\tconst oldIndex = this.renderedIndex;\n\t\tthis.renderedIndex = newIndex;\n\n\t\tif(oldIndex != -1){\n\t\t\tconst C = this.conditions[oldIndex];\n\t\t\tthis.currentUpdatePromise = Promise.resolve(C.vNode._unrenderAsync());\n\t\t\tawait this.currentUpdatePromise;\n\t\t\tthis.currentUpdatePromise = null;\n\t\t}\n\n\t\t// Check if we were interrupted during unrender\n\t\tif (this.nextIndex !== null) {\n\t\t\tconst next = this.nextIndex;\n\t\t\tthis.nextIndex = null;\n\t\t\tif (next !== this.renderedIndex) {\n\t\t\t\tthis.performUpdate(next);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif(this.renderedIndex != -1){\n\t\t\tconst C = this.conditions[this.renderedIndex];\n\t\t\tC.vNode._renderBefore(C.endAnchor);\n\t\t}\n\n\t\t// Check if we were interrupted during render\n\t\tif (this.nextIndex !== null) {\n\t\t\tconst next = this.nextIndex;\n\t\t\tthis.nextIndex = null;\n\t\t\tif (next !== this.renderedIndex) {\n\t\t\t\tthis.performUpdate(next);\n\t\t\t}\n\t\t}\n\t}\n}","import { removeNodesBetween } from \"../helpers/tools\";\nimport Binding from \"../reactivity/binding\";\nimport Signal from \"../reactivity/signal\";\nimport { Vdom } from \"./vdom\";\n\nexport class HtmlVdom extends Vdom{\n\n\tbeforeNode: Node;\n\tafterNode: Node;\n\n\t_html: string|Binding;\n\tobserverId: number = 0;\n\n\tconstructor(html: string|Binding){\n\t\tsuper();\n\t\tthis._html = html;\n\t}\n\n\tupdateHtml(html){\n\t\tif(this.beforeNode){\n\t\t\tremoveNodesBetween(this.beforeNode, this.afterNode);\n\t\t\t\n\t\t\t// Need to render everything to a temporary div them move everything to the target.\n\t\t\tlet temp = this.beforeNode.ownerDocument.createElement(\"div\");\n\t\t\ttemp.innerHTML = html;\n\n\t\t\twhile (temp.firstChild) {\n\t\t\t\tthis.afterNode.parentElement.insertBefore(temp.firstChild, this.afterNode);\n\t\t\t}\n\t\t}\n\t}\n\n\t_render(target: HTMLElement) {\n\t\tlet html = \"\";\n\t\tif(this._html instanceof Binding){\n\t\t\thtml = this._html._get() ?? \"\";\n\t\t\tthis.observerId = this._html._subscribe(this);\n\t\t}\n\t\telse{\n\t\t\thtml = this._html;\n\t\t}\n\n\t\tthis.beforeNode = target.ownerDocument.createTextNode(\"\");\n\t\tthis.afterNode = target.ownerDocument.createTextNode(\"\");\n\t\ttarget.appendChild(this.beforeNode);\n\t\ttarget.appendChild(this.afterNode);\n\t\tthis.updateHtml(html ?? \"\");\n\t}\n\n\t_unrender() {\n\t\tif(this.beforeNode){\n\t\t\tlet parent = this.beforeNode.parentElement;\n\n\t\t\t// TODO: once we set up bindings, need the ability to clear them.\n\t\t\tremoveNodesBetween(this.beforeNode, this.afterNode);\n\n\t\t\tparent.removeChild(this.beforeNode);\n\t\t\tparent.removeChild(this.afterNode);\n\t\t\tthis.beforeNode = null;\n\t\t\tthis.afterNode = null;\n\t\t}\n\n\t\tif(this.observerId && this._html instanceof Binding){\n\t\t\tthis._html._unsubscribe(this.observerId);\n\t\t\tthis.observerId = 0;\n\t\t}\n\t}\n\n\t_getNodes(): Node[] {\n\t\tif(!this.beforeNode) return [];\n\t\tlet nodes = [this.beforeNode];\n\t\tlet curr = this.beforeNode.nextSibling;\n\t\twhile(curr && curr !== this.afterNode){\n\t\t\tnodes.push(curr);\n\t\t\tcurr = curr.nextSibling;\n\t\t}\n\t\tnodes.push(this.afterNode);\n\t\treturn nodes;\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this;\n\t}\n\n\ttoString(){\n\t\treturn this._html instanceof Binding ? this._html._get() : this._html;\n\t}\n}","import ElementVdom from \"../vdom-nodes/element-vdom\";\n\nexport default class ReactiveAttr{\n\t\n\telementVdom: ElementVdom;\n\tattribute: string;\n\n\tconstructor(elementVdom: ElementVdom, attribute: string){\n\t\tthis.elementVdom = elementVdom;\n\t\tthis.attribute = attribute;\n\t}\n}","import { IBinding } from \"dothtml-interfaces\";\nimport VMetaNode from \"../v-meta-nodes/v-meta-node\";\nimport CollectionVdom from \"../vdom-nodes/collection-vdom\";\nimport { ConditionalVdom } from \"../vdom-nodes/conditional-vdom\";\nimport { HtmlVdom } from \"../vdom-nodes/html-vdom\";\nimport { TextVdom } from \"../vdom-nodes/text-vdom\";\nimport Binding from \"./binding\";\nimport ReactiveAttr from \"./reactive-attr\";\n\n\n/**\n * Bindings link a reactive to a vdom node or other item using a bound reactive.\n */\nexport default class Subscription{\n\tboundReactive: IBinding;\n\titem: any;\n\tactive: boolean = true;\n\tisQueued: boolean = false;\n\n\tconstructor(boundReactive: IBinding, item: any){\n\t\tthis.boundReactive = boundReactive;\n\t\tthis.item = item;\n\t}\n\n\t// TODO: would be more efficient to compute the _get first then pass it into this function.\n\tupdate(): any {\n\t\tif(!this.active) return;\n\t\tlet value = this.boundReactive._get();\n\n\t\tif(this.item instanceof TextVdom){\n\t\t\tthis.item.textNode.textContent = value as string ?? \"\";\n\t\t}\n\t\telse if(this.item._isReactiveVdom){\n\t\t\tthis.item.update(value);\n\t\t}\n\t\telse if(this.item instanceof HtmlVdom){\n\t\t\tthis.item.updateHtml(value);\n\t\t}\n\t\telse if(this.item instanceof ReactiveAttr){\n\t\t\tthis.item.elementVdom.updateReactiveAttr(this.item.attribute, value as any);\n\t\t}\n\t\telse if(this.item instanceof VMetaNode){\n\t\t\tthis.item.update();\n\t\t}\n\t\telse if(this.item instanceof CollectionVdom){\n\t\t\t// TODO: shouldn't I pass the value in here???\n\t\t\treturn this.item.updateList();\n\t\t}\n\t\telse if(this.item instanceof ConditionalVdom){\n\t\t\t// TODO: shouldn't I pass the value in here???\n\t\t\tthis.item.updateConditions();\n\t\t}\n\t\telse if(this.item instanceof Function){\n\t\t\tthis.item(value);\n\t\t}\n\t}\n}","import { IBinding, IDotDocument, IReactive, IWatcher } from \"dothtml-interfaces\";\nimport { DOT_VDOM_PROP_NAME } from \"../constants\";\nimport ElementVdom from \"../vdom-nodes/element-vdom\";\nimport { TextVdom } from \"../vdom-nodes/text-vdom\";\nimport { HtmlVdom } from \"../vdom-nodes/html-vdom\";\nimport { ConditionalVdom } from \"../vdom-nodes/conditional-vdom\";\nimport CollectionVdom from \"../vdom-nodes/collection-vdom\";\nimport AttributeVNode from \"../v-meta-nodes/attribute-v-node\";\nimport VMetaNode from \"../v-meta-nodes/v-meta-node\";\nimport Binding from \"./binding\";\nimport Subscription from \"./subscription\";\nimport { Priority } from \"./priority\";\nimport { scheduler } from \"./scheduler\";\n\nexport const dependencyStack: Array<any> = [];\n\nconst TEXT_OFFSET = 0;\nconst HTML_OFFSET = 1;\nconst ATTR_OFFSET = 2;\n// Note: this specific interface is extremely simple, and it may be possible to generalize it and use it for other places\n// where we need reactive values. All you need is an update function pretty much.\nconst ATTR_COLLECTION_OFFSET = 3;\nconst STYLE_OFFSET = 4;\nconst COND_OFFSET = 5;\nconst ARRAY_OFFSET = 6;\nconst CB_OFFSET = 7; // Always last. User callbacks happen after the DOM is updated.\n\nconst CATEGORIES = CB_OFFSET + 1;\n\nexport default class Signal<T = any> implements IWatcher<T>{\n\n\tbindAs<Td>(transform: ((v:T)=>Td)|{\n\t\tdisplay?: (v: T)=>Td;\n\t\tread?: (v: string)=>T;\n\t}): IBinding<T, Td> {\n\t\tlet br = new Binding<T, Td>(this) as IBinding<T, Td>;\n\n\t\tif(transform[\"call\"] && transform[\"apply\"]){\n\t\t\tbr._transform = {\n\t\t\t\tdisplay: transform as (v: T)=>Td\n\t\t\t};\n\t\t}\n\t\telse{\n\t\t\tbr._transform = transform as any;\n\t\t}\n\n\t\treturn br;\n\t}\n\n\tbind(): Binding<T, T> {\n\t\treturn new Binding<T, T>(this);\n\t}\n\n\t_value: T;\n\tkey: string;\n\n\tsubscribers = new Map<number, Subscription>();\n\n\tget isWritable(): boolean {\n\t\treturn true;\n\t}\n\n\tconstructor() {\n\t}\n\n\tget value(): T {\n\t\tconst active = dependencyStack[dependencyStack.length - 1];\n\t\tif (active && active.addDependency) {\n\t\t\tactive.addDependency(this);\n\t\t}\n\t\treturn this._value;\n\t}\n\n\tset value(v: T) {\n\t\tthis.setValue(v);\n\t}\n\n\tgetValue(): T {\n\t\treturn this.value;\n\t}\n\n\tsetValue(v: T, priority: Priority = Priority.Normal) {\n\t\tif (this._value === v) return;\n\t\tthis._value = v;\n\t\tthis.updater(this._value, priority);\n\t}\n\n\tprivate updater(value: T, priority: Priority = Priority.Normal){\n\t\tfor(const sub of this.subscribers.values()){\n\t\t\tif ((sub as any).sync) {\n\t\t\t\tsub.update();\n\t\t\t} else {\n\t\t\t\tif (!sub.isQueued || priority === Priority.Immediate) {\n\t\t\t\t\tscheduler.enqueue(sub, priority);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tnextId = 1;\n\n\tsubscribe(callback: Function, sync: boolean = false) {\n\t\tlet br = new Binding(this);\n\t\treturn br._subscribe(callback, sync);\n\t}\n\n\t_subscribe(boundReactive: IBinding, item: any, sync: boolean = false){\n\t\tlet id = this.nextId++;\n\t\tconst sub = new Subscription(boundReactive, item);\n\t\t(sub as any).sync = sync;\n\t\tthis.subscribers.set(id, sub);\n\n\t\treturn id;\n\t}\n\n\tunsubscribe(id: number) {\n\t\tif(this.subscribers.has(id)){\n\t\t\tthis.subscribers.get(id)!.active = false;\n\t\t\tthis.subscribers.delete(id);\n\t\t}\n\t}\n\n\t_detachBinding(id: number) {\n\t\tthis.unsubscribe(id);\n\t}\n\n\t// Called manually by the user to trigger an update.\n\t// Useful for arrays and objects.\n\trefresh(priority: Priority = Priority.Normal): void {\n\t\tlet updatedValue = this.value;\n\t\t// this._cachedLastValue = updatedValue;\n\t\tthis.updater(updatedValue, priority);\n\t}\n\n\tupdateObservers(priority: Priority = Priority.Normal): void {\n\t\tthis.refresh(priority);\n\t}\n\t\n}\n","import Binding from \"../reactivity/binding\";\nimport Signal from \"../reactivity/signal\";\nimport VMetaNode from \"./v-meta-node\";\n\n/**\n * Attribute Virtual Nodes apply to a single attribute, such as class.\n * They're designed to allow users to set classes (and other attributes) using JSON objects.\n */\nexport default class AttributeVNode extends VMetaNode{\n\n\tattr: string;\n\tvalue: Record<string, string|Binding>;\n\ttarget: HTMLElement;\n\n\tobservables: Record<number, Binding> = {};\n\n\tconstructor(attrName, attrValue){\n\t\tsuper();\n\t\tthis.attr = attrName;\n\t\tthis.value = attrValue;\n\t}\n\n\trender(target: HTMLElement){\n\t\tthis.target = target;\n\n\t\t{ // Register observables.\n\t\t\tfor(let k in this.value){\n\t\t\t\tlet v = (this.value as any)[k];\n\n\t\t\t\tif(v instanceof Signal) v = v.bind(); // TODO: this probably isn't the right place for this.\n\n\t\t\t\tif(v && v instanceof Binding){\n\t\t\t\t\tlet id = v._subscribe(this);\n\t\t\t\t\tthis.observables[id] = v;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t{ // Update.\n\t\t\tthis.update();\n\t\t}\n\t}\n\n\tupdate(){\n\t\tif(!this.target) return;\n\n\t\tlet tokens = [];\n\t\tfor(let k in this.value){\n\t\t\tlet v = (this.value as any)[k];\n\t\t\tif(v){\n\t\t\t\tif(v instanceof Signal) v = v.bind();\n\t\t\t\tif(!(v instanceof Binding) || v._get()){\t\n\t\t\t\t\ttokens.push(k);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (tokens.length > 0) {\n\t\t\tthis.target.setAttribute(this.attr, tokens.join(\" \"));\n\t\t} else {\n\t\t\tthis.target.removeAttribute(this.attr);\n\t\t}\n\t}\n\n\tunrender(){\n\t\tthis.target = null;\n\n\t\tfor(let o in this.observables){\n\t\t\tlet v = this.observables[o];\n\t\t\tv._unsubscribe(Number(o));\n\t\t}\n\n\t\tthis.observables = {};\n\t}\n}","// TODO: I've created a list of shorthands, and we should handle those individually.\n// Ideally, everything below should be categorized by CSS data type.\nconst allProps = {\n\tcolor: \"color|background-Color|border-Bottom-Color|border-Color|border-Left-Color|border-Right-Color|border-Top-Color|text-Decoration-Color|outline-Color|column-Rule-Color\",\n\tlength: \"background-Size|block-Size|border-Bottom-Left-Radius|border-Bottom-Right-Radius|border-Bottom-Width|border-Left-Width|border-Radius|border-Right-Width|border-Top-Left-Radius|border-Top-Right-Radius|border-Top-Width|border-Width|bottom|gap|height|left|margin|margin-Bottom|margin-Left|margin-Right|margin-Top|max-Height|max-Width|min-Height|min-Width|padding|padding-Bottom|padding-Left|padding-Right|padding-Top|right|top|width|flex-Basis|font-Size|text-Indent|letter-Spacing|word-Spacing|border-Spacing|outline-Offset|outline-Width|column-Gap|column-Rule-Width|grid-Column-Gap|grid-Gap|grid-Row-Gap|column-Width|perspective|row-Gap\",\n\thybrid: \"line-Height|border-Image-Width|border-Image-Outset|tab-Size|flex\",\n\turl: \"background-Image|border-Image|list-Style-Image|content|image-Orientation\",\n\ttransformation: \"transform\",\n\tfilter: \"filter|backdrop-Filter\",\n\ttime: \"animation-Delay|animation-Direction|animation-Duration|transition-Duration|transition-Delay\",\n\tmisc: \"appearance|aspect-Ratio|opacity|background|background-Attachment|background-Blend-Mode|background-Position|background-Repeat|background-Clip|background-Origin|border|border-Bottom|border-Bottom-Style|border-Image-Repeat|border-Image-Slice|border-Image-Source|border-Left|border-Left-Style|border-Right|border-Right-Style|border-Style|border-Top|border-Top-Style|box-Decoration-Break|box-Shadow|clear|clip|display|float|overflow|box|overflow-X|overflow-Y|position|visibility|vertical-Align|z-Index|align-Content|align-Items|align-Self|flex-Direction|flex-Flow|flex-Grow|flex-Shrink|flex-Wrap|grid|grid-Area|grid-Auto-Columns|grid-auto-Rows|grid-Column|grid-Column-End|grid-Column-Start|grid-Row|grid-Row-End|grid-Row-Start|grid-Template|grid-Template-Areas|grid-Template-Columns|grid-Template-Rows|justify-Content|order|hanging-Punctuation|hyphens|line-Break|overflow-Wrap|text-Align|text-Align-Last|text-Combine-Upright|text-Justify|text-Transform|white-Space|word-Break|word-Wrap|text-Decoration|text-Decoration-Line|text-Decoration-Style|text-Shadow|text-Underline-Position|font|font-Family|font-Feature-Settings|font-Kerning|font-Language-Override|font-Size-Adjust|font-Stretch|font-Style|font-Synthesis|font-Variant|font-Variant-Alternates|font-Variant-Caps|font-Variant-East-Asian|font-Variant-Ligatures|font-Variant-Numeric|font-Variant-Position|font-Weight|direction|text-Orientation|text-Combine-Upright|unicode-Bidi|user-Select|writing-Mode|border-Collapse|caption-Side|empty-Cells|table-Layout|counter-Increment|counter-Reset|list-Style|list-Style-Position|list-Style-Type|animation|animation-Fill-Mode|animation-Iteration-Count|animation-Name|animation-Play-State|animation-Timing-Function|animation-Timeline|container-Type|container-Name|backface-Visibility|perspective2d|perspective-Origin|transform-Origin|transform-Style|transition|transition-Property|transition-Timing-Function|box-Sizing|cursor|ime-Mode|nav-Down|nav-Index|nav-Left|nav-Right|nav-Up|outline|outline-Style|resize|text-Overflow|break-After|break-Before|break-Inside|column-Count|column-Fill|column-Rule|column-Rule-Style|column-Span|columns|widows|orphans|page-Break-After|page-Break-Before|page-Break-Inside|marks|quotes|image-Rendering|image-Resolution|object-Fit|object-Position|mask|mask-Type|mark|mark-After|mark-Before|phonemes|rest|rest-After|rest-Before|voice-Balance|voice-Duration|voice-Pitch|voice-Pitch-Range|voice-Rate|voice-Stress|voice-Volume|marquee-Direction|marquee-Play-Count|marquee-Speed|marquee-Style|pointer-Events\"\n}\n\nconst lengthSuffixes = \"Cm|Mm|In|Px|Pt|Pc|Ch|Em|Ex|Lh|Rem|Vh|Vw|Vmin|Vmax|Cqw|Cqh|Cqi|Cqb|Cqmin|Cqmax|P\".split(\"|\"); \n// Following esoteric options removed: \"Q|Cap|Ic|Rlh|Vb|Vi\". Keep this comment here in case there's demand for one or more of them.\nconst timeSuffixes = \"Ms|S\".split(\"|\");\nconst angleSuffixes = \"Deg|Grad|Rad|Turn\".split(\"|\");\nconst frequencySuffixes = \"Hz|Khz\".split(\"|\");\n\n// TODO: add other types suffixes here. For instance: time, frequency, angle.\n\ntype CssRule = {\n\tdotName: string;\n\tcssName: string;\n\ttype: string;\n\tunit: string;\n};\n\nconst cssProps: Record<string, CssRule> = {};\n\nfor(let cssType in allProps){\n\tlet props = allProps[cssType].split(\"|\");\n\tfor(let p of props){\n\t\tlet key = p.split(\"-\").join(\"\");\n\t\tswitch(cssType){\n\t\t\tcase \"hybrid\":\n\t\t\tcase \"length\": {\n\t\t\t\tfor(let s of lengthSuffixes){\n\t\t\t\t\tcssProps[`${key}${s}`] = {\n\t\t\t\t\t\tdotName: key,\n\t\t\t\t\t\tcssName: p.toLowerCase(),\n\t\t\t\t\t\ttype: cssType,\n\t\t\t\t\t\tunit: s == \"P\" ? \"%\" : s.toLowerCase()\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"time\": {\n\t\t\t\tfor(let s of timeSuffixes){\n\t\t\t\t\tcssProps[`${key}${s}`] = {\n\t\t\t\t\t\tdotName: key,\n\t\t\t\t\t\tcssName: p.toLowerCase(),\n\t\t\t\t\t\ttype: cssType,\n\t\t\t\t\t\tunit: s.toLowerCase()\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"angle\": {\n\t\t\t\tfor(let s of angleSuffixes){\n\t\t\t\t\tcssProps[`${key}${s}`] = {\n\t\t\t\t\t\tdotName: key,\n\t\t\t\t\t\tcssName: p.toLowerCase(),\n\t\t\t\t\t\ttype: cssType,\n\t\t\t\t\t\tunit: s.toLowerCase()\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"frequency\": {\n\t\t\t\tfor(let s of frequencySuffixes){\n\t\t\t\t\tcssProps[`${key}${s}`] = {\n\t\t\t\t\t\tdotName: key,\n\t\t\t\t\t\tcssName: p.toLowerCase(),\n\t\t\t\t\t\ttype: cssType,\n\t\t\t\t\t\tunit: s.toLowerCase()\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tcssProps[key] = {\n\t\t\tdotName: key,\n\t\t\tcssName: p.toLowerCase(),\n\t\t\ttype: cssType,\n\t\t\tunit: undefined\n\t\t};\n\t}\n}\n\nexport default cssProps;","import Binding from \"../reactivity/binding\";\nimport Signal from \"../reactivity/signal\";\n\nexport default abstract class CssFunctionBuilderVStyle{\n\n\tfuncs: Array<{\n\t\tfunc: string,\n\t\targs: Array<{v: number|boolean|string|Binding, f: (v:number|boolean|string|Binding)=>string}>\n\t}> = [];\n\treadonly propName: string;\n\n\tconstructor(propName: string){\n\t\tthis.propName = propName;\n\t}\n\n\ttoString(): string {\n\t\tlet result = \"\";\n\n\t\t// Set the bindings.\n\t\tfor (let t of this.funcs) {\n\t\t\tlet argValues = Array.from(t.args).map(arg => {\n\t\t\t\tlet v = (arg as any).v !== undefined ? (arg as any).v : arg;\n\t\t\t\tlet f = (arg as any).f || ((val) => `${val}`);\n\n\t\t\t\tif (v instanceof Binding) {\n\t\t\t\t\treturn f(v._get());\n\t\t\t\t} else if (v instanceof Signal) {\n\t\t\t\t\treturn f(v.value);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn f(v).toString().split(\" \").join(\", \");\n\t\t\t\t}\n\t\t\t}).join(\", \");\n\n\n\t\t\tresult += `${t.func}(${argValues}) `;\n\t\t}\n\n\t\treturn result.trim();\n\t}\n\n\tappendFunction(filter: string, args){\n\t\tthis.funcs.push({func: filter, args: args});\n\t\treturn this;\n\t}\n\n}\n","import { floatRegex } from \"../helpers/tools\";\nimport Binding from \"../reactivity/binding\";\nimport Signal from \"../reactivity/signal\";\n\nexport function formatCssLength(value:string|number|Binding|Signal|Array<string|number|Binding|Signal>, defaultUnits = \"px\"){\n\tvalue = value || \"0px\";\n\tif(value instanceof Binding) value = value._get();\n\tif(value instanceof Signal) value = value.value;\n\tif(value instanceof Array){\n\t\treturn value.map(v=>formatCssLength(v, defaultUnits)).join(\" \");\n\t}\n\tif(!isNaN(value as number)) value = (value as number) + defaultUnits;\n\tlet tokens = (value as string).trim().split(\" \");\n\tif(tokens.length > 1){\n\t\treturn tokens.map(t=>formatCssLength(t, defaultUnits)).join(\" \");\n\t}\n\telse{\n\t\tlet length = Number((value as string).match(floatRegex)[0]);\n\t\tlet units = (value as string).split(floatRegex)[1] || defaultUnits;\n\n\t\treturn `${length}${units}`;\n\t}\n}\n\nexport function formatCssPercentage(value: string|number|Binding|Signal|Array<string|number|Binding|Signal>){\n\tvalue = value || \"0%\";\n\tif(value instanceof Binding) value = value._get();\n\tif(value instanceof Signal) value = value.value;\n\tif(value instanceof Array){\n\t\treturn value.map(v=>formatCssPercentage(v)).join(\" \");\n\t}\n\tlet tokens = (value as string).trim().split(\" \");\n\tif(tokens.length > 1){\n\t\treturn tokens.map(t=>formatCssPercentage(t)).join(\" \");\n\t}\n\telse{\n\t\treturn isNaN(value as any) ? value : `${value}%`;\n\t}\n}\n\nexport function formatCssColor(value: string|number){\n\n\t// Probably will not take arrays anymore. They don't actually solve any problems.\n\t// if(Array.isArray(value) && value.length == 1) value = value[0];\n\n\t// TODO: should add provisions for more complex types. Either a builder or JSON.\n\t// TODO: doesn't currently handle reactive or arrays. Arrays might not be used in CSS (doesn't make sense - you only set one color).\n\n\tif(typeof value == \"number\") {\n\n\t\tlet r = 0;\n\t\tlet g = 0;\n\t\tlet b = 0;\n\t\tlet a = 1;\n\n\t\tb = value & 0xFF;\n\t\tvalue >>= 8;\n\t\tg = value & 0xFF;\n\t\tvalue >>= 8;\n\t\tr = value & 0xFF;\n\n\t\treturn `rgb(${r} ${g} ${b})`;\n\t}\n\telse if(typeof value == \"string\") {\n\t\treturn value;\n\t}\n}\n\nexport function formatCssAngle(value: string|number|Binding|Signal|Array<string|number|Binding|Signal>){\n\tvalue = value || \"0deg\";\n\tif(value instanceof Binding) value = value._get();\n\tif(value instanceof Signal) value = value.value;\n\tif(value instanceof Array){\n\t\treturn value.map(v=>formatCssAngle(v)).join(\" \");\n\t}\n\tif(!isNaN(value as number)) value = `${value as number}deg`;\n\tlet tokens = (value as string).trim().split(\" \");\n\tif(tokens.length > 1){\n\t\treturn tokens.map(t=>formatCssAngle(t)).join(\" \");\n\t}\n\telse{\n\t\tlet angle = Number((value as string).match(floatRegex)[0]);\n\t\tlet units = (value as string).split(floatRegex)[1] || \"deg\";\n\n\t\treturn `${angle}${units}`;\n\t}\n}","import { formatCssColor, formatCssLength, formatCssPercentage } from \"../css/format-css-type\";\nimport CssFunctionBuilderVStyle from \"./css-function-builder-v-style\";\n\nexport default class FilterVStyle extends CssFunctionBuilderVStyle{\n\n\tblur(v){\n\t\treturn this.appendFunction(\"blur\", [{v, f: formatCssLength}]);\n\t}\n\tbrightness(v){\n\t\treturn this.appendFunction(\"brightness\", [{v, f: formatCssPercentage}]);\n\t}\n\tcontrast(v){\n\t\treturn this.appendFunction(\"contrast\", [{v, f: formatCssLength}]);\n\t}\n\tdropShadow(x, y, blur, color){\n\t\treturn this.appendFunction(\"drop-shadow\", [{v: x, f: formatCssLength}, {v: y, f: formatCssLength}, {v: blur, f: formatCssLength}, {v: color, f: formatCssColor}]);\n\t}\n\tgrayscale(v){\n\t\treturn this.appendFunction(\"grayscale\", [{v, f: formatCssLength}]);\n\t}\n\thueRotate(v){\n\t\treturn this.appendFunction(\"hue-rotate\", [{v, f: formatCssLength}]);\n\t}\n\tinvert(v){\n\t\treturn this.appendFunction(\"invert\", [{v, f: formatCssLength}]);\n\t}\n\topacity(v){\n\t\treturn this.appendFunction(\"opacity\", [{v, f: formatCssLength}]);\n\t}\n\tsepia(v){\n\t\treturn this.appendFunction(\"sepia\", [{v, f: formatCssLength}]);\n\t}\n\tsaturate(v){\n\t\treturn this.appendFunction(\"saturate\", [{v, f: formatCssLength}]);\n\t}\n}\n","import CssFunctionBuilderVStyle from \"./css-function-builder-v-style\";\nimport { formatCssAngle, formatCssLength } from \"../css/format-css-type\";\n\n\nexport default class TransformVStyle extends CssFunctionBuilderVStyle{\n\n\tmatrix3d(a1:number, b1:number, c1:number, d1:number, a2:number, b2:number, c2:number, d2:number, a3:number, b3:number, c3:number, d3:number, a4:number, b4:number, c4:number, d4:number){\n\t\treturn this.appendFunction(\"matrix3d\", arguments);\n\t}\n\t\n\tmatrix(a: number, b: number, c: number, d: number, tx: number, ty: number){\n\t\treturn this.appendFunction(\"matrix\", arguments);\n\t}\n\t\n\ttranslate(x,y?){\n\t\treturn arguments.length == 1 \n\t\t\t? this.appendFunction(\"translate\", [{f:formatCssLength, v:x}]) \n\t\t\t: this.appendFunction(\"translate\", [{f:formatCssLength, v:x}, {f:formatCssLength, v:y}]);\n\t}\n\t\n\ttranslate3d(x,y,z){\n\t\treturn this.appendFunction(\"translate3d\", [{f:formatCssLength, v:x}, {f:formatCssLength, v:y}, {f:formatCssLength, v:z}]);\n\t}\n\t\n\ttranslateX(x){\n\t\treturn this.appendFunction(\"translateX\", [{f:formatCssLength, v:x}]);\n\t}\n\t\n\ttranslateY(y){\n\t\treturn this.appendFunction(\"translateY\", [{f:formatCssLength, v:y}]);\n\t}\n\t\n\ttranslateZ(z){\n\t\treturn this.appendFunction(\"translateZ\", [{f:formatCssLength, v:z}]);\n\t}\n\t\n\tscale(x:number,y?:number){\n\t\treturn this.appendFunction(\"scale\", [x,y??1]);\n\t}\n\t\n\tscale3d(x:number,y:number,z:number){\n\t\treturn this.appendFunction(\"scale3d\", [x,y,z]);\n\t}\n\t\n\tscaleX(x:number){\n\t\treturn this.appendFunction(\"scaleX\", [x]);\n\t}\n\t\n\tscaleY(y:number){\n\t\treturn this.appendFunction(\"scaleY\", [y]);\n\t}\n\t\n\tscaleZ(z:number){\n\t\treturn this.appendFunction(\"scaleZ\", [z]);\n\t}\n\t\n\trotate(x){\n\t\treturn this.appendFunction(\"rotate\", [{f:formatCssAngle, v:x}]);\n\t}\n\t\n\trotate3d(x: number, y: number, z: number, a){\n\t\treturn this.appendFunction(\"rotate3d\", [x, y, z, {f:formatCssAngle, v:a}]);\n\t}\n\n\t// Manually create the 4 unit functions for rotate 3d since the arg structure is mixed.\n\trotate3dDeg(x: number, y: number, z: number, a: number){return this.rotate3d(x,y,z,a);}\n\trotate3dRad(x: number, y: number, z: number, a: number){return this.rotate3d(x,y,z,`${a}rad`);}\n\trotate3dGrad(x: number, y: number, z: number, a: number){return this.rotate3d(x,y,z,`${a}grad`);}\n\trotate3dTurn(x: number, y: number, z: number, a: number){return this.rotate3d(x,y,z,`${a}turn`);}\n\t\n\trotateX(x){\n\t\treturn this.appendFunction(\"rotateX\", [{f:formatCssAngle, v:x}]);\n\t}\n\t\n\trotateY(y){\n\t\treturn this.appendFunction(\"rotateY\", [{f:formatCssAngle, v:y}]);\n\t}\n\t\n\trotateZ(z){\n\t\treturn this.appendFunction(\"rotateZ\", [{f:formatCssAngle, v:z}]);\n\t}\n\t\n\tskew(x, y?){\n\t\treturn arguments.length == 1 \n\t\t\t? this.appendFunction(\"skew\", [{f:formatCssAngle, v:x}])\n\t\t\t: this.appendFunction(\"skew\", [{f:formatCssAngle, v:x}, {f:formatCssAngle, v:y}]);\n\t}\n\t\n\tskewX(x){\n\t\treturn this.appendFunction(\"skewX\", [{f:formatCssAngle, v:x}]);\n\t}\n\t\n\tskewY(y){\n\t\treturn this.appendFunction(\"skewY\", [{f:formatCssAngle, v:y}]);\n\t}\n\t\n\tperspective(d){\n\t\treturn this.appendFunction(\"perspective\", [{f:formatCssLength, v:d}]);\n\t}\n}\n","import Binding from \"../reactivity/binding\";\nimport Signal from \"../reactivity/signal\";\nimport cssProps from \"../css/css-props\";\n\nexport default class BaseVStyle {\n\t[key: string]: any;\n\n\t// Used internally to indicate that this is the base style builder.\n\t// Calling style functions on this object will create (and return) a new BaseVStyle, rather than extend this one.\n\tprivate readonly _isBase = false;\n\tprivate props: Array<{ prop: string, value: any }> = [];\n\tprivate onUpdate: () => void;\n\n\tsetProp(propName: string, value: any) {\n\t\tif (this._isBase) {\n\t\t\tlet newStyle = new BaseVStyle();\n\t\t\treturn newStyle.setProp(propName, value);\n\t\t}\n\t\telse {\n\t\t\tthis.props.push({ prop: propName, value: value });\n\t\t\tif (this.onUpdate) this.onUpdate();\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t_setOnUpdate(callback: () => void) {\n\t\tthis.onUpdate = callback;\n\t}\n\n\t/**\n\t * Sets a CSS variable (custom property).\n\t * @param name The name of the variable (e.g., \"my-color\" or \"--my-color\").\n\t * @param value The value of the variable.\n\t */\n\tvariable(name: string, value: any) {\n\t\tif (!name.startsWith(\"--\")) name = \"--\" + name;\n\t\treturn this.setProp(name, value);\n\t}\n\n\t/**\n\t * Returns a CSS variable reference string.\n\t * @param name The name of the variable (e.g., \"my-color\" or \"--my-color\").\n\t * @returns A string in the format \"var(--name)\".\n\t */\n\tv(name: string): string {\n\t\tif (!name.startsWith(\"--\")) name = \"--\" + name;\n\t\treturn `var(${name})`;\n\t}\n\n\tgetProps() {\n\t\treturn this.props;\n\t}\n}\n\n// Generate fluent methods from cssProps.\nfor (let key in cssProps) {\n\tBaseVStyle.prototype[key] = function (value: any) {\n\t\t// If it's a length property with a unit, we might want to handle it specially later.\n\t\t// For now, just pass it through.\n\t\treturn this.setProp(key, value);\n\t};\n}\n","import { IDotCss } from \"dothtml-interfaces\";\nimport cssProps from \"../css/css-props\";\nimport VMetaNode from \"./v-meta-node\";\nimport CssFunctionBuilderVStyle from \"../v-style-nodes/css-function-builder-v-style\";\nimport FilterVStyle from \"../v-style-nodes/filter-v-style\";\nimport TransformVStyle from \"../v-style-nodes/transform-v-style\";\nimport { formatCssLength } from \"../css/format-css-type\";\nimport Binding from \"../reactivity/binding\";\nimport BaseVStyle from \"../v-style-nodes/base-v-style\";\nimport { scheduler } from \"../reactivity/scheduler\";\nimport { Priority } from \"../reactivity/priority\";\n\nimport Signal from \"../reactivity/signal\";\n\nexport default class StyleVNode extends VMetaNode {\n\ttarget: HTMLElement | string;\n\tdocument: Document;\n\tshadowRoot: ShadowRoot;\n\tstyleSource: IDotCss | BaseVStyle;\n\tprivate styleElement: HTMLStyleElement;\n\n\tprivate observables: Array<Binding> = [];\n\tprivate observableIds: Array<number> = [];\n\tprivate isQueued = false;\n\tprivate updateSubscription = {\n\t\tactive: true,\n\t\tupdate: () => {\n\t\t\tthis.isQueued = false;\n\t\t\tthis.applyStyles();\n\t\t}\n\t};\n\n\tconstructor(styleSource: IDotCss | BaseVStyle) {\n\t\tsuper();\n\t\tthis.styleSource = styleSource;\n\n\t\tif (this.styleSource instanceof BaseVStyle) {\n\t\t\tthis.styleSource._setOnUpdate(() => this.update());\n\t\t}\n\n\t\tthis.extractObservables();\n\t}\n\n\tprivate extractObservables() {\n\t\tconst source = this.styleSource instanceof BaseVStyle ? this.styleSource.getProps() : this.styleSource;\n\n\t\tif (Array.isArray(source)) {\n\t\t\t// It's from BaseVStyle.getProps()\n\t\t\tfor (let i = 0; i < source.length; i++) {\n\t\t\t\tlet p = source[i];\n\t\t\t\tthis.processValue(p.prop, p.value, (newVal) => p.value = newVal);\n\t\t\t}\n\t\t} else {\n\t\t\t// It's a plain IDotCss object.\n\t\t\tfor (let prop in source) {\n\t\t\t\tthis.processValue(prop, source[prop], (newVal) => source[prop] = newVal);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate processValue(prop: string, value: any, setter: (v: any) => void) {\n\t\tif (!this.tryExtractObservable(value)) {\n\t\t\tif (typeof value === \"object\" && value !== null && !(value instanceof CssFunctionBuilderVStyle)) {\n\t\t\t\t// Handle nested builders like filter: { blur: 5 }\n\t\t\t\tlet builder: CssFunctionBuilderVStyle;\n\t\t\t\tswitch (prop) {\n\t\t\t\t\tcase \"filter\": {\n\t\t\t\t\t\tbuilder = new FilterVStyle(prop);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"transform\": {\n\t\t\t\t\t\tbuilder = new TransformVStyle(prop);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (builder) {\n\t\t\t\t\tlet funcArray = Array.isArray(value) ? value : [value];\n\t\t\t\t\tfor (let funcValue of funcArray) {\n\t\t\t\t\t\tfor (let k in funcValue) {\n\t\t\t\t\t\t\tlet v = funcValue[k];\n\t\t\t\t\t\t\tthis.tryExtractObservable(v);\n\t\t\t\t\t\t\tif (Array.isArray(v)) {\n\t\t\t\t\t\t\t\tfor (let w of v) {\n\t\t\t\t\t\t\t\t\tthis.tryExtractObservable(w);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlet methodKey = k.replace(/_\\d+$/, \"\");\n\t\t\t\t\t\t\tif (typeof builder[methodKey] === \"function\") {\n\t\t\t\t\t\t\t\tif (Array.isArray(v)) {\n\t\t\t\t\t\t\t\t\tbuilder[methodKey](...v);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tbuilder[methodKey](v);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsetter(builder);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate tryExtractObservable(value: any): boolean {\n\t\tif (value instanceof Binding || value instanceof Signal) {\n\t\t\tif (this.observables.indexOf(value as any) === -1) {\n\t\t\t\tthis.observables.push(value as any);\n\t\t\t\tif (this.target) {\n\t\t\t\t\t// If already rendered, subscribe immediately.\n\t\t\t\t\tlet id = (value as any).subscribe(() => this.update());\n\t\t\t\t\tthis.observableIds.push(id);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\trender(target: HTMLElement | string, document: Document = window.document, shadowRoot?: ShadowRoot) {\n\t\tthis.target = target;\n\t\tthis.document = document;\n\t\tthis.shadowRoot = shadowRoot;\n\n\t\tfor (let observable of this.observables) {\n\t\t\tlet id = (observable as any).subscribe(() => this.update());\n\t\t\tthis.observableIds.push(id);\n\t\t}\n\n\t\tif (typeof target === \"string\") {\n\t\t\tthis.styleElement = this.document.createElement(\"style\");\n\t\t\tif (this.shadowRoot) {\n\t\t\t\tthis.shadowRoot.appendChild(this.styleElement);\n\t\t\t} else {\n\t\t\t\tthis.document.head.appendChild(this.styleElement);\n\t\t\t}\n\t\t}\n\n\t\tthis.applyStyles();\n\t}\n\n\tupdate() {\n\t\tif (!this.isQueued) {\n\t\t\tthis.isQueued = true;\n\t\t\tscheduler.enqueue(this.updateSubscription as any, Priority.Normal);\n\t\t}\n\t}\n\n\tprivate applyStyles() {\n\t\tif (!this.target) return;\n\n\t\tif (typeof this.target === \"string\") {\n\t\t\tif (this.styleElement) {\n\t\t\t\tthis.styleElement.textContent = `${this.target} { ${this.getStyleString()} }`;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.extractObservables();\n\n\t\t\tconst source = this.styleSource instanceof BaseVStyle ? this.styleSource.getProps() : this.styleSource;\n\n\t\t\tif (Array.isArray(source)) {\n\t\t\t\tfor (const p of source) {\n\t\t\t\t\tconst value = p.value instanceof Binding ? p.value._get() : (p.value instanceof Signal ? p.value.value : p.value);\n\t\t\t\t\tthis.applySingleStyle(p.prop, value);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (let prop in source) {\n\t\t\t\t\tconst value = source[prop] instanceof Binding ? source[prop]._get() : (source[prop] instanceof Signal ? source[prop].value : source[prop]);\n\t\t\t\t\tthis.applySingleStyle(prop, value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate applySingleStyle(prop: string, value: any) {\n\t\tlet cssValue;\n\t\tif (value instanceof CssFunctionBuilderVStyle) {\n\t\t\tcssValue = value.toString();\n\t\t} else if (typeof value === \"object\" && value !== null && (prop === \"transform\" || prop === \"filter\")) {\n\t\t\tconst builder = prop === \"transform\" ? new TransformVStyle(prop) : new FilterVStyle(prop);\n\t\t\tthis.applyObjectToBuilder(builder, value);\n\t\t\tcssValue = builder.toString();\n\t\t} else {\n\t\t\tcssValue = value;\n\t\t}\n\n\t\tlet cssProp = prop;\n\t\tlet cssUnit = undefined;\n\n\t\tconst registeredProp = cssProps[prop];\n\t\tif (registeredProp) {\n\t\t\tcssProp = registeredProp.cssName;\n\t\t\tcssUnit = registeredProp.unit;\n\t\t\tif ((registeredProp.type === \"length\" || registeredProp.type === \"hybrid\") && typeof cssValue === \"number\") {\n\t\t\t\tif (registeredProp.type === \"hybrid\" && cssUnit === undefined) {\n\t\t\t\t\t// Leave as unitless number\n\t\t\t\t} else {\n\t\t\t\t\tcssValue = formatCssLength(cssValue, cssUnit);\n\t\t\t\t}\n\t\t\t} else if (registeredProp.unit && typeof cssValue === \"number\") {\n\t\t\t\tcssValue = `${cssValue}${registeredProp.unit}`;\n\t\t\t}\n\t\t}\n\n\t\tif (this.target instanceof HTMLElement) {\n\t\t\tthis.target.style.setProperty(cssProp, `${cssValue}`);\n\t\t}\n\t}\n\n\tprivate getStyleString(): string {\n\t\tlet styles = \"\";\n\t\tconst source = this.styleSource instanceof BaseVStyle ? this.styleSource.getProps() : this.styleSource;\n\n\t\tif (Array.isArray(source)) {\n\t\t\tfor (const p of source) {\n\t\t\t\tstyles += this.formatSingleStyle(p.prop, p.value);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (let prop in source) {\n\t\t\t\tstyles += this.formatSingleStyle(prop, source[prop]);\n\t\t\t}\n\t\t}\n\t\treturn styles;\n\t}\n\n\tprivate applyObjectToBuilder(builder: CssFunctionBuilderVStyle, value: any) {\n\t\tlet funcArray = Array.isArray(value) ? value : [value];\n\t\tfor (let funcValue of funcArray) {\n\t\t\tfor (let k in funcValue) {\n\t\t\t\tlet v = funcValue[k];\n\t\t\t\tlet methodKey = k.replace(/_\\d+$/, \"\");\n\t\t\t\tif (typeof builder[methodKey] === \"function\") {\n\t\t\t\t\tif (Array.isArray(v)) {\n\t\t\t\t\t\tbuilder[methodKey](...v);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuilder[methodKey](v);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate formatSingleStyle(prop: string, value: any): string {\n\t\tlet cssValue = value instanceof Binding ? value._get() : (value instanceof Signal ? value.value : value);\n\t\tif (cssValue instanceof CssFunctionBuilderVStyle) {\n\t\t\tcssValue = cssValue.toString();\n\t\t} else if (typeof cssValue === \"object\" && cssValue !== null && (prop === \"transform\" || prop === \"filter\")) {\n\t\t\tconst builder = prop === \"transform\" ? new TransformVStyle(prop) : new FilterVStyle(prop);\n\t\t\tthis.applyObjectToBuilder(builder, cssValue);\n\t\t\tcssValue = builder.toString();\n\t\t}\n\n\t\tlet cssProp = prop;\n\t\tlet cssUnit = undefined;\n\n\t\tconst registeredProp = cssProps[prop];\n\t\tif (registeredProp) {\n\t\t\tcssProp = registeredProp.cssName;\n\t\t\tcssUnit = registeredProp.unit;\n\t\t\tif ((registeredProp.type === \"length\" || registeredProp.type === \"hybrid\") && typeof cssValue === \"number\") {\n\t\t\t\tif (registeredProp.type === \"hybrid\" && cssUnit === undefined) {\n\t\t\t\t\t// Leave as unitless number\n\t\t\t\t} else {\n\t\t\t\t\tcssValue = formatCssLength(cssValue, cssUnit);\n\t\t\t\t}\n\t\t\t} else if (registeredProp.unit && typeof cssValue === \"number\") {\n\t\t\t\tcssValue = `${cssValue}${registeredProp.unit}`;\n\t\t\t}\n\t\t}\n\t\treturn `${cssProp}: ${cssValue}; `;\n\t}\n\n\tunrender() {\n\t\tfor (let i = 0; i < this.observableIds.length; i++) {\n\t\t\tlet id = this.observableIds[i];\n\t\t\tlet observable = this.observables[i];\n\t\t\tif (observable instanceof Binding) {\n\t\t\t\t(observable as any)._unsubscribe(id);\n\t\t\t} else {\n\t\t\t\t(observable as any).unsubscribe(id);\n\t\t\t}\n\t\t}\n\t\tthis.observableIds = [];\n\t\tthis.observables = [];\n\t\t\n\t\tif (this.styleElement) {\n\t\t\tthis.styleElement.remove();\n\t\t\tthis.styleElement = null;\n\t\t}\n\n\t\tthis.target = null;\n\t\tthis.updateSubscription.active = false;\n\t}\n\n\ttoString() {\n\t\tif (typeof this.target === \"string\") {\n\t\t\treturn `${this.target} { ${this.getStyleString()} }`;\n\t\t} else {\n\t\t\treturn this.getStyleString();\n\t\t}\n\t}\n}\n","\nexport default class SyntheticEvent {\n\tpublic nativeEvent: Event;\n\tpublic target: EventTarget;\n\tpublic currentTarget: EventTarget;\n\tpublic type: string;\n\tpublic timeStamp: number;\n\tpublic defaultPrevented: boolean;\n\tpublic detail: any;\n\tprivate _propagationStopped = false;\n\tprivate _immediatePropagationStopped = false;\n\n\tconstructor(e: Event) {\n\t\tthis.nativeEvent = e;\n\t\tthis.target = e.target;\n\t\tthis.currentTarget = e.currentTarget;\n\t\tthis.type = e.type;\n\t\tthis.timeStamp = e.timeStamp;\n\t\tthis.defaultPrevented = e.defaultPrevented;\n\t\tthis.detail = (e as any).detail;\n\t}\n\n\tpreventDefault() {\n\t\tthis.defaultPrevented = true;\n\t\tthis.nativeEvent.preventDefault();\n\t}\n\n\tstopPropagation() {\n\t\tthis._propagationStopped = true;\n\t\tthis.nativeEvent.stopPropagation();\n\t}\n\n\tstopImmediatePropagation() {\n\t\tthis._immediatePropagationStopped = true;\n\t\tthis._propagationStopped = true;\n\t\tthis.nativeEvent.stopImmediatePropagation();\n\t}\n\n\tisPropagationStopped() {\n\t\treturn this._propagationStopped;\n\t}\n\n\tisImmediatePropagationStopped() {\n\t\treturn this._immediatePropagationStopped;\n\t}\n}\n","\nimport SyntheticEvent from \"./synthetic-event\";\n\nexport type EventHandler = (e: SyntheticEvent) => void;\n\ninterface RegisteredListener {\n\thandler: EventHandler;\n\tmodifiers: string[];\n}\n\nexport class EventManager {\n\tprivate static managers = new Map<Document, EventManager>();\n\n\tpublic static getForDocument(document: Document): EventManager {\n\t\tlet manager = this.managers.get(document);\n\t\tif (!manager) {\n\t\t\tmanager = new EventManager(document);\n\t\t\tthis.managers.set(document, manager);\n\t\t}\n\t\treturn manager;\n\t}\n\n\tprivate document: Document;\n\tprivate listeners = new WeakMap<Element, Map<string, RegisteredListener[]>>();\n\tprivate activeEventTypes = new Set<string>();\n\n\tconstructor(document: Document) {\n\t\tthis.document = document;\n\t}\n\n\tpublic addListener(element: Element, eventType: string, handler: EventHandler, modifiers: string[] = []) {\n\t\tlet elementListeners = this.listeners.get(element);\n\t\tif (!elementListeners) {\n\t\t\telementListeners = new Map();\n\t\t\tthis.listeners.set(element, elementListeners);\n\t\t}\n\n\t\tlet handlers = elementListeners.get(eventType);\n\t\tif (!handlers) {\n\t\t\thandlers = [];\n\t\t\telementListeners.set(eventType, handlers);\n\t\t}\n\n\t\thandlers.push({ handler, modifiers });\n\n\t\tthis.ensureGlobalListener(eventType);\n\t}\n\n\tpublic removeListener(element: Element, eventType: string, handler: EventHandler) {\n\t\tconst elementListeners = this.listeners.get(element);\n\t\tif (!elementListeners) return;\n\n\t\tconst handlers = elementListeners.get(eventType);\n\t\tif (!handlers) return;\n\n\t\tconst index = handlers.findIndex(h => h.handler === handler);\n\t\tif (index !== -1) {\n\t\t\thandlers.splice(index, 1);\n\t\t}\n\n\t\tif (handlers.length === 0) {\n\t\t\telementListeners.delete(eventType);\n\t\t}\n\t}\n\n\tprivate ensureGlobalListener(eventType: string) {\n\t\tif (this.activeEventTypes.has(eventType)) return;\n\n\t\tconst useCapture = eventType === \"focus\" || eventType === \"blur\";\n\t\tthis.document.addEventListener(eventType, (nativeEvent: Event) => {\n\t\t\tthis.dispatchEvent(eventType, nativeEvent);\n\t\t}, useCapture);\n\n\t\tthis.activeEventTypes.add(eventType);\n\t}\n\n\tprivate dispatchEvent(eventType: string, nativeEvent: Event) {\n\t\tlet path = nativeEvent.composedPath() as Element[];\n\t\tif (!path || path.length === 0) {\n\t\t\t// Fallback for environments where composedPath is not available or empty\n\t\t\tpath = [];\n\t\t\tlet current = nativeEvent.target as any;\n\t\t\twhile (current) {\n\t\t\t\tpath.push(current);\n\t\t\t\tcurrent = current.parentNode || current.host;\n\t\t\t}\n\t\t}\n\t\tconst syntheticEvent = new SyntheticEvent(nativeEvent);\n\n\t\tfor (const element of path) {\n\t\t\tif (element === this.document as any || element === window as any) continue;\n\t\t\t\n\t\t\tconst elementListeners = this.listeners.get(element);\n\t\t\tif (!elementListeners) continue;\n\n\t\t\tconst handlers = elementListeners.get(eventType);\n\t\t\tif (!handlers) continue;\n\n\t\t\t// Set currentTarget to the element that has the listener\n\t\t\t(syntheticEvent as any).currentTarget = element;\n\n\t\t\tfor (const { handler, modifiers } of [...handlers]) {\n\t\t\t\tif (modifiers.includes(\"self\") && nativeEvent.target !== element) continue;\n\n\t\t\t\tif (modifiers.includes(\"stop\")) syntheticEvent.stopPropagation();\n\t\t\t\tif (modifiers.includes(\"prevent\")) syntheticEvent.preventDefault();\n\n\t\t\t\thandler(syntheticEvent);\n\n\t\t\t\tif (modifiers.includes(\"once\")) {\n\t\t\t\t\tthis.removeListener(element, eventType, handler);\n\t\t\t\t}\n\n\t\t\t\tif (syntheticEvent.isImmediatePropagationStopped()) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (syntheticEvent.isPropagationStopped()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n","import { IDotCore, IDotCss } from \"dothtml-interfaces\";\nimport { DOT_VDOM_PROP_NAME } from \"../constants\";\nimport Signal from \"../reactivity/signal\";\nimport AttributeVNode from \"../v-meta-nodes/attribute-v-node\";\nimport StyleVNode from \"../v-meta-nodes/style-v-node\";\nimport { ContainerVdom } from \"./container-vdom\";\nimport { Vdom } from \"./vdom\";\nimport { AttributeValueType } from \"./vdom-types\";\nimport Binding from \"../reactivity/binding\";\nimport ReactiveAttr from \"../reactivity/reactive-attr\";\nimport BaseVStyle from \"../v-style-nodes/base-v-style\";\nimport { IRef } from \"dothtml-interfaces/src/bindings/i-ref\";\nimport Ref from \"../reactivity/ref\";\nimport SyntheticEvent from \"../events/synthetic-event\";\nimport { EventManager } from \"../events/event-manager\";\n\nexport class AttributeItem{\n\telementVDom: ElementVdom;\n\tattribute: string;\n}\n\nexport default class ElementVdom extends Vdom{\n\n\tprivate _children: ContainerVdom = null;\n\tget children(): ContainerVdom {\n\t\tif(!this._children){\n\t\t\tthis._children = new ContainerVdom(this._dot);\n\t\t\tthis._children._parent = this;\n\t\t}\n\t\treturn this._children;\n\t}\n\tset children(value: ContainerVdom) {\n\t\tthis._children = value;\n\t}\n\telement: HTMLElement;\n\ttag: string = null;\n\tprivate attributes: Record<string, AttributeValueType> = {};\n\tprivate events: Array<{name: string, callback: (e: any)=>void, modifiers: string[]}> = [];\n\tprivate attributeObserverIds: Array<{id: number, observable: Binding, attr: string}> = [];\n\tprivate childBuilders: Array<{_render: (el: HTMLElement)=>void, _unrender: ()=>void}> = [];\n\tprivate attrVNodes: Array<AttributeVNode> = [];\n\tprivate styleVNodes: Array<StyleVNode> = [];\n\tprivate ref: Ref | ((el: HTMLElement | null) => void);\n\tinputListener: (e: any) => void;\n\tcompositionStartListener: () => void;\n\tcompositionEndListener: (e: any) => void;\n\tprivate manualInputAllowed: boolean = true;\n\tprivate isComposing: boolean = false;\n\tprivate activeBindings: Record<string, Binding> = {};\n\tprivate lastSyncedValues: Record<string, any> = {};\n\n\tconstructor(dot: IDotCore, tag: string){\n\t\tsuper(dot);\n\t\tthis.tag = tag;\n\t}\n\n\t_render(node: HTMLElement){\n\t\tthis._isRendered = true;\n\n\t\tthis.element = node.ownerDocument.createElement(this.tag);\n\t\tthis.element[DOT_VDOM_PROP_NAME] = this;\n\t\tif(this.ref){\n\t\t\tif (typeof this.ref === \"function\") {\n\t\t\t\tthis.ref(this.element);\n\t\t\t} else {\n\t\t\t\tthis.ref.value = this.element;\n\t\t\t}\n\t\t}\n\n\t\tnode.appendChild(this.element);\n\n\t\tif(this._children){\n\t\t\tthis._children._render(this.element);\n\t\t}\n\n\t\t// Render events first so they are available for attribute checks.\n\t\tfor(let i = 0; i < this.events.length; i++){\n\t\t\tlet e = this.events[i];\n\t\t\tthis.renderEvent(e.name, e.callback, e.modifiers);\n\t\t}\n\n\t\t// Render 'type' first if it exists, as it affects how 'bind', 'value', and 'checked' are handled.\n\t\tif (this.attributes[\"type\"] !== undefined) {\n\t\t\tthis.renderAttr(\"type\", this.attributes[\"type\"], this.element);\n\t\t}\n\n\t\tfor(let a in this.attributes){\n\t\t\tif (a === \"type\") continue;\n\t\t\tthis.renderAttr(a, this.attributes[a], this.element);\n\t\t}\n\n\t\tif (this._onEnterHook) {\n\t\t\tthis._onEnterHook(this.element);\n\t\t}\n\t}\n\n\t_unrender() {\n\t\tif(!this._isRendered) return;\n\t\tthis._isRendered = false;\n\t\tif(this._children) this._children._unrender();\n\n\t\tif(!this.element) return;\n\n\t\tconst eventManager = EventManager.getForDocument(this.element.ownerDocument);\n\t\tif(this.inputListener){\n\t\t\teventManager.removeListener(this.element, \"input\", this.inputListener);\n\t\t\tthis.inputListener = null;\n\t\t}\n\n\t\tif(this.compositionStartListener){\n\t\t\teventManager.removeListener(this.element, \"compositionstart\", this.compositionStartListener);\n\t\t\tthis.compositionStartListener = null;\n\t\t}\n\n\t\tif(this.compositionEndListener){\n\t\t\teventManager.removeListener(this.element, \"compositionend\", this.compositionEndListener);\n\t\t\tthis.compositionEndListener = null;\n\t\t}\n\n\t\tfor(let i = 0; i < this.events.length; i++){\n\t\t\tlet e = this.events[i];\n\t\t\teventManager.removeListener(this.element, e.name.toLowerCase(), e.callback);\n\t\t}\n\n\t\tthis.element.parentNode?.removeChild(this.element);\n\n\t\tfor(let i = 0; i < this.childBuilders.length; i++){\n\t\t\tthis.childBuilders[i]._unrender();\n\t\t}\n\t\tthis.childBuilders.length = 0;\n\n\t\tfor(let i = 0; i < this.attrVNodes.length; i++){\n\t\t\tthis.attrVNodes[i].unrender();\n\t\t}\n\t\tthis.attrVNodes.length = 0;\n\n\t\tfor(let i = 0; i < this.styleVNodes.length; i++){\n\t\t\tthis.styleVNodes[i].unrender();\n\t\t}\n\t\tthis.styleVNodes.length = 0;\n\n\t\tfor(let i = 0; i < this.attributeObserverIds.length; i++){\n\t\t\tlet item = this.attributeObserverIds[i];\n\t\t\titem.observable._unsubscribe(item.id);\n\t\t}\n\t\tthis.attributeObserverIds.length = 0;\n\n\t\tif(this.ref){\n\t\t\tif (typeof this.ref === \"function\") {\n\t\t\t\tthis.ref(null);\n\t\t\t} else {\n\t\t\t\tthis.ref.value = null;\n\t\t\t}\n\t\t}\n\t\tthis.element = null;\n\t}\n\n\t_getNodes(): Node[] {\n\t\treturn this.element ? [this.element] : [];\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this;\n\t}\n\n\ttoString(): string {\n\t\tif(this.element){\n\t\t\treturn this.element.outerHTML;\n\t\t}\n\t\telse{\n\t\t\treturn super.toString();\n\t\t}\n\t}\n\n\tsetAttr(attr, value){\n\n\t\tattr = (attr ?? \"\").toLowerCase();\n\t\tlet targetAttr = attr;\n\t\tif(attr == \"bind\"){\n\t\t\tlet typeAttr = this.attributes[\"type\"];\n\t\t\tif (typeAttr instanceof Binding) typeAttr = typeAttr._get();\n\t\t\telse if (typeAttr instanceof Signal) typeAttr = typeAttr.value;\n\n\t\t\tconst type = (typeof typeAttr === \"string\") ? typeAttr.toLowerCase() : null;\n\t\t\ttargetAttr = (this.tag.toLowerCase() == \"input\" && (type == \"checkbox\" || type == \"radio\")) ? \"checked\" : \"value\";\n\t\t}\n\n\t\tconst oldVal = this.attributes[attr];\n\t\tif (oldVal instanceof StyleVNode) {\n\t\t\toldVal.unrender();\n\t\t\tconst idx = this.styleVNodes.indexOf(oldVal);\n\t\t\tif (idx !== -1) this.styleVNodes.splice(idx, 1);\n\t\t}\n\t\tif (oldVal instanceof AttributeVNode) {\n\t\t\toldVal.unrender();\n\t\t\tconst idx = this.attrVNodes.indexOf(oldVal);\n\t\t\tif (idx !== -1) this.attrVNodes.splice(idx, 1);\n\t\t}\n\n\t\t// Clean up old binding if it exists.\n\t\tfor (let i = 0; i < this.attributeObserverIds.length; i++) {\n\t\t\tlet item = this.attributeObserverIds[i];\n\t\t\tif (item.attr === attr || item.attr === targetAttr) {\n\t\t\t\titem.observable._unsubscribe(item.id);\n\t\t\t\tthis.attributeObserverIds.splice(i, 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(value && typeof value === \"object\" && !(value instanceof Array || value instanceof Binding || value instanceof Signal || value instanceof BaseVStyle)){\n\t\t\t// Supports attributes that are space-separated, such as class and aria-*.\n\t\t\t// Also supports styles.\n\t\t\tswitch(attr){\n\t\t\t\tcase \"style\": {\n\t\t\t\t\tvalue = new StyleVNode(value as IDotCss);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"ref\": {\n\t\t\t\t\t// Just a ref nothing to do.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\t// Other attributes.\n\t\t\t\t\tvalue = new AttributeVNode(attr, value);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (typeof value === \"function\" && attr === \"style\") {\n\t\t\tconst builder = new BaseVStyle();\n\t\t\tvalue(builder);\n\t\t\tvalue = new StyleVNode(builder);\n\t\t}\n\n\t\tif (value instanceof BaseVStyle && attr === \"style\") {\n\t\t\tvalue = new StyleVNode(value);\n\t\t}\n\n\t\tthis.attributes[attr] = value;\n\t\tif(this.element){\n\t\t\tthis.renderAttr(attr, value, this.element);\n\t\t}\n\t}\n\n\tupdateReactiveAttr(attr: string, value: AttributeValueType){\n\t\tif(!this.element) return;\n\t\tthis.renderAttr((attr ?? \"\").toLowerCase(), value, this.element);\n\t}\n\n\tprivate renderAttr(attr: string, value: AttributeValueType, node: HTMLElement, isExplicitBind: boolean = false){\n\n\t\tif(attr == \"bind\"){\n\t\t\tlet typeAttr = this.attributes[\"type\"];\n\t\t\tif (typeAttr instanceof Binding) typeAttr = typeAttr._get();\n\t\t\telse if (typeAttr instanceof Signal) typeAttr = typeAttr.value;\n\n\t\t\tconst type = (typeof typeAttr === \"string\") ? typeAttr.toLowerCase() : null;\n\t\t\tattr = (this.tag.toLowerCase() == \"input\" && (type == \"checkbox\" || type == \"radio\")) ? \"checked\" : \"value\";\n\t\t\tisExplicitBind = true;\n\t\t}\n\n\t\tif(attr == \"ref\"){\n\t\t\tthis.ref = value as any;\n\t\t\tif(this.element) {\n\t\t\t\tif (typeof this.ref === \"function\") {\n\t\t\t\t\tthis.ref(this.element);\n\t\t\t\t} else {\n\t\t\t\t\tthis.ref.value = this.element;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if(typeof value === \"string\" || typeof value === \"number\"){\n\t\t\tif(attr == \"value\" && (this.tag.toLowerCase() == \"input\" || this.tag.toLowerCase() == \"textarea\" || this.tag.toLowerCase() == \"select\")){\n\t\t\t\t(node as any).value = value ?? \"\";\n\t\t\t\tthis.lastSyncedValues[attr] = value ?? \"\";\n\t\t\t}\n\t\t\telse{\n\t\t\t\tnode.setAttribute(attr, `${value}`);\n\t\t\t}\n\t\t}\n\t\telse if (typeof value === \"boolean\" || value == null || value == undefined){\n\t\t\tif(attr == \"checked\" && this.tag.toLowerCase() == \"input\"){\n\t\t\t\t(node as HTMLInputElement).checked = !!value;\n\t\t\t\tthis.lastSyncedValues[attr] = !!value;\n\t\t\t}\n\t\t\telse if(attr == \"selected\" && this.tag.toLowerCase() == \"option\"){\n\t\t\t\t(node as HTMLOptionElement).selected = !!value;\n\t\t\t}\n\t\t\telse if(attr == \"value\" && (this.tag.toLowerCase() == \"input\" || this.tag.toLowerCase() == \"textarea\" || this.tag.toLowerCase() == \"select\")){\n\t\t\t\t(node as any).value = value ?? \"\";\n\t\t\t\tthis.lastSyncedValues[attr] = value ?? \"\";\n\t\t\t}\n\t\t\t\n\t\t\tif(value) node.setAttribute(attr, `${value}`);\n\t\t\telse node.removeAttribute(attr);\n\t\t}\n\t\telse if(value instanceof Array){\n\t\t\t// Like a space-separated class list.\n\t\t\tnode.setAttribute(attr, value.join(\" \"));\n\t\t}\n\t\telse if (value instanceof Binding){\n\t\t\tthis.renderAttr(attr, value._get(), node, isExplicitBind);\n\t\t\t\n\t\t\t// Only subscribe if we haven't already for this attribute.\n\t\t\tif (!this.attributeObserverIds.some(item => item.attr === attr && item.observable === value)) {\n\t\t\t\tlet id = value._subscribe(new ReactiveAttr(this, attr));\n\t\t\t\tthis.attributeObserverIds.push({id: id, observable: value, attr: attr});\n\t\t\t}\n\n\t\t\t// If it's a value prop, update the observable on change.\n\t\t\tif((attr == \"value\" || attr == \"checked\") && value.isWritable && isExplicitBind){\n\t\t\t\tthis.activeBindings[attr] = value;\n\t\t\t\tif(!this.inputListener){\n\t\t\t\t\tthis.inputListener = (e)=>{\n\t\t\t\t\t\tif (this.isComposing) return;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst targetAttr = ((e.target as any).type === \"checkbox\" || (e.target as any).type === \"radio\") ? \"checked\" : \"value\";\n\t\t\t\t\t\t\tconst binding = this.activeBindings[targetAttr];\n\t\t\t\t\t\t\tif(!binding) return;\n\n\t\t\t\t\t\t\tconst val = (this.element as HTMLInputElement)[targetAttr];\n\t\t\t\t\t\t\tconst currentSigVal = binding._get();\n\t\t\t\t\t\t\tconst lastVal = this.lastSyncedValues[targetAttr];\n\n\t\t\t\t\t\t\t// Only update the signal if the DOM changed AND the signal hasn't already been updated to this value.\n\t\t\t\t\t\t\t// We use loose equality here to handle null/undefined/empty string transitions gracefully.\n\t\t\t\t\t\t\tif (currentSigVal == lastVal && val != lastVal) {\n\t\t\t\t\t\t\t\tbinding._set(val);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Always update the last synced value to match the current state.\n\t\t\t\t\t\t\tthis.lastSyncedValues[targetAttr] = binding._get();\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.error(\"CAUGHT ERROR: \" + e.message);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.compositionStartListener = () => {\n\t\t\t\t\t\tthis.isComposing = true;\n\t\t\t\t\t};\n\n\t\t\t\t\tthis.compositionEndListener = (e) => {\n\t\t\t\t\t\tthis.isComposing = false;\n\t\t\t\t\t\t// Manually trigger an update after composition ends.\n\t\t\t\t\t\tthis.inputListener(e);\n\t\t\t\t\t};\n\n\t\t\t\t\tconst eventManager = EventManager.getForDocument(this.element.ownerDocument);\n\t\t\t\t\teventManager.addListener(this.element, \"input\", this.inputListener);\n\t\t\t\t\teventManager.addListener(this.element, \"compositionstart\", this.compositionStartListener);\n\t\t\t\t\teventManager.addListener(this.element, \"compositionend\", this.compositionEndListener);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if(value instanceof AttributeVNode){\n\t\t\tvalue.render(node);\n\t\t\tthis.attrVNodes.push(value);\n\t\t}\n\t\telse if(value instanceof StyleVNode){\n\t\t\tvalue.render(node);\n\t\t\tthis.styleVNodes.push(value);\n\t\t}\n\t}\n\n\taddEventListener(event: string, callback: (e: any)=>void, modifiers: string[] = []){\n\t\t// Check if listener already exists to avoid duplicates.\n\t\tif (this.events.some(e => e.name === event && e.callback === callback)) return;\n\t\t\n\t\tthis.events.push({name: event, callback: callback, modifiers: modifiers});\n\t\tif(this.element) this.renderEvent(event, callback, modifiers);\n\t}\n\n\tprivate renderEvent(e: string, callback: (e: any)=>void, modifiers: string[] = []){\n\t\tEventManager.getForDocument(this.element.ownerDocument).addListener(this.element, e.toLowerCase(), callback, modifiers);\n\t}\n}\n","import { IDotComponent, IDotCore, IDotCss } from \"dothtml-interfaces\";\nimport Signal from \"../reactivity/signal\";\nimport CollectionVdom from \"./collection-vdom\";\nimport { ConditionalVdom } from \"./conditional-vdom\";\nimport ElementVdom from \"./element-vdom\";\nimport { HtmlVdom } from \"./html-vdom\";\nimport { TextVdom } from \"./text-vdom\";\nimport { ReactiveVdom } from \"./reactive-vdom\";\nimport { Vdom } from \"./vdom\";\nimport { AttributeValueType, ObservableCollection } from \"./vdom-types\";\nimport { ComponentVdom } from \"./component-vdom\";\nimport Binding from \"../reactivity/binding\";\nimport BaseVStyle from \"../v-style-nodes/base-v-style\";\n\ntype ParentVdom = ContainerVdom|ConditionalVdom|ElementVdom;\n\n/**\n * This is the actual document builder.\n */\nexport class ContainerVdom extends Vdom{\n\t_children: Array<Vdom> = [];\n\t_parent: ParentVdom = null;\n\n\tconstructor(dot: IDotCore){\n\t\tsuper(dot);\n\t}\n\n\t_addChild(content: Vdom){\n\t\tthis._children.push(content);\n\t\tif(this._parent && this._parent instanceof ElementVdom && this._parent.element) content._render(this._parent.element);\n\t\treturn this;\n\t}\n\n\t_render(node: HTMLElement){\t\n\t\tthis._isRendered = true;\n\t\tfor(let c = 0; c < this._children.length; c++){\n\t\t\tthis._children[c]._render(node);\n\t\t}\n\t}\n\n\t_unrender() {\n\t\tif(!this._isRendered) return;\n\t\tthis._isRendered = false;\n\t\tfor(let c = 0; c < this._children.length; c++){\n\t\t\tthis._children[c]._unrender();\n\t\t}\n\t}\n\n\t_getNodes(): Node[] {\n\t\tlet nodes = [];\n\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\tnodes.push(...this._children[i]._getNodes());\n\t\t}\n\t\treturn nodes;\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this._children[this._children.length - 1] || null;\n\t}\n}\n","import { IRef } from \"dothtml-interfaces/src/bindings/i-ref\";\nimport Signal from \"./signal\";\n\n/**\n * A reactive reference to a DOM element or component instance.\n * Supports method proxying, allowing direct calls like `myRef.focus()`.\n */\nexport default class Ref<T = any> extends Signal<T | null> implements IRef<any>{\n\tconstructor() {\n\t\tsuper();\n\t\tthis._value = null;\n\n\t\treturn new Proxy(this, {\n\t\t\tget(target, prop, receiver) {\n\t\t\t\tif (prop in target) {\n\t\t\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t\t\t}\n\t\t\t\tconst val = target.value;\n\t\t\t\tif (val && typeof (val as any)[prop] === \"function\") {\n\t\t\t\t\treturn (...args: any[]) => (val as any)[prop].apply(val, args);\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t}) as any;\n\t}\n\n\t/**\n\t * Returns the underlying element or component instance.\n\t */\n\tget element(): T {\n\t\treturn this.value as T;\n\t}\n\n\t/**\n\t * Returns a promise that resolves when the reference is populated.\n\t */\n\tasync ready(): Promise<T> {\n\t\tif (this.value) return this.value as T;\n\t\treturn new Promise((resolve) => {\n\t\t\tconst id = this.subscribe((val: T | null) => {\n\t\t\t\tif (val) {\n\t\t\t\t\tthis.unsubscribe(id);\n\t\t\t\t\tresolve(val);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n","export const allEventAttr: Record<string, number> = {\n\tonAbort: 1, onBlur: 1, onChange: 1, onInput: 1, onCanPlay: 1, onCantPlayThrough: 1, onClick: 1, onCopy: 1, onContextMenu: 1, onCueChange: 1, onCut: 1, onDblClick: 1, onDrag: 1, onDragEnd: 1, onDragEnter: 1, onDragLeave: 1, onDragOver: 1, onDragStart: 1, onDrop: 1, onDurationChange: 1, onEmptied: 1, onEnded: 1, onError: 1, onFocus: 1, onHashChange: 1, onInvalid: 1, onKeyDown: 1, onKeyPress: 1, onKeyUp: 1, onLoad: 1, onLoadedData: 1, onLoadedMetadata: 1, onLoadStart: 1, onMouseDown: 1, onMouseEnter: 1, onMouseLeave: 1, onMouseMove: 1, onMouseOut: 1, onMouseOver: 1, onMouseUp: 1, onPointerCancel: 1, onPointerDown: 1, onPointerEnter: 1, onPointerLeave: 1, onPointerMove: 1, onPointerOut: 1, onPointerOver: 1, onPointerUp: 1, onTouchStart: 1, onTouchEnd: 1, onTouchCancel: 1, onTouchMove: 1, onMouseWheel: 1, onOffline: 1, onOnline: 1, onPageHide: 1, onPagePaste: 1, onPageShow: 1, onPause: 1, onPlay: 1, onPlaying: 1, onPopState: 1, onProgress: 1, onRateChange: 1, onReset: 1, onResize: 1, onScroll: 1, onSearch: 1, onSeeked: 1, onSeeking: 1, onSelect: 1, onStalled: 1, onStorage: 1, onSubmit: 1, onSuspend: 1, onTimeUpdate: 1, onToggle: 1, onUnload: 1, onVolumeChange: 1, onWaiting: 1, onWheel: 1,\n};\n","import { IDotCore } from \"dothtml-interfaces\";\nimport { ContainerVdom } from \"./vdom-nodes/container-vdom\";\nimport { Vdom } from \"./vdom-nodes/vdom\";\nimport Signal from \"./reactivity/signal\";\nimport Binding from \"./reactivity/binding\";\nimport ElementVdom from \"./vdom-nodes/element-vdom\";\nimport { ReactiveVdom } from \"./vdom-nodes/reactive-vdom\";\nimport { TextVdom } from \"./vdom-nodes/text-vdom\";\nimport Ref from \"./reactivity/ref\";\nimport { allEventAttr } from \"./dot-event-attrs\";\n\nexport const isContent = (arg: any) => {\n\treturn arg instanceof ContainerVdom || \n\t\targ instanceof Vdom || \n\t\targ?._root || // DotChain\n\t\targ?._children || // FragmentVdom or ContainerVdom\n\t\t(typeof arg == \"object\" && arg?.build) || \n\t\targ instanceof Signal || \n\t\targ instanceof Binding || \n\t\ttypeof arg === \"string\" || \n\t\ttypeof arg === \"number\" || \n\t\ttypeof arg === \"boolean\" || \n\t\tArray.isArray(arg);\n};\n\nexport const applyContent = (dot: IDotCore, n: ElementVdom | ContainerVdom, cont: any) => {\n\tconst target = n instanceof ElementVdom ? n.children : n;\n\tif(Array.isArray(cont)){\n\t\tfor(let i = 0; i < cont.length; i++) applyContent(dot, n, cont[i]);\n\t}\n\telse if(Array.isArray(cont?._children)){\n\t\tconst children = cont._children;\n\t\tif (children && children.length > 0) {\n\t\t\tfor(let i = 0; i < children.length; i++) target._addChild(children[i]);\n\t\t}\n\t}\n\telse if(cont?._root){\n\t\tapplyContent(dot, n, cont._root);\n\t}\n\telse if(cont instanceof Vdom){\n\t\ttarget._addChild(cont);\n\t}\n\telse if(typeof cont == \"object\" && cont?.build){\n\t\ttarget.mount(cont);\n\t}\n\telse{\n\t\tif(cont !== null && cont !== undefined){\n\t\t\tlet val = cont;\n\t\t\tif(val instanceof Signal){\n\t\t\t\tval = val.bind();\n\t\t\t}\n\t\t\tif(val instanceof Binding){\n\t\t\t\ttarget._addChild(new ReactiveVdom(dot, val));\n\t\t\t}\n\t\t\telse{\n\t\t\t\ttarget._addChild(new TextVdom(val));\n\t\t\t}\n\t\t}\n\t}\n};\n\nexport const applyAttributes = (n: ElementVdom, attrs: any) => {\n\tfor(let k in attrs) {\n\t\tlet attr = attrs[k];\n\t\tif(attr instanceof Signal && !(attr instanceof Ref)) attr = attr.bind();\n\t\tlet eventName = k;\n\t\tlet modifiers = [];\n\t\tif(k.includes(\".\")){\n\t\t\tconst parts = k.split(\".\");\n\t\t\teventName = parts[0];\n\t\t\tmodifiers = parts.slice(1);\n\t\t}\n\n\t\tconst isEvent = allEventAttr[eventName] || (eventName.startsWith(\"on\") && eventName[2] && eventName[2] === eventName[2].toUpperCase());\n\n\t\tif(isEvent) {\n\t\t\tif(typeof attrs[k] !== \"function\") {\n\t\t\t\tthrow new Error(`Value of event attribute ${k} must be a function.`);\n\t\t\t}\n\n\t\t\t(n as any).addEventListener(eventName.substring(2).toLowerCase(), attr, modifiers);\n\t\t} else {\n\t\t\tn.setAttr(k, attr);\n\t\t}\n\t}\n};\n\nexport const createElement = (dot: IDotCore, tag: string, args: any[] | IArguments): ElementVdom => {\n\tlet n = new ElementVdom(dot, tag);\n\n\tfor(let j = 0; j < args.length; j++){\n\t\tlet arg = args[j];\n\t\tif(isContent(arg)){\n\t\t\tapplyContent(dot, n, arg);\n\t\t}\n\t\telse if(arg && typeof arg === \"object\"){\n\t\t\tapplyAttributes(n, arg);\n\t\t}\n\t}\n\n\treturn n;\n}\n","import { IDotCss } from \"dothtml-interfaces\";\n\nconst stylesheetCache = new WeakMap<Document, Map<string, CSSStyleSheet>>();\n\nexport default function renderStylesheet(styleCallback: string|CSSStyleSheet|((css: any)=>(string|IDotCss)), document: Document): CSSStyleSheet|HTMLStyleElement {\n\n\tlet finalStylesheet = \"\";\n\n\tif (styleCallback instanceof (document.defaultView as any)?.CSSStyleSheet) {\n\t\treturn styleCallback as CSSStyleSheet;\n\t}\n\n\tif (typeof styleCallback == \"string\") {\n\t\tfinalStylesheet = styleCallback;\n\t}\n\telse if (typeof styleCallback == \"function\") {\n\t\tlet css = null;\n\t\tlet styles = styleCallback(css);\n\n\t\tif (typeof styles == \"string\") {\n\t\t\tfinalStylesheet = styles;\n\t\t}\n\t\telse {\n\t\t\t// TODO: handle dot syntax if needed.\n\t\t}\n\t}\n\n\tlet docCache = stylesheetCache.get(document);\n\tif (!docCache) {\n\t\tdocCache = new Map();\n\t\tstylesheetCache.set(document, docCache);\n\t}\n\n\tif (docCache.has(finalStylesheet)) {\n\t\treturn docCache.get(finalStylesheet);\n\t}\n\n\tlet DocumentCSSStyleSheet = (document.defaultView as any)?.CSSStyleSheet;\n\n\tif (DocumentCSSStyleSheet) {\n\t\ttry {\n\t\t\tlet sharedStyles = new DocumentCSSStyleSheet();\n\t\t\tif (sharedStyles.replaceSync) {\n\t\t\t\tsharedStyles.replaceSync(finalStylesheet);\n\t\t\t\tdocCache.set(finalStylesheet, sharedStyles);\n\t\t\t\treturn sharedStyles;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Constructor might fail in some environments.\n\t\t}\n\t}\n\n\t// Fallback on a style tag.\n\tlet style = document.createElement(\"style\");\n\tstyle.innerHTML = finalStylesheet;\n\treturn style;\n}\n","import type { ComponentVdom } from \"./component-vdom\";\n\nexport const componentStack: ComponentVdom[] = [];\nexport const getCurrentComponent = () => componentStack[componentStack.length - 1] || null;\nexport const pushComponent = (component: ComponentVdom) => componentStack.push(component);\nexport const popComponent = () => componentStack.pop();\n","import Signal, { dependencyStack } from \"./signal\";\nimport { scheduler } from \"./scheduler\";\nimport { Priority } from \"./priority\";\n\nexport default class Computed<T> extends Signal<T> {\n\tprivate getter: () => T;\n\tprivate dependencies = new Map<Signal, number>();\n\tprivate isQueued = false;\n\tprivate isEvaluating = false;\n\tprivate active = true;\n\tprivate dirty = true;\n\tprivate error: any = null;\n\n\tget isWritable(): boolean {\n\t\treturn false;\n\t}\n\n\tprivate updateSubscription = {\n\t\tactive: true,\n\t\tupdate: () => {\n\t\t\tthis.isQueued = false;\n\t\t\tif (this.dirty) {\n\t\t\t\tthis._update();\n\t\t\t}\n\t\t}\n\t};\n\n\tconstructor(getter: () => T) {\n\t\tsuper();\n\t\tthis.getter = getter;\n\t\t// Initial evaluation is done immediately to set up initial dependencies.\n\t\tthis._update();\n\t}\n\n\tget value(): T {\n\t\tif (this.isEvaluating) {\n\t\t\tthrow new Error(\"Circular dependency detected in computed signal.\");\n\t\t}\n\t\tif (this.dirty) {\n\t\t\tthis._update();\n\t\t}\n\t\tif (this.error) {\n\t\t\tthrow this.error;\n\t\t}\n\t\treturn super.value;\n\t}\n\n\taddDependency(signal: Signal) {\n\t\tif (!this.active) return;\n\t\tif (!this.newDependencies.has(signal)) {\n\t\t\tthis.newDependencies.add(signal);\n\t\t}\n\t}\n\n\tprivate requestUpdate() {\n\t\tif (!this.active) return;\n\t\tthis.dirty = true;\n\t\tif (!this.isQueued) {\n\t\t\tthis.isQueued = true;\n\t\t\tscheduler.enqueue(this.updateSubscription as any, Priority.Normal);\n\t\t}\n\t}\n\n\tprivate newDependencies = new Set<Signal>();\n\n\tprivate _update() {\n\t\tif (!this.active) return;\n\t\tif (this.isEvaluating) {\n\t\t\tthrow new Error(\"Circular dependency detected in computed signal.\");\n\t\t}\n\n\t\tthis.isEvaluating = true;\n\t\tthis.dirty = false;\n\t\tthis.error = null;\n\t\tthis.newDependencies.clear();\n\t\tdependencyStack.push(this);\n\n\t\tlet newValue: T;\n\t\tlet hasError = false;\n\n\t\ttry {\n\t\t\tnewValue = this.getter();\n\t\t} catch (e) {\n\t\t\tthis.error = e;\n\t\t\thasError = true;\n\t\t} finally {\n\t\t\tdependencyStack.pop();\n\t\t\tthis.isEvaluating = false;\n\t\t}\n\n\t\tif (!hasError) {\n\t\t\tthis.setValue(newValue);\n\t\t}\n\n\t\t// Update dependencies\n\t\tconst toRemove: Signal[] = [];\n\t\tfor (const [signal, subId] of this.dependencies) {\n\t\t\tif (!this.newDependencies.has(signal)) {\n\t\t\t\tsignal.unsubscribe(subId);\n\t\t\t\ttoRemove.push(signal);\n\t\t\t}\n\t\t}\n\t\tfor (const signal of toRemove) {\n\t\t\tthis.dependencies.delete(signal);\n\t\t}\n\n\t\tfor (const signal of this.newDependencies) {\n\t\t\tif (!this.dependencies.has(signal)) {\n\t\t\t\tconst subId = signal.subscribe(() => this.requestUpdate(), true);\n\t\t\t\tthis.dependencies.set(signal, subId);\n\t\t\t}\n\t\t}\n\t}\n\n\tdispose() {\n\t\tthis.active = false;\n\t\tfor (const [signal, subId] of this.dependencies) {\n\t\t\tsignal.unsubscribe(subId);\n\t\t}\n\t\tthis.dependencies.clear();\n\t}\n}\n","import BaseVStyle from \"./base-v-style\";\n\nexport interface IStylePropHost {\n\tformatPropsForBlock(style: BaseVStyle): string;\n}\n\nexport default class KeyframesBuilder {\n\tprivate steps: Array<{ selector: string, style: BaseVStyle }> = [];\n\n\tconstructor(private sheet: IStylePropHost) {}\n\n\tprivate step(selector: string, callback: (s: BaseVStyle) => void) {\n\t\tconst style = new BaseVStyle();\n\t\tcallback(style);\n\t\tthis.steps.push({ selector, style });\n\t\treturn this;\n\t}\n\n\tfrom(callback: (s: BaseVStyle) => void) {\n\t\treturn this.step(\"from\", callback);\n\t}\n\n\tto(callback: (s: BaseVStyle) => void) {\n\t\treturn this.step(\"to\", callback);\n\t}\n\n\tat(percent: number | string, callback: (s: BaseVStyle) => void) {\n\t\tconst selector = typeof percent === \"number\" ? `${percent}%` : percent;\n\t\treturn this.step(selector, callback);\n\t}\n\n\ttoString(indent: string = \"\") {\n\t\treturn this.steps.map(s =>\n\t\t\t`${indent}${s.selector} { ${this.sheet.formatPropsForBlock(s.style)} }`\n\t\t).join(\"\\n\");\n\t}\n}\n","import BaseVStyle from \"./base-v-style\";\nimport cssProps from \"../css/css-props\";\nimport { formatCssLength } from \"../css/format-css-type\";\nimport Signal from \"../reactivity/signal\";\nimport Binding from \"../reactivity/binding\";\nimport Computed from \"../reactivity/computed\";\nimport CssFunctionBuilderVStyle from \"./css-function-builder-v-style\";\nimport FilterVStyle from \"./filter-v-style\";\nimport TransformVStyle from \"./transform-v-style\";\nimport KeyframesBuilder from \"./keyframes-builder\";\n\n\ntype StyleRule = \n\t| { type: \"rule\", selector: string, style: BaseVStyle }\n\t| { type: \"media\", condition: string, builder: StyleSheetBuilder }\n\t| { type: \"container\", condition: string, builder: StyleSheetBuilder }\n\t| { type: \"supports\", condition: string, builder: StyleSheetBuilder }\n\t| { type: \"keyframes\", name: string, builder: KeyframesBuilder };\n\nexport default class StyleSheetBuilder {\n\tprivate rules: Array<StyleRule> = [];\n\tpublic theme: any = null;\n\tprivate ghostVars: Array<{ name: string, value: Signal | Binding }> = [];\n\tprivate varCounter = 0;\n\n\tgetGhostVars() {\n\t\treturn this.ghostVars;\n\t}\n\n\tsetTheme(theme: any) {\n\t\tthis.theme = theme;\n\t\treturn this;\n\t}\n\n\ttemplate(strings: TemplateStringsArray, ...values: any[]) {\n\t\treturn new Computed(() => {\n\t\t\tlet result = \"\";\n\t\t\tfor (let i = 0; i < strings.length; i++) {\n\t\t\t\tresult += strings[i];\n\t\t\t\tif (i < values.length) {\n\t\t\t\t\tlet val = values[i];\n\t\t\t\t\tif (val instanceof Signal || val instanceof Binding) {\n\t\t\t\t\t\tresult += val instanceof Binding ? val._get() : val.value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult += val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t});\n\t}\n\n\tclass(name: string, callback: (s: BaseVStyle) => void) {\n\t\treturn this.rule(`.${name}`, callback);\n\t}\n\n\trule(selector: string, callback: (s: BaseVStyle) => void) {\n\t\tconst style = new BaseVStyle();\n\t\tcallback(style);\n\t\tthis.rules.push({ type: \"rule\", selector, style });\n\t\treturn this;\n\t}\n\n\tselector(selector: string, callback: (s: BaseVStyle) => void) {\n\t\treturn this.rule(selector, callback);\n\t}\n\n\tmedia(condition: string, callback: (s: StyleSheetBuilder) => void) {\n\t\tconst builder = new StyleSheetBuilder();\n\t\tcallback(builder);\n\t\tthis.rules.push({ type: \"media\", condition, builder });\n\t\treturn this;\n\t}\n\n\tcontainer(condition: string, callback: (s: StyleSheetBuilder) => void) {\n\t\tconst builder = new StyleSheetBuilder();\n\t\tcallback(builder);\n\t\tthis.rules.push({ type: \"container\", condition, builder });\n\t\treturn this;\n\t}\n\n\tsupports(condition: string, callback: (s: StyleSheetBuilder) => void) {\n\t\tconst builder = new StyleSheetBuilder();\n\t\tcallback(builder);\n\t\tthis.rules.push({ type: \"supports\", condition, builder });\n\t\treturn this;\n\t}\n\n\tkeyframes(name: string, callback: (k: KeyframesBuilder) => void) {\n\t\tconst builder = new KeyframesBuilder(this);\n\t\tcallback(builder);\n\t\tthis.rules.push({ type: \"keyframes\", name, builder });\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns a CSS variable reference string.\n\t * @param name The name of the variable (e.g., \"my-color\" or \"--my-color\").\n\t * @returns A string in the format \"var(--name)\".\n\t */\n\tv(name: string): string {\n\t\tif (!name.startsWith(\"--\")) name = \"--\" + name;\n\t\treturn `var(${name})`;\n\t}\n\n\tprivate applyObjectToBuilder(builder: CssFunctionBuilderVStyle, cssValue: any) {\n\t\tlet funcArray = Array.isArray(cssValue) ? cssValue : [cssValue];\n\t\tfor (let funcValue of funcArray) {\n\t\t\tfor (let k in funcValue) {\n\t\t\t\tlet v = funcValue[k];\n\t\t\t\tlet methodKey = k.replace(/_\\d+$/, \"\");\n\t\t\t\tif (typeof builder[methodKey] === \"function\") {\n\t\t\t\t\tif (Array.isArray(v)) {\n\t\t\t\t\t\tbuilder[methodKey](...v);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuilder[methodKey](v);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tformatPropsForBlock(style: BaseVStyle): string {\n\t\treturn style.getProps().map(p => {\n\t\t\tconst registered = cssProps[p.prop];\n\t\t\tlet cssProp = p.prop;\n\t\t\tlet cssValue = p.value;\n\n\t\t\tif (typeof cssValue === \"object\" && cssValue !== null && !(cssValue instanceof CssFunctionBuilderVStyle) && !(cssValue instanceof Signal) && !(cssValue instanceof Binding)) {\n\t\t\t\tlet builder: CssFunctionBuilderVStyle;\n\t\t\t\tswitch (p.prop) {\n\t\t\t\t\tcase \"filter\": {\n\t\t\t\t\t\tbuilder = new FilterVStyle(p.prop);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"transform\": {\n\t\t\t\t\t\tbuilder = new TransformVStyle(p.prop);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (builder) {\n\t\t\t\t\tthis.applyObjectToBuilder(builder, cssValue);\n\t\t\t\t\tcssValue = builder;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (cssValue instanceof Signal || cssValue instanceof Binding || cssValue instanceof CssFunctionBuilderVStyle) {\n\t\t\t\tlet isReactive = cssValue instanceof Signal || cssValue instanceof Binding;\n\t\t\t\tif (cssValue instanceof CssFunctionBuilderVStyle) {\n\t\t\t\t\tfor (const f of cssValue.funcs) {\n\t\t\t\t\t\tfor (const arg of f.args) {\n\t\t\t\t\t\t\tif ((arg as any).v instanceof Signal || (arg as any).v instanceof Binding || arg instanceof Signal || arg instanceof Binding) {\n\t\t\t\t\t\t\t\tisReactive = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (isReactive) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (isReactive) {\n\t\t\t\t\tconst varName = `--dh-v${++this.varCounter}`;\n\t\t\t\t\tconst reactiveSource = cssValue;\n\t\t\t\t\tlet reactiveValue: any = cssValue;\n\n\t\t\t\t\tif ((p.prop === \"transform\" || p.prop === \"filter\") && !(reactiveSource instanceof CssFunctionBuilderVStyle)) {\n\t\t\t\t\t\treactiveValue = new Computed(() => {\n\t\t\t\t\t\t\tconst val = reactiveSource instanceof Binding ? reactiveSource._get() : (reactiveSource as any).value;\n\t\t\t\t\t\t\tif (typeof val === \"object\" && val !== null) {\n\t\t\t\t\t\t\t\tconst builder = p.prop === \"transform\" ? new TransformVStyle(p.prop) : new FilterVStyle(p.prop);\n\t\t\t\t\t\t\t\tthis.applyObjectToBuilder(builder, val);\n\t\t\t\t\t\t\t\treturn builder.toString();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn val;\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (registered && registered.unit && !(reactiveSource instanceof CssFunctionBuilderVStyle)) {\n\t\t\t\t\t\treactiveValue = new Computed(() => {\n\t\t\t\t\t\t\tconst val = reactiveSource instanceof Binding ? reactiveSource._get() : (reactiveSource as any).value;\n\t\t\t\t\t\t\treturn typeof val === \"number\" ? `${val}${registered.unit}` : val;\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (registered && (registered.type === \"length\" || registered.type === \"hybrid\") && !(reactiveSource instanceof CssFunctionBuilderVStyle)) {\n\t\t\t\t\t\treactiveValue = new Computed(() => {\n\t\t\t\t\t\t\tconst val = reactiveSource instanceof Binding ? reactiveSource._get() : (reactiveSource as any).value;\n\t\t\t\t\t\t\tif (typeof val === \"number\") {\n\t\t\t\t\t\t\t\treturn formatCssLength(val, registered.unit);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn val;\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (reactiveSource instanceof CssFunctionBuilderVStyle) {\n\t\t\t\t\t\treactiveValue = new Computed(() => reactiveSource.toString());\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.ghostVars.push({ name: varName, value: reactiveValue as any });\n\t\t\t\t\tcssValue = `var(${varName})`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (registered) {\n\t\t\t\tcssProp = registered.cssName;\n\t\t\t\tif ((registered.type === \"length\" || registered.type === \"hybrid\") && typeof p.value === \"number\") {\n\t\t\t\t\tif (registered.type === \"hybrid\" && registered.unit === undefined) {\n\t\t\t\t\t\t// Leave as unitless number\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcssValue = formatCssLength(p.value, registered.unit);\n\t\t\t\t\t}\n\t\t\t\t} else if (registered.unit && typeof p.value === \"number\") {\n\t\t\t\t\tcssValue = `${p.value}${registered.unit}`;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn `${cssProp}: ${cssValue};`;\n\t\t}).join(\" \");\n\t}\n\n\ttoString(indent: string = \"\") {\n\t\treturn this.rules.map(r => {\n\t\t\tif (r.type === \"media\") {\n\t\t\t\treturn `${indent}@media ${r.condition} {\\n${r.builder.toString(indent + \" \")}\\n${indent}}`;\n\t\t\t}\n\t\t\tif (r.type === \"container\") {\n\t\t\t\treturn `${indent}@container ${r.condition} {\\n${r.builder.toString(indent + \" \")}\\n${indent}}`;\n\t\t\t}\n\t\t\tif (r.type === \"supports\") {\n\t\t\t\treturn `${indent}@supports ${r.condition} {\\n${r.builder.toString(indent + \" \")}\\n${indent}}`;\n\t\t\t}\n\t\t\tif (r.type === \"keyframes\") {\n\t\t\t\treturn `${indent}@keyframes ${r.name} {\\n${r.builder.toString(indent + \" \")}\\n${indent}}`;\n\t\t\t}\n\n\t\t\tconst props = this.formatPropsForBlock(r.style);\n\t\t\treturn `${indent}${r.selector} { ${props} }`;\n\t\t}).join(\"\\n\");\n\t}\n\n\thasRules() {\n\t\treturn this.rules.length > 0;\n\t}\n\n\tdispose() {\n\t\tfor (const gv of this.ghostVars) {\n\t\t\tif (gv.value instanceof Computed) {\n\t\t\t\tgv.value.dispose();\n\t\t\t} else if (gv.value instanceof Binding && (gv.value as any)._source instanceof Computed) {\n\t\t\t\t(gv.value as any)._source.dispose();\n\t\t\t}\n\t\t}\n\t\tfor (const r of this.rules) {\n\t\t\tif (r.type === \"media\" || r.type === \"container\" || r.type === \"supports\") {\n\t\t\t\tr.builder.dispose();\n\t\t\t}\n\t\t}\n\t}\n}\n","import Ref from \"./ref\";\n\nexport default class RefCollection<T = any> {\n\tprivate _refs: Map<string | number, Ref<T>> = new Map();\n\n\tget(key: string | number): Ref<T> {\n\t\tif (!this._refs.has(key)) {\n\t\t\tthis._refs.set(key, new Ref<T>());\n\t\t}\n\t\treturn this._refs.get(key)!;\n\t}\n\n\tget elements(): Record<string | number, T | null> {\n\t\tconst result: Record<string | number, T | null> = {};\n\t\tthis._refs.forEach((ref, key) => {\n\t\t\tresult[key] = ref.value;\n\t\t});\n\t\treturn result;\n\t}\n\n\t/**\n\t * Iterates over each populated element in the collection.\n\t */\n\tforEach(callback: (el: T | null, key: string | number) => void): void {\n\t\tthis._refs.forEach((ref, key) => {\n\t\t\tcallback(ref.value, key);\n\t\t});\n\t}\n\n\t/**\n\t * Maps each populated element in the collection to a new array.\n\t */\n\tmap<U>(callback: (el: T | null, key: string | number) => U): U[] {\n\t\tconst result: U[] = [];\n\t\tthis._refs.forEach((ref, key) => {\n\t\t\tresult.push(callback(ref.value, key));\n\t\t});\n\t\treturn result;\n\t}\n}\n","import type { ComponentVdom } from \"./vdom-nodes/component-vdom\";\n\nconst registry = new Map<string, Set<ComponentVdom>>();\n\nexport function registerInstance(id: string, instance: ComponentVdom) {\n\tif (!registry.has(id)) registry.set(id, new Set());\n\tregistry.get(id)!.add(instance);\n}\n\nexport function unregisterInstance(id: string, instance: ComponentVdom) {\n\tregistry.get(id)?.delete(instance);\n}\n\nexport function getInstances(id: string) {\n\treturn registry.get(id) || new Set<ComponentVdom>();\n}\n","import { IDotComponent, IDotCore } from \"dothtml-interfaces\";\nimport { Vdom } from \"./vdom\";\nimport { ContainerVdom } from \"./container-vdom\";\nimport { applyContent } from \"../dot-helpers\";\nimport { TextVdom } from \"./text-vdom\";\nimport { FragmentVdom } from \"./fragment-vdom\";\nimport renderStylesheet from \"../helpers/render-stylesheet\";\nimport { EventManager } from \"../events/event-manager\";\nimport Signal from \"../reactivity/signal\";\nimport Binding from \"../reactivity/binding\";\nimport { scheduler } from \"../reactivity/scheduler\";\nimport { Priority } from \"../reactivity/priority\";\nimport Computed from \"../reactivity/computed\";\nimport { pushComponent, popComponent, getCurrentComponent } from \"./component-context\";\nimport BaseVStyle from \"../v-style-nodes/base-v-style\";\nimport StyleVNode from \"../v-meta-nodes/style-v-node\";\nimport StyleSheetBuilder from \"../v-style-nodes/style-sheet-builder\";\nimport Ref from \"../reactivity/ref\";\nimport RefCollection from \"../reactivity/ref-collection\";\nimport { IS_DEV } from \"../constants\";\nimport { registerInstance, unregisterInstance } from \"../hmr-registry\";\n\nexport class HandledError extends Error {\n\tconstructor() {\n\t\tsuper(\"Error handled by error boundary.\");\n\t\tObject.setPrototypeOf(this, HandledError.prototype);\n\t}\n}\n\nlet tagId = 0x10000;\n\nfunction getStableTagName(hmrId: string): string {\n\t// Sanitize hmrId to be a valid custom element name\n\t// Custom element names must contain a hyphen and consist of lowercase letters, digits, and some symbols.\n\t// We'll replace non-alphanumeric characters with hyphens and ensure it starts with 'dothtml-'\n\tconst sanitized = hmrId\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9]/g, '-')\n\t\t.replace(/-+/g, '-')\n\t\t.replace(/^-|-$/g, '');\n\treturn `dothtml-${sanitized}`;\n}\n\n// dot[\"_addTimestamp\"] = true; // Turn off for testing.\n\nexport class ComponentVdom extends Vdom{\n\n\tcomponent: IDotComponent;\n\tshadowEl: HTMLElement;\n\tchildShadowVdom: ContainerVdom;\n\tprivate events: Array<{name: string, callback: (e: any)=>void, modifiers: string[]}> = [];\n\tprivate styleVNodes: Array<StyleVNode> = [];\n\tprivate isQueued = false;\n\tprivate isBuilding = false;\n\tprivate computedSignals: Computed<any>[] = [];\n\tprivate buildComputedSignals: Computed<any>[] = [];\n\tprivate effects: any[] = [];\n\tprivate disposables: Array<() => void> = [];\n\tprivate ref: Ref<any> | ((comp: IDotComponent | null) => void);\n\tprivate slots: Record<string, ContainerVdom> = {};\n\tprivate parentComponent: ComponentVdom | null = null;\n\tprivate lastError: any = null;\n\tprivate updateSubscription = {\n\t\tactive: true,\n\t\tupdate: () => {\n\t\t\tthis.isQueued = false;\n\t\t\tthis.rebuild();\n\t\t}\n\t};\n\n\tconstructor(dot: IDotCore, component: IDotComponent){\n\t\tsuper(dot);\n\t\tthis.component = component;\n\t\tthis.childShadowVdom = new ContainerVdom(dot);\n\t\tthis.parentComponent = getCurrentComponent();\n\n\t\tif(component._?._meta){\n\t\t\tthrow new Error(\"Component has already been added to the VDOM.\");\n\t\t}\n\n\t\tif(!component.constructor[\"_dotHtmlComponent\"]){\n\t\t\tcomponent.constructor[\"_dotHtmlComponent\"] = {};\n\t\t\t// set up the global component properties (if they haven't been set yet).\n\t\t\tconst hmrId = (component.constructor as any).__hmrId;\n\t\t\tif (IS_DEV && hmrId) {\n\t\t\t\tcomponent.constructor[\"_dotHtmlComponent\"].tagName = getStableTagName(hmrId);\n\t\t\t} else {\n\t\t\t\tlet ts = (Math.floor(performance.now()*10000000000000)).toString(16);\n\t\t\t\tlet tId = (tagId++).toString(16);\n\t\t\t\tcomponent.constructor[\"_dotHtmlComponent\"].tagName = `dothtml-${tId}${dot[\"_addTimestamp\"] ? `-${ts}` : \"\"}`;\n\t\t\t}\n\t\t}\n\n\t\tif(!component._){\n\t\t\t(component._ as any) = {};\n\t\t}\n\t\t(component._ as any).cvdom = this;\n\t\t(component._.refs as any) = {};\n\t\t// (component._.props as any) = args[0] || {}; // TODO\n\t\t// (component._.restyle as any) = ()=>{restyle(this)}; // TODO (not sure if this is needed - we don't have a separate builder (for now)).\n\t\t(component._._meta as any) = component._._meta || {};\n\t\t// (component._._meta.args as any) = args; // TODO: can't get this anymore. Consider trying to obtain mount args.\n\t\t(component._._meta.isRendered as any) = false;\n\t\t(component._._meta.tagName as any) = component.constructor[\"_dotHtmlComponent\"].tagName;\n\t\t// (component._._meta.styles as any) = styles;\n\n\t\t(component as any).emit = (name: string, detail?: any) => {\n\t\t\tif (this.shadowEl) {\n\t\t\t\tthis.shadowEl.dispatchEvent(new CustomEvent(name.toLowerCase(), {\n\t\t\t\t\tdetail,\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true\n\t\t\t\t}));\n\t\t\t}\n\t\t};\n\n\t\tif ((component as any)._trackedComputeds) {\n\t\t\tfor (const w of (component as any)._trackedComputeds) {\n\t\t\t\tthis.registerComputed(w);\n\t\t\t}\n\t\t\tdelete (component as any)._trackedComputeds;\n\t\t}\n\n\t\tif ((component as any)._trackedEffects) {\n\t\t\tfor (const e of (component as any)._trackedEffects) {\n\t\t\t\tthis.registerEffect(e);\n\t\t\t}\n\t\t\tdelete (component as any)._trackedEffects;\n\t\t}\n\n\t\tif ((component as any)._trackedDisposables) {\n\t\t\tfor (const d of (component as any)._trackedDisposables) {\n\t\t\t\tthis.registerDisposable(d);\n\t\t\t}\n\t\t\tdelete (component as any)._trackedDisposables;\n\t\t}\n\n\t\tif (IS_DEV) {\n\t\t\tconst hmrId = (component.constructor as any).__hmrId;\n\t\t\tif (hmrId) {\n\t\t\t\tregisterInstance(hmrId, this);\n\t\t\t}\n\t\t}\n\t}\n\n\tregisterComputed(signal: Computed<any>) {\n\t\tif (this.isBuilding) {\n\t\t\tthis.buildComputedSignals.push(signal);\n\t\t} else {\n\t\t\tthis.computedSignals.push(signal);\n\t\t}\n\t}\n\n\tregisterEffect(effect: any) {\n\t\tthis.effects.push(effect);\n\t}\n\n\tregisterDisposable(disposable: () => void) {\n\t\tthis.disposables.push(disposable);\n\t}\n\n\tsetRef(ref: Ref<any> | ((comp: IDotComponent | null) => void)) {\n\t\tthis.ref = ref;\n\t}\n\n\tinit() {\n\t\ttry {\n\t\t\tthis.validateProps();\n\n\t\t\t// TODO: Do I really need to call build more than once? Why can't I just copy the VDOM?\n\t\t\t// TODO: I believe this is incorrect. Shouldn't the vdom be built inside the render function?\n\t\t\tpushComponent(this);\n\t\t\tthis.isBuilding = true;\n\t\t\ttry {\n\t\t\t\tthis.childShadowVdom = this.component.build(this._dot) as unknown as ContainerVdom;\n\t\t\t} finally {\n\t\t\t\tthis.isBuilding = false;\n\t\t\t\tpopComponent();\n\t\t\t}\n\t\t\t\n\t\t\tthis.component.built && this.component.built();\n\n\t\t\tthis.subscribeToProps();\n\t\t} catch (err) {\n\t\t\tif (err instanceof HandledError) return;\n\t\t\tthis.handleError(err);\n\t\t}\n\t}\n\n\tprivate handleError(err: any) {\n\t\tthis.lastError = err;\n\t\tif (IS_DEV && !this.component.errorCaught) {\n\t\t\tif (this.shadowEl) {\n\t\t\t\tthis.renderErrorBox(err);\n\t\t\t}\n\t\t\tthrow new HandledError();\n\t\t}\n\n\t\tif (this.component.errorCaught) {\n\t\t\ttry {\n\t\t\t\tconst fallback = this.component.errorCaught(err);\n\t\t\t\tif (fallback) {\n\t\t\t\t\tthis.childShadowVdom = new ContainerVdom(this._dot);\n\t\t\t\t\tapplyContent(this._dot, this.childShadowVdom as any, fallback);\n\n\t\t\t\t\tif (this.shadowEl) {\n\t\t\t\t\t\tconst shadow = (this.component._._meta as any).shadowRoot;\n\t\t\t\t\t\tif (shadow) {\n\t\t\t\t\t\t\tshadow.innerHTML = \"\"; // Clear existing content\n\t\t\t\t\t\t\tpushComponent(this);\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tthis.childShadowVdom._render(shadow);\n\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\tpopComponent();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthrow new HandledError();\n\t\t\t\t}\n\t\t\t} catch (secondErr) {\n\t\t\t\tif (secondErr instanceof HandledError) throw secondErr;\n\t\t\t\terr = secondErr; // Error in error boundary itself\n\t\t\t}\n\t\t}\n\n\t\tif (this.parentComponent && (this.parentComponent as any).handleError) {\n\t\t\t(this.parentComponent as any).handleError(err);\n\t\t} else if ((this._dot as any).onError) {\n\t\t\t(this._dot as any).onError(err);\n\t\t\tthrow new HandledError();\n\t\t} else {\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tprivate subscribeToProps() {\n\t\tconst props = (this.component as any).props;\n\t\tif (!props) return;\n\t\tfor (const key in props) {\n\t\t\tconst prop = props[key];\n\t\t\tif (prop instanceof Signal || prop instanceof Binding) {\n\t\t\t\tprop.subscribe(() => this.requestUpdate());\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate requestUpdate() {\n\t\tif (!this.isQueued) {\n\t\t\tthis.isQueued = true;\n\t\t\tscheduler.enqueue(this.updateSubscription as any, Priority.Normal);\n\t\t}\n\t}\n\n\tpublic rebuild() {\n\t\tif (!this.shadowEl) return;\n\n\t\ttry {\n\t\t\t// Unrender old children\n\t\t\tthis.childShadowVdom._unrender();\n\n\t\t\t// Dispose of build-time computed signals\n\t\t\tfor (const signal of this.buildComputedSignals) {\n\t\t\t\tsignal.dispose();\n\t\t\t}\n\t\t\tthis.buildComputedSignals = [];\n\n\t\t\tthis.validateProps();\n\n\t\t\t// Re-build\n\t\t\tpushComponent(this);\n\t\t\tthis.isBuilding = true;\n\t\t\ttry {\n\t\t\t\tthis.childShadowVdom = this.component.build(this._dot) as unknown as ContainerVdom;\n\t\t\t} finally {\n\t\t\t\tthis.isBuilding = false;\n\t\t\t\tpopComponent();\n\t\t\t}\n\n\t\t\t// Render new children into the existing shadow root\n\t\t\tconst shadow = (this.component._._meta as any).shadowRoot;\n\t\t\tif (shadow && this.lastError) {\n\t\t\t\tshadow.innerHTML = \"\";\n\t\t\t}\n\t\t\tpushComponent(this);\n\t\t\ttry {\n\t\t\t\tthis.childShadowVdom._render(shadow);\n\t\t\t} finally {\n\t\t\t\tpopComponent();\n\t\t\t}\n\n\t\t\tthis.lastError = null;\n\t\t\tthis.component.built && this.component.built();\n\t\t} catch (err) {\n\t\t\tif (err instanceof HandledError) return;\n\t\t\tthis.handleError(err);\n\t\t}\n\t}\n\n\tprivate renderErrorBox(err: any) {\n\t\tif (!this.shadowEl) return;\n\t\tconst shadow = (this.component._._meta as any).shadowRoot;\n\t\tif (!shadow) return;\n\n\t\tshadow.innerHTML = \"\"; // Clear existing content\n\t\t\n\t\tconst errorBox = document.createElement(\"div\");\n\t\terrorBox.setAttribute(\"style\", `\n\t\t\tbackground-color: rgba(255, 0, 0, 0.9);\n\t\t\tcolor: white;\n\t\t\tpadding: 20px;\n\t\t\tmargin: 10px;\n\t\t\tborder-radius: 8px;\n\t\t\tfont-family: monospace;\n\t\t\twhite-space: pre-wrap;\n\t\t\tbox-shadow: 0 4px 15px rgba(0,0,0,0.5);\n\t\t\tz-index: 10000;\n\t\t\tposition: relative;\n\t\t\toverflow: auto;\n\t\t\tmax-height: 90vh;\n\t\t`);\n\n\t\tconst title = document.createElement(\"h2\");\n\t\ttitle.textContent = \"DOThtml HMR Error\";\n\t\ttitle.style.marginTop = \"0\";\n\t\terrorBox.appendChild(title);\n\n\t\tconst message = document.createElement(\"div\");\n\t\tmessage.style.fontWeight = \"bold\";\n\t\tmessage.style.fontSize = \"1.2em\";\n\t\tmessage.style.marginBottom = \"10px\";\n\t\tmessage.textContent = err.message || err;\n\t\terrorBox.appendChild(message);\n\n\t\tif (err.stack) {\n\t\t\tconst stack = document.createElement(\"pre\");\n\t\t\tstack.style.fontSize = \"0.9em\";\n\t\t\tstack.style.opacity = \"0.8\";\n\t\t\tstack.textContent = err.stack;\n\t\t\terrorBox.appendChild(stack);\n\t\t}\n\n\t\tshadow.appendChild(errorBox);\n\t}\n\n\tprivate validateProps() {\n\t\tconst schema = (this.component.constructor as any).props;\n\t\tif (!schema) return;\n\n\t\tconst props = (this.component as any).props || {};\n\t\tconst componentName = this.component.constructor.name;\n\n\t\tfor (const key in schema) {\n\t\t\tconst rule = schema[key];\n\t\t\tlet value = props[key];\n\n\t\t\t// Apply default\n\t\t\tif (value === undefined && rule.default !== undefined) {\n\t\t\t\tif (typeof rule.default === \"function\" && (rule.type === Object || rule.type === Array)) {\n\t\t\t\t\tvalue = rule.default();\n\t\t\t\t} else {\n\t\t\t\t\tvalue = rule.default;\n\t\t\t\t}\n\t\t\t\tprops[key] = value;\n\t\t\t}\n\n\t\t\t// Check required\n\t\t\tif (rule.required && value === undefined) {\n\t\t\t\tthrow new Error(`[${componentName}] Prop \"${key}\" is required.`);\n\t\t\t}\n\n\t\t\t// Extract value for validation if it's a Signal or Binding\n\t\t\tlet valueToValidate = value;\n\t\t\tif (value instanceof Signal || value instanceof Binding) {\n\t\t\t\tvalueToValidate = value.value;\n\t\t\t}\n\n\t\t\t// Check type\n\t\t\tif (valueToValidate !== undefined && valueToValidate !== null && rule.type) {\n\t\t\t\tconst actualType = typeof valueToValidate;\n\t\t\t\tif (rule.type === String && actualType !== \"string\") {\n\t\t\t\t\tthrow new Error(`[${componentName}] Prop \"${key}\" expected string, but got ${actualType}.`);\n\t\t\t\t} else if (rule.type === Number && actualType !== \"number\") {\n\t\t\t\t\tthrow new Error(`[${componentName}] Prop \"${key}\" expected number, but got ${actualType}.`);\n\t\t\t\t} else if (rule.type === Boolean && actualType !== \"boolean\") {\n\t\t\t\t\tthrow new Error(`[${componentName}] Prop \"${key}\" expected boolean, but got ${actualType}.`);\n\t\t\t\t} else if (rule.type === Function && actualType !== \"function\") {\n\t\t\t\t\tthrow new Error(`[${componentName}] Prop \"${key}\" expected function, but got ${actualType}.`);\n\t\t\t\t} else if (rule.type === Array && !Array.isArray(valueToValidate)) {\n\t\t\t\t\tthrow new Error(`[${componentName}] Prop \"${key}\" expected array, but got ${actualType}.`);\n\t\t\t\t} else if (rule.type === Object && (actualType !== \"object\" || Array.isArray(valueToValidate))) {\n\t\t\t\t\tthrow new Error(`[${componentName}] Prop \"${key}\" expected object, but got ${Array.isArray(valueToValidate) ? \"array\" : actualType}.`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Custom validator\n\t\t\tif (valueToValidate !== undefined && typeof rule.validator === \"function\") {\n\t\t\t\tif (!rule.validator(valueToValidate)) {\n\t\t\t\t\tthrow new Error(`[${componentName}] Prop \"${key}\" failed custom validation.`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t(this.component as any).props = props;\n\t}\n\n\t// Sets up the custom element for the component.\n\tprivate setupCustomElement(document: Document){\n\t\tlet CustomElementConstructor = document.defaultView.customElements.get(this.component._._meta.tagName);\n\t\tif(CustomElementConstructor == undefined){\n\t\t\t\n\t\t\tlet DocSpecificHtmlEl = document.defaultView.HTMLElement;\n\t\t\tconst cvdom = this;\n\t\t\t\n\t\t\tCustomElementConstructor = class extends DocSpecificHtmlEl{\n\t\t\t\tprivate _component: IDotComponent;\n\t\t\t\tget component(){ return this._component; }\n\t\t\t\tset component(value: IDotComponent){\n\t\t\t\t\tthis._component = value;\n\t\t\t\t\tthis._renderComponent();\n\t\t\t\t}\n\n\t\t\t\tcvdom: ComponentVdom;\n\n\t\t\t\t_renderComponent(){\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif(this.cvdom instanceof Vdom){\n\t\t\t\t\t\t\tlet shadow = this.shadowRoot || this.attachShadow({ mode: 'open' });\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Collect styles\n\t\t\t\t\t\t\tlet cachedStyles = (this._component.constructor as any)._cachedStyles;\n\t\t\t\t\t\t\tif (!cachedStyles) {\n\t\t\t\t\t\t\t\tcachedStyles = cvdom.generateStyles(document);\n\t\t\t\t\t\t\t\t(this._component.constructor as any)._cachedStyles = cachedStyles;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tshadow.adoptedStyleSheets = [...cachedStyles.allSharedStylesheets];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Clear old style tags if any (except dynamic one)\n\t\t\t\t\t\t\tconst oldTags = shadow.querySelectorAll(\"style:not(#--dh-dynamic-style)\");\n\t\t\t\t\t\t\tfor (const t of Array.from(oldTags)) t.remove();\n\n\t\t\t\t\t\t\tfor(let i = 0; i < cachedStyles.allStyleTags.length; i++){\n\t\t\t\t\t\t\t\tshadow.appendChild(cachedStyles.allStyleTags[i].cloneNode(true));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t(this._component._._meta as any).shadowRoot = shadow;\n\n\t\t\t\t\t\t\tif ((this._component.constructor as any)._isDynamicStyle) {\n\t\t\t\t\t\t\t\tconst updateDynamicStyle = () => {\n\t\t\t\t\t\t\t\t\tconst builder = new StyleSheetBuilder();\n\t\t\t\t\t\t\t\t\tif ((this.cvdom._dot as any)._theme) {\n\t\t\t\t\t\t\t\t\t\tbuilder.setTheme((this.cvdom._dot as any)._theme);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst styles = (this._component.stylize as any)(builder);\n\t\t\t\t\t\t\t\t\tconst styleVal = styles instanceof Binding ? styles._get() : (styles instanceof Signal ? styles.value : styles);\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tlet finalStyle = styleVal;\n\t\t\t\t\t\t\t\t\tif (styleVal === builder || (!styleVal && builder.hasRules())) {\n\t\t\t\t\t\t\t\t\t\tfinalStyle = builder.toString();\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// For dynamic styles, we'll use a dedicated style tag in the shadow root.\n\t\t\t\t\t\t\t\t\tlet dynamicStyleTag = shadow.getElementById(\"--dh-dynamic-style\") as HTMLStyleElement;\n\t\t\t\t\t\t\t\t\tif (!dynamicStyleTag) {\n\t\t\t\t\t\t\t\t\t\tdynamicStyleTag = document.createElement(\"style\");\n\t\t\t\t\t\t\t\t\t\tdynamicStyleTag.id = \"--dh-dynamic-style\";\n\t\t\t\t\t\t\t\t\t\tshadow.appendChild(dynamicStyleTag);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdynamicStyleTag.textContent = finalStyle;\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tconst styles = (this._component.stylize as any)(new StyleSheetBuilder());\n\t\t\t\t\t\t\t\tif (styles instanceof Signal || styles instanceof Binding) {\n\t\t\t\t\t\t\t\t\tconst subId = (styles as any).subscribe(updateDynamicStyle);\n\t\t\t\t\t\t\t\t\tthis.cvdom.registerDisposable(() => (styles as any).unsubscribe(subId));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tupdateDynamicStyle();\n\t\t\t\t\t\t\t} else if (this._component.stylize) {\n\t\t\t\t\t\t\t\tconst builder = new StyleSheetBuilder();\n\t\t\t\t\t\t\t\tif ((this.cvdom._dot as any)._theme) {\n\t\t\t\t\t\t\t\t\tbuilder.setTheme((this.cvdom._dot as any)._theme);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t(this._component.stylize as any)(builder);\n\t\t\t\t\t\t\t\tbuilder.toString(); // Trigger ghost variable generation\n\t\t\t\t\t\t\t\tconst ghostVars = builder.getGhostVars();\n\t\t\t\t\t\t\t\tif (ghostVars.length > 0) {\n\t\t\t\t\t\t\t\t\tconst ghostStyleSource: any = {};\n\t\t\t\t\t\t\t\t\tfor (const gv of ghostVars) {\n\t\t\t\t\t\t\t\t\t\tghostStyleSource[gv.name] = gv.value;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst ghostVNode = new StyleVNode(ghostStyleSource);\n\t\t\t\t\t\t\t\t\tghostVNode.render(this); \n\t\t\t\t\t\t\t\t\tthis.cvdom.styleVNodes.push(ghostVNode);\n\t\t\t\t\t\t\t\t\tthis.cvdom.registerDisposable(() => builder.dispose());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (this._component.stylize) {\n\t\t\t\t\t\t\t\tconst builder = new StyleSheetBuilder();\n\t\t\t\t\t\t\t\tif ((this.cvdom._dot as any)._theme) {\n\t\t\t\t\t\t\t\t\tbuilder.setTheme((this.cvdom._dot as any)._theme);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t(this._component.stylize as any)(builder);\n\t\t\t\t\t\t\t\tbuilder.toString(); // Trigger ghost variable generation\n\t\t\t\t\t\t\t\tconst ghostVars = builder.getGhostVars();\n\t\t\t\t\t\t\t\tif (ghostVars.length > 0) {\n\t\t\t\t\t\t\t\t\tconst ghostStyleSource: any = {};\n\t\t\t\t\t\t\t\t\tfor (const gv of ghostVars) {\n\t\t\t\t\t\t\t\t\t\tghostStyleSource[gv.name] = gv.value;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst ghostVNode = new StyleVNode(ghostStyleSource);\n\t\t\t\t\t\t\t\t\tghostVNode.render(this); \n\t\t\t\t\t\t\t\t\tthis.cvdom.styleVNodes.push(ghostVNode);\n\t\t\t\t\t\t\t\t\tthis.cvdom.registerDisposable(() => builder.dispose());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (this.cvdom.childShadowVdom._isRendered) {\n\t\t\t\t\t\t\t\tthis.cvdom.rebuild();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpushComponent(this.cvdom);\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tthis.cvdom.childShadowVdom._render(shadow as any);\n\t\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\t\tpopComponent();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tthrow new Error(\"Component build function returned invalid object.\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tif (err instanceof HandledError) return;\n\t\t\t\t\t\t(this.cvdom as any).handleError(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdocument.defaultView.customElements.define(this.component._._meta.tagName, CustomElementConstructor);\n\t\t}\n\t}\n\n\tprivate generateStyles(document: Document) {\n\t\t// Constructed stylesheets.\n\t\tconst builder = new StyleSheetBuilder();\n\t\tif ((this._dot as any)._theme) {\n\t\t\tbuilder.setTheme((this._dot as any)._theme);\n\t\t}\n\t\tlet styles: any = this.component.stylize && (this.component.stylize as any)(builder) || [];\n\n\t\tif (styles instanceof Signal || styles instanceof Binding) {\n\t\t\t// Dynamic stylesheet. We'll handle this per-instance.\n\t\t\t(this.component.constructor as any)._isDynamicStyle = true;\n\t\t\tstyles = null; \n\t\t}\n\n\t\tif (styles === builder || (!styles && builder.hasRules())) {\n\t\t\tstyles = builder.toString();\n\t\t}\n\n\t\tif(typeof styles == \"string\") styles = [styles];\n\t\t\n\t\tlet sharedStylesheets = [];\n\t\tlet styleTags = [];\n\n\t\tif(styles){\n\t\t\tfor(let i = 0; i < styles.length; i++){\n\t\t\t\tlet styleItem = renderStylesheet(styles[i], document);\n\t\t\t\tif(styleItem instanceof (document.defaultView as any).CSSStyleSheet){\n\t\t\t\t\tsharedStylesheets.push(styleItem);\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tstyleTags.push(styleItem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst ghostVars = builder.getGhostVars();\n\t\tbuilder.dispose();\n\n\t\t// Add global styles.\n\t\tlet allSharedStylesheets = [...sharedStylesheets];\n\t\tlet allStyleTags = [...styleTags];\n\t\tlet globalStyles = (this._dot as any).globalStyles || [];\n\t\tfor (let gs of globalStyles) {\n\t\t\tif (gs instanceof (document.defaultView as any).CSSStyleSheet) {\n\t\t\t\tallSharedStylesheets.push(gs);\n\t\t\t} else if (typeof gs === \"string\") {\n\t\t\t\t// Transform html/body to :host for shadow dom.\n\t\t\t\tconst transformedGs = gs.replace(/\\b(html|body)(?=[\\s,{.#[:]|$)/g, ':host');\n\t\t\t\tlet styleItem = renderStylesheet(transformedGs, document);\n\t\t\t\tif (styleItem instanceof (document.defaultView as any).CSSStyleSheet) {\n\t\t\t\t\tallSharedStylesheets.push(styleItem);\n\t\t\t\t} else {\n\t\t\t\t\tallStyleTags.push(styleItem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { allSharedStylesheets, allStyleTags, ghostVars };\n\t}\n\n\taddSlot(name: string, content: any) {\n\t\tif (typeof content === \"function\") {\n\t\t\tif (!(this.component as any).slots) (this.component as any).slots = {};\n\t\t\t(this.component as any).slots[name] = content;\n\t\t\tif (this.shadowEl) {\n\t\t\t\tthis.requestUpdate();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.slots[name]) {\n\t\t\tthis.slots[name] = new ContainerVdom(this._dot);\n\t\t}\n\t\t\n\t\tapplyContent(this._dot, this.slots[name] as any, content);\n\t\t\n\t\tif (this.shadowEl) {\n\t\t\tthis.slots[name]._render(this.shadowEl);\n\t\t\tthis.applySlotAttribute(name);\n\t\t}\n\t}\n\n\tprivate applySlotAttribute(name: string) {\n\t\tif (name !== \"default\") {\n\t\t\tconst nodes = this.slots[name]._getNodes();\n\t\t\tfor (const node of nodes) {\n\t\t\t\tif (node instanceof HTMLElement) {\n\t\t\t\t\tnode.setAttribute(\"slot\", name);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t_render(node: HTMLElement) {\n\t\ttry {\n\t\t\tif(!this.component._) throw new Error(\"Invalid component. Ensure components are created through the component factory or through decoration.\");\n\t\t\tif((this.component._ as any)?._meta?.isRendered) throw new Error(\"Individual component instances cannot be rendered twice at once.\");\n\t\t\tif(!(this.component._ as any)._meta) (this.component._ as any)._meta = {};\n\t\t\t\n\t\t\tpushComponent(this);\n\t\t\ttry {\n\t\t\t\tthis.component.mounting && this.component.mounting();\n\t\t\t} finally {\n\t\t\t\tpopComponent();\n\t\t\t}\n\t\t\t\n\t\t\t(this.component._._meta as any).isRendered = true;\n\n\t\t\tlet document = node.ownerDocument;\n\n\t\t\t// Needs to be run once per component per document.\n\t\t\tthis.setupCustomElement(document);\n\n\t\t\tthis.shadowEl = document.createElement(this.component._._meta.tagName);\n\t\t\tthis.shadowEl[\"cvdom\"] = this;\n\t\t\tthis.shadowEl.setAttribute(\"cvdom\", \"\");\n\t\t\t\n\t\t\tnode.appendChild(this.shadowEl);\n\n\t\t\tthis.shadowEl[\"component\"] = this.component;\n\n\t\t\tif (IS_DEV && this.lastError) {\n\t\t\t\tthis.renderErrorBox(this.lastError);\n\t\t\t}\n\n\t\t\tfor(let i = 0; i < this.events.length; i++){\n\t\t\t\tlet e = this.events[i];\n\t\t\t\tthis.renderEvent(e.name, e.callback, e.modifiers);\n\t\t\t}\n\n\t\t\tpushComponent(this);\n\t\t\ttry {\n\t\t\t\tthis.component.mounted && this.component.mounted();\n\t\t\t} finally {\n\t\t\t\tpopComponent();\n\t\t\t}\n\n\t\t\tif (this._onEnterHook) {\n\t\t\t\tthis._onEnterHook(this.shadowEl);\n\t\t\t}\n\n\t\t\tif (this.component.onEnter) {\n\t\t\t\tthis.component.onEnter();\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tif (err instanceof HandledError) return;\n\t\t\tthis.handleError(err);\n\t\t}\n\t}\n\n\t_unrender() {\n\t\tpushComponent(this);\n\t\ttry {\n\t\t\tthis.component.unmounting && this.component.unmounting();\n\t\t} finally {\n\t\t\tpopComponent();\n\t\t}\n\n\t\tthis.childShadowVdom._unrender();\n\n\t\tfor (const name in this.slots) {\n\t\t\tthis.slots[name]._unrender();\n\t\t}\n\n\t\tif (this.shadowEl) {\n\t\t\tconst eventManager = EventManager.getForDocument(this.shadowEl.ownerDocument);\n\t\t\tfor(let i = 0; i < this.events.length; i++){\n\t\t\t\tlet e = this.events[i];\n\t\t\t\teventManager.removeListener(this.shadowEl, e.name.toLowerCase(), e.callback);\n\t\t\t}\n\n\t\t\tthis.shadowEl.remove();\n\t\t\tthis.shadowEl = null;\n\t\t}\n\n\t\tfor (let i = 0; i < this.styleVNodes.length; i++) {\n\t\t\tthis.styleVNodes[i].unrender();\n\t\t}\n\t\tthis.styleVNodes = [];\n\n\t\tfor (const signal of this.computedSignals) {\n\t\t\tsignal.dispose();\n\t\t}\n\t\tthis.computedSignals = [];\n\n\t\tfor (const signal of this.buildComputedSignals) {\n\t\t\tsignal.dispose();\n\t\t}\n\t\tthis.buildComputedSignals = [];\n\n\t\tfor (const effect of this.effects) {\n\t\t\teffect.dispose();\n\t\t}\n\t\tthis.effects = [];\n\n\t\tfor (const disposable of this.disposables) {\n\t\t\tdisposable();\n\t\t}\n\t\tthis.disposables = [];\n\n\t\tdelete (this.component._ as any)._meta;\n\t\t\n\t\tpushComponent(this);\n\t\ttry {\n\t\t\tthis.component.unmounted && this.component.unmounted();\n\t\t} finally {\n\t\t\tpopComponent();\n\t\t}\n\n\t\tif(this.ref){\n\t\t\tif (typeof this.ref === \"function\") {\n\t\t\t\tthis.ref(null);\n\t\t\t} else {\n\t\t\t\tthis.ref.value = null;\n\t\t\t}\n\t\t}\n\n\t\tif (IS_DEV) {\n\t\t\tconst hmrId = (this.component.constructor as any).__hmrId;\n\t\t\tif (hmrId) {\n\t\t\t\tunregisterInstance(hmrId, this);\n\t\t\t}\n\t\t}\n\t}\n\n\t_hmrSwap(NewClass: any) {\n\t\tconst oldComponent = this.component;\n\t\tconst props = (oldComponent as any).props;\n\t\tconst refs = (oldComponent as any).refs;\n\n\t\t// 1. Lifecycle: unmounting\n\t\tpushComponent(this);\n\t\ttry {\n\t\t\toldComponent.unmounting && oldComponent.unmounting();\n\t\t} finally {\n\t\t\tpopComponent();\n\t\t}\n\n\t\t// 2. Cleanup\n\t\tfor (const signal of this.computedSignals) {\n\t\t\tsignal.dispose();\n\t\t}\n\t\tthis.computedSignals = [];\n\n\t\tfor (const effect of this.effects) {\n\t\t\teffect.dispose();\n\t\t}\n\t\tthis.effects = [];\n\n\t\tfor (const disposable of this.disposables) {\n\t\t\tdisposable();\n\t\t}\n\t\tthis.disposables = [];\n\n\t\t// Create new instance\n\t\t// Note: we don't use dot.create here because we want to manually manage the transition\n\t\tconst newComponent = new NewClass();\n\t\t\n\t\t// Transfer state\n\t\t(newComponent as any).props = props;\n\t\t(newComponent as any).refs = refs;\n\t\t\n\t\t// Phase 3: Preserve internal state (Signals and RefCollections not in props)\n\t\tfor (const key in oldComponent) {\n\t\t\tif (key === \"props\" || key === \"refs\" || key === \"_\") continue;\n\t\t\tconst oldVal = (oldComponent as any)[key];\n\t\t\tconst newVal = (newComponent as any)[key];\n\t\t\t\n\t\t\tif (oldVal instanceof Signal && newVal instanceof Signal) {\n\t\t\t\tif (newVal.isWritable) {\n\t\t\t\t\tnewVal.value = oldVal.value;\n\t\t\t\t}\n\t\t\t} else if (oldVal instanceof RefCollection && newVal instanceof RefCollection) {\n\t\t\t\t(newComponent as any)[key] = oldVal;\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Transfer framework internal state\n\t\tnewComponent._ = oldComponent._;\n\t\t(newComponent._ as any).cvdom = this;\n\n\t\tthis.component = newComponent;\n\n\t\t// 3. Register new tracked items\n\t\tif ((newComponent as any)._trackedComputeds) {\n\t\t\tfor (const w of (newComponent as any)._trackedComputeds) {\n\t\t\t\tthis.registerComputed(w);\n\t\t\t}\n\t\t\tdelete (newComponent as any)._trackedComputeds;\n\t\t}\n\n\t\tif ((newComponent as any)._trackedEffects) {\n\t\t\tfor (const e of (newComponent as any)._trackedEffects) {\n\t\t\t\tthis.registerEffect(e);\n\t\t\t}\n\t\t\tdelete (newComponent as any)._trackedEffects;\n\t\t}\n\n\t\tif ((newComponent as any)._trackedDisposables) {\n\t\t\tfor (const d of (newComponent as any)._trackedDisposables) {\n\t\t\t\tthis.registerDisposable(d);\n\t\t\t}\n\t\t\tdelete (newComponent as any)._trackedDisposables;\n\t\t}\n\t\t\n\t\t// Invalidate style cache on the new constructor if it exists\n\t\tif ((NewClass as any)._cachedStyles) {\n\t\t\tdelete (NewClass as any)._cachedStyles;\n\t\t}\n\n\t\tif (this.shadowEl) {\n\t\t\t(this.shadowEl as any).component = newComponent;\n\n\t\t\t// 4. Lifecycle: mounted\n\t\t\tpushComponent(this);\n\t\t\ttry {\n\t\t\t\tthis.component.mounted && this.component.mounted();\n\t\t\t} finally {\n\t\t\t\tpopComponent();\n\t\t\t}\n\t\t} else {\n\t\t\tthis.rebuild();\n\t\t}\n\t}\n\n\t_getNodes(): Node[] {\n\t\treturn this.shadowEl ? [this.shadowEl] : [];\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this;\n\t}\n\n\tasync _unrenderAsync() {\n\t\tif (this._onLeaveHook && this.shadowEl) {\n\t\t\tawait this._onLeaveHook(this.shadowEl);\n\t\t}\n\t\tif (this.component.onLeave) {\n\t\t\tawait this.component.onLeave();\n\t\t}\n\t\tthis._unrender();\n\t}\n\n\t_moveTo(target: HTMLElement){\n\t\tconst oldDoc = this.shadowEl?.ownerDocument;\n\t\tconst newDoc = target.ownerDocument;\n\t\t\n\t\tif(oldDoc && newDoc && oldDoc !== newDoc){\n\t\t\t// Re-setup custom element in the new document\n\t\t\tthis.setupCustomElement(newDoc);\n\t\t}\n\t\t\n\t\tsuper._moveTo(target);\n\t}\n\n\taddEventListener(event: string, callback: (e: any)=>void, modifiers: string[] = []){\n\t\tthis.events.push({name: event, callback: callback, modifiers: modifiers});\n\t\tif(this.shadowEl) this.renderEvent(event, callback, modifiers);\n\t}\n\n\tprivate renderEvent(e: string, callback: (e: any)=>void, modifiers: string[] = []){\n\t\tEventManager.getForDocument(this.shadowEl.ownerDocument).addListener(this.shadowEl, e.toLowerCase(), callback, modifiers);\n\t}\n\n\ton(event: string, callback: (e: any)=>void){\n\t\tthis.addEventListener(event, callback);\n\t\treturn this;\n\t}\n\n\ttoString(){\n\t\t// TODO: would be nice to have something more sophisitacetd. \n\t\t// It doesn't even handle slots.\n\t\treturn `<${this.component._._meta.tagName}></${this.component._._meta.tagName}>`;\n\t}\n}\n","import { removeNodesBetween } from \"../helpers/tools\";\nimport Binding from \"../reactivity/binding\";\nimport { ContainerVdom } from \"./container-vdom\";\nimport { TextVdom } from \"./text-vdom\";\nimport { Vdom } from \"./vdom\";\nimport { IDotCore } from \"dothtml-interfaces\";\nimport { ComponentVdom } from \"./component-vdom\";\n\nexport class ReactiveVdom extends Vdom {\n\tprivate binding: Binding;\n\tprivate beforeNode: Node = null;\n\tprivate afterNode: Node = null;\n\tprivate currentVdom: Vdom = null;\n\tprivate observerId: number = 0;\n\t_isReactiveVdom = true;\n\n\tconstructor(dot: IDotCore, binding: Binding) {\n\t\tsuper(dot);\n\t\tthis.binding = binding;\n\t}\n\n\tprivate _toVdom(value: any): Vdom {\n\t\tif (value === null || value === undefined) {\n\t\t\treturn new TextVdom(\"\");\n\t\t}\n\t\tif (value instanceof Vdom) {\n\t\t\treturn value;\n\t\t}\n\t\tif (typeof value === \"object\" && value.build) {\n\t\t\tconst cv = new ComponentVdom(this._dot, value);\n\t\t\tcv.init();\n\t\t\treturn cv;\n\t\t}\n\t\tif (Array.isArray(value)) {\n\t\t\tconst container = new ContainerVdom(this._dot);\n\t\t\tfor (const item of value) {\n\t\t\t\tcontainer._addChild(this._toVdom(item));\n\t\t\t}\n\t\t\treturn container;\n\t\t}\n\t\treturn new TextVdom(value);\n\t}\n\n\t_render(target: HTMLElement) {\n\t\tthis._isRendered = true;\n\t\tthis.beforeNode = target.ownerDocument.createTextNode(\"\");\n\t\tthis.afterNode = target.ownerDocument.createTextNode(\"\");\n\t\ttarget.appendChild(this.beforeNode);\n\t\ttarget.appendChild(this.afterNode);\n\n\t\tconst value = this.binding._get();\n\t\tthis.update(value);\n\n\t\tthis.observerId = this.binding._subscribe(this);\n\t}\n\n\tupdate(value: any) {\n\t\tif (!this._isRendered) return;\n\n\t\tif (this.currentVdom) {\n\t\t\tthis.currentVdom._unrender();\n\t\t}\n\n\t\tremoveNodesBetween(this.beforeNode, this.afterNode);\n\n\t\tthis.currentVdom = this._toVdom(value);\n\t\tthis.currentVdom._renderBefore(this.afterNode);\n\t}\n\n\t_unrender() {\n\t\tif (!this._isRendered) return;\n\t\tthis._isRendered = false;\n\n\t\tif (this.currentVdom) {\n\t\t\tthis.currentVdom._unrender();\n\t\t\tthis.currentVdom = null;\n\t\t}\n\n\t\tif (this.observerId) {\n\t\t\tthis.binding._unsubscribe(this.observerId);\n\t\t\tthis.observerId = 0;\n\t\t}\n\n\t\tremoveNodesBetween(this.beforeNode, this.afterNode);\n\t\tif (this.beforeNode.parentElement) this.beforeNode.parentElement.removeChild(this.beforeNode);\n\t\tif (this.afterNode.parentElement) this.afterNode.parentElement.removeChild(this.afterNode);\n\t\tthis.beforeNode = null;\n\t\tthis.afterNode = null;\n\t}\n\n\t_getNodes(): Node[] {\n\t\tif (!this._isRendered) return [];\n\t\tconst nodes = [this.beforeNode];\n\t\tif (this.currentVdom) {\n\t\t\tnodes.push(...this.currentVdom._getNodes());\n\t\t}\n\t\tnodes.push(this.afterNode);\n\t\treturn nodes;\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this;\n\t}\n\n\ttoString() {\n\t\treturn this.currentVdom ? this.currentVdom.toString() : \"\";\n\t}\n}\n","import Signal, { dependencyStack } from \"./signal\";\nimport { scheduler } from \"./scheduler\";\nimport { Priority } from \"./priority\";\n\nexport type EffectCallback = () => (void | (() => void));\n\nexport default class Effect {\n\tprivate callback: EffectCallback;\n\tprivate cleanup?: () => void;\n\tprivate dependencies = new Map<Signal, number>();\n\tprivate isQueued = false;\n\tprivate isEvaluating = false;\n\tprivate active = true;\n\tprivate dirty = true;\n\tprivate newDependencies = new Set<Signal>();\n\n\tprivate updateSubscription = {\n\t\tactive: true,\n\t\tupdate: () => {\n\t\t\tthis.isQueued = false;\n\t\t\tif (this.dirty) {\n\t\t\t\tthis.run();\n\t\t\t}\n\t\t}\n\t};\n\n\tconstructor(callback: EffectCallback) {\n\t\tthis.callback = callback;\n\t\tthis.run();\n\t}\n\n\taddDependency(signal: Signal) {\n\t\tif (!this.active) return;\n\t\tif (!this.newDependencies.has(signal)) {\n\t\t\tthis.newDependencies.add(signal);\n\t\t}\n\t}\n\n\tprivate requestUpdate() {\n\t\tif (!this.active) return;\n\t\tthis.dirty = true;\n\t\tif (!this.isQueued) {\n\t\t\tthis.isQueued = true;\n\t\t\tscheduler.enqueue(this.updateSubscription as any, Priority.Normal);\n\t\t}\n\t}\n\n\trun() {\n\t\tif (!this.active) return;\n\t\tif (this.isEvaluating) {\n\t\t\tthrow new Error(\"Circular dependency detected in effect.\");\n\t\t}\n\n\t\t// Run cleanup from previous execution\n\t\tif (this.cleanup) {\n\t\t\ttry {\n\t\t\t\tthis.cleanup();\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(\"Error during effect cleanup:\", e);\n\t\t\t}\n\t\t\tthis.cleanup = undefined;\n\t\t}\n\n\t\tthis.isEvaluating = true;\n\t\tthis.dirty = false;\n\t\tthis.newDependencies.clear();\n\t\tdependencyStack.push(this);\n\n\t\ttry {\n\t\t\tconst result = this.callback();\n\t\t\tif (typeof result === \"function\") {\n\t\t\t\tthis.cleanup = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(\"Error during effect execution:\", e);\n\t\t} finally {\n\t\t\tdependencyStack.pop();\n\t\t\tthis.isEvaluating = false;\n\t\t}\n\n\t\t// Update dependencies\n\t\tconst toRemove: Signal[] = [];\n\t\tfor (const [signal, subId] of this.dependencies) {\n\t\t\tif (!this.newDependencies.has(signal)) {\n\t\t\t\tsignal.unsubscribe(subId);\n\t\t\t\ttoRemove.push(signal);\n\t\t\t}\n\t\t}\n\t\tfor (const signal of toRemove) {\n\t\t\tthis.dependencies.delete(signal);\n\t\t}\n\n\t\tfor (const signal of this.newDependencies) {\n\t\t\tif (!this.dependencies.has(signal)) {\n\t\t\t\tconst subId = signal.subscribe(() => this.requestUpdate(), true);\n\t\t\t\tthis.dependencies.set(signal, subId);\n\t\t\t}\n\t\t}\n\t}\n\n\tdispose() {\n\t\tif (!this.active) return;\n\t\tthis.active = false;\n\t\tif (this.cleanup) {\n\t\t\ttry {\n\t\t\t\tthis.cleanup();\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(\"Error during effect disposal cleanup:\", e);\n\t\t\t}\n\t\t\tthis.cleanup = undefined;\n\t\t}\n\t\tfor (const [signal, subId] of this.dependencies) {\n\t\t\tsignal.unsubscribe(subId);\n\t\t}\n\t\tthis.dependencies.clear();\n\t}\n}\n","import { IDotComponent } from \"dothtml-interfaces\";\nimport { pushComponent, popComponent } from \"../vdom-nodes/component-context\";\n\nexport function component<T extends { new(...args: any[]): IDotComponent }>(Ctor: T): T {\n\tconst decorated = class extends (Ctor as any) {\n\t\tconstructor(...args: any[]) {\n\t\t\tconst tracker = {\n\t\t\t\tcomputedSignals: [],\n\t\t\t\teffects: [],\n\t\t\t\tdisposables: [],\n\t\t\t\tregisterComputed(w: any) { this.computedSignals.push(w); },\n\t\t\t\tregisterEffect(e: any) { this.effects.push(e); },\n\t\t\t\tregisterDisposable(d: any) { this.disposables.push(d); }\n\t\t\t};\n\t\t\tpushComponent(tracker as any);\n\t\t\ttry {\n\t\t\t\tsuper(...args);\n\t\t\t} finally {\n\t\t\t\tpopComponent();\n\t\t\t}\n\n\t\t\t// Support passing props via constructor: new MyComponent({ prop1: 'val' })\n\t\t\tif (args[0] && typeof args[0] === \"object\" && !args[0].build && (Ctor as any).props) {\n\t\t\t\tif (!this.props) this.props = {};\n\t\t\t\tObject.assign(this.props, args[0]);\n\t\t\t}\n\n\t\t\t// Store the tracked items on the instance so ComponentVdom can pick them up\n\t\t\t(this as any)._trackedComputeds = tracker.computedSignals;\n\t\t\t(this as any)._trackedEffects = tracker.effects;\n\t\t\t(this as any)._trackedDisposables = tracker.disposables;\n\t\t}\n\t};\n\n\t// Preserve the original class name for better debugging and error messages\n\tObject.defineProperty(decorated, 'name', { value: Ctor.name });\n\t\n\t// Copy static properties (like props schema)\n\tfor (const key of Object.getOwnPropertyNames(Ctor)) {\n\t\tif (key !== \"prototype\" && key !== \"name\" && key !== \"length\") {\n\t\t\t(decorated as any)[key] = (Ctor as any)[key];\n\t\t}\n\t}\n\n\treturn decorated as any;\n}\n","import { IDotComponent, IDotCore, IDotDocument, IDotWindowWrapper } from \"dothtml-interfaces\";\nimport { ContainerVdom } from \"./vdom-nodes/container-vdom\";\nimport dot from \"./dot\";\nimport { DOT_VDOM_PROP_NAME } from \"./constants\";\n\nlet documentId = 1;\n\nexport default class WindowWrapper implements IDotWindowWrapper{\n\twindow: Window;\n\tdocument: Document;\n\ttitle: string;\n\troot: IDotComponent;\n\t_vdom: ContainerVdom;\n\twidth: number; \n\theight: number;\n\tisOpen = false;\n\ttether = false;\n\tsyncStyles = false;\n\tposition: \"center\" | \"parent-center\" | \"beside-parent\" | {left: number, top: number} | null = null;\n\n\tprivate static tetheredWindows = new Set<WindowWrapper>();\n\tprivate eventListeners: Array<{name: string, callback: (e: any) => void}> = [];\n\tprivate wrapperEventListeners: Array<{name: string, callback: (e: any) => void}> = [];\n\n\tconstructor(options: {content: IDotComponent, width?: number, height?: number, title?: string, tether?: boolean, syncStyles?: boolean, position?: \"center\" | \"parent-center\" | \"beside-parent\" | {left: number, top: number}}){\n\t\tthis.root = options.content;\n\t\tthis.width = options.width || options.height || 600;\n\t\tthis.height = options.height || options.width || 400;\n\t\tthis.title = options.title || \"Window\";\n\t\tthis.tether = options.tether || false;\n\t\tthis.syncStyles = options.syncStyles || false;\n\t\tthis.position = options.position || null;\n\t}\n\n\tasync open(): Promise<void>{\n\t\tif(this.isOpen){\n\t\t\tconsole.warn(\"Window is already open.\");\n\t\t\treturn;\n\t\t}\n\n\t\tlet left = 0;\n\t\tlet top = 0;\n\t\tlet features = `width=${this.width},height=${this.height}`;\n\n\t\tif(this.position){\n\t\t\tif(typeof this.position === \"object\"){\n\t\t\t\tleft = this.position.left;\n\t\t\t\ttop = this.position.top;\n\t\t\t}\n\t\t\telse if(this.position === \"center\"){\n\t\t\t\tleft = (window.screen.width - this.width) / 2;\n\t\t\t\ttop = (window.screen.height - this.height) / 2;\n\t\t\t}\n\t\t\telse if(this.position === \"parent-center\"){\n\t\t\t\tleft = window.screenX + (window.outerWidth - this.width) / 2;\n\t\t\t\ttop = window.screenY + (window.outerHeight - this.height) / 2;\n\t\t\t}\n\t\t\telse if(this.position === \"beside-parent\"){\n\t\t\t\tleft = window.screenX + window.outerWidth;\n\t\t\t\ttop = window.screenY;\n\t\t\t}\n\t\t\tfeatures += `,left=${left},top=${top}`;\n\t\t}\n\n\t\tthis.window = window.open(\"\", this.title, features);\n\t\tif(!this.window){\n\t\t\tthrow new Error(\"Popup window could not be opened.\");\n\t\t}\n\n\t\tthis.setupDocument();\n\n\t\tthis.isOpen = true;\n\n\t\tif(this.tether){\n\t\t\tWindowWrapper.tetheredWindows.add(this);\n\t\t\tif(WindowWrapper.tetheredWindows.size === 1){\n\t\t\t\twindow.addEventListener(\"pagehide\", WindowWrapper.closeAllTethered);\n\t\t\t\twindow.addEventListener(\"beforeunload\", WindowWrapper.closeAllTethered);\n\t\t\t\twindow.addEventListener(\"unload\", WindowWrapper.closeAllTethered);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate setupDocument(){\n\t\tif(this._vdom){\n\t\t\tthis._vdom._unrender();\n\t\t\tthis._vdom = null;\n\t\t}\n\n\t\tthis.document = this.window.document;\n\t\tthis.document[\"_dotId\"] = `${documentId++}`;\n\n\t\tlet tempElement = document.createElement(\"div\");\n\t\ttempElement.textContent = this.title;\n\t\tlet encodedTitle = tempElement.innerHTML;\n\t\t\n\t\tthis.document.open();\n\t\tthis.document.write(`<!DOCTYPE html><html><head><title>${encodedTitle}</title></head><body></body></html>`);\n\t\tthis.document.close();\n\n\t\t// Re-acquire the document and body as document.write can replace the document object\n\t\tthis.document = this.window.document;\n\t\tconst body = this.document.body;\n\t\tbody.innerHTML = \"\";\n\t\tdelete body[DOT_VDOM_PROP_NAME];\n\n\t\tif(this.syncStyles){\n\t\t\tthis.syncStylesWithParent();\n\t\t}\n\n\t\tthis._vdom = dot(body, this.window).mount(this.root) as unknown as ContainerVdom;\n\n\t\t// Attach event listeners\n\t\tfor(const {name, callback} of this.eventListeners){\n\t\t\tthis.document.addEventListener(name, callback);\n\t\t}\n\n\t\tthis.window.addEventListener(\"unload\", () => {\n\t\t\tif (this.isOpen) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (this.window && !this.window.closed) {\n\t\t\t\t\t\tthis.setupDocument();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.isOpen = false;\n\t\t\t\t\t\tif (this.tether) {\n\t\t\t\t\t\t\tWindowWrapper.tetheredWindows.delete(this);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.emit(\"close\");\n\t\t\t\t\t}\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t});\n\t}\n\n\ton(event: string, callback: (e: any) => void): this {\n\t\tif (event === \"close\") {\n\t\t\tthis.wrapperEventListeners.push({ name: event, callback });\n\t\t} else {\n\t\t\tthis.eventListeners.push({ name: event, callback });\n\t\t\tif (this.document) {\n\t\t\t\tthis.document.addEventListener(event, callback);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\tprivate emit(event: string, detail?: any) {\n\t\tfor (const { name, callback } of this.wrapperEventListeners) {\n\t\t\tif (name === event) {\n\t\t\t\tcallback(detail);\n\t\t\t}\n\t\t}\n\t}\n\n\tfocus(): void {\n\t\tif(this.window) this.window.focus();\n\t}\n\n\tbringToFront(): void {\n\t\tif(this.window) this.window.focus();\n\t}\n\n\tresizeTo(width: number, height: number): void {\n\t\tif(this.window) this.window.resizeTo(width, height);\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t}\n\n\tmoveTo(left: number, top: number): void {\n\t\tif(this.window) this.window.moveTo(left, top);\n\t}\n\n\tprivate static closeAllTethered = () => {\n\t\tWindowWrapper.tetheredWindows.forEach(w => w.close());\n\t\tWindowWrapper.tetheredWindows.clear();\n\t}\n\n\tprivate syncStylesWithParent(){\n\t\t// 1. Copy body class\n\t\tthis.document.body.className = document.body.className;\n\n\t\t// 2. Copy CSS variables from :root\n\t\tconst rootStyles = getComputedStyle(document.documentElement);\n\t\tfor(let i = 0; i < document.documentElement.style.length; i++){\n\t\t\tconst prop = document.documentElement.style[i];\n\t\t\tif(prop.startsWith(\"--\")){\n\t\t\t\tthis.document.documentElement.style.setProperty(prop, rootStyles.getPropertyValue(prop));\n\t\t\t}\n\t\t}\n\t\t// Also check for properties set directly on the style object that might not be in the enumeration\n\t\t// (though usually they are if they are set via setProperty)\n\n\t\t// 3. Copy adoptedStyleSheets\n\t\tif(this.document.adoptedStyleSheets && document.adoptedStyleSheets){\n\t\t\tconst clonedSheets = [];\n\t\t\tfor(const sheet of document.adoptedStyleSheets){\n\t\t\t\ttry{\n\t\t\t\t\tconst newSheet = new (this.window as any).CSSStyleSheet();\n\t\t\t\t\tlet cssText = \"\";\n\t\t\t\t\tfor(let i = 0; i < sheet.cssRules.length; i++){\n\t\t\t\t\t\tcssText += sheet.cssRules[i].cssText + \"\\n\";\n\t\t\t\t\t}\n\t\t\t\t\tnewSheet.replaceSync(cssText);\n\t\t\t\t\tclonedSheets.push(newSheet);\n\t\t\t\t}\n\t\t\t\tcatch(e){\n\t\t\t\t\tconsole.warn(\"Failed to clone adopted stylesheet:\", e);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.document.adoptedStyleSheets = clonedSheets;\n\t\t}\n\n\t\t// 4. Copy <style> and <link> tags\n\t\tconst styles = document.head.querySelectorAll(\"style, link[rel='stylesheet']\");\n\t\tstyles.forEach(style => {\n\t\t\tthis.document.head.appendChild(style.cloneNode(true));\n\t\t});\n\t}\n\n\tclose(): void {\n\t\tif(this.window){\n\t\t\tif(this._vdom){\n\t\t\t\tthis._vdom._unrender();\n\t\t\t\tthis._vdom = null;\n\t\t\t}\n\n\t\t\tthis.window.close();\n\t\t\tthis.window = null;\n\t\t\tthis.document = null;\n\t\t\tthis.isOpen = false;\n\n\t\t\tif(this.tether){\n\t\t\t\tWindowWrapper.tetheredWindows.delete(this);\n\t\t\t}\n\n\t\t\tthis.emit(\"close\");\n\t\t}\n\t}\n}\n","import Signal from \"./signal\";\nimport Computed from \"./computed\";\nimport { getCurrentComponent, pushComponent, popComponent } from \"../vdom-nodes/component-context\";\n\nconst storeRegistry = new Map<string, any>();\n\nexport interface StoreOptions<TState, TActions, TGetters> {\n\tid?: string;\n\tstate?: () => TState;\n\tgetters?: TGetters & ThisType<TState & TGetters & { $id: string }>;\n\tactions?: TActions & ThisType<TState & TGetters & TActions & { $id: string }>;\n}\n\nexport function createStore<\n\tTState extends Record<string, any>, \n\tTActions extends Record<string, Function>,\n\tTGetters extends Record<string, (state: any) => any>\n>(options: StoreOptions<TState, TActions, TGetters>) {\n\tconst { id, state: stateFn, getters, actions } = options;\n\n\tif (id && storeRegistry.has(id)) {\n\t\treturn () => storeRegistry.get(id);\n\t}\n\n\tconst createInstance = () => {\n\t\tconst store: any = {\n\t\t\t$id: id,\n\t\t\t_state: {} as Record<string, Signal>,\n\t\t\t_getters: {} as Record<string, Computed<any>>,\n\t\t\t_effects: [] as any[]\n\t\t};\n\n\t\tconst tracker = {\n\t\t\tcomputedSignals: [],\n\t\t\teffects: [],\n\t\t\tdisposables: [],\n\t\t\tregisterComputed(w: any) { this.computedSignals.push(w); },\n\t\t\tregisterEffect(e: any) { this.effects.push(e); },\n\t\t\tregisterDisposable(d: any) { this.disposables.push(d); }\n\t\t};\n\n\t\tpushComponent(tracker as any);\n\n\t\ttry {\n\t\t\t// Initialize state\n\t\t\tif (stateFn) {\n\t\t\t\tconst rawState = stateFn();\n\t\t\t\tfor (const key in rawState) {\n\t\t\t\t\tconst val = rawState[key];\n\t\t\t\t\tconst signal = (val as any) instanceof Signal ? (val as Signal) : new Signal();\n\t\t\t\t\tif (signal !== (val as any)) {\n\t\t\t\t\t\tsignal.value = val;\n\t\t\t\t\t}\n\t\t\t\t\tstore._state[key] = signal;\n\t\t\t\t\t\n\t\t\t\t\tObject.defineProperty(store, key, {\n\t\t\t\t\t\tget: () => store._state[key],\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Initialize getters - first define them as undefined so they can be accessed\n\t\t\tif (getters) {\n\t\t\t\tfor (const key in getters) {\n\t\t\t\t\tObject.defineProperty(store, key, {\n\t\t\t\t\t\tget: () => store._getters[key],\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfor (const key in getters) {\n\t\t\t\t\tconst computed = new Computed(() => getters[key].call(store, store));\n\t\t\t\t\tstore._getters[key] = computed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Bind actions\n\t\t\tif (actions) {\n\t\t\t\tfor (const key in actions) {\n\t\t\t\t\tstore[key] = (...args: any[]) => {\n\t\t\t\t\t\tpushComponent(tracker as any);\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\treturn actions[key].apply(store, args);\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tpopComponent();\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tpopComponent();\n\t\t}\n\n\t\tstore._getters_list = tracker.computedSignals;\n\t\tstore._effects = tracker.effects;\n\t\tstore._disposables = tracker.disposables;\n\n\t\tstore.$dispose = () => {\n\t\t\tfor (const key in store._getters) {\n\t\t\t\tstore._getters[key].dispose();\n\t\t\t}\n\t\t\tfor (const computed of store._getters_list || []) {\n\t\t\t\tcomputed.dispose();\n\t\t\t}\n\t\t\tfor (const effect of store._effects || []) {\n\t\t\t\teffect.dispose();\n\t\t\t}\n\t\t\tfor (const disposable of store._disposables || []) {\n\t\t\t\tdisposable();\n\t\t\t}\n\t\t\tif (id) {\n\t\t\t\tstoreRegistry.delete(id);\n\t\t\t}\n\t\t\tstore._state = {};\n\t\t\tstore._getters = {};\n\t\t\tstore._effects = [];\n\t\t};\n\n\t\tif (id) {\n\t\t\tstoreRegistry.set(id, store);\n\t\t}\n\n\t\treturn store;\n\t};\n\n\tlet singletonStore: any;\n\tif (id) {\n\t\tsingletonStore = createInstance();\n\t}\n\n\treturn () => {\n\t\tlet currentStore = id ? singletonStore : createInstance();\n\t\t\n\t\tif (!id) {\n\t\t\tconst currentComponent = getCurrentComponent();\n\t\t\tif (currentComponent && (currentComponent as any).registerDisposable) {\n\t\t\t\t(currentComponent as any).registerDisposable(() => currentStore.$dispose());\n\t\t\t}\n\t\t}\n\t\treturn currentStore;\n\t};\n}\n\nexport function getStore(id: string) {\n\treturn storeRegistry.get(id);\n}\n\nexport function clearStores() {\n\tstoreRegistry.forEach(store => store.$dispose());\n\tstoreRegistry.clear();\n}\n\nexport function getStores() {\n\tconst stores: Record<string, any> = {};\n\tstoreRegistry.forEach((store, id) => {\n\t\tstores[id] = store;\n\t});\n\treturn stores;\n}\n","export const allTags = [\n\t\"a\", \"aside\", \"abbr\", \"address\", \"area\", \"article\", \"audio\", \"b\", \"bdi\", \"bdo\", \"blockQuote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"cite\", \"code\", \"col\", \"colGroup\", \"content\", \"data\", \"dataList\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"div\", \"dl\", \"dt\", \"em\", \"embed\", \"fieldSet\", \"figCaption\", \"figure\", \"footer\", \"form\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"header\", \"hr\", \"i\", \"iFrame\", \"img\", \"input\", \"ins\", \"kbd\", \"keyGen\", \"label\", \"legend\", \"li\", \"main\", \"map\", \"mark\", \"menu\", \"menuItem\", \"meter\", \"nav\", \"object\", \"ol\", \"optGroup\", \"option\", \"output\", \"p\", \"param\", \"pre\", \"progress\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"section\", \"select\", \"small\", \"source\", \"span\", \"strong\", \"svg\", \"sub\", \"summary\", \"sup\", \"table\", \"tBody\", \"td\", \"textArea\", \"tFoot\", \"th\", \"tHead\", \"time\", \"tr\", \"track\", \"u\", \"ul\", \"var\", \"video\", \"wbr\"\n];\n\nexport const allTagsSet = new Set(allTags);\n\nexport const allCoreWrappers = [\"each\", \"html\", \"mount\", \"text\", \"md\", \"when\", \"on\"];\n","import { IDotCore } from \"dothtml-interfaces\";\nimport { Vdom } from \"./vdom\";\nimport { ContainerVdom } from \"./container-vdom\";\nimport { applyContent } from \"../dot-helpers\";\nimport { getCurrentComponent } from \"./component-context\";\n\nexport class SlotVdom extends Vdom {\n\tname: string;\n\tfallbackOrScope: any;\n\tfallback: ContainerVdom | null = null;\n\tscopedContent: ContainerVdom | null = null;\n\telement: HTMLElement | null = null;\n\n\tconstructor(dot: IDotCore, name?: string, fallbackOrScope?: any) {\n\t\tsuper(dot);\n\t\tthis.name = name || \"default\";\n\t\tthis.fallbackOrScope = fallbackOrScope;\n\t}\n\n\t_render(node: HTMLElement) {\n\t\tthis._isRendered = true;\n\t\tconst document = node.ownerDocument;\n\n\t\tconst currentComp = getCurrentComponent() as any;\n\t\tconst slotContent = currentComp?.component?.slots?.[this.name];\n\n\t\tif (typeof slotContent === \"function\") {\n\t\t\tthis.scopedContent = new ContainerVdom(this._dot);\n\t\t\tapplyContent(this._dot, this.scopedContent as any, slotContent(this.fallbackOrScope));\n\t\t} else if (this.fallbackOrScope !== undefined) {\n\t\t\tthis.fallback = new ContainerVdom(this._dot);\n\t\t\tapplyContent(this._dot, this.fallback as any, this.fallbackOrScope);\n\t\t}\n\n\t\tif (this.scopedContent) {\n\t\t\tthis.scopedContent._render(node);\n\t\t} else {\n\t\t\tthis.element = document.createElement(\"slot\");\n\t\t\tif (this.name !== \"default\") {\n\t\t\t\t(this.element as HTMLSlotElement).name = this.name;\n\t\t\t}\n\n\t\t\tif (this.fallback) {\n\t\t\t\tthis.fallback._render(this.element as any);\n\t\t\t}\n\n\t\t\tnode.appendChild(this.element);\n\t\t}\n\t}\n\n\t_unrender() {\n\t\tif (this.scopedContent) {\n\t\t\tthis.scopedContent._unrender();\n\t\t} else if (this.element) {\n\t\t\tif (this.fallback) {\n\t\t\t\tthis.fallback._unrender();\n\t\t\t}\n\t\t\tthis.element.remove();\n\t\t\tthis.element = null;\n\t\t}\n\t\tthis._isRendered = false;\n\t}\n\n\t_getNodes(): Node[] {\n\t\tif (this.scopedContent) {\n\t\t\treturn this.scopedContent._getNodes();\n\t\t}\n\t\treturn this.element ? [this.element] : [];\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this;\n\t}\n}\n","import { Vdom } from \"./vdom-nodes/vdom\";\nimport { FragmentVdom } from \"./vdom-nodes/fragment-vdom\";\nimport { IDotCore } from \"dothtml-interfaces\";\nimport { ComponentVdom } from \"./vdom-nodes/component-vdom\";\nimport { SlotVdom } from \"./vdom-nodes/slot-vdom\";\nimport { ContainerVdom } from \"./vdom-nodes/container-vdom\";\n\nexport class DotChain extends Vdom {\n\t_root: Vdom;\n\n\tconstructor(dot: IDotCore, initial: Vdom) {\n\t\tsuper(dot);\n\t\tthis._root = initial;\n\t}\n\n\t_addChild(node: Vdom) {\n\t\tif (this._root instanceof ContainerVdom) {\n\t\t\tthis._root._addChild(node);\n\t\t} else if (!(this._root instanceof FragmentVdom)) {\n\t\t\tconst frag = new FragmentVdom(this._dot);\n\t\t\tfrag._children.push(this._root);\n\t\t\tfrag._children.push(node);\n\t\t\tthis._root = frag;\n\t\t} else {\n\t\t\tthis._root._children.push(node);\n\t\t}\n\t\treturn this;\n\t}\n\n\t_render(target: HTMLElement) {\n\t\tthis._root._render(target);\n\t}\n\n\t_unrender() {\n\t\tthis._root._unrender();\n\t}\n\n\tasync _unrenderAsync() {\n\t\tawait this._root._unrenderAsync();\n\t}\n\n\t_renderBefore(reference: Node) {\n\t\tthis._root._renderBefore(reference);\n\t}\n\n\t_renderAfter(reference: Node) {\n\t\tthis._root._renderAfter(reference);\n\t}\n\n\t_moveBefore(reference: Node, parent?: Node) {\n\t\tthis._root._moveBefore(reference, parent);\n\t}\n\n\tget _isRendered() {\n\t\treturn this._root._isRendered;\n\t}\n\n\tset _isRendered(value: boolean) {\n\t\tthis._root._isRendered = value;\n\t}\n\n\t_getNodes(): Node[] {\n\t\treturn this._root._getNodes();\n\t}\n\n\t_getLastChild(): Vdom | null {\n\t\treturn this._root._getLastChild();\n\t}\n\n\tslot(name: string | any, content?: any) {\n\t\tlet lastChild = this._getLastChild();\n\t\twhile (lastChild instanceof DotChain) {\n\t\t\tlastChild = (lastChild as any)._root;\n\t\t}\n\n\t\tif (lastChild instanceof ComponentVdom) {\n\t\t\tif (typeof name !== \"string\") {\n\t\t\t\tcontent = name;\n\t\t\t\tname = \"default\";\n\t\t\t}\n\t\t\tlastChild.addSlot(name || \"default\", content);\n\t\t} else {\n\t\t\tif (typeof name !== \"string\") {\n\t\t\t\tcontent = name;\n\t\t\t\tname = undefined;\n\t\t\t}\n\t\t\tthis._addChild(new SlotVdom(this._dot, name, content));\n\t\t}\n\t\treturn this;\n\t}\n}\n","\nimport { ContainerVdom } from \"./vdom-nodes/container-vdom\";\nimport { TextVdom } from \"./vdom-nodes/text-vdom\";\nimport { ReactiveVdom } from \"./vdom-nodes/reactive-vdom\";\nimport ElementVdom from \"./vdom-nodes/element-vdom\";\nimport { Vdom } from \"./vdom-nodes/vdom\";\nimport { DOT_VDOM_PROP_NAME, IS_DEV } from \"./constants\";\nimport Signal from \"./reactivity/signal\";\nimport Computed from \"./reactivity/computed\";\nimport Effect from \"./reactivity/effect\";\nimport { component } from \"./decoration/component\";\nimport { ComponentVdom, HandledError } from \"./vdom-nodes/component-vdom\";\nimport renderStylesheet from \"./helpers/render-stylesheet\";\nimport BaseVStyle from \"./v-style-nodes/base-v-style\";\nimport StyleVNode from \"./v-meta-nodes/style-v-node\";\nimport { IDotCore, IDotCss, IDotComponent } from \"dothtml-interfaces\";\nimport WindowWrapper from \"./window-wrapper\";\nimport Binding from \"./reactivity/binding\";\nimport Ref from \"./reactivity/ref\";\nimport RefCollection from \"./reactivity/ref-collection\";\nimport { scheduler } from \"./reactivity/scheduler\";\nimport { createStore, getStore, clearStores, getStores } from \"./reactivity/store\";\nimport { getCurrentComponent, pushComponent, popComponent } from \"./vdom-nodes/component-context\";\nimport { registerInstance, unregisterInstance, getInstances } from \"./hmr-registry\";\nimport { createElement, isContent } from \"./dot-helpers\";\nimport { allTags, allCoreWrappers, allTagsSet } from \"./tags\";\nimport { DotChain } from \"./dot-chain\";\nimport { HtmlVdom } from \"./vdom-nodes/html-vdom\";\nimport { ConditionalVdom } from \"./vdom-nodes/conditional-vdom\";\nimport CollectionVdom from \"./vdom-nodes/collection-vdom\";\nimport { FragmentVdom } from \"./vdom-nodes/fragment-vdom\";\nimport { SlotVdom } from \"./vdom-nodes/slot-vdom\";\n\nfunction reduceReactive(value: any){\n\tif(value instanceof Signal) return value.bind();\n\telse return value;\n}\n\nfunction promote(vdom: Vdom): DotChain {\n\tif (vdom instanceof DotChain) return vdom;\n\treturn new DotChain(vdom._dot, vdom);\n}\n\n(Vdom.prototype as any)._addChild = function(node: Vdom) {\n\treturn promote(this)._addChild(node);\n};\n\n(Vdom.prototype as any).text = function(c: any) {\n\tlet val = reduceReactive(c);\n\tif(val instanceof Binding){\n\t\treturn this._addChild(new ReactiveVdom(this._dot, val));\n\t}\n\treturn this._addChild(new TextVdom(val));\n};\n\n(Vdom.prototype as any).html = function(c: any) {\n\treturn this._addChild(new HtmlVdom(reduceReactive(c)));\n};\n\n(Vdom.prototype as any).md = function(c: any) {\n\treturn this.text(c);\n};\n\n(Vdom.prototype as any).slot = function(name?: any, fallback?: any) {\n\tlet lastChild = this._getLastChild();\n\twhile (lastChild instanceof DotChain) {\n\t\tlastChild = (lastChild as any)._root;\n\t}\n\n\tif (lastChild instanceof ComponentVdom) {\n\t\tif (typeof name !== \"string\" && name !== undefined) {\n\t\t\tfallback = name;\n\t\t\tname = \"default\";\n\t\t}\n\t\tlastChild.addSlot(name || \"default\", fallback);\n\t\treturn this;\n\t} else {\n\t\tif (typeof name !== \"string\" && name !== undefined) {\n\t\t\tfallback = name;\n\t\t\tname = undefined;\n\t\t}\n\t\treturn this._addChild(new SlotVdom(this._dot, name, fallback));\n\t}\n};\n\n(Vdom.prototype as any).mount = function(c: any, ...args: any[]) {\n\tlet cn = new ComponentVdom(this._dot, c);\n\tfor (let i = 0; i < args.length; i++) {\n\t\tlet arg = args[i];\n\t\tif (isContent(arg)) {\n\t\t\tcn.addSlot(\"default\", arg);\n\t\t} else if (arg && typeof arg === \"object\") {\n\t\t\tfor (let k in arg) {\n\t\t\t\tlet val = arg[k];\n\t\t\t\tif (k === \"ref\") {\n\t\t\t\t\tcn.setRef(val);\n\t\t\t\t}\n\t\t\t\telse if (k.startsWith(\"on\") && typeof val === \"function\") {\n\t\t\t\t\tlet eventName = k;\n\t\t\t\t\tlet modifiers = [];\n\t\t\t\t\tif (k.includes(\".\")) {\n\t\t\t\t\t\tconst parts = k.split(\".\");\n\t\t\t\t\t\teventName = parts[0];\n\t\t\t\t\t\tmodifiers = parts.slice(1);\n\t\t\t\t\t}\n\t\t\t\t\tcn.addEventListener(eventName.substring(2).toLowerCase(), val, modifiers);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (!c[\"props\"]) (c as any).props = {};\n\t\t\t\t\t(c as any).props[k] = val;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\ttry {\n\t\tcn.init();\n\t} catch (e) {\n\t\tif (!(e instanceof HandledError)) throw e;\n\t}\n\treturn this._addChild(cn);\n};\n\n(Vdom.prototype as any).when = function(condition: any, then: any) {\n\tlet condNode = new ConditionalVdom(this._dot);\n\tlet thenContainer: Vdom;\n\tif (then instanceof Vdom) {\n\t\tthenContainer = then;\n\t} else if (typeof then === \"object\" && then?.build) {\n\t\tthenContainer = new FragmentVdom(this._dot);\n\t\t(thenContainer as FragmentVdom).mount(then);\n\t} else {\n\t\tthenContainer = new FragmentVdom(this._dot);\n\t\t(thenContainer as FragmentVdom)._children.push(new TextVdom(reduceReactive(then)));\n\t}\n\tcondNode.addCondition(reduceReactive(condition), thenContainer as any);\n\treturn this._addChild(condNode);\n};\n\n(Vdom.prototype as any).each = function(collection: any, callback: any) {\n\tlet collectionVdom = new CollectionVdom(this._dot, reduceReactive(collection), callback);\n\treturn this._addChild(collectionVdom);\n};\n\n(Vdom.prototype as any).otherwiseWhen = function(condition: any, then: any, seal = false) {\n\tlet lastChild = this._getLastChild();\n\n\tif (lastChild instanceof ConditionalVdom) {\n\t\tlet thenNode: Vdom;\n\t\tif (then instanceof Vdom) {\n\t\t\tthenNode = then;\n\t\t} else if (typeof then === \"object\" && then?.build) {\n\t\t\tthenNode = new FragmentVdom(this._dot);\n\t\t\t(thenNode as FragmentVdom).mount(then);\n\t\t} else {\n\t\t\tthenNode = new TextVdom(reduceReactive(then));\n\t\t}\n\t\tlastChild.addCondition(reduceReactive(condition), thenNode, seal);\n\t} else {\n\t\tthrow new Error(\"Can't branch off of a non-conditional node.\");\n\t}\n\treturn this;\n};\n\n(Vdom.prototype as any).otherwise = function(then: any) {\n\treturn this.otherwiseWhen(true, then, true);\n};\n\n(Vdom.prototype as any).attr = function(A: string, c: any) {\n\tlet lastChild = this._getLastChild();\n\n\tif (lastChild instanceof ElementVdom) {\n\t\tlastChild.setAttr(A, c);\n\t} else {\n\t\tthrow new Error(`Invalid node to set ${A} attribute.`);\n\t}\n\treturn this;\n};\n\n(Vdom.prototype as any).style = function(c: string | Signal | Binding | IDotCss | ((s: BaseVStyle) => void)) {\n\tif (typeof c === \"function\") {\n\t\tconst builder = new BaseVStyle();\n\t\tc(builder);\n\t\tthis.attr(\"style\", builder);\n\t} else {\n\t\tthis.attr(\"style\", c);\n\t}\n\treturn this;\n};\n\n(Vdom.prototype as any).on = function(event: string, callback: (e: any)=>void) {\n\tlet lastChild = this._getLastChild();\n\n\tif(lastChild && (lastChild instanceof ElementVdom || lastChild instanceof ComponentVdom)){\n\t\tlastChild.addEventListener(event, callback);\n\t}\n\telse{\n\t\tthrow new Error(`Invalid node to set ${event} listener.`);\n\t}\n\treturn this;\n};\n\n(Vdom.prototype as any).onEnter = function(callback: (el: HTMLElement)=>void) {\n\tlet lastChild = this._getLastChild();\n\tif (lastChild) {\n\t\tlastChild._onEnterHook = callback;\n\t\tif (lastChild._isRendered) {\n\t\t\tconst nodes = lastChild._getNodes();\n\t\t\tconst el = nodes.find(n => n instanceof HTMLElement) as HTMLElement;\n\t\t\tif (el) callback(el);\n\t\t}\n\t}\n\treturn this;\n};\n\n(Vdom.prototype as any).onLeave = function(callback: (el: HTMLElement)=>Promise<void>|void) {\n\tlet lastChild = this._getLastChild();\n\tif (lastChild) {\n\t\tlastChild._onLeaveHook = callback;\n\t}\n\treturn this;\n};\n\n(Vdom.prototype as any).empty = function() {\n\tlet root = this;\n\twhile (root instanceof DotChain) {\n\t\troot = (root as any)._root;\n\t}\n\n\tlet lastChild = root._getLastChild();\n\twhile (lastChild instanceof DotChain) {\n\t\tlastChild = (lastChild as any)._root;\n\t}\n\n\tif (lastChild instanceof ElementVdom) {\n\t\tif (lastChild.element) lastChild.element.innerHTML = \"\";\n\t\tlastChild.children._unrender();\n\t\tlastChild.children._children = [];\n\t\tlastChild.children._isRendered = true;\n\t} else if (root instanceof ContainerVdom) {\n\t\troot._unrender();\n\t\troot._children = [];\n\t\troot._isRendered = true;\n\t\tif (root._parent instanceof ElementVdom && root._parent.element) {\n\t\t\troot._parent.element.innerHTML = \"\";\n\t\t}\n\t}\n\treturn this;\n};\n\n(Vdom.prototype as any).remove = function() {\n\tlet root = this;\n\twhile (root instanceof DotChain) {\n\t\troot = (root as any)._root;\n\t}\n\n\tlet lastChild = root._getLastChild();\n\twhile (lastChild instanceof DotChain) {\n\t\tlastChild = (lastChild as any)._root;\n\t}\n\n\tif (lastChild instanceof ElementVdom || lastChild instanceof ComponentVdom) {\n\t\tlastChild._unrender();\n\t} else if (root instanceof ContainerVdom && root._parent instanceof ElementVdom) {\n\t\troot._parent._unrender();\n\t} else if (root instanceof Vdom) {\n\t\troot._unrender();\n\t}\n};\n\n(Vdom.prototype as any).fade = function(duration: number = 300) {\n\treturn this.onEnter((el: HTMLElement) => {\n\t\tel.animate([{ opacity: 0 }, { opacity: 1 }], { duration });\n\t}).onLeave(async (el: HTMLElement) => {\n\t\tconst anim = el.animate([{ opacity: 1 }, { opacity: 0 }], { duration });\n\t\tawait anim.finished;\n\t});\n};\n\n(Vdom.prototype as any).slide = function(duration: number = 300) {\n\treturn this.onEnter((el: HTMLElement) => {\n\t\tel.animate([\n\t\t\t{ height: '0', opacity: 0, overflow: 'hidden' },\n\t\t\t{ height: el.scrollHeight + 'px', opacity: 1, overflow: 'hidden' }\n\t\t], { duration });\n\t}).onLeave(async (el: HTMLElement) => {\n\t\tconst anim = el.animate([\n\t\t\t{ height: el.scrollHeight + 'px', opacity: 1, overflow: 'hidden' },\n\t\t\t{ height: '0', opacity: 0, overflow: 'hidden' }\n\t\t], { duration });\n\t\tawait anim.finished;\n\t});\n};\n\nfor (let i = 0; i < allTags.length; i++) {\n\tconst tag = allTags[i];\n\t(Vdom.prototype as any)[tag] = function(...args: any[]) {\n\t\treturn this._addChild(createElement(this._dot, tag, args));\n\t};\n}\n\nconst makeCoreWrapper = (d, fn)=>{\n\td[fn] = function(){\n\t\tif (allTagsSet.has(fn)) {\n\t\t\treturn promote(createElement(d, fn, arguments));\n\t\t} else {\n\t\t\tlet n = new ContainerVdom(d);\n\t\t\tn[fn](...arguments);\n\t\t\treturn promote(n);\n\t\t}\n\t}\n}\n\nconst makeDot = ()=>{\n\tconst _dot: any = function(targetSelector, targetWindow: Window = window){\n\n\t\tif(targetSelector?.ownerDocument?.defaultView){\n\t\t\tlet el = (targetSelector as HTMLElement);\n\t\t\tlet node = el[DOT_VDOM_PROP_NAME] as ElementVdom;\n\t\t\tif(node){\n\t\t\t\treturn promote(node.children);\n\t\t\t}\n\t\t\telse{\n\t\t\t\tnode = new ElementVdom(_dot, el.tagName.toLocaleLowerCase());\n\t\t\t\tnode.element = el;\n\t\t\t\tnode._isRendered = true;\n\t\t\t\tnode.children._parent = node;\n\t\t\t\tnode.children._isRendered = true;\n\t\t\t\tel[DOT_VDOM_PROP_NAME] = node;\n\t\t\t\treturn promote(node.children);\n\t\t\t}\n\t\t}\n\t\telse if(typeof targetSelector == \"string\"){\n\t\t\treturn _dot(targetWindow.document.querySelectorAll(targetSelector)[0]);\n\t\t}\n\t\telse{\n\t\t\tthrow new Error(\"Invalid render target.\");\n\t\t}\n\t}\n\n\t_dot.onError = null;\n\n\t_dot.state = function<T extends Signal|Array<any>|{[key: string|number]: any}|string|number|boolean = any>(value: T, key?: string): Signal<T>{\n\t\tlet o = new Signal();\n\t\to.key = key;\n\t\to.value = (value);\n\t\treturn o;\n\t}\n\n\t_dot.computed = function<T>(getter: () => T): Signal<T>{\n\t\tconst c = new Computed(getter);\n\t\tconst currentComponent = getCurrentComponent();\n\t\tif (currentComponent) {\n\t\t\tcurrentComponent.registerComputed(c);\n\t\t}\n\t\treturn c;\n\t}\n\n\t_dot.effect = function(callback: () => void | (() => void)): () => void {\n\t\tconst e = new Effect(callback);\n\t\tconst currentComponent = getCurrentComponent();\n\t\tif (currentComponent) {\n\t\t\t(currentComponent as any).registerEffect ? (currentComponent as any).registerEffect(e) : currentComponent.registerComputed(e as any);\n\t\t}\n\t\treturn () => e.dispose();\n\t}\n\n\t_dot.component = component;\n\t_dot.hmr = {\n\t\tswap(id: string, NewClass: any) {\n\t\t\tconst instances = getInstances(id);\n\t\t\tfor (const instance of instances) {\n\t\t\t\t(instance as any)._hmrSwap(NewClass);\n\t\t\t}\n\t\t}\n\t};\n\t_dot.slot = function(name?: any, fallback?: any) {\n\t\tif (typeof name !== \"string\" && name !== undefined) {\n\t\t\tfallback = name;\n\t\t\tname = undefined;\n\t\t}\n\t\treturn new SlotVdom(_dot as any, name, fallback);\n\t};\n\t_dot.getCurrentComponent = getCurrentComponent;\n\n\t_dot.store = createStore;\n\t_dot.getStore = getStore;\n\t_dot.clearStores = clearStores;\n\tObject.defineProperty(_dot, \"stores\", { get: () => getStores() });\n\n\t_dot.create = function<T extends IDotComponent>(Ctor: { new(...args: any[]): T }, ...args: any[]): T {\n\t\tconst tracker = {\n\t\t\tcomputedSignals: [],\n\t\t\teffects: [],\n\t\t\tdisposables: [],\n\t\t\tregisterComputed(w: any) { this.computedSignals.push(w); },\n\t\t\tregisterEffect(e: any) { this.effects.push(e); },\n\t\t\tregisterDisposable(d: any) { this.disposables.push(d); }\n\t\t};\n\t\tpushComponent(tracker as any);\n\t\tlet instance: T;\n\t\ttry {\n\t\t\tinstance = new Ctor(...args);\n\t\t} finally {\n\t\t\tpopComponent();\n\t\t}\n\n\t\tif ((instance as any)._trackedComputeds) {\n\t\t\t(instance as any)._trackedComputeds.push(...tracker.computedSignals);\n\t\t} else {\n\t\t\t(instance as any)._trackedComputeds = tracker.computedSignals;\n\t\t}\n\n\t\tif ((instance as any)._trackedEffects) {\n\t\t\t(instance as any)._trackedEffects.push(...tracker.effects);\n\t\t} else {\n\t\t\t(instance as any)._trackedEffects = tracker.effects;\n\t\t}\n\n\t\tif ((instance as any)._trackedDisposables) {\n\t\t\t(instance as any)._trackedDisposables.push(...tracker.disposables);\n\t\t} else {\n\t\t\t(instance as any)._trackedDisposables = tracker.disposables;\n\t\t}\n\n\t\treturn instance;\n\t}\n\n\t_dot.ref = function<T extends HTMLElement | IDotComponent = HTMLElement>(){\n\t\treturn new Ref<T>();\n\t}\n\n\t_dot.refCollection = function<T extends HTMLElement | IDotComponent = HTMLElement>(){\n\t\treturn new RefCollection<T>();\n\t}\n\n\t_dot.alpha = function(color: string | Signal<string> | Binding<string>, opacity: number | Signal<number> | Binding<number>) {\n\t\treturn new Computed(() => {\n\t\t\tconst c = color instanceof Binding ? color._get() : (color instanceof Signal ? color.value : color);\n\t\t\tconst o = opacity instanceof Binding ? opacity._get() : (opacity instanceof Signal ? opacity.value : opacity);\n\t\t\t\n\t\t\tconst percentage = Math.round(Math.max(0, Math.min(100, (1 - o) * 100)) * 100) / 100;\n\t\t\treturn `color-mix(in srgb, ${c}, transparent ${percentage}%)`;\n\t\t});\n\t};\n\n\t_dot.globalStyles = [];\n\t_dot.useGlobalStyles = (styles: string | CSSStyleSheet | Array<string | CSSStyleSheet>) => {\n\t\tconst stylesArray = Array.isArray(styles) ? styles : [styles];\n\t\tfor (const s of stylesArray) {\n\t\t\t_dot.globalStyles.push(s);\n\t\t\tif (typeof document !== \"undefined\") {\n\t\t\t\t_dot.useStyles(document, s);\n\t\t\t}\n\t\t}\n\t};\n\n\t_dot.css = new BaseVStyle();\n\n\t_dot._theme = null;\n\t_dot.setTheme = (theme: any) => {\n\t\t_dot._theme = theme;\n\t};\n\n\t_dot.useStyles = (applyToDocument: Document, styles: string | CSSStyleSheet | ((css: any) => string | IDotCss)) => {\n\t\tif (applyToDocument && !styles) {\n\t\t\tif (typeof applyToDocument == \"string\" || (applyToDocument[\"call\"] && applyToDocument[\"apply\"])) {\n\t\t\t\tstyles = applyToDocument as any;\n\t\t\t\tapplyToDocument = document;\n\t\t\t}\n\t\t}\n\n\t\tconst styleItem = renderStylesheet(styles as any, applyToDocument);\n\t\tif (styleItem instanceof (applyToDocument.defaultView as any)?.CSSStyleSheet) {\n\t\t\tapplyToDocument.adoptedStyleSheets = [...applyToDocument.adoptedStyleSheets, styleItem as CSSStyleSheet];\n\t\t} else if (styleItem instanceof HTMLElement) {\n\t\t\tapplyToDocument.head.appendChild(styleItem);\n\t\t}\n\t};\n\n\tif (typeof document !== \"undefined\") {\n\t\tconst globalStyleVNode = new StyleVNode(_dot.css);\n\t\tglobalStyleVNode.render(document.documentElement);\n\t}\n\n\t_dot.window = (options) => {\n\t\treturn new WindowWrapper(options);\n\t}\n\n\t_dot.flushSync = () => {\n\t\tscheduler.flushSync();\n\t}\n\n\t_dot.setSync = (sync: boolean) => {\n\t\tscheduler.setSync(sync);\n\t}\n\n\tscheduler.onError = (err) => {\n\t\tif (_dot.onError) {\n\t\t\t_dot.onError(err);\n\t\t} else {\n\t\t\tconsole.error(\"DOThtml Error:\", err);\n\t\t}\n\t};\n\n\tfor(let i = 0; i < allTags.length; i++){\n\t\tlet E = allTags[i];\n\t\tmakeCoreWrapper(_dot, E);\n\t}\n\n\tfor(let i = 0; i < allCoreWrappers.length; i++){\n\t\tlet W = allCoreWrappers[i];\n\t\tmakeCoreWrapper(_dot, W);\n\t}\n\n\treturn _dot as unknown as IDotCore;\n}\n\nconst dot = makeDot();\n\nif (IS_DEV && typeof window !== \"undefined\") {\n\t(window as any).dot = dot;\n}\n\nexport default dot;\n","import dot from \"../dot\";\n\nconst getRouteInfo = () => {\n\tif (typeof window === \"undefined\") return { path: \"/\", search: \"\", hash: \"\" };\n\t\n\tlet path = window.location.pathname;\n\tlet search = window.location.search;\n\tlet hash = window.location.hash;\n\n\tif (hash.startsWith(\"#/\")) {\n\t\tconst hashContent = hash.substring(1); // e.g., \"/docs?id=123#section1\"\n\t\t\n\t\t// Find where the path ends\n\t\tconst firstMark = hashContent.search(/[?#]/);\n\t\tif (firstMark === -1) {\n\t\t\tpath = hashContent;\n\t\t\tsearch = \"\";\n\t\t\thash = \"\";\n\t\t} else {\n\t\t\tpath = hashContent.substring(0, firstMark);\n\t\t\tconst remainder = hashContent.substring(firstMark);\n\t\t\t\n\t\t\tconst hashMark = remainder.indexOf(\"#\");\n\t\t\tif (hashMark === -1) {\n\t\t\t\tsearch = remainder;\n\t\t\t\thash = \"\";\n\t\t\t} else {\n\t\t\t\tsearch = remainder.substring(0, hashMark);\n\t\t\t\thash = remainder.substring(hashMark);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { path, search, hash };\n};\n\nconst initialRoute = getRouteInfo();\nexport const currentPath = dot.state(initialRoute.path);\nexport const previousPath = dot.state(initialRoute.path);\nexport const currentSearch = dot.state(initialRoute.search);\nexport const currentHash = dot.state(initialRoute.hash);\n\n/**\n * Navigates to a new path programmatically.\n * @param path The path to navigate to.\n * @param replace If true, uses replaceState instead of pushState.\n */\nexport function navigate(path: string, replace: boolean = false) {\n\tif (typeof window === \"undefined\") return;\n\t\n\tpreviousPath.value = currentPath.value;\n\t\n\tif (replace) {\n\t\twindow.history.replaceState({}, \"\", path);\n\t} else {\n\t\twindow.history.pushState({}, \"\", path);\n\t}\n\t\n\tconst info = getRouteInfo();\n\tcurrentPath.value = info.path;\n\tcurrentSearch.value = info.search;\n\tcurrentHash.value = info.hash;\n}\n\n/**\n * Returns a reactive object containing the current query parameters.\n */\nexport function useQueryParams() {\n\treturn dot.computed(() => {\n\t\tconst search = currentSearch.value;\n\t\tconst params = new URLSearchParams(search);\n\t\tconst result: Record<string, string> = {};\n\t\tparams.forEach((value, key) => {\n\t\t\tresult[key] = value;\n\t\t});\n\t\treturn result;\n\t});\n}\n\n/**\n * Returns a reactive string containing the current hash (without the #).\n */\nexport function useHash() {\n\treturn dot.computed(() => {\n\t\tconst hash = currentHash.value;\n\t\treturn hash.startsWith(\"#\") ? hash.substring(1) : hash;\n\t});\n}\n\n// Keep the reactive state in sync with browser back/forward buttons.\nif (typeof window !== \"undefined\") {\n\tconst updateState = () => {\n\t\tconst info = getRouteInfo();\n\t\tpreviousPath.value = currentPath.value;\n\t\tcurrentPath.value = info.path;\n\t\tcurrentSearch.value = info.search;\n\t\tcurrentHash.value = info.hash;\n\t};\n\n\twindow.addEventListener(\"popstate\", updateState);\n\twindow.addEventListener(\"hashchange\", updateState);\n}\n","import dot from \"../dot\";\nimport { currentPath, previousPath, navigate } from \"./state\";\nimport { IDotComponent } from \"dothtml-interfaces\";\nimport { Vdom } from \"../vdom-nodes/vdom\";\nimport { ContainerVdom } from \"../vdom-nodes/container-vdom\";\n\nexport type DotComponentSource = any | { new (...args: any[]): IDotComponent } | Vdom;\n\nexport interface RouteDefinition {\n\tpath: string;\n\tcomponent?: DotComponentSource | (() => Promise<any>);\n\tredirect?: string | ((params: Record<string, string>) => string);\n\tname?: string;\n\ttitle?: string | ((params: Record<string, string>) => string);\n\tchildren?: RouteDefinition[];\n\tbeforeEnter?: NavigationGuard;\n}\n\nexport type NavigationGuard = (\n\tto: string, \n\tfrom: string, \n\tnext: (path?: string | boolean) => void\n) => void | string | boolean | Promise<void | string | boolean>;\ntype AfterNavigationHook = (to: string, from: string) => void;\n\nconst beforeHooks: NavigationGuard[] = [];\nconst afterHooks: AfterNavigationHook[] = [];\nconst globalRoutes = dot.state<RouteDefinition[]>([]);\n\nexport function setGlobalRoutes(routes: RouteDefinition[]) {\n\tglobalRoutes.value = routes;\n}\n\nexport function getGlobalRoutes() {\n\treturn globalRoutes.value;\n}\n\n/**\n * Matches a path against a list of route definitions.\n * Supports:\n * - Literal segments: \"about\"\n * - Parameter segments: \"{id}\" or \":id\"\n * - Single segment wildcard: \"+\"\n * - Multi-segment wildcard: \"*\" (must be at the end)\n */\nexport function matchRoute(routes: RouteDefinition[], path: string, basePath: string = \"\") {\n\tconst relativePath = path.startsWith(basePath) ? path.slice(basePath.length) : path;\n\tconst pathSegments = relativePath.split(\"/\").filter(s => s !== \"\");\n\t\n\tfor (const route of routes) {\n\t\tconst routeSegments = route.path.split(\"/\").filter(s => s !== \"\");\n\t\tconst params: Record<string, string> = {};\n\t\tlet match = true;\n\t\t\n\t\tconst hasMultiWildcard = routeSegments.indexOf(\"*\") !== -1;\n\t\tconst isPrefixMatchAllowed = !!(route.children && route.children.length > 0);\n\n\t\tif (!hasMultiWildcard && !isPrefixMatchAllowed && routeSegments.length !== pathSegments.length) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (routeSegments.length > pathSegments.length) {\n\t\t\tcontinue;\n\t\t}\n\t\t\n\t\tfor (let i = 0; i < routeSegments.length; i++) {\n\t\t\tconst rSeg = routeSegments[i];\n\t\t\tconst pSeg = pathSegments[i];\n\t\t\t\n\t\t\tif (rSeg === \"*\") {\n\t\t\t\tmatch = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tif (pSeg === undefined) {\n\t\t\t\tmatch = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tif (rSeg === \"+\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tif (rSeg.startsWith(\"{\") && rSeg.endsWith(\"}\")) {\n\t\t\t\tconst paramName = rSeg.slice(1, -1);\n\t\t\t\tparams[paramName] = pSeg;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tif (rSeg.startsWith(\":\")) {\n\t\t\t\tconst paramName = rSeg.slice(1);\n\t\t\t\tparams[paramName] = pSeg;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tif (rSeg !== pSeg) {\n\t\t\t\tmatch = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (match) {\n\t\t\tconst matchedSegments = pathSegments.slice(0, routeSegments.length);\n\t\t\tconst matchedPath = (basePath.endsWith(\"/\") ? basePath.slice(0, -1) : basePath) + \"/\" + matchedSegments.join(\"/\");\n\t\t\treturn { route, params, matchedPath };\n\t\t}\n\t}\n\t\n\treturn null;\n}\n\nexport const Router = dot.component(\n\tclass implements IDotComponent {\n\t\tstatic props = {\n\t\t\troutes: { type: Array, required: true },\n\t\t\tnotFound: { type: Object, default: null },\n\t\t\tloading: { type: Object, default: null },\n\t\t\tbasePath: { type: String, default: \"\" }\n\t\t};\n\n\t\tprops: any;\n\t\tresolvedComponent = dot.state<any>(null);\n\t\tcurrentMatch: { route: RouteDefinition, params: Record<string, string>, matchedPath: string } | null = null;\n\t\tlastPath = \"\";\n\t\tsubId: number = -1;\n\t\tloaderCache = new Map<any, any>();\n\n\t\tmounting() {\n\t\t\tthis.subId = currentPath.subscribe(() => {\n\t\t\t\t(this as any)._?.cvdom.requestUpdate();\n\t\t\t});\n\t\t}\n\n\t\tunmounting() {\n\t\t\tcurrentPath.unsubscribe(this.subId);\n\t\t}\n\n\t\tbuild(dot: any) {\n\t\t\tsetGlobalRoutes(this.props.routes);\n\t\t\tconst path = currentPath.value;\n\t\t\t\n\t\t\tconst match = matchRoute(this.props.routes, path, this.props.basePath);\n\t\t\tthis.currentMatch = match;\n\n\t\t\tconst proceed = (comp: any) => {\n\t\t\t\tif (!match) return;\n\n\t\t\t\tlet title = match.route.title;\n\t\t\t\tif (typeof title === \"function\") {\n\t\t\t\t\ttitle = title(match.params);\n\t\t\t\t}\n\t\t\t\tif (title) {\n\t\t\t\t\tdocument.title = title;\n\t\t\t\t}\n\n\t\t\t\tif (typeof comp === \"function\" && !comp.prototype?.build) {\n\t\t\t\t\t// Potential lazy loader\n\t\t\t\t\tif (this.loaderCache.has(comp)) {\n\t\t\t\t\t\tthis.resolvedComponent.value = this.loaderCache.get(comp);\n\t\t\t\t\t\tafterHooks.forEach(h => h(path, previousPath.value));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = comp();\n\t\t\t\t\tif (result instanceof Promise) {\n\t\t\t\t\t\tresult.then(m => {\n\t\t\t\t\t\t\tconst resolved = m.default || m;\n\t\t\t\t\t\t\tthis.loaderCache.set(comp, resolved);\n\t\t\t\t\t\t\tthis.resolvedComponent.value = resolved;\n\t\t\t\t\t\t\t(this as any)._?.cvdom.requestUpdate();\n\t\t\t\t\t\t\tafterHooks.forEach(h => h(path, previousPath.value));\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tthis.resolvedComponent.value = this.props.loading || dot.div(\"Loading...\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.resolvedComponent.value = comp;\n\t\t\t\tafterHooks.forEach(h => h(path, previousPath.value));\n\t\t\t};\n\n\t\t\tif (!match) {\n\t\t\t\tthis.resolvedComponent.value = this.props.notFound || dot.div(\"404 - Not Found\");\n\t\t\t} else if (match.route.redirect) {\n\t\t\t\tconst target = typeof match.route.redirect === \"function\" \n\t\t\t\t\t? match.route.redirect(match.params) \n\t\t\t\t\t: match.route.redirect;\n\t\t\t\tnavigate(target, true);\n\t\t\t\treturn dot.div();\n\t\t\t} else {\n\t\t\t\tconst guards = [...beforeHooks];\n\t\t\t\tif (match.route.beforeEnter) {\n\t\t\t\t\tguards.push(match.route.beforeEnter);\n\t\t\t\t}\n\n\t\t\t\tconst runGuards = async (index: number) => {\n\t\t\t\t\tif (index >= guards.length) {\n\t\t\t\t\t\tproceed(match.route.component);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst guard = guards[index];\n\t\t\t\t\tlet nextCalled = false;\n\n\t\t\t\t\tconst handleNext = (nextVal?: string | boolean) => {\n\t\t\t\t\t\tif (nextCalled) return;\n\t\t\t\t\t\tnextCalled = true;\n\n\t\t\t\t\t\tif (nextVal === false) {\n\t\t\t\t\t\t\tnavigate(previousPath.value, true);\n\t\t\t\t\t\t} else if (typeof nextVal === \"string\") {\n\t\t\t\t\t\t\tnavigate(nextVal, true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\trunGuards(index + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tconst result = guard(path, previousPath.value, handleNext);\n\t\t\t\t\t\n\t\t\t\t\tif (result instanceof Promise) {\n\t\t\t\t\t\tconst asyncResult = await result;\n\t\t\t\t\t\tif (!nextCalled) {\n\t\t\t\t\t\t\tif (asyncResult === false || typeof asyncResult === \"string\") {\n\t\t\t\t\t\t\t\thandleNext(asyncResult);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\thandleNext();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (result !== undefined && !nextCalled) {\n\t\t\t\t\t\thandleNext(result as string | boolean);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\trunGuards(0);\n\t\t\t}\n\n\t\t\tconst C = this.resolvedComponent.value;\n\t\t\tif (!C) return dot.div();\n\t\t\t\n\t\t\tconst currentMatch = this.currentMatch;\n\t\t\t\n\t\t\tif (typeof C === \"function\" && C.prototype?.build) {\n\t\t\t\treturn dot.mount(new C(), { \n\t\t\t\t\trouteParams: currentMatch?.params,\n\t\t\t\t\tbasePath: currentMatch?.matchedPath \n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (typeof C === \"object\" && C.build) {\n\t\t\t\treturn dot.mount(C, {\n\t\t\t\t\trouteParams: currentMatch?.params,\n\t\t\t\t\tbasePath: currentMatch?.matchedPath \n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tif (C instanceof Vdom) return C;\n\t\t\treturn dot.div(C);\n\t\t}\n\t}\n);\n\n(Router as any).beforeEach = (guard: NavigationGuard) => {\n\tbeforeHooks.push(guard);\n};\n\n(Router as any).afterEach = (hook: AfterNavigationHook) => {\n\tafterHooks.push(hook);\n};\n\n(Router as any).clearHooks = () => {\n\tbeforeHooks.length = 0;\n\tafterHooks.length = 0;\n};\n","import { RouteDefinition } from \"./router\";\n\n/**\n * Generates a path from a route name and parameters.\n * @param routes The route definitions to search.\n * @param name The name of the route.\n * @param params The parameters to inject into the path.\n * @param basePath The base path for the search (used for recursion).\n */\nexport function generatePath(routes: RouteDefinition[], name: string, params: any = {}, basePath: string = \"\"): string | null {\n\tfor (const route of routes) {\n\t\tconst fullPath = (basePath.endsWith(\"/\") ? basePath.slice(0, -1) : basePath) + (route.path.startsWith(\"/\") ? \"\" : \"/\") + route.path;\n\t\t\n\t\tif (route.name === name) {\n\t\t\t// Inject params into the path.\n\t\t\tlet resolvedPath = fullPath;\n\t\t\tfor (const key in params) {\n\t\t\t\tconst value = params[key];\n\t\t\t\tresolvedPath = resolvedPath.replace(new RegExp(`\\\\{${key}\\\\}`, \"g\"), value);\n\t\t\t\tresolvedPath = resolvedPath.replace(new RegExp(`:${key}`, \"g\"), value);\n\t\t\t}\n\t\t\treturn resolvedPath;\n\t\t}\n\t\t\n\t\tif (route.children) {\n\t\t\tconst result = generatePath(route.children, name, params, fullPath);\n\t\t\tif (result) return result;\n\t\t}\n\t}\n\t\n\treturn null;\n}\n","import dot from \"../dot\";\nimport { currentPath, navigate } from \"./state\";\nimport { IDotComponent } from \"dothtml-interfaces\";\nimport { getGlobalRoutes } from \"./router\";\nimport { generatePath } from \"./helpers\";\n\nexport const Link = dot.component(\n\tclass implements IDotComponent {\n\t\tstatic props = {\n\t\t\tto: { type: String, default: \"\" },\n\t\t\tname: { type: String, default: \"\" },\n\t\t\tparams: { type: Object, default: () => ({}) },\n\t\t\tactiveClass: { type: String, default: \"active\" },\n\t\t\texact: { type: Boolean, default: false },\n\t\t\tlabel: { type: String, default: \"\" }\n\t\t};\n\n\t\tprops: any;\n\t\tslots: any;\n\n\t\tgetResolvedPath() {\n\t\t\tif (this.props.name) {\n\t\t\t\treturn generatePath(getGlobalRoutes(), this.props.name, this.props.params) || \"\";\n\t\t\t}\n\t\t\treturn this.props.to;\n\t\t}\n\n\t\tbuild() {\n\t\t\tconst resolvedPath = dot.computed(() => this.getResolvedPath());\n\n\t\t\treturn dot.a({\n\t\t\t\thRef: resolvedPath,\n\t\t\t\tclass: dot.computed(() => {\n\t\t\t\t\tconst path = currentPath.value;\n\t\t\t\t\tlet target = resolvedPath.value;\n\t\t\t\t\tif (target.startsWith(\"#/\")) {\n\t\t\t\t\t\ttarget = target.substring(1).split(/[?#]/)[0];\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget = target.split(/[?#]/)[0];\n\t\t\t\t\t}\n\t\t\t\t\tconst isActive = this.props.exact \n\t\t\t\t\t\t? path === target \n\t\t\t\t\t\t: path.startsWith(target);\n\t\t\t\t\t\n\t\t\t\t\treturn isActive ? this.props.activeClass : \"\";\n\t\t\t\t}),\n\t\t\t\tonClick: (e: MouseEvent) => {\n\t\t\t\t\t// Only handle left clicks without modifier keys.\n\t\t\t\t\tif (\n\t\t\t\t\t\t(e.button === 0 || e.button === undefined) &&\n\t\t\t\t\t\t!e.ctrlKey &&\n\t\t\t\t\t\t!e.shiftKey &&\n\t\t\t\t\t\t!e.altKey &&\n\t\t\t\t\t\t!e.metaKey\n\t\t\t\t\t) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tnavigate(resolvedPath.value);\n\t\t\t\t\t}\n\n\n\t\t\t\t}\n\n\t\t\t}, this.props.label || this.slots?.default);\n\t\t}\n\t}\n);\n","/**\n * A deep-searching alternative to getElementById that traverses Shadow Roots.\n * Optimized to only recurse when a shadowRoot is present.\n */\nexport function getElementByIdDeep(id: string, root: Document | ShadowRoot = document): HTMLElement | null {\n\t// 1. Check the current root (Light DOM)\n\tlet element = root.getElementById(id);\n\tif (element) return element as HTMLElement;\n\n\t// 2. Only search descendants that might have their own Shadow Roots\n\tconst descendants = root.querySelectorAll('*');\n\tfor (let i = 0; i < descendants.length; i++) {\n\t\tconst shadowRoot = descendants[i].shadowRoot;\n\t\tif (shadowRoot) {\n\t\t\telement = getElementByIdDeep(id, shadowRoot);\n\t\t\tif (element) return element as HTMLElement;\n\t\t}\n\t}\n\n\treturn null;\n}\n","import { currentPath, currentHash } from \"./state\";\nimport { getElementByIdDeep } from \"../helpers/dom-utils\";\nimport dot from \"../dot\";\n\nconst scrollPositions = new Map<string, { x: number, y: number }>();\nlet scrollTimeout: any = null;\n\n/**\n * Performs scrolling based on the current hash or saved position.\n */\nfunction performScroll(path: string, smooth: boolean = false) {\n\tconst hash = currentHash.value;\n\tif (hash && hash.startsWith(\"#\")) {\n\t\tconst id = hash.substring(1);\n\t\tconst element = getElementByIdDeep(id);\n\t\tif (element) {\n\t\t\tconst prefersReducedMotion = typeof window !== \"undefined\" && window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n\t\t\telement.scrollIntoView({ \n\t\t\t\tbehavior: smooth && !prefersReducedMotion ? \"smooth\" : \"auto\" \n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t}\n\n\tconst savedPosition = scrollPositions.get(path);\n\tif (savedPosition) {\n\t\twindow.scrollTo(savedPosition.x, savedPosition.y);\n\t} else {\n\t\twindow.scrollTo(0, 0);\n\t}\n}\n\n/**\n * Schedules a scroll operation, cancelling any previously scheduled one.\n */\nfunction scheduleScroll(path: string, smooth: boolean) {\n\tif (scrollTimeout) clearTimeout(scrollTimeout);\n\tscrollTimeout = setTimeout(() => {\n\t\tperformScroll(path, smooth);\n\t\tscrollTimeout = null;\n\t}, 0);\n}\n\n/**\n * Initializes the scroll manager.\n * Listens for path changes and manages scroll behavior.\n */\nexport function initScrollManager() {\n\tif (typeof window === \"undefined\") return;\n\n\t// Save scroll position before navigation (if possible)\n\t// Note: popstate happens after the URL has changed, so we need to save the position\n\t// of the *previous* page.\n\t\n\twindow.addEventListener(\"scroll\", () => {\n\t\tscrollPositions.set(currentPath.value, {\n\t\t\tx: window.pageXOffset,\n\t\t\ty: window.pageYOffset\n\t\t});\n\t}, { passive: true });\n\n\tconst routeState = dot.computed(() => ({\n\t\tpath: currentPath.value,\n\t\thash: currentHash.value\n\t}));\n\n\trouteState.subscribe((state) => {\n\t\t// Wait for the DOM to update\n\t\tscheduleScroll(state.path, true);\n\t});\n\n\t// Handle initial scroll\n\tscheduleScroll(currentPath.value, false);\n}\n","import { IDotComponent, IDotCore, FrameworkItems } from \"dothtml-interfaces\";\nimport dot from \"./dot\";\n\n/**\n * Base class for DOThtml components.\n * Provides typed props, refs, and framework-injected properties.\n */\nexport abstract class DotComponent<P = any, R = any> implements IDotComponent {\n\t/**\n\t * Typed props for the component.\n\t */\n\tpublic props: P;\n\n\t/**\n\t * Typed refs for the component.\n\t * These are automatically populated by the framework when using the `dot.ref` or `dot.refCollection` features.\n\t */\n\tpublic refs: R = {} as R;\n\n\t/**\n\t * Internal framework metadata and utilities.\n\t */\n\tpublic _: FrameworkItems;\n\n\tconstructor(props?: P) {\n\t\tthis.props = props || {} as P;\n\t}\n\n\t/**\n\t * Emits a custom event from the component's root element.\n\t * This method is automatically injected/overridden by the framework at runtime.\n\t * @param name The name of the event to emit.\n\t * @param detail Optional data to attach to the event.\n\t */\n\tpublic emit(name: string, detail?: any): void {\n\t\t// Implementation is provided by ComponentVdom at runtime.\n\t}\n\n\t/**\n\t * Registers a side effect that is automatically cleaned up when the component is unmounted.\n\t * @param callback The side effect to run. Can return a cleanup function.\n\t */\n\tpublic effect(callback: () => void | (() => void)): void {\n\t\tdot.effect(callback);\n\t}\n\n\t/**\n\t * The build method defines the structure of the component.\n\t * @param dot The DOThtml core object used to create elements and other components.\n\t */\n\tabstract build(dot: IDotCore): any;\n\n\t/**\n\t * Called after the component has been mounted to the DOM.\n\t */\n\tmounted?(): void;\n\n\t/**\n\t * Called when the component is about to be unmounted from the DOM.\n\t */\n\tunmounting?(): void;\n\n\t/**\n\t * Called after the component has been unmounted from the DOM.\n\t */\n\tunmounted?(): void;\n\n\t/**\n\t * Called after the component's VDOM has been built for the first time.\n\t */\n\tbuilt?(): void;\n}\n"],"mappings":"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","names":["index_exports","__export","DotComponent","Link","Priority","Router","currentHash","currentPath","currentSearch","dot_default","generatePath","getGlobalRoutes","initScrollManager","matchRoute","navigate","previousPath","setGlobalRoutes","useHash","useQueryParams","__toCommonJS","DOT_VDOM_PROP_NAME","IS_DEV","process","env","NODE_ENV","Function","Binding","_source","_transform","isWritable","read","value","_get","display","_set","v","_subscribe","subscriber","sync","subscribe","callback","_unsubscribe","id","unsubscribe","source","VMetaNode","removeNodesBetween","start","end","parentNode","Error","current","nextSibling","next","DOT_VDOM_PROP_NAME","_unrender","removeChild","deepEqual","obj1","obj2","visited","Map","has","get","set","Array","isArray","length","prop","hasOwnProperty","floatRegex","RegExp","Vdom","_dot","_onEnterHook","_onLeaveHook","dot","_unrenderAsync","el","_getNodes","find","n","HTMLElement","_unrender","_moveBefore","reference","parent","nodes","length","p","parentElement","Error","i","fragment","ownerDocument","document","createDocumentFragment","appendChild","insertBefore","__isRendered","_isRendered","value","toString","createElement","_render","innerHTML","_renderBefore","dummy","childNodes","cn","removeChild","_renderAfter","nextSibling","temp","createTextNode","_moveTo","target","text","c","html","md","mount","attrs","when","condition","then","each","collection","callback","otherwiseWhen","seal","otherwise","attr","A","style","on","event","onEnter","onLeave","empty","remove","TextVdom","Vdom","_text","textNode","observerId","text","_render","node","Binding","ownerDocument","createTextNode","_get","_subscribe","appendChild","_unrender","parentElement","removeChild","_unsubscribe","_getNodes","_getLastChild","toString","temp","document","div","createElement","innerHTML","FragmentVdom","Vdom","_children","dot","_render","target","_isRendered","i","length","_unrender","_getNodes","nodes","push","_getLastChild","Priority","Scheduler","queues","Set","isPending","startTime","frameYieldMs","isSync","isSyncing","onError","channel","MessageChannel","port1","onmessage","workLoop","enqueue","subscription","priority","Priority","Normal","isQueued","add","Immediate","flushSync","scheduleFlush","port2","postMessage","setTimeout","shouldYield","performance","now","flushQueues","p","Background","queue","size","items","Array","from","clear","i","length","active","update","err","console","error","j","originalShouldYield","hasMoreWork","setSync","sync","scheduler","CollectionVdom","Vdom","MAX_BATCH_SIZE","value","renderCallback","startNode","endNode","observerId","mappedItems","updateState","dot","_render","target","Binding","_subscribe","ownerDocument","createTextNode","appendChild","originalShouldYield","scheduler","shouldYield","updateList","_unrender","_unsubscribe","i","length","I","vdom","afterNode","parentElement","removeChild","_getNodes","nodes","push","_getLastChild","getTailAppendPrefixLength","newKeys","old","keyValue","isItemPositionedAfter","item","anchor","nextSibling","lastNode","reuseExistingItem","existing","index","deepEqual","vdomOrContent","observableIndex","build","FragmentVdom","_dot","mount","TextVdom","_root","_set","getInsertBeforeAnchor","fromIndex","items","_isRendered","countConsecutiveUnrendered","count","batchRenderNewItems","parent","insertBefore","fragment","createDocumentFragment","removeItem","_unrenderAsync","unmappedCollection","_get","currentItems","Array","isArray","Object","values","newItems","key","_source","map","v","keys","k","tailAppendPrefix","oldMap","Map","set","nextMappedItems","currentIndex","step","state","get","delete","Signal","bind","oldItems","from","_moveBefore","slice","runLength","batch","batchItem","_renderAfter","ConditionalVdom","Vdom","conditions","sealed","renderedIndex","currentUpdatePromise","nextIndex","dot","addCondition","condition","vNode","seal","Error","C","startAnchor","endAnchor","observerId","push","_isRendered","renderClause","parentElement","updateConditions","node","ownerDocument","createTextNode","appendChild","Binding","_subscribe","_render","c","length","removeCNode","_unsubscribe","start","end","removeChild","_unrender","i","_getNodes","nodes","_getLastChild","newIndex","_get","performUpdate","oldIndex","Promise","resolve","_unrenderAsync","next","_renderBefore","HtmlVdom","Vdom","beforeNode","afterNode","_html","observerId","html","updateHtml","removeNodesBetween","temp","ownerDocument","createElement","innerHTML","firstChild","parentElement","insertBefore","_render","target","Binding","_get","_subscribe","createTextNode","appendChild","_unrender","parent","removeChild","_unsubscribe","_getNodes","nodes","curr","nextSibling","push","_getLastChild","toString","ReactiveAttr","elementVdom","attribute","Subscription","boundReactive","item","active","isQueued","update","value","_get","TextVdom","textNode","textContent","_isReactiveVdom","HtmlVdom","updateHtml","ReactiveAttr","elementVdom","updateReactiveAttr","attribute","VMetaNode","CollectionVdom","updateList","ConditionalVdom","updateConditions","Function","dependencyStack","CB_OFFSET","CATEGORIES","Signal","bindAs","transform","br","Binding","_transform","display","bind","_value","key","subscribers","Map","isWritable","value","active","dependencyStack","length","addDependency","v","setValue","getValue","priority","Priority","Normal","updater","sub","values","sync","update","isQueued","Immediate","scheduler","enqueue","nextId","subscribe","callback","_subscribe","boundReactive","item","id","Subscription","set","unsubscribe","has","get","delete","_detachBinding","refresh","updatedValue","updateObservers","AttributeVNode","VMetaNode","attr","value","target","observables","attrName","attrValue","render","k","v","Signal","bind","Binding","id","_subscribe","update","tokens","_get","push","length","setAttribute","join","removeAttribute","unrender","o","_unsubscribe","Number","allProps","color","length","hybrid","url","transformation","filter","time","misc","lengthSuffixes","split","timeSuffixes","angleSuffixes","frequencySuffixes","cssProps","cssType","props","p","key","join","s","dotName","cssName","toLowerCase","type","unit","undefined","css_props_default","CssFunctionBuilderVStyle","funcs","propName","toString","result","t","argValues","Array","from","args","map","arg","v","undefined","f","val","Binding","_get","Signal","value","split","join","func","trim","appendFunction","filter","push","formatCssLength","value","defaultUnits","Binding","_get","Signal","Array","map","v","join","isNaN","tokens","trim","split","length","t","Number","match","floatRegex","units","formatCssPercentage","formatCssColor","r","g","b","a","formatCssAngle","angle","FilterVStyle","CssFunctionBuilderVStyle","blur","v","appendFunction","f","formatCssLength","brightness","formatCssPercentage","contrast","dropShadow","x","y","color","formatCssColor","grayscale","hueRotate","invert","opacity","sepia","saturate","TransformVStyle","CssFunctionBuilderVStyle","matrix3d","a1","b1","c1","d1","a2","b2","c2","d2","a3","b3","c3","d3","a4","b4","c4","d4","appendFunction","arguments","matrix","a","b","c","d","tx","ty","translate","x","y","length","f","formatCssLength","v","translate3d","z","translateX","translateY","translateZ","scale","scale3d","scaleX","scaleY","scaleZ","rotate","formatCssAngle","rotate3d","rotate3dDeg","rotate3dRad","rotate3dGrad","rotate3dTurn","rotateX","rotateY","rotateZ","skew","skewX","skewY","perspective","BaseVStyle","_isBase","props","onUpdate","setProp","propName","value","push","prop","_setOnUpdate","callback","variable","name","startsWith","v","getProps","key","cssProps","prototype","StyleVNode","VMetaNode","target","document","shadowRoot","styleSource","styleElement","observables","observableIds","isQueued","updateSubscription","active","update","__name","applyStyles","BaseVStyle","_setOnUpdate","extractObservables","source","getProps","Array","isArray","i","length","p","processValue","prop","value","newVal","setter","tryExtractObservable","CssFunctionBuilderVStyle","builder","FilterVStyle","TransformVStyle","funcArray","funcValue","k","v","w","methodKey","replace","Binding","Signal","indexOf","push","id","subscribe","render","window","observable","createElement","appendChild","head","scheduler","enqueue","Priority","Normal","textContent","getStyleString","_get","applySingleStyle","cssValue","toString","applyObjectToBuilder","cssProp","cssUnit","registeredProp","cssProps","cssName","unit","type","undefined","formatCssLength","HTMLElement","style","setProperty","styles","formatSingleStyle","unrender","_unsubscribe","unsubscribe","remove","SyntheticEvent","nativeEvent","target","currentTarget","type","timeStamp","defaultPrevented","detail","_propagationStopped","_immediatePropagationStopped","e","preventDefault","stopPropagation","stopImmediatePropagation","isPropagationStopped","isImmediatePropagationStopped","EventManager","managers","Map","getForDocument","document","manager","get","set","listeners","WeakMap","activeEventTypes","Set","addListener","element","eventType","handler","modifiers","elementListeners","handlers","push","ensureGlobalListener","removeListener","index","findIndex","h","splice","length","delete","has","useCapture","addEventListener","nativeEvent","dispatchEvent","add","path","composedPath","current","target","parentNode","host","syntheticEvent","SyntheticEvent","window","currentTarget","includes","stopPropagation","preventDefault","isImmediatePropagationStopped","isPropagationStopped","ElementVdom","Vdom","_children","children","ContainerVdom","_dot","_parent","value","element","tag","attributes","events","attributeObserverIds","childBuilders","attrVNodes","styleVNodes","ref","inputListener","compositionStartListener","compositionEndListener","manualInputAllowed","isComposing","activeBindings","lastSyncedValues","dot","_render","node","_isRendered","ownerDocument","createElement","DOT_VDOM_PROP_NAME","appendChild","i","length","e","renderEvent","name","callback","modifiers","undefined","renderAttr","a","_onEnterHook","_unrender","eventManager","EventManager","getForDocument","removeListener","toLowerCase","parentNode","removeChild","unrender","item","observable","_unsubscribe","id","_getNodes","_getLastChild","toString","outerHTML","setAttr","attr","targetAttr","typeAttr","Binding","_get","Signal","type","oldVal","StyleVNode","idx","indexOf","splice","AttributeVNode","Array","BaseVStyle","builder","updateReactiveAttr","isExplicitBind","setAttribute","checked","selected","removeAttribute","join","some","_subscribe","ReactiveAttr","push","isWritable","target","binding","val","currentSigVal","lastVal","_set","console","error","message","addListener","render","addEventListener","event","ContainerVdom","Vdom","_children","_parent","dot","_addChild","content","push","ElementVdom","element","_render","node","_isRendered","c","length","_unrender","_getNodes","nodes","i","_getLastChild","Ref","Signal","_value","Proxy","get","target","prop","receiver","Reflect","val","value","args","apply","element","ready","Promise","resolve","id","subscribe","unsubscribe","allEventAttr","onAbort","onBlur","onChange","onInput","onCanPlay","onCantPlayThrough","onClick","onCopy","onContextMenu","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onError","onFocus","onHashChange","onInvalid","onKeyDown","onKeyPress","onKeyUp","onLoad","onLoadedData","onLoadedMetadata","onLoadStart","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onPointerCancel","onPointerDown","onPointerEnter","onPointerLeave","onPointerMove","onPointerOut","onPointerOver","onPointerUp","onTouchStart","onTouchEnd","onTouchCancel","onTouchMove","onMouseWheel","onOffline","onOnline","onPageHide","onPagePaste","onPageShow","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onReset","onResize","onScroll","onSearch","onSeeked","onSeeking","onSelect","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnload","onVolumeChange","onWaiting","onWheel","isContent","__name","arg","ContainerVdom","Vdom","_root","_children","build","Signal","Binding","Array","isArray","applyContent","dot","n","cont","target","ElementVdom","children","i","length","_addChild","mount","val","bind","ReactiveVdom","TextVdom","applyAttributes","attrs","k","attr","Ref","eventName","modifiers","includes","parts","split","slice","allEventAttr","startsWith","toUpperCase","Error","addEventListener","substring","toLowerCase","setAttr","createElement","tag","args","j","stylesheetCache","WeakMap","renderStylesheet","styleCallback","document","finalStylesheet","defaultView","CSSStyleSheet","styles","css","docCache","get","Map","set","has","DocumentCSSStyleSheet","sharedStyles","replaceSync","style","createElement","innerHTML","componentStack","getCurrentComponent","__name","length","pushComponent","component","push","popComponent","pop","Computed","Signal","getter","dependencies","Map","isQueued","isEvaluating","active","dirty","error","isWritable","updateSubscription","update","__name","_update","value","Error","addDependency","signal","newDependencies","has","add","requestUpdate","scheduler","enqueue","Priority","Normal","Set","clear","dependencyStack","push","newValue","hasError","e","pop","setValue","toRemove","subId","unsubscribe","delete","subscribe","set","dispose","KeyframesBuilder","steps","sheet","step","selector","callback","style","BaseVStyle","push","from","to","at","percent","toString","indent","map","s","formatPropsForBlock","join","StyleSheetBuilder","rules","theme","ghostVars","varCounter","getGhostVars","setTheme","template","strings","values","Computed","result","i","length","val","Signal","Binding","_get","value","class","name","callback","rule","selector","style","BaseVStyle","push","type","media","condition","builder","container","supports","keyframes","KeyframesBuilder","v","startsWith","applyObjectToBuilder","cssValue","funcArray","Array","isArray","funcValue","k","methodKey","replace","formatPropsForBlock","getProps","map","p","registered","cssProps","prop","cssProp","CssFunctionBuilderVStyle","FilterVStyle","TransformVStyle","isReactive","f","funcs","arg","args","varName","reactiveSource","reactiveValue","toString","unit","formatCssLength","cssName","undefined","join","indent","r","props","hasRules","dispose","gv","_source","RefCollection","_refs","Map","get","key","has","set","Ref","elements","result","forEach","ref","value","callback","map","push","registry","Map","registerInstance","id","instance","has","set","Set","get","add","unregisterInstance","delete","getInstances","HandledError","Error","Object","setPrototypeOf","prototype","tagId","getStableTagName","hmrId","toLowerCase","replace","sanitized","ComponentVdom","Vdom","component","shadowEl","childShadowVdom","events","styleVNodes","isQueued","isBuilding","computedSignals","buildComputedSignals","effects","disposables","ref","slots","parentComponent","lastError","updateSubscription","active","update","__name","rebuild","dot","ContainerVdom","getCurrentComponent","_","_meta","__hmrId","IS_DEV","tagName","ts","Math","floor","performance","now","toString","tId","cvdom","refs","isRendered","emit","name","detail","dispatchEvent","CustomEvent","bubbles","composed","_trackedComputeds","w","registerComputed","_trackedEffects","e","registerEffect","_trackedDisposables","d","registerDisposable","registerInstance","signal","push","effect","disposable","setRef","init","validateProps","pushComponent","build","_dot","popComponent","built","subscribeToProps","err","handleError","errorCaught","renderErrorBox","fallback","applyContent","shadow","shadowRoot","innerHTML","_render","secondErr","onError","props","key","prop","Signal","Binding","subscribe","requestUpdate","scheduler","enqueue","Priority","Normal","_unrender","dispose","errorBox","document","createElement","setAttribute","title","textContent","style","marginTop","appendChild","message","fontWeight","fontSize","marginBottom","stack","opacity","schema","componentName","rule","value","undefined","default","type","Array","required","valueToValidate","actualType","String","Number","Boolean","Function","isArray","validator","setupCustomElement","CustomElementConstructor","defaultView","customElements","get","DocSpecificHtmlEl","HTMLElement","_component","_renderComponent","attachShadow","mode","cachedStyles","_cachedStyles","generateStyles","adoptedStyleSheets","allSharedStylesheets","oldTags","querySelectorAll","t","from","remove","i","allStyleTags","length","cloneNode","_isDynamicStyle","updateDynamicStyle","builder","StyleSheetBuilder","_theme","setTheme","styles","stylize","styleVal","_get","finalStyle","hasRules","dynamicStyleTag","getElementById","id","subId","unsubscribe","ghostVars","getGhostVars","ghostStyleSource","gv","ghostVNode","StyleVNode","render","_isRendered","define","sharedStylesheets","styleTags","styleItem","renderStylesheet","CSSStyleSheet","globalStyles","gs","transformedGs","addSlot","content","applySlotAttribute","nodes","_getNodes","node","mounting","ownerDocument","renderEvent","callback","modifiers","mounted","_onEnterHook","onEnter","unmounting","eventManager","EventManager","getForDocument","removeListener","unrender","unmounted","unregisterInstance","_hmrSwap","NewClass","oldComponent","newComponent","oldVal","newVal","isWritable","RefCollection","_getLastChild","_unrenderAsync","_onLeaveHook","onLeave","_moveTo","target","oldDoc","newDoc","addEventListener","event","addListener","on","ReactiveVdom","Vdom","binding","beforeNode","afterNode","currentVdom","observerId","_isReactiveVdom","dot","_toVdom","value","TextVdom","build","cv","ComponentVdom","_dot","init","Array","isArray","container","ContainerVdom","item","_addChild","_render","target","_isRendered","ownerDocument","createTextNode","appendChild","_get","update","_subscribe","_unrender","removeNodesBetween","_renderBefore","_unsubscribe","parentElement","removeChild","_getNodes","nodes","push","_getLastChild","toString","Effect","callback","cleanup","dependencies","Map","isQueued","isEvaluating","active","dirty","newDependencies","Set","updateSubscription","update","__name","run","addDependency","signal","has","add","requestUpdate","scheduler","enqueue","Priority","Normal","Error","e","console","error","undefined","clear","dependencyStack","push","result","pop","toRemove","subId","unsubscribe","delete","subscribe","set","dispose","component","Ctor","decorated","args","tracker","computedSignals","effects","disposables","registerComputed","w","push","registerEffect","e","registerDisposable","d","pushComponent","popComponent","build","props","Object","assign","_trackedComputeds","_trackedEffects","_trackedDisposables","defineProperty","value","name","key","getOwnPropertyNames","documentId","WindowWrapper","window","document","title","root","_vdom","width","height","isOpen","tether","syncStyles","position","tetheredWindows","Set","eventListeners","wrapperEventListeners","options","content","open","console","warn","left","top","features","screen","screenX","outerWidth","screenY","outerHeight","Error","setupDocument","add","size","addEventListener","closeAllTethered","_unrender","tempElement","createElement","textContent","encodedTitle","innerHTML","write","close","body","DOT_VDOM_PROP_NAME","syncStylesWithParent","dot","mount","name","callback","setTimeout","closed","delete","emit","on","event","push","detail","focus","bringToFront","resizeTo","moveTo","__name","forEach","w","clear","className","rootStyles","getComputedStyle","documentElement","i","style","length","prop","startsWith","setProperty","getPropertyValue","adoptedStyleSheets","clonedSheets","sheet","newSheet","CSSStyleSheet","cssText","cssRules","replaceSync","e","head","querySelectorAll","appendChild","cloneNode","storeRegistry","Map","createStore","options","id","state","stateFn","getters","actions","has","get","createInstance","__name","store","$id","_state","_getters","_effects","tracker","computedSignals","effects","disposables","registerComputed","w","push","registerEffect","e","registerDisposable","d","pushComponent","rawState","key","val","signal","Signal","value","Object","defineProperty","enumerable","configurable","computed","Computed","call","args","apply","popComponent","_getters_list","_disposables","$dispose","dispose","effect","disposable","delete","set","singletonStore","currentStore","currentComponent","getCurrentComponent","getStore","clearStores","forEach","clear","getStores","stores","allTags","allTagsSet","Set","allCoreWrappers","SlotVdom","Vdom","name","fallbackOrScope","fallback","scopedContent","element","dot","_render","node","_isRendered","document","ownerDocument","slotContent","getCurrentComponent","component","slots","ContainerVdom","_dot","applyContent","undefined","createElement","appendChild","_unrender","remove","_getNodes","_getLastChild","DotChain","Vdom","_root","dot","initial","_addChild","node","ContainerVdom","FragmentVdom","_children","push","frag","_dot","_render","target","_unrender","_unrenderAsync","_renderBefore","reference","_renderAfter","_moveBefore","parent","_isRendered","value","_getNodes","_getLastChild","slot","name","content","lastChild","ComponentVdom","addSlot","undefined","SlotVdom","reduceReactive","value","Signal","bind","promote","vdom","DotChain","_dot","Vdom","prototype","_addChild","node","text","c","val","Binding","ReactiveVdom","TextVdom","html","HtmlVdom","md","slot","name","fallback","lastChild","_getLastChild","_root","ComponentVdom","undefined","addSlot","SlotVdom","mount","args","cn","i","length","arg","isContent","k","setRef","startsWith","eventName","modifiers","includes","parts","split","slice","addEventListener","substring","toLowerCase","props","init","e","HandledError","when","condition","then","condNode","ConditionalVdom","thenContainer","build","FragmentVdom","_children","push","addCondition","each","collection","callback","collectionVdom","CollectionVdom","otherwiseWhen","seal","thenNode","Error","otherwise","attr","A","ElementVdom","setAttr","style","builder","BaseVStyle","on","event","onEnter","_onEnterHook","_isRendered","el","_getNodes","find","n","HTMLElement","onLeave","_onLeaveHook","empty","root","element","innerHTML","children","_unrender","ContainerVdom","_parent","remove","fade","duration","animate","opacity","finished","slide","height","overflow","scrollHeight","allTags","tag","createElement","makeCoreWrapper","__name","d","fn","allTagsSet","has","arguments","makeDot","targetSelector","targetWindow","window","ownerDocument","defaultView","DOT_VDOM_PROP_NAME","tagName","toLocaleLowerCase","document","querySelectorAll","onError","state","key","o","computed","getter","Computed","currentComponent","getCurrentComponent","registerComputed","effect","Effect","registerEffect","dispose","component","hmr","swap","id","NewClass","instances","getInstances","instance","_hmrSwap","store","createStore","getStore","clearStores","Object","defineProperty","get","getStores","create","Ctor","tracker","computedSignals","effects","disposables","w","registerDisposable","pushComponent","popComponent","_trackedComputeds","_trackedEffects","_trackedDisposables","ref","Ref","refCollection","RefCollection","alpha","color","_get","percentage","Math","round","max","min","globalStyles","useGlobalStyles","styles","stylesArray","Array","isArray","s","useStyles","css","_theme","setTheme","theme","applyToDocument","styleItem","renderStylesheet","CSSStyleSheet","adoptedStyleSheets","head","appendChild","StyleVNode","render","documentElement","options","WindowWrapper","flushSync","scheduler","setSync","sync","err","console","error","E","allCoreWrappers","W","dot","IS_DEV","dot_default","getRouteInfo","__name","window","path","search","hash","location","pathname","startsWith","hashContent","substring","firstMark","remainder","hashMark","indexOf","initialRoute","currentPath","dot","state","previousPath","currentSearch","currentHash","navigate","replace","value","history","replaceState","pushState","info","useQueryParams","computed","params","URLSearchParams","result","forEach","key","useHash","updateState","addEventListener","beforeHooks","afterHooks","globalRoutes","dot","state","setGlobalRoutes","routes","value","getGlobalRoutes","matchRoute","path","basePath","pathSegments","startsWith","slice","length","split","filter","s","route","routeSegments","params","match","hasMultiWildcard","indexOf","isPrefixMatchAllowed","children","i","rSeg","pSeg","undefined","endsWith","paramName","matchedSegments","matchedPath","join","Router","component","props","type","Array","required","notFound","Object","default","loading","String","resolvedComponent","currentMatch","lastPath","subId","loaderCache","Map","mounting","currentPath","subscribe","_","cvdom","requestUpdate","unmounting","unsubscribe","build","proceed","__name","comp","title","document","prototype","has","get","forEach","h","previousPath","result","Promise","then","m","resolved","set","div","redirect","target","navigate","guards","beforeEnter","push","runGuards","index","guard","nextCalled","handleNext","nextVal","asyncResult","C","mount","routeParams","Vdom","beforeEach","afterEach","hook","clearHooks","generatePath","routes","name","params","basePath","route","fullPath","endsWith","slice","path","startsWith","resolvedPath","key","value","replace","RegExp","children","result","Link","dot","component","props","to","type","String","default","name","params","Object","__name","activeClass","exact","Boolean","label","slots","getResolvedPath","generatePath","getGlobalRoutes","build","resolvedPath","computed","a","hRef","class","path","currentPath","value","target","startsWith","substring","split","onClick","e","button","undefined","ctrlKey","shiftKey","altKey","metaKey","preventDefault","navigate","getElementByIdDeep","id","root","document","element","getElementById","descendants","querySelectorAll","i","length","shadowRoot","scrollPositions","Map","scrollTimeout","performScroll","path","smooth","hash","currentHash","value","startsWith","id","substring","element","getElementByIdDeep","prefersReducedMotion","window","matchMedia","matches","scrollIntoView","behavior","savedPosition","get","scrollTo","x","y","scheduleScroll","clearTimeout","setTimeout","initScrollManager","addEventListener","set","currentPath","pageXOffset","pageYOffset","passive","dot","computed","subscribe","state","DotComponent","props","refs","_","emit","name","detail","effect","callback","dot","dot","version","initScrollManager","currentPath","currentSearch","currentHash","navigate","useQueryParams","useHash","Router","Link","window","document"]}