ouider 0.0.7 → 0.0.8
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/dom/dom.cjs +1 -1
- package/dist/dom/dom.cjs.map +1 -1
- package/dist/dom/dom.js +1 -1
- package/dist/dom/dom.js.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.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","warn","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","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","onMounted","willMount","willUnmount","provide","inject","decorateHostElement","hostElement","Promise","resolve","_OComponent","generateUIID","name","Math","floor","random","ODOM","_b","_c","_d","_e","BatchActions","actions","exec","commit","add","action","all","map","a","BatchUpdates","operations","promises","op","fn","apply","error","append","addEventListener","callback","setProperty","dettachEventListener","cbId","invoke","dispatchEvent","eventName","eventClass","initDict","addClass","tokens","removeClass","setAttribute","removeAttribute","removeChild","remove","removeAndRelease","release","html","replaceChildNode","replaceWith","after","setInnerText","text","setContentText","insertBefore","element","setInputValue","setStyle","OObject","uid","OUID","call","getProperty","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","res","getAttributeNames","parentNode","inputValue","hydrated","hydrate","query","selector","filter","queryAll","updates","Native","clazz","fnName","descriptor","thisInstance","result","OUIDBridge","callbacks","DOM_EVENT_LISTENERS","timers","_config","subscribe","id","cb","success","JSON","parse","config","conf","rej","WebOUID","stringify","registerComponent","unregisterComponent","globalThis","nodeId","nodes","n","createElement","createComment","injectComponentStyles","rejectComponentStyles","cssNode","getOObject","acquireObject","delay","setInterval","clearInterval","fetch","url","input","encodeAs","_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","create","cur","prototype","getOwnPropertyNames","startsWith","endsWith","desc","getOwnPropertyDescriptor","undefined","bind","evalInScope","expr","scope","compiled","Function","compileInterpolated","parts","i","open","slice","close","trim","e","RenderContext","app","component","parentContext","frames","bindings","directives","mountedComponents","updatingDirectives","updatingBindings","_stack","flatStack","hydradationActions","f","stack","binding","directive","evaluateExpression","strict","additionFrames","stateObj","methodsView","_t","prop","some","updateValue","firstPart","split","frame","unshift","assign","pop","shift","resolveTag","ctx","updateBindings","root","b","updateBinding","context","s","templateFn","expandClass","expandStyle","updateDirectives","d","active","renderedNode","destroy","unmountComponent","clone","render","placeholder","oldChildren","newChildren","keyFn","val","idx","item","arr","list","domOps","YIELD_EVERY","opsSinceYield","newHydrations","last","entry","anchor","next","BURST","chunk","skipSlotted","handleTextNode","handleElementNode","batch","styleString","expandStandardAttributes","batches","substring","controlled","conditionAttr","cc","componentAttributes","mountComponent","txt","includes","ignoredAttrs","hostNode","newCtx","handledProps","instance","dependants","styleInstance","ref","STYLE_REF","hostChildrenBefore","rendered","slots","slot","toMove","PROVIDE_TOKEN","CONCURRENCY","__publicField","_RenderContext","el","reduce","acc","default","isProvideFunction","App","providers","currentApp","token","plugin","install","mount","__OUI_PUR_JS_CONTEXT__","globalContext","_App","ORouter","router","useRouter","unbind","_ORouter","ROUTER_INJECTION_TOKEN","ACTIVE_ROUTE_TOKEN","createRouter","routes","Router","generatePath","route","params","RouteParser","reverse","windowObject","guards","eventRegistration","parser","coll","tmps","decodeURIComponent","match","absolute","beforeRouteGoing","to","guard","g","afterRouteGoing","matched","guarded","outlet","beforeEach","afterEach","_Router","OIcon","_OIcon"],"mappings":"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","file":"index.js","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 console.warn(`[OUID] - ${key} component already registered`)\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 }\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>(proxify(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) clearTimeout(this.timer);\n }\n\n this.debounceTime = now;\n\n this.timer = 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 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 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","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 export class BatchUpdates {\n private operations: ({ fn: keyof OElement, args: any[] } | (() => void))[] = []\n constructor(private node: OElement) { }\n async exec(): Promise<any> {\n const promises = this.operations.map(op => {\n if (typeof op === 'object') {\n return (this.node[op.fn as keyof OElement] as Function).apply(this.node, op.args)\n } else {\n return Promise.resolve(op())\n }\n })\n try {\n await Promise.all(promises)\n } catch (error) {\n console.error('Error while batch updates')\n }\n }\n private append(fn: keyof OElement, ...args: any[]): BatchUpdates {\n this.operations.push({ fn, args })\n return this\n }\n add(fn: () => void) {\n this.operations.push(fn)\n return this\n }\n addEventListener(event: string, callback: (...args: any[]) => void) {\n return this.append('addEventListener', event, callback)\n }\n setProperty(key: string, value: string) {\n return this.append('setAttribute', key, value)\n }\n dettachEventListener(event: string, cbId: string) {\n return this.append('dettachEventListener', event, cbId)\n }\n invoke(fn: string, ...args: any[]) {\n return this.append('invoke', fn, ...args)\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)\n }\n removeChild(child: ONode) {\n return this.append('removeChild', child)\n }\n remove() {\n return this.append('remove')\n }\n removeAndRelease() {\n return this.append('removeAndRelease')\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)\n }\n after(node: ONode) {\n return this.append('after', node)\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(element: ONode, node: ONode) {\n return this.append('insertBefore', element, node)\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 async addEventListener(event: string, callback: (...args: any[]) => void): Promise<string> {\n return OUID.addEventListener(this, event, callback)\n }\n async dettachEventListener(event: string, cbId: string) {\n await OUID.dettachEventListener(this, event, cbId)\n }\n async invoke(fn: string, ...args: any[]) {\n await OUID.call('invokeObjectMethod', this.uid, fn, ...args)\n }\n async getProperty<T>(name: string): Promise<T | null> {\n return await OUID.call<T>('getObjectProperty', this.uid, name)\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 }\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: ONode) {\n super(node.uid, node.tag)\n for (const k in node) {\n (this as any)[k] = node[k as keyof ONode]\n }\n this.attributes ??= []\n this.classes ??= []\n this.style ??= \"\"\n }\n }\n export class OElement extends ONode {\n private _hydrated: boolean = false\n constructor(node: ONode) {\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('removeChild', 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(node: ONode): Promise<void> {\n await OUID.call('insertAfter', this.uid, node.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(element: ONode, node: 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(value: string): Promise<string> {\n return await OUID.call('inputValue', this.uid, value) ?? ''\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 async release(): Promise<void> {\n await OUID.call('releaseNode', this.uid)\n }\n async setStyle(key: string, value: any) {\n await OUID.call('setStyle', this.uid, key, value)\n }\n updates(): BatchUpdates {\n return new BatchUpdates(this)\n }\n }\n}\n\nexport function Native() {\n return function (clazz: any, fnName: string, descriptor: { value: Function } | Record<string, any>) {\n const orignalFunction = descriptor.value\n // return a new function thae forward call toward the native bridge\n descriptor.value = async (...args: any) => {\n const thisInstance = args[0]\n try {\n const result = await OUID.invoke(fnName, [{ props: thisInstance['getSafePropsForNative'], }])\n thisInstance['setSafePropsFromNative']\n } catch (error) {\n console.error('Failed to invoke native function')\n }\n\n }\n }\n}\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 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 console.error('Failure:', id, data)\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 if (cb) {\n // this.callbacks.delete(id)\n const args = JSON.parse(data)\n const event = args[1]\n if (event) {\n event['target'] = event?.target ? new ODOM.OElement(event.target) : null\n }\n return cb(event)\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', event: string, callback: (...args: any[]) => void): 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)\n return cbId\n }\n async dettachEventListener(node: ODOM.OObject | 'window' | 'document', event: string, cbId: string) {\n this.DOM_EVENT_LISTENERS.delete(cbId)\n await OUID.call('dettachEventListener', typeof node == 'string' ? node : node.uid, cbId, event)\n }\n\n\n async injectComponentStyles(css: string): Promise<ODOM.OElement | null> {\n const node = await OUID.call<ODOM.OElement>('injectComponentStyles', css)\n return node ? new ODOM.OElement(node) : null;\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 async fetch(\n url: string,\n input: RequestData,\n encodeAs: \"json\" | \"text\" | \"base64\" = \"json\"\n ): Promise<any> {\n return await OUID.call(\"fetch\", url, input, encodeAs);\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}","import { Component, ComponentConstructor, createComponent, OComponent, OComponentType, RenderNode } from \"./component\";\nimport { App } 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 = 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 STYLE_REF = new WeakMap<any, number>()\n private bindings: Binding[] = []\n private directives: Directive[] = []\n private mountedComponents: WeakMap<any, OComponent> = new WeakMap()\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 hydradationActions = new ODOM.BatchActions()\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 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 resolve(key: string | null | undefined, strict: boolean = true, ...additionFrames: Record<string, any>[]) {\n if (!key) return undefined;\n\n const stateObj = this.component.state?.value ?? {};\n const methodsView = getMethodsView(stateObj);\n\n const scope = 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 (additionFrames[i] as any)[prop];\n }\n if (prop in this.flatStack) return (this.flatStack as any)[prop];\n if (prop in methodsView) return (methodsView as any)[prop];\n return (stateObj as any)[prop];\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 try {\n return evalInScope(key, scope);\n } catch (error) {\n console.log(this, key);\n console.error(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 const firstPart = key.split(/[\\.\\[]/)[0];\n if (firstPart in this.component) {\n this.resolve(`this.${key}=__o_model_value__`, true, { '__o_model_value__': value });\n } else {\n this.resolve(`${key}=__o_model_value__`, true, { '__o_model_value__': value });\n }\n this.component.state.didChange(firstPart 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(updates?: ODOM.BatchActions): Promise<void> {\n if (this.updatingBindings) return;\n const root = !updates;\n updates = updates ?? new ODOM.BatchActions();\n\n this.updatingBindings = true;\n for (const b of this.bindings) this.updateBinding(b, updates);\n this.updatingBindings = false;\n\n if (root) await updates.commit();\n }\n updateBinding(binding: Binding, updates: ODOM.BatchActions): 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({\n ...this.flatStack,\n ...getMethodsView(this.component.state?.value ?? {}),\n ...(this.component.state?.value ?? {})\n });\n await binding.node.setContentText(s);\n });\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 updates.add(() => 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 }\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 binding.context.updateBindings();\n binding.context.updateDirectives();\n } catch (error) {\n console.error(error);\n }\n return;\n }\n }\n // --- Directives ---\n async updateDirectives(updates?: ODOM.BatchActions) {\n if (this.updatingDirectives) {\n return\n }\n const root = !updates\n this.updatingDirectives = true\n updates = updates ?? new ODOM.BatchActions()\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.node)\n await d.renderedNode.removeAndRelease()\n } else {\n await d.renderedNode.addClass('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 await d.context.hydradationActions.commit()\n } else {\n await renderedNode.removeClass(\"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, true, { [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 // Queue of async hydrations for new rows (run in small parallel bursts after DOM ops)\n const newHydrations: Array<() => Promise<void>> = [];\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 domOps.add(async () => {\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(updates), ctx.updateDirectives(updates)]);\n } else {\n // brand new row: create ctx + clone; avoid immediate DOM awaits\n ctx = new RenderContext(this.app, this.component, this);\n ctx.hydradationActions = this.hydradationActions;\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 newHydrations.push(async () => {\n await ctx.render(node);\n await ctx.updateDirectives(updates);\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 for (const [key, entry] of oldChildren.entries()) {\n if (!newChildren.has(key)) {\n this.unmountComponent(entry.node);\n domOps.add(() => entry.node.removeAndRelease());\n }\n }\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 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 console.warn(\"Unknown node\", node)\n }\n const batch = new ODOM.BatchActions()\n await Promise.all([this.updateBindings(batch), this.updateDirectives(batch)])\n batch.commit()\n this.hydradationActions.add(() => node.hydrate())\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 }\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 }\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 batches.removeAttribute(attr.name)\n })\n batches.exec()\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(placeholder, node);\n await node.updates()\n .removeAttribute(conditionAttr)\n .remove()\n .exec()\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(placeholder, node);\n await node.updates()\n .removeAttribute(\"o-for\")\n .removeAttribute(':key')\n .remove()\n .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 if (node.tag === \"input\" || node.tag === \"textarea\") {\n batches\n .setInputValue(normaliseValue(this.resolve(key,)))\n .addEventListener(\"input\", 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 });\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 await batches.exec()\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, true)\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) {\n if (this.mountedComponents.has(hostNode)) return;\n\n // Child context prepared early (but heavy tasks deferred)\n const newCtx = new RenderContext(this.app, {} as OComponent, this);\n\n // Bind reactive props before instance creation (so the first render sees values)\n const handledProps = {} as T;\n for (const k of Object.keys(props)) {\n const p = props[k];\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, 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 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.injectComponentStyles(css);\n }\n }\n // Refcount bump can be deferred (no visual impact)\n deferMicro(() => {\n const styleInstance = (component as any)['cssInstance'];\n if (styleInstance) {\n const ref = RenderContext.STYLE_REF.get(styleInstance) ?? 0;\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 batch.add(() => n.setAttribute('slotted', 'true'));\n batch.add(() => slot.appendChild(n));\n }\n await batch.commit();\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 }\n\n // Post-mount lifecycle after first paint\n deferMicro(() => {\n try { instance.onMounted(); } catch {}\n });\n\n // Use your debounced State to coalesce updates; keep a single commit per tick\n instance.state.watch(() => {\n const batch = new ODOM.BatchActions();\n newCtx.updateBindings(batch);\n newCtx.updateDirectives(batch);\n batch.commit();\n });\n}\n async unmountComponent(node: ODOM.OElement) {\n const comp = this.mountedComponents.get(node)\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)\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.injectComponentStyles(this.options.css)\n }\n await OUID.injectComponentStyles(`\n * {\n ${selector} * {\n visibility: hidden;\n }\n ${selector} *.hydrated {\n visibility: inherit;\n }\n .oui-hidden {\n display: none !important;\n }\n `)\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(() => {\n globalContext.updateBindings()\n globalContext.updateDirectives()\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 } from 'src/interfaces/bridge'\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 height: 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\"\nexport interface Route {\n path: string\n name: string\n component?: OComponentType<any, any>,\n redirectTo?: string\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>\nfunction generatePath(route: Route, params: Record<string, string>): string {\n let path = new RouteParser(route.path!).reverse(params)\n if (path === false) return \"\"\n return path\n}\ntype MatchedRoute = { route: Route, params: Record<string, any>, query: Record<string, string> }\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}\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 constructor(public routes: Routes) {\n }\n install(app: App) {\n app.provide(ROUTER_INJECTION_TOKEN, this)\n OUID.registerComponent('o-router', ORouter)\n }\n resolve(path: string): MatchedRoute | null {\n const parser = new RouteParser(path)\n const query: Record<string, string> = path.split('?').reverse()[0].split('&').reduce((coll, value) => {\n const tmps = value.split('=')\n coll[tmps[0]] = decodeURIComponent(tmps[1])\n return coll\n }, {} as Record<string, any>)\n for (const r of this.routes) {\n const match = parser.match(r.path)\n if (match) {\n return {\n route: r,\n params: match,\n query\n }\n }\n }\n return null\n }\n push(options: { name?: string, path?: string, params?: Record<string, string>, absolute?: boolean }): void {\n if (!options.path && !options.name) {\n console.warn('[OUID-Router]: no path or name provided to push')\n return\n }\n\n if (options.name) {\n const route = this.routes.find(r => r.name === options.name)\n if (!route) {\n console.warn('[OUID-Router]: No matched route name found')\n return\n }\n const path = generatePath(route, options.params ?? {})\n this.windowObject?.invoke('history.pushState', {}, '', path)\n this.windowObject?.dispatchEvent('popstate', 'PopStateEvent', {state: {}})\n return\n }\n if (options.absolute && options.path) {\n this.windowObject?.invoke('history.pushState', {}, '', options.path)\n }\n if (options.path) {\n // first try to match direct path\n const route = this.routes.find(r => r.path === options.path)\n if (route) {\n const path = generatePath(route, options.params ?? {})\n this.windowObject?.invoke('history.pushState', {}, '', path)\n this.windowObject?.dispatchEvent('popstate', 'PopStateEvent', {state: {}})\n return\n }\n }\n\n }\n pop(): void {\n this.windowObject?.invoke('history.back')\n this.windowObject?.dispatchEvent('popstate', 'PopStateEvent', {state: {}})\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 const handler = async () => {\n const path = (await this.windowObject?.getProperty<string>('location.pathname'))! // await OUID.currentPath();\n const matched = this.resolve(path);\n if (!matched) {\n console.warn(`[Router] No route found for: ${path}`);\n return;\n }\n const guarded = await this.beforeRouteGoing({url: path, path, name: matched.route.name}, component.inject(ACTIVE_ROUTE_TOKEN) as any)\n if (guarded) {\n if(typeof guarded === 'object' && 'name' in guarded) {\n // redirection\n this.push({name: guarded.name, params: guarded.params})\n }\n return;\n }\n const context = component.inject<RenderContext>(RenderContext.PROVIDE_TOKEN)\n const outlet = await context?.hostElement.query(\"#router-view\");\n if (!outlet) return;\n // outlet.innerHTML = \"\"; // clear previous\n component.provide(ACTIVE_ROUTE_TOKEN, {\n params: matched.params,\n query: matched.query\n })\n await context?.mountComponent<any, any>(outlet, matched.route.component!, context)\n await this.afterRouteGoing({url: path, path, name: matched.route.name}, component.inject(ACTIVE_ROUTE_TOKEN) as any)\n\n }\n this.eventRegistration = await this.windowObject!.addEventListener('popstate', handler.bind(this))\n return handler\n }\n\n unbind() {\n if(this.eventRegistration) {\n this.windowObject?.dettachEventListener('popstate', this.eventRegistration)\n }\n }\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}","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/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","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","onMounted","willMount","willUnmount","provide","inject","decorateHostElement","hostElement","Promise","resolve","_OComponent","generateUIID","name","Math","floor","random","ODOM","_b","_c","_d","_e","BatchActions","actions","exec","commit","add","action","all","map","a","BatchUpdates","operations","promises","op","fn","apply","error","append","addEventListener","callback","setProperty","dettachEventListener","cbId","invoke","dispatchEvent","eventName","eventClass","initDict","addClass","tokens","removeClass","setAttribute","removeAttribute","removeChild","remove","removeAndRelease","release","html","replaceChildNode","replaceWith","after","setInnerText","text","setContentText","insertBefore","element","setInputValue","setStyle","OObject","uid","OUID","call","getProperty","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","res","getAttributeNames","parentNode","inputValue","hydrated","hydrate","query","selector","filter","queryAll","updates","Native","clazz","fnName","descriptor","thisInstance","result","OUIDBridge","callbacks","DOM_EVENT_LISTENERS","timers","_config","subscribe","id","cb","success","JSON","parse","config","conf","rej","WebOUID","stringify","registerComponent","unregisterComponent","globalThis","nodeId","nodes","n","createElement","createComment","injectComponentStyles","rejectComponentStyles","cssNode","getOObject","acquireObject","delay","setInterval","clearInterval","fetch","url","input","encodeAs","alert","message","prompt","_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","create","cur","prototype","getOwnPropertyNames","startsWith","endsWith","desc","getOwnPropertyDescriptor","undefined","bind","evalInScope","expr","scope","compiled","Function","compileInterpolated","parts","i","open","slice","close","trim","e","RenderContext","app","component","parentContext","frames","bindings","directives","mountedComponents","updatingDirectives","updatingBindings","_stack","flatStack","hydradationActions","f","stack","binding","directive","evaluateExpression","strict","additionFrames","stateObj","methodsView","_t","prop","some","updateValue","firstPart","split","frame","unshift","assign","pop","shift","resolveTag","ctx","updateBindings","root","b","updateBinding","context","s","templateFn","expandClass","expandStyle","updateDirectives","d","active","renderedNode","destroy","unmountComponent","clone","render","placeholder","oldChildren","newChildren","keyFn","val","idx","item","arr","list","domOps","YIELD_EVERY","opsSinceYield","newHydrations","last","entry","anchor","next","BURST","chunk","skipSlotted","handleTextNode","handleElementNode","batch","styleString","expandStandardAttributes","batches","substring","controlled","conditionAttr","cc","componentAttributes","mountComponent","txt","includes","ignoredAttrs","hostNode","newCtx","handledProps","instance","dependants","styleInstance","ref","STYLE_REF","hostChildrenBefore","rendered","slots","slot","toMove","PROVIDE_TOKEN","CONCURRENCY","__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","ROUTER_INJECTION_TOKEN","ACTIVE_ROUTE_TOKEN","createRouter","routes","Router","generatePath","route","params","RouteParser","reverse","windowObject","guards","eventRegistration","parser","coll","tmps","decodeURIComponent","match","absolute","beforeRouteGoing","to","guard","g","afterRouteGoing","matched","guarded","outlet","beforeEach","afterEach","_Router","OIcon","_OIcon"],"mappings":"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","file":"index.js","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 }\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>(proxify(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) clearTimeout(this.timer);\n }\n\n this.debounceTime = now;\n\n this.timer = 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 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 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","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 export class BatchUpdates {\n private operations: ({ fn: keyof OElement, args: any[] } | (() => void))[] = []\n constructor(private node: OElement) { }\n async exec(): Promise<any> {\n const promises = this.operations.map(op => {\n if (typeof op === 'object') {\n return (this.node[op.fn as keyof OElement] as Function).apply(this.node, op.args)\n } else {\n return Promise.resolve(op())\n }\n })\n try {\n await Promise.all(promises)\n } catch (error) {\n console.error('Error while batch updates')\n }\n }\n private append(fn: keyof OElement, ...args: any[]): BatchUpdates {\n this.operations.push({ fn, args })\n return this\n }\n add(fn: () => void) {\n this.operations.push(fn)\n return this\n }\n addEventListener(event: string, callback: (...args: any[]) => void) {\n return this.append('addEventListener', event, callback)\n }\n setProperty(key: string, value: string) {\n return this.append('setAttribute', key, value)\n }\n dettachEventListener(event: string, cbId: string) {\n return this.append('dettachEventListener', event, cbId)\n }\n invoke(fn: string, ...args: any[]) {\n return this.append('invoke', fn, ...args)\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)\n }\n removeChild(child: ONode) {\n return this.append('removeChild', child)\n }\n remove() {\n return this.append('remove')\n }\n removeAndRelease() {\n return this.append('removeAndRelease')\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)\n }\n after(node: ONode) {\n return this.append('after', node)\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(element: ONode, node: ONode) {\n return this.append('insertBefore', element, node)\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 async addEventListener(event: string, callback: (...args: any[]) => void): Promise<string> {\n return OUID.addEventListener(this, event, callback)\n }\n async dettachEventListener(event: string, cbId: string) {\n await OUID.dettachEventListener(this, event, cbId)\n }\n async invoke(fn: string, ...args: any[]) {\n await OUID.call('invokeObjectMethod', this.uid, fn, ...args)\n }\n async getProperty<T>(name: string): Promise<T | null> {\n return await OUID.call<T>('getObjectProperty', this.uid, name)\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 }\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: ONode) {\n super(node.uid, node.tag)\n for (const k in node) {\n (this as any)[k] = node[k as keyof ONode]\n }\n this.attributes ??= []\n this.classes ??= []\n this.style ??= \"\"\n }\n }\n export class OElement extends ONode {\n private _hydrated: boolean = false\n constructor(node: ONode) {\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('removeChild', 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(node: ONode): Promise<void> {\n await OUID.call('insertAfter', this.uid, node.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(element: ONode, node: 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(value: string): Promise<string> {\n return await OUID.call('inputValue', this.uid, value) ?? ''\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 async release(): Promise<void> {\n await OUID.call('releaseNode', this.uid)\n }\n async setStyle(key: string, value: any) {\n await OUID.call('setStyle', this.uid, key, value)\n }\n updates(): BatchUpdates {\n return new BatchUpdates(this)\n }\n }\n}\n\nexport function Native() {\n return function (clazz: any, fnName: string, descriptor: { value: Function } | Record<string, any>) {\n const orignalFunction = descriptor.value\n // return a new function thae forward call toward the native bridge\n descriptor.value = async (...args: any) => {\n const thisInstance = args[0]\n try {\n const result = await OUID.invoke(fnName, [{ props: thisInstance['getSafePropsForNative'], }])\n thisInstance['setSafePropsFromNative']\n } catch (error) {\n console.error('Failed to invoke native function')\n }\n\n }\n }\n}\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 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 if (cb) {\n // this.callbacks.delete(id)\n const args = JSON.parse(data)\n const event = args[1]\n if (event) {\n event['target'] = event?.target ? new ODOM.OElement(event.target) : null\n }\n return cb(event)\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', event: string, callback: (...args: any[]) => void): 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)\n return cbId\n }\n async dettachEventListener(node: ODOM.OObject | 'window' | 'document', event: string, cbId: string) {\n this.DOM_EVENT_LISTENERS.delete(cbId)\n await OUID.call('dettachEventListener', typeof node == 'string' ? node : node.uid, cbId, event)\n }\n\n\n async injectComponentStyles(css: string): Promise<ODOM.OElement | null> {\n const node = await OUID.call<ODOM.OElement>('injectComponentStyles', css)\n return node ? new ODOM.OElement(node) : null;\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 async fetch(\n url: string,\n input: RequestData,\n encodeAs: \"json\" | \"text\" | \"base64\" = \"json\"\n ): Promise<any> {\n return await OUID.call(\"fetch\", url, input, encodeAs);\n }\n\n async alert(message: string): Promise<void> {\n await OUID.call(\"alert\", message);\n }\n async prompt(message: string): Promise<void> {\n await OUID.call(\"prompt\", message);\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}","import { Component, ComponentConstructor, createComponent, OComponent, OComponentType, RenderNode } from \"./component\";\nimport { App } 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 = 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 STYLE_REF = new WeakMap<any, number>()\n private bindings: Binding[] = []\n private directives: Directive[] = []\n private mountedComponents: WeakMap<any, OComponent> = new WeakMap()\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 hydradationActions = new ODOM.BatchActions()\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 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 resolve(key: string | null | undefined, strict: boolean = true, ...additionFrames: Record<string, any>[]) {\n if (!key) return undefined;\n\n const stateObj = this.component.state?.value ?? {};\n const methodsView = getMethodsView(stateObj);\n\n const scope = 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 (additionFrames[i] as any)[prop];\n }\n if (prop in this.flatStack) return (this.flatStack as any)[prop];\n if (prop in methodsView) return (methodsView as any)[prop];\n return (stateObj as any)[prop];\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 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 const firstPart = key.split(/[\\.\\[]/)[0];\n if (firstPart in this.component) {\n this.resolve(`${key}=__o_model_value__`, true, { '__o_model_value__': value });\n } else {\n this.resolve(`${key}=__o_model_value__`, true, { '__o_model_value__': value });\n }\n this.component.state.didChange(firstPart 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(updates?: ODOM.BatchActions): Promise<void> {\n if (this.updatingBindings) return;\n const root = !updates;\n updates = updates ?? new ODOM.BatchActions();\n\n this.updatingBindings = true;\n for (const b of this.bindings) this.updateBinding(b, updates);\n this.updatingBindings = false;\n\n if (root) await updates.commit();\n }\n updateBinding(binding: Binding, updates: ODOM.BatchActions): 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({\n ...this.flatStack,\n ...getMethodsView(this.component.state?.value ?? {}),\n ...(this.component.state?.value ?? {})\n });\n await binding.node.setContentText(s);\n });\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 updates.add(() => 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 }\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 binding.context.updateBindings();\n binding.context.updateDirectives();\n } catch (error) {\n console.error(error);\n }\n return;\n }\n }\n // --- Directives ---\n async updateDirectives(updates?: ODOM.BatchActions) {\n if (this.updatingDirectives) {\n return\n }\n const root = !updates\n this.updatingDirectives = true\n updates = updates ?? new ODOM.BatchActions()\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.node)\n await d.renderedNode.removeAndRelease()\n } else {\n await d.renderedNode.addClass('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 await d.context.hydradationActions.commit()\n } else {\n await renderedNode.removeClass(\"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, true, { [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 // Queue of async hydrations for new rows (run in small parallel bursts after DOM ops)\n const newHydrations: Array<() => Promise<void>> = [];\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 domOps.add(async () => {\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(updates), ctx.updateDirectives(updates)]);\n } else {\n // brand new row: create ctx + clone; avoid immediate DOM awaits\n ctx = new RenderContext(this.app, this.component, this);\n ctx.hydradationActions = this.hydradationActions;\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 newHydrations.push(async () => {\n await ctx.render(node);\n await ctx.updateDirectives(updates);\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 for (const [key, entry] of oldChildren.entries()) {\n if (!newChildren.has(key)) {\n this.unmountComponent(entry.node);\n domOps.add(() => entry.node.removeAndRelease());\n }\n }\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 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(batch), this.updateDirectives(batch)])\n batch.commit()\n this.hydradationActions.add(() => node.hydrate())\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 }\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 }\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 batches.removeAttribute(attr.name)\n })\n batches.exec()\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(placeholder, node);\n await node.updates()\n .removeAttribute(conditionAttr)\n .remove()\n .exec()\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(placeholder, node);\n await node.updates()\n .removeAttribute(\"o-for\")\n .removeAttribute(':key')\n .remove()\n .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 let event = 'input'\n if(node.tag === 'selection') {\n event = 'change'\n }\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 });\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 await batches.exec()\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, true)\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) {\n if (this.mountedComponents.has(hostNode)) return;\n\n // Child context prepared early (but heavy tasks deferred)\n const newCtx = new RenderContext(this.app, {} as OComponent, this);\n\n // Bind reactive props before instance creation (so the first render sees values)\n const handledProps = {} as T;\n for (const k of Object.keys(props)) {\n const p = props[k];\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, 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 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.injectComponentStyles(css);\n }\n }\n // Refcount bump can be deferred (no visual impact)\n deferMicro(() => {\n const styleInstance = (component as any)['cssInstance'];\n if (styleInstance) {\n const ref = RenderContext.STYLE_REF.get(styleInstance) ?? 0;\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 batch.add(() => n.setAttribute('slotted', 'true'));\n batch.add(() => slot.appendChild(n));\n }\n await batch.commit();\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 }\n\n // Post-mount lifecycle after first paint\n deferMicro(() => {\n try { instance.onMounted(); } catch {}\n });\n\n // Use your debounced State to coalesce updates; keep a single commit per tick\n instance.state.watch(() => {\n const batch = new ODOM.BatchActions();\n newCtx.updateBindings(batch);\n newCtx.updateDirectives(batch);\n batch.commit();\n });\n}\n async unmountComponent(node: ODOM.OElement) {\n const comp = this.mountedComponents.get(node)\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)\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.injectComponentStyles(this.options.css)\n }\n await OUID.injectComponentStyles(`\n * {\n ${selector} * {\n visibility: hidden;\n }\n ${selector} *.hydrated {\n visibility: inherit;\n }\n .oui-hidden {\n display: none !important;\n }\n `)\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(() => {\n globalContext.updateBindings()\n globalContext.updateDirectives()\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 } from 'src/interfaces/bridge'\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 height: 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\"\nexport interface Route {\n path: string\n name: string\n component?: OComponentType<any, any>,\n redirectTo?: string\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>\nfunction generatePath(route: Route, params: Record<string, string>): string {\n let path = new RouteParser(route.path!).reverse(params)\n if (path === false) return \"\"\n return path\n}\ntype MatchedRoute = { route: Route, params: Record<string, any>, query: Record<string, string> }\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}\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 constructor(public routes: Routes) {\n }\n install(app: App) {\n app.provide(ROUTER_INJECTION_TOKEN, this)\n OUID.registerComponent('o-router', ORouter)\n }\n resolve(path: string): MatchedRoute | null {\n const parser = new RouteParser(path)\n const query: Record<string, string> = path.split('?').reverse()[0].split('&').reduce((coll, value) => {\n const tmps = value.split('=')\n coll[tmps[0]] = decodeURIComponent(tmps[1])\n return coll\n }, {} as Record<string, any>)\n for (const r of this.routes) {\n const match = parser.match(r.path)\n if (match) {\n return {\n route: r,\n params: match,\n query\n }\n }\n }\n return null\n }\n push(options: { name?: string, path?: string, params?: Record<string, string>, absolute?: boolean }): void {\n if (!options.path && !options.name) {\n console.warn('[OUID-Router]: no path or name provided to push')\n return\n }\n\n if (options.name) {\n const route = this.routes.find(r => r.name === options.name)\n if (!route) {\n console.warn('[OUID-Router]: No matched route name found')\n return\n }\n const path = generatePath(route, options.params ?? {})\n this.windowObject?.invoke('history.pushState', {}, '', path)\n this.windowObject?.dispatchEvent('popstate', 'PopStateEvent', {state: {}})\n return\n }\n if (options.absolute && options.path) {\n this.windowObject?.invoke('history.pushState', {}, '', options.path)\n }\n if (options.path) {\n // first try to match direct path\n const route = this.routes.find(r => r.path === options.path)\n if (route) {\n const path = generatePath(route, options.params ?? {})\n this.windowObject?.invoke('history.pushState', {}, '', path)\n this.windowObject?.dispatchEvent('popstate', 'PopStateEvent', {state: {}})\n return\n }\n }\n\n }\n pop(): void {\n this.windowObject?.invoke('history.back')\n this.windowObject?.dispatchEvent('popstate', 'PopStateEvent', {state: {}})\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 const handler = async () => {\n const path = (await this.windowObject?.getProperty<string>('location.pathname'))! // await OUID.currentPath();\n const matched = this.resolve(path);\n if (!matched) {\n console.warn(`[Router] No route found for: ${path}`);\n return;\n }\n const guarded = await this.beforeRouteGoing({url: path, path, name: matched.route.name}, component.inject(ACTIVE_ROUTE_TOKEN) as any)\n if (guarded) {\n if(typeof guarded === 'object' && 'name' in guarded) {\n // redirection\n this.push({name: guarded.name, params: guarded.params})\n }\n return;\n }\n const context = component.inject<RenderContext>(RenderContext.PROVIDE_TOKEN)\n const outlet = await context?.hostElement.query(\"#router-view\");\n if (!outlet) return;\n // outlet.innerHTML = \"\"; // clear previous\n component.provide(ACTIVE_ROUTE_TOKEN, {\n params: matched.params,\n query: matched.query\n })\n await context?.mountComponent<any, any>(outlet, matched.route.component!, context)\n await this.afterRouteGoing({url: path, path, name: matched.route.name}, component.inject(ACTIVE_ROUTE_TOKEN) as any)\n\n }\n this.eventRegistration = await this.windowObject!.addEventListener('popstate', handler.bind(this))\n return handler\n }\n\n unbind() {\n if(this.eventRegistration) {\n this.windowObject?.dettachEventListener('popstate', this.eventRegistration)\n }\n }\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}","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"]}
|