apprun 3.35.0 → 3.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/WHATSNEW.md +9 -1
- package/apprun.d.ts +4 -4
- package/dist/apprun-dev-tools.js +1 -1
- package/dist/apprun-dev-tools.js.map +1 -1
- package/dist/apprun-html.esm.js +7 -7
- 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 +7 -7
- package/dist/apprun-play-html.esm.js.map +1 -1
- package/dist/apprun-play.js +1 -1
- package/dist/apprun-play.js.map +1 -1
- package/dist/apprun.esm.js +1 -1
- package/dist/apprun.esm.js.map +1 -1
- package/dist/apprun.js +1 -1
- package/dist/apprun.js.map +1 -1
- package/esm/app.js +55 -11
- package/esm/app.js.map +1 -1
- package/esm/apprun-html.js +8 -4
- package/esm/apprun-html.js.map +1 -1
- package/esm/apprun.js +64 -14
- package/esm/apprun.js.map +1 -1
- package/esm/component.js +56 -19
- package/esm/component.js.map +1 -1
- package/esm/decorator.js +22 -5
- package/esm/decorator.js.map +1 -1
- package/esm/directive.js +64 -13
- package/esm/directive.js.map +1 -1
- package/esm/router.js +22 -4
- package/esm/router.js.map +1 -1
- package/esm/type-utils.js +91 -0
- package/esm/type-utils.js.map +1 -0
- package/esm/types.js +32 -11
- package/esm/types.js.map +1 -1
- package/esm/vdom-my.js +66 -43
- package/esm/vdom-my.js.map +1 -1
- package/esm/version.js +15 -0
- package/esm/version.js.map +1 -0
- package/esm/web-component.js +30 -10
- package/esm/web-component.js.map +1 -1
- package/jest.config.js +1 -7
- package/jsx-runtime.js +1 -1
- package/jsx-runtime.js.map +1 -1
- package/package.json +1 -1
- package/plan/plan-apprun-bugfixes.md +207 -0
- package/src/app.ts +52 -11
- package/src/apprun-html.ts +8 -4
- package/src/apprun.ts +76 -17
- package/src/component.ts +58 -20
- package/src/decorator.ts +23 -6
- package/src/directive.ts +64 -13
- package/src/router.ts +23 -5
- package/src/type-utils.ts +130 -0
- package/src/types.ts +33 -12
- package/src/vdom-my.ts +75 -39
- package/src/version.ts +16 -0
- package/src/web-component.ts +31 -11
package/dist/apprun.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dist/apprun.js","mappings":"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","sources":["webpack://apprun/webpack/universalModuleDefinition","webpack://apprun/./src/app.ts","webpack://apprun/./src/directive.ts","webpack://apprun/./src/vdom-my.ts","webpack://apprun/webpack/bootstrap","webpack://apprun/webpack/runtime/define property getters","webpack://apprun/webpack/runtime/global","webpack://apprun/webpack/runtime/hasOwnProperty shorthand","webpack://apprun/webpack/runtime/make namespace object","webpack://apprun/./src/web-component.ts","webpack://apprun/./src/decorator.ts","webpack://apprun/./src/component.ts","webpack://apprun/./src/router.ts","webpack://apprun/./src/apprun.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"apprun\"] = factory();\n\telse\n\t\troot[\"apprun\"] = factory();\n})(this, () => {\nreturn ","/**\n * Core AppRun application class and singleton instance\n *\n * This file provides:\n * 1. App class - The core event system implementation with pub/sub capabilities\n * - on(): Subscribe to events\n * - off(): Unsubscribe from events\n * - run(): Publish events synchronously\n * - runAsync(): Publish events asynchronously\n * - query(): Alias for runAsync\n *\n * 2. Default app singleton - Global event bus instance\n * - Created once and reused across the application\n * - Stored in global scope (window/global)\n * - Version tracked to prevent duplicate instances\n *\n * Usage:\n * ```ts\n * // Subscribe to events\n * app.on('event-name', (state, ...args) => {\n * // Handle event\n * });\n *\n * // Publish events\n * app.run('event-name', ...args);\n * ```\n */\n\nimport { EventOptions } from './types'\n\nexport class App {\n\n _events: { [key: string]: Array<{ fn: (...args: any[]) => any, options: EventOptions }> };\n\n public start: any;\n public h: any;\n public createElement: any;\n public render: any;\n public Fragment: any;\n public webComponent: any;\n public safeHTML: any;\n public use_render: any;\n public use_react: any;\n public route: any;\n\n public version: string;\n\n constructor() {\n this._events = {} as { [key: string]: Array<{ fn: (...args: any[]) => any, options: EventOptions }> };\n }\n\n on(name: string, fn: (...args: any[]) => any, 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: any[]) => any): 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: any[]): 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: (...args: any[]) => any, options: EventOptions = {}): void {\n this.on(name, fn, { ...options, once: true });\n }\n\n private delay(name: string, fn: (...args: any[]) => any, args: any[], options: EventOptions): 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: any[]): 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: any[]): Promise<any[]> {\n return this.runAsync(name, ...args);\n }\n\n private getSubscribers(name: string, events: { [key: string]: Array<{ fn: (...args: any[]) => any, options: EventOptions }> }): Array<{ fn: (...args: any[]) => any, options: EventOptions }> {\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.3.11';\nlet _app: App;\nconst root = (typeof window !== 'undefined' ? window :\n typeof global !== 'undefined' ? global :\n typeof self !== 'undefined' ? self : {}) as any;\n\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","/**\n * Component Directives Implementation\n * \n * This file provides built-in directives for components:\n * 1. Event Binding\n * - $on: Bind DOM events to component events\n * - Supports event delegation and parameters\n * - Handles function, string, and array event handlers\n * \n * 2. Two-way Data Binding\n * - $bind: Sync form elements with component state\n * - Handles input types: text, checkbox, radio, select\n * - Automatic value type conversion\n * - Support for complex property paths\n * \n * 3. Custom Directives\n * - Extensible directive system\n * - Processes virtual DOM during rendering\n * - Supports custom attribute directives\n * \n * Usage:\n * ```tsx\n * // Event binding\n * <button $onclick=\"event-name\">Click</button>\n * <input $oninput={e => setState(e.target.value)} />\n * \n * // Two-way binding\n * <input $bind=\"state.property\" />\n * <select $bind=\"selected\">...</select>\n * ```\n */\n\nimport 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;\n","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","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Web Components Integration\n * \n * This file enables using AppRun components as Web Components:\n * 1. Custom Element Creation\n * - Converts AppRun components to custom elements\n * - Handles lifecycle (connected, disconnected, etc)\n * - Manages shadow DOM and light DOM rendering\n * \n * 2. Property/Attribute Sync\n * - Observes attribute changes\n * - Updates component state automatically\n * - Handles camelCase/kebab-case conversion\n * - Supports complex property types\n * \n * 3. Event Handling\n * - Proxies events between component and element\n * - Supports both global and local events\n * - Maintains proper event bubbling\n * \n * Usage:\n * ```ts\n * // Register web component\n * @customElement('my-element')\n * class MyComponent extends Component {\n * // Regular AppRun component code\n * }\n * \n * // Use in HTML\n * <my-element name=\"value\"></my-element>\n * ```\n */\n\ndeclare 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/**\n * TypeScript Decorators for AppRun Components\n * \n * This file provides decorators that enable:\n * 1. Event Handler Registration\n * - @on(): Subscribe to events with options\n * - @update(): Define state updates with metadata\n * \n * 2. Web Component Integration\n * - @customElement(): Register as custom element with options\n * - Handles shadow DOM and attribute observation\n * \n * 3. Metadata Management\n * - Custom Reflect implementation for decorator metadata\n * - Stores event handler and update metadata\n * - Supports runtime reflection for dynamic behavior\n * \n * Usage:\n * ```ts\n * @customElement('my-element')\n * class MyComponent extends Component {\n * @on('event') \n * handler(state, ...args) {\n * // Handle event\n * }\n * \n * @update('event') \n * updater(state, ...args) {\n * // Update state\n * }\n * }\n * ```\n */\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","/**\r\n * AppRun Component System Implementation\r\n *\r\n * This file provides the Component class which is the foundation for:\r\n * 1. State Management\r\n * - Maintains component state\r\n * - Handles state updates\r\n * - Supports state history\r\n *\r\n * 2. View Rendering\r\n * - Renders virtual DOM to real DOM\r\n * - Handles component lifecycle (mounted, rendered, unload)\r\n * - Supports shadow DOM and web components\r\n *\r\n * 3. Event Handling\r\n * - Local and global event subscription\r\n * - Event handler registration via decorators\r\n * - Action to state updates\r\n *\r\n * Usage:\r\n * ```ts\r\n * class MyComponent extends Component {\r\n * state = // Initial state\r\n * view = state => // Return virtual DOM\r\n * update = {\r\n * 'event': (state, ...args) => // Return new state\r\n * }\r\n * }\r\n *\r\n * // Mount component\r\n * new MyComponent().mount('element-id');\r\n * ```\r\n */\r\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\r\n const handleAsyncIterator = async (iterator: AsyncIterator<T>) => {\r\n try {\r\n while (true) {\r\n const { value, done } = await iterator.next();\r\n if (done) break;\r\n this.setState(value, options);\r\n }\r\n } catch (e) {\r\n console.error('Error in async iterator:', e);\r\n }\r\n };\r\n\r\n const result = state as any;\r\n if (result?.[Symbol.asyncIterator]) {\r\n // handleAsyncIterator(result[Symbol.asyncIterator]());\r\n this.setState(handleAsyncIterator(result[Symbol.asyncIterator]()) as any, options);\r\n return;\r\n } else if (result?.[Symbol.iterator] && typeof result.next === \"function\") {\r\n for (const value of result) {\r\n this.setState(value, options);\r\n }\r\n return;\r\n } else if (state && 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","/**\n * AppRun Router Implementation\n * \n * This file provides URL routing capabilities:\n * 1. Hash-based routing (#/path)\n * 2. Path-based routing (/path) \n * 3. Event-based navigation\n * \n * Features:\n * - Automatic route event firing\n * - 404 handling via ROUTER_404_EVENT\n * - History API integration\n * - Route parameter parsing\n * \n * Usage:\n * ```ts\n * // Handle routes\n * app.on('#/home', () => // Show home page);\n * app.on('#/users/:id', (id) => // Show user profile);\n * \n * // Navigate programmatically\n * app.run('route', '#/home');\n * ```\n */\n\nimport app from './app';\n\nexport type Route = (url: string, ...args: any[]) => any;\n\nexport const ROUTER_EVENT: string = '//';\nexport const ROUTER_404_EVENT: string = '///';\nexport const route: Route = (url: string) => {\n if (app['lastUrl'] === url) return; // Prevent duplicate routing\n app['lastUrl'] = url;\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;\n","/**\n * Main AppRun framework entry point\n *\n * This file:\n * 1. Assembles core AppRun modules into a complete framework\n * 2. Exports public API and types\n * 3. Initializes global app instance with:\n * - Virtual DOM rendering\n * - Component system\n * - Router\n * - Web component support\n *\n * Key exports:\n * - app: Global event system instance\n * - Component: Base component class\n * - Decorators: @on, @update, @customElement\n * - Router events and configuration\n * - Web component registration\n *\n * Usage:\n * ```ts\n * import { app, Component } from 'apprun';\n *\n * // Create components\n * class MyComponent extends Component {\n * state = // Initial state\n * view = state => // Render view\n * update = {\n * 'event': (state, ...args) => // Handle events\n * }\n * }\n * ```\n */\n\nimport 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 type StatelessComponent<T = {}> = (args: T) => string | VNode | void;\ntype OnDecorator = {\n <T = any>(options?: any): (constructor: Function) => void;\n <E = string>(events?: E, options?: any): (target: any, key: string) => void;\n};\n\nexport {\n App,\n app,\n Component,\n View,\n Action,\n Update,\n on,\n update,\n EventOptions,\n ActionOptions,\n MountOptions,\n Fragment,\n safeHTML\n}\nexport { update as event };\nexport { ROUTER_EVENT, ROUTER_404_EVENT };\nexport { customElement, CustomElementOptions, AppStartOptions };\nexport default app as IApp;\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\nif (!app.start) {\n\n app.version = '3.35.0';\n\n app.h = app.createElement = createElement;\n app.render = render;\n app.Fragment = Fragment;\n app.webComponent = webComponent;\n app.safeHTML = safeHTML;\n\n app.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\n const NOOP = _ => {/* Intentionally empty */ }\n // app.on('$', NOOP);\n app.on('debug', _ => NOOP);\n app.on(ROUTER_EVENT, NOOP);\n app.on(ROUTER_404_EVENT, NOOP);\n app.route = route;\n app.on('route', url => app['route'] && app['route'](url));\n\n if (typeof document === 'object') {\n document.addEventListener(\"DOMContentLoaded\", () => {\n const init_load = document.body.hasAttribute('apprun-no-init') || app['no-init-route'] || false;\n const use_hash = app.find('#') || app.find('#/') || false;\n\n // console.log(`AppRun ${app.version} started with ${use_hash ? 'hash' : 'path'} routing. Initial load: ${init_load ? 'disabled' : 'enabled'}.`);\n window.addEventListener('hashchange', () => route(location.hash));\n window.addEventListener('popstate', () => route(location.pathname));\n\n if (use_hash) {\n init_load && route(location.hash);\n } else {\n init_load && route(location.pathname);\n document.body.addEventListener('click', e => {\n const element = e.target as HTMLElement;\n const menu = (element.tagName === 'A' ? element : element.closest('a')) as HTMLAnchorElement;\n if (menu &&\n menu.origin === location.origin) {\n e.preventDefault();\n history.pushState(null, '', menu.pathname);\n route(menu.pathname);\n }\n });\n }\n });\n }\n\n type ComponentType = typeof Component & {\n <T = any>(options?: any): (constructor: Function) => void;\n };\n\n if (typeof window === 'object') {\n window['Component'] = Component as ComponentType;\n window['_React'] = window['React'];\n window['React'] = app;\n window['on'] = on as OnDecorator;\n window['customElement'] = customElement;\n window['safeHTML'] = safeHTML;\n }\n\n app.use_render = (render, mode = 0) => {\n if (mode === 0) {\n app.render = (el, vdom) => render(vdom, el); // react style\n } else {\n app.render = (el, vdom) => render(el, vdom); // apprun style\n }\n };\n\n app.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}\n"],"names":["root","factory","exports","module","define","amd","this","App","constructor","_events","on","name","fn","options","push","off","subscribers","filter","sub","find","run","args","getSubscribers","console","assert","length","forEach","delay","Object","keys","apply","once","_t","clearTimeout","setTimeout","runAsync","promises","map","Promise","all","query","events","evt","endsWith","startsWith","replace","sort","a","b","event","_app","window","g","self","app","_AppRunVersions","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","createElement","undefined","getPrototypeOf","__isAppRunComponent","Error","keyCache","WeakMap","updateElement","nodes","parent","createComponent","isSvg","nodeName","updateChildren","render","document","getElementById","querySelector","update","node","el","key1","key2","toUpperCase","same","updateProps","parentNode","replaceChild","create","old_len","childNodes","new_len","len","Math","min","child","textContent","nodeType","nodeValue","createText","HTMLElement","SVGElement","insertBefore","old","temp","nextSibling","appendChild","n","removeChild","lastChild","d","createDocumentFragment","safeHTML","html","div","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","requestAnimationFrame","idx","id","Date","now","asTag","__componentCache","renderState","mount","mounted","new_state","render_component","new_parent","_component","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","o","defineProperty","enumerable","get","globalThis","Function","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","customElement","componentClass","super","observedAttributes","attr","connectedCallback","isConnected","opts","_shadowRoot","shadow","attachShadow","mode","attrMap","reduce","lc","_attrMap","attributes","item","set","attributeChangedCallback","configurable","_props","dispatchEvent","bind","disconnectedCallback","unload","unmount","oldValue","mappedName","customElements","Reflect","meta","defineMetadata","metadataKey","metadataValue","has","getMetadataKeys","getMetadata","descriptor","toString","componentCache","Map","components","REFRESH","Component","view","_","tracking_attr","tracking_id","valueOf","MutationObserver","observer","changes","body","contains","disconnect","observe","childList","subtree","attributeOldValue","attributeFilter","transition","rendered","history","result","asyncIterator","async","iterator","done","next","error","handleAsyncIterator","resolve","then","v","_state","enable_history","_history","_history_idx","callback","_actions","_global_events","_history_prev","_history_next","start","global_event","prev","route","add_actions","is_global_event","add_action","action","global","current_state","newState","actions","act","split","trim","ROUTER_EVENT","ROUTER_404_EVENT","url","rest","version","h","webComponent","model","NOOP","addEventListener","init_load","hasAttribute","use_hash","location","hash","pathname","menu","tagName","closest","origin","preventDefault","pushState","use_render","use_react","React","ReactDOM","_root","createRoot"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"dist/apprun.js","mappings":"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","sources":["webpack://apprun/webpack/universalModuleDefinition","webpack://apprun/./src/app.ts","webpack://apprun/./src/directive.ts","webpack://apprun/./src/type-utils.ts","webpack://apprun/./src/vdom-my.ts","webpack://apprun/./src/version.ts","webpack://apprun/webpack/bootstrap","webpack://apprun/webpack/runtime/define property getters","webpack://apprun/webpack/runtime/global","webpack://apprun/webpack/runtime/hasOwnProperty shorthand","webpack://apprun/webpack/runtime/make namespace object","webpack://apprun/./src/web-component.ts","webpack://apprun/./src/decorator.ts","webpack://apprun/./src/component.ts","webpack://apprun/./src/router.ts","webpack://apprun/./src/apprun.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"apprun\"] = factory();\n\telse\n\t\troot[\"apprun\"] = factory();\n})(this, () => {\nreturn ","/**\n * Core AppRun application class and singleton instance\n *\n * This file provides:\n * 1. App class - The core event system implementation with pub/sub capabilities\n * - on(): Subscribe to events with options (once, delay, global)\n * - off(): Unsubscribe from events with proper cleanup\n * - run(): Publish events synchronously with error handling\n * - runAsync(): Publish events asynchronously with Promise support\n * - query(): Alias for runAsync for backward compatibility\n *\n * 2. Default app singleton - Global event bus instance\n * - Created once and reused across the application\n * - Stored in global scope (window/global) with version tracking\n * - Prevents duplicate instances across different versions\n *\n * Features:\n * - Event wildcards support (events ending with '*')\n * - Delayed event execution with timeout management\n * - Once-only event subscriptions\n * - Async event handling with Promise.all\n * - Global event bus shared across components\n * - Memory leak prevention with proper cleanup\n *\n * Type Safety Improvements (v3.35.1):\n * - Added validation for event handler functions\n * - Enhanced error handling in event execution\n * - Improved null checks in delayed event handling\n * - Better error reporting for invalid handlers\n *\n * Usage:\n * ```ts\n * // Subscribe to events\n * app.on('event-name', (state, ...args) => {\n * // Handle event\n * });\n *\n * // Publish events\n * app.run('event-name', ...args);\n * \n * // Async events\n * app.runAsync('async-event', data).then(results => {\n * // Handle results\n * });\n * ```\n */\n\nimport { EventOptions } from './types'\nimport { APPRUN_VERSION_GLOBAL } from './version'\n\nexport class App {\n\n _events: { [key: string]: Array<{ fn: (...args: any[]) => any, options: EventOptions }> };\n\n public start: any;\n public h: any;\n public createElement: any;\n public render: any;\n public Fragment: any;\n public webComponent: any;\n public safeHTML: any;\n public use_render: any;\n public use_react: any;\n public route: any;\n\n public version: string;\n\n constructor() {\n this._events = {} as { [key: string]: Array<{ fn: (...args: any[]) => any, options: EventOptions }> };\n }\n\n on(name: string, fn: (...args: any[]) => any, 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: any[]) => any): 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: any[]): 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 (!fn || typeof fn !== 'function') {\n console.error(`AppRun event handler for '${name}' is not a function:`, fn);\n return false;\n }\n if (options.delay) {\n this.delay(name, fn, args, options);\n } else {\n try {\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n } catch (error) {\n console.error(`Error in event handler for '${name}':`, error);\n }\n }\n return !sub.options.once;\n });\n\n return subscribers.length;\n }\n\n once(name: string, fn: (...args: any[]) => any, options: EventOptions = {}): void {\n this.on(name, fn, { ...options, once: true });\n }\n\n private delay(name: string, fn: (...args: any[]) => any, args: any[], options: EventOptions): void {\n if (options._t) clearTimeout(options._t);\n options._t = setTimeout(() => {\n clearTimeout(options._t);\n try {\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n } catch (error) {\n console.error(`Error in delayed event handler for '${name}':`, error);\n }\n }, options.delay);\n }\n\n runAsync(name: string, ...args: any[]): 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 if (!fn || typeof fn !== 'function') {\n console.error(`AppRun async event handler for '${name}' is not a function:`, fn);\n return Promise.resolve(null);\n }\n try {\n return Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n } catch (error) {\n console.error(`Error in async event handler for '${name}':`, error);\n return Promise.reject(error);\n }\n });\n return Promise.all(promises);\n }\n\n query(name: string, ...args: any[]): Promise<any[]> {\n return this.runAsync(name, ...args);\n }\n\n private getSubscribers(name: string, events: { [key: string]: Array<{ fn: (...args: any[]) => any, options: EventOptions }> }): Array<{ fn: (...args: any[]) => any, options: EventOptions }> {\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_VERSION_GLOBAL;\nlet _app: App;\nconst root = (typeof window !== 'undefined' ? window :\n typeof global !== 'undefined' ? global :\n typeof self !== 'undefined' ? self : {}) as any;\n\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","/**\n * Component Directives Implementation\n * \n * This file provides built-in directives for components:\n * 1. Event Binding ($on directives)\n * - $on: Bind DOM events to component events\n * - Supports event delegation and parameters\n * - Handles function, string, and array event handlers\n * - Type-safe event target handling\n * \n * 2. Two-way Data Binding ($bind directive)\n * - $bind: Sync form elements with component state\n * - Handles input types: text, checkbox, radio, number, range\n * - Supports select (single/multiple) and textarea elements\n * - Automatic value type conversion for numbers\n * - Support for complex property paths\n * \n * 3. Custom Directives\n * - Extensible directive system via '$' events\n * - Processes virtual DOM during rendering\n * - Supports custom attribute directives\n * \n * Features:\n * - Automatic state synchronization\n * - Type conversion for form inputs\n * - Event delegation support\n * - Multiple event handler formats\n * - Nested property binding\n * - Custom directive extensibility\n *\n * Type Safety Improvements (v3.35.1):\n * - Added null checks for event targets before type assertions\n * - Proper typing for different HTML element types\n * - Enhanced error handling for invalid event targets\n * - Safer DOM element property access\n *\n * Usage:\n * ```tsx\n * // Event binding\n * <button $onclick=\"event-name\">Click</button>\n * <input $oninput={e => setState(e.target.value)} />\n * \n * // Two-way binding\n * <input $bind=\"state.property\" />\n * <select $bind=\"selected\">...</select>\n * \n * // Array handlers\n * <button $onclick={['handler', param1, param2]}>Click</button>\n * ```\n */\n\nimport app from './app';\nimport { safeEventTarget } from './type-utils';\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 => {\n const target = safeEventTarget<HTMLInputElement>(e);\n if (target) {\n setStateValue(component, name || target.name, target.checked);\n }\n };\n break;\n case 'radio':\n props['checked'] = getStateValue(component, name) === props['value'];\n props['onclick'] = e => {\n const target = safeEventTarget<HTMLInputElement>(e);\n if (target) {\n setStateValue(component, name || target.name, target.value);\n }\n };\n break;\n case 'number':\n case 'range':\n props['value'] = getStateValue(component, name);\n props['oninput'] = e => {\n const target = safeEventTarget<HTMLInputElement>(e);\n if (target) {\n setStateValue(component, name || target.name, Number(target.value));\n }\n };\n break;\n default:\n props['value'] = getStateValue(component, name);\n props['oninput'] = e => {\n const target = safeEventTarget<HTMLInputElement>(e);\n if (target) {\n setStateValue(component, name || target.name, target.value);\n }\n };\n }\n } else if (tag === 'select') {\n props['value'] = getStateValue(component, name);\n props['onchange'] = e => {\n const target = safeEventTarget<HTMLSelectElement>(e);\n if (target && !target.multiple) { // multiple selection use $bind on option\n setStateValue(component, name || target.name, target.value);\n }\n }\n } else if (tag === 'option') {\n props['selected'] = getStateValue(component, name);\n props['onclick'] = e => {\n const target = safeEventTarget<HTMLOptionElement>(e);\n if (target) {\n setStateValue(component, name || (target as any).name, target.selected);\n }\n };\n } else if (tag === 'textarea') {\n props['innerHTML'] = getStateValue(component, name);\n props['oninput'] = e => {\n const target = safeEventTarget<HTMLTextAreaElement>(e);\n if (target) {\n setStateValue(component, name || target.name, target.value);\n }\n };\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;\n","/**\n * Type Safety Utilities for AppRun\n * \n * This file provides utility functions and types to improve type safety\n * across the AppRun framework, including:\n * 1. Safe type assertions with null checks\n * 2. Global object assignment helpers\n * 3. Event target type guards\n * 4. Function validation utilities\n */\n\n/**\n * Safely cast event target to specific HTML element type with null check\n */\nexport function safeEventTarget<T extends HTMLElement = HTMLElement>(event: Event): T | null {\n return event?.target instanceof HTMLElement ? event.target as T : null;\n}\n\n/**\n * Type guard to check if an object is a valid function\n */\nexport function isFunction(obj: any): obj is Function {\n return typeof obj === 'function';\n}\n\n/**\n * Type guard to check if an object is a valid HTML element\n */\nexport function isHTMLElement(obj: any): obj is HTMLElement {\n return obj instanceof HTMLElement;\n}\n\n/**\n * Safely assign properties to global object with type checking\n */\nexport function safeGlobalAssign<T extends Record<string, any>>(\n globalObj: any,\n assignments: T\n): void {\n if (typeof globalObj === 'object' && globalObj !== null) {\n Object.keys(assignments).forEach(key => {\n globalObj[key] = assignments[key];\n });\n }\n}\n\n/**\n * Safely get property from global object with fallback\n */\nexport function safeGlobalGet<T>(\n globalObj: any,\n property: string,\n fallback?: T\n): T | undefined {\n if (typeof globalObj === 'object' && globalObj !== null) {\n return globalObj[property] ?? fallback;\n }\n return fallback;\n}\n\n/**\n * Type-safe wrapper for DOM element queries\n */\nexport function safeQuerySelector<T extends Element = Element>(\n selector: string,\n context: Document | Element = document\n): T | null {\n try {\n return context.querySelector<T>(selector);\n } catch (error) {\n console.warn(`Invalid selector: ${selector}`, error);\n return null;\n }\n}\n\n/**\n * Type-safe wrapper for DOM element by ID\n */\nexport function safeGetElementById<T extends HTMLElement = HTMLElement>(\n id: string\n): T | null {\n try {\n return document.getElementById(id) as T | null;\n } catch (error) {\n console.warn(`Error getting element by id: ${id}`, error);\n return null;\n }\n}\n\n/**\n * Validate and safely execute a function with error handling\n */\nexport function safeExecute<T extends any[], R>(\n fn: ((...args: T) => R) | undefined | null,\n args: T,\n context?: any,\n errorMessage?: string\n): R | undefined {\n if (!isFunction(fn)) {\n if (errorMessage) {\n console.warn(errorMessage, fn);\n }\n return undefined;\n }\n\n try {\n return context ? fn.apply(context, args) : fn(...args);\n } catch (error) {\n console.error(errorMessage || 'Error executing function:', error);\n return undefined;\n }\n}\n\n/**\n * Type definitions for improved global object safety\n */\nexport interface SafeGlobalWindow {\n Component?: any;\n _React?: any;\n React?: any;\n on?: any;\n customElement?: any;\n safeHTML?: any;\n html?: any;\n svg?: any;\n run?: any;\n [key: string]: any;\n}\n\nexport type SafeGlobalContext = SafeGlobalWindow | typeof globalThis | any;\n","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 = {};\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 // 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 updateChildren(element, node.children, isSvg);\n updateProps(element, node.props, isSvg);\n}\n\nfunction updateChildren(element: Element, children: any[], isSvg: boolean) {\n const old_len = element.childNodes?.length || 0;\n const new_len = children?.length || 0;\n\n // Handle key-based reordering first if any children have keys\n const hasKeysInNewChildren = children?.some(child =>\n child && typeof child === 'object' && child.props && child.props.key !== undefined\n );\n\n if (hasKeysInNewChildren) {\n // Create a map of existing keyed elements\n const existingKeyedElements = new Map();\n for (let i = 0; i < old_len; i++) {\n const el = element.childNodes[i];\n if (el && el.key) {\n existingKeyedElements.set(el.key, el);\n }\n }\n\n // Build new DOM structure\n const fragment = document.createDocumentFragment();\n for (let i = 0; i < new_len; i++) {\n const child = children[i];\n if (child == null) continue;\n\n const key = child.props && child.props['key'];\n if (key && existingKeyedElements.has(key)) {\n // Reuse existing element\n const existingEl = existingKeyedElements.get(key);\n update(existingEl, child as VNode, isSvg);\n fragment.appendChild(existingEl);\n existingKeyedElements.delete(key); // Mark as used\n } else {\n // Create new element\n fragment.appendChild(create(child, isSvg));\n }\n }\n\n // Clear current children and append new structure\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n element.appendChild(fragment);\n return;\n }\n\n // Original non-keyed logic\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 == null) continue;\n const el = element.childNodes[i];\n if (!el) continue; // Safety check for undefined childNodes\n if (typeof child === 'string') {\n if (el.nodeType === 3) {\n if (el.nodeValue !== child) {\n el.nodeValue = child;\n }\n } else {\n element.replaceChild(createText(child), el);\n }\n } else if (child instanceof HTMLElement || child instanceof SVGElement) {\n element.replaceChild(child, el);\n } else if (child && typeof child === 'object') {\n update(element.childNodes[i], child as VNode, isSvg);\n }\n }\n\n // Remove extra old nodes\n while (element.childNodes.length > len) {\n element.removeChild(element.lastChild);\n }\n\n if (new_len > len) {\n const d = document.createDocumentFragment();\n for (let i = len; i < children.length; i++) {\n const child = children[i];\n if (child != null) {\n d.appendChild(create(child, isSvg));\n }\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\n // Type guard for VNode objects - handle invalid node types gracefully\n if (!node || typeof node !== 'object' || !node.tag || (typeof node.tag === 'function')) {\n return createText(typeof node === 'object' ? JSON.stringify(node) : String(node ?? ''));\n }\n\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 !== undefined) {\n keyCache[value] = element;\n element.key = value; // Set key property on the DOM element\n }\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","/**\n * Version Management Utility\n * \n * Single source of truth for AppRun version information.\n * This file ensures version consistency across all modules.\n * \n * The version is derived from package.json and should be updated\n * only when the package version changes.\n */\n\n// Import version from package.json to maintain single source of truth\n// This version string is used across the framework\nexport const APPRUN_VERSION = '3.36.0';\n\n// Version string with prefix for global tracking\nexport const APPRUN_VERSION_GLOBAL = `AppRun-${APPRUN_VERSION}`;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Web Components Integration\n * \n * This file enables using AppRun components as Web Components:\n * 1. Custom Element Creation\n * - Converts AppRun components to custom elements\n * - Handles lifecycle (connected, disconnected, attributeChanged)\n * - Manages shadow DOM and light DOM rendering options\n * - Automatic element registration with customElements.define()\n * \n * 2. Property/Attribute Sync\n * - Observes attribute changes with attributeChangedCallback\n * - Updates component state automatically on changes\n * - Handles camelCase/kebab-case conversion automatically\n * - Supports complex property types and JSON parsing\n * - Two-way data binding between attributes and state\n * \n * 3. Event Handling\n * - Proxies events between component and element\n * - Supports both global and local event systems\n * - Maintains proper event bubbling and capturing\n * - Custom event dispatching for component communication\n * \n * Features:\n * - Shadow DOM encapsulation support\n * - Attribute observation and change detection\n * - Lifecycle management and cleanup\n * - Property reflection to attributes\n * - Event proxy system\n * - Flexible rendering options\n *\n * Type Safety Improvements (v3.35.1):\n * - Enhanced custom element options typing\n * - Better lifecycle method signatures\n * - Improved attribute/property type safety\n * - Safer DOM manipulation with null checks\n *\n * Usage:\n * ```ts\n * // Register web component\n * @customElement('my-element', { \n * shadow: true,\n * observedAttributes: ['name', 'value']\n * })\n * class MyComponent extends Component {\n * // Regular AppRun component code\n * }\n * \n * // Use in HTML\n * <my-element name=\"value\" data-prop=\"complex\"></my-element>\n * ```\n */\n\ndeclare 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/**\n * TypeScript Decorators for AppRun Components\n * \n * This file provides decorators that enable:\n * 1. Event Handler Registration\n * - @on(): Subscribe to events with options (global, once, delay)\n * - @update(): Define state updates with metadata and options\n * - Supports method and class decoration patterns\n * \n * 2. Web Component Integration\n * - @customElement(): Register as custom element with options\n * - Handles shadow DOM and attribute observation\n * - Automatic lifecycle management for web components\n * \n * 3. Metadata Management\n * - Custom Reflect implementation for decorator metadata\n * - Stores event handler and update metadata for runtime use\n * - Supports runtime reflection for dynamic behavior\n * - Metadata keys for event bindings and updates\n * \n * Features:\n * - Event handler decoration with options\n * - State update method decoration\n * - Web component registration\n * - Metadata-driven event binding\n * - Flexible decorator patterns\n * - Runtime metadata access\n *\n * Type Safety Improvements (v3.35.1):\n * - Enhanced decorator typing for better IDE support\n * - Improved metadata key management\n * - Better type inference for decorated methods\n *\n * Usage:\n * ```ts\n * @customElement('my-element')\n * class MyComponent extends Component {\n * @on('event', { global: true }) \n * handler(state, ...args) {\n * // Handle event\n * }\n * \n * @update('event', { render: true }) \n * updater(state, ...args) {\n * // Update state\n * return newState;\n * }\n * }\n * ```\n */\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","/**\r\n * AppRun Component System Implementation\r\n *\r\n * This file provides the Component class which is the foundation for:\r\n * 1. State Management\r\n * - Maintains component state with history support\r\n * - Handles state updates with async/iterator support\r\n * - Supports state history navigation (prev/next)\r\n * - Promise and async iterator state handling\r\n *\r\n * 2. View Rendering\r\n * - Renders virtual DOM to real DOM with directives\r\n * - Handles component lifecycle (mounted, rendered, unload)\r\n * - Supports shadow DOM and web components\r\n * - DOM change tracking with MutationObserver\r\n * - View transition API support\r\n *\r\n * 3. Event Handling\r\n * - Local and global event subscription management\r\n * - Event handler registration via decorators\r\n * - Action to state updates with error handling\r\n * - Support for event options (delay, once, global)\r\n *\r\n * Features:\r\n * - Component caching for debugging\r\n * - Element tracking for cleanup\r\n * - History navigation support\r\n * - Global vs local event routing\r\n * - Async state handling\r\n * - Memory leak prevention\r\n * - Component unmounting with cleanup\r\n *\r\n * Type Safety Improvements (v3.35.1):\r\n * - Enhanced element access with null checks and warnings\r\n * - Improved action validation and error handling\r\n * - Better error reporting in component actions\r\n * - Safer DOM element queries with fallback warnings\r\n *\r\n * Usage:\r\n * ```ts\r\n * class MyComponent extends Component {\r\n * state = // Initial state\r\n * view = state => // Return virtual DOM\r\n * update = {\r\n * 'event': (state, ...args) => // Return new state\r\n * }\r\n * }\r\n *\r\n * // Mount component\r\n * new MyComponent().mount('element-id');\r\n * ```\r\n */\r\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\nimport { safeQuerySelector, safeGetElementById } from './type-utils';\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 safeGetElementById(this.element) || safeQuerySelector(this.element) : this.element;\r\n\r\n if (!el) {\r\n console.warn(`Component element not found: ${this.element}`);\r\n return;\r\n }\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\r\n const handleAsyncIterator = async (iterator: AsyncIterator<T>) => {\r\n try {\r\n while (true) {\r\n const { value, done } = await iterator.next();\r\n if (done) break;\r\n this.setState(value, options);\r\n }\r\n } catch (e) {\r\n console.error('Error in async iterator:', e);\r\n }\r\n };\r\n\r\n const result = state as any;\r\n if (result?.[Symbol.asyncIterator]) {\r\n // handleAsyncIterator(result[Symbol.asyncIterator]());\r\n this.setState(handleAsyncIterator(result[Symbol.asyncIterator]()) as any, options);\r\n return;\r\n } else if (result?.[Symbol.iterator] && typeof result.next === \"function\") {\r\n for (const value of result) {\r\n this.setState(value, options);\r\n }\r\n return;\r\n } else if (state && 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') {\r\n console.warn(`Component action for '${name}' is not a valid function:`, action);\r\n return;\r\n }\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 try {\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 } catch (error) {\r\n console.error(`Error in component action '${name}':`, error);\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: '!',\r\n event: name, p,\r\n error,\r\n state: this.state,\r\n options\r\n });\r\n }\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","/**\n * AppRun Router Implementation\n * \n * This file provides URL routing capabilities:\n * 1. Hash-based routing (#/path)\n * - Works with SPA mode using hash fragments\n * - Handles hashchange events automatically\n * - No server configuration required\n * 2. Path-based routing (/path) \n * - Works with browser history API\n * - Requires server configuration for SPA routing\n * - Handles popstate events automatically\n * 3. Event-based navigation\n * - Routes trigger corresponding component events\n * - Automatic route parameter extraction\n * - Fallback to 404 handling for unknown routes\n * \n * Features:\n * - Automatic route event firing with ROUTER_EVENT\n * - 404 handling via ROUTER_404_EVENT for unmatched routes\n * - History API integration for seamless navigation\n * - Route parameter parsing and injection into events\n * - URL pattern matching with parameter support\n * - Global and component-level route handling\n *\n * Type Safety Improvements (v3.35.1):\n * - Enhanced route type definitions\n * - Better parameter type inference\n * - Improved URL validation and error handling\n * \n * Usage:\n * ```ts\n * // Handle routes\n * app.on('#/home', () => // Show home page);\n * app.on('#/users/:id', (id) => // Show user profile);\n * app.on('/api/*', (path) => // Handle API routes);\n * \n * // Navigate programmatically \n * app.run('route', '#/home');\n * route('/users/123'); // Direct routing\n * ```\n */\n\nimport app from './app';\n\nexport type Route = (url: string, ...args: any[]) => any;\n\nexport const ROUTER_EVENT: string = '//';\nexport const ROUTER_404_EVENT: string = '///';\nexport const route: Route = (url: string) => {\n if (app['lastUrl'] === url) return; // Prevent duplicate routing\n app['lastUrl'] = url;\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;\n","/**\n * Main AppRun framework entry point\n *\n * This file:\n * 1. Assembles core AppRun modules into a complete framework\n * 2. Exports public API and types\n * 3. Initializes global app instance with:\n * - Virtual DOM rendering\n * - Component system\n * - Router with improved null safety\n * - Web component support\n * - Type-safe React integration\n *\n * Key exports:\n * - app: Global event system instance\n * - Component: Base component class\n * - Decorators: @on, @update, @customElement\n * - Router events and configuration\n * - Web component registration\n *\n * Features:\n * - Event-driven architecture with pub/sub pattern\n * - Virtual DOM rendering with multiple renderer support\n * - Component lifecycle management\n * - Client-side routing with hash/path support\n * - Web Components integration\n * - React compatibility layer\n * - TypeScript support with strong typing\n *\n * Type Safety Improvements (v3.35.1):\n * - Added null checks for DOM event targets\n * - Improved global window object assignments with proper typing\n * - Enhanced React integration parameter validation\n * - Better error handling for invalid event handlers\n * - Safer element access with proper type assertions\n *\n * Usage:\n * ```ts\n * import { app, Component } from 'apprun';\n *\n * // Create components\n * class MyComponent extends Component {\n * state = // Initial state\n * view = state => // Render view\n * update = {\n * 'event': (state, ...args) => // Handle events\n * }\n * }\n * ```\n */\n\nimport 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';\nimport { APPRUN_VERSION } from './version';\n\nexport type StatelessComponent<T = {}> = (args: T) => string | VNode | void;\ntype OnDecorator = {\n <T = any>(options?: any): (constructor: Function) => void;\n <E = string>(events?: E, options?: any): (target: any, key: string) => void;\n};\n\nexport {\n App,\n app,\n Component,\n View,\n Action,\n Update,\n on,\n update,\n EventOptions,\n ActionOptions,\n MountOptions,\n Fragment,\n safeHTML\n}\nexport { update as event };\nexport { ROUTER_EVENT, ROUTER_404_EVENT };\nexport { customElement, CustomElementOptions, AppStartOptions };\nexport default app as IApp;\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 once(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 query(name: string, ...args: any[]): Promise<any[]>;\n runAsync(name: string, ...args: any[]): Promise<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(React, ReactDOM);\n version: string;\n}\n\nif (!app.start) {\n\n app.version = APPRUN_VERSION;\n\n app.h = app.createElement = createElement;\n app.render = render;\n app.Fragment = Fragment;\n app.webComponent = webComponent;\n app.safeHTML = safeHTML;\n\n app.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\n app.once = app.once || ((name: string, fn: (...args: any[]) => void, options: any = {}) => {\n app.on(name, fn, { ...options, once: true });\n });\n\n app.query = app.query || app.runAsync;\n\n const NOOP = _ => {/* Intentionally empty */ }\n // app.on('$', NOOP);\n app.on('debug', _ => NOOP);\n app.on(ROUTER_EVENT, NOOP);\n app.on(ROUTER_404_EVENT, NOOP);\n app.route = route;\n app.on('route', url => app['route'] && app['route'](url));\n\n if (typeof document === 'object') {\n document.addEventListener(\"DOMContentLoaded\", () => {\n const no_init_route = document.body.hasAttribute('apprun-no-init') || app['no-init-route'] || false;\n const use_hash = app.find('#') || app.find('#/') || false;\n\n // console.log(`AppRun ${app.version} started with ${use_hash ? 'hash' : 'path'} routing. Initial load: ${init_load ? 'disabled' : 'enabled'}.`);\n window.addEventListener('hashchange', () => route(location.hash));\n window.addEventListener('popstate', () => route(location.pathname));\n\n if (use_hash) {\n !no_init_route && route(location.hash);\n } else {\n !no_init_route && route(location.pathname);\n document.body.addEventListener('click', e => {\n const element = e.target as HTMLElement;\n if (!element) return;\n\n const menu = (element.tagName === 'A' ? element : element.closest('a')) as HTMLAnchorElement;\n if (menu &&\n menu.origin === location.origin &&\n menu.pathname) {\n e.preventDefault();\n history.pushState(null, '', menu.pathname);\n route(menu.pathname);\n }\n });\n }\n });\n }\n\n type ComponentType = typeof Component & {\n <T = any>(options?: any): (constructor: Function) => void;\n };\n\n if (typeof window === 'object') {\n const globalWindow = window as any;\n globalWindow['Component'] = Component as ComponentType;\n globalWindow['_React'] = globalWindow['React'];\n globalWindow['React'] = app;\n globalWindow['on'] = on as OnDecorator;\n globalWindow['customElement'] = customElement;\n globalWindow['safeHTML'] = safeHTML;\n }\n\n app.use_render = (render, mode = 0) => {\n if (mode === 0) {\n app.render = (el, vdom) => render(vdom, el); // react style\n } else {\n app.render = (el, vdom) => render(el, vdom); // apprun style\n }\n };\n\n app.use_react = (React, ReactDOM) => {\n if (!React || !ReactDOM) {\n console.error('AppRun use_react: React and ReactDOM parameters are required');\n return;\n }\n\n if (typeof React.createElement !== 'function') {\n console.error('AppRun use_react: Invalid React object - createElement method not found');\n return;\n }\n\n if (!React.Fragment) {\n console.error('AppRun use_react: Invalid React object - Fragment not found');\n return;\n }\n\n app.h = app.createElement = React.createElement;\n app.Fragment = React.Fragment;\n\n // React 18+ uses createRoot API\n if (React.version && React.version.startsWith('18')) {\n if (!ReactDOM.createRoot || typeof ReactDOM.createRoot !== 'function') {\n console.error('AppRun use_react: ReactDOM.createRoot not found in React 18+');\n return;\n }\n app.render = (el, vdom) => {\n if (!el || vdom === undefined) return;\n if (!(el as any)._root) (el as any)._root = ReactDOM.createRoot(el);\n (el as any)._root.render(vdom);\n }\n } else {\n // Legacy React versions\n if (!ReactDOM.render || typeof ReactDOM.render !== 'function') {\n console.error('AppRun use_react: ReactDOM.render not found in legacy React');\n return;\n }\n app.render = (el, vdom) => ReactDOM.render(vdom, el);\n }\n }\n}\n"],"names":["root","factory","exports","module","define","amd","this","App","constructor","_events","on","name","fn","options","push","off","subscribers","filter","sub","find","run","args","getSubscribers","console","assert","length","forEach","error","delay","Object","keys","apply","once","_t","clearTimeout","setTimeout","runAsync","promises","map","Promise","resolve","reject","all","query","events","evt","endsWith","startsWith","replace","sort","a","b","event","AppRunVersions","_app","window","g","self","app","_AppRunVersions","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","safeEventTarget","HTMLElement","safeQuerySelector","selector","context","document","querySelector","warn","safeGetElementById","id","getElementById","Fragment","collect","ATTR_PROPS","ch","c","i","createElement","undefined","getPrototypeOf","__isAppRunComponent","Error","keyCache","updateElement","nodes","parent","createComponent","isSvg","nodeName","updateChildren","render","update","node","el","key1","key2","toUpperCase","same","updateProps","parentNode","replaceChild","create","old_len","childNodes","new_len","some","child","existingKeyedElements","Map","set","fragment","createDocumentFragment","has","existingEl","get","appendChild","delete","firstChild","removeChild","len","Math","min","nodeType","nodeValue","createText","SVGElement","lastChild","d","safeHTML","html","div","insertAdjacentHTML","from","indexOf","createTextNode","JSON","stringify","String","createElementNS","cached","oldProps","newProps","mergeProps","cname","match","dataset","style","cssText","s","xname","toLowerCase","removeAttributeNS","setAttributeNS","setAttribute","removeAttribute","test","getAttribute","requestAnimationFrame","idx","Date","now","asTag","__componentCache","renderState","mount","mounted","new_state","render_component","new_parent","_component","APPRUN_VERSION","APPRUN_VERSION_GLOBAL","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","o","defineProperty","enumerable","globalThis","Function","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","customElement","componentClass","super","observedAttributes","attr","connectedCallback","isConnected","opts","_shadowRoot","shadow","attachShadow","mode","attrMap","reduce","lc","_attrMap","attributes","item","attributeChangedCallback","configurable","_props","dispatchEvent","bind","disconnectedCallback","unload","unmount","oldValue","mappedName","customElements","Reflect","meta","WeakMap","defineMetadata","metadataKey","metadataValue","getMetadataKeys","getMetadata","descriptor","toString","componentCache","components","REFRESH","Component","view","_","tracking_attr","tracking_id","valueOf","MutationObserver","observer","changes","body","contains","disconnect","observe","childList","subtree","attributeOldValue","attributeFilter","transition","rendered","history","result","asyncIterator","async","iterator","done","next","handleAsyncIterator","then","v","_state","enable_history","_history","_history_idx","callback","_actions","_global_events","_history_prev","_history_next","start","global_event","prev","route","add_actions","is_global_event","add_action","action","global","current_state","newState","actions","act","split","n","trim","ROUTER_EVENT","ROUTER_404_EVENT","url","rest","version","h","webComponent","model","NOOP","addEventListener","no_init_route","hasAttribute","use_hash","location","hash","pathname","menu","tagName","closest","origin","preventDefault","pushState","globalWindow","use_render","use_react","React","ReactDOM","createRoot","_root"],"sourceRoot":""}
|
package/esm/app.js
CHANGED
|
@@ -3,16 +3,30 @@
|
|
|
3
3
|
*
|
|
4
4
|
* This file provides:
|
|
5
5
|
* 1. App class - The core event system implementation with pub/sub capabilities
|
|
6
|
-
* - on(): Subscribe to events
|
|
7
|
-
* - off(): Unsubscribe from events
|
|
8
|
-
* - run(): Publish events synchronously
|
|
9
|
-
* - runAsync(): Publish events asynchronously
|
|
10
|
-
* - query(): Alias for runAsync
|
|
6
|
+
* - on(): Subscribe to events with options (once, delay, global)
|
|
7
|
+
* - off(): Unsubscribe from events with proper cleanup
|
|
8
|
+
* - run(): Publish events synchronously with error handling
|
|
9
|
+
* - runAsync(): Publish events asynchronously with Promise support
|
|
10
|
+
* - query(): Alias for runAsync for backward compatibility
|
|
11
11
|
*
|
|
12
12
|
* 2. Default app singleton - Global event bus instance
|
|
13
13
|
* - Created once and reused across the application
|
|
14
|
-
* - Stored in global scope (window/global)
|
|
15
|
-
* -
|
|
14
|
+
* - Stored in global scope (window/global) with version tracking
|
|
15
|
+
* - Prevents duplicate instances across different versions
|
|
16
|
+
*
|
|
17
|
+
* Features:
|
|
18
|
+
* - Event wildcards support (events ending with '*')
|
|
19
|
+
* - Delayed event execution with timeout management
|
|
20
|
+
* - Once-only event subscriptions
|
|
21
|
+
* - Async event handling with Promise.all
|
|
22
|
+
* - Global event bus shared across components
|
|
23
|
+
* - Memory leak prevention with proper cleanup
|
|
24
|
+
*
|
|
25
|
+
* Type Safety Improvements (v3.35.1):
|
|
26
|
+
* - Added validation for event handler functions
|
|
27
|
+
* - Enhanced error handling in event execution
|
|
28
|
+
* - Improved null checks in delayed event handling
|
|
29
|
+
* - Better error reporting for invalid handlers
|
|
16
30
|
*
|
|
17
31
|
* Usage:
|
|
18
32
|
* ```ts
|
|
@@ -23,8 +37,14 @@
|
|
|
23
37
|
*
|
|
24
38
|
* // Publish events
|
|
25
39
|
* app.run('event-name', ...args);
|
|
40
|
+
*
|
|
41
|
+
* // Async events
|
|
42
|
+
* app.runAsync('async-event', data).then(results => {
|
|
43
|
+
* // Handle results
|
|
44
|
+
* });
|
|
26
45
|
* ```
|
|
27
46
|
*/
|
|
47
|
+
import { APPRUN_VERSION_GLOBAL } from './version';
|
|
28
48
|
export class App {
|
|
29
49
|
constructor() {
|
|
30
50
|
this._events = {};
|
|
@@ -45,11 +65,20 @@ export class App {
|
|
|
45
65
|
console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);
|
|
46
66
|
subscribers.forEach((sub) => {
|
|
47
67
|
const { fn, options } = sub;
|
|
68
|
+
if (!fn || typeof fn !== 'function') {
|
|
69
|
+
console.error(`AppRun event handler for '${name}' is not a function:`, fn);
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
48
72
|
if (options.delay) {
|
|
49
73
|
this.delay(name, fn, args, options);
|
|
50
74
|
}
|
|
51
75
|
else {
|
|
52
|
-
|
|
76
|
+
try {
|
|
77
|
+
Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
console.error(`Error in event handler for '${name}':`, error);
|
|
81
|
+
}
|
|
53
82
|
}
|
|
54
83
|
return !sub.options.once;
|
|
55
84
|
});
|
|
@@ -63,7 +92,12 @@ export class App {
|
|
|
63
92
|
clearTimeout(options._t);
|
|
64
93
|
options._t = setTimeout(() => {
|
|
65
94
|
clearTimeout(options._t);
|
|
66
|
-
|
|
95
|
+
try {
|
|
96
|
+
Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
console.error(`Error in delayed event handler for '${name}':`, error);
|
|
100
|
+
}
|
|
67
101
|
}, options.delay);
|
|
68
102
|
}
|
|
69
103
|
runAsync(name, ...args) {
|
|
@@ -71,7 +105,17 @@ export class App {
|
|
|
71
105
|
console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);
|
|
72
106
|
const promises = subscribers.map(sub => {
|
|
73
107
|
const { fn, options } = sub;
|
|
74
|
-
|
|
108
|
+
if (!fn || typeof fn !== 'function') {
|
|
109
|
+
console.error(`AppRun async event handler for '${name}' is not a function:`, fn);
|
|
110
|
+
return Promise.resolve(null);
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
return Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
console.error(`Error in async event handler for '${name}':`, error);
|
|
117
|
+
return Promise.reject(error);
|
|
118
|
+
}
|
|
75
119
|
});
|
|
76
120
|
return Promise.all(promises);
|
|
77
121
|
}
|
|
@@ -92,7 +136,7 @@ export class App {
|
|
|
92
136
|
return subscribers;
|
|
93
137
|
}
|
|
94
138
|
}
|
|
95
|
-
const AppRunVersions =
|
|
139
|
+
const AppRunVersions = APPRUN_VERSION_GLOBAL;
|
|
96
140
|
let _app;
|
|
97
141
|
const root = (typeof window !== 'undefined' ? window :
|
|
98
142
|
typeof global !== 'undefined' ? global :
|
package/esm/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/esm/apprun-html.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import app from './apprun';
|
|
2
|
+
import { safeGlobalAssign } from './type-utils';
|
|
2
3
|
export { app, Component, on, update, event, customElement, ROUTER_404_EVENT, ROUTER_EVENT, safeHTML } from './apprun';
|
|
3
4
|
import { createElement, render, Fragment, html, svg, run } from './vdom-lit-html';
|
|
4
5
|
export { html, svg, render, run };
|
|
@@ -7,9 +8,12 @@ app.render = render;
|
|
|
7
8
|
app.Fragment = Fragment;
|
|
8
9
|
export default app;
|
|
9
10
|
if (typeof window === 'object') {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
const globalWindow = window;
|
|
12
|
+
safeGlobalAssign(globalWindow, {
|
|
13
|
+
'React': globalWindow['_React'] || app,
|
|
14
|
+
'html': html,
|
|
15
|
+
'svg': svg,
|
|
16
|
+
'run': run
|
|
17
|
+
});
|
|
14
18
|
}
|
|
15
19
|
//# sourceMappingURL=apprun-html.js.map
|
package/esm/apprun-html.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apprun-html.js","sourceRoot":"","sources":["../src/apprun-html.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAA;AAC1B,OAAO,EACL,GAAG,EAAE,SAAS,EAAwB,EAAE,EAAE,MAAM,EAAE,KAAK,EACvD,aAAa,EACb,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EACzC,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;AAEjC,GAAG,CAAC,aAAa,GAAG,aAAa,CAAC;AAClC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;AACpB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAExB,eAAe,GAAG,CAAC;AAEnB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;IAC/B,MAAM,
|
|
1
|
+
{"version":3,"file":"apprun-html.js","sourceRoot":"","sources":["../src/apprun-html.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAA;AAC1B,OAAO,EAAE,gBAAgB,EAAqB,MAAM,cAAc,CAAC;AACnE,OAAO,EACL,GAAG,EAAE,SAAS,EAAwB,EAAE,EAAE,MAAM,EAAE,KAAK,EACvD,aAAa,EACb,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EACzC,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;AAEjC,GAAG,CAAC,aAAa,GAAG,aAAa,CAAC;AAClC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;AACpB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAExB,eAAe,GAAG,CAAC;AAEnB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;IAC/B,MAAM,YAAY,GAAG,MAA2B,CAAC;IACjD,gBAAgB,CAAC,YAAY,EAAE;QAC7B,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG;QACtC,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;KACX,CAAC,CAAC;AACL,CAAC"}
|