apprun 3.36.0 → 3.37.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.
- package/CHANGELOG.md +28 -0
- package/README.md +143 -25
- package/WHATSNEW.md +29 -12
- package/apprun-book.jpg +0 -0
- package/apprun.d.ts +136 -46
- package/cli/app.js +29 -0
- package/cli/index.html +13 -0
- package/{apprun-cli.js → cli/index.js} +8 -14
- package/dist/apprun-code.js +2 -0
- package/dist/apprun-code.js.map +1 -0
- package/dist/apprun-dev-tools.js +1 -2
- package/dist/apprun-dev-tools.js.map +1 -1
- package/dist/apprun-html.esm.js +7 -7
- package/dist/apprun-html.esm.js.map +1 -1
- package/dist/apprun-html.js +1 -1
- package/dist/apprun-html.js.map +1 -1
- package/dist/apprun-play-html.esm.js +7 -7
- package/dist/apprun-play-html.esm.js.map +1 -1
- package/dist/apprun-play.js +1 -1
- package/dist/apprun-play.js.map +1 -1
- package/dist/apprun.esm.js +1 -1
- package/dist/apprun.esm.js.map +1 -1
- package/dist/apprun.js +1 -1
- package/dist/apprun.js.map +1 -1
- package/dist/createState.js +2 -0
- package/dist/createState.js.map +1 -0
- package/esm/add-components.js +90 -0
- package/esm/add-components.js.map +1 -0
- package/esm/app.js +15 -8
- package/esm/app.js.map +1 -1
- package/esm/apprun-code.js +51 -16
- package/esm/apprun-code.js.map +1 -1
- package/esm/apprun-dev-tools.js +32 -32
- package/esm/apprun-dev-tools.js.map +1 -1
- package/esm/apprun-play.js +50 -17
- package/esm/apprun-play.js.map +1 -1
- package/esm/apprun.js +42 -11
- package/esm/apprun.js.map +1 -1
- package/esm/component.js +17 -20
- package/esm/component.js.map +1 -1
- package/esm/createState.js +9 -0
- package/esm/createState.js.map +1 -0
- package/esm/decorator.js.map +1 -1
- package/esm/directive.js +1 -1
- package/esm/directive.js.map +1 -1
- package/esm/router.js +241 -18
- package/esm/router.js.map +1 -1
- package/esm/shadow.js +1 -1
- package/esm/shadow.js.map +1 -1
- package/esm/type-utils.js +2 -3
- package/esm/type-utils.js.map +1 -1
- package/esm/vdom-my-new.js +327 -0
- package/esm/vdom-my-new.js.map +1 -0
- package/esm/vdom-my-prop-attr.js +227 -0
- package/esm/vdom-my-prop-attr.js.map +1 -0
- package/esm/vdom-my.js +114 -150
- package/esm/vdom-my.js.map +1 -1
- package/esm/vdom-patch.js +1 -1
- package/esm/vdom-patch.js.map +1 -1
- package/esm/version.js +1 -1
- package/esm/web-component.js +3 -4
- package/esm/web-component.js.map +1 -1
- package/index.html +5 -2
- package/jest.config.js +2 -2
- package/jest.setup.js +29 -3
- package/jsx-runtime.js +1 -1
- package/jsx-runtime.js.map +1 -1
- package/package.json +14 -14
- package/src/add-components.ts +103 -0
- package/src/app.ts +10 -19
- package/src/apprun-code.tsx +48 -10
- package/src/apprun-dev-tools.tsx +23 -27
- package/src/apprun-play.tsx +46 -9
- package/src/apprun.ts +49 -40
- package/src/component.ts +15 -8
- package/src/createState.ts +11 -0
- package/src/decorator.ts +2 -1
- package/src/router.ts +261 -17
- package/src/shadow.tsx +1 -1
- package/src/tsconfig.json +2 -2
- package/src/types.ts +62 -2
- package/src/vdom-my-new.ts +311 -0
- package/src/vdom-my-prop-attr.ts +241 -0
- package/src/vdom-my.ts +109 -134
- package/src/version.ts +1 -1
- package/src/web-component.ts +4 -10
- package/tsconfig.jest.json +15 -6
- package/tsconfig.json +3 -3
- package/webpack.config.cjs +3 -1
- package/cli/export.js +0 -92
- package/cli/import.js +0 -68
- package/plan/plan-apprun-bugfixes.md +0 -207
- package/src/types/apprun.d.ts +0 -56
|
@@ -0,0 +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={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{createState:()=>q});var r=Symbol.for("immer-nothing"),n=Symbol.for("immer-draftable"),o=Symbol.for("immer-state");function i(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var c=Object.getPrototypeOf;function a(e){return!!e&&!!e[o]}function s(e){return!!e&&(f(e)||Array.isArray(e)||!!e[n]||!!e.constructor?.[n]||d(e)||h(e))}var u=Object.prototype.constructor.toString();function f(e){if(!e||"object"!=typeof e)return!1;const t=c(e);if(null===t)return!0;const r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return r===Object||"function"==typeof r&&Function.toString.call(r)===u}function l(e,t){0===p(e)?Reflect.ownKeys(e).forEach((r=>{t(r,e[r],e)})):e.forEach(((r,n)=>t(n,r,e)))}function p(e){const t=e[o];return t?t.type_:Array.isArray(e)?1:d(e)?2:h(e)?3:0}function _(e,t){return 2===p(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function y(e,t,r){const n=p(e);2===n?e.set(t,r):3===n?e.add(r):e[t]=r}function d(e){return e instanceof Map}function h(e){return e instanceof Set}function b(e){return e.copy_||e.base_}function m(e,t){if(d(e))return new Map(e);if(h(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);const r=f(e);if(!0===t||"class_only"===t&&!r){const t=Object.getOwnPropertyDescriptors(e);delete t[o];let r=Reflect.ownKeys(t);for(let n=0;n<r.length;n++){const o=r[n],i=t[o];!1===i.writable&&(i.writable=!0,i.configurable=!0),(i.get||i.set)&&(t[o]={configurable:!0,writable:!0,enumerable:i.enumerable,value:e[o]})}return Object.create(c(e),t)}{const t=c(e);if(null!==t&&r)return{...e};const n=Object.create(t);return Object.assign(n,e)}}function v(e,t=!1){return P(e)||a(e)||!s(e)||(p(e)>1&&(e.set=e.add=e.clear=e.delete=g),Object.freeze(e),t&&Object.entries(e).forEach((([e,t])=>v(t,!0)))),e}function g(){i(2)}function P(e){return Object.isFrozen(e)}var S,w={};function O(e){const t=w[e];return t||i(0),t}function z(){return S}function j(e,t){t&&(O("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function F(e){A(e),e.drafts_.forEach(M),e.drafts_=null}function A(e){e===S&&(S=e.parent_)}function D(e){return S={drafts_:[],parent_:S,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function M(e){const t=e[o];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function C(e,t){t.unfinalizedDrafts_=t.drafts_.length;const n=t.drafts_[0];return void 0!==e&&e!==n?(n[o].modified_&&(F(t),i(4)),s(e)&&(e=x(t,e),t.parent_||k(t,e)),t.patches_&&O("Patches").generateReplacementPatches_(n[o].base_,e,t.patches_,t.inversePatches_)):e=x(t,n,[]),F(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==r?e:void 0}function x(e,t,r){if(P(t))return t;const n=t[o];if(!n)return l(t,((o,i)=>E(e,n,t,o,i,r))),t;if(n.scope_!==e)return t;if(!n.modified_)return k(e,n.base_,!0),n.base_;if(!n.finalized_){n.finalized_=!0,n.scope_.unfinalizedDrafts_--;const t=n.copy_;let o=t,i=!1;3===n.type_&&(o=new Set(t),t.clear(),i=!0),l(o,((o,c)=>E(e,n,t,o,c,r,i))),k(e,t,!1),r&&e.patches_&&O("Patches").generatePatches_(n,r,e.patches_,e.inversePatches_)}return n.copy_}function E(e,t,r,n,o,i,c){if(a(o)){const c=x(e,o,i&&t&&3!==t.type_&&!_(t.assigned_,n)?i.concat(n):void 0);if(y(r,n,c),!a(c))return;e.canAutoFreeze_=!1}else c&&r.add(o);if(s(o)&&!P(o)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;x(e,o),t&&t.scope_.parent_||"symbol"==typeof n||!Object.prototype.propertyIsEnumerable.call(r,n)||k(e,o)}}function k(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&v(t,r)}var N={get(e,t){if(t===o)return e;const r=b(e);if(!_(r,t))return function(e,t,r){const n=W(t,r);return n?"value"in n?n.value:n.get?.call(e.draft_):void 0}(e,r,t);const n=r[t];return e.finalized_||!s(n)?n:n===K(e.base_,t)?(I(e),e.copy_[t]=L(n,e)):n},has:(e,t)=>t in b(e),ownKeys:e=>Reflect.ownKeys(b(e)),set(e,t,r){const n=W(b(e),t);if(n?.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){const n=K(b(e),t),a=n?.[o];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_[t]=!1,!0;if(((i=r)===(c=n)?0!==i||1/i==1/c:i!=i&&c!=c)&&(void 0!==r||_(e.base_,t)))return!0;I(e),U(e)}var i,c;return e.copy_[t]===r&&(void 0!==r||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_[t]=!0),!0},deleteProperty:(e,t)=>(void 0!==K(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,I(e),U(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const r=b(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:n.enumerable,value:r[t]}:n},defineProperty(){i(11)},getPrototypeOf:e=>c(e.base_),setPrototypeOf(){i(12)}},R={};function K(e,t){const r=e[o];return(r?b(r):e)[t]}function W(e,t){if(!(t in e))return;let r=c(e);for(;r;){const e=Object.getOwnPropertyDescriptor(r,t);if(e)return e;r=c(r)}}function U(e){e.modified_||(e.modified_=!0,e.parent_&&U(e.parent_))}function I(e){e.copy_||(e.copy_=m(e.base_,e.scope_.immer_.useStrictShallowCopy_))}function L(e,t){const r=d(e)?O("MapSet").proxyMap_(e,t):h(e)?O("MapSet").proxySet_(e,t):function(e,t){const r=Array.isArray(e),n={type_:r?1:0,scope_:t?t.scope_:z(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let o=n,i=N;r&&(o=[n],i=R);const{revoke:c,proxy:a}=Proxy.revocable(o,i);return n.draft_=a,n.revoke_=c,a}(e,t);return(t?t.scope_:z()).drafts_.push(r),r}function T(e){if(!s(e)||P(e))return e;const t=e[o];let r;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=m(e,t.scope_.immer_.useStrictShallowCopy_)}else r=m(e,!0);return l(r,((e,t)=>{y(r,e,T(t))})),t&&(t.finalized_=!1),r}l(N,((e,t)=>{R[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}})),R.deleteProperty=function(e,t){return R.set.call(this,e,t,void 0)},R.set=function(e,t,r){return N.set.call(this,e[0],t,r,e[0])};var X=new class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(e,t,n)=>{if("function"==typeof e&&"function"!=typeof t){const r=t;t=e;const n=this;return function(e=r,...o){return n.produce(e,(e=>t.call(this,e,...o)))}}let o;if("function"!=typeof t&&i(6),void 0!==n&&"function"!=typeof n&&i(7),s(e)){const r=D(this),i=L(e,void 0);let c=!0;try{o=t(i),c=!1}finally{c?F(r):A(r)}return j(r,n),C(o,r)}if(!e||"object"!=typeof e){if(o=t(e),void 0===o&&(o=e),o===r&&(o=void 0),this.autoFreeze_&&v(o,!0),n){const t=[],r=[];O("Patches").generateReplacementPatches_(e,o,t,r),n(t,r)}return o}i(1)},this.produceWithPatches=(e,t)=>{if("function"==typeof e)return(t,...r)=>this.produceWithPatches(t,(t=>e(t,...r)));let r,n;return[this.produce(e,t,((e,t)=>{r=e,n=t})),r,n]},"boolean"==typeof e?.autoFreeze&&this.setAutoFreeze(e.autoFreeze),"boolean"==typeof e?.useStrictShallowCopy&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){var t;s(e)||i(8),a(e)&&(a(t=e)||i(10),e=T(t));const r=D(this),n=L(e,void 0);return n[o].isManual_=!0,A(r),n}finishDraft(e,t){const r=e&&e[o];r&&r.isManual_||i(9);const{scope_:n}=r;return j(n,t),C(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const n=t[r];if(0===n.path.length&&"replace"===n.op){e=n.value;break}}r>-1&&(t=t.slice(r+1));const n=O("Patches").applyPatches_;return a(e)?n(e,t):this.produce(e,(e=>n(e,t)))}},$=X.produce;function q(e){return(t,...r)=>$(t,(t=>{e(t,...r)}))}return X.produceWithPatches.bind(X),X.setAutoFreeze.bind(X),X.setUseStrictShallowCopy.bind(X),X.applyPatches.bind(X),X.createDraft.bind(X),X.finishDraft.bind(X),t})()));
|
|
2
|
+
//# sourceMappingURL=createState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dist/createState.js","mappings":"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","sources":["webpack://apprun/webpack/universalModuleDefinition","webpack://apprun/webpack/bootstrap","webpack://apprun/webpack/runtime/define property getters","webpack://apprun/webpack/runtime/hasOwnProperty shorthand","webpack://apprun/webpack/runtime/make namespace object","webpack://apprun/./node_modules/immer/dist/immer.mjs","webpack://apprun/./src/createState.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"apprun\"] = factory();\n\telse\n\t\troot[\"apprun\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// 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__.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};","// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = process.env.NODE_ENV !== \"production\" ? [\n // All error codes, starting by 0:\n function(plugin) {\n return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n },\n function(thing) {\n return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n },\n \"This object has been frozen and should not be mutated\",\n function(data) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n },\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n \"Immer forbids circular references\",\n \"The first or second argument to `produce` must be a function\",\n \"The third argument to `produce` must be a function or undefined\",\n \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n function(thing) {\n return `'current' expects a draft, got: ${thing}`;\n },\n \"Object.defineProperty() cannot be used on an Immer draft\",\n \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n \"Immer only supports deleting array indices\",\n \"Immer only supports setting array indices and the 'length' property\",\n function(thing) {\n return `'original' expects a draft, got: ${thing}`;\n }\n // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n if (process.env.NODE_ENV !== \"production\") {\n const e = errors[error];\n const msg = typeof e === \"function\" ? e.apply(null, args) : e;\n throw new Error(`[Immer] ${msg}`);\n }\n throw new Error(\n `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n );\n}\n\n// src/utils/common.ts\nvar getPrototypeOf = Object.getPrototypeOf;\nfunction isDraft(value) {\n return !!value && !!value[DRAFT_STATE];\n}\nfunction isDraftable(value) {\n if (!value)\n return false;\n return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = Object.prototype.constructor.toString();\nfunction isPlainObject(value) {\n if (!value || typeof value !== \"object\")\n return false;\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n if (Ctor === Object)\n return true;\n return typeof Ctor == \"function\" && Function.toString.call(Ctor) === objectCtorString;\n}\nfunction original(value) {\n if (!isDraft(value))\n die(15, value);\n return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter) {\n if (getArchtype(obj) === 0 /* Object */) {\n Reflect.ownKeys(obj).forEach((key) => {\n iter(key, obj[key], obj);\n });\n } else {\n obj.forEach((entry, index) => iter(index, entry, obj));\n }\n}\nfunction getArchtype(thing) {\n const state = thing[DRAFT_STATE];\n return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nfunction has(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction get(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.get(prop) : thing[prop];\n}\nfunction set(thing, propOrOldValue, value) {\n const t = getArchtype(thing);\n if (t === 2 /* Map */)\n thing.set(propOrOldValue, value);\n else if (t === 3 /* Set */) {\n thing.add(value);\n } else\n thing[propOrOldValue] = value;\n}\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction isMap(target) {\n return target instanceof Map;\n}\nfunction isSet(target) {\n return target instanceof Set;\n}\nfunction latest(state) {\n return state.copy_ || state.base_;\n}\nfunction shallowCopy(base, strict) {\n if (isMap(base)) {\n return new Map(base);\n }\n if (isSet(base)) {\n return new Set(base);\n }\n if (Array.isArray(base))\n return Array.prototype.slice.call(base);\n const isPlain = isPlainObject(base);\n if (strict === true || strict === \"class_only\" && !isPlain) {\n const descriptors = Object.getOwnPropertyDescriptors(base);\n delete descriptors[DRAFT_STATE];\n let keys = Reflect.ownKeys(descriptors);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const desc = descriptors[key];\n if (desc.writable === false) {\n desc.writable = true;\n desc.configurable = true;\n }\n if (desc.get || desc.set)\n descriptors[key] = {\n configurable: true,\n writable: true,\n // could live with !!desc.set as well here...\n enumerable: desc.enumerable,\n value: base[key]\n };\n }\n return Object.create(getPrototypeOf(base), descriptors);\n } else {\n const proto = getPrototypeOf(base);\n if (proto !== null && isPlain) {\n return { ...base };\n }\n const obj = Object.create(proto);\n return Object.assign(obj, base);\n }\n}\nfunction freeze(obj, deep = false) {\n if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n return obj;\n if (getArchtype(obj) > 1) {\n obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections;\n }\n Object.freeze(obj);\n if (deep)\n Object.entries(obj).forEach(([key, value]) => freeze(value, true));\n return obj;\n}\nfunction dontMutateFrozenCollections() {\n die(2);\n}\nfunction isFrozen(obj) {\n return Object.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n const plugin = plugins[pluginKey];\n if (!plugin) {\n die(0, pluginKey);\n }\n return plugin;\n}\nfunction loadPlugin(pluginKey, implementation) {\n if (!plugins[pluginKey])\n plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nfunction getCurrentScope() {\n return currentScope;\n}\nfunction createScope(parent_, immer_) {\n return {\n drafts_: [],\n parent_,\n immer_,\n // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n canAutoFreeze_: true,\n unfinalizedDrafts_: 0\n };\n}\nfunction usePatchesInScope(scope, patchListener) {\n if (patchListener) {\n getPlugin(\"Patches\");\n scope.patches_ = [];\n scope.inversePatches_ = [];\n scope.patchListener_ = patchListener;\n }\n}\nfunction revokeScope(scope) {\n leaveScope(scope);\n scope.drafts_.forEach(revokeDraft);\n scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n if (scope === currentScope) {\n currentScope = scope.parent_;\n }\n}\nfunction enterScope(immer2) {\n return currentScope = createScope(currentScope, immer2);\n}\nfunction revokeDraft(draft) {\n const state = draft[DRAFT_STATE];\n if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n state.revoke_();\n else\n state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n scope.unfinalizedDrafts_ = scope.drafts_.length;\n const baseDraft = scope.drafts_[0];\n const isReplaced = result !== void 0 && result !== baseDraft;\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified_) {\n revokeScope(scope);\n die(4);\n }\n if (isDraftable(result)) {\n result = finalize(scope, result);\n if (!scope.parent_)\n maybeFreeze(scope, result);\n }\n if (scope.patches_) {\n getPlugin(\"Patches\").generateReplacementPatches_(\n baseDraft[DRAFT_STATE].base_,\n result,\n scope.patches_,\n scope.inversePatches_\n );\n }\n } else {\n result = finalize(scope, baseDraft, []);\n }\n revokeScope(scope);\n if (scope.patches_) {\n scope.patchListener_(scope.patches_, scope.inversePatches_);\n }\n return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value, path) {\n if (isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n if (!state) {\n each(\n value,\n (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path)\n );\n return value;\n }\n if (state.scope_ !== rootScope)\n return value;\n if (!state.modified_) {\n maybeFreeze(rootScope, state.base_, true);\n return state.base_;\n }\n if (!state.finalized_) {\n state.finalized_ = true;\n state.scope_.unfinalizedDrafts_--;\n const result = state.copy_;\n let resultEach = result;\n let isSet2 = false;\n if (state.type_ === 3 /* Set */) {\n resultEach = new Set(result);\n result.clear();\n isSet2 = true;\n }\n each(\n resultEach,\n (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2)\n );\n maybeFreeze(rootScope, result, false);\n if (path && rootScope.patches_) {\n getPlugin(\"Patches\").generatePatches_(\n state,\n path,\n rootScope.patches_,\n rootScope.inversePatches_\n );\n }\n }\n return state.copy_;\n}\nfunction finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) {\n if (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n die(5);\n if (isDraft(childValue)) {\n const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys.\n !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0;\n const res = finalize(rootScope, childValue, path);\n set(targetObject, prop, res);\n if (isDraft(res)) {\n rootScope.canAutoFreeze_ = false;\n } else\n return;\n } else if (targetIsSet) {\n targetObject.add(childValue);\n }\n if (isDraftable(childValue) && !isFrozen(childValue)) {\n if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n return;\n }\n finalize(rootScope, childValue);\n if ((!parentState || !parentState.scope_.parent_) && typeof prop !== \"symbol\" && Object.prototype.propertyIsEnumerable.call(targetObject, prop))\n maybeFreeze(rootScope, childValue);\n }\n}\nfunction maybeFreeze(scope, value, deep = false) {\n if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n freeze(value, deep);\n }\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n const isArray = Array.isArray(base);\n const state = {\n type_: isArray ? 1 /* Array */ : 0 /* Object */,\n // Track which produce call this is associated with.\n scope_: parent ? parent.scope_ : getCurrentScope(),\n // True for both shallow and deep changes.\n modified_: false,\n // Used during finalization.\n finalized_: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned_: {},\n // The parent draft state.\n parent_: parent,\n // The base state.\n base_: base,\n // The base proxy.\n draft_: null,\n // set below\n // The base copy with any updated values.\n copy_: null,\n // Called by the `produce` function.\n revoke_: null,\n isManual_: false\n };\n let target = state;\n let traps = objectTraps;\n if (isArray) {\n target = [state];\n traps = arrayTraps;\n }\n const { revoke, proxy } = Proxy.revocable(target, traps);\n state.draft_ = proxy;\n state.revoke_ = revoke;\n return proxy;\n}\nvar objectTraps = {\n get(state, prop) {\n if (prop === DRAFT_STATE)\n return state;\n const source = latest(state);\n if (!has(source, prop)) {\n return readPropFromProto(state, source, prop);\n }\n const value = source[prop];\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value === peek(state.base_, prop)) {\n prepareCopy(state);\n return state.copy_[prop] = createProxy(value, state);\n }\n return value;\n },\n has(state, prop) {\n return prop in latest(state);\n },\n ownKeys(state) {\n return Reflect.ownKeys(latest(state));\n },\n set(state, prop, value) {\n const desc = getDescriptorFromProto(latest(state), prop);\n if (desc?.set) {\n desc.set.call(state.draft_, value);\n return true;\n }\n if (!state.modified_) {\n const current2 = peek(latest(state), prop);\n const currentState = current2?.[DRAFT_STATE];\n if (currentState && currentState.base_ === value) {\n state.copy_[prop] = value;\n state.assigned_[prop] = false;\n return true;\n }\n if (is(value, current2) && (value !== void 0 || has(state.base_, prop)))\n return true;\n prepareCopy(state);\n markChanged(state);\n }\n if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n (value !== void 0 || prop in state.copy_) || // special case: NaN\n Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n return true;\n state.copy_[prop] = value;\n state.assigned_[prop] = true;\n return true;\n },\n deleteProperty(state, prop) {\n if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n state.assigned_[prop] = false;\n prepareCopy(state);\n markChanged(state);\n } else {\n delete state.assigned_[prop];\n }\n if (state.copy_) {\n delete state.copy_[prop];\n }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor(state, prop) {\n const owner = latest(state);\n const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n if (!desc)\n return desc;\n return {\n writable: true,\n configurable: state.type_ !== 1 /* Array */ || prop !== \"length\",\n enumerable: desc.enumerable,\n value: owner[prop]\n };\n },\n defineProperty() {\n die(11);\n },\n getPrototypeOf(state) {\n return getPrototypeOf(state.base_);\n },\n setPrototypeOf() {\n die(12);\n }\n};\nvar arrayTraps = {};\neach(objectTraps, (key, fn) => {\n arrayTraps[key] = function() {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\narrayTraps.deleteProperty = function(state, prop) {\n if (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop)))\n die(13);\n return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n if (process.env.NODE_ENV !== \"production\" && prop !== \"length\" && isNaN(parseInt(prop)))\n die(14);\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n const state = draft[DRAFT_STATE];\n const source = state ? latest(state) : draft;\n return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n const desc = getDescriptorFromProto(source, prop);\n return desc ? `value` in desc ? desc.value : (\n // This is a very special case, if the prop is a getter defined by the\n // prototype, we should invoke it with the draft as context!\n desc.get?.call(state.draft_)\n ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n if (!(prop in source))\n return void 0;\n let proto = getPrototypeOf(source);\n while (proto) {\n const desc = Object.getOwnPropertyDescriptor(proto, prop);\n if (desc)\n return desc;\n proto = getPrototypeOf(proto);\n }\n return void 0;\n}\nfunction markChanged(state) {\n if (!state.modified_) {\n state.modified_ = true;\n if (state.parent_) {\n markChanged(state.parent_);\n }\n }\n}\nfunction prepareCopy(state) {\n if (!state.copy_) {\n state.copy_ = shallowCopy(\n state.base_,\n state.scope_.immer_.useStrictShallowCopy_\n );\n }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n constructor(config) {\n this.autoFreeze_ = true;\n this.useStrictShallowCopy_ = false;\n /**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n this.produce = (base, recipe, patchListener) => {\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n const defaultBase = recipe;\n recipe = base;\n const self = this;\n return function curriedProduce(base2 = defaultBase, ...args) {\n return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n };\n }\n if (typeof recipe !== \"function\")\n die(6);\n if (patchListener !== void 0 && typeof patchListener !== \"function\")\n die(7);\n let result;\n if (isDraftable(base)) {\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n let hasError = true;\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n if (hasError)\n revokeScope(scope);\n else\n leaveScope(scope);\n }\n usePatchesInScope(scope, patchListener);\n return processResult(result, scope);\n } else if (!base || typeof base !== \"object\") {\n result = recipe(base);\n if (result === void 0)\n result = base;\n if (result === NOTHING)\n result = void 0;\n if (this.autoFreeze_)\n freeze(result, true);\n if (patchListener) {\n const p = [];\n const ip = [];\n getPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip);\n patchListener(p, ip);\n }\n return result;\n } else\n die(1, base);\n };\n this.produceWithPatches = (base, recipe) => {\n if (typeof base === \"function\") {\n return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n }\n let patches, inversePatches;\n const result = this.produce(base, recipe, (p, ip) => {\n patches = p;\n inversePatches = ip;\n });\n return [result, patches, inversePatches];\n };\n if (typeof config?.autoFreeze === \"boolean\")\n this.setAutoFreeze(config.autoFreeze);\n if (typeof config?.useStrictShallowCopy === \"boolean\")\n this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n }\n createDraft(base) {\n if (!isDraftable(base))\n die(8);\n if (isDraft(base))\n base = current(base);\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n proxy[DRAFT_STATE].isManual_ = true;\n leaveScope(scope);\n return proxy;\n }\n finishDraft(draft, patchListener) {\n const state = draft && draft[DRAFT_STATE];\n if (!state || !state.isManual_)\n die(9);\n const { scope_: scope } = state;\n usePatchesInScope(scope, patchListener);\n return processResult(void 0, scope);\n }\n /**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is enabled.\n */\n setAutoFreeze(value) {\n this.autoFreeze_ = value;\n }\n /**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\n setUseStrictShallowCopy(value) {\n this.useStrictShallowCopy_ = value;\n }\n applyPatches(base, patches) {\n let i;\n for (i = patches.length - 1; i >= 0; i--) {\n const patch = patches[i];\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const applyPatchesImpl = getPlugin(\"Patches\").applyPatches_;\n if (isDraft(base)) {\n return applyPatchesImpl(base, patches);\n }\n return this.produce(\n base,\n (draft) => applyPatchesImpl(draft, patches)\n );\n }\n};\nfunction createProxy(value, parent) {\n const draft = isMap(value) ? getPlugin(\"MapSet\").proxyMap_(value, parent) : isSet(value) ? getPlugin(\"MapSet\").proxySet_(value, parent) : createProxyProxy(value, parent);\n const scope = parent ? parent.scope_ : getCurrentScope();\n scope.drafts_.push(draft);\n return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n if (!isDraft(value))\n die(10, value);\n return currentImpl(value);\n}\nfunction currentImpl(value) {\n if (!isDraftable(value) || isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n let copy;\n if (state) {\n if (!state.modified_)\n return state.base_;\n state.finalized_ = true;\n copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n } else {\n copy = shallowCopy(value, true);\n }\n each(copy, (key, childValue) => {\n set(copy, key, currentImpl(childValue));\n });\n if (state) {\n state.finalized_ = false;\n }\n return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n const errorOffset = 16;\n if (process.env.NODE_ENV !== \"production\") {\n errors.push(\n 'Sets cannot have \"replace\" patches.',\n function(op) {\n return \"Unsupported patch operation: \" + op;\n },\n function(path) {\n return \"Cannot apply patch, path doesn't resolve: \" + path;\n },\n \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n );\n }\n const REPLACE = \"replace\";\n const ADD = \"add\";\n const REMOVE = \"remove\";\n function generatePatches_(state, basePath, patches, inversePatches) {\n switch (state.type_) {\n case 0 /* Object */:\n case 2 /* Map */:\n return generatePatchesFromAssigned(\n state,\n basePath,\n patches,\n inversePatches\n );\n case 1 /* Array */:\n return generateArrayPatches(state, basePath, patches, inversePatches);\n case 3 /* Set */:\n return generateSetPatches(\n state,\n basePath,\n patches,\n inversePatches\n );\n }\n }\n function generateArrayPatches(state, basePath, patches, inversePatches) {\n let { base_, assigned_ } = state;\n let copy_ = state.copy_;\n if (copy_.length < base_.length) {\n ;\n [base_, copy_] = [copy_, base_];\n [patches, inversePatches] = [inversePatches, patches];\n }\n for (let i = 0; i < base_.length; i++) {\n if (assigned_[i] && copy_[i] !== base_[i]) {\n const path = basePath.concat([i]);\n patches.push({\n op: REPLACE,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n inversePatches.push({\n op: REPLACE,\n path,\n value: clonePatchValueIfNeeded(base_[i])\n });\n }\n }\n for (let i = base_.length; i < copy_.length; i++) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n }\n for (let i = copy_.length - 1; base_.length <= i; --i) {\n const path = basePath.concat([i]);\n inversePatches.push({\n op: REMOVE,\n path\n });\n }\n }\n function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n const { base_, copy_ } = state;\n each(state.assigned_, (key, assignedValue) => {\n const origValue = get(base_, key);\n const value = get(copy_, key);\n const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n if (origValue === value && op === REPLACE)\n return;\n const path = basePath.concat(key);\n patches.push(op === REMOVE ? { op, path } : { op, path, value });\n inversePatches.push(\n op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n );\n });\n }\n function generateSetPatches(state, basePath, patches, inversePatches) {\n let { base_, copy_ } = state;\n let i = 0;\n base_.forEach((value) => {\n if (!copy_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: REMOVE,\n path,\n value\n });\n inversePatches.unshift({\n op: ADD,\n path,\n value\n });\n }\n i++;\n });\n i = 0;\n copy_.forEach((value) => {\n if (!base_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n value\n });\n inversePatches.unshift({\n op: REMOVE,\n path,\n value\n });\n }\n i++;\n });\n }\n function generateReplacementPatches_(baseValue, replacement, patches, inversePatches) {\n patches.push({\n op: REPLACE,\n path: [],\n value: replacement === NOTHING ? void 0 : replacement\n });\n inversePatches.push({\n op: REPLACE,\n path: [],\n value: baseValue\n });\n }\n function applyPatches_(draft, patches) {\n patches.forEach((patch) => {\n const { path, op } = patch;\n let base = draft;\n for (let i = 0; i < path.length - 1; i++) {\n const parentType = getArchtype(base);\n let p = path[i];\n if (typeof p !== \"string\" && typeof p !== \"number\") {\n p = \"\" + p;\n }\n if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === \"constructor\"))\n die(errorOffset + 3);\n if (typeof base === \"function\" && p === \"prototype\")\n die(errorOffset + 3);\n base = get(base, p);\n if (typeof base !== \"object\")\n die(errorOffset + 2, path.join(\"/\"));\n }\n const type = getArchtype(base);\n const value = deepClonePatchValue(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case REPLACE:\n switch (type) {\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n die(errorOffset);\n default:\n return base[key] = value;\n }\n case ADD:\n switch (type) {\n case 1 /* Array */:\n return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n return base.add(value);\n default:\n return base[key] = value;\n }\n case REMOVE:\n switch (type) {\n case 1 /* Array */:\n return base.splice(key, 1);\n case 2 /* Map */:\n return base.delete(key);\n case 3 /* Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n die(errorOffset + 1, op);\n }\n });\n return draft;\n }\n function deepClonePatchValue(obj) {\n if (!isDraftable(obj))\n return obj;\n if (Array.isArray(obj))\n return obj.map(deepClonePatchValue);\n if (isMap(obj))\n return new Map(\n Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n );\n if (isSet(obj))\n return new Set(Array.from(obj).map(deepClonePatchValue));\n const cloned = Object.create(getPrototypeOf(obj));\n for (const key in obj)\n cloned[key] = deepClonePatchValue(obj[key]);\n if (has(obj, DRAFTABLE))\n cloned[DRAFTABLE] = obj[DRAFTABLE];\n return cloned;\n }\n function clonePatchValueIfNeeded(obj) {\n if (isDraft(obj)) {\n return deepClonePatchValue(obj);\n } else\n return obj;\n }\n loadPlugin(\"Patches\", {\n applyPatches_,\n generatePatches_,\n generateReplacementPatches_\n });\n}\n\n// src/plugins/mapset.ts\nfunction enableMapSet() {\n class DraftMap extends Map {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 2 /* Map */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n assigned_: void 0,\n base_: target,\n draft_: this,\n isManual_: false,\n revoked_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(key) {\n return latest(this[DRAFT_STATE]).has(key);\n }\n set(key, value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!latest(state).has(key) || latest(state).get(key) !== value) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_.set(key, true);\n state.copy_.set(key, value);\n state.assigned_.set(key, true);\n }\n return this;\n }\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n markChanged(state);\n if (state.base_.has(key)) {\n state.assigned_.set(key, false);\n } else {\n state.assigned_.delete(key);\n }\n state.copy_.delete(key);\n return true;\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_ = /* @__PURE__ */ new Map();\n each(state.base_, (key) => {\n state.assigned_.set(key, false);\n });\n state.copy_.clear();\n }\n }\n forEach(cb, thisArg) {\n const state = this[DRAFT_STATE];\n latest(state).forEach((_value, key, _map) => {\n cb.call(thisArg, this.get(key), key, this);\n });\n }\n get(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n const value = latest(state).get(key);\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value !== state.base_.get(key)) {\n return value;\n }\n const draft = createProxy(value, state);\n prepareMapCopy(state);\n state.copy_.set(key, draft);\n return draft;\n }\n keys() {\n return latest(this[DRAFT_STATE]).keys();\n }\n values() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.values(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value\n };\n }\n };\n }\n entries() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.entries(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value: [r.value, value]\n };\n }\n };\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.entries();\n }\n }\n function proxyMap_(target, parent) {\n return new DraftMap(target, parent);\n }\n function prepareMapCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = new Map(state.base_);\n }\n }\n class DraftSet extends Set {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 3 /* Set */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n base_: target,\n draft_: this,\n drafts_: /* @__PURE__ */ new Map(),\n revoked_: false,\n isManual_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!state.copy_) {\n return state.base_.has(value);\n }\n if (state.copy_.has(value))\n return true;\n if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n return true;\n return false;\n }\n add(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!this.has(value)) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.add(value);\n }\n return this;\n }\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n markChanged(state);\n return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n /* istanbul ignore next */\n false\n ));\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.clear();\n }\n }\n values() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.values();\n }\n entries() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.entries();\n }\n keys() {\n return this.values();\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.values();\n }\n forEach(cb, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n }\n }\n function proxySet_(target, parent) {\n return new DraftSet(target, parent);\n }\n function prepareSetCopy(state) {\n if (!state.copy_) {\n state.copy_ = /* @__PURE__ */ new Set();\n state.base_.forEach((value) => {\n if (isDraftable(value)) {\n const draft = createProxy(value, state);\n state.drafts_.set(value, draft);\n state.copy_.add(draft);\n } else {\n state.copy_.add(value);\n }\n });\n }\n }\n function assertUnrevoked(state) {\n if (state.revoked_)\n die(3, JSON.stringify(latest(state)));\n }\n loadPlugin(\"MapSet\", { proxyMap_, proxySet_ });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = immer.produceWithPatches.bind(\n immer\n);\nvar setAutoFreeze = immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer);\nvar applyPatches = immer.applyPatches.bind(immer);\nvar createDraft = immer.createDraft.bind(immer);\nvar finishDraft = immer.finishDraft.bind(immer);\nfunction castDraft(value) {\n return value;\n}\nfunction castImmutable(value) {\n return value;\n}\nexport {\n Immer2 as Immer,\n applyPatches,\n castDraft,\n castImmutable,\n createDraft,\n current,\n enableMapSet,\n enablePatches,\n finishDraft,\n freeze,\n DRAFTABLE as immerable,\n isDraft,\n isDraftable,\n NOTHING as nothing,\n original,\n produce,\n produceWithPatches,\n setAutoFreeze,\n setUseStrictShallowCopy\n};\n//# sourceMappingURL=immer.mjs.map","import { produce, Draft } from 'immer';\n\nexport function createState<T = any>(\n fn: (draft: Draft<T>, ...args: any[]) => void\n): (state: T, ...args: any[]) => T {\n return (state: T, ...args: any[]): T => {\n return produce(state, (draft) => {\n fn(draft, ...args);\n });\n };\n}\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","NOTHING","for","DRAFTABLE","DRAFT_STATE","die","error","args","Error","getPrototypeOf","isDraft","isDraftable","isPlainObject","Array","isArray","constructor","isMap","isSet","objectCtorString","toString","proto","Ctor","Function","each","iter","getArchtype","Reflect","ownKeys","forEach","entry","index","thing","state","type_","has","set","propOrOldValue","t","add","target","Map","Set","latest","copy_","base_","shallowCopy","base","strict","slice","isPlain","descriptors","getOwnPropertyDescriptors","keys","i","length","desc","writable","configurable","create","assign","freeze","deep","isFrozen","clear","delete","dontMutateFrozenCollections","entries","currentScope","plugins","getPlugin","pluginKey","plugin","getCurrentScope","usePatchesInScope","scope","patchListener","patches_","inversePatches_","patchListener_","revokeScope","leaveScope","drafts_","revokeDraft","parent_","enterScope","immer2","immer_","canAutoFreeze_","unfinalizedDrafts_","draft","revoke_","revoked_","processResult","result","baseDraft","modified_","finalize","maybeFreeze","generateReplacementPatches_","rootScope","path","childValue","finalizeProperty","scope_","finalized_","resultEach","isSet2","generatePatches_","parentState","targetObject","rootPath","targetIsSet","res","assigned_","concat","autoFreeze_","propertyIsEnumerable","objectTraps","source","getDescriptorFromProto","draft_","readPropFromProto","peek","prepareCopy","createProxy","current2","currentState","x","y","markChanged","Number","isNaN","deleteProperty","getOwnPropertyDescriptor","owner","setPrototypeOf","arrayTraps","useStrictShallowCopy_","parent","proxyMap_","proxySet_","isManual_","traps","revoke","proxy","Proxy","revocable","createProxyProxy","push","currentImpl","copy","fn","arguments","apply","immer","config","produce","recipe","defaultBase","self","base2","hasError","p","ip","produceWithPatches","patches","inversePatches","autoFreeze","setAutoFreeze","useStrictShallowCopy","setUseStrictShallowCopy","createDraft","finishDraft","applyPatches","patch","op","applyPatchesImpl","applyPatches_","createState","bind"],"sourceRoot":""}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import app from './app'; // ADD: Global app instance access
|
|
2
|
+
// Type guard functions using the enhanced type system
|
|
3
|
+
function isComponentInstance(obj) {
|
|
4
|
+
return obj && typeof obj === 'object' && typeof obj.mount === 'function';
|
|
5
|
+
}
|
|
6
|
+
function isComponentConstructor(fn) {
|
|
7
|
+
return typeof fn === 'function' &&
|
|
8
|
+
fn.prototype &&
|
|
9
|
+
fn.prototype.constructor === fn &&
|
|
10
|
+
(fn.prototype.mount !== undefined ||
|
|
11
|
+
fn.prototype.state !== undefined ||
|
|
12
|
+
fn.prototype.view !== undefined);
|
|
13
|
+
}
|
|
14
|
+
function isFactoryFunction(fn) {
|
|
15
|
+
return typeof fn === 'function' && !isComponentConstructor(fn);
|
|
16
|
+
}
|
|
17
|
+
// Recursive function resolution with enhanced type checking
|
|
18
|
+
async function resolveComponent(component, maxDepth = 3) {
|
|
19
|
+
let resolved = component;
|
|
20
|
+
let depth = 0;
|
|
21
|
+
while (isFactoryFunction(resolved) && depth < maxDepth) {
|
|
22
|
+
try {
|
|
23
|
+
const result = await resolved();
|
|
24
|
+
if (result === resolved)
|
|
25
|
+
break; // Prevent infinite loops
|
|
26
|
+
resolved = result;
|
|
27
|
+
depth++;
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error(`Error executing component function: ${error}`);
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return resolved;
|
|
35
|
+
}
|
|
36
|
+
export default async (element, components) => {
|
|
37
|
+
for (const [route, component] of Object.entries(components)) {
|
|
38
|
+
if (!component || !route) {
|
|
39
|
+
console.error(`Invalid component configuration: component=${component}, route=${route}`);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
// Check if it's a direct component instance
|
|
43
|
+
if (isComponentInstance(component)) {
|
|
44
|
+
const options = { route };
|
|
45
|
+
component.mount(element, options);
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
// Check if it's a component class constructor
|
|
49
|
+
if (isComponentConstructor(component)) {
|
|
50
|
+
const instance = new component();
|
|
51
|
+
const options = { route };
|
|
52
|
+
instance.mount(element, options);
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
// At this point it must be a function - resolve it
|
|
56
|
+
if (isFactoryFunction(component)) {
|
|
57
|
+
// Resolve the function to see what it returns
|
|
58
|
+
let resolved = await resolveComponent(component);
|
|
59
|
+
// Check if resolved result is a component instance
|
|
60
|
+
if (isComponentInstance(resolved)) {
|
|
61
|
+
const options = { route };
|
|
62
|
+
resolved.mount(element, options);
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
// Check if resolved result is a component constructor
|
|
66
|
+
if (isComponentConstructor(resolved)) {
|
|
67
|
+
const instance = new resolved();
|
|
68
|
+
const options = { route };
|
|
69
|
+
instance.mount(element, options);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
// If resolved result is still a function or anything else, treat original as event handler with render wrapper
|
|
73
|
+
app.on(route, (...args) => {
|
|
74
|
+
const result = component(...args);
|
|
75
|
+
if (typeof element === 'string') {
|
|
76
|
+
element = document.querySelector(element);
|
|
77
|
+
if (!element) {
|
|
78
|
+
console.error(`Element not found: ${element}`);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return app.render(element, result);
|
|
83
|
+
});
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
// If we get here, it's an invalid component type
|
|
87
|
+
console.error(`Invalid component: component must be a class, instance, or function that returns a class/instance`);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=add-components.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-components.js","sourceRoot":"","sources":["../src/add-components.ts"],"names":[],"mappings":"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"}
|
package/esm/app.js
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* - on(): Subscribe to events with options (once, delay, global)
|
|
7
7
|
* - off(): Unsubscribe from events with proper cleanup
|
|
8
8
|
* - run(): Publish events synchronously with error handling
|
|
9
|
-
* - runAsync(): Publish events asynchronously with Promise support
|
|
10
|
-
* - query():
|
|
9
|
+
* - runAsync(): Publish events asynchronously with Promise support, returns handler values
|
|
10
|
+
* - query(): Deprecated alias for runAsync() - use runAsync() instead
|
|
11
11
|
*
|
|
12
12
|
* 2. Default app singleton - Global event bus instance
|
|
13
13
|
* - Created once and reused across the application
|
|
@@ -35,12 +35,12 @@
|
|
|
35
35
|
* // Handle event
|
|
36
36
|
* });
|
|
37
37
|
*
|
|
38
|
-
* // Publish events
|
|
38
|
+
* // Publish events (fire-and-forget)
|
|
39
39
|
* app.run('event-name', ...args);
|
|
40
40
|
*
|
|
41
|
-
* //
|
|
42
|
-
* app.runAsync('
|
|
43
|
-
* // Handle results
|
|
41
|
+
* // Get return values from event handlers
|
|
42
|
+
* app.runAsync('event-name', data).then(results => {
|
|
43
|
+
* // Handle results array
|
|
44
44
|
* });
|
|
45
45
|
* ```
|
|
46
46
|
*/
|
|
@@ -85,7 +85,7 @@ export class App {
|
|
|
85
85
|
return subscribers.length;
|
|
86
86
|
}
|
|
87
87
|
once(name, fn, options = {}) {
|
|
88
|
-
this.on(name, fn,
|
|
88
|
+
this.on(name, fn, { ...options, once: true });
|
|
89
89
|
}
|
|
90
90
|
delay(name, fn, args, options) {
|
|
91
91
|
if (options._t)
|
|
@@ -119,7 +119,11 @@ export class App {
|
|
|
119
119
|
});
|
|
120
120
|
return Promise.all(promises);
|
|
121
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* @deprecated Use runAsync() instead. app.query() will be removed in a future version.
|
|
124
|
+
*/
|
|
122
125
|
query(name, ...args) {
|
|
126
|
+
console.warn('app.query() is deprecated. Use app.runAsync() instead.');
|
|
123
127
|
return this.runAsync(name, ...args);
|
|
124
128
|
}
|
|
125
129
|
getSubscribers(name, events) {
|
|
@@ -132,7 +136,10 @@ export class App {
|
|
|
132
136
|
});
|
|
133
137
|
Object.keys(events).filter(evt => evt.endsWith('*') && name.startsWith(evt.replace('*', '')))
|
|
134
138
|
.sort((a, b) => b.length - a.length)
|
|
135
|
-
.forEach(evt => subscribers.push(...events[evt].map(sub => (
|
|
139
|
+
.forEach(evt => subscribers.push(...events[evt].map(sub => ({
|
|
140
|
+
...sub,
|
|
141
|
+
options: { ...sub.options, event: name }
|
|
142
|
+
}))));
|
|
136
143
|
return subscribers;
|
|
137
144
|
}
|
|
138
145
|
}
|
package/esm/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEjD,MAAM,OAAO,GAAG;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/esm/apprun-code.js
CHANGED
|
@@ -8,6 +8,7 @@ const styles = `
|
|
|
8
8
|
.apprun-play {
|
|
9
9
|
height: 100%;
|
|
10
10
|
display: flex;
|
|
11
|
+
font-size: 1.1rem;
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
.apprun-play .col {
|
|
@@ -19,13 +20,19 @@ const styles = `
|
|
|
19
20
|
height: 100%;
|
|
20
21
|
}
|
|
21
22
|
`;
|
|
23
|
+
const encodeHTML = code => {
|
|
24
|
+
return code.replace(/&/g, '&')
|
|
25
|
+
.replace(/</g, '<')
|
|
26
|
+
.replace(/>/g, '>')
|
|
27
|
+
.replace(/"/g, '"')
|
|
28
|
+
.replace(/'/g, ''');
|
|
29
|
+
};
|
|
22
30
|
const code_html = code => `<!DOCTYPE html>
|
|
23
31
|
<html lang="en">
|
|
24
32
|
<head>
|
|
25
33
|
<meta charset="UTF-8">
|
|
26
34
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
27
35
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
28
|
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/custom-elements/1.1.2/custom-elements.min.js"></script>
|
|
29
36
|
<title>AppRun Playground</title>
|
|
30
37
|
<style>
|
|
31
38
|
body {
|
|
@@ -33,17 +40,47 @@ const code_html = code => `<!DOCTYPE html>
|
|
|
33
40
|
margin: 2em;
|
|
34
41
|
}
|
|
35
42
|
</style>
|
|
36
|
-
<script src="https://
|
|
37
|
-
<script src="
|
|
43
|
+
<script src="https://cdn.jsdelivr.net/npm/typescript@latest"></script>
|
|
44
|
+
<script src="dist/apprun-html.js"></script>
|
|
38
45
|
</head>
|
|
39
46
|
<body>
|
|
40
|
-
<
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
<pre id="code" style="display:none">${encodeHTML(code)}</pre>
|
|
48
|
+
<script type="module">
|
|
49
|
+
const code = document.getElementById('code').innerText;
|
|
50
|
+
const compiled = ts.transpileModule(code, {
|
|
51
|
+
compilerOptions: {
|
|
52
|
+
"jsx": "react",
|
|
53
|
+
"jsxFactory": "app.h",
|
|
54
|
+
"jsxFragmentFactory": "app.Fragment",
|
|
55
|
+
"target": "es2020",
|
|
56
|
+
"module": "esnext",
|
|
57
|
+
},
|
|
58
|
+
reportDiagnostics: true,
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
if (compiled.diagnostics && compiled.diagnostics.length) {
|
|
62
|
+
const pre = document.createElement('pre');
|
|
63
|
+
pre.style = 'font-size: 10px;';
|
|
64
|
+
pre.innerText = compiled.diagnostics.map(d => {
|
|
65
|
+
const start = d.start;
|
|
66
|
+
const end = d.start + d.length;
|
|
67
|
+
const line = code.substring(0, end).split('\\n').length;
|
|
68
|
+
const column = code.substring(0, end).split('\\n').pop().length;
|
|
69
|
+
return \`Line: \${line}, Column: \${column}, \${d.messageText}\`;
|
|
70
|
+
}).join('\\n');
|
|
71
|
+
document.body.appendChild(pre);
|
|
72
|
+
} else {
|
|
73
|
+
window.onerror = function () {
|
|
74
|
+
const pre = document.createElement('pre');
|
|
75
|
+
pre.style = 'font-size: 10px;';
|
|
76
|
+
pre.innerText = compiled.outputText;;
|
|
77
|
+
document.body.appendChild(pre);
|
|
78
|
+
};
|
|
79
|
+
const script = document.createElement('script');
|
|
80
|
+
script.type = 'module';
|
|
81
|
+
script.text = compiled.outputText;
|
|
82
|
+
document.body.appendChild(script);
|
|
83
|
+
}
|
|
47
84
|
</script>
|
|
48
85
|
</body>
|
|
49
86
|
</html>`;
|
|
@@ -76,9 +113,8 @@ class Play extends Component {
|
|
|
76
113
|
code_area = element.previousElementSibling ||
|
|
77
114
|
element.parentElement.previousElementSibling;
|
|
78
115
|
}
|
|
79
|
-
const code =
|
|
80
|
-
|
|
81
|
-
|| (code_area === null || code_area === void 0 ? void 0 : code_area.value) // from textarea
|
|
116
|
+
const code = code_area?.innerText // from div
|
|
117
|
+
|| code_area?.value // from textarea
|
|
82
118
|
|| element.textContent; // from child node
|
|
83
119
|
if (code_area)
|
|
84
120
|
code_area.style.display = 'none';
|
|
@@ -91,11 +127,10 @@ class Play extends Component {
|
|
|
91
127
|
if (!iframe || !textarea)
|
|
92
128
|
return;
|
|
93
129
|
const run_code = code => {
|
|
94
|
-
var _a, _b;
|
|
95
130
|
const iframe_clone = iframe.cloneNode();
|
|
96
|
-
|
|
131
|
+
iframe.parentNode?.replaceChild(iframe_clone, iframe);
|
|
97
132
|
iframe = iframe_clone;
|
|
98
|
-
const doc =
|
|
133
|
+
const doc = iframe.contentWindow?.document;
|
|
99
134
|
if (!doc)
|
|
100
135
|
return;
|
|
101
136
|
doc.open();
|
package/esm/apprun-code.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apprun-code.js","sourceRoot":"","sources":["../src/apprun-code.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAI1C,MAAM,MAAM,GAAG
|
|
1
|
+
{"version":3,"file":"apprun-code.js","sourceRoot":"","sources":["../src/apprun-code.tsx"],"names":[],"mappings":"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"}
|
package/esm/apprun-dev-tools.js
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
var _a;
|
|
2
1
|
import app from './app';
|
|
3
2
|
import toHTML from './vdom-to-html';
|
|
4
3
|
import { _createEventTests, _createStateTests } from './apprun-dev-tools-tests';
|
|
5
|
-
import yaml from 'js-yaml';
|
|
6
|
-
function replacer(key, value) {
|
|
7
|
-
if (typeof value === 'function')
|
|
8
|
-
return value.toString(); // value.toString();
|
|
9
|
-
return ['', null].includes(value) || (typeof value === 'object' && (value.length === 0 || Object.keys(value).length === 0)) ? undefined : value;
|
|
10
|
-
}
|
|
11
4
|
function createProxy(obj) {
|
|
12
5
|
const handler = {
|
|
13
6
|
get(target, property, receiver) {
|
|
@@ -47,7 +40,21 @@ function getVDOM(component) {
|
|
|
47
40
|
}
|
|
48
41
|
return view;
|
|
49
42
|
}
|
|
43
|
+
const componentCache = new Map();
|
|
50
44
|
app['debug'] = true;
|
|
45
|
+
app.on('debug-create-component', component => {
|
|
46
|
+
const element = component.element;
|
|
47
|
+
if (!element) {
|
|
48
|
+
console.warn('Component created without an element:', component);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (componentCache.get(element)) {
|
|
52
|
+
componentCache.get(element).push(component);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
componentCache.set(element, [component]);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
51
58
|
window['_apprun-help'] = ['', () => {
|
|
52
59
|
Object.keys(window).forEach(cmd => {
|
|
53
60
|
if (cmd.startsWith('_apprun-')) {
|
|
@@ -72,12 +79,6 @@ function newWin(html) {
|
|
|
72
79
|
</html>`);
|
|
73
80
|
win.document.close();
|
|
74
81
|
}
|
|
75
|
-
const get_components = () => {
|
|
76
|
-
const o = { components: {} };
|
|
77
|
-
app.run('get-components', o);
|
|
78
|
-
const { components } = o;
|
|
79
|
-
return components;
|
|
80
|
-
};
|
|
81
82
|
const viewElement = element => app.h("div", null,
|
|
82
83
|
element.tagName.toLowerCase(),
|
|
83
84
|
element.id ? '#' + element.id : '',
|
|
@@ -96,7 +97,7 @@ const viewComponents = state => {
|
|
|
96
97
|
return app.h("li", null,
|
|
97
98
|
app.h("div", null, component.constructor.name),
|
|
98
99
|
app.h("div", null,
|
|
99
|
-
app.h("pre", null, htmlEncode(
|
|
100
|
+
app.h("pre", null, htmlEncode(JSON.stringify(component_def, null, 2)))),
|
|
100
101
|
app.h("br", null));
|
|
101
102
|
}));
|
|
102
103
|
return app.h("ul", null, state.map(({ element, comps }) => app.h("li", null,
|
|
@@ -120,7 +121,7 @@ const viewEvents = state => {
|
|
|
120
121
|
const _events = (print) => {
|
|
121
122
|
const global_events = app['_events'];
|
|
122
123
|
const events = {};
|
|
123
|
-
const cache =
|
|
124
|
+
const cache = componentCache;
|
|
124
125
|
const add_component = component => component['_actions'].forEach(event => {
|
|
125
126
|
events[event.name] = events[event.name] || [];
|
|
126
127
|
events[event.name].push(component);
|
|
@@ -130,9 +131,6 @@ const _events = (print) => {
|
|
|
130
131
|
comps.forEach(add_component);
|
|
131
132
|
}
|
|
132
133
|
}
|
|
133
|
-
else {
|
|
134
|
-
Object.keys(cache).forEach(el => cache[el].forEach(add_component));
|
|
135
|
-
}
|
|
136
134
|
const data = [];
|
|
137
135
|
Object.keys(events).forEach(event => {
|
|
138
136
|
data.push({ event, components: events[event], global: global_events[event] ? true : false });
|
|
@@ -152,7 +150,7 @@ const _events = (print) => {
|
|
|
152
150
|
}
|
|
153
151
|
};
|
|
154
152
|
const _components = (print) => {
|
|
155
|
-
const components =
|
|
153
|
+
const components = componentCache;
|
|
156
154
|
const data = [];
|
|
157
155
|
if (components instanceof Map) {
|
|
158
156
|
for (let [key, comps] of components) {
|
|
@@ -160,12 +158,6 @@ const _components = (print) => {
|
|
|
160
158
|
data.push({ element, comps });
|
|
161
159
|
}
|
|
162
160
|
}
|
|
163
|
-
else {
|
|
164
|
-
Object.keys(components).forEach(el => {
|
|
165
|
-
const element = typeof el === 'string' ? document.getElementById(el) || document.querySelector(el) : el;
|
|
166
|
-
data.push({ element, comps: components[el] });
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
161
|
if (print) {
|
|
170
162
|
const vdom = viewComponents(data);
|
|
171
163
|
newWin(toHTML(vdom));
|
|
@@ -174,21 +166,29 @@ const _components = (print) => {
|
|
|
174
166
|
data.forEach(({ element, comps }) => console.log(element, comps));
|
|
175
167
|
}
|
|
176
168
|
};
|
|
177
|
-
let debugging = Number(
|
|
169
|
+
let debugging = Number(window?.localStorage?.getItem('__apprun_debugging__')) || 0;
|
|
178
170
|
app.on('debug', p => {
|
|
179
171
|
if (debugging & 1 && p.event)
|
|
180
172
|
console.log(p);
|
|
181
173
|
if (debugging & 2 && p.vdom)
|
|
182
174
|
console.log(p);
|
|
183
175
|
});
|
|
184
|
-
window['_apprun-components'] = ['components [print]', (p) => {
|
|
185
|
-
|
|
176
|
+
window['_apprun-components'] = ['components [print|clear]', (p) => {
|
|
177
|
+
if (p === 'print') {
|
|
178
|
+
_components(true);
|
|
179
|
+
}
|
|
180
|
+
else if (p === 'clear') {
|
|
181
|
+
componentCache.clear();
|
|
182
|
+
console.log('Component cache cleared');
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
_components(false);
|
|
186
|
+
}
|
|
186
187
|
}];
|
|
187
188
|
window['_apprun-events'] = ['events [print]', (p) => {
|
|
188
189
|
_events(p === 'print');
|
|
189
190
|
}];
|
|
190
191
|
window['_apprun-log'] = ['log [event|view] on|off', (a1, a2) => {
|
|
191
|
-
var _a;
|
|
192
192
|
if (a1 === 'on') {
|
|
193
193
|
debugging = 3;
|
|
194
194
|
}
|
|
@@ -212,7 +212,7 @@ window['_apprun-log'] = ['log [event|view] on|off', (a1, a2) => {
|
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
214
|
console.log(`* log ${a1} ${a2 || ''}`);
|
|
215
|
-
|
|
215
|
+
window?.localStorage?.setItem('__apprun_debugging__', `${debugging}`);
|
|
216
216
|
}];
|
|
217
217
|
window['_apprun-create-event-tests'] = ['create-event-tests',
|
|
218
218
|
() => _createEventTests()
|
|
@@ -228,7 +228,7 @@ window['_apprun'] = (strings) => {
|
|
|
228
228
|
else
|
|
229
229
|
window['_apprun-help'][1]();
|
|
230
230
|
};
|
|
231
|
-
console.info('AppRun DevTools
|
|
231
|
+
console.info('AppRun DevTools 3.36: type "_apprun `help`" to list all available commands.');
|
|
232
232
|
const reduxExt = window['__REDUX_DEVTOOLS_EXTENSION__'];
|
|
233
233
|
if (reduxExt) {
|
|
234
234
|
let devTools_running = false;
|
|
@@ -251,7 +251,7 @@ if (reduxExt) {
|
|
|
251
251
|
}
|
|
252
252
|
else {
|
|
253
253
|
const { component, state } = buf[idx];
|
|
254
|
-
component
|
|
254
|
+
component?.setState(state);
|
|
255
255
|
}
|
|
256
256
|
}
|
|
257
257
|
});
|