apprun 3.33.4 → 3.33.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"dist/apprun-play.js","mappings":"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","sources":["webpack://apprun/webpack/universalModuleDefinition","webpack://apprun/./src/app.ts","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","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/apprun-play.tsx"],"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 public use_render;\n public use_react;\n\n constructor() {\n this._events = {};\n }\n\n on(name: string, fn: (...args) => void, options: EventOptions = {}): void {\n this._events[name] = this._events[name] || [];\n this._events[name].push({ fn, options });\n }\n\n off(name: string, fn: (...args) => void): void {\n const subscribers = this._events[name] || [];\n\n this._events[name] = subscribers.filter((sub) => sub.fn !== fn);\n }\n\n find(name: string): any {\n return this._events[name];\n }\n\n run(name: string, ...args): number {\n const subscribers = this.getSubscribers(name, this._events);\n console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);\n subscribers.forEach((sub) => {\n const { fn, options } = sub;\n if (options.delay) {\n this.delay(name, fn, args, options);\n } else {\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n }\n return !sub.options.once;\n });\n\n return subscribers.length;\n }\n\n once(name: string, fn, options: EventOptions = {}): void {\n this.on(name, fn, { ...options, once: true });\n }\n\n private delay(name, fn, args, options): void {\n if (options._t) clearTimeout(options._t);\n options._t = setTimeout(() => {\n clearTimeout(options._t);\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n }, options.delay);\n }\n\n runAsync(name: string, ...args): Promise<any[]> {\n const subscribers = this.getSubscribers(name, this._events);\n console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);\n const promises = subscribers.map(sub => {\n const { fn, options } = sub;\n return Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n });\n return Promise.all(promises);\n }\n\n query(name: string, ...args): Promise<any[]> {\n return this.query(name, ...args);\n }\n\n private getSubscribers(name: string, events) {\n const subscribers = events[name] || [];\n\n // Update the list of subscribers by pulling out those which will run once.\n // We must do this update prior to running any of the events in case they\n // cause additional events to be turned off or on.\n events[name] = subscribers.filter((sub) => {\n return !sub.options.once;\n });\n Object.keys(events).filter(evt => evt.endsWith('*') && name.startsWith(evt.replace('*', '')))\n .sort((a, b) => b.length - a.length)\n .forEach(evt => subscribers.push(...events[evt].map(sub => ({\n ...sub,\n options: { ...sub.options, event: name }\n }))));\n return subscribers;\n }\n}\n\nconst AppRunVersions = 'AppRun-3';\nlet app: App;\nconst root = (typeof self === 'object' && self.self === self && self) ||\n (typeof global === 'object' && global.global === global && global)\nif (root['app'] && root['_AppRunVersions']) {\n app = root['app'];\n} else {\n app = new App();\n root['app'] = app;\n root['_AppRunVersions'] = AppRunVersions;\n}\nexport default app;\n","declare var customElements;\n\nexport type CustomElementOptions = {\n render?: boolean;\n shadow?: boolean;\n history?: boolean;\n global_event?: boolean;\n observedAttributes?: string[];\n};\n\nexport const customElement = (componentClass, options: CustomElementOptions = {}) => class CustomElement extends HTMLElement {\n private _shadowRoot;\n private _component;\n private _attrMap: (arg0: string) => string;\n public on;\n public run;\n constructor() {\n super();\n }\n get component() { return this._component; }\n get state() { return this._component.state; }\n\n static get observedAttributes() {\n // attributes need to be set to lowercase in order to get observed\n return (options.observedAttributes || []).map(attr => attr.toLowerCase());\n }\n\n connectedCallback() {\n if (this.isConnected && !this._component) {\n const opts = options || {};\n this._shadowRoot = opts.shadow ? this.attachShadow({ mode: 'open' }) : this;\n const observedAttributes = (opts.observedAttributes || [])\n\n const attrMap = observedAttributes.reduce((map, name) => {\n const lc = name.toLowerCase()\n if (lc !== name) {\n map[lc] = name\n }\n return map\n }, {})\n this._attrMap = (name: string) : string => attrMap[name] || name\n\n const props = {};\n Array.from(this.attributes).forEach(item => props[this._attrMap(item.name)] = item.value);\n\n // add getters/ setters to allow observation on observedAttributes\n observedAttributes.forEach(name => {\n if (this[name] !== undefined) props[name] = this[name];\n Object.defineProperty(this, name, {\n get(): any {\n return props[name];\n },\n set(this: CustomElement, value: unknown) {\n // trigger change event\n this.attributeChangedCallback(name, props[name], value)\n },\n configurable: true,\n enumerable: true\n });\n })\n\n requestAnimationFrame(() => {\n const children = this.children ? Array.from(this.children) : [];\n // children.forEach(el => el.parentElement.removeChild(el));\n this._component = new componentClass({ ...props, children }).mount(this._shadowRoot, opts);\n // attach props to component\n this._component._props = props;\n // expose dispatchEvent\n this._component.dispatchEvent = this.dispatchEvent.bind(this)\n if (this._component.mounted) {\n const new_state = this._component.mounted(props, children, this._component.state);\n if (typeof new_state !== 'undefined') this._component.state = new_state;\n }\n this.on = this._component.on.bind(this._component);\n this.run = this._component.run.bind(this._component);\n if (!(opts.render === false)) this._component.run('.');\n });\n }\n }\n\n disconnectedCallback() {\n this._component?.unload?.();\n this._component?.unmount?.();\n this._component = null;\n }\n\n attributeChangedCallback(name: string, oldValue: unknown, value: unknown) {\n if (this._component) {\n // camelCase attributes arrive only in lowercase\n const mappedName = this._attrMap(name);\n // store the new property/ attribute\n this._component._props[mappedName] = value;\n this._component.run('attributeChanged', mappedName, oldValue, value);\n\n if (value !== oldValue && !(options.render === false)) {\n window.requestAnimationFrame(() => {\n // re-render state with new combined props on next animation frame\n this._component.run('.')\n })\n }\n }\n }\n}\n\nexport default (name: string, componentClass, options?: CustomElementOptions) => {\n (typeof customElements !== 'undefined') && customElements.define(name, customElement(componentClass, options))\n}\n","import webComponent, { CustomElementOptions } from './web-component';\n\n// tslint:disable:no-invalid-this\nexport const Reflect = {\n\n meta: new WeakMap(),\n\n defineMetadata(metadataKey, metadataValue, target) {\n if (!this.meta.has(target)) this.meta.set(target, {});\n this.meta.get(target)[metadataKey] = metadataValue;\n },\n\n getMetadataKeys(target) {\n target = Object.getPrototypeOf(target);\n return this.meta.get(target) ? Object.keys(this.meta.get(target)) : [];\n },\n\n getMetadata(metadataKey, target) {\n target = Object.getPrototypeOf(target);\n return this.meta.get(target) ? this.meta.get(target)[metadataKey] : null;\n }\n}\n\nexport function update<E=string>(events?: E, options: any = {}) {\n return (target: any, key: string, descriptor: any) => {\n const name = events ? events.toString() : key;\n Reflect.defineMetadata(`apprun-update:${name}`,\n { name, key, options }, target);\n return descriptor;\n }\n}\n\nexport function on<E = string>(events?: E, options: any = {}) {\n return function (target: any, key: string) {\n const name = events ? events.toString() : key;\n Reflect.defineMetadata(`apprun-update:${name}`,\n { name, key, options }, target)\n }\n}\n\nexport function customElement(name: string, options?: CustomElementOptions) {\n return function _customElement<T extends { new(...args: any[]): {} }>(constructor: T) {\n webComponent(name, constructor, options);\n return constructor;\n }\n}\n\n","\r\nimport app, { App } from './app';\r\nimport { Reflect } from './decorator'\r\nimport { View, Update, ActionDef, ActionOptions, MountOptions, EventOptions } from './types';\r\nimport directive from './directive';\r\n\r\nconst componentCache = new Map();\r\nif (!app.find('get-components')) app.on('get-components', o => o.components = componentCache);\r\n\r\nconst REFRESH = state => state;\r\n\r\nexport class Component<T = any, E = any> {\r\n static __isAppRunComponent = true;\r\n private _app = new App();\r\n private _actions = [];\r\n private _global_events = [];\r\n private _state;\r\n private _history = [];\r\n private _history_idx = -1;\r\n private enable_history;\r\n private global_event;\r\n public element;\r\n public rendered;\r\n public mounted;\r\n public unload;\r\n private tracking_id;\r\n private observer;\r\n\r\n\r\n private renderState(state: T, vdom = null) {\r\n if (!this.view) return;\r\n let html = vdom || this.view(state);\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: html ? '.' : '-',\r\n state,\r\n vdom: html,\r\n el: this.element\r\n });\r\n\r\n if (typeof document !== 'object') return;\r\n\r\n const el = (typeof this.element === 'string' && this.element) ?\r\n document.getElementById(this.element) || document.querySelector(this.element) : this.element;\r\n\r\n if (!el) return;\r\n const tracking_attr = '_c';\r\n if (!this.unload) {\r\n el.removeAttribute && el.removeAttribute(tracking_attr);\r\n } else if (el['_component'] !== this || el.getAttribute(tracking_attr) !== this.tracking_id) {\r\n this.tracking_id = new Date().valueOf().toString();\r\n el.setAttribute(tracking_attr, this.tracking_id);\r\n if (typeof MutationObserver !== 'undefined') {\r\n if (!this.observer) this.observer = new MutationObserver(changes => {\r\n if (changes[0].oldValue === this.tracking_id || !document.body.contains(el)) {\r\n this.unload(this.state);\r\n this.observer.disconnect();\r\n this.observer = null;\r\n }\r\n });\r\n this.observer.observe(document.body, {\r\n childList: true, subtree: true,\r\n attributes: true, attributeOldValue: true, attributeFilter: [tracking_attr]\r\n });\r\n }\r\n }\r\n el['_component'] = this;\r\n\r\n if (!vdom && html) {\r\n html = directive(html, this);\r\n if (this.options.transition && document && document['startViewTransition']) {\r\n document['startViewTransition'](() => app.render(el, html, this));\r\n } else {\r\n app.render(el, html, this);\r\n }\r\n }\r\n this.rendered && this.rendered(this.state);\r\n }\r\n\r\n public setState(state: T, options: ActionOptions & EventOptions\r\n = { render: true, history: false }) {\r\n if (state instanceof Promise) {\r\n // Promise will not be saved or rendered\r\n // state will be saved and rendered when promise is resolved\r\n Promise.resolve(state).then(v => {\r\n this.setState(v, options);\r\n this._state = state;\r\n });\r\n } else {\r\n this._state = state;\r\n if (state == null) return;\r\n this.state = state;\r\n if (options.render !== false) {\r\n // before render state\r\n if (options.transition && document && document['startViewTransition']) {\r\n document['startViewTransition'](() => this.renderState(state));\r\n } else {\r\n this.renderState(state);\r\n }\r\n }\r\n if (options.history !== false && this.enable_history) {\r\n this._history = [...this._history, state];\r\n this._history_idx = this._history.length - 1;\r\n }\r\n if (typeof options.callback === 'function') options.callback(this.state);\r\n }\r\n }\r\n\r\n private _history_prev = () => {\r\n this._history_idx--;\r\n if (this._history_idx >= 0) {\r\n this.setState(this._history[this._history_idx], { render: true, history: false });\r\n }\r\n else {\r\n this._history_idx = 0;\r\n }\r\n };\r\n\r\n private _history_next = () => {\r\n this._history_idx++;\r\n if (this._history_idx < this._history.length) {\r\n this.setState(this._history[this._history_idx], { render: true, history: false });\r\n }\r\n else {\r\n this._history_idx = this._history.length - 1;\r\n }\r\n };\r\n\r\n constructor(\r\n protected state?: T,\r\n protected view?: View<T>,\r\n protected update?: Update<T, E>,\r\n protected options?) {\r\n }\r\n\r\n start = (element = null, options?: MountOptions): Component<T, E> => {\r\n this.mount(element, { render: true, ...options });\r\n if (this.mounted && typeof this.mounted === 'function') {\r\n const new_state = this.mounted({}, [], this.state);\r\n (typeof new_state !== 'undefined') && this.setState(new_state);\r\n }\r\n return this;\r\n }\r\n\r\n public mount(element = null, options?: MountOptions): Component<T, E> {\r\n console.assert(!this.element, 'Component already mounted.')\r\n this.options = options = { ...this.options, ...options };\r\n this.element = element;\r\n this.global_event = options.global_event;\r\n this.enable_history = !!options.history;\r\n\r\n if (this.enable_history) {\r\n this.on(options.history.prev || 'history-prev', this._history_prev);\r\n this.on(options.history.next || 'history-next', this._history_next);\r\n }\r\n\r\n if (options.route) {\r\n this.update = this.update || {};\r\n if (!this.update[options.route]) this.update[options.route] = REFRESH;\r\n }\r\n\r\n this.add_actions();\r\n this.state = this.state ?? this['model'] ?? {};\r\n if (typeof this.state === 'function') this.state = this.state();\r\n\r\n this.setState(this.state, { render: !!options.render, history: true });\r\n\r\n if (app['debug']) {\r\n if (componentCache.get(element)) { componentCache.get(element).push(this) }\r\n else { componentCache.set(element, [this]) }\r\n }\r\n return this;\r\n }\r\n\r\n is_global_event(name: string): boolean {\r\n return name && (\r\n this.global_event ||\r\n this._global_events.indexOf(name) >= 0 ||\r\n name.startsWith('#') || name.startsWith('/') || name.startsWith('@'));\r\n }\r\n\r\n add_action(name: string, action, options: ActionOptions = {}) {\r\n if (!action || typeof action !== 'function') return;\r\n if (options.global) this._global_events.push(name);\r\n this.on(name as any, (...p) => {\r\n\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: '>',\r\n event: name, p,\r\n current_state: this.state,\r\n options\r\n });\r\n\r\n const newState = action(this.state, ...p);\r\n\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: '<',\r\n event: name, p,\r\n newState,\r\n state: this.state,\r\n options\r\n });\r\n\r\n this.setState(newState, options)\r\n }, options);\r\n }\r\n\r\n add_actions() {\r\n const actions = this.update || {};\r\n Reflect.getMetadataKeys(this).forEach(key => {\r\n if (key.startsWith('apprun-update:')) {\r\n const meta = Reflect.getMetadata(key, this)\r\n actions[meta.name] = [this[meta.key].bind(this), meta.options];\r\n }\r\n })\r\n\r\n const all = {};\r\n if (Array.isArray(actions)) {\r\n actions.forEach(act => {\r\n const [name, action, opts] = act as ActionDef<T, E>;\r\n const names = name.toString();\r\n names.split(',').forEach(n => all[n.trim()] = [action, opts])\r\n })\r\n } else {\r\n Object.keys(actions).forEach(name => {\r\n const action = actions[name];\r\n if (typeof action === 'function' || Array.isArray(action)) {\r\n name.split(',').forEach(n => all[n.trim()] = action)\r\n }\r\n })\r\n }\r\n\r\n if (!all['.']) all['.'] = REFRESH;\r\n Object.keys(all).forEach(name => {\r\n const action = all[name];\r\n if (typeof action === 'function') {\r\n this.add_action(name, action);\r\n } else if (Array.isArray(action)) {\r\n this.add_action(name, action[0], action[1]);\r\n }\r\n });\r\n }\r\n\r\n public run(event: E, ...args) {\r\n if (this.state instanceof Promise) {\r\n return Promise.resolve(this.state).then(state => {\r\n this.state = state;\r\n this.run(event, ...args)\r\n });\r\n } else {\r\n const name = event.toString();\r\n return this.is_global_event(name) ?\r\n app.run(name, ...args) :\r\n this._app.run(name, ...args);\r\n }\r\n }\r\n\r\n public on(event: E, fn: (...args) => void, options?: any) {\r\n const name = event.toString();\r\n this._actions.push({ name, fn });\r\n return this.is_global_event(name) ?\r\n app.on(name, fn, options) :\r\n this._app.on(name, fn, options);\r\n }\r\n\r\n public runAsync(event: E, ...args) {\r\n const name = event.toString();\r\n return this.is_global_event(name) ?\r\n app.runAsync(name, ...args) :\r\n this._app.runAsync(name, ...args);\r\n }\r\n\r\n // obsolete\r\n public query(event: E, ...args) {\r\n return this.runAsync(event, ...args);\r\n }\r\n\r\n public unmount() {\r\n this.observer?.disconnect();\r\n this._actions.forEach(action => {\r\n const { name, fn } = action;\r\n this.is_global_event(name) ?\r\n app.off(name, fn) :\r\n this._app.off(name, fn);\r\n });\r\n }\r\n}\r\n","import app from './app';\n\nexport type Route = (url: string, ...args: any[]) => any;\n\nexport const ROUTER_EVENT: string = '//';\nexport const ROUTER_404_EVENT: string = '///';\n\nexport const route: Route = (url: string) => {\n if (!url) url = '#';\n if (url.startsWith('#')) {\n const [name, ...rest] = url.split('/');\n app.run(name, ...rest) || app.run(ROUTER_404_EVENT, name, ...rest);\n app.run(ROUTER_EVENT, name, ...rest);\n } else if (url.startsWith('/')) {\n const [_, name, ...rest] = url.split('/');\n app.run('/' + name, ...rest) || app.run(ROUTER_404_EVENT, '/' + name, ...rest);\n app.run(ROUTER_EVENT, '/' + name, ...rest);\n } else {\n app.run(url) || app.run(ROUTER_404_EVENT, url);\n app.run(ROUTER_EVENT, url);\n }\n}\nexport default route;","import app, { App } from './app';\nimport { createElement, render, Fragment, safeHTML } from './vdom';\nimport { Component } from './component';\nimport { VNode, View, Action, Update, EventOptions, ActionOptions, MountOptions, AppStartOptions } from './types';\nimport { on, update, customElement } from './decorator';\nimport webComponent, { CustomElementOptions } from './web-component';\nimport { Route, route, ROUTER_EVENT, ROUTER_404_EVENT } from './router';\n\nexport interface IApp {\n start<T, E = any>(element?: Element | string, model?: T, view?: View<T>, update?: Update<T, E>,\n options?: AppStartOptions<T>): Component<T, E>;\n on(name: string, fn: (...args: any[]) => void, options?: any): void;\n off(name: string, fn: (...args: any[]) => void): void;\n run(name: string, ...args: any[]): number;\n find(name: string): any | any[];\n h(tag: string | Function, props, ...children): VNode | VNode[];\n createElement(tag: string | Function, props, ...children): VNode | VNode[];\n render(element: Element | string, node: VNode): void;\n Fragment(props, ...children): any[];\n route?: Route;\n webComponent(name: string, componentClass, options?: CustomElementOptions): void;\n safeHTML(html: string): any[];\n use_render(render, mode?: 0 | 1);\n use_react(createRoot);\n}\n\napp.h = app.createElement = createElement;\napp.render = render;\napp.Fragment = Fragment;\napp.webComponent = webComponent;\napp.safeHTML = safeHTML;\n\napp.start = <T, E = any>(element?: Element | string, model?: T, view?: View<T>, update?: Update<T, E>,\n options?: AppStartOptions<T>): Component<T, E> => {\n const opts = { render: true, global_event: true, ...options };\n const component = new Component<T, E>(model, view, update);\n if (options && options.rendered) component.rendered = options.rendered;\n if (options && options.mounted) component.mounted = options.mounted;\n component.start(element, opts);\n return component;\n};\n\nconst NOOP = _ => {/* Intentionally empty */ }\napp.on('$', NOOP);\napp.on('debug', _ => NOOP);\napp.on(ROUTER_EVENT, NOOP);\napp.on('#', NOOP);\napp['route'] = route;\napp.on('route', url => app['route'] && app['route'](url));\n\nif (typeof document === 'object') {\n document.addEventListener(\"DOMContentLoaded\", () => {\n if (app['route'] === route) {\n window.onpopstate = () => route(location.hash);\n document.body.hasAttribute('apprun-no-init') || app['no-init-route'] || route(location.hash);\n }\n });\n}\nexport type StatelessComponent<T = {}> = (args: T) => string | VNode | void;\nexport { App, app, Component, View, Action, Update, on, update, EventOptions, ActionOptions, MountOptions, Fragment, safeHTML }\nexport { update as event };\nexport { ROUTER_EVENT, ROUTER_404_EVENT };\nexport { customElement, CustomElementOptions, AppStartOptions };\nexport default app as IApp;\n\nif (typeof window === 'object') {\n window['Component'] = Component;\n window['_React'] = window['React'];\n window['React'] = app;\n window['on'] = on;\n window['customElement'] = customElement;\n window['safeHTML'] = safeHTML;\n}\n\napp.use_render = (render, mode = 0) =>\n mode === 0 ?\n app.render = (el, vdom) => render(vdom, el) : // react style\n app.render = (el, vdom) => render(el, vdom); // apprun style\n\napp.use_react = (React, ReactDOM) => {\n app.h = app.createElement = React.createElement;\n app.Fragment = React.Fragment;\n app.render = (el, vdom) => ReactDOM.render(vdom, el);\n if (React.version && React.version.startsWith('18')) {\n app.render = (el, vdom) => {\n if (!el || !vdom) return;\n if (!el._root) el._root = ReactDOM.createRoot(el);\n el._root.render(vdom);\n }\n }\n}\n","import app from './app';\n\nconst getStateValue = (component, name) => {\n return (name ? component['state'][name] : component['state']) || '';\n}\n\nconst setStateValue = (component, name, value) => {\n if (name) {\n const state = component['state'] || {};\n state[name] = value;\n component.setState(state);\n } else {\n component.setState(value);\n }\n}\n\nconst apply_directive = (key: string, props: {}, tag, component) => {\n if (key.startsWith('$on')) {\n const event = props[key];\n key = key.substring(1)\n if (typeof event === 'boolean') {\n props[key] = e => component.run ? component.run(key, e) : app.run(key, e);\n } else if (typeof event === 'string') {\n props[key] = e => component.run ? component.run(event, e) : app.run(event, e);\n } else if (typeof event === 'function') {\n props[key] = e => component.setState(event(component.state, e));\n } else if (Array.isArray(event)) {\n const [handler, ...p] = event;\n if (typeof handler === 'string') {\n props[key] = e => component.run ? component.run(handler, ...p, e) : app.run(handler, ...p, e);\n } else if (typeof handler === 'function') {\n props[key] = e => component.setState(handler(component.state, ...p, e));\n }\n }\n\n } else if (key === '$bind') {\n const type = props['type'] || 'text';\n const name = typeof props[key] === 'string' ? props[key] : props['name'];\n if (tag === 'input') {\n switch (type) {\n case 'checkbox':\n props['checked'] = getStateValue(component, name);\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.checked);\n break;\n case 'radio':\n props['checked'] = getStateValue(component, name) === props['value'];\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.value);\n break;\n case 'number':\n case 'range':\n props['value'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, Number(e.target.value));\n break;\n default:\n props['value'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, e.target.value);\n }\n } else if (tag === 'select') {\n props['value'] = getStateValue(component, name);\n props['onchange'] = e => {\n if (!e.target.multiple) { // multiple selection use $bind on option\n setStateValue(component, name || e.target.name, e.target.value);\n }\n }\n } else if (tag === 'option') {\n props['selected'] = getStateValue(component, name);\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.selected);\n } else if (tag === 'textarea') {\n props['innerHTML'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, e.target.value);\n }\n } else {\n app.run('$', { key, tag, props, component });\n }\n}\n\nconst directive = (vdom, component) => {\n if (Array.isArray(vdom)) {\n return vdom.map(element => directive(element, component));\n } else {\n let { type, tag, props, children } = vdom;\n tag = tag || type;\n children = children || props?.children;\n if (props) Object.keys(props).forEach(key => {\n if (key.startsWith('$')) {\n apply_directive(key, props, tag, component);\n delete props[key];\n }\n });\n if (children) directive(children, component);\n return vdom;\n }\n}\n\nexport default directive;","import { VDOM, VNode } from './types';\nimport directive from './directive';\nexport type Element = any; //HTMLElement | SVGSVGElement | SVGElement;\n\nexport function Fragment(props, ...children): any[] {\n return collect(children);\n}\n\nconst ATTR_PROPS = '_props';\n\nfunction collect(children) {\n const ch = [];\n const push = (c) => {\n if (c !== null && c !== undefined && c !== '' && c !== false) {\n ch.push((typeof c === 'function' || typeof c === 'object') ? c : `${c}`);\n }\n }\n children && children.forEach(c => {\n if (Array.isArray(c)) {\n c.forEach(i => push(i));\n } else {\n push(c);\n }\n });\n return ch;\n}\n\nexport function createElement(tag: string | Function | [], props?: {}, ...children) {\n const ch = collect(children);\n if (typeof tag === 'string') return { tag, props, children: ch };\n else if (Array.isArray(tag)) return tag; // JSX fragments - babel\n else if (tag === undefined && children) return ch; // JSX fragments - typescript\n else if (Object.getPrototypeOf(tag).__isAppRunComponent) return { tag, props, children: ch } // createComponent(tag, { ...props, children });\n else if (typeof tag === 'function') return tag(props, ch);\n else throw new Error(`Unknown tag in vdom ${tag}`);\n};\n\nconst keyCache = new WeakMap();\n\nexport const updateElement = (element: Element | string, nodes: VDOM, component = {}) => {\n // tslint:disable-next-line\n if (nodes == null || nodes === false) return;\n const el = (typeof element === 'string' && element) ?\n document.getElementById(element) || document.querySelector(element) : element;\n nodes = directive(nodes, component);\n render(el, nodes, component);\n}\n\nfunction render(element: Element, nodes: VDOM, parent = {}) {\n // tslint:disable-next-line\n if (nodes == null || nodes === false) return;\n nodes = createComponent(nodes, parent);\n if (!element) return;\n const isSvg = element.nodeName === \"SVG\";\n if (Array.isArray(nodes)) {\n updateChildren(element, nodes, isSvg);\n } else {\n updateChildren(element, [nodes], isSvg);\n }\n}\n\nfunction same(el: Element, node: VNode) {\n // if (!el || !node) return false;\n const key1 = el.nodeName;\n const key2 = `${node.tag || ''}`;\n return key1.toUpperCase() === key2.toUpperCase();\n}\n\nfunction update(element: Element, node: VNode, isSvg: boolean) {\n if (node['_op'] === 3) return;\n // console.assert(!!element);\n isSvg = isSvg || node.tag === \"svg\";\n if (!same(element, node)) {\n element.parentNode.replaceChild(create(node, isSvg), element);\n return;\n }\n !(node['_op'] & 2) && updateChildren(element, node.children, isSvg);\n !(node['_op'] & 1) && updateProps(element, node.props, isSvg);\n}\n\nfunction updateChildren(element, children, isSvg: boolean) {\n const old_len = element.childNodes?.length || 0;\n const new_len = children?.length || 0;\n const len = Math.min(old_len, new_len);\n for (let i = 0; i < len; i++) {\n const child = children[i];\n if (child['_op'] === 3) continue;\n const el = element.childNodes[i];\n if (typeof child === 'string') {\n if (el.textContent !== child) {\n if (el.nodeType === 3) {\n el.nodeValue = child\n } else {\n element.replaceChild(createText(child), el);\n }\n }\n } else if (child instanceof HTMLElement || child instanceof SVGElement) {\n element.insertBefore(child, el);\n } else {\n const key = child.props && child.props['key'];\n if (key) {\n if (el.key === key) {\n update(element.childNodes[i], child, isSvg);\n } else {\n // console.log(el.key, key);\n const old = keyCache[key];\n if (old) {\n const temp = old.nextSibling;\n element.insertBefore(old, el);\n temp ? element.insertBefore(el, temp) : element.appendChild(el);\n update(element.childNodes[i], child, isSvg);\n } else {\n element.replaceChild(create(child, isSvg), el);\n }\n }\n } else {\n update(element.childNodes[i], child, isSvg);\n }\n }\n }\n\n let n = element.childNodes?.length || 0;\n while (n > len) {\n element.removeChild(element.lastChild);\n n--;\n }\n\n if (new_len > len) {\n const d = document.createDocumentFragment();\n for (let i = len; i < children.length; i++) {\n d.appendChild(create(children[i], isSvg));\n }\n element.appendChild(d);\n }\n}\n\nexport const safeHTML = (html: string) => {\n const div = document.createElement('section');\n div.insertAdjacentHTML('afterbegin', html)\n return Array.from(div.children);\n}\n\nfunction createText(node) {\n if (node?.indexOf('_html:') === 0) { // ?\n const div = document.createElement('div');\n div.insertAdjacentHTML('afterbegin', node.substring(6))\n return div;\n } else {\n return document.createTextNode(node??'');\n }\n}\n\nfunction create(node: VNode | string | HTMLElement | SVGElement, isSvg: boolean): Element {\n // console.assert(node !== null && node !== undefined);\n if ((node instanceof HTMLElement) || (node instanceof SVGElement)) return node;\n if (typeof node === \"string\") return createText(node);\n if (!node.tag || (typeof node.tag === 'function')) return createText(JSON.stringify(node));\n isSvg = isSvg || node.tag === \"svg\";\n const element = isSvg\n ? document.createElementNS(\"http://www.w3.org/2000/svg\", node.tag)\n : document.createElement(node.tag);\n\n updateProps(element, node.props, isSvg);\n if (node.children) node.children.forEach(child => element.appendChild(create(child, isSvg)));\n return element\n}\n\nfunction mergeProps(oldProps: {}, newProps: {}): {} {\n newProps['class'] = newProps['class'] || newProps['className'];\n delete newProps['className'];\n const props = {};\n if (oldProps) Object.keys(oldProps).forEach(p => props[p] = null);\n if (newProps) Object.keys(newProps).forEach(p => props[p] = newProps[p]);\n return props;\n}\n\nexport function updateProps(element: Element, props: {}, isSvg) {\n // console.assert(!!element);\n const cached = element[ATTR_PROPS] || {};\n props = mergeProps(cached, props || {});\n element[ATTR_PROPS] = props;\n\n for (const name in props) {\n const value = props[name];\n // if (cached[name] === value) continue;\n // console.log('updateProps', name, value);\n if (name.startsWith('data-')) {\n const dname = name.substring(5);\n const cname = dname.replace(/-(\\w)/g, (match) => match[1].toUpperCase());\n if (element.dataset[cname] !== value) {\n if (value || value === \"\") element.dataset[cname] = value;\n else delete element.dataset[cname];\n }\n } else if (name === 'style') {\n if (element.style.cssText) element.style.cssText = '';\n if (typeof value === 'string') element.style.cssText = value;\n else {\n for (const s in value) {\n if (element.style[s] !== value[s]) element.style[s] = value[s];\n }\n }\n } else if (name.startsWith('xlink')) {\n const xname = name.replace('xlink', '').toLowerCase();\n if (value == null || value === false) {\n element.removeAttributeNS('http://www.w3.org/1999/xlink', xname);\n } else {\n element.setAttributeNS('http://www.w3.org/1999/xlink', xname, value);\n }\n } else if (name.startsWith('on')) {\n if (!value || typeof value === 'function') {\n element[name] = value;\n } else if (typeof value === 'string') {\n if (value) element.setAttribute(name, value);\n else element.removeAttribute(name);\n }\n } else if (/^id$|^class$|^list$|^readonly$|^contenteditable$|^role|-|^for$/g.test(name) || isSvg) {\n if (element.getAttribute(name) !== value) {\n if (value) element.setAttribute(name, value);\n else element.removeAttribute(name);\n }\n } else if (element[name] !== value) {\n element[name] = value;\n }\n if (name === 'key' && value) keyCache[value] = element;\n }\n if (props && typeof props['ref'] === 'function') {\n window.requestAnimationFrame(() => props['ref'](element));\n }\n}\n\nfunction render_component(node, parent, idx) {\n const { tag, props, children } = node;\n let key = `_${idx}`;\n let id = props && props['id'];\n if (!id) id = `_${idx}${Date.now()}`;\n else key = id;\n let asTag = 'section';\n if (props && props['as']) {\n asTag = props['as'];\n delete props['as'];\n }\n if (!parent.__componentCache) parent.__componentCache = {};\n let component = parent.__componentCache[key];\n if (!component || !(component instanceof tag) || !component.element) {\n const element = document.createElement(asTag);\n component = parent.__componentCache[key] = new tag({ ...props, children }).mount(element, { render: true });\n } else {\n component.renderState(component.state);\n }\n if (component.mounted) {\n const new_state = component.mounted(props, children, component.state);\n (typeof new_state !== 'undefined') && component.setState(new_state);\n }\n updateProps(component.element, props, false);\n return component.element;\n}\n\nfunction createComponent(node, parent, idx = 0) {\n if (typeof node === 'string') return node;\n if (Array.isArray(node)) return node.map(child => createComponent(child, parent, idx++));\n let vdom = node;\n if (node && typeof node.tag === 'function' && Object.getPrototypeOf(node.tag).__isAppRunComponent) {\n vdom = render_component(node, parent, idx);\n }\n if (vdom && Array.isArray(vdom.children)) {\n const new_parent = vdom.props?._component;\n if (new_parent) {\n let i = 0;\n vdom.children = vdom.children.map(child => createComponent(child, new_parent, i++));\n } else {\n vdom.children = vdom.children.map(child => createComponent(child, parent, idx++));\n }\n }\n return vdom;\n}\n","// 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};","import { app, Component } from './apprun';\n\nconst popup_div = `<div id=\"play-popup\" class=\"overlay\">\n<style id=\"apprun-play-style\">\n.apprun-play .col {\n height: 100%;\n flex: 1;\n}\n.apprun-preview {\n width: 100%\n}\n.apprun-play .editor, .apprun-play .preview {\n display: inline-block;\n width: calc(100% - 20px);\n height: calc(100% - 10px);\n}\n\na.button {\n font-size: .8em;\n padding: 10px;\n cursor: pointer;\n color: var(--md-primary-bg-color);\n background: var(--md-primary-fg-color)\n}\na.button:hover {\n color: var(--md-primary-fg-color);\n background: var(--md-primary-bg-color)\n}\n\n.overlay {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: rgba(0, 0, 0, 0.7);\n visibility: hidden;\n opacity: 0;\n z-index: 999;\n}\n.overlay.show {\n visibility: visible;\n opacity: 1;\n}\n\n.popup {\n margin: 80px auto;\n padding: 20px;\n background: #fff;\n border-radius: 3px;\n position: relative;\n width: 90%;\n height: calc(100% - 150px);\n}\n\n.popup .close {\n position: absolute;\n top: 10px;\n right: 20px;\n font-size: 20px;\n font-weight: bold;\n text-decoration: none;\n color: #333;\n}\n.popup .close:hover {\n color: #06D85F;\n}\n.popup .content {\n height: 100%;\n overflow: hidden;\n display: flex;\n}\n\n.cm-s-default {\n height: 100%;\n font-size: small;\n line-height: 1.5em;\n z-index: 0;\n}\n</style>\n\n\t<div class=\"popup apprun-play\">\n\t\t<a class=\"close\" href=\"javascript:app.run('@close-popup')\">&times;</a>\n\t\t<div class=\"content\">\n\t\t\t<div class=\"col\">\n <textarea class=\"editor\"></textarea>\n </div>\n <div class=\"col\">\n <iframe class=\"preview\"/>\n </div>\n </div>\n\t</div>\n</div>`;\n\nconst code_html = code => `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\">\n <script src=\"https://cdnjs.cloudflare.com/ajax/libs/custom-elements/1.1.2/custom-elements.min.js\"></script>\n <title>AppRun Playground</title>\n <style>\n body {\n font-family: \"Benton Sans\", \"Helvetica Neue\", helvetica, arial, sans-serif;\n margin: 2em;\n }\n </style>\n <script src=\"https://unpkg.com/@babel/standalone/babel.min.js\"></script>\n <script src=\"https://unpkg.com/apprun/dist/apprun-html.js\"></script>\n</head>\n<body>\n<script>\n Babel.registerPlugin(\"d\", [Babel.availablePlugins[\"proposal-decorators\"], {legacy: true}]);\n Babel.registerPlugin(\"c\", [Babel.availablePlugins[\"proposal-class-properties\"], {loose: true}]);\n Babel.registerPlugin(\"b\", [Babel.availablePlugins[\"proposal-private-methods\"], {loose: true}]);\n</script>\n<script type=\"text/babel\" data-plugins=\"d, c, b\">\n ${code}\n</script>\n</body>\n</html>`;\n\ndeclare var CodeMirror;\n\nconst setup_editor = (textarea, iframe, code, hide_src) => {\n\n if (!iframe || !code) return;\n\n const run_code = code => {\n const iframe_clone = iframe.cloneNode();\n iframe.parentNode?.replaceChild(iframe_clone, iframe);\n iframe = iframe_clone;\n const doc = iframe.contentWindow?.document;\n if (!doc) return;\n doc.open();\n if (code.indexOf('<html') >= 0)\n doc.write(code);\n else\n doc.write(code_html(code));\n doc.close();\n }\n\n run_code(code);\n\n if (hide_src || !textarea || textarea.nodeName !== 'TEXTAREA') return;\n if (typeof CodeMirror === 'undefined') {\n textarea.onkeyup = () => run_code(textarea.value);\n } else {\n if (!textarea.editor) {\n textarea.editor = CodeMirror.fromTextArea(textarea, {\n lineNumbers: true,\n mode: 'jsx'\n });\n textarea.editor.on('change', (cm) => run_code(cm.getValue()));\n }\n }\n}\n\nclass Play extends Component {\n view = (state) => {\n const code_id = state['code-element-id'];\n const element = this.element;\n let code_area, code;\n if (code_id) {\n code_area = document.getElementById(code_id);\n } else {\n code_area = element.previousElementSibling ||\n element.parentElement.previousElementSibling;\n }\n code = code_area?.innerText // from div-code\n || code_area?.value // from textarea\n || state['code']; // from code attr\n\n this.state.code_area = code_area;\n this.state.code = code;\n\n return code ? <>\n <div class=\"toolbox\">\n {!state.hide_button && <a class=\"button\" $onclick=\"show-popup\">Try the Code</a>}\n </div></>\n : <div>AppRun Play cannot find code to run, please set code-element-id or code.</div>\n };\n\n rendered = ({ style, hide_src, code_area, code }) => {\n if (!code) return;\n if (!document.getElementById('play-popup')) {\n document.body.insertAdjacentHTML('beforeend', popup_div);\n const textarea = document.querySelector(\".apprun-play .editor\") as any;\n const iframe = document.querySelector('.apprun-play .preview');\n textarea.value = code;\n setup_editor(textarea, iframe, code, false);\n }\n const iframe = document.createElement('iframe');\n iframe.classList.add('apprun-preview');\n iframe.style.cssText = style;\n this.element.before(iframe);\n if (hide_src) code_area.style.display = 'none';\n setup_editor(code_area, iframe, code, hide_src);\n }\n\n update = {\n 'show-popup': ({ code }) => {\n const textarea = document.querySelector(\".apprun-play .editor\") as any;\n textarea.editor?.setValue(code);\n document.getElementById('play-popup').classList.add('show');\n },\n '@close-popup': () => { document.getElementById('play-popup').classList.remove('show') },\n }\n}\n\napp.webComponent('apprun-play', Play);\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","customElement","componentClass","HTMLElement","super","component","_component","state","observedAttributes","attr","toLowerCase","connectedCallback","isConnected","opts","_shadowRoot","shadow","attachShadow","mode","attrMap","reduce","lc","_attrMap","props","Array","from","attributes","item","value","undefined","defineProperty","get","set","attributeChangedCallback","configurable","enumerable","requestAnimationFrame","children","mount","_props","dispatchEvent","bind","mounted","new_state","render","disconnectedCallback","unload","unmount","oldValue","mappedName","window","customElements","Reflect","meta","WeakMap","defineMetadata","metadataKey","metadataValue","target","has","getMetadataKeys","getPrototypeOf","getMetadata","componentCache","Map","o","components","REFRESH","Component","renderState","vdom","view","html","_","el","element","document","getElementById","querySelector","tracking_attr","getAttribute","tracking_id","Date","valueOf","toString","setAttribute","MutationObserver","observer","changes","body","contains","disconnect","observe","childList","subtree","attributeOldValue","attributeFilter","removeAttribute","directive","transition","rendered","setState","history","resolve","then","v","_state","enable_history","_history","_history_idx","callback","update","_app","_actions","_global_events","_history_prev","_history_next","start","global_event","prev","next","route","add_actions","is_global_event","indexOf","add_action","action","p","current_state","newState","actions","key","isArray","act","split","n","trim","__isAppRunComponent","ROUTER_EVENT","ROUTER_404_EVENT","url","rest","h","createElement","Fragment","webComponent","safeHTML","model","NOOP","addEventListener","onpopstate","location","hash","hasAttribute","use_render","use_react","React","ReactDOM","version","_root","createRoot","getStateValue","setStateValue","type","tag","substring","e","handler","checked","Number","multiple","selected","apply_directive","collect","ATTR_PROPS","ch","c","i","Error","keyCache","updateElement","nodes","parent","createComponent","isSvg","nodeName","updateChildren","node","key1","key2","toUpperCase","same","updateProps","parentNode","replaceChild","create","old_len","childNodes","new_len","len","Math","min","child","textContent","nodeType","nodeValue","createText","SVGElement","insertBefore","old","temp","nextSibling","appendChild","removeChild","lastChild","d","createDocumentFragment","div","insertAdjacentHTML","createTextNode","JSON","stringify","createElementNS","cached","oldProps","newProps","mergeProps","cname","match","dataset","style","cssText","s","xname","removeAttributeNS","setAttributeNS","test","idx","id","now","asTag","__componentCache","render_component","new_parent","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","globalThis","Function","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","setup_editor","textarea","iframe","code","hide_src","run_code","iframe_clone","cloneNode","doc","contentWindow","open","write","code_html","close","CodeMirror","onkeyup","editor","fromTextArea","lineNumbers","cm","getValue","Play","code_id","code_area","previousElementSibling","parentElement","innerText","class","hide_button","classList","add","before","display","setValue","remove"],"sourceRoot":""}
1
+ {"version":3,"file":"dist/apprun-play.js","mappings":"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","sources":["webpack://apprun/webpack/universalModuleDefinition","webpack://apprun/./src/app.ts","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","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/apprun-play.tsx"],"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 _events: Object;\n\n public start;\n public h;\n public createElement;\n public render;\n public Fragment;\n public webComponent;\n public safeHTML;\n public use_render;\n public use_react;\n\n constructor() {\n this._events = {};\n }\n\n on(name: string, fn: (...args) => void, options: EventOptions = {}): void {\n this._events[name] = this._events[name] || [];\n this._events[name].push({ fn, options });\n }\n\n off(name: string, fn: (...args) => void): void {\n const subscribers = this._events[name] || [];\n\n this._events[name] = subscribers.filter((sub) => sub.fn !== fn);\n }\n\n find(name: string): any {\n return this._events[name];\n }\n\n run(name: string, ...args): number {\n const subscribers = this.getSubscribers(name, this._events);\n console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);\n subscribers.forEach((sub) => {\n const { fn, options } = sub;\n if (options.delay) {\n this.delay(name, fn, args, options);\n } else {\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n }\n return !sub.options.once;\n });\n\n return subscribers.length;\n }\n\n once(name: string, fn, options: EventOptions = {}): void {\n this.on(name, fn, { ...options, once: true });\n }\n\n private delay(name, fn, args, options): void {\n if (options._t) clearTimeout(options._t);\n options._t = setTimeout(() => {\n clearTimeout(options._t);\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n }, options.delay);\n }\n\n runAsync(name: string, ...args): Promise<any[]> {\n const subscribers = this.getSubscribers(name, this._events);\n console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);\n const promises = subscribers.map(sub => {\n const { fn, options } = sub;\n return Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n });\n return Promise.all(promises);\n }\n\n query(name: string, ...args): Promise<any[]> {\n return this.query(name, ...args);\n }\n\n private getSubscribers(name: string, events) {\n const subscribers = events[name] || [];\n\n // Update the list of subscribers by pulling out those which will run once.\n // We must do this update prior to running any of the events in case they\n // cause additional events to be turned off or on.\n events[name] = subscribers.filter((sub) => {\n return !sub.options.once;\n });\n Object.keys(events).filter(evt => evt.endsWith('*') && name.startsWith(evt.replace('*', '')))\n .sort((a, b) => b.length - a.length)\n .forEach(evt => subscribers.push(...events[evt].map(sub => ({\n ...sub,\n options: { ...sub.options, event: name }\n }))));\n return subscribers;\n }\n}\n\nconst AppRunVersions = 'AppRun-3';\nlet app: App;\nconst root = (typeof self === 'object' && self.self === self && self) ||\n (typeof global === 'object' && global.global === global && global)\nif (root['app'] && root['_AppRunVersions']) {\n app = root['app'];\n} else {\n app = new App();\n root['app'] = app;\n root['_AppRunVersions'] = AppRunVersions;\n}\nexport default app;\n","declare var customElements;\n\nexport type CustomElementOptions = {\n render?: boolean;\n shadow?: boolean;\n history?: boolean;\n global_event?: boolean;\n observedAttributes?: string[];\n};\n\nexport const customElement = (componentClass, options: CustomElementOptions = {}) => class CustomElement extends HTMLElement {\n private _shadowRoot;\n private _component;\n private _attrMap: (arg0: string) => string;\n public on;\n public run;\n constructor() {\n super();\n }\n get component() { return this._component; }\n get state() { return this._component.state; }\n\n static get observedAttributes() {\n // attributes need to be set to lowercase in order to get observed\n return (options.observedAttributes || []).map(attr => attr.toLowerCase());\n }\n\n connectedCallback() {\n if (this.isConnected && !this._component) {\n const opts = options || {};\n this._shadowRoot = opts.shadow ? this.attachShadow({ mode: 'open' }) : this;\n const observedAttributes = (opts.observedAttributes || [])\n\n const attrMap = observedAttributes.reduce((map, name) => {\n const lc = name.toLowerCase()\n if (lc !== name) {\n map[lc] = name\n }\n return map\n }, {})\n this._attrMap = (name: string) : string => attrMap[name] || name\n\n const props = {};\n Array.from(this.attributes).forEach(item => props[this._attrMap(item.name)] = item.value);\n\n // add getters/ setters to allow observation on observedAttributes\n observedAttributes.forEach(name => {\n if (this[name] !== undefined) props[name] = this[name];\n Object.defineProperty(this, name, {\n get(): any {\n return props[name];\n },\n set(this: CustomElement, value: unknown) {\n // trigger change event\n this.attributeChangedCallback(name, props[name], value)\n },\n configurable: true,\n enumerable: true\n });\n })\n\n requestAnimationFrame(() => {\n const children = this.children ? Array.from(this.children) : [];\n // children.forEach(el => el.parentElement.removeChild(el));\n this._component = new componentClass({ ...props, children }).mount(this._shadowRoot, opts);\n // attach props to component\n this._component._props = props;\n // expose dispatchEvent\n this._component.dispatchEvent = this.dispatchEvent.bind(this)\n if (this._component.mounted) {\n const new_state = this._component.mounted(props, children, this._component.state);\n if (typeof new_state !== 'undefined') this._component.state = new_state;\n }\n this.on = this._component.on.bind(this._component);\n this.run = this._component.run.bind(this._component);\n if (!(opts.render === false)) this._component.run('.');\n });\n }\n }\n\n disconnectedCallback() {\n this._component?.unload?.();\n this._component?.unmount?.();\n this._component = null;\n }\n\n attributeChangedCallback(name: string, oldValue: unknown, value: unknown) {\n if (this._component) {\n // camelCase attributes arrive only in lowercase\n const mappedName = this._attrMap(name);\n // store the new property/ attribute\n this._component._props[mappedName] = value;\n this._component.run('attributeChanged', mappedName, oldValue, value);\n\n if (value !== oldValue && !(options.render === false)) {\n window.requestAnimationFrame(() => {\n // re-render state with new combined props on next animation frame\n this._component.run('.')\n })\n }\n }\n }\n}\n\nexport default (name: string, componentClass, options?: CustomElementOptions) => {\n (typeof customElements !== 'undefined') && customElements.define(name, customElement(componentClass, options))\n}\n","import webComponent, { CustomElementOptions } from './web-component';\n\n// tslint:disable:no-invalid-this\nexport const Reflect = {\n\n meta: new WeakMap(),\n\n defineMetadata(metadataKey, metadataValue, target) {\n if (!this.meta.has(target)) this.meta.set(target, {});\n this.meta.get(target)[metadataKey] = metadataValue;\n },\n\n getMetadataKeys(target) {\n target = Object.getPrototypeOf(target);\n return this.meta.get(target) ? Object.keys(this.meta.get(target)) : [];\n },\n\n getMetadata(metadataKey, target) {\n target = Object.getPrototypeOf(target);\n return this.meta.get(target) ? this.meta.get(target)[metadataKey] : null;\n }\n}\n\nexport function update<E=string>(events?: E, options: any = {}) {\n return (target: any, key: string, descriptor: any) => {\n const name = events ? events.toString() : key;\n Reflect.defineMetadata(`apprun-update:${name}`,\n { name, key, options }, target);\n return descriptor;\n }\n}\n\nexport function on<E = string>(events?: E, options: any = {}) {\n return function (target: any, key: string) {\n const name = events ? events.toString() : key;\n Reflect.defineMetadata(`apprun-update:${name}`,\n { name, key, options }, target)\n }\n}\n\nexport function customElement(name: string, options?: CustomElementOptions) {\n return function _customElement<T extends { new(...args: any[]): {} }>(constructor: T) {\n webComponent(name, constructor, options);\n return constructor;\n }\n}\n\n","\r\nimport app, { App } from './app';\r\nimport { Reflect } from './decorator'\r\nimport { View, Update, ActionDef, ActionOptions, MountOptions, EventOptions } from './types';\r\nimport directive from './directive';\r\n\r\nconst componentCache = new Map();\r\nif (!app.find('get-components')) app.on('get-components', o => o.components = componentCache);\r\n\r\nconst REFRESH = state => state;\r\n\r\nexport class Component<T = any, E = any> {\r\n static __isAppRunComponent = true;\r\n private _app = new App();\r\n private _actions = [];\r\n private _global_events = [];\r\n private _state;\r\n private _history = [];\r\n private _history_idx = -1;\r\n private enable_history;\r\n private global_event;\r\n public element;\r\n public rendered;\r\n public mounted;\r\n public unload;\r\n private tracking_id;\r\n private observer;\r\n\r\n\r\n private renderState(state: T, vdom = null) {\r\n if (!this.view) return;\r\n let html = vdom || this.view(state);\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: html ? '.' : '-',\r\n state,\r\n vdom: html,\r\n el: this.element\r\n });\r\n\r\n if (typeof document !== 'object') return;\r\n\r\n const el = (typeof this.element === 'string' && this.element) ?\r\n document.getElementById(this.element) || document.querySelector(this.element) : this.element;\r\n\r\n if (!el) return;\r\n const tracking_attr = '_c';\r\n if (!this.unload) {\r\n el.removeAttribute && el.removeAttribute(tracking_attr);\r\n } else if (el['_component'] !== this || el.getAttribute(tracking_attr) !== this.tracking_id) {\r\n this.tracking_id = new Date().valueOf().toString();\r\n el.setAttribute(tracking_attr, this.tracking_id);\r\n if (typeof MutationObserver !== 'undefined') {\r\n if (!this.observer) this.observer = new MutationObserver(changes => {\r\n if (changes[0].oldValue === this.tracking_id || !document.body.contains(el)) {\r\n this.unload(this.state);\r\n this.observer.disconnect();\r\n this.observer = null;\r\n }\r\n });\r\n this.observer.observe(document.body, {\r\n childList: true, subtree: true,\r\n attributes: true, attributeOldValue: true, attributeFilter: [tracking_attr]\r\n });\r\n }\r\n }\r\n el['_component'] = this;\r\n\r\n if (!vdom && html) {\r\n html = directive(html, this);\r\n if (this.options.transition && document && document['startViewTransition']) {\r\n document['startViewTransition'](() => app.render(el, html, this));\r\n } else {\r\n app.render(el, html, this);\r\n }\r\n }\r\n this.rendered && this.rendered(this.state);\r\n }\r\n\r\n public setState(state: T, options: ActionOptions & EventOptions\r\n = { render: true, history: false }) {\r\n if (state instanceof Promise) {\r\n // Promise will not be saved or rendered\r\n // state will be saved and rendered when promise is resolved\r\n Promise.resolve(state).then(v => {\r\n this.setState(v, options);\r\n this._state = state;\r\n });\r\n } else {\r\n this._state = state;\r\n if (state == null) return;\r\n this.state = state;\r\n if (options.render !== false) {\r\n // before render state\r\n if (options.transition && document && document['startViewTransition']) {\r\n document['startViewTransition'](() => this.renderState(state));\r\n } else {\r\n this.renderState(state);\r\n }\r\n }\r\n if (options.history !== false && this.enable_history) {\r\n this._history = [...this._history, state];\r\n this._history_idx = this._history.length - 1;\r\n }\r\n if (typeof options.callback === 'function') options.callback(this.state);\r\n }\r\n }\r\n\r\n private _history_prev = () => {\r\n this._history_idx--;\r\n if (this._history_idx >= 0) {\r\n this.setState(this._history[this._history_idx], { render: true, history: false });\r\n }\r\n else {\r\n this._history_idx = 0;\r\n }\r\n };\r\n\r\n private _history_next = () => {\r\n this._history_idx++;\r\n if (this._history_idx < this._history.length) {\r\n this.setState(this._history[this._history_idx], { render: true, history: false });\r\n }\r\n else {\r\n this._history_idx = this._history.length - 1;\r\n }\r\n };\r\n\r\n constructor(\r\n protected state?: T,\r\n protected view?: View<T>,\r\n protected update?: Update<T, E>,\r\n protected options?) {\r\n }\r\n\r\n start = (element = null, options?: MountOptions): Component<T, E> => {\r\n this.mount(element, { render: true, ...options });\r\n if (this.mounted && typeof this.mounted === 'function') {\r\n const new_state = this.mounted({}, [], this.state);\r\n (typeof new_state !== 'undefined') && this.setState(new_state);\r\n }\r\n return this;\r\n }\r\n\r\n public mount(element = null, options?: MountOptions): Component<T, E> {\r\n console.assert(!this.element, 'Component already mounted.')\r\n this.options = options = { ...this.options, ...options };\r\n this.element = element;\r\n this.global_event = options.global_event;\r\n this.enable_history = !!options.history;\r\n\r\n if (this.enable_history) {\r\n this.on(options.history.prev || 'history-prev', this._history_prev);\r\n this.on(options.history.next || 'history-next', this._history_next);\r\n }\r\n\r\n if (options.route) {\r\n this.update = this.update || {};\r\n if (!this.update[options.route]) this.update[options.route] = REFRESH;\r\n }\r\n\r\n this.add_actions();\r\n this.state = this.state ?? this['model'] ?? {};\r\n if (typeof this.state === 'function') this.state = this.state();\r\n\r\n this.setState(this.state, { render: !!options.render, history: true });\r\n\r\n if (app['debug']) {\r\n if (componentCache.get(element)) { componentCache.get(element).push(this) }\r\n else { componentCache.set(element, [this]) }\r\n }\r\n return this;\r\n }\r\n\r\n is_global_event(name: string): boolean {\r\n return name && (\r\n this.global_event ||\r\n this._global_events.indexOf(name) >= 0 ||\r\n name.startsWith('#') || name.startsWith('/') || name.startsWith('@'));\r\n }\r\n\r\n add_action(name: string, action, options: ActionOptions = {}) {\r\n if (!action || typeof action !== 'function') return;\r\n if (options.global) this._global_events.push(name);\r\n this.on(name as any, (...p) => {\r\n\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: '>',\r\n event: name, p,\r\n current_state: this.state,\r\n options\r\n });\r\n\r\n const newState = action(this.state, ...p);\r\n\r\n app['debug'] && app.run('debug', {\r\n component: this,\r\n _: '<',\r\n event: name, p,\r\n newState,\r\n state: this.state,\r\n options\r\n });\r\n\r\n this.setState(newState, options)\r\n }, options);\r\n }\r\n\r\n add_actions() {\r\n const actions = this.update || {};\r\n Reflect.getMetadataKeys(this).forEach(key => {\r\n if (key.startsWith('apprun-update:')) {\r\n const meta = Reflect.getMetadata(key, this)\r\n actions[meta.name] = [this[meta.key].bind(this), meta.options];\r\n }\r\n })\r\n\r\n const all = {};\r\n if (Array.isArray(actions)) {\r\n actions.forEach(act => {\r\n const [name, action, opts] = act as ActionDef<T, E>;\r\n const names = name.toString();\r\n names.split(',').forEach(n => all[n.trim()] = [action, opts])\r\n })\r\n } else {\r\n Object.keys(actions).forEach(name => {\r\n const action = actions[name];\r\n if (typeof action === 'function' || Array.isArray(action)) {\r\n name.split(',').forEach(n => all[n.trim()] = action)\r\n }\r\n })\r\n }\r\n\r\n if (!all['.']) all['.'] = REFRESH;\r\n Object.keys(all).forEach(name => {\r\n const action = all[name];\r\n if (typeof action === 'function') {\r\n this.add_action(name, action);\r\n } else if (Array.isArray(action)) {\r\n this.add_action(name, action[0], action[1]);\r\n }\r\n });\r\n }\r\n\r\n public run(event: E, ...args) {\r\n if (this.state instanceof Promise) {\r\n return Promise.resolve(this.state).then(state => {\r\n this.state = state;\r\n this.run(event, ...args)\r\n });\r\n } else {\r\n const name = event.toString();\r\n return this.is_global_event(name) ?\r\n app.run(name, ...args) :\r\n this._app.run(name, ...args);\r\n }\r\n }\r\n\r\n public on(event: E, fn: (...args) => void, options?: any) {\r\n const name = event.toString();\r\n this._actions.push({ name, fn });\r\n return this.is_global_event(name) ?\r\n app.on(name, fn, options) :\r\n this._app.on(name, fn, options);\r\n }\r\n\r\n public runAsync(event: E, ...args) {\r\n const name = event.toString();\r\n return this.is_global_event(name) ?\r\n app.runAsync(name, ...args) :\r\n this._app.runAsync(name, ...args);\r\n }\r\n\r\n // obsolete\r\n public query(event: E, ...args) {\r\n return this.runAsync(event, ...args);\r\n }\r\n\r\n public unmount() {\r\n this.observer?.disconnect();\r\n this._actions.forEach(action => {\r\n const { name, fn } = action;\r\n this.is_global_event(name) ?\r\n app.off(name, fn) :\r\n this._app.off(name, fn);\r\n });\r\n }\r\n}\r\n","import app from './app';\n\nexport type Route = (url: string, ...args: any[]) => any;\n\nexport const ROUTER_EVENT: string = '//';\nexport const ROUTER_404_EVENT: string = '///';\n\nexport const route: Route = (url: string) => {\n if (!url) url = '#';\n if (url.startsWith('#')) {\n const [name, ...rest] = url.split('/');\n app.run(name, ...rest) || app.run(ROUTER_404_EVENT, name, ...rest);\n app.run(ROUTER_EVENT, name, ...rest);\n } else if (url.startsWith('/')) {\n const [_, name, ...rest] = url.split('/');\n app.run('/' + name, ...rest) || app.run(ROUTER_404_EVENT, '/' + name, ...rest);\n app.run(ROUTER_EVENT, '/' + name, ...rest);\n } else {\n app.run(url) || app.run(ROUTER_404_EVENT, url);\n app.run(ROUTER_EVENT, url);\n }\n}\nexport default route;","import app, { App } from './app';\nimport { createElement, render, Fragment, safeHTML } from './vdom';\nimport { Component } from './component';\nimport { VNode, View, Action, Update, EventOptions, ActionOptions, MountOptions, AppStartOptions } from './types';\nimport { on, update, customElement } from './decorator';\nimport webComponent, { CustomElementOptions } from './web-component';\nimport { Route, route, ROUTER_EVENT, ROUTER_404_EVENT } from './router';\n\nexport interface IApp {\n start<T, E = any>(element?: Element | string, model?: T, view?: View<T>, update?: Update<T, E>,\n options?: AppStartOptions<T>): Component<T, E>;\n on(name: string, fn: (...args: any[]) => void, options?: any): void;\n off(name: string, fn: (...args: any[]) => void): void;\n run(name: string, ...args: any[]): number;\n find(name: string): any | any[];\n h(tag: string | Function, props, ...children): VNode | VNode[];\n createElement(tag: string | Function, props, ...children): VNode | VNode[];\n render(element: Element | string, node: VNode): void;\n Fragment(props, ...children): any[];\n route?: Route;\n webComponent(name: string, componentClass, options?: CustomElementOptions): void;\n safeHTML(html: string): any[];\n use_render(render, mode?: 0 | 1);\n use_react(createRoot);\n}\n\napp.h = app.createElement = createElement;\napp.render = render;\napp.Fragment = Fragment;\napp.webComponent = webComponent;\napp.safeHTML = safeHTML;\n\napp.start = <T, E = any>(element?: Element | string, model?: T, view?: View<T>, update?: Update<T, E>,\n options?: AppStartOptions<T>): Component<T, E> => {\n const opts = { render: true, global_event: true, ...options };\n const component = new Component<T, E>(model, view, update);\n if (options && options.rendered) component.rendered = options.rendered;\n if (options && options.mounted) component.mounted = options.mounted;\n component.start(element, opts);\n return component;\n};\n\nconst NOOP = _ => {/* Intentionally empty */ }\napp.on('$', NOOP);\napp.on('debug', _ => NOOP);\napp.on(ROUTER_EVENT, NOOP);\napp.on('#', NOOP);\napp['route'] = route;\napp.on('route', url => app['route'] && app['route'](url));\n\nif (typeof document === 'object') {\n document.addEventListener(\"DOMContentLoaded\", () => {\n if (app['route'] === route) {\n window.onpopstate = () => route(location.hash);\n document.body.hasAttribute('apprun-no-init') || app['no-init-route'] || route(location.hash);\n }\n });\n}\nexport type StatelessComponent<T = {}> = (args: T) => string | VNode | void;\nexport { App, app, Component, View, Action, Update, on, update, EventOptions, ActionOptions, MountOptions, Fragment, safeHTML }\nexport { update as event };\nexport { ROUTER_EVENT, ROUTER_404_EVENT };\nexport { customElement, CustomElementOptions, AppStartOptions };\nexport default app as IApp;\n\nif (typeof window === 'object') {\n window['Component'] = Component;\n window['_React'] = window['React'];\n window['React'] = app;\n window['on'] = on;\n window['customElement'] = customElement;\n window['safeHTML'] = safeHTML;\n}\n\napp.use_render = (render, mode = 0) =>\n mode === 0 ?\n app.render = (el, vdom) => render(vdom, el) : // react style\n app.render = (el, vdom) => render(el, vdom); // apprun style\n\napp.use_react = (React, ReactDOM) => {\n app.h = app.createElement = React.createElement;\n app.Fragment = React.Fragment;\n app.render = (el, vdom) => ReactDOM.render(vdom, el);\n if (React.version && React.version.startsWith('18')) {\n app.render = (el, vdom) => {\n if (!el || !vdom) return;\n if (!el._root) el._root = ReactDOM.createRoot(el);\n el._root.render(vdom);\n }\n }\n}\n","import app from './app';\n\nconst getStateValue = (component, name) => {\n return (name ? component['state'][name] : component['state']) || '';\n}\n\nconst setStateValue = (component, name, value) => {\n if (name) {\n const state = component['state'] || {};\n state[name] = value;\n component.setState(state);\n } else {\n component.setState(value);\n }\n}\n\nconst apply_directive = (key: string, props: {}, tag, component) => {\n if (key.startsWith('$on')) {\n const event = props[key];\n key = key.substring(1)\n if (typeof event === 'boolean') {\n props[key] = e => component.run ? component.run(key, e) : app.run(key, e);\n } else if (typeof event === 'string') {\n props[key] = e => component.run ? component.run(event, e) : app.run(event, e);\n } else if (typeof event === 'function') {\n props[key] = e => component.setState(event(component.state, e));\n } else if (Array.isArray(event)) {\n const [handler, ...p] = event;\n if (typeof handler === 'string') {\n props[key] = e => component.run ? component.run(handler, ...p, e) : app.run(handler, ...p, e);\n } else if (typeof handler === 'function') {\n props[key] = e => component.setState(handler(component.state, ...p, e));\n }\n }\n\n } else if (key === '$bind') {\n const type = props['type'] || 'text';\n const name = typeof props[key] === 'string' ? props[key] : props['name'];\n if (tag === 'input') {\n switch (type) {\n case 'checkbox':\n props['checked'] = getStateValue(component, name);\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.checked);\n break;\n case 'radio':\n props['checked'] = getStateValue(component, name) === props['value'];\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.value);\n break;\n case 'number':\n case 'range':\n props['value'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, Number(e.target.value));\n break;\n default:\n props['value'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, e.target.value);\n }\n } else if (tag === 'select') {\n props['value'] = getStateValue(component, name);\n props['onchange'] = e => {\n if (!e.target.multiple) { // multiple selection use $bind on option\n setStateValue(component, name || e.target.name, e.target.value);\n }\n }\n } else if (tag === 'option') {\n props['selected'] = getStateValue(component, name);\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.selected);\n } else if (tag === 'textarea') {\n props['innerHTML'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, e.target.value);\n }\n } else {\n app.run('$', { key, tag, props, component });\n }\n}\n\nconst directive = (vdom, component) => {\n if (Array.isArray(vdom)) {\n return vdom.map(element => directive(element, component));\n } else {\n let { type, tag, props, children } = vdom;\n tag = tag || type;\n children = children || props?.children;\n if (props) Object.keys(props).forEach(key => {\n if (key.startsWith('$')) {\n apply_directive(key, props, tag, component);\n delete props[key];\n }\n });\n if (children) directive(children, component);\n return vdom;\n }\n}\n\nexport default directive;","import { VDOM, VNode } from './types';\nimport directive from './directive';\nexport type Element = any; //HTMLElement | SVGSVGElement | SVGElement;\n\nexport function Fragment(props, ...children): any[] {\n return collect(children);\n}\n\nconst ATTR_PROPS = '_props';\n\nfunction collect(children) {\n const ch = [];\n const push = (c) => {\n if (c !== null && c !== undefined && c !== '' && c !== false) {\n ch.push((typeof c === 'function' || typeof c === 'object') ? c : `${c}`);\n }\n }\n children && children.forEach(c => {\n if (Array.isArray(c)) {\n c.forEach(i => push(i));\n } else {\n push(c);\n }\n });\n return ch;\n}\n\nexport function createElement(tag: string | Function | [], props?: {}, ...children) {\n const ch = collect(children);\n if (typeof tag === 'string') return { tag, props, children: ch };\n else if (Array.isArray(tag)) return tag; // JSX fragments - babel\n else if (tag === undefined && children) return ch; // JSX fragments - typescript\n else if (Object.getPrototypeOf(tag).__isAppRunComponent) return { tag, props, children: ch } // createComponent(tag, { ...props, children });\n else if (typeof tag === 'function') return tag(props, ch);\n else throw new Error(`Unknown tag in vdom ${tag}`);\n};\n\nconst keyCache = new WeakMap();\n\nexport const updateElement = (element: Element | string, nodes: VDOM, component = {}) => {\n // tslint:disable-next-line\n if (nodes == null || nodes === false) return;\n const el = (typeof element === 'string' && element) ?\n document.getElementById(element) || document.querySelector(element) : element;\n nodes = directive(nodes, component);\n render(el, nodes, component);\n}\n\nfunction render(element: Element, nodes: VDOM, parent = {}) {\n // tslint:disable-next-line\n if (nodes == null || nodes === false) return;\n nodes = createComponent(nodes, parent);\n if (!element) return;\n const isSvg = element.nodeName === \"SVG\";\n if (Array.isArray(nodes)) {\n updateChildren(element, nodes, isSvg);\n } else {\n updateChildren(element, [nodes], isSvg);\n }\n}\n\nfunction same(el: Element, node: VNode) {\n // if (!el || !node) return false;\n const key1 = el.nodeName;\n const key2 = `${node.tag || ''}`;\n return key1.toUpperCase() === key2.toUpperCase();\n}\n\nfunction update(element: Element, node: VNode, isSvg: boolean) {\n if (node['_op'] === 3) return;\n // console.assert(!!element);\n isSvg = isSvg || node.tag === \"svg\";\n if (!same(element, node)) {\n element.parentNode.replaceChild(create(node, isSvg), element);\n return;\n }\n !(node['_op'] & 2) && updateChildren(element, node.children, isSvg);\n !(node['_op'] & 1) && updateProps(element, node.props, isSvg);\n}\n\nfunction updateChildren(element, children, isSvg: boolean) {\n const old_len = element.childNodes?.length || 0;\n const new_len = children?.length || 0;\n const len = Math.min(old_len, new_len);\n for (let i = 0; i < len; i++) {\n const child = children[i];\n if (child['_op'] === 3) continue;\n const el = element.childNodes[i];\n if (typeof child === 'string') {\n if (el.textContent !== child) {\n if (el.nodeType === 3) {\n el.nodeValue = child\n } else {\n element.replaceChild(createText(child), el);\n }\n }\n } else if (child instanceof HTMLElement || child instanceof SVGElement) {\n element.insertBefore(child, el);\n } else {\n const key = child.props && child.props['key'];\n if (key) {\n if (el.key === key) {\n update(element.childNodes[i], child, isSvg);\n } else {\n // console.log(el.key, key);\n const old = keyCache[key];\n if (old) {\n const temp = old.nextSibling;\n element.insertBefore(old, el);\n temp ? element.insertBefore(el, temp) : element.appendChild(el);\n update(element.childNodes[i], child, isSvg);\n } else {\n element.replaceChild(create(child, isSvg), el);\n }\n }\n } else {\n update(element.childNodes[i], child, isSvg);\n }\n }\n }\n\n let n = element.childNodes?.length || 0;\n while (n > len) {\n element.removeChild(element.lastChild);\n n--;\n }\n\n if (new_len > len) {\n const d = document.createDocumentFragment();\n for (let i = len; i < children.length; i++) {\n d.appendChild(create(children[i], isSvg));\n }\n element.appendChild(d);\n }\n}\n\nexport const safeHTML = (html: string) => {\n const div = document.createElement('section');\n div.insertAdjacentHTML('afterbegin', html)\n return Array.from(div.children);\n}\n\nfunction createText(node) {\n if (node?.indexOf('_html:') === 0) { // ?\n const div = document.createElement('div');\n div.insertAdjacentHTML('afterbegin', node.substring(6))\n return div;\n } else {\n return document.createTextNode(node??'');\n }\n}\n\nfunction create(node: VNode | string | HTMLElement | SVGElement, isSvg: boolean): Element {\n // console.assert(node !== null && node !== undefined);\n if ((node instanceof HTMLElement) || (node instanceof SVGElement)) return node;\n if (typeof node === \"string\") return createText(node);\n if (!node.tag || (typeof node.tag === 'function')) return createText(JSON.stringify(node));\n isSvg = isSvg || node.tag === \"svg\";\n const element = isSvg\n ? document.createElementNS(\"http://www.w3.org/2000/svg\", node.tag)\n : document.createElement(node.tag);\n\n updateProps(element, node.props, isSvg);\n if (node.children) node.children.forEach(child => element.appendChild(create(child, isSvg)));\n return element\n}\n\nfunction mergeProps(oldProps: {}, newProps: {}): {} {\n newProps['class'] = newProps['class'] || newProps['className'];\n delete newProps['className'];\n const props = {};\n if (oldProps) Object.keys(oldProps).forEach(p => props[p] = null);\n if (newProps) Object.keys(newProps).forEach(p => props[p] = newProps[p]);\n return props;\n}\n\nexport function updateProps(element: Element, props: {}, isSvg) {\n // console.assert(!!element);\n const cached = element[ATTR_PROPS] || {};\n props = mergeProps(cached, props || {});\n element[ATTR_PROPS] = props;\n\n for (const name in props) {\n const value = props[name];\n // if (cached[name] === value) continue;\n // console.log('updateProps', name, value);\n if (name.startsWith('data-')) {\n const dname = name.substring(5);\n const cname = dname.replace(/-(\\w)/g, (match) => match[1].toUpperCase());\n if (element.dataset[cname] !== value) {\n if (value || value === \"\") element.dataset[cname] = value;\n else delete element.dataset[cname];\n }\n } else if (name === 'style') {\n if (element.style.cssText) element.style.cssText = '';\n if (typeof value === 'string') element.style.cssText = value;\n else {\n for (const s in value) {\n if (element.style[s] !== value[s]) element.style[s] = value[s];\n }\n }\n } else if (name.startsWith('xlink')) {\n const xname = name.replace('xlink', '').toLowerCase();\n if (value == null || value === false) {\n element.removeAttributeNS('http://www.w3.org/1999/xlink', xname);\n } else {\n element.setAttributeNS('http://www.w3.org/1999/xlink', xname, value);\n }\n } else if (name.startsWith('on')) {\n if (!value || typeof value === 'function') {\n element[name] = value;\n } else if (typeof value === 'string') {\n if (value) element.setAttribute(name, value);\n else element.removeAttribute(name);\n }\n } else if (/^id$|^class$|^list$|^readonly$|^contenteditable$|^role|-|^for$/g.test(name) || isSvg) {\n if (element.getAttribute(name) !== value) {\n if (value) element.setAttribute(name, value);\n else element.removeAttribute(name);\n }\n } else if (element[name] !== value) {\n element[name] = value;\n }\n if (name === 'key' && value) keyCache[value] = element;\n }\n if (props && typeof props['ref'] === 'function') {\n window.requestAnimationFrame(() => props['ref'](element));\n }\n}\n\nfunction render_component(node, parent, idx) {\n const { tag, props, children } = node;\n let key = `_${idx}`;\n let id = props && props['id'];\n if (!id) id = `_${idx}${Date.now()}`;\n else key = id;\n let asTag = 'section';\n if (props && props['as']) {\n asTag = props['as'];\n delete props['as'];\n }\n if (!parent.__componentCache) parent.__componentCache = {};\n let component = parent.__componentCache[key];\n if (!component || !(component instanceof tag) || !component.element) {\n const element = document.createElement(asTag);\n component = parent.__componentCache[key] = new tag({ ...props, children }).mount(element, { render: true });\n } else {\n component.renderState(component.state);\n }\n if (component.mounted) {\n const new_state = component.mounted(props, children, component.state);\n (typeof new_state !== 'undefined') && component.setState(new_state);\n }\n updateProps(component.element, props, false);\n return component.element;\n}\n\nfunction createComponent(node, parent, idx = 0) {\n if (typeof node === 'string') return node;\n if (Array.isArray(node)) return node.map(child => createComponent(child, parent, idx++));\n let vdom = node;\n if (node && typeof node.tag === 'function' && Object.getPrototypeOf(node.tag).__isAppRunComponent) {\n vdom = render_component(node, parent, idx);\n }\n if (vdom && Array.isArray(vdom.children)) {\n const new_parent = vdom.props?._component;\n if (new_parent) {\n let i = 0;\n vdom.children = vdom.children.map(child => createComponent(child, new_parent, i++));\n } else {\n vdom.children = vdom.children.map(child => createComponent(child, parent, idx++));\n }\n }\n return vdom;\n}\n","// 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};","import { app, Component } from './apprun';\n\nconst popup_div = `<div id=\"play-popup\" class=\"overlay\">\n<style id=\"apprun-play-style\">\n.apprun-play .col {\n height: 100%;\n flex: 1;\n}\n.apprun-preview {\n width: 100%\n}\n.apprun-play .editor, .apprun-play .preview {\n display: inline-block;\n width: calc(100% - 20px);\n height: calc(100% - 10px);\n}\n\na.button {\n font-size: .8em;\n padding: 10px;\n cursor: pointer;\n color: var(--md-primary-bg-color);\n background: var(--md-primary-fg-color)\n}\na.button:hover {\n color: var(--md-primary-fg-color);\n background: var(--md-primary-bg-color)\n}\n\n.overlay {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: rgba(0, 0, 0, 0.7);\n visibility: hidden;\n opacity: 0;\n z-index: 999;\n}\n.overlay.show {\n visibility: visible;\n opacity: 1;\n}\n\n.popup {\n margin: 80px auto;\n padding: 20px;\n background: #fff;\n border-radius: 3px;\n position: relative;\n width: 90%;\n height: calc(100% - 150px);\n}\n\n.popup .close {\n position: absolute;\n top: 10px;\n right: 20px;\n font-size: 20px;\n font-weight: bold;\n text-decoration: none;\n color: #333;\n}\n.popup .close:hover {\n color: #06D85F;\n}\n.popup .content {\n height: 100%;\n overflow: hidden;\n display: flex;\n}\n\n.cm-s-default {\n height: 100%;\n font-size: small;\n line-height: 1.5em;\n z-index: 0;\n}\n</style>\n\n\t<div class=\"popup apprun-play\">\n\t\t<a class=\"close\" href=\"javascript:app.run('@close-popup')\">&times;</a>\n\t\t<div class=\"content\">\n\t\t\t<div class=\"col\">\n <textarea class=\"editor\"></textarea>\n </div>\n <div class=\"col\">\n <iframe class=\"preview\"/>\n </div>\n </div>\n\t</div>\n</div>`;\n\nconst code_html = code => `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\">\n <script src=\"https://cdnjs.cloudflare.com/ajax/libs/custom-elements/1.1.2/custom-elements.min.js\"></script>\n <title>AppRun Playground</title>\n <style>\n body {\n font-family: \"Benton Sans\", \"Helvetica Neue\", helvetica, arial, sans-serif;\n margin: 2em;\n }\n </style>\n <script src=\"https://unpkg.com/@babel/standalone/babel.min.js\"></script>\n <script src=\"https://unpkg.com/apprun/dist/apprun-html.js\"></script>\n</head>\n<body>\n<script>\n Babel.registerPlugin(\"d\", [Babel.availablePlugins[\"proposal-decorators\"], {legacy: true}]);\n Babel.registerPlugin(\"c\", [Babel.availablePlugins[\"proposal-class-properties\"], {loose: true}]);\n Babel.registerPlugin(\"b\", [Babel.availablePlugins[\"proposal-private-methods\"], {loose: true}]);\n</script>\n<script type=\"text/babel\" data-plugins=\"d, c, b\">\n ${code}\n</script>\n</body>\n</html>`;\n\ndeclare var CodeMirror;\n\nconst setup_editor = (textarea, iframe, code, hide_src) => {\n\n if (!iframe || !code) return;\n\n const run_code = code => {\n const iframe_clone = iframe.cloneNode();\n iframe.parentNode?.replaceChild(iframe_clone, iframe);\n iframe = iframe_clone;\n const doc = iframe.contentWindow?.document;\n if (!doc) return;\n doc.open();\n if (code.indexOf('<html') >= 0)\n doc.write(code);\n else\n doc.write(code_html(code));\n doc.close();\n }\n\n run_code(code);\n\n if (hide_src || !textarea || textarea.nodeName !== 'TEXTAREA') return;\n if (typeof CodeMirror === 'undefined') {\n textarea.onkeyup = () => run_code(textarea.value);\n } else {\n if (!textarea.editor) {\n textarea.editor = CodeMirror.fromTextArea(textarea, {\n lineNumbers: true,\n mode: 'jsx'\n });\n textarea.editor.on('change', (cm) => run_code(cm.getValue()));\n }\n }\n}\n\nclass Play extends Component {\n view = (state) => {\n const code_id = state['code-element-id'];\n const element = this.element;\n let code_area, code;\n if (code_id) {\n code_area = document.getElementById(code_id);\n } else {\n code_area = element.previousElementSibling ||\n element.parentElement.previousElementSibling;\n }\n code = code_area?.innerText // from div-code\n || code_area?.value // from textarea\n || state['code']; // from code attr\n\n this.state.code_area = code_area;\n this.state.code = code;\n\n return code ? <>\n <div class=\"toolbox\">\n {!state.hide_button && <a class=\"button\" $onclick=\"show-popup\">Try the Code</a>}\n </div></>\n : <div>AppRun Play cannot find code to run, please set code-element-id or code.</div>\n };\n\n rendered = ({ style, hide_src, code_area, code }) => {\n if (!code) return;\n if (!document.getElementById('play-popup')) {\n document.body.insertAdjacentHTML('beforeend', popup_div);\n const textarea = document.querySelector(\".apprun-play .editor\") as any;\n const iframe = document.querySelector('.apprun-play .preview');\n textarea.value = code;\n setup_editor(textarea, iframe, code, false);\n }\n const iframe = document.createElement('iframe');\n iframe.classList.add('apprun-preview');\n iframe.style.cssText = style;\n this.element.before(iframe);\n if (hide_src) code_area.style.display = 'none';\n setup_editor(code_area, iframe, code, hide_src);\n }\n\n update = {\n 'show-popup': ({ code }) => {\n const textarea = document.querySelector(\".apprun-play .editor\") as any;\n textarea.editor?.setValue(code);\n document.getElementById('play-popup').classList.add('show');\n },\n '@close-popup': () => { document.getElementById('play-popup').classList.remove('show') },\n }\n}\n\napp.webComponent('apprun-play', Play);\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","customElement","componentClass","HTMLElement","super","component","_component","state","observedAttributes","attr","toLowerCase","connectedCallback","isConnected","opts","_shadowRoot","shadow","attachShadow","mode","attrMap","reduce","lc","_attrMap","props","Array","from","attributes","item","value","undefined","defineProperty","get","set","attributeChangedCallback","configurable","enumerable","requestAnimationFrame","children","mount","_props","dispatchEvent","bind","mounted","new_state","render","disconnectedCallback","unload","unmount","oldValue","mappedName","window","customElements","Reflect","meta","WeakMap","defineMetadata","metadataKey","metadataValue","target","has","getMetadataKeys","getPrototypeOf","getMetadata","componentCache","Map","o","components","REFRESH","Component","renderState","vdom","view","html","_","el","element","document","getElementById","querySelector","tracking_attr","getAttribute","tracking_id","Date","valueOf","toString","setAttribute","MutationObserver","observer","changes","body","contains","disconnect","observe","childList","subtree","attributeOldValue","attributeFilter","removeAttribute","directive","transition","rendered","setState","history","resolve","then","v","_state","enable_history","_history","_history_idx","callback","update","_app","_actions","_global_events","_history_prev","_history_next","start","global_event","prev","next","route","add_actions","is_global_event","indexOf","add_action","action","p","current_state","newState","actions","key","isArray","act","split","n","trim","__isAppRunComponent","ROUTER_EVENT","ROUTER_404_EVENT","url","rest","h","createElement","Fragment","webComponent","safeHTML","model","NOOP","addEventListener","onpopstate","location","hash","hasAttribute","use_render","use_react","React","ReactDOM","version","_root","createRoot","getStateValue","setStateValue","type","tag","substring","e","handler","checked","Number","multiple","selected","apply_directive","collect","ATTR_PROPS","ch","c","i","Error","keyCache","updateElement","nodes","parent","createComponent","isSvg","nodeName","updateChildren","node","key1","key2","toUpperCase","same","updateProps","parentNode","replaceChild","create","old_len","childNodes","new_len","len","Math","min","child","textContent","nodeType","nodeValue","createText","SVGElement","insertBefore","old","temp","nextSibling","appendChild","removeChild","lastChild","d","createDocumentFragment","div","insertAdjacentHTML","createTextNode","JSON","stringify","createElementNS","cached","oldProps","newProps","mergeProps","cname","match","dataset","style","cssText","s","xname","removeAttributeNS","setAttributeNS","test","idx","id","now","asTag","__componentCache","render_component","new_parent","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","globalThis","Function","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","setup_editor","textarea","iframe","code","hide_src","run_code","iframe_clone","cloneNode","doc","contentWindow","open","write","code_html","close","CodeMirror","onkeyup","editor","fromTextArea","lineNumbers","cm","getValue","Play","code_id","code_area","previousElementSibling","parentElement","innerText","class","hide_button","classList","add","before","display","setValue","remove"],"sourceRoot":""}