apprun 3.33.9 → 3.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/.clinerules +1 -0
  2. package/LICENSE +1 -1
  3. package/README.md +1 -1
  4. package/WHATSNEW.md +106 -0
  5. package/apprun.d.ts +7 -1
  6. package/dist/apprun-dev-tools.js +1 -1
  7. package/dist/apprun-dev-tools.js.map +1 -1
  8. package/dist/apprun-html.esm.js +21 -4
  9. package/dist/apprun-html.esm.js.map +1 -1
  10. package/dist/apprun-html.js +1 -1
  11. package/dist/apprun-html.js.LICENSE.txt +6 -0
  12. package/dist/apprun-html.js.map +1 -1
  13. package/dist/apprun-play-html.esm.js +21 -4
  14. package/dist/apprun-play-html.esm.js.map +1 -1
  15. package/dist/apprun-play.js +1 -1
  16. package/dist/apprun-play.js.map +1 -1
  17. package/dist/apprun.esm.js +1 -1
  18. package/dist/apprun.esm.js.map +1 -1
  19. package/dist/apprun.js +1 -1
  20. package/dist/apprun.js.map +1 -1
  21. package/esm/app.js +38 -10
  22. package/esm/app.js.map +1 -1
  23. package/esm/apprun-code.js.map +1 -1
  24. package/esm/apprun-dev-tools-tests.js.map +1 -1
  25. package/esm/apprun-dev-tools.js.map +1 -1
  26. package/esm/apprun-html.js.map +1 -1
  27. package/esm/apprun-play.js.map +1 -1
  28. package/esm/apprun.js +65 -9
  29. package/esm/apprun.js.map +1 -1
  30. package/esm/component.js +59 -1
  31. package/esm/component.js.map +1 -1
  32. package/esm/decorator.js +33 -0
  33. package/esm/decorator.js.map +1 -1
  34. package/esm/directive.js +31 -0
  35. package/esm/directive.js.map +1 -1
  36. package/esm/router.js +27 -0
  37. package/esm/router.js.map +1 -1
  38. package/esm/types.js +28 -0
  39. package/esm/types.js.map +1 -1
  40. package/esm/vdom-lit-html.js +19 -17
  41. package/esm/vdom-lit-html.js.map +1 -1
  42. package/esm/vdom-my.js.map +1 -1
  43. package/esm/vdom-patch.js.map +1 -1
  44. package/esm/vdom-to-html.js.map +1 -1
  45. package/esm/vdom.js +24 -0
  46. package/esm/vdom.js.map +1 -1
  47. package/esm/web-component.js +32 -0
  48. package/esm/web-component.js.map +1 -1
  49. package/index.html +3 -2
  50. package/jest.config.js +63 -0
  51. package/jest.setup.js +47 -0
  52. package/jsx-runtime.js +1 -1
  53. package/jsx-runtime.js.map +1 -1
  54. package/package.json +16 -43
  55. package/react.js +0 -15
  56. package/rollup.config.js +27 -10
  57. package/src/app.ts +64 -30
  58. package/src/apprun.ts +94 -13
  59. package/src/component.ts +57 -1
  60. package/src/decorator.ts +34 -1
  61. package/src/directive.ts +33 -1
  62. package/src/global.d.ts +22 -0
  63. package/src/router.ts +28 -2
  64. package/src/types/apprun.d.ts +56 -0
  65. package/src/types.ts +30 -1
  66. package/src/vdom-lit-html.ts +21 -19
  67. package/src/vdom.ts +25 -2
  68. package/src/web-component.ts +33 -0
  69. package/tsconfig.jest.json +27 -3
  70. package/tsconfig.json +3 -3
  71. package/webpack.config.cjs +9 -2
package/esm/vdom.js CHANGED
@@ -1,3 +1,27 @@
1
+ /**
2
+ * Virtual DOM Implementation
3
+ *
4
+ * This file provides the core virtual DOM functionality:
5
+ * 1. createElement: Creates virtual DOM nodes
6
+ * 2. Fragment: Support for fragments
7
+ * 3. render: Renders virtual DOM to real DOM
8
+ * 4. safeHTML: Safely renders HTML strings
9
+ *
10
+ * The virtual DOM system:
11
+ * - Provides efficient DOM updates
12
+ * - Supports JSX compilation
13
+ * - Handles component rendering
14
+ * - Manages DOM diffing and patching
15
+ *
16
+ * Usage:
17
+ * ```ts
18
+ * // JSX gets compiled to createElement calls
19
+ * const vdom = <div id="app">Hello</div>;
20
+ *
21
+ * // Render to DOM
22
+ * render(document.body, vdom);
23
+ * ```
24
+ */
1
25
  import { createElement, updateElement, Fragment, safeHTML } from './vdom-my';
2
26
  export { createElement, Fragment, updateElement as render, safeHTML };
3
27
  export { createElement as jsx, createElement as jsxs };
