apprun 3.33.0 → 3.33.1

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/apprun.d.ts CHANGED
@@ -57,7 +57,8 @@ declare module 'apprun' {
57
57
  route?: Route;
58
58
  webComponent(name: string, componentClass, options?: CustomElementOptions): void;
59
59
  safeHTML(html: string): any[];
60
-
60
+ use_render(render, mode?: 0 | 1);
61
+ use_react(createRoot);
61
62
  }
62
63
 
63
64
  export class Component<T = any, E = any> {
@@ -1 +1 @@
1
- {"version":3,"file":"dist/apprun-dev-tools.js","mappings":"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","sources":["webpack://apprun/webpack/universalModuleDefinition","webpack://apprun/./src/app.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/vdom-to-html.tsx","webpack://apprun/./src/apprun-dev-tools-tests.tsx","webpack://apprun/./src/apprun-dev-tools.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\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","// 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};","\nimport { VDOM } from './types';\nimport { TemplateResult } from 'lit-html';\n\nfunction getProp(prop) {\n if (typeof prop === 'object') {\n return Object.keys(prop).map(name => `${name}:${prop[name]}`).join(';');\n }\n else return prop.toString();\n}\n\nfunction toProps(props) {\n return Object.keys(props)\n .map(name => ` ${name === 'className' ? 'class' : name}=\"${getProp(props[name])}\"`)\n .join('');\n}\n\nfunction toHTMLArray(nodes) {\n return nodes.map(node => toHTML(node)).join('');\n}\n\nfunction clean(obj) {\n for (var i in obj) {\n if (obj[i] == null) {\n delete obj[i];\n } else if (typeof obj[i] === 'object') {\n clean(obj[i]);\n }\n }\n}\n\nfunction toHTML (vdom) {\n if (!vdom) return '';\n if ('_$litType$' in vdom) {\n return vdom.toString();\n }\n clean(vdom);\n if (Array.isArray(vdom)) return toHTMLArray(vdom);\n if (typeof vdom === 'string') {\n return vdom.startsWith('_html:') ? vdom.substring(6) : vdom;\n } else if (vdom.tag) {\n const props = vdom.props ? toProps(vdom.props) : '';\n const children = vdom.children ? toHTMLArray(vdom.children) : '';\n return `<${vdom.tag}${props}>${children}</${vdom.tag}>`;\n }\n if (typeof vdom === 'object') return JSON.stringify(vdom);\n}\n\nexport default toHTML;","declare var app;\nlet win;\napp['debug'] = true;\n\nfunction openWin(name) {\n win = window.open('', name);\n win.document.write(`<html>\n <title>AppRun Analyzer | ${document.location.href}</title>\n <style>\n body { font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\" }\n </style>\n <body><pre>`);\n}\n\nfunction write(text) {\n win.document.write(text + '\\n');\n}\n\nfunction closeWin() {\n win.document.write(`</pre>\n </body>\n </html>`);\n win.document.close();\n}\n\nconst print_component_test = component => {\n write(`import ${component.constructor.name} from '../src/${component.constructor.name}'`);\n write(`describe('${component.constructor.name}', ()=>{`);\n component._actions.forEach(action => {\n if (action.name !== '.') {\n write(` it ('should handle event: ${action.name}', (done)=>{`);\n write(` const component = new ${component.constructor.name}().mount();`);\n write(` component.run('${action.name}');`);\n write(` setTimeout(() => {`);\n write(` \\/\\/expect(?).toHaveBeenCalled();`);\n write(` \\/\\/expect(component.state).toBe(?);`);\n write(` done();`);\n write(` })`);\n }\n });\n write(`});`);\n};\nexport const _createEventTests = () => {\n const o = { components: {} };\n app.run('get-components', o);\n const { components } = o;\n openWin('');\n if (components instanceof Map) {\n for (let [key, comps] of components) {\n comps.forEach(print_component_test);\n }\n } else {\n Object.keys(components).forEach(el => {\n components[el].forEach(print_component_test);\n });\n }\n closeWin();\n}\n\nlet recording = false;\nlet events = [];\n\napp.on('debug', p => {\n if (recording && p.vdom) {\n events.push(p);\n console.log(`* ${events.length} state(s) recorded.`);\n }\n});\n\nexport const _createStateTests = (s) => {\n\n const printTests = () => {\n if (events.length === 0) {\n console.log('* No state recorded.');\n return;\n }\n openWin('');\n events.forEach((event, idx) => {\n write(` it ('view snapshot: #${idx + 1}', ()=>{`);\n write(` const component = new ${event.component.constructor.name}()`);\n write(` const state = ${JSON.stringify(event.state, undefined, 2)};`);\n write(` const vdom = component['view'](state);`);\n write(` expect(JSON.stringify(vdom)).toMatchSnapshot();`);\n write(` })`);\n });\n closeWin();\n }\n\n if (s === 'start') {\n events = [];\n recording = true;\n console.log('* State logging started.');\n } else if (s === 'stop') {\n printTests();\n recording = false;\n events = [];\n console.log('* State logging stopped.');\n } else {\n console.log('create-state-tests <start|stop>');\n }\n}\n","import app from './app';\nimport toHTML from './vdom-to-html';\nimport { _createEventTests, _createStateTests } from './apprun-dev-tools-tests';\n\napp['debug'] = true;\n\nwindow['_apprun-help'] = ['', () => {\n Object.keys(window).forEach(cmd => {\n if (cmd.startsWith('_apprun-')) {\n cmd === '_apprun-help' ?\n console.log('AppRun Commands:') :\n console.log(`* ${cmd.substring(8)}: ${window[cmd][0]}`);\n }\n });\n}];\n\nfunction newWin(html) {\n const win = window.open('', '_apprun_debug', 'toolbar=0');\n win.document.write(`<html>\n <title>AppRun Analyzer | ${document.location.href}</title>\n <style>\n body { font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\" }\n li { margin-left: 80px; }\n </style>\n <body>\n <div id=\"main\">${html}</div>\n </script>\n </body>\n </html>`);\n win.document.close();\n}\n\nconst get_components = () => {\n const o = { components: {} };\n app.run('get-components', o);\n const { components } = o;\n return components;\n}\nconst viewElement = element => <div>\n {element.tagName.toLowerCase()}{element.id ? '#' + element.id : ''}\n {' '}\n {element.className && element.className.split(' ').map(c => '.' + c).join() }\n</div>;\n\nconst viewComponents = state => {\n\n const Events = ({ events }) => <ul>\n {events && events.filter(event => event.name !== '.').map(event => <li>\n {event.name}\n </li>)}\n </ul>;\n\n const Components = ({ components }) => <ul>\n {components.map(component => <li>\n <div>{component.constructor.name}</div>\n <Events events={component['_actions']} />\n </li>)}\n </ul>;\n\n return <ul>\n {state.map(({ element, comps}) => <li>\n <div>{viewElement(element)}</div>\n <Components components={comps} />\n </li>)}\n </ul>\n}\n\nconst viewEvents = state => {\n\n const Components = ({ components }) => <ul>\n {components.map(component => <li>\n <div>{component.constructor.name}</div>\n </li>)}\n </ul>;\n\n const Events = ({ events, global }) => <ul>\n {events && events\n .filter(event =>\n event.global === global && event.event !== '.')\n .map(({ event, components }) => <li>\n <div>{event}</div>\n <Components components={components} />\n </li>)}\n </ul>;\n\n return <div>\n <div>GLOBAL EVENTS</div>\n <Events events={state} global={true} />\n <div>LOCAL EVENTS</div>\n <Events events={state} global={false} />\n </div>\n}\n\nconst _events = (print?) => {\n const global_events = app['_events']\n const events = {};\n const cache = get_components();\n\n const add_component = component => component['_actions'].forEach(event => {\n events[event.name] = events[event.name] || [];\n events[event.name].push(component);\n });\n\n if (cache instanceof Map) {\n for (let [key, comps] of cache) {\n comps.forEach(add_component);\n }\n } else {\n Object.keys(cache).forEach(el =>\n cache[el].forEach(add_component)\n );\n }\n const data = [];\n Object.keys(events).forEach(event => {\n data.push({ event, components: events[event], global: global_events[event] ? true : false });\n });\n\n data.sort(((a, b) => a.event > b.event ? 1 : -1)).map(e => e.event);\n\n if (print) {\n const vdom = viewEvents(data);\n newWin(toHTML(vdom));\n } else {\n console.log('=== GLOBAL EVENTS ===')\n data.filter(event => event.global && event.event !== '.')\n .forEach(({ event, components }) => console.log({ event }, components));\n console.log('=== LOCAL EVENTS ===')\n data.filter(event => !event.global && event.event !== '.')\n .forEach(({ event, components }) => console.log({ event }, components));\n }\n}\n\nconst _components = (print?) => {\n const components = get_components();\n const data = [];\n\n if (components instanceof Map) {\n for (let [key, comps] of components) {\n const element = typeof key === 'string' ? document.getElementById(key) || document.querySelector(key): key;\n data.push({ element, comps });\n }\n } else {\n Object.keys(components).forEach(el => {\n const element = typeof el === 'string' ? document.getElementById(el) || document.querySelector(el): el;\n data.push({ element, comps: components[el] });\n });\n }\n if (print) {\n const vdom = viewComponents(data);\n newWin(toHTML(vdom));\n } else {\n data.forEach(({ element, comps }) => console.log(element, comps));\n }\n}\n\nlet debugging = Number(window?.localStorage?.getItem('__apprun_debugging__')) || 0;\napp.on('debug', p => {\n if (debugging & 1 && p.event) console.log(p);\n if (debugging & 2 && p.vdom) console.log(p);\n});\n\nwindow['_apprun-components'] = ['components [print]', (p) => {\n _components(p === 'print');\n}]\n\nwindow['_apprun-events'] = ['events [print]', (p) => {\n _events(p === 'print');\n}]\n\nwindow['_apprun-log'] = ['log [event|view] on|off', (a1?, a2?) => {\n if (a1 === 'on') {\n debugging = 3;\n } else if (a1 === 'off') {\n debugging = 0;\n } else if (a1 === 'event') {\n if (a2 === 'on') {\n debugging |= 1;\n } else if (a2 === 'off') {\n debugging &= ~1;\n }\n } else if (a1 === 'view') {\n if (a2 === 'on') {\n debugging |= 2;\n } else if (a2 === 'off') {\n debugging &= ~2;\n }\n }\n console.log(`* log ${a1} ${a2 || ''}`);\n window?.localStorage?.setItem('__apprun_debugging__', `${debugging}`)\n}];\n\nwindow['_apprun-create-event-tests'] = ['create-event-tests',\n () => _createEventTests()\n]\n\nwindow['_apprun-create-state-tests'] = ['create-state-tests <start|stop>',\n (p?) => _createStateTests(p)\n]\n\nwindow['_apprun'] = (strings) => {\n const [cmd, ...p] = strings[0].split(' ').filter(c => !!c);\n const command = window[`_apprun-${cmd}`];\n if (command) command[1](...p);\n else window['_apprun-help'][1]();\n}\n\nconsole.info('AppRun DevTools 2.27: type \"_apprun `help`\" to list all available commands.');\n\nconst reduxExt = window['__REDUX_DEVTOOLS_EXTENSION__'];\nif (reduxExt) {\n let devTools_running = false;\n const devTools = window['__REDUX_DEVTOOLS_EXTENSION__'].connect();\n if (devTools) {\n const hash = location.hash || '#';\n devTools.send(hash, '' );\n const buf = [{ component:null, state:''}];\n console.info('Connected to the Redux DevTools');\n devTools.subscribe((message) => {\n if (message.type === 'START') devTools_running = true;\n else if (message.type === 'STOP') devTools_running = false;\n else if (message.type === 'DISPATCH') {\n // console.log('From Redux DevTools: ', message);\n const idx = message.payload.index;\n if (idx === 0) { app.run(hash) }\n else {\n const { component, state } = buf[idx];\n component?.setState(state);\n }\n }\n });\n\n const send = (component, action, state) => {\n if (state == null) return;\n buf.push({ component, state });\n devTools.send(action, state);\n }\n\n app.on('debug', p => {\n if (devTools_running && p.event) {\n const state = p.newState;\n const type = p.event;\n const payload = p.p;\n const action = { type, payload };\n const component = p.component;\n if (state instanceof Promise) {\n state.then(s => send(component, action, s));\n } else {\n send(component, action, state);\n }\n }\n });\n }\n}\n"],"names":["root","factory","exports","module","define","amd","this","app","self","g","global","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","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","defineProperty","enumerable","get","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","toHTMLArray","nodes","node","toHTML","join","clean","i","vdom","toString","Array","isArray","substring","tag","props","toProps","children","JSON","stringify","win","openWin","open","document","write","location","href","text","closeWin","close","print_component_test","component","_actions","action","recording","p","log","newWin","html","cmd","get_components","components","debugging","Number","localStorage","getItem","print","data","Map","comps","element","getElementById","querySelector","el","state","Events","Components","tagName","toLowerCase","id","className","split","c","viewElement","viewComponents","_components","global_events","cache","add_component","viewEvents","a1","a2","setItem","_createEventTests","s","idx","strings","command","info","devTools_running","devTools","connect","hash","send","buf","subscribe","message","type","payload","index","setState","newState","then"],"sourceRoot":""}
1
+ {"version":3,"file":"dist/apprun-dev-tools.js","mappings":"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","sources":["webpack://apprun/webpack/universalModuleDefinition","webpack://apprun/./src/app.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/vdom-to-html.tsx","webpack://apprun/./src/apprun-dev-tools-tests.tsx","webpack://apprun/./src/apprun-dev-tools.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","// 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};","\nimport { VDOM } from './types';\nimport { TemplateResult } from 'lit-html';\n\nfunction getProp(prop) {\n if (typeof prop === 'object') {\n return Object.keys(prop).map(name => `${name}:${prop[name]}`).join(';');\n }\n else return prop.toString();\n}\n\nfunction toProps(props) {\n return Object.keys(props)\n .map(name => ` ${name === 'className' ? 'class' : name}=\"${getProp(props[name])}\"`)\n .join('');\n}\n\nfunction toHTMLArray(nodes) {\n return nodes.map(node => toHTML(node)).join('');\n}\n\nfunction clean(obj) {\n for (var i in obj) {\n if (obj[i] == null) {\n delete obj[i];\n } else if (typeof obj[i] === 'object') {\n clean(obj[i]);\n }\n }\n}\n\nfunction toHTML (vdom) {\n if (!vdom) return '';\n if ('_$litType$' in vdom) {\n return vdom.toString();\n }\n clean(vdom);\n if (Array.isArray(vdom)) return toHTMLArray(vdom);\n if (typeof vdom === 'string') {\n return vdom.startsWith('_html:') ? vdom.substring(6) : vdom;\n } else if (vdom.tag) {\n const props = vdom.props ? toProps(vdom.props) : '';\n const children = vdom.children ? toHTMLArray(vdom.children) : '';\n return `<${vdom.tag}${props}>${children}</${vdom.tag}>`;\n }\n if (typeof vdom === 'object') return JSON.stringify(vdom);\n}\n\nexport default toHTML;","declare var app;\nlet win;\napp['debug'] = true;\n\nfunction openWin(name) {\n win = window.open('', name);\n win.document.write(`<html>\n <title>AppRun Analyzer | ${document.location.href}</title>\n <style>\n body { font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\" }\n </style>\n <body><pre>`);\n}\n\nfunction write(text) {\n win.document.write(text + '\\n');\n}\n\nfunction closeWin() {\n win.document.write(`</pre>\n </body>\n </html>`);\n win.document.close();\n}\n\nconst print_component_test = component => {\n write(`import ${component.constructor.name} from '../src/${component.constructor.name}'`);\n write(`describe('${component.constructor.name}', ()=>{`);\n component._actions.forEach(action => {\n if (action.name !== '.') {\n write(` it ('should handle event: ${action.name}', (done)=>{`);\n write(` const component = new ${component.constructor.name}().mount();`);\n write(` component.run('${action.name}');`);\n write(` setTimeout(() => {`);\n write(` \\/\\/expect(?).toHaveBeenCalled();`);\n write(` \\/\\/expect(component.state).toBe(?);`);\n write(` done();`);\n write(` })`);\n }\n });\n write(`});`);\n};\nexport const _createEventTests = () => {\n const o = { components: {} };\n app.run('get-components', o);\n const { components } = o;\n openWin('');\n if (components instanceof Map) {\n for (let [key, comps] of components) {\n comps.forEach(print_component_test);\n }\n } else {\n Object.keys(components).forEach(el => {\n components[el].forEach(print_component_test);\n });\n }\n closeWin();\n}\n\nlet recording = false;\nlet events = [];\n\napp.on('debug', p => {\n if (recording && p.vdom) {\n events.push(p);\n console.log(`* ${events.length} state(s) recorded.`);\n }\n});\n\nexport const _createStateTests = (s) => {\n\n const printTests = () => {\n if (events.length === 0) {\n console.log('* No state recorded.');\n return;\n }\n openWin('');\n events.forEach((event, idx) => {\n write(` it ('view snapshot: #${idx + 1}', ()=>{`);\n write(` const component = new ${event.component.constructor.name}()`);\n write(` const state = ${JSON.stringify(event.state, undefined, 2)};`);\n write(` const vdom = component['view'](state);`);\n write(` expect(JSON.stringify(vdom)).toMatchSnapshot();`);\n write(` })`);\n });\n closeWin();\n }\n\n if (s === 'start') {\n events = [];\n recording = true;\n console.log('* State logging started.');\n } else if (s === 'stop') {\n printTests();\n recording = false;\n events = [];\n console.log('* State logging stopped.');\n } else {\n console.log('create-state-tests <start|stop>');\n }\n}\n","import app from './app';\nimport toHTML from './vdom-to-html';\nimport { _createEventTests, _createStateTests } from './apprun-dev-tools-tests';\n\napp['debug'] = true;\n\nwindow['_apprun-help'] = ['', () => {\n Object.keys(window).forEach(cmd => {\n if (cmd.startsWith('_apprun-')) {\n cmd === '_apprun-help' ?\n console.log('AppRun Commands:') :\n console.log(`* ${cmd.substring(8)}: ${window[cmd][0]}`);\n }\n });\n}];\n\nfunction newWin(html) {\n const win = window.open('', '_apprun_debug', 'toolbar=0');\n win.document.write(`<html>\n <title>AppRun Analyzer | ${document.location.href}</title>\n <style>\n body { font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\" }\n li { margin-left: 80px; }\n </style>\n <body>\n <div id=\"main\">${html}</div>\n </script>\n </body>\n </html>`);\n win.document.close();\n}\n\nconst get_components = () => {\n const o = { components: {} };\n app.run('get-components', o);\n const { components } = o;\n return components;\n}\nconst viewElement = element => <div>\n {element.tagName.toLowerCase()}{element.id ? '#' + element.id : ''}\n {' '}\n {element.className && element.className.split(' ').map(c => '.' + c).join() }\n</div>;\n\nconst viewComponents = state => {\n\n const Events = ({ events }) => <ul>\n {events && events.filter(event => event.name !== '.').map(event => <li>\n {event.name}\n </li>)}\n </ul>;\n\n const Components = ({ components }) => <ul>\n {components.map(component => <li>\n <div>{component.constructor.name}</div>\n <Events events={component['_actions']} />\n </li>)}\n </ul>;\n\n return <ul>\n {state.map(({ element, comps}) => <li>\n <div>{viewElement(element)}</div>\n <Components components={comps} />\n </li>)}\n </ul>\n}\n\nconst viewEvents = state => {\n\n const Components = ({ components }) => <ul>\n {components.map(component => <li>\n <div>{component.constructor.name}</div>\n </li>)}\n </ul>;\n\n const Events = ({ events, global }) => <ul>\n {events && events\n .filter(event =>\n event.global === global && event.event !== '.')\n .map(({ event, components }) => <li>\n <div>{event}</div>\n <Components components={components} />\n </li>)}\n </ul>;\n\n return <div>\n <div>GLOBAL EVENTS</div>\n <Events events={state} global={true} />\n <div>LOCAL EVENTS</div>\n <Events events={state} global={false} />\n </div>\n}\n\nconst _events = (print?) => {\n const global_events = app['_events']\n const events = {};\n const cache = get_components();\n\n const add_component = component => component['_actions'].forEach(event => {\n events[event.name] = events[event.name] || [];\n events[event.name].push(component);\n });\n\n if (cache instanceof Map) {\n for (let [key, comps] of cache) {\n comps.forEach(add_component);\n }\n } else {\n Object.keys(cache).forEach(el =>\n cache[el].forEach(add_component)\n );\n }\n const data = [];\n Object.keys(events).forEach(event => {\n data.push({ event, components: events[event], global: global_events[event] ? true : false });\n });\n\n data.sort(((a, b) => a.event > b.event ? 1 : -1)).map(e => e.event);\n\n if (print) {\n const vdom = viewEvents(data);\n newWin(toHTML(vdom));\n } else {\n console.log('=== GLOBAL EVENTS ===')\n data.filter(event => event.global && event.event !== '.')\n .forEach(({ event, components }) => console.log({ event }, components));\n console.log('=== LOCAL EVENTS ===')\n data.filter(event => !event.global && event.event !== '.')\n .forEach(({ event, components }) => console.log({ event }, components));\n }\n}\n\nconst _components = (print?) => {\n const components = get_components();\n const data = [];\n\n if (components instanceof Map) {\n for (let [key, comps] of components) {\n const element = typeof key === 'string' ? document.getElementById(key) || document.querySelector(key): key;\n data.push({ element, comps });\n }\n } else {\n Object.keys(components).forEach(el => {\n const element = typeof el === 'string' ? document.getElementById(el) || document.querySelector(el): el;\n data.push({ element, comps: components[el] });\n });\n }\n if (print) {\n const vdom = viewComponents(data);\n newWin(toHTML(vdom));\n } else {\n data.forEach(({ element, comps }) => console.log(element, comps));\n }\n}\n\nlet debugging = Number(window?.localStorage?.getItem('__apprun_debugging__')) || 0;\napp.on('debug', p => {\n if (debugging & 1 && p.event) console.log(p);\n if (debugging & 2 && p.vdom) console.log(p);\n});\n\nwindow['_apprun-components'] = ['components [print]', (p) => {\n _components(p === 'print');\n}]\n\nwindow['_apprun-events'] = ['events [print]', (p) => {\n _events(p === 'print');\n}]\n\nwindow['_apprun-log'] = ['log [event|view] on|off', (a1?, a2?) => {\n if (a1 === 'on') {\n debugging = 3;\n } else if (a1 === 'off') {\n debugging = 0;\n } else if (a1 === 'event') {\n if (a2 === 'on') {\n debugging |= 1;\n } else if (a2 === 'off') {\n debugging &= ~1;\n }\n } else if (a1 === 'view') {\n if (a2 === 'on') {\n debugging |= 2;\n } else if (a2 === 'off') {\n debugging &= ~2;\n }\n }\n console.log(`* log ${a1} ${a2 || ''}`);\n window?.localStorage?.setItem('__apprun_debugging__', `${debugging}`)\n}];\n\nwindow['_apprun-create-event-tests'] = ['create-event-tests',\n () => _createEventTests()\n]\n\nwindow['_apprun-create-state-tests'] = ['create-state-tests <start|stop>',\n (p?) => _createStateTests(p)\n]\n\nwindow['_apprun'] = (strings) => {\n const [cmd, ...p] = strings[0].split(' ').filter(c => !!c);\n const command = window[`_apprun-${cmd}`];\n if (command) command[1](...p);\n else window['_apprun-help'][1]();\n}\n\nconsole.info('AppRun DevTools 2.27: type \"_apprun `help`\" to list all available commands.');\n\nconst reduxExt = window['__REDUX_DEVTOOLS_EXTENSION__'];\nif (reduxExt) {\n let devTools_running = false;\n const devTools = window['__REDUX_DEVTOOLS_EXTENSION__'].connect();\n if (devTools) {\n const hash = location.hash || '#';\n devTools.send(hash, '' );\n const buf = [{ component:null, state:''}];\n console.info('Connected to the Redux DevTools');\n devTools.subscribe((message) => {\n if (message.type === 'START') devTools_running = true;\n else if (message.type === 'STOP') devTools_running = false;\n else if (message.type === 'DISPATCH') {\n // console.log('From Redux DevTools: ', message);\n const idx = message.payload.index;\n if (idx === 0) { app.run(hash) }\n else {\n const { component, state } = buf[idx];\n component?.setState(state);\n }\n }\n });\n\n const send = (component, action, state) => {\n if (state == null) return;\n buf.push({ component, state });\n devTools.send(action, state);\n }\n\n app.on('debug', p => {\n if (devTools_running && p.event) {\n const state = p.newState;\n const type = p.event;\n const payload = p.p;\n const action = { type, payload };\n const component = p.component;\n if (state instanceof Promise) {\n state.then(s => send(component, action, s));\n } else {\n send(component, action, state);\n }\n }\n });\n }\n}\n"],"names":["root","factory","exports","module","define","amd","this","app","self","g","global","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","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","defineProperty","enumerable","get","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","toHTMLArray","nodes","node","toHTML","join","clean","i","vdom","toString","Array","isArray","substring","tag","props","toProps","children","JSON","stringify","win","openWin","open","document","write","location","href","text","closeWin","close","print_component_test","component","_actions","action","recording","p","log","newWin","html","cmd","get_components","components","debugging","Number","localStorage","getItem","print","data","Map","comps","element","getElementById","querySelector","el","state","Events","Components","tagName","toLowerCase","id","className","split","c","viewElement","viewComponents","_components","global_events","cache","add_component","viewEvents","a1","a2","setItem","_createEventTests","s","idx","strings","command","info","devTools_running","devTools","connect","hash","send","buf","subscribe","message","type","payload","index","setState","newState","then"],"sourceRoot":""}
@@ -1,4 +1,4 @@
1
- class t{constructor(){this._events={}}on(t,i,s={}){this._events[t]=this._events[t]||[],this._events[t].push({fn:i,options:s})}off(t,i){const s=this._events[t]||[];this._events[t]=s.filter((t=>t.fn!==i))}find(t){return this._events[t]}run(t,...i){const s=this.getSubscribers(t,this._events);return console.assert(s&&s.length>0,"No subscriber for event: "+t),s.forEach((s=>{const{fn:n,options:e}=s;return e.delay?this.delay(t,n,i,e):Object.keys(e).length>0?n.apply(this,[...i,e]):n.apply(this,i),!s.options.once})),s.length}once(t,i,s={}){this.on(t,i,Object.assign(Object.assign({},s),{once:!0}))}delay(t,i,s,n){n._t&&clearTimeout(n._t),n._t=setTimeout((()=>{clearTimeout(n._t),Object.keys(n).length>0?i.apply(this,[...s,n]):i.apply(this,s)}),n.delay)}runAsync(t,...i){const s=this.getSubscribers(t,this._events);console.assert(s&&s.length>0,"No subscriber for event: "+t);const n=s.map((t=>{const{fn:s,options:n}=t;return Object.keys(n).length>0?s.apply(this,[...i,n]):s.apply(this,i)}));return Promise.all(n)}query(t,...i){return this.query(t,...i)}getSubscribers(t,i){const s=i[t]||[];return i[t]=s.filter((t=>!t.options.once)),Object.keys(i).filter((i=>i.endsWith("*")&&t.startsWith(i.replace("*","")))).sort(((t,i)=>i.length-t.length)).forEach((n=>s.push(...i[n].map((i=>Object.assign(Object.assign({},i),{options:Object.assign(Object.assign({},i.options),{event:t})})))))),s}}let i;const s="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global;s.app&&s._AppRunVersions?i=s.app:(i=new t,s.app=i,s._AppRunVersions="AppRun-3");var n=i;const e=(t,i)=>(i?t.state[i]:t.state)||"",o=(t,i,s)=>{if(i){const n=t.state||{};n[i]=s,t.setState(n)}else t.setState(s)},r=(t,i)=>{if(Array.isArray(t))return t.map((t=>r(t,i)));{let{tag:s,props:h,children:c}=t;return s?(h&&Object.keys(h).forEach((t=>{t.startsWith("$")&&(((t,i,s,r)=>{if(t.startsWith("$on")){const s=i[t];if(t=t.substring(1),"boolean"==typeof s)i[t]=i=>r.run?r.run(t,i):n.run(t,i);else if("string"==typeof s)i[t]=t=>r.run?r.run(s,t):n.run(s,t);else if("function"==typeof s)i[t]=t=>r.setState(s(r.state,t));else if(Array.isArray(s)){const[e,...o]=s;"string"==typeof e?i[t]=t=>r.run?r.run(e,...o,t):n.run(e,...o,t):"function"==typeof e&&(i[t]=t=>r.setState(e(r.state,...o,t)))}}else if("$bind"===t){const n=i.type||"text",h="string"==typeof i[t]?i[t]:i.name;if("input"===s)switch(n){case"checkbox":i.checked=e(r,h),i.onclick=t=>o(r,h||t.target.name,t.target.checked);break;case"radio":i.checked=e(r,h)===i.value,i.onclick=t=>o(r,h||t.target.name,t.target.value);break;case"number":case"range":i.value=e(r,h),i.oninput=t=>o(r,h||t.target.name,Number(t.target.value));break;default:i.value=e(r,h),i.oninput=t=>o(r,h||t.target.name,t.target.value)}else"select"===s?(i.value=e(r,h),i.onchange=t=>{t.target.multiple||o(r,h||t.target.name,t.target.value)}):"option"===s?(i.selected=e(r,h),i.onclick=t=>o(r,h||t.target.name,t.target.selected)):"textarea"===s&&(i.innerHTML=e(r,h),i.oninput=t=>o(r,h||t.target.name,t.target.value))}else n.run("$",{key:t,tag:s,props:i,component:r})})(t,h,s,i),delete h[t])})),c&&(c=r(c,i)),{tag:s,props:h,children:c}):t}};function h(t,...i){return l(i)}const c="_props";function l(t){const i=[],s=t=>{null!=t&&""!==t&&!1!==t&&i.push("function"==typeof t||"object"==typeof t?t:`${t}`)};return t&&t.forEach((t=>{Array.isArray(t)?t.forEach((t=>s(t))):s(t)})),i}function u(t,i,...s){const n=l(s);if("string"==typeof t)return{tag:t,props:i,children:n};if(Array.isArray(t))return t;if(void 0===t&&s)return n;if(Object.getPrototypeOf(t).t)return{tag:t,props:i,children:n};if("function"==typeof t)return t(i,n);throw new Error(`Unknown tag in vdom ${t}`)}const d=new WeakMap,f=(t,i,s={})=>{if(null==i||!1===i)return;!function(t,i,s={}){if(null==i||!1===i)return;if(i=m(i,s),!t)return;const n="SVG"===t.nodeName;Array.isArray(i)?v(t,i,n):v(t,[i],n)}("string"==typeof t&&t?document.getElementById(t)||document.querySelector(t):t,i=r(i,s),s)};function a(t,i,s){3!==i._op&&(s=s||"svg"===i.tag,!function(t,i){const s=t.nodeName,n=`${i.tag||""}`;return s.toUpperCase()===n.toUpperCase()}(t,i)?t.parentNode.replaceChild(b(i,s),t):(!(2&i._op)&&v(t,i.children,s),!(1&i._op)&&g(t,i.props,s)))}function v(t,i,s){var n,e;const o=(null===(n=t.childNodes)||void 0===n?void 0:n.length)||0,r=(null==i?void 0:i.length)||0,h=Math.min(o,r);for(let n=0;n<h;n++){const e=i[n];if(3===e._op)continue;const o=t.childNodes[n];if("string"==typeof e)o.textContent!==e&&(3===o.nodeType?o.nodeValue=e:t.replaceChild(y(e),o));else if(e instanceof HTMLElement||e instanceof SVGElement)t.insertBefore(e,o);else{const i=e.props&&e.props.key;if(i)if(o.key===i)a(t.childNodes[n],e,s);else{const r=d[i];if(r){const i=r.nextSibling;t.insertBefore(r,o),i?t.insertBefore(o,i):t.appendChild(o),a(t.childNodes[n],e,s)}else t.replaceChild(b(e,s),o)}else a(t.childNodes[n],e,s)}}let c=(null===(e=t.childNodes)||void 0===e?void 0:e.length)||0;for(;c>h;)t.removeChild(t.lastChild),c--;if(r>h){const n=document.createDocumentFragment();for(let t=h;t<i.length;t++)n.appendChild(b(i[t],s));t.appendChild(n)}}const p=t=>{const i=document.createElement("section");return i.insertAdjacentHTML("afterbegin",t),Array.from(i.children)};function y(t){if(0===(null==t?void 0:t.indexOf("_html:"))){const i=document.createElement("div");return i.insertAdjacentHTML("afterbegin",t.substring(6)),i}return document.createTextNode(null!=t?t:"")}function b(t,i){if(t instanceof HTMLElement||t instanceof SVGElement)return t;if("string"==typeof t)return y(t);if(!t.tag||"function"==typeof t.tag)return y(JSON.stringify(t));const s=(i=i||"svg"===t.tag)?document.createElementNS("http://www.w3.org/2000/svg",t.tag):document.createElement(t.tag);return g(s,t.props,i),t.children&&t.children.forEach((t=>s.appendChild(b(t,i)))),s}function g(t,i,s){const n=t[c]||{};i=function(t,i){i.class=i.class||i.className,delete i.className;const s={};return t&&Object.keys(t).forEach((t=>s[t]=null)),i&&Object.keys(i).forEach((t=>s[t]=i[t])),s}(n,i||{}),t[c]=i;for(const n in i){const e=i[n];if(n.startsWith("data-")){const i=n.substring(5).replace(/-(\w)/g,(t=>t[1].toUpperCase()));t.dataset[i]!==e&&(e||""===e?t.dataset[i]=e:delete t.dataset[i])}else if("style"===n)if(t.style.cssText&&(t.style.cssText=""),"string"==typeof e)t.style.cssText=e;else for(const i in e)t.style[i]!==e[i]&&(t.style[i]=e[i]);else if(n.startsWith("xlink")){const i=n.replace("xlink","").toLowerCase();null==e||!1===e?t.removeAttributeNS("http://www.w3.org/1999/xlink",i):t.setAttributeNS("http://www.w3.org/1999/xlink",i,e)}else n.startsWith("on")?e&&"function"!=typeof e?"string"==typeof e&&(e?t.setAttribute(n,e):t.removeAttribute(n)):t[n]=e:/^id$|^class$|^list$|^readonly$|^contenteditable$|^role|-|^for$/g.test(n)||s?t.getAttribute(n)!==e&&(e?t.setAttribute(n,e):t.removeAttribute(n)):t[n]!==e&&(t[n]=e);"key"===n&&e&&(d[e]=t)}i&&"function"==typeof i.ref&&window.requestAnimationFrame((()=>i.ref(t)))}function m(t,i,s=0){var n;if("string"==typeof t)return t;if(Array.isArray(t))return t.map((t=>m(t,i,s++)));let e=t;if(t&&"function"==typeof t.tag&&Object.getPrototypeOf(t.tag).t&&(e=function(t,i,s){const{tag:n,props:e,children:o}=t;let r=`_${s}`,h=e&&e.id;h?r=h:h=`_${s}${Date.now()}`;let c="section";e&&e.as&&(c=e.as,delete e.as),i.i||(i.i={});let l=i.i[r];if(l&&l instanceof n&&l.element)l.renderState(l.state);else{const t=document.createElement(c);l=i.i[r]=new n(Object.assign(Object.assign({},e),{children:o})).mount(t,{render:!0})}if(l.mounted){const t=l.mounted(e,o,l.state);void 0!==t&&l.setState(t)}return g(l.element,e,!1),l.element}(t,i,s)),e&&Array.isArray(e.children)){const t=null===(n=e.props)||void 0===n?void 0:n._component;if(t){let i=0;e.children=e.children.map((s=>m(s,t,i++)))}else e.children=e.children.map((t=>m(t,i,s++)))}return e}const w=(t,i={})=>class extends HTMLElement{constructor(){super()}get component(){return this._component}get state(){return this._component.state}static get observedAttributes(){return(i.observedAttributes||[]).map((t=>t.toLowerCase()))}connectedCallback(){if(this.isConnected&&!this._component){const s=i||{};this._shadowRoot=s.shadow?this.attachShadow({mode:"open"}):this;const n=s.observedAttributes||[],e=n.reduce(((t,i)=>{const s=i.toLowerCase();return s!==i&&(t[s]=i),t}),{});this._attrMap=t=>e[t]||t;const o={};Array.from(this.attributes).forEach((t=>o[this._attrMap(t.name)]=t.value)),n.forEach((t=>{void 0!==this[t]&&(o[t]=this[t]),Object.defineProperty(this,t,{get:()=>o[t],set(i){this.attributeChangedCallback(t,o[t],i)},configurable:!0,enumerable:!0})})),requestAnimationFrame((()=>{const i=this.children?Array.from(this.children):[];if(i.forEach((t=>t.parentElement.removeChild(t))),this._component=new t(Object.assign(Object.assign({},o),{children:i})).mount(this._shadowRoot,s),this._component._props=o,this._component.dispatchEvent=this.dispatchEvent.bind(this),this._component.mounted){const t=this._component.mounted(o,i,this._component.state);void 0!==t&&(this._component.state=t)}this.on=this._component.on.bind(this._component),this.run=this._component.run.bind(this._component),!1!==s.render&&this._component.run(".")}))}}disconnectedCallback(){var t,i,s,n;null===(i=null===(t=this._component)||void 0===t?void 0:t.unload)||void 0===i||i.call(t),null===(n=null===(s=this._component)||void 0===s?void 0:s.unmount)||void 0===n||n.call(s),this._component=null}attributeChangedCallback(t,s,n){if(this._component){const e=this._attrMap(t);this._component._props[e]=n,this._component.run("attributeChanged",e,s,n),n!==s&&!1!==i.render&&window.requestAnimationFrame((()=>{this._component.run(".")}))}}};var $=(t,i,s)=>{"undefined"!=typeof customElements&&customElements.define(t,w(i,s))};const j={meta:new WeakMap,defineMetadata(t,i,s){this.meta.has(s)||this.meta.set(s,{}),this.meta.get(s)[t]=i},getMetadataKeys(t){return t=Object.getPrototypeOf(t),this.meta.get(t)?Object.keys(this.meta.get(t)):[]},getMetadata(t,i){return i=Object.getPrototypeOf(i),this.meta.get(i)?this.meta.get(i)[t]:null}};function A(t,i={}){return(s,n,e)=>{const o=t?t.toString():n;return j.defineMetadata(`apprun-update:${o}`,{name:o,key:n,options:i},s),e}}function O(t,i={}){return function(s,n){const e=t?t.toString():n;j.defineMetadata(`apprun-update:${e}`,{name:e,key:n,options:i},s)}}function _(t,i){return function(s){return $(t,s,i),s}}const x=new Map;n.find("get-components")||n.on("get-components",(t=>t.components=x));const k=t=>t;class T{renderState(t,i=null){if(!this.view)return;let s=i||this.view(t);if(n.debug&&n.run("debug",{component:this,_:s?".":"-",state:t,vdom:s,el:this.element}),"object"!=typeof document)return;const e="string"==typeof this.element&&this.element?document.getElementById(this.element)||document.querySelector(this.element):this.element;if(e){const t="_c";this.unload?e._component===this&&e.getAttribute(t)===this.tracking_id||(this.tracking_id=(new Date).valueOf().toString(),e.setAttribute(t,this.tracking_id),"undefined"!=typeof MutationObserver&&(this.observer||(this.observer=new MutationObserver((t=>{t[0].oldValue!==this.tracking_id&&document.body.contains(e)||(this.unload(this.state),this.observer.disconnect(),this.observer=null)}))),this.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeOldValue:!0,attributeFilter:[t]}))):e.removeAttribute&&e.removeAttribute(t),e._component=this}!i&&s&&(s=r(s,this),this.options.transition&&document&&document.startViewTransition?document.startViewTransition((()=>n.render(e,s,this))):n.render(e,s,this)),this.rendered&&this.rendered(this.state)}setState(t,i={render:!0,history:!1}){if(t instanceof Promise)Promise.resolve(t).then((s=>{this.setState(s,i),this._state=t}));else{if(this._state=t,null==t)return;this.state=t,!1!==i.render&&(i.transition&&document&&document.startViewTransition?document.startViewTransition((()=>this.renderState(t))):this.renderState(t)),!1!==i.history&&this.enable_history&&(this._history=[...this._history,t],this._history_idx=this._history.length-1),"function"==typeof i.callback&&i.callback(this.state)}}constructor(i,s,n,e){this.state=i,this.view=s,this.update=n,this.options=e,this._app=new t,this._actions=[],this._global_events=[],this._history=[],this._history_idx=-1,this._history_prev=()=>{this._history_idx--,this._history_idx>=0?this.setState(this._history[this._history_idx],{render:!0,history:!1}):this._history_idx=0},this._history_next=()=>{this._history_idx++,this._history_idx<this._history.length?this.setState(this._history[this._history_idx],{render:!0,history:!1}):this._history_idx=this._history.length-1},this.start=(t=null,i)=>{if(this.mount(t,Object.assign({render:!0},i)),this.mounted&&"function"==typeof this.mounted){const t=this.mounted({},[],this.state);void 0!==t&&this.setState(t)}return this}}mount(t=null,i){var s,e;return console.assert(!this.element,"Component already mounted."),this.options=i=Object.assign(Object.assign({},this.options),i),this.element=t,this.global_event=i.global_event,this.enable_history=!!i.history,this.enable_history&&(this.on(i.history.prev||"history-prev",this._history_prev),this.on(i.history.next||"history-next",this._history_next)),i.route&&(this.update=this.update||{},this.update[i.route]||(this.update[i.route]=k)),this.add_actions(),this.state=null!==(e=null!==(s=this.state)&&void 0!==s?s:this.model)&&void 0!==e?e:{},"function"==typeof this.state&&(this.state=this.state()),this.setState(this.state,{render:!!i.render,history:!0}),n.debug&&(x.get(t)?x.get(t).push(this):x.set(t,[this])),this}is_global_event(t){return t&&(this.global_event||this._global_events.indexOf(t)>=0||t.startsWith("#")||t.startsWith("/")||t.startsWith("@"))}add_action(t,i,s={}){i&&"function"==typeof i&&(s.global&&this._global_events.push(t),this.on(t,((...e)=>{n.debug&&n.run("debug",{component:this,_:">",event:t,p:e,current_state:this.state,options:s});const o=i(this.state,...e);n.debug&&n.run("debug",{component:this,_:"<",event:t,p:e,newState:o,state:this.state,options:s}),this.setState(o,s)}),s))}add_actions(){const t=this.update||{};j.getMetadataKeys(this).forEach((i=>{if(i.startsWith("apprun-update:")){const s=j.getMetadata(i,this);t[s.name]=[this[s.key].bind(this),s.options]}}));const i={};Array.isArray(t)?t.forEach((t=>{const[s,n,e]=t;s.toString().split(",").forEach((t=>i[t.trim()]=[n,e]))})):Object.keys(t).forEach((s=>{const n=t[s];("function"==typeof n||Array.isArray(n))&&s.split(",").forEach((t=>i[t.trim()]=n))})),i["."]||(i["."]=k),Object.keys(i).forEach((t=>{const s=i[t];"function"==typeof s?this.add_action(t,s):Array.isArray(s)&&this.add_action(t,s[0],s[1])}))}run(t,...i){if(this.state instanceof Promise)return Promise.resolve(this.state).then((s=>{this.state=s,this.run(t,...i)}));{const s=t.toString();return this.is_global_event(s)?n.run(s,...i):this._app.run(s,...i)}}on(t,i,s){const e=t.toString();return this._actions.push({name:e,fn:i}),this.is_global_event(e)?n.on(e,i,s):this._app.on(e,i,s)}runAsync(t,...i){const s=t.toString();return this.is_global_event(s)?n.runAsync(s,...i):this._app.runAsync(s,...i)}query(t,...i){return this.runAsync(t,...i)}unmount(){var t;null===(t=this.observer)||void 0===t||t.disconnect(),this._actions.forEach((t=>{const{name:i,fn:s}=t;this.is_global_event(i)?n.off(i,s):this._app.off(i,s)}))}}T.t=!0;const M="//",E="///",C=t=>{if(t||(t="#"),t.startsWith("#")){const[i,...s]=t.split("/");n.run(i,...s)||n.run(E,i,...s),n.run(M,i,...s)}else if(t.startsWith("/")){const[i,s,...e]=t.split("/");n.run("/"+s,...e)||n.run(E,"/"+s,...e),n.run(M,"/"+s,...e)}else n.run(t)||n.run(E,t),n.run(M,t)};n.h=n.createElement=u,n.render=f,n.Fragment=h,n.webComponent=$,n.safeHTML=p,n.start=(t,i,s,n,e)=>{const o=Object.assign({render:!0,global_event:!0},e),r=new T(i,s,n);return e&&e.rendered&&(r.rendered=e.rendered),e&&e.mounted&&(r.mounted=e.mounted),r.start(t,o),r};const S=t=>{};
1
+ class t{constructor(){this._events={}}on(t,i,s={}){this._events[t]=this._events[t]||[],this._events[t].push({fn:i,options:s})}off(t,i){const s=this._events[t]||[];this._events[t]=s.filter((t=>t.fn!==i))}find(t){return this._events[t]}run(t,...i){const s=this.getSubscribers(t,this._events);return console.assert(s&&s.length>0,"No subscriber for event: "+t),s.forEach((s=>{const{fn:n,options:e}=s;return e.delay?this.delay(t,n,i,e):Object.keys(e).length>0?n.apply(this,[...i,e]):n.apply(this,i),!s.options.once})),s.length}once(t,i,s={}){this.on(t,i,Object.assign(Object.assign({},s),{once:!0}))}delay(t,i,s,n){n._t&&clearTimeout(n._t),n._t=setTimeout((()=>{clearTimeout(n._t),Object.keys(n).length>0?i.apply(this,[...s,n]):i.apply(this,s)}),n.delay)}runAsync(t,...i){const s=this.getSubscribers(t,this._events);console.assert(s&&s.length>0,"No subscriber for event: "+t);const n=s.map((t=>{const{fn:s,options:n}=t;return Object.keys(n).length>0?s.apply(this,[...i,n]):s.apply(this,i)}));return Promise.all(n)}query(t,...i){return this.query(t,...i)}getSubscribers(t,i){const s=i[t]||[];return i[t]=s.filter((t=>!t.options.once)),Object.keys(i).filter((i=>i.endsWith("*")&&t.startsWith(i.replace("*","")))).sort(((t,i)=>i.length-t.length)).forEach((n=>s.push(...i[n].map((i=>Object.assign(Object.assign({},i),{options:Object.assign(Object.assign({},i.options),{event:t})})))))),s}}let i;const s="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global;s.app&&s._AppRunVersions?i=s.app:(i=new t,s.app=i,s._AppRunVersions="AppRun-3");var n=i;const e=(t,i)=>(i?t.state[i]:t.state)||"",o=(t,i,s)=>{if(i){const n=t.state||{};n[i]=s,t.setState(n)}else t.setState(s)},r=(t,i)=>{if(Array.isArray(t))return t.map((t=>r(t,i)));{let{type:s,tag:h,props:c,children:l}=t;return h=h||s,l=l||(null==c?void 0:c.children),c&&Object.keys(c).forEach((t=>{t.startsWith("$")&&(((t,i,s,r)=>{if(t.startsWith("$on")){const s=i[t];if(t=t.substring(1),"boolean"==typeof s)i[t]=i=>r.run?r.run(t,i):n.run(t,i);else if("string"==typeof s)i[t]=t=>r.run?r.run(s,t):n.run(s,t);else if("function"==typeof s)i[t]=t=>r.setState(s(r.state,t));else if(Array.isArray(s)){const[e,...o]=s;"string"==typeof e?i[t]=t=>r.run?r.run(e,...o,t):n.run(e,...o,t):"function"==typeof e&&(i[t]=t=>r.setState(e(r.state,...o,t)))}}else if("$bind"===t){const n=i.type||"text",h="string"==typeof i[t]?i[t]:i.name;if("input"===s)switch(n){case"checkbox":i.checked=e(r,h),i.onclick=t=>o(r,h||t.target.name,t.target.checked);break;case"radio":i.checked=e(r,h)===i.value,i.onclick=t=>o(r,h||t.target.name,t.target.value);break;case"number":case"range":i.value=e(r,h),i.oninput=t=>o(r,h||t.target.name,Number(t.target.value));break;default:i.value=e(r,h),i.oninput=t=>o(r,h||t.target.name,t.target.value)}else"select"===s?(i.value=e(r,h),i.onchange=t=>{t.target.multiple||o(r,h||t.target.name,t.target.value)}):"option"===s?(i.selected=e(r,h),i.onclick=t=>o(r,h||t.target.name,t.target.selected)):"textarea"===s&&(i.innerHTML=e(r,h),i.oninput=t=>o(r,h||t.target.name,t.target.value))}else n.run("$",{key:t,tag:s,props:i,component:r})})(t,c,h,i),delete c[t])})),l&&r(l,i),t}};function h(t,...i){return l(i)}const c="_props";function l(t){const i=[],s=t=>{null!=t&&""!==t&&!1!==t&&i.push("function"==typeof t||"object"==typeof t?t:`${t}`)};return t&&t.forEach((t=>{Array.isArray(t)?t.forEach((t=>s(t))):s(t)})),i}function u(t,i,...s){const n=l(s);if("string"==typeof t)return{tag:t,props:i,children:n};if(Array.isArray(t))return t;if(void 0===t&&s)return n;if(Object.getPrototypeOf(t).t)return{tag:t,props:i,children:n};if("function"==typeof t)return t(i,n);throw new Error(`Unknown tag in vdom ${t}`)}const d=new WeakMap,f=(t,i,s={})=>{if(null==i||!1===i)return;!function(t,i,s={}){if(null==i||!1===i)return;if(i=m(i,s),!t)return;const n="SVG"===t.nodeName;Array.isArray(i)?v(t,i,n):v(t,[i],n)}("string"==typeof t&&t?document.getElementById(t)||document.querySelector(t):t,i=r(i,s),s)};function a(t,i,s){3!==i._op&&(s=s||"svg"===i.tag,!function(t,i){const s=t.nodeName,n=`${i.tag||""}`;return s.toUpperCase()===n.toUpperCase()}(t,i)?t.parentNode.replaceChild(b(i,s),t):(!(2&i._op)&&v(t,i.children,s),!(1&i._op)&&g(t,i.props,s)))}function v(t,i,s){var n,e;const o=(null===(n=t.childNodes)||void 0===n?void 0:n.length)||0,r=(null==i?void 0:i.length)||0,h=Math.min(o,r);for(let n=0;n<h;n++){const e=i[n];if(3===e._op)continue;const o=t.childNodes[n];if("string"==typeof e)o.textContent!==e&&(3===o.nodeType?o.nodeValue=e:t.replaceChild(y(e),o));else if(e instanceof HTMLElement||e instanceof SVGElement)t.insertBefore(e,o);else{const i=e.props&&e.props.key;if(i)if(o.key===i)a(t.childNodes[n],e,s);else{const r=d[i];if(r){const i=r.nextSibling;t.insertBefore(r,o),i?t.insertBefore(o,i):t.appendChild(o),a(t.childNodes[n],e,s)}else t.replaceChild(b(e,s),o)}else a(t.childNodes[n],e,s)}}let c=(null===(e=t.childNodes)||void 0===e?void 0:e.length)||0;for(;c>h;)t.removeChild(t.lastChild),c--;if(r>h){const n=document.createDocumentFragment();for(let t=h;t<i.length;t++)n.appendChild(b(i[t],s));t.appendChild(n)}}const p=t=>{const i=document.createElement("section");return i.insertAdjacentHTML("afterbegin",t),Array.from(i.children)};function y(t){if(0===(null==t?void 0:t.indexOf("_html:"))){const i=document.createElement("div");return i.insertAdjacentHTML("afterbegin",t.substring(6)),i}return document.createTextNode(null!=t?t:"")}function b(t,i){if(t instanceof HTMLElement||t instanceof SVGElement)return t;if("string"==typeof t)return y(t);if(!t.tag||"function"==typeof t.tag)return y(JSON.stringify(t));const s=(i=i||"svg"===t.tag)?document.createElementNS("http://www.w3.org/2000/svg",t.tag):document.createElement(t.tag);return g(s,t.props,i),t.children&&t.children.forEach((t=>s.appendChild(b(t,i)))),s}function g(t,i,s){const n=t[c]||{};i=function(t,i){i.class=i.class||i.className,delete i.className;const s={};return t&&Object.keys(t).forEach((t=>s[t]=null)),i&&Object.keys(i).forEach((t=>s[t]=i[t])),s}(n,i||{}),t[c]=i;for(const n in i){const e=i[n];if(n.startsWith("data-")){const i=n.substring(5).replace(/-(\w)/g,(t=>t[1].toUpperCase()));t.dataset[i]!==e&&(e||""===e?t.dataset[i]=e:delete t.dataset[i])}else if("style"===n)if(t.style.cssText&&(t.style.cssText=""),"string"==typeof e)t.style.cssText=e;else for(const i in e)t.style[i]!==e[i]&&(t.style[i]=e[i]);else if(n.startsWith("xlink")){const i=n.replace("xlink","").toLowerCase();null==e||!1===e?t.removeAttributeNS("http://www.w3.org/1999/xlink",i):t.setAttributeNS("http://www.w3.org/1999/xlink",i,e)}else n.startsWith("on")?e&&"function"!=typeof e?"string"==typeof e&&(e?t.setAttribute(n,e):t.removeAttribute(n)):t[n]=e:/^id$|^class$|^list$|^readonly$|^contenteditable$|^role|-|^for$/g.test(n)||s?t.getAttribute(n)!==e&&(e?t.setAttribute(n,e):t.removeAttribute(n)):t[n]!==e&&(t[n]=e);"key"===n&&e&&(d[e]=t)}i&&"function"==typeof i.ref&&window.requestAnimationFrame((()=>i.ref(t)))}function m(t,i,s=0){var n;if("string"==typeof t)return t;if(Array.isArray(t))return t.map((t=>m(t,i,s++)));let e=t;if(t&&"function"==typeof t.tag&&Object.getPrototypeOf(t.tag).t&&(e=function(t,i,s){const{tag:n,props:e,children:o}=t;let r=`_${s}`,h=e&&e.id;h?r=h:h=`_${s}${Date.now()}`;let c="section";e&&e.as&&(c=e.as,delete e.as),i.i||(i.i={});let l=i.i[r];if(l&&l instanceof n&&l.element)l.renderState(l.state);else{const t=document.createElement(c);l=i.i[r]=new n(Object.assign(Object.assign({},e),{children:o})).mount(t,{render:!0})}if(l.mounted){const t=l.mounted(e,o,l.state);void 0!==t&&l.setState(t)}return g(l.element,e,!1),l.element}(t,i,s)),e&&Array.isArray(e.children)){const t=null===(n=e.props)||void 0===n?void 0:n._component;if(t){let i=0;e.children=e.children.map((s=>m(s,t,i++)))}else e.children=e.children.map((t=>m(t,i,s++)))}return e}const w=(t,i={})=>class extends HTMLElement{constructor(){super()}get component(){return this._component}get state(){return this._component.state}static get observedAttributes(){return(i.observedAttributes||[]).map((t=>t.toLowerCase()))}connectedCallback(){if(this.isConnected&&!this._component){const s=i||{};this._shadowRoot=s.shadow?this.attachShadow({mode:"open"}):this;const n=s.observedAttributes||[],e=n.reduce(((t,i)=>{const s=i.toLowerCase();return s!==i&&(t[s]=i),t}),{});this._attrMap=t=>e[t]||t;const o={};Array.from(this.attributes).forEach((t=>o[this._attrMap(t.name)]=t.value)),n.forEach((t=>{void 0!==this[t]&&(o[t]=this[t]),Object.defineProperty(this,t,{get:()=>o[t],set(i){this.attributeChangedCallback(t,o[t],i)},configurable:!0,enumerable:!0})})),requestAnimationFrame((()=>{const i=this.children?Array.from(this.children):[];if(i.forEach((t=>t.parentElement.removeChild(t))),this._component=new t(Object.assign(Object.assign({},o),{children:i})).mount(this._shadowRoot,s),this._component._props=o,this._component.dispatchEvent=this.dispatchEvent.bind(this),this._component.mounted){const t=this._component.mounted(o,i,this._component.state);void 0!==t&&(this._component.state=t)}this.on=this._component.on.bind(this._component),this.run=this._component.run.bind(this._component),!1!==s.render&&this._component.run(".")}))}}disconnectedCallback(){var t,i,s,n;null===(i=null===(t=this._component)||void 0===t?void 0:t.unload)||void 0===i||i.call(t),null===(n=null===(s=this._component)||void 0===s?void 0:s.unmount)||void 0===n||n.call(s),this._component=null}attributeChangedCallback(t,s,n){if(this._component){const e=this._attrMap(t);this._component._props[e]=n,this._component.run("attributeChanged",e,s,n),n!==s&&!1!==i.render&&window.requestAnimationFrame((()=>{this._component.run(".")}))}}};var $=(t,i,s)=>{"undefined"!=typeof customElements&&customElements.define(t,w(i,s))};const j={meta:new WeakMap,defineMetadata(t,i,s){this.meta.has(s)||this.meta.set(s,{}),this.meta.get(s)[t]=i},getMetadataKeys(t){return t=Object.getPrototypeOf(t),this.meta.get(t)?Object.keys(this.meta.get(t)):[]},getMetadata(t,i){return i=Object.getPrototypeOf(i),this.meta.get(i)?this.meta.get(i)[t]:null}};function A(t,i={}){return(s,n,e)=>{const o=t?t.toString():n;return j.defineMetadata(`apprun-update:${o}`,{name:o,key:n,options:i},s),e}}function O(t,i={}){return function(s,n){const e=t?t.toString():n;j.defineMetadata(`apprun-update:${e}`,{name:e,key:n,options:i},s)}}function _(t,i){return function(s){return $(t,s,i),s}}const x=new Map;n.find("get-components")||n.on("get-components",(t=>t.components=x));const k=t=>t;class T{renderState(t,i=null){if(!this.view)return;let s=i||this.view(t);if(n.debug&&n.run("debug",{component:this,_:s?".":"-",state:t,vdom:s,el:this.element}),"object"!=typeof document)return;const e="string"==typeof this.element&&this.element?document.getElementById(this.element)||document.querySelector(this.element):this.element;if(!e)return;const o="_c";this.unload?e._component===this&&e.getAttribute(o)===this.tracking_id||(this.tracking_id=(new Date).valueOf().toString(),e.setAttribute(o,this.tracking_id),"undefined"!=typeof MutationObserver&&(this.observer||(this.observer=new MutationObserver((t=>{t[0].oldValue!==this.tracking_id&&document.body.contains(e)||(this.unload(this.state),this.observer.disconnect(),this.observer=null)}))),this.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeOldValue:!0,attributeFilter:[o]}))):e.removeAttribute&&e.removeAttribute(o),e._component=this,!i&&s&&(s=r(s,this),this.options.transition&&document&&document.startViewTransition?document.startViewTransition((()=>n.render(e,s,this))):n.render(e,s,this)),this.rendered&&this.rendered(this.state)}setState(t,i={render:!0,history:!1}){if(t instanceof Promise)Promise.resolve(t).then((s=>{this.setState(s,i),this._state=t}));else{if(this._state=t,null==t)return;this.state=t,!1!==i.render&&(i.transition&&document&&document.startViewTransition?document.startViewTransition((()=>this.renderState(t))):this.renderState(t)),!1!==i.history&&this.enable_history&&(this._history=[...this._history,t],this._history_idx=this._history.length-1),"function"==typeof i.callback&&i.callback(this.state)}}constructor(i,s,n,e){this.state=i,this.view=s,this.update=n,this.options=e,this._app=new t,this._actions=[],this._global_events=[],this._history=[],this._history_idx=-1,this._history_prev=()=>{this._history_idx--,this._history_idx>=0?this.setState(this._history[this._history_idx],{render:!0,history:!1}):this._history_idx=0},this._history_next=()=>{this._history_idx++,this._history_idx<this._history.length?this.setState(this._history[this._history_idx],{render:!0,history:!1}):this._history_idx=this._history.length-1},this.start=(t=null,i)=>{if(this.mount(t,Object.assign({render:!0},i)),this.mounted&&"function"==typeof this.mounted){const t=this.mounted({},[],this.state);void 0!==t&&this.setState(t)}return this}}mount(t=null,i){var s,e;return console.assert(!this.element,"Component already mounted."),this.options=i=Object.assign(Object.assign({},this.options),i),this.element=t,this.global_event=i.global_event,this.enable_history=!!i.history,this.enable_history&&(this.on(i.history.prev||"history-prev",this._history_prev),this.on(i.history.next||"history-next",this._history_next)),i.route&&(this.update=this.update||{},this.update[i.route]||(this.update[i.route]=k)),this.add_actions(),this.state=null!==(e=null!==(s=this.state)&&void 0!==s?s:this.model)&&void 0!==e?e:{},"function"==typeof this.state&&(this.state=this.state()),this.setState(this.state,{render:!!i.render,history:!0}),n.debug&&(x.get(t)?x.get(t).push(this):x.set(t,[this])),this}is_global_event(t){return t&&(this.global_event||this._global_events.indexOf(t)>=0||t.startsWith("#")||t.startsWith("/")||t.startsWith("@"))}add_action(t,i,s={}){i&&"function"==typeof i&&(s.global&&this._global_events.push(t),this.on(t,((...e)=>{n.debug&&n.run("debug",{component:this,_:">",event:t,p:e,current_state:this.state,options:s});const o=i(this.state,...e);n.debug&&n.run("debug",{component:this,_:"<",event:t,p:e,newState:o,state:this.state,options:s}),this.setState(o,s)}),s))}add_actions(){const t=this.update||{};j.getMetadataKeys(this).forEach((i=>{if(i.startsWith("apprun-update:")){const s=j.getMetadata(i,this);t[s.name]=[this[s.key].bind(this),s.options]}}));const i={};Array.isArray(t)?t.forEach((t=>{const[s,n,e]=t;s.toString().split(",").forEach((t=>i[t.trim()]=[n,e]))})):Object.keys(t).forEach((s=>{const n=t[s];("function"==typeof n||Array.isArray(n))&&s.split(",").forEach((t=>i[t.trim()]=n))})),i["."]||(i["."]=k),Object.keys(i).forEach((t=>{const s=i[t];"function"==typeof s?this.add_action(t,s):Array.isArray(s)&&this.add_action(t,s[0],s[1])}))}run(t,...i){if(this.state instanceof Promise)return Promise.resolve(this.state).then((s=>{this.state=s,this.run(t,...i)}));{const s=t.toString();return this.is_global_event(s)?n.run(s,...i):this._app.run(s,...i)}}on(t,i,s){const e=t.toString();return this._actions.push({name:e,fn:i}),this.is_global_event(e)?n.on(e,i,s):this._app.on(e,i,s)}runAsync(t,...i){const s=t.toString();return this.is_global_event(s)?n.runAsync(s,...i):this._app.runAsync(s,...i)}query(t,...i){return this.runAsync(t,...i)}unmount(){var t;null===(t=this.observer)||void 0===t||t.disconnect(),this._actions.forEach((t=>{const{name:i,fn:s}=t;this.is_global_event(i)?n.off(i,s):this._app.off(i,s)}))}}T.t=!0;const M="//",E="///",C=t=>{if(t||(t="#"),t.startsWith("#")){const[i,...s]=t.split("/");n.run(i,...s)||n.run(E,i,...s),n.run(M,i,...s)}else if(t.startsWith("/")){const[i,s,...e]=t.split("/");n.run("/"+s,...e)||n.run(E,"/"+s,...e),n.run(M,"/"+s,...e)}else n.run(t)||n.run(E,t),n.run(M,t)};n.h=n.createElement=u,n.render=f,n.Fragment=h,n.webComponent=$,n.safeHTML=p,n.start=(t,i,s,n,e)=>{const o=Object.assign({render:!0,global_event:!0},e),r=new T(i,s,n);return e&&e.rendered&&(r.rendered=e.rendered),e&&e.mounted&&(r.mounted=e.mounted),r.start(t,o),r};const S=t=>{};
2
2
  /**
3
3
  * @license
4
4
  * Copyright 2017 Google LLC