apprun 3.37.0 → 3.37.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.
@@ -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,(()=>(()=>{"use strict";var e={672:(e,t,n)=>{n.d(t,{C:()=>o});const o="AppRun-3.37.0"},859:(e,t,n)=>{n.d(t,{A:()=>c});var o=n(672);const s=o.C;let r;const l="undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self?self:{};l.app&&l._AppRunVersions?r=l.app:(r=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;if(!o||"function"!=typeof o)return console.error(`AppRun event handler for '${e}' is not a function:`,o),!1;if(s.delay)this.delay(e,o,t,s);else try{Object.keys(s).length>0?o.apply(this,[...t,s]):o.apply(this,t)}catch(t){console.error(`Error in event handler for '${e}':`,t)}return!n.options.once})),n.length}once(e,t,n={}){this.on(e,t,{...n,once:!0})}delay(e,t,n,o){o._t&&clearTimeout(o._t),o._t=setTimeout((()=>{clearTimeout(o._t);try{Object.keys(o).length>0?t.apply(this,[...n,o]):t.apply(this,n)}catch(t){console.error(`Error in delayed event handler for '${e}':`,t)}}),o.delay)}runAsync(e,...t){const n=this.getSubscribers(e,this._events);console.assert(n&&n.length>0,"No subscriber for event: "+e);const o=n.map((n=>{const{fn:o,options:s}=n;if(!o||"function"!=typeof o)return console.error(`AppRun async event handler for '${e}' is not a function:`,o),Promise.resolve(null);try{return Object.keys(s).length>0?o.apply(this,[...t,s]):o.apply(this,t)}catch(t){return console.error(`Error in async event handler for '${e}':`,t),Promise.reject(t)}}));return Promise.all(o)}query(e,...t){return console.warn("app.query() is deprecated. Use app.runAsync() instead."),this.runAsync(e,...t)}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=>({...t,options:{...t.options,event:e}})))))),n}},l.app=r,l._AppRunVersions=s);const c=r}},t={};function n(o){var s=t[o];if(void 0!==s)return s.exports;var r=t[o]={exports:{}};return e[o](r,r.exports,n),r.exports}n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var o=n(859);function s(e){return e.map((e=>l(e))).join("")}function r(e){for(var t in e)null==e[t]?delete e[t]:"object"==typeof e[t]&&r(e[t])}function l(e){if(!e)return"";if(e._$litType$)return e.toString();if(r(e),Array.isArray(e))return s(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?s(e.children):"";return`<${e.tag}${t}>${n}</${e.tag}>`}return"object"==typeof e?JSON.stringify(e):void 0}const c=l;let i;function a(e){i=window.open("",e),i.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 p(e){i.document.write(e+"\n")}function u(){i.document.write("</pre>\n </body>\n </html>"),i.document.close()}app.debug=!0;const f=e=>{p(`import ${e.constructor.name} from '../src/${e.constructor.name}'`),p(`describe('${e.constructor.name}', ()=>{`),e._actions.forEach((t=>{"."!==t.name&&(p(` it ('should handle event: ${t.name}', (done)=>{`),p(` const component = new ${e.constructor.name}().mount();`),p(` component.run('${t.name}');`),p(" setTimeout(() => {"),p(" //expect(?).toHaveBeenCalled();"),p(" //expect(component.state).toBe(?);"),p(" done();"),p(" })"))})),p("});")};let d=!1,h=[];app.on("debug",(e=>{d&&e.vdom&&(h.push(e),console.log(`* ${h.length} state(s) recorded.`))}));function m(e){const t={get(e,t,n){const o=Reflect.get(e,t,n);return"object"==typeof o&&null!==o?Array.isArray(o)?o.map((e=>m(e))):m(o):`{${t}}`}};return Array.isArray(e)?e.map((e=>m(e))):new Proxy(e,t)}function g(e){let t;if("object"==typeof e.state){const n=m(e.state);t=e.view(n)}else t=e.view(e.state);return t}const y=new Map;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()}o.A.debug=!0,o.A.on("debug-create-component",(e=>{const t=e.element;t?y.get(t)?y.get(t).push(e):y.set(t,[e]):console.warn("Component created without an element:",e)})),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 b=e=>{const t=y,n=[];if(t instanceof Map)for(let[e,o]of t){const t="string"==typeof e?document.getElementById(e)||document.querySelector(e):e;n.push({element:t,comps:o})}if(e){const e=(e=>{const t=({components:e})=>o.A.h("ul",null,e.map((e=>{const t=g(e),n=e._actions.map((e=>e.name)),s={state:e.state,view:t,actions:n,update:e.update};return o.A.h("li",null,o.A.h("div",null,e.constructor.name),o.A.h("div",null,o.A.h("pre",null,(r=JSON.stringify(s,null,2))?r.toString().replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"):r)),o.A.h("br",null));var r})));return o.A.h("ul",null,e.map((({element:e,comps:n})=>o.A.h("li",null,o.A.h("div",null,(e=>o.A.h("div",null,e.tagName.toLowerCase(),e.id?"#"+e.id:""," ",e.className&&e.className.split(" ").map((e=>"."+e)).join()))(e)),o.A.h(t,{components:n})))))})(n);v(c(e))}else n.forEach((({element:e,comps:t})=>console.log(e,t)))};let w=Number(window?.localStorage?.getItem("__apprun_debugging__"))||0;if(o.A.on("debug",(e=>{1&w&&e.event&&console.log(e),2&w&&e.vdom&&console.log(e)})),window["_apprun-components"]=["components [print|clear]",e=>{"print"===e?b(!0):"clear"===e?(y.clear(),console.log("Component cache cleared")):b(!1)}],window["_apprun-events"]=["events [print]",e=>{(e=>{const t=o.A._events,n={},s=y,r=e=>e._actions.forEach((t=>{n[t.name]=n[t.name]||[],n[t.name].push(e)}));if(s instanceof Map)for(let[e,t]of s)t.forEach(r);const l=[];if(Object.keys(n).forEach((e=>{l.push({event:e,components:n[e],global:!!t[e]})})),l.sort(((e,t)=>e.event>t.event?1:-1)).map((e=>e.event)),e){const e=(e=>{const t=({components:e})=>o.A.h("ul",null,e.map((e=>o.A.h("li",null,o.A.h("div",null,e.constructor.name))))),n=({events:e,global:n})=>o.A.h("ul",null,e&&e.filter((e=>e.global===n&&"."!==e.event)).map((({event:e,components:n})=>o.A.h("li",null,o.A.h("div",null,e),o.A.h(t,{components:n})))));return o.A.h("div",null,o.A.h("div",null,"GLOBAL EVENTS"),o.A.h(n,{events:e,global:!0}),o.A.h("div",null,"LOCAL EVENTS"),o.A.h(n,{events:e,global:!1}))})(l);v(c(e))}else console.log("=== GLOBAL EVENTS ==="),l.filter((e=>e.global&&"."!==e.event)).forEach((({event:e,components:t})=>console.log({event:e},t))),console.log("=== LOCAL EVENTS ==="),l.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)=>{"on"===e?w=3:"off"===e?w=0:"event"===e?"on"===t?w|=1:"off"===t&&(w&=-2):"view"===e&&("on"===t?w|=2:"off"===t&&(w&=-3)),console.log(`* log ${e} ${t||""}`),window?.localStorage?.setItem("__apprun_debugging__",`${w}`)}],window["_apprun-create-event-tests"]=["create-event-tests",()=>(()=>{const e={components:{}};app.run("get-components",e);const{components:t}=e;if(a(""),t instanceof Map)for(let[e,n]of t)n.forEach(f);else Object.keys(t).forEach((e=>{t[e].forEach(f)}));u()})()],window["_apprun-create-state-tests"]=["create-state-tests <start|stop>",e=>{var t;"start"===(t=e)?(h=[],d=!0,console.log("* State logging started.")):"stop"===t?(0!==h.length?(a(""),h.forEach(((e,t)=>{p(` it ('view snapshot: #${t+1}', ()=>{`),p(` const component = new ${e.component.constructor.name}()`),p(` const state = ${JSON.stringify(e.state,void 0,2)};`),p(" const vdom = component['view'](state);"),p(" expect(JSON.stringify(vdom)).toMatchSnapshot();"),p(" })")})),u()):console.log("* No state recorded."),d=!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 3.36: 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 s=[{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)o.A.run(n);else{const{component:t,state:n}=s[e];t?.setState(n)}}}));const r=(e,n,o)=>{null!=o&&(s.push({component:e,state:o}),t.send(n,o))};o.A.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=>r(o,n,e))):r(o,n,e)}}))}}return{}})()));
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={672:(e,t,n)=>{n.d(t,{C:()=>o});const o="AppRun-3.37.1"},859:(e,t,n)=>{n.d(t,{A:()=>c});var o=n(672);const s=o.C;let r;const l="undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self?self:{};l.app&&l._AppRunVersions?r=l.app:(r=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;if(!o||"function"!=typeof o)return console.error(`AppRun event handler for '${e}' is not a function:`,o),!1;if(s.delay)this.delay(e,o,t,s);else try{Object.keys(s).length>0?o.apply(this,[...t,s]):o.apply(this,t)}catch(t){console.error(`Error in event handler for '${e}':`,t)}return!n.options.once})),n.length}once(e,t,n={}){this.on(e,t,{...n,once:!0})}delay(e,t,n,o){o._t&&clearTimeout(o._t),o._t=setTimeout((()=>{clearTimeout(o._t);try{Object.keys(o).length>0?t.apply(this,[...n,o]):t.apply(this,n)}catch(t){console.error(`Error in delayed event handler for '${e}':`,t)}}),o.delay)}runAsync(e,...t){const n=this.getSubscribers(e,this._events);console.assert(n&&n.length>0,"No subscriber for event: "+e);const o=n.map((n=>{const{fn:o,options:s}=n;if(!o||"function"!=typeof o)return console.error(`AppRun async event handler for '${e}' is not a function:`,o),Promise.resolve(null);try{return Object.keys(s).length>0?o.apply(this,[...t,s]):o.apply(this,t)}catch(t){return console.error(`Error in async event handler for '${e}':`,t),Promise.reject(t)}}));return Promise.all(o)}query(e,...t){return console.warn("app.query() is deprecated. Use app.runAsync() instead."),this.runAsync(e,...t)}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=>({...t,options:{...t.options,event:e}})))))),n}},l.app=r,l._AppRunVersions=s);const c=r}},t={};function n(o){var s=t[o];if(void 0!==s)return s.exports;var r=t[o]={exports:{}};return e[o](r,r.exports,n),r.exports}n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var o=n(859);function s(e){return e.map((e=>l(e))).join("")}function r(e){for(var t in e)null==e[t]?delete e[t]:"object"==typeof e[t]&&r(e[t])}function l(e){if(!e)return"";if(e._$litType$)return e.toString();if(r(e),Array.isArray(e))return s(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?s(e.children):"";return`<${e.tag}${t}>${n}</${e.tag}>`}return"object"==typeof e?JSON.stringify(e):void 0}const c=l;let i;function a(e){i=window.open("",e),i.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 p(e){i.document.write(e+"\n")}function u(){i.document.write("</pre>\n </body>\n </html>"),i.document.close()}app.debug=!0;const f=e=>{p(`import ${e.constructor.name} from '../src/${e.constructor.name}'`),p(`describe('${e.constructor.name}', ()=>{`),e._actions.forEach((t=>{"."!==t.name&&(p(` it ('should handle event: ${t.name}', (done)=>{`),p(` const component = new ${e.constructor.name}().mount();`),p(` component.run('${t.name}');`),p(" setTimeout(() => {"),p(" //expect(?).toHaveBeenCalled();"),p(" //expect(component.state).toBe(?);"),p(" done();"),p(" })"))})),p("});")};let d=!1,h=[];app.on("debug",(e=>{d&&e.vdom&&(h.push(e),console.log(`* ${h.length} state(s) recorded.`))}));function m(e){const t={get(e,t,n){const o=Reflect.get(e,t,n);return"object"==typeof o&&null!==o?Array.isArray(o)?o.map((e=>m(e))):m(o):`{${t}}`}};return Array.isArray(e)?e.map((e=>m(e))):new Proxy(e,t)}function g(e){let t;if("object"==typeof e.state){const n=m(e.state);t=e.view(n)}else t=e.view(e.state);return t}const y=new Map;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()}o.A.debug=!0,o.A.on("debug-create-component",(e=>{const t=e.element;t?y.get(t)?y.get(t).push(e):y.set(t,[e]):console.warn("Component created without an element:",e)})),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 b=e=>{const t=y,n=[];if(t instanceof Map)for(let[e,o]of t){const t="string"==typeof e?document.getElementById(e)||document.querySelector(e):e;n.push({element:t,comps:o})}if(e){const e=(e=>{const t=({components:e})=>o.A.h("ul",null,e.map((e=>{const t=g(e),n=e._actions.map((e=>e.name)),s={state:e.state,view:t,actions:n,update:e.update};return o.A.h("li",null,o.A.h("div",null,e.constructor.name),o.A.h("div",null,o.A.h("pre",null,(r=JSON.stringify(s,null,2))?r.toString().replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"):r)),o.A.h("br",null));var r})));return o.A.h("ul",null,e.map((({element:e,comps:n})=>o.A.h("li",null,o.A.h("div",null,(e=>o.A.h("div",null,e.tagName.toLowerCase(),e.id?"#"+e.id:""," ",e.className&&e.className.split(" ").map((e=>"."+e)).join()))(e)),o.A.h(t,{components:n})))))})(n);v(c(e))}else n.forEach((({element:e,comps:t})=>console.log(e,t)))};let w=Number(window?.localStorage?.getItem("__apprun_debugging__"))||0;if(o.A.on("debug",(e=>{1&w&&e.event&&console.log(e),2&w&&e.vdom&&console.log(e)})),window["_apprun-components"]=["components [print|clear]",e=>{"print"===e?b(!0):"clear"===e?(y.clear(),console.log("Component cache cleared")):b(!1)}],window["_apprun-events"]=["events [print]",e=>{(e=>{const t=o.A._events,n={},s=y,r=e=>e._actions.forEach((t=>{n[t.name]=n[t.name]||[],n[t.name].push(e)}));if(s instanceof Map)for(let[e,t]of s)t.forEach(r);const l=[];if(Object.keys(n).forEach((e=>{l.push({event:e,components:n[e],global:!!t[e]})})),l.sort(((e,t)=>e.event>t.event?1:-1)).map((e=>e.event)),e){const e=(e=>{const t=({components:e})=>o.A.h("ul",null,e.map((e=>o.A.h("li",null,o.A.h("div",null,e.constructor.name))))),n=({events:e,global:n})=>o.A.h("ul",null,e&&e.filter((e=>e.global===n&&"."!==e.event)).map((({event:e,components:n})=>o.A.h("li",null,o.A.h("div",null,e),o.A.h(t,{components:n})))));return o.A.h("div",null,o.A.h("div",null,"GLOBAL EVENTS"),o.A.h(n,{events:e,global:!0}),o.A.h("div",null,"LOCAL EVENTS"),o.A.h(n,{events:e,global:!1}))})(l);v(c(e))}else console.log("=== GLOBAL EVENTS ==="),l.filter((e=>e.global&&"."!==e.event)).forEach((({event:e,components:t})=>console.log({event:e},t))),console.log("=== LOCAL EVENTS ==="),l.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)=>{"on"===e?w=3:"off"===e?w=0:"event"===e?"on"===t?w|=1:"off"===t&&(w&=-2):"view"===e&&("on"===t?w|=2:"off"===t&&(w&=-3)),console.log(`* log ${e} ${t||""}`),window?.localStorage?.setItem("__apprun_debugging__",`${w}`)}],window["_apprun-create-event-tests"]=["create-event-tests",()=>(()=>{const e={components:{}};app.run("get-components",e);const{components:t}=e;if(a(""),t instanceof Map)for(let[e,n]of t)n.forEach(f);else Object.keys(t).forEach((e=>{t[e].forEach(f)}));u()})()],window["_apprun-create-state-tests"]=["create-state-tests <start|stop>",e=>{var t;"start"===(t=e)?(h=[],d=!0,console.log("* State logging started.")):"stop"===t?(0!==h.length?(a(""),h.forEach(((e,t)=>{p(` it ('view snapshot: #${t+1}', ()=>{`),p(` const component = new ${e.component.constructor.name}()`),p(` const state = ${JSON.stringify(e.state,void 0,2)};`),p(" const vdom = component['view'](state);"),p(" expect(JSON.stringify(vdom)).toMatchSnapshot();"),p(" })")})),u()):console.log("* No state recorded."),d=!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 3.36: 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 s=[{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)o.A.run(n);else{const{component:t,state:n}=s[e];t?.setState(n)}}}));const r=(e,n,o)=>{null!=o&&(s.push({component:e,state:o}),t.send(n,o))};o.A.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=>r(o,n,e))):r(o,n,e)}}))}}return{}})()));
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/./src/version.ts","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/./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 ","/**\n * Version Management Utility\n * \n * Single source of truth for AppRun version information.\n * This file ensures version consistency across all modules.\n * \n * The version is derived from package.json and should be updated\n * only when the package version changes.\n */\n\n// Import version from package.json to maintain single source of truth\n// This version string is used across the framework\nexport const APPRUN_VERSION = '3.37.0';\n\n// Version string with prefix for global tracking\nexport const APPRUN_VERSION_GLOBAL = `AppRun-${APPRUN_VERSION}`;\n","/**\n * Core AppRun application class and singleton instance\n *\n * This file provides:\n * 1. App class - The core event system implementation with pub/sub capabilities\n * - on(): Subscribe to events with options (once, delay, global)\n * - off(): Unsubscribe from events with proper cleanup\n * - run(): Publish events synchronously with error handling\n * - runAsync(): Publish events asynchronously with Promise support, returns handler values\n * - query(): Deprecated alias for runAsync() - use runAsync() instead\n *\n * 2. Default app singleton - Global event bus instance\n * - Created once and reused across the application\n * - Stored in global scope (window/global) with version tracking\n * - Prevents duplicate instances across different versions\n *\n * Features:\n * - Event wildcards support (events ending with '*')\n * - Delayed event execution with timeout management\n * - Once-only event subscriptions\n * - Async event handling with Promise.all\n * - Global event bus shared across components\n * - Memory leak prevention with proper cleanup\n *\n * Type Safety Improvements (v3.35.1):\n * - Added validation for event handler functions\n * - Enhanced error handling in event execution\n * - Improved null checks in delayed event handling\n * - Better error reporting for invalid handlers\n *\n * Usage:\n * ```ts\n * // Subscribe to events\n * app.on('event-name', (state, ...args) => {\n * // Handle event\n * });\n *\n * // Publish events (fire-and-forget)\n * app.run('event-name', ...args);\n * \n * // Get return values from event handlers\n * app.runAsync('event-name', data).then(results => {\n * // Handle results array\n * });\n * ```\n */\n\nimport { EventOptions } from './types'\nimport { APPRUN_VERSION_GLOBAL } from './version'\n\nexport class App {\n\n _events: { [key: string]: Array<{ fn: (...args: any[]) => any, options: EventOptions }> };\n\n constructor() {\n this._events = {} as { [key: string]: Array<{ fn: (...args: any[]) => any, options: EventOptions }> };\n }\n\n on(name: string, fn: (...args: any[]) => any, options: EventOptions = {}): void {\n this._events[name] = this._events[name] || [];\n this._events[name].push({ fn, options });\n }\n\n off(name: string, fn: (...args: any[]) => any): void {\n const subscribers = this._events[name] || [];\n\n this._events[name] = subscribers.filter((sub) => sub.fn !== fn);\n }\n\n find(name: string): any {\n return this._events[name];\n }\n\n run(name: string, ...args: any[]): number {\n const subscribers = this.getSubscribers(name, this._events);\n console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);\n subscribers.forEach((sub) => {\n const { fn, options } = sub;\n if (!fn || typeof fn !== 'function') {\n console.error(`AppRun event handler for '${name}' is not a function:`, fn);\n return false;\n }\n if (options.delay) {\n this.delay(name, fn, args, options);\n } else {\n try {\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n } catch (error) {\n console.error(`Error in event handler for '${name}':`, error);\n }\n }\n return !sub.options.once;\n });\n\n return subscribers.length;\n }\n\n once(name: string, fn: (...args: any[]) => any, options: EventOptions = {}): void {\n this.on(name, fn, { ...options, once: true });\n }\n\n private delay(name: string, fn: (...args: any[]) => any, args: any[], options: EventOptions): void {\n if (options._t) clearTimeout(options._t);\n options._t = setTimeout(() => {\n clearTimeout(options._t);\n try {\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n } catch (error) {\n console.error(`Error in delayed event handler for '${name}':`, error);\n }\n }, options.delay);\n }\n\n runAsync(name: string, ...args: any[]): Promise<any[]> {\n const subscribers = this.getSubscribers(name, this._events);\n console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);\n const promises = subscribers.map(sub => {\n const { fn, options } = sub;\n if (!fn || typeof fn !== 'function') {\n console.error(`AppRun async event handler for '${name}' is not a function:`, fn);\n return Promise.resolve(null);\n }\n try {\n return Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n } catch (error) {\n console.error(`Error in async event handler for '${name}':`, error);\n return Promise.reject(error);\n }\n });\n return Promise.all(promises);\n }\n\n /**\n * @deprecated Use runAsync() instead. app.query() will be removed in a future version.\n */\n query(name: string, ...args: any[]): Promise<any[]> {\n console.warn('app.query() is deprecated. Use app.runAsync() instead.');\n return this.runAsync(name, ...args);\n }\n\n private getSubscribers(name: string, events: { [key: string]: Array<{ fn: (...args: any[]) => any, options: EventOptions }> }): Array<{ fn: (...args: any[]) => any, options: EventOptions }> {\n const subscribers = events[name] || [];\n\n // Update the list of subscribers by pulling out those which will run once.\n // We must do this update prior to running any of the events in case they\n // cause additional events to be turned off or on.\n events[name] = subscribers.filter((sub) => {\n return !sub.options.once;\n });\n Object.keys(events).filter(evt => evt.endsWith('*') && name.startsWith(evt.replace('*', '')))\n .sort((a, b) => b.length - a.length)\n .forEach(evt => subscribers.push(...events[evt].map(sub => ({\n ...sub,\n options: { ...sub.options, event: name }\n }))));\n return subscribers;\n }\n}\n\nconst AppRunVersions = APPRUN_VERSION_GLOBAL;\nlet _app: App;\nconst root = (typeof window !== 'undefined' ? window :\n typeof global !== 'undefined' ? global :\n typeof self !== 'undefined' ? self : {}) as any;\n\nif (root.app && root._AppRunVersions) {\n _app = root.app;\n} else {\n _app = new App();\n root.app = _app;\n root._AppRunVersions = AppRunVersions;\n}\nexport default _app;\n","// 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))","\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 (vdom['_$litType$']) {\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\nfunction createProxy(obj) {\n const handler = {\n get(target, property, receiver) {\n\n // Get the property value\n const value = Reflect.get(target, property, receiver);\n\n // If the value is an object (including arrays), proxy it\n if (typeof value === 'object' && value !== null) {\n if (Array.isArray(value)) {\n // Proxy each element of the array if it's an object\n return value.map(item => createProxy(item));\n } else {\n // Recursively proxy the object\n return createProxy(value);\n }\n }\n\n return `{${property}}`\n },\n\n };\n\n return Array.isArray(obj) ?\n obj.map(item => createProxy(item)) : new Proxy(obj, handler);\n}\n\nfunction htmlEncode(input) {\n return !input ? input : input.toString()\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n}\n\nfunction getVDOM(component) {\n let view;\n if (typeof component.state === 'object') {\n const proxy = createProxy(component.state);\n view = component.view(proxy);\n } else {\n view = component.view(component.state);\n }\n return view;\n}\n\nconst componentCache = new Map();\napp['debug'] = true;\napp.on('debug-create-component', component => {\n const element = component.element;\n if (!element) {\n console.warn('Component created without an element:', component);\n return;\n }\n if (componentCache.get(element)) { componentCache.get(element).push(component) }\n else { componentCache.set(element, [component]) }\n});\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 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 const Components = ({ components }) => <ul>\n {components.map(component => {\n\n const vdom = getVDOM(component);\n const events = component['_actions'].map(a => a.name);\n\n const component_def = {\n state: component.state,\n view: vdom,\n actions: events,\n update: component.update\n };\n\n return <li>\n <div>{component.constructor.name}</div>\n <div><pre>{htmlEncode(JSON.stringify(component_def, null, 2))}</pre></div>\n <br />\n </li>;\n\n })}\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 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 = componentCache;\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 }\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 = componentCache;\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 }\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|clear]', (p) => {\n if (p === 'print') {\n _components(true);\n } else if (p === 'clear') {\n componentCache.clear();\n console.log('Component cache cleared');\n } else {\n _components(false);\n }\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 3.36: 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","APPRUN_VERSION_GLOBAL","AppRunVersions","_app","window","g","self","app","_AppRunVersions","constructor","_events","on","name","fn","options","push","off","subscribers","filter","sub","find","run","args","getSubscribers","console","assert","length","forEach","error","delay","Object","keys","apply","once","_t","clearTimeout","setTimeout","runAsync","promises","map","Promise","resolve","reject","all","query","warn","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","obj","prop","prototype","hasOwnProperty","call","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","createProxy","handler","target","property","receiver","value","Reflect","item","Proxy","getVDOM","view","state","proxy","componentCache","Map","newWin","html","element","set","cmd","_components","print","components","data","comps","getElementById","querySelector","Components","component_def","actions","update","input","tagName","toLowerCase","id","className","split","c","viewElement","viewComponents","debugging","Number","localStorage","getItem","clear","global_events","cache","add_component","global","Events","viewEvents","a1","a2","setItem","el","_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/version.ts","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/./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 ","/**\n * Version Management Utility\n * \n * Single source of truth for AppRun version information.\n * This file ensures version consistency across all modules.\n * \n * The version is derived from package.json and should be updated\n * only when the package version changes.\n */\n\n// Import version from package.json to maintain single source of truth\n// This version string is used across the framework\nexport const APPRUN_VERSION = '3.37.1';\n\n// Version string with prefix for global tracking\nexport const APPRUN_VERSION_GLOBAL = `AppRun-${APPRUN_VERSION}`;\n","/**\n * Core AppRun application class and singleton instance\n *\n * This file provides:\n * 1. App class - The core event system implementation with pub/sub capabilities\n * - on(): Subscribe to events with options (once, delay, global)\n * - off(): Unsubscribe from events with proper cleanup\n * - run(): Publish events synchronously with error handling\n * - runAsync(): Publish events asynchronously with Promise support, returns handler values\n * - query(): Deprecated alias for runAsync() - use runAsync() instead\n *\n * 2. Default app singleton - Global event bus instance\n * - Created once and reused across the application\n * - Stored in global scope (window/global) with version tracking\n * - Prevents duplicate instances across different versions\n *\n * Features:\n * - Event wildcards support (events ending with '*')\n * - Delayed event execution with timeout management\n * - Once-only event subscriptions\n * - Async event handling with Promise.all\n * - Global event bus shared across components\n * - Memory leak prevention with proper cleanup\n *\n * Type Safety Improvements (v3.35.1):\n * - Added validation for event handler functions\n * - Enhanced error handling in event execution\n * - Improved null checks in delayed event handling\n * - Better error reporting for invalid handlers\n *\n * Usage:\n * ```ts\n * // Subscribe to events\n * app.on('event-name', (state, ...args) => {\n * // Handle event\n * });\n *\n * // Publish events (fire-and-forget)\n * app.run('event-name', ...args);\n * \n * // Get return values from event handlers\n * app.runAsync('event-name', data).then(results => {\n * // Handle results array\n * });\n * ```\n */\n\nimport { EventOptions } from './types'\nimport { APPRUN_VERSION_GLOBAL } from './version'\n\nexport class App {\n\n _events: { [key: string]: Array<{ fn: (...args: any[]) => any, options: EventOptions }> };\n\n constructor() {\n this._events = {} as { [key: string]: Array<{ fn: (...args: any[]) => any, options: EventOptions }> };\n }\n\n on(name: string, fn: (...args: any[]) => any, options: EventOptions = {}): void {\n this._events[name] = this._events[name] || [];\n this._events[name].push({ fn, options });\n }\n\n off(name: string, fn: (...args: any[]) => any): void {\n const subscribers = this._events[name] || [];\n\n this._events[name] = subscribers.filter((sub) => sub.fn !== fn);\n }\n\n find(name: string): any {\n return this._events[name];\n }\n\n run(name: string, ...args: any[]): number {\n const subscribers = this.getSubscribers(name, this._events);\n console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);\n subscribers.forEach((sub) => {\n const { fn, options } = sub;\n if (!fn || typeof fn !== 'function') {\n console.error(`AppRun event handler for '${name}' is not a function:`, fn);\n return false;\n }\n if (options.delay) {\n this.delay(name, fn, args, options);\n } else {\n try {\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n } catch (error) {\n console.error(`Error in event handler for '${name}':`, error);\n }\n }\n return !sub.options.once;\n });\n\n return subscribers.length;\n }\n\n once(name: string, fn: (...args: any[]) => any, options: EventOptions = {}): void {\n this.on(name, fn, { ...options, once: true });\n }\n\n private delay(name: string, fn: (...args: any[]) => any, args: any[], options: EventOptions): void {\n if (options._t) clearTimeout(options._t);\n options._t = setTimeout(() => {\n clearTimeout(options._t);\n try {\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n } catch (error) {\n console.error(`Error in delayed event handler for '${name}':`, error);\n }\n }, options.delay);\n }\n\n runAsync(name: string, ...args: any[]): Promise<any[]> {\n const subscribers = this.getSubscribers(name, this._events);\n console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);\n const promises = subscribers.map(sub => {\n const { fn, options } = sub;\n if (!fn || typeof fn !== 'function') {\n console.error(`AppRun async event handler for '${name}' is not a function:`, fn);\n return Promise.resolve(null);\n }\n try {\n return Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n } catch (error) {\n console.error(`Error in async event handler for '${name}':`, error);\n return Promise.reject(error);\n }\n });\n return Promise.all(promises);\n }\n\n /**\n * @deprecated Use runAsync() instead. app.query() will be removed in a future version.\n */\n query(name: string, ...args: any[]): Promise<any[]> {\n console.warn('app.query() is deprecated. Use app.runAsync() instead.');\n return this.runAsync(name, ...args);\n }\n\n private getSubscribers(name: string, events: { [key: string]: Array<{ fn: (...args: any[]) => any, options: EventOptions }> }): Array<{ fn: (...args: any[]) => any, options: EventOptions }> {\n const subscribers = events[name] || [];\n\n // Update the list of subscribers by pulling out those which will run once.\n // We must do this update prior to running any of the events in case they\n // cause additional events to be turned off or on.\n events[name] = subscribers.filter((sub) => {\n return !sub.options.once;\n });\n Object.keys(events).filter(evt => evt.endsWith('*') && name.startsWith(evt.replace('*', '')))\n .sort((a, b) => b.length - a.length)\n .forEach(evt => subscribers.push(...events[evt].map(sub => ({\n ...sub,\n options: { ...sub.options, event: name }\n }))));\n return subscribers;\n }\n}\n\nconst AppRunVersions = APPRUN_VERSION_GLOBAL;\nlet _app: App;\nconst root = (typeof window !== 'undefined' ? window :\n typeof global !== 'undefined' ? global :\n typeof self !== 'undefined' ? self : {}) as any;\n\nif (root.app && root._AppRunVersions) {\n _app = root.app;\n} else {\n _app = new App();\n root.app = _app;\n root._AppRunVersions = AppRunVersions;\n}\nexport default _app;\n","// 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))","\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 (vdom['_$litType$']) {\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\nfunction createProxy(obj) {\n const handler = {\n get(target, property, receiver) {\n\n // Get the property value\n const value = Reflect.get(target, property, receiver);\n\n // If the value is an object (including arrays), proxy it\n if (typeof value === 'object' && value !== null) {\n if (Array.isArray(value)) {\n // Proxy each element of the array if it's an object\n return value.map(item => createProxy(item));\n } else {\n // Recursively proxy the object\n return createProxy(value);\n }\n }\n\n return `{${property}}`\n },\n\n };\n\n return Array.isArray(obj) ?\n obj.map(item => createProxy(item)) : new Proxy(obj, handler);\n}\n\nfunction htmlEncode(input) {\n return !input ? input : input.toString()\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n}\n\nfunction getVDOM(component) {\n let view;\n if (typeof component.state === 'object') {\n const proxy = createProxy(component.state);\n view = component.view(proxy);\n } else {\n view = component.view(component.state);\n }\n return view;\n}\n\nconst componentCache = new Map();\napp['debug'] = true;\napp.on('debug-create-component', component => {\n const element = component.element;\n if (!element) {\n console.warn('Component created without an element:', component);\n return;\n }\n if (componentCache.get(element)) { componentCache.get(element).push(component) }\n else { componentCache.set(element, [component]) }\n});\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 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 const Components = ({ components }) => <ul>\n {components.map(component => {\n\n const vdom = getVDOM(component);\n const events = component['_actions'].map(a => a.name);\n\n const component_def = {\n state: component.state,\n view: vdom,\n actions: events,\n update: component.update\n };\n\n return <li>\n <div>{component.constructor.name}</div>\n <div><pre>{htmlEncode(JSON.stringify(component_def, null, 2))}</pre></div>\n <br />\n </li>;\n\n })}\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 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 = componentCache;\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 }\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 = componentCache;\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 }\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|clear]', (p) => {\n if (p === 'print') {\n _components(true);\n } else if (p === 'clear') {\n componentCache.clear();\n console.log('Component cache cleared');\n } else {\n _components(false);\n }\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 3.36: 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","APPRUN_VERSION_GLOBAL","AppRunVersions","_app","window","g","self","app","_AppRunVersions","constructor","_events","on","name","fn","options","push","off","subscribers","filter","sub","find","run","args","getSubscribers","console","assert","length","forEach","error","delay","Object","keys","apply","once","_t","clearTimeout","setTimeout","runAsync","promises","map","Promise","resolve","reject","all","query","warn","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","obj","prop","prototype","hasOwnProperty","call","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","createProxy","handler","target","property","receiver","value","Reflect","item","Proxy","getVDOM","view","state","proxy","componentCache","Map","newWin","html","element","set","cmd","_components","print","components","data","comps","getElementById","querySelector","Components","component_def","actions","update","input","tagName","toLowerCase","id","className","split","c","viewElement","viewComponents","debugging","Number","localStorage","getItem","clear","global_events","cache","add_component","global","Events","viewEvents","a1","a2","setItem","el","_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
- const n="3.37.0",t=`AppRun-${n}`;class e{constructor(){this._events={}}on(n,t,e={}){this._events[n]=this._events[n]||[],this._events[n].push({fn:t,options:e})}off(n,t){const e=this._events[n]||[];this._events[n]=e.filter((n=>n.fn!==t))}find(n){return this._events[n]}run(n,...t){const e=this.getSubscribers(n,this._events);return console.assert(e&&e.length>0,"No subscriber for event: "+n),e.forEach((e=>{const{fn:o,options:l}=e;if(!o||"function"!=typeof o)return console.error(`AppRun event handler for '${n}' is not a function:`,o),!1;if(l.delay)this.delay(n,o,t,l);else try{Object.keys(l).length>0?o.apply(this,[...t,l]):o.apply(this,t)}catch(t){console.error(`Error in event handler for '${n}':`,t)}return!e.options.once})),e.length}once(n,t,e={}){this.on(n,t,{...e,once:!0})}delay(n,t,e,o){o._t&&clearTimeout(o._t),o._t=setTimeout((()=>{clearTimeout(o._t);try{Object.keys(o).length>0?t.apply(this,[...e,o]):t.apply(this,e)}catch(t){console.error(`Error in delayed event handler for '${n}':`,t)}}),o.delay)}runAsync(n,...t){const e=this.getSubscribers(n,this._events);console.assert(e&&e.length>0,"No subscriber for event: "+n);const o=e.map((e=>{const{fn:o,options:l}=e;if(!o||"function"!=typeof o)return console.error(`AppRun async event handler for '${n}' is not a function:`,o),Promise.resolve(null);try{return Object.keys(l).length>0?o.apply(this,[...t,l]):o.apply(this,t)}catch(t){return console.error(`Error in async event handler for '${n}':`,t),Promise.reject(t)}}));return Promise.all(o)}query(n,...t){return console.warn("app.query() is deprecated. Use app.runAsync() instead."),this.runAsync(n,...t)}getSubscribers(n,t){const e=t[n]||[];return t[n]=e.filter((n=>!n.options.once)),Object.keys(t).filter((t=>t.endsWith("*")&&n.startsWith(t.replace("*","")))).sort(((n,t)=>t.length-n.length)).forEach((o=>e.push(...t[o].map((t=>({...t,options:{...t.options,event:n}})))))),e}}const o=t;let l;const i="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};i.app&&i._AppRunVersions?l=i.app:(l=new e,i.app=l,i._AppRunVersions=o);var s=l;function r(n){return n?.target instanceof HTMLElement?n.target:null}const u=(n,t)=>(t?n.state[t]:n.state)||"",a=(n,t,e)=>{if(t){const o=n.state||{};o[t]=e,n.setState(o)}else n.setState(e)},c=(n,t)=>{if(Array.isArray(n))return n.map((n=>c(n,t)));{let{type:e,tag:o,props:l,children:i}=n;return o=o||e,i=i||l?.children,l&&Object.keys(l).forEach((n=>{n.startsWith("$")&&(((n,t,e,o)=>{if(n.startsWith("$on")){const e=t[n];if(n=n.substring(1),"boolean"==typeof e)t[n]=t=>o.run?o.run(n,t):s.run(n,t);else if("string"==typeof e)t[n]=n=>o.run?o.run(e,n):s.run(e,n);else if("function"==typeof e)t[n]=n=>o.setState(e(o.state,n));else if(Array.isArray(e)){const[l,...i]=e;"string"==typeof l?t[n]=n=>o.run?o.run(l,...i,n):s.run(l,...i,n):"function"==typeof l&&(t[n]=n=>o.setState(l(o.state,...i,n)))}}else if("$bind"===n){const l=t.type||"text",i="string"==typeof t[n]?t[n]:t.name;if("input"===e)switch(l){case"checkbox":t.checked=u(o,i),t.onclick=n=>{const t=r(n);t&&a(o,i||t.name,t.checked)};break;case"radio":t.checked=u(o,i)===t.value,t.onclick=n=>{const t=r(n);t&&a(o,i||t.name,t.value)};break;case"number":case"range":t.value=u(o,i),t.oninput=n=>{const t=r(n);t&&a(o,i||t.name,Number(t.value))};break;default:t.value=u(o,i),t.oninput=n=>{const t=r(n);t&&a(o,i||t.name,t.value)}}else"select"===e?(t.value=u(o,i),t.onchange=n=>{const t=r(n);t&&!t.multiple&&a(o,i||t.name,t.value)}):"option"===e?(t.selected=u(o,i),t.onclick=n=>{const t=r(n);t&&a(o,i||t.name,t.selected)}):"textarea"===e&&(t.innerHTML=u(o,i),t.oninput=n=>{const t=r(n);t&&a(o,i||t.name,t.value)})}else s.run("$",{key:n,tag:e,props:t,component:o})})(n,l,o,t),delete l[n])})),i&&c(i,t),n}};class h{constructor(n,t,e){this.normal=t,this.property=n,e&&(this.space=e)}}function d(n,t){const e={},o={};for(const t of n)Object.assign(e,t.property),Object.assign(o,t.normal);return new h(e,o,t)}function f(n){return n.toLowerCase()}h.prototype.normal={},h.prototype.property={},h.prototype.space=void 0;class p{constructor(n,t){this.attribute=t,this.property=n}}p.prototype.attribute="",p.prototype.booleanish=!1,p.prototype.boolean=!1,p.prototype.commaOrSpaceSeparated=!1,p.prototype.commaSeparated=!1,p.prototype.defined=!1,p.prototype.mustUseProperty=!1,p.prototype.number=!1,p.prototype.overloadedBoolean=!1,p.prototype.property="",p.prototype.spaceSeparated=!1,p.prototype.space=void 0;let g=0;const m=C(),y=C(),v=C(),b=C(),w=C(),S=C(),k=C();function C(){return 2**++g}var x=Object.freeze({__proto__:null,boolean:m,booleanish:y,commaOrSpaceSeparated:k,commaSeparated:S,number:b,overloadedBoolean:v,spaceSeparated:w});const O=Object.keys(x);class M extends p{constructor(n,t,e,o){let l=-1;if(super(n,t),P(this,"space",o),"number"==typeof e)for(;++l<O.length;){const n=O[l];P(this,O[l],(e&x[n])===x[n])}}}function P(n,t,e){e&&(n[t]=e)}function A(n){const t={},e={};for(const[o,l]of Object.entries(n.properties)){const i=new M(o,n.transform(n.attributes||{},o),l,n.space);n.mustUseProperty&&n.mustUseProperty.includes(o)&&(i.mustUseProperty=!0),t[o]=i,e[f(o)]=o,e[f(i.attribute)]=o}return new h(t,e,n.space)}M.prototype.defined=!0;const E=A({properties:{ariaActiveDescendant:null,ariaAtomic:y,ariaAutoComplete:null,ariaBusy:y,ariaChecked:y,ariaColCount:b,ariaColIndex:b,ariaColSpan:b,ariaControls:w,ariaCurrent:null,ariaDescribedBy:w,ariaDetails:null,ariaDisabled:y,ariaDropEffect:w,ariaErrorMessage:null,ariaExpanded:y,ariaFlowTo:w,ariaGrabbed:y,ariaHasPopup:null,ariaHidden:y,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:w,ariaLevel:b,ariaLive:null,ariaModal:y,ariaMultiLine:y,ariaMultiSelectable:y,ariaOrientation:null,ariaOwns:w,ariaPlaceholder:null,ariaPosInSet:b,ariaPressed:y,ariaReadOnly:y,ariaRelevant:null,ariaRequired:y,ariaRoleDescription:w,ariaRowCount:b,ariaRowIndex:b,ariaRowSpan:b,ariaSelected:y,ariaSetSize:b,ariaSort:null,ariaValueMax:b,ariaValueMin:b,ariaValueNow:b,ariaValueText:null,role:null},transform:(n,t)=>"role"===t?t:"aria-"+t.slice(4).toLowerCase()});function R(n,t){return t in n?n[t]:t}function $(n,t){return R(n,t.toLowerCase())}const D=A({attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:S,acceptCharset:w,accessKey:w,action:null,allow:null,allowFullScreen:m,allowPaymentRequest:m,allowUserMedia:m,alt:null,as:null,async:m,autoCapitalize:null,autoComplete:w,autoFocus:m,autoPlay:m,blocking:w,capture:null,charSet:null,checked:m,cite:null,className:w,cols:b,colSpan:null,content:null,contentEditable:y,controls:m,controlsList:w,coords:b|S,crossOrigin:null,data:null,dateTime:null,decoding:null,default:m,defer:m,dir:null,dirName:null,disabled:m,download:v,draggable:y,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:m,formTarget:null,headers:w,height:b,hidden:v,high:b,href:null,hrefLang:null,htmlFor:w,httpEquiv:w,id:null,imageSizes:null,imageSrcSet:null,inert:m,inputMode:null,integrity:null,is:null,isMap:m,itemId:null,itemProp:w,itemRef:w,itemScope:m,itemType:w,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:m,low:b,manifest:null,max:null,maxLength:b,media:null,method:null,min:null,minLength:b,multiple:m,muted:m,name:null,nonce:null,noModule:m,noValidate:m,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:m,optimum:b,pattern:null,ping:w,placeholder:null,playsInline:m,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:m,referrerPolicy:null,rel:w,required:m,reversed:m,rows:b,rowSpan:b,sandbox:w,scope:null,scoped:m,seamless:m,selected:m,shadowRootClonable:m,shadowRootDelegatesFocus:m,shadowRootMode:null,shape:null,size:b,sizes:null,slot:null,span:b,spellCheck:y,src:null,srcDoc:null,srcLang:null,srcSet:null,start:b,step:null,style:null,tabIndex:b,target:null,title:null,translate:null,type:null,typeMustMatch:m,useMap:null,value:y,width:b,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:w,axis:null,background:null,bgColor:null,border:b,borderColor:null,bottomMargin:b,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:m,declare:m,event:null,face:null,frame:null,frameBorder:null,hSpace:b,leftMargin:b,link:null,longDesc:null,lowSrc:null,marginHeight:b,marginWidth:b,noResize:m,noHref:m,noShade:m,noWrap:m,object:null,profile:null,prompt:null,rev:null,rightMargin:b,rules:null,scheme:null,scrolling:y,standby:null,summary:null,text:null,topMargin:b,valueType:null,version:null,vAlign:null,vLink:null,vSpace:b,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:m,disableRemotePlayback:m,prefix:null,property:null,results:b,security:null,unselectable:null},space:"html",transform:$}),L=A({attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},properties:{about:k,accentHeight:b,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:b,amplitude:b,arabicForm:null,ascent:b,attributeName:null,attributeType:null,azimuth:b,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:b,by:null,calcMode:null,capHeight:b,className:w,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:b,diffuseConstant:b,direction:null,display:null,dur:null,divisor:b,dominantBaseline:null,download:m,dx:null,dy:null,edgeMode:null,editable:null,elevation:b,enableBackground:null,end:null,event:null,exponent:b,externalResourcesRequired:null,fill:null,fillOpacity:b,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:S,g2:S,glyphName:S,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:b,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:b,horizOriginX:b,horizOriginY:b,id:null,ideographic:b,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:b,k:b,k1:b,k2:b,k3:b,k4:b,kernelMatrix:k,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:b,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:b,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:b,overlineThickness:b,paintOrder:null,panose1:null,path:null,pathLength:b,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:w,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:b,pointsAtY:b,pointsAtZ:b,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:k,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:k,rev:k,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:k,requiredFeatures:k,requiredFonts:k,requiredFormats:k,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:b,specularExponent:b,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:b,strikethroughThickness:b,string:null,stroke:null,strokeDashArray:k,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:b,strokeOpacity:b,strokeWidth:null,style:null,surfaceScale:b,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:k,tabIndex:b,tableValues:null,target:null,targetX:b,targetY:b,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:k,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:b,underlineThickness:b,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:b,values:null,vAlphabetic:b,vMathematical:b,vectorEffect:null,vHanging:b,vIdeographic:b,version:null,vertAdvY:b,vertOriginX:b,vertOriginY:b,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:b,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:"svg",transform:R}),T=A({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:"xlink",transform:(n,t)=>"xlink:"+t.slice(5).toLowerCase()}),_=A({attributes:{xmlnsxlink:"xmlns:xlink"},properties:{xmlnsXLink:null,xmlns:null},space:"xmlns",transform:$}),j=A({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:"xml",transform:(n,t)=>"xml:"+t.slice(3).toLowerCase()}),U=/[A-Z]/g,z=/-[a-z]/g,I=/^data[-\w.:]+$/i;function B(n){return"-"+n.toLowerCase()}function H(n){return n.charAt(1).toUpperCase()}const N=d([E,D,T,_,j],"html"),F=d([E,L,T,_,j],"svg"),V="_props",q=new Map;function W(n,t){const e=`${n}:${t}`;let o=q.get(e);return void 0===o&&(o=function(n,t){const e=f(t);let o=t,l=p;if(e in n.normal)return n.property[n.normal[e]];if(e.length>4&&"data"===e.slice(0,4)&&I.test(t)){if("-"===t.charAt(4)){const n=t.slice(5).replace(z,H);o="data"+n.charAt(0).toUpperCase()+n.slice(1)}else{const n=t.slice(4);if(!z.test(n)){let e=n.replace(U,B);"-"!==e.charAt(0)&&(e="-"+e),t="data"+e}}l=M}return new l(o,t)}(t?F:N,n)||null,q.set(e,o)),o}function K(n,t,e){!function(n){if(null==n||!1===n||""===n)return!1;if(!0===n)return!0;if("string"==typeof n){return"false"!==n.toLowerCase()&&"0"!==n}return Boolean(n)}(e)?n.removeAttribute(t):n.setAttribute(t,t)}function X(n,t,e){try{n[t]=e}catch(o){Y(n,t,e,!1)}}function Y(n,t,e,o){if(null==e)return void n.removeAttribute(t);const l=String(e);if(o&&t.includes(":")){const[e]=t.split(":");"xlink"===e?n.setAttributeNS("http://www.w3.org/1999/xlink",t,l):n.setAttribute(t,l)}else n.setAttribute(t,l)}function Z(n,t,e,o){if(function(n,t){if(document.activeElement===n)return["value","selectionStart","selectionEnd","selectionDirection"].includes(t);if("scrollTop"===t||"scrollLeft"===t)return!0;if(n instanceof HTMLMediaElement&&["currentTime","paused","playbackRate","volume"].includes(t))return!0;return!1}(n,t))return;if("style"===t){if(n.style.cssText&&(n.style.cssText=""),"string"==typeof e)n.style.cssText=e;else if(e&&"object"==typeof e)for(const t in e)n.style[t]!==e[t]&&(n.style[t]=e[t]);return}if("key"===t)return void(null!=e&&(n.key=e));if(t.startsWith("data-"))return void function(n,t,e){const o=(l=t.slice(5)).length<=1?l.toLowerCase():l.split("-").map(((n,t)=>0===t?n.toLowerCase():n.charAt(0).toUpperCase()+n.slice(1).toLowerCase())).join("");var l;null==e?delete n.dataset[o]:n.dataset[o]=String(e)}(n,t,e);if(t.startsWith("on"))return void function(n,t,e){t.startsWith("on")&&(e&&"function"!=typeof e?"string"==typeof e&&(e?n.setAttribute(t,e):n.removeAttribute(t)):n[t]=e)}(n,t,e);if(!("INPUT"!==n.tagName&&"TEXTAREA"!==n.tagName&&"SELECT"!==n.tagName||"value"!==t&&"selected"!==t&&"selectedIndex"!==t))return void X(n,t,e);if("INPUT"===n.tagName&&"checked"===t)return X(n,t,e),void K(n,t,e);const l=W(t,o);l?l.boolean||l.overloadedBoolean?K(n,l.attribute,e):l.mustUseProperty&&!o?X(n,l.property,e):Y(n,l.attribute,e,o):t.startsWith("aria-")||"role"===t?Y(n,t,e,o):t in n||void 0!==n[t]?X(n,t,e):Y(n,t,e,o)}function J(n){return/^[a-zA-Z_:][\w\-:.]*$/.test(n)&&!n.includes("<")&&!n.includes(">")&&!n.includes('"')&&!n.includes("'")}function G(n,t,e){const o=function(n,t){if(t&&(t.class=t.class||t.className,delete t.className),!n||0===Object.keys(n).length)return t||{};if(!t||0===Object.keys(t).length){const t={};return Object.keys(n).forEach((n=>t[n]=null)),t}const e={};return Object.keys(n).forEach((n=>{n in t||(e[n]=null)})),Object.keys(t).forEach((n=>e[n]=t[n])),e}(n[V]||{},t);n[V]=t||{},function(n,t,e,o){for(const e in t)J(e)&&Z(n,e,t[e],o);t&&"function"==typeof t.ref&&window.requestAnimationFrame((()=>t.ref(n)))}(n,o,0,e)}function Q(n,...t){return nn(t)}function nn(n){const t=[],e=n=>{null!=n&&""!==n&&!1!==n&&t.push("function"==typeof n||"object"==typeof n?n:`${n}`)};return n&&n.forEach((n=>{Array.isArray(n)?n.forEach((n=>e(n))):e(n)})),t}const tn={};let en=0;function on(n,t,...e){const o=nn(e);if("string"==typeof n)return{tag:n,props:t,children:o};if(Array.isArray(n))return n;if(void 0===n&&e)return o;if(Object.getPrototypeOf(n).i)return{tag:n,props:t,children:o};if("function"==typeof n)return n(t,o);throw new Error(`Unknown tag in vdom ${n}`)}const ln=(n,t,e={})=>{if(null==t||!1===t)return;!function(n,t,e={}){if(null==t||!1===t)return;if(t=hn(t,e),!n)return;const o="SVG"===n.nodeName;Array.isArray(t)?rn(n,t,o):rn(n,[t],o)}("string"==typeof n&&n?document.getElementById(n)||document.querySelector(n):n,t=c(t,e),e)};function sn(n,t,e){e=e||"svg"===t.tag,function(n,t){const e=n.nodeName,o=`${t.tag||""}`;return e.toUpperCase()===o.toUpperCase()}(n,t)?(rn(n,t.children,e),G(n,t.props,e)):n.parentNode.replaceChild(cn(t,e),n)}function rn(n,t,e){const o=n.childNodes?.length||0,l=t?.length||0,i=Math.min(o,l);for(let o=0;o<i;o++){const l=t[o],i=n.childNodes[o];if("string"==typeof l)i.textContent!==l&&(3===i.nodeType?i.nodeValue=l:n.replaceChild(an(l),i));else if(l instanceof HTMLElement||l instanceof SVGElement)n.insertBefore(l,i);else{const t=l.props&&l.props.key;if(t)if(i.key===t)sn(n.childNodes[o],l,e);else{const s=tn[t];s?(n.insertBefore(s,i),sn(n.childNodes[o],l,e)):n.replaceChild(cn(l,e),i)}else sn(n.childNodes[o],l,e)}}let s=n.childNodes?.length||0;for(;s>i;)n.removeChild(n.lastChild),s--;if(l>i){const o=document.createDocumentFragment();for(let n=i;n<t.length;n++)o.appendChild(cn(t[n],e));n.appendChild(o)}}const un=n=>{const t=document.createElement("section");return t.insertAdjacentHTML("afterbegin",n),Array.from(t.children)};function an(n){if(0===n?.indexOf("_html:")){const t=document.createElement("div");return t.insertAdjacentHTML("afterbegin",n.substring(6)),t}return document.createTextNode(n??"")}function cn(n,t){if(n instanceof HTMLElement||n instanceof SVGElement)return n;if("string"==typeof n)return an(n);if(!n.tag||"function"==typeof n.tag)return an(JSON.stringify(n));const e=(t=t||"svg"===n.tag)?document.createElementNS("http://www.w3.org/2000/svg",n.tag):document.createElement(n.tag);return G(e,n.props,t),n.children&&n.children.forEach((n=>e.appendChild(cn(n,t)))),n.props&&void 0!==n.props.key&&(e.key=n.props.key,tn[n.props.key]=e,++en>=500&&(!function(){if(!(Object.keys(tn).length<=1e3))for(const[n,t]of Object.entries(tn))t.isConnected||delete tn[n]}(),en=0)),e}function hn(n,t,e=0){if("string"==typeof n)return n;if(Array.isArray(n))return n.map((n=>hn(n,t,e++)));let o=n;if(n&&"function"==typeof n.tag&&Object.getPrototypeOf(n.tag).i&&(o=function(n,t,e){const{tag:o,props:l,children:i}=n;let s=`_${e}`,r=l&&l.id;r?s=r:r=`_${e}${Date.now()}`;let u="section";l&&l.as&&(u=l.as,delete l.as),t.m||(t.m={});let a=t.m[s];if(a&&a instanceof o&&a.element)a.renderState(a.state);else{const n=document.createElement(u);a=t.m[s]=new o({...l,children:i}).mount(n,{render:!0})}if(a.mounted){const n=a.mounted(l,i,a.state);void 0!==n&&a.setState(n)}return G(a.element,l,!1),a.element}(n,t,e)),o&&Array.isArray(o.children)){const n=o.props?._component;if(n){let t=0;o.children=o.children.map((e=>hn(e,n,t++)))}else o.children=o.children.map((n=>hn(n,t,e++)))}return o}const dn=(n,t={})=>class extends HTMLElement{constructor(){super()}get component(){return this._component}get state(){return this._component.state}static get observedAttributes(){return(t.observedAttributes||[]).map((n=>n.toLowerCase()))}connectedCallback(){if(this.isConnected&&!this._component){const e=t||{};this._shadowRoot=e.shadow?this.attachShadow({mode:"open"}):this;const o=e.observedAttributes||[],l=o.reduce(((n,t)=>{const e=t.toLowerCase();return e!==t&&(n[e]=t),n}),{});this._attrMap=n=>l[n]||n;const i={};Array.from(this.attributes).forEach((n=>i[this._attrMap(n.name)]=n.value)),o.forEach((n=>{void 0!==this[n]&&(i[n]=this[n]),Object.defineProperty(this,n,{get:()=>i[n],set(t){this.attributeChangedCallback(n,i[n],t)},configurable:!0,enumerable:!0})})),requestAnimationFrame((()=>{const t=this.children?Array.from(this.children):[];if(this._component=new n({...i,children:t}).mount(this._shadowRoot,e),this._component._props=i,this._component.dispatchEvent=this.dispatchEvent.bind(this),this._component.mounted){const n=this._component.mounted(i,t,this._component.state);void 0!==n&&(this._component.state=n)}this.on=this._component.on.bind(this._component),this.run=this._component.run.bind(this._component),!1!==e.render&&this._component.run(".")}))}}disconnectedCallback(){this._component?.unload?.(),this._component?.unmount?.(),this._component=null}attributeChangedCallback(n,e,o){if(this._component){const l=this._attrMap(n);this._component._props[l]=o,this._component.run("attributeChanged",l,e,o),o!==e&&!1!==t.render&&window.requestAnimationFrame((()=>{this._component.run(".")}))}}};var fn=(n,t,e)=>{"undefined"!=typeof customElements&&customElements.define(n,dn(t,e))};const pn={meta:new WeakMap,defineMetadata(n,t,e){this.meta.has(e)||this.meta.set(e,{}),this.meta.get(e)[n]=t},getMetadataKeys(n){return n=Object.getPrototypeOf(n),this.meta.get(n)?Object.keys(this.meta.get(n)):[]},getMetadata(n,t){return t=Object.getPrototypeOf(t),this.meta.get(t)?this.meta.get(t)[n]:null}};function gn(n,t={}){return(e,o,l)=>{const i=n?n.toString():o;return pn.defineMetadata(`apprun-update:${i}`,{name:i,key:o,options:t},e),l}}function mn(n,t={}){return function(e,o){const l=n?n.toString():o;pn.defineMetadata(`apprun-update:${l}`,{name:l,key:o,options:t},e)}}function yn(n,t){return function(e){return fn(n,e,t),e}}const vn=n=>n,bn=s;class wn{renderState(n,t=null){if(!this.view)return;let e=t||this.view(n);if(bn.debug&&bn.run("debug",{component:this,_:e?".":"-",state:n,vdom:e,el:this.element}),"object"!=typeof document)return;const o="string"==typeof this.element&&this.element?function(n){try{return document.getElementById(n)}catch(t){return console.warn(`Error getting element by id: ${n}`,t),null}}(this.element)||function(n,t=document){try{return t.querySelector(n)}catch(t){return console.warn(`Invalid selector: ${n}`,t),null}}(this.element):this.element;if(!o)return void console.warn(`Component element not found: ${this.element}`);const l="_c";this.unload?o._component===this&&o.getAttribute(l)===this.tracking_id||(this.tracking_id=(new Date).valueOf().toString(),o.setAttribute(l,this.tracking_id),"undefined"!=typeof MutationObserver&&(this.observer||(this.observer=new MutationObserver((n=>{n[0].oldValue!==this.tracking_id&&document.body.contains(o)||(this.unload(this.state),this.observer.disconnect(),this.observer=null)}))),this.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeOldValue:!0,attributeFilter:[l]}))):o.removeAttribute&&o.removeAttribute(l),o._component=this,!t&&e&&(e=c(e,this),this.options.transition&&document&&document.startViewTransition?document.startViewTransition((()=>bn.render(o,e,this))):bn.render(o,e,this)),this.rendered&&this.rendered(this.state)}setState(n,t={render:!0,history:!1}){const e=async n=>{try{for(;;){const{value:e,done:o}=await n.next();if(o)break;this.setState(e,t)}}catch(n){console.error("Error in async iterator:",n)}},o=n;if(o?.[Symbol.asyncIterator])this.setState(e(o[Symbol.asyncIterator]()),t);else if(o?.[Symbol.iterator]&&"function"==typeof o.next)for(const n of o)this.setState(n,t);else if(n&&n instanceof Promise)Promise.resolve(n).then((e=>{this.setState(e,t),this._state=n}));else{if(this._state=n,null==n)return;this.state=n,!1!==t.render&&(t.transition&&document&&document.startViewTransition?document.startViewTransition((()=>this.renderState(n))):this.renderState(n)),!1!==t.history&&this.enable_history&&(this._history=[...this._history,n],this._history_idx=this._history.length-1),"function"==typeof t.callback&&t.callback(this.state)}}constructor(n,t,o,l){this.state=n,this.view=t,this.update=o,this.options=l,this._app=new e,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=(n=null,t)=>{if(this.mount(n,{render:!0,...t}),this.mounted&&"function"==typeof this.mounted){const n=this.mounted({},[],this.state);void 0!==n&&this.setState(n)}return this}}mount(n=null,t){return console.assert(!this.element,"Component already mounted."),this.options=t={...this.options,...t},this.element=n,this.global_event=t.global_event,this.enable_history=!!t.history,this.enable_history&&(this.on(t.history.prev||"history-prev",this._history_prev),this.on(t.history.next||"history-next",this._history_next)),t.route&&(this.update=this.update||{},this.update[t.route]||(this.update[t.route]=vn)),this.add_actions(),this.state=this.state??this.model??{},"function"==typeof this.state&&(this.state=this.state()),this.setState(this.state,{render:!!t.render,history:!0}),bn.debug&&bn.find("debug-create-component")?.length&&bn.run("debug-create-component",this),this}is_global_event(n){return n&&(this.global_event||this._global_events.indexOf(n)>=0||n.startsWith("#")||n.startsWith("/")||n.startsWith("@"))}add_action(n,t,e={}){t&&"function"==typeof t?(e.global&&this._global_events.push(n),this.on(n,((...o)=>{bn.debug&&bn.run("debug",{component:this,_:">",event:n,p:o,current_state:this.state,options:e});try{const l=t(this.state,...o);bn.debug&&bn.run("debug",{component:this,_:"<",event:n,p:o,newState:l,state:this.state,options:e}),this.setState(l,e)}catch(t){console.error(`Error in component action '${n}':`,t),bn.debug&&bn.run("debug",{component:this,_:"!",event:n,p:o,error:t,state:this.state,options:e})}}),e)):console.warn(`Component action for '${n}' is not a valid function:`,t)}add_actions(){const n=this.update||{};pn.getMetadataKeys(this).forEach((t=>{if(t.startsWith("apprun-update:")){const e=pn.getMetadata(t,this);n[e.name]=[this[e.key].bind(this),e.options]}}));const t={};Array.isArray(n)?n.forEach((n=>{const[e,o,l]=n;e.toString().split(",").forEach((n=>t[n.trim()]=[o,l]))})):Object.keys(n).forEach((e=>{const o=n[e];("function"==typeof o||Array.isArray(o))&&e.split(",").forEach((n=>t[n.trim()]=o))})),t["."]||(t["."]=vn),Object.keys(t).forEach((n=>{const e=t[n];"function"==typeof e?this.add_action(n,e):Array.isArray(e)&&this.add_action(n,e[0],e[1])}))}run(n,...t){if(this.state instanceof Promise)return Promise.resolve(this.state).then((e=>{this.state=e,this.run(n,...t)}));{const e=n.toString();return this.is_global_event(e)?bn.run(e,...t):this._app.run(e,...t)}}on(n,t,e){const o=n.toString();return this._actions.push({name:o,fn:t}),this.is_global_event(o)?bn.on(o,t,e):this._app.on(o,t,e)}runAsync(n,...t){const e=n.toString();return this.is_global_event(e)?bn.runAsync(e,...t):this._app.runAsync(e,...t)}query(n,...t){return console.warn("component.query() is deprecated. Use component.runAsync() instead."),this.runAsync(n,...t)}unmount(){this.observer?.disconnect(),this._actions.forEach((n=>{const{name:t,fn:e}=n;this.is_global_event(t)?bn.off(t,e):this._app.off(t,e)}))}}function Sn(){const n=s.find("#");if(n&&n.length>0)return s.run("#"),void s.run(xn,"#");const t=s.find("/");if(t&&t.length>0)return s.run("/"),void s.run(xn,"/");const e=s.find("#/");if(e&&e.length>0)return s.run("#/"),void s.run(xn,"#/");console.warn("No subscribers for event: "),s.run(On,""),s.run(xn,"")}function kn(n){if(!n)return void Sn();n=function(n){return n&&"/"!==n&&"#"!==n&&"#/"!==n&&n.endsWith("/")?n.slice(0,-1):n}(n);const t=s.basePath;t&&(n=function(n,t){if(!t||"/"===t||""===t)return n;const e=t.startsWith("/")?t:"/"+t;if(n.startsWith(e)){const t=n.substring(e.length);return t.startsWith("/")?t:"/"+t}return n}(n,t));const e=function(n){return n?n.startsWith("#/")?n.substring(2).split("/"):n.startsWith("#")||n.startsWith("/")?n.substring(1).split("/"):n.split("/"):[]}(n);let o;!function(n){const t=n.filter(Boolean);t.length>11&&console.warn(`Deep route hierarchy detected: ${t.join("/")} (${t.length} levels)`)}(e),o=n.startsWith("#/")?"hash-slash":n.startsWith("#")?"hash":n.startsWith("/")?"path":"non-prefixed";const l=function(n,t){const e=[];for(let o=n.length;o>0;o--){const l=n.slice(0,o);let i="";switch(t){case"path":i="/"+l.join("/");break;case"hash":i="#"+l.join("/");break;case"hash-slash":i="#/"+l.join("/");break;case"non-prefixed":i=l.join("/")}e.push(i)}return e}(e,o),i=function(n,t){for(let e=0;e<n.length;e++){const o=n[e],l=s.find(o);if(l&&l.length>0){const l=n.length-e;return{eventName:o,parameters:t.slice(l)}}}return null}(l,e);if(i)Cn(i.eventName,...i.parameters);else if(l.length>0){const t=l[l.length-1];console.warn(`No subscribers for event: ${t}`),s.run(On,n),s.run(xn,n)}else Sn()}wn.i=!0;const Cn=(n,...t)=>{if(!n||n===xn||n===On)return;const e=s.find(n);e&&0!==e.length?s.run(n,...t):(console.warn(`No subscribers for event: ${n}`),s.run(On,n,...t)),s.run(xn,n,...t)},xn="//",On="///",Mn=n=>{s.lastUrl!==n&&(s.lastUrl=n,kn(n))};function Pn(n){return n&&"object"==typeof n&&"function"==typeof n.mount}function An(n){return"function"==typeof n&&n.prototype&&n.prototype.constructor===n&&(void 0!==n.prototype.mount||void 0!==n.prototype.state||void 0!==n.prototype.view)}function En(n){return"function"==typeof n&&!An(n)}async function Rn(n,t=3){let e=n,o=0;for(;En(e)&&o<t;)try{const n=await e();if(n===e)break;e=n,o++}catch(n){console.error(`Error executing component function: ${n}`);break}return e}const $n=s;if(!$n.start){$n.version=n,$n.h=$n.createElement=on,$n.render=ln,$n.Fragment=Q,$n.webComponent=fn,$n.safeHTML=un,$n.start=(n,t,e,o,l)=>{const i={render:!0,global_event:!0,...l},s=new wn(t,e,o);return l&&l.rendered&&(s.rendered=l.rendered),l&&l.mounted&&(s.mounted=l.mounted),s.start(n,i),s},$n.query=$n.query||$n.runAsync;const t=n=>{};if($n.on("/",t),$n.on("debug",(n=>t)),$n.on(xn,t),$n.on(On,t),$n.route=Mn,$n.on("route",(n=>$n.route&&$n.route(n))),"object"==typeof document){let n=location.pathname;n.endsWith("/")&&(n=n.slice(0,-1)),$n.basePath=n,document.addEventListener("DOMContentLoaded",(()=>{const n=document.body.hasAttribute("apprun-no-init")||$n["no-init-route"]||!1,t=$n.find("#")||$n.find("#/")||!1;window.addEventListener("hashchange",(()=>Mn(location.hash))),window.addEventListener("popstate",(()=>Mn(location.pathname))),t?!n&&Mn(location.hash):(!n&&(()=>{const n=$n.basePath||"";let t=location.pathname;n&&t.startsWith(n)&&(t=t.substring(n.length),t.startsWith("/")||(t="/"+t)),Mn(t)})(),document.body.addEventListener("click",(n=>{const t=n.target;if(!t)return;const e="A"===t.tagName?t:t.closest("a");if(e&&e.origin===location.origin&&e.pathname){n.preventDefault();const t=($n.basePath||"")+e.pathname;history.pushState(null,"",t),Mn(e.pathname)}})))}))}if("object"==typeof window){const n=window;n.Component=wn,n._React=n.React,n.React=$n,n.on=mn,n.customElement=yn,n.safeHTML=un}$n.use_render=(n,t=0)=>{$n.render=0===t?(t,e)=>n(e,t):(t,e)=>n(t,e)},$n.use_react=(n,t)=>{if(n&&t)if("function"==typeof n.createElement)if(n.Fragment)if($n.h=$n.createElement=n.createElement,$n.Fragment=n.Fragment,n.version&&n.version.startsWith("18")){if(!t.createRoot||"function"!=typeof t.createRoot)return void console.error("AppRun use_react: ReactDOM.createRoot not found in React 18+");$n.render=(n,e)=>{n&&void 0!==e&&(n._root||(n._root=t.createRoot(n)),n._root.render(e))}}else{if(!t.render||"function"!=typeof t.render)return void console.error("AppRun use_react: ReactDOM.render not found in legacy React");$n.render=(n,e)=>t.render(e,n)}else console.error("AppRun use_react: Invalid React object - Fragment not found");else console.error("AppRun use_react: Invalid React object - createElement method not found");else console.error("AppRun use_react: React and ReactDOM parameters are required")},$n.addComponents=async(n,t)=>{for(const[e,o]of Object.entries(t))if(o&&e)if(Pn(o)){const t={route:e};o.mount(n,t)}else if(An(o)){const t={route:e};(new o).mount(n,t)}else if(En(o)){let t=await Rn(o);if(Pn(t)){const o={route:e};t.mount(n,o);continue}if(An(t)){const o={route:e};(new t).mount(n,o);continue}s.on(e,((...t)=>{const e=o(...t);if("string"!=typeof n||(n=document.querySelector(n)))return s.render(n,e);console.error(`Element not found: ${n}`)}))}else console.error("Invalid component: component must be a class, instance, or function that returns a class/instance");else console.error(`Invalid component configuration: component=${o}, route=${e}`)}}
1
+ const n="3.37.1",t=`AppRun-${n}`;class e{constructor(){this._events={}}on(n,t,e={}){this._events[n]=this._events[n]||[],this._events[n].push({fn:t,options:e})}off(n,t){const e=this._events[n]||[];this._events[n]=e.filter((n=>n.fn!==t))}find(n){return this._events[n]}run(n,...t){const e=this.getSubscribers(n,this._events);return console.assert(e&&e.length>0,"No subscriber for event: "+n),e.forEach((e=>{const{fn:o,options:l}=e;if(!o||"function"!=typeof o)return console.error(`AppRun event handler for '${n}' is not a function:`,o),!1;if(l.delay)this.delay(n,o,t,l);else try{Object.keys(l).length>0?o.apply(this,[...t,l]):o.apply(this,t)}catch(t){console.error(`Error in event handler for '${n}':`,t)}return!e.options.once})),e.length}once(n,t,e={}){this.on(n,t,{...e,once:!0})}delay(n,t,e,o){o._t&&clearTimeout(o._t),o._t=setTimeout((()=>{clearTimeout(o._t);try{Object.keys(o).length>0?t.apply(this,[...e,o]):t.apply(this,e)}catch(t){console.error(`Error in delayed event handler for '${n}':`,t)}}),o.delay)}runAsync(n,...t){const e=this.getSubscribers(n,this._events);console.assert(e&&e.length>0,"No subscriber for event: "+n);const o=e.map((e=>{const{fn:o,options:l}=e;if(!o||"function"!=typeof o)return console.error(`AppRun async event handler for '${n}' is not a function:`,o),Promise.resolve(null);try{return Object.keys(l).length>0?o.apply(this,[...t,l]):o.apply(this,t)}catch(t){return console.error(`Error in async event handler for '${n}':`,t),Promise.reject(t)}}));return Promise.all(o)}query(n,...t){return console.warn("app.query() is deprecated. Use app.runAsync() instead."),this.runAsync(n,...t)}getSubscribers(n,t){const e=t[n]||[];return t[n]=e.filter((n=>!n.options.once)),Object.keys(t).filter((t=>t.endsWith("*")&&n.startsWith(t.replace("*","")))).sort(((n,t)=>t.length-n.length)).forEach((o=>e.push(...t[o].map((t=>({...t,options:{...t.options,event:n}})))))),e}}const o=t;let l;const i="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};i.app&&i._AppRunVersions?l=i.app:(l=new e,i.app=l,i._AppRunVersions=o);var s=l;function r(n){return n?.target instanceof HTMLElement?n.target:null}const u=(n,t)=>(t?n.state[t]:n.state)||"",a=(n,t,e)=>{if(t){const o=n.state||{};o[t]=e,n.setState(o)}else n.setState(e)},c=(n,t)=>{if(Array.isArray(n))return n.map((n=>c(n,t)));{let{type:e,tag:o,props:l,children:i}=n;return o=o||e,i=i||l?.children,l&&Object.keys(l).forEach((n=>{n.startsWith("$")&&(((n,t,e,o)=>{if(n.startsWith("$on")){const e=t[n];if(n=n.substring(1),"boolean"==typeof e)t[n]=t=>o.run?o.run(n,t):s.run(n,t);else if("string"==typeof e)t[n]=n=>o.run?o.run(e,n):s.run(e,n);else if("function"==typeof e)t[n]=n=>o.setState(e(o.state,n));else if(Array.isArray(e)){const[l,...i]=e;"string"==typeof l?t[n]=n=>o.run?o.run(l,...i,n):s.run(l,...i,n):"function"==typeof l&&(t[n]=n=>o.setState(l(o.state,...i,n)))}}else if("$bind"===n){const l=t.type||"text",i="string"==typeof t[n]?t[n]:t.name;if("input"===e)switch(l){case"checkbox":t.checked=u(o,i),t.onclick=n=>{const t=r(n);t&&a(o,i||t.name,t.checked)};break;case"radio":t.checked=u(o,i)===t.value,t.onclick=n=>{const t=r(n);t&&a(o,i||t.name,t.value)};break;case"number":case"range":t.value=u(o,i),t.oninput=n=>{const t=r(n);t&&a(o,i||t.name,Number(t.value))};break;default:t.value=u(o,i),t.oninput=n=>{const t=r(n);t&&a(o,i||t.name,t.value)}}else"select"===e?(t.value=u(o,i),t.onchange=n=>{const t=r(n);t&&!t.multiple&&a(o,i||t.name,t.value)}):"option"===e?(t.selected=u(o,i),t.onclick=n=>{const t=r(n);t&&a(o,i||t.name,t.selected)}):"textarea"===e&&(t.innerHTML=u(o,i),t.oninput=n=>{const t=r(n);t&&a(o,i||t.name,t.value)})}else s.run("$",{key:n,tag:e,props:t,component:o})})(n,l,o,t),delete l[n])})),i&&c(i,t),n}};class h{constructor(n,t,e){this.normal=t,this.property=n,e&&(this.space=e)}}function d(n,t){const e={},o={};for(const t of n)Object.assign(e,t.property),Object.assign(o,t.normal);return new h(e,o,t)}function f(n){return n.toLowerCase()}h.prototype.normal={},h.prototype.property={},h.prototype.space=void 0;class p{constructor(n,t){this.attribute=t,this.property=n}}p.prototype.attribute="",p.prototype.booleanish=!1,p.prototype.boolean=!1,p.prototype.commaOrSpaceSeparated=!1,p.prototype.commaSeparated=!1,p.prototype.defined=!1,p.prototype.mustUseProperty=!1,p.prototype.number=!1,p.prototype.overloadedBoolean=!1,p.prototype.property="",p.prototype.spaceSeparated=!1,p.prototype.space=void 0;let g=0;const m=C(),y=C(),v=C(),b=C(),w=C(),S=C(),k=C();function C(){return 2**++g}var x=Object.freeze({__proto__:null,boolean:m,booleanish:y,commaOrSpaceSeparated:k,commaSeparated:S,number:b,overloadedBoolean:v,spaceSeparated:w});const O=Object.keys(x);class M extends p{constructor(n,t,e,o){let l=-1;if(super(n,t),P(this,"space",o),"number"==typeof e)for(;++l<O.length;){const n=O[l];P(this,O[l],(e&x[n])===x[n])}}}function P(n,t,e){e&&(n[t]=e)}function A(n){const t={},e={};for(const[o,l]of Object.entries(n.properties)){const i=new M(o,n.transform(n.attributes||{},o),l,n.space);n.mustUseProperty&&n.mustUseProperty.includes(o)&&(i.mustUseProperty=!0),t[o]=i,e[f(o)]=o,e[f(i.attribute)]=o}return new h(t,e,n.space)}M.prototype.defined=!0;const E=A({properties:{ariaActiveDescendant:null,ariaAtomic:y,ariaAutoComplete:null,ariaBusy:y,ariaChecked:y,ariaColCount:b,ariaColIndex:b,ariaColSpan:b,ariaControls:w,ariaCurrent:null,ariaDescribedBy:w,ariaDetails:null,ariaDisabled:y,ariaDropEffect:w,ariaErrorMessage:null,ariaExpanded:y,ariaFlowTo:w,ariaGrabbed:y,ariaHasPopup:null,ariaHidden:y,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:w,ariaLevel:b,ariaLive:null,ariaModal:y,ariaMultiLine:y,ariaMultiSelectable:y,ariaOrientation:null,ariaOwns:w,ariaPlaceholder:null,ariaPosInSet:b,ariaPressed:y,ariaReadOnly:y,ariaRelevant:null,ariaRequired:y,ariaRoleDescription:w,ariaRowCount:b,ariaRowIndex:b,ariaRowSpan:b,ariaSelected:y,ariaSetSize:b,ariaSort:null,ariaValueMax:b,ariaValueMin:b,ariaValueNow:b,ariaValueText:null,role:null},transform:(n,t)=>"role"===t?t:"aria-"+t.slice(4).toLowerCase()});function R(n,t){return t in n?n[t]:t}function $(n,t){return R(n,t.toLowerCase())}const D=A({attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:S,acceptCharset:w,accessKey:w,action:null,allow:null,allowFullScreen:m,allowPaymentRequest:m,allowUserMedia:m,alt:null,as:null,async:m,autoCapitalize:null,autoComplete:w,autoFocus:m,autoPlay:m,blocking:w,capture:null,charSet:null,checked:m,cite:null,className:w,cols:b,colSpan:null,content:null,contentEditable:y,controls:m,controlsList:w,coords:b|S,crossOrigin:null,data:null,dateTime:null,decoding:null,default:m,defer:m,dir:null,dirName:null,disabled:m,download:v,draggable:y,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:m,formTarget:null,headers:w,height:b,hidden:v,high:b,href:null,hrefLang:null,htmlFor:w,httpEquiv:w,id:null,imageSizes:null,imageSrcSet:null,inert:m,inputMode:null,integrity:null,is:null,isMap:m,itemId:null,itemProp:w,itemRef:w,itemScope:m,itemType:w,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:m,low:b,manifest:null,max:null,maxLength:b,media:null,method:null,min:null,minLength:b,multiple:m,muted:m,name:null,nonce:null,noModule:m,noValidate:m,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:m,optimum:b,pattern:null,ping:w,placeholder:null,playsInline:m,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:m,referrerPolicy:null,rel:w,required:m,reversed:m,rows:b,rowSpan:b,sandbox:w,scope:null,scoped:m,seamless:m,selected:m,shadowRootClonable:m,shadowRootDelegatesFocus:m,shadowRootMode:null,shape:null,size:b,sizes:null,slot:null,span:b,spellCheck:y,src:null,srcDoc:null,srcLang:null,srcSet:null,start:b,step:null,style:null,tabIndex:b,target:null,title:null,translate:null,type:null,typeMustMatch:m,useMap:null,value:y,width:b,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:w,axis:null,background:null,bgColor:null,border:b,borderColor:null,bottomMargin:b,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:m,declare:m,event:null,face:null,frame:null,frameBorder:null,hSpace:b,leftMargin:b,link:null,longDesc:null,lowSrc:null,marginHeight:b,marginWidth:b,noResize:m,noHref:m,noShade:m,noWrap:m,object:null,profile:null,prompt:null,rev:null,rightMargin:b,rules:null,scheme:null,scrolling:y,standby:null,summary:null,text:null,topMargin:b,valueType:null,version:null,vAlign:null,vLink:null,vSpace:b,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:m,disableRemotePlayback:m,prefix:null,property:null,results:b,security:null,unselectable:null},space:"html",transform:$}),L=A({attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},properties:{about:k,accentHeight:b,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:b,amplitude:b,arabicForm:null,ascent:b,attributeName:null,attributeType:null,azimuth:b,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:b,by:null,calcMode:null,capHeight:b,className:w,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:b,diffuseConstant:b,direction:null,display:null,dur:null,divisor:b,dominantBaseline:null,download:m,dx:null,dy:null,edgeMode:null,editable:null,elevation:b,enableBackground:null,end:null,event:null,exponent:b,externalResourcesRequired:null,fill:null,fillOpacity:b,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:S,g2:S,glyphName:S,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:b,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:b,horizOriginX:b,horizOriginY:b,id:null,ideographic:b,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:b,k:b,k1:b,k2:b,k3:b,k4:b,kernelMatrix:k,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:b,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:b,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:b,overlineThickness:b,paintOrder:null,panose1:null,path:null,pathLength:b,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:w,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:b,pointsAtY:b,pointsAtZ:b,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:k,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:k,rev:k,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:k,requiredFeatures:k,requiredFonts:k,requiredFormats:k,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:b,specularExponent:b,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:b,strikethroughThickness:b,string:null,stroke:null,strokeDashArray:k,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:b,strokeOpacity:b,strokeWidth:null,style:null,surfaceScale:b,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:k,tabIndex:b,tableValues:null,target:null,targetX:b,targetY:b,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:k,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:b,underlineThickness:b,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:b,values:null,vAlphabetic:b,vMathematical:b,vectorEffect:null,vHanging:b,vIdeographic:b,version:null,vertAdvY:b,vertOriginX:b,vertOriginY:b,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:b,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:"svg",transform:R}),T=A({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:"xlink",transform:(n,t)=>"xlink:"+t.slice(5).toLowerCase()}),_=A({attributes:{xmlnsxlink:"xmlns:xlink"},properties:{xmlnsXLink:null,xmlns:null},space:"xmlns",transform:$}),j=A({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:"xml",transform:(n,t)=>"xml:"+t.slice(3).toLowerCase()}),U=/[A-Z]/g,z=/-[a-z]/g,I=/^data[-\w.:]+$/i;function B(n){return"-"+n.toLowerCase()}function H(n){return n.charAt(1).toUpperCase()}const N=d([E,D,T,_,j],"html"),F=d([E,L,T,_,j],"svg"),V="_props",q=new Map;function W(n,t){const e=`${n}:${t}`;let o=q.get(e);return void 0===o&&(o=function(n,t){const e=f(t);let o=t,l=p;if(e in n.normal)return n.property[n.normal[e]];if(e.length>4&&"data"===e.slice(0,4)&&I.test(t)){if("-"===t.charAt(4)){const n=t.slice(5).replace(z,H);o="data"+n.charAt(0).toUpperCase()+n.slice(1)}else{const n=t.slice(4);if(!z.test(n)){let e=n.replace(U,B);"-"!==e.charAt(0)&&(e="-"+e),t="data"+e}}l=M}return new l(o,t)}(t?F:N,n)||null,q.set(e,o)),o}function K(n,t,e){!function(n){if(null==n||!1===n||""===n)return!1;if(!0===n)return!0;if("string"==typeof n){return"false"!==n.toLowerCase()&&"0"!==n}return Boolean(n)}(e)?n.removeAttribute(t):n.setAttribute(t,t)}function X(n,t,e){try{n[t]=e}catch(o){Y(n,t,e,!1)}}function Y(n,t,e,o){if(null==e)return void n.removeAttribute(t);const l=String(e);if(o&&t.includes(":")){const[e]=t.split(":");"xlink"===e?n.setAttributeNS("http://www.w3.org/1999/xlink",t,l):n.setAttribute(t,l)}else n.setAttribute(t,l)}function Z(n,t,e,o){if(function(n,t){if(document.activeElement===n)return["value","selectionStart","selectionEnd","selectionDirection"].includes(t);if("scrollTop"===t||"scrollLeft"===t)return!0;if(n instanceof HTMLMediaElement&&["currentTime","paused","playbackRate","volume"].includes(t))return!0;return!1}(n,t))return;if("style"===t){if(n.style.cssText&&(n.style.cssText=""),"string"==typeof e)n.style.cssText=e;else if(e&&"object"==typeof e)for(const t in e)n.style[t]!==e[t]&&(n.style[t]=e[t]);return}if("key"===t)return void(null!=e&&(n.key=e));if(t.startsWith("data-"))return void function(n,t,e){const o=(l=t.slice(5)).length<=1?l.toLowerCase():l.split("-").map(((n,t)=>0===t?n.toLowerCase():n.charAt(0).toUpperCase()+n.slice(1).toLowerCase())).join("");var l;null==e?delete n.dataset[o]:n.dataset[o]=String(e)}(n,t,e);if(t.startsWith("on"))return void function(n,t,e){t.startsWith("on")&&(e&&"function"!=typeof e?"string"==typeof e&&(e?n.setAttribute(t,e):n.removeAttribute(t)):n[t]=e)}(n,t,e);if(!("INPUT"!==n.tagName&&"TEXTAREA"!==n.tagName&&"SELECT"!==n.tagName||"value"!==t&&"selected"!==t&&"selectedIndex"!==t))return void X(n,t,e);if("INPUT"===n.tagName&&"checked"===t)return X(n,t,e),void K(n,t,e);const l=W(t,o);l?l.boolean||l.overloadedBoolean?K(n,l.attribute,e):l.mustUseProperty&&!o?X(n,l.property,e):Y(n,l.attribute,e,o):t.startsWith("aria-")||"role"===t?Y(n,t,e,o):t in n||void 0!==n[t]?X(n,t,e):Y(n,t,e,o)}function J(n){return/^[a-zA-Z_:][\w\-:.]*$/.test(n)&&!n.includes("<")&&!n.includes(">")&&!n.includes('"')&&!n.includes("'")}function G(n,t,e){const o=function(n,t){if(t&&(t.class=t.class||t.className,delete t.className),!n||0===Object.keys(n).length)return t||{};if(!t||0===Object.keys(t).length){const t={};return Object.keys(n).forEach((n=>t[n]=null)),t}const e={};return Object.keys(n).forEach((n=>{n in t||(e[n]=null)})),Object.keys(t).forEach((n=>e[n]=t[n])),e}(n[V]||{},t);n[V]=t||{},function(n,t,e,o){for(const e in t)J(e)&&Z(n,e,t[e],o);t&&"function"==typeof t.ref&&window.requestAnimationFrame((()=>t.ref(n)))}(n,o,0,e)}function Q(n,...t){return nn(t)}function nn(n){const t=[],e=n=>{null!=n&&""!==n&&!1!==n&&t.push("function"==typeof n||"object"==typeof n?n:`${n}`)};return n&&n.forEach((n=>{Array.isArray(n)?n.forEach((n=>e(n))):e(n)})),t}const tn={};let en=0;function on(n,t,...e){const o=nn(e);if("string"==typeof n)return{tag:n,props:t,children:o};if(Array.isArray(n))return n;if(void 0===n&&e)return o;if(Object.getPrototypeOf(n).i)return{tag:n,props:t,children:o};if("function"==typeof n)return n(t,o);throw new Error(`Unknown tag in vdom ${n}`)}const ln=(n,t,e={})=>{if(null==t||!1===t)return;!function(n,t,e={}){if(null==t||!1===t)return;if(t=hn(t,e),!n)return;const o="SVG"===n.nodeName;Array.isArray(t)?rn(n,t,o):rn(n,[t],o)}("string"==typeof n&&n?document.getElementById(n)||document.querySelector(n):n,t=c(t,e),e)};function sn(n,t,e){e=e||"svg"===t.tag,function(n,t){const e=n.nodeName,o=`${t.tag||""}`;return e.toUpperCase()===o.toUpperCase()}(n,t)?(rn(n,t.children,e),G(n,t.props,e)):n.parentNode.replaceChild(cn(t,e),n)}function rn(n,t,e){const o=n.childNodes?.length||0,l=t?.length||0,i=Math.min(o,l);for(let o=0;o<i;o++){const l=t[o],i=n.childNodes[o];if("string"==typeof l)i.textContent!==l&&(3===i.nodeType?i.nodeValue=l:n.replaceChild(an(l),i));else if(l instanceof HTMLElement||l instanceof SVGElement)n.insertBefore(l,i);else{const t=l.props&&l.props.key;if(t)if(i.key===t)sn(n.childNodes[o],l,e);else{const s=tn[t];s?(n.insertBefore(s,i),sn(n.childNodes[o],l,e)):n.replaceChild(cn(l,e),i)}else sn(n.childNodes[o],l,e)}}let s=n.childNodes?.length||0;for(;s>i;)n.removeChild(n.lastChild),s--;if(l>i){const o=document.createDocumentFragment();for(let n=i;n<t.length;n++)o.appendChild(cn(t[n],e));n.appendChild(o)}}const un=n=>{const t=document.createElement("section");return t.insertAdjacentHTML("afterbegin",n),Array.from(t.children)};function an(n){if(0===n?.indexOf("_html:")){const t=document.createElement("div");return t.insertAdjacentHTML("afterbegin",n.substring(6)),t}return document.createTextNode(n??"")}function cn(n,t){if(n instanceof HTMLElement||n instanceof SVGElement)return n;if("string"==typeof n)return an(n);if(!n.tag||"function"==typeof n.tag)return an(JSON.stringify(n));const e=(t=t||"svg"===n.tag)?document.createElementNS("http://www.w3.org/2000/svg",n.tag):document.createElement(n.tag);return G(e,n.props,t),n.children&&n.children.forEach((n=>e.appendChild(cn(n,t)))),n.props&&void 0!==n.props.key&&(e.key=n.props.key,tn[n.props.key]=e,++en>=500&&(!function(){if(!(Object.keys(tn).length<=1e3))for(const[n,t]of Object.entries(tn))t.isConnected||delete tn[n]}(),en=0)),e}function hn(n,t,e=0){if("string"==typeof n)return n;if(Array.isArray(n))return n.map((n=>hn(n,t,e++)));let o=n;if(n&&"function"==typeof n.tag&&Object.getPrototypeOf(n.tag).i&&(o=function(n,t,e){const{tag:o,props:l,children:i}=n;let s=`_${e}`,r=l&&l.id;r?s=r:r=`_${e}${Date.now()}`;let u="section";l&&l.as&&(u=l.as,delete l.as),t.m||(t.m={});let a=t.m[s];if(a&&a instanceof o&&a.element)a.renderState(a.state);else{const n=document.createElement(u);a=t.m[s]=new o({...l,children:i}).mount(n,{render:!0})}if(a.mounted){const n=a.mounted(l,i,a.state);void 0!==n&&a.setState(n)}return G(a.element,l,!1),a.element}(n,t,e)),o&&Array.isArray(o.children)){const n=o.props?._component;if(n){let t=0;o.children=o.children.map((e=>hn(e,n,t++)))}else o.children=o.children.map((n=>hn(n,t,e++)))}return o}const dn=(n,t={})=>class extends HTMLElement{constructor(){super()}get component(){return this._component}get state(){return this._component.state}static get observedAttributes(){return(t.observedAttributes||[]).map((n=>n.toLowerCase()))}connectedCallback(){if(this.isConnected&&!this._component){const e=t||{};this._shadowRoot=e.shadow?this.attachShadow({mode:"open"}):this;const o=e.observedAttributes||[],l=o.reduce(((n,t)=>{const e=t.toLowerCase();return e!==t&&(n[e]=t),n}),{});this._attrMap=n=>l[n]||n;const i={};Array.from(this.attributes).forEach((n=>i[this._attrMap(n.name)]=n.value)),o.forEach((n=>{void 0!==this[n]&&(i[n]=this[n]),Object.defineProperty(this,n,{get:()=>i[n],set(t){this.attributeChangedCallback(n,i[n],t)},configurable:!0,enumerable:!0})})),requestAnimationFrame((()=>{const t=this.children?Array.from(this.children):[];if(this._component=new n({...i,children:t}).mount(this._shadowRoot,e),this._component._props=i,this._component.dispatchEvent=this.dispatchEvent.bind(this),this._component.mounted){const n=this._component.mounted(i,t,this._component.state);void 0!==n&&(this._component.state=n)}this.on=this._component.on.bind(this._component),this.run=this._component.run.bind(this._component),!1!==e.render&&this._component.run(".")}))}}disconnectedCallback(){this._component?.unload?.(),this._component?.unmount?.(),this._component=null}attributeChangedCallback(n,e,o){if(this._component){const l=this._attrMap(n);this._component._props[l]=o,this._component.run("attributeChanged",l,e,o),o!==e&&!1!==t.render&&window.requestAnimationFrame((()=>{this._component.run(".")}))}}};var fn=(n,t,e)=>{"undefined"!=typeof customElements&&customElements.define(n,dn(t,e))};const pn={meta:new WeakMap,defineMetadata(n,t,e){this.meta.has(e)||this.meta.set(e,{}),this.meta.get(e)[n]=t},getMetadataKeys(n){return n=Object.getPrototypeOf(n),this.meta.get(n)?Object.keys(this.meta.get(n)):[]},getMetadata(n,t){return t=Object.getPrototypeOf(t),this.meta.get(t)?this.meta.get(t)[n]:null}};function gn(n,t={}){return(e,o,l)=>{const i=n?n.toString():o;return pn.defineMetadata(`apprun-update:${i}`,{name:i,key:o,options:t},e),l}}function mn(n,t={}){return function(e,o){const l=n?n.toString():o;pn.defineMetadata(`apprun-update:${l}`,{name:l,key:o,options:t},e)}}function yn(n,t){return function(e){return fn(n,e,t),e}}const vn=n=>n,bn=s;class wn{renderState(n,t=null){if(!this.view)return;let e=t||this.view(n);if(bn.debug&&bn.run("debug",{component:this,_:e?".":"-",state:n,vdom:e,el:this.element}),"object"!=typeof document)return;const o="string"==typeof this.element&&this.element?function(n){try{return document.getElementById(n)}catch(t){return console.warn(`Error getting element by id: ${n}`,t),null}}(this.element)||function(n,t=document){try{return t.querySelector(n)}catch(t){return console.warn(`Invalid selector: ${n}`,t),null}}(this.element):this.element;if(!o)return void console.warn(`Component element not found: ${this.element}`);const l="_c";this.unload?o._component===this&&o.getAttribute(l)===this.tracking_id||(this.tracking_id=(new Date).valueOf().toString(),o.setAttribute(l,this.tracking_id),"undefined"!=typeof MutationObserver&&(this.observer||(this.observer=new MutationObserver((n=>{n[0].oldValue!==this.tracking_id&&document.body.contains(o)||(this.unload(this.state),this.observer.disconnect(),this.observer=null)}))),this.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeOldValue:!0,attributeFilter:[l]}))):o.removeAttribute&&o.removeAttribute(l),o._component=this,!t&&e&&(e=c(e,this),this.options.transition&&document&&document.startViewTransition?document.startViewTransition((()=>bn.render(o,e,this))):bn.render(o,e,this)),this.rendered&&this.rendered(this.state)}setState(n,t={render:!0,history:!1}){const e=async n=>{try{for(;;){const{value:e,done:o}=await n.next();if(o)break;this.setState(e,t)}}catch(n){console.error("Error in async iterator:",n)}},o=n;if(o?.[Symbol.asyncIterator])this.setState(e(o[Symbol.asyncIterator]()),t);else if(o?.[Symbol.iterator]&&"function"==typeof o.next)for(const n of o)this.setState(n,t);else if(n&&n instanceof Promise)Promise.resolve(n).then((e=>{this.setState(e,t),this._state=n}));else{if(this._state=n,null==n)return;this.state=n,!1!==t.render&&(t.transition&&document&&document.startViewTransition?document.startViewTransition((()=>this.renderState(n))):this.renderState(n)),!1!==t.history&&this.enable_history&&(this._history=[...this._history,n],this._history_idx=this._history.length-1),"function"==typeof t.callback&&t.callback(this.state)}}constructor(n,t,o,l){this.state=n,this.view=t,this.update=o,this.options=l,this._app=new e,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=(n=null,t)=>{if(this.mount(n,{render:!0,...t}),this.mounted&&"function"==typeof this.mounted){const n=this.mounted({},[],this.state);void 0!==n&&this.setState(n)}return this}}mount(n=null,t){return console.assert(!this.element,"Component already mounted."),this.options=t={...this.options,...t},this.element=n,this.global_event=t.global_event,this.enable_history=!!t.history,this.enable_history&&(this.on(t.history.prev||"history-prev",this._history_prev),this.on(t.history.next||"history-next",this._history_next)),t.route&&(this.update=this.update||{},this.update[t.route]||(this.update[t.route]=vn)),this.add_actions(),this.state=this.state??this.model??{},"function"==typeof this.state&&(this.state=this.state()),this.setState(this.state,{render:!!t.render,history:!0}),bn.debug&&bn.find("debug-create-component")?.length&&bn.run("debug-create-component",this),this}is_global_event(n){return n&&(this.global_event||this._global_events.indexOf(n)>=0||n.startsWith("#")||n.startsWith("/")||n.startsWith("@"))}add_action(n,t,e={}){t&&"function"==typeof t?(e.global&&this._global_events.push(n),this.on(n,((...o)=>{bn.debug&&bn.run("debug",{component:this,_:">",event:n,p:o,current_state:this.state,options:e});try{const l=t(this.state,...o);bn.debug&&bn.run("debug",{component:this,_:"<",event:n,p:o,newState:l,state:this.state,options:e}),this.setState(l,e)}catch(t){console.error(`Error in component action '${n}':`,t),bn.debug&&bn.run("debug",{component:this,_:"!",event:n,p:o,error:t,state:this.state,options:e})}}),e)):console.warn(`Component action for '${n}' is not a valid function:`,t)}add_actions(){const n=this.update||{};pn.getMetadataKeys(this).forEach((t=>{if(t.startsWith("apprun-update:")){const e=pn.getMetadata(t,this);n[e.name]=[this[e.key].bind(this),e.options]}}));const t={};Array.isArray(n)?n.forEach((n=>{const[e,o,l]=n;e.toString().split(",").forEach((n=>t[n.trim()]=[o,l]))})):Object.keys(n).forEach((e=>{const o=n[e];("function"==typeof o||Array.isArray(o))&&e.split(",").forEach((n=>t[n.trim()]=o))})),t["."]||(t["."]=vn),Object.keys(t).forEach((n=>{const e=t[n];"function"==typeof e?this.add_action(n,e):Array.isArray(e)&&this.add_action(n,e[0],e[1])}))}run(n,...t){if(this.state instanceof Promise)return Promise.resolve(this.state).then((e=>{this.state=e,this.run(n,...t)}));{const e=n.toString();return this.is_global_event(e)?bn.run(e,...t):this._app.run(e,...t)}}on(n,t,e){const o=n.toString();return this._actions.push({name:o,fn:t}),this.is_global_event(o)?bn.on(o,t,e):this._app.on(o,t,e)}runAsync(n,...t){const e=n.toString();return this.is_global_event(e)?bn.runAsync(e,...t):this._app.runAsync(e,...t)}query(n,...t){return console.warn("component.query() is deprecated. Use component.runAsync() instead."),this.runAsync(n,...t)}unmount(){this.observer?.disconnect(),this._actions.forEach((n=>{const{name:t,fn:e}=n;this.is_global_event(t)?bn.off(t,e):this._app.off(t,e)}))}}function Sn(){const n=s.find("#");if(n&&n.length>0)return s.run("#"),void s.run(xn,"#");const t=s.find("/");if(t&&t.length>0)return s.run("/"),void s.run(xn,"/");const e=s.find("#/");if(e&&e.length>0)return s.run("#/"),void s.run(xn,"#/");console.warn("No subscribers for event: "),s.run(On,""),s.run(xn,"")}function kn(n){if(!n)return void Sn();n=function(n){return n&&"/"!==n&&"#"!==n&&"#/"!==n&&n.endsWith("/")?n.slice(0,-1):n}(n);const t=s.basePath;t&&(n=function(n,t){if(!t||"/"===t||""===t)return n;const e=t.startsWith("/")?t:"/"+t;if(n.startsWith(e)){const t=n.substring(e.length);return t.startsWith("/")?t:"/"+t}return n}(n,t));const e=function(n){return n?n.startsWith("#/")?n.substring(2).split("/"):n.startsWith("#")||n.startsWith("/")?n.substring(1).split("/"):n.split("/"):[]}(n);let o;!function(n){const t=n.filter(Boolean);t.length>11&&console.warn(`Deep route hierarchy detected: ${t.join("/")} (${t.length} levels)`)}(e),o=n.startsWith("#/")?"hash-slash":n.startsWith("#")?"hash":n.startsWith("/")?"path":"non-prefixed";const l=function(n,t){const e=[];for(let o=n.length;o>0;o--){const l=n.slice(0,o);let i="";switch(t){case"path":i="/"+l.join("/");break;case"hash":i="#"+l.join("/");break;case"hash-slash":i="#/"+l.join("/");break;case"non-prefixed":i=l.join("/")}e.push(i)}return e}(e,o),i=function(n,t){for(let e=0;e<n.length;e++){const o=n[e],l=s.find(o);if(l&&l.length>0){const l=n.length-e;return{eventName:o,parameters:t.slice(l)}}}return null}(l,e);if(i)Cn(i.eventName,...i.parameters);else if(l.length>0){const t=l[l.length-1];console.warn(`No subscribers for event: ${t}`),s.run(On,n),s.run(xn,n)}else Sn()}wn.i=!0;const Cn=(n,...t)=>{if(!n||n===xn||n===On)return;const e=s.find(n);e&&0!==e.length?s.run(n,...t):(console.warn(`No subscribers for event: ${n}`),s.run(On,n,...t)),s.run(xn,n,...t)},xn="//",On="///",Mn=n=>{s.lastUrl!==n&&(s.lastUrl=n,kn(n))};function Pn(n){return n&&"object"==typeof n&&"function"==typeof n.mount}function An(n){return"function"==typeof n&&n.prototype&&n.prototype.constructor===n&&(void 0!==n.prototype.mount||void 0!==n.prototype.state||void 0!==n.prototype.view)}function En(n){return"function"==typeof n&&!An(n)}async function Rn(n,t=3){let e=n,o=0;for(;En(e)&&o<t;)try{const n=await e();if(n===e)break;e=n,o++}catch(n){console.error(`Error executing component function: ${n}`);break}return e}const $n=s;if(!$n.start){$n.version=n,$n.h=$n.createElement=on,$n.render=ln,$n.Fragment=Q,$n.webComponent=fn,$n.safeHTML=un,$n.start=(n,t,e,o,l)=>{const i={render:!0,global_event:!0,...l},s=new wn(t,e,o);return l&&l.rendered&&(s.rendered=l.rendered),l&&l.mounted&&(s.mounted=l.mounted),s.start(n,i),s},$n.query=$n.query||$n.runAsync;const t=n=>{};if($n.on("/",t),$n.on("debug",(n=>t)),$n.on(xn,t),$n.on(On,t),$n.route=Mn,$n.on("route",(n=>$n.route&&$n.route(n))),"object"==typeof document){let n=location.pathname;n.endsWith("/")&&(n=n.slice(0,-1)),$n.basePath=n,document.addEventListener("DOMContentLoaded",(()=>{const n=document.body.hasAttribute("apprun-no-init")||$n["no-init-route"]||!1,t=$n.find("#")||$n.find("#/")||!1;window.addEventListener("hashchange",(()=>Mn(location.hash))),window.addEventListener("popstate",(()=>Mn(location.pathname))),t?!n&&Mn(location.hash):(!n&&(()=>{const n=$n.basePath||"";let t=location.pathname;n&&t.startsWith(n)&&(t=t.substring(n.length),t.startsWith("/")||(t="/"+t)),Mn(t)})(),document.body.addEventListener("click",(n=>{const t=n.target;if(!t)return;const e="A"===t.tagName?t:t.closest("a");if(e&&e.origin===location.origin&&e.pathname){n.preventDefault();const t=($n.basePath||"")+e.pathname;history.pushState(null,"",t),Mn(e.pathname)}})))}))}if("object"==typeof window){const n=window;n.Component=wn,n._React=n.React,n.React=$n,n.on=mn,n.customElement=yn,n.safeHTML=un}$n.use_render=(n,t=0)=>{$n.render=0===t?(t,e)=>n(e,t):(t,e)=>n(t,e)},$n.use_react=(n,t)=>{if(n&&t)if("function"==typeof n.createElement)if(n.Fragment)if($n.h=$n.createElement=n.createElement,$n.Fragment=n.Fragment,n.version&&n.version.startsWith("18")){if(!t.createRoot||"function"!=typeof t.createRoot)return void console.error("AppRun use_react: ReactDOM.createRoot not found in React 18+");$n.render=(n,e)=>{n&&void 0!==e&&(n._root||(n._root=t.createRoot(n)),n._root.render(e))}}else{if(!t.render||"function"!=typeof t.render)return void console.error("AppRun use_react: ReactDOM.render not found in legacy React");$n.render=(n,e)=>t.render(e,n)}else console.error("AppRun use_react: Invalid React object - Fragment not found");else console.error("AppRun use_react: Invalid React object - createElement method not found");else console.error("AppRun use_react: React and ReactDOM parameters are required")},$n.addComponents=async(n,t)=>{for(const[e,o]of Object.entries(t))if(o&&e)if(Pn(o)){const t={route:e};o.mount(n,t)}else if(An(o)){const t={route:e};(new o).mount(n,t)}else if(En(o)){let t=await Rn(o);if(Pn(t)){const o={route:e};t.mount(n,o);continue}if(An(t)){const o={route:e};(new t).mount(n,o);continue}s.on(e,((...t)=>{const e=o(...t);if("string"!=typeof n||(n=document.querySelector(n)))return s.render(n,e);console.error(`Element not found: ${n}`)}))}else console.error("Invalid component: component must be a class, instance, or function that returns a class/instance");else console.error(`Invalid component configuration: component=${o}, route=${e}`)}}
2
2
  /**
3
3
  * @license
4
4
  * Copyright 2019 Google LLC