ouider 0.1.9 → 0.2.2
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.
- package/dist/index.cjs +10 -10
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +14 -23
- package/dist/index.d.ts +14 -23
- package/dist/index.js +10 -10
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/registry.ts","../src/emits.ts","../src/state.ts","../src/component.ts","../src/interfaces/helpers.ts","../src/interfaces/bridge.ts","../src/context.ts","../src/app.ts","../src/router/Router.ts","../src/components/Icon.ts","../index.ts"],"names":["ComponentsRegistry","components","Map","register","tag","compClass","console","log","key","toLocaleLowerCase","has","set","unregister","delete","get","getAll","Array","from","entries","_ComponentsRegistry","componentsRegistry","Emits","events","emit","event","args","handler","_Emits","Stated","value","_Stated","isStated","ob","isArray","stated","target","state","proxify","__name","seen","proxy","Proxy","t","p","v","o","didChange","Reflect","current","Object","getPrototypeOf","keys","forEach","obj","Error","String","State","data","THRESHOLD_TIME","debounceTime","Date","getTime","listeners","timer","oldValue","wrap","setValue","getValue","dispatchChanges","newValue","listener","path","now","OUID","clearTimeout","setTimeout","watch","push","length","unwatch","splice","indexOf","_State","componentCreationOrder","Component","options","constructor","_a","WithDecoration","template","css","use","hostClasses","hash","RenderNode","node","children","attachTo","host","innerHTML","fullNode","child","appendChild","of","addChild","_RenderNode","StyleData","toString","str","join","_StyleData","createComponent","ctr","props","emits","OComponent","parent","provides","onActivated","onDeactivated","onMounted","willMount","willUnmount","provide","inject","decorateHostElement","hostElement","Promise","resolve","_OComponent","generateUIID","name","Math","floor","random","delay","ms","ODOM","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","BatchActions","actions","exec","commit","add","action","all","map","a","BATCH_KEY_SKIP","Set","actionQueue","dedupeIndex","flushScheduled","pendingPromise","scheduleBatchFlush","runner","flushBatchQueue","clear","batchActions","e","reject","enqueueBatchActions","fn","x","JSON","stringify","idx","undefined","promise","res","rej","prev","BatchUpdates","operations","accept","other","immediate","ops","promises","op","uid","OObject","filter","toSend","includes","unshift","error","append","addEventListener","callback","policy","setProperty","dettachEventListener","cbId","invoke","ref","dispatchEvent","eventName","eventClass","initDict","addClass","tokens","removeClass","setAttribute","removeAttribute","removeChild","remove","removeAndRelease","release","html","replaceChildNode","replaceWith","after","toInsert","setInnerText","text","setContentText","insertBefore","element","setInputValue","setStyle","toInstance","call","extra","invokeAndHold","getProperty","getPropertyAndHold","updates","batches","ONode","textContent","type","attributes","classes","style","k","OElement","_hydrated","attrs","setHTML","cloneNode","cloned","HTML","getContentText","content","err","childNodes","c","hasAttribute","find","attr","getAttribute","attribute","nextSibling","getAttributeNames","parentNode","inputValue","hydrated","hydrate","query","selector","queryAll","CanvasGradient","addColorStop","offset","color","DOMMatrix","batch","new","arg","newObject","invertSelf","multiplySelf","premultiplySelf","rotateAxisAngleSelf","rotX","rotY","rotZ","angle","rotateFromVectorSelf","rotateSelf","scale3dSelf","scale","originX","originY","originZ","scaleSelf","scaleX","scaleY","scaleZ","setMatrixValue","transformList","skewXSelf","sX","skewYSelf","translateSelf","translateX","translateY","translateZ","is2D","isIdentity","flipX","flipY","inverse","multiply","rotate","rotateAxisAngle","rotateFromVector","scale3d","skewX","skewY","sY","toJSON","translate","CanvasPattern","setTransform","matrix","Canvas2DContext","arc","y","radius","startAngle","endAngle","counterclockwise","arcTo","x1","y1","x2","y2","bezierCurveTo","cp1x","cp1y","cp2x","cp2y","clearRect","width","height","clip","arg1","arg2","CanvasPath2D","beginPath","closePath","createConicGradient","createLinearGradient","x0","y0","createPattern","image","repetition","createRadialGradient","r0","r1","drawImage","sx","sy","sWidth","sHeight","dx","dy","dWidth","dHeight","ellipse","radiusX","radiusY","rotation","fill","fillRule","fillRect","fillText","maxWidth","getImageData","sw","sh","settings","getLineDash","getTransform","mat","isContextLost","isPointInPath","arg3","arg4","isPointInStroke","lineTo","measureText","moveTo","putImageData","imageData","dirtyX","dirtyY","dirtyWidth","dirtyHeight","quadraticCurveTo","cpx","cpy","rect","reset","resetTransform","restore","roundRect","radii","save","setLineDash","segments","b","d","f","stroke","strokeRect","strokeText","transform","fillStyle","setFillStyle","setFilter","font","setFont","fontKerning","setFontKerning","kerning","fontStretch","setFontStretch","fontVariantCaps","setFontVariantCaps","globalAlpha","setGlobalAlpha","globalCompositeOperation","setGlobalCompositeOperation","imageSmoothingEnabled","setImageSmoothingEnabled","imageSmoothingQuality","setImageSmoothingQuality","letterSpacing","setLetterSpacing","lineCap","setLineCap","lineDashOffset","setLineDashOffset","lineJoin","setLineJoin","lineWidth","setLineWidth","miterLimit","setMiterLimit","shadowBlur","setShadowBlur","shadowColor","setShadowColor","shadowOffsetX","setShadowOffsetX","shadowOffsetY","setShadowOffsetY","strokeStyle","setStrokeStyle","textAlign","setTextAlign","textBaseline","setTextBaseline","wordSpacing","setWordSpacing","textRendering","setTextRendering","Image","img","naturalWidth","naturalHeight","src","currentSrc","setSrc","create","ret","addPath","CanvasElement","setWidth","setHeight","getContext","context","nodeId","OUIDBridge","callbacks","DOM_EVENT_LISTENERS","timers","_config","subscribe","id","cb","success","parse","currentTarget","relatedTarget","config","conf","WebOUID","registerComponent","unregisterComponent","globalThis","nodes","n","createElement","createComment","createComponentStyles","appendComponentStyles","cssNode","rejectComponentStyles","getOObject","acquireObject","setInterval","clearInterval","fetch","url","input","encodeAs","alert","message","prompt","requestAnimationFrame","fps","cancelAnimationFrame","nextTick","_OUIDBridge","toCamelCase","replace","_","char","toUpperCase","toSnakeCase","toLowerCase","normaliseValue","hasQueueMicrotask","queueMicrotask","deferMicro","then","deferMacro","r","isLazyLoader","comp","EXPR_FN","TEMPLATE_CACHE","METHODS_CACHE","WeakMap","getMethodsView","cached","out","cur","prototype","getOwnPropertyNames","startsWith","endsWith","desc","getOwnPropertyDescriptor","bind","evalInScope","expr","scope","compiled","Function","compileInterpolated","parts","i","open","slice","close","trim","RenderContext","app","component","parentContext","frames","bindings","directives","mountedComponents","MOUNTED_COMPONENTS_TOKEN","updatingDirectives","updatingBindings","_stack","flatStack","viewUpdates","mountedQueue","stack","getRoot","ctx","enqueueMounted","flushMounted","root","queue","getMountedComponent","binding","directive","evaluateExpression","resolveScope","additionFrames","stateObj","methodsView","_t","prop","some","updateValue","frame","assign","pop","shift","resolveTag","updateBindings","updateBinding","s","templateFn","expandClass","expandStyle","updateDirectives","active","renderedNode","destroy","unmountComponent","clone","render","placeholder","oldChildren","newChildren","keyFn","val","item","arr","list","domOps","YIELD_EVERY","opsSinceYield","last","entry","anchor","next","ps","skipSlotted","handleTextNode","handleElementNode","split","styleString","expandStandardAttributes","substring","setRefValue","variable","controlled","conditionAttr","cc","componentAttributes","apply","mountComponent","txt","ignoredAttrs","hostNode","newCtx","handledProps","refProp","instance","dependants","styleInstance","STYLE_REF","hostChildrenBefore","rendered","slots","slot","toMove","PROVIDE_TOKEN","CONCURRENCY","chunk","__publicField","_RenderContext","el","reduce","acc","default","isProvideFunction","App","providers","currentApp","token","warn","plugin","install","mount","__OUI_PUR_JS_CONTEXT__","globalContext","_App","ORouter","router","useRouter","unbind","_ORouter","at","ROUTER_INJECTION_TOKEN","ACTIVE_ROUTE_TOKEN","ROUTE_SLIDE_DURATION","createRouter","routes","Router","activate","inst","__isActive","deactivate","windowObject","guards","eventRegistration","outletEl","pendingNav","lastDirection","historyIndex","route","parser","RouteParser","resolveByName","params","queryStr","kv","decodeURIComponent","match","redirectTo","dispatchPushEvent","fire","newState","navIndex","matched","reverse","absolute","beforeRouteGoing","to","guard","g","afterRouteGoing","pathOverride","outlet","guarded","currentChildren","currentHost","currentInst","mode","getNavMode","nextHost","nextInst","stackLength","staging","class","runTransitionPush","runTransitionPop","run","newIndex","baseOps","animOps","cleanup","previousHost","beforeEach","afterEach","_Router","OIcon","_OIcon"],"mappings":"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","file":"index.cjs","sourcesContent":["import { OComponentType } from \"./component\"\n\nexport class ComponentsRegistry {\n private components: Map<string, OComponentType<any, any>> = new Map()\n register(tag: string, compClass: OComponentType<any, any>) {\n console.log(`[OUID] - Registering component: ${tag}`)\n const key = tag.toLocaleLowerCase()\n if(this.components.has(key)) {\n return\n }\n this.components.set(key, compClass)\n }\n unregister(tag: string) {\n const key = tag.toLocaleLowerCase()\n this.components.delete(key)\n }\n get(tag: string): OComponentType<any, any> | undefined {\n return this.components.get(tag.toLocaleLowerCase())\n }\n has(tag: string): boolean {\n return this.components.has(tag)\n }\n getAll() {\n return Array.from(this.components.entries())\n }\n}\n\nexport const componentsRegistry = new ComponentsRegistry()","export class Emits<O extends Record<string, any>> {\n constructor(private events: O) {\n }\n\n emit(event: keyof O, ...args: any) {\n const handler = this.events[event] as Function\n if(handler) {\n handler(...args)\n } else {\n console.log('Not handler found for ', event)\n }\n }\n}","export type StateWatcher<T> = <K extends keyof T>(key: K, oldValue: T[K], newValue: T[K]) => void\nexport class Stated<T> {\n constructor(public value: T) { }\n}\nexport function isStated<T>(ob: any): ob is Stated<T> {\n return typeof ob === 'object' && !Array.isArray(ob) && 'value' in ob && ob instanceof Stated;\n}\nexport function stated<S extends Record<string, string>, T>(target: T, state: State<S>): Stated<T> {\n const proxify = (target: any, seen: Map<any, any> = new Map()) => {\n if (seen.has(target)) {\n return seen.get(target)\n }\n const proxy = new Proxy(target, {\n set: (t, p, v) => {\n const o = t[p]\n if (typeof v === 'object') {\n t[p] = proxify(v)\n } else {\n t[p] = v\n }\n state.didChange(p as any, o, v)\n return true\n },\n get: (t, p) => {\n const v = Reflect.get(t, p)\n return v\n }\n })\n seen.set(target, proxy)\n for (let current = target; current; current = Object.getPrototypeOf(current)) {\n Object.keys(current).forEach(key => {\n const obj = target[key]\n if (typeof obj === 'object') {\n target[key] = proxify(obj, seen)\n }\n })\n }\n return proxy\n }\n if (typeof target === 'function') {\n throw new Error('Can\\'t create reactive element over a function')\n }\n if (typeof target !== 'object' && typeof target !== 'symbol') {\n return new Proxy(new Stated<T>(target), {\n set: (t, p, v) => {\n if (p !== 'value') throw new Error(`Undefined property ${String(p)} access`)\n const o = t[p]\n t[p] = v\n state.didChange(p as any, o, v)\n return true\n },\n get: (t, p) => {\n if (p !== 'value') throw new Error(`Undefined property ${String(p)} access`)\n return t[p]\n }\n })\n }\n\n return new Stated<T>(target && typeof target === 'object' ? proxify(target): target)\n}\nexport class State<T extends Record<string, any>> {\n private THRESHOLD_TIME = 20\n private debounceTime = new Date().getTime()\n private state: T\n private listeners: StateWatcher<T>[] = []\n private timer: number | null = null\n constructor(data: T) {\n this.state = new Proxy(data, {\n set: (target, key: string, value: any) => {\n const oldValue = (target as any)[key];\n target[key as keyof T] = value\n this.didChange(key as keyof T, oldValue, value)\n return true\n },\n\n get: (target, key) => target[key as keyof T]\n }) as T\n }\n wrap<T>(obj: T): Stated<T> {\n return stated(obj, this)\n }\n has(key: keyof T): boolean {\n return key in this.state\n }\n setValue(key: keyof T, value: any) {\n this.state[key as keyof T] = value\n }\n getValue(key: keyof T): any {\n return this.state[key]\n }\n get value(): T {\n return this.state\n }\n\n private dispatchChanges<K extends keyof T>(key: K, oldValue: T[K], newValue: T[K]): void {\n for (const listener of this.listeners) {\n listener(key, oldValue, newValue)\n }\n }\n\n async didChange(path: keyof T, oldValue: any, newValue: any) {\n const now = Date.now()\n if (now - this.debounceTime <= this.THRESHOLD_TIME) {\n if(this.timer) await OUID.clearTimeout(this.timer);\n }\n\n this.debounceTime = now;\n\n this.timer = await OUID.setTimeout(() => {\n this.dispatchChanges(path, oldValue, newValue);\n }, this.THRESHOLD_TIME);\n }\n\n watch(listener: StateWatcher<T>) {\n this.listeners.push(listener)\n return this.listeners.length - 1\n }\n\n unwatch(listener: StateWatcher<T> | number) {\n if (typeof listener === \"number\") {\n this.listeners.splice(listener, 1)\n return\n }\n this.listeners.splice(this.listeners.indexOf(listener), 1)\n }\n}","import { RenderContext } from \"./context\";\nimport { Emits } from \"./emits\";\nimport { ODOM } from \"./interfaces/bridge\";\nimport { componentsRegistry } from \"./registry\";\nimport { State } from \"./state\"\nexport type ComponentProps<K extends Record<string, any>> = K\n\nlet componentCreationOrder = 0\n/**\n * Component decorator, it allow an auto registration of components\n * @param options \n * @returns \n */\nexport function Component(options: { template: string, tag: string, use?: Record<string, OComponentType>, css?: string, hostClasses?: string | string[] }) {\n return function <T extends { new(...args: any[]): {} }>(constructor: T) {\n const WithDecoration = class extends constructor {\n template = options.template;\n css = options.css;\n tag = options.tag\n use = options.use\n hostClasses = options.hostClasses\n hash = 'component-' + componentCreationOrder + '-' + options.tag\n };\n\n const compClass = WithDecoration as unknown as ComponentConstructor<any, any>;\n (compClass as any)['tag'] = options.tag\n // componentsRegistry.register(options.tag, compClass);\n return WithDecoration;\n\n };\n}\ntype ExposedKeyAsPromise<T extends Record<string, any>> = {\n [K in keyof T]: Promise<T[K]>;\n};\n\nexport class RenderNode {\n constructor(private node: ODOM.OElement | string, private children: RenderNode[] = []) { }\n\n attachTo(host: ODOM.OElement): void {\n if (typeof this.node === 'string') {\n // html string\n host.innerHTML = this.node\n return\n }\n const fullNode = this.node;\n for (const child of this.children) {\n child.attachTo(fullNode)\n }\n host.appendChild(fullNode)\n }\n static of(node: ODOM.OElement | string, children: RenderNode[] = []): RenderNode {\n return new RenderNode(node, children)\n }\n addChild(node: RenderNode): RenderNode {\n this.children.push(node)\n return this\n }\n\n}\nexport class StyleData {\n constructor(private data: Record<string, StyleData | string>, private css: string) { }\n toString(): string {\n let str = this.css ? this.css + '\\n' : ''\n for (const key in this.data) {\n const value = this.data[key]\n if (typeof value === 'string') {\n str += `${key} { ${value} }\\n`\n } else if (value instanceof StyleData) {\n str += `${key} {\\n${value.toString()}}\\n`\n }\n }\n return str\n }\n static of(data: Record<string, StyleData | string>, ...css: string[]): StyleData {\n return new StyleData(data, css.join('\\n'))\n }\n}\nexport interface Component<P extends Record<string, any>, O extends Record<string, any>> {\n // template: string\n state: State<any>\n readonly emits: Emits<O>\n readonly props: ComponentProps<P>\n onActivated(): void\n onDeactivated(): void\n onMounted(): void\n willMount(): void\n willUnmount(): void\n provide<T>(key: string, value: T): void\n inject<T>(key: string): T | undefined\n render?(ctx: RenderContext): RenderNode | null | Promise<RenderNode | null>\n style?(): StyleData | null,\n decorateHostElement(hostElement: ODOM.OElement): Promise<void>\n}\n\nexport interface ComponentConstructor<P extends Record<string, any>, O extends Record<string, any>> {\n new(props?: P, emits?: O): Component<P, O>\n}\nexport function createComponent<P extends Record<string, any>, O extends Record<string, any>>(ctr: ComponentConstructor<P, O>, props?: P, emits?: O): Component<P, O> {\n // const handled = OUID.invoke()\n return new ctr(props, emits)\n}\n\nexport class OComponent<P extends Record<string, any> = {}, O extends Record<string, any> = {}> implements Component<P, O> {\n // template: string = \"\"\n state: State<any>\n private parent?: OComponent<any, any> = undefined\n readonly emits: Emits<O>\n readonly props: ComponentProps<P>\n private provides: Map<string, any> = new Map();\n\n constructor(props: P = {} as P, emits: O = {} as O) {\n this.state = new State(this)\n this.props = props\n this.emits = new Emits(emits)\n }\n onActivated(): void {}\n onDeactivated(): void {}\n onMounted(): void {\n }\n willMount(): void {\n\n }\n willUnmount(): void {\n\n }\n /** Provide a value for descendants */\n provide<T>(key: string, value: T) {\n this.provides.set(key, value);\n }\n\n /** Inject a value from nearest ancestor */\n inject<T>(key: string): T | undefined {\n let current: OComponent<any, any> | undefined = this;\n while (current) {\n if (current.provides.has(key)) {\n return current.provides.get(key);\n }\n current = current.parent;\n }\n return undefined;\n }\n render?(ctx: RenderContext): RenderNode | null|Promise<RenderNode | null>\n style?(): StyleData | null\n decorateHostElement(hostElement: ODOM.OElement): Promise<void> {\n return Promise.resolve()\n }\n}\nexport type LazyLoader<P extends Record<string, any>, O extends Record<string, any>> = () => Promise<{ default: ComponentConstructor<P, O> }>;\nexport type OComponentType<P extends Record<string, any> = {}, O extends Record<string, any> = {}> =\n | ComponentConstructor<P, O>\n | LazyLoader<P, O>","export function generateUIID(name: string): string {\n const now = Date.now()\n const salt = 1000 + Math.floor((Math.random() * 9000)) + name.length\n return `${salt.toString(16)}-${now.toString(16)}`\n}\n\nexport function delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}","import { componentsRegistry } from \"../registry\"\nimport { OComponentType } from \"../component\"\nimport { generateUIID } from \"./helpers\"\n\ntype QueryFilter = \"children\" | \"classes\" | \"style\" | \"attributes\"\nexport namespace ODOM {\n export class BatchActions {\n private actions: (() => any)[] = []\n constructor() { }\n async exec(): Promise<any> {\n await this.commit()\n }\n add(action: () => void) {\n this.actions.push(action)\n return this\n }\n async commit(): Promise<void> {\n const actions = this.actions\n this.actions = []\n await Promise.all(actions.map(async a => await a()))\n }\n }\n // Global batch queue to coalesce bridge calls; avoids one native hop per exec().\n const BATCH_KEY_SKIP = new Set(['invoke', 'dispatchEvent', 'setProperty'])\n let actionQueue: BatchOperation[] = []\n let dedupeIndex = new Map<string, number>()\n let flushScheduled = false\n let pendingPromise: { resolve: () => void, reject: (e: unknown) => void } | null = null\n\n function scheduleBatchFlush() {\n if (flushScheduled) return\n flushScheduled = true\n const runner = () => {\n flushScheduled = false\n flushBatchQueue()\n }\n setTimeout(() => runner(), 0)\n }\n\n async function flushBatchQueue() {\n const actions = actionQueue\n actionQueue = []\n dedupeIndex.clear()\n const p = pendingPromise\n pendingPromise = null\n try {\n if (actions.length) {\n await OUID.batchActions(actions)\n }\n p?.resolve()\n } catch (e) {\n p?.reject(e)\n }\n }\n\n function enqueueBatchActions(actions: BatchOperation[]): Promise<void> {\n for (const a of actions) {\n if (BATCH_KEY_SKIP.has(a.fn)) {\n actionQueue.push(a)\n continue\n }\n const key = `${a.fn}|${a.args.map(x => (typeof x === 'object' ? JSON.stringify(x) : String(x))).join('|')}`\n const idx = dedupeIndex.get(key)\n if (idx !== undefined) {\n actionQueue[idx] = a\n } else {\n dedupeIndex.set(key, actionQueue.length)\n actionQueue.push(a)\n }\n }\n if (!pendingPromise) {\n let resolve!: () => void\n let reject!: (e: unknown) => void\n const promise = new Promise<void>((res, rej) => { resolve = res; reject = rej })\n pendingPromise = { resolve, reject }\n scheduleBatchFlush()\n return promise\n }\n scheduleBatchFlush()\n return new Promise<void>((res, rej) => {\n const prev = pendingPromise\n pendingPromise = {\n resolve: () => { prev?.resolve(); res() },\n reject: (e) => { prev?.reject(e); rej(e) }\n }\n })\n }\n export class BatchUpdates {\n private operations: ({ fn: keyof OElement, args: any[], node: OObject } | (() => Promise<void>))[] = []\n constructor(private node: OObject) { }\n accept(other: BatchUpdates) {\n this.operations.push(...other.operations);\n other.operations = []\n }\n async exec(immediate: boolean = false): Promise<any> {\n const ops = this.operations\n this.operations = []\n let actions: BatchOperation[] = []\n const promises = ops.map(op => {\n if (typeof op === 'object') {\n // return (this.node[op.fn as keyof OObject] as Function).apply(this.node, op.args)\n actions.push({fn: op.fn as string, args: [op.node.uid, ...op.args.map(a => a instanceof OObject ? a.uid : a)]}) // ???????\n return null\n } else {\n return op()\n }\n }).filter(e => e!=null)\n if(actions.length > 0) {\n // filter out multiple action with the same args\n const seen: Record<string, BatchOperation> = {}\n const toSend: BatchOperation[] = [] \n actions.forEach(a => {\n const hash = `${a.fn}.${a.args.map(e => e?.toString()).join(',')}`\n if(seen[hash] && !['invoke', 'setProperty', 'dispatchEvent'].includes(a.fn)) {\n return\n }\n seen[hash] = a\n toSend.push(a)\n })\n // console.log(`Skipped ${actions.length - toSend.length} actions, initial was: ${actions.length}, now its ${toSend.length}`)\n if (immediate) {\n promises.unshift(OUID.batchActions(toSend))\n } else {\n promises.unshift(enqueueBatchActions(toSend))\n }\n }\n try {\n await Promise.all(promises)\n } catch (error) {\n console.error('Error while batch updates')\n }\n }\n \n private append(fn: keyof OElement, ...args: any[]): BatchUpdates {\n this.operations.push({ fn, args, node: this.node })\n return this\n }\n add(fn: keyof OElement, node?: OObject, ...args: any[]): BatchUpdates\n add(fn: () => any): BatchUpdates\n add(fn: (() => any) | keyof OElement, node?: OObject, ...args: any[]) {\n if(typeof fn === 'function') {\n this.operations.push(fn)\n } else {\n this.operations.push({ fn, args, node: node! })\n }\n return this\n }\n addEventListener(event: string, callback: (...args: any[]) => void, options?: EventListenerOptions, policy?: EventControlPolicy) {\n return this.add(() => { this.node.addEventListener(event, callback, { options, policy }) })\n }\n setProperty(key: string, value: any) {\n return this.append('setProperty', key, value)\n }\n dettachEventListener(cbId: string) {\n return this.append('dettachEventListener', cbId)\n }\n invoke(fn: string, ...args: any[]) {\n return this.append('invoke', fn, ...args.map(a => a instanceof OObject ? a.ref : a))\n }\n dispatchEvent(eventName: string, eventClass?: string, initDict?: any) {\n return this.append('dispatchEvent', eventName, eventClass, initDict)\n }\n addClass(...tokens: string[]) {\n return this.append('addClass', ...tokens)\n }\n removeClass(...tokens: string[]) {\n return this.append('removeClass', ...tokens)\n }\n setAttribute(name: string, value: string) {\n return this.append('setAttribute', name, value)\n }\n removeAttribute(name: string) {\n return this.append('removeAttribute', name)\n }\n appendChild(child: ONode) {\n return this.append('appendChild', child.uid)\n }\n removeChild(child: ONode) {\n return this.append('removeChild', child.uid)\n }\n remove() {\n return this.append('remove')\n }\n removeAndRelease() {\n // return this.append('removeAndRelease')\n return this.append('remove').append('release')\n }\n release() {\n return this.append('release')\n }\n innerHTML(html: string) {\n return this.append('setHTML', html)\n }\n replaceChildNode(node: ONode, child: ONode) {\n return this.append('replaceChildNode', node, child)\n }\n replaceWith(node: ONode) {\n return this.append('replaceWith', node.uid)\n }\n after(toInsert: ONode) {\n return this.append('after', toInsert.uid)\n }\n setInnerText(text: string) {\n return this.append('setInnerText', text)\n }\n setContentText(text: string) {\n return this.append('setContentText', text)\n }\n insertBefore(node: ONode, element: ONode,) {\n return this.append('insertBefore', node.uid, element.uid)\n }\n setInputValue(value: string) {\n return this.append('setInputValue', value)\n }\n setStyle(key: string, value: any) {\n return this.append('setStyle', key, value)\n }\n\n }\n export type NodeType = 'Element' | 'Text' | 'Comment' | 'Attribute' | 'Unknown'\n type Attributes = { name: string, value: string }[]\n export class OObject {\n constructor(public uid: string, public tag: string) {\n }\n static toInstance(obj: OObject) {\n return new OObject(obj.uid, obj.tag)\n }\n async release(): Promise<void> {\n await OUID.call('releaseNode', this.uid)\n }\n async addEventListener(event: string, callback: (...args: any[]) => void, extra?: {options?: EventListenerOptions, policy?: EventControlPolicy}): Promise<string> {\n return OUID.addEventListener(this, event, callback, { options: extra?.options, policy: extra?.policy })\n }\n async dettachEventListener(cbId: string) {\n await OUID.dettachEventListener(cbId)\n }\n async invoke<T>(fn: string, ...args: any[]) {\n return await OUID.call<T>('invokeObjectMethod', this.uid, fn, ...args)\n }\n async invokeAndHold(fn: string, ...args: any[]) {\n const res = await OUID.call<OObject>('invokeObjectMethodAndHold', this.uid, fn, ...args)\n if (!res) return res\n return new OObject(res.uid, res.tag)\n }\n async getProperty<T>(name: string): Promise<T | null> {\n return await OUID.call<T>('getObjectProperty', this.uid, name)\n }\n async getPropertyAndHold<T>(name: string): Promise<OObject | null> {\n const res = await OUID.call<OObject>('getObjectPropertyAndHold', this.uid, name)\n if (!res) return res\n return new OObject(res.uid, res.tag)\n }\n async setProperty<T>(name: string, value: T) {\n await OUID.call('setObjectProperty', this.uid, name, value)\n }\n async dispatchEvent(eventName: string, eventClass?: string, initDict?: any): Promise<void> {\n await OUID.call('dispatchEvent', this.uid, eventName, eventClass, initDict)\n }\n updates(): BatchUpdates {\n return new BatchUpdates(this)\n }\n batches(): BatchUpdates {\n return new BatchUpdates(this)\n }\n get ref() {\n return { '__ref__': this.uid }\n }\n }\n export abstract class ONode extends OObject {\n textContent?: string | null\n type: NodeType = 'Unknown'\n attributes: Attributes\n children?: ONode[]\n classes?: string[]\n style?: string\n\n constructor(node: OObject) {\n super(node.uid, node.tag)\n for (const k in node) {\n (this as any)[k] = node[k as keyof OObject]\n }\n this.attributes ??= []\n this.classes ??= []\n this.style ??= \"\"\n }\n }\n export class OElement extends ONode {\n\n private _hydrated: boolean = false\n constructor(node: OObject) {\n super(node)\n // this._hydrated = this.classes?.includes('hydrated') ?? false\n }\n async addClass(...tokens: string[]): Promise<void> {\n await OUID.call('addClass', this.uid, ...tokens)\n }\n async removeClass(...tokens: string[]): Promise<void> {\n await OUID.call('removeClass', this.uid, ...tokens)\n }\n async setAttribute(name: string, value: string): Promise<void> {\n const attrs = await OUID.call<Attributes>('setAttribute', this.uid, name, value)\n if (attrs) {\n // update local attributes\n this.attributes = attrs\n }\n }\n async removeAttribute(name: string): Promise<void> {\n const attrs = await OUID.call<Attributes>('removeAttribute', this.uid, name)\n if (attrs) {\n this.attributes = attrs\n }\n }\n async appendChild(child: ONode): Promise<void> {\n await OUID.call('appendChild', this.uid, child.uid)\n }\n set innerHTML(value: string) {\n this.setHTML(value)\n }\n async cloneNode(state: boolean): Promise<OElement | null> {\n const cloned = await OUID.call<ODOM.ONode>('cloneNode', this.uid, state)\n return cloned ? new OElement(cloned!) : null\n }\n async remove(): Promise<void> {\n await OUID.call('removeNode', this.uid)\n }\n async removeAndRelease(): Promise<void> {\n await this.remove();\n await this.release();\n }\n async removeChild(child: ONode): Promise<void> {\n await OUID.call('removeChild', this.uid, child.uid)\n }\n async replaceChildNode(node: ONode, child: ONode): Promise<void> {\n await OUID.call('replaceChildNode', this.uid, node.uid, child.uid)\n }\n async replaceWith(node: ONode): Promise<void> {\n await OUID.call('replaceWith', this.uid, node.uid)\n }\n async after(toInsert: ONode): Promise<void> {\n await OUID.call('insertAfter', this.uid, toInsert.uid)\n }\n async setHTML(html: string): Promise<void> {\n await OUID.call('setInnerHTML', this.uid, html)\n }\n async HTML(): Promise<string> {\n return await OUID.call<string>('getInnerHTML', this.uid) ?? ''\n }\n async setInnerText(text: string): Promise<void> {\n await OUID.call('setInnerText', this.uid, text)\n }\n async setContentText(text: string): Promise<void> {\n await OUID.call('setContentText', this.uid, text)\n }\n async getContentText(): Promise<string> {\n return await OUID.call('getContentText', this.uid) ?? ''\n }\n async content(): Promise<string> {\n try {\n return await OUID.call<string>('getInnerText', this.uid) ?? ''\n } catch (err) {\n console.error(err)\n return ''\n }\n }\n async childNodes(): Promise<OElement[]> {\n return (await OUID.call<ODOM.ONode[]>('childNodes', this.uid))?.map(c => new OElement(c)) ?? []\n }\n hasAttribute(name: string): boolean {\n return !!this.attributes!.find(attr => attr.name === name);\n }\n async getAttribute(name: string): Promise<string> {\n return await OUID.call<string>('getAttribte', this.uid, name) ?? ''\n }\n attribute(name: string): string | null {\n return this.attributes.find(attr => attr.name === name)?.value ?? null\n }\n async nextSibling(): Promise<OElement | null> {\n const res = await OUID.call<ODOM.ONode>('nextSibling', this.uid)\n return res ? new OElement(res) : null;\n }\n async getAttributeNames(): Promise<string[]> {\n return await OUID.call<string[]>('getAttributeNames', this.uid) ?? []\n }\n async parentNode(): Promise<OElement | null> {\n const node = await OUID.call<ONode>('parentNode', this.uid)\n return node ? new OElement(node) : null\n }\n async insertBefore(node: ONode, element: ONode): Promise<void> {\n await OUID.call('insertBefore', this.uid, node.uid, element.uid)\n }\n async setInputValue(value: string): Promise<void> {\n await OUID.call('setInputValue', this.uid, value)\n }\n async inputValue(): Promise<string> {\n return await OUID.call('inputValue', this.uid) ?? ''\n }\n get hydrated() {\n return this._hydrated\n }\n hydrate() {\n this._hydrated = true\n this.addClass('hydrated')\n }\n\n\n async query(selector: string, filter?: QueryFilter[]) {\n return await OUID.query(selector, filter, this.uid)\n }\n async queryAll(selector: string, filter?: QueryFilter[]) {\n return await OUID.queryAll(selector, filter, this.uid)\n }\n\n async setStyle(key: string, value: any) {\n await OUID.call('setStyle', this.uid, key, value)\n }\n\n }\n export class CanvasGradient extends OObject {\n constructor(obj: OObject) {\n super(obj.uid, obj.tag)\n }\n addColorStop(offset: number, color: string) {\n this.invoke('addColorStop', offset, color)\n return this\n }\n }\n export class DOMMatrix extends OObject {\n batch = new BatchUpdates(this)\n constructor(obj: OObject) {\n super(obj.uid, obj.tag)\n }\n static new(): Promise<DOMMatrix>\n static new(initString: string): Promise<DOMMatrix>\n static new(initArray: number[]): Promise<DOMMatrix>\n static async new(arg?: number[] | string): Promise<DOMMatrix | null> {\n const res = typeof arg !== 'undefined' ? await OUID.newObject('DOMMatrix', arg) : await OUID.newObject('DOMMatrix')\n if (!res) return null\n return new DOMMatrix(res)\n }\n\n invertSelf() {\n this.batch.invoke('invertSelf')\n return this\n }\n multiplySelf(): DOMMatrix\n multiplySelf(other?: DOMMatrix): DOMMatrix {\n this.batch.invoke('multiplySelf', ...(other ? [other.ref] : []))\n return this\n }\n premultiplySelf(): DOMMatrix\n premultiplySelf(other?: DOMMatrix): DOMMatrix {\n this.batch.invoke('premultiplySelf', ...(other ? [other.ref] : []))\n return this\n }\n\n\n rotateAxisAngleSelf(rotX?: number, rotY?: number, rotZ?: number, angle?: number) {\n const args = []\n if (rotX) {\n args.push(rotX)\n }\n if (rotY) {\n args.push(rotY)\n }\n if (rotZ) {\n args.push(rotZ)\n }\n if (angle) {\n args.push(angle)\n }\n this.batch.invoke('rotateAxisAngleSelf', ...args)\n return this\n }\n\n rotateFromVectorSelf(rotX?: number, rotY?: number) {\n const args = []\n if (rotX) {\n args.push(rotX)\n }\n if (rotY) {\n args.push(rotY)\n }\n this.batch.invoke('rotateFromVectorSelf', ...args)\n return this\n }\n rotateSelf(rotX?: number, rotY?: number, rotZ?: number) {\n const args = []\n if (rotX) {\n args.push(rotX)\n }\n if (rotY) {\n args.push(rotY)\n }\n if (rotZ) {\n args.push(rotZ)\n }\n this.batch.invoke('rotateFromVectorSelf', ...args)\n return this\n }\n scale3dSelf(scale?: number, originX?: number, originY?: number, originZ?: number) {\n const args = []\n if (scale) {\n args.push(scale)\n }\n if (originX) {\n args.push(originX)\n }\n if (originY) {\n args.push(originY)\n }\n if (originZ) {\n args.push(originZ)\n }\n this.batch.invoke('scale3dSelf', ...args)\n return this\n }\n scaleSelf(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number) {\n const args = []\n if (scaleX) {\n args.push(scaleX)\n }\n if (scaleY) {\n args.push(scaleY)\n }\n if (scaleZ) {\n args.push(scaleZ)\n }\n if (originX) {\n args.push(originX)\n }\n if (originY) {\n args.push(originY)\n }\n if (originZ) {\n args.push(originZ)\n }\n this.batch.invoke('scaleSelf', ...args)\n return this\n }\n setMatrixValue(transformList: string) {\n this.invoke<void>('setMatrixValue', transformList)\n return this\n }\n skewXSelf(sX: number) {\n this.batch.invoke('skewXSelf', sX)\n return this\n }\n skewYSelf(sX: number) {\n this.batch.invoke('skewYSelf', sX)\n return this\n }\n\n translateSelf(translateX: number, translateY: number, translateZ?: number) {\n this.batch.invoke('translateSelf', translateX, translateY, ...(translateZ ? [translateZ] : []))\n return this\n }\n async commit() {\n await this.batch.exec()\n }\n async is2D(): Promise<boolean> {\n return (await this.invoke<boolean>('is2D')) ?? false\n }\n async isIdentity(): Promise<boolean> {\n return (await this.invoke<boolean>('isIdentity')) ?? false\n }\n\n async flipX(): Promise<DOMMatrix | null> {\n const res = await this.invokeAndHold('flipX')\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async flipY(): Promise<DOMMatrix | null> {\n const res = await this.invokeAndHold('flipY')\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async inverse(): Promise<DOMMatrix | null> {\n const res = await this.invokeAndHold('inverse')\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async multiply(other?: DOMMatrix) {\n const res = await this.invokeAndHold('multiply', ...(other ? [other.ref] : []))\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async rotate(rotX?: number, rotY?: number, rotZ?: number) {\n const args = []\n if (rotX) {\n args.push(rotX)\n }\n if (rotY) {\n args.push(rotY)\n }\n if (rotZ) {\n args.push(rotZ)\n }\n const res = await this.invokeAndHold('rotate', ...args)\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async rotateAxisAngle(rotX?: number, rotY?: number, rotZ?: number, angle?: number) {\n const args = []\n if (rotX) {\n args.push(rotX)\n }\n if (rotY) {\n args.push(rotY)\n }\n if (rotZ) {\n args.push(rotZ)\n }\n if (angle) {\n args.push(angle)\n }\n const res = await this.invokeAndHold('rotateAxisAngle', ...args)\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async rotateFromVector(rotX?: number, rotY?: number) {\n const args = []\n if (rotX) {\n args.push(rotX)\n }\n if (rotY) {\n args.push(rotY)\n }\n const res = await this.invokeAndHold('rotateFromVector', ...args)\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async scale(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number) {\n const args = []\n if (scaleX) {\n args.push(scaleX)\n }\n if (scaleY) {\n args.push(scaleY)\n }\n if (scaleZ) {\n args.push(scaleZ)\n }\n if (originX) {\n args.push(originX)\n }\n if (originY) {\n args.push(originY)\n }\n if (originZ) {\n args.push(originZ)\n }\n const res = await this.invokeAndHold('scale', ...args)\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async scale3d(scale?: number, originX?: number, originY?: number, originZ?: number) {\n const args = []\n if (scale) {\n args.push(scale)\n }\n if (originX) {\n args.push(originX)\n }\n if (originY) {\n args.push(originY)\n }\n if (originZ) {\n args.push(originZ)\n }\n const res = await this.invokeAndHold('scale', ...args)\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async skewX(sX?: number) {\n const args = []\n if (sX) {\n args.push(sX)\n }\n const res = await this.invokeAndHold('skewX', ...args)\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async skewY(sY?: number) {\n const args = []\n if (sY) {\n args.push(sY)\n }\n const res = await this.invokeAndHold('skewY', ...args)\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n toJSON(): Promise<any> {\n return this.invoke<any>('toJSON')\n }\n async toString(): Promise<string | null> {\n return this.invoke<string>('toString')\n }\n async translate(translateX?: number, translateY?: number, translateZ?: number) {\n const args = []\n if (translateX) {\n args.push(translateX)\n }\n if (translateY) {\n args.push(translateY)\n }\n if (translateZ) {\n args.push(translateZ)\n }\n const res = await this.invokeAndHold('translate', ...args)\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n\n }\n export class CanvasPattern extends OObject {\n constructor(obj: OObject) {\n super(obj.uid, obj.tag)\n }\n async setTransform(matrix: DOMMatrix): Promise<void> {\n await this.invoke('setTransform', matrix.ref)\n }\n }\n export class Canvas2DContext extends OObject {\n private batch = new BatchUpdates(this);\n constructor(uid: string) {\n super(uid, 'unknown')\n }\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise: boolean = false) {\n this.batch.invoke('arc', x, y, radius, startAngle, endAngle, counterclockwise)\n return this\n }\n arcTo(x1: number, y1: number, x2: number, y2: number, radius: number) {\n this.batch.invoke('arcTo', x1, y1, x2, y2, radius)\n return this\n }\n bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number) {\n this.batch.invoke('bezierCurveTo', cp1x, cp1y, cp2x, cp2y, x, y)\n return this\n }\n clearRect(x: number, y: number, width: number, height: number) {\n this.batch.invoke('clearRect', x, y, width, height)\n return this\n }\n clip(path?: CanvasPath2D): Canvas2DContext\n clip(fillRule?: 'nonzero' | 'evenodd'): Canvas2DContext\n clip(path: CanvasPath2D, fillRule?: 'nonzero' | 'evenodd'): Canvas2DContext\n clip(arg1?: CanvasPath2D | 'nonzero' | 'evenodd', arg2?: 'nonzero' | 'evenodd'): Canvas2DContext {\n const args = []\n if (typeof arg1 === 'string') {\n args.push(arg1)\n } else if (arg1 instanceof CanvasPath2D) {\n arg1.commit(this.batch)\n args.push(arg1.ref)\n }\n if (typeof arg2 === 'string') {\n args.push(arg2)\n }\n this.batch.invoke('clip', ...args)\n return this\n }\n beginPath() {\n this.batch.invoke('beginPath')\n return this\n }\n closePath() {\n this.batch.invoke('closePath')\n return this\n }\n async createConicGradient(startAngle: number, x: number, y: number): Promise<CanvasGradient | null> {\n const res = await this.invokeAndHold('createConicGradient', startAngle, x, y)\n if (!res) {\n return null;\n }\n return new CanvasGradient(res)\n }\n async createLinearGradient(x0: number, y0: number, x1: number, y1: number): Promise<CanvasGradient | null> {\n const res = await this.invokeAndHold('createLinearGradient', x0, y0, x1, y1)\n if (!res) {\n return null;\n }\n return new CanvasGradient(res)\n }\n async createPattern(image: OObject, repetition: 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat' | '' = '') {\n const res = await this.invokeAndHold('createPattern', image.ref, repetition)\n if (!res) {\n return null;\n }\n return new CanvasPattern(res)\n }\n async createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): Promise<CanvasGradient | null> {\n const res = await this.invokeAndHold('createRadialGradient', x0, y0, r0, x1, y1, r1)\n if (!res) {\n return null;\n }\n return new CanvasGradient(res)\n }\n drawImage(image: Image | OObject, dx: number, dy: number): Canvas2DContext\n drawImage(image: Image | OObject, dx: number, dy: number, dWidth: number, dHeight: number): Canvas2DContext\n drawImage(image: Image | OObject, sx: number, sy: number, sWidth: number, sHeight: number, dx: number, dy: number, dWidth: number, dHeight: number): Canvas2DContext\n drawImage(image: Image | OObject, sx: number, sy: number, sWidth?: number, sHeight?: number, dx?: number, dy?: number, dWidth?: number, dHeight?: number) {\n const args: any[] = [image.ref]\n if (typeof dx === 'undefined') {\n args.push(sx, sy)\n if (sWidth) args.push(sWidth)\n if (sHeight) args.push(sHeight)\n this.batch.invoke('drawImage', ...args)\n return this\n }\n args.push(sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)\n this.batch.invoke('drawImage', ...args)\n return this\n }\n ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise: boolean = false) {\n this.batch.invoke('ellipse', x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise)\n return this\n }\n fill(path?: CanvasPath2D | 'nonzero' | 'evenodd', fillRule?: 'nonzero' | 'evenodd') {\n const args = []\n if (path) {\n args.push(typeof path === 'string' ? path : (path.commit(this.batch), path.ref))\n }\n if (fillRule) {\n args.push(fillRule)\n }\n this.batch.invoke('fill', ...args)\n return this\n }\n fillRect(x: number, y: number, width: number, height: number) {\n this.batch.invoke('fillRect', x, y, width, height)\n return this\n }\n fillText(text: string, x: number, y: number, maxWidth?: number) {\n this.batch.invoke('fillText', text, x, y, ...(maxWidth ? [maxWidth] : []))\n return this\n }\n\n getImageData(sx: number, sy: number, sw: number, sh: number, settings?: { colorSpace: 'srgb' | 'display-p3', pixelFormat: 'rgba-unorm8' | 'rgba-float16' }) {\n return this.invokeAndHold('getImageData', sx, sy, sw, sh, ...(settings ? [settings] : []))\n }\n getLineDash() {\n return this.invoke<number[]>('getLineDash')\n }\n async getTransform() {\n const mat = await this.invokeAndHold('getTransform')\n if (!mat) {\n return null\n }\n return new DOMMatrix(mat)\n }\n async isContextLost() {\n return await this.invoke<boolean>('isContextLost')\n }\n isPointInPath(x: number, y: number, fillRule?: 'nonzero' | 'evenodd'): Promise<boolean|null>;\n isPointInPath(path: CanvasPath2D, x: number, y: number, fillRule?: 'nonzero' | 'evenodd'): Promise<boolean|null>;\n async isPointInPath(\n arg1: number | CanvasPath2D,\n arg2: number,\n arg3?: number | ('nonzero' | 'evenodd'),\n arg4?: ('nonzero' | 'evenodd'),\n ): Promise<boolean|null> {\n\n const args = []\n if (typeof arg1 === 'number') {\n args.push(arg1, arg2)\n if (arg3) {\n args.push(arg3)\n }\n } else {\n await arg1.commit(this.batch)\n args.push(arg1.ref, arg2, arg3)\n if(arg4) {\n args.push(arg4)\n }\n }\n return (await this.invoke<boolean>('isPointInPath', ...args))\n\n }\n isPointInStroke(x: number, y: number): Promise<boolean>\n isPointInStroke(path: CanvasPath2D, x: number, y: number): Promise<boolean>\n async isPointInStroke(arg1: CanvasPath2D | number, arg2: number, arg3?: number): Promise<boolean> {\n const args = []\n if (typeof arg1 === 'number') {\n args.push(arg1, arg2)\n } else {\n await arg1.commit()\n args.push(arg1.ref, arg2, arg3)\n }\n return (await this.invoke('isPointInStroke', ...args)) ?? false\n }\n\n\n lineTo(x: number, y: number): Canvas2DContext {\n this.batch.invoke('lineTo', x, y)\n return this\n }\n async measureText(text: number): Promise<number> {\n return (await this.invoke('measureText', text)) ?? 0\n }\n moveTo(x: number, y: number): Canvas2DContext {\n this.batch.invoke('moveTo', x, y)\n return this\n }\n putImageData(imageData: OObject, dx: number, dy: number): Canvas2DContext\n putImageData(imageData: OObject, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): Canvas2DContext\n putImageData(imageData: OObject, dx: number, dy: number, dirtyX?: number, dirtyY?: number, dirtyWidth?: number, dirtyHeight?: number) {\n const args = [imageData.ref, dx, dy]\n if (dirtyX) args.push(dirtyX)\n if (dirtyY) args.push(dirtyY)\n if (dirtyWidth) args.push(dirtyWidth)\n if (dirtyHeight) args.push(dirtyHeight)\n this.batch.invoke('putImageData', ...args)\n return this\n }\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number) {\n this.batch.invoke('quadraticCurveTo', cpx, cpy, x, y)\n return this\n }\n rect(x: number, y: number, width: number, height: number) {\n this.batch.invoke('rect', x, y, width, height)\n return this\n }\n reset() {\n this.invoke('reset')\n }\n resetTransform() {\n this.invoke('resetTransform')\n }\n restore() {\n return this.batch.invoke('restore')\n }\n rotate(angle: number): Canvas2DContext {\n this.batch.invoke('rotate', angle)\n return this\n }\n roundRect(x: number, y: number, width: number, height: number, radii: number | number[]) {\n this.batch.invoke('roundRect', x, y, width, height, radii)\n return this\n }\n save() {\n return this.batch.invoke('save')\n }\n scale(x: number, y: number): Canvas2DContext {\n this.batch.invoke('scale', x, y)\n return this\n }\n setLineDash(segments: number[]) {\n return this.invoke<void>('setLineDash', segments)\n }\n setTransform(matrix: DOMMatrix): void\n setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void\n setTransform(a: number | DOMMatrix, b?: number, c?: number, d?: number, e?: number, f?: number):void {\n if (typeof a === 'number') {\n this.batch.invoke('setTransform', a, b, c, d, e, f)\n } else {\n this.batch.invoke('setTransform', a.ref)\n }\n }\n stroke(path?: CanvasPath2D): Canvas2DContext {\n this.batch.invoke('stroke', ...(path ? [(path.commit(this.batch), path.ref)] : []))\n return this\n }\n strokeRect(x: number, y: number, width: number, height: number): Canvas2DContext {\n this.batch.invoke('strokeRect', x, y, width, height)\n return this\n }\n strokeText(text: string, x: number, y: number, maxWidth?: number): Canvas2DContext {\n this.batch.invoke('strokeText', text, x, y, ...(maxWidth ? [maxWidth] : []))\n return this\n }\n transform(a: number, b: number, c: number, d: number, e: number, f: number): Canvas2DContext {\n this.batch.invoke('transform', a, b, c, d, e, f)\n return this\n }\n translate(x: number, y: number): Canvas2DContext {\n this.batch.invoke('translate', x, y)\n return this\n }\n set fillStyle(value: string | CanvasGradient | CanvasPattern) {\n this.setFillStyle(value)\n }\n setFillStyle(style: string | CanvasGradient | CanvasPattern): Canvas2DContext {\n this.batch.setProperty('fillStyle', typeof style === 'string' ? style : style instanceof OObject ? style.ref : style)\n return this\n }\n set filter(value: string) {\n this.setFilter(value)\n }\n setFilter(filter: string) {\n this.batch.setProperty('filter', filter)\n return this\n }\n set font(value: string) {\n this.setFont(value)\n }\n setFont(font: string) {\n this.batch.setProperty('font', font)\n return this\n }\n set fontKerning(value: string) {\n this.setFontKerning(value)\n }\n setFontKerning(kerning: string) {\n this.batch.setProperty('fontKerning', kerning)\n return this\n }\n set fontStretch(value: string) {\n this.setFontStretch(value)\n }\n setFontStretch(value: string) {\n this.batch.setProperty('fontStretch', value)\n return this\n }\n set fontVariantCaps(value: string) {\n this.setFontVariantCaps(value)\n }\n setFontVariantCaps(value: string) {\n this.batch.setProperty('fontVariantCaps', value)\n return this\n }\n set globalAlpha(value: number) {\n this.setGlobalAlpha(value)\n }\n setGlobalAlpha(value: number) {\n this.batch.setProperty('globalAlpha', value)\n return this\n }\n set globalCompositeOperation(value: string) {\n this.setGlobalCompositeOperation(value)\n }\n setGlobalCompositeOperation(value: string) {\n this.batch.setProperty('globalCompositeOperation', value)\n return this\n }\n set imageSmoothingEnabled(value: boolean) {\n this.setImageSmoothingEnabled(value)\n }\n setImageSmoothingEnabled(value: boolean) {\n this.batch.setProperty('imageSmoothingEnabled', value)\n return this\n }\n set imageSmoothingQuality(value: string) {\n this.setImageSmoothingQuality(value)\n }\n setImageSmoothingQuality(value: string) {\n this.batch.setProperty('imageSmoothingQuality', value)\n return this\n }\n set letterSpacing(value: string) {\n this.setLetterSpacing(value)\n }\n setLetterSpacing(value: string) {\n this.batch.setProperty('letterSpacing', value)\n return this\n }\n set lineCap(value: string) {\n this.setLineCap(value)\n }\n setLineCap(value: string) {\n this.batch.setProperty('lineCap', value)\n return this\n }\n set lineDashOffset(value: number) {\n this.setLineDashOffset(value)\n }\n setLineDashOffset(value: number) {\n this.batch.setProperty('lineDashOffset', value)\n return this\n }\n set lineJoin(value: string) {\n this.setLineJoin(value)\n }\n setLineJoin(value: string) {\n this.batch.setProperty('lineJoin', value)\n return this\n }\n set lineWidth(value: number) {\n this.setLineWidth(value)\n }\n setLineWidth(value: number) {\n this.batch.setProperty('lineWidth', value)\n return this\n }\n set miterLimit(value: number) {\n this.setMiterLimit(value)\n }\n setMiterLimit(value: number) {\n this.batch.setProperty('miterLimit', value)\n return this\n }\n set shadowBlur(value: number) {\n this.setShadowBlur(value)\n }\n setShadowBlur(value: number) {\n this.batch.setProperty('shadowBlur', value)\n return this\n }\n set shadowColor(value: string) {\n this.setShadowColor(value)\n }\n setShadowColor(value: string) {\n this.batch.setProperty('shadowColor', value)\n return this\n }\n set shadowOffsetX(value: number) {\n this.setShadowOffsetX(value)\n }\n setShadowOffsetX(value: number) {\n this.batch.setProperty('shadowOffsetX', value)\n return this\n }\n set shadowOffsetY(value: number) {\n this.setShadowOffsetY(value)\n }\n setShadowOffsetY(value: number) {\n this.batch.setProperty('shadowOffsetY', value)\n return this\n }\n set strokeStyle(value: any) {\n this.setStrokeStyle(value)\n }\n setStrokeStyle(value: any) {\n this.batch.setProperty('strokeStyle', typeof value === 'string' ? value : value instanceof OObject ? value.ref : value)\n return this\n }\n set textAlign(value: string) {\n this.setTextAlign(value)\n }\n setTextAlign(value: string) {\n this.batch.setProperty('textAlign', value)\n return this\n }\n set textBaseline(value: string) {\n this.setTextBaseline(value)\n }\n setTextBaseline(value: string) {\n this.batch.setProperty('textBaseline', value)\n return this\n }\n set wordSpacing(value: string) {\n this.setWordSpacing(value)\n }\n setWordSpacing(value: string) {\n this.batch.setProperty('wordSpacing', value)\n return this\n }\n set textRendering(value: string) {\n this.setTextRendering(value)\n }\n setTextRendering(value: string) {\n this.batch.setProperty('textRendering', value)\n return this\n }\n async commit(): Promise<void> {\n await this.batch.exec()\n }\n }\n export class Image extends OObject {\n constructor(obj: OObject) {\n super(obj.uid, obj.tag)\n }\n static async new(width?: number, height?: number): Promise<Image | null> {\n const args = []\n if (width) args.push(width)\n if (height) args.push(height)\n const img = await OUID.newObject('Image', ...args)\n if (!img) return null\n return new Image(img)\n }\n async width(): Promise<number> {\n return (await this.getProperty<number>('width')) ?? 0\n }\n async height(): Promise<number> {\n return (await this.getProperty<number>('height')) ?? 0\n }\n async naturalWidth(): Promise<number> {\n return (await this.getProperty<number>('naturalWidth')) ?? 0\n }\n async naturalHeight(): Promise<number> {\n return (await this.getProperty<number>('naturalHeight')) ?? 0\n }\n async src() {\n return await this.getProperty<string>('src')\n }\n async currentSrc() {\n return await this.getProperty<string>('currentSrc')\n }\n async setSrc(src: string) {\n await this.setProperty('src', src)\n }\n }\n export class CanvasPath2D extends OObject {\n private batch = new BatchUpdates(this);\n constructor(obj: OObject) {\n super(obj.uid, obj.tag)\n }\n\n static async create() {\n const ret = await OUID.newObject('Path2D')\n if (!ret) {\n return null\n }\n return new CanvasPath2D(ret)\n }\n addPath(path: CanvasPath2D) {\n this.batch.invoke('addPath', path.ref)\n return this\n }\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise: boolean = false) {\n this.batch.invoke('arc', x, y, radius, startAngle, endAngle, counterclockwise)\n return this\n }\n arcTo(x1: number, y1: number, x2: number, y2: number, radius: number) {\n this.batch.invoke('arcTo', x1, y1, x2, y2, radius)\n return this\n }\n bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number) {\n this.batch.invoke('bezierCurveTo', cp1x, cp1y, cp2x, cp2y, x, y)\n return this\n }\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number) {\n this.batch.invoke('quadraticCurveTo', cpx, cpy, x, y)\n return this\n }\n closePath() {\n this.batch.invoke('closePath')\n return this\n }\n ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise: boolean = false) {\n this.batch.invoke('ellipse', x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise)\n return this\n }\n moveTo(x: number, y: number) {\n this.batch.invoke('moveTo', x, y)\n return this\n }\n lineTo(x: number, y: number) {\n this.batch.invoke('lineTo', x, y)\n return this\n }\n rect(x: number, y: number, width: number, height: number) {\n this.batch.invoke('rect', x, y, width, height)\n return this\n }\n roundRect(x: number, y: number, width: number, height: number, radii: number | number[]) {\n this.batch.invoke('roundRect', x, y, width, height, radii)\n return this\n }\n commit(parent?: BatchUpdates): Promise<void> {\n if(parent) {\n parent.accept(this.batch)\n return Promise.resolve()\n }\n return this.batch.exec()\n }\n\n }\n export class CanvasElement extends OElement {\n constructor(node: OElement) {\n super(node)\n }\n async width() {\n return this.getProperty<number>('width')\n }\n async height() {\n return this.getProperty<number>('height')\n }\n async setWidth(width: number) {\n this.setProperty('width', width)\n }\n async setHeight(height: number) {\n this.setProperty('height', height)\n }\n async getContext(context: string): Promise<Canvas2DContext | null> {\n const obj = await this.invokeAndHold('getContext', context)\n if (!obj) return obj\n return new Canvas2DContext(obj.uid)\n }\n static async of(selector: string, filter?: QueryFilter[], nodeId?: string): Promise<CanvasElement | null> {\n const node = await OUID.query(selector, filter)\n if (!node) return null\n return new CanvasElement(node)\n }\n }\n}\n\nexport interface EventListenerOptions {\n once?: boolean;\n passive?: boolean; capture?: boolean\n}\nexport interface EventControlPolicy {\n alwaysPreventDefault?: boolean;\n alwaysStopPropagation?: boolean;\n alwaysStopImmediatePropagation?: boolean\n}\nexport interface OUIDBridgeInterface {\n invoke(name: string): Promise<any>\n emit(event: string, data: any): void\n subscribe(event: string, callback: (id: string, data: string) => void): void\n}\n\nexport type OUIDConfig = {\n appId: string;\n appName: string,\n appSecret: string\n}\nexport interface BatchOperation {\n fn: string,\n args: any[]\n}\nexport declare var WebOUID: { invoke: (id: string, name: string, argsJson: string) => void } | undefined\ntype SuccessCallback = (...args: any[]) => void\ntype ErrorCallback = (...args: any[]) => void\ntype InvokeCallback = { success: SuccessCallback, error: ErrorCallback }\ntype RequestData = { method: string, headers: Record<string, string>, body: any, credentials: \"include\" | \"omit\" | \"same-origin\" }\nexport class OUIDBridge implements OUIDBridgeInterface {\n private callbacks = new Map<string, InvokeCallback>()\n private DOM_EVENT_LISTENERS = new Map<string, (...args: any[]) => void>()\n private timers = new Map<number, string>()\n private _config?: OUIDConfig = undefined\n private listeners = new Map<string, ((id: string, data: string) => void)[]>()\n constructor() {\n this.subscribe('__ouid_native_event_success__', (id, data) => {\n const cb = this.callbacks.get(id)\n if (cb) {\n this.callbacks.delete(id)\n return cb.success(...JSON.parse(data))\n }\n })\n this.subscribe('__ouid_native_event_error__', (id, data) => {\n const cb = this.callbacks.get(id)\n if (cb) {\n this.callbacks.delete(id)\n return cb.error(...JSON.parse(data))\n }\n })\n this.subscribe('__ouid_web_event__', (id, data) => {\n const cb = this.DOM_EVENT_LISTENERS.get(id)\n const args = JSON.parse(data)\n if (cb) {\n // this.callbacks.delete(id)\n const event = args[1]\n if (event && typeof(event) === 'object') {\n event['target'] = event?.target ? new ODOM.OElement(event.target) : null\n event['currentTarget'] = event?.currentTarget ? new ODOM.OElement(event.currentTarget) : null\n event['relatedTarget'] = event?.relatedTarget ? new ODOM.OElement(event.relatedTarget) : null\n }\n return cb(event)\n } else {\n console.error('No cb found for ', id, args[0])\n }\n })\n }\n config(conf?: OUIDConfig): OUIDBridge {\n this._config = conf\n return this\n }\n\n invoke(name: string, ...args: any[]): Promise<any> {\n const id = generateUIID(name)\n return new Promise((res, rej) => {\n this.callbacks.set(id, { success: res, error: rej })\n try {\n if (!WebOUID) throw new Error(\"NativeOUID bridge not available\")\n WebOUID.invoke(id, name, JSON.stringify(args))\n } catch (error) {\n console.error(error)\n this.callbacks.delete(id)\n }\n })\n }\n registerComponent(tag: string, compClass: OComponentType<any, any>) {\n componentsRegistry.register(tag, compClass)\n }\n unregisterComponent(tag: string, compClass: OComponentType<any, any>) {\n componentsRegistry.unregister(tag)\n }\n /**\n * Make a synchronous class\n * @param name the name without '_oui' prefix\n * @param args the arguments list\n * @returns a promise of T\n */\n async call<T>(name: string, ...args: any[]): Promise<T | null> {\n try {\n const res = await this.invoke(`_ouid_${name}`, ...args)\n return res.data as T\n } catch (error) {\n console.error(error)\n return null\n }\n }\n emit(event: string, data: any): void {\n WebOUID?.invoke('event', event, JSON.stringify(data))\n }\n /**\n * \n * @param event Create a subscription for a given event name, should be possible to register only once ??\n * @param callback \n */\n\n\n subscribe(event: string, callback: (id: string, ...args: any[]) => void): void {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, []);\n // attach a single handler for native -> JS calls\n (globalThis as any)[event] = (id: string, data: string) => {\n this.listeners.get(event)?.forEach(cb => cb(id, data))\n }\n // if (window && document) {\n // (window as any)[event] = (globalThis as any)[event]\n // }\n }\n this.listeners.get(event)!.push(callback)\n }\n\n\n async query(selector: string, filter?: QueryFilter[], nodeId?: string): Promise<ODOM.OElement | null> {\n const node = await this.call<ODOM.ONode>('query', selector, filter, nodeId)\n return node ? new ODOM.OElement(node) : null\n }\n async queryAll(selector: string, filter?: QueryFilter[], nodeId?: string): Promise<ODOM.OElement[] | null> {\n const nodes = await this.call<ODOM.ONode[]>('queryAll', selector, filter, nodeId)\n return nodes ? nodes.map(n => new ODOM.OElement(n)) : []\n }\n\n async createElement(tag: string, props: Record<string, string> = {}): Promise<ODOM.OElement | null> {\n const node = await this.call<ODOM.ONode>('createElement', tag, props)\n return node ? new ODOM.OElement(node) : null\n }\n async createComment(data: string): Promise<ODOM.OElement | null> {\n const node = await this.call<ODOM.ONode>('createComment', data)\n return node ? new ODOM.OElement(node) : null\n }\n\n async addEventListener(node: ODOM.OObject | 'window' | 'document',\n event: string,\n callback: (...args: any[]) => void,\n extra?: {\n options?: EventListenerOptions,\n policy?: EventControlPolicy\n }\n ): Promise<string> {\n const cbId = generateUIID(event + (typeof node == 'string' ? node : node.tag))\n this.DOM_EVENT_LISTENERS.set(cbId, callback)\n await OUID.call('attachEventListener', typeof node == 'string' ? node : node.uid, cbId, event, extra?.options, extra?.policy)\n return cbId\n }\n async dettachEventListener(cbId: string) {\n this.DOM_EVENT_LISTENERS.delete(cbId)\n await OUID.call('dettachEventListener', cbId)\n }\n\n\n async createComponentStyles(css: string, inject: boolean = true): Promise<ODOM.OElement | null> {\n const node = await OUID.call<ODOM.OElement>('createComponentStyles', css, inject)\n return node ? new ODOM.OElement(node) : null;\n }\n async appendComponentStyles(cssNode: string): Promise<void> {\n await OUID.call<ODOM.OElement>('appendComponentStyles', cssNode)\n }\n async rejectComponentStyles(cssNode: ODOM.ONode): Promise<void> {\n await OUID.call('rejectComponentStyles', cssNode.uid)\n }\n\n async getOObject(id: string): Promise<ODOM.OObject | null> {\n const obj = await OUID.call<ODOM.OObject>('getOObject', id)\n return obj ? new ODOM.OObject(obj.uid, obj.tag) : null\n }\n async acquireObject(name: string): Promise<ODOM.OObject | null> {\n const obj = await OUID.call<ODOM.OObject>('acquireObject', name)\n return obj ? new ODOM.OObject(obj.uid, obj.tag) : null\n }\n\n async setTimeout(callback: () => void, delay: number): Promise<number> {\n const cbId = generateUIID('setTimeout' + delay)\n this.DOM_EVENT_LISTENERS.set(cbId, () => {\n callback()\n // remove from queue\n const cb = this.timers.get(id)\n if (cb) {\n this.timers.delete(id)\n this.DOM_EVENT_LISTENERS.delete(cb)\n }\n })\n const id = await OUID.call<number>('setTimeout', cbId, delay) ?? -1\n if (id >= 0) {\n this.timers.set(id, cbId)\n }\n return id\n }\n async clearTimeout(id: number): Promise<void> {\n const cb = this.timers.get(id)\n if (cb) {\n this.timers.delete(id)\n this.DOM_EVENT_LISTENERS.delete(cb)\n await OUID.call<number>('clearTimeout', id)\n }\n }\n async setInterval(callback: () => void, delay: number): Promise<number> {\n const cbId = generateUIID('setInterval' + delay)\n this.DOM_EVENT_LISTENERS.set(cbId, callback)\n const id = await OUID.call<number>('setInterval', cbId, delay) ?? -1\n if (id >= 0) {\n this.timers.set(id, cbId)\n }\n return id\n }\n async clearInterval(id: number): Promise<void> {\n const cb = this.timers.get(id)\n if (cb) {\n this.timers.delete(id)\n this.DOM_EVENT_LISTENERS.delete(cb)\n await OUID.call<number>('clearInterval', id)\n }\n }\n\n\n fetch(url: string, input: RequestData, encodeAs: \"json\"): Promise<any>\n fetch(url: string, input: RequestData, encodeAs: \"text\"): Promise<string>\n fetch(url: string, input: RequestData, encodeAs: \"base64\"): Promise<string>\n fetch(url: string, input: RequestData, encodeAs: \"buffer\"): Promise<ODOM.OObject>\n async fetch(\n url: string,\n input: RequestData,\n encodeAs: \"json\" | \"text\" | \"base64\" | 'buffer' | 'bytes' = \"json\"\n ): Promise<any> {\n const res = await OUID.call(\"fetch\", url, input, encodeAs);\n if(encodeAs === 'buffer' || encodeAs === 'bytes') {\n return ODOM.OObject.toInstance(res as any)\n }\n return res\n }\n\n async alert(message: string): Promise<void> {\n console.log('Alerting:::', message)\n await OUID.call(\"alert\", message);\n }\n async prompt(message: string): Promise<void> {\n await OUID.call(\"prompt\", message);\n }\n\n async newObject(ctr: string, ...args: any[]) {\n return OUID.call<ODOM.OObject>('newObject', ctr, ...args)\n }\n async requestAnimationFrame(callback: (fps: number) => void): Promise<number>{\n const cbId = generateUIID('requestAnimationFrame')\n this.DOM_EVENT_LISTENERS.set(cbId, (fps: number) => {\n callback(fps)\n // remove from queue\n const cb = this.timers.get(id)\n if (cb) {\n this.DOM_EVENT_LISTENERS.delete(cb)\n this.timers.delete(id)\n }\n })\n const id = await OUID.call<number>('requestAnimationFrame', cbId) ?? -1\n if (id >= 0) {\n this.timers.set(id, cbId)\n }\n return id\n }\n async cancelAnimationFrame(id: number): Promise<void> {\n const cb = this.timers.get(id)\n if (cb) {\n this.timers.delete(id)\n await OUID.call<number>('cancelAnimationFrame', id)\n this.DOM_EVENT_LISTENERS.delete(cb)\n }\n }\n async batchActions(operations: BatchOperation[]): Promise<void> {\n await OUID.call('batchActions', operations)\n }\n nextTick(cb: () => void) {\n OUID.setTimeout(cb, 0)\n }\n}\n\n\nexport const OUID = new Proxy(new OUIDBridge(), {\n get: (target, p) => {\n if (p in target) {\n return target[p as keyof OUIDBridge]\n }\n return async <T>(...args: any) => {\n return await target.call<T>(p as string, ...args)\n }\n }\n}) as OUIDBridge & Record<string, (...args: any[]) => Promise<any>>;\n\n; (globalThis as any).OUID = OUID\n\ndeclare global {\n var OUID: OUIDBridge & Record<string, (...args: any[]) => Promise<any>>;\n}\n","import { Component, ComponentConstructor, createComponent, OComponent, OComponentType, RenderNode } from \"./component\";\nimport { App, inject } from \"./app\";\nimport { isStated } from \"./state\";\nimport { ComponentsRegistry, componentsRegistry } from \"./registry\";\nimport { ODOM } from \"./interfaces/bridge\";\n\nfunction toCamelCase(name: string): string {\n return name.replace(/-([a-z])/g, (_, char) => char.toUpperCase());\n}\nfunction toSnakeCase(name: string): string {\n return name.replace(/(?!^)([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\n\nfunction normaliseValue<T>(value: T) {\n if (isStated(value)) {\n return value.value as T\n }\n return value\n}\n\n// ---- DOM-free schedulers ----\nconst hasQueueMicrotask = typeof (globalThis as any).queueMicrotask === 'function';\n\nexport const deferMicro = (fn?: () => void) =>\n fn\n ? (hasQueueMicrotask ? queueMicrotask(fn) : Promise.resolve().then(fn))\n : Promise.resolve(); // await deferMicro() yields to microtask queue\n\nexport const deferMacro = () =>\n new Promise<void>(r => setTimeout(r, 0)); // await deferMacro() yields one macrotask\n// ---- end schedulers ----\n\nfunction isLazyLoader<P extends Record<string, any>, O extends Record<string, any>>(\n comp: OComponentType<P, O>\n): comp is () => Promise<{ default: ComponentConstructor<P, O> }> {\n return typeof comp === \"function\" && !(\"prototype\" in comp);\n}\n\n// --- helpers (can live in the same file or be moved to cache.ts) ---\ntype TemplateFn = (scope: any) => string;\n\nconst EXPR_FN = new Map<string, (s: any) => any>();\nconst TEMPLATE_CACHE = new Map<string, TemplateFn>();\nconst METHODS_CACHE = new WeakMap<object, any>();\n\nfunction getMethodsView(obj: any) {\n if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) return {};\n const cached = METHODS_CACHE.get(obj);\n if (cached) return cached;\n\n const out: Record<string, any> = Object.create(null);\n for (let cur = obj; cur && cur !== Object.prototype; cur = Object.getPrototypeOf(cur)) {\n for (const key of Object.getOwnPropertyNames(cur)) {\n if (key === 'constructor' || key.startsWith('__') || key.endsWith('__')) continue;\n if (key in out) continue;\n\n const desc = Object.getOwnPropertyDescriptor(cur, key);\n if (!desc) continue;\n const v = (desc.value ?? (desc.get ? desc.get.call(obj) : undefined));\n out[key] = typeof v === 'function' ? v.bind(obj) : v;\n }\n }\n METHODS_CACHE.set(obj, out);\n return out;\n}\n\nfunction evalInScope(expr: string, scope: any) {\n let compiled = EXPR_FN.get(expr);\n if (!compiled) {\n // Compile ONCE per expr; use with(s) to avoid rebuilding arg lists each call\n compiled = new Function('s', 'with (s) { return (' + expr + '); }') as (s: any) => any;\n EXPR_FN.set(expr, compiled);\n }\n return compiled(scope);\n}\n\nfunction compileInterpolated(template: string): TemplateFn {\n let fn = TEMPLATE_CACHE.get(template);\n if (fn) return fn;\n\n const parts: Array<{ t?: string; e?: string }> = [];\n let i = 0;\n while (i < template.length) {\n const open = template.indexOf('{{', i);\n if (open < 0) { parts.push({ t: template.slice(i) }); break; }\n if (open > i) parts.push({ t: template.slice(i, open) });\n const close = template.indexOf('}}', open + 2);\n const expr = close >= 0 ? template.slice(open + 2, close).trim() : template.slice(open + 2).trim();\n parts.push({ e: expr });\n i = (close >= 0 ? close + 2 : template.length);\n }\n\n fn = (scope: any) => {\n let out = '';\n for (const p of parts) {\n if (p.t !== undefined) out += p.t;\n else if (p.e !== undefined) {\n const v = normaliseValue(evalInScope(p.e, scope));\n out += v == null ? '' : String(v);\n }\n }\n return out;\n };\n TEMPLATE_CACHE.set(template, fn);\n return fn;\n}\n\nexport class RenderContext {\n static PROVIDE_TOKEN = \"RENDER_CONTEXT\"\n static MOUNTED_COMPONENTS_TOKEN = \"RENDER_CONTEXT_MOUNTED_COMPONENTS\"\n static STYLE_REF = new WeakMap<any, number>()\n private bindings: Binding[] = []\n private directives: Directive[] = []\n private mountedComponents: Map<string, OComponent> = inject<Map<string, OComponent>>(RenderContext.MOUNTED_COMPONENTS_TOKEN) ?? new Map()\n private componentsRegistry = new ComponentsRegistry()\n private updatingDirectives = false;\n private updatingBindings = false;\n private _stack: Record<string, any>[] = []\n private flatStack: Record<string, any> = Object.create(null);\n private viewUpdates!: ODOM.BatchUpdates\n private mountedQueue: Array<() => void> = [];\n\n constructor(private app: App, public component: OComponent<Record<string, any>, Record<string, any>>, private parentContext: RenderContext | null, ...frames: Record<string, any>[]) {\n for (const f of frames) {\n this.push(f)\n }\n }\n get hostElement(): ODOM.OElement {\n return (this.component as any)['_hostElement']\n }\n get stack() {\n return this._stack;\n }\n set stack(value: Record<string, any>[]) {\n this.flatStack = Object.create(null);\n this._stack = [];\n for (const f of value) {\n this.push(f)\n }\n }\n\n\n private getRoot(): RenderContext {\n let ctx: RenderContext = this;\n while (ctx.parentContext) ctx = ctx.parentContext;\n return ctx;\n }\n\n enqueueMounted(fn: () => void) {\n const root = this.getRoot();\n root.mountedQueue.push(fn);\n }\n\n async flushMounted() {\n const root = this.getRoot();\n const queue = root.mountedQueue;\n root.mountedQueue = [];\n for (const fn of queue) {\n try {\n fn();\n } catch (e) {\n console.error(\"onMounted error:\", e);\n }\n }\n }\n\n getMountedComponent(node: ODOM.OElement): OComponent | undefined {\n return this.mountedComponents.get(node.uid)\n }\n bind(binding: Binding) {\n this.bindings.push(binding)\n }\n directive(directive: Directive) {\n this.directives.push(directive)\n }\n evaluateExpression(expr: string | null | undefined): boolean {\n return this.resolve(expr)\n }\n private resolveScope(...additionFrames: Record<string, any>[]) {\n const stateObj = this.component.state?.value ?? {};\n const methodsView = getMethodsView(stateObj);\n return new Proxy(Object.create(null), {\n get: (_t, prop: string) => {\n for (let i = additionFrames.length - 1; i >= 0; i--) {\n if (prop in additionFrames[i]) return normaliseValue((additionFrames[i] as any)[prop]);\n }\n if (prop in this.flatStack) return normaliseValue((this.flatStack as any)[prop]);\n if (prop in methodsView) return normaliseValue((methodsView as any)[prop]);\n return normaliseValue((stateObj as any)[prop])\n },\n set: (_t, prop: string, newValue) => {\n let v: any = null\n for (let i = additionFrames.length - 1; i >= 0; i--) {\n if (prop in additionFrames[i]) {\n v = (additionFrames[i] as any)[prop]\n break\n }\n }\n if(!v) {\n if (prop in this.flatStack) {\n v = (this.flatStack as any)[prop];\n } else if (prop in methodsView) {\n v = (methodsView as any)[prop];\n } else {\n v = (stateObj as any)[prop];\n }\n }\n if(v && isStated(v)) {\n v.value = newValue\n return true\n }\n return false\n },\n has: (_t, prop: string) =>\n additionFrames.some(f => prop in f) || (prop in this.flatStack) || (prop in methodsView) || (prop in stateObj)\n });\n }\n resolve(key: string | null | undefined, ...additionFrames: Record<string, any>[]) {\n if (!key) return undefined;\n const scope = this.resolveScope(...additionFrames)\n try {\n return evalInScope(key, scope);\n } catch (error) {\n return undefined;\n }\n }\n /** \n * Handing (o-model) like (ngModel) update, we should support mutliple syntaxe like o-mode=\"value\" where value is defined directly on the component\n * o-model=\"data['key']\" where data is either defined on the component, of in the enclosing scope in case of for-loop for instance\n * */\n updateValue(key: string, value: any) {\n\n this.resolve(`${key}=__o_model_value__`, { '__o_model_value__': value });\n this.component.state.didChange(key as any, undefined, value);\n }\n // setFrames(...frames: Record<string, any>[]) {\n // this._stack = []\n // this.flatStack = Object.create(null);\n // for (const f of frames) {\n // this.push(f)\n // }\n // }\n push(frame: Record<string, any>) {\n this._stack.unshift(frame);\n Object.assign(this.flatStack, frame);\n }\n\n pop() {\n const f = this._stack.shift();\n if (f) for (const k of Object.keys(f)) delete this.flatStack[k];\n }\n resolveTag(tag: string): OComponentType<any, any> | undefined {\n // resolve from context hiearchy\n let ctx: RenderContext | null = this\n while (true) {\n if (ctx.componentsRegistry.has(tag)) {\n return ctx.componentsRegistry.get(tag)\n }\n ctx = ctx?.parentContext ?? null\n if (!ctx) {\n break;\n }\n }\n return componentsRegistry.get(tag)\n }\n // --- Interpolation & two-way binding ---\n async updateBindings(): Promise<void> {\n if (this.updatingBindings) return;\n\n this.updatingBindings = true;\n for (const b of this.bindings) this.updateBinding(b);\n this.updatingBindings = false;\n \n }\n updateBinding(binding: Binding): void {\n if (binding.type === \"model\") {\n (binding.node).setProperty('value', normaliseValue<string>(binding.context.resolve(binding.key)));\n return;\n }\n\n if (binding.type === 'interpolation') {\n // Precompiled template; resolve in one shot\n // updates.add(async () => {\n // const s = binding.templateFn(binding.context.resolveScope());\n // await binding.node.setContentText(s);\n // });\n const s = binding.templateFn(binding.context.resolveScope());\n this.viewUpdates.add('setContentText', binding.node, s)\n return;\n }\n\n if (binding.type === 'attribute') {\n const name = binding.key;\n const v = normaliseValue(this.resolve(binding.template!));\n if (name === 'class') {\n this.expandClass(binding.node, v);\n } else if (name === 'style') {\n this.expandStyle(binding.node, v); // single attribute set inside\n } else if (typeof v !== 'object' && typeof v !== 'function' && typeof v !== 'symbol' && typeof v !== 'undefined') {\n // updates.add(() => binding.node.setAttribute(name, v.toString()));\n this.viewUpdates.add('setAttribute', binding.node, name, v.toString())\n }\n return;\n }\n\n if (binding.type === 'prop' && binding.context.component) {\n const value = normaliseValue<string>(this.resolve(binding.template));\n try {\n binding.context.component.props[binding.key] = value;\n // when props change, re-evaluate the child context\n Promise.all([binding.context.updateBindings(),\n binding.context.updateDirectives()]).then(() => {\n binding.context.viewUpdates.exec()\n })\n } catch (error) {\n console.error(error);\n }\n return;\n }\n }\n // --- Directives ---\n async updateDirectives() {\n if (this.updatingDirectives) {\n return\n }\n const updates = new ODOM.BatchActions()\n const root = true\n this.updatingDirectives = true\n for (let d of this.directives) {\n if (d.type === \"if\") {\n const show = normaliseValue(d.context.evaluateExpression(d.expr));\n if (!show) {\n if (d.active === false) {\n continue\n }\n d.active = false;\n if (d.renderedNode) {\n if (d.destroy) {\n this.unmountComponent(d.renderedNode)\n // await d.renderedNode.removeAndRelease()\n } else {\n // await d.renderedNode.addClass('oui-hidden')\n this.viewUpdates.add('addClass', d.renderedNode, 'oui-hidden')\n }\n }\n continue\n }\n\n if (d.active === true) {\n continue;\n }\n d.active = true;\n const renderedNode = d.renderedNode\n if (!renderedNode || d.destroy) {\n const clone = (await d.node.cloneNode(true))!\n d.renderedNode = clone\n await d.context.render(clone)\n // await d.placeholder.after(clone)\n this.viewUpdates.add('after', d.placeholder, clone)\n } else {\n // await renderedNode.removeClass(\"oui-hidden\");\n this.viewUpdates.add('removeClass', renderedNode, 'oui-hidden')\n }\n // d.context.updateDirectives()\n }\n\n if (d.type === \"for\") {\n const oldChildren: Map<any, { node: ODOM.OElement, ctx: RenderContext }> = d.children ?? new Map();\n const newChildren: Map<any, { node: ODOM.OElement, ctx: RenderContext }> = new Map();\n\n const keyFn = (val: any, idx: number) =>\n d.key ? normaliseValue<any>(d.context.resolve(d.key, { [d.item!]: val })) : idx;\n\n const arr = normaliseValue<any[]>(d.context.resolve(d.list!)) || [];\n\n // We accumulate DOM moves/inserts, then commit once per chunk\n const domOps = new ODOM.BatchActions();\n const YIELD_EVERY = 32; // tune for device; 16~32 is usually sweet in WebView\n let opsSinceYield = 0;\n\n \n let last: ODOM.OElement = d.placeholder;\n\n for (let i = 0; i < arr.length; i++) {\n const val = arr[i];\n const key = keyFn(val, i);\n\n let entry = oldChildren.get(key);\n let node: ODOM.OElement;\n let ctx: RenderContext;\n\n const anchor = last;\n if (entry) {\n node = entry.node;\n ctx = entry.ctx;\n\n // update loop-local frame quickly\n ctx.stack = [{ [d.item!]: val }, ...d.context.stack];\n\n // Reorder only if needed (batch it)\n const next = await last.nextSibling();\n if (node.uid !== next?.uid) {\n domOps.add(() => anchor.after(node)); // no async, anchor is stable\n }\n\n\n // Schedule updates for the reused child; do not force immediate commit\n await Promise.all([ctx.updateBindings(), ctx.updateDirectives()]);\n } else {\n // brand new row: create ctx + clone; avoid immediate DOM awaits\n ctx = new RenderContext(this.app, this.component, this);\n ctx.viewUpdates = this.viewUpdates\n ctx.stack = [{ [d.item!]: val }, ...d.context.stack];\n\n const clone = await d.node.cloneNode(true);\n node = clone!;\n\n // Insert into DOM in the same batch (fast)\n domOps.add(async () => {\n await anchor.after(node);\n });\n\n // Hydration for this new row runs in parallel *after* the batch\n await ctx.render(node);\n await ctx.updateDirectives();\n\n }\n\n last = node;\n newChildren.set(key, { node, ctx });\n\n // yield periodically to keep main thread responsive in WebView\n if (++opsSinceYield >= YIELD_EVERY) {\n opsSinceYield = 0;\n await domOps.commit(); // flush moves so far\n await deferMicro(); // let microtasks run\n }\n }\n\n // Remove stale nodes (batched)\n const ps: any[] = []\n for (const [key, entry] of oldChildren.entries()) {\n if (!newChildren.has(key)) {\n ps.push(this.unmountComponent(entry.node));\n }\n }\n await Promise.all(ps)\n\n // Final DOM batch flush for this directive pass\n await domOps.commit();\n\n // Hydrate all newly added rows in small bursts (breadth-first feel)\n // if (newHydrations.length) {\n // const BURST = 12; // parallelism; 4~8 keeps things smooth\n // for (let i = 0; i < newHydrations.length; i += BURST) {\n // const chunk = newHydrations.slice(i, i + BURST).map(fn => fn());\n // await Promise.all(chunk);\n // await deferMicro(); // small yield between bursts\n // }\n // }\n\n d.children = newChildren;\n }\n }\n // commit updates\n if (root) {\n await updates.commit()\n }\n // await this.hydradationActions.commit()\n this.updatingDirectives = false\n\n }\n\n private async render(node: ODOM.OElement, options?: { skipSlotted: boolean }): Promise<void> {\n if (node.hydrated) {\n return;\n }\n if (options?.skipSlotted && node.hasAttribute('slotted')) {\n return;\n }\n switch (node.type) {\n case 'Text':\n this.handleTextNode(node)\n break\n case 'Element':\n await this.handleElementNode(node, options)\n break\n default:\n }\n const batch = new ODOM.BatchActions()\n await Promise.all([this.updateBindings(), this.updateDirectives()])\n batch.commit()\n // this.hydradationActions.add(() => node.hydrate())\n this.viewUpdates.add('addClass', node, 'hydrated')\n\n }\n private async expandClass(node: ODOM.OElement, value: any) {\n let classes: string[]\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n classes = value\n } else {\n classes = Object.keys(value).filter(e => value[e])\n }\n } else {\n classes = value.toString().split(/\\s+/)\n }\n if (classes.length > 0) {\n // await node.addClass(...classes)\n this.viewUpdates.add('addClass', node, ...classes)\n }\n }\n private expandStyle(node: ODOM.OElement, value: any) {\n let styleString = value\n if (typeof value === 'object' && !Array.isArray(value)) {\n styleString = Object.keys(value).filter(e => value[e]).map(e => `${toSnakeCase(e)}: ${value[e]}`).join(';')\n }\n if (styleString) {\n // node.setAttribute('style', styleString)\n this.viewUpdates.add('setAttribute', node, 'style', styleString)\n }\n }\n private expandStandardAttributes(node: ODOM.OElement) {\n // const batches = node.updates();\n [...node.attributes!].filter(attr => attr.name.startsWith(':')).forEach(attr => {\n const key = attr.name.substring(1)\n this.bind({\n type: 'attribute',\n node,\n key,\n context: this,\n template: attr.value.trim()\n })\n this.viewUpdates.add('removeAttribute', node, attr.name)\n })\n // this.viewUpdates.exec()\n }\n private setRefValue(value: string, node: (ODOM.OElement | OComponent) | null) {\n let variable = value.trim();\n this.updateValue(variable, node)\n }\n async handleElementNode(node: ODOM.OElement, options?: { skipSlotted: boolean }) {\n // expand style and classes\n const parentNode = (await node.parentNode())!\n let controlled: 'for' | 'if' | null = null\n // *if directive\n const conditionAttr = node.hasAttribute(\"o-if\") ? \"o-if\" : node.hasAttribute('o-show') ? 'o-show' : null\n if (conditionAttr) {\n const expr = await (node.getAttribute(conditionAttr))!;\n const placeholder = (await OUID.createComment(conditionAttr + \":\" + expr))!;\n const destroy = conditionAttr === 'o-if'\n await parentNode.insertBefore(node, placeholder);\n await node.updates()\n .removeAttribute(conditionAttr)\n .remove().exec()\n \n this.directive({\n type: \"if\",\n expr,\n node,\n placeholder,\n context: this,\n active: undefined,\n destroy\n });\n controlled = 'if'\n return\n }\n\n // *for directive\n if (node.hasAttribute(\"o-for\")) {\n if (controlled === 'if') {\n throw new Error('Can\\'t have o-if and o-for on the same component')\n }\n const expr = (await node.getAttribute(\"o-for\"))!;\n const [item, list] = expr.split(\" of \").map(s => s.trim());\n const placeholder = (await OUID.createComment(\"for:\" + expr))!;\n const key = node.attribute(':key') ?? \"\"\n await parentNode?.insertBefore(node, placeholder);\n await node.updates()\n .removeAttribute(\"o-for\")\n .removeAttribute(':key')\n .remove().exec()\n this.directive({\n type: \"for\",\n item,\n list,\n node,\n placeholder,\n context: this,\n key,\n });\n controlled = 'for'\n return\n }\n const tag = node.tag.toLowerCase();\n const cc = this.resolveTag(tag);\n\n const batches = node.updates();\n // Two-way binding [(model)]\n [...node.attributes].forEach(async attr => {\n if (attr.name === 'o-model') {\n const key = attr.value.trim();\n const event = 'input'\n batches\n .setInputValue(normaliseValue(this.resolve(key,)))\n .addEventListener(event, async (e) => {\n // this.state[key] = (e.target as any).value;\n const value = await (e.target as ODOM.OElement).getProperty('value')\n this.updateValue(key, value)\n })\n this.bind({ node, key, type: \"model\", context: this });\n\n batches.removeAttribute(attr.name);\n }\n else if (attr.name === 'ref') {\n // html element reference handling\n if (!cc) {\n this.setRefValue(attr.value, node)\n }\n }\n });\n\n\n\n\n let props = {} as any, events = {} as any\n\n const { props: p, events: e } = this.componentAttributes(node, this)\n props = p\n events = e\n this.expandStandardAttributes(node)\n // Event binding @(event)=\"fn()\"\n Object.keys(events).forEach(async k => {\n const handler = events[k]\n if (!cc) {\n batches.addEventListener(k, e => {\n if (typeof handler === \"function\") (handler as Function).apply(this.component, [e]);\n });\n }\n batches.removeAttribute('@' + k);\n });\n\n this.viewUpdates.accept(batches)\n\n\n if (cc) {\n await this.mountComponent(node, cc, this, props, events);\n return; // stop scanning original node\n }\n let children = await node.childNodes()\n if (options?.skipSlotted) {\n children = children.filter(c => !c.hasAttribute('slotted'))\n }\n for (const child of children) {\n /// AWAIT??\n await this.render(child, options)\n }\n }\n handleTextNode(node: ODOM.OElement) {\n const txt = node.textContent ?? '';\n if (txt.includes('{{')) {\n this.bind({\n type: 'interpolation',\n node,\n key: '__template__',\n templateFn: compileInterpolated(txt),\n context: this\n });\n }\n }\n private componentAttributes(node: ODOM.OElement, parentContext: RenderContext | null) {\n const props: Record<string, { name: string, expr?: string | null, value: any }> = {};\n const events: any = {};\n const ignoredAttrs = ['import', 'interface', 'module', 'o-model', 'o-if', 'o-for'];\n [...node.attributes].filter(a => !ignoredAttrs.includes(a.name)).forEach(attr => {\n let name = attr.name\n if (name.startsWith('@')) {\n // attach an event\n const handler = parentContext?.resolve(attr.value)\n if (typeof handler !== 'function') {\n throw new Error('Event handler can only be function')\n }\n name = name.substring(1)\n events[name] = handler\n return\n }\n let expr: string | null = null\n let p: any = attr.value\n if (name.startsWith(':')) {\n expr = attr.value\n name = name.substring(1)\n p = normaliseValue(parentContext?.resolve(attr.value))\n }\n name = toCamelCase(name)\n props[name] = {\n name,\n value: p,\n expr\n };\n });\n return { props, events }\n }\n async mountComponent<T extends Record<string, any>, O extends Record<string, string>>(\n hostNode: ODOM.OElement,\n component: OComponentType<T, O>,\n parentContext: RenderContext | null,\n props: Record<string, { name: string, value: any, expr?: string }> = {},\n emits: O = {} as O\n ): Promise<OComponent> {\n this.viewUpdates = this.viewUpdates ?? parentContext?.viewUpdates ?? new ODOM.BatchUpdates(hostNode)\n if (this.mountedComponents.has(hostNode.uid)) return this.mountedComponents.get(hostNode.uid)!;\n // Child context prepared early (but heavy tasks deferred)\n const newCtx = new RenderContext(this.app, {} as OComponent, this);\n newCtx.viewUpdates = this.viewUpdates\n // newCtx.viewUpdates = parentContext?.viewUpdates ?? new ODOM.BatchUpdates(hostNode)\n // Bind reactive props before instance creation (so the first render sees values)\n const handledProps = {} as T;\n let refProp: any\n for (const k of Object.keys(props)) {\n const p = props[k];\n if (p.name === 'ref' && !p.expr) {\n refProp = p;\n continue\n }\n if (p.expr) {\n this.bind({ type: 'prop', node: hostNode, key: k, context: newCtx, template: p.expr });\n }\n handledProps[k as keyof T] = p.value;\n }\n\n // Create instance ASAP (can be a Promise if lazy)\n const instance = await o(component, handledProps, emits);\n newCtx.component = instance;\n newCtx.stack = [];\n this.mountedComponents.set(hostNode.uid, instance);\n if (refProp) {\n this.setRefValue(refProp.value, instance)\n }\n // Minimal initial host setup in a single batch (so the host appears fast)\n {\n const batch = hostNode.updates();\n for (const attr of Object.keys(props)) {\n if (!props[attr].expr) batch.setAttribute(attr, props[attr].value);\n }\n let hostClasses: string[] = (instance as any)['hostClasses'] ?? [];\n if (hostClasses) hostClasses = typeof hostClasses === 'string' ? [hostClasses] : hostClasses;\n hostClasses.push('o-component-host');\n if (hostNode.tag.toLowerCase() !== 'div') hostClasses.push('c-' + hostNode.tag.toLowerCase());\n batch.addClass(...hostClasses);\n this.viewUpdates.accept(batch)\n // await batch.exec();\n }\n\n // Defer costly non-critical decoration to next paint (improves TTI)\n deferMicro(async () => {\n try {\n await instance.decorateHostElement(hostNode);\n } catch { }\n });\n\n // Register dependants in the child registry (cheap, keep sync)\n {\n const dependants = (instance as any)['use'] as Record<string, OComponentType> ?? {};\n for (const d of Object.keys(dependants)) {\n newCtx.componentsRegistry.register(d, dependants[d]);\n }\n }\n\n // Call lifecycle (cheap hook), but keep CSS injection/decorate for afterPaint\n instance.willMount();\n\n // CSS injection can be expensive (style recalcs). Defer unless not cached.\n if (!(component as any)['cssInstance']) {\n const css = instance.style ? instance.style()?.toString() : (instance as any)['css'] as string;\n if (css) {\n // inject now but refcount bump later; this avoids FOUC while still deferring some work\n (component as any)['cssInstance'] ??= await OUID.createComponentStyles(css, false);\n }\n }\n // Refcount bump can be deferred (no visual impact)\n deferMicro(() => {\n const styleInstance = (component as any)['cssInstance'] as(ODOM.OElement | null);\n if (styleInstance) {\n const ref = RenderContext.STYLE_REF.get(styleInstance) ?? 0;\n if(ref === 0) {\n // inject now\n OUID.appendComponentStyles(styleInstance.uid)\n }\n RenderContext.STYLE_REF.set(styleInstance, ref + 1);\n (instance as any)['cssInstance'] = styleInstance;\n }\n });\n\n // Render content: prefer template path for a fast first paint, then hydrate\n // If the component has a custom render(), use it—but avoid blocking on its children.\n let hostChildrenBefore = await hostNode.childNodes(); // will be used for slotting\n if (instance.render) {\n const rendered = await instance.render(newCtx);\n if (rendered) rendered.attachTo(hostNode);\n } else {\n // template string path is generally fastest in a WebView bridge\n await hostNode.setHTML((instance as any)['template'].trim());\n }\n\n // Slot distribution: move nodes first, then hydrate in parallel\n const slots = await hostNode.queryAll('slot');\n if (slots && slots.length) {\n // Move all matching nodes with minimal awaits; hydrate after\n await Promise.all(\n slots\n .filter(s => !s.classes?.includes('hydrated'))\n .map(async slot => {\n const name = slot.attribute('name');\n const toMove = hostChildrenBefore.filter(e => {\n if (!name) return e.type !== 'Element' || !e.hasAttribute('slot');\n return e.type === 'Element' && e.attribute('slot') === name;\n });\n if (!toMove.length) return;\n\n // const batch = new ODOM.BatchActions();\n for (const n of toMove) {\n this.viewUpdates.add('setAttribute', n, 'slotted', 'true');\n this.viewUpdates.add('appendChild', slot, n);\n }\n await this.viewUpdates.exec();\n\n // Hydrate moved nodes in parallel after they’re in place\n await Promise.all(toMove.map(n => this.render(n)));\n })\n );\n }\n\n // Finalize links & provide context\n (instance as any)['_hostElement'] = hostNode;\n instance['parent'] = parentContext?.component ?? undefined;\n instance.provide(RenderContext.PROVIDE_TOKEN, this);\n\n // Hydrate children breadth-first with bounded concurrency (keeps UI responsive)\n {\n const children = await hostNode.childNodes();\n const CONCURRENCY = 6; // tweak for your WebView; 4-8 is usually sweet\n let i = 0;\n while (i < children.length) {\n const chunk = children.slice(i, i + CONCURRENCY);\n await Promise.all(chunk.map(c => newCtx.render(c, { skipSlotted: true })));\n i += CONCURRENCY;\n }\n // await newCtx.hydradationActions.commit();\n //await newCtx.viewUpdates.exec()\n }\n\n // Post-mount lifecycle after first paint\n // deferMicro(() => {\n // try { instance.onMounted(); } catch {}\n // hostNode.hydrate()\n // });\n newCtx.viewUpdates.add('addClass', hostNode, 'hydrated')\n this.enqueueMounted(() => {\n try {\n instance.onMounted();\n } catch { }\n // hostNode.hydrate();\n });\n await newCtx.viewUpdates.exec()\n // Use your debounced State to coalesce updates; keep a single commit per tick\n instance.state.watch(async () => {\n await Promise.all([\n newCtx.updateBindings(), newCtx.updateDirectives()])\n await newCtx.viewUpdates.exec()\n newCtx.flushMounted()\n });\n return instance\n }\n async unmountComponent(node: ODOM.OElement) {\n const comp = this.mountedComponents.get(node.uid)\n await node.removeAndRelease()\n if (comp) {\n // emit will unmount\n const styleInstance = (comp as any)['cssInstance'];\n if (styleInstance) {\n const ref = RenderContext.STYLE_REF.get(styleInstance) ?? 1\n if (ref === 1) {\n await OUID.rejectComponentStyles(styleInstance)\n RenderContext.STYLE_REF.delete(styleInstance)\n } else {\n RenderContext.STYLE_REF.set(styleInstance, ref - 1);\n }\n }\n comp.willUnmount();\n (comp as any)['_hostElement'] = null;\n (comp as any)['cssInstance'] = null;\n }\n const children = await node.queryAll('*') ?? [];\n for (const child of children) {\n await this.unmountComponent(child)\n }\n this.mountedComponents.delete(node.uid)\n // ??? to do ???\n \n if (node.hasAttribute('ref')) {\n this.setRefValue(node.attribute('ref')!, null)\n }\n }\n}\nexport type Binding =\n | { type: 'model', node: ODOM.OElement, key: string, context: RenderContext }\n | { type: 'interpolation', node: ODOM.OElement, key: string, templateFn: TemplateFn, context: RenderContext }\n | { type: 'attribute', node: ODOM.OElement, key: string, template: string | null, context: RenderContext }\n | { type: 'prop', node: ODOM.OElement, key: string, template: string, context: RenderContext };\n\nexport type Directive = { type: 'if' | 'for', node: ODOM.OElement, expr?: string, placeholder: ODOM.OElement, context: RenderContext, active?: boolean, renderedNode?: ODOM.OElement, list?: string, item?: string, children?: Map<any, { node: ODOM.ONode, ctx: RenderContext }>, key?: string, destroy?: boolean }\nexport async function node<P extends Record<string, any>, O extends Record<string, any>>(component: string, p?: P, children: RenderNode[] = [], emits?: O): Promise<RenderNode> {\n const props = p ?? {} as P\n const el = await OUID.createElement(component, Object.keys(props).reduce((acc, key) => {\n acc[key as keyof P] = props[key as keyof P]\n return acc\n }, {} as P))\n Object.keys(emits ?? {}).forEach(k => {\n el?.addEventListener(k, (e) => {\n const fn = emits![k]\n if (typeof fn === 'function') {\n fn(e)\n }\n });\n })\n return new RenderNode(el!, children)\n\n}\n\nexport function o<P extends Record<string, any>, O extends Record<string, any>>(component: ComponentConstructor<P, O>, props: P, emits?: O): OComponent<P>;\nexport function o<P extends Record<string, any>, O extends Record<string, any>>(component: OComponentType<P, O>, props: P, emits?: O): Promise<OComponent<P>>\nexport function o<P extends Record<string, any>, O extends Record<string, any>>(component: OComponentType<P, O>, props: P, emits?: O): Component<P, O> | Promise<Component<P, O>> {\n if (isLazyLoader(component)) {\n return component().then((c) => createComponent(c.default, props, emits))\n } else {\n return createComponent(component, props, emits);\n }\n}","import { ComponentConstructor, OComponent } from \"./component\";\nimport { RenderContext } from \"./context\";\n\n\n\ntype ProvideFunction<T> = () => T\nexport type Provider<T = any> = {\n value?: T,\n provide?: ProvideFunction<T>\n}\nfunction isProvideFunction<T>(fn: T | ProvideFunction<T>): fn is ProvideFunction<T> {\n return typeof fn === 'function'\n}\nexport interface Plugin<T> {\n install(app: App, options?: T): void\n}\n/** Injection token key */\nexport type InjectionKey = string\n/** Providers type */\nexport type Providers = Map<InjectionKey, Provider>\n/**\n * OUIDesigner App\n */\nexport class App {\n static currentApp: App | null = null\n private providers: Providers = new Map()\n /**\n * Provide a value through a key to all the app globally\n * @param token the registration key\n * @param value the provider value\n */\n provide<T>(token: InjectionKey, value: T | (() => T)): void {\n if (this.providers.has(token)) {\n console.warn(`[OUID] - Provider ${token} already exists`)\n return\n }\n this.providers.set(token, isProvideFunction(value) ? { provide: value } : { value: value })\n }\n /**\n * Get globally a provider through a given key\n * @param token the key to look up globally\n * @returns a provider value\n */\n inject<T>(token: InjectionKey): T | undefined {\n return this.providers.get(token)?.value as T\n }\n /**\n * Register a plugin to be used by this app\n * @param plugin the plugin to register\n * @returns `this` App instance\n */\n use<T>(plugin: Plugin<T>, options?: T) {\n plugin.install(this, options)\n return this\n }\n constructor(private root: ComponentConstructor<any, any>, private options?: {css?: string}) {\n App.currentApp = this\n }\n /**\n * Mount the App in a host element\n * @param selector the host element where the app's root component should be mounted\n */\n async mount(selector: string) {\n if((!(globalThis as any).__OUI_PUR_JS_CONTEXT__)) {\n return\n }\n if(this.options?.css) {\n await OUID.createComponentStyles(this.options.css)\n }\n await OUID.createComponentStyles(`\n * {\n ${selector} * {\n visibility: hidden;\n }\n ${selector} *.hydrated {\n visibility: inherit;\n }\n .oui-hidden {\n display: none !important;\n }\n `)\n provide(RenderContext.MOUNTED_COMPONENTS_TOKEN, new Map())\n const host = await OUID.query(selector)\n if (!host) throw new Error(\"No selector found for \" + selector)\n\n const globalContext = new RenderContext(this, {} as OComponent, null)\n globalContext.mountComponent(host, this.root, null).then(async () => {\n globalContext.updateBindings()\n globalContext.updateDirectives()\n // console.log('[OUID] - App mounted successfully')\n await globalContext.flushMounted();\n })\n }\n}\n\n/**\n * Provide a value through a key to all the app globally\n * @param token the registration key\n * @param value the provider value\n */\nexport function provide<T>(token: InjectionKey, value: T | (() => T)): void {\n App.currentApp?.provide(token, value)\n}\n/**\n * Get globally a provider through a given key\n * @param token the key to look up globally\n * @returns a provider value\n */\nexport function inject<T>(token: InjectionKey): T | undefined {\n return App.currentApp?.inject(token) ?? undefined\n}","import RouteParser from 'route-parser'\nimport { App, inject, Plugin } from '../app'\nimport { Component, OComponent, OComponentType } from '../component'\nimport { deferMacro, deferMicro, RenderContext } from '../context'\nimport { ODOM, OUID } from '../interfaces/bridge'\nimport { delay } from '../interfaces/helpers'\n/**\n * Component responsible for display routes\n * Usage: `<o-router></o-router>`\n */\n@Component({\n tag: 'o-router',\n template: `\n <div id=\"router-view\"></div>\n `,\n css: `\n #router-view {\n position: relative;\n min-height: 100vh;\n width: 100%;\n overflow: hidden;\n }\n\n .route-view {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n will-change: transform, opacity;\n background: var(--o-background, #FEFEFE)\n }\n\n .route-hidden {\n display: none;\n }\n\n /* shared transition */\n .route-transitioning {\n transition: transform 0.25s ease-out;\n z-index: 999\n }\n\n /* PUSH: new page comes from right */\n .route-push-start {\n transform: translateX(100%);\n }\n .route-push-end {\n transform: translateX(0%);\n }\n\n /* POP: current page goes to right, revealing underneath */\n .route-pop-start {\n transform: translateX(0%);\n }\n .route-pop-end {\n transform: translateX(100%);\n }\n `\n})\nexport class ORouter extends OComponent {\n private router: Router | undefined = undefined\n willMount(): void {\n }\n onMounted(): void {\n this.router = useRouter()\n this.router?.bind(this).then((handler) => {\n handler?.();\n })\n }\n willUnmount(): void {\n this.router?.unbind();\n }\n}\nexport const ROUTER_INJECTION_TOKEN = \"OROUTER_TOKEN\"\nexport const ACTIVE_ROUTE_TOKEN = \"ACTIVE_ROUTE\"\ninterface ORouterHistoryState {\n navIndex: number;\n}\ntype NavMode = 'push' | 'pop';\n\nconst ROUTE_SLIDE_DURATION = 250;\n\nexport interface Route {\n path: string\n name: string\n component?: OComponentType<any, any>,\n redirectTo?: string | {name: string}\n transition?: 'fade' | 'slide';\n}\n\nexport function useRouter(): Router | undefined {\n return inject<Router>(ROUTER_INJECTION_TOKEN)\n}\nexport function createRouter(routes: Routes): Router {\n return new Router(routes)\n}\nexport type Routes = Array<Route>\n\ntype MatchedRoute = { route: Route, params: Record<string, any>, query: Record<string, string>, parser: RouteParser }\nexport type Promised<T> = T | Promise<T>\nexport type RouteLocationNamed = { name: string, params?: Record<string, any> }\nexport type RouteGuardReturn = void | boolean | RouteLocationNamed\nexport type RouteGaurdFunction = (to: { url: string, path: string, name: string }, from?: { query: Record<string, string>, params: Record<string, string> }) => Promised<RouteGuardReturn>\nexport interface RouteGuard {\n type: 'before' | 'after',\n fn: RouteGaurdFunction\n}\n\nfunction activate(inst: OComponent | null) {\n if (!inst) return;\n (inst as any).__isActive = true;\n if (typeof inst.onActivated === 'function') {\n inst.onActivated();\n }\n\n}\n\nfunction deactivate(inst: OComponent | null) {\n if (!inst) return;\n (inst as any).__isActive = false;\n if (typeof inst.onDeactivated === 'function') {\n inst.onDeactivated();\n }\n\n}\ntype CompiledRoute = { route: Route; parser: RouteParser };\nexport class Router implements Plugin<any> {\n private windowObject: ODOM.OObject | null = null\n private guards: Array<RouteGuard> = []\n private eventRegistration: string | null = null\n // NEW:\n private compiled: CompiledRoute[];\n private outletEl: ODOM.OElement | null = null;\n\n // keep-alive cache (optional, bounded):\n private stack: { host: ODOM.OElement; ctx: RenderContext; inst: OComponent | null }[] = [];\n // private keepAliveLimit = 1;\n private pendingNav: Promise<void> | null = null;\n private lastDirection: 'forward' | 'back' | 'none' = 'none';\n private historyIndex = 0;\n\n constructor(public routes: Routes) {\n this.compiled = routes.map(r => ({ route: r, parser: new RouteParser(r.path) }));\n }\n\n install(app: App) {\n app.provide(ROUTER_INJECTION_TOKEN, this)\n OUID.registerComponent('o-router', ORouter)\n }\n resolveByName(name: string): MatchedRoute | null {\n for (const c of this.compiled) {\n if (c.route.name === name) return { route: c.route, params: {}, query: {}, parser: c.parser};\n }\n return null;\n }\n resolve(url: string): MatchedRoute | null {\n const [path, queryStr = ''] = url.split('?');\n const query: Record<string, string> = queryStr\n ? queryStr.split('&').reduce((acc, kv) => {\n const [k, v = ''] = kv.split('=');\n if (k) acc[k] = decodeURIComponent(v);\n return acc;\n }, {} as Record<string, string>)\n : {};\n\n for (const c of this.compiled) {\n const params = c.parser.match(path);\n if (params) {\n if(c.route.redirectTo) {\n // should redirect to another route\n return typeof (c.route.redirectTo) === 'string' ? this.resolve(c.route.redirectTo) : this.resolveByName(c.route.redirectTo.name)\n }\n return { route: c.route, params, query, parser: c.parser };\n }\n }\n return null;\n }\n replace(options: { name?: string, path?: string, params?: Record<string, string>, absolute?: boolean }) {\n this.push(options, true)\n }\n push(options: { name?: string, path?: string, params?: Record<string, string>, absolute?: boolean }, replace: boolean = false): void {\n if (!options.path && !options.name) {\n console.warn('[OUID-Router]: no path or name provided to push')\n return\n }\n this.lastDirection = 'forward';\n const dispatchPushEvent = (path: string, fire: boolean = true) => {\n // this.historyIndex;\n const newState: ORouterHistoryState = { navIndex: replace ? this.historyIndex : this.historyIndex+1 };\n if(replace) {\n this.windowObject?.invoke('history.replaceState', newState, '', path)\n } else {\n this.windowObject?.invoke('history.pushState', newState, '', path)\n }\n if (fire) {\n this.windowObject?.dispatchEvent('popstate', 'PopStateEvent', { state: newState })\n }\n }\n if (options.name) {\n const matched = this.resolveByName(options.name)\n if (!matched) {\n console.warn('[OUID-Router]: No matched route name found')\n return\n }\n const path = matched.parser.reverse(options.params ?? {})\n if(path) {\n dispatchPushEvent(path)\n }\n return\n }\n if (options.absolute && options.path) {\n // this.windowObject?.invoke('history.pushState', {}, '', options.path)\n dispatchPushEvent(options.path, false)\n }\n if (options.path) {\n // first try to match direct path\n const matched = this.resolve(options.path)\n if (matched) {\n const path = matched.parser.reverse(options.params ?? {})\n if(path) {\n dispatchPushEvent(path)\n }\n return\n }\n }\n\n }\n async pop(): Promise<void> {\n this.lastDirection = 'back';\n // this.historyIndex--;\n this.windowObject?.invoke('history.back')\n const newState: ORouterHistoryState = { navIndex: this.historyIndex - 1 };\n await this.windowObject?.invoke('history.pushState', newState, '')\n // this.windowObject?.dispatchEvent('popstate', 'PopStateEvent', { state: newState })\n }\n\n private async beforeRouteGoing(to: { url: string, path: string, name: string }, from: { params: Record<string, any>, query: Record<string, any> }): Promise<RouteGuardReturn> {\n for (const guard of this.guards.filter(g => g.type === 'before')) {\n const res = await guard.fn(to, from)\n if (res) {\n return res\n }\n }\n return\n }\n private async afterRouteGoing(to: { url: string, path: string, name: string }, from: { params: Record<string, any>, query: Record<string, any> }): Promise<RouteGuardReturn> {\n for (const guard of this.guards.filter(g => g.type === 'after')) {\n const res = await guard.fn(to, from)\n if (res) {\n return res\n }\n }\n return\n }\n\n async bind(component: ORouter): Promise<() => void> {\n this.windowObject = await OUID.acquireObject('window');\n\n const handler = async (pathOverride?: string) => {\n if (!this.windowObject) this.windowObject = await OUID.acquireObject('window');\n\n const path = pathOverride ?? (await this.windowObject!.getProperty<string>('location.pathname'))!;\n const matched = this.resolve(path);\n\n if (!matched) {\n console.warn(`[Router] No route found for: ${path}`);\n return;\n }\n\n const ctx = component.inject<RenderContext>(RenderContext.PROVIDE_TOKEN);\n if (!this.outletEl) this.outletEl = await ctx!.hostElement.query(\"#router-view\");\n const outlet = this.outletEl;\n if (!outlet) return;\n\n // guards BEFORE anything heavy\n const guarded = await this.beforeRouteGoing(\n { url: path, path, name: matched.route.name },\n component.inject(ACTIVE_ROUTE_TOKEN) as any\n );\n if (guarded) {\n if (typeof guarded === 'object' && 'name' in guarded) {\n this.push({ name: guarded.name, params: guarded.params });\n }\n return;\n }\n\n component.provide(ACTIVE_ROUTE_TOKEN, { params: matched.params, query: matched.query });\n\n // current host & instance\n const currentChildren = await outlet.childNodes();\n const currentHost = currentChildren[currentChildren.length - 1] ?? null;\n const currentInst = currentHost ? ctx!.getMountedComponent(currentHost) ?? null : null;\n\n const mode = this.getNavMode(); // 'push' or 'pop'\n\n let nextHost: ODOM.OElement;\n let nextInst: OComponent;\n // get it from the stack\n const stackLength = this.stack.length\n const cached = this.stack[stackLength - 2]\n if(this.lastDirection === 'back' && cached) {\n \n // --- CACHED PATH ---\n nextHost = cached.host;\n nextInst = cached.inst!;\n\n // ensure cached host is attached and on top\n const ops = outlet.updates();\n if (!currentChildren.some(c => c.uid === nextHost.uid)) {\n ops.add('appendChild', outlet, nextHost);\n } else {\n // ensure it's last child => on top (for push) or at least present (for pop)\n ops.add('appendChild', outlet, nextHost);\n }\n // ops.add(() => currentHost.addClass('route-hidden'));\n ops.add('removeClass', nextHost, 'route-hidden');\n await ops.exec();\n\n await Promise.all([\n cached.ctx.updateBindings(),\n cached.ctx.updateDirectives()\n ]);\n \n \n } else {\n // --- COLD PATH ---\n const staging = (await OUID.createElement('div', { class: 'route-view route-hidden' }))!;\n await outlet.appendChild(staging);\n \n const instance = await ctx!.mountComponent<any, any>(staging, matched.route.component!, ctx!);\n nextHost = staging;\n nextInst = instance;\n ctx?.flushMounted()\n if(this.lastDirection === 'forward') {\n // push on stack\n this.stack.push({host: staging, ctx: ctx!, inst: instance})\n }\n }\n\n // --- RUN ANIMATION ---\n if (mode === 'push') {\n // current stays, next slides on top\n await this.runTransitionPush(outlet, currentHost, nextHost);\n } else if (mode === 'pop') {\n // previous is nextHost (already attached), current slides away\n if (currentHost) {\n await this.runTransitionPop(outlet, currentHost, nextHost);\n }\n }\n\n // --- LIFECYCLE & CLEANUP ---\n\n // decide if currentHost stays in keepAlive or is removed\n if (currentHost && currentInst && this.lastDirection === 'back') {\n this.stack.pop()\n deactivate(currentInst);\n await ctx!.unmountComponent(currentHost);\n }\n\n activate(nextInst);\n\n await this.afterRouteGoing(\n { url: path, path, name: matched.route.name },\n component.inject(ACTIVE_ROUTE_TOKEN) as any\n );\n\n await deferMicro();\n };\n\n const run = async (event: any) => {\n const path = (await this.windowObject!.getProperty<string>('location.pathname'))!;\n if (this.pendingNav) return this.pendingNav;\n this.pendingNav = (async () => {\n try {\n const state = event?.state || await this.windowObject!.getProperty('history.state');\n \n let newIndex = 0;\n if (state && typeof state.navIndex === 'number') {\n newIndex = state.navIndex;\n }\n \n if (newIndex > this.historyIndex) {\n this.lastDirection = 'forward';\n } else if (newIndex < this.historyIndex) {\n this.lastDirection = 'back';\n } else {\n this.lastDirection = 'none';\n }\n \n this.historyIndex = newIndex;\n await handler(path);\n } finally { this.pendingNav = null; }\n })();\n return this.pendingNav;\n };\n\n const path = (await this.windowObject!.getProperty<string>('location.pathname'))!;\n const state = await this.windowObject!.getProperty<any>('history.state');\n if (!state || typeof state.navIndex !== 'number') {\n await this.windowObject!.invoke('history.replaceState', { navIndex: this.historyIndex }, '', path);\n }\n\n const id = await this.windowObject!.addEventListener('popstate', run);\n this.eventRegistration = id;\n return handler;\n }\n\n unbind() {\n if (this.eventRegistration) {\n this.windowObject?.dettachEventListener(this.eventRegistration)\n }\n }\n private async runTransitionPush(\n outlet: ODOM.OElement,\n currentHost: ODOM.OElement | null,\n nextHost: ODOM.OElement\n ) {\n if (!currentHost) {\n // no animation, just show\n const cleanup = nextHost.updates();\n await cleanup\n .removeClass('route-hidden', 'route-transitioning', 'route-push-start')\n .addClass('route-view', 'route-push-end').exec()\n return\n }\n const baseOps = nextHost.updates();\n baseOps.addClass('route-view');\n if (currentHost) baseOps.add('addClass', currentHost, 'route-view');\n // currentHost stays as-is, visible; nextHost starts off-screen\n baseOps.removeClass('route-hidden', 'route-push-end', 'route-pop-end').addClass('route-push-start');\n await baseOps.exec();\n\n // let CSS see starting transform\n await new Promise<void>(resolve => { OUID.requestAnimationFrame(() => resolve()); });\n const animOps = nextHost.updates();\n animOps.addClass('route-transitioning')\n .removeClass('route-push-start')\n .addClass('route-push-end'); // 100% -> 0\n await animOps.exec();\n\n await delay(ROUTE_SLIDE_DURATION + 40);\n\n // cleanup\n const cleanup = nextHost.updates();\n cleanup.removeClass('route-transitioning', 'route-push-start');\n if (currentHost) cleanup.add('addClass', currentHost, 'route-hidden');\n await cleanup.exec();\n }\n\n private async runTransitionPop(\n outlet: ODOM.OElement,\n currentHost: ODOM.OElement,\n previousHost: ODOM.OElement\n ) {\n const baseOps = currentHost.updates();\n baseOps.addClass('route-view');\n baseOps.add('addClass', previousHost, 'route-view');\n baseOps.add('removeClass', previousHost, 'route-hidden');\n // current starts at 0, will go to 100%\n baseOps.addClass('route-pop-start').removeClass('route-push-end', 'route-pop-end');\n await baseOps.exec();\n\n await new Promise<void>(resolve => { OUID.requestAnimationFrame(() => resolve()); });\n\n const animOps = currentHost.updates();\n animOps.addClass('route-transitioning');\n animOps.removeClass('route-pop-start').addClass('route-pop-end'); // 0 -> 100%\n await animOps.exec();\n\n await delay(ROUTE_SLIDE_DURATION + 40);\n\n const cleanup = currentHost.updates();\n cleanup.addClass('route-hidden').removeClass('route-transitioning', 'route-pop-start');\n await cleanup.exec();\n }\n private getNavMode(): NavMode {\n return this.lastDirection === 'back' ? 'pop' : 'push';\n }\n beforeEach(fn: RouteGaurdFunction): (() => void) {\n const guard = {\n fn,\n type: 'before'\n } as RouteGuard\n this.guards.push(guard)\n return () => {\n this.guards.splice(this.guards.indexOf(guard))\n }\n }\n afterEach(fn: RouteGaurdFunction): (() => void) {\n const guard = {\n fn,\n type: 'after'\n } as RouteGuard\n this.guards.push(guard)\n return () => {\n this.guards.splice(this.guards.indexOf(guard))\n }\n }\n\n}\n","import { OComponent, RenderNode, StyleData } from \"../component\";\nimport { RenderContext } from \"../context\";\n\n\nexport class OIcon extends OComponent {\n render(_: RenderContext): RenderNode {\n return RenderNode.of(`<i class=\"o-icon\"><slot></slot></i>`)\n }\n style(): StyleData | null {\n return StyleData.of({\n 'i': `\n display: inline-block;\n width: 1em;\n height: 1em;\n vertical-align: -0.15em;\n overflow: hidden;\n `\n })\n }\n} \n\n","import { componentsRegistry } from './src/registry'\nimport { OComponent } from './src/component'\n\nexport * from './src/component'\nexport * from './src/app'\nexport * from './src/emits'\nexport * from './src/state'\nexport * from './src/context'\nexport * from './src/router/Router'\nexport * from './src/interfaces/bridge'\nexport * from './src/components/Icon'\n\nexport function components(): Record<string, OComponent<any, any>> {\n const arr = componentsRegistry.getAll()\n return arr.reduce((acc, [key, value]) => {\n acc[key] = value\n return acc\n }, {} as Record<string, any>)\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/registry.ts","../src/emits.ts","../src/reactivity.ts","../src/state.ts","../src/component.ts","../src/helpers.ts","../src/interfaces/bridge.ts","../src/context.ts","../src/app.ts","../src/router/Router.ts","../src/components/Icon.ts","../index.ts"],"names":["ComponentsRegistry","components","Map","register","tag","compClass","console","log","key","toLocaleLowerCase","has","set","unregister","delete","get","getAll","Array","from","entries","_ComponentsRegistry","componentsRegistry","Emits","events","emit","event","args","handler","_Emits","targetMap","WeakMap","activeEffect","effectStack","_a","ReactiveEffect","fn","scheduler","onStop","deps","active","run","push","cleanupEffect","pop","length","stop","e","dep","track","target","depsMap","Set","add","trigger","effects","jobQueue","flushing","queueJob","job","queueMicrotask","j","clear","effect","options","runner","bind","lazy","isObject","v","reactiveCache","reactive","existing","proxy","Proxy","t","receiver","res","Reflect","value","result","deleteProperty","hadKey","Object","prototype","hasOwnProperty","call","isRef","__isRef","ref","raw","_value","r","next","is","computed","getter","dirty","cached","c","__name","defineProperty","Error","enumerable","watchEffect","cleanup","onCleanup","cb","undefined","isStated","ob","stated","obj","State","componentInstance","_ctx","wrap","_State","componentCreationOrder","Component","constructor","WithDecoration","template","css","use","hostClasses","hash","RenderNode","node","children","attachTo","host","innerHTML","fullNode","child","appendChild","of","addChild","_RenderNode","StyleData","data","toString","str","join","_StyleData","createComponent","ctr","props","emits","OComponent","state","parent","provides","onActivated","onDeactivated","onMounted","willMount","willUnmount","provide","inject","current","decorateHostElement","hostElement","Promise","resolve","_OComponent","generateUIID","name","now","Date","Math","floor","random","delay","ms","setTimeout","hasQueueMicrotask","globalThis","deferMicro","then","ODOM","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","BatchActions","actions","exec","commit","action","all","map","a","BATCH_KEY_SKIP","actionQueue","dedupeIndex","flushScheduled","pendingPromise","scheduleBatchFlush","flushBatchQueue","p","OUID","batchActions","reject","enqueueBatchActions","x","JSON","stringify","String","idx","promise","rej","prev","BatchUpdates","operations","accept","other","immediate","ops","promises","op","uid","OObject","filter","seen","toSend","forEach","includes","unshift","error","append","addEventListener","callback","policy","setProperty","dettachEventListener","cbId","invoke","dispatchEvent","eventName","eventClass","initDict","addClass","tokens","removeClass","setAttribute","removeAttribute","removeChild","remove","removeAndRelease","release","html","replaceChildNode","replaceWith","after","toInsert","setInnerText","text","setContentText","insertBefore","element","setInputValue","setStyle","toInstance","extra","invokeAndHold","getProperty","getPropertyAndHold","updates","batches","ONode","textContent","type","attributes","classes","style","k","OElement","_hydrated","attrs","setHTML","cloneNode","cloned","HTML","getContentText","content","err","childNodes","hasAttribute","find","attr","getAttribute","attribute","nextSibling","getAttributeNames","parentNode","inputValue","hydrated","hydrate","query","selector","queryAll","CanvasGradient","addColorStop","offset","color","DOMMatrix","batch","new","arg","newObject","invertSelf","multiplySelf","premultiplySelf","rotateAxisAngleSelf","rotX","rotY","rotZ","angle","rotateFromVectorSelf","rotateSelf","scale3dSelf","scale","originX","originY","originZ","scaleSelf","scaleX","scaleY","scaleZ","setMatrixValue","transformList","skewXSelf","sX","skewYSelf","translateSelf","translateX","translateY","translateZ","is2D","isIdentity","flipX","flipY","inverse","multiply","rotate","rotateAxisAngle","rotateFromVector","scale3d","skewX","skewY","sY","toJSON","translate","CanvasPattern","setTransform","matrix","Canvas2DContext","arc","y","radius","startAngle","endAngle","counterclockwise","arcTo","x1","y1","x2","y2","bezierCurveTo","cp1x","cp1y","cp2x","cp2y","clearRect","width","height","clip","arg1","arg2","CanvasPath2D","beginPath","closePath","createConicGradient","createLinearGradient","x0","y0","createPattern","image","repetition","createRadialGradient","r0","r1","drawImage","sx","sy","sWidth","sHeight","dx","dy","dWidth","dHeight","ellipse","radiusX","radiusY","rotation","fill","path","fillRule","fillRect","fillText","maxWidth","getImageData","sw","sh","settings","getLineDash","getTransform","mat","isContextLost","isPointInPath","arg3","arg4","isPointInStroke","lineTo","measureText","moveTo","putImageData","imageData","dirtyX","dirtyY","dirtyWidth","dirtyHeight","quadraticCurveTo","cpx","cpy","rect","reset","resetTransform","restore","roundRect","radii","save","setLineDash","segments","b","d","f","stroke","strokeRect","strokeText","transform","fillStyle","setFillStyle","setFilter","font","setFont","fontKerning","setFontKerning","kerning","fontStretch","setFontStretch","fontVariantCaps","setFontVariantCaps","globalAlpha","setGlobalAlpha","globalCompositeOperation","setGlobalCompositeOperation","imageSmoothingEnabled","setImageSmoothingEnabled","imageSmoothingQuality","setImageSmoothingQuality","letterSpacing","setLetterSpacing","lineCap","setLineCap","lineDashOffset","setLineDashOffset","lineJoin","setLineJoin","lineWidth","setLineWidth","miterLimit","setMiterLimit","shadowBlur","setShadowBlur","shadowColor","setShadowColor","shadowOffsetX","setShadowOffsetX","shadowOffsetY","setShadowOffsetY","strokeStyle","setStrokeStyle","textAlign","setTextAlign","textBaseline","setTextBaseline","wordSpacing","setWordSpacing","textRendering","setTextRendering","Image","img","naturalWidth","naturalHeight","src","currentSrc","setSrc","create","ret","addPath","CanvasElement","setWidth","setHeight","getContext","context","nodeId","OUIDBridge","callbacks","DOM_EVENT_LISTENERS","timers","_config","listeners","subscribe","id","success","parse","currentTarget","relatedTarget","config","conf","WebOUID","registerComponent","unregisterComponent","nodes","n","createElement","createComment","createComponentStyles","appendComponentStyles","cssNode","rejectComponentStyles","getOObject","acquireObject","clearTimeout","setInterval","clearInterval","fetch","url","input","encodeAs","alert","message","prompt","requestAnimationFrame","fps","cancelAnimationFrame","nextTick","_OUIDBridge","toCamelCase","replace","_","char","toUpperCase","toSnakeCase","toLowerCase","normaliseValue","isLazyLoader","comp","EXPR_FN","TEMPLATE_CACHE","METHODS_CACHE","getMethodsView","out","cur","getPrototypeOf","getOwnPropertyNames","startsWith","endsWith","desc","getOwnPropertyDescriptor","evalInScope","expr","scope","compiled","Function","compileInterpolated","parts","i","open","indexOf","slice","close","trim","RenderContext","app","component","parentContext","frames","bindings","directives","mountedComponents","MOUNTED_COMPONENTS_TOKEN","updatingDirectives","updatingBindings","_stack","flatStack","viewUpdates","mountedQueue","stack","getRoot","ctx","enqueueMounted","flushMounted","root","queue","getMountedComponent","binding","directive","evaluateExpression","resolveScope","additionFrames","stateObj","methodsView","_t","prop","newValue","some","updateValue","frame","assign","shift","keys","resolveTag","updateBindings","updateBinding","s","templateFn","expandClass","expandStyle","updateDirectives","renderedNode","destroy","unmountComponent","clone","render","placeholder","oldChildren","newChildren","keyFn","val","item","arr","list","domOps","YIELD_EVERY","opsSinceYield","last","entry","anchor","__renderRunner__","collectDepsForBindingsAndDirectives","__updating","cmp","ps","skipSlotted","handleTextNode","handleElementNode","isArray","split","styleString","expandStandardAttributes","substring","setRefValue","variable","controlled","conditionAttr","cc","componentAttributes","apply","mountComponent","txt","ignoredAttrs","hostNode","newCtx","handledProps","refProp","instance","o","dependants","styleInstance","STYLE_REF","hostChildrenBefore","rendered","slots","slot","toMove","PROVIDE_TOKEN","CONCURRENCY","chunk","__effects__","__publicField","_RenderContext","el","reduce","acc","default","isProvideFunction","App","providers","currentApp","token","warn","plugin","install","mount","__OUI_PUR_JS_CONTEXT__","globalContext","_App","ORouter","router","useRouter","unbind","_ORouter","ut","ROUTER_INJECTION_TOKEN","ACTIVE_ROUTE_TOKEN","ROUTE_SLIDE_DURATION","createRouter","routes","Router","activate","inst","__isActive","deactivate","windowObject","guards","eventRegistration","outletEl","pendingNav","lastDirection","historyIndex","route","parser","RouteParser","resolveByName","params","queryStr","kv","decodeURIComponent","match","redirectTo","dispatchPushEvent","fire","newState","navIndex","matched","reverse","absolute","beforeRouteGoing","to","guard","g","afterRouteGoing","pathOverride","outlet","guarded","currentChildren","currentHost","currentInst","mode","getNavMode","nextHost","nextInst","stackLength","staging","class","runTransitionPush","runTransitionPop","newIndex","baseOps","animOps","previousHost","beforeEach","splice","afterEach","_Router","OIcon","_OIcon"],"mappings":"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","file":"index.cjs","sourcesContent":["import { OComponentType } from \"./component\"\n\nexport class ComponentsRegistry {\n private components: Map<string, OComponentType<any, any>> = new Map()\n register(tag: string, compClass: OComponentType<any, any>) {\n console.log(`[OUID] - Registering component: ${tag}`)\n const key = tag.toLocaleLowerCase()\n if(this.components.has(key)) {\n return\n }\n this.components.set(key, compClass)\n }\n unregister(tag: string) {\n const key = tag.toLocaleLowerCase()\n this.components.delete(key)\n }\n get(tag: string): OComponentType<any, any> | undefined {\n return this.components.get(tag.toLocaleLowerCase())\n }\n has(tag: string): boolean {\n return this.components.has(tag)\n }\n getAll() {\n return Array.from(this.components.entries())\n }\n}\n\nexport const componentsRegistry = new ComponentsRegistry()","export class Emits<O extends Record<string, any>> {\n constructor(private events: O) {\n }\n\n emit(event: keyof O, ...args: any) {\n const handler = this.events[event] as Function\n if(handler) {\n handler(...args)\n } else {\n console.log('Not handler found for ', event)\n }\n }\n}","// reactivity.ts\ntype Key = string | symbol\ntype Dep = Set<ReactiveEffect>\ntype DepsMap = Map<Key, Dep>\ntype TargetMap = WeakMap<object, DepsMap>\n\nconst targetMap: TargetMap = new WeakMap()\n\nlet activeEffect: ReactiveEffect | null = null\nconst effectStack: ReactiveEffect[] = []\n\nclass ReactiveEffect<T = any> {\n deps: Dep[] = []\n active = true\n\n constructor(\n public fn: () => T,\n public scheduler?: () => void,\n public onStop?: () => void\n ) { }\n\n run(): T {\n if (!this.active) return this.fn()\n try {\n effectStack.push(this)\n activeEffect = this\n cleanupEffect(this)\n return this.fn()\n } finally {\n effectStack.pop()\n activeEffect = effectStack[effectStack.length - 1] ?? null\n }\n }\n\n stop() {\n if (!this.active) return\n cleanupEffect(this)\n this.active = false\n this.onStop?.()\n }\n}\n\nfunction cleanupEffect(e: ReactiveEffect) {\n for (const dep of e.deps) dep.delete(e)\n e.deps.length = 0\n}\n\nexport function track(target: object, key: Key) {\n if (!activeEffect) return\n let depsMap = targetMap.get(target)\n if (!depsMap) targetMap.set(target, (depsMap = new Map()))\n let dep = depsMap.get(key)\n if (!dep) depsMap.set(key, (dep = new Set()))\n if (!dep.has(activeEffect)) {\n dep.add(activeEffect)\n activeEffect.deps.push(dep)\n }\n}\n\nexport function trigger(target: object, key: Key) {\n const depsMap = targetMap.get(target)\n if (!depsMap) return\n const dep = depsMap.get(key)\n if (!dep) return\n const effects = new Set(dep)\n for (const e of effects) {\n if (e.scheduler) e.scheduler()\n else e.run()\n }\n}\n\n// microtask scheduler (Vue-like)\nconst jobQueue = new Set<() => void>()\nlet flushing = false\n\nexport function queueJob(job: () => void) {\n jobQueue.add(job)\n if (flushing) return\n flushing = true\n queueMicrotask(() => {\n try {\n for (const j of jobQueue) j()\n } finally {\n jobQueue.clear()\n flushing = false\n }\n })\n}\n\nexport function effect<T = any>(\n fn: () => T,\n options?: { scheduler?: () => void; onStop?: () => void; lazy?: boolean }\n) {\n const e = new ReactiveEffect(fn, options?.scheduler, options?.onStop)\n const runner = e.run.bind(e) as (() => T) & { effect: ReactiveEffect }\n runner.effect = e\n if (!options?.lazy) runner()\n return runner\n}\n\nexport function stop(runner: { effect: ReactiveEffect }) {\n runner.effect.stop()\n}\n\n// reactive/ref/computed/watchEffect\nfunction isObject(v: any): v is object {\n return v !== null && typeof v === \"object\"\n}\n\nconst reactiveCache = new WeakMap<object, any>()\n\nexport function reactive<T extends object>(target: T): T {\n if (!isObject(target)) return target\n const existing = reactiveCache.get(target)\n if (existing) return existing\n\n const proxy = new Proxy(target, {\n get(t, key, receiver) {\n const res = Reflect.get(t, key, receiver)\n track(t, key)\n return isObject(res) ? reactive(res as any) : res\n },\n set(t, key, value, receiver) {\n const result = Reflect.set(t, key, value, receiver)\n console.log('Setting reactive', t, key, value)\n // if (!hadKey || !Object.is(old, value)) trigger(t, key)\n trigger(t, key)\n return result\n },\n deleteProperty(t, key) {\n const hadKey = Object.prototype.hasOwnProperty.call(t, key)\n const result = Reflect.deleteProperty(t, key)\n if (hadKey && result) trigger(t, key)\n return result\n },\n })\n\n reactiveCache.set(target, proxy)\n return proxy\n}\n\nexport interface Ref<T> {\n value: T\n __isRef: true\n}\n\nexport function isRef<T = any>(v: any): v is Ref<T> {\n return !!v && typeof v === \"object\" && v.__isRef === true\n}\n\nexport function ref<T>(raw: T): Ref<T> {\n let _value = isObject(raw) ? (reactive(raw as any) as any) : raw\n const r: Ref<T> = {\n __isRef: true,\n get value() {\n track(r as any, \"value\")\n return _value\n },\n set value(v: T) {\n const next = isObject(v) ? (reactive(v as any) as any) : v\n if (Object.is(next, _value)) return\n _value = next\n trigger(r as any, \"value\")\n },\n }\n return r\n}\n\nexport function computed<T>(getter: () => T): Ref<T> {\n let dirty = true\n let cached!: T\n const c: any = { __isRef: true }\n\n const runner = effect(getter, {\n lazy: true,\n scheduler: () => {\n if (!dirty) {\n dirty = true\n trigger(c, \"value\")\n }\n },\n })\n\n Object.defineProperty(c, \"value\", {\n get() {\n track(c, \"value\")\n if (dirty) {\n dirty = false\n cached = runner()\n }\n return cached\n },\n set() {\n throw new Error(\"computed is readonly\")\n },\n enumerable: true,\n })\n\n return c as Ref<T>\n}\n\nexport function watchEffect(\n fn: (onCleanup: (cb: () => void) => void) => void\n) {\n let cleanup: (() => void) | undefined\n const onCleanup = (cb: () => void) => (cleanup = cb)\n\n const runner: (() => void) & {\n effect: ReactiveEffect;\n } = effect(\n () => {\n cleanup?.()\n cleanup = undefined\n fn(onCleanup)\n },\n {\n scheduler: () => queueJob(runner),\n onStop: () => {\n cleanup?.()\n cleanup = undefined\n },\n }\n )\n\n return () => stop(runner as any)\n}\n","/*export type StateWatcher<T> = <K extends keyof T>(key: K, oldValue: T[K], newValue: T[K]) => void\nexport class Stated<T, S extends Record<string, any> = any> {\n private _value: T\n constructor(value: T, private tree: State<S>) { \n this._value = value\n }\n get value() {\n return this._value;\n }\n set value(v: T) {\n const old = this._value;\n this._value = v;\n this.tree.didChange('value', old, v)\n }\n}\nfunction proxify (state: State<any>, target: any, seen: Map<any, any> = new Map()) {\n if (seen.has(target)) {\n return seen.get(target)\n }\n const proxy = new Proxy(target, {\n set: (t, p, v) => {\n const o = t[p]\n if (typeof v === 'object') {\n t[p] = proxify(state, v)\n } else {\n t[p] = v\n }\n state.didChange(p as any, o, v)\n return true\n },\n get: (t, p) => {\n const v = Reflect.get(t, p)\n return v\n }\n })\n seen.set(target, proxy)\n for (let current = target; current; current = Object.getPrototypeOf(current)) {\n Object.keys(current).forEach(key => {\n const obj = target[key]\n if (typeof obj === 'object') {\n target[key] = proxify(state, obj, seen)\n }\n })\n }\n return proxy\n }\nexport function isStated<T>(ob: any): ob is Stated<T> {\n return typeof ob === 'object' && !Array.isArray(ob) && 'value' in ob && ob instanceof Stated;\n}\nexport function stated<S extends Record<string, string>, T>(target: T, state: State<S>): Stated<T> {\n \n if (typeof target === 'function') {\n throw new Error('Can\\'t create reactive element over a function')\n }\n if (typeof target !== 'object' && typeof target !== 'symbol') {\n return new Proxy(new Stated<T>(target, state), {\n set: (t, p, v) => {\n if (p !== 'value') throw new Error(`Undefined property ${String(p)} access`)\n const o = t[p]\n t[p] = v\n state.didChange(p as any, o, v)\n return true\n },\n get: (t, p) => {\n if (p !== 'value') throw new Error(`Undefined property ${String(p)} access`)\n return t[p]\n }\n })\n }\n\n return new Stated<T>(target && typeof target === 'object' ? proxify(state, target): target, state)\n}\nexport class State<T extends Record<string, any>> {\n private THRESHOLD_TIME = 20\n private debounceTime = new Date().getTime()\n private state: T\n private listeners: StateWatcher<T>[] = []\n private timer: number | null = null\n constructor(data: T) {\n this.state = new Proxy(data, {\n set: (target, key: string, value: any) => {\n const oldValue = (target as any)[key];\n target[key as keyof T] = value\n this.didChange(key as keyof T, oldValue, value)\n return true\n },\n\n get: (target, key) => target[key as keyof T]\n }) as T\n }\n wrap<T>(obj: T): Stated<T> {\n return stated(obj, this)\n }\n has(key: keyof T): boolean {\n return key in this.state\n }\n setValue(key: keyof T, value: any) {\n this.state[key as keyof T] = value\n }\n getValue(key: keyof T): any {\n return this.state[key]\n }\n get value(): T {\n return this.state\n }\n\n private dispatchChanges<K extends keyof T>(key: K, oldValue: T[K], newValue: T[K]): void {\n console.log('dispatch changes', this.listeners)\n for (const listener of this.listeners) {\n listener(key, oldValue, newValue)\n }\n }\n\n async didChange(path: keyof T, oldValue: any, newValue: any) {\n const now = Date.now()\n if (now - this.debounceTime <= this.THRESHOLD_TIME) {\n if(this.timer) await OUID.clearTimeout(this.timer);\n }\n\n this.debounceTime = now;\n\n this.timer = await OUID.setTimeout(() => {\n this.dispatchChanges(path, oldValue, newValue);\n }, this.THRESHOLD_TIME);\n }\n\n watch(listener: StateWatcher<T>) {\n this.listeners.push(listener)\n return this.listeners.length - 1\n }\n\n unwatch(listener: StateWatcher<T> | number) {\n if (typeof listener === \"number\") {\n this.listeners.splice(listener, 1)\n return\n }\n this.listeners.splice(this.listeners.indexOf(listener), 1)\n }\n}*/\n\n// state.ts\nimport { reactive, ref, computed, watchEffect, isRef, type Ref } from \"./reactivity\"\n\nexport type Stated<T> = Ref<T>\n\nexport function isStated<T>(ob: any): ob is Stated<T> {\n return isRef(ob)\n}\nexport function stated<T>(obj: T): Stated<T> {\n return ref<T>(obj)\n}\nexport class State<S extends Record<string, any> = any> {\n private readonly _ctx: any\n\n constructor(componentInstance: any) {\n // IMPORTANT: the component instance becomes reactive for direct fields\n this._ctx = reactive(componentInstance)\n }\n\n wrap<T>(value: T): Stated<T> {\n return ref(value)\n }\n\n computed<T>(getter: () => T): Stated<T> {\n return computed(getter)\n }\n\n watchEffect(fn: (onCleanup: (cb: () => void) => void) => void) {\n return watchEffect(fn)\n }\n\n get value(): S {\n return this._ctx as S\n }\n}","import { RenderContext } from \"./context\";\nimport { Emits } from \"./emits\";\nimport { ODOM } from \"./interfaces/bridge\";\nimport { componentsRegistry } from \"./registry\";\nimport { State } from \"./state\"\nexport type ComponentProps<K extends Record<string, any>> = K\n\nlet componentCreationOrder = 0\n/**\n * Component decorator, it allow an auto registration of components\n * @param options \n * @returns \n */\nexport function Component(options: { template: string, tag: string, use?: Record<string, OComponentType>, css?: string, hostClasses?: string | string[] }) {\n return function <T extends { new(...args: any[]): {} }>(constructor: T) {\n const WithDecoration = class extends constructor {\n template = options.template;\n css = options.css;\n tag = options.tag\n use = options.use\n hostClasses = options.hostClasses\n hash = 'component-' + componentCreationOrder + '-' + options.tag\n };\n\n const compClass = WithDecoration as unknown as ComponentConstructor<any, any>;\n (compClass as any)['tag'] = options.tag\n // componentsRegistry.register(options.tag, compClass);\n return WithDecoration;\n\n };\n}\ntype ExposedKeyAsPromise<T extends Record<string, any>> = {\n [K in keyof T]: Promise<T[K]>;\n};\n\nexport class RenderNode {\n constructor(private node: ODOM.OElement | string, private children: RenderNode[] = []) { }\n\n attachTo(host: ODOM.OElement): void {\n if (typeof this.node === 'string') {\n // html string\n host.innerHTML = this.node\n return\n }\n const fullNode = this.node;\n for (const child of this.children) {\n child.attachTo(fullNode)\n }\n host.appendChild(fullNode)\n }\n static of(node: ODOM.OElement | string, children: RenderNode[] = []): RenderNode {\n return new RenderNode(node, children)\n }\n addChild(node: RenderNode): RenderNode {\n this.children.push(node)\n return this\n }\n\n}\nexport class StyleData {\n constructor(private data: Record<string, StyleData | string>, private css: string) { }\n toString(): string {\n let str = this.css ? this.css + '\\n' : ''\n for (const key in this.data) {\n const value = this.data[key]\n if (typeof value === 'string') {\n str += `${key} { ${value} }\\n`\n } else if (value instanceof StyleData) {\n str += `${key} {\\n${value.toString()}}\\n`\n }\n }\n return str\n }\n static of(data: Record<string, StyleData | string>, ...css: string[]): StyleData {\n return new StyleData(data, css.join('\\n'))\n }\n}\nexport interface Component<P extends Record<string, any>, O extends Record<string, any>> {\n // template: string\n state: State<any>\n readonly emits: Emits<O>\n readonly props: ComponentProps<P>\n onActivated(): void\n onDeactivated(): void\n onMounted(): void\n willMount(): void\n willUnmount(): void\n provide<T>(key: string, value: T): void\n inject<T>(key: string): T | undefined\n render?(ctx: RenderContext): RenderNode | null | Promise<RenderNode | null>\n style?(): StyleData | null,\n decorateHostElement(hostElement: ODOM.OElement): Promise<void>\n}\n\nexport interface ComponentConstructor<P extends Record<string, any>, O extends Record<string, any>> {\n new(props?: P, emits?: O): Component<P, O>\n}\nexport function createComponent<P extends Record<string, any>, O extends Record<string, any>>(ctr: ComponentConstructor<P, O>, props?: P, emits?: O): Component<P, O> {\n // const handled = OUID.invoke()\n return new ctr(props, emits)\n}\n\nexport class OComponent<P extends Record<string, any> = {}, O extends Record<string, any> = {}> implements Component<P, O> {\n // template: string = \"\"\n state: State<any>\n private parent?: OComponent<any, any> = undefined\n readonly emits: Emits<O>\n readonly props: ComponentProps<P>\n private provides: Map<string, any> = new Map();\n\n constructor(props: P = {} as P, emits: O = {} as O) {\n this.state = new State({})\n this.props = props\n this.emits = new Emits(emits)\n }\n onActivated(): void {}\n onDeactivated(): void {}\n onMounted(): void {\n }\n willMount(): void {\n\n }\n willUnmount(): void {\n\n }\n /** Provide a value for descendants */\n provide<T>(key: string, value: T) {\n this.provides.set(key, value);\n }\n\n /** Inject a value from nearest ancestor */\n inject<T>(key: string): T | undefined {\n let current: OComponent<any, any> | undefined = this;\n while (current) {\n if (current.provides.has(key)) {\n return current.provides.get(key);\n }\n current = current.parent;\n }\n return undefined;\n }\n render?(ctx: RenderContext): RenderNode | null|Promise<RenderNode | null>\n style?(): StyleData | null\n decorateHostElement(hostElement: ODOM.OElement): Promise<void> {\n return Promise.resolve()\n }\n}\nexport type LazyLoader<P extends Record<string, any>, O extends Record<string, any>> = () => Promise<{ default: ComponentConstructor<P, O> }>;\nexport type OComponentType<P extends Record<string, any> = {}, O extends Record<string, any> = {}> =\n | ComponentConstructor<P, O>\n | LazyLoader<P, O>","export function generateUIID(name: string): string {\n const now = Date.now()\n const salt = 1000 + Math.floor((Math.random() * 9000)) + name.length\n return `${salt.toString(16)}-${now.toString(16)}`\n}\n\nexport function delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n// ---- DOM-free schedulers ----\nconst hasQueueMicrotask = typeof (globalThis as any).queueMicrotask === 'function';\n\nexport const deferMicro = (fn?: () => void) =>\n fn\n? (hasQueueMicrotask ? queueMicrotask(fn) : Promise.resolve().then(fn))\n: Promise.resolve(); // await deferMicro() yields to microtask queue\n\nexport const deferMacro = () =>\n new Promise<void>(r => setTimeout(r, 0)); // await deferMacro() yields one macrotask\n// ---- end schedulers ----","import { componentsRegistry } from \"../registry\"\nimport { OComponentType } from \"../component\"\nimport { generateUIID } from \"../helpers\"\n\ntype QueryFilter = \"children\" | \"classes\" | \"style\" | \"attributes\"\nexport namespace ODOM {\n export class BatchActions {\n private actions: (() => any)[] = []\n constructor() { }\n async exec(): Promise<any> {\n await this.commit()\n }\n add(action: () => void) {\n this.actions.push(action)\n return this\n }\n async commit(): Promise<void> {\n const actions = this.actions\n this.actions = []\n await Promise.all(actions.map(async a => await a()))\n }\n }\n // Global batch queue to coalesce bridge calls; avoids one native hop per exec().\n const BATCH_KEY_SKIP = new Set(['invoke', 'dispatchEvent', 'setProperty'])\n let actionQueue: BatchOperation[] = []\n let dedupeIndex = new Map<string, number>()\n let flushScheduled = false\n let pendingPromise: { resolve: () => void, reject: (e: unknown) => void } | null = null\n\n function scheduleBatchFlush() {\n if (flushScheduled) return\n flushScheduled = true\n const runner = () => {\n flushScheduled = false\n flushBatchQueue()\n }\n setTimeout(() => runner(), 0)\n }\n\n async function flushBatchQueue() {\n const actions = actionQueue\n actionQueue = []\n dedupeIndex.clear()\n const p = pendingPromise\n pendingPromise = null\n try {\n if (actions.length) {\n await OUID.batchActions(actions)\n }\n p?.resolve()\n } catch (e) {\n p?.reject(e)\n }\n }\n\n function enqueueBatchActions(actions: BatchOperation[]): Promise<void> {\n for (const a of actions) {\n if (BATCH_KEY_SKIP.has(a.fn)) {\n actionQueue.push(a)\n continue\n }\n const key = `${a.fn}|${a.args.map(x => (typeof x === 'object' ? JSON.stringify(x) : String(x))).join('|')}`\n const idx = dedupeIndex.get(key)\n if (idx !== undefined) {\n actionQueue[idx] = a\n } else {\n dedupeIndex.set(key, actionQueue.length)\n actionQueue.push(a)\n }\n }\n if (!pendingPromise) {\n let resolve!: () => void\n let reject!: (e: unknown) => void\n const promise = new Promise<void>((res, rej) => { resolve = res; reject = rej })\n pendingPromise = { resolve, reject }\n scheduleBatchFlush()\n return promise\n }\n scheduleBatchFlush()\n return new Promise<void>((res, rej) => {\n const prev = pendingPromise\n pendingPromise = {\n resolve: () => { prev?.resolve(); res() },\n reject: (e) => { prev?.reject(e); rej(e) }\n }\n })\n }\n export class BatchUpdates {\n private operations: ({ fn: keyof OElement, args: any[], node: OObject } | (() => Promise<void>))[] = []\n constructor(private node: OObject) { }\n accept(other: BatchUpdates) {\n this.operations.push(...other.operations);\n other.operations = []\n }\n async exec(immediate: boolean = false): Promise<any> {\n const ops = this.operations\n this.operations = []\n let actions: BatchOperation[] = []\n const promises = ops.map(op => {\n if (typeof op === 'object') {\n // return (this.node[op.fn as keyof OObject] as Function).apply(this.node, op.args)\n actions.push({fn: op.fn as string, args: [op.node.uid, ...op.args.map(a => a instanceof OObject ? a.uid : a)]}) // ???????\n return null\n } else {\n return op()\n }\n }).filter(e => e!=null)\n if(actions.length > 0) {\n // filter out multiple action with the same args\n const seen: Record<string, BatchOperation> = {}\n const toSend: BatchOperation[] = [] \n actions.forEach(a => {\n const hash = `${a.fn}.${a.args.map(e => e?.toString()).join(',')}`\n if(seen[hash] && !['invoke', 'setProperty', 'dispatchEvent'].includes(a.fn)) {\n return\n }\n seen[hash] = a\n toSend.push(a)\n })\n // console.log(`Skipped ${actions.length - toSend.length} actions, initial was: ${actions.length}, now its ${toSend.length}`)\n if (immediate) {\n promises.unshift(OUID.batchActions(toSend))\n } else {\n promises.unshift(enqueueBatchActions(toSend))\n }\n }\n try {\n await Promise.all(promises)\n } catch (error) {\n console.error('Error while batch updates')\n }\n }\n \n private append(fn: keyof OElement, ...args: any[]): BatchUpdates {\n this.operations.push({ fn, args, node: this.node })\n return this\n }\n add(fn: keyof OElement, node?: OObject, ...args: any[]): BatchUpdates\n add(fn: () => any): BatchUpdates\n add(fn: (() => any) | keyof OElement, node?: OObject, ...args: any[]) {\n if(typeof fn === 'function') {\n this.operations.push(fn)\n } else {\n this.operations.push({ fn, args, node: node! })\n }\n return this\n }\n addEventListener(event: string, callback: (...args: any[]) => void, options?: EventListenerOptions, policy?: EventControlPolicy) {\n return this.add(() => { this.node.addEventListener(event, callback, { options, policy }) })\n }\n setProperty(key: string, value: any) {\n return this.append('setProperty', key, value)\n }\n dettachEventListener(cbId: string) {\n return this.append('dettachEventListener', cbId)\n }\n invoke(fn: string, ...args: any[]) {\n return this.append('invoke', fn, ...args.map(a => a instanceof OObject ? a.ref : a))\n }\n dispatchEvent(eventName: string, eventClass?: string, initDict?: any) {\n return this.append('dispatchEvent', eventName, eventClass, initDict)\n }\n addClass(...tokens: string[]) {\n return this.append('addClass', ...tokens)\n }\n removeClass(...tokens: string[]) {\n return this.append('removeClass', ...tokens)\n }\n setAttribute(name: string, value: string) {\n return this.append('setAttribute', name, value)\n }\n removeAttribute(name: string) {\n return this.append('removeAttribute', name)\n }\n appendChild(child: ONode) {\n return this.append('appendChild', child.uid)\n }\n removeChild(child: ONode) {\n return this.append('removeChild', child.uid)\n }\n remove() {\n return this.append('remove')\n }\n removeAndRelease() {\n // return this.append('removeAndRelease')\n return this.append('remove').append('release')\n }\n release() {\n return this.append('release')\n }\n innerHTML(html: string) {\n return this.append('setHTML', html)\n }\n replaceChildNode(node: ONode, child: ONode) {\n return this.append('replaceChildNode', node, child)\n }\n replaceWith(node: ONode) {\n return this.append('replaceWith', node.uid)\n }\n after(toInsert: ONode) {\n return this.append('after', toInsert.uid)\n }\n setInnerText(text: string) {\n return this.append('setInnerText', text)\n }\n setContentText(text: string) {\n return this.append('setContentText', text)\n }\n insertBefore(node: ONode, element: ONode,) {\n return this.append('insertBefore', node.uid, element.uid)\n }\n setInputValue(value: string) {\n return this.append('setInputValue', value)\n }\n setStyle(key: string, value: any) {\n return this.append('setStyle', key, value)\n }\n\n }\n export type NodeType = 'Element' | 'Text' | 'Comment' | 'Attribute' | 'Unknown'\n type Attributes = { name: string, value: string }[]\n export class OObject {\n constructor(public uid: string, public tag: string) {\n }\n static toInstance(obj: OObject) {\n return new OObject(obj.uid, obj.tag)\n }\n async release(): Promise<void> {\n await OUID.call('releaseNode', this.uid)\n }\n async addEventListener(event: string, callback: (...args: any[]) => void, extra?: {options?: EventListenerOptions, policy?: EventControlPolicy}): Promise<string> {\n return OUID.addEventListener(this, event, callback, { options: extra?.options, policy: extra?.policy })\n }\n async dettachEventListener(cbId: string) {\n await OUID.dettachEventListener(cbId)\n }\n async invoke<T>(fn: string, ...args: any[]) {\n return await OUID.call<T>('invokeObjectMethod', this.uid, fn, ...args)\n }\n async invokeAndHold(fn: string, ...args: any[]) {\n const res = await OUID.call<OObject>('invokeObjectMethodAndHold', this.uid, fn, ...args)\n if (!res) return res\n return new OObject(res.uid, res.tag)\n }\n async getProperty<T>(name: string): Promise<T | null> {\n return await OUID.call<T>('getObjectProperty', this.uid, name)\n }\n async getPropertyAndHold<T>(name: string): Promise<OObject | null> {\n const res = await OUID.call<OObject>('getObjectPropertyAndHold', this.uid, name)\n if (!res) return res\n return new OObject(res.uid, res.tag)\n }\n async setProperty<T>(name: string, value: T) {\n await OUID.call('setObjectProperty', this.uid, name, value)\n }\n async dispatchEvent(eventName: string, eventClass?: string, initDict?: any): Promise<void> {\n await OUID.call('dispatchEvent', this.uid, eventName, eventClass, initDict)\n }\n updates(): BatchUpdates {\n return new BatchUpdates(this)\n }\n batches(): BatchUpdates {\n return new BatchUpdates(this)\n }\n get ref() {\n return { '__ref__': this.uid }\n }\n }\n export abstract class ONode extends OObject {\n textContent?: string | null\n type: NodeType = 'Unknown'\n attributes: Attributes\n children?: ONode[]\n classes?: string[]\n style?: string\n\n constructor(node: OObject) {\n super(node.uid, node.tag)\n for (const k in node) {\n (this as any)[k] = node[k as keyof OObject]\n }\n this.attributes ??= []\n this.classes ??= []\n this.style ??= \"\"\n }\n }\n export class OElement extends ONode {\n\n private _hydrated: boolean = false\n constructor(node: OObject) {\n super(node)\n // this._hydrated = this.classes?.includes('hydrated') ?? false\n }\n async addClass(...tokens: string[]): Promise<void> {\n await OUID.call('addClass', this.uid, ...tokens)\n }\n async removeClass(...tokens: string[]): Promise<void> {\n await OUID.call('removeClass', this.uid, ...tokens)\n }\n async setAttribute(name: string, value: string): Promise<void> {\n const attrs = await OUID.call<Attributes>('setAttribute', this.uid, name, value)\n if (attrs) {\n // update local attributes\n this.attributes = attrs\n }\n }\n async removeAttribute(name: string): Promise<void> {\n const attrs = await OUID.call<Attributes>('removeAttribute', this.uid, name)\n if (attrs) {\n this.attributes = attrs\n }\n }\n async appendChild(child: ONode): Promise<void> {\n await OUID.call('appendChild', this.uid, child.uid)\n }\n set innerHTML(value: string) {\n this.setHTML(value)\n }\n async cloneNode(state: boolean): Promise<OElement | null> {\n const cloned = await OUID.call<ODOM.ONode>('cloneNode', this.uid, state)\n return cloned ? new OElement(cloned!) : null\n }\n async remove(): Promise<void> {\n await OUID.call('removeNode', this.uid)\n }\n async removeAndRelease(): Promise<void> {\n await this.remove();\n await this.release();\n }\n async removeChild(child: ONode): Promise<void> {\n await OUID.call('removeChild', this.uid, child.uid)\n }\n async replaceChildNode(node: ONode, child: ONode): Promise<void> {\n await OUID.call('replaceChildNode', this.uid, node.uid, child.uid)\n }\n async replaceWith(node: ONode): Promise<void> {\n await OUID.call('replaceWith', this.uid, node.uid)\n }\n async after(toInsert: ONode): Promise<void> {\n await OUID.call('insertAfter', this.uid, toInsert.uid)\n }\n async setHTML(html: string): Promise<void> {\n await OUID.call('setInnerHTML', this.uid, html)\n }\n async HTML(): Promise<string> {\n return await OUID.call<string>('getInnerHTML', this.uid) ?? ''\n }\n async setInnerText(text: string): Promise<void> {\n await OUID.call('setInnerText', this.uid, text)\n }\n async setContentText(text: string): Promise<void> {\n await OUID.call('setContentText', this.uid, text)\n }\n async getContentText(): Promise<string> {\n return await OUID.call('getContentText', this.uid) ?? ''\n }\n async content(): Promise<string> {\n try {\n return await OUID.call<string>('getInnerText', this.uid) ?? ''\n } catch (err) {\n console.error(err)\n return ''\n }\n }\n async childNodes(): Promise<OElement[]> {\n return (await OUID.call<ODOM.ONode[]>('childNodes', this.uid))?.map(c => new OElement(c)) ?? []\n }\n hasAttribute(name: string): boolean {\n return !!this.attributes!.find(attr => attr.name === name);\n }\n async getAttribute(name: string): Promise<string> {\n return await OUID.call<string>('getAttribte', this.uid, name) ?? ''\n }\n attribute(name: string): string | null {\n return this.attributes.find(attr => attr.name === name)?.value ?? null\n }\n async nextSibling(): Promise<OElement | null> {\n const res = await OUID.call<ODOM.ONode>('nextSibling', this.uid)\n return res ? new OElement(res) : null;\n }\n async getAttributeNames(): Promise<string[]> {\n return await OUID.call<string[]>('getAttributeNames', this.uid) ?? []\n }\n async parentNode(): Promise<OElement | null> {\n const node = await OUID.call<ONode>('parentNode', this.uid)\n return node ? new OElement(node) : null\n }\n async insertBefore(node: ONode, element: ONode): Promise<void> {\n await OUID.call('insertBefore', this.uid, node.uid, element.uid)\n }\n async setInputValue(value: string): Promise<void> {\n await OUID.call('setInputValue', this.uid, value)\n }\n async inputValue(): Promise<string> {\n return await OUID.call('inputValue', this.uid) ?? ''\n }\n get hydrated() {\n return this._hydrated\n }\n hydrate() {\n this._hydrated = true\n this.addClass('hydrated')\n }\n\n\n async query(selector: string, filter?: QueryFilter[]) {\n return await OUID.query(selector, filter, this.uid)\n }\n async queryAll(selector: string, filter?: QueryFilter[]) {\n return await OUID.queryAll(selector, filter, this.uid)\n }\n\n async setStyle(key: string, value: any) {\n await OUID.call('setStyle', this.uid, key, value)\n }\n\n }\n export class CanvasGradient extends OObject {\n constructor(obj: OObject) {\n super(obj.uid, obj.tag)\n }\n addColorStop(offset: number, color: string) {\n this.invoke('addColorStop', offset, color)\n return this\n }\n }\n export class DOMMatrix extends OObject {\n batch = new BatchUpdates(this)\n constructor(obj: OObject) {\n super(obj.uid, obj.tag)\n }\n static new(): Promise<DOMMatrix>\n static new(initString: string): Promise<DOMMatrix>\n static new(initArray: number[]): Promise<DOMMatrix>\n static async new(arg?: number[] | string): Promise<DOMMatrix | null> {\n const res = typeof arg !== 'undefined' ? await OUID.newObject('DOMMatrix', arg) : await OUID.newObject('DOMMatrix')\n if (!res) return null\n return new DOMMatrix(res)\n }\n\n invertSelf() {\n this.batch.invoke('invertSelf')\n return this\n }\n multiplySelf(): DOMMatrix\n multiplySelf(other?: DOMMatrix): DOMMatrix {\n this.batch.invoke('multiplySelf', ...(other ? [other.ref] : []))\n return this\n }\n premultiplySelf(): DOMMatrix\n premultiplySelf(other?: DOMMatrix): DOMMatrix {\n this.batch.invoke('premultiplySelf', ...(other ? [other.ref] : []))\n return this\n }\n\n\n rotateAxisAngleSelf(rotX?: number, rotY?: number, rotZ?: number, angle?: number) {\n const args = []\n if (rotX) {\n args.push(rotX)\n }\n if (rotY) {\n args.push(rotY)\n }\n if (rotZ) {\n args.push(rotZ)\n }\n if (angle) {\n args.push(angle)\n }\n this.batch.invoke('rotateAxisAngleSelf', ...args)\n return this\n }\n\n rotateFromVectorSelf(rotX?: number, rotY?: number) {\n const args = []\n if (rotX) {\n args.push(rotX)\n }\n if (rotY) {\n args.push(rotY)\n }\n this.batch.invoke('rotateFromVectorSelf', ...args)\n return this\n }\n rotateSelf(rotX?: number, rotY?: number, rotZ?: number) {\n const args = []\n if (rotX) {\n args.push(rotX)\n }\n if (rotY) {\n args.push(rotY)\n }\n if (rotZ) {\n args.push(rotZ)\n }\n this.batch.invoke('rotateFromVectorSelf', ...args)\n return this\n }\n scale3dSelf(scale?: number, originX?: number, originY?: number, originZ?: number) {\n const args = []\n if (scale) {\n args.push(scale)\n }\n if (originX) {\n args.push(originX)\n }\n if (originY) {\n args.push(originY)\n }\n if (originZ) {\n args.push(originZ)\n }\n this.batch.invoke('scale3dSelf', ...args)\n return this\n }\n scaleSelf(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number) {\n const args = []\n if (scaleX) {\n args.push(scaleX)\n }\n if (scaleY) {\n args.push(scaleY)\n }\n if (scaleZ) {\n args.push(scaleZ)\n }\n if (originX) {\n args.push(originX)\n }\n if (originY) {\n args.push(originY)\n }\n if (originZ) {\n args.push(originZ)\n }\n this.batch.invoke('scaleSelf', ...args)\n return this\n }\n setMatrixValue(transformList: string) {\n this.invoke<void>('setMatrixValue', transformList)\n return this\n }\n skewXSelf(sX: number) {\n this.batch.invoke('skewXSelf', sX)\n return this\n }\n skewYSelf(sX: number) {\n this.batch.invoke('skewYSelf', sX)\n return this\n }\n\n translateSelf(translateX: number, translateY: number, translateZ?: number) {\n this.batch.invoke('translateSelf', translateX, translateY, ...(translateZ ? [translateZ] : []))\n return this\n }\n async commit() {\n await this.batch.exec()\n }\n async is2D(): Promise<boolean> {\n return (await this.invoke<boolean>('is2D')) ?? false\n }\n async isIdentity(): Promise<boolean> {\n return (await this.invoke<boolean>('isIdentity')) ?? false\n }\n\n async flipX(): Promise<DOMMatrix | null> {\n const res = await this.invokeAndHold('flipX')\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async flipY(): Promise<DOMMatrix | null> {\n const res = await this.invokeAndHold('flipY')\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async inverse(): Promise<DOMMatrix | null> {\n const res = await this.invokeAndHold('inverse')\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async multiply(other?: DOMMatrix) {\n const res = await this.invokeAndHold('multiply', ...(other ? [other.ref] : []))\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async rotate(rotX?: number, rotY?: number, rotZ?: number) {\n const args = []\n if (rotX) {\n args.push(rotX)\n }\n if (rotY) {\n args.push(rotY)\n }\n if (rotZ) {\n args.push(rotZ)\n }\n const res = await this.invokeAndHold('rotate', ...args)\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async rotateAxisAngle(rotX?: number, rotY?: number, rotZ?: number, angle?: number) {\n const args = []\n if (rotX) {\n args.push(rotX)\n }\n if (rotY) {\n args.push(rotY)\n }\n if (rotZ) {\n args.push(rotZ)\n }\n if (angle) {\n args.push(angle)\n }\n const res = await this.invokeAndHold('rotateAxisAngle', ...args)\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async rotateFromVector(rotX?: number, rotY?: number) {\n const args = []\n if (rotX) {\n args.push(rotX)\n }\n if (rotY) {\n args.push(rotY)\n }\n const res = await this.invokeAndHold('rotateFromVector', ...args)\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async scale(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number) {\n const args = []\n if (scaleX) {\n args.push(scaleX)\n }\n if (scaleY) {\n args.push(scaleY)\n }\n if (scaleZ) {\n args.push(scaleZ)\n }\n if (originX) {\n args.push(originX)\n }\n if (originY) {\n args.push(originY)\n }\n if (originZ) {\n args.push(originZ)\n }\n const res = await this.invokeAndHold('scale', ...args)\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async scale3d(scale?: number, originX?: number, originY?: number, originZ?: number) {\n const args = []\n if (scale) {\n args.push(scale)\n }\n if (originX) {\n args.push(originX)\n }\n if (originY) {\n args.push(originY)\n }\n if (originZ) {\n args.push(originZ)\n }\n const res = await this.invokeAndHold('scale', ...args)\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async skewX(sX?: number) {\n const args = []\n if (sX) {\n args.push(sX)\n }\n const res = await this.invokeAndHold('skewX', ...args)\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n async skewY(sY?: number) {\n const args = []\n if (sY) {\n args.push(sY)\n }\n const res = await this.invokeAndHold('skewY', ...args)\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n toJSON(): Promise<any> {\n return this.invoke<any>('toJSON')\n }\n async toString(): Promise<string | null> {\n return this.invoke<string>('toString')\n }\n async translate(translateX?: number, translateY?: number, translateZ?: number) {\n const args = []\n if (translateX) {\n args.push(translateX)\n }\n if (translateY) {\n args.push(translateY)\n }\n if (translateZ) {\n args.push(translateZ)\n }\n const res = await this.invokeAndHold('translate', ...args)\n if (!res) {\n return null\n }\n return new DOMMatrix(res)\n }\n\n }\n export class CanvasPattern extends OObject {\n constructor(obj: OObject) {\n super(obj.uid, obj.tag)\n }\n async setTransform(matrix: DOMMatrix): Promise<void> {\n await this.invoke('setTransform', matrix.ref)\n }\n }\n export class Canvas2DContext extends OObject {\n private batch = new BatchUpdates(this);\n constructor(uid: string) {\n super(uid, 'unknown')\n }\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise: boolean = false) {\n this.batch.invoke('arc', x, y, radius, startAngle, endAngle, counterclockwise)\n return this\n }\n arcTo(x1: number, y1: number, x2: number, y2: number, radius: number) {\n this.batch.invoke('arcTo', x1, y1, x2, y2, radius)\n return this\n }\n bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number) {\n this.batch.invoke('bezierCurveTo', cp1x, cp1y, cp2x, cp2y, x, y)\n return this\n }\n clearRect(x: number, y: number, width: number, height: number) {\n this.batch.invoke('clearRect', x, y, width, height)\n return this\n }\n clip(path?: CanvasPath2D): Canvas2DContext\n clip(fillRule?: 'nonzero' | 'evenodd'): Canvas2DContext\n clip(path: CanvasPath2D, fillRule?: 'nonzero' | 'evenodd'): Canvas2DContext\n clip(arg1?: CanvasPath2D | 'nonzero' | 'evenodd', arg2?: 'nonzero' | 'evenodd'): Canvas2DContext {\n const args = []\n if (typeof arg1 === 'string') {\n args.push(arg1)\n } else if (arg1 instanceof CanvasPath2D) {\n arg1.commit(this.batch)\n args.push(arg1.ref)\n }\n if (typeof arg2 === 'string') {\n args.push(arg2)\n }\n this.batch.invoke('clip', ...args)\n return this\n }\n beginPath() {\n this.batch.invoke('beginPath')\n return this\n }\n closePath() {\n this.batch.invoke('closePath')\n return this\n }\n async createConicGradient(startAngle: number, x: number, y: number): Promise<CanvasGradient | null> {\n const res = await this.invokeAndHold('createConicGradient', startAngle, x, y)\n if (!res) {\n return null;\n }\n return new CanvasGradient(res)\n }\n async createLinearGradient(x0: number, y0: number, x1: number, y1: number): Promise<CanvasGradient | null> {\n const res = await this.invokeAndHold('createLinearGradient', x0, y0, x1, y1)\n if (!res) {\n return null;\n }\n return new CanvasGradient(res)\n }\n async createPattern(image: OObject, repetition: 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat' | '' = '') {\n const res = await this.invokeAndHold('createPattern', image.ref, repetition)\n if (!res) {\n return null;\n }\n return new CanvasPattern(res)\n }\n async createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): Promise<CanvasGradient | null> {\n const res = await this.invokeAndHold('createRadialGradient', x0, y0, r0, x1, y1, r1)\n if (!res) {\n return null;\n }\n return new CanvasGradient(res)\n }\n drawImage(image: Image | OObject, dx: number, dy: number): Canvas2DContext\n drawImage(image: Image | OObject, dx: number, dy: number, dWidth: number, dHeight: number): Canvas2DContext\n drawImage(image: Image | OObject, sx: number, sy: number, sWidth: number, sHeight: number, dx: number, dy: number, dWidth: number, dHeight: number): Canvas2DContext\n drawImage(image: Image | OObject, sx: number, sy: number, sWidth?: number, sHeight?: number, dx?: number, dy?: number, dWidth?: number, dHeight?: number) {\n const args: any[] = [image.ref]\n if (typeof dx === 'undefined') {\n args.push(sx, sy)\n if (sWidth) args.push(sWidth)\n if (sHeight) args.push(sHeight)\n this.batch.invoke('drawImage', ...args)\n return this\n }\n args.push(sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)\n this.batch.invoke('drawImage', ...args)\n return this\n }\n ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise: boolean = false) {\n this.batch.invoke('ellipse', x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise)\n return this\n }\n fill(path?: CanvasPath2D | 'nonzero' | 'evenodd', fillRule?: 'nonzero' | 'evenodd') {\n const args = []\n if (path) {\n args.push(typeof path === 'string' ? path : (path.commit(this.batch), path.ref))\n }\n if (fillRule) {\n args.push(fillRule)\n }\n this.batch.invoke('fill', ...args)\n return this\n }\n fillRect(x: number, y: number, width: number, height: number) {\n this.batch.invoke('fillRect', x, y, width, height)\n return this\n }\n fillText(text: string, x: number, y: number, maxWidth?: number) {\n this.batch.invoke('fillText', text, x, y, ...(maxWidth ? [maxWidth] : []))\n return this\n }\n\n getImageData(sx: number, sy: number, sw: number, sh: number, settings?: { colorSpace: 'srgb' | 'display-p3', pixelFormat: 'rgba-unorm8' | 'rgba-float16' }) {\n return this.invokeAndHold('getImageData', sx, sy, sw, sh, ...(settings ? [settings] : []))\n }\n getLineDash() {\n return this.invoke<number[]>('getLineDash')\n }\n async getTransform() {\n const mat = await this.invokeAndHold('getTransform')\n if (!mat) {\n return null\n }\n return new DOMMatrix(mat)\n }\n async isContextLost() {\n return await this.invoke<boolean>('isContextLost')\n }\n isPointInPath(x: number, y: number, fillRule?: 'nonzero' | 'evenodd'): Promise<boolean|null>;\n isPointInPath(path: CanvasPath2D, x: number, y: number, fillRule?: 'nonzero' | 'evenodd'): Promise<boolean|null>;\n async isPointInPath(\n arg1: number | CanvasPath2D,\n arg2: number,\n arg3?: number | ('nonzero' | 'evenodd'),\n arg4?: ('nonzero' | 'evenodd'),\n ): Promise<boolean|null> {\n\n const args = []\n if (typeof arg1 === 'number') {\n args.push(arg1, arg2)\n if (arg3) {\n args.push(arg3)\n }\n } else {\n await arg1.commit(this.batch)\n args.push(arg1.ref, arg2, arg3)\n if(arg4) {\n args.push(arg4)\n }\n }\n return (await this.invoke<boolean>('isPointInPath', ...args))\n\n }\n isPointInStroke(x: number, y: number): Promise<boolean>\n isPointInStroke(path: CanvasPath2D, x: number, y: number): Promise<boolean>\n async isPointInStroke(arg1: CanvasPath2D | number, arg2: number, arg3?: number): Promise<boolean> {\n const args = []\n if (typeof arg1 === 'number') {\n args.push(arg1, arg2)\n } else {\n await arg1.commit()\n args.push(arg1.ref, arg2, arg3)\n }\n return (await this.invoke('isPointInStroke', ...args)) ?? false\n }\n\n\n lineTo(x: number, y: number): Canvas2DContext {\n this.batch.invoke('lineTo', x, y)\n return this\n }\n async measureText(text: number): Promise<number> {\n return (await this.invoke('measureText', text)) ?? 0\n }\n moveTo(x: number, y: number): Canvas2DContext {\n this.batch.invoke('moveTo', x, y)\n return this\n }\n putImageData(imageData: OObject, dx: number, dy: number): Canvas2DContext\n putImageData(imageData: OObject, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): Canvas2DContext\n putImageData(imageData: OObject, dx: number, dy: number, dirtyX?: number, dirtyY?: number, dirtyWidth?: number, dirtyHeight?: number) {\n const args = [imageData.ref, dx, dy]\n if (dirtyX) args.push(dirtyX)\n if (dirtyY) args.push(dirtyY)\n if (dirtyWidth) args.push(dirtyWidth)\n if (dirtyHeight) args.push(dirtyHeight)\n this.batch.invoke('putImageData', ...args)\n return this\n }\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number) {\n this.batch.invoke('quadraticCurveTo', cpx, cpy, x, y)\n return this\n }\n rect(x: number, y: number, width: number, height: number) {\n this.batch.invoke('rect', x, y, width, height)\n return this\n }\n reset() {\n this.invoke('reset')\n }\n resetTransform() {\n this.invoke('resetTransform')\n }\n restore() {\n return this.batch.invoke('restore')\n }\n rotate(angle: number): Canvas2DContext {\n this.batch.invoke('rotate', angle)\n return this\n }\n roundRect(x: number, y: number, width: number, height: number, radii: number | number[]) {\n this.batch.invoke('roundRect', x, y, width, height, radii)\n return this\n }\n save() {\n return this.batch.invoke('save')\n }\n scale(x: number, y: number): Canvas2DContext {\n this.batch.invoke('scale', x, y)\n return this\n }\n setLineDash(segments: number[]) {\n return this.invoke<void>('setLineDash', segments)\n }\n setTransform(matrix: DOMMatrix): void\n setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void\n setTransform(a: number | DOMMatrix, b?: number, c?: number, d?: number, e?: number, f?: number):void {\n if (typeof a === 'number') {\n this.batch.invoke('setTransform', a, b, c, d, e, f)\n } else {\n this.batch.invoke('setTransform', a.ref)\n }\n }\n stroke(path?: CanvasPath2D): Canvas2DContext {\n this.batch.invoke('stroke', ...(path ? [(path.commit(this.batch), path.ref)] : []))\n return this\n }\n strokeRect(x: number, y: number, width: number, height: number): Canvas2DContext {\n this.batch.invoke('strokeRect', x, y, width, height)\n return this\n }\n strokeText(text: string, x: number, y: number, maxWidth?: number): Canvas2DContext {\n this.batch.invoke('strokeText', text, x, y, ...(maxWidth ? [maxWidth] : []))\n return this\n }\n transform(a: number, b: number, c: number, d: number, e: number, f: number): Canvas2DContext {\n this.batch.invoke('transform', a, b, c, d, e, f)\n return this\n }\n translate(x: number, y: number): Canvas2DContext {\n this.batch.invoke('translate', x, y)\n return this\n }\n set fillStyle(value: string | CanvasGradient | CanvasPattern) {\n this.setFillStyle(value)\n }\n setFillStyle(style: string | CanvasGradient | CanvasPattern): Canvas2DContext {\n this.batch.setProperty('fillStyle', typeof style === 'string' ? style : style instanceof OObject ? style.ref : style)\n return this\n }\n set filter(value: string) {\n this.setFilter(value)\n }\n setFilter(filter: string) {\n this.batch.setProperty('filter', filter)\n return this\n }\n set font(value: string) {\n this.setFont(value)\n }\n setFont(font: string) {\n this.batch.setProperty('font', font)\n return this\n }\n set fontKerning(value: string) {\n this.setFontKerning(value)\n }\n setFontKerning(kerning: string) {\n this.batch.setProperty('fontKerning', kerning)\n return this\n }\n set fontStretch(value: string) {\n this.setFontStretch(value)\n }\n setFontStretch(value: string) {\n this.batch.setProperty('fontStretch', value)\n return this\n }\n set fontVariantCaps(value: string) {\n this.setFontVariantCaps(value)\n }\n setFontVariantCaps(value: string) {\n this.batch.setProperty('fontVariantCaps', value)\n return this\n }\n set globalAlpha(value: number) {\n this.setGlobalAlpha(value)\n }\n setGlobalAlpha(value: number) {\n this.batch.setProperty('globalAlpha', value)\n return this\n }\n set globalCompositeOperation(value: string) {\n this.setGlobalCompositeOperation(value)\n }\n setGlobalCompositeOperation(value: string) {\n this.batch.setProperty('globalCompositeOperation', value)\n return this\n }\n set imageSmoothingEnabled(value: boolean) {\n this.setImageSmoothingEnabled(value)\n }\n setImageSmoothingEnabled(value: boolean) {\n this.batch.setProperty('imageSmoothingEnabled', value)\n return this\n }\n set imageSmoothingQuality(value: string) {\n this.setImageSmoothingQuality(value)\n }\n setImageSmoothingQuality(value: string) {\n this.batch.setProperty('imageSmoothingQuality', value)\n return this\n }\n set letterSpacing(value: string) {\n this.setLetterSpacing(value)\n }\n setLetterSpacing(value: string) {\n this.batch.setProperty('letterSpacing', value)\n return this\n }\n set lineCap(value: string) {\n this.setLineCap(value)\n }\n setLineCap(value: string) {\n this.batch.setProperty('lineCap', value)\n return this\n }\n set lineDashOffset(value: number) {\n this.setLineDashOffset(value)\n }\n setLineDashOffset(value: number) {\n this.batch.setProperty('lineDashOffset', value)\n return this\n }\n set lineJoin(value: string) {\n this.setLineJoin(value)\n }\n setLineJoin(value: string) {\n this.batch.setProperty('lineJoin', value)\n return this\n }\n set lineWidth(value: number) {\n this.setLineWidth(value)\n }\n setLineWidth(value: number) {\n this.batch.setProperty('lineWidth', value)\n return this\n }\n set miterLimit(value: number) {\n this.setMiterLimit(value)\n }\n setMiterLimit(value: number) {\n this.batch.setProperty('miterLimit', value)\n return this\n }\n set shadowBlur(value: number) {\n this.setShadowBlur(value)\n }\n setShadowBlur(value: number) {\n this.batch.setProperty('shadowBlur', value)\n return this\n }\n set shadowColor(value: string) {\n this.setShadowColor(value)\n }\n setShadowColor(value: string) {\n this.batch.setProperty('shadowColor', value)\n return this\n }\n set shadowOffsetX(value: number) {\n this.setShadowOffsetX(value)\n }\n setShadowOffsetX(value: number) {\n this.batch.setProperty('shadowOffsetX', value)\n return this\n }\n set shadowOffsetY(value: number) {\n this.setShadowOffsetY(value)\n }\n setShadowOffsetY(value: number) {\n this.batch.setProperty('shadowOffsetY', value)\n return this\n }\n set strokeStyle(value: any) {\n this.setStrokeStyle(value)\n }\n setStrokeStyle(value: any) {\n this.batch.setProperty('strokeStyle', typeof value === 'string' ? value : value instanceof OObject ? value.ref : value)\n return this\n }\n set textAlign(value: string) {\n this.setTextAlign(value)\n }\n setTextAlign(value: string) {\n this.batch.setProperty('textAlign', value)\n return this\n }\n set textBaseline(value: string) {\n this.setTextBaseline(value)\n }\n setTextBaseline(value: string) {\n this.batch.setProperty('textBaseline', value)\n return this\n }\n set wordSpacing(value: string) {\n this.setWordSpacing(value)\n }\n setWordSpacing(value: string) {\n this.batch.setProperty('wordSpacing', value)\n return this\n }\n set textRendering(value: string) {\n this.setTextRendering(value)\n }\n setTextRendering(value: string) {\n this.batch.setProperty('textRendering', value)\n return this\n }\n async commit(): Promise<void> {\n await this.batch.exec()\n }\n }\n export class Image extends OObject {\n constructor(obj: OObject) {\n super(obj.uid, obj.tag)\n }\n static async new(width?: number, height?: number): Promise<Image | null> {\n const args = []\n if (width) args.push(width)\n if (height) args.push(height)\n const img = await OUID.newObject('Image', ...args)\n if (!img) return null\n return new Image(img)\n }\n async width(): Promise<number> {\n return (await this.getProperty<number>('width')) ?? 0\n }\n async height(): Promise<number> {\n return (await this.getProperty<number>('height')) ?? 0\n }\n async naturalWidth(): Promise<number> {\n return (await this.getProperty<number>('naturalWidth')) ?? 0\n }\n async naturalHeight(): Promise<number> {\n return (await this.getProperty<number>('naturalHeight')) ?? 0\n }\n async src() {\n return await this.getProperty<string>('src')\n }\n async currentSrc() {\n return await this.getProperty<string>('currentSrc')\n }\n async setSrc(src: string) {\n await this.setProperty('src', src)\n }\n }\n export class CanvasPath2D extends OObject {\n private batch = new BatchUpdates(this);\n constructor(obj: OObject) {\n super(obj.uid, obj.tag)\n }\n\n static async create() {\n const ret = await OUID.newObject('Path2D')\n if (!ret) {\n return null\n }\n return new CanvasPath2D(ret)\n }\n addPath(path: CanvasPath2D) {\n this.batch.invoke('addPath', path.ref)\n return this\n }\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise: boolean = false) {\n this.batch.invoke('arc', x, y, radius, startAngle, endAngle, counterclockwise)\n return this\n }\n arcTo(x1: number, y1: number, x2: number, y2: number, radius: number) {\n this.batch.invoke('arcTo', x1, y1, x2, y2, radius)\n return this\n }\n bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number) {\n this.batch.invoke('bezierCurveTo', cp1x, cp1y, cp2x, cp2y, x, y)\n return this\n }\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number) {\n this.batch.invoke('quadraticCurveTo', cpx, cpy, x, y)\n return this\n }\n closePath() {\n this.batch.invoke('closePath')\n return this\n }\n ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise: boolean = false) {\n this.batch.invoke('ellipse', x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise)\n return this\n }\n moveTo(x: number, y: number) {\n this.batch.invoke('moveTo', x, y)\n return this\n }\n lineTo(x: number, y: number) {\n this.batch.invoke('lineTo', x, y)\n return this\n }\n rect(x: number, y: number, width: number, height: number) {\n this.batch.invoke('rect', x, y, width, height)\n return this\n }\n roundRect(x: number, y: number, width: number, height: number, radii: number | number[]) {\n this.batch.invoke('roundRect', x, y, width, height, radii)\n return this\n }\n commit(parent?: BatchUpdates): Promise<void> {\n if(parent) {\n parent.accept(this.batch)\n return Promise.resolve()\n }\n return this.batch.exec()\n }\n\n }\n export class CanvasElement extends OElement {\n constructor(node: OElement) {\n super(node)\n }\n async width() {\n return this.getProperty<number>('width')\n }\n async height() {\n return this.getProperty<number>('height')\n }\n async setWidth(width: number) {\n this.setProperty('width', width)\n }\n async setHeight(height: number) {\n this.setProperty('height', height)\n }\n async getContext(context: string): Promise<Canvas2DContext | null> {\n const obj = await this.invokeAndHold('getContext', context)\n if (!obj) return obj\n return new Canvas2DContext(obj.uid)\n }\n static async of(selector: string, filter?: QueryFilter[], nodeId?: string): Promise<CanvasElement | null> {\n const node = await OUID.query(selector, filter)\n if (!node) return null\n return new CanvasElement(node)\n }\n }\n}\n\nexport interface EventListenerOptions {\n once?: boolean;\n passive?: boolean; capture?: boolean\n}\nexport interface EventControlPolicy {\n alwaysPreventDefault?: boolean;\n alwaysStopPropagation?: boolean;\n alwaysStopImmediatePropagation?: boolean\n}\nexport interface OUIDBridgeInterface {\n invoke(name: string): Promise<any>\n emit(event: string, data: any): void\n subscribe(event: string, callback: (id: string, data: string) => void): void\n}\n\nexport type OUIDConfig = {\n appId: string;\n appName: string,\n appSecret: string\n}\nexport interface BatchOperation {\n fn: string,\n args: any[]\n}\nexport declare var WebOUID: { invoke: (id: string, name: string, argsJson: string) => void } | undefined\ntype SuccessCallback = (...args: any[]) => void\ntype ErrorCallback = (...args: any[]) => void\ntype InvokeCallback = { success: SuccessCallback, error: ErrorCallback }\ntype RequestData = { method: string, headers: Record<string, string>, body: any, credentials: \"include\" | \"omit\" | \"same-origin\" }\nexport class OUIDBridge implements OUIDBridgeInterface {\n private callbacks = new Map<string, InvokeCallback>()\n private DOM_EVENT_LISTENERS = new Map<string, (...args: any[]) => void>()\n private timers = new Map<number, string>()\n private _config?: OUIDConfig = undefined\n private listeners = new Map<string, ((id: string, data: string) => void)[]>()\n constructor() {\n this.subscribe('__ouid_native_event_success__', (id, data) => {\n const cb = this.callbacks.get(id)\n if (cb) {\n this.callbacks.delete(id)\n return cb.success(...JSON.parse(data))\n }\n })\n this.subscribe('__ouid_native_event_error__', (id, data) => {\n const cb = this.callbacks.get(id)\n if (cb) {\n this.callbacks.delete(id)\n return cb.error(...JSON.parse(data))\n }\n })\n this.subscribe('__ouid_web_event__', (id, data) => {\n const cb = this.DOM_EVENT_LISTENERS.get(id)\n const args = JSON.parse(data)\n if (cb) {\n // this.callbacks.delete(id)\n const event = args[1]\n if (event && typeof(event) === 'object') {\n event['target'] = event?.target ? new ODOM.OElement(event.target) : null\n event['currentTarget'] = event?.currentTarget ? new ODOM.OElement(event.currentTarget) : null\n event['relatedTarget'] = event?.relatedTarget ? new ODOM.OElement(event.relatedTarget) : null\n }\n return cb(event)\n } else {\n console.error('No cb found for ', id, args[0])\n }\n })\n }\n config(conf?: OUIDConfig): OUIDBridge {\n this._config = conf\n return this\n }\n\n invoke(name: string, ...args: any[]): Promise<any> {\n const id = generateUIID(name)\n return new Promise((res, rej) => {\n this.callbacks.set(id, { success: res, error: rej })\n try {\n if (!WebOUID) throw new Error(\"NativeOUID bridge not available\")\n WebOUID.invoke(id, name, JSON.stringify(args))\n } catch (error) {\n console.error(error)\n this.callbacks.delete(id)\n }\n })\n }\n registerComponent(tag: string, compClass: OComponentType<any, any>) {\n componentsRegistry.register(tag, compClass)\n }\n unregisterComponent(tag: string, compClass: OComponentType<any, any>) {\n componentsRegistry.unregister(tag)\n }\n /**\n * Make a synchronous class\n * @param name the name without '_oui' prefix\n * @param args the arguments list\n * @returns a promise of T\n */\n async call<T>(name: string, ...args: any[]): Promise<T | null> {\n try {\n const res = await this.invoke(`_ouid_${name}`, ...args)\n return res.data as T\n } catch (error) {\n console.error(error)\n return null\n }\n }\n emit(event: string, data: any): void {\n WebOUID?.invoke('event', event, JSON.stringify(data))\n }\n /**\n * \n * @param event Create a subscription for a given event name, should be possible to register only once ??\n * @param callback \n */\n\n\n subscribe(event: string, callback: (id: string, ...args: any[]) => void): void {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, []);\n // attach a single handler for native -> JS calls\n (globalThis as any)[event] = (id: string, data: string) => {\n this.listeners.get(event)?.forEach(cb => cb(id, data))\n }\n // if (window && document) {\n // (window as any)[event] = (globalThis as any)[event]\n // }\n }\n this.listeners.get(event)!.push(callback)\n }\n\n\n async query(selector: string, filter?: QueryFilter[], nodeId?: string): Promise<ODOM.OElement | null> {\n const node = await this.call<ODOM.ONode>('query', selector, filter, nodeId)\n return node ? new ODOM.OElement(node) : null\n }\n async queryAll(selector: string, filter?: QueryFilter[], nodeId?: string): Promise<ODOM.OElement[] | null> {\n const nodes = await this.call<ODOM.ONode[]>('queryAll', selector, filter, nodeId)\n return nodes ? nodes.map(n => new ODOM.OElement(n)) : []\n }\n\n async createElement(tag: string, props: Record<string, string> = {}): Promise<ODOM.OElement | null> {\n const node = await this.call<ODOM.ONode>('createElement', tag, props)\n return node ? new ODOM.OElement(node) : null\n }\n async createComment(data: string): Promise<ODOM.OElement | null> {\n const node = await this.call<ODOM.ONode>('createComment', data)\n return node ? new ODOM.OElement(node) : null\n }\n\n async addEventListener(node: ODOM.OObject | 'window' | 'document',\n event: string,\n callback: (...args: any[]) => void,\n extra?: {\n options?: EventListenerOptions,\n policy?: EventControlPolicy\n }\n ): Promise<string> {\n const cbId = generateUIID(event + (typeof node == 'string' ? node : node.tag))\n this.DOM_EVENT_LISTENERS.set(cbId, callback)\n await OUID.call('attachEventListener', typeof node == 'string' ? node : node.uid, cbId, event, extra?.options, extra?.policy)\n return cbId\n }\n async dettachEventListener(cbId: string) {\n this.DOM_EVENT_LISTENERS.delete(cbId)\n await OUID.call('dettachEventListener', cbId)\n }\n\n\n async createComponentStyles(css: string, inject: boolean = true): Promise<ODOM.OElement | null> {\n const node = await OUID.call<ODOM.OElement>('createComponentStyles', css, inject)\n return node ? new ODOM.OElement(node) : null;\n }\n async appendComponentStyles(cssNode: string): Promise<void> {\n await OUID.call<ODOM.OElement>('appendComponentStyles', cssNode)\n }\n async rejectComponentStyles(cssNode: ODOM.ONode): Promise<void> {\n await OUID.call('rejectComponentStyles', cssNode.uid)\n }\n\n async getOObject(id: string): Promise<ODOM.OObject | null> {\n const obj = await OUID.call<ODOM.OObject>('getOObject', id)\n return obj ? new ODOM.OObject(obj.uid, obj.tag) : null\n }\n async acquireObject(name: string): Promise<ODOM.OObject | null> {\n const obj = await OUID.call<ODOM.OObject>('acquireObject', name)\n return obj ? new ODOM.OObject(obj.uid, obj.tag) : null\n }\n\n async setTimeout(callback: () => void, delay: number): Promise<number> {\n const cbId = generateUIID('setTimeout' + delay)\n this.DOM_EVENT_LISTENERS.set(cbId, () => {\n callback()\n // remove from queue\n const cb = this.timers.get(id)\n if (cb) {\n this.timers.delete(id)\n this.DOM_EVENT_LISTENERS.delete(cb)\n }\n })\n const id = await OUID.call<number>('setTimeout', cbId, delay) ?? -1\n if (id >= 0) {\n this.timers.set(id, cbId)\n }\n return id\n }\n async clearTimeout(id: number): Promise<void> {\n const cb = this.timers.get(id)\n if (cb) {\n this.timers.delete(id)\n this.DOM_EVENT_LISTENERS.delete(cb)\n await OUID.call<number>('clearTimeout', id)\n }\n }\n async setInterval(callback: () => void, delay: number): Promise<number> {\n const cbId = generateUIID('setInterval' + delay)\n this.DOM_EVENT_LISTENERS.set(cbId, callback)\n const id = await OUID.call<number>('setInterval', cbId, delay) ?? -1\n if (id >= 0) {\n this.timers.set(id, cbId)\n }\n return id\n }\n async clearInterval(id: number): Promise<void> {\n const cb = this.timers.get(id)\n if (cb) {\n this.timers.delete(id)\n this.DOM_EVENT_LISTENERS.delete(cb)\n await OUID.call<number>('clearInterval', id)\n }\n }\n\n\n fetch(url: string, input: RequestData, encodeAs: \"json\"): Promise<any>\n fetch(url: string, input: RequestData, encodeAs: \"text\"): Promise<string>\n fetch(url: string, input: RequestData, encodeAs: \"base64\"): Promise<string>\n fetch(url: string, input: RequestData, encodeAs: \"buffer\"): Promise<ODOM.OObject>\n async fetch(\n url: string,\n input: RequestData,\n encodeAs: \"json\" | \"text\" | \"base64\" | 'buffer' | 'bytes' = \"json\"\n ): Promise<any> {\n const res = await OUID.call(\"fetch\", url, input, encodeAs);\n if(encodeAs === 'buffer' || encodeAs === 'bytes') {\n return ODOM.OObject.toInstance(res as any)\n }\n return res\n }\n\n async alert(message: string): Promise<void> {\n console.log('Alerting:::', message)\n await OUID.call(\"alert\", message);\n }\n async prompt(message: string): Promise<void> {\n await OUID.call(\"prompt\", message);\n }\n\n async newObject(ctr: string, ...args: any[]) {\n return OUID.call<ODOM.OObject>('newObject', ctr, ...args)\n }\n async requestAnimationFrame(callback: (fps: number) => void): Promise<number>{\n const cbId = generateUIID('requestAnimationFrame')\n this.DOM_EVENT_LISTENERS.set(cbId, (fps: number) => {\n callback(fps)\n // remove from queue\n const cb = this.timers.get(id)\n if (cb) {\n this.DOM_EVENT_LISTENERS.delete(cb)\n this.timers.delete(id)\n }\n })\n const id = await OUID.call<number>('requestAnimationFrame', cbId) ?? -1\n if (id >= 0) {\n this.timers.set(id, cbId)\n }\n return id\n }\n async cancelAnimationFrame(id: number): Promise<void> {\n const cb = this.timers.get(id)\n if (cb) {\n this.timers.delete(id)\n await OUID.call<number>('cancelAnimationFrame', id)\n this.DOM_EVENT_LISTENERS.delete(cb)\n }\n }\n async batchActions(operations: BatchOperation[]): Promise<void> {\n await OUID.call('batchActions', operations)\n }\n nextTick(cb: () => void) {\n OUID.setTimeout(cb, 0)\n }\n}\n\n\nexport const OUID = new Proxy(new OUIDBridge(), {\n get: (target, p) => {\n if (p in target) {\n return target[p as keyof OUIDBridge]\n }\n return async <T>(...args: any) => {\n return await target.call<T>(p as string, ...args)\n }\n }\n}) as OUIDBridge & Record<string, (...args: any[]) => Promise<any>>;\n\n; (globalThis as any).OUID = OUID\n\ndeclare global {\n var OUID: OUIDBridge & Record<string, (...args: any[]) => Promise<any>>;\n}\n","import { Component, ComponentConstructor, createComponent, OComponent, OComponentType, RenderNode } from \"./component\";\nimport { App, inject } from \"./app\";\nimport { isStated } from \"./state\";\nimport { ComponentsRegistry, componentsRegistry } from \"./registry\";\nimport { ODOM } from \"./interfaces/bridge\";\nimport { deferMicro } from \"./helpers\";\nimport { effect } from \"./reactivity\";\n\nfunction toCamelCase(name: string): string {\n return name.replace(/-([a-z])/g, (_, char) => char.toUpperCase());\n}\nfunction toSnakeCase(name: string): string {\n return name.replace(/(?!^)([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\n\nfunction normaliseValue<T>(value: T) {\n if (isStated(value)) {\n return value.value as T\n }\n return value\n}\n\n\n\nfunction isLazyLoader<P extends Record<string, any>, O extends Record<string, any>>(\n comp: OComponentType<P, O>\n): comp is () => Promise<{ default: ComponentConstructor<P, O> }> {\n return typeof comp === \"function\" && !(\"prototype\" in comp);\n}\n\n// --- helpers (can live in the same file or be moved to cache.ts) ---\ntype TemplateFn = (scope: any) => string;\n\nconst EXPR_FN = new Map<string, (s: any) => any>();\nconst TEMPLATE_CACHE = new Map<string, TemplateFn>();\nconst METHODS_CACHE = new WeakMap<object, any>();\n\nfunction getMethodsView(obj: any) {\n if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) return {};\n const cached = METHODS_CACHE.get(obj);\n if (cached) return cached;\n\n const out: Record<string, any> = Object.create(null);\n for (let cur = obj; cur && cur !== Object.prototype; cur = Object.getPrototypeOf(cur)) {\n for (const key of Object.getOwnPropertyNames(cur)) {\n if (key === 'constructor' || key.startsWith('__') || key.endsWith('__')) continue;\n if (key in out) continue;\n\n const desc = Object.getOwnPropertyDescriptor(cur, key);\n if (!desc) continue;\n // const v = (desc.value ?? (desc.get ? desc.get.call(obj) : undefined));\n // out[key] = typeof v === 'function' ? v.bind(obj) : v;\n\n if (typeof desc.value === 'function') {\n out[key] = desc.value.bind(obj)\n } else if (desc.get) {\n Object.defineProperty(out, key, {\n get: () => desc.get!.call(obj),\n enumerable: true\n })\n }\n }\n }\n METHODS_CACHE.set(obj, out);\n return out;\n}\n\nfunction evalInScope(expr: string, scope: any) {\n let compiled = EXPR_FN.get(expr);\n if (!compiled) {\n // Compile ONCE per expr; use with(s) to avoid rebuilding arg lists each call\n compiled = new Function('s', 'with (s) { return (' + expr + '); }') as (s: any) => any;\n EXPR_FN.set(expr, compiled);\n }\n return compiled(scope);\n}\n\nfunction compileInterpolated(template: string): TemplateFn {\n let fn = TEMPLATE_CACHE.get(template);\n if (fn) return fn;\n\n const parts: Array<{ t?: string; e?: string }> = [];\n let i = 0;\n while (i < template.length) {\n const open = template.indexOf('{{', i);\n if (open < 0) { parts.push({ t: template.slice(i) }); break; }\n if (open > i) parts.push({ t: template.slice(i, open) });\n const close = template.indexOf('}}', open + 2);\n const expr = close >= 0 ? template.slice(open + 2, close).trim() : template.slice(open + 2).trim();\n parts.push({ e: expr });\n i = (close >= 0 ? close + 2 : template.length);\n }\n\n fn = (scope: any) => {\n let out = '';\n for (const p of parts) {\n if (p.t !== undefined) out += p.t;\n else if (p.e !== undefined) {\n const v = normaliseValue(evalInScope(p.e, scope));\n out += v == null ? '' : String(v);\n }\n }\n return out;\n };\n TEMPLATE_CACHE.set(template, fn);\n return fn;\n}\n\nexport class RenderContext {\n static PROVIDE_TOKEN = \"RENDER_CONTEXT\"\n static MOUNTED_COMPONENTS_TOKEN = \"RENDER_CONTEXT_MOUNTED_COMPONENTS\"\n static STYLE_REF = new WeakMap<any, number>()\n private bindings: Binding[] = []\n private directives: Directive[] = []\n private mountedComponents: Map<string, OComponent> = inject<Map<string, OComponent>>(RenderContext.MOUNTED_COMPONENTS_TOKEN) ?? new Map()\n private componentsRegistry = new ComponentsRegistry()\n private updatingDirectives = false;\n private updatingBindings = false;\n private _stack: Record<string, any>[] = []\n private flatStack: Record<string, any> = Object.create(null);\n private viewUpdates!: ODOM.BatchUpdates\n private mountedQueue: Array<() => void> = [];\n\n constructor(private app: App, public component: OComponent<Record<string, any>, Record<string, any>>, private parentContext: RenderContext | null, ...frames: Record<string, any>[]) {\n for (const f of frames) {\n this.push(f)\n }\n }\n get hostElement(): ODOM.OElement {\n return (this.component as any)['_hostElement']\n }\n get stack() {\n return this._stack;\n }\n set stack(value: Record<string, any>[]) {\n this.flatStack = Object.create(null);\n this._stack = [];\n for (const f of value) {\n this.push(f)\n }\n }\n\n\n private getRoot(): RenderContext {\n let ctx: RenderContext = this;\n while (ctx.parentContext) ctx = ctx.parentContext;\n return ctx;\n }\n\n enqueueMounted(fn: () => void) {\n const root = this.getRoot();\n root.mountedQueue.push(fn);\n }\n\n async flushMounted() {\n const root = this.getRoot();\n const queue = root.mountedQueue;\n root.mountedQueue = [];\n for (const fn of queue) {\n try {\n fn();\n } catch (e) {\n console.error(\"onMounted error:\", e);\n }\n }\n }\n\n getMountedComponent(node: ODOM.OElement): OComponent | undefined {\n return this.mountedComponents.get(node.uid)\n }\n bind(binding: Binding) {\n this.bindings.push(binding)\n }\n directive(directive: Directive) {\n this.directives.push(directive)\n }\n evaluateExpression(expr: string | null | undefined): boolean {\n return this.resolve(expr)\n }\n private resolveScope(...additionFrames: Record<string, any>[]) {\n const stateObj = this.component ?? {};\n const methodsView = getMethodsView(stateObj);\n return new Proxy(Object.create(null), {\n get: (_t, prop: string) => {\n for (let i = additionFrames.length - 1; i >= 0; i--) {\n if (prop in additionFrames[i]) return normaliseValue((additionFrames[i] as any)[prop]);\n }\n if (prop in this.flatStack) return normaliseValue((this.flatStack as any)[prop]);\n if (prop in methodsView) return normaliseValue((methodsView as any)[prop]);\n return normaliseValue((stateObj as any)[prop])\n },\n set: (_t, prop: string, newValue) => {\n let v: any = undefined\n for (let i = additionFrames.length - 1; i >= 0; i--) {\n if (prop in additionFrames[i]) {\n v = (additionFrames[i] as any)[prop]\n break\n }\n }\n if(v === undefined) {\n if (prop in this.flatStack) {\n v = (this.flatStack as any)[prop];\n } else if (prop in methodsView) {\n v = (methodsView as any)[prop];\n } else {\n v = (stateObj as any)[prop];\n }\n }\n if(v !== undefined && isStated(v)) {\n v.value = newValue\n return true\n }\n return false\n },\n has: (_t, prop: string) =>\n additionFrames.some(f => prop in f) || (prop in this.flatStack) || (prop in methodsView) || (prop in stateObj)\n });\n }\n resolve(key: string | null | undefined, ...additionFrames: Record<string, any>[]) {\n if (!key) return undefined;\n const scope = this.resolveScope(...additionFrames)\n try {\n return evalInScope(key, scope);\n } catch (error) {\n return undefined;\n }\n }\n /** \n * Handing (o-model) like (ngModel) update, we should support mutliple syntaxe like o-mode=\"value\" where value is defined directly on the component\n * o-model=\"data['key']\" where data is either defined on the component, of in the enclosing scope in case of for-loop for instance\n * */\n updateValue(key: string, value: any) {\n\n this.resolve(`${key}=__o_model_value__`, { '__o_model_value__': value });\n // this.component.state.didChange(key as any, undefined, value);\n }\n push(frame: Record<string, any>) {\n this._stack.unshift(frame);\n Object.assign(this.flatStack, frame);\n }\n\n pop() {\n const f = this._stack.shift();\n if (f) for (const k of Object.keys(f)) delete this.flatStack[k];\n }\n resolveTag(tag: string): OComponentType<any, any> | undefined {\n // resolve from context hiearchy\n let ctx: RenderContext | null = this\n while (true) {\n if (ctx.componentsRegistry.has(tag)) {\n return ctx.componentsRegistry.get(tag)\n }\n ctx = ctx?.parentContext ?? null\n if (!ctx) {\n break;\n }\n }\n return componentsRegistry.get(tag)\n }\n // --- Interpolation & two-way binding ---\n async updateBindings(): Promise<void> {\n if (this.updatingBindings) return;\n\n this.updatingBindings = true;\n for (const b of this.bindings) this.updateBinding(b);\n this.updatingBindings = false;\n\n }\n updateBinding(binding: Binding): void {\n if (binding.type === \"model\") {\n (binding.node).setProperty('value', normaliseValue<string>(binding.context.resolve(binding.key)));\n return;\n }\n\n if (binding.type === 'interpolation') {\n // Precompiled template; resolve in one shot\n // updates.add(async () => {\n // const s = binding.templateFn(binding.context.resolveScope());\n // await binding.node.setContentText(s);\n // });\n const s = binding.templateFn(binding.context.resolveScope());\n this.viewUpdates.add('setContentText', binding.node, s)\n return;\n }\n\n if (binding.type === 'attribute') {\n const name = binding.key;\n const v = normaliseValue(this.resolve(binding.template!));\n if (name === 'class') {\n this.expandClass(binding.node, v);\n } else if (name === 'style') {\n this.expandStyle(binding.node, v); // single attribute set inside\n } else if (typeof v !== 'object' && typeof v !== 'function' && typeof v !== 'symbol' && typeof v !== 'undefined') {\n // updates.add(() => binding.node.setAttribute(name, v.toString()));\n this.viewUpdates.add('setAttribute', binding.node, name, v.toString())\n }\n return;\n }\n\n if (binding.type === 'prop' && binding.context.component) {\n const value = normaliseValue<string>(this.resolve(binding.template));\n try {\n binding.context.component.props[binding.key] = value;\n // when props change, re-evaluate the child context\n Promise.all([binding.context.updateBindings(),\n binding.context.updateDirectives()]).then(() => {\n binding.context.viewUpdates.exec()\n })\n } catch (error) {\n console.error(error);\n }\n return;\n }\n }\n // --- Directives ---\n async updateDirectives() {\n if (this.updatingDirectives) {\n return\n }\n const updates = new ODOM.BatchActions()\n const root = true\n this.updatingDirectives = true\n for (let d of this.directives) {\n if (d.type === \"if\") {\n const show = normaliseValue(d.context.evaluateExpression(d.expr));\n if (!show) {\n if (d.active === false) {\n continue\n }\n d.active = false;\n if (d.renderedNode) {\n if (d.destroy) {\n this.unmountComponent(d.renderedNode)\n // await d.renderedNode.removeAndRelease()\n } else {\n // await d.renderedNode.addClass('oui-hidden')\n this.viewUpdates.add('addClass', d.renderedNode, 'oui-hidden')\n }\n }\n continue\n }\n\n if (d.active === true) {\n continue;\n }\n d.active = true;\n const renderedNode = d.renderedNode\n if (!renderedNode || d.destroy) {\n const clone = (await d.node.cloneNode(true))!\n d.renderedNode = clone\n await d.context.render(clone)\n // await d.placeholder.after(clone)\n this.viewUpdates.add('after', d.placeholder, clone)\n } else {\n // await renderedNode.removeClass(\"oui-hidden\");\n this.viewUpdates.add('removeClass', renderedNode, 'oui-hidden')\n }\n // d.context.updateDirectives()\n }\n\n if (d.type === \"for\") {\n const oldChildren: Map<any, { node: ODOM.OElement, ctx: RenderContext }> = d.children ?? new Map();\n const newChildren: Map<any, { node: ODOM.OElement, ctx: RenderContext }> = new Map();\n\n const keyFn = (val: any, idx: number) =>\n d.key ? normaliseValue<any>(d.context.resolve(d.key, { [d.item!]: val })) : idx;\n\n const arr = normaliseValue<any[]>(d.context.resolve(d.list!)) || [];\n\n // We accumulate DOM moves/inserts, then commit once per chunk\n const domOps = new ODOM.BatchActions();\n const YIELD_EVERY = 32; // tune for device; 16~32 is usually sweet in WebView\n let opsSinceYield = 0;\n\n\n let last: ODOM.OElement = d.placeholder;\n\n for (let i = 0; i < arr.length; i++) {\n const val = arr[i];\n console.log('val:::', val)\n const key = keyFn(val, i);\n\n let entry = oldChildren.get(key);\n let node: ODOM.OElement;\n let ctx: RenderContext;\n\n const anchor = last;\n if (entry) {\n node = entry.node;\n ctx = entry.ctx;\n\n // update loop-local frame quickly\n ctx.stack = [{ [d.item!]: val }, ...d.context.stack];\n\n // Reorder only if needed (batch it)\n const next = await last.nextSibling();\n if (node.uid !== next?.uid) {\n domOps.add(() => anchor.after(node)); // no async, anchor is stable\n }\n\n ;(ctx as any).__renderRunner__?.()\n // Schedule updates for the reused child; do not force immediate commit\n await Promise.all([ctx.updateBindings(), ctx.updateDirectives()]);\n } else {\n // brand new row: create ctx + clone; avoid immediate DOM awaits\n ctx = new RenderContext(this.app, this.component, this);\n ctx.viewUpdates = this.viewUpdates\n ctx.stack = [{ [d.item!]: val }, ...d.context.stack];\n\n const clone = await d.node.cloneNode(true);\n node = clone!;\n\n // Insert into DOM in the same batch (fast)\n domOps.add(async () => {\n await anchor.after(node);\n });\n\n // Hydration for this new row runs in parallel *after* the batch\n await ctx.render(node);\n await ctx.updateDirectives();\n if (!(ctx as any).__renderRunner__) {\n const runner = effect(() => {\n ctx.collectDepsForBindingsAndDirectives()\n }, {\n lazy: true,\n scheduler: () => {\n deferMicro(async () => {\n // prevent overlapping async passes (optional but recommended)\n ;(ctx as any).__renderRunner__?.() \n if ((ctx as any).__updating) return\n ; (ctx as any).__updating = true\n try {\n await Promise.all([ctx.updateBindings(), ctx.updateDirectives()])\n await ctx.viewUpdates.exec()\n await ctx.flushMounted()\n } finally {\n ; (ctx as any).__updating = false\n }\n })\n \n }\n })\n ;(ctx as any).__renderRunner__ = runner\n runner()\n const cmp = ctx.component as any\n cmp.effects = cmp.effects ?? [];\n cmp.effects.push(() => runner.effect.stop())\n }\n ;(ctx as any).__renderRunner__() // initial collection\n }\n\n last = node;\n newChildren.set(key, { node, ctx });\n\n // yield periodically to keep main thread responsive in WebView\n if (++opsSinceYield >= YIELD_EVERY) {\n opsSinceYield = 0;\n await domOps.commit(); // flush moves so far\n await deferMicro(); // let microtasks run\n }\n }\n\n // Remove stale nodes (batched)\n const ps: any[] = []\n for (const [key, entry] of oldChildren.entries()) {\n if (!newChildren.has(key)) {\n ps.push(this.unmountComponent(entry.node));\n }\n }\n await Promise.all(ps)\n\n // Final DOM batch flush for this directive pass\n await domOps.commit();\n\n\n d.children = newChildren;\n }\n }\n // commit updates\n if (root) {\n await updates.commit()\n }\n // await this.hydradationActions.commit()\n this.updatingDirectives = false\n\n }\n\n private async render(node: ODOM.OElement, options?: { skipSlotted: boolean }): Promise<void> {\n if (node.hydrated) {\n return;\n }\n if (options?.skipSlotted && node.hasAttribute('slotted')) {\n return;\n }\n switch (node.type) {\n case 'Text':\n this.handleTextNode(node)\n break\n case 'Element':\n await this.handleElementNode(node, options)\n break\n default:\n }\n const batch = new ODOM.BatchActions()\n await Promise.all([this.updateBindings(), this.updateDirectives()])\n batch.commit()\n // this.hydradationActions.add(() => node.hydrate())\n this.viewUpdates.add('addClass', node, 'hydrated')\n\n }\n private async expandClass(node: ODOM.OElement, value: any) {\n let classes: string[]\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n classes = value\n } else {\n classes = Object.keys(value).filter(e => value[e])\n }\n } else {\n classes = value.toString().split(/\\s+/)\n }\n if (classes.length > 0) {\n // await node.addClass(...classes)\n this.viewUpdates.add('addClass', node, ...classes)\n }\n }\n private expandStyle(node: ODOM.OElement, value: any) {\n let styleString = value\n if (typeof value === 'object' && !Array.isArray(value)) {\n styleString = Object.keys(value).filter(e => value[e]).map(e => `${toSnakeCase(e)}: ${value[e]}`).join(';')\n }\n if (styleString) {\n // node.setAttribute('style', styleString)\n this.viewUpdates.add('setAttribute', node, 'style', styleString)\n }\n }\n private expandStandardAttributes(node: ODOM.OElement) {\n // const batches = node.updates();\n [...node.attributes!].filter(attr => attr.name.startsWith(':')).forEach(attr => {\n const key = attr.name.substring(1)\n this.bind({\n type: 'attribute',\n node,\n key,\n context: this,\n template: attr.value.trim()\n })\n this.viewUpdates.add('removeAttribute', node, attr.name)\n })\n // this.viewUpdates.exec()\n }\n private setRefValue(value: string, node: (ODOM.OElement | OComponent) | null) {\n let variable = value.trim();\n this.updateValue(variable, node)\n }\n async handleElementNode(node: ODOM.OElement, options?: { skipSlotted: boolean }) {\n // expand style and classes\n const parentNode = (await node.parentNode())!\n let controlled: 'for' | 'if' | null = null\n // *if directive\n const conditionAttr = node.hasAttribute(\"o-if\") ? \"o-if\" : node.hasAttribute('o-show') ? 'o-show' : null\n if (conditionAttr) {\n const expr = await (node.getAttribute(conditionAttr))!;\n const placeholder = (await OUID.createComment(conditionAttr + \":\" + expr))!;\n const destroy = conditionAttr === 'o-if'\n await parentNode.insertBefore(node, placeholder);\n await node.updates()\n .removeAttribute(conditionAttr)\n .remove().exec()\n\n this.directive({\n type: \"if\",\n expr,\n node,\n placeholder,\n context: this,\n active: undefined,\n destroy\n });\n controlled = 'if'\n return\n }\n\n // *for directive\n if (node.hasAttribute(\"o-for\")) {\n if (controlled === 'if') {\n throw new Error('Can\\'t have o-if and o-for on the same component')\n }\n const expr = (await node.getAttribute(\"o-for\"))!;\n const [item, list] = expr.split(\" of \").map(s => s.trim());\n const placeholder = (await OUID.createComment(\"for:\" + expr))!;\n const key = node.attribute(':key') ?? \"\"\n await parentNode?.insertBefore(node, placeholder);\n await node.updates()\n .removeAttribute(\"o-for\")\n .removeAttribute(':key')\n .remove().exec()\n this.directive({\n type: \"for\",\n item,\n list,\n node,\n placeholder,\n context: this,\n key,\n });\n controlled = 'for'\n return\n }\n const tag = node.tag.toLowerCase();\n const cc = this.resolveTag(tag);\n\n const batches = node.updates();\n // Two-way binding [(model)]\n [...node.attributes].forEach(async attr => {\n if (attr.name === 'o-model') {\n const key = attr.value.trim();\n const event = 'input'\n batches\n .setInputValue(normaliseValue(this.resolve(key,)))\n .addEventListener(event, async (e) => {\n // this.state[key] = (e.target as any).value;\n const value = await (e.target as ODOM.OElement).getProperty('value')\n this.updateValue(key, value)\n })\n this.bind({ node, key, type: \"model\", context: this });\n\n batches.removeAttribute(attr.name);\n }\n else if (attr.name === 'ref') {\n // html element reference handling\n if (!cc) {\n this.setRefValue(attr.value, node)\n }\n }\n });\n\n\n\n\n let props = {} as any, events = {} as any\n\n const { props: p, events: e } = this.componentAttributes(node, this)\n props = p\n events = e\n this.expandStandardAttributes(node)\n // Event binding @(event)=\"fn()\"\n Object.keys(events).forEach(async k => {\n const handler = events[k]\n if (!cc) {\n batches.addEventListener(k, e => {\n if (typeof handler === \"function\") (handler as Function).apply(this.component, [e]);\n });\n }\n batches.removeAttribute('@' + k);\n });\n\n this.viewUpdates.accept(batches)\n\n\n if (cc) {\n await this.mountComponent(node, cc, this, props, events);\n return; // stop scanning original node\n }\n let children = await node.childNodes()\n if (options?.skipSlotted) {\n children = children.filter(c => !c.hasAttribute('slotted'))\n }\n for (const child of children) {\n /// AWAIT??\n await this.render(child, options)\n }\n }\n handleTextNode(node: ODOM.OElement) {\n const txt = node.textContent ?? '';\n if (txt.includes('{{')) {\n this.bind({\n type: 'interpolation',\n node,\n key: '__template__',\n templateFn: compileInterpolated(txt),\n context: this\n });\n }\n }\n collectDepsForBindingsAndDirectives() {\n // 1) bindings\n for (const b of this.bindings) {\n if (b.type === \"model\") {\n // read value\n normaliseValue(this.resolve(b.key))\n } else if (b.type === \"interpolation\") {\n // templateFn calls evalInScope which will read state via resolveScope.get\n b.templateFn(this.resolveScope())\n } else if (b.type === \"attribute\") {\n normaliseValue(this.resolve(b.template!))\n } else if (b.type === \"prop\") {\n normaliseValue(this.resolve(b.template))\n }\n }\n\n // 2) directives (only track their reactive inputs)\n for (const d of this.directives) {\n if (d.type === \"if\") {\n normaliseValue(d.context.evaluateExpression(d.expr!))\n } else if (d.type === \"for\") {\n // list + key expression read\n normaliseValue(d.context.resolve(d.list!))\n if (d.key) {\n // key depends on item + index; we can’t iterate full list here cheaply\n // but at least track list ref itself; the full loop will track deeper during async update\n }\n }\n }\n }\n\n private componentAttributes(node: ODOM.OElement, parentContext: RenderContext | null) {\n const props: Record<string, { name: string, expr?: string | null, value: any }> = {};\n const events: any = {};\n const ignoredAttrs = ['import', 'interface', 'module', 'o-model', 'o-if', 'o-for'];\n [...node.attributes].filter(a => !ignoredAttrs.includes(a.name)).forEach(attr => {\n let name = attr.name\n if (name.startsWith('@')) {\n // attach an event\n const handler = parentContext?.resolve(attr.value)\n if (typeof handler !== 'function') {\n throw new Error('Event handler can only be function')\n }\n name = name.substring(1)\n events[name] = handler\n return\n }\n let expr: string | null = null\n let p: any = attr.value\n if (name.startsWith(':')) {\n expr = attr.value\n name = name.substring(1)\n p = normaliseValue(parentContext?.resolve(attr.value))\n }\n name = toCamelCase(name)\n props[name] = {\n name,\n value: p,\n expr\n };\n });\n return { props, events }\n }\n\n async mountComponent<T extends Record<string, any>, O extends Record<string, string>>(\n hostNode: ODOM.OElement,\n component: OComponentType<T, O>,\n parentContext: RenderContext | null,\n props: Record<string, { name: string, value: any, expr?: string }> = {},\n emits: O = {} as O\n ): Promise<OComponent> {\n this.viewUpdates = this.viewUpdates ?? parentContext?.viewUpdates ?? new ODOM.BatchUpdates(hostNode)\n if (this.mountedComponents.has(hostNode.uid)) return this.mountedComponents.get(hostNode.uid)!;\n // Child context prepared early (but heavy tasks deferred)\n const newCtx = new RenderContext(this.app, {} as OComponent, this);\n newCtx.viewUpdates = this.viewUpdates\n // newCtx.viewUpdates = parentContext?.viewUpdates ?? new ODOM.BatchUpdates(hostNode)\n // Bind reactive props before instance creation (so the first render sees values)\n const handledProps = {} as T;\n let refProp: any\n for (const k of Object.keys(props)) {\n const p = props[k];\n if (p.name === 'ref' && !p.expr) {\n refProp = p;\n continue\n }\n if (p.expr) {\n this.bind({ type: 'prop', node: hostNode, key: k, context: newCtx, template: p.expr });\n }\n handledProps[k as keyof T] = p.value;\n }\n\n // Create instance ASAP (can be a Promise if lazy)\n const instance = await o(component, handledProps, emits);\n newCtx.component = instance;\n newCtx.stack = [];\n this.mountedComponents.set(hostNode.uid, instance);\n if (refProp) {\n this.setRefValue(refProp.value, instance)\n }\n // Minimal initial host setup in a single batch (so the host appears fast)\n {\n const batch = hostNode.updates();\n for (const attr of Object.keys(props)) {\n if (!props[attr].expr) batch.setAttribute(attr, props[attr].value);\n }\n let hostClasses: string[] = (instance as any)['hostClasses'] ?? [];\n if (hostClasses) hostClasses = typeof hostClasses === 'string' ? [hostClasses] : hostClasses;\n hostClasses.push('o-component-host');\n if (hostNode.tag.toLowerCase() !== 'div') hostClasses.push('c-' + hostNode.tag.toLowerCase());\n batch.addClass(...hostClasses);\n this.viewUpdates.accept(batch)\n // await batch.exec();\n }\n\n // Defer costly non-critical decoration to next paint (improves TTI)\n deferMicro(async () => {\n try {\n await instance.decorateHostElement(hostNode);\n } catch { }\n });\n\n // Register dependants in the child registry (cheap, keep sync)\n {\n const dependants = (instance as any)['use'] as Record<string, OComponentType> ?? {};\n for (const d of Object.keys(dependants)) {\n newCtx.componentsRegistry.register(d, dependants[d]);\n }\n }\n\n // Call lifecycle (cheap hook), but keep CSS injection/decorate for afterPaint\n instance.willMount();\n\n // CSS injection can be expensive (style recalcs). Defer unless not cached.\n if (!(component as any)['cssInstance']) {\n const css = instance.style ? instance.style()?.toString() : (instance as any)['css'] as string;\n if (css) {\n // inject now but refcount bump later; this avoids FOUC while still deferring some work\n (component as any)['cssInstance'] ??= await OUID.createComponentStyles(css, false);\n }\n }\n // Refcount bump can be deferred (no visual impact)\n deferMicro(() => {\n const styleInstance = (component as any)['cssInstance'] as (ODOM.OElement | null);\n if (styleInstance) {\n const ref = RenderContext.STYLE_REF.get(styleInstance) ?? 0;\n if (ref === 0) {\n // inject now\n OUID.appendComponentStyles(styleInstance.uid)\n }\n RenderContext.STYLE_REF.set(styleInstance, ref + 1);\n (instance as any)['cssInstance'] = styleInstance;\n }\n });\n\n // Render content: prefer template path for a fast first paint, then hydrate\n // If the component has a custom render(), use it—but avoid blocking on its children.\n let hostChildrenBefore = await hostNode.childNodes(); // will be used for slotting\n if (instance.render) {\n const rendered = await instance.render(newCtx);\n if (rendered) rendered.attachTo(hostNode);\n } else {\n // template string path is generally fastest in a WebView bridge\n await hostNode.setHTML((instance as any)['template'].trim());\n }\n\n // Slot distribution: move nodes first, then hydrate in parallel\n const slots = await hostNode.queryAll('slot');\n if (slots && slots.length) {\n // Move all matching nodes with minimal awaits; hydrate after\n await Promise.all(\n slots\n .filter(s => !s.classes?.includes('hydrated'))\n .map(async slot => {\n const name = slot.attribute('name');\n const toMove = hostChildrenBefore.filter(e => {\n if (!name) return e.type !== 'Element' || !e.hasAttribute('slot');\n return e.type === 'Element' && e.attribute('slot') === name;\n });\n if (!toMove.length) return;\n\n // const batch = new ODOM.BatchActions();\n for (const n of toMove) {\n this.viewUpdates.add('setAttribute', n, 'slotted', 'true');\n this.viewUpdates.add('appendChild', slot, n);\n }\n await this.viewUpdates.exec();\n\n // Hydrate moved nodes in parallel after they’re in place\n await Promise.all(toMove.map(n => this.render(n)));\n })\n );\n }\n\n (instance as any)['_hostElement'] = hostNode;\n instance['parent'] = parentContext?.component ?? undefined;\n instance.provide(RenderContext.PROVIDE_TOKEN, this);\n\n {\n const children = await hostNode.childNodes();\n const CONCURRENCY = 6; // tweak for your WebView; 4-8 is usually sweet\n let i = 0;\n while (i < children.length) {\n const chunk = children.slice(i, i + CONCURRENCY);\n await Promise.all(chunk.map(c => newCtx.render(c, { skipSlotted: true })));\n i += CONCURRENCY;\n }\n // await newCtx.hydradationActions.commit();\n //await newCtx.viewUpdates.exec()\n }\n\n newCtx.viewUpdates.add('addClass', hostNode, 'hydrated')\n this.enqueueMounted(() => {\n try {\n instance.onMounted();\n } catch { }\n // hostNode.hydrate();\n });\n await newCtx.viewUpdates.exec()\n // instance.state.watch(async () => {\n // await Promise.all([\n // newCtx.updateBindings(), newCtx.updateDirectives()])\n // await newCtx.viewUpdates.exec()\n // newCtx.flushMounted()\n // });\n\n // Store stop function on instance so you can stop on unmount\n const runner = effect(\n () => {\n newCtx.collectDepsForBindingsAndDirectives()\n console.log('Effect running!!!!')\n },\n {\n lazy: true,\n scheduler: () => {\n console.log('Effect schedulling!!!!')\n deferMicro(async () => {\n // prevent overlapping async passes (optional but recommended)\n if ((newCtx as any).__updating) return\n ; (newCtx as any).__updating = true\n try {\n await Promise.all([newCtx.updateBindings(), newCtx.updateDirectives()])\n await newCtx.viewUpdates.exec()\n await newCtx.flushMounted()\n } finally {\n ; (newCtx as any).__updating = false\n }\n })\n },\n }\n )\n\n // Run once now to collect deps + paint\n runner()\n ; (instance as any).__effects__ = [() => runner.effect.stop()]\n\n return instance\n }\n async unmountComponent(node: ODOM.OElement) {\n const comp = this.mountedComponents.get(node.uid)\n await node.removeAndRelease()\n if (comp) {\n // emit will unmount\n const styleInstance = (comp as any)['cssInstance'];\n if (styleInstance) {\n const ref = RenderContext.STYLE_REF.get(styleInstance) ?? 1\n if (ref === 1) {\n await OUID.rejectComponentStyles(styleInstance)\n RenderContext.STYLE_REF.delete(styleInstance)\n } else {\n RenderContext.STYLE_REF.set(styleInstance, ref - 1);\n }\n }\n comp.willUnmount();\n const effects = (comp as any).__effects__ as undefined | [(() => void)]\n effects?.forEach(stop => { try { stop() } catch {} })\n ; (comp as any).effects = undefined;\n (comp as any)['_hostElement'] = null;\n (comp as any)['cssInstance'] = null;\n }\n const children = await node.queryAll('*') ?? [];\n for (const child of children) {\n await this.unmountComponent(child)\n }\n this.mountedComponents.delete(node.uid)\n // ??? to do ???\n\n if (node.hasAttribute('ref')) {\n this.setRefValue(node.attribute('ref')!, null)\n }\n }\n}\nexport type Binding =\n | { type: 'model', node: ODOM.OElement, key: string, context: RenderContext }\n | { type: 'interpolation', node: ODOM.OElement, key: string, templateFn: TemplateFn, context: RenderContext }\n | { type: 'attribute', node: ODOM.OElement, key: string, template: string | null, context: RenderContext }\n | { type: 'prop', node: ODOM.OElement, key: string, template: string, context: RenderContext };\n\nexport type Directive = { type: 'if' | 'for', node: ODOM.OElement, expr?: string, placeholder: ODOM.OElement, context: RenderContext, active?: boolean, renderedNode?: ODOM.OElement, list?: string, item?: string, children?: Map<any, { node: ODOM.ONode, ctx: RenderContext }>, key?: string, destroy?: boolean }\nexport async function node<P extends Record<string, any>, O extends Record<string, any>>(component: string, p?: P, children: RenderNode[] = [], emits?: O): Promise<RenderNode> {\n const props = p ?? {} as P\n const el = await OUID.createElement(component, Object.keys(props).reduce((acc, key) => {\n acc[key as keyof P] = props[key as keyof P]\n return acc\n }, {} as P))\n Object.keys(emits ?? {}).forEach(k => {\n el?.addEventListener(k, (e) => {\n const fn = emits![k]\n if (typeof fn === 'function') {\n fn(e)\n }\n });\n })\n return new RenderNode(el!, children)\n\n}\n\nexport function o<P extends Record<string, any>, O extends Record<string, any>>(component: ComponentConstructor<P, O>, props: P, emits?: O): OComponent<P>;\nexport function o<P extends Record<string, any>, O extends Record<string, any>>(component: OComponentType<P, O>, props: P, emits?: O): Promise<OComponent<P>>\nexport function o<P extends Record<string, any>, O extends Record<string, any>>(component: OComponentType<P, O>, props: P, emits?: O): Component<P, O> | Promise<Component<P, O>> {\n if (isLazyLoader(component)) {\n return component().then((c) => createComponent(c.default, props, emits))\n } else {\n return createComponent(component, props, emits);\n }\n}","import { ComponentConstructor, OComponent } from \"./component\";\nimport { RenderContext } from \"./context\";\n\n\n\ntype ProvideFunction<T> = () => T\nexport type Provider<T = any> = {\n value?: T,\n provide?: ProvideFunction<T>\n}\nfunction isProvideFunction<T>(fn: T | ProvideFunction<T>): fn is ProvideFunction<T> {\n return typeof fn === 'function'\n}\nexport interface Plugin<T> {\n install(app: App, options?: T): void\n}\n/** Injection token key */\nexport type InjectionKey = string\n/** Providers type */\nexport type Providers = Map<InjectionKey, Provider>\n/**\n * OUIDesigner App\n */\nexport class App {\n static currentApp: App | null = null\n private providers: Providers = new Map()\n /**\n * Provide a value through a key to all the app globally\n * @param token the registration key\n * @param value the provider value\n */\n provide<T>(token: InjectionKey, value: T | (() => T)): void {\n if (this.providers.has(token)) {\n console.warn(`[OUID] - Provider ${token} already exists`)\n return\n }\n this.providers.set(token, isProvideFunction(value) ? { provide: value } : { value: value })\n }\n /**\n * Get globally a provider through a given key\n * @param token the key to look up globally\n * @returns a provider value\n */\n inject<T>(token: InjectionKey): T | undefined {\n return this.providers.get(token)?.value as T\n }\n /**\n * Register a plugin to be used by this app\n * @param plugin the plugin to register\n * @returns `this` App instance\n */\n use<T>(plugin: Plugin<T>, options?: T) {\n plugin.install(this, options)\n return this\n }\n constructor(private root: ComponentConstructor<any, any>, private options?: {css?: string}) {\n App.currentApp = this\n }\n /**\n * Mount the App in a host element\n * @param selector the host element where the app's root component should be mounted\n */\n async mount(selector: string) {\n if((!(globalThis as any).__OUI_PUR_JS_CONTEXT__)) {\n return\n }\n if(this.options?.css) {\n await OUID.createComponentStyles(this.options.css)\n }\n await OUID.createComponentStyles(`\n * {\n ${selector} * {\n visibility: hidden;\n }\n ${selector} *.hydrated {\n visibility: inherit;\n }\n .oui-hidden {\n display: none !important;\n }\n `)\n provide(RenderContext.MOUNTED_COMPONENTS_TOKEN, new Map())\n const host = await OUID.query(selector)\n if (!host) throw new Error(\"No selector found for \" + selector)\n\n const globalContext = new RenderContext(this, {} as OComponent, null)\n globalContext.mountComponent(host, this.root, null).then(async () => {\n globalContext.updateBindings()\n globalContext.updateDirectives()\n // console.log('[OUID] - App mounted successfully')\n await globalContext.flushMounted();\n })\n }\n}\n\n/**\n * Provide a value through a key to all the app globally\n * @param token the registration key\n * @param value the provider value\n */\nexport function provide<T>(token: InjectionKey, value: T | (() => T)): void {\n App.currentApp?.provide(token, value)\n}\n/**\n * Get globally a provider through a given key\n * @param token the key to look up globally\n * @returns a provider value\n */\nexport function inject<T>(token: InjectionKey): T | undefined {\n return App.currentApp?.inject(token) ?? undefined\n}","import RouteParser from 'route-parser'\nimport { App, inject, Plugin } from '../app'\nimport { Component, OComponent, OComponentType } from '../component'\nimport { RenderContext } from '../context'\nimport { ODOM, OUID } from '../interfaces/bridge'\nimport { delay, deferMicro } from '../helpers'\n/**\n * Component responsible for display routes\n * Usage: `<o-router></o-router>`\n */\n@Component({\n tag: 'o-router',\n template: `\n <div id=\"router-view\"></div>\n `,\n css: `\n #router-view {\n position: relative;\n min-height: 100vh;\n width: 100%;\n overflow: hidden;\n }\n\n .route-view {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n will-change: transform, opacity;\n background: var(--o-background, #FEFEFE)\n }\n\n .route-hidden {\n display: none;\n }\n\n /* shared transition */\n .route-transitioning {\n transition: transform 0.25s ease-out;\n z-index: 999\n }\n\n /* PUSH: new page comes from right */\n .route-push-start {\n transform: translateX(100%);\n }\n .route-push-end {\n transform: translateX(0%);\n }\n\n /* POP: current page goes to right, revealing underneath */\n .route-pop-start {\n transform: translateX(0%);\n }\n .route-pop-end {\n transform: translateX(100%);\n }\n `\n})\nexport class ORouter extends OComponent {\n private router: Router | undefined = undefined\n willMount(): void {\n }\n onMounted(): void {\n this.router = useRouter()\n this.router?.bind(this).then((handler) => {\n handler?.();\n })\n }\n willUnmount(): void {\n this.router?.unbind();\n }\n}\nexport const ROUTER_INJECTION_TOKEN = \"OROUTER_TOKEN\"\nexport const ACTIVE_ROUTE_TOKEN = \"ACTIVE_ROUTE\"\ninterface ORouterHistoryState {\n navIndex: number;\n}\ntype NavMode = 'push' | 'pop';\n\nconst ROUTE_SLIDE_DURATION = 250;\n\nexport interface Route {\n path: string\n name: string\n component?: OComponentType<any, any>,\n redirectTo?: string | {name: string}\n transition?: 'fade' | 'slide';\n}\n\nexport function useRouter(): Router | undefined {\n return inject<Router>(ROUTER_INJECTION_TOKEN)\n}\nexport function createRouter(routes: Routes): Router {\n return new Router(routes)\n}\nexport type Routes = Array<Route>\n\ntype MatchedRoute = { route: Route, params: Record<string, any>, query: Record<string, string>, parser: RouteParser }\nexport type Promised<T> = T | Promise<T>\nexport type RouteLocationNamed = { name: string, params?: Record<string, any> }\nexport type RouteGuardReturn = void | boolean | RouteLocationNamed\nexport type RouteGaurdFunction = (to: { url: string, path: string, name: string }, from?: { query: Record<string, string>, params: Record<string, string> }) => Promised<RouteGuardReturn>\nexport interface RouteGuard {\n type: 'before' | 'after',\n fn: RouteGaurdFunction\n}\n\nfunction activate(inst: OComponent | null) {\n if (!inst) return;\n (inst as any).__isActive = true;\n if (typeof inst.onActivated === 'function') {\n inst.onActivated();\n }\n\n}\n\nfunction deactivate(inst: OComponent | null) {\n if (!inst) return;\n (inst as any).__isActive = false;\n if (typeof inst.onDeactivated === 'function') {\n inst.onDeactivated();\n }\n\n}\ntype CompiledRoute = { route: Route; parser: RouteParser };\nexport class Router implements Plugin<any> {\n private windowObject: ODOM.OObject | null = null\n private guards: Array<RouteGuard> = []\n private eventRegistration: string | null = null\n // NEW:\n private compiled: CompiledRoute[];\n private outletEl: ODOM.OElement | null = null;\n\n // keep-alive cache (optional, bounded):\n private stack: { host: ODOM.OElement; ctx: RenderContext; inst: OComponent | null }[] = [];\n // private keepAliveLimit = 1;\n private pendingNav: Promise<void> | null = null;\n private lastDirection: 'forward' | 'back' | 'none' = 'none';\n private historyIndex = 0;\n\n constructor(public routes: Routes) {\n this.compiled = routes.map(r => ({ route: r, parser: new RouteParser(r.path) }));\n }\n\n install(app: App) {\n app.provide(ROUTER_INJECTION_TOKEN, this)\n OUID.registerComponent('o-router', ORouter)\n }\n resolveByName(name: string): MatchedRoute | null {\n for (const c of this.compiled) {\n if (c.route.name === name) return { route: c.route, params: {}, query: {}, parser: c.parser};\n }\n return null;\n }\n resolve(url: string): MatchedRoute | null {\n const [path, queryStr = ''] = url.split('?');\n const query: Record<string, string> = queryStr\n ? queryStr.split('&').reduce((acc, kv) => {\n const [k, v = ''] = kv.split('=');\n if (k) acc[k] = decodeURIComponent(v);\n return acc;\n }, {} as Record<string, string>)\n : {};\n\n for (const c of this.compiled) {\n const params = c.parser.match(path);\n if (params) {\n if(c.route.redirectTo) {\n // should redirect to another route\n return typeof (c.route.redirectTo) === 'string' ? this.resolve(c.route.redirectTo) : this.resolveByName(c.route.redirectTo.name)\n }\n return { route: c.route, params, query, parser: c.parser };\n }\n }\n return null;\n }\n replace(options: { name?: string, path?: string, params?: Record<string, string>, absolute?: boolean }) {\n this.push(options, true)\n }\n push(options: { name?: string, path?: string, params?: Record<string, string>, absolute?: boolean }, replace: boolean = false): void {\n if (!options.path && !options.name) {\n console.warn('[OUID-Router]: no path or name provided to push')\n return\n }\n this.lastDirection = 'forward';\n const dispatchPushEvent = (path: string, fire: boolean = true) => {\n // this.historyIndex;\n const newState: ORouterHistoryState = { navIndex: replace ? this.historyIndex : this.historyIndex+1 };\n if(replace) {\n this.windowObject?.invoke('history.replaceState', newState, '', path)\n } else {\n this.windowObject?.invoke('history.pushState', newState, '', path)\n }\n if (fire) {\n this.windowObject?.dispatchEvent('popstate', 'PopStateEvent', { state: newState })\n }\n }\n if (options.name) {\n const matched = this.resolveByName(options.name)\n if (!matched) {\n console.warn('[OUID-Router]: No matched route name found')\n return\n }\n const path = matched.parser.reverse(options.params ?? {})\n if(path) {\n dispatchPushEvent(path)\n }\n return\n }\n if (options.absolute && options.path) {\n // this.windowObject?.invoke('history.pushState', {}, '', options.path)\n dispatchPushEvent(options.path, false)\n }\n if (options.path) {\n // first try to match direct path\n const matched = this.resolve(options.path)\n if (matched) {\n const path = matched.parser.reverse(options.params ?? {})\n if(path) {\n dispatchPushEvent(path)\n }\n return\n }\n }\n\n }\n async pop(): Promise<void> {\n this.lastDirection = 'back';\n // this.historyIndex--;\n this.windowObject?.invoke('history.back')\n const newState: ORouterHistoryState = { navIndex: this.historyIndex - 1 };\n await this.windowObject?.invoke('history.pushState', newState, '')\n // this.windowObject?.dispatchEvent('popstate', 'PopStateEvent', { state: newState })\n }\n\n private async beforeRouteGoing(to: { url: string, path: string, name: string }, from: { params: Record<string, any>, query: Record<string, any> }): Promise<RouteGuardReturn> {\n for (const guard of this.guards.filter(g => g.type === 'before')) {\n const res = await guard.fn(to, from)\n if (res) {\n return res\n }\n }\n return\n }\n private async afterRouteGoing(to: { url: string, path: string, name: string }, from: { params: Record<string, any>, query: Record<string, any> }): Promise<RouteGuardReturn> {\n for (const guard of this.guards.filter(g => g.type === 'after')) {\n const res = await guard.fn(to, from)\n if (res) {\n return res\n }\n }\n return\n }\n\n async bind(component: ORouter): Promise<() => void> {\n this.windowObject = await OUID.acquireObject('window');\n\n const handler = async (pathOverride?: string) => {\n if (!this.windowObject) this.windowObject = await OUID.acquireObject('window');\n\n const path = pathOverride ?? (await this.windowObject!.getProperty<string>('location.pathname'))!;\n const matched = this.resolve(path);\n\n if (!matched) {\n console.warn(`[Router] No route found for: ${path}`);\n return;\n }\n\n const ctx = component.inject<RenderContext>(RenderContext.PROVIDE_TOKEN);\n if (!this.outletEl) this.outletEl = await ctx!.hostElement.query(\"#router-view\");\n const outlet = this.outletEl;\n if (!outlet) return;\n\n // guards BEFORE anything heavy\n const guarded = await this.beforeRouteGoing(\n { url: path, path, name: matched.route.name },\n component.inject(ACTIVE_ROUTE_TOKEN) as any\n );\n if (guarded) {\n if (typeof guarded === 'object' && 'name' in guarded) {\n this.push({ name: guarded.name, params: guarded.params });\n }\n return;\n }\n\n component.provide(ACTIVE_ROUTE_TOKEN, { params: matched.params, query: matched.query });\n\n // current host & instance\n const currentChildren = await outlet.childNodes();\n const currentHost = currentChildren[currentChildren.length - 1] ?? null;\n const currentInst = currentHost ? ctx!.getMountedComponent(currentHost) ?? null : null;\n\n const mode = this.getNavMode(); // 'push' or 'pop'\n\n let nextHost: ODOM.OElement;\n let nextInst: OComponent;\n // get it from the stack\n const stackLength = this.stack.length\n const cached = this.stack[stackLength - 2]\n if(this.lastDirection === 'back' && cached) {\n \n // --- CACHED PATH ---\n nextHost = cached.host;\n nextInst = cached.inst!;\n\n // ensure cached host is attached and on top\n const ops = outlet.updates();\n if (!currentChildren.some(c => c.uid === nextHost.uid)) {\n ops.add('appendChild', outlet, nextHost);\n } else {\n // ensure it's last child => on top (for push) or at least present (for pop)\n ops.add('appendChild', outlet, nextHost);\n }\n // ops.add(() => currentHost.addClass('route-hidden'));\n ops.add('removeClass', nextHost, 'route-hidden');\n await ops.exec();\n\n await Promise.all([\n cached.ctx.updateBindings(),\n cached.ctx.updateDirectives()\n ]);\n \n \n } else {\n // --- COLD PATH ---\n const staging = (await OUID.createElement('div', { class: 'route-view route-hidden' }))!;\n await outlet.appendChild(staging);\n \n const instance = await ctx!.mountComponent<any, any>(staging, matched.route.component!, ctx!);\n nextHost = staging;\n nextInst = instance;\n ctx?.flushMounted()\n if(this.lastDirection === 'forward') {\n // push on stack\n this.stack.push({host: staging, ctx: ctx!, inst: instance})\n }\n }\n\n // --- RUN ANIMATION ---\n if (mode === 'push') {\n // current stays, next slides on top\n await this.runTransitionPush(outlet, currentHost, nextHost);\n } else if (mode === 'pop') {\n // previous is nextHost (already attached), current slides away\n if (currentHost) {\n await this.runTransitionPop(outlet, currentHost, nextHost);\n }\n }\n\n // --- LIFECYCLE & CLEANUP ---\n\n // decide if currentHost stays in keepAlive or is removed\n if (currentHost && currentInst && this.lastDirection === 'back') {\n this.stack.pop()\n deactivate(currentInst);\n await ctx!.unmountComponent(currentHost);\n }\n\n activate(nextInst);\n\n await this.afterRouteGoing(\n { url: path, path, name: matched.route.name },\n component.inject(ACTIVE_ROUTE_TOKEN) as any\n );\n\n await deferMicro();\n };\n\n const run = async (event: any) => {\n const path = (await this.windowObject!.getProperty<string>('location.pathname'))!;\n if (this.pendingNav) return this.pendingNav;\n this.pendingNav = (async () => {\n try {\n const state = event?.state || await this.windowObject!.getProperty('history.state');\n \n let newIndex = 0;\n if (state && typeof state.navIndex === 'number') {\n newIndex = state.navIndex;\n }\n \n if (newIndex > this.historyIndex) {\n this.lastDirection = 'forward';\n } else if (newIndex < this.historyIndex) {\n this.lastDirection = 'back';\n } else {\n this.lastDirection = 'none';\n }\n \n this.historyIndex = newIndex;\n await handler(path);\n } finally { this.pendingNav = null; }\n })();\n return this.pendingNav;\n };\n\n const path = (await this.windowObject!.getProperty<string>('location.pathname'))!;\n const state = await this.windowObject!.getProperty<any>('history.state');\n if (!state || typeof state.navIndex !== 'number') {\n await this.windowObject!.invoke('history.replaceState', { navIndex: this.historyIndex }, '', path);\n }\n\n const id = await this.windowObject!.addEventListener('popstate', run);\n this.eventRegistration = id;\n return handler;\n }\n\n unbind() {\n if (this.eventRegistration) {\n this.windowObject?.dettachEventListener(this.eventRegistration)\n }\n }\n private async runTransitionPush(\n outlet: ODOM.OElement,\n currentHost: ODOM.OElement | null,\n nextHost: ODOM.OElement\n ) {\n if (!currentHost) {\n // no animation, just show\n const cleanup = nextHost.updates();\n await cleanup\n .removeClass('route-hidden', 'route-transitioning', 'route-push-start')\n .addClass('route-view', 'route-push-end').exec()\n return\n }\n const baseOps = nextHost.updates();\n baseOps.addClass('route-view');\n if (currentHost) baseOps.add('addClass', currentHost, 'route-view');\n // currentHost stays as-is, visible; nextHost starts off-screen\n baseOps.removeClass('route-hidden', 'route-push-end', 'route-pop-end').addClass('route-push-start');\n await baseOps.exec();\n\n // let CSS see starting transform\n await new Promise<void>(resolve => { OUID.requestAnimationFrame(() => resolve()); });\n const animOps = nextHost.updates();\n animOps.addClass('route-transitioning')\n .removeClass('route-push-start')\n .addClass('route-push-end'); // 100% -> 0\n await animOps.exec();\n\n await delay(ROUTE_SLIDE_DURATION + 40);\n\n // cleanup\n const cleanup = nextHost.updates();\n cleanup.removeClass('route-transitioning', 'route-push-start');\n if (currentHost) cleanup.add('addClass', currentHost, 'route-hidden');\n await cleanup.exec();\n }\n\n private async runTransitionPop(\n outlet: ODOM.OElement,\n currentHost: ODOM.OElement,\n previousHost: ODOM.OElement\n ) {\n const baseOps = currentHost.updates();\n baseOps.addClass('route-view');\n baseOps.add('addClass', previousHost, 'route-view');\n baseOps.add('removeClass', previousHost, 'route-hidden');\n // current starts at 0, will go to 100%\n baseOps.addClass('route-pop-start').removeClass('route-push-end', 'route-pop-end');\n await baseOps.exec();\n\n await new Promise<void>(resolve => { OUID.requestAnimationFrame(() => resolve()); });\n\n const animOps = currentHost.updates();\n animOps.addClass('route-transitioning');\n animOps.removeClass('route-pop-start').addClass('route-pop-end'); // 0 -> 100%\n await animOps.exec();\n\n await delay(ROUTE_SLIDE_DURATION + 40);\n\n const cleanup = currentHost.updates();\n cleanup.addClass('route-hidden').removeClass('route-transitioning', 'route-pop-start');\n await cleanup.exec();\n }\n private getNavMode(): NavMode {\n return this.lastDirection === 'back' ? 'pop' : 'push';\n }\n beforeEach(fn: RouteGaurdFunction): (() => void) {\n const guard = {\n fn,\n type: 'before'\n } as RouteGuard\n this.guards.push(guard)\n return () => {\n this.guards.splice(this.guards.indexOf(guard))\n }\n }\n afterEach(fn: RouteGaurdFunction): (() => void) {\n const guard = {\n fn,\n type: 'after'\n } as RouteGuard\n this.guards.push(guard)\n return () => {\n this.guards.splice(this.guards.indexOf(guard))\n }\n }\n\n}\n","import { OComponent, RenderNode, StyleData } from \"../component\";\nimport { RenderContext } from \"../context\";\n\n\nexport class OIcon extends OComponent {\n render(_: RenderContext): RenderNode {\n return RenderNode.of(`<i class=\"o-icon\"><slot></slot></i>`)\n }\n style(): StyleData | null {\n return StyleData.of({\n 'i': `\n display: inline-block;\n width: 1em;\n height: 1em;\n vertical-align: -0.15em;\n overflow: hidden;\n `\n })\n }\n} \n\n","import { componentsRegistry } from './src/registry'\nimport { OComponent } from './src/component'\n\nexport * from './src/component'\nexport * from './src/app'\nexport * from './src/emits'\nexport * from './src/state'\nexport * from './src/context'\nexport * from './src/router/Router'\nexport * from './src/interfaces/bridge'\nexport * from './src/components/Icon'\n\nexport function components(): Record<string, OComponent<any, any>> {\n const arr = componentsRegistry.getAll()\n return arr.reduce((acc, [key, value]) => {\n acc[key] = value\n return acc\n }, {} as Record<string, any>)\n}\n"]}
|