apprun 3.33.3 → 3.33.5
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/README.md +18 -18
- package/WHATSNEW.md +5 -4
- package/apprun-cli.js +14 -3
- package/apprun.d.ts +1 -1
- package/cli/export.js +92 -0
- package/cli/import.js +68 -0
- package/dist/apprun-dev-tools.js +2 -1
- package/dist/apprun-dev-tools.js.LICENSE.txt +1 -13
- package/dist/apprun-dev-tools.js.map +1 -1
- package/dist/apprun-html.esm.js +1 -1
- package/dist/apprun-html.esm.js.map +1 -1
- package/dist/apprun-html.js +1 -1
- package/dist/apprun-html.js.map +1 -1
- package/dist/apprun-play-html.esm.js +3 -3
- package/dist/apprun-play-html.esm.js.map +1 -1
- package/dist/apprun-play.js.map +1 -1
- package/dist/apprun.esm.js.map +1 -1
- package/dist/apprun.js.map +1 -1
- package/esm/apprun-dev-tools.js +60 -4
- package/esm/apprun-dev-tools.js.map +1 -1
- package/esm/vdom-lit-html.js +1 -1
- package/esm/vdom-lit-html.js.map +1 -1
- package/esm/vdom-to-html.js +1 -1
- package/esm/vdom-to-html.js.map +1 -1
- package/index.html +1 -5
- package/package.json +5 -1
- package/src/app.ts +1 -1
- package/src/apprun-dev-tools.tsx +75 -17
- package/src/vdom-lit-html.ts +1 -1
- package/src/vdom-to-html.tsx +1 -1
- package/webpack.config.cjs +0 -1
- package/dist/apprun-code.js +0 -2
- package/dist/apprun-code.js.map +0 -1
package/dist/apprun.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apprun.esm.js","sources":["../src/app.ts","../src/directive.ts","../src/vdom-my.ts","../src/web-component.ts","../src/decorator.ts","../src/component.ts","../src/router.ts","../src/apprun.ts"],"sourcesContent":["import { EventOptions} from './types'\nexport class App {\n\n private _events: Object;\n\n public start;\n public h;\n public createElement;\n public render;\n public Fragment;\n public webComponent;\n public safeHTML;\n public use_render;\n public use_react;\n\n constructor() {\n this._events = {};\n }\n\n on(name: string, fn: (...args) => void, options: EventOptions = {}): void {\n this._events[name] = this._events[name] || [];\n this._events[name].push({ fn, options });\n }\n\n off(name: string, fn: (...args) => void): void {\n const subscribers = this._events[name] || [];\n\n this._events[name] = subscribers.filter((sub) => sub.fn !== fn);\n }\n\n find(name: string): any {\n return this._events[name];\n }\n\n run(name: string, ...args): number {\n const subscribers = this.getSubscribers(name, this._events);\n console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);\n subscribers.forEach((sub) => {\n const { fn, options } = sub;\n if (options.delay) {\n this.delay(name, fn, args, options);\n } else {\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n }\n return !sub.options.once;\n });\n\n return subscribers.length;\n }\n\n once(name: string, fn, options: EventOptions = {}): void {\n this.on(name, fn, { ...options, once: true });\n }\n\n private delay(name, fn, args, options): void {\n if (options._t) clearTimeout(options._t);\n options._t = setTimeout(() => {\n clearTimeout(options._t);\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n }, options.delay);\n }\n\n runAsync(name: string, ...args): Promise<any[]> {\n const subscribers = this.getSubscribers(name, this._events);\n console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);\n const promises = subscribers.map(sub => {\n const { fn, options } = sub;\n return Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n });\n return Promise.all(promises);\n }\n\n query(name: string, ...args): Promise<any[]> {\n return this.query(name, ...args);\n }\n\n private getSubscribers(name: string, events) {\n const subscribers = events[name] || [];\n\n // Update the list of subscribers by pulling out those which will run once.\n // We must do this update prior to running any of the events in case they\n // cause additional events to be turned off or on.\n events[name] = subscribers.filter((sub) => {\n return !sub.options.once;\n });\n Object.keys(events).filter(evt => evt.endsWith('*') && name.startsWith(evt.replace('*', '')))\n .sort((a, b) => b.length - a.length)\n .forEach(evt => subscribers.push(...events[evt].map(sub => ({\n ...sub,\n options: { ...sub.options, event: name }\n }))));\n return subscribers;\n }\n}\n\nconst AppRunVersions = 'AppRun-3';\nlet app: App;\nconst root = (typeof self === 'object' && self.self === self && self) ||\n (typeof global === 'object' && global.global === global && global)\nif (root['app'] && root['_AppRunVersions']) {\n app = root['app'];\n} else {\n app = new App();\n root['app'] = app;\n root['_AppRunVersions'] = AppRunVersions;\n}\nexport default app;\n","import app from './app';\n\nconst getStateValue = (component, name) => {\n return (name ? component['state'][name] : component['state']) || '';\n}\n\nconst setStateValue = (component, name, value) => {\n if (name) {\n const state = component['state'] || {};\n state[name] = value;\n component.setState(state);\n } else {\n component.setState(value);\n }\n}\n\nconst apply_directive = (key: string, props: {}, tag, component) => {\n if (key.startsWith('$on')) {\n const event = props[key];\n key = key.substring(1)\n if (typeof event === 'boolean') {\n props[key] = e => component.run ? component.run(key, e) : app.run(key, e);\n } else if (typeof event === 'string') {\n props[key] = e => component.run ? component.run(event, e) : app.run(event, e);\n } else if (typeof event === 'function') {\n props[key] = e => component.setState(event(component.state, e));\n } else if (Array.isArray(event)) {\n const [handler, ...p] = event;\n if (typeof handler === 'string') {\n props[key] = e => component.run ? component.run(handler, ...p, e) : app.run(handler, ...p, e);\n } else if (typeof handler === 'function') {\n props[key] = e => component.setState(handler(component.state, ...p, e));\n }\n }\n\n } else if (key === '$bind') {\n const type = props['type'] || 'text';\n const name = typeof props[key] === 'string' ? props[key] : props['name'];\n if (tag === 'input') {\n switch (type) {\n case 'checkbox':\n props['checked'] = getStateValue(component, name);\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.checked);\n break;\n case 'radio':\n props['checked'] = getStateValue(component, name) === props['value'];\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.value);\n break;\n case 'number':\n case 'range':\n props['value'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, Number(e.target.value));\n break;\n default:\n props['value'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, e.target.value);\n }\n } else if (tag === 'select') {\n props['value'] = getStateValue(component, name);\n props['onchange'] = e => {\n if (!e.target.multiple) { // multiple selection use $bind on option\n setStateValue(component, name || e.target.name, e.target.value);\n }\n }\n } else if (tag === 'option') {\n props['selected'] = getStateValue(component, name);\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.selected);\n } else if (tag === 'textarea') {\n props['innerHTML'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, e.target.value);\n }\n } else {\n app.run('$', { key, tag, props, component });\n }\n}\n\nconst directive = (vdom, component) => {\n if (Array.isArray(vdom)) {\n return vdom.map(element => directive(element, component));\n } else {\n let { type, tag, props, children } = vdom;\n tag = tag || type;\n children = children || props?.children;\n if (props) Object.keys(props).forEach(key => {\n if (key.startsWith('$')) {\n apply_directive(key, props, tag, component);\n delete props[key];\n }\n });\n if (children) directive(children, component);\n return vdom;\n }\n}\n\nexport default directive;","import { VDOM, VNode } from './types';\nimport directive from './directive';\nexport type Element = any; //HTMLElement | SVGSVGElement | SVGElement;\n\nexport function Fragment(props, ...children): any[] {\n return collect(children);\n}\n\nconst ATTR_PROPS = '_props';\n\nfunction collect(children) {\n const ch = [];\n const push = (c) => {\n if (c !== null && c !== undefined && c !== '' && c !== false) {\n ch.push((typeof c === 'function' || typeof c === 'object') ? c : `${c}`);\n }\n }\n children && children.forEach(c => {\n if (Array.isArray(c)) {\n c.forEach(i => push(i));\n } else {\n push(c);\n }\n });\n return ch;\n}\n\nexport function createElement(tag: string | Function | [], props?: {}, ...children) {\n const ch = collect(children);\n if (typeof tag === 'string') return { tag, props, children: ch };\n else if (Array.isArray(tag)) return tag; // JSX fragments - babel\n else if (tag === undefined && children) return ch; // JSX fragments - typescript\n else if (Object.getPrototypeOf(tag).__isAppRunComponent) return { tag, props, children: ch } // createComponent(tag, { ...props, children });\n else if (typeof tag === 'function') return tag(props, ch);\n else throw new Error(`Unknown tag in vdom ${tag}`);\n};\n\nconst keyCache = new WeakMap();\n\nexport const updateElement = (element: Element | string, nodes: VDOM, component = {}) => {\n // tslint:disable-next-line\n if (nodes == null || nodes === false) return;\n const el = (typeof element === 'string' && element) ?\n document.getElementById(element) || document.querySelector(element) : element;\n nodes = directive(nodes, component);\n render(el, nodes, component);\n}\n\nfunction render(element: Element, nodes: VDOM, parent = {}) {\n // tslint:disable-next-line\n if (nodes == null || nodes === false) return;\n nodes = createComponent(nodes, parent);\n if (!element) return;\n const isSvg = element.nodeName === \"SVG\";\n if (Array.isArray(nodes)) {\n updateChildren(element, nodes, isSvg);\n } else {\n updateChildren(element, [nodes], isSvg);\n }\n}\n\nfunction same(el: Element, node: VNode) {\n // if (!el || !node) return false;\n const key1 = el.nodeName;\n const key2 = `${node.tag || ''}`;\n return key1.toUpperCase() === key2.toUpperCase();\n}\n\nfunction update(element: Element, node: VNode, isSvg: boolean) {\n if (node['_op'] === 3) return;\n // console.assert(!!element);\n isSvg = isSvg || node.tag === \"svg\";\n if (!same(element, node)) {\n element.parentNode.replaceChild(create(node, isSvg), element);\n return;\n }\n !(node['_op'] & 2) && updateChildren(element, node.children, isSvg);\n !(node['_op'] & 1) && updateProps(element, node.props, isSvg);\n}\n\nfunction updateChildren(element, children, isSvg: boolean) {\n const old_len = element.childNodes?.length || 0;\n const new_len = children?.length || 0;\n const len = Math.min(old_len, new_len);\n for (let i = 0; i < len; i++) {\n const child = children[i];\n if (child['_op'] === 3) continue;\n const el = element.childNodes[i];\n if (typeof child === 'string') {\n if (el.textContent !== child) {\n if (el.nodeType === 3) {\n el.nodeValue = child\n } else {\n element.replaceChild(createText(child), el);\n }\n }\n } else if (child instanceof HTMLElement || child instanceof SVGElement) {\n element.insertBefore(child, el);\n } else {\n const key = child.props && child.props['key'];\n if (key) {\n if (el.key === key) {\n update(element.childNodes[i], child, isSvg);\n } else {\n // console.log(el.key, key);\n const old = keyCache[key];\n if (old) {\n const temp = old.nextSibling;\n element.insertBefore(old, el);\n temp ? element.insertBefore(el, temp) : element.appendChild(el);\n update(element.childNodes[i], child, isSvg);\n } else {\n element.replaceChild(create(child, isSvg), el);\n }\n }\n } else {\n update(element.childNodes[i], child, isSvg);\n }\n }\n }\n\n let n = element.childNodes?.length || 0;\n while (n > len) {\n element.removeChild(element.lastChild);\n n--;\n }\n\n if (new_len > len) {\n const d = document.createDocumentFragment();\n for (let i = len; i < children.length; i++) {\n d.appendChild(create(children[i], isSvg));\n }\n element.appendChild(d);\n }\n}\n\nexport const safeHTML = (html: string) => {\n const div = document.createElement('section');\n div.insertAdjacentHTML('afterbegin', html)\n return Array.from(div.children);\n}\n\nfunction createText(node) {\n if (node?.indexOf('_html:') === 0) { // ?\n const div = document.createElement('div');\n div.insertAdjacentHTML('afterbegin', node.substring(6))\n return div;\n } else {\n return document.createTextNode(node??'');\n }\n}\n\nfunction create(node: VNode | string | HTMLElement | SVGElement, isSvg: boolean): Element {\n // console.assert(node !== null && node !== undefined);\n if ((node instanceof HTMLElement) || (node instanceof SVGElement)) return node;\n if (typeof node === \"string\") return createText(node);\n if (!node.tag || (typeof node.tag === 'function')) return createText(JSON.stringify(node));\n isSvg = isSvg || node.tag === \"svg\";\n const element = isSvg\n ? document.createElementNS(\"http://www.w3.org/2000/svg\", node.tag)\n : document.createElement(node.tag);\n\n updateProps(element, node.props, isSvg);\n if (node.children) node.children.forEach(child => element.appendChild(create(child, isSvg)));\n return element\n}\n\nfunction mergeProps(oldProps: {}, newProps: {}): {} {\n newProps['class'] = newProps['class'] || newProps['className'];\n delete newProps['className'];\n const props = {};\n if (oldProps) Object.keys(oldProps).forEach(p => props[p] = null);\n if (newProps) Object.keys(newProps).forEach(p => props[p] = newProps[p]);\n return props;\n}\n\nexport function updateProps(element: Element, props: {}, isSvg) {\n // console.assert(!!element);\n const cached = element[ATTR_PROPS] || {};\n props = mergeProps(cached, props || {});\n element[ATTR_PROPS] = props;\n\n for (const name in props) {\n const value = props[name];\n // if (cached[name] === value) continue;\n // console.log('updateProps', name, value);\n if (name.startsWith('data-')) {\n const dname = name.substring(5);\n const cname = dname.replace(/-(\\w)/g, (match) => match[1].toUpperCase());\n if (element.dataset[cname] !== value) {\n if (value || value === \"\") element.dataset[cname] = value;\n else delete element.dataset[cname];\n }\n } else if (name === 'style') {\n if (element.style.cssText) element.style.cssText = '';\n if (typeof value === 'string') element.style.cssText = value;\n else {\n for (const s in value) {\n if (element.style[s] !== value[s]) element.style[s] = value[s];\n }\n }\n } else if (name.startsWith('xlink')) {\n const xname = name.replace('xlink', '').toLowerCase();\n if (value == null || value === false) {\n element.removeAttributeNS('http://www.w3.org/1999/xlink', xname);\n } else {\n element.setAttributeNS('http://www.w3.org/1999/xlink', xname, value);\n }\n } else if (name.startsWith('on')) {\n if (!value || typeof value === 'function') {\n element[name] = value;\n } else if (typeof value === 'string') {\n if (value) element.setAttribute(name, value);\n else element.removeAttribute(name);\n }\n } else if (/^id$|^class$|^list$|^readonly$|^contenteditable$|^role|-|^for$/g.test(name) || isSvg) {\n if (element.getAttribute(name) !== value) {\n if (value) element.setAttribute(name, value);\n else element.removeAttribute(name);\n }\n } else if (element[name] !== value) {\n element[name] = value;\n }\n if (name === 'key' && value) keyCache[value] = element;\n }\n if (props && typeof props['ref'] === 'function') {\n window.requestAnimationFrame(() => props['ref'](element));\n }\n}\n\nfunction render_component(node, parent, idx) {\n const { tag, props, children } = node;\n let key = `_${idx}`;\n let id = props && props['id'];\n if (!id) id = `_${idx}${Date.now()}`;\n else key = id;\n let asTag = 'section';\n if (props && props['as']) {\n asTag = props['as'];\n delete props['as'];\n }\n if (!parent.__componentCache) parent.__componentCache = {};\n let component = parent.__componentCache[key];\n if (!component || !(component instanceof tag) || !component.element) {\n const element = document.createElement(asTag);\n component = parent.__componentCache[key] = new tag({ ...props, children }).mount(element, { render: true });\n } else {\n component.renderState(component.state);\n }\n if (component.mounted) {\n const new_state = component.mounted(props, children, component.state);\n (typeof new_state !== 'undefined') && component.setState(new_state);\n }\n updateProps(component.element, props, false);\n return component.element;\n}\n\nfunction createComponent(node, parent, idx = 0) {\n if (typeof node === 'string') return node;\n if (Array.isArray(node)) return node.map(child => createComponent(child, parent, idx++));\n let vdom = node;\n if (node && typeof node.tag === 'function' && Object.getPrototypeOf(node.tag).__isAppRunComponent) {\n vdom = render_component(node, parent, idx);\n }\n if (vdom && Array.isArray(vdom.children)) {\n const new_parent = vdom.props?._component;\n if (new_parent) {\n let i = 0;\n vdom.children = vdom.children.map(child => createComponent(child, new_parent, i++));\n } else {\n vdom.children = vdom.children.map(child => createComponent(child, parent, idx++));\n }\n }\n return vdom;\n}\n","declare var customElements;\n\nexport type CustomElementOptions = {\n render?: boolean;\n shadow?: boolean;\n history?: boolean;\n global_event?: boolean;\n observedAttributes?: string[];\n};\n\nexport const customElement = (componentClass, options: CustomElementOptions = {}) => class CustomElement extends HTMLElement {\n private _shadowRoot;\n private _component;\n private _attrMap: (arg0: string) => string;\n public on;\n public run;\n constructor() {\n super();\n }\n get component() { return this._component; }\n get state() { return this._component.state; }\n\n static get observedAttributes() {\n // attributes need to be set to lowercase in order to get observed\n return (options.observedAttributes || []).map(attr => attr.toLowerCase());\n }\n\n connectedCallback() {\n if (this.isConnected && !this._component) {\n const opts = options || {};\n this._shadowRoot = opts.shadow ? this.attachShadow({ mode: 'open' }) : this;\n const observedAttributes = (opts.observedAttributes || [])\n\n const attrMap = observedAttributes.reduce((map, name) => {\n const lc = name.toLowerCase()\n if (lc !== name) {\n map[lc] = name\n }\n return map\n }, {})\n this._attrMap = (name: string) : string => attrMap[name] || name\n\n const props = {};\n Array.from(this.attributes).forEach(item => props[this._attrMap(item.name)] = item.value);\n\n // add getters/ setters to allow observation on observedAttributes\n observedAttributes.forEach(name => {\n if (this[name] !== undefined) props[name] = this[name];\n Object.defineProperty(this, name, {\n get(): any {\n return props[name];\n },\n set(this: CustomElement, value: unknown) {\n // trigger change event\n this.attributeChangedCallback(name, props[name], value)\n },\n configurable: true,\n enumerable: true\n });\n })\n\n requestAnimationFrame(() => {\n const children = this.children ? Array.from(this.children) : [];\n // children.forEach(el => el.parentElement.removeChild(el));\n this._component = new componentClass({ ...props, children }).mount(this._shadowRoot, opts);\n // attach props to component\n this._component._props = props;\n // expose dispatchEvent\n this._component.dispatchEvent = this.dispatchEvent.bind(this)\n if (this._component.mounted) {\n const new_state = this._component.mounted(props, children, this._component.state);\n if (typeof new_state !== 'undefined') this._component.state = new_state;\n }\n this.on = this._component.on.bind(this._component);\n this.run = this._component.run.bind(this._component);\n if (!(opts.render === false)) this._component.run('.');\n });\n }\n }\n\n disconnectedCallback() {\n this._component?.unload?.();\n this._component?.unmount?.();\n this._component = null;\n }\n\n attributeChangedCallback(name: string, oldValue: unknown, value: unknown) {\n if (this._component) {\n // camelCase attributes arrive only in lowercase\n const mappedName = this._attrMap(name);\n // store the new property/ attribute\n this._component._props[mappedName] = value;\n this._component.run('attributeChanged', mappedName, oldValue, value);\n\n if (value !== oldValue && !(options.render === false)) {\n window.requestAnimationFrame(() => {\n // re-render state with new combined props on next animation frame\n this._component.run('.')\n })\n }\n }\n }\n}\n\nexport default (name: string, componentClass, options?: CustomElementOptions) => {\n (typeof customElements !== 'undefined') && customElements.define(name, customElement(componentClass, options))\n}\n","import webComponent, { CustomElementOptions } from './web-component';\n\n// tslint:disable:no-invalid-this\nexport const Reflect = {\n\n meta: new WeakMap(),\n\n defineMetadata(metadataKey, metadataValue, target) {\n if (!this.meta.has(target)) this.meta.set(target, {});\n this.meta.get(target)[metadataKey] = metadataValue;\n },\n\n getMetadataKeys(target) {\n target = Object.getPrototypeOf(target);\n return this.meta.get(target) ? Object.keys(this.meta.get(target)) : [];\n },\n\n getMetadata(metadataKey, target) {\n target = Object.getPrototypeOf(target);\n return this.meta.get(target) ? this.meta.get(target)[metadataKey] : null;\n }\n}\n\nexport function update<E=string>(events?: E, options: any = {}) {\n return (target: any, key: string, descriptor: any) => {\n const name = events ? events.toString() : key;\n Reflect.defineMetadata(`apprun-update:${name}`,\n { name, key, options }, target);\n return descriptor;\n }\n}\n\nexport function on<E = string>(events?: E, options: any = {}) {\n return function (target: any, key: string) {\n const name = events ? events.toString() : key;\n Reflect.defineMetadata(`apprun-update:${name}`,\n { name, key, options }, target)\n }\n}\n\nexport function customElement(name: string, options?: CustomElementOptions) {\n return function _customElement<T extends { new(...args: any[]): {} }>(constructor: T) {\n webComponent(name, constructor, options);\n return constructor;\n }\n}\n\n","\r\nimport app, { App } from './app';\r\nimport { Reflect } from './decorator'\r\nimport { View, Update, ActionDef, ActionOptions, MountOptions, EventOptions } from './types';\r\nimport directive from './directive';\r\n\r\nconst componentCache = new Map();\r\nif (!app.find('get-components')) app.on('get-components', o => o.components = componentCache);\r\n\r\nconst REFRESH = state => state;\r\n\r\nexport class Component<T = any, E = any> {\r\n static __isAppRunComponent = true;\r\n private _app = new App();\r\n private _actions = [];\r\n private _global_events = [];\r\n private _state;\r\n private _history = [];\r\n private _history_idx = -1;\r\n private enable_history;\r\n private global_event;\r\n public element;\r\n public rendered;\r\n public mounted;\r\n public unload;\r\n private tracking_id;\r\n private observer;\r\n\r\n\r\n private renderState(state: T, vdom = null) {\r\n if (!this.view) return;\r\n let html = vdom || this.view(state);\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: html ? '.' : '-',\r\n state,\r\n vdom: html,\r\n el: this.element\r\n });\r\n\r\n if (typeof document !== 'object') return;\r\n\r\n const el = (typeof this.element === 'string' && this.element) ?\r\n document.getElementById(this.element) || document.querySelector(this.element) : this.element;\r\n\r\n if (!el) return;\r\n const tracking_attr = '_c';\r\n if (!this.unload) {\r\n el.removeAttribute && el.removeAttribute(tracking_attr);\r\n } else if (el['_component'] !== this || el.getAttribute(tracking_attr) !== this.tracking_id) {\r\n this.tracking_id = new Date().valueOf().toString();\r\n el.setAttribute(tracking_attr, this.tracking_id);\r\n if (typeof MutationObserver !== 'undefined') {\r\n if (!this.observer) this.observer = new MutationObserver(changes => {\r\n if (changes[0].oldValue === this.tracking_id || !document.body.contains(el)) {\r\n this.unload(this.state);\r\n this.observer.disconnect();\r\n this.observer = null;\r\n }\r\n });\r\n this.observer.observe(document.body, {\r\n childList: true, subtree: true,\r\n attributes: true, attributeOldValue: true, attributeFilter: [tracking_attr]\r\n });\r\n }\r\n }\r\n el['_component'] = this;\r\n\r\n if (!vdom && html) {\r\n html = directive(html, this);\r\n if (this.options.transition && document && document['startViewTransition']) {\r\n document['startViewTransition'](() => app.render(el, html, this));\r\n } else {\r\n app.render(el, html, this);\r\n }\r\n }\r\n this.rendered && this.rendered(this.state);\r\n }\r\n\r\n public setState(state: T, options: ActionOptions & EventOptions\r\n = { render: true, history: false }) {\r\n if (state instanceof Promise) {\r\n // Promise will not be saved or rendered\r\n // state will be saved and rendered when promise is resolved\r\n Promise.resolve(state).then(v => {\r\n this.setState(v, options);\r\n this._state = state;\r\n });\r\n } else {\r\n this._state = state;\r\n if (state == null) return;\r\n this.state = state;\r\n if (options.render !== false) {\r\n // before render state\r\n if (options.transition && document && document['startViewTransition']) {\r\n document['startViewTransition'](() => this.renderState(state));\r\n } else {\r\n this.renderState(state);\r\n }\r\n }\r\n if (options.history !== false && this.enable_history) {\r\n this._history = [...this._history, state];\r\n this._history_idx = this._history.length - 1;\r\n }\r\n if (typeof options.callback === 'function') options.callback(this.state);\r\n }\r\n }\r\n\r\n private _history_prev = () => {\r\n this._history_idx--;\r\n if (this._history_idx >= 0) {\r\n this.setState(this._history[this._history_idx], { render: true, history: false });\r\n }\r\n else {\r\n this._history_idx = 0;\r\n }\r\n };\r\n\r\n private _history_next = () => {\r\n this._history_idx++;\r\n if (this._history_idx < this._history.length) {\r\n this.setState(this._history[this._history_idx], { render: true, history: false });\r\n }\r\n else {\r\n this._history_idx = this._history.length - 1;\r\n }\r\n };\r\n\r\n constructor(\r\n protected state?: T,\r\n protected view?: View<T>,\r\n protected update?: Update<T, E>,\r\n protected options?) {\r\n }\r\n\r\n start = (element = null, options?: MountOptions): Component<T, E> => {\r\n this.mount(element, { render: true, ...options });\r\n if (this.mounted && typeof this.mounted === 'function') {\r\n const new_state = this.mounted({}, [], this.state);\r\n (typeof new_state !== 'undefined') && this.setState(new_state);\r\n }\r\n return this;\r\n }\r\n\r\n public mount(element = null, options?: MountOptions): Component<T, E> {\r\n console.assert(!this.element, 'Component already mounted.')\r\n this.options = options = { ...this.options, ...options };\r\n this.element = element;\r\n this.global_event = options.global_event;\r\n this.enable_history = !!options.history;\r\n\r\n if (this.enable_history) {\r\n this.on(options.history.prev || 'history-prev', this._history_prev);\r\n this.on(options.history.next || 'history-next', this._history_next);\r\n }\r\n\r\n if (options.route) {\r\n this.update = this.update || {};\r\n if (!this.update[options.route]) this.update[options.route] = REFRESH;\r\n }\r\n\r\n this.add_actions();\r\n this.state = this.state ?? this['model'] ?? {};\r\n if (typeof this.state === 'function') this.state = this.state();\r\n\r\n this.setState(this.state, { render: !!options.render, history: true });\r\n\r\n if (app['debug']) {\r\n if (componentCache.get(element)) { componentCache.get(element).push(this) }\r\n else { componentCache.set(element, [this]) }\r\n }\r\n return this;\r\n }\r\n\r\n is_global_event(name: string): boolean {\r\n return name && (\r\n this.global_event ||\r\n this._global_events.indexOf(name) >= 0 ||\r\n name.startsWith('#') || name.startsWith('/') || name.startsWith('@'));\r\n }\r\n\r\n add_action(name: string, action, options: ActionOptions = {}) {\r\n if (!action || typeof action !== 'function') return;\r\n if (options.global) this._global_events.push(name);\r\n this.on(name as any, (...p) => {\r\n\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: '>',\r\n event: name, p,\r\n current_state: this.state,\r\n options\r\n });\r\n\r\n const newState = action(this.state, ...p);\r\n\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: '<',\r\n event: name, p,\r\n newState,\r\n state: this.state,\r\n options\r\n });\r\n\r\n this.setState(newState, options)\r\n }, options);\r\n }\r\n\r\n add_actions() {\r\n const actions = this.update || {};\r\n Reflect.getMetadataKeys(this).forEach(key => {\r\n if (key.startsWith('apprun-update:')) {\r\n const meta = Reflect.getMetadata(key, this)\r\n actions[meta.name] = [this[meta.key].bind(this), meta.options];\r\n }\r\n })\r\n\r\n const all = {};\r\n if (Array.isArray(actions)) {\r\n actions.forEach(act => {\r\n const [name, action, opts] = act as ActionDef<T, E>;\r\n const names = name.toString();\r\n names.split(',').forEach(n => all[n.trim()] = [action, opts])\r\n })\r\n } else {\r\n Object.keys(actions).forEach(name => {\r\n const action = actions[name];\r\n if (typeof action === 'function' || Array.isArray(action)) {\r\n name.split(',').forEach(n => all[n.trim()] = action)\r\n }\r\n })\r\n }\r\n\r\n if (!all['.']) all['.'] = REFRESH;\r\n Object.keys(all).forEach(name => {\r\n const action = all[name];\r\n if (typeof action === 'function') {\r\n this.add_action(name, action);\r\n } else if (Array.isArray(action)) {\r\n this.add_action(name, action[0], action[1]);\r\n }\r\n });\r\n }\r\n\r\n public run(event: E, ...args) {\r\n if (this.state instanceof Promise) {\r\n return Promise.resolve(this.state).then(state => {\r\n this.state = state;\r\n this.run(event, ...args)\r\n });\r\n } else {\r\n const name = event.toString();\r\n return this.is_global_event(name) ?\r\n app.run(name, ...args) :\r\n this._app.run(name, ...args);\r\n }\r\n }\r\n\r\n public on(event: E, fn: (...args) => void, options?: any) {\r\n const name = event.toString();\r\n this._actions.push({ name, fn });\r\n return this.is_global_event(name) ?\r\n app.on(name, fn, options) :\r\n this._app.on(name, fn, options);\r\n }\r\n\r\n public runAsync(event: E, ...args) {\r\n const name = event.toString();\r\n return this.is_global_event(name) ?\r\n app.runAsync(name, ...args) :\r\n this._app.runAsync(name, ...args);\r\n }\r\n\r\n // obsolete\r\n public query(event: E, ...args) {\r\n return this.runAsync(event, ...args);\r\n }\r\n\r\n public unmount() {\r\n this.observer?.disconnect();\r\n this._actions.forEach(action => {\r\n const { name, fn } = action;\r\n this.is_global_event(name) ?\r\n app.off(name, fn) :\r\n this._app.off(name, fn);\r\n });\r\n }\r\n}\r\n","import app from './app';\n\nexport type Route = (url: string, ...args: any[]) => any;\n\nexport const ROUTER_EVENT: string = '//';\nexport const ROUTER_404_EVENT: string = '///';\n\nexport const route: Route = (url: string) => {\n if (!url) url = '#';\n if (url.startsWith('#')) {\n const [name, ...rest] = url.split('/');\n app.run(name, ...rest) || app.run(ROUTER_404_EVENT, name, ...rest);\n app.run(ROUTER_EVENT, name, ...rest);\n } else if (url.startsWith('/')) {\n const [_, name, ...rest] = url.split('/');\n app.run('/' + name, ...rest) || app.run(ROUTER_404_EVENT, '/' + name, ...rest);\n app.run(ROUTER_EVENT, '/' + name, ...rest);\n } else {\n app.run(url) || app.run(ROUTER_404_EVENT, url);\n app.run(ROUTER_EVENT, url);\n }\n}\nexport default route;","import app, { App } from './app';\nimport { createElement, render, Fragment, safeHTML } from './vdom';\nimport { Component } from './component';\nimport { VNode, View, Action, Update, EventOptions, ActionOptions, MountOptions, AppStartOptions } from './types';\nimport { on, update, customElement } from './decorator';\nimport webComponent, { CustomElementOptions } from './web-component';\nimport { Route, route, ROUTER_EVENT, ROUTER_404_EVENT } from './router';\n\nexport interface IApp {\n start<T, E = any>(element?: Element | string, model?: T, view?: View<T>, update?: Update<T, E>,\n options?: AppStartOptions<T>): Component<T, E>;\n on(name: string, fn: (...args: any[]) => void, options?: any): void;\n off(name: string, fn: (...args: any[]) => void): void;\n run(name: string, ...args: any[]): number;\n find(name: string): any | any[];\n h(tag: string | Function, props, ...children): VNode | VNode[];\n createElement(tag: string | Function, props, ...children): VNode | VNode[];\n render(element: Element | string, node: VNode): void;\n Fragment(props, ...children): any[];\n route?: Route;\n webComponent(name: string, componentClass, options?: CustomElementOptions): void;\n safeHTML(html: string): any[];\n use_render(render, mode?: 0 | 1);\n use_react(createRoot);\n}\n\napp.h = app.createElement = createElement;\napp.render = render;\napp.Fragment = Fragment;\napp.webComponent = webComponent;\napp.safeHTML = safeHTML;\n\napp.start = <T, E = any>(element?: Element | string, model?: T, view?: View<T>, update?: Update<T, E>,\n options?: AppStartOptions<T>): Component<T, E> => {\n const opts = { render: true, global_event: true, ...options };\n const component = new Component<T, E>(model, view, update);\n if (options && options.rendered) component.rendered = options.rendered;\n if (options && options.mounted) component.mounted = options.mounted;\n component.start(element, opts);\n return component;\n};\n\nconst NOOP = _ => {/* Intentionally empty */ }\napp.on('$', NOOP);\napp.on('debug', _ => NOOP);\napp.on(ROUTER_EVENT, NOOP);\napp.on('#', NOOP);\napp['route'] = route;\napp.on('route', url => app['route'] && app['route'](url));\n\nif (typeof document === 'object') {\n document.addEventListener(\"DOMContentLoaded\", () => {\n if (app['route'] === route) {\n window.onpopstate = () => route(location.hash);\n document.body.hasAttribute('apprun-no-init') || app['no-init-route'] || route(location.hash);\n }\n });\n}\nexport type StatelessComponent<T = {}> = (args: T) => string | VNode | void;\nexport { App, app, Component, View, Action, Update, on, update, EventOptions, ActionOptions, MountOptions, Fragment, safeHTML }\nexport { update as event };\nexport { ROUTER_EVENT, ROUTER_404_EVENT };\nexport { customElement, CustomElementOptions, AppStartOptions };\nexport default app as IApp;\n\nif (typeof window === 'object') {\n window['Component'] = Component;\n window['_React'] = window['React'];\n window['React'] = app;\n window['on'] = on;\n window['customElement'] = customElement;\n window['safeHTML'] = safeHTML;\n}\n\napp.use_render = (render, mode = 0) =>\n mode === 0 ?\n app.render = (el, vdom) => render(vdom, el) : // react style\n app.render = (el, vdom) => render(el, vdom); // apprun style\n\napp.use_react = (React, ReactDOM) => {\n app.h = app.createElement = React.createElement;\n app.Fragment = React.Fragment;\n app.render = (el, vdom) => ReactDOM.render(vdom, el);\n if (React.version && React.version.startsWith('18')) {\n app.render = (el, vdom) => {\n if (!el || !vdom) return;\n if (!el._root) el._root = ReactDOM.createRoot(el);\n el._root.render(vdom);\n }\n }\n}\n"],"names":["App","constructor","this","_events","on","name","fn","options","push","off","subscribers","filter","sub","find","run","args","getSubscribers","console","assert","length","forEach","delay","Object","keys","apply","once","assign","_t","clearTimeout","setTimeout","runAsync","promises","map","Promise","all","query","events","evt","endsWith","startsWith","replace","sort","a","b","event","app","root","self","global","app$1","getStateValue","component","setStateValue","value","state","setState","directive","vdom","Array","isArray","element","type","tag","props","children","key","substring","e","handler","p","target","checked","Number","multiple","selected","apply_directive","Fragment","collect","ATTR_PROPS","ch","c","i","keyCache","WeakMap","update","node","isSvg","el","key1","nodeName","key2","toUpperCase","same","parentNode","replaceChild","create","updateChildren","updateProps","old_len","_a","childNodes","new_len","len","Math","min","child","textContent","nodeType","nodeValue","createText","HTMLElement","SVGElement","insertBefore","old","temp","nextSibling","appendChild","n","_b","removeChild","lastChild","d","document","createDocumentFragment","safeHTML","html","div","createElement","insertAdjacentHTML","from","indexOf","createTextNode","JSON","stringify","createElementNS","cached","oldProps","newProps","mergeProps","cname","match","dataset","style","cssText","s","xname","toLowerCase","removeAttributeNS","setAttributeNS","setAttribute","removeAttribute","test","getAttribute","window","requestAnimationFrame","createComponent","parent","idx","getPrototypeOf","__isAppRunComponent","id","Date","now","asTag","__componentCache","renderState","mount","render","mounted","new_state","render_component","new_parent","_component","customElement","componentClass","super","observedAttributes","attr","connectedCallback","isConnected","opts","_shadowRoot","shadow","attachShadow","mode","attrMap","reduce","lc","_attrMap","attributes","item","undefined","defineProperty","get","set","attributeChangedCallback","configurable","enumerable","_props","dispatchEvent","bind","disconnectedCallback","unload","_d","_c","unmount","oldValue","mappedName","webComponent","customElements","define","Reflect","meta","defineMetadata","metadataKey","metadataValue","has","getMetadataKeys","getMetadata","descriptor","toString","componentCache","Map","o","components","REFRESH","Component","view","_","getElementById","querySelector","tracking_attr","tracking_id","valueOf","MutationObserver","observer","changes","body","contains","disconnect","observe","childList","subtree","attributeOldValue","attributeFilter","transition","rendered","history","resolve","then","v","_state","enable_history","_history","_history_idx","callback","_app","_actions","_global_events","_history_prev","_history_next","start","global_event","prev","next","route","add_actions","is_global_event","add_action","action","current_state","newState","actions","act","split","trim","ROUTER_EVENT","ROUTER_404_EVENT","url","rest","h","Error","nodes","model","NOOP","addEventListener","onpopstate","location","hash","hasAttribute","use_render","use_react","React","ReactDOM","version","_root","createRoot"],"mappings":"MACaA,EAcX,WAAAC,GACEC,KAAKC,QAAU,EAChB,CAED,EAAAC,CAAGC,EAAcC,EAAuBC,EAAwB,CAAA,GAC9DL,KAAKC,QAAQE,GAAQH,KAAKC,QAAQE,IAAS,GAC3CH,KAAKC,QAAQE,GAAMG,KAAK,CAAEF,KAAIC,WAC/B,CAED,GAAAE,CAAIJ,EAAcC,GAChB,MAAMI,EAAcR,KAAKC,QAAQE,IAAS,GAE1CH,KAAKC,QAAQE,GAAQK,EAAYC,QAAQC,GAAQA,EAAIN,KAAOA,GAC7D,CAED,IAAAO,CAAKR,GACH,OAAOH,KAAKC,QAAQE,EACrB,CAED,GAAAS,CAAIT,KAAiBU,GACnB,MAAML,EAAcR,KAAKc,eAAeX,EAAMH,KAAKC,SAYnD,OAXAc,QAAQC,OAAOR,GAAeA,EAAYS,OAAS,EAAG,4BAA8Bd,GACpFK,EAAYU,SAASR,IACnB,MAAMN,GAAEA,EAAEC,QAAEA,GAAYK,EAMxB,OALIL,EAAQc,MACVnB,KAAKmB,MAAMhB,EAAMC,EAAIS,EAAMR,GAE3Be,OAAOC,KAAKhB,GAASY,OAAS,EAAIb,EAAGkB,MAAMtB,KAAM,IAAIa,EAAMR,IAAYD,EAAGkB,MAAMtB,KAAMa,IAEhFH,EAAIL,QAAQkB,IAAI,IAGnBf,EAAYS,MACpB,CAED,IAAAM,CAAKpB,EAAcC,EAAIC,EAAwB,CAAA,GAC7CL,KAAKE,GAAGC,EAAMC,EAASgB,OAAAI,OAAAJ,OAAAI,OAAA,CAAA,EAAAnB,GAAS,CAAAkB,MAAM,IACvC,CAEO,KAAAJ,CAAMhB,EAAMC,EAAIS,EAAMR,GACxBA,EAAQoB,IAAIC,aAAarB,EAAQoB,IACrCpB,EAAQoB,GAAKE,YAAW,KACtBD,aAAarB,EAAQoB,IACrBL,OAAOC,KAAKhB,GAASY,OAAS,EAAIb,EAAGkB,MAAMtB,KAAM,IAAIa,EAAMR,IAAYD,EAAGkB,MAAMtB,KAAMa,EAAK,GAC1FR,EAAQc,MACZ,CAED,QAAAS,CAASzB,KAAiBU,GACxB,MAAML,EAAcR,KAAKc,eAAeX,EAAMH,KAAKC,SACnDc,QAAQC,OAAOR,GAAeA,EAAYS,OAAS,EAAG,4BAA8Bd,GACpF,MAAM0B,EAAWrB,EAAYsB,KAAIpB,IAC/B,MAAMN,GAAEA,EAAEC,QAAEA,GAAYK,EACxB,OAAOU,OAAOC,KAAKhB,GAASY,OAAS,EAAIb,EAAGkB,MAAMtB,KAAM,IAAIa,EAAMR,IAAYD,EAAGkB,MAAMtB,KAAMa,EAAK,IAEpG,OAAOkB,QAAQC,IAAIH,EACpB,CAED,KAAAI,CAAM9B,KAAiBU,GACrB,OAAOb,KAAKiC,MAAM9B,KAASU,EAC5B,CAEO,cAAAC,CAAeX,EAAc+B,GACnC,MAAM1B,EAAc0B,EAAO/B,IAAS,GAcpC,OATA+B,EAAO/B,GAAQK,EAAYC,QAAQC,IACzBA,EAAIL,QAAQkB,OAEtBH,OAAOC,KAAKa,GAAQzB,QAAO0B,GAAOA,EAAIC,SAAS,MAAQjC,EAAKkC,WAAWF,EAAIG,QAAQ,IAAK,OACrFC,MAAK,CAACC,EAAGC,IAAMA,EAAExB,OAASuB,EAAEvB,SAC5BC,SAAQiB,GAAO3B,EAAYF,QAAQ4B,EAAOC,GAAKL,KAAIpB,GAC/CU,OAAAI,OAAAJ,OAAAI,OAAA,CAAA,EAAAd,GACH,CAAAL,uCAAcK,EAAIL,SAAO,CAAEqC,MAAOvC,WAE/BK,CACR,EAIH,IAAImC,EACJ,MAAMC,EAAwB,iBAATC,MAAqBA,KAAKA,OAASA,MAAQA,MAC3C,iBAAXC,QAAuBA,OAAOA,SAAWA,QAAUA,OACzDF,EAAU,KAAKA,EAAsB,gBACvCD,EAAMC,EAAU,KAEhBD,EAAM,IAAI7C,EACV8C,EAAU,IAAID,EACdC,EAAsB,gBATD,YAWvB,IAAAG,EAAeJ,ECxGf,MAAMK,EAAgB,CAACC,EAAW9C,KACxBA,EAAO8C,EAAiB,MAAE9C,GAAQ8C,EAAiB,QAAM,GAG7DC,EAAgB,CAACD,EAAW9C,EAAMgD,KACtC,GAAIhD,EAAM,CACR,MAAMiD,EAAQH,EAAiB,OAAK,CAAA,EACpCG,EAAMjD,GAAQgD,EACdF,EAAUI,SAASD,EACpB,MACCH,EAAUI,SAASF,EACpB,EA+DGG,EAAY,CAACC,EAAMN,KACvB,GAAIO,MAAMC,QAAQF,GAChB,OAAOA,EAAKzB,KAAI4B,GAAWJ,EAAUI,EAAST,KACzC,CACL,IAAIU,KAAEA,EAAIC,IAAEA,EAAGC,MAAEA,EAAKC,SAAEA,GAAaP,EAUrC,OATAK,EAAMA,GAAOD,EACbG,EAAWA,IAAYD,aAAK,EAALA,EAAOC,UAC1BD,GAAOzC,OAAOC,KAAKwC,GAAO3C,SAAQ6C,IAChCA,EAAI1B,WAAW,OApED,EAAC0B,EAAaF,EAAWD,EAAKX,KACpD,GAAIc,EAAI1B,WAAW,OAAQ,CACzB,MAAMK,EAAQmB,EAAME,GAEpB,GADAA,EAAMA,EAAIC,UAAU,GACC,kBAAVtB,EACTmB,EAAME,GAAOE,GAAKhB,EAAUrC,IAAMqC,EAAUrC,IAAImD,EAAKE,GAAKtB,EAAI/B,IAAImD,EAAKE,QAClE,GAAqB,iBAAVvB,EAChBmB,EAAME,GAAOE,GAAKhB,EAAUrC,IAAMqC,EAAUrC,IAAI8B,EAAOuB,GAAKtB,EAAI/B,IAAI8B,EAAOuB,QACtE,GAAqB,mBAAVvB,EAChBmB,EAAME,GAAOE,GAAKhB,EAAUI,SAASX,EAAMO,EAAUG,MAAOa,SACvD,GAAIT,MAAMC,QAAQf,GAAQ,CAC/B,MAAOwB,KAAYC,GAAKzB,EACD,iBAAZwB,EACTL,EAAME,GAAOE,GAAKhB,EAAUrC,IAAMqC,EAAUrC,IAAIsD,KAAYC,EAAGF,GAAKtB,EAAI/B,IAAIsD,KAAYC,EAAGF,GAC/D,mBAAZC,IAChBL,EAAME,GAAOE,GAAKhB,EAAUI,SAASa,EAAQjB,EAAUG,SAAUe,EAAGF,IAEvE,CAEF,MAAM,GAAY,UAARF,EAAiB,CAC1B,MAAMJ,EAAOE,EAAY,MAAK,OACxB1D,EAA6B,iBAAf0D,EAAME,GAAoBF,EAAME,GAAOF,EAAY,KACvE,GAAY,UAARD,EACF,OAAQD,GACN,IAAK,WACHE,EAAe,QAAIb,EAAcC,EAAW9C,GAC5C0D,EAAe,QAAII,GAAKf,EAAcD,EAAW9C,GAAQ8D,EAAEG,OAAOjE,KAAM8D,EAAEG,OAAOC,SACjF,MACF,IAAK,QACHR,EAAe,QAAIb,EAAcC,EAAW9C,KAAU0D,EAAa,MACnEA,EAAe,QAAII,GAAKf,EAAcD,EAAW9C,GAAQ8D,EAAEG,OAAOjE,KAAM8D,EAAEG,OAAOjB,OACjF,MACF,IAAK,SACL,IAAK,QACHU,EAAa,MAAIb,EAAcC,EAAW9C,GAC1C0D,EAAe,QAAII,GAAKf,EAAcD,EAAW9C,GAAQ8D,EAAEG,OAAOjE,KAAMmE,OAAOL,EAAEG,OAAOjB,QACxF,MACF,QACEU,EAAa,MAAIb,EAAcC,EAAW9C,GAC1C0D,EAAe,QAAII,GAAKf,EAAcD,EAAW9C,GAAQ8D,EAAEG,OAAOjE,KAAM8D,EAAEG,OAAOjB,WAEpE,WAARS,GACTC,EAAa,MAAIb,EAAcC,EAAW9C,GAC1C0D,EAAgB,SAAII,IACbA,EAAEG,OAAOG,UACZrB,EAAcD,EAAW9C,GAAQ8D,EAAEG,OAAOjE,KAAM8D,EAAEG,OAAOjB,MAC1D,GAEc,WAARS,GACTC,EAAgB,SAAIb,EAAcC,EAAW9C,GAC7C0D,EAAe,QAAII,GAAKf,EAAcD,EAAW9C,GAAQ8D,EAAEG,OAAOjE,KAAM8D,EAAEG,OAAOI,WAChE,aAARZ,IACTC,EAAiB,UAAIb,EAAcC,EAAW9C,GAC9C0D,EAAe,QAAII,GAAKf,EAAcD,EAAW9C,GAAQ8D,EAAEG,OAAOjE,KAAM8D,EAAEG,OAAOjB,OAEpF,MACCR,EAAI/B,IAAI,IAAK,CAAEmD,MAAKH,MAAKC,QAAOZ,aACjC,EAYKwB,CAAgBV,EAAKF,EAAOD,EAAKX,UAC1BY,EAAME,GACd,IAECD,GAAUR,EAAUQ,EAAUb,GAC3BM,CACR,YCvFamB,EAASb,KAAUC,GACjC,OAAOa,EAAQb,EACjB,CAEA,MAAMc,EAAa,SAEnB,SAASD,EAAQb,GACf,MAAMe,EAAK,GACLvE,EAAQwE,IACRA,SAAuC,KAANA,IAAkB,IAANA,GAC/CD,EAAGvE,KAAmB,mBAANwE,GAAiC,iBAANA,EAAkBA,EAAI,GAAGA,IACrE,EASH,OAPAhB,GAAYA,EAAS5C,SAAQ4D,IACvBtB,MAAMC,QAAQqB,GAChBA,EAAE5D,SAAQ6D,GAAKzE,EAAKyE,KAEpBzE,EAAKwE,EACN,IAEID,CACT,CAYA,MAAMG,EAAW,IAAIC,QA+BrB,SAASC,EAAOxB,EAAkByB,EAAaC,GACzB,IAAhBD,EAAU,MAEdC,EAAQA,GAAsB,QAAbD,EAAKvB,KAVxB,SAAcyB,EAAaF,GAEzB,MAAMG,EAAOD,EAAGE,SACVC,EAAO,GAAGL,EAAKvB,KAAO,KAC5B,OAAO0B,EAAKG,gBAAkBD,EAAKC,aACrC,CAMOC,CAAKhC,EAASyB,GACjBzB,EAAQiC,WAAWC,aAAaC,EAAOV,EAAMC,GAAQ1B,MAGvC,EAAdyB,EAAU,MAAUW,EAAepC,EAASyB,EAAKrB,SAAUsB,KAC7C,EAAdD,EAAU,MAAUY,EAAYrC,EAASyB,EAAKtB,MAAOuB,IACzD,CAEA,SAASU,EAAepC,EAASI,EAAUsB,WACzC,MAAMY,GAA8B,QAApBC,EAAAvC,EAAQwC,kBAAY,IAAAD,OAAA,EAAAA,EAAAhF,SAAU,EACxCkF,GAAUrC,aAAA,EAAAA,EAAU7C,SAAU,EAC9BmF,EAAMC,KAAKC,IAAIN,EAASG,GAC9B,IAAK,IAAIpB,EAAI,EAAGA,EAAIqB,EAAKrB,IAAK,CAC5B,MAAMwB,EAAQzC,EAASiB,GACvB,GAAqB,IAAjBwB,EAAW,IAAS,SACxB,MAAMlB,EAAK3B,EAAQwC,WAAWnB,GAC9B,GAAqB,iBAAVwB,EACLlB,EAAGmB,cAAgBD,IACD,IAAhBlB,EAAGoB,SACLpB,EAAGqB,UAAYH,EAEf7C,EAAQkC,aAAae,EAAWJ,GAAQlB,SAGvC,GAAIkB,aAAiBK,aAAeL,aAAiBM,WAC1DnD,EAAQoD,aAAaP,EAAOlB,OACvB,CACL,MAAMtB,EAAMwC,EAAM1C,OAAS0C,EAAM1C,MAAW,IAC5C,GAAIE,EACF,GAAIsB,EAAGtB,MAAQA,EACbmB,EAAOxB,EAAQwC,WAAWnB,GAAIwB,EAAOnB,OAChC,CAEL,MAAM2B,EAAM/B,EAASjB,GACrB,GAAIgD,EAAK,CACP,MAAMC,EAAOD,EAAIE,YACjBvD,EAAQoD,aAAaC,EAAK1B,GAC1B2B,EAAOtD,EAAQoD,aAAazB,EAAI2B,GAAQtD,EAAQwD,YAAY7B,GAC5DH,EAAOxB,EAAQwC,WAAWnB,GAAIwB,EAAOnB,EACtC,MACC1B,EAAQkC,aAAaC,EAAOU,EAAOnB,GAAQC,EAE9C,MAEDH,EAAOxB,EAAQwC,WAAWnB,GAAIwB,EAAOnB,EAExC,CACF,CAED,IAAI+B,GAAwB,QAApBC,EAAA1D,EAAQwC,kBAAY,IAAAkB,OAAA,EAAAA,EAAAnG,SAAU,EACtC,KAAOkG,EAAIf,GACT1C,EAAQ2D,YAAY3D,EAAQ4D,WAC5BH,IAGF,GAAIhB,EAAUC,EAAK,CACjB,MAAMmB,EAAIC,SAASC,yBACnB,IAAK,IAAI1C,EAAIqB,EAAKrB,EAAIjB,EAAS7C,OAAQ8D,IACrCwC,EAAEL,YAAYrB,EAAO/B,EAASiB,GAAIK,IAEpC1B,EAAQwD,YAAYK,EACrB,CACH,CAEa,MAAAG,EAAYC,IACvB,MAAMC,EAAMJ,SAASK,cAAc,WAEnC,OADAD,EAAIE,mBAAmB,aAAcH,GAC9BnE,MAAMuE,KAAKH,EAAI9D,SAAS,EAGjC,SAAS6C,EAAWxB,GAClB,GAAgC,KAA5BA,eAAAA,EAAM6C,QAAQ,WAAiB,CACjC,MAAMJ,EAAMJ,SAASK,cAAc,OAEnC,OADAD,EAAIE,mBAAmB,aAAc3C,EAAKnB,UAAU,IAC7C4D,CACR,CACC,OAAOJ,SAASS,eAAe9C,QAAAA,EAAM,GAEzC,CAEA,SAASU,EAAOV,EAAiDC,GAE/D,GAAKD,aAAgByB,aAAiBzB,aAAgB0B,WAAa,OAAO1B,EAC1E,GAAoB,iBAATA,EAAmB,OAAOwB,EAAWxB,GAChD,IAAKA,EAAKvB,KAA4B,mBAAbuB,EAAKvB,IAAqB,OAAO+C,EAAWuB,KAAKC,UAAUhD,IAEpF,MAAMzB,GADN0B,EAAQA,GAAsB,QAAbD,EAAKvB,KAElB4D,SAASY,gBAAgB,6BAA8BjD,EAAKvB,KAC5D4D,SAASK,cAAc1C,EAAKvB,KAIhC,OAFAmC,EAAYrC,EAASyB,EAAKtB,MAAOuB,GAC7BD,EAAKrB,UAAUqB,EAAKrB,SAAS5C,SAAQqF,GAAS7C,EAAQwD,YAAYrB,EAAOU,EAAOnB,MAC7E1B,CACT,UAWgBqC,EAAYrC,EAAkBG,EAAWuB,GAEvD,MAAMiD,EAAS3E,EAAQkB,IAAe,CAAA,EACtCf,EAZF,SAAoByE,EAAcC,GAChCA,EAAgB,MAAIA,EAAgB,OAAKA,EAAoB,iBACtDA,EAAoB,UAC3B,MAAM1E,EAAQ,CAAA,EAGd,OAFIyE,GAAUlH,OAAOC,KAAKiH,GAAUpH,SAAQiD,GAAKN,EAAMM,GAAK,OACxDoE,GAAUnH,OAAOC,KAAKkH,GAAUrH,SAAQiD,GAAKN,EAAMM,GAAKoE,EAASpE,KAC9DN,CACT,CAKU2E,CAAWH,EAAQxE,GAAS,CAAE,GACtCH,EAAQkB,GAAcf,EAEtB,IAAK,MAAM1D,KAAQ0D,EAAO,CACxB,MAAMV,EAAQU,EAAM1D,GAGpB,GAAIA,EAAKkC,WAAW,SAAU,CAC5B,MACMoG,EADQtI,EAAK6D,UAAU,GACT1B,QAAQ,UAAWoG,GAAUA,EAAM,GAAGjD,gBACtD/B,EAAQiF,QAAQF,KAAWtF,IACzBA,GAAmB,KAAVA,EAAcO,EAAQiF,QAAQF,GAAStF,SACxCO,EAAQiF,QAAQF,GAE/B,MAAM,GAAa,UAATtI,EAET,GADIuD,EAAQkF,MAAMC,UAASnF,EAAQkF,MAAMC,QAAU,IAC9B,iBAAV1F,EAAoBO,EAAQkF,MAAMC,QAAU1F,OAErD,IAAK,MAAM2F,KAAK3F,EACVO,EAAQkF,MAAME,KAAO3F,EAAM2F,KAAIpF,EAAQkF,MAAME,GAAK3F,EAAM2F,SAG3D,GAAI3I,EAAKkC,WAAW,SAAU,CACnC,MAAM0G,EAAQ5I,EAAKmC,QAAQ,QAAS,IAAI0G,cAC3B,MAAT7F,IAA2B,IAAVA,EACnBO,EAAQuF,kBAAkB,+BAAgCF,GAE1DrF,EAAQwF,eAAe,+BAAgCH,EAAO5F,EAEjE,MAAUhD,EAAKkC,WAAW,MACpBc,GAA0B,mBAAVA,EAEO,iBAAVA,IACZA,EAAOO,EAAQyF,aAAahJ,EAAMgD,GACjCO,EAAQ0F,gBAAgBjJ,IAH7BuD,EAAQvD,GAAQgD,EAKT,kEAAkEkG,KAAKlJ,IAASiF,EACrF1B,EAAQ4F,aAAanJ,KAAUgD,IAC7BA,EAAOO,EAAQyF,aAAahJ,EAAMgD,GACjCO,EAAQ0F,gBAAgBjJ,IAEtBuD,EAAQvD,KAAUgD,IAC3BO,EAAQvD,GAAQgD,GAEL,QAAThD,GAAkBgD,IAAO6B,EAAS7B,GAASO,EAChD,CACGG,GAAiC,mBAAjBA,EAAW,KAC7B0F,OAAOC,uBAAsB,IAAM3F,EAAW,IAAEH,IAEpD,CA6BA,SAAS+F,EAAgBtE,EAAMuE,EAAQC,EAAM,SAC3C,GAAoB,iBAATxE,EAAmB,OAAOA,EACrC,GAAI3B,MAAMC,QAAQ0B,GAAO,OAAOA,EAAKrD,KAAIyE,GAASkD,EAAgBlD,EAAOmD,EAAQC,OACjF,IAAIpG,EAAO4B,EAIX,GAHIA,GAA4B,mBAAbA,EAAKvB,KAAsBxC,OAAOwI,eAAezE,EAAKvB,KAAKiG,IAC5EtG,EAhCJ,SAA0B4B,EAAMuE,EAAQC,GACtC,MAAM/F,IAAEA,EAAGC,MAAEA,EAAKC,SAAEA,GAAaqB,EACjC,IAAIpB,EAAM,IAAI4F,IACVG,EAAKjG,GAASA,EAAU,GACvBiG,EACA/F,EAAM+F,EADFA,EAAK,IAAIH,IAAMI,KAAKC,QAE7B,IAAIC,EAAQ,UACRpG,GAASA,EAAU,KACrBoG,EAAQpG,EAAU,UACXA,EAAU,IAEd6F,EAAOQ,IAAkBR,EAAOQ,EAAmB,IACxD,IAAIjH,EAAYyG,EAAOQ,EAAiBnG,GACxC,GAAKd,GAAeA,aAAqBW,GAASX,EAAUS,QAI1DT,EAAUkH,YAAYlH,EAAUG,WAJmC,CACnE,MAAMM,EAAU8D,SAASK,cAAcoC,GACvChH,EAAYyG,EAAOQ,EAAiBnG,GAAO,IAAIH,EAAGxC,OAAAI,OAAAJ,OAAAI,OAAA,CAAA,EAAMqC,GAAK,CAAEC,cAAYsG,MAAM1G,EAAS,CAAE2G,QAAQ,GACrG,CAGD,GAAIpH,EAAUqH,QAAS,CACrB,MAAMC,EAAYtH,EAAUqH,QAAQzG,EAAOC,EAAUb,EAAUG,YACzC,IAAdmH,GAA8BtH,EAAUI,SAASkH,EAC1D,CAED,OADAxE,EAAY9C,EAAUS,QAASG,GAAO,GAC/BZ,EAAUS,OACnB,CAOW8G,CAAiBrF,EAAMuE,EAAQC,IAEpCpG,GAAQC,MAAMC,QAAQF,EAAKO,UAAW,CACxC,MAAM2G,EAAuB,QAAVxE,EAAA1C,EAAKM,aAAK,IAAAoC,OAAA,EAAAA,EAAEyE,WAC/B,GAAID,EAAY,CACd,IAAI1F,EAAI,EACRxB,EAAKO,SAAWP,EAAKO,SAAShC,KAAIyE,GAASkD,EAAgBlD,EAAOkE,EAAY1F,MAC/E,MACCxB,EAAKO,SAAWP,EAAKO,SAAShC,KAAIyE,GAASkD,EAAgBlD,EAAOmD,EAAQC,MAE7E,CACD,OAAOpG,CACT,CCxQO,MAAMoH,EAAgB,CAACC,EAAgBvK,EAAgC,CAAA,IAAO,cAA4BuG,YAM/G,WAAA7G,GACE8K,OACD,CACD,aAAI5H,GAAc,OAAOjD,KAAK0K,UAAa,CAC3C,SAAItH,GAAU,OAAOpD,KAAK0K,WAAWtH,KAAQ,CAE7C,6BAAW0H,GAET,OAAQzK,EAAQyK,oBAAsB,IAAIhJ,KAAIiJ,GAAQA,EAAK/B,eAC5D,CAED,iBAAAgC,GACE,GAAIhL,KAAKiL,cAAgBjL,KAAK0K,WAAY,CACxC,MAAMQ,EAAO7K,GAAW,GACxBL,KAAKmL,YAAcD,EAAKE,OAASpL,KAAKqL,aAAa,CAAEC,KAAM,SAAYtL,KACvE,MAAM8K,EAAsBI,EAAKJ,oBAAsB,GAEjDS,EAAUT,EAAmBU,QAAO,CAAC1J,EAAK3B,KAC9C,MAAMsL,EAAKtL,EAAK6I,cAIhB,OAHIyC,IAAOtL,IACT2B,EAAI2J,GAAMtL,GAEL2B,CAAG,GACT,CAAE,GACL9B,KAAK0L,SAAYvL,GAA0BoL,EAAQpL,IAASA,EAE5D,MAAM0D,EAAQ,CAAA,EACdL,MAAMuE,KAAK/H,KAAK2L,YAAYzK,SAAQ0K,GAAQ/H,EAAM7D,KAAK0L,SAASE,EAAKzL,OAASyL,EAAKzI,QAGnF2H,EAAmB5J,SAAQf,SACN0L,IAAf7L,KAAKG,KAAqB0D,EAAM1D,GAAQH,KAAKG,IACjDiB,OAAO0K,eAAe9L,KAAMG,EAAM,CAChC4L,IAAG,IACMlI,EAAM1D,GAEf,GAAA6L,CAAyB7I,GAEvBnD,KAAKiM,yBAAyB9L,EAAM0D,EAAM1D,GAAOgD,EAClD,EACD+I,cAAc,EACdC,YAAY,GACZ,IAGJ3C,uBAAsB,KACpB,MAAM1F,EAAW9D,KAAK8D,SAAWN,MAAMuE,KAAK/H,KAAK8D,UAAY,GAO7D,GALA9D,KAAK0K,WAAa,IAAIE,EAAcxJ,OAAAI,OAAAJ,OAAAI,OAAA,CAAA,EAAMqC,GAAO,CAAAC,cAAYsG,MAAMpK,KAAKmL,YAAaD,GAErFlL,KAAK0K,WAAW0B,OAASvI,EAEzB7D,KAAK0K,WAAW2B,cAAgBrM,KAAKqM,cAAcC,KAAKtM,MACpDA,KAAK0K,WAAWJ,QAAS,CAC3B,MAAMC,EAAYvK,KAAK0K,WAAWJ,QAAQzG,EAAOC,EAAU9D,KAAK0K,WAAWtH,YAClD,IAAdmH,IAA2BvK,KAAK0K,WAAWtH,MAAQmH,EAC/D,CACDvK,KAAKE,GAAKF,KAAK0K,WAAWxK,GAAGoM,KAAKtM,KAAK0K,YACvC1K,KAAKY,IAAMZ,KAAK0K,WAAW9J,IAAI0L,KAAKtM,KAAK0K,aACnB,IAAhBQ,EAAKb,QAAmBrK,KAAK0K,WAAW9J,IAAI,IAAI,GAEzD,CACF,CAED,oBAAA2L,uBACEnF,EAAiB,UAAjBpH,KAAK0K,kBAAY,IAAAzE,OAAA,EAAAA,EAAAuG,uCACjBC,EAAiB,UAAjBzM,KAAK0K,kBAAY,IAAAgC,OAAA,EAAAA,EAAAC,gCACjB3M,KAAK0K,WAAa,IACnB,CAED,wBAAAuB,CAAyB9L,EAAcyM,EAAmBzJ,GACxD,GAAInD,KAAK0K,WAAY,CAEnB,MAAMmC,EAAa7M,KAAK0L,SAASvL,GAEjCH,KAAK0K,WAAW0B,OAAOS,GAAc1J,EACrCnD,KAAK0K,WAAW9J,IAAI,mBAAoBiM,EAAYD,EAAUzJ,GAE1DA,IAAUyJ,IAAiC,IAAnBvM,EAAQgK,QAClCd,OAAOC,uBAAsB,KAE3BxJ,KAAK0K,WAAW9J,IAAI,IAAI,GAG7B,CACF,GAGH,IAAAkM,EAAe,CAAC3M,EAAcyK,EAAgBvK,KACjB,oBAAnB0M,gBAAmCA,eAAeC,OAAO7M,EAAMwK,EAAcC,EAAgBvK,GAAS,ECtGzG,MAAM4M,EAAU,CAErBC,KAAM,IAAIjI,QAEV,cAAAkI,CAAeC,EAAaC,EAAejJ,GACpCpE,KAAKkN,KAAKI,IAAIlJ,IAASpE,KAAKkN,KAAKlB,IAAI5H,EAAQ,CAAE,GACpDpE,KAAKkN,KAAKnB,IAAI3H,GAAQgJ,GAAeC,CACtC,EAED,eAAAE,CAAgBnJ,GAEd,OADAA,EAAShD,OAAOwI,eAAexF,GACxBpE,KAAKkN,KAAKnB,IAAI3H,GAAUhD,OAAOC,KAAKrB,KAAKkN,KAAKnB,IAAI3H,IAAW,EACrE,EAED,WAAAoJ,CAAYJ,EAAahJ,GAEvB,OADAA,EAAShD,OAAOwI,eAAexF,GACxBpE,KAAKkN,KAAKnB,IAAI3H,GAAUpE,KAAKkN,KAAKnB,IAAI3H,GAAQgJ,GAAe,IACrE,YAGalI,EAAiBhD,EAAY7B,EAAe,IAC1D,MAAO,CAAC+D,EAAaL,EAAa0J,KAChC,MAAMtN,EAAO+B,EAASA,EAAOwL,WAAa3J,EAG1C,OAFAkJ,EAAQE,eAAe,iBAAiBhN,IACtC,CAAEA,OAAM4D,MAAK1D,WAAW+D,GACnBqJ,CAAU,CAErB,UAEgBvN,EAAegC,EAAY7B,EAAe,IACxD,OAAO,SAAU+D,EAAaL,GAC5B,MAAM5D,EAAO+B,EAASA,EAAOwL,WAAa3J,EAC1CkJ,EAAQE,eAAe,iBAAiBhN,IACtC,CAAEA,OAAM4D,MAAK1D,WAAW+D,EAC5B,CACF,CAEgB,SAAAuG,EAAcxK,EAAcE,GAC1C,OAAO,SAA+DN,GAEpE,OADA+M,EAAa3M,EAAMJ,EAAaM,GACzBN,CACT,CACF,CCvCA,MAAM4N,EAAiB,IAAIC,IACtBjL,EAAIhC,KAAK,mBAAmBgC,EAAIzC,GAAG,kBAAkB2N,GAAKA,EAAEC,WAAaH,IAE9E,MAAMI,EAAU3K,GAASA,QAEZ4K,EAkBH,WAAA7D,CAAY/G,EAAUG,EAAO,MACnC,IAAKvD,KAAKiO,KAAM,OAChB,IAAItG,EAAOpE,GAAQvD,KAAKiO,KAAK7K,GAS7B,GARAT,EAAW,OAAKA,EAAI/B,IAAI,QAAS,CAC/BqC,UAAWjD,KACXkO,EAAGvG,EAAO,IAAM,IAChBvE,QACAG,KAAMoE,EACNtC,GAAIrF,KAAK0D,UAGa,iBAAb8D,SAAuB,OAElC,MAAMnC,EAA8B,iBAAjBrF,KAAK0D,SAAwB1D,KAAK0D,QACnD8D,SAAS2G,eAAenO,KAAK0D,UAAY8D,SAAS4G,cAAcpO,KAAK0D,SAAW1D,KAAK0D,QAEvF,IAAK2B,EAAI,OACT,MAAMgJ,EAAgB,KACjBrO,KAAKwM,OAECnH,EAAe,aAAMrF,MAAQqF,EAAGiE,aAAa+E,KAAmBrO,KAAKsO,cAC9EtO,KAAKsO,aAAc,IAAIvE,MAAOwE,UAAUb,WACxCrI,EAAG8D,aAAakF,EAAerO,KAAKsO,aACJ,oBAArBE,mBACJxO,KAAKyO,WAAUzO,KAAKyO,SAAW,IAAID,kBAAiBE,IACnDA,EAAQ,GAAG9B,WAAa5M,KAAKsO,aAAgB9G,SAASmH,KAAKC,SAASvJ,KACtErF,KAAKwM,OAAOxM,KAAKoD,OACjBpD,KAAKyO,SAASI,aACd7O,KAAKyO,SAAW,KACjB,KAEHzO,KAAKyO,SAASK,QAAQtH,SAASmH,KAAM,CACnCI,WAAW,EAAMC,SAAS,EAC1BrD,YAAY,EAAMsD,mBAAmB,EAAMC,gBAAiB,CAACb,OAdjEhJ,EAAG+D,iBAAmB/D,EAAG+D,gBAAgBiF,GAkB3ChJ,EAAe,WAAIrF,MAEduD,GAAQoE,IACXA,EAAOrE,EAAUqE,EAAM3H,MACnBA,KAAKK,QAAQ8O,YAAc3H,UAAYA,SAA8B,oBACvEA,SAA8B,qBAAE,IAAM7E,EAAI0H,OAAOhF,EAAIsC,EAAM3H,QAE3D2C,EAAI0H,OAAOhF,EAAIsC,EAAM3H,OAGzBA,KAAKoP,UAAYpP,KAAKoP,SAASpP,KAAKoD,MACrC,CAEM,QAAAC,CAASD,EAAU/C,EACtB,CAAEgK,QAAQ,EAAMgF,SAAS,IAC3B,GAAIjM,aAAiBrB,QAGnBA,QAAQuN,QAAQlM,GAAOmM,MAAKC,IAC1BxP,KAAKqD,SAASmM,EAAGnP,GACjBL,KAAKyP,OAASrM,CAAK,QAEhB,CAEL,GADApD,KAAKyP,OAASrM,EACD,MAATA,EAAe,OACnBpD,KAAKoD,MAAQA,GACU,IAAnB/C,EAAQgK,SAENhK,EAAQ8O,YAAc3H,UAAYA,SAA8B,oBAClEA,SAA8B,qBAAE,IAAMxH,KAAKmK,YAAY/G,KAEvDpD,KAAKmK,YAAY/G,KAGG,IAApB/C,EAAQgP,SAAqBrP,KAAK0P,iBACpC1P,KAAK2P,SAAW,IAAI3P,KAAK2P,SAAUvM,GACnCpD,KAAK4P,aAAe5P,KAAK2P,SAAS1O,OAAS,GAEb,mBAArBZ,EAAQwP,UAAyBxP,EAAQwP,SAAS7P,KAAKoD,MACnE,CACF,CAsBD,WAAArD,CACYqD,EACA6K,EACA/I,EACA7E,GAHAL,KAAKoD,MAALA,EACApD,KAAIiO,KAAJA,EACAjO,KAAMkF,OAANA,EACAlF,KAAOK,QAAPA,EAvHJL,KAAA8P,KAAO,IAAIhQ,EACXE,KAAQ+P,SAAG,GACX/P,KAAcgQ,eAAG,GAEjBhQ,KAAQ2P,SAAG,GACX3P,KAAY4P,cAAI,EA0FhB5P,KAAaiQ,cAAG,KACtBjQ,KAAK4P,eACD5P,KAAK4P,cAAgB,EACvB5P,KAAKqD,SAASrD,KAAK2P,SAAS3P,KAAK4P,cAAe,CAAEvF,QAAQ,EAAMgF,SAAS,IAGzErP,KAAK4P,aAAe,CACrB,EAGK5P,KAAakQ,cAAG,KACtBlQ,KAAK4P,eACD5P,KAAK4P,aAAe5P,KAAK2P,SAAS1O,OACpCjB,KAAKqD,SAASrD,KAAK2P,SAAS3P,KAAK4P,cAAe,CAAEvF,QAAQ,EAAMgF,SAAS,IAGzErP,KAAK4P,aAAe5P,KAAK2P,SAAS1O,OAAS,CAC5C,EAUHjB,KAAKmQ,MAAG,CAACzM,EAAU,KAAMrD,KAEvB,GADAL,KAAKoK,MAAM1G,EAAOtC,OAAAI,OAAA,CAAI6I,QAAQ,GAAShK,IACnCL,KAAKsK,SAAmC,mBAAjBtK,KAAKsK,QAAwB,CACtD,MAAMC,EAAYvK,KAAKsK,QAAQ,CAAE,EAAE,GAAItK,KAAKoD,YACtB,IAAdmH,GAA8BvK,KAAKqD,SAASkH,EACrD,CACD,OAAOvK,IAAI,CARZ,CAWM,KAAAoK,CAAM1G,EAAU,KAAMrD,WA2B3B,OA1BAU,QAAQC,QAAQhB,KAAK0D,QAAS,8BAC9B1D,KAAKK,QAAUA,EAAOe,OAAAI,OAAAJ,OAAAI,OAAA,CAAA,EAAQxB,KAAKK,SAAYA,GAC/CL,KAAK0D,QAAUA,EACf1D,KAAKoQ,aAAe/P,EAAQ+P,aAC5BpQ,KAAK0P,iBAAmBrP,EAAQgP,QAE5BrP,KAAK0P,iBACP1P,KAAKE,GAAGG,EAAQgP,QAAQgB,MAAQ,eAAgBrQ,KAAKiQ,eACrDjQ,KAAKE,GAAGG,EAAQgP,QAAQiB,MAAQ,eAAgBtQ,KAAKkQ,gBAGnD7P,EAAQkQ,QACVvQ,KAAKkF,OAASlF,KAAKkF,QAAU,CAAA,EACxBlF,KAAKkF,OAAO7E,EAAQkQ,SAAQvQ,KAAKkF,OAAO7E,EAAQkQ,OAASxC,IAGhE/N,KAAKwQ,cACLxQ,KAAKoD,MAAmC,QAA3BgE,EAAU,UAAVpH,KAAKoD,aAAK,IAAA6C,EAAAA,EAAIjG,KAAY,aAAC,IAAAoH,EAAAA,EAAI,GAClB,mBAAfpH,KAAKoD,QAAsBpD,KAAKoD,MAAQpD,KAAKoD,SAExDpD,KAAKqD,SAASrD,KAAKoD,MAAO,CAAEiH,SAAUhK,EAAQgK,OAAQgF,SAAS,IAE3D1M,EAAW,QACTgL,EAAe5B,IAAIrI,GAAYiK,EAAe5B,IAAIrI,GAASpD,KAAKN,MAC7D2N,EAAe3B,IAAItI,EAAS,CAAC1D,QAE/BA,IACR,CAED,eAAAyQ,CAAgBtQ,GACd,OAAOA,IACLH,KAAKoQ,cACLpQ,KAAKgQ,eAAehI,QAAQ7H,IAAS,GACrCA,EAAKkC,WAAW,MAAQlC,EAAKkC,WAAW,MAAQlC,EAAKkC,WAAW,KACnE,CAED,UAAAqO,CAAWvQ,EAAcwQ,EAAQtQ,EAAyB,CAAA,GACnDsQ,GAA4B,mBAAXA,IAClBtQ,EAAQyC,QAAQ9C,KAAKgQ,eAAe1P,KAAKH,GAC7CH,KAAKE,GAAGC,GAAa,IAAIgE,KAEvBxB,EAAW,OAAKA,EAAI/B,IAAI,QAAS,CAC/BqC,UAAWjD,KACXkO,EAAG,IACHxL,MAAOvC,EAAMgE,IACbyM,cAAe5Q,KAAKoD,MACpB/C,YAGF,MAAMwQ,EAAWF,EAAO3Q,KAAKoD,SAAUe,GAEvCxB,EAAW,OAAKA,EAAI/B,IAAI,QAAS,CAC/BqC,UAAWjD,KACXkO,EAAG,IACHxL,MAAOvC,EAAMgE,IACb0M,WACAzN,MAAOpD,KAAKoD,MACZ/C,YAGFL,KAAKqD,SAASwN,EAAUxQ,EAAQ,GAC/BA,GACJ,CAED,WAAAmQ,GACE,MAAMM,EAAU9Q,KAAKkF,QAAU,GAC/B+H,EAAQM,gBAAgBvN,MAAMkB,SAAQ6C,IACpC,GAAIA,EAAI1B,WAAW,kBAAmB,CACpC,MAAM6K,EAAOD,EAAQO,YAAYzJ,EAAK/D,MACtC8Q,EAAQ5D,EAAK/M,MAAQ,CAACH,KAAKkN,EAAKnJ,KAAKuI,KAAKtM,MAAOkN,EAAK7M,QACvD,KAGH,MAAM2B,EAAM,CAAA,EACRwB,MAAMC,QAAQqN,GAChBA,EAAQ5P,SAAQ6P,IACd,MAAO5Q,EAAMwQ,EAAQzF,GAAQ6F,EACf5Q,EAAKuN,WACbsD,MAAM,KAAK9P,SAAQiG,GAAKnF,EAAImF,EAAE8J,QAAU,CAACN,EAAQzF,IAAM,IAG/D9J,OAAOC,KAAKyP,GAAS5P,SAAQf,IAC3B,MAAMwQ,EAASG,EAAQ3Q,IACD,mBAAXwQ,GAAyBnN,MAAMC,QAAQkN,KAChDxQ,EAAK6Q,MAAM,KAAK9P,SAAQiG,GAAKnF,EAAImF,EAAE8J,QAAUN,GAC9C,IAIA3O,EAAI,OAAMA,EAAI,KAAO+L,GAC1B3M,OAAOC,KAAKW,GAAKd,SAAQf,IACvB,MAAMwQ,EAAS3O,EAAI7B,GACG,mBAAXwQ,EACT3Q,KAAK0Q,WAAWvQ,EAAMwQ,GACbnN,MAAMC,QAAQkN,IACvB3Q,KAAK0Q,WAAWvQ,EAAMwQ,EAAO,GAAIA,EAAO,GACzC,GAEJ,CAEM,GAAA/P,CAAI8B,KAAa7B,GACtB,GAAIb,KAAKoD,iBAAiBrB,QACxB,OAAOA,QAAQuN,QAAQtP,KAAKoD,OAAOmM,MAAKnM,IACtCpD,KAAKoD,MAAQA,EACbpD,KAAKY,IAAI8B,KAAU7B,EAAK,IAErB,CACL,MAAMV,EAAOuC,EAAMgL,WACnB,OAAO1N,KAAKyQ,gBAAgBtQ,GAC1BwC,EAAI/B,IAAIT,KAASU,GACjBb,KAAK8P,KAAKlP,IAAIT,KAASU,EAC1B,CACF,CAEM,EAAAX,CAAGwC,EAAUtC,EAAuBC,GACzC,MAAMF,EAAOuC,EAAMgL,WAEnB,OADA1N,KAAK+P,SAASzP,KAAK,CAAEH,OAAMC,OACpBJ,KAAKyQ,gBAAgBtQ,GAC1BwC,EAAIzC,GAAGC,EAAMC,EAAIC,GACjBL,KAAK8P,KAAK5P,GAAGC,EAAMC,EAAIC,EAC1B,CAEM,QAAAuB,CAASc,KAAa7B,GAC3B,MAAMV,EAAOuC,EAAMgL,WACnB,OAAO1N,KAAKyQ,gBAAgBtQ,GAC1BwC,EAAIf,SAASzB,KAASU,GACtBb,KAAK8P,KAAKlO,SAASzB,KAASU,EAC/B,CAGM,KAAAoB,CAAMS,KAAa7B,GACxB,OAAOb,KAAK4B,SAASc,KAAU7B,EAChC,CAEM,OAAA8L,SACU,QAAf1G,EAAAjG,KAAKyO,gBAAU,IAAAxI,GAAAA,EAAA4I,aACf7O,KAAK+P,SAAS7O,SAAQyP,IACpB,MAAMxQ,KAAEA,EAAIC,GAAEA,GAAOuQ,EACrB3Q,KAAKyQ,gBAAgBtQ,GACnBwC,EAAIpC,IAAIJ,EAAMC,GACdJ,KAAK8P,KAAKvP,IAAIJ,EAAMC,EAAG,GAE5B,EAnRM4N,EAAmBnE,GAAG,ECRxB,MAAMqH,EAAuB,KACvBC,EAA2B,MAE3BZ,EAAgBa,IAE3B,GADKA,IAAKA,EAAM,KACZA,EAAI/O,WAAW,KAAM,CACvB,MAAOlC,KAASkR,GAAQD,EAAIJ,MAAM,KAClCrO,EAAI/B,IAAIT,KAASkR,IAAS1O,EAAI/B,IAAIuQ,EAAkBhR,KAASkR,GAC7D1O,EAAI/B,IAAIsQ,EAAc/Q,KAASkR,EAChC,MAAM,GAAID,EAAI/O,WAAW,KAAM,CAC9B,MAAO6L,EAAG/N,KAASkR,GAAQD,EAAIJ,MAAM,KACrCrO,EAAI/B,IAAI,IAAMT,KAASkR,IAAS1O,EAAI/B,IAAIuQ,EAAkB,IAAMhR,KAASkR,GACzE1O,EAAI/B,IAAIsQ,EAAc,IAAM/Q,KAASkR,EACtC,MACC1O,EAAI/B,IAAIwQ,IAAQzO,EAAI/B,IAAIuQ,EAAkBC,GAC1CzO,EAAI/B,IAAIsQ,EAAcE,EACvB,ECMHzO,EAAI2O,EAAI3O,EAAIkF,cLCN,SAAwBjE,EAA6BC,KAAeC,GACxE,MAAMe,EAAKF,EAAQb,GACnB,GAAmB,iBAARF,EAAkB,MAAO,CAAEA,MAAKC,QAAOC,SAAUe,GACvD,GAAIrB,MAAMC,QAAQG,GAAM,OAAOA,EAC/B,QAAYiI,IAARjI,GAAqBE,EAAU,OAAOe,EAC1C,GAAIzD,OAAOwI,eAAehG,GAAKiG,EAAqB,MAAO,CAAEjG,MAAKC,QAAOC,SAAUe,GACnF,GAAmB,mBAARjB,EAAoB,OAAOA,EAAIC,EAAOgB,GACjD,MAAM,IAAI0M,MAAM,uBAAuB3N,IAC9C,EKRAjB,EAAI0H,OLYyB,CAAC3G,EAA2B8N,EAAavO,EAAY,CAAA,KAEhF,GAAa,MAATuO,IAA2B,IAAVA,EAAiB,QAOxC,SAAgB9N,EAAkB8N,EAAa9H,EAAS,CAAA,GAEtD,GAAa,MAAT8H,IAA2B,IAAVA,EAAiB,OAEtC,GADAA,EAAQ/H,EAAgB+H,EAAO9H,IAC1BhG,EAAS,OACd,MAAM0B,EAA6B,QAArB1B,EAAQ6B,SAClB/B,MAAMC,QAAQ+N,GAChB1L,EAAepC,EAAS8N,EAAOpM,GAE/BU,EAAepC,EAAS,CAAC8N,GAAQpM,EAErC,CAdEiF,CAH+B,iBAAZ3G,GAAwBA,EACzC8D,SAAS2G,eAAezK,IAAY8D,SAAS4G,cAAc1K,GAAWA,EACxE8N,EAAQlO,EAAUkO,EAAOvO,GACPA,EAAU,EKjB9BN,EAAI+B,SAAWA,EACf/B,EAAImK,aAAeA,EACnBnK,EAAI+E,SAAWA,EAEf/E,EAAIwN,MAAQ,CAAazM,EAA4B+N,EAAWxD,EAAgB/I,EAC9E7E,KACA,MAAM6K,EAAI9J,OAAAI,OAAA,CAAK6I,QAAQ,EAAM+F,cAAc,GAAS/P,GAC9C4C,EAAY,IAAI+K,EAAgByD,EAAOxD,EAAM/I,GAInD,OAHI7E,GAAWA,EAAQ+O,WAAUnM,EAAUmM,SAAW/O,EAAQ+O,UAC1D/O,GAAWA,EAAQiK,UAASrH,EAAUqH,QAAUjK,EAAQiK,SAC5DrH,EAAUkN,MAAMzM,EAASwH,GAClBjI,CAAS,EAGlB,MAAMyO,EAAOxD,MACbvL,EAAIzC,GAAG,IAAKwR,GACZ/O,EAAIzC,GAAG,SAASgO,GAAKwD,IACrB/O,EAAIzC,GAAGgR,EAAcQ,GACrB/O,EAAIzC,GAAG,IAAKwR,GACZ/O,EAAW,MAAI4N,EACf5N,EAAIzC,GAAG,SAASkR,GAAOzO,EAAW,OAAKA,EAAW,MAAEyO,KAE5B,iBAAb5J,UACTA,SAASmK,iBAAiB,oBAAoB,KACxChP,EAAW,QAAM4N,IACnBhH,OAAOqI,WAAa,IAAMrB,EAAMsB,SAASC,MACzCtK,SAASmH,KAAKoD,aAAa,mBAAqBpP,EAAI,kBAAoB4N,EAAMsB,SAASC,MACxF,IAUiB,iBAAXvI,SACTA,OAAkB,UAAIyE,EACtBzE,OAAe,OAAIA,OAAc,MACjCA,OAAc,MAAI5G,EAClB4G,OAAW,GAAIrJ,EACfqJ,OAAsB,cAAIoB,EAC1BpB,OAAiB,SAAI7B,GAGvB/E,EAAIqP,WAAa,CAAC3H,EAAQiB,EAAO,IAE7B3I,EAAI0H,OADG,IAATiB,EACe,CAACjG,EAAI9B,IAAS8G,EAAO9G,EAAM8B,GAC3B,CAACA,EAAI9B,IAAS8G,EAAOhF,EAAI9B,GAE1CZ,EAAIsP,UAAY,CAACC,EAAOC,KACtBxP,EAAI2O,EAAI3O,EAAIkF,cAAgBqK,EAAMrK,cAClClF,EAAI+B,SAAWwN,EAAMxN,SACrB/B,EAAI0H,OAAS,CAAChF,EAAI9B,IAAS4O,EAAS9H,OAAO9G,EAAM8B,GAC7C6M,EAAME,SAAWF,EAAME,QAAQ/P,WAAW,QAC5CM,EAAI0H,OAAS,CAAChF,EAAI9B,KACX8B,GAAO9B,IACP8B,EAAGgN,QAAOhN,EAAGgN,MAAQF,EAASG,WAAWjN,IAC9CA,EAAGgN,MAAMhI,OAAO9G,GAAK,EAExB"}
|
|
1
|
+
{"version":3,"file":"apprun.esm.js","sources":["../src/app.ts","../src/directive.ts","../src/vdom-my.ts","../src/web-component.ts","../src/decorator.ts","../src/component.ts","../src/router.ts","../src/apprun.ts"],"sourcesContent":["import { EventOptions} from './types'\nexport class App {\n\n _events: Object;\n\n public start;\n public h;\n public createElement;\n public render;\n public Fragment;\n public webComponent;\n public safeHTML;\n public use_render;\n public use_react;\n\n constructor() {\n this._events = {};\n }\n\n on(name: string, fn: (...args) => void, options: EventOptions = {}): void {\n this._events[name] = this._events[name] || [];\n this._events[name].push({ fn, options });\n }\n\n off(name: string, fn: (...args) => void): void {\n const subscribers = this._events[name] || [];\n\n this._events[name] = subscribers.filter((sub) => sub.fn !== fn);\n }\n\n find(name: string): any {\n return this._events[name];\n }\n\n run(name: string, ...args): number {\n const subscribers = this.getSubscribers(name, this._events);\n console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);\n subscribers.forEach((sub) => {\n const { fn, options } = sub;\n if (options.delay) {\n this.delay(name, fn, args, options);\n } else {\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n }\n return !sub.options.once;\n });\n\n return subscribers.length;\n }\n\n once(name: string, fn, options: EventOptions = {}): void {\n this.on(name, fn, { ...options, once: true });\n }\n\n private delay(name, fn, args, options): void {\n if (options._t) clearTimeout(options._t);\n options._t = setTimeout(() => {\n clearTimeout(options._t);\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n }, options.delay);\n }\n\n runAsync(name: string, ...args): Promise<any[]> {\n const subscribers = this.getSubscribers(name, this._events);\n console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);\n const promises = subscribers.map(sub => {\n const { fn, options } = sub;\n return Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n });\n return Promise.all(promises);\n }\n\n query(name: string, ...args): Promise<any[]> {\n return this.query(name, ...args);\n }\n\n private getSubscribers(name: string, events) {\n const subscribers = events[name] || [];\n\n // Update the list of subscribers by pulling out those which will run once.\n // We must do this update prior to running any of the events in case they\n // cause additional events to be turned off or on.\n events[name] = subscribers.filter((sub) => {\n return !sub.options.once;\n });\n Object.keys(events).filter(evt => evt.endsWith('*') && name.startsWith(evt.replace('*', '')))\n .sort((a, b) => b.length - a.length)\n .forEach(evt => subscribers.push(...events[evt].map(sub => ({\n ...sub,\n options: { ...sub.options, event: name }\n }))));\n return subscribers;\n }\n}\n\nconst AppRunVersions = 'AppRun-3';\nlet app: App;\nconst root = (typeof self === 'object' && self.self === self && self) ||\n (typeof global === 'object' && global.global === global && global)\nif (root['app'] && root['_AppRunVersions']) {\n app = root['app'];\n} else {\n app = new App();\n root['app'] = app;\n root['_AppRunVersions'] = AppRunVersions;\n}\nexport default app;\n","import app from './app';\n\nconst getStateValue = (component, name) => {\n return (name ? component['state'][name] : component['state']) || '';\n}\n\nconst setStateValue = (component, name, value) => {\n if (name) {\n const state = component['state'] || {};\n state[name] = value;\n component.setState(state);\n } else {\n component.setState(value);\n }\n}\n\nconst apply_directive = (key: string, props: {}, tag, component) => {\n if (key.startsWith('$on')) {\n const event = props[key];\n key = key.substring(1)\n if (typeof event === 'boolean') {\n props[key] = e => component.run ? component.run(key, e) : app.run(key, e);\n } else if (typeof event === 'string') {\n props[key] = e => component.run ? component.run(event, e) : app.run(event, e);\n } else if (typeof event === 'function') {\n props[key] = e => component.setState(event(component.state, e));\n } else if (Array.isArray(event)) {\n const [handler, ...p] = event;\n if (typeof handler === 'string') {\n props[key] = e => component.run ? component.run(handler, ...p, e) : app.run(handler, ...p, e);\n } else if (typeof handler === 'function') {\n props[key] = e => component.setState(handler(component.state, ...p, e));\n }\n }\n\n } else if (key === '$bind') {\n const type = props['type'] || 'text';\n const name = typeof props[key] === 'string' ? props[key] : props['name'];\n if (tag === 'input') {\n switch (type) {\n case 'checkbox':\n props['checked'] = getStateValue(component, name);\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.checked);\n break;\n case 'radio':\n props['checked'] = getStateValue(component, name) === props['value'];\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.value);\n break;\n case 'number':\n case 'range':\n props['value'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, Number(e.target.value));\n break;\n default:\n props['value'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, e.target.value);\n }\n } else if (tag === 'select') {\n props['value'] = getStateValue(component, name);\n props['onchange'] = e => {\n if (!e.target.multiple) { // multiple selection use $bind on option\n setStateValue(component, name || e.target.name, e.target.value);\n }\n }\n } else if (tag === 'option') {\n props['selected'] = getStateValue(component, name);\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.selected);\n } else if (tag === 'textarea') {\n props['innerHTML'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, e.target.value);\n }\n } else {\n app.run('$', { key, tag, props, component });\n }\n}\n\nconst directive = (vdom, component) => {\n if (Array.isArray(vdom)) {\n return vdom.map(element => directive(element, component));\n } else {\n let { type, tag, props, children } = vdom;\n tag = tag || type;\n children = children || props?.children;\n if (props) Object.keys(props).forEach(key => {\n if (key.startsWith('$')) {\n apply_directive(key, props, tag, component);\n delete props[key];\n }\n });\n if (children) directive(children, component);\n return vdom;\n }\n}\n\nexport default directive;","import { VDOM, VNode } from './types';\nimport directive from './directive';\nexport type Element = any; //HTMLElement | SVGSVGElement | SVGElement;\n\nexport function Fragment(props, ...children): any[] {\n return collect(children);\n}\n\nconst ATTR_PROPS = '_props';\n\nfunction collect(children) {\n const ch = [];\n const push = (c) => {\n if (c !== null && c !== undefined && c !== '' && c !== false) {\n ch.push((typeof c === 'function' || typeof c === 'object') ? c : `${c}`);\n }\n }\n children && children.forEach(c => {\n if (Array.isArray(c)) {\n c.forEach(i => push(i));\n } else {\n push(c);\n }\n });\n return ch;\n}\n\nexport function createElement(tag: string | Function | [], props?: {}, ...children) {\n const ch = collect(children);\n if (typeof tag === 'string') return { tag, props, children: ch };\n else if (Array.isArray(tag)) return tag; // JSX fragments - babel\n else if (tag === undefined && children) return ch; // JSX fragments - typescript\n else if (Object.getPrototypeOf(tag).__isAppRunComponent) return { tag, props, children: ch } // createComponent(tag, { ...props, children });\n else if (typeof tag === 'function') return tag(props, ch);\n else throw new Error(`Unknown tag in vdom ${tag}`);\n};\n\nconst keyCache = new WeakMap();\n\nexport const updateElement = (element: Element | string, nodes: VDOM, component = {}) => {\n // tslint:disable-next-line\n if (nodes == null || nodes === false) return;\n const el = (typeof element === 'string' && element) ?\n document.getElementById(element) || document.querySelector(element) : element;\n nodes = directive(nodes, component);\n render(el, nodes, component);\n}\n\nfunction render(element: Element, nodes: VDOM, parent = {}) {\n // tslint:disable-next-line\n if (nodes == null || nodes === false) return;\n nodes = createComponent(nodes, parent);\n if (!element) return;\n const isSvg = element.nodeName === \"SVG\";\n if (Array.isArray(nodes)) {\n updateChildren(element, nodes, isSvg);\n } else {\n updateChildren(element, [nodes], isSvg);\n }\n}\n\nfunction same(el: Element, node: VNode) {\n // if (!el || !node) return false;\n const key1 = el.nodeName;\n const key2 = `${node.tag || ''}`;\n return key1.toUpperCase() === key2.toUpperCase();\n}\n\nfunction update(element: Element, node: VNode, isSvg: boolean) {\n if (node['_op'] === 3) return;\n // console.assert(!!element);\n isSvg = isSvg || node.tag === \"svg\";\n if (!same(element, node)) {\n element.parentNode.replaceChild(create(node, isSvg), element);\n return;\n }\n !(node['_op'] & 2) && updateChildren(element, node.children, isSvg);\n !(node['_op'] & 1) && updateProps(element, node.props, isSvg);\n}\n\nfunction updateChildren(element, children, isSvg: boolean) {\n const old_len = element.childNodes?.length || 0;\n const new_len = children?.length || 0;\n const len = Math.min(old_len, new_len);\n for (let i = 0; i < len; i++) {\n const child = children[i];\n if (child['_op'] === 3) continue;\n const el = element.childNodes[i];\n if (typeof child === 'string') {\n if (el.textContent !== child) {\n if (el.nodeType === 3) {\n el.nodeValue = child\n } else {\n element.replaceChild(createText(child), el);\n }\n }\n } else if (child instanceof HTMLElement || child instanceof SVGElement) {\n element.insertBefore(child, el);\n } else {\n const key = child.props && child.props['key'];\n if (key) {\n if (el.key === key) {\n update(element.childNodes[i], child, isSvg);\n } else {\n // console.log(el.key, key);\n const old = keyCache[key];\n if (old) {\n const temp = old.nextSibling;\n element.insertBefore(old, el);\n temp ? element.insertBefore(el, temp) : element.appendChild(el);\n update(element.childNodes[i], child, isSvg);\n } else {\n element.replaceChild(create(child, isSvg), el);\n }\n }\n } else {\n update(element.childNodes[i], child, isSvg);\n }\n }\n }\n\n let n = element.childNodes?.length || 0;\n while (n > len) {\n element.removeChild(element.lastChild);\n n--;\n }\n\n if (new_len > len) {\n const d = document.createDocumentFragment();\n for (let i = len; i < children.length; i++) {\n d.appendChild(create(children[i], isSvg));\n }\n element.appendChild(d);\n }\n}\n\nexport const safeHTML = (html: string) => {\n const div = document.createElement('section');\n div.insertAdjacentHTML('afterbegin', html)\n return Array.from(div.children);\n}\n\nfunction createText(node) {\n if (node?.indexOf('_html:') === 0) { // ?\n const div = document.createElement('div');\n div.insertAdjacentHTML('afterbegin', node.substring(6))\n return div;\n } else {\n return document.createTextNode(node??'');\n }\n}\n\nfunction create(node: VNode | string | HTMLElement | SVGElement, isSvg: boolean): Element {\n // console.assert(node !== null && node !== undefined);\n if ((node instanceof HTMLElement) || (node instanceof SVGElement)) return node;\n if (typeof node === \"string\") return createText(node);\n if (!node.tag || (typeof node.tag === 'function')) return createText(JSON.stringify(node));\n isSvg = isSvg || node.tag === \"svg\";\n const element = isSvg\n ? document.createElementNS(\"http://www.w3.org/2000/svg\", node.tag)\n : document.createElement(node.tag);\n\n updateProps(element, node.props, isSvg);\n if (node.children) node.children.forEach(child => element.appendChild(create(child, isSvg)));\n return element\n}\n\nfunction mergeProps(oldProps: {}, newProps: {}): {} {\n newProps['class'] = newProps['class'] || newProps['className'];\n delete newProps['className'];\n const props = {};\n if (oldProps) Object.keys(oldProps).forEach(p => props[p] = null);\n if (newProps) Object.keys(newProps).forEach(p => props[p] = newProps[p]);\n return props;\n}\n\nexport function updateProps(element: Element, props: {}, isSvg) {\n // console.assert(!!element);\n const cached = element[ATTR_PROPS] || {};\n props = mergeProps(cached, props || {});\n element[ATTR_PROPS] = props;\n\n for (const name in props) {\n const value = props[name];\n // if (cached[name] === value) continue;\n // console.log('updateProps', name, value);\n if (name.startsWith('data-')) {\n const dname = name.substring(5);\n const cname = dname.replace(/-(\\w)/g, (match) => match[1].toUpperCase());\n if (element.dataset[cname] !== value) {\n if (value || value === \"\") element.dataset[cname] = value;\n else delete element.dataset[cname];\n }\n } else if (name === 'style') {\n if (element.style.cssText) element.style.cssText = '';\n if (typeof value === 'string') element.style.cssText = value;\n else {\n for (const s in value) {\n if (element.style[s] !== value[s]) element.style[s] = value[s];\n }\n }\n } else if (name.startsWith('xlink')) {\n const xname = name.replace('xlink', '').toLowerCase();\n if (value == null || value === false) {\n element.removeAttributeNS('http://www.w3.org/1999/xlink', xname);\n } else {\n element.setAttributeNS('http://www.w3.org/1999/xlink', xname, value);\n }\n } else if (name.startsWith('on')) {\n if (!value || typeof value === 'function') {\n element[name] = value;\n } else if (typeof value === 'string') {\n if (value) element.setAttribute(name, value);\n else element.removeAttribute(name);\n }\n } else if (/^id$|^class$|^list$|^readonly$|^contenteditable$|^role|-|^for$/g.test(name) || isSvg) {\n if (element.getAttribute(name) !== value) {\n if (value) element.setAttribute(name, value);\n else element.removeAttribute(name);\n }\n } else if (element[name] !== value) {\n element[name] = value;\n }\n if (name === 'key' && value) keyCache[value] = element;\n }\n if (props && typeof props['ref'] === 'function') {\n window.requestAnimationFrame(() => props['ref'](element));\n }\n}\n\nfunction render_component(node, parent, idx) {\n const { tag, props, children } = node;\n let key = `_${idx}`;\n let id = props && props['id'];\n if (!id) id = `_${idx}${Date.now()}`;\n else key = id;\n let asTag = 'section';\n if (props && props['as']) {\n asTag = props['as'];\n delete props['as'];\n }\n if (!parent.__componentCache) parent.__componentCache = {};\n let component = parent.__componentCache[key];\n if (!component || !(component instanceof tag) || !component.element) {\n const element = document.createElement(asTag);\n component = parent.__componentCache[key] = new tag({ ...props, children }).mount(element, { render: true });\n } else {\n component.renderState(component.state);\n }\n if (component.mounted) {\n const new_state = component.mounted(props, children, component.state);\n (typeof new_state !== 'undefined') && component.setState(new_state);\n }\n updateProps(component.element, props, false);\n return component.element;\n}\n\nfunction createComponent(node, parent, idx = 0) {\n if (typeof node === 'string') return node;\n if (Array.isArray(node)) return node.map(child => createComponent(child, parent, idx++));\n let vdom = node;\n if (node && typeof node.tag === 'function' && Object.getPrototypeOf(node.tag).__isAppRunComponent) {\n vdom = render_component(node, parent, idx);\n }\n if (vdom && Array.isArray(vdom.children)) {\n const new_parent = vdom.props?._component;\n if (new_parent) {\n let i = 0;\n vdom.children = vdom.children.map(child => createComponent(child, new_parent, i++));\n } else {\n vdom.children = vdom.children.map(child => createComponent(child, parent, idx++));\n }\n }\n return vdom;\n}\n","declare var customElements;\n\nexport type CustomElementOptions = {\n render?: boolean;\n shadow?: boolean;\n history?: boolean;\n global_event?: boolean;\n observedAttributes?: string[];\n};\n\nexport const customElement = (componentClass, options: CustomElementOptions = {}) => class CustomElement extends HTMLElement {\n private _shadowRoot;\n private _component;\n private _attrMap: (arg0: string) => string;\n public on;\n public run;\n constructor() {\n super();\n }\n get component() { return this._component; }\n get state() { return this._component.state; }\n\n static get observedAttributes() {\n // attributes need to be set to lowercase in order to get observed\n return (options.observedAttributes || []).map(attr => attr.toLowerCase());\n }\n\n connectedCallback() {\n if (this.isConnected && !this._component) {\n const opts = options || {};\n this._shadowRoot = opts.shadow ? this.attachShadow({ mode: 'open' }) : this;\n const observedAttributes = (opts.observedAttributes || [])\n\n const attrMap = observedAttributes.reduce((map, name) => {\n const lc = name.toLowerCase()\n if (lc !== name) {\n map[lc] = name\n }\n return map\n }, {})\n this._attrMap = (name: string) : string => attrMap[name] || name\n\n const props = {};\n Array.from(this.attributes).forEach(item => props[this._attrMap(item.name)] = item.value);\n\n // add getters/ setters to allow observation on observedAttributes\n observedAttributes.forEach(name => {\n if (this[name] !== undefined) props[name] = this[name];\n Object.defineProperty(this, name, {\n get(): any {\n return props[name];\n },\n set(this: CustomElement, value: unknown) {\n // trigger change event\n this.attributeChangedCallback(name, props[name], value)\n },\n configurable: true,\n enumerable: true\n });\n })\n\n requestAnimationFrame(() => {\n const children = this.children ? Array.from(this.children) : [];\n // children.forEach(el => el.parentElement.removeChild(el));\n this._component = new componentClass({ ...props, children }).mount(this._shadowRoot, opts);\n // attach props to component\n this._component._props = props;\n // expose dispatchEvent\n this._component.dispatchEvent = this.dispatchEvent.bind(this)\n if (this._component.mounted) {\n const new_state = this._component.mounted(props, children, this._component.state);\n if (typeof new_state !== 'undefined') this._component.state = new_state;\n }\n this.on = this._component.on.bind(this._component);\n this.run = this._component.run.bind(this._component);\n if (!(opts.render === false)) this._component.run('.');\n });\n }\n }\n\n disconnectedCallback() {\n this._component?.unload?.();\n this._component?.unmount?.();\n this._component = null;\n }\n\n attributeChangedCallback(name: string, oldValue: unknown, value: unknown) {\n if (this._component) {\n // camelCase attributes arrive only in lowercase\n const mappedName = this._attrMap(name);\n // store the new property/ attribute\n this._component._props[mappedName] = value;\n this._component.run('attributeChanged', mappedName, oldValue, value);\n\n if (value !== oldValue && !(options.render === false)) {\n window.requestAnimationFrame(() => {\n // re-render state with new combined props on next animation frame\n this._component.run('.')\n })\n }\n }\n }\n}\n\nexport default (name: string, componentClass, options?: CustomElementOptions) => {\n (typeof customElements !== 'undefined') && customElements.define(name, customElement(componentClass, options))\n}\n","import webComponent, { CustomElementOptions } from './web-component';\n\n// tslint:disable:no-invalid-this\nexport const Reflect = {\n\n meta: new WeakMap(),\n\n defineMetadata(metadataKey, metadataValue, target) {\n if (!this.meta.has(target)) this.meta.set(target, {});\n this.meta.get(target)[metadataKey] = metadataValue;\n },\n\n getMetadataKeys(target) {\n target = Object.getPrototypeOf(target);\n return this.meta.get(target) ? Object.keys(this.meta.get(target)) : [];\n },\n\n getMetadata(metadataKey, target) {\n target = Object.getPrototypeOf(target);\n return this.meta.get(target) ? this.meta.get(target)[metadataKey] : null;\n }\n}\n\nexport function update<E=string>(events?: E, options: any = {}) {\n return (target: any, key: string, descriptor: any) => {\n const name = events ? events.toString() : key;\n Reflect.defineMetadata(`apprun-update:${name}`,\n { name, key, options }, target);\n return descriptor;\n }\n}\n\nexport function on<E = string>(events?: E, options: any = {}) {\n return function (target: any, key: string) {\n const name = events ? events.toString() : key;\n Reflect.defineMetadata(`apprun-update:${name}`,\n { name, key, options }, target)\n }\n}\n\nexport function customElement(name: string, options?: CustomElementOptions) {\n return function _customElement<T extends { new(...args: any[]): {} }>(constructor: T) {\n webComponent(name, constructor, options);\n return constructor;\n }\n}\n\n","\r\nimport app, { App } from './app';\r\nimport { Reflect } from './decorator'\r\nimport { View, Update, ActionDef, ActionOptions, MountOptions, EventOptions } from './types';\r\nimport directive from './directive';\r\n\r\nconst componentCache = new Map();\r\nif (!app.find('get-components')) app.on('get-components', o => o.components = componentCache);\r\n\r\nconst REFRESH = state => state;\r\n\r\nexport class Component<T = any, E = any> {\r\n static __isAppRunComponent = true;\r\n private _app = new App();\r\n private _actions = [];\r\n private _global_events = [];\r\n private _state;\r\n private _history = [];\r\n private _history_idx = -1;\r\n private enable_history;\r\n private global_event;\r\n public element;\r\n public rendered;\r\n public mounted;\r\n public unload;\r\n private tracking_id;\r\n private observer;\r\n\r\n\r\n private renderState(state: T, vdom = null) {\r\n if (!this.view) return;\r\n let html = vdom || this.view(state);\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: html ? '.' : '-',\r\n state,\r\n vdom: html,\r\n el: this.element\r\n });\r\n\r\n if (typeof document !== 'object') return;\r\n\r\n const el = (typeof this.element === 'string' && this.element) ?\r\n document.getElementById(this.element) || document.querySelector(this.element) : this.element;\r\n\r\n if (!el) return;\r\n const tracking_attr = '_c';\r\n if (!this.unload) {\r\n el.removeAttribute && el.removeAttribute(tracking_attr);\r\n } else if (el['_component'] !== this || el.getAttribute(tracking_attr) !== this.tracking_id) {\r\n this.tracking_id = new Date().valueOf().toString();\r\n el.setAttribute(tracking_attr, this.tracking_id);\r\n if (typeof MutationObserver !== 'undefined') {\r\n if (!this.observer) this.observer = new MutationObserver(changes => {\r\n if (changes[0].oldValue === this.tracking_id || !document.body.contains(el)) {\r\n this.unload(this.state);\r\n this.observer.disconnect();\r\n this.observer = null;\r\n }\r\n });\r\n this.observer.observe(document.body, {\r\n childList: true, subtree: true,\r\n attributes: true, attributeOldValue: true, attributeFilter: [tracking_attr]\r\n });\r\n }\r\n }\r\n el['_component'] = this;\r\n\r\n if (!vdom && html) {\r\n html = directive(html, this);\r\n if (this.options.transition && document && document['startViewTransition']) {\r\n document['startViewTransition'](() => app.render(el, html, this));\r\n } else {\r\n app.render(el, html, this);\r\n }\r\n }\r\n this.rendered && this.rendered(this.state);\r\n }\r\n\r\n public setState(state: T, options: ActionOptions & EventOptions\r\n = { render: true, history: false }) {\r\n if (state instanceof Promise) {\r\n // Promise will not be saved or rendered\r\n // state will be saved and rendered when promise is resolved\r\n Promise.resolve(state).then(v => {\r\n this.setState(v, options);\r\n this._state = state;\r\n });\r\n } else {\r\n this._state = state;\r\n if (state == null) return;\r\n this.state = state;\r\n if (options.render !== false) {\r\n // before render state\r\n if (options.transition && document && document['startViewTransition']) {\r\n document['startViewTransition'](() => this.renderState(state));\r\n } else {\r\n this.renderState(state);\r\n }\r\n }\r\n if (options.history !== false && this.enable_history) {\r\n this._history = [...this._history, state];\r\n this._history_idx = this._history.length - 1;\r\n }\r\n if (typeof options.callback === 'function') options.callback(this.state);\r\n }\r\n }\r\n\r\n private _history_prev = () => {\r\n this._history_idx--;\r\n if (this._history_idx >= 0) {\r\n this.setState(this._history[this._history_idx], { render: true, history: false });\r\n }\r\n else {\r\n this._history_idx = 0;\r\n }\r\n };\r\n\r\n private _history_next = () => {\r\n this._history_idx++;\r\n if (this._history_idx < this._history.length) {\r\n this.setState(this._history[this._history_idx], { render: true, history: false });\r\n }\r\n else {\r\n this._history_idx = this._history.length - 1;\r\n }\r\n };\r\n\r\n constructor(\r\n protected state?: T,\r\n protected view?: View<T>,\r\n protected update?: Update<T, E>,\r\n protected options?) {\r\n }\r\n\r\n start = (element = null, options?: MountOptions): Component<T, E> => {\r\n this.mount(element, { render: true, ...options });\r\n if (this.mounted && typeof this.mounted === 'function') {\r\n const new_state = this.mounted({}, [], this.state);\r\n (typeof new_state !== 'undefined') && this.setState(new_state);\r\n }\r\n return this;\r\n }\r\n\r\n public mount(element = null, options?: MountOptions): Component<T, E> {\r\n console.assert(!this.element, 'Component already mounted.')\r\n this.options = options = { ...this.options, ...options };\r\n this.element = element;\r\n this.global_event = options.global_event;\r\n this.enable_history = !!options.history;\r\n\r\n if (this.enable_history) {\r\n this.on(options.history.prev || 'history-prev', this._history_prev);\r\n this.on(options.history.next || 'history-next', this._history_next);\r\n }\r\n\r\n if (options.route) {\r\n this.update = this.update || {};\r\n if (!this.update[options.route]) this.update[options.route] = REFRESH;\r\n }\r\n\r\n this.add_actions();\r\n this.state = this.state ?? this['model'] ?? {};\r\n if (typeof this.state === 'function') this.state = this.state();\r\n\r\n this.setState(this.state, { render: !!options.render, history: true });\r\n\r\n if (app['debug']) {\r\n if (componentCache.get(element)) { componentCache.get(element).push(this) }\r\n else { componentCache.set(element, [this]) }\r\n }\r\n return this;\r\n }\r\n\r\n is_global_event(name: string): boolean {\r\n return name && (\r\n this.global_event ||\r\n this._global_events.indexOf(name) >= 0 ||\r\n name.startsWith('#') || name.startsWith('/') || name.startsWith('@'));\r\n }\r\n\r\n add_action(name: string, action, options: ActionOptions = {}) {\r\n if (!action || typeof action !== 'function') return;\r\n if (options.global) this._global_events.push(name);\r\n this.on(name as any, (...p) => {\r\n\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: '>',\r\n event: name, p,\r\n current_state: this.state,\r\n options\r\n });\r\n\r\n const newState = action(this.state, ...p);\r\n\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: '<',\r\n event: name, p,\r\n newState,\r\n state: this.state,\r\n options\r\n });\r\n\r\n this.setState(newState, options)\r\n }, options);\r\n }\r\n\r\n add_actions() {\r\n const actions = this.update || {};\r\n Reflect.getMetadataKeys(this).forEach(key => {\r\n if (key.startsWith('apprun-update:')) {\r\n const meta = Reflect.getMetadata(key, this)\r\n actions[meta.name] = [this[meta.key].bind(this), meta.options];\r\n }\r\n })\r\n\r\n const all = {};\r\n if (Array.isArray(actions)) {\r\n actions.forEach(act => {\r\n const [name, action, opts] = act as ActionDef<T, E>;\r\n const names = name.toString();\r\n names.split(',').forEach(n => all[n.trim()] = [action, opts])\r\n })\r\n } else {\r\n Object.keys(actions).forEach(name => {\r\n const action = actions[name];\r\n if (typeof action === 'function' || Array.isArray(action)) {\r\n name.split(',').forEach(n => all[n.trim()] = action)\r\n }\r\n })\r\n }\r\n\r\n if (!all['.']) all['.'] = REFRESH;\r\n Object.keys(all).forEach(name => {\r\n const action = all[name];\r\n if (typeof action === 'function') {\r\n this.add_action(name, action);\r\n } else if (Array.isArray(action)) {\r\n this.add_action(name, action[0], action[1]);\r\n }\r\n });\r\n }\r\n\r\n public run(event: E, ...args) {\r\n if (this.state instanceof Promise) {\r\n return Promise.resolve(this.state).then(state => {\r\n this.state = state;\r\n this.run(event, ...args)\r\n });\r\n } else {\r\n const name = event.toString();\r\n return this.is_global_event(name) ?\r\n app.run(name, ...args) :\r\n this._app.run(name, ...args);\r\n }\r\n }\r\n\r\n public on(event: E, fn: (...args) => void, options?: any) {\r\n const name = event.toString();\r\n this._actions.push({ name, fn });\r\n return this.is_global_event(name) ?\r\n app.on(name, fn, options) :\r\n this._app.on(name, fn, options);\r\n }\r\n\r\n public runAsync(event: E, ...args) {\r\n const name = event.toString();\r\n return this.is_global_event(name) ?\r\n app.runAsync(name, ...args) :\r\n this._app.runAsync(name, ...args);\r\n }\r\n\r\n // obsolete\r\n public query(event: E, ...args) {\r\n return this.runAsync(event, ...args);\r\n }\r\n\r\n public unmount() {\r\n this.observer?.disconnect();\r\n this._actions.forEach(action => {\r\n const { name, fn } = action;\r\n this.is_global_event(name) ?\r\n app.off(name, fn) :\r\n this._app.off(name, fn);\r\n });\r\n }\r\n}\r\n","import app from './app';\n\nexport type Route = (url: string, ...args: any[]) => any;\n\nexport const ROUTER_EVENT: string = '//';\nexport const ROUTER_404_EVENT: string = '///';\n\nexport const route: Route = (url: string) => {\n if (!url) url = '#';\n if (url.startsWith('#')) {\n const [name, ...rest] = url.split('/');\n app.run(name, ...rest) || app.run(ROUTER_404_EVENT, name, ...rest);\n app.run(ROUTER_EVENT, name, ...rest);\n } else if (url.startsWith('/')) {\n const [_, name, ...rest] = url.split('/');\n app.run('/' + name, ...rest) || app.run(ROUTER_404_EVENT, '/' + name, ...rest);\n app.run(ROUTER_EVENT, '/' + name, ...rest);\n } else {\n app.run(url) || app.run(ROUTER_404_EVENT, url);\n app.run(ROUTER_EVENT, url);\n }\n}\nexport default route;","import app, { App } from './app';\nimport { createElement, render, Fragment, safeHTML } from './vdom';\nimport { Component } from './component';\nimport { VNode, View, Action, Update, EventOptions, ActionOptions, MountOptions, AppStartOptions } from './types';\nimport { on, update, customElement } from './decorator';\nimport webComponent, { CustomElementOptions } from './web-component';\nimport { Route, route, ROUTER_EVENT, ROUTER_404_EVENT } from './router';\n\nexport interface IApp {\n start<T, E = any>(element?: Element | string, model?: T, view?: View<T>, update?: Update<T, E>,\n options?: AppStartOptions<T>): Component<T, E>;\n on(name: string, fn: (...args: any[]) => void, options?: any): void;\n off(name: string, fn: (...args: any[]) => void): void;\n run(name: string, ...args: any[]): number;\n find(name: string): any | any[];\n h(tag: string | Function, props, ...children): VNode | VNode[];\n createElement(tag: string | Function, props, ...children): VNode | VNode[];\n render(element: Element | string, node: VNode): void;\n Fragment(props, ...children): any[];\n route?: Route;\n webComponent(name: string, componentClass, options?: CustomElementOptions): void;\n safeHTML(html: string): any[];\n use_render(render, mode?: 0 | 1);\n use_react(createRoot);\n}\n\napp.h = app.createElement = createElement;\napp.render = render;\napp.Fragment = Fragment;\napp.webComponent = webComponent;\napp.safeHTML = safeHTML;\n\napp.start = <T, E = any>(element?: Element | string, model?: T, view?: View<T>, update?: Update<T, E>,\n options?: AppStartOptions<T>): Component<T, E> => {\n const opts = { render: true, global_event: true, ...options };\n const component = new Component<T, E>(model, view, update);\n if (options && options.rendered) component.rendered = options.rendered;\n if (options && options.mounted) component.mounted = options.mounted;\n component.start(element, opts);\n return component;\n};\n\nconst NOOP = _ => {/* Intentionally empty */ }\napp.on('$', NOOP);\napp.on('debug', _ => NOOP);\napp.on(ROUTER_EVENT, NOOP);\napp.on('#', NOOP);\napp['route'] = route;\napp.on('route', url => app['route'] && app['route'](url));\n\nif (typeof document === 'object') {\n document.addEventListener(\"DOMContentLoaded\", () => {\n if (app['route'] === route) {\n window.onpopstate = () => route(location.hash);\n document.body.hasAttribute('apprun-no-init') || app['no-init-route'] || route(location.hash);\n }\n });\n}\nexport type StatelessComponent<T = {}> = (args: T) => string | VNode | void;\nexport { App, app, Component, View, Action, Update, on, update, EventOptions, ActionOptions, MountOptions, Fragment, safeHTML }\nexport { update as event };\nexport { ROUTER_EVENT, ROUTER_404_EVENT };\nexport { customElement, CustomElementOptions, AppStartOptions };\nexport default app as IApp;\n\nif (typeof window === 'object') {\n window['Component'] = Component;\n window['_React'] = window['React'];\n window['React'] = app;\n window['on'] = on;\n window['customElement'] = customElement;\n window['safeHTML'] = safeHTML;\n}\n\napp.use_render = (render, mode = 0) =>\n mode === 0 ?\n app.render = (el, vdom) => render(vdom, el) : // react style\n app.render = (el, vdom) => render(el, vdom); // apprun style\n\napp.use_react = (React, ReactDOM) => {\n app.h = app.createElement = React.createElement;\n app.Fragment = React.Fragment;\n app.render = (el, vdom) => ReactDOM.render(vdom, el);\n if (React.version && React.version.startsWith('18')) {\n app.render = (el, vdom) => {\n if (!el || !vdom) return;\n if (!el._root) el._root = ReactDOM.createRoot(el);\n el._root.render(vdom);\n }\n }\n}\n"],"names":["App","constructor","this","_events","on","name","fn","options","push","off","subscribers","filter","sub","find","run","args","getSubscribers","console","assert","length","forEach","delay","Object","keys","apply","once","assign","_t","clearTimeout","setTimeout","runAsync","promises","map","Promise","all","query","events","evt","endsWith","startsWith","replace","sort","a","b","event","app","root","self","global","app$1","getStateValue","component","setStateValue","value","state","setState","directive","vdom","Array","isArray","element","type","tag","props","children","key","substring","e","handler","p","target","checked","Number","multiple","selected","apply_directive","Fragment","collect","ATTR_PROPS","ch","c","i","keyCache","WeakMap","update","node","isSvg","el","key1","nodeName","key2","toUpperCase","same","parentNode","replaceChild","create","updateChildren","updateProps","old_len","_a","childNodes","new_len","len","Math","min","child","textContent","nodeType","nodeValue","createText","HTMLElement","SVGElement","insertBefore","old","temp","nextSibling","appendChild","n","_b","removeChild","lastChild","d","document","createDocumentFragment","safeHTML","html","div","createElement","insertAdjacentHTML","from","indexOf","createTextNode","JSON","stringify","createElementNS","cached","oldProps","newProps","mergeProps","cname","match","dataset","style","cssText","s","xname","toLowerCase","removeAttributeNS","setAttributeNS","setAttribute","removeAttribute","test","getAttribute","window","requestAnimationFrame","createComponent","parent","idx","getPrototypeOf","__isAppRunComponent","id","Date","now","asTag","__componentCache","renderState","mount","render","mounted","new_state","render_component","new_parent","_component","customElement","componentClass","super","observedAttributes","attr","connectedCallback","isConnected","opts","_shadowRoot","shadow","attachShadow","mode","attrMap","reduce","lc","_attrMap","attributes","item","undefined","defineProperty","get","set","attributeChangedCallback","configurable","enumerable","_props","dispatchEvent","bind","disconnectedCallback","unload","_d","_c","unmount","oldValue","mappedName","webComponent","customElements","define","Reflect","meta","defineMetadata","metadataKey","metadataValue","has","getMetadataKeys","getMetadata","descriptor","toString","componentCache","Map","o","components","REFRESH","Component","view","_","getElementById","querySelector","tracking_attr","tracking_id","valueOf","MutationObserver","observer","changes","body","contains","disconnect","observe","childList","subtree","attributeOldValue","attributeFilter","transition","rendered","history","resolve","then","v","_state","enable_history","_history","_history_idx","callback","_app","_actions","_global_events","_history_prev","_history_next","start","global_event","prev","next","route","add_actions","is_global_event","add_action","action","current_state","newState","actions","act","split","trim","ROUTER_EVENT","ROUTER_404_EVENT","url","rest","h","Error","nodes","model","NOOP","addEventListener","onpopstate","location","hash","hasAttribute","use_render","use_react","React","ReactDOM","version","_root","createRoot"],"mappings":"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"}
|