apprun 3.32.0 → 3.33.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 +20 -46
- package/WHATSNEW.md +14 -0
- package/dist/apprun-html.esm.js +1 -1
- package/dist/apprun-html.esm.js.map +1 -1
- package/dist/apprun-html.js +1 -1
- package/dist/apprun-html.js.map +1 -1
- package/dist/apprun-play-html.esm.js +1 -1
- 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/apprun.js +12 -0
- package/esm/apprun.js.map +1 -1
- package/package.json +1 -1
- package/src/apprun.ts +11 -0
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 ","import { EventOptions} from './types'\nexport class App {\n\n private _events: Object;\n\n public start;\n public h;\n public createElement;\n public render;\n public Fragment;\n public webComponent;\n public safeHTML;\n\n constructor() {\n this._events = {};\n }\n\n on(name: string, fn: (...args) => void, options: EventOptions = {}): void {\n this._events[name] = this._events[name] || [];\n this._events[name].push({ fn, options });\n }\n\n off(name: string, fn: (...args) => void): void {\n const subscribers = this._events[name] || [];\n\n this._events[name] = subscribers.filter((sub) => sub.fn !== fn);\n }\n\n find(name: string): any {\n return this._events[name];\n }\n\n run(name: string, ...args): number {\n const subscribers = this.getSubscribers(name, this._events);\n console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);\n subscribers.forEach((sub) => {\n const { fn, options } = sub;\n if (options.delay) {\n this.delay(name, fn, args, options);\n } else {\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n }\n return !sub.options.once;\n });\n\n return subscribers.length;\n }\n\n once(name: string, fn, options: EventOptions = {}): void {\n this.on(name, fn, { ...options, once: true });\n }\n\n private delay(name, fn, args, options): void {\n if (options._t) clearTimeout(options._t);\n options._t = setTimeout(() => {\n clearTimeout(options._t);\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n }, options.delay);\n }\n\n runAsync(name: string, ...args): Promise<any[]> {\n const subscribers = this.getSubscribers(name, this._events);\n console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);\n const promises = subscribers.map(sub => {\n const { fn, options } = sub;\n return Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n });\n return Promise.all(promises);\n }\n\n query(name: string, ...args): Promise<any[]> {\n return this.query(name, ...args);\n }\n\n private getSubscribers(name: string, events) {\n const subscribers = events[name] || [];\n\n // Update the list of subscribers by pulling out those which will run once.\n // We must do this update prior to running any of the events in case they\n // cause additional events to be turned off or on.\n events[name] = subscribers.filter((sub) => {\n return !sub.options.once;\n });\n Object.keys(events).filter(evt => evt.endsWith('*') && name.startsWith(evt.replace('*', '')))\n .sort((a, b) => b.length - a.length)\n .forEach(evt => subscribers.push(...events[evt].map(sub => ({\n ...sub,\n options: { ...sub.options, event: name }\n }))));\n return subscribers;\n }\n}\n\nconst AppRunVersions = 'AppRun-3';\nlet app: App;\nconst root = (typeof self === 'object' && self.self === self && self) ||\n (typeof global === 'object' && global.global === global && global)\nif (root['app'] && root['_AppRunVersions']) {\n app = root['app'];\n} else {\n app = new App();\n root['app'] = app;\n root['_AppRunVersions'] = AppRunVersions;\n}\nexport default app;\n","import app from './app';\n\nconst getStateValue = (component, name) => {\n return (name ? component['state'][name] : component['state']) || '';\n}\n\nconst setStateValue = (component, name, value) => {\n if (name) {\n const state = component['state'] || {};\n state[name] = value;\n component.setState(state);\n } else {\n component.setState(value);\n }\n}\n\nconst apply_directive = (key: string, props: {}, tag, component) => {\n if (key.startsWith('$on')) {\n const event = props[key];\n key = key.substring(1)\n if (typeof event === 'boolean') {\n props[key] = e => component.run ? component.run(key, e) : app.run(key, e);\n } else if (typeof event === 'string') {\n props[key] = e => component.run ? component.run(event, e) : app.run(event, e);\n } else if (typeof event === 'function') {\n props[key] = e => component.setState(event(component.state, e));\n } else if (Array.isArray(event)) {\n const [handler, ...p] = event;\n if (typeof handler === 'string') {\n props[key] = e => component.run ? component.run(handler, ...p, e) : app.run(handler, ...p, e);\n } else if (typeof handler === 'function') {\n props[key] = e => component.setState(handler(component.state, ...p, e));\n }\n }\n\n } else if (key === '$bind') {\n const type = props['type'] || 'text';\n const name = typeof props[key] === 'string' ? props[key] : props['name'];\n if (tag === 'input') {\n switch (type) {\n case 'checkbox':\n props['checked'] = getStateValue(component, name);\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.checked);\n break;\n case 'radio':\n props['checked'] = getStateValue(component, name) === props['value'];\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.value);\n break;\n case 'number':\n case 'range':\n props['value'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, Number(e.target.value));\n break;\n default:\n props['value'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, e.target.value);\n }\n } else if (tag === 'select') {\n props['value'] = getStateValue(component, name);\n props['onchange'] = e => {\n if (!e.target.multiple) { // multiple selection use $bind on option\n setStateValue(component, name || e.target.name, e.target.value);\n }\n }\n } else if (tag === 'option') {\n props['selected'] = getStateValue(component, name);\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.selected);\n } else if (tag === 'textarea') {\n props['innerHTML'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, e.target.value);\n }\n } else {\n app.run('$', { key, tag, props, component });\n }\n}\n\nconst directive = (vdom, component) => {\n if (Array.isArray(vdom)) {\n return vdom.map(element => directive(element, component));\n } else {\n let { tag, props, children } = vdom;\n if (tag) {\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) children = directive(children, component);\n return { tag, props, children };\n } else {\n return vdom;\n }\n }\n}\n\nexport default directive;","import { VDOM, VNode } from './types';\nimport directive from './directive';\nexport type Element = any; //HTMLElement | SVGSVGElement | SVGElement;\n\nexport function Fragment(props, ...children): any[] {\n return collect(children);\n}\n\nconst ATTR_PROPS = '_props';\n\nfunction collect(children) {\n const ch = [];\n const push = (c) => {\n if (c !== null && c !== undefined && c !== '' && c !== false) {\n ch.push((typeof c === 'function' || typeof c === 'object') ? c : `${c}`);\n }\n }\n children && children.forEach(c => {\n if (Array.isArray(c)) {\n c.forEach(i => push(i));\n } else {\n push(c);\n }\n });\n return ch;\n}\n\nexport function createElement(tag: string | Function | [], props?: {}, ...children) {\n const ch = collect(children);\n if (typeof tag === 'string') return { tag, props, children: ch };\n else if (Array.isArray(tag)) return tag; // JSX fragments - babel\n else if (tag === undefined && children) return ch; // JSX fragments - typescript\n else if (Object.getPrototypeOf(tag).__isAppRunComponent) return { tag, props, children: ch } // createComponent(tag, { ...props, children });\n else if (typeof tag === 'function') return tag(props, ch);\n else throw new Error(`Unknown tag in vdom ${tag}`);\n};\n\nconst keyCache = new WeakMap();\n\nexport const updateElement = (element: Element | string, nodes: VDOM, component = {}) => {\n // tslint:disable-next-line\n if (nodes == null || nodes === false) return;\n const el = (typeof element === 'string' && element) ?\n document.getElementById(element) || document.querySelector(element) : element;\n nodes = directive(nodes, component);\n render(el, nodes, component);\n}\n\nfunction render(element: Element, nodes: VDOM, parent = {}) {\n // tslint:disable-next-line\n if (nodes == null || nodes === false) return;\n nodes = createComponent(nodes, parent);\n if (!element) return;\n const isSvg = element.nodeName === \"SVG\";\n if (Array.isArray(nodes)) {\n updateChildren(element, nodes, isSvg);\n } else {\n updateChildren(element, [nodes], isSvg);\n }\n}\n\nfunction same(el: Element, node: VNode) {\n // if (!el || !node) return false;\n const key1 = el.nodeName;\n const key2 = `${node.tag || ''}`;\n return key1.toUpperCase() === key2.toUpperCase();\n}\n\nfunction update(element: Element, node: VNode, isSvg: boolean) {\n if (node['_op'] === 3) return;\n // console.assert(!!element);\n isSvg = isSvg || node.tag === \"svg\";\n if (!same(element, node)) {\n element.parentNode.replaceChild(create(node, isSvg), element);\n return;\n }\n !(node['_op'] & 2) && updateChildren(element, node.children, isSvg);\n !(node['_op'] & 1) && updateProps(element, node.props, isSvg);\n}\n\nfunction updateChildren(element, children, isSvg: boolean) {\n const old_len = element.childNodes?.length || 0;\n const new_len = children?.length || 0;\n const len = Math.min(old_len, new_len);\n for (let i = 0; i < len; i++) {\n const child = children[i];\n if (child['_op'] === 3) continue;\n const el = element.childNodes[i];\n if (typeof child === 'string') {\n if (el.textContent !== child) {\n if (el.nodeType === 3) {\n el.nodeValue = child\n } else {\n element.replaceChild(createText(child), el);\n }\n }\n } else if (child instanceof HTMLElement || child instanceof SVGElement) {\n element.insertBefore(child, el);\n } else {\n const key = child.props && child.props['key'];\n if (key) {\n if (el.key === key) {\n update(element.childNodes[i], child, isSvg);\n } else {\n // console.log(el.key, key);\n const old = keyCache[key];\n if (old) {\n const temp = old.nextSibling;\n element.insertBefore(old, el);\n temp ? element.insertBefore(el, temp) : element.appendChild(el);\n update(element.childNodes[i], child, isSvg);\n } else {\n element.replaceChild(create(child, isSvg), el);\n }\n }\n } else {\n update(element.childNodes[i], child, isSvg);\n }\n }\n }\n\n let n = element.childNodes?.length || 0;\n while (n > len) {\n element.removeChild(element.lastChild);\n n--;\n }\n\n if (new_len > len) {\n const d = document.createDocumentFragment();\n for (let i = len; i < children.length; i++) {\n d.appendChild(create(children[i], isSvg));\n }\n element.appendChild(d);\n }\n}\n\nexport const safeHTML = (html: string) => {\n const div = document.createElement('section');\n div.insertAdjacentHTML('afterbegin', html)\n return Array.from(div.children);\n}\n\nfunction createText(node) {\n if (node?.indexOf('_html:') === 0) { // ?\n const div = document.createElement('div');\n div.insertAdjacentHTML('afterbegin', node.substring(6))\n return div;\n } else {\n return document.createTextNode(node??'');\n }\n}\n\nfunction create(node: VNode | string | HTMLElement | SVGElement, isSvg: boolean): Element {\n // console.assert(node !== null && node !== undefined);\n if ((node instanceof HTMLElement) || (node instanceof SVGElement)) return node;\n if (typeof node === \"string\") return createText(node);\n if (!node.tag || (typeof node.tag === 'function')) return createText(JSON.stringify(node));\n isSvg = isSvg || node.tag === \"svg\";\n const element = isSvg\n ? document.createElementNS(\"http://www.w3.org/2000/svg\", node.tag)\n : document.createElement(node.tag);\n\n updateProps(element, node.props, isSvg);\n if (node.children) node.children.forEach(child => element.appendChild(create(child, isSvg)));\n return element\n}\n\nfunction mergeProps(oldProps: {}, newProps: {}): {} {\n newProps['class'] = newProps['class'] || newProps['className'];\n delete newProps['className'];\n const props = {};\n if (oldProps) Object.keys(oldProps).forEach(p => props[p] = null);\n if (newProps) Object.keys(newProps).forEach(p => props[p] = newProps[p]);\n return props;\n}\n\nexport function updateProps(element: Element, props: {}, isSvg) {\n // console.assert(!!element);\n const cached = element[ATTR_PROPS] || {};\n props = mergeProps(cached, props || {});\n element[ATTR_PROPS] = props;\n\n for (const name in props) {\n const value = props[name];\n // if (cached[name] === value) continue;\n // console.log('updateProps', name, value);\n if (name.startsWith('data-')) {\n const dname = name.substring(5);\n const cname = dname.replace(/-(\\w)/g, (match) => match[1].toUpperCase());\n if (element.dataset[cname] !== value) {\n if (value || value === \"\") element.dataset[cname] = value;\n else delete element.dataset[cname];\n }\n } else if (name === 'style') {\n if (element.style.cssText) element.style.cssText = '';\n if (typeof value === 'string') element.style.cssText = value;\n else {\n for (const s in value) {\n if (element.style[s] !== value[s]) element.style[s] = value[s];\n }\n }\n } else if (name.startsWith('xlink')) {\n const xname = name.replace('xlink', '').toLowerCase();\n if (value == null || value === false) {\n element.removeAttributeNS('http://www.w3.org/1999/xlink', xname);\n } else {\n element.setAttributeNS('http://www.w3.org/1999/xlink', xname, value);\n }\n } else if (name.startsWith('on')) {\n if (!value || typeof value === 'function') {\n element[name] = value;\n } else if (typeof value === 'string') {\n if (value) element.setAttribute(name, value);\n else element.removeAttribute(name);\n }\n } else if (/^id$|^class$|^list$|^readonly$|^contenteditable$|^role|-|^for$/g.test(name) || isSvg) {\n if (element.getAttribute(name) !== value) {\n if (value) element.setAttribute(name, value);\n else element.removeAttribute(name);\n }\n } else if (element[name] !== value) {\n element[name] = value;\n }\n if (name === 'key' && value) keyCache[value] = element;\n }\n if (props && typeof props['ref'] === 'function') {\n window.requestAnimationFrame(() => props['ref'](element));\n }\n}\n\nfunction render_component(node, parent, idx) {\n const { tag, props, children } = node;\n let key = `_${idx}`;\n let id = props && props['id'];\n if (!id) id = `_${idx}${Date.now()}`;\n else key = id;\n let asTag = 'section';\n if (props && props['as']) {\n asTag = props['as'];\n delete props['as'];\n }\n if (!parent.__componentCache) parent.__componentCache = {};\n let component = parent.__componentCache[key];\n if (!component || !(component instanceof tag) || !component.element) {\n const element = document.createElement(asTag);\n component = parent.__componentCache[key] = new tag({ ...props, children }).mount(element, { render: true });\n } else {\n component.renderState(component.state);\n }\n if (component.mounted) {\n const new_state = component.mounted(props, children, component.state);\n (typeof new_state !== 'undefined') && component.setState(new_state);\n }\n updateProps(component.element, props, false);\n return component.element;\n}\n\nfunction createComponent(node, parent, idx = 0) {\n if (typeof node === 'string') return node;\n if (Array.isArray(node)) return node.map(child => createComponent(child, parent, idx++));\n let vdom = node;\n if (node && typeof node.tag === 'function' && Object.getPrototypeOf(node.tag).__isAppRunComponent) {\n vdom = render_component(node, parent, idx);\n }\n if (vdom && Array.isArray(vdom.children)) {\n const new_parent = vdom.props?._component;\n if (new_parent) {\n let i = 0;\n vdom.children = vdom.children.map(child => createComponent(child, new_parent, i++));\n } else {\n vdom.children = vdom.children.map(child => createComponent(child, parent, idx++));\n }\n }\n return vdom;\n}\n","// 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};","declare var customElements;\n\nexport type CustomElementOptions = {\n render?: boolean;\n shadow?: boolean;\n history?: boolean;\n global_event?: boolean;\n observedAttributes?: string[];\n};\n\nexport const customElement = (componentClass, options: CustomElementOptions = {}) => class CustomElement extends HTMLElement {\n private _shadowRoot;\n private _component;\n private _attrMap: (arg0: string) => string;\n public on;\n public run;\n constructor() {\n super();\n }\n get component() { return this._component; }\n get state() { return this._component.state; }\n\n static get observedAttributes() {\n // attributes need to be set to lowercase in order to get observed\n return (options.observedAttributes || []).map(attr => attr.toLowerCase());\n }\n\n connectedCallback() {\n if (this.isConnected && !this._component) {\n const opts = options || {};\n this._shadowRoot = opts.shadow ? this.attachShadow({ mode: 'open' }) : this;\n const observedAttributes = (opts.observedAttributes || [])\n\n const attrMap = observedAttributes.reduce((map, name) => {\n const lc = name.toLowerCase()\n if (lc !== name) {\n map[lc] = name\n }\n return map\n }, {})\n this._attrMap = (name: string) : string => attrMap[name] || name\n\n const props = {};\n Array.from(this.attributes).forEach(item => props[this._attrMap(item.name)] = item.value);\n\n // add getters/ setters to allow observation on observedAttributes\n observedAttributes.forEach(name => {\n if (this[name] !== undefined) props[name] = this[name];\n Object.defineProperty(this, name, {\n get(): any {\n return props[name];\n },\n set(this: CustomElement, value: unknown) {\n // trigger change event\n this.attributeChangedCallback(name, props[name], value)\n },\n configurable: true,\n enumerable: true\n });\n })\n\n requestAnimationFrame(() => {\n const children = this.children ? Array.from(this.children) : [];\n children.forEach(el => el.parentElement.removeChild(el));\n this._component = new componentClass({ ...props, children }).mount(this._shadowRoot, opts);\n // attach props to component\n this._component._props = props;\n // expose dispatchEvent\n this._component.dispatchEvent = this.dispatchEvent.bind(this)\n if (this._component.mounted) {\n const new_state = this._component.mounted(props, children, this._component.state);\n if (typeof new_state !== 'undefined') this._component.state = new_state;\n }\n this.on = this._component.on.bind(this._component);\n this.run = this._component.run.bind(this._component);\n if (!(opts.render === false)) this._component.run('.');\n });\n }\n }\n\n disconnectedCallback() {\n this._component?.unload?.();\n this._component?.unmount?.();\n this._component = null;\n }\n\n attributeChangedCallback(name: string, oldValue: unknown, value: unknown) {\n if (this._component) {\n // camelCase attributes arrive only in lowercase\n const mappedName = this._attrMap(name);\n // store the new property/ attribute\n this._component._props[mappedName] = value;\n this._component.run('attributeChanged', mappedName, oldValue, value);\n\n if (value !== oldValue && !(options.render === false)) {\n window.requestAnimationFrame(() => {\n // re-render state with new combined props on next animation frame\n this._component.run('.')\n })\n }\n }\n }\n}\n\nexport default (name: string, componentClass, options?: CustomElementOptions) => {\n (typeof customElements !== 'undefined') && customElements.define(name, customElement(componentClass, options))\n}\n","import webComponent, { CustomElementOptions } from './web-component';\n\n// tslint:disable:no-invalid-this\nexport const Reflect = {\n\n meta: new WeakMap(),\n\n defineMetadata(metadataKey, metadataValue, target) {\n if (!this.meta.has(target)) this.meta.set(target, {});\n this.meta.get(target)[metadataKey] = metadataValue;\n },\n\n getMetadataKeys(target) {\n target = Object.getPrototypeOf(target);\n return this.meta.get(target) ? Object.keys(this.meta.get(target)) : [];\n },\n\n getMetadata(metadataKey, target) {\n target = Object.getPrototypeOf(target);\n return this.meta.get(target) ? this.meta.get(target)[metadataKey] : null;\n }\n}\n\nexport function update<E=string>(events?: E, options: any = {}) {\n return (target: any, key: string, descriptor: any) => {\n const name = events ? events.toString() : key;\n Reflect.defineMetadata(`apprun-update:${name}`,\n { name, key, options }, target);\n return descriptor;\n }\n}\n\nexport function on<E = string>(events?: E, options: any = {}) {\n return function (target: any, key: string) {\n const name = events ? events.toString() : key;\n Reflect.defineMetadata(`apprun-update:${name}`,\n { name, key, options }, target)\n }\n}\n\nexport function customElement(name: string, options?: CustomElementOptions) {\n return function _customElement<T extends { new(...args: any[]): {} }>(constructor: T) {\n webComponent(name, constructor, options);\n return constructor;\n }\n}\n\n","\r\nimport app, { App } from './app';\r\nimport { Reflect } from './decorator'\r\nimport { View, Update, ActionDef, ActionOptions, MountOptions, EventOptions } from './types';\r\nimport directive from './directive';\r\n\r\nconst componentCache = new Map();\r\nif (!app.find('get-components')) app.on('get-components', o => o.components = componentCache);\r\n\r\nconst REFRESH = state => state;\r\n\r\nexport class Component<T = any, E = any> {\r\n static __isAppRunComponent = true;\r\n private _app = new App();\r\n private _actions = [];\r\n private _global_events = [];\r\n private _state;\r\n private _history = [];\r\n private _history_idx = -1;\r\n private enable_history;\r\n private global_event;\r\n public element;\r\n public rendered;\r\n public mounted;\r\n public unload;\r\n private tracking_id;\r\n private observer;\r\n\r\n\r\n private renderState(state: T, vdom = null) {\r\n if (!this.view) return;\r\n let html = vdom || this.view(state);\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: html ? '.' : '-',\r\n state,\r\n vdom: html,\r\n el: this.element\r\n });\r\n\r\n if (typeof document !== 'object') return;\r\n\r\n const el = (typeof this.element === 'string' && this.element) ?\r\n document.getElementById(this.element) || document.querySelector(this.element) : this.element;\r\n\r\n if (el) {\r\n const tracking_attr = '_c';\r\n if (!this.unload) {\r\n el.removeAttribute && el.removeAttribute(tracking_attr);\r\n } else if (el['_component'] !== this || el.getAttribute(tracking_attr) !== this.tracking_id) {\r\n this.tracking_id = new Date().valueOf().toString();\r\n el.setAttribute(tracking_attr, this.tracking_id);\r\n if (typeof MutationObserver !== 'undefined') {\r\n if (!this.observer) this.observer = new MutationObserver(changes => {\r\n if (changes[0].oldValue === this.tracking_id || !document.body.contains(el)) {\r\n this.unload(this.state);\r\n this.observer.disconnect();\r\n this.observer = null;\r\n }\r\n });\r\n this.observer.observe(document.body, {\r\n childList: true, subtree: true,\r\n attributes: true, attributeOldValue: true, attributeFilter: [tracking_attr]\r\n });\r\n }\r\n }\r\n el['_component'] = this;\r\n }\r\n if (!vdom && html) {\r\n html = directive(html, this);\r\n if (this.options.transition && document && document['startViewTransition']) {\r\n document['startViewTransition'](() => app.render(el, html, this));\r\n } else {\r\n app.render(el, html, this);\r\n }\r\n }\r\n this.rendered && this.rendered(this.state);\r\n }\r\n\r\n public setState(state: T, options: ActionOptions & EventOptions\r\n = { render: true, history: false }) {\r\n if (state instanceof Promise) {\r\n // Promise will not be saved or rendered\r\n // state will be saved and rendered when promise is resolved\r\n Promise.resolve(state).then(v => {\r\n this.setState(v, options);\r\n this._state = state;\r\n });\r\n } else {\r\n this._state = state;\r\n if (state == null) return;\r\n this.state = state;\r\n if (options.render !== false) {\r\n // before render state\r\n if (options.transition && document && document['startViewTransition']) {\r\n document['startViewTransition'](() => this.renderState(state));\r\n } else {\r\n this.renderState(state);\r\n }\r\n }\r\n if (options.history !== false && this.enable_history) {\r\n this._history = [...this._history, state];\r\n this._history_idx = this._history.length - 1;\r\n }\r\n if (typeof options.callback === 'function') options.callback(this.state);\r\n }\r\n }\r\n\r\n private _history_prev = () => {\r\n this._history_idx--;\r\n if (this._history_idx >= 0) {\r\n this.setState(this._history[this._history_idx], { render: true, history: false });\r\n }\r\n else {\r\n this._history_idx = 0;\r\n }\r\n };\r\n\r\n private _history_next = () => {\r\n this._history_idx++;\r\n if (this._history_idx < this._history.length) {\r\n this.setState(this._history[this._history_idx], { render: true, history: false });\r\n }\r\n else {\r\n this._history_idx = this._history.length - 1;\r\n }\r\n };\r\n\r\n constructor(\r\n protected state?: T,\r\n protected view?: View<T>,\r\n protected update?: Update<T, E>,\r\n protected options?) {\r\n }\r\n\r\n start = (element = null, options?: MountOptions): Component<T, E> => {\r\n this.mount(element, { render: true, ...options });\r\n if (this.mounted && typeof this.mounted === 'function') {\r\n const new_state = this.mounted({}, [], this.state);\r\n (typeof new_state !== 'undefined') && this.setState(new_state);\r\n }\r\n return this;\r\n }\r\n\r\n public mount(element = null, options?: MountOptions): Component<T, E> {\r\n console.assert(!this.element, 'Component already mounted.')\r\n this.options = options = { ...this.options, ...options };\r\n this.element = element;\r\n this.global_event = options.global_event;\r\n this.enable_history = !!options.history;\r\n\r\n if (this.enable_history) {\r\n this.on(options.history.prev || 'history-prev', this._history_prev);\r\n this.on(options.history.next || 'history-next', this._history_next);\r\n }\r\n\r\n if (options.route) {\r\n this.update = this.update || {};\r\n if (!this.update[options.route]) this.update[options.route] = REFRESH;\r\n }\r\n\r\n this.add_actions();\r\n this.state = this.state ?? this['model'] ?? {};\r\n if (typeof this.state === 'function') this.state = this.state();\r\n\r\n this.setState(this.state, { render: !!options.render, history: true });\r\n\r\n if (app['debug']) {\r\n if (componentCache.get(element)) { componentCache.get(element).push(this) }\r\n else { componentCache.set(element, [this]) }\r\n }\r\n return this;\r\n }\r\n\r\n is_global_event(name: string): boolean {\r\n return name && (\r\n this.global_event ||\r\n this._global_events.indexOf(name) >= 0 ||\r\n name.startsWith('#') || name.startsWith('/') || name.startsWith('@'));\r\n }\r\n\r\n add_action(name: string, action, options: ActionOptions = {}) {\r\n if (!action || typeof action !== 'function') return;\r\n if (options.global) this._global_events.push(name);\r\n this.on(name as any, (...p) => {\r\n\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: '>',\r\n event: name, p,\r\n current_state: this.state,\r\n options\r\n });\r\n\r\n const newState = action(this.state, ...p);\r\n\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: '<',\r\n event: name, p,\r\n newState,\r\n state: this.state,\r\n options\r\n });\r\n\r\n this.setState(newState, options)\r\n }, options);\r\n }\r\n\r\n add_actions() {\r\n const actions = this.update || {};\r\n Reflect.getMetadataKeys(this).forEach(key => {\r\n if (key.startsWith('apprun-update:')) {\r\n const meta = Reflect.getMetadata(key, this)\r\n actions[meta.name] = [this[meta.key].bind(this), meta.options];\r\n }\r\n })\r\n\r\n const all = {};\r\n if (Array.isArray(actions)) {\r\n actions.forEach(act => {\r\n const [name, action, opts] = act as ActionDef<T, E>;\r\n const names = name.toString();\r\n names.split(',').forEach(n => all[n.trim()] = [action, opts])\r\n })\r\n } else {\r\n Object.keys(actions).forEach(name => {\r\n const action = actions[name];\r\n if (typeof action === 'function' || Array.isArray(action)) {\r\n name.split(',').forEach(n => all[n.trim()] = action)\r\n }\r\n })\r\n }\r\n\r\n if (!all['.']) all['.'] = REFRESH;\r\n Object.keys(all).forEach(name => {\r\n const action = all[name];\r\n if (typeof action === 'function') {\r\n this.add_action(name, action);\r\n } else if (Array.isArray(action)) {\r\n this.add_action(name, action[0], action[1]);\r\n }\r\n });\r\n }\r\n\r\n public run(event: E, ...args) {\r\n if (this.state instanceof Promise) {\r\n return Promise.resolve(this.state).then(state => {\r\n this.state = state;\r\n this.run(event, ...args)\r\n });\r\n } else {\r\n const name = event.toString();\r\n return this.is_global_event(name) ?\r\n app.run(name, ...args) :\r\n this._app.run(name, ...args);\r\n }\r\n }\r\n\r\n public on(event: E, fn: (...args) => void, options?: any) {\r\n const name = event.toString();\r\n this._actions.push({ name, fn });\r\n return this.is_global_event(name) ?\r\n app.on(name, fn, options) :\r\n this._app.on(name, fn, options);\r\n }\r\n\r\n public runAsync(event: E, ...args) {\r\n const name = event.toString();\r\n return this.is_global_event(name) ?\r\n app.runAsync(name, ...args) :\r\n this._app.runAsync(name, ...args);\r\n }\r\n\r\n // obsolete\r\n public query(event: E, ...args) {\r\n return this.runAsync(event, ...args);\r\n }\r\n\r\n public unmount() {\r\n this.observer?.disconnect();\r\n this._actions.forEach(action => {\r\n const { name, fn } = action;\r\n this.is_global_event(name) ?\r\n app.off(name, fn) :\r\n this._app.off(name, fn);\r\n });\r\n }\r\n}\r\n","import app from './app';\n\nexport type Route = (url: string, ...args: any[]) => any;\n\nexport const ROUTER_EVENT: string = '//';\nexport const ROUTER_404_EVENT: string = '///';\n\nexport const route: Route = (url: string) => {\n if (!url) url = '#';\n if (url.startsWith('#')) {\n const [name, ...rest] = url.split('/');\n app.run(name, ...rest) || app.run(ROUTER_404_EVENT, name, ...rest);\n app.run(ROUTER_EVENT, name, ...rest);\n } else if (url.startsWith('/')) {\n const [_, name, ...rest] = url.split('/');\n app.run('/' + name, ...rest) || app.run(ROUTER_404_EVENT, '/' + name, ...rest);\n app.run(ROUTER_EVENT, '/' + name, ...rest);\n } else {\n app.run(url) || app.run(ROUTER_404_EVENT, url);\n app.run(ROUTER_EVENT, url);\n }\n}\nexport default route;","import app, { App } from './app';\nimport { createElement, render, Fragment, safeHTML } from './vdom';\nimport { Component } from './component';\nimport { VNode, View, Action, Update, EventOptions, ActionOptions, MountOptions, AppStartOptions } from './types';\nimport { on, update, customElement } from './decorator';\nimport webComponent, { CustomElementOptions } from './web-component';\nimport { Route, route, ROUTER_EVENT, ROUTER_404_EVENT } from './router';\n\nexport interface IApp {\n start<T, E = any>(element?: Element | string, model?: T, view?: View<T>, update?: Update<T, E>,\n options?: AppStartOptions<T>): Component<T, E>;\n on(name: string, fn: (...args: any[]) => void, options?: any): void;\n off(name: string, fn: (...args: any[]) => void): void;\n run(name: string, ...args: any[]): number;\n find(name: string): any | any[];\n h(tag: string | Function, props, ...children): VNode | VNode[];\n createElement(tag: string | Function, props, ...children): VNode | VNode[];\n render(element: Element | string, node: VNode): void;\n Fragment(props, ...children): any[];\n route?: Route;\n webComponent(name: string, componentClass, options?: CustomElementOptions): void;\n safeHTML(html: string): any[];\n}\n\napp.h = app.createElement = createElement;\napp.render = render;\napp.Fragment = Fragment;\napp.webComponent = webComponent;\napp.safeHTML = safeHTML;\n\napp.start = <T, E = any>(element?: Element | string, model?: T, view?: View<T>, update?: Update<T, E>,\n options?: AppStartOptions<T>): Component<T, E> => {\n const opts = { render: true, global_event: true, ...options };\n const component = new Component<T, E>(model, view, update);\n if (options && options.rendered) component.rendered = options.rendered;\n if (options && options.mounted) component.mounted = options.mounted;\n component.start(element, opts);\n return component;\n};\n\nconst NOOP = _ => {/* Intentionally empty */ }\napp.on('$', NOOP);\napp.on('debug', _ => NOOP);\napp.on(ROUTER_EVENT, NOOP);\napp.on('#', NOOP);\napp['route'] = route;\napp.on('route', url => app['route'] && app['route'](url));\n\nif (typeof document === 'object') {\n document.addEventListener(\"DOMContentLoaded\", () => {\n if (app['route'] === route) {\n window.onpopstate = () => route(location.hash);\n document.body.hasAttribute('apprun-no-init') || app['no-init-route'] || route(location.hash);\n }\n });\n}\nexport type StatelessComponent<T = {}> = (args: T) => string | VNode | void;\nexport { App, app, Component, View, Action, Update, on, update, EventOptions, ActionOptions, MountOptions, Fragment, safeHTML }\nexport { update as event };\nexport { ROUTER_EVENT, ROUTER_404_EVENT };\nexport { customElement, CustomElementOptions, AppStartOptions };\nexport default app as IApp;\n\nif (typeof window === 'object') {\n window['Component'] = Component;\n window['_React'] = window['React'];\n window['React'] = app;\n window['on'] = on;\n window['customElement'] = customElement;\n window['safeHTML'] = safeHTML;\n}\n\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","self","g","global","getStateValue","component","setStateValue","value","state","setState","directive","vdom","Array","isArray","element","tag","props","children","key","substring","e","handler","p","type","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","window","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","parentElement","_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","resolve","then","v","_state","enable_history","_history","_history_idx","callback","_app","_actions","_global_events","_history_prev","_history_next","start","global_event","prev","next","route","add_actions","is_global_event","add_action","action","current_state","newState","actions","act","split","trim","ROUTER_EVENT","ROUTER_404_EVENT","url","rest","h","webComponent","model","NOOP","addEventListener","onpopstate","location","hash","hasAttribute"],"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/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 ","import { EventOptions} from './types'\nexport class App {\n\n private _events: Object;\n\n public start;\n public h;\n public createElement;\n public render;\n public Fragment;\n public webComponent;\n public safeHTML;\n\n constructor() {\n this._events = {};\n }\n\n on(name: string, fn: (...args) => void, options: EventOptions = {}): void {\n this._events[name] = this._events[name] || [];\n this._events[name].push({ fn, options });\n }\n\n off(name: string, fn: (...args) => void): void {\n const subscribers = this._events[name] || [];\n\n this._events[name] = subscribers.filter((sub) => sub.fn !== fn);\n }\n\n find(name: string): any {\n return this._events[name];\n }\n\n run(name: string, ...args): number {\n const subscribers = this.getSubscribers(name, this._events);\n console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);\n subscribers.forEach((sub) => {\n const { fn, options } = sub;\n if (options.delay) {\n this.delay(name, fn, args, options);\n } else {\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n }\n return !sub.options.once;\n });\n\n return subscribers.length;\n }\n\n once(name: string, fn, options: EventOptions = {}): void {\n this.on(name, fn, { ...options, once: true });\n }\n\n private delay(name, fn, args, options): void {\n if (options._t) clearTimeout(options._t);\n options._t = setTimeout(() => {\n clearTimeout(options._t);\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n }, options.delay);\n }\n\n runAsync(name: string, ...args): Promise<any[]> {\n const subscribers = this.getSubscribers(name, this._events);\n console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);\n const promises = subscribers.map(sub => {\n const { fn, options } = sub;\n return Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n });\n return Promise.all(promises);\n }\n\n query(name: string, ...args): Promise<any[]> {\n return this.query(name, ...args);\n }\n\n private getSubscribers(name: string, events) {\n const subscribers = events[name] || [];\n\n // Update the list of subscribers by pulling out those which will run once.\n // We must do this update prior to running any of the events in case they\n // cause additional events to be turned off or on.\n events[name] = subscribers.filter((sub) => {\n return !sub.options.once;\n });\n Object.keys(events).filter(evt => evt.endsWith('*') && name.startsWith(evt.replace('*', '')))\n .sort((a, b) => b.length - a.length)\n .forEach(evt => subscribers.push(...events[evt].map(sub => ({\n ...sub,\n options: { ...sub.options, event: name }\n }))));\n return subscribers;\n }\n}\n\nconst AppRunVersions = 'AppRun-3';\nlet app: App;\nconst root = (typeof self === 'object' && self.self === self && self) ||\n (typeof global === 'object' && global.global === global && global)\nif (root['app'] && root['_AppRunVersions']) {\n app = root['app'];\n} else {\n app = new App();\n root['app'] = app;\n root['_AppRunVersions'] = AppRunVersions;\n}\nexport default app;\n","import app from './app';\n\nconst getStateValue = (component, name) => {\n return (name ? component['state'][name] : component['state']) || '';\n}\n\nconst setStateValue = (component, name, value) => {\n if (name) {\n const state = component['state'] || {};\n state[name] = value;\n component.setState(state);\n } else {\n component.setState(value);\n }\n}\n\nconst apply_directive = (key: string, props: {}, tag, component) => {\n if (key.startsWith('$on')) {\n const event = props[key];\n key = key.substring(1)\n if (typeof event === 'boolean') {\n props[key] = e => component.run ? component.run(key, e) : app.run(key, e);\n } else if (typeof event === 'string') {\n props[key] = e => component.run ? component.run(event, e) : app.run(event, e);\n } else if (typeof event === 'function') {\n props[key] = e => component.setState(event(component.state, e));\n } else if (Array.isArray(event)) {\n const [handler, ...p] = event;\n if (typeof handler === 'string') {\n props[key] = e => component.run ? component.run(handler, ...p, e) : app.run(handler, ...p, e);\n } else if (typeof handler === 'function') {\n props[key] = e => component.setState(handler(component.state, ...p, e));\n }\n }\n\n } else if (key === '$bind') {\n const type = props['type'] || 'text';\n const name = typeof props[key] === 'string' ? props[key] : props['name'];\n if (tag === 'input') {\n switch (type) {\n case 'checkbox':\n props['checked'] = getStateValue(component, name);\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.checked);\n break;\n case 'radio':\n props['checked'] = getStateValue(component, name) === props['value'];\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.value);\n break;\n case 'number':\n case 'range':\n props['value'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, Number(e.target.value));\n break;\n default:\n props['value'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, e.target.value);\n }\n } else if (tag === 'select') {\n props['value'] = getStateValue(component, name);\n props['onchange'] = e => {\n if (!e.target.multiple) { // multiple selection use $bind on option\n setStateValue(component, name || e.target.name, e.target.value);\n }\n }\n } else if (tag === 'option') {\n props['selected'] = getStateValue(component, name);\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.selected);\n } else if (tag === 'textarea') {\n props['innerHTML'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, e.target.value);\n }\n } else {\n app.run('$', { key, tag, props, component });\n }\n}\n\nconst directive = (vdom, component) => {\n if (Array.isArray(vdom)) {\n return vdom.map(element => directive(element, component));\n } else {\n let { tag, props, children } = vdom;\n if (tag) {\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) children = directive(children, component);\n return { tag, props, children };\n } else {\n return vdom;\n }\n }\n}\n\nexport default directive;","import { VDOM, VNode } from './types';\nimport directive from './directive';\nexport type Element = any; //HTMLElement | SVGSVGElement | SVGElement;\n\nexport function Fragment(props, ...children): any[] {\n return collect(children);\n}\n\nconst ATTR_PROPS = '_props';\n\nfunction collect(children) {\n const ch = [];\n const push = (c) => {\n if (c !== null && c !== undefined && c !== '' && c !== false) {\n ch.push((typeof c === 'function' || typeof c === 'object') ? c : `${c}`);\n }\n }\n children && children.forEach(c => {\n if (Array.isArray(c)) {\n c.forEach(i => push(i));\n } else {\n push(c);\n }\n });\n return ch;\n}\n\nexport function createElement(tag: string | Function | [], props?: {}, ...children) {\n const ch = collect(children);\n if (typeof tag === 'string') return { tag, props, children: ch };\n else if (Array.isArray(tag)) return tag; // JSX fragments - babel\n else if (tag === undefined && children) return ch; // JSX fragments - typescript\n else if (Object.getPrototypeOf(tag).__isAppRunComponent) return { tag, props, children: ch } // createComponent(tag, { ...props, children });\n else if (typeof tag === 'function') return tag(props, ch);\n else throw new Error(`Unknown tag in vdom ${tag}`);\n};\n\nconst keyCache = new WeakMap();\n\nexport const updateElement = (element: Element | string, nodes: VDOM, component = {}) => {\n // tslint:disable-next-line\n if (nodes == null || nodes === false) return;\n const el = (typeof element === 'string' && element) ?\n document.getElementById(element) || document.querySelector(element) : element;\n nodes = directive(nodes, component);\n render(el, nodes, component);\n}\n\nfunction render(element: Element, nodes: VDOM, parent = {}) {\n // tslint:disable-next-line\n if (nodes == null || nodes === false) return;\n nodes = createComponent(nodes, parent);\n if (!element) return;\n const isSvg = element.nodeName === \"SVG\";\n if (Array.isArray(nodes)) {\n updateChildren(element, nodes, isSvg);\n } else {\n updateChildren(element, [nodes], isSvg);\n }\n}\n\nfunction same(el: Element, node: VNode) {\n // if (!el || !node) return false;\n const key1 = el.nodeName;\n const key2 = `${node.tag || ''}`;\n return key1.toUpperCase() === key2.toUpperCase();\n}\n\nfunction update(element: Element, node: VNode, isSvg: boolean) {\n if (node['_op'] === 3) return;\n // console.assert(!!element);\n isSvg = isSvg || node.tag === \"svg\";\n if (!same(element, node)) {\n element.parentNode.replaceChild(create(node, isSvg), element);\n return;\n }\n !(node['_op'] & 2) && updateChildren(element, node.children, isSvg);\n !(node['_op'] & 1) && updateProps(element, node.props, isSvg);\n}\n\nfunction updateChildren(element, children, isSvg: boolean) {\n const old_len = element.childNodes?.length || 0;\n const new_len = children?.length || 0;\n const len = Math.min(old_len, new_len);\n for (let i = 0; i < len; i++) {\n const child = children[i];\n if (child['_op'] === 3) continue;\n const el = element.childNodes[i];\n if (typeof child === 'string') {\n if (el.textContent !== child) {\n if (el.nodeType === 3) {\n el.nodeValue = child\n } else {\n element.replaceChild(createText(child), el);\n }\n }\n } else if (child instanceof HTMLElement || child instanceof SVGElement) {\n element.insertBefore(child, el);\n } else {\n const key = child.props && child.props['key'];\n if (key) {\n if (el.key === key) {\n update(element.childNodes[i], child, isSvg);\n } else {\n // console.log(el.key, key);\n const old = keyCache[key];\n if (old) {\n const temp = old.nextSibling;\n element.insertBefore(old, el);\n temp ? element.insertBefore(el, temp) : element.appendChild(el);\n update(element.childNodes[i], child, isSvg);\n } else {\n element.replaceChild(create(child, isSvg), el);\n }\n }\n } else {\n update(element.childNodes[i], child, isSvg);\n }\n }\n }\n\n let n = element.childNodes?.length || 0;\n while (n > len) {\n element.removeChild(element.lastChild);\n n--;\n }\n\n if (new_len > len) {\n const d = document.createDocumentFragment();\n for (let i = len; i < children.length; i++) {\n d.appendChild(create(children[i], isSvg));\n }\n element.appendChild(d);\n }\n}\n\nexport const safeHTML = (html: string) => {\n const div = document.createElement('section');\n div.insertAdjacentHTML('afterbegin', html)\n return Array.from(div.children);\n}\n\nfunction createText(node) {\n if (node?.indexOf('_html:') === 0) { // ?\n const div = document.createElement('div');\n div.insertAdjacentHTML('afterbegin', node.substring(6))\n return div;\n } else {\n return document.createTextNode(node??'');\n }\n}\n\nfunction create(node: VNode | string | HTMLElement | SVGElement, isSvg: boolean): Element {\n // console.assert(node !== null && node !== undefined);\n if ((node instanceof HTMLElement) || (node instanceof SVGElement)) return node;\n if (typeof node === \"string\") return createText(node);\n if (!node.tag || (typeof node.tag === 'function')) return createText(JSON.stringify(node));\n isSvg = isSvg || node.tag === \"svg\";\n const element = isSvg\n ? document.createElementNS(\"http://www.w3.org/2000/svg\", node.tag)\n : document.createElement(node.tag);\n\n updateProps(element, node.props, isSvg);\n if (node.children) node.children.forEach(child => element.appendChild(create(child, isSvg)));\n return element\n}\n\nfunction mergeProps(oldProps: {}, newProps: {}): {} {\n newProps['class'] = newProps['class'] || newProps['className'];\n delete newProps['className'];\n const props = {};\n if (oldProps) Object.keys(oldProps).forEach(p => props[p] = null);\n if (newProps) Object.keys(newProps).forEach(p => props[p] = newProps[p]);\n return props;\n}\n\nexport function updateProps(element: Element, props: {}, isSvg) {\n // console.assert(!!element);\n const cached = element[ATTR_PROPS] || {};\n props = mergeProps(cached, props || {});\n element[ATTR_PROPS] = props;\n\n for (const name in props) {\n const value = props[name];\n // if (cached[name] === value) continue;\n // console.log('updateProps', name, value);\n if (name.startsWith('data-')) {\n const dname = name.substring(5);\n const cname = dname.replace(/-(\\w)/g, (match) => match[1].toUpperCase());\n if (element.dataset[cname] !== value) {\n if (value || value === \"\") element.dataset[cname] = value;\n else delete element.dataset[cname];\n }\n } else if (name === 'style') {\n if (element.style.cssText) element.style.cssText = '';\n if (typeof value === 'string') element.style.cssText = value;\n else {\n for (const s in value) {\n if (element.style[s] !== value[s]) element.style[s] = value[s];\n }\n }\n } else if (name.startsWith('xlink')) {\n const xname = name.replace('xlink', '').toLowerCase();\n if (value == null || value === false) {\n element.removeAttributeNS('http://www.w3.org/1999/xlink', xname);\n } else {\n element.setAttributeNS('http://www.w3.org/1999/xlink', xname, value);\n }\n } else if (name.startsWith('on')) {\n if (!value || typeof value === 'function') {\n element[name] = value;\n } else if (typeof value === 'string') {\n if (value) element.setAttribute(name, value);\n else element.removeAttribute(name);\n }\n } else if (/^id$|^class$|^list$|^readonly$|^contenteditable$|^role|-|^for$/g.test(name) || isSvg) {\n if (element.getAttribute(name) !== value) {\n if (value) element.setAttribute(name, value);\n else element.removeAttribute(name);\n }\n } else if (element[name] !== value) {\n element[name] = value;\n }\n if (name === 'key' && value) keyCache[value] = element;\n }\n if (props && typeof props['ref'] === 'function') {\n window.requestAnimationFrame(() => props['ref'](element));\n }\n}\n\nfunction render_component(node, parent, idx) {\n const { tag, props, children } = node;\n let key = `_${idx}`;\n let id = props && props['id'];\n if (!id) id = `_${idx}${Date.now()}`;\n else key = id;\n let asTag = 'section';\n if (props && props['as']) {\n asTag = props['as'];\n delete props['as'];\n }\n if (!parent.__componentCache) parent.__componentCache = {};\n let component = parent.__componentCache[key];\n if (!component || !(component instanceof tag) || !component.element) {\n const element = document.createElement(asTag);\n component = parent.__componentCache[key] = new tag({ ...props, children }).mount(element, { render: true });\n } else {\n component.renderState(component.state);\n }\n if (component.mounted) {\n const new_state = component.mounted(props, children, component.state);\n (typeof new_state !== 'undefined') && component.setState(new_state);\n }\n updateProps(component.element, props, false);\n return component.element;\n}\n\nfunction createComponent(node, parent, idx = 0) {\n if (typeof node === 'string') return node;\n if (Array.isArray(node)) return node.map(child => createComponent(child, parent, idx++));\n let vdom = node;\n if (node && typeof node.tag === 'function' && Object.getPrototypeOf(node.tag).__isAppRunComponent) {\n vdom = render_component(node, parent, idx);\n }\n if (vdom && Array.isArray(vdom.children)) {\n const new_parent = vdom.props?._component;\n if (new_parent) {\n let i = 0;\n vdom.children = vdom.children.map(child => createComponent(child, new_parent, i++));\n } else {\n vdom.children = vdom.children.map(child => createComponent(child, parent, idx++));\n }\n }\n return vdom;\n}\n","// 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};","declare var customElements;\n\nexport type CustomElementOptions = {\n render?: boolean;\n shadow?: boolean;\n history?: boolean;\n global_event?: boolean;\n observedAttributes?: string[];\n};\n\nexport const customElement = (componentClass, options: CustomElementOptions = {}) => class CustomElement extends HTMLElement {\n private _shadowRoot;\n private _component;\n private _attrMap: (arg0: string) => string;\n public on;\n public run;\n constructor() {\n super();\n }\n get component() { return this._component; }\n get state() { return this._component.state; }\n\n static get observedAttributes() {\n // attributes need to be set to lowercase in order to get observed\n return (options.observedAttributes || []).map(attr => attr.toLowerCase());\n }\n\n connectedCallback() {\n if (this.isConnected && !this._component) {\n const opts = options || {};\n this._shadowRoot = opts.shadow ? this.attachShadow({ mode: 'open' }) : this;\n const observedAttributes = (opts.observedAttributes || [])\n\n const attrMap = observedAttributes.reduce((map, name) => {\n const lc = name.toLowerCase()\n if (lc !== name) {\n map[lc] = name\n }\n return map\n }, {})\n this._attrMap = (name: string) : string => attrMap[name] || name\n\n const props = {};\n Array.from(this.attributes).forEach(item => props[this._attrMap(item.name)] = item.value);\n\n // add getters/ setters to allow observation on observedAttributes\n observedAttributes.forEach(name => {\n if (this[name] !== undefined) props[name] = this[name];\n Object.defineProperty(this, name, {\n get(): any {\n return props[name];\n },\n set(this: CustomElement, value: unknown) {\n // trigger change event\n this.attributeChangedCallback(name, props[name], value)\n },\n configurable: true,\n enumerable: true\n });\n })\n\n requestAnimationFrame(() => {\n const children = this.children ? Array.from(this.children) : [];\n children.forEach(el => el.parentElement.removeChild(el));\n this._component = new componentClass({ ...props, children }).mount(this._shadowRoot, opts);\n // attach props to component\n this._component._props = props;\n // expose dispatchEvent\n this._component.dispatchEvent = this.dispatchEvent.bind(this)\n if (this._component.mounted) {\n const new_state = this._component.mounted(props, children, this._component.state);\n if (typeof new_state !== 'undefined') this._component.state = new_state;\n }\n this.on = this._component.on.bind(this._component);\n this.run = this._component.run.bind(this._component);\n if (!(opts.render === false)) this._component.run('.');\n });\n }\n }\n\n disconnectedCallback() {\n this._component?.unload?.();\n this._component?.unmount?.();\n this._component = null;\n }\n\n attributeChangedCallback(name: string, oldValue: unknown, value: unknown) {\n if (this._component) {\n // camelCase attributes arrive only in lowercase\n const mappedName = this._attrMap(name);\n // store the new property/ attribute\n this._component._props[mappedName] = value;\n this._component.run('attributeChanged', mappedName, oldValue, value);\n\n if (value !== oldValue && !(options.render === false)) {\n window.requestAnimationFrame(() => {\n // re-render state with new combined props on next animation frame\n this._component.run('.')\n })\n }\n }\n }\n}\n\nexport default (name: string, componentClass, options?: CustomElementOptions) => {\n (typeof customElements !== 'undefined') && customElements.define(name, customElement(componentClass, options))\n}\n","import webComponent, { CustomElementOptions } from './web-component';\n\n// tslint:disable:no-invalid-this\nexport const Reflect = {\n\n meta: new WeakMap(),\n\n defineMetadata(metadataKey, metadataValue, target) {\n if (!this.meta.has(target)) this.meta.set(target, {});\n this.meta.get(target)[metadataKey] = metadataValue;\n },\n\n getMetadataKeys(target) {\n target = Object.getPrototypeOf(target);\n return this.meta.get(target) ? Object.keys(this.meta.get(target)) : [];\n },\n\n getMetadata(metadataKey, target) {\n target = Object.getPrototypeOf(target);\n return this.meta.get(target) ? this.meta.get(target)[metadataKey] : null;\n }\n}\n\nexport function update<E=string>(events?: E, options: any = {}) {\n return (target: any, key: string, descriptor: any) => {\n const name = events ? events.toString() : key;\n Reflect.defineMetadata(`apprun-update:${name}`,\n { name, key, options }, target);\n return descriptor;\n }\n}\n\nexport function on<E = string>(events?: E, options: any = {}) {\n return function (target: any, key: string) {\n const name = events ? events.toString() : key;\n Reflect.defineMetadata(`apprun-update:${name}`,\n { name, key, options }, target)\n }\n}\n\nexport function customElement(name: string, options?: CustomElementOptions) {\n return function _customElement<T extends { new(...args: any[]): {} }>(constructor: T) {\n webComponent(name, constructor, options);\n return constructor;\n }\n}\n\n","\r\nimport app, { App } from './app';\r\nimport { Reflect } from './decorator'\r\nimport { View, Update, ActionDef, ActionOptions, MountOptions, EventOptions } from './types';\r\nimport directive from './directive';\r\n\r\nconst componentCache = new Map();\r\nif (!app.find('get-components')) app.on('get-components', o => o.components = componentCache);\r\n\r\nconst REFRESH = state => state;\r\n\r\nexport class Component<T = any, E = any> {\r\n static __isAppRunComponent = true;\r\n private _app = new App();\r\n private _actions = [];\r\n private _global_events = [];\r\n private _state;\r\n private _history = [];\r\n private _history_idx = -1;\r\n private enable_history;\r\n private global_event;\r\n public element;\r\n public rendered;\r\n public mounted;\r\n public unload;\r\n private tracking_id;\r\n private observer;\r\n\r\n\r\n private renderState(state: T, vdom = null) {\r\n if (!this.view) return;\r\n let html = vdom || this.view(state);\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: html ? '.' : '-',\r\n state,\r\n vdom: html,\r\n el: this.element\r\n });\r\n\r\n if (typeof document !== 'object') return;\r\n\r\n const el = (typeof this.element === 'string' && this.element) ?\r\n document.getElementById(this.element) || document.querySelector(this.element) : this.element;\r\n\r\n if (el) {\r\n const tracking_attr = '_c';\r\n if (!this.unload) {\r\n el.removeAttribute && el.removeAttribute(tracking_attr);\r\n } else if (el['_component'] !== this || el.getAttribute(tracking_attr) !== this.tracking_id) {\r\n this.tracking_id = new Date().valueOf().toString();\r\n el.setAttribute(tracking_attr, this.tracking_id);\r\n if (typeof MutationObserver !== 'undefined') {\r\n if (!this.observer) this.observer = new MutationObserver(changes => {\r\n if (changes[0].oldValue === this.tracking_id || !document.body.contains(el)) {\r\n this.unload(this.state);\r\n this.observer.disconnect();\r\n this.observer = null;\r\n }\r\n });\r\n this.observer.observe(document.body, {\r\n childList: true, subtree: true,\r\n attributes: true, attributeOldValue: true, attributeFilter: [tracking_attr]\r\n });\r\n }\r\n }\r\n el['_component'] = this;\r\n }\r\n if (!vdom && html) {\r\n html = directive(html, this);\r\n if (this.options.transition && document && document['startViewTransition']) {\r\n document['startViewTransition'](() => app.render(el, html, this));\r\n } else {\r\n app.render(el, html, this);\r\n }\r\n }\r\n this.rendered && this.rendered(this.state);\r\n }\r\n\r\n public setState(state: T, options: ActionOptions & EventOptions\r\n = { render: true, history: false }) {\r\n if (state instanceof Promise) {\r\n // Promise will not be saved or rendered\r\n // state will be saved and rendered when promise is resolved\r\n Promise.resolve(state).then(v => {\r\n this.setState(v, options);\r\n this._state = state;\r\n });\r\n } else {\r\n this._state = state;\r\n if (state == null) return;\r\n this.state = state;\r\n if (options.render !== false) {\r\n // before render state\r\n if (options.transition && document && document['startViewTransition']) {\r\n document['startViewTransition'](() => this.renderState(state));\r\n } else {\r\n this.renderState(state);\r\n }\r\n }\r\n if (options.history !== false && this.enable_history) {\r\n this._history = [...this._history, state];\r\n this._history_idx = this._history.length - 1;\r\n }\r\n if (typeof options.callback === 'function') options.callback(this.state);\r\n }\r\n }\r\n\r\n private _history_prev = () => {\r\n this._history_idx--;\r\n if (this._history_idx >= 0) {\r\n this.setState(this._history[this._history_idx], { render: true, history: false });\r\n }\r\n else {\r\n this._history_idx = 0;\r\n }\r\n };\r\n\r\n private _history_next = () => {\r\n this._history_idx++;\r\n if (this._history_idx < this._history.length) {\r\n this.setState(this._history[this._history_idx], { render: true, history: false });\r\n }\r\n else {\r\n this._history_idx = this._history.length - 1;\r\n }\r\n };\r\n\r\n constructor(\r\n protected state?: T,\r\n protected view?: View<T>,\r\n protected update?: Update<T, E>,\r\n protected options?) {\r\n }\r\n\r\n start = (element = null, options?: MountOptions): Component<T, E> => {\r\n this.mount(element, { render: true, ...options });\r\n if (this.mounted && typeof this.mounted === 'function') {\r\n const new_state = this.mounted({}, [], this.state);\r\n (typeof new_state !== 'undefined') && this.setState(new_state);\r\n }\r\n return this;\r\n }\r\n\r\n public mount(element = null, options?: MountOptions): Component<T, E> {\r\n console.assert(!this.element, 'Component already mounted.')\r\n this.options = options = { ...this.options, ...options };\r\n this.element = element;\r\n this.global_event = options.global_event;\r\n this.enable_history = !!options.history;\r\n\r\n if (this.enable_history) {\r\n this.on(options.history.prev || 'history-prev', this._history_prev);\r\n this.on(options.history.next || 'history-next', this._history_next);\r\n }\r\n\r\n if (options.route) {\r\n this.update = this.update || {};\r\n if (!this.update[options.route]) this.update[options.route] = REFRESH;\r\n }\r\n\r\n this.add_actions();\r\n this.state = this.state ?? this['model'] ?? {};\r\n if (typeof this.state === 'function') this.state = this.state();\r\n\r\n this.setState(this.state, { render: !!options.render, history: true });\r\n\r\n if (app['debug']) {\r\n if (componentCache.get(element)) { componentCache.get(element).push(this) }\r\n else { componentCache.set(element, [this]) }\r\n }\r\n return this;\r\n }\r\n\r\n is_global_event(name: string): boolean {\r\n return name && (\r\n this.global_event ||\r\n this._global_events.indexOf(name) >= 0 ||\r\n name.startsWith('#') || name.startsWith('/') || name.startsWith('@'));\r\n }\r\n\r\n add_action(name: string, action, options: ActionOptions = {}) {\r\n if (!action || typeof action !== 'function') return;\r\n if (options.global) this._global_events.push(name);\r\n this.on(name as any, (...p) => {\r\n\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: '>',\r\n event: name, p,\r\n current_state: this.state,\r\n options\r\n });\r\n\r\n const newState = action(this.state, ...p);\r\n\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: '<',\r\n event: name, p,\r\n newState,\r\n state: this.state,\r\n options\r\n });\r\n\r\n this.setState(newState, options)\r\n }, options);\r\n }\r\n\r\n add_actions() {\r\n const actions = this.update || {};\r\n Reflect.getMetadataKeys(this).forEach(key => {\r\n if (key.startsWith('apprun-update:')) {\r\n const meta = Reflect.getMetadata(key, this)\r\n actions[meta.name] = [this[meta.key].bind(this), meta.options];\r\n }\r\n })\r\n\r\n const all = {};\r\n if (Array.isArray(actions)) {\r\n actions.forEach(act => {\r\n const [name, action, opts] = act as ActionDef<T, E>;\r\n const names = name.toString();\r\n names.split(',').forEach(n => all[n.trim()] = [action, opts])\r\n })\r\n } else {\r\n Object.keys(actions).forEach(name => {\r\n const action = actions[name];\r\n if (typeof action === 'function' || Array.isArray(action)) {\r\n name.split(',').forEach(n => all[n.trim()] = action)\r\n }\r\n })\r\n }\r\n\r\n if (!all['.']) all['.'] = REFRESH;\r\n Object.keys(all).forEach(name => {\r\n const action = all[name];\r\n if (typeof action === 'function') {\r\n this.add_action(name, action);\r\n } else if (Array.isArray(action)) {\r\n this.add_action(name, action[0], action[1]);\r\n }\r\n });\r\n }\r\n\r\n public run(event: E, ...args) {\r\n if (this.state instanceof Promise) {\r\n return Promise.resolve(this.state).then(state => {\r\n this.state = state;\r\n this.run(event, ...args)\r\n });\r\n } else {\r\n const name = event.toString();\r\n return this.is_global_event(name) ?\r\n app.run(name, ...args) :\r\n this._app.run(name, ...args);\r\n }\r\n }\r\n\r\n public on(event: E, fn: (...args) => void, options?: any) {\r\n const name = event.toString();\r\n this._actions.push({ name, fn });\r\n return this.is_global_event(name) ?\r\n app.on(name, fn, options) :\r\n this._app.on(name, fn, options);\r\n }\r\n\r\n public runAsync(event: E, ...args) {\r\n const name = event.toString();\r\n return this.is_global_event(name) ?\r\n app.runAsync(name, ...args) :\r\n this._app.runAsync(name, ...args);\r\n }\r\n\r\n // obsolete\r\n public query(event: E, ...args) {\r\n return this.runAsync(event, ...args);\r\n }\r\n\r\n public unmount() {\r\n this.observer?.disconnect();\r\n this._actions.forEach(action => {\r\n const { name, fn } = action;\r\n this.is_global_event(name) ?\r\n app.off(name, fn) :\r\n this._app.off(name, fn);\r\n });\r\n }\r\n}\r\n","import app from './app';\n\nexport type Route = (url: string, ...args: any[]) => any;\n\nexport const ROUTER_EVENT: string = '//';\nexport const ROUTER_404_EVENT: string = '///';\n\nexport const route: Route = (url: string) => {\n if (!url) url = '#';\n if (url.startsWith('#')) {\n const [name, ...rest] = url.split('/');\n app.run(name, ...rest) || app.run(ROUTER_404_EVENT, name, ...rest);\n app.run(ROUTER_EVENT, name, ...rest);\n } else if (url.startsWith('/')) {\n const [_, name, ...rest] = url.split('/');\n app.run('/' + name, ...rest) || app.run(ROUTER_404_EVENT, '/' + name, ...rest);\n app.run(ROUTER_EVENT, '/' + name, ...rest);\n } else {\n app.run(url) || app.run(ROUTER_404_EVENT, url);\n app.run(ROUTER_EVENT, url);\n }\n}\nexport default route;","import app, { App } from './app';\nimport { createElement, render, Fragment, safeHTML } from './vdom';\nimport { Component } from './component';\nimport { VNode, View, Action, Update, EventOptions, ActionOptions, MountOptions, AppStartOptions } from './types';\nimport { on, update, customElement } from './decorator';\nimport webComponent, { CustomElementOptions } from './web-component';\nimport { Route, route, ROUTER_EVENT, ROUTER_404_EVENT } from './router';\n\nexport interface IApp {\n start<T, E = any>(element?: Element | string, model?: T, view?: View<T>, update?: Update<T, E>,\n options?: AppStartOptions<T>): Component<T, E>;\n on(name: string, fn: (...args: any[]) => void, options?: any): void;\n off(name: string, fn: (...args: any[]) => void): void;\n run(name: string, ...args: any[]): number;\n find(name: string): any | any[];\n h(tag: string | Function, props, ...children): VNode | VNode[];\n createElement(tag: string | Function, props, ...children): VNode | VNode[];\n render(element: Element | string, node: VNode): void;\n Fragment(props, ...children): any[];\n route?: Route;\n webComponent(name: string, componentClass, options?: CustomElementOptions): void;\n safeHTML(html: string): any[];\n}\n\napp.h = app.createElement = createElement;\napp.render = render;\napp.Fragment = Fragment;\napp.webComponent = webComponent;\napp.safeHTML = safeHTML;\n\napp.start = <T, E = any>(element?: Element | string, model?: T, view?: View<T>, update?: Update<T, E>,\n options?: AppStartOptions<T>): Component<T, E> => {\n const opts = { render: true, global_event: true, ...options };\n const component = new Component<T, E>(model, view, update);\n if (options && options.rendered) component.rendered = options.rendered;\n if (options && options.mounted) component.mounted = options.mounted;\n component.start(element, opts);\n return component;\n};\n\nconst NOOP = _ => {/* Intentionally empty */ }\napp.on('$', NOOP);\napp.on('debug', _ => NOOP);\napp.on(ROUTER_EVENT, NOOP);\napp.on('#', NOOP);\napp['route'] = route;\napp.on('route', url => app['route'] && app['route'](url));\n\nif (typeof document === 'object') {\n document.addEventListener(\"DOMContentLoaded\", () => {\n if (app['route'] === route) {\n window.onpopstate = () => route(location.hash);\n document.body.hasAttribute('apprun-no-init') || app['no-init-route'] || route(location.hash);\n }\n });\n}\nexport type StatelessComponent<T = {}> = (args: T) => string | VNode | void;\nexport { App, app, Component, View, Action, Update, on, update, EventOptions, ActionOptions, MountOptions, Fragment, safeHTML }\nexport { update as event };\nexport { ROUTER_EVENT, ROUTER_404_EVENT };\nexport { customElement, CustomElementOptions, AppStartOptions };\nexport default app as IApp;\n\nif (typeof window === 'object') {\n window['Component'] = Component;\n window['_React'] = window['React'];\n window['React'] = app;\n window['on'] = on;\n window['customElement'] = customElement;\n window['safeHTML'] = safeHTML;\n}\n\napp['use_render'] = (render, mode = 0) =>\n mode === 0 ?\n app.render = (el, vdom) => render(vdom, el) : // react style\n app.render = (el, vdom) => render(el, vdom); // apprun style\n\napp['use_react'] = createRoot => {\n app.render = (el, vdom) => {\n if (!el || !vdom) return;\n if (!el._root) el._root = createRoot(el);\n el._root.render(vdom);\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","self","g","global","getStateValue","component","setStateValue","value","state","setState","directive","vdom","Array","isArray","element","tag","props","children","key","substring","e","handler","p","type","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","window","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","parentElement","_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","resolve","then","v","_state","enable_history","_history","_history_idx","callback","_app","_actions","_global_events","_history_prev","_history_next","start","global_event","prev","next","route","add_actions","is_global_event","add_action","action","current_state","newState","actions","act","split","trim","ROUTER_EVENT","ROUTER_404_EVENT","url","rest","h","webComponent","model","NOOP","addEventListener","onpopstate","location","hash","hasAttribute","createRoot","_root"],"sourceRoot":""}
|
package/esm/apprun.js
CHANGED
|
@@ -47,4 +47,16 @@ if (typeof window === 'object') {
|
|
|
47
47
|
window['customElement'] = customElement;
|
|
48
48
|
window['safeHTML'] = safeHTML;
|
|
49
49
|
}
|
|
50
|
+
app['use_render'] = (render, mode = 0) => mode === 0 ?
|
|
51
|
+
app.render = (el, vdom) => render(vdom, el) : // react style
|
|
52
|
+
app.render = (el, vdom) => render(el, vdom); // apprun style
|
|
53
|
+
app['use_react'] = createRoot => {
|
|
54
|
+
app.render = (el, vdom) => {
|
|
55
|
+
if (!el || !vdom)
|
|
56
|
+
return;
|
|
57
|
+
if (!el._root)
|
|
58
|
+
el._root = createRoot(el);
|
|
59
|
+
el._root.render(vdom);
|
|
60
|
+
};
|
|
61
|
+
};
|
|
50
62
|
//# sourceMappingURL=apprun.js.map
|
package/esm/apprun.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apprun.js","sourceRoot":"","sources":["../src/apprun.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apprun.js","sourceRoot":"","sources":["../src/apprun.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/apprun.ts
CHANGED
|
@@ -70,4 +70,15 @@ if (typeof window === 'object') {
|
|
|
70
70
|
window['safeHTML'] = safeHTML;
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
+
app['use_render'] = (render, mode = 0) =>
|
|
74
|
+
mode === 0 ?
|
|
75
|
+
app.render = (el, vdom) => render(vdom, el) : // react style
|
|
76
|
+
app.render = (el, vdom) => render(el, vdom); // apprun style
|
|
73
77
|
|
|
78
|
+
app['use_react'] = createRoot => {
|
|
79
|
+
app.render = (el, vdom) => {
|
|
80
|
+
if (!el || !vdom) return;
|
|
81
|
+
if (!el._root) el._root = createRoot(el);
|
|
82
|
+
el._root.render(vdom);
|
|
83
|
+
}
|
|
84
|
+
}
|