defuss 1.5.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom-DcRUm6dj.mjs","sources":["../src/common/path.ts","../src/store/store.ts","../src/render/ref.ts","../src/dequery/dequery.ts","../src/render/isomorph.ts","../src/common/dom.ts"],"sourcesContent":["const ARRAY_INDEX = /(.*)\\[(\\d+)\\]/;\nconst IS_NUMBER = /^\\d+$/;\n\nexport const getAllKeysFromPath = (path: string): Array<string | number> =>\n path.split('.').flatMap(key => {\n const match = key.match(ARRAY_INDEX);\n return match ? [...getAllKeysFromPath(match[1]), Number(match[2])] : key;\n });\n\nexport const ensureKey = (\n obj: Record<string, any>,\n key: string | number,\n nextKey?: string | number\n): void => {\n if (!(key in obj)) {\n obj[key] = IS_NUMBER.test(String(nextKey)) ? [] : {};\n }\n};\n\nexport const getByPath = (obj: any, path: string): any => {\n const keys = getAllKeysFromPath(path);\n return keys.reduce((result, key) => (result == null ? undefined : result[key]), obj);\n};\n\nexport const setByPath = (obj: any, path: string, value: any): any => {\n const keys = getAllKeysFromPath(path);\n const key = keys[0];\n const newObj = Array.isArray(obj) ? [...obj] : { ...obj };\n\n if (keys.length === 1) {\n if (value === undefined) {\n Array.isArray(newObj) ? newObj.splice(Number(key), 1) : delete newObj[key];\n } else {\n newObj[key] = value;\n }\n return newObj;\n }\n\n ensureKey(newObj, key, keys[1]);\n newObj[key] = setByPath(newObj[key], keys.slice(1).join('.'), value);\n return newObj;\n};\n","import { getByPath, setByPath } from '../common/index.js';\n\nexport type Listener<T> = (newValue: T, oldValue?: T, changedKey?: string) => void;\n\nexport interface Store<T> {\n value: T;\n get: <D = T>(path?: string) => D;\n set: <D = T>(pathOrValue: string | D, value?: D) => void;\n subscribe: (listener: Listener<T>) => () => void;\n}\n\nexport const createStore = <T>(initialValue: T): Store<T> => {\n let value: T = initialValue; // internal state\n const listeners: Array<Listener<T>> = [];\n\n const notify = (oldValue: T, changedKey?: string) => {\n listeners.forEach(listener => listener(value, oldValue, changedKey));\n };\n\n return {\n // allow reading value but prevent external mutation\n get value() {\n return value;\n },\n\n get(path?: string) {\n return path ? getByPath(value, path) : value;\n },\n\n set(pathOrValue: string | any, newValue?: any) {\n const oldValue = value;\n\n if (newValue === undefined) {\n // replace entire store value\n if (oldValue !== pathOrValue) {\n value = pathOrValue;\n notify(oldValue);\n }\n } else {\n // update a specific path\n const updatedValue = setByPath(value, pathOrValue, newValue);\n if (oldValue !== updatedValue) {\n value = updatedValue;\n notify(oldValue, pathOrValue);\n }\n }\n },\n\n subscribe(listener) {\n listeners.push(listener);\n return () => {\n const index = listeners.indexOf(listener);\n if (index >= 0) listeners.splice(index, 1);\n };\n },\n };\n};\n","import type { Ref, RefUpdateFn } from '../render/types.js';\nimport { createStore } from '../store/store.js';\n\nexport const isRef = (obj: any): obj is Ref<Element> =>\n obj && typeof obj === \"object\" && \"current\" in obj;\n\nexport function createRef<ST = any, NT extends Node | Element | Text | null = HTMLElement>(refUpdateFn?: RefUpdateFn<ST>, defaultState?: ST): Ref<NT, ST> {\n\n const stateStore = createStore<ST>(defaultState as ST);\n\n const ref: Ref<NT, ST> = {\n current: null as NT,\n store: stateStore,\n get state() {\n return stateStore.value;\n },\n set state(value: ST) {\n stateStore.set(value);\n },\n update: (state: ST) => {\n stateStore.set(state);\n },\n subscribe: (refUpdateFn: RefUpdateFn<ST>) => stateStore.subscribe(refUpdateFn),\n }\n\n if (typeof refUpdateFn === 'function') {\n ref.subscribe(refUpdateFn);\n }\n return ref;\n}","import { updateDom, updateDomWithVdom } from \"../common/dom.js\";\nimport { isJSX, isRef, renderIsomorphicSync, type AllHTMLElements, type CSSProperties, type Globals, type Ref, type RenderInput } from \"../render/index.js\";\n\n// --- Types & Helpers ---\nexport type NodeType = Node | Text | Element | Document | DocumentFragment | HTMLElement | SVGElement;\nexport type FormFieldValue = string | Date | File | boolean | number;\nexport interface FormKeyValues { [keyOrPath: string]: FormFieldValue; }\n\nconst elementGuard = <T = HTMLElement>(el: NodeType): T => {\n if (el instanceof HTMLElement) return el as T;\n console.warn(\"Expected HTMLElement, but found:\", el?.nodeName ?? el);\n return el as T;\n};\n\nexport interface DequeryOptions {\n maxWaitMs?: number;\n timeout?: number;\n delay?: number;\n initialEl?: NodeType;\n state?: any;\n verbose?: boolean;\n onTimeGuardError?: (ms: number, call: Call) => void;\n}\n\nexport const adefaultConfig: DequeryOptions = {\n maxWaitMs: 1000,\n timeout: 5000,\n delay: 0,\n verbose: false,\n onTimeGuardError: () => { }\n};\n\nexport type ElementCreationOptions = JSX.HTMLAttributesLowerCase & JSX.HTMLAttributesLowerCase & { html?: string, text?: string };\n\n// --- Core Async Call & Chain ---\nclass Call {\n name: string;\n fn: Function;\n args: any[];\n constructor(fn: Function, ...args: any[]) {\n this.name = fn.name;\n this.fn = fn;\n this.args = args;\n }\n}\n\ninterface DequeryArrayLike {\n [index: number]: NodeType;\n}\n\nclass CallChainImpl implements DequeryArrayLike {\n [index: number]: NodeType;\n\n options: DequeryOptions;\n callStack: Array<Call>;\n chainStack: Array<Array<Call>>;\n elements: Array<NodeType>;\n prevElements: Array<NodeType>;\n stoppedWithError: boolean;\n lastResult: any;\n isResolved: boolean;\n\n constructor(options: DequeryOptions = {}, isResolved = false) {\n this.options = { ...adefaultConfig, ...options };\n this.callStack = [];\n this.chainStack = [];\n this.elements = options.initialEl ? [options.initialEl] : [];\n this.prevElements = [];\n this.stoppedWithError = false;\n this.lastResult = null;\n this.isResolved = isResolved;\n\n // Create a proxy to allow array-like access and proper \"this\" binding\n const proxy = new Proxy(this, {\n get(target, prop) {\n if (typeof prop === 'string' && !Number.isNaN(Number(prop))) {\n return target.elements[Number(prop)] as NodeType;\n }\n const value = (target as any)[prop];\n if (typeof value === 'function') {\n // biome-ignore lint/complexity/useArrowFunction: <explanation>\n return function (...args: any[]) {\n // Bind method calls to the proxy so that \"this\" remains the proxy\n return value.apply(proxy, args)\n };\n }\n return value;\n }\n });\n // biome-ignore lint/correctness/noConstructorReturn: <explanation>\n return proxy;\n }\n\n // --- Internal ---\n resetElements() {\n this.prevElements = [...this.elements];\n this.elements = this.options.initialEl ? [this.options.initialEl] : [];\n }\n getFirstElement() {\n return this.elements[0];\n }\n\n createSubChain(clone = true) {\n if (clone) {\n const newChain = new DequeryChain({ ...this.options, initialEl: this.getFirstElement() }, true);\n newChain.elements = this.elements\n newChain.prevElements = this.prevElements\n newChain.callStack = this.callStack\n newChain.chainStack = this.chainStack\n newChain.stoppedWithError = this.stoppedWithError;\n newChain.lastResult = this.lastResult;\n return newChain;\n } else {\n return new DequeryChain({ ...this.options, initialEl: this.getFirstElement() }, true);\n }\n }\n\n // --- Initialization ---\n __init(selectorHtmlRefOrElementRef: string | NodeType | Ref<NodeType, any> | RenderInput,\n options: DequeryOptions | ElementCreationOptions\n ) {\n if (!selectorHtmlRefOrElementRef) throw new Error('dequery: selector/ref/element required');\n if (typeof selectorHtmlRefOrElementRef === 'string') {\n if (selectorHtmlRefOrElementRef.indexOf('<') === 0) {\n this.elements = renderHTML(selectorHtmlRefOrElementRef)\n\n const { text, html, ...attributes } = options as ElementCreationOptions;\n\n if (typeof this.elements[0] !== \"undefined\" && this.elements[0] instanceof Element) {\n // set attributes\n Object.entries(attributes).forEach(([key, value]) => {\n (this.elements[0] as Element).setAttribute(key, String(value));\n });\n\n // set innerHTML or textContent if provided\n if (html) {\n this.elements[0].innerHTML = html;\n } else if (text) {\n this.elements[0].textContent = text;\n }\n }\n return this.createSubChain();\n } else {\n return this.query(selectorHtmlRefOrElementRef);\n }\n } else if (isRef(selectorHtmlRefOrElementRef)) {\n return this.ref(selectorHtmlRefOrElementRef);\n } else if ((selectorHtmlRefOrElementRef as Node).nodeType) {\n this.elements = [selectorHtmlRefOrElementRef as NodeType];\n return this.createSubChain();\n } else if (isJSX(selectorHtmlRefOrElementRef)) {\n const renderResult = renderIsomorphicSync(selectorHtmlRefOrElementRef as RenderInput, undefined, globalThis as Globals);\n this.elements = (typeof renderResult !== \"undefined\" ? Array.isArray(renderResult) ? renderResult : [renderResult] : []) as NodeType[];\n return this.createSubChain();\n }\n throw new Error('Unsupported selectorOrEl type');\n }\n\n // --- Traversal ---\n debug(cb: (el: NodeType | Array<NodeType>) => void) {\n this.callStack.push(new Call(function debug(this: CallChainImpl) {\n cb(this.elements);\n return this.createSubChain(true);\n }));\n return this;\n }\n\n ref(ref: Ref<NodeType>) {\n this.callStack.push(new Call(async function ref(this: CallChainImpl, refObj: Ref<NodeType>) {\n await waitForRefWithPolling(refObj, this.options.maxWaitMs!);\n if (refObj.current) {\n this.elements = [elementGuard(refObj.current)];\n } else {\n throw new Error('Ref is null or undefined');\n }\n return this.createSubChain();\n }, ref));\n return this;\n }\n\n query(selector: string) {\n // @ts-ignore\n this.callStack.push(new Call(async function query(this: CallChainImpl, sel: string) {\n await waitForSelectorWithPolling(sel, this.options.maxWaitMs!);\n this.elements = Array.from(document.querySelectorAll(sel));\n return this.createSubChain();\n }, selector));\n return this;\n }\n\n all() {\n this.callStack.push(new Call(function all(this: CallChainImpl) {\n return this.elements.map(el => new DequeryChain({ ...this.options, initialEl: el }, true));\n }));\n return this;\n }\n\n get length(): number {\n return this.elements.length;\n }\n\n first() {\n this.callStack.push(new Call(function first(this: CallChainImpl) {\n this.elements = [this.elements[0]];\n return this.createSubChain();\n }));\n return this;\n }\n\n last() {\n this.callStack.push(new Call(function last(this: CallChainImpl) {\n const els = this.elements;\n this.elements = [els[els.length - 1]];\n return this.createSubChain();\n }));\n return this;\n }\n\n next() {\n this.callStack.push(new Call(function next(this: CallChainImpl) {\n this.elements = this.elements.map(el => elementGuard(el).nextElementSibling!).filter(Boolean);\n return this.createSubChain();\n }));\n return this;\n }\n\n prev() {\n this.callStack.push(new Call(function prev(this: CallChainImpl) {\n this.elements = this.elements.map(el => elementGuard(el).previousElementSibling!).filter(Boolean);\n return this.createSubChain();\n }));\n return this;\n }\n\n find(selector: string) {\n this.callStack.push(new Call(function find(this: CallChainImpl, sel: string) {\n this.elements = this.elements.flatMap(el => Array.from(elementGuard(el).querySelectorAll(sel)));\n return this.createSubChain();\n }, selector));\n return this;\n }\n\n parent() {\n this.callStack.push(new Call(function parent(this: CallChainImpl) {\n this.elements = this.elements.map(el => (el as Element).parentElement!).filter(Boolean);\n return this.createSubChain();\n }));\n return this;\n }\n\n children() {\n this.callStack.push(new Call(function children(this: CallChainImpl) {\n this.elements = this.elements.flatMap(el => Array.from(elementGuard(el).children));\n return this.createSubChain(true);\n }));\n return this;\n }\n\n closest(selector: string) {\n this.callStack.push(new Call(function closest(this: CallChainImpl, sel: string) {\n this.elements = this.elements.map(el => elementGuard(el).closest(sel)!).filter(Boolean);\n return this.createSubChain();\n }, selector));\n return this;\n }\n\n filter(selector: string) {\n this.callStack.push(new Call(function filter(this: CallChainImpl, sel: string) {\n this.elements = this.elements.filter(el => elementGuard(el).matches(sel));\n // ensure the chain is created with the correct number of elements\n return this.createSubChain(this.elements.length > 0);\n }, selector));\n return this;\n }\n\n // --- Attributes & Properties ---\n attr(name: string, value?: string) {\n if (value !== undefined) {\n this.callStack.push(new Call(function setAttr(this: CallChainImpl, n: string, v: string) {\n this.elements.forEach(el => elementGuard(el).setAttribute(n, v));\n return null;\n }, name, value));\n return this;\n }\n this.callStack.push(new Call(function getAttr(this: CallChainImpl, n: string) {\n return elementGuard(this.getFirstElement()).getAttribute(n);\n }, name));\n return this;\n }\n\n prop(name: keyof AllHTMLElements, value?: any) {\n if (value !== undefined) {\n this.callStack.push(new Call(function setProp(this: CallChainImpl, n: string, v: any) {\n // biome-ignore lint/suspicious/noAssignInExpressions: <explanation>\n this.elements.forEach(el => (elementGuard(el) as any)[n] = v);\n return null;\n }, name, value));\n return this;\n }\n this.callStack.push(new Call(function getProp(this: CallChainImpl, n: string) {\n return (elementGuard(this.getFirstElement()) as any)[n];\n }, name));\n return this;\n }\n\n // --- CSS & Classes ---\n css(prop: string | CSSProperties, value?: string) {\n if (typeof prop === 'string' && value === undefined) {\n this.callStack.push(new Call(function getCss(this: CallChainImpl, p: string) {\n return elementGuard(this.getFirstElement()).style.getPropertyValue(p);\n }, prop));\n } else {\n this.callStack.push(new Call(function setCss(this: CallChainImpl, p: any, v?: string) {\n this.elements.forEach(el => {\n if (typeof p === 'string') elementGuard(el).style.setProperty(p, v!);\n else for (const k in p) elementGuard(el).style.setProperty(k, (p as any)[k]);\n });\n return null;\n }, prop, value));\n }\n return this;\n }\n\n addClass(name: string | Array<string>) {\n this.callStack.push(new Call(function addClass(this: CallChainImpl, cl: any) {\n const list = Array.isArray(cl) ? cl : [cl];\n this.elements.forEach(el => elementGuard(el).classList.add(...list));\n return null;\n }, name));\n return this;\n }\n\n removeClass(name: string | Array<string>) {\n this.callStack.push(new Call(function removeClass(this: CallChainImpl, cl: any) {\n const list = Array.isArray(cl) ? cl : [cl];\n this.elements.forEach(el => elementGuard(el).classList.remove(...list));\n return null;\n }, name));\n return this;\n }\n\n hasClass(name: string) {\n this.callStack.push(new Call(function hasClass(this: CallChainImpl, cl: string) {\n return this.elements.every(el => elementGuard(el).classList.contains(cl));\n }, name));\n return this;\n }\n\n toggleClass(name: string) {\n this.callStack.push(new Call(function toggleClass(this: CallChainImpl, cl: string) {\n this.elements.forEach(el => elementGuard(el).classList.toggle(cl));\n return null;\n }, name));\n return this;\n }\n\n animateClass(name: string, duration: number) {\n this.callStack.push(new Call(function animateClass(this: CallChainImpl, cl: string, d: number) {\n this.elements.forEach(el => {\n const e = elementGuard(el);\n e.classList.add(cl);\n setTimeout(() => e.classList.remove(cl), d);\n });\n return null;\n }, name, duration));\n return this;\n }\n\n // --- Content Mutations ---\n empty() {\n this.callStack.push(new Call(function empty(this: CallChainImpl) {\n // biome-ignore lint/suspicious/noAssignInExpressions: <explanation>\n this.elements.forEach(el => elementGuard(el).innerHTML = '');\n return null;\n }));\n return this;\n }\n\n html(html: string) {\n this.callStack.push(new Call(function html(this: CallChainImpl, str: string) {\n this.elements.forEach(el => updateDom(elementGuard(el), str));\n return null;\n }, html));\n return this;\n }\n\n jsx(vdom: RenderInput) {\n if (!isJSX(vdom)) {\n console.warn('jsx: expected JSX, got', vdom);\n return this;\n }\n this.callStack.push(new Call(function jsx(this: CallChainImpl, v: RenderInput) {\n this.elements.forEach(el => updateDomWithVdom(elementGuard(el), v, globalThis as Globals));\n return null;\n }, vdom));\n return this;\n }\n\n text(text: string) {\n this.callStack.push(new Call(function text(this: CallChainImpl, t: string) {\n // biome-ignore lint/suspicious/noAssignInExpressions: <explanation>\n this.elements.forEach(el => elementGuard(el).textContent = t);\n return null;\n }, text));\n return this;\n }\n\n update(input: string | RenderInput) {\n this.callStack.push(new Call(function update(this: CallChainImpl, input: any) {\n if (typeof input === 'string') {\n const hasHtml = /<\\/?>[a-z][\\s\\S]*>/i.test(input);\n if (hasHtml) this.elements.forEach(el => updateDom(elementGuard(el), input));\n // biome-ignore lint/suspicious/noAssignInExpressions: <explanation>\n else this.elements.forEach(el => elementGuard(el).textContent = input);\n } else {\n this.elements.forEach(el => updateDomWithVdom(elementGuard(el), input, globalThis as Globals));\n }\n return null;\n }, input));\n return this;\n }\n\n remove() {\n this.callStack.push(new Call(function remove(this: CallChainImpl) {\n this.elements.forEach(el => elementGuard(el).remove());\n return null;\n }));\n return this;\n }\n\n replaceWith(content: string | RenderInput | NodeType | Ref<NodeType> | typeof DequeryChain) {\n this.callStack.push(new Call(async function replaceWith(this: CallChainImpl, content: string | RenderInput | NodeType | Ref<NodeType> | typeof DequeryChain) {\n let newElement: NodeType;\n\n if (typeof content === 'string') {\n const hasHtmlTags = /<\\/?[a-z][\\s\\S]*>/i.test(content);\n if (hasHtmlTags) {\n newElement = renderHTML(content)[0];\n } else {\n newElement = document.createTextNode(content);\n }\n } else if (isJSX(content)) {\n newElement = renderIsomorphicSync(content as RenderInput, undefined, globalThis as Globals) as NodeType;\n } else if (isRef(content)) {\n await waitForRefWithPolling(content as Ref, this.options.maxWaitMs!);\n newElement = elementGuard(content.current!);\n } else if (content instanceof Node) {\n newElement = content;\n } else if (content instanceof DequeryChain) {\n newElement = content.getFirstElement();\n } else {\n console.warn('replaceWith: unsupported content type', content);\n return null;\n }\n\n this.elements.forEach(el => {\n el.parentNode?.replaceChild(newElement.cloneNode(true), el);\n });\n return null;\n }, content));\n return this;\n }\n\n append(content: string | NodeType | typeof DequeryChain) {\n this.callStack.push(new Call(function append(this: CallChainImpl, c: string | NodeType | typeof DequeryChain) {\n this.elements.forEach(el => {\n if (typeof c === 'string') {\n elementGuard(el).innerHTML += c;\n } else if (c instanceof DequeryChain) {\n c.elements.forEach(childEl => {\n el.appendChild(childEl.cloneNode(true));\n });\n } else {\n el.appendChild((c as Element).cloneNode(true));\n }\n });\n return null;\n }, content));\n return this;\n }\n\n appendTo(target: NodeType | Ref<NodeType> | string | typeof DequeryChain) {\n this.callStack.push(new Call(async function appendTo(this: CallChainImpl, target: NodeType | Ref<NodeType> | string) {\n let targetElement: NodeType;\n\n if (isRef(target)) {\n await waitForRefWithPolling(target as Ref, this.options.maxWaitMs!);\n targetElement = elementGuard(target.current!);\n } else if (typeof target === 'string') {\n await waitForSelectorWithPolling(target, this.options.maxWaitMs!);\n targetElement = elementGuard(document.querySelector(target) as NodeType);\n } else if (target instanceof Node) {\n targetElement = elementGuard(target);\n } else if (target instanceof DequeryChain) {\n targetElement = elementGuard(target.getFirstElement());\n } else {\n console.warn('appendTo: expected selector, ref or node, got', target);\n return null;\n }\n\n this.elements.forEach(el => {\n targetElement.appendChild(el.cloneNode(true));\n });\n return null;\n }, target));\n return this;\n }\n\n // --- Events & Interaction ---\n on(event: string, handler: EventListener) {\n this.callStack.push(new Call(function on(this: CallChainImpl, ev: string, h: EventListener) {\n this.elements.forEach(el => elementGuard(el).addEventListener(ev, h));\n return null;\n }, event, handler));\n return this;\n }\n\n off(event: string, handler: EventListener) {\n this.callStack.push(new Call(function off(this: CallChainImpl, ev: string, h: EventListener) {\n this.elements.forEach(el => elementGuard(el).removeEventListener(ev, h));\n return null;\n }, event, handler));\n return this;\n }\n\n trigger(eventType: string) {\n this.callStack.push(new Call(function trigger(this: CallChainImpl, ev: string) {\n this.elements.forEach(el => elementGuard(el).dispatchEvent(new Event(ev, { bubbles: true, cancelable: true })));\n return null;\n }, eventType));\n return this;\n }\n\n // --- Data Extraction ---\n val(val?: string | boolean) {\n if (val !== undefined) {\n this.callStack.push(new Call(function setVal(this: CallChainImpl, v: any) {\n this.elements.forEach(el => {\n if (el instanceof HTMLInputElement) el.value = String(v);\n });\n return null;\n }, val));\n } else {\n this.callStack.push(new Call(function getVal(this: CallChainImpl) {\n const el = elementGuard<HTMLInputElement>(this.getFirstElement());\n return el.value;\n }));\n }\n return this;\n }\n\n map(cb: (el: NodeType, idx: number) => any) {\n this.callStack.push(new Call(function map(this: CallChainImpl, fn: any) {\n return this.elements.map(fn);\n }, cb));\n return this;\n }\n\n toArray() {\n this.callStack.push(new Call(function toArray(this: CallChainImpl) {\n return [...this.elements];\n }));\n return this;\n }\n\n data(name: string, val?: string) {\n if (val !== undefined) {\n this.callStack.push(new Call(function setData(this: CallChainImpl, n: string, v: string) {\n // biome-ignore lint/suspicious/noAssignInExpressions: <explanation>\n this.elements.forEach(el => elementGuard(el).dataset[n] = v);\n return null;\n }, name, val));\n } else {\n this.callStack.push(new Call(function getData(this: CallChainImpl, n: string) {\n return elementGuard(this.getFirstElement()).dataset[n];\n }, name));\n }\n return this;\n }\n\n form(formData?: Record<string, string | boolean>) {\n if (formData) {\n this.callStack.push(new Call(function setForm(this: CallChainImpl, formData: Record<string, string | boolean>) {\n this.elements.forEach(el => {\n if (el instanceof Element) {\n const inputElements = el.querySelectorAll('input, select');\n inputElements.forEach((input) => {\n if (input instanceof HTMLInputElement || input instanceof HTMLSelectElement) {\n const key = input.name || input.id;\n if (formData[key] !== undefined) {\n if (input instanceof HTMLInputElement && input.type === 'checkbox') {\n input.checked = Boolean(formData[key]);\n } else {\n input.value = String(formData[key]);\n }\n }\n }\n });\n }\n });\n return null;\n }, formData));\n } else {\n this.callStack.push(new Call(function getForm(this: CallChainImpl) {\n const formFields: Record<string, string | boolean> = {};\n this.elements.forEach(el => {\n if (el instanceof Element) {\n const inputElements = el.querySelectorAll('input, select');\n inputElements.forEach((input) => {\n if (input instanceof HTMLInputElement || input instanceof HTMLSelectElement) {\n const key = input.name || input.id;\n if (input instanceof HTMLInputElement && input.type === 'checkbox') {\n formFields[key] = input.checked;\n } else {\n formFields[key] = input.value;\n }\n }\n });\n }\n });\n return formFields;\n }));\n }\n return this;\n }\n\n // --- Terminal then() ---\n\n // biome-ignore lint/suspicious/noThenProperty: We're implementing a custom promise chain here\n then(resolve: (value: any) => void, reject: (reason?: any) => void) {\n if (this.stoppedWithError) return;\n runWithTimeGuard(this.options.timeout!, async () => {\n const results: any[] = [];\n for (const call of this.callStack) {\n if (this.stoppedWithError) break;\n try {\n results.push(await call.fn.apply(this, call.args));\n await sleep(this.options.delay!);\n } catch (err) {\n this.stoppedWithError = true;\n break;\n }\n }\n this.chainStack.push([...results]);\n this.lastResult = results[results.length - 1];\n this.callStack = [];\n this.resetElements();\n this.isResolved = true;\n return this.lastResult;\n }, [], (ms, call) => {\n this.stoppedWithError = true;\n this.options.onTimeGuardError!(ms, call);\n }).then(resolve).catch(reject);\n }\n}\n\n// --- Proxy Wrapper ---\nexport const DequeryChain = new Proxy(CallChainImpl, {\n construct(target, args) {\n const inst = new target(...args);\n return new Proxy(inst, {\n get(obj, prop) {\n if (prop === 'then' && inst.isResolved) {\n return Promise.resolve(inst.lastResult);\n }\n inst.isResolved = false;\n return (obj as any)[prop];\n }\n });\n }\n});\n\n// --- Entry Points ---\nexport function dequery(selectorRefOrEl: string | NodeType | Ref<NodeType, any> | RenderInput, options: DequeryOptions | ElementCreationOptions = adefaultConfig) {\n let promise = new DequeryChain({ ...options, initialEl: undefined }).__init(selectorRefOrEl, options);\n\n ; (async () => { // auto-start\n promise = await promise;\n })();\n return promise;\n}\nexport const $ = dequery;\nexport const D = dequery;\n\nexport type Dequery = CallChainImpl;\n\nexport function isDequery(obj: unknown): obj is Dequery {\n return typeof obj === 'object' && obj !== null && 'isResolved' in obj && 'lastResult' in obj;\n}\n\n// --- Helpers ---\nexport async function waitForWithPolling<T>(\n check: () => T | null | undefined,\n timeout: number,\n interval = 1\n): Promise<T> {\n const start = Date.now();\n return new Promise<T>((resolve, reject) => {\n const timer = setInterval(() => {\n try {\n const result = check();\n if (result != null) {\n clearInterval(timer);\n resolve(result);\n } else if (Date.now() - start >= timeout) {\n clearInterval(timer);\n reject(new Error(`Timeout after ${timeout}ms`));\n }\n }\n catch (err) {\n clearInterval(timer);\n reject(err);\n throw err;\n }\n }, interval);\n });\n}\n\nexport async function waitForSelectorWithPolling(\n sel: string,\n timeout: number,\n interval?: number\n): Promise<Element> {\n return waitForWithPolling(() => document.querySelector(sel), timeout, interval);\n}\n\nexport async function waitForRefWithPolling<T>(\n ref: { current: T | null },\n timeout: number,\n interval?: number\n): Promise<T> {\n return waitForWithPolling(() => ref.current, timeout, interval);\n}\n\nexport function renderHTML(html: string, type: DOMParserSupportedType = 'text/html') {\n const newDom = (new DOMParser()).parseFromString(html, type);\n return Array.from(newDom.body.childNodes);\n}\n\nexport function sleep(ms: number) { return new Promise(r => setTimeout(r, ms)); }\nexport function runWithTimeGuard(timeout: number, fn: Function, args: any[], onError: (ms: number, call: Call) => void): Promise<any> {\n return fn(...args);\n // TODO: implement the actual time guard!\n}\n","import type { Dequery } from '@/dequery/index.js'\nimport { isDequery } from '../dequery/index.js'\nimport type { VNodeChild, VNodeChildren, VNode, VNodeType, VNodeAttributes, DomAbstractionImpl, Globals } from '@/render/types.js'\n\nconst CLASS_ATTRIBUTE_NAME = 'class'\nconst XLINK_ATTRIBUTE_NAME = 'xlink'\nconst XMLNS_ATTRIBUTE_NAME = 'xmlns'\nconst REF_ATTRIBUTE_NAME = 'ref'\n\nconst nsMap = {\n [XMLNS_ATTRIBUTE_NAME]: 'http://www.w3.org/2000/xmlns/',\n [XLINK_ATTRIBUTE_NAME]: 'http://www.w3.org/1999/xlink',\n svg: 'http://www.w3.org/2000/svg',\n}\n\ndeclare global {\n var __defuss_document: Document;\n var __defuss_window: Window;\n}\n\n// If a JSX comment is written, it looks like: { /* this */ }\n// Therefore, it turns into: {}, which is detected here\nconst isJSXComment = (node: VNode): boolean =>\n /* v8 ignore next */\n node && typeof node === 'object' && !node.attributes && !node.type && !node.children\n\n// Filters comments and undefines like: ['a', 'b', false, {}] to: ['a', 'b', false]\nconst filterComments = (children: Array<VNode> | Array<VNodeChild>) =>\n children.filter((child: VNodeChild) => !isJSXComment(child as VNode))\n\nexport const createInPlaceErrorMessageVNode = (error: unknown) => ({\n type: 'p',\n attributes: {},\n children: [`FATAL ERROR: ${(error as Error)?.message || error}`]\n})\n\nexport const jsx = (\n type: VNodeType | Function | any,\n attributes: (JSX.HTMLAttributes & JSX.SVGAttributes & Record<string, any>) | null,\n key?: string\n): Array<VNode> | VNode => {\n\n // clone attributes as well\n attributes = { ...attributes }\n\n if (typeof key !== \"undefined\") {\n /* key passed for instance-based lifecycle event listener registration */\n attributes.key = key;\n }\n\n // extract children from attributes and ensure it's always an array\n let children: Array<VNodeChild> = (attributes?.children ? [].concat(attributes.children) : []).filter(Boolean);\n delete attributes?.children;\n\n children = filterComments(\n // Implementation to flatten virtual node children structures like:\n // [<p>1</p>, [<p>2</p>,<p>3</p>]] to: [<p>1</p>,<p>2</p>,<p>3</p>]\n ([] as Array<VNodeChildren>).concat.apply([], children as any) as Array<VNodeChildren>,\n )\n\n // effectively unwrap by directly returning the children\n if (type === 'fragment') {\n return filterComments(children) as Array<VNode>;\n }\n\n // it's a component, divide and conquer children\n // in case of async functions, we just pass them through\n if (typeof type === 'function' && type.constructor.name !== 'AsyncFunction') {\n\n try {\n return type({\n children,\n ...attributes,\n })\n } catch (error) {\n\n if (typeof error === \"string\") {\n error = `[JsxError] in ${type.name}: ${error}`;\n } else if (error instanceof Error) {\n error.message = `[JsxError] in ${type.name}: ${error.message}`;\n }\n\n // render the error in place\n return createInPlaceErrorMessageVNode(error)\n }\n }\n\n return {\n type,\n attributes,\n children,\n };\n}\n\nexport const observeUnmount = (domNode: Node, onUnmount: () => void): void => {\n if (!domNode || typeof onUnmount !== 'function') {\n throw new Error('Invalid arguments. Ensure domNode and onUnmount are valid.');\n }\n\n const parentNode = domNode.parentNode;\n if (!parentNode) {\n throw new Error('The provided domNode does not have a parentNode.');\n }\n\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.removedNodes.length > 0) {\n for (const removedNode of mutation.removedNodes) {\n if (removedNode === domNode) {\n onUnmount();\n observer.disconnect(); // Stop observing after unmount\n return;\n }\n }\n }\n }\n });\n\n // Observe the parentNode for child removals\n observer.observe(parentNode, { childList: true });\n}\n\n/** lifecycle event attachment has been implemented separately, because it is also required to run when partially updating the DOM */\nexport const handleLifecycleEventsForOnMount = (newEl: HTMLElement) => {\n\n // check for a lifecycle \"onMount\" hook and call it\n if (typeof (newEl as any)?.$onMount === 'function') {\n ; (newEl as any).$onMount!()\n // remove the hook after it's been called\n ; (newEl as any).$onMount = null;\n }\n\n // optionally check for a element lifecycle \"onUnmount\" and hook it up\n if (typeof (newEl as any)?.$onUnmount === 'function') {\n // register the unmount observer (MutationObserver)\n observeUnmount(newEl as HTMLElement, (newEl as any).$onUnmount!);\n }\n}\n\nexport const getRenderer = (document: Document): DomAbstractionImpl => {\n // DOM abstraction layer for manipulation\n const renderer = {\n hasElNamespace: (domElement: Element | Document): boolean => (domElement as Element).namespaceURI === nsMap.svg,\n\n hasSvgNamespace: (parentElement: Element | Document, type: string): boolean =>\n renderer.hasElNamespace(parentElement) && type !== 'STYLE' && type !== 'SCRIPT',\n\n createElementOrElements: (\n virtualNode: VNode | undefined | Array<VNode | undefined | string>,\n parentDomElement?: Element | Document,\n ): Array<Element | Text | undefined> | Element | Text | undefined => {\n if (Array.isArray(virtualNode)) {\n return renderer.createChildElements(virtualNode, parentDomElement)\n }\n if (typeof virtualNode !== 'undefined') {\n return renderer.createElement(virtualNode, parentDomElement)\n }\n // undefined virtualNode -> e.g. when a tsx variable is used in markup which is undefined\n return renderer.createTextNode('', parentDomElement)\n },\n\n createElement: (virtualNode: VNode, parentDomElement?: Element | Document): Element | undefined => {\n let newEl: Element | undefined = undefined;\n\n try {\n // if a synchronous function is still a function, VDOM has obviously not resolved, probably an \n // Error occurred while generating the VDOM (in JSX runtime)\n if (\n virtualNode.constructor.name === 'AsyncFunction'\n ) {\n newEl = document.createElement('div')\n } else if (typeof virtualNode.type === 'function') {\n newEl = document.createElement('div')\n ; (newEl as HTMLElement).innerText = `FATAL ERROR: ${virtualNode.type._error}`\n } else if ( // SVG support\n virtualNode.type.toUpperCase() === 'SVG' ||\n (parentDomElement && renderer.hasSvgNamespace(parentDomElement, virtualNode.type.toUpperCase()))\n ) { // SVG support\n newEl = document.createElementNS(nsMap.svg, virtualNode.type as string)\n } else {\n newEl = document.createElement(virtualNode.type as string)\n }\n\n if (virtualNode.attributes) {\n renderer.setAttributes(virtualNode, newEl as Element)\n\n // Apply dangerouslySetInnerHTML if provided\n if (virtualNode.attributes.dangerouslySetInnerHTML) {\n // TODO: FIX me\n newEl.innerHTML = virtualNode.attributes.dangerouslySetInnerHTML.__html;\n }\n }\n\n if (virtualNode.children) {\n renderer.createChildElements(virtualNode.children, newEl as Element)\n }\n\n if (parentDomElement) {\n parentDomElement.appendChild(newEl)\n handleLifecycleEventsForOnMount(newEl as HTMLElement)\n }\n } catch (e) {\n console.error('Fatal error! Error happend while rendering the VDOM!', e, virtualNode);\n throw e;\n }\n return newEl as Element\n },\n\n createTextNode: (text: string, domElement?: Element | Document): Text => {\n const node = document.createTextNode(text.toString())\n\n if (domElement) {\n domElement.appendChild(node)\n }\n return node\n },\n\n createChildElements: (\n virtualChildren: VNodeChildren,\n domElement?: Element | Document,\n ): Array<Element | Text | undefined> => {\n const children: Array<Element | Text | undefined> = []\n\n for (let i = 0; i < virtualChildren.length; i++) {\n const virtualChild = virtualChildren[i]\n if (virtualChild === null || (typeof virtualChild !== 'object' && typeof virtualChild !== 'function')) {\n children.push(\n renderer.createTextNode(\n (typeof virtualChild === 'undefined' || virtualChild === null ? '' : virtualChild!).toString(),\n domElement,\n ),\n )\n } else {\n children.push(renderer.createElement(virtualChild as VNode, domElement))\n }\n }\n return children\n },\n\n setAttribute: (name: string, value: any, domElement: Element, virtualNode: VNode<VNodeAttributes>) => {\n // attributes not set (undefined) are ignored; use null value to reset an attributes state\n if (typeof value === 'undefined') return // if not set, ignore\n\n // TODO: use DANGROUSLY_SET_INNER_HTML_ATTRIBUTE here\n if (name === 'dangerouslySetInnerHTML') return; // special case, handled elsewhere\n\n // save ref as { current: DOMElement } in ref object\n // allows for ref={someRef}\n if (name === REF_ATTRIBUTE_NAME && typeof value !== 'function') {\n value.current = domElement // update ref\n return; // but do not render the ref as a string [object Object] into the DOM\n }\n\n if (name.startsWith('on') && typeof value === 'function') {\n\n let eventName = name.substring(2).toLowerCase()\n const capturePos = eventName.indexOf('capture')\n const doCapture = capturePos > -1\n\n if (eventName === 'mount') {\n ; (domElement as any).$onMount = value // DOM event lifecycle hook\n }\n\n if (eventName === 'unmount') {\n ; (domElement as any).$onUnmount = value // DOM event lifecycle hook\n }\n\n // onClickCapture={...} support\n if (doCapture) {\n eventName = eventName.substring(0, capturePos)\n }\n domElement.addEventListener(eventName, value, doCapture)\n return\n }\n\n // transforms className=\"...\" -> class=\"...\"\n // allows for React JSX to work seamlessly\n if (name === 'className') {\n name = CLASS_ATTRIBUTE_NAME\n }\n\n // transforms class={['a', 'b']} into class=\"a b\"\n if (name === CLASS_ATTRIBUTE_NAME && Array.isArray(value)) {\n value = value.join(' ')\n }\n\n // SVG support\n const nsEndIndex = name.match(/[A-Z]/)?.index\n if (renderer.hasElNamespace(domElement) && nsEndIndex) {\n const ns = name.substring(0, nsEndIndex).toLowerCase()\n const attrName = name.substring(nsEndIndex, name.length).toLowerCase()\n const namespace = nsMap[ns as keyof typeof nsMap] || null\n domElement.setAttributeNS(\n namespace,\n ns === XLINK_ATTRIBUTE_NAME || ns === 'xmlns' ? `${ns}:${attrName}` : name,\n value,\n )\n } else if (name === 'style' && typeof value !== 'string') {\n const propNames = Object.keys(value)\n\n // allows for style={{ margin: 10 }} etc.\n for (let i = 0; i < propNames.length; i++) {\n ; (domElement as HTMLElement).style[propNames[i] as any] = value[propNames[i]]\n }\n } else if (typeof value === 'boolean') {\n // for cases like <button checked={false} />\n ; (domElement as any)[name] = value\n } else {\n // for any other case\n domElement.setAttribute(name, value)\n }\n },\n\n setAttributes: (virtualNode: VNode<VNodeAttributes>, domElement: Element) => {\n const attrNames = Object.keys(virtualNode.attributes!)\n for (let i = 0; i < attrNames.length; i++) {\n renderer.setAttribute(attrNames[i], virtualNode.attributes![attrNames[i]], domElement, virtualNode)\n }\n },\n }\n return renderer\n}\n\nexport type SyncRenderInput = VNode | undefined | string | Array<VNode | undefined | string>;\nexport type ParentElementInput = Element | Document | Dequery | undefined;\nexport type SyncRenderResult = Array<Element | Text | undefined> | Element | Text | undefined;\n\nexport const renderIsomorphicSync = (\n virtualNode: SyncRenderInput,\n parentDomElement: ParentElementInput,\n globals: Globals,\n): SyncRenderResult => {\n if (isDequery(parentDomElement)) {\n parentDomElement = (parentDomElement as Dequery).getFirstElement() as Element || parentDomElement\n }\n let renderResult: SyncRenderResult;\n\n if (typeof virtualNode === 'string') {\n renderResult = getRenderer(globals.window.document).createTextNode(virtualNode, parentDomElement)\n } else {\n renderResult = getRenderer(globals.window.document).createElementOrElements(virtualNode, parentDomElement)\n }\n return renderResult;\n}\n\nexport type ParentElementInputAsync = ParentElementInput | Dequery | Promise<ParentElementInput | Dequery>;\n\nexport const renderIsomorphicAsync = async (\n virtualNode: SyncRenderInput | Promise<SyncRenderInput>,\n parentDomElement: ParentElementInputAsync,\n globals: Globals,\n): Promise<SyncRenderResult> => {\n\n if (parentDomElement instanceof Promise) {\n parentDomElement = (await parentDomElement) as ParentElementInput | Dequery\n }\n\n if (isDequery(parentDomElement)) {\n // awaits the dequery chain to resolve or fail, then renders the VDOM\n parentDomElement = (await (parentDomElement as Dequery).toArray())[0] as Element\n }\n\n if (virtualNode instanceof Promise) {\n virtualNode = await virtualNode\n }\n return renderIsomorphicSync(virtualNode, parentDomElement, globals)\n}\n\nexport const globalScopeDomApis = (window: Window, document: Document) => {\n globalThis.__defuss_document = document\n globalThis.__defuss_window = window\n}\n\nexport const isJSX = (o: any): boolean => {\n if (o === null || typeof o !== 'object') return false\n if (Array.isArray(o)) return o.every(isJSX)\n if (typeof o.type === 'string') return true\n if (typeof o.type === 'function') return true\n if (typeof o.attributes === 'object' && typeof o.children === 'object') return true\n return false\n}\n\n// --- JSX standard (necessary exports for jsx-runtime)\nexport const Fragment = (props: VNode) => props.children\nexport const jsxs = jsx\nexport const jsxDEV = (\n type: VNodeType | Function | any,\n attributes: (JSX.HTMLAttributes & JSX.SVGAttributes & Record<string, any>) | null,\n key?: string,\n allChildrenAreStatic?: boolean,\n sourceInfo?: string,\n selfReference?: any,\n): Array<VNode> | VNode => {\n let renderResult: Array<VNode> | VNode;\n try {\n renderResult = jsx(type, attributes, key);\n } catch (error) {\n console.error(\"JSX error:\", error, 'in', sourceInfo, 'component', selfReference);\n }\n return renderResult!;\n}\n\nexport default {\n jsx,\n Fragment,\n renderIsomorphic: renderIsomorphicSync,\n getRenderer,\n\n // implementing the full standard\n // https://github.com/reactjs/rfcs/blob/createlement-rfc/text/0000-create-element-changes.md\n jsxs,\n jsxDEV,\n};","import type { Globals, RenderInput, VNode, VNodeAttributes, VNodeChild } from \"defuss/jsx-runtime\";\nimport { getRenderer, handleLifecycleEventsForOnMount } from \"../render/isomorph.js\";\n\n/**\n * Compares two DOM nodes for equality with performance optimizations.\n * 1. Checks for reference equality.\n * 2. Compares node types.\n * 3. For Element nodes, compares tag names and attributes.\n * 4. For Text nodes, compares text content.\n */\nexport const areDomNodesEqual = (oldNode: Node, newNode: Node): boolean => {\n // return true if both references are identical\n if (oldNode === newNode) return true;\n\n // compare node types\n if (oldNode.nodeType !== newNode.nodeType) return false;\n\n // handle Element nodes\n if (oldNode.nodeType === Node.ELEMENT_NODE) {\n const oldElement = oldNode as Element;\n const newElement = newNode as Element;\n\n // compare tag names\n if (oldElement.tagName !== newElement.tagName) return false;\n\n const oldAttrs = oldElement.attributes;\n const newAttrs = newElement.attributes;\n\n // compare number of attributes\n if (oldAttrs.length !== newAttrs.length) return false;\n\n // iterate and compare each attribute's name and value\n for (let i = 0; i < oldAttrs.length; i++) {\n const oldAttr = oldAttrs[i];\n const newAttrValue = newElement.getAttribute(oldAttr.name);\n if (oldAttr.value !== newAttrValue) return false;\n }\n }\n\n // handle Text nodes\n if (oldNode.nodeType === Node.TEXT_NODE) {\n if (oldNode.textContent !== newNode.textContent) return false;\n }\n return true;\n};\n\n/**\n * Recursively updates oldNode with the structure of newNode:\n * - If they differ (tag/attrs/text), oldNode is replaced\n * - If same, we recurse on children\n */\nconst updateNode = (oldNode: Node, newNode: Node) => {\n // 1) If different, replace old with new\n if (!areDomNodesEqual(oldNode, newNode)) {\n oldNode.parentNode?.replaceChild(newNode.cloneNode(true), oldNode);\n return;\n }\n\n // 2) If they match and are elements, recurse on their children\n if (oldNode.nodeType === Node.ELEMENT_NODE) {\n const oldChildren = oldNode.childNodes;\n const newChildren = newNode.childNodes;\n const maxLength = Math.max(oldChildren.length, newChildren.length);\n\n for (let i = 0; i < maxLength; i++) {\n const oldChild = oldChildren[i];\n const newChild = newChildren[i];\n\n if (oldChild && newChild) {\n // both exist; recurse\n updateNode(oldChild, newChild);\n } else if (newChild && !oldChild) {\n // new child doesn't exist in old => append\n oldNode.appendChild(newChild.cloneNode(true));\n } else if (oldChild && !newChild) {\n // old child doesn't exist in new => remove\n oldNode.removeChild(oldChild);\n }\n }\n }\n};\n\n/**\n * Partially updates a DOM subtree by comparing `targetElement` to\n * newly parsed HTML. No `.innerHTML` is used here; we parse via DOMParser.\n */\nexport const updateDom = (targetElement: Element, newHTML: string): void => {\n // 1) Parse the new HTML string into a DocumentFragment-like structure\n const parser = new DOMParser();\n // 'text/html' => parse as a full HTML doc. We take the <body>'s children as our new nodes\n const doc = parser.parseFromString(newHTML, 'text/html');\n\n // 2) Extract the root child elements from the newly parsed doc\n // Typically, doc.body is where your HTML snippet content is placed.\n const newRoots = Array.from(doc.body.children);\n\n if (newRoots.length === 0) {\n console.warn('No root elements found in the new HTML.');\n return;\n }\n\n // 3) For each new root, see if there's an old corresponding child to update\n for (let i = 0; i < newRoots.length; i++) {\n const newRoot = newRoots[i];\n const oldChild = targetElement.children[i];\n\n if (oldChild) {\n // partial update\n updateNode(oldChild, newRoot);\n } else {\n // target has fewer children => just append\n targetElement.appendChild(newRoot.cloneNode(true));\n }\n }\n\n // 4) Remove any old leftover children that have no matching new root\n while (targetElement.children.length > newRoots.length) {\n targetElement.removeChild(targetElement.lastChild!);\n }\n};\n\n/********************************************************\n * 1) Define a \"valid\" child type & utility\n ********************************************************/\nexport type ValidChild =\n | string\n | number\n | boolean\n | null\n | undefined\n | VNode<VNodeAttributes>;\n\nfunction toValidChild(child: VNodeChild): ValidChild | undefined {\n if (child == null) return child; // null or undefined\n if (\n typeof child === \"string\" ||\n typeof child === \"number\" ||\n typeof child === \"boolean\"\n ) {\n return child;\n }\n if (typeof child === \"object\" && \"type\" in child) {\n return child as VNode<VNodeAttributes>;\n }\n // e.g. function or {} -> filter out\n return undefined;\n}\n\n/********************************************************\n * 2) Check if a DOM node and a ValidChild match by type\n ********************************************************/\nfunction areNodeAndChildMatching(domNode: Node, child: ValidChild): boolean {\n if (\n typeof child === \"string\" ||\n typeof child === \"number\" ||\n typeof child === \"boolean\"\n ) {\n // must be a text node\n return domNode.nodeType === Node.TEXT_NODE;\n } else if (child && typeof child === \"object\") {\n // must be same tag\n if (domNode.nodeType !== Node.ELEMENT_NODE) return false;\n const oldTag = (domNode as Element).tagName.toLowerCase();\n const newTag = child.type.toLowerCase();\n return oldTag === newTag;\n }\n // if child is null/undefined => definitely no match\n return false;\n}\n\n/********************************************************\n * 3) Patch a single DOM node in place (attributes, text, children)\n ********************************************************/\nfunction patchDomInPlace(domNode: Node, child: ValidChild, globals: Globals) {\n const renderer = getRenderer(globals.window.document);\n\n // textlike\n if (typeof child === \"string\" || typeof child === \"number\" || typeof child === \"boolean\") {\n const newText = String(child);\n if (domNode.nodeValue !== newText) {\n domNode.nodeValue = newText;\n }\n return;\n }\n\n // element\n if (domNode.nodeType === Node.ELEMENT_NODE && child && typeof child === \"object\") {\n // 1) update attributes\n // remove old attributes not present\n const el = domNode as Element;\n const existingAttrs = Array.from(el.attributes);\n for (const attr of existingAttrs) {\n const { name } = attr;\n if (!Object.prototype.hasOwnProperty.call(child.attributes, name) && name !== \"style\") {\n el.removeAttribute(name);\n }\n }\n // set new attributes\n renderer.setAttributes(child, el);\n\n // 2) dangerouslySetInnerHTML => skip child updates\n if (child.attributes?.dangerouslySetInnerHTML) {\n el.innerHTML = child.attributes.dangerouslySetInnerHTML.__html;\n return;\n }\n\n // 3) recursively do partial updates for children\n if (child.children) {\n updateDomWithVdom(el, child.children as any, globals);\n } else {\n // remove old children\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n }\n }\n}\n\n/********************************************************\n * 4) Create brand new DOM node from a ValidChild\n ********************************************************/\nfunction createDomFromChild(child: ValidChild, globals: Globals): Node | Node[] | undefined {\n const renderer = getRenderer(globals.window.document);\n\n if (child == null) return undefined;\n if (typeof child === \"string\" || typeof child === \"number\" || typeof child === \"boolean\") {\n return globals.window.document.createTextNode(String(child));\n }\n\n // else it's a VNode, create without parent as we don't know where it goes yet\n // therefore, we need to handle the onMount lifecycle event later too\n let renderResult = renderer.createElementOrElements(child) as Node | Node[] | undefined;\n\n if (renderResult && !Array.isArray(renderResult)) {\n renderResult = [renderResult];\n }\n return renderResult;\n}\n\n/********************************************************\n * 5) Main partial-update function (index-by-index approach)\n ********************************************************/\nexport function updateDomWithVdom(\n parentElement: Element,\n newVDOM: RenderInput,\n globals: Globals\n) {\n\n //console.log('updateDomWithVdom', newVDOM, parentElement)\n\n // A) Convert newVDOM => array of \"valid\" children\n let newChildren: ValidChild[] = [];\n if (Array.isArray(newVDOM)) {\n newChildren = newVDOM.map(toValidChild).filter((c): c is ValidChild => c !== undefined);\n } else if (\n typeof newVDOM === \"string\" ||\n typeof newVDOM === \"number\" ||\n typeof newVDOM === \"boolean\"\n ) {\n newChildren = [newVDOM];\n } else if (newVDOM) {\n const child = toValidChild(newVDOM);\n if (child !== undefined) newChildren = [child];\n }\n\n //console.log(\"new children to render!\", newChildren)\n\n // B) Generate brand-new DOM for each new child in an array\n // We'll compare them 1:1 with the old nodes.\n const newDomArray: (Node | Node[] | undefined)[] = newChildren.map((vdomChild) =>\n createDomFromChild(vdomChild, globals)\n );\n\n // C) Snapshot old children\n const oldNodes = Array.from(parentElement.childNodes);\n\n // D) Walk up to max length\n const maxLen = Math.max(oldNodes.length, newDomArray.length);\n for (let i = 0; i < maxLen; i++) {\n const oldNode = oldNodes[i];\n const newDom = newDomArray[i]; // might be a single Node or an array of Nodes\n const newChild = newChildren[i];\n\n if (oldNode && newDom !== undefined) {\n // Both old & new exist\n // 1) If newDom is an array (multiple root nodes?), we do a bigger replace\n // or partial approach. Typically we might place the 1st in oldNode's position\n // and then insert the rest right after it, then remove oldNode if needed.\n if (Array.isArray(newDom)) {\n if (newDom.length === 0) {\n // no new => remove old\n parentElement.removeChild(oldNode);\n } else {\n // We might keep the first node and replace oldNode\n const first = newDom[0];\n parentElement.replaceChild(first, oldNode);\n\n if (typeof first !== \"undefined\") {\n handleLifecycleEventsForOnMount(first as HTMLElement);\n }\n\n // Insert the rest\n for (let k = 1; k < newDom.length; k++) {\n if (newDom[k]) {\n parentElement.insertBefore(newDom[k]!, first.nextSibling);\n\n if (typeof newDom[k] !== \"undefined\") {\n console.log(\"inserBefore!\")\n handleLifecycleEventsForOnMount(newDom[k] as HTMLElement);\n }\n }\n }\n }\n } else if (newDom) {\n // single new node\n // 2) If old & new match => partial patch. Else => replace\n if (newChild && areNodeAndChildMatching(oldNode, newChild)) {\n // partial patch\n patchDomInPlace(oldNode, newChild, globals);\n } else {\n // replace\n parentElement.replaceChild(newDom, oldNode);\n\n handleLifecycleEventsForOnMount(newDom as HTMLElement);\n }\n }\n } else if (!oldNode && newDom !== undefined) {\n // we have more new nodes => append\n if (Array.isArray(newDom)) {\n newDom.forEach((newNode) => {\n const wasAdded = newNode && parentElement.appendChild(newNode);\n\n if (wasAdded) {\n handleLifecycleEventsForOnMount(newNode as HTMLElement)\n }\n return wasAdded;\n });\n } else if (newDom) {\n parentElement.appendChild(newDom);\n\n handleLifecycleEventsForOnMount(newDom as HTMLElement);\n }\n } else if (oldNode && newDom === undefined) {\n // we have leftover old => remove\n parentElement.removeChild(oldNode);\n }\n }\n}\n\n/**\n * Directly blow away all children in `parentElement` and create new DOM \n * from `newVDOM`. This never skips or leaves behind stale nodes, \n * at the cost of losing partial update performance.\n */\nexport function replaceDomWithVdom(parentElement: Element, newVDOM: RenderInput, globals: Globals) {\n // 1) Clear all existing DOM children\n while (parentElement.firstChild) {\n parentElement.removeChild(parentElement.firstChild);\n }\n\n // 2) Re-render from scratch\n const renderer = getRenderer(globals.window.document);\n\n // Possibly convert `newVDOM` to array if needed, \n // but `renderer.createElementOrElements` handles it either way:\n const newDom = renderer.createElementOrElements(newVDOM as VNode | undefined | Array<VNode | undefined | string>);\n\n // 3) Append the newly created node(s)\n if (Array.isArray(newDom)) {\n for (const node of newDom) {\n if (node) parentElement.appendChild(node);\n }\n } else if (newDom) {\n parentElement.appendChild(newDom);\n }\n}"],"names":[],"mappings":"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"}
@@ -1226,6 +1226,7 @@ type RenderNodeInput = VNode | string | undefined;
1226
1226
  type RenderInput = RenderNodeInput | Array<RenderNodeInput>;
1227
1227
  type RenderResultNode = Element | Text | undefined;
1228
1228
  type RenderResult<T = RenderInput> = T extends Array<RenderNodeInput> ? Array<RenderResultNode> : RenderResultNode;
1229
+ type AllHTMLElements = HTMLElement & HTMLAnchorElement & HTMLAreaElement & HTMLAudioElement & HTMLBaseElement & HTMLBodyElement & HTMLBRElement & HTMLButtonElement & HTMLCanvasElement & HTMLDataElement & HTMLDataListElement & HTMLDetailsElement & HTMLDialogElement & HTMLDivElement & HTMLDListElement & HTMLEmbedElement & HTMLFieldSetElement & HTMLFormElement & HTMLHeadingElement & HTMLHeadElement & HTMLHtmlElement & HTMLHRElement & HTMLIFrameElement & HTMLImageElement & HTMLInputElement & HTMLLabelElement & HTMLLegendElement & HTMLLIElement & HTMLLinkElement & HTMLMapElement & HTMLMenuElement & HTMLMetaElement & HTMLMeterElement & HTMLModElement & HTMLOListElement & HTMLObjectElement & HTMLOptGroupElement & HTMLOptionElement & HTMLOutputElement & HTMLParagraphElement & HTMLPictureElement & HTMLPreElement & HTMLProgressElement & HTMLQuoteElement & HTMLScriptElement & HTMLSelectElement & HTMLSlotElement & HTMLSourceElement & HTMLSpanElement & HTMLStyleElement & HTMLTableCaptionElement & HTMLTableCellElement & HTMLTableColElement & HTMLTableElement & HTMLTableRowElement & HTMLTableSectionElement & HTMLTemplateElement & HTMLTextAreaElement & HTMLTimeElement & HTMLTitleElement & HTMLTrackElement & HTMLUListElement & HTMLUnknownElement & HTMLVideoElement & HTMLParamElement & HTMLFontElement & HTMLMarqueeElement & HTMLTableDataCellElement & HTMLTableHeaderCellElement;
1229
1230
 
1230
1231
  type NodeType = Node | Text | Element | Document | DocumentFragment | HTMLElement | SVGElement;
1231
1232
  type FormFieldValue = string | Date | File | boolean | number;
@@ -1233,70 +1234,103 @@ interface FormKeyValues {
1233
1234
  [keyOrPath: string]: FormFieldValue;
1234
1235
  }
1235
1236
  interface DequeryOptions {
1236
- maxWaitMs: number;
1237
+ maxWaitMs?: number;
1238
+ timeout?: number;
1239
+ delay?: number;
1240
+ initialEl?: NodeType;
1241
+ state?: any;
1242
+ verbose?: boolean;
1243
+ onTimeGuardError?: (ms: number, call: Call) => void;
1237
1244
  }
1238
- declare const defaultConfig: DequeryOptions;
1245
+ declare const adefaultConfig: DequeryOptions;
1239
1246
  type ElementCreationOptions = JSX.HTMLAttributesLowerCase & JSX.HTMLAttributesLowerCase & {
1240
1247
  html?: string;
1241
1248
  text?: string;
1242
1249
  };
1243
- declare const dequery: (selectorRefOrEl: Node | Element | Text | Ref<Node | Element | Text, any> | string, options?: DequeryOptions | ElementCreationOptions) => Dequery;
1250
+ declare class Call {
1251
+ name: string;
1252
+ fn: Function;
1253
+ args: any[];
1254
+ constructor(fn: Function, ...args: any[]);
1255
+ }
1244
1256
  interface DequeryArrayLike {
1245
1257
  [index: number]: NodeType;
1246
1258
  }
1247
- declare class Dequery implements DequeryArrayLike {
1259
+ declare class CallChainImpl implements DequeryArrayLike {
1260
+ [index: number]: NodeType;
1248
1261
  options: DequeryOptions;
1262
+ callStack: Array<Call>;
1263
+ chainStack: Array<Array<Call>>;
1249
1264
  elements: Array<NodeType>;
1250
- [index: number]: HTMLElement & SVGElement;
1251
- constructor(options?: DequeryOptions, elements?: Array<NodeType>);
1252
- get el(): NodeType;
1253
- tap(cb: (el: NodeType | Array<NodeType>) => void): Dequery;
1254
- query(selector: string): Dequery;
1265
+ prevElements: Array<NodeType>;
1266
+ stoppedWithError: boolean;
1267
+ lastResult: any;
1268
+ isResolved: boolean;
1269
+ constructor(options?: DequeryOptions, isResolved?: boolean);
1270
+ resetElements(): void;
1271
+ getFirstElement(): NodeType;
1272
+ createSubChain(clone?: boolean): CallChainImpl;
1273
+ __init(selectorHtmlRefOrElementRef: string | NodeType | Ref<NodeType, any> | RenderInput, options: DequeryOptions | ElementCreationOptions): CallChainImpl;
1274
+ debug(cb: (el: NodeType | Array<NodeType>) => void): this;
1275
+ ref(ref: Ref<NodeType>): this;
1276
+ query(selector: string): this;
1277
+ all(): this;
1255
1278
  get length(): number;
1256
- first(): Dequery;
1257
- last(): Dequery;
1258
- next(): Dequery;
1259
- eq(idx: number): Dequery;
1260
- prev(): Dequery;
1261
- each(cb: (el: NodeType, idx: number) => void): Dequery;
1262
- find(selector: string): Dequery;
1263
- parent(): Dequery;
1264
- children(): Dequery;
1265
- closest(selector: string): Dequery;
1266
- filter(selector: string): Dequery;
1267
- attr(name: string): string | null;
1268
- attr(name: string, value: string): Dequery;
1269
- empty(): Dequery;
1270
- html(newInnerHtml?: string): Dequery;
1271
- jsx(newJsxPartialDom: RenderInput): Dequery;
1272
- text(text?: string): Dequery;
1273
- remove(): Dequery;
1274
- replaceWithJsx(vdomOrNode: RenderInput | NodeType): Dequery;
1275
- append(content: string | NodeType | Dequery): Dequery;
1276
- toArray(): Array<NodeType>;
1277
- on(eventName: string, handler: EventListener): Dequery;
1278
- off(eventName: string, handler: EventListener): Dequery;
1279
- css(cssProps: string): string | undefined;
1280
- css(cssProps: CSSProperties): Dequery;
1281
- css(cssProps: string, value: string): Dequery;
1282
- addClass(className: Array<string> | string): Dequery;
1283
- removeClass(className: Array<string> | string): Dequery;
1284
- hasClass(className: string): boolean;
1285
- toggleClass(className: string): Dequery;
1286
- animateClass(className: string, duration: number): Dequery;
1287
- trigger(eventType: string): Dequery;
1288
- val(value: string | boolean): Dequery;
1289
- val(): string | undefined;
1290
- map<T = any>(cb: (el: NodeType, idx: number) => any): Array<T>;
1291
- prop<K extends keyof HTMLElement>(name: K, value: HTMLElement[K]): Dequery;
1292
- prop<K extends keyof HTMLElement>(name: K): HTMLElement[K];
1293
- data(name: string): string | undefined;
1294
- data(name: string, value: string): Dequery;
1295
- form(): FormKeyValues;
1296
- form(formData: FormKeyValues): Dequery;
1279
+ first(): this;
1280
+ last(): this;
1281
+ next(): this;
1282
+ prev(): this;
1283
+ find(selector: string): this;
1284
+ parent(): this;
1285
+ children(): this;
1286
+ closest(selector: string): this;
1287
+ filter(selector: string): this;
1288
+ attr(name: string, value?: string): this;
1289
+ prop(name: keyof AllHTMLElements, value?: any): this;
1290
+ css(prop: string | CSSProperties, value?: string): this;
1291
+ addClass(name: string | Array<string>): this;
1292
+ removeClass(name: string | Array<string>): this;
1293
+ hasClass(name: string): this;
1294
+ toggleClass(name: string): this;
1295
+ animateClass(name: string, duration: number): this;
1296
+ empty(): this;
1297
+ html(html: string): this;
1298
+ jsx(vdom: RenderInput): this;
1299
+ text(text: string): this;
1300
+ update(input: string | RenderInput): this;
1301
+ remove(): this;
1302
+ replaceWith(content: string | RenderInput | NodeType | Ref<NodeType> | typeof DequeryChain): this;
1303
+ append(content: string | NodeType | typeof DequeryChain): this;
1304
+ appendTo(target: NodeType | Ref<NodeType> | string | typeof DequeryChain): this;
1305
+ on(event: string, handler: EventListener): this;
1306
+ off(event: string, handler: EventListener): this;
1307
+ trigger(eventType: string): this;
1308
+ val(val?: string | boolean): this;
1309
+ map(cb: (el: NodeType, idx: number) => any): this;
1310
+ toArray(): this;
1311
+ data(name: string, val?: string): this;
1312
+ form(formData?: Record<string, string | boolean>): this;
1313
+ then(resolve: (value: any) => void, reject: (reason?: any) => void): void;
1297
1314
  }
1298
- declare const $: (selectorRefOrEl: Node | Element | Text | Ref<Node | Element | Text, any> | string, options?: DequeryOptions | ElementCreationOptions) => Dequery;
1315
+ declare const DequeryChain: typeof CallChainImpl;
1316
+ declare function dequery(selectorRefOrEl: string | NodeType | Ref<NodeType, any> | RenderInput, options?: DequeryOptions | ElementCreationOptions): CallChainImpl;
1317
+ declare const $: typeof dequery;
1318
+ declare const D: typeof dequery;
1319
+ type Dequery = CallChainImpl;
1320
+ declare function isDequery(obj: unknown): obj is Dequery;
1321
+ declare function waitForWithPolling<T>(check: () => T | null | undefined, timeout: number, interval?: number): Promise<T>;
1322
+ declare function waitForSelectorWithPolling(sel: string, timeout: number, interval?: number): Promise<Element>;
1323
+ declare function waitForRefWithPolling<T>(ref: {
1324
+ current: T | null;
1325
+ }, timeout: number, interval?: number): Promise<T>;
1326
+ declare function renderHTML(html: string, type?: DOMParserSupportedType): ChildNode[];
1327
+ declare function sleep(ms: number): Promise<unknown>;
1328
+ declare function runWithTimeGuard(timeout: number, fn: Function, args: any[], onError: (ms: number, call: Call) => void): Promise<any>;
1299
1329
 
1330
+ declare global {
1331
+ var __defuss_document: Document;
1332
+ var __defuss_window: Window;
1333
+ }
1300
1334
  declare const createInPlaceErrorMessageVNode: (error: unknown) => {
1301
1335
  type: string;
1302
1336
  attributes: {};
@@ -1307,7 +1341,14 @@ declare const observeUnmount: (domNode: Node, onUnmount: () => void) => void;
1307
1341
  /** lifecycle event attachment has been implemented separately, because it is also required to run when partially updating the DOM */
1308
1342
  declare const handleLifecycleEventsForOnMount: (newEl: HTMLElement) => void;
1309
1343
  declare const getRenderer: (document: Document) => DomAbstractionImpl;
1310
- declare const renderIsomorphic: (virtualNode: VNode | undefined | string | Array<VNode | undefined | string>, parentDomElement: Element | Document | Dequery | undefined, globals: Globals) => Array<Element | Text | undefined> | Element | Text | undefined;
1344
+ type SyncRenderInput = VNode | undefined | string | Array<VNode | undefined | string>;
1345
+ type ParentElementInput = Element | Document | Dequery | undefined;
1346
+ type SyncRenderResult = Array<Element | Text | undefined> | Element | Text | undefined;
1347
+ declare const renderIsomorphicSync: (virtualNode: SyncRenderInput, parentDomElement: ParentElementInput, globals: Globals) => SyncRenderResult;
1348
+ type ParentElementInputAsync = ParentElementInput | Dequery | Promise<ParentElementInput | Dequery>;
1349
+ declare const renderIsomorphicAsync: (virtualNode: SyncRenderInput | Promise<SyncRenderInput>, parentDomElement: ParentElementInputAsync, globals: Globals) => Promise<SyncRenderResult>;
1350
+ declare const globalScopeDomApis: (window: Window, document: Document) => void;
1351
+ declare const isJSX: (o: any) => boolean;
1311
1352
  declare const Fragment: (props: VNode) => VNodeChildren | undefined;
1312
1353
  declare const jsxs: (type: VNodeType | Function | any, attributes: (JSX.HTMLAttributes & JSX.SVGAttributes & Record<string, any>) | null, key?: string) => Array<VNode> | VNode;
1313
1354
  declare const jsxDEV: (type: VNodeType | Function | any, attributes: (JSX.HTMLAttributes & JSX.SVGAttributes & Record<string, any>) | null, key?: string, allChildrenAreStatic?: boolean, sourceInfo?: string, selfReference?: any) => Array<VNode> | VNode;
@@ -1315,4 +1356,4 @@ declare const jsxDEV: (type: VNodeType | Function | any, attributes: (JSX.HTMLAt
1315
1356
  declare const isRef: (obj: any) => obj is Ref<Element>;
1316
1357
  declare function createRef<ST = any, NT extends Node | Element | Text | null = HTMLElement>(refUpdateFn?: RefUpdateFn<ST>, defaultState?: ST): Ref<NT, ST>;
1317
1358
 
1318
- export { $, createRef as A, type FormFieldValue as B, type CSSProperties as C, Dequery as D, type FormKeyValues as E, type FontFaceProperties as F, type Globals as G, type DequeryOptions as H, defaultConfig as I, type ElementCreationOptions as J, type KeyFrameProperties as K, dequery as L, type Listener as M, type NodeType as N, createStore as O, type Props as P, type RenderInput as R, type Store as S, type VAttributes as V, type RenderResult as a, type RefUpdateFn as b, type Ref as c, type VNodeAttributes as d, type VNode as e, type VNodeType as f, type VNodeKey as g, type VNodeRefObject as h, type VNodeRefCallback as i, type VNodeRef as j, type VNodeChild as k, type VNodeChildren as l, type Children as m, type DomAbstractionImpl as n, type RenderNodeInput as o, type RenderResultNode as p, createInPlaceErrorMessageVNode as q, jsx as r, observeUnmount as s, handleLifecycleEventsForOnMount as t, getRenderer as u, renderIsomorphic as v, Fragment as w, jsxs as x, jsxDEV as y, isRef as z };
1359
+ export { $, type AllHTMLElements as A, isJSX as B, type CSSProperties as C, type DomAbstractionImpl as D, Fragment as E, type FontFaceProperties as F, type Globals as G, jsxs as H, jsxDEV as I, isRef as J, type KeyFrameProperties as K, createRef as L, type FormFieldValue as M, type NodeType as N, type FormKeyValues as O, type ParentElementInput as P, type DequeryOptions as Q, type RenderInput as R, type SyncRenderInput as S, adefaultConfig as T, type ElementCreationOptions as U, type VAttributes as V, DequeryChain as W, dequery as X, D as Y, type Dequery as Z, isDequery as _, type RenderResult as a, waitForWithPolling as a0, waitForSelectorWithPolling as a1, waitForRefWithPolling as a2, renderHTML as a3, sleep as a4, runWithTimeGuard as a5, type Listener as a6, type Store as a7, createStore as a8, type ParentElementInputAsync as b, type RefUpdateFn as c, type Ref as d, type VNodeAttributes as e, type VNode as f, type VNodeType as g, type VNodeKey as h, type VNodeRefObject as i, type VNodeRefCallback as j, type VNodeRef as k, type VNodeChild as l, type VNodeChildren as m, type Children as n, type Props as o, type RenderNodeInput as p, type RenderResultNode as q, createInPlaceErrorMessageVNode as r, jsx as s, observeUnmount as t, handleLifecycleEventsForOnMount as u, getRenderer as v, type SyncRenderResult as w, renderIsomorphicSync as x, renderIsomorphicAsync as y, globalScopeDomApis as z };
package/dist/index.cjs CHANGED
@@ -1,3 +1,3 @@
1
- "use strict";var D=Object.defineProperty;var a=(t,e)=>D(t,"name",{value:e,configurable:!0});var h=require("./index-B8vV328V.cjs");const I=!0,v=a((t,e)=>{if(t===e)return!0;if(t.nodeType!==e.nodeType)return!1;if(t.nodeType===Node.ELEMENT_NODE){const r=t,s=e;if(r.tagName!==s.tagName)return!1;const n=r.attributes,o=s.attributes;if(n.length!==o.length)return!1;for(let c=0;c<n.length;c++){const i=n[c],u=s.getAttribute(i.name);if(i.value!==u)return!1}}return!(t.nodeType===Node.TEXT_NODE&&t.textContent!==e.textContent)},"areDomNodesEqual"),T=a((t,e)=>{if(!v(t,e)){t.parentNode?.replaceChild(e.cloneNode(!0),t);return}if(t.nodeType===Node.ELEMENT_NODE){const r=t.childNodes,s=e.childNodes,n=Math.max(r.length,s.length);for(let o=0;o<n;o++){const c=r[o],i=s[o];c&&i?T(c,i):i&&!c?t.appendChild(i.cloneNode(!0)):c&&!i&&t.removeChild(c)}}},"updateNode"),A=a((t,e)=>{const s=new DOMParser().parseFromString(e,"text/html"),n=Array.from(s.body.children);if(n.length===0){console.warn("No root elements found in the new HTML.");return}for(let o=0;o<n.length;o++){const c=n[o],i=t.children[o];i?T(i,c):t.appendChild(c.cloneNode(!0))}for(;t.children.length>n.length;)t.removeChild(t.lastChild)},"updateDom");function L(t){if(t==null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"||typeof t=="object"&&"type"in t)return t}a(L,"toValidChild");function H(t,e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return t.nodeType===Node.TEXT_NODE;if(e&&typeof e=="object"){if(t.nodeType!==Node.ELEMENT_NODE)return!1;const r=t.tagName.toLowerCase(),s=e.type.toLowerCase();return r===s}return!1}a(H,"areNodeAndChildMatching");function B(t,e,r){const s=h.getRenderer(r.window.document);if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"){const n=String(e);t.nodeValue!==n&&(t.nodeValue=n);return}if(t.nodeType===Node.ELEMENT_NODE&&e&&typeof e=="object"){const n=t,o=Array.from(n.attributes);for(const c of o){const{name:i}=c;!Object.prototype.hasOwnProperty.call(e.attributes,i)&&i!=="style"&&n.removeAttribute(i)}if(s.setAttributes(e,n),e.attributes?.dangerouslySetInnerHTML){n.innerHTML=e.attributes.dangerouslySetInnerHTML.__html;return}if(e.children)C(n,e.children,r);else for(;n.firstChild;)n.removeChild(n.firstChild)}}a(B,"patchDomInPlace");function j(t,e){const r=h.getRenderer(e.window.document);if(t==null)return;if(typeof t=="string"||typeof t=="number"||typeof t=="boolean")return e.window.document.createTextNode(String(t));let s=r.createElementOrElements(t);return s&&!Array.isArray(s)&&(s=[s]),s}a(j,"createDomFromChild");function C(t,e,r){console.log("updateDomWithVdom",e,t);let s=[];if(Array.isArray(e))s=e.map(L).filter(i=>i!==void 0);else if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")s=[e];else if(e){const i=L(e);i!==void 0&&(s=[i])}console.log("new children to render!",s);const n=s.map(i=>j(i,r)),o=Array.from(t.childNodes),c=Math.max(o.length,n.length);for(let i=0;i<c;i++){const u=o[i],l=n[i],d=s[i];if(u&&l!==void 0)if(Array.isArray(l))if(l.length===0)t.removeChild(u);else{const p=l[0];t.replaceChild(p,u),typeof p<"u"&&h.handleLifecycleEventsForOnMount(p);for(let m=1;m<l.length;m++)l[m]&&(t.insertBefore(l[m],p.nextSibling),typeof l[m]<"u"&&(console.log("inserBefore!"),h.handleLifecycleEventsForOnMount(l[m])))}else l&&(d&&H(u,d)?B(u,d,r):(t.replaceChild(l,u),h.handleLifecycleEventsForOnMount(l)));else!u&&l!==void 0?Array.isArray(l)?l.forEach(p=>{const m=p&&t.appendChild(p);return m&&h.handleLifecycleEventsForOnMount(p),m}):l&&(t.appendChild(l),h.handleLifecycleEventsForOnMount(l)):u&&l===void 0&&t.removeChild(u)}}a(C,"updateDomWithVdom");function _(t,e,r){for(;t.firstChild;)t.removeChild(t.firstChild);const n=h.getRenderer(r.window.document).createElementOrElements(e);if(Array.isArray(n))for(const o of n)o&&t.appendChild(o);else n&&t.appendChild(n)}a(_,"replaceDomWithVdom");const f=a(t=>{if(t instanceof HTMLElement)return t;let e="Expected an HTMLElement, but found: ";return t?.nodeName?e+=t.nodeName:e+=t,console.warn(e),t},"elementGuard"),g={maxWaitMs:1e3},x=a((t,e=g)=>{if(!t)throw console.error("dequery: selector, ref, or element is required. Got nothing."),new Error("dequery: selector, ref, or element is required. Got nothing.");const r=new b({...g,...e});if(typeof t=="string"){const s=/^<(\w+)>$/,n=t.match(s);if(n){const o=document.createElement(n[1]),{text:c,html:i,...u}=e;Object.entries(u).forEach(([l,d])=>{o.setAttribute(l,String(d))}),i?o.innerHTML=i:c&&(o.textContent=c),r.elements=[o]}else r.query(t)}else h.isRef(t)?r.elements=[t.current]:t.nodeType===Node.ELEMENT_NODE&&(r.elements=[t]);return f(r.el),r},"dequery");class b{static{a(this,"Dequery")}constructor(e=g,r=[]){this.options=e,this.elements=r,this.options={...g,...e},this.elements=[];const s=new Proxy(this,{get(n,o){if(typeof o=="string"&&!Number.isNaN(Number(o)))return n.elements[Number(o)];const c=n[o];return typeof c=="function"?function(...i){return c.apply(s,i)}:c}});return s}get el(){return this.elements[0]}tap(e){return e(this.elements),this}query(e){return console.log("querying",e),this.elements=Array.from(document.querySelectorAll(e)),this}get length(){return this.elements.length}first(){return this.elements=[this.el],this}last(){const e=this.elements;return this.elements=[e[e.length-1]],this}next(){return this.elements=this.elements.map(e=>f(e).nextElementSibling).filter(Boolean),this}eq(e){return this.elements=[this.elements[e]],this}prev(){return this.elements=this.elements.map(e=>f(e).previousElementSibling).filter(Boolean),this}each(e){return this.elements.forEach(e),this}find(e){return this.elements=this.elements.flatMap(r=>Array.from(f(r).querySelectorAll(e))),this}parent(){return this.elements=this.elements.map(e=>e.parentElement).filter(Boolean),this}children(){return this.elements=this.elements.flatMap(e=>Array.from(f(e).children)),this}closest(e){return this.elements=this.elements.map(r=>f(r).closest(e)).filter(Boolean),this}filter(e){return this.elements=this.elements.filter(r=>f(r).matches(e)),this}attr(e,r){return r!==void 0?(this.elements.forEach(s=>f(s).setAttribute(e,r)),this):f(this.el)?.getAttribute(e)??null}empty(){return this.elements.forEach(e=>{f(e).innerHTML=""}),this}html(e){return e&&this.elements.forEach(r=>{A(f(r),e)}),this}jsx(e){return this.elements.forEach(r=>{C(f(r),e,globalThis)}),this}text(e){return e&&this.elements.forEach(r=>{f(r).textContent=e}),this}remove(){return this.elements.forEach(e=>f(e).remove()),this}replaceWithJsx(e){return this.elements.forEach(r=>{const s=e instanceof Node?e:h.renderIsomorphic(e,f(r),globalThis);r.parentNode?.replaceChild(s.cloneNode(!0),r)}),this}append(e){if(e==null)return this;const r=this.elements.slice();return r.forEach(s=>{typeof e=="string"?s.innerHTML+=e:e instanceof b?e.elements.forEach((n,o)=>{const c=r.length>1&&o>0?n.cloneNode(!0):n;s.appendChild(c)}):s.appendChild(e)}),this}toArray(){return[...this.elements]}on(e,r){return this.elements.forEach(s=>s.addEventListener(e,r)),this}off(e,r){return this.elements.forEach(s=>s.removeEventListener(e,r)),this}css(e,r){return!r&&typeof e=="string"?f(this.el)?.style.getPropertyValue(e):!r&&typeof e=="object"?(this.elements.forEach(s=>{for(const n in e)f(s).style.setProperty(n,e[n])}),this):typeof r=="string"&&typeof e=="string"?(this.elements.forEach(s=>{f(s).style.setProperty(e,r)}),this):this}addClass(e){const r=Array.isArray(e)?e:[e];return this.elements.forEach(s=>f(s).classList.add(...r)),this}removeClass(e){const r=Array.isArray(e)?e:[e];return this.elements.forEach(s=>f(s).classList.remove(...r)),this}hasClass(e){return this.elements.every(r=>f(r).classList.contains(e))}toggleClass(e){return this.elements.forEach(r=>f(r).classList.toggle(e)),this}animateClass(e,r){return this.elements.forEach(s=>{f(s).classList.add(e),setTimeout(()=>f(s).classList.remove(e),r)}),this}trigger(e){return this.elements.forEach(r=>{const s=new Event(e,{bubbles:!0,cancelable:!0});f(r).dispatchEvent(s)}),this}val(e){return typeof e<"u"?(this.elements.forEach(r=>{r instanceof HTMLInputElement&&(r.value=String(e))}),this):f(this.el)?.value}map(e){return this.elements.map(e)}prop(e,r){return typeof r<"u"?(this.elements.forEach(s=>{f(s)[e]=r}),this):f(this.el)[e]}data(e,r){return typeof r<"u"?(this.elements.forEach(s=>{f(s).dataset[e]=r}),this):f(this.el)?.dataset[e]}form(e){if(e)return Object.entries(e).forEach(([s,n])=>{this.elements.forEach(o=>{o instanceof HTMLInputElement&&(o.value=n)})}),this;const r={};return this.elements.forEach(s=>{s instanceof HTMLInputElement&&(r[s.name]=s.value)}),r}}const R=x,F=a(()=>{const t=new Map;return{clear:a(()=>{t.clear()},"clear"),getItem:a(e=>t.get(String(e))??null,"getItem"),removeItem:a(e=>{t.delete(String(e))},"removeItem"),setItem:a((e,r)=>{t.set(String(e),r)},"setItem")}},"newInMemoryGenericStorageBackend"),O=F();class E{static{a(this,"WebStorageProvider")}storage;constructor(e){this.storage=e||O}get(e,r,s){const n=this.storage.getItem(e);if(n===null)return r;let o=JSON.parse(n);return s&&(o=s(e,o)),o}set(e,r,s){s&&(r=s(e,r)),this.storage.setItem(e,JSON.stringify(r))}remove(e){this.storage.removeItem(e)}removeAll(){this.storage.clear()}get backendApi(){return this.storage}}const V=a((t,e)=>{switch(t){case"session":return new E(window.sessionStorage);case"local":return new E(window.localStorage)}return new E},"getPersistenceProvider$1"),W=a((t,e)=>new E,"getPersistenceProvider"),k=a(()=>typeof window>"u"||typeof window.document>"u","isServer"),$=a((t="local",e)=>k()?W():V(t),"webstorage"),G=/{([^}]*)}/g,J=a((t,e)=>t.replace(G,(r,s)=>e[s]||`{${s}}`),"interpolate"),S=a(()=>{const t=h.createStore({});let e="en";const r=[];return{language:e,changeLanguage(s){e=s,r.forEach(n=>n(s))},t(s,n={}){const o=t.get(`${e}.${s}`)||s;return typeof o!="string"?o:J(o,n)},load(s,n){t.set(s,{...t.get(s),...n})},subscribe(s){return r.push(s),()=>{const n=r.indexOf(s);n>=0&&r.splice(n,1)}}}},"createI18n"),w=S(),U=a(({path:t,replacements:e,tag:r,...s})=>{const n={};return w.subscribe(()=>{const o=w.t(t,e);console.log("new val",o)}),{tag:r||"span",attributes:{ref:n,...s},children:w.t(t,e)}},"Trans");class y{static{a(this,"Headers")}map;constructor(e={}){this.map=new Map,e instanceof y?e.forEach((r,s)=>this.map.set(s,r)):Object.entries(e).forEach(([r,s])=>this.map.set(r.toLowerCase(),s))}append(e,r){this.map.set(e.toLowerCase(),r)}get(e){return this.map.get(e.toLowerCase())||null}has(e){return this.map.has(e.toLowerCase())}forEach(e){this.map.forEach((r,s)=>e(r,s))}}class M extends EventTarget{static{a(this,"ProgressSignal")}_progress;constructor(){super(),this._progress={loaded:0,total:0}}get progress(){return this._progress}dispatchProgress(e){this._progress={loaded:e.loaded,total:e.total},this.dispatchEvent(new ProgressEvent("progress",{loaded:e.loaded,total:e.total}))}}class K{static{a(this,"ProgressController")}signal;constructor(){this.signal=new M}}function P(t){return t?t instanceof FormData||t instanceof Blob||t instanceof URLSearchParams||t instanceof ArrayBuffer||ArrayBuffer.isView(t)||typeof t=="string"?t:typeof t=="object"?JSON.stringify(t):String(t):null}a(P,"serializeBody");function N(t){const e=new y;return t.split(`\r
2
- `).forEach(r=>{const[s,...n]=r.split(": ");s&&e.append(s,n.join(": "))}),e}a(N,"parseHeaders");async function q(t,e={}){return!e.progressSignal&&typeof globalThis.fetch=="function"?q(t,e):new Promise((r,s)=>{const n=new XMLHttpRequest,o=(e.method||"GET").toUpperCase(),c=P(e.body||null),i=e.progressSignal,u=e.signal;if(u){const l=a(()=>{n.abort(),s(new DOMException("The operation was aborted.","AbortError"))},"abortHandler");u.addEventListener("abort",l,{once:!0})}n.open(o,t.toString(),!0),e.credentials==="include"?n.withCredentials=!0:e.credentials==="omit"&&(n.withCredentials=!1),e.headers instanceof y?e.headers.forEach((l,d)=>n.setRequestHeader(d,l)):e.headers&&Object.entries(e.headers).forEach(([l,d])=>{n.setRequestHeader(l,d)}),i&&(n.upload&&(n.upload.onprogress=l=>i.dispatchProgress(l)),n.onprogress=l=>i.dispatchProgress(l)),n.onload=()=>{const l={ok:n.status>=200&&n.status<300,status:n.status,statusText:n.statusText,headers:N(n.getAllResponseHeaders()),url:n.responseURL,text:a(()=>Promise.resolve(n.responseText),"text"),json:a(()=>Promise.resolve(JSON.parse(n.responseText)),"json"),blob:a(()=>Promise.resolve(new Blob([n.response])),"blob")};r(l)},n.onerror=()=>s(new TypeError("Network request failed")),n.ontimeout=()=>s(new TypeError("Network request timed out")),n.onabort=()=>s(new DOMException("The operation was aborted.","AbortError")),n.send(c)})}a(q,"fetch"),exports.Fragment=h.Fragment,exports.createInPlaceErrorMessageVNode=h.createInPlaceErrorMessageVNode,exports.createRef=h.createRef,exports.createStore=h.createStore,exports.ensureKey=h.ensureKey,exports.getAllKeysFromPath=h.getAllKeysFromPath,exports.getByPath=h.getByPath,exports.getRenderer=h.getRenderer,exports.handleLifecycleEventsForOnMount=h.handleLifecycleEventsForOnMount,exports.isRef=h.isRef,exports.jsx=h.jsx,exports.jsxDEV=h.jsxDEV,exports.jsxs=h.jsxs,exports.observeUnmount=h.observeUnmount,exports.renderIsomorphic=h.renderIsomorphic,exports.setByPath=h.setByPath,exports.$=R,exports.Dequery=b,exports.Headers=y,exports.ProgressController=K,exports.ProgressSignal=M,exports.Trans=U,exports.areDomNodesEqual=v,exports.createI18n=S,exports.defaultConfig=g,exports.dequery=x,exports.fetch=q,exports.i18n=w,exports.inDevMode=I,exports.parseHeaders=N,exports.replaceDomWithVdom=_,exports.serializeBody=P,exports.updateDom=A,exports.updateDomWithVdom=C,exports.webstorage=$;
1
+ "use strict";var L=Object.defineProperty;var a=(s,e)=>L(s,"name",{value:e,configurable:!0});var n=require("./dom-DWSd6i3A.cjs");const b=!0,W=a(()=>{const s=new Map;return{clear:a(()=>{s.clear()},"clear"),getItem:a(e=>s.get(String(e))??null,"getItem"),removeItem:a(e=>{s.delete(String(e))},"removeItem"),setItem:a((e,o)=>{s.set(String(e),o)},"setItem")}},"newInMemoryGenericStorageBackend"),F=W();class y{static{a(this,"WebStorageProvider")}storage;constructor(e){this.storage=e||F}get(e,o,t){const r=this.storage.getItem(e);if(r===null)return o;let i=JSON.parse(r);return t&&(i=t(e,i)),i}set(e,o,t){t&&(o=t(e,o)),this.storage.setItem(e,JSON.stringify(o))}remove(e){this.storage.removeItem(e)}removeAll(){this.storage.clear()}get backendApi(){return this.storage}}const j=a((s,e)=>{switch(s){case"session":return new y(window.sessionStorage);case"local":return new y(window.localStorage)}return new y},"getPersistenceProvider$1"),B=a((s,e)=>new y,"getPersistenceProvider"),O=a(()=>typeof window>"u"||typeof window.document>"u","isServer"),_=a((s="local",e)=>O()?B():j(s),"webstorage"),V=/{([^}]*)}/g,H=a((s,e)=>s.replace(V,(o,t)=>e[t]||`{${t}}`),"interpolate"),A=a(()=>{const s=n.createStore({});let e="en";const o=[];return{language:e,changeLanguage(t){e=t,o.forEach(r=>r(t))},t(t,r={}){const i=s.get(`${e}.${t}`)||t;return typeof i!="string"?i:H(i,r)},load(t,r){s.set(t,{...s.get(t),...r})},subscribe(t){return o.push(t),()=>{const r=o.indexOf(t);r>=0&&o.splice(r,1)}}}},"createI18n"),R=A(),z=a(({path:s,replacements:e,tag:o,...t})=>{const r={};return R.subscribe(()=>{const i=R.t(s,e);console.log("new val",i)}),{tag:o||"span",attributes:{ref:r,...t},children:R.t(s,e)}},"Trans");class m{static{a(this,"Headers")}map;constructor(e={}){this.map=new Map,e instanceof m?e.forEach((o,t)=>this.map.set(t,o)):Object.entries(e).forEach(([o,t])=>this.map.set(o.toLowerCase(),t))}append(e,o){this.map.set(e.toLowerCase(),o)}get(e){return this.map.get(e.toLowerCase())||null}has(e){return this.map.has(e.toLowerCase())}forEach(e){this.map.forEach((o,t)=>e(o,t))}}class D extends EventTarget{static{a(this,"ProgressSignal")}_progress;constructor(){super(),this._progress={loaded:0,total:0}}get progress(){return this._progress}dispatchProgress(e){this._progress={loaded:e.loaded,total:e.total},this.dispatchEvent(new ProgressEvent("progress",{loaded:e.loaded,total:e.total}))}}class k{static{a(this,"ProgressController")}signal;constructor(){this.signal=new D}}function v(s){return s?s instanceof FormData||s instanceof Blob||s instanceof URLSearchParams||s instanceof ArrayBuffer||ArrayBuffer.isView(s)||typeof s=="string"?s:typeof s=="object"?JSON.stringify(s):String(s):null}a(v,"serializeBody");function $(s){const e=new m;return s.split(`\r
2
+ `).forEach(o=>{const[t,...r]=o.split(": ");t&&e.append(t,r.join(": "))}),e}a($,"parseHeaders");async function C(s,e={}){return!e.progressSignal&&typeof globalThis.fetch=="function"?C(s,e):new Promise((o,t)=>{const r=new XMLHttpRequest,i=(e.method||"GET").toUpperCase(),d=v(e.body||null),g=e.progressSignal,f=e.signal;if(f){const l=a(()=>{r.abort(),t(new DOMException("The operation was aborted.","AbortError"))},"abortHandler");f.addEventListener("abort",l,{once:!0})}r.open(i,s.toString(),!0),e.credentials==="include"?r.withCredentials=!0:e.credentials==="omit"&&(r.withCredentials=!1),e.headers instanceof m?e.headers.forEach((l,h)=>r.setRequestHeader(h,l)):e.headers&&Object.entries(e.headers).forEach(([l,h])=>{r.setRequestHeader(l,h)}),g&&(r.upload&&(r.upload.onprogress=l=>g.dispatchProgress(l)),r.onprogress=l=>g.dispatchProgress(l)),r.onload=()=>{const l={ok:r.status>=200&&r.status<300,status:r.status,statusText:r.statusText,headers:$(r.getAllResponseHeaders()),url:r.responseURL,text:a(()=>Promise.resolve(r.responseText),"text"),json:a(()=>Promise.resolve(JSON.parse(r.responseText)),"json"),blob:a(()=>Promise.resolve(new Blob([r.response])),"blob")};o(l)},r.onerror=()=>t(new TypeError("Network request failed")),r.ontimeout=()=>t(new TypeError("Network request timed out")),r.onabort=()=>t(new DOMException("The operation was aborted.","AbortError")),r.send(d)})}a(C,"fetch");const P=a(s=>{const e=/:([^\/\.\\]+)/g,o={};let t=1;const r=s.replace(e,(i,d)=>(o[d]=t++,"([^/.\\]+)"));return{groups:o,regexp:new RegExp(`^${r}$`)}},"tokenizePath"),T=a((s,e,o)=>{for(const t of s){if(o&&t.path!==o||t.exact&&t.path!==e)continue;const r=t.tokenizedPath.regexp.exec(e);if(!r)continue;const i={};for(const[g,f]of Object.entries(t.tokenizedPath.groups))i[g]=r[f];const d={url:e,params:i};return typeof t.handler=="function"&&t.handler(d),d}return!1},"matchRouteRegistrations"),M=a((s={strategy:"page-refresh"},e)=>{const o=[];typeof window<"u"&&!e&&(e=globalThis.__defuss_window||window),e||console.warn("Router requires a Window API implementation!");const t={...s,listeners:[],onRouteChange:a(r=>{t.listeners.push(r)},"onRouteChange"),tokenizePath:P,add(r){return o.some(d=>d.path===r.path)||o.push({...r,tokenizedPath:P(r.path)}),t},match(r){return T(o,e.document.location.pathname,r)},navigate(r){const i=t.strategy||"page-refresh",d=e?e.document.location.pathname:"";if(i==="page-refresh")document.location.href=r;else if(i==="slot-refresh"){typeof e<"u"&&e.history.pushState({},"",r);for(const g of t.listeners)g(r,d)}},getRoutes(){return o}};return t},"setupRouter"),S=M(),q=a(({path:s,exact:e,children:o,router:t=S})=>(t.add({path:s,exact:e||!1}),t.match(s)?o[0]:null),"Route"),J=a(({path:s,to:e,router:o=S,exact:t})=>(requestAnimationFrame(()=>{q({path:s,router:o,exact:t,children:[!0]})&&o.navigate(e)}),null),"Redirect"),w="router-slot",N=a(({router:s=S,children:e,RouterOutlet:o,...t})=>{const{tag:r,...i}=t,d=n.createRef();return s.strategy="slot-refresh",s.onRouteChange(()=>{n.$(d).update(o())}),document.getElementById(w)&&console.warn(`It seems there's more than one <RouterSlot /> components defined as an element with id #${w} already exists in the DOM.`),{children:o()||[],type:t.tag||"div",attributes:{...i,id:w,ref:d}}},"RouterSlot"),I=a(({fallback:s,ref:e,children:o,class:t,className:r,id:i,loadingClassName:d,loadedClassName:g,errorClassName:f,onError:l})=>{let h=o;const c=n.createRef(a(function(p){try{if(!c.current){b&&console.warn("Suspense container is not mounted yet, but a state update demands a render. State is:",p);return}n.$(c.current).removeClass(d||"suspense-loading"),n.$(c.current).removeClass(g||"suspense-loaded"),n.$(c.current).removeClass(f||"suspense-error"),!o||p==="error"?(n.$(c.current).addClass(f||"suspense-error"),n.$(c).jsx({type:"div",children:["Loading error!"]})):p==="loading"?(n.$(c.current).addClass(d||"suspense-loading"),n.$(c).jsx(s)):p==="loaded"&&(n.$(c.current).addClass(g||"suspense-loaded"),console.log("[Async render] start"),n.$(c).jsx(h),console.log("[Async render] finished"))}catch(E){c.update("error"),c.error=E,typeof l=="function"&&l(E)}},"onSuspenseUpdate"),"loading");if(n.isRef(e)){let u=!0;e.update=p=>{u||c.update(p)},e.update("loading"),u=!1}const x=(o||[]).map(u=>{try{if(!u||u&&!u.type)return Promise.resolve("");if(u.type.constructor.name==="AsyncFunction"){const p={...u.attributes,children:u.children};return u.type(p)}return Promise.resolve(u)}catch(p){c.update("error"),c.error=p,typeof l=="function"&&l(p)}});return{type:"div",attributes:{id:i,class:t,className:r,ref:c,onMount:a(()=>{x.length&&(c.update("loading"),Promise.all(x).then(u=>{h=u.flatMap(p=>p?.type==="Fragment"?p.children:p),c.update("loaded")}).catch(u=>{c.update("error"),c.error=u,console.error("SuspenseLoadingError",u),n.$(c).jsx(`SuspenseLoadingError: ${u}`),typeof l=="function"&&l(u)}))},"onMount")},children:s?[s]:[]}},"Async"),U=I;exports.$=n.$,exports.D=n.D,exports.DequeryChain=n.DequeryChain,exports.Fragment=n.Fragment,exports.adefaultConfig=n.adefaultConfig,exports.areDomNodesEqual=n.areDomNodesEqual,exports.createInPlaceErrorMessageVNode=n.createInPlaceErrorMessageVNode,exports.createRef=n.createRef,exports.createStore=n.createStore,exports.dequery=n.dequery,exports.ensureKey=n.ensureKey,exports.getAllKeysFromPath=n.getAllKeysFromPath,exports.getByPath=n.getByPath,exports.getRenderer=n.getRenderer,exports.globalScopeDomApis=n.globalScopeDomApis,exports.handleLifecycleEventsForOnMount=n.handleLifecycleEventsForOnMount,exports.isDequery=n.isDequery,exports.isJSX=n.isJSX,exports.isRef=n.isRef,exports.jsx=n.jsx,exports.jsxDEV=n.jsxDEV,exports.jsxs=n.jsxs,exports.observeUnmount=n.observeUnmount,exports.renderHTML=n.renderHTML,exports.renderIsomorphicAsync=n.renderIsomorphicAsync,exports.renderIsomorphicSync=n.renderIsomorphicSync,exports.replaceDomWithVdom=n.replaceDomWithVdom,exports.runWithTimeGuard=n.runWithTimeGuard,exports.setByPath=n.setByPath,exports.sleep=n.sleep,exports.updateDom=n.updateDom,exports.updateDomWithVdom=n.updateDomWithVdom,exports.waitForRefWithPolling=n.waitForRefWithPolling,exports.waitForSelectorWithPolling=n.waitForSelectorWithPolling,exports.waitForWithPolling=n.waitForWithPolling,exports.Async=I,exports.Headers=m,exports.ProgressController=k,exports.ProgressSignal=D,exports.Redirect=J,exports.Route=q,exports.Router=S,exports.RouterSlot=N,exports.RouterSlotId=w,exports.Suspense=U,exports.Trans=z,exports.createI18n=A,exports.fetch=C,exports.i18n=R,exports.inDevMode=b,exports.matchRouteRegistrations=T,exports.parseHeaders=$,exports.serializeBody=v,exports.setupRouter=M,exports.tokenizePath=P,exports.webstorage=_;
3
3
  //# sourceMappingURL=index.cjs.map