package/esm/vdom.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"vdom.js","sourceRoot":"","sources":["../src/vdom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;AACtE,OAAO,EAAE,aAAa,IAAI,GAAG,EAAE,aAAa,IAAI,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"vdom.js","sourceRoot":"","sources":["../src/vdom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;AACtE,OAAO,EAAE,aAAa,IAAI,GAAG,EAAE,aAAa,IAAI,IAAI,EAAE,CAAC"}
@@ -1,3 +1,35 @@
1
+ /**
2
+ * Web Components Integration
3
+ *
4
+ * This file enables using AppRun components as Web Components:
5
+ * 1. Custom Element Creation
6
+ * - Converts AppRun components to custom elements
7
+ * - Handles lifecycle (connected, disconnected, etc)
8
+ * - Manages shadow DOM and light DOM rendering
9
+ *
10
+ * 2. Property/Attribute Sync
11
+ * - Observes attribute changes
12
+ * - Updates component state automatically
13
+ * - Handles camelCase/kebab-case conversion
14
+ * - Supports complex property types
15
+ *
16
+ * 3. Event Handling
17
+ * - Proxies events between component and element
18
+ * - Supports both global and local events
19
+ * - Maintains proper event bubbling
20
+ *
21
+ * Usage:
22
+ * ```ts
23
+ * // Register web component
24
+ * @customElement('my-element')
25
+ * class MyComponent extends Component {
26
+ * // Regular AppRun component code
27
+ * }
28
+ *
29
+ * // Use in HTML
30
+ * <my-element name="value"></my-element>
31
+ * ```
32
+ */
1
33
  export const customElement = (componentClass, options = {}) => class CustomElement extends HTMLElement {
2
34
  constructor() {
3
35
  super();
@@ -1 +1 @@
1
- {"version":3,"file":"web-component.js","sourceRoot":"","sources":["../src/web-component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-component.js","sourceRoot":"","sources":["../src/web-component.ts"],"names":[],"mappings":"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"}
package/index.html CHANGED
@@ -1,8 +1,8 @@
1
1
  <!doctype html>
2
- <html>
2
+ <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>AppRun</title>
7
7
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
8
8
  integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
@@ -79,5 +79,6 @@
79
79
  integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
80
80
 
81
81
  <script src="demo/app.js"></script>
82
+
82
83
  </body>
83
84
  </html>
package/jest.config.js ADDED
@@ -0,0 +1,63 @@
1
+ /** @type {import('jest').Config} */
2
+ module.exports = {
3
+ testEnvironment: "jsdom",
4
+ transformIgnorePatterns: [
5
+ "node_modules/(?!(lit|@lit|lit-html|@lit-labs))"
6
+ ],
7
+ transform: {
8
+ "^.+\\.(t|j)sx?$": ["ts-jest", {
9
+ useESM: true,
10
+ tsconfig: "tsconfig.jest.json",
11
+ diagnostics: {
12
+ warnOnly: true, // Convert type-check errors to warnings during tests
13
+ ignoreCodes: [
14
+ "TS7006", // Parameter implicitly has an 'any' type
15
+ "TS7015", // Element implicitly has an 'any' type because index expression is not of type 'number'
16
+ "TS7031", // Binding element implicitly has an 'any' type
17
+ "TS7053", // Element implicitly has an 'any' type because expression of type can't be used to index type
18
+ "TS2683", // 'this' implicitly has type 'any' because it does not have a type annotation
19
+ "TS2345", // Argument of type is not assignable to parameter of type
20
+ "TS2322", // Type is not assignable to type
21
+ "TS18047", // Object is possibly 'null'
22
+ "TS18048" // Property is possibly 'undefined'
23
+ ]
24
+ }
25
+ }]
26
+ },
27
+ testRegex: "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
28
+ moduleFileExtensions: [
29
+ "ts",
30
+ "tsx",
31
+ "js",
32
+ "jsx",
33
+ "json",
34
+ "node"
35
+ ],
36
+ preset: "ts-jest/presets/default-esm",
37
+ extensionsToTreatAsEsm: [".ts", ".tsx"],
38
+ testEnvironmentOptions: {
39
+ url: "http://localhost"
40
+ },
41
+ setupFilesAfterEnv: ["<rootDir>/jest.setup.js"],
42
+ moduleNameMapper: {
43
+ "^lit$": "<rootDir>/node_modules/lit/development/index.js",
44
+ "^lit/directive$": "<rootDir>/node_modules/lit/development/directive.js",
45
+ "^lit/directives/(.*)$": "<rootDir>/node_modules/lit/development/directives/$1",
46
+ "^(\\.{1,2}/.*)\\.js$": "$1",
47
+ "^(\\.{1,2}/.*)\\.jsx?$": "$1",
48
+ "^(\\.{1,2}/.*)\\.tsx?$": "$1"
49
+ },
50
+ globals: {
51
+ 'ts-jest': {
52
+ tsconfig: 'tsconfig.jest.json',
53
+ useESM: true,
54
+ isolatedModules: true
55
+ }
56
+ },
57
+ testPathIgnorePatterns: [
58
+ "/node_modules/",
59
+ "/dist/",
60
+ "/coverage/",
61
+ "/esm/"
62
+ ]
63
+ };
package/jest.setup.js ADDED
@@ -0,0 +1,47 @@
1
+ // Add Jest-specific test setup
2
+ global.spyOn = (obj, method) => {
3
+ const spy = jest.spyOn(obj, method);
4
+ spy.calls = {
5
+ allArgs: () => spy.mock.calls,
6
+ all: () => spy.mock.calls.map(args => ({ args })),
7
+ count: () => spy.mock.calls.length,
8
+ first: () => spy.mock.calls[0],
9
+ mostRecent: () => spy.mock.calls[spy.mock.calls.length - 1]
10
+ };
11
+ return spy;
12
+ };
13
+
14
+ // Mock jasmine functionality with Jest equivalents
15
+ global.jasmine = {
16
+ createSpy: (name) => {
17
+ const spy = jest.fn();
18
+ spy.calls = {
19
+ allArgs: () => spy.mock.calls,
20
+ all: () => spy.mock.calls.map(args => ({ args })),
21
+ count: () => spy.mock.calls.length,
22
+ first: () => spy.mock.calls[0],
23
+ mostRecent: () => spy.mock.calls[spy.mock.calls.length - 1]
24
+ };
25
+ spy.and = {
26
+ callThrough: () => spy,
27
+ returnValue: (val) => spy.mockReturnValue(val),
28
+ callFake: (fn) => spy.mockImplementation(fn)
29
+ };
30
+ return spy;
31
+ }
32
+ };
33
+
34
+ // Setup document if it doesn't exist (for JSDOM)
35
+ if (typeof document === 'undefined') {
36
+ global.document = {
37
+ createElement: () => ({
38
+ setAttribute: () => {},
39
+ style: {},
40
+ appendChild: () => {}
41
+ }),
42
+ createComment: () => ({}),
43
+ body: {
44
+ appendChild: () => {}
45
+ }
46
+ };
47
+ }
package/jsx-runtime.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.apprun=t():e.apprun=t()}(this,(()=>(()=>{"use strict";var e={859:(e,t,n)=>{n.d(t,{A:()=>s});let r;const o="object"==typeof self&&self.self===self&&self||"object"==typeof n.g&&n.g.global===n.g&&n.g;o.app&&o._AppRunVersions?r=o.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:r,options:o}=n;return o.delay?this.delay(e,r,t,o):Object.keys(o).length>0?r.apply(this,[...t,o]):r.apply(this,t),!n.options.once})),n.length}once(e,t,n={}){this.on(e,t,Object.assign(Object.assign({},n),{once:!0}))}delay(e,t,n,r){r._t&&clearTimeout(r._t),r._t=setTimeout((()=>{clearTimeout(r._t),Object.keys(r).length>0?t.apply(this,[...n,r]):t.apply(this,n)}),r.delay)}runAsync(e,...t){const n=this.getSubscribers(e,this._events);console.assert(n&&n.length>0,"No subscriber for event: "+e);const r=n.map((e=>{const{fn:n,options:r}=e;return Object.keys(r).length>0?n.apply(this,[...t,r]):n.apply(this,t)}));return Promise.all(r)}query(e,...t){return 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((r=>n.push(...t[r].map((t=>Object.assign(Object.assign({},t),{options:Object.assign(Object.assign({},t.options),{event:e})})))))),n}},o.app=r,o._AppRunVersions="AppRun-3");const s=r},741:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(859);const o=(e,t)=>(t?e.state[t]:e.state)||"",s=(e,t,n)=>{if(t){const r=e.state||{};r[t]=n,e.setState(r)}else e.setState(n)},i=(e,t)=>{if(Array.isArray(e))return e.map((e=>i(e,t)));{let{type:n,tag:a,props:c,children:l}=e;return a=a||n,l=l||(null==c?void 0:c.children),c&&Object.keys(c).forEach((e=>{e.startsWith("$")&&(((e,t,n,i)=>{if(e.startsWith("$on")){const n=t[e];if(e=e.substring(1),"boolean"==typeof n)t[e]=t=>i.run?i.run(e,t):r.A.run(e,t);else if("string"==typeof n)t[e]=e=>i.run?i.run(n,e):r.A.run(n,e);else if("function"==typeof n)t[e]=e=>i.setState(n(i.state,e));else if(Array.isArray(n)){const[o,...s]=n;"string"==typeof o?t[e]=e=>i.run?i.run(o,...s,e):r.A.run(o,...s,e):"function"==typeof o&&(t[e]=e=>i.setState(o(i.state,...s,e)))}}else if("$bind"===e){const r=t.type||"text",a="string"==typeof t[e]?t[e]:t.name;if("input"===n)switch(r){case"checkbox":t.checked=o(i,a),t.onclick=e=>s(i,a||e.target.name,e.target.checked);break;case"radio":t.checked=o(i,a)===t.value,t.onclick=e=>s(i,a||e.target.name,e.target.value);break;case"number":case"range":t.value=o(i,a),t.oninput=e=>s(i,a||e.target.name,Number(e.target.value));break;default:t.value=o(i,a),t.oninput=e=>s(i,a||e.target.name,e.target.value)}else"select"===n?(t.value=o(i,a),t.onchange=e=>{e.target.multiple||s(i,a||e.target.name,e.target.value)}):"option"===n?(t.selected=o(i,a),t.onclick=e=>s(i,a||e.target.name,e.target.selected)):"textarea"===n&&(t.innerHTML=o(i,a),t.oninput=e=>s(i,a||e.target.name,e.target.value))}else r.A.run("$",{key:e,tag:n,props:t,component:i})})(e,c,a,t),delete c[e])})),l&&i(l,t),e}},a=i},791:(e,t,n)=>{n.d(t,{FK:()=>o,cJ:()=>l,n:()=>a,t_:()=>f});var r=n(741);function o(e,...t){return i(t)}const s="_props";function i(e){const t=[],n=e=>{null!=e&&""!==e&&!1!==e&&t.push("function"==typeof e||"object"==typeof e?e:`${e}`)};return e&&e.forEach((e=>{Array.isArray(e)?e.forEach((e=>n(e))):n(e)})),t}function a(e,t,...n){const r=i(n);if("string"==typeof e)return{tag:e,props:t,children:r};if(Array.isArray(e))return e;if(void 0===e&&n)return r;if(Object.getPrototypeOf(e).__isAppRunComponent)return{tag:e,props:t,children:r};if("function"==typeof e)return e(t,r);throw new Error(`Unknown tag in vdom ${e}`)}const c=new WeakMap,l=(e,t,n={})=>{null!=t&&!1!==t&&function(e,t,n={}){if(null==t||!1===t)return;if(t=y(t,n),!e)return;const r="SVG"===e.nodeName;Array.isArray(t)?p(e,t,r):p(e,[t],r)}("string"==typeof e&&e?document.getElementById(e)||document.querySelector(e):e,t=(0,r.A)(t,n),n)};function u(e,t,n){3!==t._op&&(n=n||"svg"===t.tag,function(e,t){const n=e.nodeName,r=`${t.tag||""}`;return n.toUpperCase()===r.toUpperCase()}(e,t)?(!(2&t._op)&&p(e,t.children,n),!(1&t._op)&&g(e,t.props,n)):e.parentNode.replaceChild(h(t,n),e))}function p(e,t,n){var r,o;const s=(null===(r=e.childNodes)||void 0===r?void 0:r.length)||0,i=(null==t?void 0:t.length)||0,a=Math.min(s,i);for(let r=0;r<a;r++){const o=t[r];if(3===o._op)continue;const s=e.childNodes[r];if("string"==typeof o)s.textContent!==o&&(3===s.nodeType?s.nodeValue=o:e.replaceChild(d(o),s));else if(o instanceof HTMLElement||o instanceof SVGElement)e.insertBefore(o,s);else{const t=o.props&&o.props.key;if(t)if(s.key===t)u(e.childNodes[r],o,n);else{const i=c[t];if(i){const t=i.nextSibling;e.insertBefore(i,s),t?e.insertBefore(s,t):e.appendChild(s),u(e.childNodes[r],o,n)}else e.replaceChild(h(o,n),s)}else u(e.childNodes[r],o,n)}}let l=(null===(o=e.childNodes)||void 0===o?void 0:o.length)||0;for(;l>a;)e.removeChild(e.lastChild),l--;if(i>a){const r=document.createDocumentFragment();for(let e=a;e<t.length;e++)r.appendChild(h(t[e],n));e.appendChild(r)}}const f=e=>{const t=document.createElement("section");return t.insertAdjacentHTML("afterbegin",e),Array.from(t.children)};function d(e){if(0===(null==e?void 0:e.indexOf("_html:"))){const t=document.createElement("div");return t.insertAdjacentHTML("afterbegin",e.substring(6)),t}return document.createTextNode(null!=e?e:"")}function h(e,t){if(e instanceof HTMLElement||e instanceof SVGElement)return e;if("string"==typeof e)return d(e);if(!e.tag||"function"==typeof e.tag)return d(JSON.stringify(e));const n=(t=t||"svg"===e.tag)?document.createElementNS("http://www.w3.org/2000/svg",e.tag):document.createElement(e.tag);return g(n,e.props,t),e.children&&e.children.forEach((e=>n.appendChild(h(e,t)))),n}function g(e,t,n){const r=e[s]||{};t=function(e,t){t.class=t.class||t.className,delete t.className;const n={};return e&&Object.keys(e).forEach((e=>n[e]=null)),t&&Object.keys(t).forEach((e=>n[e]=t[e])),n}(r,t||{}),e[s]=t;for(const r in t){const o=t[r];if(r.startsWith("data-")){const t=r.substring(5).replace(/-(\w)/g,(e=>e[1].toUpperCase()));e.dataset[t]!==o&&(o||""===o?e.dataset[t]=o:delete e.dataset[t])}else if("style"===r)if(e.style.cssText&&(e.style.cssText=""),"string"==typeof o)e.style.cssText=o;else for(const t in o)e.style[t]!==o[t]&&(e.style[t]=o[t]);else if(r.startsWith("xlink")){const t=r.replace("xlink","").toLowerCase();null==o||!1===o?e.removeAttributeNS("http://www.w3.org/1999/xlink",t):e.setAttributeNS("http://www.w3.org/1999/xlink",t,o)}else r.startsWith("on")?o&&"function"!=typeof o?"string"==typeof o&&(o?e.setAttribute(r,o):e.removeAttribute(r)):e[r]=o:/^id$|^class$|^list$|^readonly$|^contenteditable$|^role|-|^for$/g.test(r)||n?e.getAttribute(r)!==o&&(o?e.setAttribute(r,o):e.removeAttribute(r)):e[r]!==o&&(e[r]=o);"key"===r&&o&&(c[o]=e)}t&&"function"==typeof t.ref&&window.requestAnimationFrame((()=>t.ref(e)))}function y(e,t,n=0){var r;if("string"==typeof e)return e;if(Array.isArray(e))return e.map((e=>y(e,t,n++)));let o=e;if(e&&"function"==typeof e.tag&&Object.getPrototypeOf(e.tag).__isAppRunComponent&&(o=function(e,t,n){const{tag:r,props:o,children:s}=e;let i=`_${n}`,a=o&&o.id;a?i=a:a=`_${n}${Date.now()}`;let c="section";o&&o.as&&(c=o.as,delete o.as),t.__componentCache||(t.__componentCache={});let l=t.__componentCache[i];if(l&&l instanceof r&&l.element)l.renderState(l.state);else{const e=document.createElement(c);l=t.__componentCache[i]=new r(Object.assign(Object.assign({},o),{children:s})).mount(e,{render:!0})}if(l.mounted){const e=l.mounted(o,s,l.state);void 0!==e&&l.setState(e)}return g(l.element,o,!1),l.element}(e,t,n)),o&&Array.isArray(o.children)){const e=null===(r=o.props)||void 0===r?void 0:r._component;if(e){let t=0;o.children=o.children.map((n=>y(n,e,t++)))}else o.children=o.children.map((e=>y(e,t,n++)))}return o}}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,n),s.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},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),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};n.r(r),n.d(r,{Fragment:()=>o.FK,createElement:()=>o.n,jsx:()=>o.n,jsxs:()=>o.n,render:()=>o.cJ,safeHTML:()=>o.t_});var o=n(791);return r})()));
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={859:(e,t,n)=>{n.d(t,{A:()=>s});let r;const o="undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self?self:{};o.app&&o._AppRunVersions?r=o.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:r,options:o}=n;return o.delay?this.delay(e,r,t,o):Object.keys(o).length>0?r.apply(this,[...t,o]):r.apply(this,t),!n.options.once})),n.length}once(e,t,n={}){this.on(e,t,Object.assign(Object.assign({},n),{once:!0}))}delay(e,t,n,r){r._t&&clearTimeout(r._t),r._t=setTimeout((()=>{clearTimeout(r._t),Object.keys(r).length>0?t.apply(this,[...n,r]):t.apply(this,n)}),r.delay)}runAsync(e,...t){const n=this.getSubscribers(e,this._events);console.assert(n&&n.length>0,"No subscriber for event: "+e);const r=n.map((e=>{const{fn:n,options:r}=e;return Object.keys(r).length>0?n.apply(this,[...t,r]):n.apply(this,t)}));return Promise.all(r)}query(e,...t){return 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((r=>n.push(...t[r].map((t=>Object.assign(Object.assign({},t),{options:Object.assign(Object.assign({},t.options),{event:e})})))))),n}},o.app=r,o._AppRunVersions="AppRun-3.3.11");const s=r},741:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(859);const o=(e,t)=>(t?e.state[t]:e.state)||"",s=(e,t,n)=>{if(t){const r=e.state||{};r[t]=n,e.setState(r)}else e.setState(n)},i=(e,t)=>{if(Array.isArray(e))return e.map((e=>i(e,t)));{let{type:n,tag:a,props:c,children:l}=e;return a=a||n,l=l||(null==c?void 0:c.children),c&&Object.keys(c).forEach((e=>{e.startsWith("$")&&(((e,t,n,i)=>{if(e.startsWith("$on")){const n=t[e];if(e=e.substring(1),"boolean"==typeof n)t[e]=t=>i.run?i.run(e,t):r.A.run(e,t);else if("string"==typeof n)t[e]=e=>i.run?i.run(n,e):r.A.run(n,e);else if("function"==typeof n)t[e]=e=>i.setState(n(i.state,e));else if(Array.isArray(n)){const[o,...s]=n;"string"==typeof o?t[e]=e=>i.run?i.run(o,...s,e):r.A.run(o,...s,e):"function"==typeof o&&(t[e]=e=>i.setState(o(i.state,...s,e)))}}else if("$bind"===e){const r=t.type||"text",a="string"==typeof t[e]?t[e]:t.name;if("input"===n)switch(r){case"checkbox":t.checked=o(i,a),t.onclick=e=>s(i,a||e.target.name,e.target.checked);break;case"radio":t.checked=o(i,a)===t.value,t.onclick=e=>s(i,a||e.target.name,e.target.value);break;case"number":case"range":t.value=o(i,a),t.oninput=e=>s(i,a||e.target.name,Number(e.target.value));break;default:t.value=o(i,a),t.oninput=e=>s(i,a||e.target.name,e.target.value)}else"select"===n?(t.value=o(i,a),t.onchange=e=>{e.target.multiple||s(i,a||e.target.name,e.target.value)}):"option"===n?(t.selected=o(i,a),t.onclick=e=>s(i,a||e.target.name,e.target.selected)):"textarea"===n&&(t.innerHTML=o(i,a),t.oninput=e=>s(i,a||e.target.name,e.target.value))}else r.A.run("$",{key:e,tag:n,props:t,component:i})})(e,c,a,t),delete c[e])})),l&&i(l,t),e}},a=i},791:(e,t,n)=>{n.d(t,{FK:()=>o,cJ:()=>l,n:()=>a,t_:()=>f});var r=n(741);function o(e,...t){return i(t)}const s="_props";function i(e){const t=[],n=e=>{null!=e&&""!==e&&!1!==e&&t.push("function"==typeof e||"object"==typeof e?e:`${e}`)};return e&&e.forEach((e=>{Array.isArray(e)?e.forEach((e=>n(e))):n(e)})),t}function a(e,t,...n){const r=i(n);if("string"==typeof e)return{tag:e,props:t,children:r};if(Array.isArray(e))return e;if(void 0===e&&n)return r;if(Object.getPrototypeOf(e).__isAppRunComponent)return{tag:e,props:t,children:r};if("function"==typeof e)return e(t,r);throw new Error(`Unknown tag in vdom ${e}`)}const c=new WeakMap,l=(e,t,n={})=>{null!=t&&!1!==t&&function(e,t,n={}){if(null==t||!1===t)return;if(t=y(t,n),!e)return;const r="SVG"===e.nodeName;Array.isArray(t)?p(e,t,r):p(e,[t],r)}("string"==typeof e&&e?document.getElementById(e)||document.querySelector(e):e,t=(0,r.A)(t,n),n)};function u(e,t,n){3!==t._op&&(n=n||"svg"===t.tag,function(e,t){const n=e.nodeName,r=`${t.tag||""}`;return n.toUpperCase()===r.toUpperCase()}(e,t)?(!(2&t._op)&&p(e,t.children,n),!(1&t._op)&&g(e,t.props,n)):e.parentNode.replaceChild(h(t,n),e))}function p(e,t,n){var r,o;const s=(null===(r=e.childNodes)||void 0===r?void 0:r.length)||0,i=(null==t?void 0:t.length)||0,a=Math.min(s,i);for(let r=0;r<a;r++){const o=t[r];if(3===o._op)continue;const s=e.childNodes[r];if("string"==typeof o)s.textContent!==o&&(3===s.nodeType?s.nodeValue=o:e.replaceChild(d(o),s));else if(o instanceof HTMLElement||o instanceof SVGElement)e.insertBefore(o,s);else{const t=o.props&&o.props.key;if(t)if(s.key===t)u(e.childNodes[r],o,n);else{const i=c[t];if(i){const t=i.nextSibling;e.insertBefore(i,s),t?e.insertBefore(s,t):e.appendChild(s),u(e.childNodes[r],o,n)}else e.replaceChild(h(o,n),s)}else u(e.childNodes[r],o,n)}}let l=(null===(o=e.childNodes)||void 0===o?void 0:o.length)||0;for(;l>a;)e.removeChild(e.lastChild),l--;if(i>a){const r=document.createDocumentFragment();for(let e=a;e<t.length;e++)r.appendChild(h(t[e],n));e.appendChild(r)}}const f=e=>{const t=document.createElement("section");return t.insertAdjacentHTML("afterbegin",e),Array.from(t.children)};function d(e){if(0===(null==e?void 0:e.indexOf("_html:"))){const t=document.createElement("div");return t.insertAdjacentHTML("afterbegin",e.substring(6)),t}return document.createTextNode(null!=e?e:"")}function h(e,t){if(e instanceof HTMLElement||e instanceof SVGElement)return e;if("string"==typeof e)return d(e);if(!e.tag||"function"==typeof e.tag)return d(JSON.stringify(e));const n=(t=t||"svg"===e.tag)?document.createElementNS("http://www.w3.org/2000/svg",e.tag):document.createElement(e.tag);return g(n,e.props,t),e.children&&e.children.forEach((e=>n.appendChild(h(e,t)))),n}function g(e,t,n){const r=e[s]||{};t=function(e,t){t.class=t.class||t.className,delete t.className;const n={};return e&&Object.keys(e).forEach((e=>n[e]=null)),t&&Object.keys(t).forEach((e=>n[e]=t[e])),n}(r,t||{}),e[s]=t;for(const r in t){const o=t[r];if(r.startsWith("data-")){const t=r.substring(5).replace(/-(\w)/g,(e=>e[1].toUpperCase()));e.dataset[t]!==o&&(o||""===o?e.dataset[t]=o:delete e.dataset[t])}else if("style"===r)if(e.style.cssText&&(e.style.cssText=""),"string"==typeof o)e.style.cssText=o;else for(const t in o)e.style[t]!==o[t]&&(e.style[t]=o[t]);else if(r.startsWith("xlink")){const t=r.replace("xlink","").toLowerCase();null==o||!1===o?e.removeAttributeNS("http://www.w3.org/1999/xlink",t):e.setAttributeNS("http://www.w3.org/1999/xlink",t,o)}else r.startsWith("on")?o&&"function"!=typeof o?"string"==typeof o&&(o?e.setAttribute(r,o):e.removeAttribute(r)):e[r]=o:/^id$|^class$|^list$|^readonly$|^contenteditable$|^role|-|^for$/g.test(r)||n?e.getAttribute(r)!==o&&(o?e.setAttribute(r,o):e.removeAttribute(r)):e[r]!==o&&(e[r]=o);"key"===r&&o&&(c[o]=e)}t&&"function"==typeof t.ref&&window.requestAnimationFrame((()=>t.ref(e)))}function y(e,t,n=0){var r;if("string"==typeof e)return e;if(Array.isArray(e))return e.map((e=>y(e,t,n++)));let o=e;if(e&&"function"==typeof e.tag&&Object.getPrototypeOf(e.tag).__isAppRunComponent&&(o=function(e,t,n){const{tag:r,props:o,children:s}=e;let i=`_${n}`,a=o&&o.id;a?i=a:a=`_${n}${Date.now()}`;let c="section";o&&o.as&&(c=o.as,delete o.as),t.__componentCache||(t.__componentCache={});let l=t.__componentCache[i];if(l&&l instanceof r&&l.element)l.renderState(l.state);else{const e=document.createElement(c);l=t.__componentCache[i]=new r(Object.assign(Object.assign({},o),{children:s})).mount(e,{render:!0})}if(l.mounted){const e=l.mounted(o,s,l.state);void 0!==e&&l.setState(e)}return g(l.element,o,!1),l.element}(e,t,n)),o&&Array.isArray(o.children)){const e=null===(r=o.props)||void 0===r?void 0:r._component;if(e){let t=0;o.children=o.children.map((n=>y(n,e,t++)))}else o.children=o.children.map((e=>y(e,t,n++)))}return o}}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,n),s.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},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),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};n.r(r),n.d(r,{Fragment:()=>o.FK,createElement:()=>o.n,jsx:()=>o.n,jsxs:()=>o.n,render:()=>o.cJ,safeHTML:()=>o.t_});var o=n(791);return r})()));
2
2
  //# sourceMappingURL=jsx-runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"./jsx-runtime.js","mappings":"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","sources":["webpack://apprun/webpack/universalModuleDefinition","webpack://apprun/./src/app.ts","webpack://apprun/./src/directive.ts","webpack://apprun/./src/vdom-my.ts","webpack://apprun/webpack/bootstrap","webpack://apprun/webpack/runtime/define property getters","webpack://apprun/webpack/runtime/global","webpack://apprun/webpack/runtime/hasOwnProperty shorthand","webpack://apprun/webpack/runtime/make namespace object"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"apprun\"] = factory();\n\telse\n\t\troot[\"apprun\"] = factory();\n})(this, () => {\nreturn ","import { EventOptions} from './types'\nexport class App {\n\n _events: Object;\n\n public start;\n public h;\n public createElement;\n public render;\n public Fragment;\n public webComponent;\n public safeHTML;\n public use_render;\n public use_react;\n\n constructor() {\n this._events = {};\n }\n\n on(name: string, fn: (...args) => void, options: EventOptions = {}): void {\n this._events[name] = this._events[name] || [];\n this._events[name].push({ fn, options });\n }\n\n off(name: string, fn: (...args) => void): void {\n const subscribers = this._events[name] || [];\n\n this._events[name] = subscribers.filter((sub) => sub.fn !== fn);\n }\n\n find(name: string): any {\n return this._events[name];\n }\n\n run(name: string, ...args): number {\n const subscribers = this.getSubscribers(name, this._events);\n console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);\n subscribers.forEach((sub) => {\n const { fn, options } = sub;\n if (options.delay) {\n this.delay(name, fn, args, options);\n } else {\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n }\n return !sub.options.once;\n });\n\n return subscribers.length;\n }\n\n once(name: string, fn, options: EventOptions = {}): void {\n this.on(name, fn, { ...options, once: true });\n }\n\n private delay(name, fn, args, options): void {\n if (options._t) clearTimeout(options._t);\n options._t = setTimeout(() => {\n clearTimeout(options._t);\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n }, options.delay);\n }\n\n runAsync(name: string, ...args): Promise<any[]> {\n const subscribers = this.getSubscribers(name, this._events);\n console.assert(subscribers && subscribers.length > 0, 'No subscriber for event: ' + name);\n const promises = subscribers.map(sub => {\n const { fn, options } = sub;\n return Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n });\n return Promise.all(promises);\n }\n\n query(name: string, ...args): Promise<any[]> {\n return this.runAsync(name, ...args);\n }\n\n private getSubscribers(name: string, events) {\n const subscribers = events[name] || [];\n\n // Update the list of subscribers by pulling out those which will run once.\n // We must do this update prior to running any of the events in case they\n // cause additional events to be turned off or on.\n events[name] = subscribers.filter((sub) => {\n return !sub.options.once;\n });\n Object.keys(events).filter(evt => evt.endsWith('*') && name.startsWith(evt.replace('*', '')))\n .sort((a, b) => b.length - a.length)\n .forEach(evt => subscribers.push(...events[evt].map(sub => ({\n ...sub,\n options: { ...sub.options, event: name }\n }))));\n return subscribers;\n }\n}\n\nconst AppRunVersions = 'AppRun-3';\nlet app: App;\nconst root = (typeof self === 'object' && self.self === self && self) ||\n (typeof global === 'object' && global.global === global && global)\nif (root['app'] && root['_AppRunVersions']) {\n app = root['app'];\n} else {\n app = new App();\n root['app'] = app;\n root['_AppRunVersions'] = AppRunVersions;\n}\nexport default app;\n","import app from './app';\n\nconst getStateValue = (component, name) => {\n return (name ? component['state'][name] : component['state']) || '';\n}\n\nconst setStateValue = (component, name, value) => {\n if (name) {\n const state = component['state'] || {};\n state[name] = value;\n component.setState(state);\n } else {\n component.setState(value);\n }\n}\n\nconst apply_directive = (key: string, props: {}, tag, component) => {\n if (key.startsWith('$on')) {\n const event = props[key];\n key = key.substring(1)\n if (typeof event === 'boolean') {\n props[key] = e => component.run ? component.run(key, e) : app.run(key, e);\n } else if (typeof event === 'string') {\n props[key] = e => component.run ? component.run(event, e) : app.run(event, e);\n } else if (typeof event === 'function') {\n props[key] = e => component.setState(event(component.state, e));\n } else if (Array.isArray(event)) {\n const [handler, ...p] = event;\n if (typeof handler === 'string') {\n props[key] = e => component.run ? component.run(handler, ...p, e) : app.run(handler, ...p, e);\n } else if (typeof handler === 'function') {\n props[key] = e => component.setState(handler(component.state, ...p, e));\n }\n }\n\n } else if (key === '$bind') {\n const type = props['type'] || 'text';\n const name = typeof props[key] === 'string' ? props[key] : props['name'];\n if (tag === 'input') {\n switch (type) {\n case 'checkbox':\n props['checked'] = getStateValue(component, name);\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.checked);\n break;\n case 'radio':\n props['checked'] = getStateValue(component, name) === props['value'];\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.value);\n break;\n case 'number':\n case 'range':\n props['value'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, Number(e.target.value));\n break;\n default:\n props['value'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, e.target.value);\n }\n } else if (tag === 'select') {\n props['value'] = getStateValue(component, name);\n props['onchange'] = e => {\n if (!e.target.multiple) { // multiple selection use $bind on option\n setStateValue(component, name || e.target.name, e.target.value);\n }\n }\n } else if (tag === 'option') {\n props['selected'] = getStateValue(component, name);\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.selected);\n } else if (tag === 'textarea') {\n props['innerHTML'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, e.target.value);\n }\n } else {\n app.run('$', { key, tag, props, component });\n }\n}\n\nconst directive = (vdom, component) => {\n if (Array.isArray(vdom)) {\n return vdom.map(element => directive(element, component));\n } else {\n let { type, tag, props, children } = vdom;\n tag = tag || type;\n children = children || props?.children;\n if (props) Object.keys(props).forEach(key => {\n if (key.startsWith('$')) {\n apply_directive(key, props, tag, component);\n delete props[key];\n }\n });\n if (children) directive(children, component);\n return vdom;\n }\n}\n\nexport default directive;","import { VDOM, VNode } from './types';\nimport directive from './directive';\nexport type Element = any; //HTMLElement | SVGSVGElement | SVGElement;\n\nexport function Fragment(props, ...children): any[] {\n return collect(children);\n}\n\nconst ATTR_PROPS = '_props';\n\nfunction collect(children) {\n const ch = [];\n const push = (c) => {\n if (c !== null && c !== undefined && c !== '' && c !== false) {\n ch.push((typeof c === 'function' || typeof c === 'object') ? c : `${c}`);\n }\n }\n children && children.forEach(c => {\n if (Array.isArray(c)) {\n c.forEach(i => push(i));\n } else {\n push(c);\n }\n });\n return ch;\n}\n\nexport function createElement(tag: string | Function | [], props?: {}, ...children) {\n const ch = collect(children);\n if (typeof tag === 'string') return { tag, props, children: ch };\n else if (Array.isArray(tag)) return tag; // JSX fragments - babel\n else if (tag === undefined && children) return ch; // JSX fragments - typescript\n else if (Object.getPrototypeOf(tag).__isAppRunComponent) return { tag, props, children: ch } // createComponent(tag, { ...props, children });\n else if (typeof tag === 'function') return tag(props, ch);\n else throw new Error(`Unknown tag in vdom ${tag}`);\n};\n\nconst keyCache = new WeakMap();\n\nexport const updateElement = (element: Element | string, nodes: VDOM, component = {}) => {\n // tslint:disable-next-line\n if (nodes == null || nodes === false) return;\n const el = (typeof element === 'string' && element) ?\n document.getElementById(element) || document.querySelector(element) : element;\n nodes = directive(nodes, component);\n render(el, nodes, component);\n}\n\nfunction render(element: Element, nodes: VDOM, parent = {}) {\n // tslint:disable-next-line\n if (nodes == null || nodes === false) return;\n nodes = createComponent(nodes, parent);\n if (!element) return;\n const isSvg = element.nodeName === \"SVG\";\n if (Array.isArray(nodes)) {\n updateChildren(element, nodes, isSvg);\n } else {\n updateChildren(element, [nodes], isSvg);\n }\n}\n\nfunction same(el: Element, node: VNode) {\n // if (!el || !node) return false;\n const key1 = el.nodeName;\n const key2 = `${node.tag || ''}`;\n return key1.toUpperCase() === key2.toUpperCase();\n}\n\nfunction update(element: Element, node: VNode, isSvg: boolean) {\n if (node['_op'] === 3) return;\n // console.assert(!!element);\n isSvg = isSvg || node.tag === \"svg\";\n if (!same(element, node)) {\n element.parentNode.replaceChild(create(node, isSvg), element);\n return;\n }\n !(node['_op'] & 2) && updateChildren(element, node.children, isSvg);\n !(node['_op'] & 1) && updateProps(element, node.props, isSvg);\n}\n\nfunction updateChildren(element, children, isSvg: boolean) {\n const old_len = element.childNodes?.length || 0;\n const new_len = children?.length || 0;\n const len = Math.min(old_len, new_len);\n for (let i = 0; i < len; i++) {\n const child = children[i];\n if (child['_op'] === 3) continue;\n const el = element.childNodes[i];\n if (typeof child === 'string') {\n if (el.textContent !== child) {\n if (el.nodeType === 3) {\n el.nodeValue = child\n } else {\n element.replaceChild(createText(child), el);\n }\n }\n } else if (child instanceof HTMLElement || child instanceof SVGElement) {\n element.insertBefore(child, el);\n } else {\n const key = child.props && child.props['key'];\n if (key) {\n if (el.key === key) {\n update(element.childNodes[i], child, isSvg);\n } else {\n // console.log(el.key, key);\n const old = keyCache[key];\n if (old) {\n const temp = old.nextSibling;\n element.insertBefore(old, el);\n temp ? element.insertBefore(el, temp) : element.appendChild(el);\n update(element.childNodes[i], child, isSvg);\n } else {\n element.replaceChild(create(child, isSvg), el);\n }\n }\n } else {\n update(element.childNodes[i], child, isSvg);\n }\n }\n }\n\n let n = element.childNodes?.length || 0;\n while (n > len) {\n element.removeChild(element.lastChild);\n n--;\n }\n\n if (new_len > len) {\n const d = document.createDocumentFragment();\n for (let i = len; i < children.length; i++) {\n d.appendChild(create(children[i], isSvg));\n }\n element.appendChild(d);\n }\n}\n\nexport const safeHTML = (html: string) => {\n const div = document.createElement('section');\n div.insertAdjacentHTML('afterbegin', html)\n return Array.from(div.children);\n}\n\nfunction createText(node) {\n if (node?.indexOf('_html:') === 0) { // ?\n const div = document.createElement('div');\n div.insertAdjacentHTML('afterbegin', node.substring(6))\n return div;\n } else {\n return document.createTextNode(node??'');\n }\n}\n\nfunction create(node: VNode | string | HTMLElement | SVGElement, isSvg: boolean): Element {\n // console.assert(node !== null && node !== undefined);\n if ((node instanceof HTMLElement) || (node instanceof SVGElement)) return node;\n if (typeof node === \"string\") return createText(node);\n if (!node.tag || (typeof node.tag === 'function')) return createText(JSON.stringify(node));\n isSvg = isSvg || node.tag === \"svg\";\n const element = isSvg\n ? document.createElementNS(\"http://www.w3.org/2000/svg\", node.tag)\n : document.createElement(node.tag);\n\n updateProps(element, node.props, isSvg);\n if (node.children) node.children.forEach(child => element.appendChild(create(child, isSvg)));\n return element\n}\n\nfunction mergeProps(oldProps: {}, newProps: {}): {} {\n newProps['class'] = newProps['class'] || newProps['className'];\n delete newProps['className'];\n const props = {};\n if (oldProps) Object.keys(oldProps).forEach(p => props[p] = null);\n if (newProps) Object.keys(newProps).forEach(p => props[p] = newProps[p]);\n return props;\n}\n\nexport function updateProps(element: Element, props: {}, isSvg) {\n // console.assert(!!element);\n const cached = element[ATTR_PROPS] || {};\n props = mergeProps(cached, props || {});\n element[ATTR_PROPS] = props;\n\n for (const name in props) {\n const value = props[name];\n // if (cached[name] === value) continue;\n // console.log('updateProps', name, value);\n if (name.startsWith('data-')) {\n const dname = name.substring(5);\n const cname = dname.replace(/-(\\w)/g, (match) => match[1].toUpperCase());\n if (element.dataset[cname] !== value) {\n if (value || value === \"\") element.dataset[cname] = value;\n else delete element.dataset[cname];\n }\n } else if (name === 'style') {\n if (element.style.cssText) element.style.cssText = '';\n if (typeof value === 'string') element.style.cssText = value;\n else {\n for (const s in value) {\n if (element.style[s] !== value[s]) element.style[s] = value[s];\n }\n }\n } else if (name.startsWith('xlink')) {\n const xname = name.replace('xlink', '').toLowerCase();\n if (value == null || value === false) {\n element.removeAttributeNS('http://www.w3.org/1999/xlink', xname);\n } else {\n element.setAttributeNS('http://www.w3.org/1999/xlink', xname, value);\n }\n } else if (name.startsWith('on')) {\n if (!value || typeof value === 'function') {\n element[name] = value;\n } else if (typeof value === 'string') {\n if (value) element.setAttribute(name, value);\n else element.removeAttribute(name);\n }\n } else if (/^id$|^class$|^list$|^readonly$|^contenteditable$|^role|-|^for$/g.test(name) || isSvg) {\n if (element.getAttribute(name) !== value) {\n if (value) element.setAttribute(name, value);\n else element.removeAttribute(name);\n }\n } else if (element[name] !== value) {\n element[name] = value;\n }\n if (name === 'key' && value) keyCache[value] = element;\n }\n if (props && typeof props['ref'] === 'function') {\n window.requestAnimationFrame(() => props['ref'](element));\n }\n}\n\nfunction render_component(node, parent, idx) {\n const { tag, props, children } = node;\n let key = `_${idx}`;\n let id = props && props['id'];\n if (!id) id = `_${idx}${Date.now()}`;\n else key = id;\n let asTag = 'section';\n if (props && props['as']) {\n asTag = props['as'];\n delete props['as'];\n }\n if (!parent.__componentCache) parent.__componentCache = {};\n let component = parent.__componentCache[key];\n if (!component || !(component instanceof tag) || !component.element) {\n const element = document.createElement(asTag);\n component = parent.__componentCache[key] = new tag({ ...props, children }).mount(element, { render: true });\n } else {\n component.renderState(component.state);\n }\n if (component.mounted) {\n const new_state = component.mounted(props, children, component.state);\n (typeof new_state !== 'undefined') && component.setState(new_state);\n }\n updateProps(component.element, props, false);\n return component.element;\n}\n\nfunction createComponent(node, parent, idx = 0) {\n if (typeof node === 'string') return node;\n if (Array.isArray(node)) return node.map(child => createComponent(child, parent, idx++));\n let vdom = node;\n if (node && typeof node.tag === 'function' && Object.getPrototypeOf(node.tag).__isAppRunComponent) {\n vdom = render_component(node, parent, idx);\n }\n if (vdom && Array.isArray(vdom.children)) {\n const new_parent = vdom.props?._component;\n if (new_parent) {\n let i = 0;\n vdom.children = vdom.children.map(child => createComponent(child, new_parent, i++));\n } else {\n vdom.children = vdom.children.map(child => createComponent(child, parent, idx++));\n }\n }\n return vdom;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};"],"names":["root","factory","exports","module","define","amd","this","app","self","g","global","constructor","_events","on","name","fn","options","push","off","subscribers","filter","sub","find","run","args","getSubscribers","console","assert","length","forEach","delay","Object","keys","apply","once","_t","clearTimeout","setTimeout","runAsync","promises","map","Promise","all","query","events","evt","endsWith","startsWith","replace","sort","a","b","event","getStateValue","component","setStateValue","value","state","setState","directive","vdom","Array","isArray","element","type","tag","props","children","key","substring","e","handler","p","target","checked","Number","multiple","selected","apply_directive","Fragment","collect","ATTR_PROPS","ch","c","i","createElement","undefined","getPrototypeOf","__isAppRunComponent","Error","keyCache","WeakMap","updateElement","nodes","parent","createComponent","isSvg","nodeName","updateChildren","render","document","getElementById","querySelector","update","node","el","key1","key2","toUpperCase","same","updateProps","parentNode","replaceChild","create","old_len","childNodes","new_len","len","Math","min","child","textContent","nodeType","nodeValue","createText","HTMLElement","SVGElement","insertBefore","old","temp","nextSibling","appendChild","n","removeChild","lastChild","d","createDocumentFragment","safeHTML","html","div","insertAdjacentHTML","from","indexOf","createTextNode","JSON","stringify","createElementNS","cached","oldProps","newProps","mergeProps","cname","match","dataset","style","cssText","s","xname","toLowerCase","removeAttributeNS","setAttributeNS","setAttribute","removeAttribute","test","getAttribute","window","requestAnimationFrame","idx","id","Date","now","asTag","__componentCache","renderState","mount","mounted","new_state","render_component","new_parent","_component","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","o","defineProperty","enumerable","get","globalThis","Function","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag"],"sourceRoot":""}
1
+ {"version":3,"file":"./jsx-runtime.js","mappings":"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","sources":["webpack://apprun/webpack/universalModuleDefinition","webpack://apprun/./src/app.ts","webpack://apprun/./src/directive.ts","webpack://apprun/./src/vdom-my.ts","webpack://apprun/webpack/bootstrap","webpack://apprun/webpack/runtime/define property getters","webpack://apprun/webpack/runtime/global","webpack://apprun/webpack/runtime/hasOwnProperty shorthand","webpack://apprun/webpack/runtime/make namespace object"],"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 * 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\n * - off(): Unsubscribe from events\n * - run(): Publish events synchronously\n * - runAsync(): Publish events asynchronously\n * - query(): Alias for runAsync\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)\n * - Version tracked to prevent duplicate instances\n *\n * Usage:\n * ```ts\n * // Subscribe to events\n * app.on('event-name', (state, ...args) => {\n * // Handle event\n * });\n *\n * // Publish events\n * app.run('event-name', ...args);\n * ```\n */\n\nimport { EventOptions } from './types'\n\nexport class App {\n\n _events: { [key: string]: Array<{ fn: (...args: any[]) => any, options: EventOptions }> };\n\n public start: any;\n public h: any;\n public createElement: any;\n public render: any;\n public Fragment: any;\n public webComponent: any;\n public safeHTML: any;\n public use_render: any;\n public use_react: any;\n public route: any;\n\n public version: string;\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 (options.delay) {\n this.delay(name, fn, args, options);\n } else {\n Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n }\n return !sub.options.once;\n });\n\n return subscribers.length;\n }\n\n once(name: string, fn: (...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 Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\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 return Object.keys(options).length > 0 ? fn.apply(this, [...args, options]) : fn.apply(this, args);\n });\n return Promise.all(promises);\n }\n\n query(name: string, ...args: any[]): Promise<any[]> {\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-3.3.11';\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","/**\n * Component Directives Implementation\n * \n * This file provides built-in directives for components:\n * 1. Event Binding\n * - $on: Bind DOM events to component events\n * - Supports event delegation and parameters\n * - Handles function, string, and array event handlers\n * \n * 2. Two-way Data Binding\n * - $bind: Sync form elements with component state\n * - Handles input types: text, checkbox, radio, select\n * - Automatic value type conversion\n * - Support for complex property paths\n * \n * 3. Custom Directives\n * - Extensible directive system\n * - Processes virtual DOM during rendering\n * - Supports custom attribute directives\n * \n * Usage:\n * ```tsx\n * // Event binding\n * <button $onclick=\"event-name\">Click</button>\n * <input $oninput={e => setState(e.target.value)} />\n * \n * // Two-way binding\n * <input $bind=\"state.property\" />\n * <select $bind=\"selected\">...</select>\n * ```\n */\n\nimport app from './app';\n\nconst getStateValue = (component, name) => {\n return (name ? component['state'][name] : component['state']) || '';\n}\n\nconst setStateValue = (component, name, value) => {\n if (name) {\n const state = component['state'] || {};\n state[name] = value;\n component.setState(state);\n } else {\n component.setState(value);\n }\n}\n\nconst apply_directive = (key: string, props: {}, tag, component) => {\n if (key.startsWith('$on')) {\n const event = props[key];\n key = key.substring(1)\n if (typeof event === 'boolean') {\n props[key] = e => component.run ? component.run(key, e) : app.run(key, e);\n } else if (typeof event === 'string') {\n props[key] = e => component.run ? component.run(event, e) : app.run(event, e);\n } else if (typeof event === 'function') {\n props[key] = e => component.setState(event(component.state, e));\n } else if (Array.isArray(event)) {\n const [handler, ...p] = event;\n if (typeof handler === 'string') {\n props[key] = e => component.run ? component.run(handler, ...p, e) : app.run(handler, ...p, e);\n } else if (typeof handler === 'function') {\n props[key] = e => component.setState(handler(component.state, ...p, e));\n }\n }\n\n } else if (key === '$bind') {\n const type = props['type'] || 'text';\n const name = typeof props[key] === 'string' ? props[key] : props['name'];\n if (tag === 'input') {\n switch (type) {\n case 'checkbox':\n props['checked'] = getStateValue(component, name);\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.checked);\n break;\n case 'radio':\n props['checked'] = getStateValue(component, name) === props['value'];\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.value);\n break;\n case 'number':\n case 'range':\n props['value'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, Number(e.target.value));\n break;\n default:\n props['value'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, e.target.value);\n }\n } else if (tag === 'select') {\n props['value'] = getStateValue(component, name);\n props['onchange'] = e => {\n if (!e.target.multiple) { // multiple selection use $bind on option\n setStateValue(component, name || e.target.name, e.target.value);\n }\n }\n } else if (tag === 'option') {\n props['selected'] = getStateValue(component, name);\n props['onclick'] = e => setStateValue(component, name || e.target.name, e.target.selected);\n } else if (tag === 'textarea') {\n props['innerHTML'] = getStateValue(component, name);\n props['oninput'] = e => setStateValue(component, name || e.target.name, e.target.value);\n }\n } else {\n app.run('$', { key, tag, props, component });\n }\n}\n\nconst directive = (vdom, component) => {\n if (Array.isArray(vdom)) {\n return vdom.map(element => directive(element, component));\n } else {\n let { type, tag, props, children } = vdom;\n tag = tag || type;\n children = children || props?.children;\n if (props) Object.keys(props).forEach(key => {\n if (key.startsWith('$')) {\n apply_directive(key, props, tag, component);\n delete props[key];\n }\n });\n if (children) directive(children, component);\n return vdom;\n }\n}\n\nexport default directive;\n","import { VDOM, VNode } from './types';\nimport directive from './directive';\nexport type Element = any; //HTMLElement | SVGSVGElement | SVGElement;\n\nexport function Fragment(props, ...children): any[] {\n return collect(children);\n}\n\nconst ATTR_PROPS = '_props';\n\nfunction collect(children) {\n const ch = [];\n const push = (c) => {\n if (c !== null && c !== undefined && c !== '' && c !== false) {\n ch.push((typeof c === 'function' || typeof c === 'object') ? c : `${c}`);\n }\n }\n children && children.forEach(c => {\n if (Array.isArray(c)) {\n c.forEach(i => push(i));\n } else {\n push(c);\n }\n });\n return ch;\n}\n\nexport function createElement(tag: string | Function | [], props?: {}, ...children) {\n const ch = collect(children);\n if (typeof tag === 'string') return { tag, props, children: ch };\n else if (Array.isArray(tag)) return tag; // JSX fragments - babel\n else if (tag === undefined && children) return ch; // JSX fragments - typescript\n else if (Object.getPrototypeOf(tag).__isAppRunComponent) return { tag, props, children: ch } // createComponent(tag, { ...props, children });\n else if (typeof tag === 'function') return tag(props, ch);\n else throw new Error(`Unknown tag in vdom ${tag}`);\n};\n\nconst keyCache = new WeakMap();\n\nexport const updateElement = (element: Element | string, nodes: VDOM, component = {}) => {\n // tslint:disable-next-line\n if (nodes == null || nodes === false) return;\n const el = (typeof element === 'string' && element) ?\n document.getElementById(element) || document.querySelector(element) : element;\n nodes = directive(nodes, component);\n render(el, nodes, component);\n}\n\nfunction render(element: Element, nodes: VDOM, parent = {}) {\n // tslint:disable-next-line\n if (nodes == null || nodes === false) return;\n nodes = createComponent(nodes, parent);\n if (!element) return;\n const isSvg = element.nodeName === \"SVG\";\n if (Array.isArray(nodes)) {\n updateChildren(element, nodes, isSvg);\n } else {\n updateChildren(element, [nodes], isSvg);\n }\n}\n\nfunction same(el: Element, node: VNode) {\n // if (!el || !node) return false;\n const key1 = el.nodeName;\n const key2 = `${node.tag || ''}`;\n return key1.toUpperCase() === key2.toUpperCase();\n}\n\nfunction update(element: Element, node: VNode, isSvg: boolean) {\n if (node['_op'] === 3) return;\n // console.assert(!!element);\n isSvg = isSvg || node.tag === \"svg\";\n if (!same(element, node)) {\n element.parentNode.replaceChild(create(node, isSvg), element);\n return;\n }\n !(node['_op'] & 2) && updateChildren(element, node.children, isSvg);\n !(node['_op'] & 1) && updateProps(element, node.props, isSvg);\n}\n\nfunction updateChildren(element, children, isSvg: boolean) {\n const old_len = element.childNodes?.length || 0;\n const new_len = children?.length || 0;\n const len = Math.min(old_len, new_len);\n for (let i = 0; i < len; i++) {\n const child = children[i];\n if (child['_op'] === 3) continue;\n const el = element.childNodes[i];\n if (typeof child === 'string') {\n if (el.textContent !== child) {\n if (el.nodeType === 3) {\n el.nodeValue = child\n } else {\n element.replaceChild(createText(child), el);\n }\n }\n } else if (child instanceof HTMLElement || child instanceof SVGElement) {\n element.insertBefore(child, el);\n } else {\n const key = child.props && child.props['key'];\n if (key) {\n if (el.key === key) {\n update(element.childNodes[i], child, isSvg);\n } else {\n // console.log(el.key, key);\n const old = keyCache[key];\n if (old) {\n const temp = old.nextSibling;\n element.insertBefore(old, el);\n temp ? element.insertBefore(el, temp) : element.appendChild(el);\n update(element.childNodes[i], child, isSvg);\n } else {\n element.replaceChild(create(child, isSvg), el);\n }\n }\n } else {\n update(element.childNodes[i], child, isSvg);\n }\n }\n }\n\n let n = element.childNodes?.length || 0;\n while (n > len) {\n element.removeChild(element.lastChild);\n n--;\n }\n\n if (new_len > len) {\n const d = document.createDocumentFragment();\n for (let i = len; i < children.length; i++) {\n d.appendChild(create(children[i], isSvg));\n }\n element.appendChild(d);\n }\n}\n\nexport const safeHTML = (html: string) => {\n const div = document.createElement('section');\n div.insertAdjacentHTML('afterbegin', html)\n return Array.from(div.children);\n}\n\nfunction createText(node) {\n if (node?.indexOf('_html:') === 0) { // ?\n const div = document.createElement('div');\n div.insertAdjacentHTML('afterbegin', node.substring(6))\n return div;\n } else {\n return document.createTextNode(node??'');\n }\n}\n\nfunction create(node: VNode | string | HTMLElement | SVGElement, isSvg: boolean): Element {\n // console.assert(node !== null && node !== undefined);\n if ((node instanceof HTMLElement) || (node instanceof SVGElement)) return node;\n if (typeof node === \"string\") return createText(node);\n if (!node.tag || (typeof node.tag === 'function')) return createText(JSON.stringify(node));\n isSvg = isSvg || node.tag === \"svg\";\n const element = isSvg\n ? document.createElementNS(\"http://www.w3.org/2000/svg\", node.tag)\n : document.createElement(node.tag);\n\n updateProps(element, node.props, isSvg);\n if (node.children) node.children.forEach(child => element.appendChild(create(child, isSvg)));\n return element\n}\n\nfunction mergeProps(oldProps: {}, newProps: {}): {} {\n newProps['class'] = newProps['class'] || newProps['className'];\n delete newProps['className'];\n const props = {};\n if (oldProps) Object.keys(oldProps).forEach(p => props[p] = null);\n if (newProps) Object.keys(newProps).forEach(p => props[p] = newProps[p]);\n return props;\n}\n\nexport function updateProps(element: Element, props: {}, isSvg) {\n // console.assert(!!element);\n const cached = element[ATTR_PROPS] || {};\n props = mergeProps(cached, props || {});\n element[ATTR_PROPS] = props;\n\n for (const name in props) {\n const value = props[name];\n // if (cached[name] === value) continue;\n // console.log('updateProps', name, value);\n if (name.startsWith('data-')) {\n const dname = name.substring(5);\n const cname = dname.replace(/-(\\w)/g, (match) => match[1].toUpperCase());\n if (element.dataset[cname] !== value) {\n if (value || value === \"\") element.dataset[cname] = value;\n else delete element.dataset[cname];\n }\n } else if (name === 'style') {\n if (element.style.cssText) element.style.cssText = '';\n if (typeof value === 'string') element.style.cssText = value;\n else {\n for (const s in value) {\n if (element.style[s] !== value[s]) element.style[s] = value[s];\n }\n }\n } else if (name.startsWith('xlink')) {\n const xname = name.replace('xlink', '').toLowerCase();\n if (value == null || value === false) {\n element.removeAttributeNS('http://www.w3.org/1999/xlink', xname);\n } else {\n element.setAttributeNS('http://www.w3.org/1999/xlink', xname, value);\n }\n } else if (name.startsWith('on')) {\n if (!value || typeof value === 'function') {\n element[name] = value;\n } else if (typeof value === 'string') {\n if (value) element.setAttribute(name, value);\n else element.removeAttribute(name);\n }\n } else if (/^id$|^class$|^list$|^readonly$|^contenteditable$|^role|-|^for$/g.test(name) || isSvg) {\n if (element.getAttribute(name) !== value) {\n if (value) element.setAttribute(name, value);\n else element.removeAttribute(name);\n }\n } else if (element[name] !== value) {\n element[name] = value;\n }\n if (name === 'key' && value) keyCache[value] = element;\n }\n if (props && typeof props['ref'] === 'function') {\n window.requestAnimationFrame(() => props['ref'](element));\n }\n}\n\nfunction render_component(node, parent, idx) {\n const { tag, props, children } = node;\n let key = `_${idx}`;\n let id = props && props['id'];\n if (!id) id = `_${idx}${Date.now()}`;\n else key = id;\n let asTag = 'section';\n if (props && props['as']) {\n asTag = props['as'];\n delete props['as'];\n }\n if (!parent.__componentCache) parent.__componentCache = {};\n let component = parent.__componentCache[key];\n if (!component || !(component instanceof tag) || !component.element) {\n const element = document.createElement(asTag);\n component = parent.__componentCache[key] = new tag({ ...props, children }).mount(element, { render: true });\n } else {\n component.renderState(component.state);\n }\n if (component.mounted) {\n const new_state = component.mounted(props, children, component.state);\n (typeof new_state !== 'undefined') && component.setState(new_state);\n }\n updateProps(component.element, props, false);\n return component.element;\n}\n\nfunction createComponent(node, parent, idx = 0) {\n if (typeof node === 'string') return node;\n if (Array.isArray(node)) return node.map(child => createComponent(child, parent, idx++));\n let vdom = node;\n if (node && typeof node.tag === 'function' && Object.getPrototypeOf(node.tag).__isAppRunComponent) {\n vdom = render_component(node, parent, idx);\n }\n if (vdom && Array.isArray(vdom.children)) {\n const new_parent = vdom.props?._component;\n if (new_parent) {\n let i = 0;\n vdom.children = vdom.children.map(child => createComponent(child, new_parent, i++));\n } else {\n vdom.children = vdom.children.map(child => createComponent(child, parent, idx++));\n }\n }\n return vdom;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};"],"names":["root","factory","exports","module","define","amd","this","_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","delay","Object","keys","apply","once","_t","clearTimeout","setTimeout","runAsync","promises","map","Promise","all","query","events","evt","endsWith","startsWith","replace","sort","a","b","event","getStateValue","component","setStateValue","value","state","setState","directive","vdom","Array","isArray","element","type","tag","props","children","key","substring","e","handler","p","target","checked","Number","multiple","selected","apply_directive","Fragment","collect","ATTR_PROPS","ch","c","i","createElement","undefined","getPrototypeOf","__isAppRunComponent","Error","keyCache","WeakMap","updateElement","nodes","parent","createComponent","isSvg","nodeName","updateChildren","render","document","getElementById","querySelector","update","node","el","key1","key2","toUpperCase","same","updateProps","parentNode","replaceChild","create","old_len","childNodes","new_len","len","Math","min","child","textContent","nodeType","nodeValue","createText","HTMLElement","SVGElement","insertBefore","old","temp","nextSibling","appendChild","n","removeChild","lastChild","d","createDocumentFragment","safeHTML","html","div","insertAdjacentHTML","from","indexOf","createTextNode","JSON","stringify","createElementNS","cached","oldProps","newProps","mergeProps","cname","match","dataset","style","cssText","s","xname","toLowerCase","removeAttributeNS","setAttributeNS","setAttribute","removeAttribute","test","getAttribute","requestAnimationFrame","idx","id","Date","now","asTag","__componentCache","renderState","mount","mounted","new_state","render_component","new_parent","_component","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","o","defineProperty","enumerable","get","globalThis","Function","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag"],"sourceRoot":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apprun",
3
- "version": "3.33.9",
3
+ "version": "3.35.0",
4
4
  "description": "JavaScript library that has Elm inspired architecture, event pub-sub and components",
5
5
  "main": "dist/apprun.js",
6
6
  "module": "esm/apprun.js",
@@ -38,52 +38,25 @@
38
38
  },
39
39
  "homepage": "https://github.com/yysun/apprun#readme",
40
40
  "devDependencies": {
41
- "@rollup/plugin-commonjs": "^21.1.0",
42
- "@rollup/plugin-node-resolve": "^13.3.0",
43
- "@types/jest": "^27.5.2",
44
- "jest": "^27.5.1",
41
+ "@rollup/plugin-commonjs": "^28.0.2",
42
+ "@rollup/plugin-node-resolve": "^16.0.0",
43
+ "@rollup/plugin-terser": "^0.4.4",
44
+ "@types/jest": "^29.5.14",
45
+ "jest": "^29.7.0",
46
+ "jest-environment-jsdom": "^29.7.0",
45
47
  "json-loader": "^0.5.7",
46
- "lit-html": "^2.8.0",
47
- "marked": "^14.1.2",
48
- "rollup": "^2.79.2",
49
- "rollup-plugin-filesize": "^10.0.0",
50
- "rollup-plugin-node-resolve": "^5.2.0",
51
- "rollup-plugin-sourcemaps": "^0.6.3",
52
- "rollup-plugin-terser": "^7.0.2",
53
- "ts-jest": "^27.1.4",
48
+ "lit": "^3.3.0",
49
+ "marked": "^16.0.0",
50
+ "rollup": "^4.29.2",
51
+ "ts-jest": "^29.2.5",
54
52
  "ts-loader": "^9.5.1",
55
- "typescript": "^4.6.3",
56
- "webpack": "^5.95.0",
57
- "webpack-cli": "^5.1.4",
58
- "webpack-dev-server": "^5.1.0"
59
- },
60
- "jest": {
61
- "testEnvironment": "jsdom",
62
- "transformIgnorePatterns": [
63
- "/node_modules/(?!lit-html).+\\.js"
64
- ],
65
- "transform": {
66
- "^.+\\.(t|j)sx?$": "ts-jest"
67
- },
68
- "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
69
- "moduleFileExtensions": [
70
- "ts",
71
- "tsx",
72
- "js",
73
- "jsx",
74
- "json",
75
- "node"
76
- ],
77
- "globals": {
78
- "ts-jest": {
79
- "diagnostics": true,
80
- "tsconfig": "tsconfig.jest.json"
81
- }
82
- },
83
- "testRunner": "jest-jasmine2"
53
+ "typescript": "^5.7.2",
54
+ "webpack": "^5.97.1",
55
+ "webpack-cli": "^6.0.1",
56
+ "webpack-dev-server": "^5.2.0"
84
57
  },
85
58
  "dependencies": {
86
- "commander": "^12.1.0",
59
+ "commander": "^14.0.0",
87
60
  "js-yaml": "^4.1.0"
88
61
  }
89
62
  }
