ouider 0.0.3 → 0.0.4
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 +2 -1
- package/dist/dom/dom.cjs.map +1 -1
- package/dist/dom/dom.js +2 -1
- package/dist/dom/dom.js.map +1 -1
- package/dist/index.cjs +22 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +194 -101
- package/dist/index.d.ts +194 -101
- package/dist/index.js +22 -2
- package/dist/index.js.map +1 -1
- package/package.json +7 -2
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/registry.ts","../src/emits.ts","../src/state.ts","../src/component.ts","../src/context.ts","../src/app.ts","../src/router/Router.ts","../src/interfaces/helpers.ts","../src/interfaces/bridge.ts","../index.ts"],"names":["_a","ComponentsRegistry","components","Map","register","tag","compClass","key","toLocaleLowerCase","has","console","warn","set","unregister","delete","get","getAll","Array","from","entries","componentsRegistry","Emits","events","emit","event","args","handler","_Emits","Stated","value","_Stated","isStated","ob","isArray","stated","target","state","proxify","__name","seen","proxy","Proxy","t","p","v","o","didChange","Reflect","current","Object","getPrototypeOf","keys","forEach","obj","Error","String","State","data","THRESHOLD_TIME","debounceTime","Date","getTime","listeners","timer","oldValue","wrap","setValue","getValue","dispatchChanges","newValue","listener","path","now","OUID","clearTimeout","setTimeout","watch","push","length","unwatch","splice","indexOf","_State","componentCreationOrder","Component","options","constructor","WithDecoration","template","css","hash","createComponent","ctr","props","emits","OComponent","parent","provides","onMounted","willMount","willUnmount","provide","inject","_OComponent","toCamelCase","name","replace","_","char","toUpperCase","normaliseValue","toObjectWithFunctions","getOwnPropertyNames","startsWith","endsWith","bind","isLazyLoader","comp","RenderContext","app","component","parentContext","frames","bindings","directives","mountedComponents","WeakMap","stack","f","hostElement","binding","directive","evaluateExpression","expr","resolve","strict","additionFrames","mergedFrame","frame","reverse","assign","code","fn","Function","apply","values","error","log","updateValue","split","unshift","pop","shift","updateBindings","b","updateBinding","type","node","setProperty","context","setContentText","k","trim","expandClass","expandStyle","setAttribute","toString","updateDirectives","d","show","active","placeholder","after","render","unmountComponent","remove","oldChildren","children","newChildren","keyFn","val","idx","item","arr","list","last","i","keyedNode","localCtx","newCtx","ctx","cloneNode","keyed","handleTextNode","handleElementNode","classString","join","filter","e","styleString","map","expandStandardAttributes","attributes","attr","substring","removeAttribute","parentNode","controlled","hasAttribute","getAttribute","createComment","insertBefore","undefined","s","attribute","Promise","all","toLowerCase","cc","input","setInputValue","addEventListener","getProperty","componentAttributes","mountComponent","child","childNodes","matches","textContent","match","m","ignoredAttrs","a","includes","hostNode","wrapper","createdElement","handledProps","instance","addClass","setHTML","injectComponentStyles","slots","queryAll","promise","slot","slotParent","rootEl","appendChild","PROVIDE_TOKEN","rejectComponentStyles","__publicField","_RenderContext","then","c","default","isProvideFunction","App","root","providers","currentApp","token","use","plugin","install","mount","selector","globalThis","__OUI_PUR_JS_CONTEXT__","host","query","globalContext","_App","RouterComponent","routeStateHander","router","useRouter","unbind","_RouterComponent","D","ROUTER_INJECTION_TOKEN","ACTIVE_ROUTE_TOKEN","createRouter","routes","Router","generatePath","route","params","RouteParser","windowObject","guards","eventRegistration","parser","reduce","coll","tmps","decodeURIComponent","r","find","invoke","dispatchEvent","absolute","beforeRouteGoing","to","guard","g","res","afterRouteGoing","acquireObject","matched","guarded","url","outlet","innerHTML","dettachEventListener","beforeEach","afterEach","_Router","generateUIID","Math","floor","random","ODOM","_b","_c","OObject","uid","callback","cbId","call","eventName","eventClass","initDict","ONode","classes","style","OElement","attrs","cloned","removeChild","replaceChildNode","replaceWith","html","HTML","setInnerText","text","getContentText","content","err","getAttributeNames","element","inputValue","release","Native","clazz","fnName","descriptor","thisInstance","result","OUIDBridge","callbacks","DOM_EVENT_LISTENERS","timers","_config","subscribe","id","cb","success","JSON","parse","config","conf","rej","WebOUID","stringify","nodeId","nodes","n","cssNode","getOObject","delay","setInterval","clearInterval","_OUIDBridge","acc"],"mappings":"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","file":"index.cjs","sourcesContent":["import { OComponentType } from \"./component\"\n\nclass ComponentsRegistry {\n private components: Map<string, OComponentType<any, any>> = new Map()\n register(tag: string, compClass: OComponentType<any, any>) {\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 getAll() {\n return Array.from(this.components.entries())\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 = 50\n private debounceTime = new Date().getTime()\n private state: T\n private listeners: StateWatcher<T>[] = []\n private timer: number | null = null\n constructor(data: T) {\n this.state = new Proxy(data, {\n set: (target, key: string, value: any) => {\n const oldValue = (target as any)[key];\n target[key as keyof T] = value\n this.didChange(key as keyof T, oldValue, value)\n return true\n },\n\n get: (target, key) => target[key as keyof T]\n }) as T\n }\n wrap<T>(obj: T): Stated<T> {\n return stated(obj, this)\n }\n has(key: keyof T): boolean {\n return key in this.state\n }\n setValue(key: keyof T, value: any) {\n this.state[key as keyof T] = value\n }\n getValue(key: keyof T): any {\n return this.state[key]\n }\n get value(): T {\n return this.state\n }\n\n private dispatchChanges<K extends keyof T>(key: K, oldValue: T[K], newValue: T[K]): void {\n for (const listener of this.listeners) {\n listener(key, oldValue, newValue)\n }\n }\n\n async didChange(path: keyof T, oldValue: any, newValue: any) {\n const now = Date.now()\n if (now - this.debounceTime <= this.THRESHOLD_TIME) {\n if(this.timer) await OUID.clearTimeout(this.timer);\n }\n\n this.debounceTime = now;\n\n this.timer = await OUID.setTimeout(() => {\n this.dispatchChanges(path, oldValue, newValue);\n }, this.THRESHOLD_TIME);\n }\n\n watch(listener: StateWatcher<T>) {\n this.listeners.push(listener)\n return this.listeners.length - 1\n }\n\n unwatch(listener: StateWatcher<T> | number) {\n if (typeof listener === \"number\") {\n this.listeners.splice(listener, 1)\n return\n }\n this.listeners.splice(this.listeners.indexOf(listener), 1)\n }\n}","import { Emits } from \"./emits\";\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?: OComponentType[], css?: 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 hash = 'component-' + componentCreationOrder + '-' + options.tag\n };\n \n const compClass = WithDecoration as unknown as ComponentConstructor<any, any>;\n\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};\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}\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}\nfunction onwProps(target: any, filter: ((p: any) => boolean) = (p) => typeof p !== 'function' && typeof p !== 'symbol'): Record<string, any> {\n const ret = {} as Record<string, any>\n for (const k in target) {\n const v = target[k]\n if (typeof v !== 'function' && typeof v !== 'symbol') {\n ret[k] = v\n }\n }\n return ret\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}\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>","import { Component, ComponentConstructor, createComponent, OComponent, OComponentType } from \"./component\";\nimport { App } from \"./app\";\nimport { isStated } from \"./state\";\nimport { 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}\n\nfunction normaliseValue<T>(value: T) {\n if (isStated(value)) {\n return value.value as T\n }\n return value\n}\nfunction toObjectWithFunctions(obj: any) {\n const props: Record<string, any> = {};\n\n for (let current = obj; current; current = Object.getPrototypeOf(current)) {\n Object.getOwnPropertyNames(current).forEach(key => {\n const v = obj[key]\n if (typeof v === \"function\" && key !== \"constructor\" && !key.startsWith('__') && !key.endsWith('__')) {\n if (!(key in props)) {\n props[key] = (v as Function).bind(obj)\n }\n } else if (key !== \"constructor\" && !key.startsWith('__') && !key.endsWith('__')) {\n if (!(key in props)) {\n props[key] = v\n }\n }\n });\n }\n\n return props\n}\n\nfunction isLazyLoader<P extends Record<string, any>, O extends Record<string, any>>(\n comp: OComponentType<P, O>\n): comp is () => Promise<{ default: ComponentConstructor<P, O> }> {\n return typeof comp === \"function\" && !(\"prototype\" in comp);\n}\n\nexport class RenderContext {\n static PROVIDE_TOKEN = \"RENDER_CONTEXT\"\n private bindings: Binding[] = []\n private directives: Directive[] = []\n private mountedComponents: WeakMap<any, OComponent> = new WeakMap()\n stack: Record<string, any>[] = []\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.stack.push(f)\n }\n }\n get hostElement(): ODOM.OElement {\n return (this.component as any)['_hostElement']\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) {\n return undefined\n }\n const state = this.component.state.value\n const props = toObjectWithFunctions(state)\n const mergedFrame = { ...props }\n for (const frame of [...this.stack.reverse(), ...additionFrames]) {\n Object.assign(mergedFrame, frame)\n }\n try {\n const code = `${strict ? '\"use strict\";' : ''}return ${key};`\n const args = Object.keys(mergedFrame)\n const fn = new Function(...args, code);\n fn.bind(this.component)\n const exe = fn.apply(this.component, Object.values(mergedFrame));\n return exe\n } catch (error) {\n console.log(this, key)\n console.error(error)\n }\n return undefined\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 // check if the first part is part of the component\n if (firstPart in this.component) {\n // we put this before the key and make resolution (which indeed make a dynamic function creation and execution)\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('', '', '')\n // this.component.state.setValue(key, value)\n }\n\n push(frame: Record<string, any>) {\n this.stack.unshift(frame)\n }\n pop() {\n this.stack.shift()\n }\n\n // --- Interpolation & two-way binding ---\n async updateBindings(): Promise<void> {\n this.bindings.forEach(b => this.updateBinding(b));\n }\n async updateBinding(binding: Binding): Promise<void> {\n if (binding.type === \"model\") {\n (binding.node).setProperty('value', normaliseValue<string>(binding.context.resolve(binding.key)));\n } else if (binding.type === 'interpolation') {\n await binding.node.setContentText(binding.template?.replace(/\\{\\{(.*?)\\}\\}/g, (_, k) => {\n k = k.trim();\n return normaliseValue(binding.context.resolve(k))\n }) ?? '');\n } else if (binding.type === 'attribute') {\n const name = binding.key\n const v = normaliseValue(this.resolve(binding.template!))\n if (name === 'class') {\n // expand class\n this.expandClass(binding.node, v)\n } else if (name === 'style') {\n this.expandStyle(binding.node, v)\n } else if (typeof v !== 'object' && typeof v !== 'function' && typeof v !== 'symbol' && typeof v !== 'undefined') {\n binding.node.setAttribute(name, v.toString())\n }\n } else if (binding.type === 'prop' && binding.context.component) {\n const value = normaliseValue<string>(this.resolve(binding.template))\n try {\n console.log({ ...binding.context.component })\n binding.context.component.props[binding.key] = value\n binding.context.updateBindings()\n binding.context.updateDirectives()\n } catch (error) {\n console.error(error)\n }\n }\n }\n // --- Directives ---\n async updateDirectives() {\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 !== true) {\n d.active = true;\n await d.placeholder.after(d.node);\n await d.context.render(d.node);\n d.context.updateBindings();\n }\n // d.context.updateDirectives()\n } else if (!show) {\n if (d.active !== false) {\n this.unmountComponent(d.node)\n await d.node.remove();\n d.active = false;\n }\n }\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 const keyFn = (val: any, idx: number) => d.key ? normaliseValue<any>(d.context.resolve(d.key, true, { [d.item!]: val })) : idx\n\n let arr = normaliseValue<any[]>(d.context.resolve(d.list!)) || [];\n let last: ODOM.OElement = d.placeholder\n for(let i =0; i< arr.length; i++) {\n const val = arr[i]\n const idx = i\n const key = keyFn(val, idx)\n const keyedNode = oldChildren.get(key)\n let node = keyedNode?.node\n let localCtx = { [d.item!]: val };\n const newCtx = keyedNode?.ctx ?? new RenderContext(this.app, this.component, null)\n newCtx.stack = [localCtx, ...d.context.stack]\n if (!node) {\n // create new node\n node = (await d.node.cloneNode(true))!;\n await newCtx.render(node);\n await last.after(node);\n newCtx.updateBindings();\n await newCtx.updateDirectives();\n } else {\n newCtx.updateBindings();\n await newCtx.updateDirectives();\n }\n last = node\n newChildren.set(key, { node, ctx: newCtx })\n };\n // remove old nodes not in new list\n \n for(const key in oldChildren) {\n const keyed = oldChildren.get(key)!\n if (!newChildren.has(key)) {\n this.unmountComponent(keyed.node);\n await keyed.node.remove();\n }\n };\n d.children = newChildren\n }\n }\n }\n\n private async render(node: ODOM.OElement): Promise<void> {\n switch (node.type) {\n case 'Text':\n this.handleTextNode(node)\n break\n case 'Element':\n await this.handleElementNode(node)\n break\n default:\n console.warn(\"Unknown node\", node)\n }\n }\n private expandClass(node: ODOM.OElement, value: any) {\n let classString = value\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n classString = value.join(' ')\n } else {\n classString = Object.keys(value).filter(e => value[e]).join(' ')\n }\n }\n node.setAttribute('class', classString)\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).map(e => `${e}: ${value[e]}`).join(';')\n }\n node.setAttribute('style', styleString)\n }\n private expandStandardAttributes(node: ODOM.OElement) {\n\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 node.removeAttribute(attr.name) // AWAIT??\n })\n }\n async handleElementNode(node: ODOM.OElement) {\n // expand style and classes\n const parentNode = (await node.parentNode())!\n let controlled: 'for' | 'if' | null = null\n // *if directive\n if (node.hasAttribute(\"o-if\")) {\n \n const expr = await node.getAttribute(\"o-if\")!;\n const placeholder = (await OUID.createComment(\"o-if:\" + expr))!;\n await parentNode.insertBefore(placeholder, node);\n await node.removeAttribute(\"o-if\");\n this.directive({\n type: \"if\",\n expr,\n node,\n placeholder,\n context: this,\n active: undefined\n });\n controlled = 'if'\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 Promise.all([node.removeAttribute(\"o-for\"),node.removeAttribute(':key')])\n await node.remove();\n this.directive({\n type: \"for\",\n item,\n list,\n node,\n placeholder,\n context: this,\n key,\n });\n controlled = 'for'\n }\n const tag = node.tag.toLowerCase();\n const cc = componentsRegistry.get(tag)\n if (controlled !== 'for') {\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 const input = node\n await input.setInputValue(normaliseValue(this.resolve(key,)));\n input.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 await node.removeAttribute(attr.name);\n }\n });\n }\n\n\n\n let props = {} as any, events = {} as any\n if (controlled !== 'for') {\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 await node.addEventListener(k, e => {\n if (typeof handler === \"function\") (handler as Function).apply(this.component, [e]);\n });\n }\n await node.removeAttribute('@' + k);\n });\n }\n if (controlled) {\n return\n }\n\n if (cc) {\n await this.mountComponent(node, cc, this, props, events);\n return; // stop scanning original node\n }\n for(const child of await node.childNodes()) {\n /// AWAIT??\n await this.render(child)\n }\n }\n handleTextNode(node: ODOM.OElement) {\n const matches = node.textContent?.match(/\\{\\{(.*?)\\}\\}/g);\n if (matches) {\n matches.forEach(m => {\n const key = m.replace(/[{}]/g, \"\").trim();\n this.bind({ type: 'interpolation', node, key, template: node.textContent, 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>>(hostNode: ODOM.OElement, component: OComponentType<T, O>, parentContext: RenderContext | null, props: Record<string, { name: string, value: any, expr?: string }> = {}, emits: O = {} as O) {\n const wrapper = (await OUID.createdElement('div'))!;\n const newCtx = new RenderContext(this.app, {} as OComponent, null)\n const handledProps = {} as T\n Object.keys(props).forEach(k => {\n const p = props[k]\n if (p.expr) {\n // create a binding\n this.bind({\n type: 'prop',\n node: wrapper,\n key: k,\n context: newCtx,\n template: p.expr\n })\n }\n handledProps[k as keyof T] = p.value\n })\n\n const instance = await o(component, handledProps, emits);\n newCtx.component = instance\n newCtx.stack = [instance.props]\n Object.keys(props).filter(e => !props[e].expr).forEach(attr => wrapper.setAttribute(attr, props[attr].value))\n wrapper.addClass('o-component-host')\n if (hostNode.tag.toLowerCase() !== 'div') {\n wrapper.addClass('c-' + hostNode.tag.toLowerCase())\n }\n instance.willMount()\n await wrapper.setHTML((instance as any)['template'].trim());\n if ((instance as any)['css']) {\n (instance as any)['cssInstance'] = await OUID.injectComponentStyles((instance as any)['css'])\n }\n // append css if any \n const children = await hostNode.childNodes()\n const slots = await wrapper.queryAll('o-slot')\n if (slots) {\n // there are some slot, so we make injections\n const promise = slots.map(async slot => {\n const name = slot.attribute('name')\n const slotParent = await slot.parentNode()\n for(const node of children.filter(e => {\n if (!name) {\n return e.type !== 'Element' || !e.hasAttribute('slot')\n }\n return name && e.type === 'Element' && e.attribute('slot') === name\n })) {\n await slotParent?.insertBefore(node, slot)\n }\n })\n await Promise.all(promise)\n }\n const rootEl = wrapper;\n // this.unmountComponent(hostNode)\n await hostNode.setHTML('')\n await hostNode.appendChild(wrapper)\n\n \n ;(instance as any)['_hostElement'] = rootEl\n instance['parent'] = parentContext?.component ?? undefined\n instance.provide(RenderContext.PROVIDE_TOKEN, this)\n // attach rootEl to this component\n await newCtx.render(rootEl);\n newCtx.updateBindings();\n newCtx.updateDirectives();\n this.mountedComponents.set(rootEl, instance)\n instance.onMounted()\n instance.state.watch(() => {\n newCtx.updateBindings();\n newCtx.updateDirectives();\n });\n }\n async unmountComponent(node: ODOM.OElement) {\n const comp = this.mountedComponents.get(node)\n if (comp) {\n // emit will unmount\n await OUID.rejectComponentStyles((comp as any)['cssInstance'])\n comp.willUnmount();\n (comp as any)['_hostElement'] = 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 = { type: 'model' | 'interpolation' | 'attribute' | 'prop', node: ODOM.OElement, key: string, template?: string | null, context: RenderContext }\nexport type Directive = { type: 'if' | 'for', node: ODOM.OElement, expr?: string, placeholder: ODOM.OElement, context: RenderContext, active?: boolean, list?: string, item?: string, children?: Map<any, { node: ODOM.ONode, ctx: RenderContext }>, key?: string }\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>>\n\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 {\n install(app: App): 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(plugin: Plugin) {\n plugin.install(this)\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 console.log('Injecting app css', this.options.css);\n await OUID.injectComponentStyles(this.options.css)\n }\n const host = await OUID.query(selector)\n console.log('Mounting app on', host)\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})\nexport class RouterComponent extends OComponent {\n private routeStateHander: (() => void) | null = null\n private router: Router | undefined = undefined\n willMount(): void {\n }\n onMounted(): void {\n this.router = useRouter()\n console.log('Router mounted')\n this.router?.bind(this).then((handler) => {\n this.routeStateHander = handler\n this.routeStateHander?.();\n })\n }\n willUnmount(): void {\n console.log('Router will unmount')\n this.router?.unbind(this.routeStateHander!);\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 {\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 }\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\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: RouterComponent): Promise<(() => void)> {\n this.windowObject = await OUID.acquireObject('window')\n const handler = async () => {\n console.log('Handling routing', this)\n const path = (await this.windowObject?.getProperty<string>('location.pathname'))! // await OUID.currentPath();\n const matched = this.resolve(path);\n console.log('Matched::', matched)\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 console.log('Outlet', outlet)\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(handler: () => void) {\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}","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 { generateUIID } from \"./helpers\"\n\ntype QueryFilter = \"children\" | \"classes\" | \"style\" | \"attributes\"\nexport namespace ODOM {\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 constructor(node: ONode) {\n super(node)\n }\n async addClass(name: string): Promise<void> {\n await OUID.call('addClass', this.uid, name)\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 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 await OUID.call('setInnerText', this.uid, text)\n }\n async setContentText(text: string): Promise<void> {\n await 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 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) {\n return 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\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 }\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 console.log('result from native function')\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 }\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 /**\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 createdElement(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, callback)\n const id = await OUID.call<number>('setTimeout', cbId, delay) ?? -1\n console.log('Timer id', id)\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.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 \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.DOM_EVENT_LISTENERS.delete(cb)\n await OUID.call<number>('clearInterval', id)\n }\n }\n \n\n}\n\n\nexport const OUID = new OUIDBridge();\n\n; (globalThis as any).OUID = OUID\n\ndeclare global {\n var OUID: OUIDBridge;\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 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","../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","OUID","clearTimeout","setTimeout","watch","push","length","unwatch","splice","indexOf","_State","componentCreationOrder","Component","options","constructor","_a","WithDecoration","template","css","use","hostClasses","hash","RenderNode","node","children","attachTo","host","innerHTML","fullNode","child","appendChild","of","addChild","_RenderNode","StyleData","toString","str","join","_StyleData","createComponent","ctr","props","emits","OComponent","parent","provides","onMounted","willMount","willUnmount","provide","inject","decorateHostElement","hostElement","Promise","resolve","_OComponent","generateUIID","name","Math","floor","random","ODOM","_b","_c","_d","_e","BatchActions","actions","exec","add","action","commit","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","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","toObjectWithFunctions","getOwnPropertyNames","startsWith","endsWith","bind","isLazyLoader","comp","RenderContext","app","component","parentContext","frames","bindings","directives","mountedComponents","WeakMap","updatingDirectives","updatingBindings","stack","hydradationActions","f","binding","directive","evaluateExpression","expr","strict","additionFrames","mergedFrame","frame","reverse","assign","code","Function","values","updateValue","split","unshift","pop","shift","resolveTag","ctx","updateBindings","root","b","updateBinding","context","trim","expandClass","expandStyle","updateDirectives","d","active","renderedNode","destroy","unmountComponent","clone","render","placeholder","oldChildren","newChildren","keyFn","val","idx","item","arr","list","last","i","entry","skipSlotted","handleTextNode","handleElementNode","e","styleString","expandStandardAttributes","batches","substring","controlled","conditionAttr","undefined","s","cc","componentAttributes","mountComponent","matches","match","m","ignoredAttrs","includes","hostNode","newCtx","handledProps","instance","batch","dependants","dep","styleInstance","ref","STYLE_REF","hostChildren","rendered","slots","promise","slot","PROVIDE_TOKEN","__publicField","_RenderContext","el","reduce","acc","then","default","isProvideFunction","App","providers","currentApp","token","plugin","install","mount","__OUI_PUR_JS_CONTEXT__","globalContext","_App","ORouter","router","useRouter","unbind","_ORouter","R","ROUTER_INJECTION_TOKEN","ACTIVE_ROUTE_TOKEN","createRouter","routes","Router","generatePath","route","params","RouteParser","windowObject","guards","eventRegistration","parser","coll","tmps","decodeURIComponent","r","absolute","beforeRouteGoing","to","guard","g","afterRouteGoing","matched","guarded","outlet","beforeEach","afterEach","_Router"],"mappings":"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","file":"index.cjs","sourcesContent":["import { OComponentType } from \"./component\"\n\nexport class ComponentsRegistry {\n private components: Map<string, OComponentType<any, any>> = new Map()\n register(tag: string, compClass: OComponentType<any, any>) {\n console.log(`[OUID] - Registering component: ${tag}`)\n const key = tag.toLocaleLowerCase()\n if(this.components.has(key)) {\n 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 console.log('Emitting event', event, handler)\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 = 50\n private debounceTime = new Date().getTime()\n private state: T\n private listeners: StateWatcher<T>[] = []\n private timer: number | null = null\n constructor(data: T) {\n this.state = new Proxy(data, {\n set: (target, key: string, value: any) => {\n const oldValue = (target as any)[key];\n target[key as keyof T] = value\n this.didChange(key as keyof T, oldValue, value)\n return true\n },\n\n get: (target, key) => target[key as keyof T]\n }) as T\n }\n wrap<T>(obj: T): Stated<T> {\n return stated(obj, this)\n }\n has(key: keyof T): boolean {\n return key in this.state\n }\n setValue(key: keyof T, value: any) {\n this.state[key as keyof T] = value\n }\n getValue(key: keyof T): any {\n return this.state[key]\n }\n get value(): T {\n return this.state\n }\n\n private dispatchChanges<K extends keyof T>(key: K, oldValue: T[K], newValue: T[K]): void {\n for (const listener of this.listeners) {\n listener(key, oldValue, newValue)\n }\n }\n\n async didChange(path: keyof T, oldValue: any, newValue: any) {\n const now = Date.now()\n if (now - this.debounceTime <= this.THRESHOLD_TIME) {\n if(this.timer) await OUID.clearTimeout(this.timer);\n }\n\n this.debounceTime = now;\n\n this.timer = await OUID.setTimeout(() => {\n this.dispatchChanges(path, oldValue, newValue);\n }, this.THRESHOLD_TIME);\n }\n\n watch(listener: StateWatcher<T>) {\n this.listeners.push(listener)\n return this.listeners.length - 1\n }\n\n unwatch(listener: StateWatcher<T> | number) {\n if (typeof listener === \"number\") {\n this.listeners.splice(listener, 1)\n return\n }\n this.listeners.splice(this.listeners.indexOf(listener), 1)\n }\n}","import { RenderContext } from \"./context\";\nimport { Emits } from \"./emits\";\nimport { ODOM } from \"./interfaces/bridge\";\nimport { componentsRegistry } from \"./registry\";\nimport { State } from \"./state\"\nexport type ComponentProps<K extends Record<string, any>> = K\n\nlet componentCreationOrder = 0\n/**\n * Component decorator, it allow an auto registration of components\n * @param options \n * @returns \n */\nexport function Component(options: { template: string, tag: string, use?: Record<string, OComponentType>, css?: string, hostClasses?: string | string[] }) {\n return function <T extends { new(...args: any[]): {} }>(constructor: T) {\n const WithDecoration = class extends constructor {\n template = options.template;\n css = options.css;\n tag = options.tag\n use = options.use\n hostClasses = options.hostClasses\n hash = 'component-' + componentCreationOrder + '-' + options.tag\n };\n\n const compClass = WithDecoration as unknown as ComponentConstructor<any, any>;\n (compClass as any)['tag'] = options.tag\n // componentsRegistry.register(options.tag, compClass);\n return WithDecoration;\n\n };\n}\ntype ExposedKeyAsPromise<T extends Record<string, any>> = {\n [K in keyof T]: Promise<T[K]>;\n};\n\nexport class RenderNode {\n constructor(private node: ODOM.OElement | string, private children: RenderNode[] = []) { }\n\n attachTo(host: ODOM.OElement): void {\n if (typeof this.node === 'string') {\n // html string\n host.innerHTML = this.node\n return\n }\n const fullNode = this.node;\n for (const child of this.children) {\n child.attachTo(fullNode)\n }\n host.appendChild(fullNode)\n }\n static of(node: ODOM.OElement | string, children: RenderNode[] = []): RenderNode {\n return new RenderNode(node, children)\n }\n addChild(node: RenderNode): RenderNode {\n this.children.push(node)\n return this\n }\n\n}\nexport class StyleData {\n constructor(private data: Record<string, StyleData | string>, private css: string) { }\n toString(): string {\n let str = this.css ? this.css + '\\n' : ''\n for (const key in this.data) {\n const value = this.data[key]\n if (typeof value === 'string') {\n str += `${key} { ${value} }\\n`\n } else if (value instanceof StyleData) {\n str += `${key} {\\n${value.toString()}}\\n`\n }\n }\n return str\n }\n static of(data: Record<string, StyleData | string>, ...css: string[]): StyleData {\n return new StyleData(data, css.join('\\n'))\n }\n}\nexport interface Component<P extends Record<string, any>, O extends Record<string, any>> {\n // template: string\n state: State<any>\n readonly emits: Emits<O>\n readonly props: ComponentProps<P>\n 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}\nfunction onwProps(target: any, filter: ((p: any) => boolean) = (p) => typeof p !== 'function' && typeof p !== 'symbol'): Record<string, any> {\n const ret = {} as Record<string, any>\n for (const k in target) {\n const v = target[k]\n if (typeof v !== 'function' && typeof v !== 'symbol') {\n ret[k] = v\n }\n }\n return ret\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 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 console.log('result from native function')\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 console.log('Timer id', id)\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 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\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 OUIDBridge();\n\n; (globalThis as any).OUID = OUID\n\ndeclare global {\n var OUID: OUIDBridge;\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}\nfunction toObjectWithFunctions(obj: any) {\n const props: Record<string, any> = {};\n\n for (let current = obj; current; current = Object.getPrototypeOf(current)) {\n Object.getOwnPropertyNames(current).forEach(key => {\n const v = obj[key]\n if (typeof v === \"function\" && key !== \"constructor\" && !key.startsWith('__') && !key.endsWith('__')) {\n if (!(key in props)) {\n props[key] = (v as Function).bind(obj)\n }\n } else if (key !== \"constructor\" && !key.startsWith('__') && !key.endsWith('__')) {\n if (!(key in props)) {\n props[key] = v\n }\n }\n });\n }\n\n return props\n}\n\nfunction isLazyLoader<P extends Record<string, any>, O extends Record<string, any>>(\n comp: OComponentType<P, O>\n): comp is () => Promise<{ default: ComponentConstructor<P, O> }> {\n return typeof comp === \"function\" && !(\"prototype\" in comp);\n}\n\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 stack: Record<string, any>[] = []\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.stack.push(f)\n }\n }\n get hostElement(): ODOM.OElement {\n return (this.component as any)['_hostElement']\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) {\n return undefined\n }\n const state = this.component.state.value\n const props = toObjectWithFunctions(state)\n const mergedFrame = { ...props }\n for (const frame of [...this.stack.reverse(), ...additionFrames]) {\n Object.assign(mergedFrame, frame)\n }\n try {\n const code = `${strict ? '\"use strict\";' : ''}return ${key};`\n const args = Object.keys(mergedFrame)\n const fn = new Function(...args, code);\n fn.bind(this.component)\n const exe = fn.apply(this.component, Object.values(mergedFrame));\n return exe\n } catch (error) {\n console.log(this, key)\n console.error(error)\n }\n return undefined\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 // check if the first part is part of the component\n if (firstPart in this.component) {\n // we put this before the key and make resolution (which indeed make a dynamic function creation and execution)\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('', '', '')\n // this.component.state.setValue(key, value)\n }\n\n push(frame: Record<string, any>) {\n this.stack.unshift(frame)\n }\n pop() {\n this.stack.shift()\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) {\n return\n }\n const root = !updates\n updates = updates ?? new ODOM.BatchActions()\n this.updatingBindings = true\n this.bindings.forEach(b => this.updateBinding(b, updates));\n if(root) {\n await updates.commit()\n }\n this.updatingBindings = false\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 } else if (binding.type === 'interpolation') {\n updates.add(async () => {\n await binding.node.setContentText(binding.template?.replace(/\\{\\{(.*?)\\}\\}/g, (_, k) => {\n k = k.trim();\n return normaliseValue(binding.context.resolve(k))\n }) ?? '');\n })\n\n } else if (binding.type === 'attribute') {\n const name = binding.key\n const v = normaliseValue(this.resolve(binding.template!))\n if (name === 'class') {\n // expand class\n updates.add(() => this.expandClass(binding.node, v))\n } else if (name === 'style') {\n this.expandStyle(binding.node, v)\n } else if (typeof v !== 'object' && typeof v !== 'function' && typeof v !== 'symbol' && typeof v !== 'undefined') {\n\n updates.add(() => binding.node.setAttribute(name, v.toString()))\n\n }\n } else 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 binding.context.updateBindings()\n binding.context.updateDirectives()\n } catch (error) {\n console.error(error)\n }\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 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 if (entry) {\n node = entry.node;\n ctx = entry.ctx;\n\n console.log('Reusing entry')\n ctx.stack = [{ [d.item!]: val }, ...d.context.stack];\n if (node.uid !== (await last.nextSibling())?.uid) {\n await last.after(node)\n }\n await Promise.all([ctx.updateBindings(), ctx.updateDirectives()])\n } else {\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 node = (await d.node.cloneNode(true))!;\n await ctx.render(node); \n await last.after(node)\n ctx.updateDirectives();\n }\n\n last = node;\n newChildren.set(key, { node, ctx });\n }\n\n for (const [key, entry] of oldChildren.entries()) {\n if (!newChildren.has(key)) {\n this.unmountComponent(entry.node);\n updates.add(() => entry.node.removeAndRelease())\n }\n }\n d.children = newChildren;\n\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 await Promise.all([this.updateBindings(), this.updateDirectives()])\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 matches = node.textContent?.match(/\\{\\{(.*?)\\}\\}/g);\n if (matches) {\n matches.forEach(m => {\n const key = m.replace(/[{}]/g, \"\").trim();\n this.bind({ type: 'interpolation', node, key, template: node.textContent, 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>>(hostNode: ODOM.OElement, component: OComponentType<T, O>, parentContext: RenderContext | null, props: Record<string, { name: string, value: any, expr?: string }> = {}, emits: O = {} as O) {\n if (this.mountedComponents.has(hostNode)) {\n return\n }\n const newCtx = new RenderContext(this.app, {} as OComponent, this)\n const handledProps = {} as T\n Object.keys(props).forEach(k => {\n const p = props[k]\n if (p.expr) {\n // create a binding\n this.bind({\n type: 'prop',\n node: hostNode,\n key: k,\n context: newCtx,\n template: p.expr\n })\n }\n handledProps[k as keyof T] = p.value\n })\n\n const instance = await o(component, handledProps, emits);\n newCtx.component = instance\n newCtx.stack = []\n this.mountedComponents.set(hostNode, instance)\n let batch = hostNode.updates()\n Object.keys(props).filter(e => !props[e].expr).forEach(attr => batch.setAttribute(attr, props[attr].value))\n let hostClasses: string[] = (instance as any)['hostClasses'] ?? []\n if (hostClasses) {\n hostClasses = typeof hostClasses === 'string' ? [hostClasses] : hostClasses as string[]\n }\n hostClasses.push('o-component-host')\n if (hostNode.tag.toLowerCase() !== 'div') {\n hostClasses.push('c-' + hostNode.tag.toLowerCase())\n }\n batch.addClass(...hostClasses)\n await batch.exec()\n await instance.decorateHostElement(hostNode)\n // register dependants components in this context\n const dependants = (instance as any)['use'] as Record<string, OComponentType> ?? {}\n Object.keys(dependants).forEach(d => {\n const dep = dependants[d]\n const k = /*(dep as any)['tag'] ?? */ d\n newCtx.componentsRegistry.register(k, dep)\n })\n instance.willMount()\n // append css if any \n if (!(component as any)['cssInstance']) {\n const css = instance.style ? instance.style()?.toString() : (instance as any)['css'] as string\n if (css) {\n (component as any)['cssInstance'] ??= await OUID.injectComponentStyles(css);\n }\n }\n const styleInstance = (component as any)['cssInstance']\n if (styleInstance) {\n // track how many times it has been referenced\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 const hostChildren = await hostNode.childNodes()\n // if the component implements render, we use it to generate the content\n if (instance.render) {\n const rendered = await instance.render(newCtx)\n if (rendered) {\n rendered.attachTo(hostNode)\n }\n } else {\n await hostNode.setHTML((instance as any)['template'].trim());\n }\n\n const slots = await hostNode.queryAll('slot')\n if (slots) {\n // there are some slot, so we make injections\n const promise = slots.filter(s => !s.classes?.includes('hydrated')).map(async slot => {\n const name = slot.attribute('name')\n for (const node of hostChildren.filter(e => {\n if (!name) {\n return e.type !== 'Element' || !e.hasAttribute('slot')\n }\n return name && e.type === 'Element' && e.attribute('slot') === name\n })) {\n // await slotParent?.insertBefore(node, slot)\n await node.setAttribute('slotted', 'true')\n await slot.appendChild(node)\n await this.render(node)\n }\n })\n await Promise.all(promise)\n // this.updateBindings()\n // this.updateDirectives()\n }\n\n ; (instance as any)['_hostElement'] = hostNode\n instance['parent'] = parentContext?.component ?? undefined\n instance.provide(RenderContext.PROVIDE_TOKEN, this)\n // attach rootEl to this component\n const children = await hostNode.childNodes()\n await Promise.all(children.map(c => newCtx.render(c, { skipSlotted: true })))\n // await newCtx.render(hostNode, { skipSlotted: true }); // will create a loop\n newCtx.updateDirectives();\n instance.onMounted()\n await newCtx.hydradationActions.commit()\n instance.state.watch(() => {\n newCtx.updateBindings();\n newCtx.updateDirectives();\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 = { type: 'model' | 'interpolation' | 'attribute' | 'prop', node: ODOM.OElement, key: string, template?: string | null, context: RenderContext }\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 console.log('Injecting app css', 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 console.log('Mounting app on', host)\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 console.log('Router mounted')\n this.router?.bind(this).then((handler) => {\n handler?.();\n })\n }\n willUnmount(): void {\n console.log('Router will unmount')\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 console.log('Handling routing', this)\n const path = (await this.windowObject?.getProperty<string>('location.pathname'))! // await OUID.currentPath();\n const matched = this.resolve(path);\n console.log('Matched::', matched)\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 console.log('Outlet', outlet)\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 { 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 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"]}
|