apprun 3.28.11 → 3.28.12
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/CHANGELOG.md +18 -1
- package/dist/apprun-dev-tools.js +1 -1
- package/dist/apprun-dev-tools.js.map +1 -1
- package/dist/apprun-html.esm.js +4 -4
- package/dist/apprun-html.esm.js.map +1 -1
- package/dist/apprun-html.js +1 -1
- package/dist/apprun-html.js.map +1 -1
- package/dist/apprun-play.js +1 -1
- package/dist/apprun-play.js.map +1 -1
- package/dist/apprun.esm.js +1 -1
- package/dist/apprun.esm.js.map +1 -1
- package/dist/apprun.js +1 -1
- package/dist/apprun.js.map +1 -1
- package/esm/apprun-html.js +1 -1
- package/esm/apprun-html.js.map +1 -1
- package/esm/apprun.js +2 -2
- package/esm/apprun.js.map +1 -1
- package/esm/vdom-my.js +5 -0
- package/esm/vdom-my.js.map +1 -1
- package/esm/vdom.js +2 -2
- package/esm/vdom.js.map +1 -1
- package/package.json +6 -6
- package/src/apprun-html.ts +1 -1
- package/src/apprun.ts +2 -3
- package/src/vdom-my.ts +6 -0
- package/src/vdom.ts +2 -2
- /package/{webpack.config.js → webpack.config.cjs} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
## Releases
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
## 3.28.12
|
|
7
|
+
|
|
8
|
+
* export safeHTML funciton
|
|
9
|
+
|
|
10
|
+
## 3.28.11
|
|
11
|
+
|
|
12
|
+
* Make the package type module
|
|
13
|
+
|
|
14
|
+
## 3.28.10
|
|
15
|
+
|
|
16
|
+
* Apply directive to _app.render_
|
|
17
|
+
|
|
18
|
+
## 3.28.9
|
|
19
|
+
|
|
20
|
+
* retire CLI
|
|
21
|
+
|
|
22
|
+
## 3.28.8
|
|
6
23
|
|
|
7
24
|
* Use lit-html@2
|
|
8
25
|
|
package/dist/apprun-dev-tools.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.apprun=t():e.apprun=t()}(this,(
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.apprun=t():e.apprun=t()}(this,(()=>(()=>{"use strict";var e={};e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),e.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var t={};e.r(t);let n;const o="object"==typeof self&&self.self===self&&self||"object"==typeof e.g&&e.g.global===e.g&&e.g;o.app&&o._AppRunVersions?n=o.app:(n=new class{constructor(){this._events={}}on(e,t,n={}){this._events[e]=this._events[e]||[],this._events[e].push({fn:t,options:n})}off(e,t){const n=this._events[e]||[];this._events[e]=n.filter((e=>e.fn!==t))}find(e){return this._events[e]}run(e,...t){const n=this.getSubscribers(e,this._events);return console.assert(n&&n.length>0,"No subscriber for event: "+e),n.forEach((n=>{const{fn:o,options:s}=n;return s.delay?this.delay(e,o,t,s):Object.keys(s).length>0?o.apply(this,[...t,s]):o.apply(this,t),!n.options.once})),n.length}once(e,t,n={}){this.on(e,t,Object.assign(Object.assign({},n),{once:!0}))}delay(e,t,n,o){o._t&&clearTimeout(o._t),o._t=setTimeout((()=>{clearTimeout(o._t),Object.keys(o).length>0?t.apply(this,[...n,o]):t.apply(this,n)}),o.delay)}query(e,...t){const n=this.getSubscribers(e,this._events);console.assert(n&&n.length>0,"No subscriber for event: "+e);const o=n.map((e=>{const{fn:n,options:o}=e;return Object.keys(o).length>0?n.apply(this,[...t,o]):n.apply(this,t)}));return Promise.all(o)}getSubscribers(e,t){const n=t[e]||[];return t[e]=n.filter((e=>!e.options.once)),Object.keys(t).filter((t=>t.endsWith("*")&&e.startsWith(t.replace("*","")))).sort(((e,t)=>t.length-e.length)).forEach((o=>n.push(...t[o].map((t=>Object.assign(Object.assign({},t),{options:Object.assign(Object.assign({},t.options),{event:e})})))))),n}},o.app=n,o._AppRunVersions="AppRun-3");const s=n;function l(e){return e.map((e=>i(e))).join("")}function c(e){for(var t in e)null==e[t]?delete e[t]:"object"==typeof e[t]&&c(e[t])}function i(e){if(!e)return"";if("_$litType$"in e)return e.toString();if(c(e),Array.isArray(e))return l(e);if("string"==typeof e)return e.startsWith("_html:")?e.substring(6):e;if(e.tag){const t=e.props?function(e){return Object.keys(e).map((t=>{return` ${"className"===t?"class":t}="${n=e[t],"object"==typeof n?Object.keys(n).map((e=>`${e}:${n[e]}`)).join(";"):n.toString()}"`;var n})).join("")}(e.props):"",n=e.children?l(e.children):"";return`<${e.tag}${t}>${n}</${e.tag}>`}return"object"==typeof e?JSON.stringify(e):void 0}const r=i;let a;function p(e){a=window.open("",e),a.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>`)}function u(e){a.document.write(e+"\n")}function f(){a.document.write("</pre>\n </body>\n </html>"),a.document.close()}app.debug=!0;const d=e=>{u(`import ${e.constructor.name} from '../src/${e.constructor.name}'`),u(`describe('${e.constructor.name}', ()=>{`),e._actions.forEach((t=>{"."!==t.name&&(u(` it ('should handle event: ${t.name}', (done)=>{`),u(` const component = new ${e.constructor.name}().mount();`),u(` component.run('${t.name}');`),u(" setTimeout(() => {"),u(" //expect(?).toHaveBeenCalled();"),u(" //expect(component.state).toBe(?);"),u(" done();"),u(" })"))})),u("});")};let m=!1,h=[];app.on("debug",(e=>{m&&e.vdom&&(h.push(e),console.log(`* ${h.length} state(s) recorded.`))}));var g;function v(e){const t=window.open("","_apprun_debug","toolbar=0");t.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">${e}</div>\n <\/script>\n </body>\n </html>`),t.document.close()}s.debug=!0,window["_apprun-help"]=["",()=>{Object.keys(window).forEach((e=>{e.startsWith("_apprun-")&&("_apprun-help"===e?console.log("AppRun Commands:"):console.log(`* ${e.substring(8)}: ${window[e][0]}`))}))}];const y=()=>{const e={components:{}};s.run("get-components",e);const{components:t}=e;return t};let b=Number(null===(g=null===window||void 0===window?void 0:window.localStorage)||void 0===g?void 0:g.getItem("__apprun_debugging__"))||0;if(s.on("debug",(e=>{1&b&&e.event&&console.log(e),2&b&&e.vdom&&console.log(e)})),window["_apprun-components"]=["components [print]",e=>{(e=>{const t=y(),n=[];if(t instanceof Map)for(let[e,o]of t){const t="string"==typeof e?document.getElementById(e):e;n.push({element:t,comps:o})}else Object.keys(t).forEach((e=>{const o="string"==typeof e?document.getElementById(e):e;n.push({element:o,comps:t[e]})}));if(e){const e=(e=>{const t=({events:e})=>s.h("ul",null,e&&e.filter((e=>"."!==e.name)).map((e=>s.h("li",null,e.name)))),n=({components:e})=>s.h("ul",null,e.map((e=>s.h("li",null,s.h("div",null,e.constructor.name),s.h(t,{events:e._actions})))));return s.h("ul",null,e.map((({element:e,comps:t})=>s.h("li",null,s.h("div",null,(e=>s.h("div",null,e.tagName.toLowerCase(),e.id?"#"+e.id:""," ",e.className&&e.className.split(" ").map((e=>"."+e)).join()))(e)),s.h(n,{components:t})))))})(n);v(r(e))}else n.forEach((({element:e,comps:t})=>console.log(e,t)))})("print"===e)}],window["_apprun-events"]=["events [print]",e=>{(e=>{const t=s._events,n={},o=y(),l=e=>e._actions.forEach((t=>{n[t.name]=n[t.name]||[],n[t.name].push(e)}));if(o instanceof Map)for(let[e,t]of o)t.forEach(l);else Object.keys(o).forEach((e=>o[e].forEach(l)));const c=[];if(Object.keys(n).forEach((e=>{c.push({event:e,components:n[e],global:!!t[e]})})),c.sort(((e,t)=>e.event>t.event?1:-1)).map((e=>e.event)),e){const e=(e=>{const t=({components:e})=>s.h("ul",null,e.map((e=>s.h("li",null,s.h("div",null,e.constructor.name))))),n=({events:e,global:n})=>s.h("ul",null,e&&e.filter((e=>e.global===n&&"."!==e.event)).map((({event:e,components:n})=>s.h("li",null,s.h("div",null,e),s.h(t,{components:n})))));return s.h("div",null,s.h("div",null,"GLOBAL EVENTS"),s.h(n,{events:e,global:!0}),s.h("div",null,"LOCAL EVENTS"),s.h(n,{events:e,global:!1}))})(c);v(r(e))}else console.log("=== GLOBAL EVENTS ==="),c.filter((e=>e.global&&"."!==e.event)).forEach((({event:e,components:t})=>console.log({event:e},t))),console.log("=== LOCAL EVENTS ==="),c.filter((e=>!e.global&&"."!==e.event)).forEach((({event:e,components:t})=>console.log({event:e},t)))})("print"===e)}],window["_apprun-log"]=["log [event|view] on|off",(e,t)=>{var n;"on"===e?b=3:"off"===e?b=0:"event"===e?"on"===t?b|=1:"off"===t&&(b&=-2):"view"===e&&("on"===t?b|=2:"off"===t&&(b&=-3)),console.log(`* log ${e} ${t||""}`),null===(n=null===window||void 0===window?void 0:window.localStorage)||void 0===n||n.setItem("__apprun_debugging__",`${b}`)}],window["_apprun-create-event-tests"]=["create-event-tests",()=>(()=>{const e={components:{}};app.run("get-components",e);const{components:t}=e;if(p(""),t instanceof Map)for(let[e,n]of t)n.forEach(d);else Object.keys(t).forEach((e=>{t[e].forEach(d)}));f()})()],window["_apprun-create-state-tests"]=["create-state-tests <start|stop>",e=>{var t;"start"===(t=e)?(h=[],m=!0,console.log("* State logging started.")):"stop"===t?(0!==h.length?(p(""),h.forEach(((e,t)=>{u(` it ('view snapshot: #${t+1}', ()=>{`),u(` const component = new ${e.component.constructor.name}()`),u(` const state = ${JSON.stringify(e.state,void 0,2)};`),u(" const vdom = component['view'](state);"),u(" expect(JSON.stringify(vdom)).toMatchSnapshot();"),u(" })")})),f()):console.log("* No state recorded."),m=!1,h=[],console.log("* State logging stopped.")):console.log("create-state-tests <start|stop>")}],window._apprun=e=>{const[t,...n]=e[0].split(" ").filter((e=>!!e)),o=window[`_apprun-${t}`];o?o[1](...n):window["_apprun-help"][1]()},console.info('AppRun DevTools 2.27: type "_apprun `help`" to list all available commands.'),window.__REDUX_DEVTOOLS_EXTENSION__){let e=!1;const t=window.__REDUX_DEVTOOLS_EXTENSION__.connect();if(t){const n=location.hash||"#";t.send(n,"");const o=[{component:null,state:""}];console.info("Connected to the Redux DevTools"),t.subscribe((t=>{if("START"===t.type)e=!0;else if("STOP"===t.type)e=!1;else if("DISPATCH"===t.type){const e=t.payload.index;if(0===e)s.run(n);else{const{component:t,state:n}=o[e];null==t||t.setState(n)}}}));const l=(e,n,s)=>{null!=s&&(o.push({component:e,state:s}),t.send(n,s))};s.on("debug",(t=>{if(e&&t.event){const e=t.newState,n={type:t.event,payload:t.p},o=t.component;e instanceof Promise?e.then((e=>l(o,n,e))):l(o,n,e)}}))}}return t})()));
|
|
2
2
|
//# sourceMappingURL=apprun-dev-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dist/apprun-dev-tools.js","mappings":"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","sources":["webpack://apprun/webpack/universalModuleDefinition","webpack://apprun/webpack/bootstrap","webpack://apprun/webpack/runtime/global","webpack://apprun/webpack/runtime/make namespace object","webpack://apprun/./src/app.ts","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, function() {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\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})();","// 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 { 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\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 query(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 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","\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) : key;\n data.push({ element, comps });\n }\n } else {\n Object.keys(components).forEach(el => {\n const element = typeof el === 'string' ? document.getElementById(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","__webpack_require__","g","globalThis","Function","e","window","r","Symbol","toStringTag","Object","defineProperty","value","self","global","constructor","_events","on","name","fn","options","push","off","subscribers","filter","sub","find","run","args","getSubscribers","console","assert","length","forEach","delay","keys","apply","once","_t","clearTimeout","setTimeout","query","promises","map","Promise","all","events","evt","endsWith","startsWith","replace","sort","a","b","event","toHTMLArray","nodes","node","toHTML","join","clean","obj","i","vdom","toString","Array","isArray","substring","tag","props","prop","toProps","children","JSON","stringify","win","openWin","open","document","write","location","href","text","closeWin","close","app","print_component_test","component","_actions","action","recording","p","log","newWin","html","cmd","get_components","o","components","debugging","Number","localStorage","getItem","print","data","Map","key","comps","element","getElementById","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","undefined","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/webpack/bootstrap","webpack://apprun/webpack/runtime/global","webpack://apprun/webpack/runtime/make namespace object","webpack://apprun/./src/app.ts","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 ","// The require scope\nvar __webpack_require__ = {};\n\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})();","// 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 { 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\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 query(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 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","\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) : key;\n data.push({ element, comps });\n }\n } else {\n Object.keys(components).forEach(el => {\n const element = typeof el === 'string' ? document.getElementById(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","__webpack_require__","g","globalThis","Function","e","window","r","Symbol","toStringTag","Object","defineProperty","value","self","global","constructor","_events","on","name","fn","options","push","off","subscribers","filter","sub","find","run","args","getSubscribers","console","assert","length","forEach","delay","keys","apply","once","_t","clearTimeout","setTimeout","query","promises","map","Promise","all","events","evt","endsWith","startsWith","replace","sort","a","b","event","toHTMLArray","nodes","node","toHTML","join","clean","obj","i","vdom","toString","Array","isArray","substring","tag","props","prop","toProps","children","JSON","stringify","win","openWin","open","document","write","location","href","text","closeWin","close","app","print_component_test","component","_actions","action","recording","p","log","newWin","html","cmd","get_components","o","components","debugging","Number","localStorage","getItem","print","data","Map","key","comps","element","getElementById","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","undefined","strings","command","info","devTools_running","devTools","connect","hash","send","buf","subscribe","message","type","payload","index","setState","newState","then"],"sourceRoot":""}
|
package/dist/apprun-html.esm.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
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)}query(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)}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:l}=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])})),l&&(l=r(l,i)),{tag:s,props:h,children:l}):t}};function h(t,...i){return l(i)}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 c(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 u=new WeakMap,d=(t,i,s={})=>{null!=i&&!1!==i&&function(t,i,s={}){if(null==i||!1===i)return;i=b(i,s);const n="SVG"===(null==t?void 0:t.nodeName);if(!t)return;Array.isArray(i)?f(t,i,n):f(t,[i],n)}(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(p(i,s),t):(!(2&i._op)&&f(t,i.children,s),!(1&i._op)&&y(t,i.props,s)))}function f(t,i,s){var n;const e=(null===(n=t.childNodes)||void 0===n?void 0:n.length)||0,o=(null==i?void 0:i.length)||0,r=Math.min(e,o);for(let n=0;n<r;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(v(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=u[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(p(e,s),o)}else a(t.childNodes[n],e,s)}}let h=t.childNodes.length;for(;h>r;)t.removeChild(t.lastChild),h--;if(o>r){const n=document.createDocumentFragment();for(let t=r;t<i.length;t++)n.appendChild(p(i[t],s));t.appendChild(n)}}function v(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 p(t,i){if(t instanceof HTMLElement||t instanceof SVGElement)return t;if("string"==typeof t)return v(t);if(!t.tag||"function"==typeof t.tag)return v(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 y(s,t.props,i),t.children&&t.children.forEach((t=>s.appendChild(p(t,i)))),s}function y(t,i,s){const n=t._props||{};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._props=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|-/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&&(u[e]=t)}i&&"function"==typeof i.ref&&window.requestAnimationFrame((()=>i.ref(t)))}function b(t,i,s=0){var n;if("string"==typeof t)return t;if(Array.isArray(t))return t.map((t=>b(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 l="section";e&&e.as&&(l=e.as,delete e.as),i.i||(i.i={});let c=i.i[r];if(!(c&&c instanceof n&&c.element)){const t=document.createElement(l);c=i.i[r]=new n(Object.assign(Object.assign({},e),{children:o})).start(t)}if(c.mounted){const t=c.mounted(e,o,c.state);void 0!==t&&c.setState(t)}return y(c.element,e,!1),c.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=>b(s,t,i++)))}else e.children=e.children.map((t=>b(t,i,s++)))}return e}const g=(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 w=(t,i,s)=>{"undefined"!=typeof customElements&&customElements.define(t,g(i,s))};const m={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 $(t,i={}){return(s,n,e)=>{const o=t?t.toString():n;return m.defineMetadata(`apprun-update:${o}`,{name:o,key:n,options:i},s),e}}function j(t,i={}){return function(s,n){const e=t?t.toString():n;m.defineMetadata(`apprun-update:${e}`,{name:e,key:n,options:i},s)}}function A(t,i){return function(s){return w(t,s,i),s}}const O=new Map;n.on("get-components",(t=>t.components=O));const _=t=>t;class x{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)=>this.mount(t,Object.assign({render:!0},i))}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?document.getElementById(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),n.render(e,s,this)),this.rendered&&this.rendered(this.state)}setState(t,i={render:!0,history:!1}){if(t instanceof Promise)Promise.all([t,this._state]).then((t=>{t[0]&&this.setState(t[0])})).catch((t=>{throw console.error(t),t})),this._state=t;else{if(this._state=t,null==t)return;this.state=t,!1!==i.render&&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)}}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]=_)),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()),i.render?this.setState(this.state,{render:!0,history:!0}):this.setState(this.state,{render:!1,history:!0}),n.debug&&(O.get(t)?O.get(t).push(this):O.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||{};m.getMetadataKeys(this).forEach((i=>{if(i.startsWith("apprun-update:")){const s=m.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["."]=_),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){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)}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)}))}}x.t=!0;const k="//",T="///",M=t=>{if(t||(t="#"),t.startsWith("#")){const[i,...s]=t.split("/");n.run(i,...s)||n.run("///",i,...s),n.run("//",i,...s)}else if(t.startsWith("/")){const[i,s,...e]=t.split("/");n.run("/"+s,...e)||n.run("///","/"+s,...e),n.run("//","/"+s,...e)}else n.run(t)||n.run("///",t),n.run("//",t)};n.h=n.createElement=c,n.render=d,n.Fragment=h,n.webComponent=w,n.start=(t,i,s,n,e)=>{const o=Object.assign({render:!0,global_event:!0},e),r=new x(i,s,n);return e&&e.rendered&&(r.rendered=e.rendered),r.mount(t,o),r};const E=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)}query(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)}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 c(i)}function c(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 l(t,i,...s){const n=c(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 u=new WeakMap,a=(t,i,s={})=>{null!=i&&!1!==i&&function(t,i,s={}){if(null==i||!1===i)return;i=g(i,s);const n="SVG"===(null==t?void 0:t.nodeName);if(!t)return;Array.isArray(i)?f(t,i,n):f(t,[i],n)}(t,i=r(i,s),s)};function d(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(y(i,s),t):(!(2&i._op)&&f(t,i.children,s),!(1&i._op)&&b(t,i.props,s)))}function f(t,i,s){var n;const e=(null===(n=t.childNodes)||void 0===n?void 0:n.length)||0,o=(null==i?void 0:i.length)||0,r=Math.min(e,o);for(let n=0;n<r;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(p(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)d(t.childNodes[n],e,s);else{const r=u[i];if(r){const i=r.nextSibling;t.insertBefore(r,o),i?t.insertBefore(o,i):t.appendChild(o),d(t.childNodes[n],e,s)}else t.replaceChild(y(e,s),o)}else d(t.childNodes[n],e,s)}}let h=t.childNodes.length;for(;h>r;)t.removeChild(t.lastChild),h--;if(o>r){const n=document.createDocumentFragment();for(let t=r;t<i.length;t++)n.appendChild(y(i[t],s));t.appendChild(n)}}const v=t=>{const i=document.createElement("section");return i.insertAdjacentHTML("afterbegin",t),Array.from(i.childNodes)};function p(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 y(t,i){if(t instanceof HTMLElement||t instanceof SVGElement)return t;if("string"==typeof t)return p(t);if(!t.tag||"function"==typeof t.tag)return p(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 b(s,t.props,i),t.children&&t.children.forEach((t=>s.appendChild(y(t,i)))),s}function b(t,i,s){const n=t._props||{};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._props=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|-/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&&(u[e]=t)}i&&"function"==typeof i.ref&&window.requestAnimationFrame((()=>i.ref(t)))}function g(t,i,s=0){var n;if("string"==typeof t)return t;if(Array.isArray(t))return t.map((t=>g(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)){const t=document.createElement(c);l=i.i[r]=new n(Object.assign(Object.assign({},e),{children:o})).start(t)}if(l.mounted){const t=l.mounted(e,o,l.state);void 0!==t&&l.setState(t)}return b(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=>g(s,t,i++)))}else e.children=e.children.map((t=>g(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 m=(t,i,s)=>{"undefined"!=typeof customElements&&customElements.define(t,w(i,s))};const $={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 j(t,i={}){return(s,n,e)=>{const o=t?t.toString():n;return $.defineMetadata(`apprun-update:${o}`,{name:o,key:n,options:i},s),e}}function A(t,i={}){return function(s,n){const e=t?t.toString():n;$.defineMetadata(`apprun-update:${e}`,{name:e,key:n,options:i},s)}}function O(t,i){return function(s){return m(t,s,i),s}}const _=new Map;n.on("get-components",(t=>t.components=_));const x=t=>t;class k{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)=>this.mount(t,Object.assign({render:!0},i))}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?document.getElementById(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),n.render(e,s,this)),this.rendered&&this.rendered(this.state)}setState(t,i={render:!0,history:!1}){if(t instanceof Promise)Promise.all([t,this._state]).then((t=>{t[0]&&this.setState(t[0])})).catch((t=>{throw console.error(t),t})),this._state=t;else{if(this._state=t,null==t)return;this.state=t,!1!==i.render&&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)}}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]=x)),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()),i.render?this.setState(this.state,{render:!0,history:!0}):this.setState(this.state,{render:!1,history:!0}),n.debug&&(_.get(t)?_.get(t).push(this):_.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||{};$.getMetadataKeys(this).forEach((i=>{if(i.startsWith("apprun-update:")){const s=$.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["."]=x),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){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)}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)}))}}k.t=!0;const T="//",M="///",E=t=>{if(t||(t="#"),t.startsWith("#")){const[i,...s]=t.split("/");n.run(i,...s)||n.run("///",i,...s),n.run("//",i,...s)}else if(t.startsWith("/")){const[i,s,...e]=t.split("/");n.run("/"+s,...e)||n.run("///","/"+s,...e),n.run("//","/"+s,...e)}else n.run(t)||n.run("///",t),n.run("//",t)};n.h=n.createElement=l,n.render=a,n.Fragment=h,n.webComponent=m,n.start=(t,i,s,n,e)=>{const o=Object.assign({render:!0,global_event:!0},e),r=new k(i,s,n);return e&&e.rendered&&(r.rendered=e.rendered),r.mount(t,o),r};const C=t=>{};
|
|
2
2
|
/**
|
|
3
3
|
* @license
|
|
4
4
|
* Copyright 2017 Google LLC
|
|
5
5
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
6
6
|
*/
|
|
7
|
-
var
|
|
7
|
+
var S;n.on("$",C),n.on("debug",(t=>C)),n.on("//",C),n.on("#",C),n.route=E,n.on("route",(t=>n.route&&n.route(t))),"object"==typeof document&&document.addEventListener("DOMContentLoaded",(()=>{n.route===E&&(window.onpopstate=()=>E(location.hash),document.body.hasAttribute("apprun-no-init")||E(location.hash))})),"object"==typeof window&&(window.Component=k,window.React=n,window.on=A,window.customElement=O);const N=globalThis.trustedTypes,L=N?N.createPolicy("lit-html",{createHTML:t=>t}):void 0,U=`lit$${(Math.random()+"").slice(9)}$`,H="?"+U,D=`<${H}>`,I=document,V=(t="")=>I.createComment(t),G=t=>null===t||"object"!=typeof t&&"function"!=typeof t,P=Array.isArray,R=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,W=/-->/g,q=/>/g,z=/>|[ \n\r](?:([^\s"'>=/]+)([ \n\r]*=[ \n\r]*(?:[^ \n\r"'`<>=]|("|')|))|$)/g,F=/'/g,Z=/"/g,J=/^(?:script|style|textarea|title)$/i,K=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),B=K(1),Q=K(2),X=Symbol.for("lit-noChange"),Y=Symbol.for("lit-nothing"),tt=new WeakMap,it=(t,i,s)=>{var n,e;const o=null!==(n=null==s?void 0:s.renderBefore)&&void 0!==n?n:i;let r=o._$litPart$;if(void 0===r){const t=null!==(e=null==s?void 0:s.renderBefore)&&void 0!==e?e:null;o._$litPart$=r=new ht(i.insertBefore(V(),t),t,void 0,null!=s?s:{})}return r._$AI(t),r},st=I.createTreeWalker(I,129,null,!1),nt=(t,i)=>{const s=t.length-1,n=[];let e,o=2===i?"<svg>":"",r=R;for(let i=0;i<s;i++){const s=t[i];let h,c,l=-1,u=0;for(;u<s.length&&(r.lastIndex=u,c=r.exec(s),null!==c);)u=r.lastIndex,r===R?"!--"===c[1]?r=W:void 0!==c[1]?r=q:void 0!==c[2]?(J.test(c[2])&&(e=RegExp("</"+c[2],"g")),r=z):void 0!==c[3]&&(r=z):r===z?">"===c[0]?(r=null!=e?e:R,l=-1):void 0===c[1]?l=-2:(l=r.lastIndex-c[2].length,h=c[1],r=void 0===c[3]?z:'"'===c[3]?Z:F):r===Z||r===F?r=z:r===W||r===q?r=R:(r=z,e=void 0);const a=r===z&&t[i+1].startsWith("/>")?" ":"";o+=r===R?s+D:l>=0?(n.push(h),s.slice(0,l)+"$lit$"+s.slice(l)+U+a):s+U+(-2===l?(n.push(void 0),i):a)}const h=o+(t[s]||"<?>")+(2===i?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==L?L.createHTML(h):h,n]};class et{constructor({strings:t,_$litType$:i},s){let n;this.parts=[];let e=0,o=0;const r=t.length-1,h=this.parts,[c,l]=nt(t,i);if(this.el=et.createElement(c,s),st.currentNode=this.el.content,2===i){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(n=st.nextNode())&&h.length<r;){if(1===n.nodeType){if(n.hasAttributes()){const t=[];for(const i of n.getAttributeNames())if(i.endsWith("$lit$")||i.startsWith(U)){const s=l[o++];if(t.push(i),void 0!==s){const t=n.getAttribute(s.toLowerCase()+"$lit$").split(U),i=/([.?@])?(.*)/.exec(s);h.push({type:1,index:e,name:i[2],strings:t,ctor:"."===i[1]?lt:"?"===i[1]?at:"@"===i[1]?dt:ct})}else h.push({type:6,index:e})}for(const i of t)n.removeAttribute(i)}if(J.test(n.tagName)){const t=n.textContent.split(U),i=t.length-1;if(i>0){n.textContent=N?N.emptyScript:"";for(let s=0;s<i;s++)n.append(t[s],V()),st.nextNode(),h.push({type:2,index:++e});n.append(t[i],V())}}}else if(8===n.nodeType)if(n.data===H)h.push({type:2,index:e});else{let t=-1;for(;-1!==(t=n.data.indexOf(U,t+1));)h.push({type:7,index:e}),t+=U.length-1}e++}}static createElement(t,i){const s=I.createElement("template");return s.innerHTML=t,s}}function ot(t,i,s=t,n){var e,o,r,h;if(i===X)return i;let c=void 0!==n?null===(e=s._$Cl)||void 0===e?void 0:e[n]:s._$Cu;const l=G(i)?void 0:i._$litDirective$;return(null==c?void 0:c.constructor)!==l&&(null===(o=null==c?void 0:c._$AO)||void 0===o||o.call(c,!1),void 0===l?c=void 0:(c=new l(t),c._$AT(t,s,n)),void 0!==n?(null!==(r=(h=s)._$Cl)&&void 0!==r?r:h._$Cl=[])[n]=c:s._$Cu=c),void 0!==c&&(i=ot(t,c._$AS(t,i.values),c,n)),i}class rt{constructor(t,i){this.v=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(t){var i;const{el:{content:s},parts:n}=this._$AD,e=(null!==(i=null==t?void 0:t.creationScope)&&void 0!==i?i:I).importNode(s,!0);st.currentNode=e;let o=st.nextNode(),r=0,h=0,c=n[0];for(;void 0!==c;){if(r===c.index){let i;2===c.type?i=new ht(o,o.nextSibling,this,t):1===c.type?i=new c.ctor(o,c.name,c.strings,this,t):6===c.type&&(i=new ft(o,this,t)),this.v.push(i),c=n[++h]}r!==(null==c?void 0:c.index)&&(o=st.nextNode(),r++)}return e}m(t){let i=0;for(const s of this.v)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class ht{constructor(t,i,s,n){var e;this.type=2,this._$AH=Y,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=n,this._$Cg=null===(e=null==n?void 0:n.isConnected)||void 0===e||e}get _$AU(){var t,i;return null!==(i=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==i?i:this._$Cg}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=ot(this,t,i),G(t)?t===Y||null==t||""===t?(this._$AH!==Y&&this._$AR(),this._$AH=Y):t!==this._$AH&&t!==X&&this.$(t):void 0!==t._$litType$?this.T(t):void 0!==t.nodeType?this.k(t):(t=>{var i;return P(t)||"function"==typeof(null===(i=t)||void 0===i?void 0:i[Symbol.iterator])})(t)?this.S(t):this.$(t)}A(t,i=this._$AB){return this._$AA.parentNode.insertBefore(t,i)}k(t){this._$AH!==t&&(this._$AR(),this._$AH=this.A(t))}$(t){this._$AH!==Y&&G(this._$AH)?this._$AA.nextSibling.data=t:this.k(I.createTextNode(t)),this._$AH=t}T(t){var i;const{values:s,_$litType$:n}=t,e="number"==typeof n?this._$AC(t):(void 0===n.el&&(n.el=et.createElement(n.h,this.options)),n);if((null===(i=this._$AH)||void 0===i?void 0:i._$AD)===e)this._$AH.m(s);else{const t=new rt(e,this),i=t.p(this.options);t.m(s),this.k(i),this._$AH=t}}_$AC(t){let i=tt.get(t.strings);return void 0===i&&tt.set(t.strings,i=new et(t)),i}S(t){P(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,n=0;for(const e of t)n===i.length?i.push(s=new ht(this.A(V()),this.A(V()),this,this.options)):s=i[n],s._$AI(e),n++;n<i.length&&(this._$AR(s&&s._$AB.nextSibling,n),i.length=n)}_$AR(t=this._$AA.nextSibling,i){var s;for(null===(s=this._$AP)||void 0===s||s.call(this,!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){var i;void 0===this._$AM&&(this._$Cg=t,null===(i=this._$AP)||void 0===i||i.call(this,t))}}class ct{constructor(t,i,s,n,e){this.type=1,this._$AH=Y,this._$AN=void 0,this.element=t,this.name=i,this._$AM=n,this.options=e,s.length>2||""!==s[0]||""!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=Y}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,s,n){const e=this.strings;let o=!1;if(void 0===e)t=ot(this,t,i,0),o=!G(t)||t!==this._$AH&&t!==X,o&&(this._$AH=t);else{const n=t;let r,h;for(t=e[0],r=0;r<e.length-1;r++)h=ot(this,n[s+r],i,r),h===X&&(h=this._$AH[r]),o||(o=!G(h)||h!==this._$AH[r]),h===Y?t=Y:t!==Y&&(t+=(null!=h?h:"")+e[r+1]),this._$AH[r]=h}o&&!n&&this.C(t)}C(t){t===Y?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=t?t:"")}}class lt extends ct{constructor(){super(...arguments),this.type=3}C(t){this.element[this.name]=t===Y?void 0:t}}const ut=N?N.emptyScript:"";class at extends ct{constructor(){super(...arguments),this.type=4}C(t){t&&t!==Y?this.element.setAttribute(this.name,ut):this.element.removeAttribute(this.name)}}class dt extends ct{constructor(t,i,s,n,e){super(t,i,s,n,e),this.type=5}_$AI(t,i=this){var s;if((t=null!==(s=ot(this,t,i,0))&&void 0!==s?s:Y)===X)return;const n=this._$AH,e=t===Y&&n!==Y||t.capture!==n.capture||t.once!==n.once||t.passive!==n.passive,o=t!==Y&&(n===Y||e);e&&this.element.removeEventListener(this.name,this,n),o&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var i,s;"function"==typeof this._$AH?this._$AH.call(null!==(s=null===(i=this.options)||void 0===i?void 0:i.host)&&void 0!==s?s:this.element,t):this._$AH.handleEvent(t)}}class ft{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){ot(this,t)}}const vt=window.litHtmlPolyfillSupport;null==vt||vt(et,ht),(null!==(S=globalThis.litHtmlVersions)&&void 0!==S?S:globalThis.litHtmlVersions=[]).push("2.2.1");
|
|
8
8
|
/**
|
|
9
9
|
* @license
|
|
10
10
|
* Copyright 2017 Google LLC
|
|
11
11
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
12
12
|
*/
|
|
13
|
-
const
|
|
13
|
+
const pt=2,yt=5,bt=t=>(...i)=>({_$litDirective$:t,values:i});class gt{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,i,s){this._$Ct=t,this._$AM=i,this._$Ci=s}_$AS(t,i){return this.update(t,i)}update(t,i){return this.render(...i)}}
|
|
14
14
|
/**
|
|
15
15
|
* @license
|
|
16
16
|
* Copyright 2017 Google LLC
|
|
17
17
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
18
|
-
*/class
|
|
18
|
+
*/class wt extends gt{constructor(t){if(super(t),this.it=Y,t.type!==pt)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===Y||null==t)return this.ft=void 0,this.it=t;if(t===X)return t;if("string"!=typeof t)throw Error(this.constructor.directiveName+"() called with a non-string value");if(t===this.it)return this.ft;this.it=t;const i=[t];return i.raw=i,this.ft={_$litType$:this.constructor.resultType,strings:i,values:[]}}}wt.directiveName="unsafeHTML",wt.resultType=1;const mt=bt(wt);function $t(t,i,s){i&&("string"==typeof i?(t._$litPart$||t.replaceChildren(),it(B`${mt(i)}`,t)):"_$litType$"in i?(t._$litPart$||t.replaceChildren(),it(i,t)):(a(t,i,s),t._$litPart$=void 0))}const jt=bt(class extends gt{constructor(t){if(super(t),t.type!==yt)throw new Error("${run} can only be used in event handlers")}update(t,i){let{element:s,name:e}=t;const o=()=>{let t=s._component;for(;!t&&s;)s=s.parentElement,t=s&&s._component;return console.assert(!!t,"Component not found."),t},[r,...h]=i;return"string"==typeof r?s[`on${e}`]=t=>{const i=o();i?i.run(r,...h,t):n.run(r,...h,t)}:"function"==typeof r&&(s[`on${e}`]=t=>o().setState(r(o().state,...h,t))),this.render()}render(){return X}});n.createElement=l,n.render=$t,n.Fragment=h,"object"==typeof window&&(window.html=B,window.svg=Q,window.run=jt);export{k as Component,M as ROUTER_404_EVENT,T as ROUTER_EVENT,n as app,O as customElement,n as default,j as event,B as html,A as on,$t as render,jt as run,v as safeHTML,Q as svg,j as update};
|
|
19
19
|
//# sourceMappingURL=apprun-html.esm.js.map
|