package/react.js CHANGED
@@ -1,20 +1,5 @@
1
- import app from 'apprun';
2
- import React from 'react';
3
- import ReactDOM from 'react-dom/client'
4
1
  import { useState } from 'react';
5
2
 
6
- export const user_react = () => {
7
- app.h = app.createElement = React.createElement;
8
- app.Fragment = React.Fragment;
9
- app.render = (el, vdom) => ReactDOM.render(vdom, el);
10
- if (React.version && React.version.startsWith('18')) {
11
- app.render = (el, vdom) => {
12
- if (!el || !vdom) return;
13
- if (!el._root) el._root = ReactDOM.createRoot(el);
14
- el._root.render(vdom);
15
- }
16
- }
17
- }
18
3
  const toReact = (componentClass) => {
19
4
  const component = new componentClass().mount();
20
5
  const { state, view } = component;
package/rollup.config.js CHANGED
@@ -1,24 +1,41 @@
1
- import { terser } from 'rollup-plugin-terser';
2
- import sourcemaps from 'rollup-plugin-sourcemaps';
3
- import resolve from '@rollup/plugin-node-resolve';
4
- import commonjs from '@rollup/plugin-commonjs';
1
+ /**
2
+ * Rollup Configuration
3
+ *
4
+ * This configuration builds AppRun's ESM bundles with the following features:
5
+ * - Minification (controlled by MINIFY env var, defaults to true)
6
+ * - Sourcemaps (enabled by default)
7
+ * - Property mangling for properties starting with '__'
8
+ *
9
+ * Usage:
10
+ * - Default build (minified): rollup -c
11
+ * - Unminified build: MINIFY=false rollup -c
12
+ */
5
13
 
6
- const plugins = [
14
+ const terser = require('@rollup/plugin-terser');
15
+ const resolve = require('@rollup/plugin-node-resolve');
16
+ const commonjs = require('@rollup/plugin-commonjs');
17
+
18
+ // Control minification via environment variable
19
+ const minify = process.env.MINIFY !== 'false';
20
+
21
+ const plugins = minify ? [
7
22
  resolve(),
8
23
  commonjs(),
9
24
  terser({
10
- warnings: true,
11
25
  module: true,
26
+ sourceMap: true, // Enable sourcemap support in terser
12
27
  mangle: {
13
28
  properties: {
14
29
  regex: /^__/,
15
30
  },
16
31
  },
17
- }),
18
- sourcemaps()
32
+ })
33
+ ] : [
34
+ resolve(),
35
+ commonjs()
19
36
  ];
20
37
 
21
- export default [{
38
+ module.exports = [{
22
39
  input: 'esm/apprun.js',
23
40
  output: {
24
41
  file: 'dist/apprun.esm.js',
@@ -42,4 +59,4 @@ export default [{
42
59
  sourcemap: true
43
60
  },
44
61
  plugins
45
- }]
62
+ }]