@joker.front/core 1.3.83 → 1.3.85

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/README.md CHANGED
@@ -1,48 +1,58 @@
1
- # Joker ![npm](https://img.shields.io/npm/v/%40joker.front%2Fcore)![NPM Downloads](https://img.shields.io/npm/dw/%40joker.front%2Fcore)
1
+ ## Joker
2
2
 
3
- Joker is a framework platform designed to provide support for all development scenarios. Among them, Joker.front is a front-end development framework under the Joker platform. It provides standardized front-end development standards, adopts an object-oriented and component-based programming model to help you develop user interfaces efficiently. Whether it's a simple or complex interface, Joker.front can handle it with ease.
3
+ Joker is a framework platform engineered to support all development scenarios. Within its ecosystem, Joker.front stands as a front-end development framework. It delivers standardized front-end development protocols and employs an object-oriented, component-based programming model to facilitate efficient user interface development. Whether handling simple or complex interfaces, Joker.front operates with seamless proficiency.
4
4
 
5
- ## What is Joker?
5
+ <p align="center"><a href="https://jokers.pub" target="_blank" rel="noopener noreferrer"><img width="100" src="https://static.jokers.pub/joker.png" alt="Vue logo"></a></p>
6
6
 
7
- Joker is a framework platform committed to providing support for all development scenarios. Joker.front, as a part of the Joker platform, is a front-end development framework. It provides standardized front-end development specifications and uses object-oriented and component-based programming methods to assist in efficiently building user interfaces. Whether the interface is simple or complex, Joker.front can handle it smoothly.
7
+ <p align="center">
8
+ <img alt="NPM Version" src="https://img.shields.io/npm/v/%40joker.front%2Fcore">
9
+ <img alt="NPM Downloads" src="https://img.shields.io/npm/d18m/%40joker.front%2Fcore">
10
+ <img alt="NPM License" src="https://img.shields.io/npm/l/%40joker.front%2Fcore">
11
+ </p>
8
12
 
9
- Joker is an all-purpose development platform built on TypeScript. Whether dealing with simple interface development requirements or handling complex user interface tasks, it demonstrates excellent performance and stability. It has the following important features:
13
+ ### What is Joker?
10
14
 
11
- - **Powerful Scalability**: Joker provides a component-based framework. It has considered scalability from the beginning of its design, so it can be easily integrated into existing projects or systems, support the construction of scalable web applications, and can be customized according to project requirements.
12
- - **Rich Component Library**: Joker.front provides a complete set of front-end component libraries, including carefully designed and optimized functional and UI components such as routing and scaffolding, which can help developers quickly build beautiful and high-performance user interfaces.
13
- - **Complete Development Tools**: To further improve development efficiency, Joker also provides a series of supporting development tools, including debugging tools, building tools, etc. These carefully designed tools are aimed at making the development process smoother and helping developers develop, build, test, and update code accurately and quickly.
14
- - **Class API**: Joker uses TypeScript as the script development standard and adopts the standard Class API as the development specification, which is more in line with the requirements of object-oriented development.
15
- - **Responsiveness**: Joker will automatically track the JavaScript state, and can update the DOM in a responsive manner immediately when the state changes, and there is no difference comparison of the virtual DOM.
15
+ Joker is a versatile framework platform built on TypeScript, designed to cater to diverse development needs—from basic interface tasks to complex user interface challenges. It ensures exceptional performance and stability across all use cases. As a key part of this ecosystem, Joker.front serves as a front-end development framework, offering standardized specifications and leveraging object-oriented, component-based programming to streamline efficient UI construction, handling both simple and complex interfaces with ease.
16
16
 
17
- ## Performance
17
+ Key features include:
18
18
 
19
- Joker uses a special rendering logic to achieve the collection of the association relationship between responsive data and the DOM, and allows for point-to-point node changes when the data changes, avoiding the redrawing of the entire virtual node and the comparison process of the binary tree, greatly improving the rendering performance.
19
+ - **Robust Scalability**: Joker provides a component-based framework with scalability as a foundational design principle. It integrates seamlessly into existing projects or systems, supports the construction of scalable web applications, and allows for customization based on project requirements.
20
+ - **Comprehensive Component Library**: Joker.front offers a full suite of front-end components, including meticulously designed and optimized functional and UI elements such as routing and scaffolding. These components enable developers to quickly build visually appealing, high-performance user interfaces.
21
+ - **Complete Development Toolchain**: To enhance development efficiency, Joker includes a range of supporting tools—such as debugging and build tools—designed to streamline the development process, enabling accurate and rapid coding, building, testing, and updating.
22
+ - **Class API**: Joker adopts TypeScript as the standard for script development and employs a standard Class API, aligning with object-oriented development requirements.
23
+ - **Responsiveness**: Joker automatically tracks JavaScript states and updates the DOM reactively in real time when states change.
24
+ - **High Performance**: It achieves point-to-point data synchronization for data and DOM updates, eliminating the need for DOM difference comparison and delivering a high-performance experience with instant update rendering.
25
+ - **Official Visual Development IDE**: Joker comes with its own official visual development IDE, which enables rapid development, allowing developers to build interfaces and implement functions more efficiently through visual operations.
20
26
 
21
- ![](https://gitee.com/joker_pub/joker-front-core/raw/main/readme/render.png)
27
+ ### Performance
22
28
 
23
- ![](https://gitee.com/joker_pub/joker-front-core/raw/main/readme/ast-element.png)
29
+ Joker utilizes specialized rendering logic to map the association between responsive data and the DOM. This enables point-to-point node updates when data changes, bypassing full virtual node redraws and binary tree comparisons—significantly boosting rendering performance.
30
+
31
+ ![](https://front.jokers.pub/base/render.png)
32
+
33
+ ![](https://front.jokers.pub/base/ast-element.png)
24
34
 
25
35
  [Detailed Explanation](https://front.jokers.pub/base/render)
26
36
 
27
- ## How to Use
37
+ ### How to Use
28
38
 
29
- You can use the Joker CLI to create projects, generate application and library code, and perform various continuous development tasks such as testing, packaging, and deployment.
39
+ The Joker CLI facilitates project creation, application and library code generation, and continuous development tasks such as testing, packaging, and deployment.
30
40
 
31
41
  [Help Documentation](https://front.jokers.pub)
32
42
 
33
- To install the Joker CLI, open the terminal/console window and run the following command:
43
+ To install the Joker CLI, open a terminal/console and execute:
34
44
 
35
45
  ```
36
46
  pnpm i -g @joker.front/cli
37
47
  ```
38
48
 
39
- 1. Run the CLI command **joker create** and provide the name my-app as a parameter, as follows:
49
+ 1. Run the CLI command `joker create` with the project name `my-app`:
40
50
 
41
51
  ```
42
52
  joker create my-app
43
53
  ```
44
54
 
45
- 2. In the my-app working directory, install the dependencies.
55
+ 2. Navigate to the `my-app` directory and install dependencies:
46
56
 
47
57
  ```
48
58
  cd my-app
@@ -50,47 +60,45 @@ cd my-app
50
60
  pnpm i
51
61
  ```
52
62
 
53
- The CLI will create a new workspace and a simple welcome application, which you can run at any time.
63
+ The CLI will generate a new workspace and a simple welcome application, ready for immediate use.
54
64
 
55
- ## Running the Application
65
+ ### Running the Application
56
66
 
57
- The Joker CLI includes a server command and a build command. The server command is convenient for you to build and provide application services locally.
67
+ The Joker CLI includes server and build commands. The server command simplifies local application building and service provisioning.
58
68
 
59
- We provide two default commands, `dev` and `build`, representing the development environment and code building respectively.
69
+ Two default commands are provided: `dev` (development environment) and `build` (code building).
60
70
 
61
- 1. Navigate to the workspace folder, such as my-app.
71
+ 1. Navigate to the workspace folder (e.g., `my-app`):
62
72
 
63
73
  ```
64
74
  cd my-app
65
75
  ```
66
76
 
67
- 2. Run the following command:
77
+ 2. Execute the following command:
68
78
 
69
79
  ```
70
80
  npm run dev
71
81
  ```
72
82
 
73
- After running successfully, a simple sample page will be displayed.
83
+ Upon successful execution, a sample page will be displayed.
74
84
 
75
- ## Visual Development Tools
85
+ ### Visual Development Tools
76
86
 
77
- A front-end framework with built-in visual tools: [Low-code Platform](https://lowcode.jokers.pub)
87
+ A front-end framework with built-in visual tools: [Visual Coding IDE](https://jokers.pub)
78
88
 
79
- ![Joker Platform](https://gitee.com/joker_pub/joker-front-core/raw/main/readme/img4.png)
80
- ![Joker Platform](https://gitee.com/joker_pub/joker-front-core/raw/main/readme/img2.png)
81
- ![Joker Platform](https://gitee.com/joker_pub/joker-front-core/raw/main/readme/img1.jpg)
82
- ![Joker Platform](https://gitee.com/joker_pub/joker-front-core/raw/main/readme/img3.jpg)
89
+ ![Joker Visual Coding IDE](https://static.jokers.pub/home/component.png)
90
+ ![Joker Visual Coding IDE](https://static.jokers.pub/home/workflow.png)
91
+ ![Joker Visual Coding IDE](https://static.jokers.pub/home/validate.jpg)
92
+ ![Joker Visual Coding IDE](https://static.jokers.pub/home/ai.png)
83
93
 
84
- ## Documentation
94
+ ### Documentation
85
95
 
86
96
  [Help Documentation](https://front.jokers.pub)
87
97
 
98
+ ### Related Projects
99
+
88
100
  [Official Website](https://front.jokers.pub)
89
101
 
90
102
  [Official UI Library](https://ui.jokers.pub)
91
103
 
92
- [Low-code Platform](https://jokers.pub)
93
-
94
- ## Wechat
95
-
96
- ![Wechat](https://static.jokers.pub/lowcode/wechat-group.jpg)
104
+ [Joker Visual Coding IDE](https://viscode.jokers.pub)
package/dist/bundle.es.js CHANGED
@@ -1 +1 @@
1
- import{EXPRESSHANDLERTAG as e,createFuntionBody as t,AST as n,RENDER_HANDLER as s,createComponent as i,createCommand as o}from"@joker.front/ast";export{AST,EXPRESSHANDLERTAG,RENDER_HANDLER,createCodeFunction,createCommand,createComment,createComponent,createElement,createFuntionBody,createText}from"@joker.front/ast";const r=new Map,a=new Map,h=new Map;let d={recordRender:(e,t)=>{a.set(e,t)},recordComponent:(e,t)=>{h.set(e,t)},record:(e,t)=>{void 0===r.get(e)&&r.set(e,new Set),r.get(e).add(t),t.$on("destroy",(()=>{r.get(e)?.delete(t)}))},reload:(e,t)=>{let n=h.get(e);if(!n)return;n.component=t;let s=r.get(e);if(!s)return;let i=Array.from(s);s.clear(),i.forEach((e=>{if(e.$root){if(!e.$rootVNode?.parent)return window.onbeforeunload=null,void location.reload();{let t=e.$rootVNode.parent;if(!(t instanceof z.Component&&t[z.PARSERKEY]&&t[z.PARSERKEY].canReload))return window.onbeforeunload=null,void location.reload();t[z.PARSERKEY].reload()}}}))},rerender:(e,t)=>{let n=a.get(e);n&&(n.render=t),r.get(e)?.forEach((e=>{e.$render(t)}))}};function c(e){return null!==e&&"object"==typeof e}function l(e,t){Object.getOwnPropertyNames(e).forEach((n=>{t(n,e[n])}))}function u(e){return"[object Object]"===Object.prototype.toString.call(e)}function f(e){if(null===e)return e;if("object"!=typeof e)return e;let t;t=Array.isArray(e)?[]:{};let n=Object.keys(e);for(let s of n){let n=e[s];t[s]="object"==typeof n?f(n):n}return t}function p(e,t,n){return Array.isArray(e)&&Array.isArray(t)?function(e,t,n){if(e.length!==t.length)return!1;for(let s=0;s<e.length;s++)if(n){if(e[s]!==t[s])return!1}else if(!1===m(e[s],t[s],n))return!1;return!0}(e,t,n):m(e,t,n)}function m(e,t,n){if(e===t)return!0;let s=c(e),i=c(t);if(s&&i){if(u(e)&&u(t)){let s=Object.keys(e);if(s.length!==Object.keys(t).length)return!1;if(n){for(let n of s)if(e[n]!==t[n])return!1;return!0}return JSON.stringify(e)===JSON.stringify(t)}return e===t}return!s&&!i&&String(e)===String(t)}function y(e,t){let n=e.indexOf(t);return n>-1&&e.splice(n,1),e}function g(e,t){let n=e.findIndex((e=>t(e)));return n>-1&&e.splice(n,1),e}function v(e){return!e||""===e.trim()}function E(e,t="-"){return(e=e||"").split(/(?=[A-Z])/).map((e=>e.toLowerCase())).join(t)}let b=(...e)=>{},w="warn";const N=["silent","error","warn","info"];function $(){let e=new Date;function t(e,t=2){return e.toString().padStart(t,"0")}return t(e.getHours())+":"+t(e.getMinutes())+":"+t(e.getSeconds())+":"+t(e.getMilliseconds(),3)}function R(e,t,n,s){N.indexOf(e)<=N.indexOf(w)&&(void 0===s?console[e](`${$()} [${t}]:`,n):console[e](`${$()} [${t}]:`,n,s))}let C={info:function(e,t,n){R("info",e,t,n)},warn:function(e,t,n){R("warn",e,t,n)},error:function(e,t,n){R("error",e,t,n)},setLoggerLeve:function(e){w=e}};const x={lt:"<",gt:">",nbsp:" ",amp:"&",quot:'"',"#39":"'"};function A(e){return e.replace(/&(lt|gt|nbsp|amp|quot|#39);/gi,((e,t)=>x[t]||""))}class O{static target;watchers=new Map;depend(e){O.target?.addDep(this,e)}addWatcher(e,t){let n=this.watchers.get(e)||[];n.push(t),this.watchers.set(e,n)}removeWatcher(e,t){const n=this.watchers.get(e);n&&y(n,t)}notify(e){const t=this.watchers.get(e);if(t){g(t,(e=>e.isDestroy));[...t].forEach((e=>{e.isDestroy||e.update()}))}}}const S=Symbol.for("__JOKER_OBJECT_PROXY_DEP_ID__"),P=Symbol.for("__JOKER_OBJECT_PROXY_DATA_KEY__"),T=Symbol.for("__JOKER_OBJECTPROXY_DEPLEVE_ID__");function D(e){try{return null!=e&&c(e)&&e!==window.parent&&e instanceof Window==!1&&e instanceof F==!1&&e instanceof Qe==!1&&e instanceof _e==!1&&(Array.isArray(e)||u(e)||e instanceof Set||e instanceof Map)&&!Object.isFrozen(e)&&!(e instanceof Element)&&!(G in e)&&!(I in e)&&!(qe in e)}catch{return!1}}function _(e){if(k(e))return e;if(e&&e.hasOwnProperty(P)){let t=Reflect.get(e,P);if(t)return t}let t=new O,n=!0,s=new Proxy(e,{get(e,n,s){if(e instanceof Set||e instanceof Map){if("add"===n){let s=Reflect.get(e,n);return n=>{D(n)&&(n=K(n));let i=s.call(e,n);return j(t,"size"),j(t,T),i}}if("set"===n){let s=Reflect.get(e,n);return(n,i)=>{D(i)&&(i=K(i));let o=s.call(e,n,i);return j(t,"size"),j(t,T),o}}if("delete"===n||"clear"===n){let s=Reflect.get(e,n);return i=>{let o=s.call(e,i);return("clear"===n||o)&&(j(t,"size"),j(t,T)),o}}let s=Reflect.get(e,n);if("function"==typeof s)return s.bind(e)}if(n===P)return;if(n===S)return t;if(n===T)return;let i=Reflect.get(e,n);return n===Symbol.toStringTag||!1===function(e,t){return t in e}(e,n)&&"length"!==n&&"size"!==n||(t.depend(n),D(i)&&k(i)?.depend(T)),i},set(e,s,i){if(n)return Reflect.set(e,s,i),!0;D(i)&&(i=K(i));let o=!1===function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}(e,s),r=Reflect.get(e,s)!==i;return Reflect.set(e,s,i),(r||"length"===s&&Array.isArray(e))&&j(t,s),Array.isArray(e)?"length"===s&&j(t,T):o&&j(t,T),!0},deleteProperty:(e,n)=>(Reflect.deleteProperty(e,n),!1===Array.isArray(e)&&j(t,T),!0)});var i,o,r,a;i=e,o=P,r=s,a=!1,Object.defineProperty(i,o,{value:r,enumerable:a,writable:!0,configurable:!0});for(let t in e){let n=e[t];D(n)&&!k(n)&&(s[t]=_(e[t]))}return n=!1,s}function k(e){if(c(e))return Reflect.get(e,S)}function K(e,t=!1){if(!1===D(e))throw new Error("The provided data is not of the correct type. It must be an array or an object.");return _(t?f(e):e)}function W(e,t,n){let s=n;D(n)&&(s=K(n));let i=new O;Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:()=>(i.depend(t),k(s)?.depend(T),s),set:e=>{e!==s&&(D(e)&&(e=K(e)),s=e,j(i,t))}})}const I=Symbol.for("JOKER_SHALLOW_OBSERVER");class V{data;[I]=!0;dep=new O;constructor(e){this.data=e}isChanged=!1;get value(){return this.dep.depend(T),this.data}set value(e){!1===Object.is(e,this.data)&&(this.isChanged=!0,this.data=e,j(this.dep,T))}}let L=!1,M=new Map;function j(e,t){if(!1===L)e.notify(t);else{let n=M.get(e);void 0===n&&(n=[],M.set(e,n)),n.includes(t)||n.push(t)}}function Y(e){L=!0;try{e()}catch(e){return L=!1,M.clear(),void C.error("Data Hijacking","Encountered a blocking error while collecting changes for data hijacking composite responses. No action will be taken. Please investigate.",e)}L=!1,function(e){const t=[],n=[];e.forEach(((e,n)=>{e.forEach((e=>{t.push(...n.watchers.get(e)||[])}))})),t.forEach((e=>{n.includes(e)||(!e.isDestroy&&e.update(),n.push(e))}))}(M),M.clear()}function B(e){return void 0!==k(e)}const H="Data Observation",J=Symbol.for("JOKER_BREAK_WATCH_UPDATE");class F{ob;updateCallBack;forceCallBack;getter;value;isDestroy=!1;updating=!1;runRelations=new Map;relations=new Map;constructor(e,t,n,s){if(this.ob=e,this.updateCallBack=t,this.forceCallBack=s,void 0===e)throw new Error("Cannot observe changes on undefined");if(void 0===n)this.getter=e=>e;else if("function"==typeof n)this.getter=n;else{const e=function(e){if(/[^\w.$]/.test(e))return;const t=e.split(".");return function(e){let n=e;return t.forEach((e=>{n&&(n=n[e])})),n}}(n);if(void 0===e)throw new Error(`${n} failed to parse. Unable to interpret the expression. Please check the expOrFn parameter or use the function mode instead.`);this.getter=e}void 0===this.getter&&C.error(H,"Failed to create getter",arguments),this.value=this.getValue()}getValue(){if(void 0===this.getter)return;O.target=this;const e="function"==typeof this.ob?this.ob():this.ob;let t;try{t=this.getter.call(e,e)}catch(e){throw C.error(H,"Failed to retrieve value. Executed method: "+this.getter.toString()),e}return O.target=void 0,this.clearnDeps(),t}addDep(e,t){let n=this.runRelations.get(e);if(void 0===n||!n.includes(t)){n=n||[],n.push(t),this.runRelations.set(e,n);const s=this.relations.get(e);void 0!==s&&s.includes(t)||e.addWatcher(t,this)}}update(){if(this.updating)return;const e=this.getValue();if(e===J)return;const t=this.value;if(this.forceCallBack||e!==t||c(e)){this.value=e;const n=e!==t&&p(e,t,!0);if(n&&!this.forceCallBack)return;this.updating=!0;try{this.updateCallBack(e,t,n,this)}catch(e){throw e}finally{this.updating=!1}}}destroy(){this.relations.forEach(((e,t)=>{for(const n of e)t.removeWatcher(n,this)})),this.isDestroy=!0,this.relations.clear(),this.runRelations.clear(),this.ob=void 0,this.value=void 0,this.getter=void 0}clearnDeps(){this.relations.forEach(((e,t)=>{const n=this.runRelations.get(t);for(const s of e)n&&n.includes(s)||t.removeWatcher(s,this)})),this.relations.clear(),this.relations=this.runRelations,this.runRelations=new Map}}var q;!function(e){let t=new Map;e.bind=function(e){return{to:n=>{if(t.has(e))throw new Error(`TagId:${e.toString()} already has an implementation bound. Do not bind again.`);t.set(e,n)}}},e.get=function(e,...n){const s=t.get(e);if(s)return new s(...n)}}(q||(q={}));const G=Symbol.for("JOKER_VNODE_TAG");var z;!function(e){e.PARSERKEY=Symbol.for("JOKER_PARSER_KEY");class t{parent;[G]=!0;static;output;[e.PARSERKEY];childrens;ref;sleep=!1;constructor(e){this.parent=e}get prev(){if(this.parent)return this.parent.childrens?.[this.parent.childrens?.indexOf(this)-1]}get next(){if(this.parent)return this.parent.childrens?.[this.parent.childrens?.indexOf(this)+1]}closest(e,t){if(!0===e(this))return this;let n=this.parent;for(;n;){if(!0===e(n))return n;if(!0===t?.(n))break;n=n.parent}}find(e,t,n,s,i){let o=i??[];if(s??=this.childrens,s)for(let i of s){(!0!==e(i)||(o.push(i),n))&&(!0!==t?.(i)&&i.childrens&&this.find(e,t,n,i.childrens,o))}return o}contains(e,t){if(t??=this.childrens,t)for(let n of t){if(!0===e(n))return!0;if(n.childrens&&n.childrens.length&&this.contains(e,n.childrens))return!0}return!1}first(e,t){if(t??=this.childrens,t)for(let n of t){if(!0===e(n))return n;if(n.childrens&&n.childrens.length){let t=this.first(e,n.childrens);if(t)return t}}}}e.Node=t;e.Root=class extends t{childrens=[];component;constructor(){super()}};e.Text=class extends t{text;static=!0;constructor(e,t){super(t),this.text=e}};e.Html=class extends t{html;notShadow;static=!0;scopedId;constructor(e,t,n){super(t),this.html=e,this.notShadow=n}};e.Comment=class extends t{text;static=!0;constructor(e,t){super(t),this.text=e}};e.Element=class extends t{tagName;static=!0;attributes={};childrens=[];events=[];_assistEventCache;constructor(e,t){super(t),this.tagName=e}};e.Component=class extends t{name;component;events=[];propValues={};keepalive;get firstElement(){if(this.childrens){let t=n=>{for(let s of n){if(s instanceof e.Element)return s;if(s.childrens){let e=t(s.childrens);if(e)return e}}};return t(this.childrens)}}get rootElements(){if(this.childrens){let t=[],n=s=>{for(let i of s)i instanceof e.Element||i instanceof e.Html?t.push(i):i.childrens&&n(i.childrens)};return n(this.childrens),t}return[]}};e.Condition=class extends t{cmdName;result=!1;childrens=[];isShow=!1;constructor(e,t){super(t),this.cmdName=e}};e.List=class extends t{childrens=[]};e.ListItem=class extends t{ob;childrens=[];constructor(e,t){super(t),this.ob=e}};e.RenderSection=class extends t{id="unknown";params=[];section;childrens=[];ob;constructor(e,t){super(t),"string"==typeof e?this.id=e:this.section=e}}}(z||(z={}));const Q="DOM Rendering",U=["script","style","textarea","pre"];let X=0;const Z=["svg","defs","use","rect","circle","ellipse","line","polyline","polygon","path","text","g"];var ee;function te(e,t,n){return`${e}-${t}-${n}`}function ne(e,t,n,s){e._assistEventCache??=[],e._assistEventCache.push([t,n]),document.body.addEventListener(t,n,s)}function se(e,t,n){e._assistEventCache&&t&&n?(g(e._assistEventCache,(e=>e[0]===t&&e[1]===n)),document.body.removeEventListener(t,n)):(e._assistEventCache?.forEach((e=>{document.body.removeEventListener(e[0],e[1])})),e._assistEventCache&&(e._assistEventCache.length=0),e._assistEventCache=void 0)}!function(e){e.IRENDERIOCTAGID=Symbol.for("JOKER_IRENDERIOC_TAGID"),e.ROOT_CONTAINER="";e.DomRender=class{elements;constructor(){this.elements=document.createDocumentFragment()}mount(e){if(e instanceof Element)e.appendChild(this.elements);else if(e instanceof z.Component)if(e.parent)if(e.output){const t=e.output,n=he(e)||t.parentNode;n&&n.insertBefore(this.elements,t)}else C.error(Q,"Component mount found no DOM target node",e);else C.error(Q,"Mounting child component with no parent",e);else C.error(Q,"Mount only supports Element or VNode.Node",e)}appendNode(e,t){if(this.renderNode(e),e.output){const n=e.output instanceof HTMLCollection||e.output instanceof NodeList||Array.isArray(e.output)?Array.from(e.output):[e.output];for(const s of n)this.appendNodeChildren(e,s,e.parent,t)}else C.error(Q,"No output found for node, cannot mount",e)}updateNode(e,t){if(e instanceof z.Element)for(const t in e.attributes){const n=e.attributes[t];this.setAttribute(e.output,t,n)}else e instanceof z.Text?e.parent&&e.parent instanceof z.Element&&U.includes(e.parent.tagName)?(this.removeNode(e),this.appendNode(e)):e.output.textContent=A(e.text||""):e instanceof z.Html?e.notShadow?(e.output.innerHTML=e.html,e.scopedId&&fe(e.output,e.scopedId)):e.output.root.innerHTML=e.html:C.error(Q,`Node does not support ${t} update`,e)}removeNode(e,t){const n=e.output instanceof HTMLCollection||e.output instanceof NodeList||Array.isArray(e.output)?Array.from(e.output):[e.output];n?.forEach((e=>e?.remove())),t||(e instanceof z.Element&&se(e),e.output=void 0)}destroy(){this.elements=void 0}elementToEnter(e,t,n,s){e.output&&this.transitionFrame(e,t,"enter",n,s)}elementToLeave(e,t,n,s){e.output&&this.transitionFrame(e,t,"leave",n,s)}triggerEvent(e,t,n){const s=[];for(const i of e.events){const[o,r]=i;if(o===t){const t=r.modifiers?.includes("self"),a=r.modifiers?.includes("outside");if(t||a){C.warn(Q,"Event modifiers 'self' and 'outside' not supported in components",e);continue}const h=n.event;if((h instanceof KeyboardEvent&&["keydown","keypress","keyup"].includes(o)||h instanceof MouseEvent&&["click","dbclick","mouseup","mousedown"].includes(o))&&!1===oe(h,r.modifiers))continue;if(r.callBack(n),r.modifiers?.includes("prevent")&&n.preventDefault(),r.modifiers?.includes("once")&&s.push(i),r.modifiers?.includes("stop"))return n.stopPropagation(),!1}}s.length&&s.forEach((t=>y(e.events,t)))}transitionFrame(e,t,n,s,i){re(e,te(t,n,"from")),s||="transition";const o=e.output.__TRANSITION_EVNETID__=X++;requestAnimationFrame((()=>{requestAnimationFrame((()=>{if(!e.output)return;re(e,te(t,n,"active")),ae(e,te(t,n,"from")),re(e,te(t,n,"to"));const r=function(e,t){const n=window.getComputedStyle(e),s=e=>(n[e]||"").split(", ");if("transition"===t){const e=s("transitionDelay"),t=s("transitionDuration"),n=de(e,t);if(n>0)return{timeout:n,count:t.length}}else if("animation"===t){const e=s("animationDelay"),t=s("animationDuration"),n=de(e,t);if(n>0)return{timeout:n,count:t.length}}}(e.output,s);if(!r)return void i?.();let a=0;const h=()=>{ae(e,te(t,n,"to")),ae(e,te(t,n,"active")),e.output&&(e.output.removeEventListener(`${s}end`,d),o===e.output.__TRANSITION_EVNETID__&&i?.())},d=t=>{t.target===e.output&&++a>=r.count&&h()};setTimeout((()=>{a<r.count&&h()}),r.timeout+1),e.output?.addEventListener(`${s}end`,d)}))}))}renderNode(e){if(!e.output)if(e instanceof z.Text)e.parent&&e.parent instanceof z.Element&&U.includes(e.parent.tagName)?e.output=this.parserHtml(e.text):e.output=document.createTextNode(A(e.text||""));else if(e instanceof z.Html)if(e.notShadow){const t=document.createElement("joker-html-container");t.JOKER_NODE=e,t.innerHTML=e.html,e.scopedId&&(t.setAttribute("data-scoped-"+e.scopedId,""),fe(t,e.scopedId)),e.output=t}else{const t=document.createElement("joker-html-shadow");t.JOKER_NODE=e,t.style.lineHeight="1",t.root.innerHTML=e.html,e.output=t}else if(e instanceof z.Element){let t;const n=e.tagName.toLowerCase();"svg"===n||Z.includes(n)||e.parent?.inSvg?(e.inSvg=!0,t=document.createElementNS("http://www.w3.org/2000/svg",e.tagName)):t=document.createElement(e.tagName);for(const n in e.attributes)this.setAttribute(t,n,e.attributes[n]);t.JOKER_NODE=e,e.output=t,e.events.some((e=>"click"===e[0]&&e[1].modifiers?.includes("outside")))?setTimeout((()=>{this.initElementEvents(t,e)})):this.initElementEvents(t,e)}else e instanceof z.Comment?e.output=document.createComment(e.text):e.output=document.createTextNode("")}initElementEvents(e,t){for(const[n,s]of t.events){const i=s.modifiers?.includes("self");let o=s.modifiers?.includes("outside");i&&o&&(C.warn(Q,"Event modifiers 'self' and 'outside' cannot coexist, using 'self'",t),o=!1);const r=a=>{if(!(t.sleep||i&&a.target!==e)){if(o){if(a.target===e||e.contains(a.target))return;if(!1===document.contains(a.target))return;if(t.contains((e=>(e.output instanceof HTMLCollection||e.output instanceof NodeList||Array.isArray(e.output)?Array.from(e.output):[e.output]).includes(a.target))))return!0}(a instanceof KeyboardEvent&&["keydown","keypress","keyup"].includes(n)||a instanceof MouseEvent&&["click","dbclick","mouseup","mousedown"].includes(n))&&!1===oe(a,s.modifiers)||(s.callBack({eventName:n,event:a,target:t,preventDefault:()=>a.preventDefault(),stopPropagation:()=>a.stopPropagation(),data:void 0}),s.modifiers?.includes("prevent")&&a.preventDefault(),s.modifiers?.includes("stop")&&a.stopPropagation(),s.modifiers?.includes("once")&&(o?se(t,n,r):e.removeEventListener(n,r)))}};let a;s.modifiers?.includes("passive")&&(a={passive:!0}),o?ne(t,n,r,a):e.addEventListener(n,r,a)}}parserHtml(e){const t=document.createElement("div");return t.innerHTML=e,t.childNodes}isCommandGroup(e){return e instanceof z.Component||e instanceof z.Condition||e instanceof z.List||e instanceof z.ListItem||e instanceof z.RenderSection}appendNodeChildren(e,t,n,s){let i=he(e);if(i)i.appendChild(t);else if(void 0===n)this.elements?.appendChild(t);else if(n)if(n instanceof z.Root){const e=n.parent;if(e&&e instanceof z.Component&&e.output){const n=e.output,s=n?.parentNode;if(s)return void s.insertBefore(t,n)}this.elements?.appendChild(t)}else if(n instanceof z.Element){const e=n.output;if(void 0===e)return;e.appendChild(t)}else if(this.isCommandGroup(n)){const i=n.output?.parentNode;if(void 0!==s&&n.childrens?.length&&i){const o=s-1;if(o<0){const n=le(e);return void(n&&i.contains(n.output)?n.output.after(t):i.insertBefore(t,i.firstChild))}{const e=n.childrens[o];if(e){const n=e.output;if(n)return void n.after(t)}}}i&&i.insertBefore(t,n.output)}else C.error(Q,"Node does not support nested children",{node:e,parent:n})}setAttribute(e,t,n){if(e)if("boolean"!=typeof n){if("class"===t){if(Array.isArray(n)){const e=[];for(const t of n)if(c(t))for(const n in t)t[n]&&e.push(n);else t&&e.push(t);n=e.join(" ")}else if(c(n)){for(const t in n){const s=t.trim();s&&(n[t]?e.classList.add(s):e.classList.remove(s))}return}}else if("style"===t&&c(n)){e.removeAttribute("style");for(const t in n){let s=!1;void 0!==n[t]&&!1!==n[t]||(s=!0);const i=String(n[t]);v(i)&&(s=!0),s||(e.style[t]=i)}return}n=(n??"").toString().trim(),"class"===t&&(n=n.split(/\s/).filter((e=>e.trim())).join(" ")),"value"===t&&"value"in e?e.value=n:"xlink:href"===t?e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",n):e.setAttribute(t,n)}else n?e.setAttribute(t,""):e.removeAttribute(t)}}}(ee||(ee={}));const ie={enter:"enter",backspace:"delete",tab:"tab",arrowup:"up",arrowdown:"down",arrowleft:"left",arrowright:"right",escape:"esc"," ":"space"};function oe(e,t){if(e instanceof KeyboardEvent){if(void 0===e.key)return!1;for(const n in ie)if(t?.includes(ie[n])&&e.key.toLowerCase()!==n)return!1}else{if(t?.includes("left")&&0!==e.button)return!1;if(t?.includes("right")&&2!==e.button)return!1;if(t?.includes("middle")&&1!==e.button)return!1}return(!t?.includes("ctrl")||!1!==e.ctrlKey)&&((!t?.includes("alt")||!1!==e.altKey)&&(!t?.includes("shift")||!1!==e.shiftKey))}function re(e,t){e.output&&e.output.classList.add(t)}function ae(e,t){e.output&&e.output.classList.remove(t)}function he(e){if(e instanceof z.Element||e instanceof z.Component){let t=e instanceof z.Component?e.propValues["append-to"]:e.attributes["append-to"];if(t){if(t instanceof z.Element)return t.output;if("string"==typeof t){ee.ROOT_CONTAINER&&(t="body"===t?ee.ROOT_CONTAINER:`${ee.ROOT_CONTAINER} ${t}`);const e=document.querySelector(t);if(e)return e}C.warn(Q,"Unsupported appendTo type",{appendTo:t,node:e})}}}function de(e,t){for(;e.length<t.length;)e.concat(e);return Math.max(...t.map(((t,n)=>ce(t)+ce(e[n]))))}function ce(e){return"auto"===e?0:1e3*Number(e.slice(0,-1).replace(",","."))}function le(e,t){let n=e.prev;for(;n;){if(n instanceof z.ListItem==!1)return n;n=n.prev}if(!t){let t=e.parent;for(;t;){if(t instanceof z.Element)return;const e=le(t,!0);if(e)return e;t=t.parent}}}class ue extends HTMLElement{root;constructor(){super(),this.root=this.attachShadow({mode:"open"})}}function fe(e,t){const n=e.childNodes;for(let e=0;e<n.length;e++){const s=n[e];if(1===s.nodeType){const e=s;e.setAttribute("data-scoped-"+t,""),fe(e,t)}}}!customElements.get("joker-html-shadow")&&customElements.define("joker-html-shadow",ue);const pe={};function me(e){for(const t in e)pe[t]=e[t]}const ye="Global",ge="Render Core";function ve(t,n){try{return new Function(e,ye,`return ${t};`)}catch(e){throw new Error(`An unknown error occurred while creating the expression execution method. \nmessage: ${e.message} \n${n?.()||t}`)}}class Ee{ast;ob;parent;ext;ref="";watchers=[];node;isDestroy=!1;constructor(e,t,n,s){this.ast=e,this.ob=t,this.parent=n,this.ext=s}init(e){this.parser(e),this.afterParser()}beforeDestroy(e){}destroy(e){if(this.isDestroy=!0,this.clearWatchers(),this.parent.childrens&&this.node){(this.node instanceof z.Element||this.node instanceof z.Component)&&this.ext.removeRef(this.node);let t=()=>{this.parent&&this.node&&(this.beforeDestroy(e),this.destroyChildrens(e),this.node&&(this.ext.render?.removeNode(this.node),this.parent.childrens&&y(this.parent.childrens,this.node),this.notifyNodeWatcher("remove"),this.destroyOtherData()))};if(this.ext.nodeTransition(this.node,"leave",void 0,(()=>{t()})))return y(this.parent.childrens,this.node),void this.destroyChildrensWatcher(this.node);t()}else this.destroyOtherData()}destroyWathcers(){this.isDestroy=!0,this.clearWatchers(),this.destroyChildrensWatcher(this.node)}destroyOtherData(){this.node&&(this.node[z.PARSERKEY]=void 0),this.node=void 0,this.parent=void 0}destroyChildrens(e){for(;this.node?.childrens?.length;){let t=this.node.childrens[0];t[z.PARSERKEY]?t[z.PARSERKEY].destroy(e):y(this.node.childrens,t)}}destroyChildrensWatcher(e){if(e?.childrens?.length)for(let t of e?.childrens)t[z.PARSERKEY]&&(t[z.PARSERKEY].clearWatchers(),this.destroyChildrensWatcher(t))}appendNode(e){this.parent?.childrens&&this.node&&!this.isDestroy&&(this.node[z.PARSERKEY]=this,this.node instanceof z.Element&&this.ob[Fe]?this.node.attributes["data-scoped-"+this.ob[Fe]]=void 0:this.node instanceof z.Html&&this.ob[Fe]&&(this.node.scopedId=this.ob[Fe]),this.ext.render?.appendNode(this.node,e),void 0===e?this.parent.childrens.push(this.node):this.parent.childrens.splice(e,0,this.node),this.notifyNodeWatcher("append"))}afterParser(){this.ext.nodeTransition(this.node,"enter")}notifyNodeWatcher(e,t){this.ext.notifyNodeWatcher(this.ref,this.node,e,t)}runExpress(e,t,n){try{return ve(e,n).call(t,t,pe)}catch(s){C.error(ge,`Expression error:${s.message}\n`+(n?.()||e),{ob:t}),console.error(s)}}runExpressWithWatcher(e,t,n,s,i){if(this.isDestroy)return;let o="string"==typeof e?ve(e,i):e,r=new F((()=>{if(this.isDestroy||t[He])return J;try{return o.call(t,t,pe)}catch(n){return C.error(ge,`Expression error:${n.message}\n${i?.()||e}`,{ob:t,express:e,node:this.node}),console.error(n),J}}),n,void 0,s);return this.addWatch(r),r.value===J?void 0:r.value}addWatch(e){!1===this.watchers.includes(e)&&this.watchers.push(e)}clearWatchers(){this.watchers.forEach((e=>{e.destroy()})),this.watchers.length=0}}class be extends Ee{parser(){this.node=new z.Text(this.ast.text,this.parent),this.appendNode()}}class we extends Ee{parser(){this.node=new z.Comment(this.ast.text,this.parent),this.appendNode()}}class Ne extends Ee{parser(){if(this.node=new z.Condition(this.ast.kind,this.parent),"else"!==this.ast.kind){v(this.ast.condition)&&C.error("Conditional Command",`The current conditional command ${this.ast.kind} has no judgment condition, please check`);let e=this.runExpressWithWatcher(this.ast.condition,this.ob,(e=>{let t=!!e;if(this.node?.result!==t){if(this.node.result=t,!1===t&&this.node?.isShow)this.destroyChildrens(!0);else if(t&&!this.node?.isShow){let e=this.getElseNode();if(e&&e.isShow&&e.childrens?.length){let t=e[z.PARSERKEY];t&&t instanceof Ne&&t.renderConditionChildren()}}this.reloadAllCondition()}}),!1,(()=>this.ast._code));this.node.result=!!e}this.appendNode(),this.renderConditionChildren()}renderId;getElseNode(){let e=this.node?.next;for(;e&&e instanceof z.Condition&&"if"!==e.cmdName;){if("else"===e.cmdName)return e;e=e.next}}renderConditionChildren(){let e=!1;return this.getPrevIfResult()?e=!1:"else"===this.ast.kind?e=!0:(this.node.result=!!this.runExpress(this.ast.condition,this.ob,(()=>{this.ast._code})),this.node.result&&(e=!0)),e!==this.node.isShow&&(this.node.isShow=e,this.destroyChildrens(!0),e&&this.ast.childrens&&this.ext.parserNodes(this.ast.childrens,this.node,this.ob),!0)}getPrevIfResult(){if("if"===this.ast.kind)return!1;let e=this.node?.prev;for(;e&&e instanceof z.Condition;){if(e.result)return!0;if("if"===e.cmdName)break;e=e.prev}return!1}reloadAllCondition(){if(this.renderConditionChildren()){let e=this.node?.next;for(;e&&e instanceof z.Condition&&"if"!==e.cmdName;){let t=e[z.PARSERKEY];t&&t instanceof Ne&&t.renderConditionChildren(),e=e.next}}let e=this.node?.next;for(this.node?.result||this.destroyChildrens(!0);e&&e instanceof z.Condition&&"if"!==e.cmdName;){let t=e[z.PARSERKEY];t&&t instanceof Ne&&t.renderConditionChildren(),e=e.next}}}class $e extends Ee{parser(){this.node=new z.List(this.parent),this.appendNode(),this.renderChildrens()}renderChildrens(){switch(this.ast.keyType){case"condition":this.renderConditionChildrens();break;case"in":case"of":this.renderInOrOfChildrens()}}renderConditionChildrens(){let t=this.ast.param,n=Object.create(this.ob),s=!!this.runExpressWithWatcher(function(t,n,s){try{return new Function(e,`${e}.${t}=${n}; return ${s};`)}catch{throw new Error(`Dependency collection for the For loop command expression execution encountered an unknown error. Details: letKey: ${t}, keyVal: ${n}, condition: ${s}`)}}(t.letKey,t.defaultKeyVal,t.condition),n,(()=>{this.clearWatchers(),this.renderChildrens()}),!0,(()=>this.ast._code)),i=0;for(;s;){let e=Object.create(this.ob);W(e,t.letKey,n[t.letKey]);let o=i++;this.renderItem(e,o),this.runExpressWithWatcher((()=>n[t.letKey]),n,(async(n,s,i,r)=>{await Promise.resolve(),r.isDestroy||(e[t.letKey]=n,i||this.updateListItemOb(e,o))}),!0,(()=>this.ast._code)),this.runExpress(t.step,n,(()=>{this.ast._code})),s=!!this.runExpress(t.condition,n,(()=>this.ast._code))}this.destroyOldChildrens(i)}renderInOrOfChildrens(){let e=this.ast.param,t=this.runExpressWithWatcher(e.dataKey,this.ob,(()=>{this.clearWatchers(),this.renderChildrens()}),!1,(()=>this.ast._code)),n=0;if(t&&(Array.isArray(t)||u(t)))for(let s in t){let i=Object.create(this.ob),o=Array.isArray(t)?Number(s):s;e.indexKey&&W(i,e.indexKey,o),e.itemKey&&W(i,e.itemKey,t[s]);let r=n++;this.renderItem(i,r,e.indexKey),e.itemKey&&this.runExpressWithWatcher((()=>t[o]),t,(async(n,s,a,h)=>{await Promise.resolve(),h.isDestroy||o in t&&(i[e.itemKey]=n,a||this.updateListItemOb(i,r))}),!0,(()=>this.ast._code))}this.destroyOldChildrens(n)}findIndexByIndex(e,t,n){let s=-1;if(this.node)for(let i=t;i<this.node.childrens.length;i++)if(this.checkObEqual(e,this.node.childrens[i]?.ob,n?[n]:void 0)){s=i;break}return s}renderItem(e,t,n){if(!this.ast.childrens?.length||!this.node)return;let s=this.node.childrens?.[t];if(s){if(this.checkObEqual(e,s.ob,n?[n]:void 0))return void(n&&s.ob[n]!==e[n]&&(s.ob[n]=e[n]));let i=this.findIndexByIndex(e,t+1,n);if(i>-1){if(t+1===i)this.node.childrens?.[t]?.[z.PARSERKEY]?.destroy();else for(let e=0;e<i-t-1;e++)this.node.childrens?.[t]?.[z.PARSERKEY]?.destroy();return this.renderItem(e,t,n)}return new Re(this.ast,e,this.node,this.ext).init(t)}return new Re(this.ast,e,this.node,this.ext).init()}updateListItemOb(e,t){if(!this.ast.childrens?.length||!this.node)return;let n=this.node.childrens?.[t];l(e,((e,t)=>{n.ob[e]!==t&&(n.ob[e]=t)}))}destroyOldChildrens(e){if(this.node)for(;this.node.childrens.length>e;){let e=this.node.childrens.pop();if(!e)break;e[z.PARSERKEY]?.destroy(!1)}}checkObEqual(e,t,n){let s=!0;return void 0!==t&&(l(e,((e,i)=>{n?.includes(e)||t?.[e]===i||(s=!1)})),s)}}class Re extends Ee{parser(e){this.node=new z.ListItem(this.ob,this.parent),this.appendNode(e),this.ast.childrens&&this.ext.parserNodes(this.ast.childrens,this.node,this.ob)}}class Ce extends Ee{parser(){if(v(this.ast.cmdName))throw C.error("Template Directive","Error occurred while converting AST to VNode: Directive name not found",this.ast),new Error("Error converting AST to VNode: Directive name not found");let e;if("Html"===this.ast.cmdName||"Text"===this.ast.cmdName?e=this.ast.param:this.ast.cmdName.startsWith(ye+".")?e=`${this.ast.cmdName}(${this.ast.param})`:this.ast.cmdName in this.ob&&"function"==typeof this.ob[this.ast.cmdName]&&(e=`${t(this.ast.cmdName)}(${this.ast.param})`),e){let t=this.runExpressWithWatcher(`[${e}]`,this.ob,(e=>{this.changeValue(e?.[0])}),!1,(()=>this.ast._code));return t||=[],"Html"===this.ast.cmdName?this.node=new z.Html(xe(t[0]),this.parent,t[1]):this.node=new z.Text(xe(t[0]),this.parent),void this.appendNode()}throw new Error("Command not found: "+this.ast.cmdName)}changeValue(e){this.node&&(this.node instanceof z.Html?this.node.html=xe(e):this.node.text=xe(e),this.ext.render?.updateNode(this.node))}}function xe(e){return null==e||"function"==typeof e?"":e.toString()}const Ae="default";class Oe extends Ee{parser(){let e=this.transformParam();this.node=new z.RenderSection(e.id,this.parent),this.node.params=e.params,this.node.section??=this.ob.$sections?.[e.id],this.appendNode(),this.node.section&&(this.node.section.params?(this.node.ob=Object.create(this.node.section.ob||this.ob),this.node.section.params?.forEach(((e,t)=>{W(this.node.ob,e,this.node.params[t])}))):this.node.ob=this.node.section.ob||this.ob,(this.node.section.parser||this.ext).parserNodes(this.node.section.asts,this.node,this.node.ob))}transformParam(){if(this.ast.param){let e=this.runExpressWithWatcher(`[${this.ast.param}]`,this.ob,(e=>{let t=e?.[0]||Ae;if("string"==typeof t&&t!==this.node.id)throw new Error("The section ID cannot be dynamically changed");this.node.params=e.slice(1),this.node?.ob&&this.node.section&&this.node.section.params?.forEach(((e,t)=>{this.node?.ob&&this.node.ob[e]!==this.node.params[t]&&(this.node.ob[e]=this.node.params[t])}))}),!0,(()=>this.ast._code));return{id:e?.[0]||Ae,params:e?.slice(1)||[]}}return{id:Ae,params:[]}}}const Se="Component Parsing";function Pe(e,t){return!!t.components[e]||!!Ze(e)}class Te extends Ee{loadPromise;parser(){if(this.ast.node)return this.node=this.ast.node,this.node.parent=this.parent,this.initPropData(),void(this.node&&(this.appendNode(),this.node.component?.$mount(this.node)));this.node=new z.Component(this.parent),this.initPropData(),this.appendNode(),this.initEvent(),this.loadPromise=this.renderChildren(),this.ext.promiseQueue.add(this.loadPromise),this.loadPromise.finally((()=>{this.loadPromise&&(this.ext.promiseQueue.delete(this.loadPromise),this.loadPromise=void 0)}))}get canReload(){return"tagName"in this.ast||"function"==typeof this.ast.component}reload(){this.canReload?(this.beforeDestroy(),this.renderChildren()):C.warn(Se,"Reload operation is not supported for the current component",this.node)}initPropData(){for(let e of this.ast.attributes)if("ref"!==e.name)if("keep-alive"===e.name&&"false"!==e.value&&(this.node.keepalive=!0),e.express){let t=this.runExpressWithWatcher(e.express,this.ob,(t=>{this.node.propValues[e.name]=t,this.notifyNodeWatcher("update",e.name)}),!0,(()=>{if(e.value)return`express:${e.value} \nfrom <${"tagName"in this.ast?this.ast.tagName:"Component"} ${e.name}="${e.value}" ... /> `}));this.node.propValues[e.name]=t}else this.node.propValues[e.name]=e.value;else{if(v(e.value)){C.warn(Se,"The 'ref' value of the element cannot be empty");continue}this.ref=e.value,this.ext.addRef(e.value,this.node)}this.node.propValues=K(this.node.propValues)}initEvent(){this.ast.events.forEach((e=>{let t=e.functionName?this.ob[e.functionName]:void 0;void 0===e.functionName?this.node.events.push([e.name,{modifiers:e.modifiers,callBack:b}]):t&&"function"==typeof t?this.node.events.push([e.name,{modifiers:e.modifiers,callBack:n=>{let s=[];e.functionParam&&(s=this.runExpress(`[${e.functionParam}]`,this.ob,(()=>{if(e._code){let t=e.modifiers?.join(".");return`express:${e._code} \nfrom: <${"tagName"in this.ast?this.ast.tagName:"Component"} @${e.name}${t?"."+t:""}="${e._code}" ... /> `}}))),t.call(this.ext.ob,n,...s)}}]):C.error(Se,`The callback method (${e.functionName}) specified for the ${e.name} event in the ${"tagName"in this.ast?this.ast.tagName:""} element was not found. Please check.`)}))}async renderChildren(){return new Promise((async(e,t)=>{if("tagName"in this.ast){let e=this.ob.components[this.ast.tagName]||Ze(this.ast.tagName);if(void 0===e)return void C.error(Se,`Failed to render component. Private or global component named '${this.ast.tagName}' not found.`);if(qe in e||(e=(await e()).default),!this.node)return;{let t=this.getSections();this.node.name=this.ast.tagName,this.node.component=new e(this.node?.propValues,t,this.node?.keepalive)}}else if("function"==typeof this.ast.component){let e=this.getSections();this.node.component=new this.ast.component(this.node?.propValues,e,this.node?.keepalive)}else this.node.component=this.ast.component;if(!this.node)return;!this.node.name&&"name"in this.node.component&&this.node.component.name&&"string"==typeof this.node.component.name&&(this.node.name=this.node.component.name);let n=this,s=function(){n.loadPromise&&e(void 0)};if(this.node.component.$on("mounted",(()=>{this.node?.component.$off("beforeDestroy",s),e(void 0)})),this.node.component.$on("beforeDestroy",s),this.node.component.$mount(this.node),!this.node)return;let i=this.node?.component;i.isKeepAlive&&(this.ast.node=this.node)}))}getSections(){let t={},s=[];return this.ast.childrens.forEach((t=>{if(t.type===n.NodeType.COMMAND&&"if"===t.cmdName&&t.childrens){let i=t,o=t.childrens.some((e=>e.type===n.NodeType.COMMAND&&"section"===e.cmdName)),r=i.condition.startsWith(e+".$sections");if(r){return this.runExpress(i.condition,this.ob,(()=>i._code))?void s.push(...t.childrens):void 0}if(o&&"if"===i.kind&&!r)return void C.warn(Se,"While parsing the section, it was found that this section is wrapped in a conditional statement. This conditional statement only supports if judgments using $sections. It has been excluded.")}s.push(t)})),s.forEach((e=>{if(e.type===n.NodeType.COMMAND&&"section"===e.cmdName){let n=e,s=n.id||Ae;/^(\'|\")(.*?)((\'|\"))$/.test(s)&&(s=s.slice(1,-1)),t[s]=t[s]||{asts:[],ob:this.ob,params:n.paramKeys,parser:this.ext},t[s].asts.push(...e.childrens||[])}else t[Ae]=t[Ae]||{asts:[],ob:this.ob,parser:this.ext},t[Ae].asts.push(e)})),t}beforeDestroy(e){this.loadPromise&&(this.ext.promiseQueue.delete(this.loadPromise),this.loadPromise=void 0),!0===e&&this.node?.component?.isKeepAlive?this.node?.component?.$destroy():(this.node?.component?.$destroy(!0),this.ast.node=void 0)}}class De extends Ee{parser(){this.node=new z.Element(this.ast.tagName,this.parent),this.initAttributes(),this.initEvents(),this.appendNode(),this.ext.parserNodes(this.ast.childrens,this.node,this.ob)}initAttributes(){for(let e of this.ast.attributes)if("ref"!==e.name)if(e.express){let t=t=>{this.node&&(this.node.attributes[e.name]=this.transformAttrVal(t),this.ext.render?.updateNode(this.node,e.name),this.notifyNodeWatcher("update",e.name))},n=this.runExpressWithWatcher(e.express,this.ob,(e=>{t(e)}),!1,(()=>{if(e.value)return`express:${e.value} \nfrom <${this.ast.tagName} ${e.name}="${e.value}" ... /> `}));this.node.attributes[e.name]=this.transformAttrVal(n)}else this.node.attributes[e.name]=e.value;else{if(v(e.value)){C.warn("Element","The 'ref' value of the element cannot be empty");continue}this.ref=e.value,this.ext.addRef(e.value,this.node)}}initEvents(){for(let e of this.ast.events){let t=e.functionName?this.ob[e.functionName]:void 0;if(!(void 0===e.functionName||t&&"function"==typeof t))throw new Error(`The callback method (${e.functionName}) specified for the ${e.name} event in the ${this.ast.tagName} element was not found. Please check.`);this.node?.events.push([e.name,{modifiers:e.modifiers,callBack:n=>{if(void 0===t)return;let s=[];e.functionParam&&(s=this.runExpress(`[${e.functionParam}]`,this.ob,(()=>{if(e._code){let t=e.modifiers?.join(".");return`express:${e._code}\nfrom <${this.ast.tagName} @${e.name}${t?"."+t:""}="${e._code}" ... /> `}}))),t&&t.call(this.ext.ob,n,...s)}}])}}transformAttrVal(e){return void 0!==e&&("string"==typeof e||"boolean"==typeof e||"function"!=typeof e&&Object.prototype.toString()?e:void 0)}}class _e{asts;ob;root=new z.Root;refs={};sleeped=!1;promiseQueue=new Set;nodeWatcherEvents={};render;constructor(e,t,n){this.asts=e,this.ob=t,this.root.component=t,this.render=q.get(ee.IRENDERIOCTAGID)??new ee.DomRender,n&&n instanceof z.Node&&(this.root.parent=n,n.childrens??=[],n.childrens.push(this.root))}parser(){this.parserNodes(this.asts,this.root)}mount(e){this.sleeped&&this.weakup(),this.render?.mount(e)}parserNodes(e,t,s){if(0!==this.asts.length)for(let i of e)if(i.type===n.NodeType.TEXT)new be(i,s??this.ob,t,this).init();else if(i.type===n.NodeType.COMMENT)new we(i,s??this.ob,t,this).init();else if(i.type===n.NodeType.COMPONENT)new Te(i,s??this.ob,t,this).init();else if(i.type===n.NodeType.ELEMENT){let e=i;Pe(e.tagName,s??this.ob)?new Te(e,s??this.ob,t,this).init():new De(e,s??this.ob,t,this).init()}else if(i.type===n.NodeType.COMMAND){let e=i;switch(e.cmdName){case"if":case"elseif":case"else":new Ne(e,s??this.ob,t,this).init();break;case"for":new $e(e,s??this.ob,t,this).init();break;case"RenderSection":new Oe(e,s??this.ob,t,this).init();break;case"section":break;default:new Ce(e,s??this.ob,t,this).init()}}}addRef(e,t){this.refs[e]=this.refs[e]||[],this.refs[e].push(t),t.ref=e}removeRef(e){for(let t in this.refs)this.refs[t].includes(e)&&y(this.refs[t],e)}addNodeWatcher(e,t){this.nodeWatcherEvents[e]=this.nodeWatcherEvents[e]||[],this.nodeWatcherEvents[e].push(t)}removeNodeWatcher(e,t){y(this.nodeWatcherEvents[e]||[],t)}notifyNodeWatcher(e,t,n,s){this.nodeWatcherEvents[e]?.forEach((e=>{e(t,n,s)}))}sleep(e){let t=e||this.root;t.childrens?.forEach((e=>{let t=()=>{e.childrens&&this.sleep(e),e.sleep=!0,this.render?.removeNode(e,!0)};this.nodeTransition(e,"leave",void 0,(()=>{t()}))||t()})),void 0===e&&(this.sleeped=!0)}weakup(e){let t=e||this.root;t.childrens?.forEach((e=>{e.sleep=!1,this.render?.appendNode(e),e.childrens&&this.weakup(e),this.nodeTransition(e,"enter")})),void 0===e&&(this.sleeped=!1)}destroy(e){for(;this.root.childrens.length;){let t=this.root.childrens[0];t[z.PARSERKEY]?t[z.PARSERKEY].destroy(e):y(this.root.childrens,t)}this.render.destroy(),this.refs={},this.root.childrens.length=0,this.nodeWatcherEvents={},this.asts.length=0}destroyWathcers(){for(let e of this.root.childrens)e[z.PARSERKEY]&&e[z.PARSERKEY].destroyWathcers()}reSetAsts(e,t){this.destroy(t),this.render=q.get(ee.IRENDERIOCTAGID)??new ee.DomRender,this.asts=e}nodeTransition(e,t,n,s,i){if(e&&e.parent?.childrens&&(e instanceof z.Element||e instanceof z.Component)){let o=function(e){if(e instanceof z.Element||e instanceof z.Component){let t=e instanceof z.Element?e.attributes:e.propValues;return{name:t["transition-name"],type:t["transition-type"]}}}(e);if(n??=o?.name,i??=o?.type,!n)return!1;let r=ke(e);if(r)return"enter"===t?this.render.elementToEnter(r,n,i,(()=>{let t=e[z.PARSERKEY];t&&t.ref&&this.notifyNodeWatcher(t.ref,e,"after-enter"),s?.()})):this.render.elementToLeave(r,n,i,(()=>{let t=e[z.PARSERKEY];t&&t.ref&&this.notifyNodeWatcher(t.ref,e,"after-leave"),s?.()})),!0;C.warn("Render Core","Incomplete data found when executing node animation, please check")}return!1}}function ke(e){if(e instanceof z.Element)return e;if(e.childrens&&e.childrens.length)for(let t of e.childrens)return t instanceof z.Element?t:ke(t)}function Ke(e,t,n){if(void 0===t)return;const s=Array.isArray(n)?n:[n];for(const e of s){if(e===Array&&Array.isArray(t))return t;if(typeof t===e.name.toLowerCase())return t}switch(s[0]){case Number:const e=Number(t);if(!isNaN(e))return e;break;case String:return String(t)}throw new Error(`The type of ${e.toString()} in props does not match the constrained type`)}function We(e,t,n){let s,i,o;if("symbol"!=typeof t&&(s=E(t)),t in e?i=e[t]:s&&(i=e[s]),n&&(t in n?o=n[t]:s&&s in n&&(o=n[s])),void 0!==o){if(u(o)&&("type"in o||"required"in o||"default"in o||"validate"in o)){const e=o;if(e.required&&void 0===i)throw new Error(`props key:${t.toString()} is required, please check`);if(e.type&&(i=Ke(t,i,e.type)),e.validate&&!1===e.validate(i))throw new Error(`Validation failed for props key ${t.toString()}`);i=i??e.default}else i=Ie(o)?Ke(t,i,o):i??o;return i}return i}function Ie(e){return!![String,Array,Number,Object,Function,Boolean].includes(e)||!!Array.isArray(e)&&Ie(e[0])}function Ve(e,t){if(!e.constructor)return!1;let n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);return n&&n.get}const Le="Component",Me=Symbol.for("JOKER_PROPS_DATA_KEY"),je=Symbol.for("JOKER_PROPS_DATA_PROXY"),Ye=Symbol.for("JOKER_PRIVATE_WATCHERS"),Be=Symbol.for("JOKER_EVENT_DATA_KEY"),He=Symbol.for("JOKER_IS_DESTROY"),Je=Symbol.for("JOKER_PARSER_TEMPLATE_TARGET"),Fe=Symbol.for("JOKER_SCOPE_ID"),qe=Symbol.for("JOKER_COMPONENT_TAG"),Ge=Symbol();let ze=["constructor","$mount","$nodeTransition","$destroy","$getRef","$getRefs","$syncProp","$watchNode","$watch","$on","$off","$trigger","$render","created","mounted","beforeDestroy","sleeped","wakeup","destroyed"];class Qe{$sections;isKeepAlive;static[qe]=!0;[Fe];model={};template;$root;isSleeped=!1;components={};propsOption;[Me]={};[Je];[je];[Ye]=[];[Be]=new Map;[He]=!1;[Ge]=!1;constructor(e,t={},n){this.$sections=t,this.isKeepAlive=n,this[Me]=e||{}}get props(){if(void 0===this[je]){let e=this;this[je]=new Proxy(e[Me],{get:(t,n)=>We(e[Me],n,e.propsOption),set(){throw new Error("props parameters are not allowed to be changed, only one-way data transfer is allowed")}})}return this[je]}$mount(e){if(!1===this[Ge]){let e=()=>{let e=[],t=Object.getPrototypeOf(this);for(;null!==t&&t!==Object.prototype;)Object.getOwnPropertyNames(t).forEach((n=>{!1!==ze.includes(n)||Ve(t,n)||"function"!=typeof t[n]||t[n].prototype?.hasOwnProperty("constructor")||e.push(n)})),t=Object.getPrototypeOf(t);return e};for(let t of e())this[t]=this[t].bind(this);this[Ge]=!0}if(this.$root=e,this.isKeepAlive&&this.isSleeped)return this.isSleeped=!1,this[Je]&&this.$root?(this[Je].mount(this.$root),this.wakeup(),this.$trigger("wakeup"),this.$rootVNode&&tt(this.$rootVNode),this):(C.error(Le,"When attempting to wake up the current component, it was found that the rendering handler has been destroyed. The wake-up operation cannot proceed.",[this,this.$root]),this);this.isSleeped=!1,this.model=K(this.model);let t=this.created(),n=async()=>{this.$trigger("created"),this.template&&this.$render(),await this.$nextUpdatedRender(),this[He]||(await this.mounted(),this[He]||this.$trigger("mounted"))};return t&&t instanceof Promise?t.then((()=>{this[He]||n()})):n(),this}$nextUpdatedRender(e){if(this[He])return;let t=[...this[Je]?.promiseQueue||[]],n=this.$rootVNode?.find((e=>e instanceof z.Component));if(n?.forEach((e=>{e?.component&&t.push(...e.component[Je]?.promiseQueue||[])})),t.length)return Promise.all(t).finally((()=>{this[He]||e?.()}));this[He]||e?.()}$nodeTransition(e,t,n,s,i){if("string"==typeof e){let t=this.$getRef(e);if(!t)return void C.error(Le,`Node with ref=${e} not found when executing node animation`);e=t}this[Je]?.nodeTransition(e,t,n,s,i)}$destroy(e){if(!e&&this.isKeepAlive)return this[Je]?.sleep(),this.isSleeped=!0,this.sleeped(),this.$trigger("sleeped"),void(this.$rootVNode&&et(this.$rootVNode));this[He]=!0;for(let e of this[Ye])e.destroy();this[Ye].length=0,this[Je]?.destroyWathcers(),this.beforeDestroy(),this.$trigger("beforeDestroy"),this[Je]?.destroy(),this[Je]=void 0,this.template&&Array.isArray(this.template)&&(this.template.length=0),this.$trigger("destroy"),this[Be].clear(),this.$root=void 0,this.isSleeped=!1,this.$sections={},this[je]=void 0,this[Me]={},this.destroyed()}get $refs(){return this[Je]?.refs||{}}$getRef(e){return this.$refs[e]?.[0]}$getRefs(e){return this.$refs[e]}$syncProp(e,t,n){"function"==typeof t&&(n=t,t=void 0),t??=e,n??=e=>e,this.model[t]=n(this.props[e]),this.$watch((()=>this.props[e]),(()=>{this.model[t]=n?.(this.props[e])}))}get $rootVNode(){return this[Je]?.root}$watchNode(e,t){if(this[Je])return this[Je]?.addNodeWatcher(e,t),()=>{this[Je]?.removeNodeWatcher(e,t)};C.warn(Le,"Component is not yet mounted. Node observation and monitoring cannot be performed.")}$watch(e,t,n){let s=new F((()=>{if(this[He]){for(let e of this[Ye])e.destroy();return J}return e()}),((e,n)=>{this[He]||t(e,n)}),void 0,n);return this[Ye].push(s),[s.value,()=>{s.destroy(),y(this[Ye],s)}]}$on(e,t){let n=this[Be].get(e);void 0===n&&(n=new Set,this[Be].set(e,n)),!1===n?.has(t)&&n.add(t)}$off(e,t){let n=this[Be].get(e);n&&(t?n.delete(t):n.clear())}$trigger(e,t,n){if(!this.$root)return;let s={eventName:e,stopPropagation:n?.stopPropagation??(()=>{}),preventDefault:n?.preventDefault??(()=>{}),data:t,target:n?.target??this.$rootVNode,event:n?.event};if(this.$rootVNode&&this.$rootVNode.parent&&this.$rootVNode.parent instanceof z.Component&&!1===this[Je]?.render.triggerEvent(this.$rootVNode.parent,e,s))return;let i=this[Be].get(e);i?.size&&[...i].forEach((e=>{e(s)}));let o=this[Be].get("*");o?.size&&[...o].forEach((e=>{e(s)}))}$render(e,t){e??=this.template,this.template="function"==typeof e?e(s):e,this.$root&&(this.template??=[],this[Je]?.reSetAsts(this.template,t),this[Je]??=new _e(this.template,this,this.$root),this[Je].parser(),this.$root&&this[Je].mount(this.$root))}created(){}mounted(){}beforeDestroy(){}sleeped(){}wakeup(){}destroyed(){}}const Ue={};function Xe(e,t){if("string"==typeof e)t&&(Ue[e]=t);else for(let t in e)Ue[t]=e[t]}function Ze(e){return Ue[e]}function et(e){e.childrens?.forEach((e=>{e instanceof z.Component&&e.component?.sleeped(),et(e)}))}function tt(e){e.childrens?.forEach((e=>{e instanceof z.Component&&e.component?.wakeup(),tt(e)}))}class nt extends Qe{template=[];cache=new Map;async mounted(){this.$watch((()=>this.props.name),(async e=>{this.$render([],!0),await Promise.resolve(),this.$root&&this.loadComponent(e)})),await this.loadComponent(this.props.name)}propsVaule;created(){this.initProps()}initProps(){let e={};this.props.props||(Object.keys(this.props).forEach((t=>{!1!==this.filterProps(t)&&(e[t]=this.props[t],this.$watch((()=>this.props[t]),(()=>{this.propsVaule[t]=this.props[t]})))})),this.propsVaule=K(e))}filterProps(e){if("string"!=typeof e)return!1;let t=E(e);return"transition-name"!==t&&"name"!==t&&"keep-alive"!==t&&"ref"!==t&&void 0}async loadComponent(e){if(!e)return void this.$render([],this.isKeepAlive);let t;if(this.isKeepAlive){let t=this.cache.get(e);if(t)return void this.$render([i(t,{"transition-name":this.props["transition-name"]})],!0)}let n=this.$rootVNode?.parent?.[z.PARSERKEY]?.ob.components,s=n?.[e];void 0===s&&(s=Ze(e)),s?(qe in s||(s=(await s()).default),t=new s(this.props.props||this.propsVaule,this.$sections,this.isKeepAlive),t.$on("*",(e=>{this.$trigger(e.eventName,e.data,e)})),this.isKeepAlive&&this.cache.set(e,t),this.$render([i(t,{"transition-name":this.props["transition-name"]})],this.isKeepAlive)):C.warn("component",`Component ${e} not found`)}beforeDestroy(){this.removeCache()}removeCache(e){if(e){let t=this.cache.get(e);this.cache.delete(e),t&&t.$destroy(!0)}else this.cache.forEach((e=>{e.$destroy(!0)})),this.cache.clear()}}class st extends Qe{template=function(){return[o("RenderSection")]};async mounted(){await this.$nextUpdatedRender()}}Xe({template:st,component:nt});class it{eventDatas=new Map;on(e,t){let n=this.eventDatas.get(e);void 0===n&&(n=[],this.eventDatas.set(e,n));const s={callBack:t};return n.push(s),()=>{n&&y(n,s)}}once(e,t){let n=this.eventDatas.get(e);void 0===n&&(n=[],this.eventDatas.set(e,n));const s={callBack:t,once:!0};return n.push(s),()=>{n&&y(n,s)}}off(e,t){if(void 0!==e)if(t){const n=this.eventDatas.get(e),s=n?.find((e=>e.callBack===t));s&&y(n,s)}else this.eventDatas.delete(e);else this.eventDatas.clear()}async trigger(e,t){let n=[...this.eventDatas.get(e)||[]];if(n.push(...this.eventDatas.get("*")||[]),n&&n.length){let s=0,i=0,o=!1;for(;n[s];){const r=n[s],a=await r.callBack({stopPropagation:()=>o=!0,callTimes:i,eventName:e},t);if(r.once?y(n,r):s++,!1===a||o)return!1}}}}export{J as BREAK_WATCH_UPDATE,Qe as Component,nt as ComponentContainer,O as Dep,it as EventBus,q as IContainer,He as IS_DESTROY,qe as JOKER_COMPONENT_TAG,G as JOKER_VNODE_TAG,S as OBJECTPROXY_DEPID,Je as PARSER_TEMPLATE_TARGET,_e as ParserTemplate,ee as Render,Fe as SCOPE_ID,V as ShallowObserver,st as Template,z as VNode,F as Watcher,pe as __GLONAL_FUNTIONS__,d as __JOKER_HMR_RUNTIME,Y as combinedReply,W as defineObserverProperty,Ze as getGlobalComponent,B as isObserverData,K as observer,Xe as registerGlobalComponent,me as registerGlobalFunction};
1
+ import{EXPRESSHANDLERTAG as e,createFuntionBody as t,AST as n,RENDER_HANDLER as s,createComponent as i,createCommand as o}from"@joker.front/ast";export{AST,EXPRESSHANDLERTAG,RENDER_HANDLER,createCodeFunction,createCommand,createComment,createComponent,createElement,createFuntionBody,createText}from"@joker.front/ast";const r=new Map,a=new Map,h=new Map;let d={recordRender:(e,t)=>{a.set(e,t)},recordComponent:(e,t)=>{h.set(e,t)},record:(e,t)=>{void 0===r.get(e)&&r.set(e,new Set),r.get(e).add(t),t.$on("destroy",()=>{r.get(e)?.delete(t)})},reload:(e,t)=>{let n=h.get(e);if(!n)return;n.component=t;let s=r.get(e);if(!s)return;let i=Array.from(s);s.clear(),i.forEach(e=>{if(e.$root){if(!e.$rootVNode?.parent)return window.onbeforeunload=null,void location.reload();{let t=e.$rootVNode.parent;if(!(t instanceof z.Component&&t[z.PARSERKEY]&&t[z.PARSERKEY].canReload))return window.onbeforeunload=null,void location.reload();t[z.PARSERKEY].reload()}}})},rerender:(e,t)=>{let n=a.get(e);n&&(n.render=t),r.get(e)?.forEach(e=>{e.$render(t)})}};function c(e){return null!==e&&"object"==typeof e}function l(e,t){Object.getOwnPropertyNames(e).forEach(n=>{t(n,e[n])})}function u(e){return"[object Object]"===Object.prototype.toString.call(e)}function f(e){if(null===e)return e;if("object"!=typeof e)return e;let t;t=Array.isArray(e)?[]:{};let n=Object.keys(e);for(let s of n){let n=e[s];t[s]="object"==typeof n?f(n):n}return t}function p(e,t,n){if(e===t)return!0;let s=c(e),i=c(t);if(s&&i){if(u(e)&&u(t)){let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let s of n)if(e[s]!==t[s])return!1;return!0}return e===t}return!s&&!i&&String(e)===String(t)}function m(e,t){let n=e.indexOf(t);return n>-1&&e.splice(n,1),e}function y(e,t){let n=e.findIndex(e=>t(e));return n>-1&&e.splice(n,1),e}function g(e){return!e||""===e.trim()}function v(e,t="-"){return(e=e||"").split(/(?=[A-Z])/).map(e=>e.toLowerCase()).join(t)}let E=(...e)=>{},b="warn";const w=["silent","error","warn","info"];function N(){let e=new Date;function t(e,t=2){return e.toString().padStart(t,"0")}return t(e.getHours())+":"+t(e.getMinutes())+":"+t(e.getSeconds())+":"+t(e.getMilliseconds(),3)}function $(e,t,n,s){w.indexOf(e)<=w.indexOf(b)&&(void 0===s?console[e](`${N()} [${t}]:`,n):console[e](`${N()} [${t}]:`,n,s))}let R=function(e,t,n){$("warn",e,t,n)},C=function(e,t,n){$("error",e,t,n)};const x={lt:"<",gt:">",nbsp:" ",amp:"&",quot:'"',"#39":"'"};function A(e){return e.replace(/&(lt|gt|nbsp|amp|quot|#39);/gi,(e,t)=>x[t]||"")}class O{static target;watchers=new Map;depend(e){O.target?.addDep(this,e)}addWatcher(e,t){let n=this.watchers.get(e)||[];n.push(t),this.watchers.set(e,n)}removeWatcher(e,t){const n=this.watchers.get(e);n&&m(n,t)}notify(e){const t=this.watchers.get(e);if(t){y(t,e=>e.isDestroy);[...t].forEach(e=>{e.isDestroy||e.update()})}}}const S=Symbol.for("__JOKER_OBJECT_PROXY_DEP_ID__"),P=Symbol.for("__JOKER_OBJECT_PROXY_DATA_KEY__"),T=Symbol.for("__JOKER_OBJECTPROXY_DEPLEVE_ID__");function D(e){try{return null!=e&&c(e)&&e!==window.parent&&e instanceof Window==!1&&e instanceof F==!1&&e instanceof Ue==!1&&e instanceof _e==!1&&(Array.isArray(e)||u(e)||e instanceof Set||e instanceof Map)&&!Object.isFrozen(e)&&!(e instanceof Element)&&!(G in e)&&!(I in e)&&!(Ge in e)}catch{return!1}}function k(e){if(_(e))return e;if(e&&e.hasOwnProperty(P)){let t=Reflect.get(e,P);if(t)return t}let t=new O,n=!0,s=new Proxy(e,{get(e,n,s){if(e instanceof Set||e instanceof Map){if("add"===n){let s=Reflect.get(e,n);return n=>{D(n)&&(n=K(n));let i=s.call(e,n);return L(t,"size"),L(t,T),i}}if("set"===n){let s=Reflect.get(e,n);return(n,i)=>{D(i)&&(i=K(i));let o=s.call(e,n,i);return L(t,"size"),L(t,T),o}}if("delete"===n||"clear"===n){let s=Reflect.get(e,n);return i=>{let o=s.call(e,i);return("clear"===n||o)&&(L(t,"size"),L(t,T)),o}}let s=Reflect.get(e,n);if("function"==typeof s)return s.bind(e)}if(n===P)return;if(n===S)return t;if(n===T)return;let i=Reflect.get(e,n);return n===Symbol.toStringTag||!1===function(e,t){return t in e}(e,n)&&"length"!==n&&"size"!==n||(t.depend(n),D(i)&&_(i)?.depend(T)),i},set(e,s,i){if(n)return Reflect.set(e,s,i),!0;D(i)&&(i=K(i));let o=!1===function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}(e,s),r=Reflect.get(e,s)!==i;return Reflect.set(e,s,i),(r||"length"===s&&Array.isArray(e))&&L(t,s),Array.isArray(e)?"length"===s&&L(t,T):o&&L(t,T),!0},deleteProperty:(e,n)=>(Reflect.deleteProperty(e,n),!1===Array.isArray(e)&&L(t,T),!0)});!function(e,t,n,s){Object.defineProperty(e,t,{value:n,enumerable:s,writable:!0,configurable:!0})}(e,P,s,!1);for(let t in e){let n=e[t];D(n)&&!_(n)&&(s[t]=k(e[t]))}return n=!1,s}function _(e){if(c(e))return Reflect.get(e,S)}function K(e,t=!1){if(!1===D(e))throw new Error("The provided data is not of the correct type. It must be an array or an object.");return k(t?f(e):e)}function W(e,t,n){let s=n;D(n)&&(s=K(n));let i=new O;Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:()=>(i.depend(t),_(s)?.depend(T),s),set:e=>{e!==s&&(D(e)&&(e=K(e)),s=e,L(i,t))}})}const I=Symbol.for("JOKER_SHALLOW_OBSERVER");class V{data;[I]=!0;dep=new O;constructor(e){this.data=e}isChanged=!1;get value(){return this.dep.depend(T),this.data}set value(e){!1===Object.is(e,this.data)&&(this.isChanged=!0,this.data=e,L(this.dep,T))}}let M=!1,j=new Map;function L(e,t){if(!1===M)e.notify(t);else{let n=j.get(e);void 0===n&&(n=[],j.set(e,n)),n.includes(t)||n.push(t)}}function Y(e){M=!0;try{e()}catch(e){return M=!1,j.clear(),void C("Data Hijacking","Encountered a blocking error while collecting changes for data hijacking composite responses. No action will be taken. Please investigate.",e)}M=!1,function(e){const t=[],n=[];e.forEach((e,n)=>{e.forEach(e=>{t.push(...n.watchers.get(e)||[])})}),t.forEach(e=>{n.includes(e)||(!e.isDestroy&&e.update(),n.push(e))})}(j),j.clear()}function B(e){return void 0!==_(e)}const H="Data Observation",J=Symbol.for("JOKER_BREAK_WATCH_UPDATE");class F{ob;updateCallBack;forceCallBack;getter;value;isDestroy=!1;updating=!1;runRelations=new Map;relations=new Map;constructor(e,t,n,s){if(this.ob=e,this.updateCallBack=t,this.forceCallBack=s,void 0===e)throw new Error("Cannot observe changes on undefined");if(void 0===n)this.getter=e=>e;else if("function"==typeof n)this.getter=n;else{const e=function(e){if(/[^\w.$]/.test(e))return;const t=e.split(".");return function(e){let n=e;return t.forEach(e=>{n&&(n=n[e])}),n}}(n);if(void 0===e)throw new Error(`${n} failed to parse. Unable to interpret the expression. Please check the expOrFn parameter or use the function mode instead.`);this.getter=e}void 0===this.getter&&C(H,"Failed to create getter",arguments),this.value=this.getValue()}getValue(){if(void 0===this.getter)return;O.target=this;const e="function"==typeof this.ob?this.ob():this.ob;let t;try{t=this.getter.call(e,e)}catch(e){throw C(H,"Failed to retrieve value. Executed method: "+this.getter.toString()),e}return O.target=void 0,this.clearnDeps(),t}addDep(e,t){let n=this.runRelations.get(e);if(void 0===n||!n.includes(t)){n=n||[],n.push(t),this.runRelations.set(e,n);const s=this.relations.get(e);void 0!==s&&s.includes(t)||e.addWatcher(t,this)}}update(){if(this.updating)return;const e=this.getValue();if(e===J)return;const t=this.value;if(this.forceCallBack||e!==t||c(e)){this.value=e;const n=e!==t&&function(e,t){return Array.isArray(e)&&Array.isArray(t)?function(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}(e,t):p(e,t)}(e,t);if(n&&!this.forceCallBack)return;this.updating=!0;try{this.updateCallBack(e,t,n,this)}catch(e){throw e}finally{this.updating=!1}}}destroy(){this.relations.forEach((e,t)=>{for(const n of e)t.removeWatcher(n,this)}),this.isDestroy=!0,this.relations.clear(),this.runRelations.clear(),this.ob=void 0,this.value=void 0,this.getter=void 0}clearnDeps(){this.relations.forEach((e,t)=>{const n=this.runRelations.get(t);for(const s of e)n&&n.includes(s)||t.removeWatcher(s,this)}),this.relations.clear(),this.relations=this.runRelations,this.runRelations=new Map}}var q;!function(e){let t=new Map;e.bind=function(e){return{to:n=>{if(t.has(e))throw new Error(`TagId:${e.toString()} already has an implementation bound. Do not bind again.`);t.set(e,n)}}},e.get=function(e,...n){const s=t.get(e);if(s)return new s(...n)}}(q||(q={}));const G=Symbol.for("JOKER_VNODE_TAG");var z;!function(e){e.PARSERKEY=Symbol.for("JOKER_PARSER_KEY");class t{parent;[G]=!0;static;output;[e.PARSERKEY];childrens;ref;sleep=!1;constructor(e){this.parent=e}get prev(){if(this.parent)return this.parent.childrens?.[this.parent.childrens?.indexOf(this)-1]}get next(){if(this.parent)return this.parent.childrens?.[this.parent.childrens?.indexOf(this)+1]}closest(e,t){if(!0===e(this))return this;let n=this.parent;for(;n;){if(!0===e(n))return n;if(!0===t?.(n))break;n=n.parent}}find(e,t,n,s,i){let o=i??[];if(s??=this.childrens,s)for(let i of s){(!0!==e(i)||(o.push(i),n))&&(!0!==t?.(i)&&i.childrens&&this.find(e,t,n,i.childrens,o))}return o}contains(e,t){if(t??=this.childrens,t)for(let n of t){if(!0===e(n))return!0;if(n.childrens&&n.childrens.length&&this.contains(e,n.childrens))return!0}return!1}first(e,t){if(t??=this.childrens,t)for(let n of t){if(!0===e(n))return n;if(n.childrens&&n.childrens.length){let t=this.first(e,n.childrens);if(t)return t}}}}e.Node=t;e.Root=class extends t{childrens=[];component;constructor(){super()}};e.Text=class extends t{text;static=!0;constructor(e,t){super(t),this.text=e}};e.Html=class extends t{html;notShadow;static=!0;scopedId;constructor(e,t,n){super(t),this.html=e,this.notShadow=n}};e.Comment=class extends t{text;static=!0;constructor(e,t){super(t),this.text=e}};e.Element=class extends t{tagName;static=!0;attributes={};childrens=[];events=[];_assistEventCache;constructor(e,t){super(t),this.tagName=e}};e.Component=class extends t{name;component;events=[];propValues={};keepalive;get firstElement(){if(this.childrens){let t=n=>{for(let s of n){if(s instanceof e.Element)return s;if(s.childrens){let e=t(s.childrens);if(e)return e}}};return t(this.childrens)}}get rootElements(){if(this.childrens){let t=[],n=s=>{for(let i of s)i instanceof e.Element||i instanceof e.Html?t.push(i):i.childrens&&n(i.childrens)};return n(this.childrens),t}return[]}};e.Condition=class extends t{cmdName;result=!1;childrens=[];isShow=!1;constructor(e,t){super(t),this.cmdName=e}};e.List=class extends t{childrens=[]};e.ListItem=class extends t{ob;childrens=[];constructor(e,t){super(t),this.ob=e}};e.RenderSection=class extends t{id="unknown";params=[];section;childrens=[];ob;constructor(e,t){super(t),"string"==typeof e?this.id=e:this.section=e}}}(z||(z={}));const Q="DOM Rendering",U=["script","style","textarea","pre"];let X=0;const Z=["svg","defs","use","rect","circle","ellipse","line","polyline","polygon","path","text","g"];var ee;function te(e,t,n){return`${e}-${t}-${n}`}function ne(e,t,n,s){e._assistEventCache??=[],e._assistEventCache.push([t,n]),document.body.addEventListener(t,n,s)}function se(e,t,n){e._assistEventCache&&t&&n?(y(e._assistEventCache,e=>e[0]===t&&e[1]===n),document.body.removeEventListener(t,n)):(e._assistEventCache?.forEach(e=>{document.body.removeEventListener(e[0],e[1])}),e._assistEventCache&&(e._assistEventCache.length=0),e._assistEventCache=void 0)}!function(e){e.IRENDERIOCTAGID=Symbol.for("JOKER_IRENDERIOC_TAGID"),e.ROOT_CONTAINER="";e.DomRender=class{elements;constructor(){this.elements=document.createDocumentFragment()}mount(e){if(e instanceof Element)e.appendChild(this.elements);else if(e instanceof z.Component)if(e.parent)if(e.output){const t=e.output,n=he(e)||t.parentNode;n&&n.insertBefore(this.elements,t)}else C(Q,"Component mount found no DOM target node",e);else C(Q,"Mounting child component with no parent",e);else C(Q,"Mount only supports Element or VNode.Node",e)}appendNode(e,t){if(this.renderNode(e),e.output){const n=e.output instanceof HTMLCollection||e.output instanceof NodeList||Array.isArray(e.output)?Array.from(e.output):[e.output];for(const s of n)this.appendNodeChildren(e,s,e.parent,t);return}C(Q,"No output found for node, cannot mount",e)}updateNode(e,t){if(e instanceof z.Element)for(const t in e.attributes){const n=e.attributes[t];this.setAttribute(e.output,t,n)}else e instanceof z.Text?e.parent&&e.parent instanceof z.Element&&U.includes(e.parent.tagName)?(this.removeNode(e),this.appendNode(e)):e.output.textContent=A(e.text||""):e instanceof z.Html?e.notShadow?(e.output.innerHTML=e.html,e.scopedId&&fe(e.output,e.scopedId)):e.output.root.innerHTML=e.html:C(Q,`Node does not support ${t} update`,e)}removeNode(e,t){const n=e.output instanceof HTMLCollection||e.output instanceof NodeList||Array.isArray(e.output)?Array.from(e.output):[e.output];n?.forEach(e=>e?.remove()),t||(e instanceof z.Element&&se(e),e.output=void 0)}destroy(){this.elements=void 0}elementToEnter(e,t,n,s){e.output&&this.transitionFrame(e,t,"enter",n,s)}elementToLeave(e,t,n,s){e.output&&this.transitionFrame(e,t,"leave",n,s)}triggerEvent(e,t,n){const s=[];for(const i of e.events){const[o,r]=i;if(o===t){const t=r.modifiers?.includes("self"),a=r.modifiers?.includes("outside");if(t||a){R(Q,"Event modifiers 'self' and 'outside' not supported in components",e);continue}const h=n.event;if((h instanceof KeyboardEvent&&["keydown","keypress","keyup"].includes(o)||h instanceof MouseEvent&&["click","dbclick","mouseup","mousedown"].includes(o))&&!1===oe(h,r.modifiers))continue;if(r.callBack(n),r.modifiers?.includes("prevent")&&n.preventDefault(),r.modifiers?.includes("once")&&s.push(i),r.modifiers?.includes("stop"))return n.stopPropagation(),!1}}s.length&&s.forEach(t=>m(e.events,t))}transitionFrame(e,t,n,s,i){re(e,te(t,n,"from")),s||="transition";const o=e.output.__TRANSITION_EVNETID__=X++;requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(!e.output)return;re(e,te(t,n,"active")),ae(e,te(t,n,"from")),re(e,te(t,n,"to"));const r=function(e,t){const n=window.getComputedStyle(e),s=e=>(n[e]||"").split(", ");if("transition"===t){const e=s("transitionDelay"),t=s("transitionDuration"),n=de(e,t);if(n>0)return{timeout:n,count:t.length}}else if("animation"===t){const e=s("animationDelay"),t=s("animationDuration"),n=de(e,t);if(n>0)return{timeout:n,count:t.length}}}(e.output,s);if(!r)return void i?.();let a=0;const h=()=>{ae(e,te(t,n,"to")),ae(e,te(t,n,"active")),e.output&&(e.output.removeEventListener(`${s}end`,d),o===e.output.__TRANSITION_EVNETID__&&i?.())},d=t=>{t.target===e.output&&++a>=r.count&&h()};setTimeout(()=>{a<r.count&&h()},r.timeout+1),e.output?.addEventListener(`${s}end`,d)})})}renderNode(e){if(!e.output)if(e instanceof z.Text)e.parent&&e.parent instanceof z.Element&&U.includes(e.parent.tagName)?e.output=this.parserHtml(e.text):e.output=document.createTextNode(A(e.text||""));else if(e instanceof z.Html)if(e.notShadow){const t=document.createElement("joker-html-container");t.JOKER_NODE=e,t.innerHTML=e.html,e.scopedId&&(t.setAttribute("data-scoped-"+e.scopedId,""),fe(t,e.scopedId)),e.output=t}else{const t=document.createElement("joker-html-shadow");t.JOKER_NODE=e,t.style.lineHeight="1",t.root.innerHTML=e.html,e.output=t}else if(e instanceof z.Element){let t;const n=e.tagName.toLowerCase();"svg"===n||Z.includes(n)||e.parent?.inSvg?(e.inSvg=!0,t=document.createElementNS("http://www.w3.org/2000/svg",e.tagName)):t=document.createElement(e.tagName);for(const n in e.attributes)this.setAttribute(t,n,e.attributes[n]);t.JOKER_NODE=e,e.output=t,e.events.some(e=>"click"===e[0]&&e[1].modifiers?.includes("outside"))?setTimeout(()=>{this.initElementEvents(t,e)}):this.initElementEvents(t,e)}else e instanceof z.Comment?e.output=document.createComment(e.text):e.output=document.createTextNode("")}initElementEvents(e,t){for(const[n,s]of t.events){const i=s.modifiers?.includes("self");let o=s.modifiers?.includes("outside");i&&o&&(R(Q,"Event modifiers 'self' and 'outside' cannot coexist, using 'self'",t),o=!1);const r=a=>{if(!(t.sleep||i&&a.target!==e)){if(o){if(a.target===e||e.contains(a.target))return;if(!1===document.contains(a.target))return;if(t.contains(e=>(e.output instanceof HTMLCollection||e.output instanceof NodeList||Array.isArray(e.output)?Array.from(e.output):[e.output]).includes(a.target)))return!0}(a instanceof KeyboardEvent&&["keydown","keypress","keyup"].includes(n)||a instanceof MouseEvent&&["click","dbclick","mouseup","mousedown"].includes(n))&&!1===oe(a,s.modifiers)||(s.callBack({eventName:n,event:a,target:t,preventDefault:()=>a.preventDefault(),stopPropagation:()=>a.stopPropagation(),data:void 0}),s.modifiers?.includes("prevent")&&a.preventDefault(),s.modifiers?.includes("stop")&&a.stopPropagation(),s.modifiers?.includes("once")&&(o?se(t,n,r):e.removeEventListener(n,r)))}};let a;s.modifiers?.includes("passive")&&(a={passive:!0}),o?ne(t,n,r,a):e.addEventListener(n,r,a)}}parserHtml(e){const t=document.createElement("div");return t.innerHTML=e,t.childNodes}isCommandGroup(e){return e instanceof z.Component||e instanceof z.Condition||e instanceof z.List||e instanceof z.ListItem||e instanceof z.RenderSection}appendNodeChildren(e,t,n,s){let i=he(e);if(i)i.appendChild(t);else if(void 0===n)this.elements?.appendChild(t);else if(n)if(n instanceof z.Root){const e=n.parent;if(e&&e instanceof z.Component&&e.output){const n=e.output,s=n?.parentNode;if(s)return void s.insertBefore(t,n)}this.elements?.appendChild(t)}else if(n instanceof z.Element){const e=n.output;if(void 0===e)return;e.appendChild(t)}else if(this.isCommandGroup(n)){const i=n.output?.parentNode;if(void 0!==s&&n.childrens?.length&&i){const o=s-1;if(o<0){const n=le(e);return void(n&&i.contains(n.output)?n.output.after(t):i.insertBefore(t,i.firstChild))}{const e=n.childrens[o];if(e){const n=e.output;if(n)return void n.after(t)}}}i&&i.insertBefore(t,n.output)}else C(Q,"Node does not support nested children",{node:e,parent:n})}setAttribute(e,t,n){if(e)if("boolean"!=typeof n){if("class"===t){if(n){n=pe(n).join(" ")}}else if("style"===t&&c(n)){e.removeAttribute("style");for(const t in n){let s=!1;void 0!==n[t]&&!1!==n[t]||(s=!0);const i=String(n[t]);g(i)&&(s=!0),s||(e.style[t]=i)}return}n=(n??"").toString().trim(),"class"===t&&(n=n.split(/\s/).filter(e=>e.trim()).join(" ")),"value"===t&&"value"in e?e.value=n:"xlink:href"===t?e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",n):e.setAttribute(t,n)}else n?e.setAttribute(t,""):e.removeAttribute(t)}}}(ee||(ee={}));const ie={enter:"enter",backspace:"delete",tab:"tab",arrowup:"up",arrowdown:"down",arrowleft:"left",arrowright:"right",escape:"esc"," ":"space"};function oe(e,t){if(e instanceof KeyboardEvent){if(void 0===e.key)return!1;for(const n in ie)if(t?.includes(ie[n])&&e.key.toLowerCase()!==n)return!1}else{if(t?.includes("left")&&0!==e.button)return!1;if(t?.includes("right")&&2!==e.button)return!1;if(t?.includes("middle")&&1!==e.button)return!1}return(!t?.includes("ctrl")||!1!==e.ctrlKey)&&((!t?.includes("alt")||!1!==e.altKey)&&(!t?.includes("shift")||!1!==e.shiftKey))}function re(e,t){e.output&&e.output.classList.add(t)}function ae(e,t){e.output&&e.output.classList.remove(t)}function he(e){if(e instanceof z.Element||e instanceof z.Component){let t=e instanceof z.Component?e.propValues["append-to"]:e.attributes["append-to"];if(t){if(t instanceof z.Element)return t.output;if("string"==typeof t){ee.ROOT_CONTAINER&&(t="body"===t?ee.ROOT_CONTAINER:`${ee.ROOT_CONTAINER} ${t}`);const e=document.querySelector(t);if(e)return e}R(Q,"Unsupported appendTo type",{appendTo:t,node:e})}}}function de(e,t){for(;e.length<t.length;)e.concat(e);return Math.max(...t.map((t,n)=>ce(t)+ce(e[n])))}function ce(e){return"auto"===e?0:1e3*Number(e.slice(0,-1).replace(",","."))}function le(e,t){let n=e.prev;for(;n;){if(n instanceof z.ListItem==!1)return n;n=n.prev}if(!t){let t=e.parent;for(;t;){if(t instanceof z.Element)return;const e=le(t,!0);if(e)return e;t=t.parent}}}class ue extends HTMLElement{root;constructor(){super(),this.root=this.attachShadow({mode:"open"})}}function fe(e,t){const n=e.childNodes;for(let e=0;e<n.length;e++){const s=n[e];if(1===s.nodeType){const e=s;e.setAttribute("data-scoped-"+t,""),fe(e,t)}}}function pe(e,t){const n=t||[];if("string"==typeof e){const t=e.trim();t&&!n.includes(t)&&n.push(t)}else Array.isArray(e)?e.forEach(e=>pe(e,n)):null!==e&&"object"==typeof e&&Object.entries(e).forEach(([e,t])=>{if(!0===t){const t=e.trim();t&&!n.includes(t)&&n.push(t)}});return n}!customElements.get("joker-html-shadow")&&customElements.define("joker-html-shadow",ue);const me={};function ye(e){for(const t in e)me[t]=e[t]}const ge="Global",ve="Render Core";function Ee(t,n){try{return new Function(e,ge,`return ${t};`)}catch(e){throw new Error(`An unknown error occurred while creating the expression execution method. \nmessage: ${e.message} \n${n?.()||t}`)}}class be{ast;ob;parent;ext;ref="";watchers=[];node;isDestroy=!1;constructor(e,t,n,s){this.ast=e,this.ob=t,this.parent=n,this.ext=s}init(e){this.parser(e),this.afterParser()}beforeDestroy(e){}destroy(e){if(this.isDestroy=!0,this.clearWatchers(),this.parent.childrens&&this.node){(this.node instanceof z.Element||this.node instanceof z.Component)&&this.ext.removeRef(this.node);let t=()=>{this.parent&&this.node&&(this.beforeDestroy(e),this.destroyChildrens(e),this.node&&(this.ext.render?.removeNode(this.node),this.parent.childrens&&m(this.parent.childrens,this.node),this.notifyNodeWatcher("remove"),this.destroyOtherData()))};if(this.ext.nodeTransition(this.node,"leave",void 0,()=>{t()}))return m(this.parent.childrens,this.node),void this.destroyChildrensWatcher(this.node);t()}else this.destroyOtherData()}destroyWathcers(){this.isDestroy=!0,this.clearWatchers(),this.destroyChildrensWatcher(this.node)}destroyOtherData(){this.node&&(this.node[z.PARSERKEY]=void 0),this.node=void 0,this.parent=void 0}destroyChildrens(e){for(;this.node?.childrens?.length;){let t=this.node.childrens[0];t[z.PARSERKEY]?t[z.PARSERKEY].destroy(e):m(this.node.childrens,t)}}destroyChildrensWatcher(e){if(e?.childrens?.length)for(let t of e?.childrens)t[z.PARSERKEY]&&(t[z.PARSERKEY].clearWatchers(),this.destroyChildrensWatcher(t))}appendNode(e){this.parent?.childrens&&this.node&&!this.isDestroy&&(this.node[z.PARSERKEY]=this,this.node instanceof z.Element&&this.ob[qe]?this.node.attributes["data-scoped-"+this.ob[qe]]=void 0:this.node instanceof z.Html&&this.ob[qe]&&(this.node.scopedId=this.ob[qe]),this.ext.render?.appendNode(this.node,e),void 0===e?this.parent.childrens.push(this.node):this.parent.childrens.splice(e,0,this.node),this.notifyNodeWatcher("append"))}afterParser(){this.ext.nodeTransition(this.node,"enter")}notifyNodeWatcher(e,t){this.ext.notifyNodeWatcher(this.ref,this.node,e,t)}runExpress(e,t,n){try{return Ee(e,n).call(t,t,me)}catch(s){C(ve,`Expression error:${s.message}\n`+(n?.()||e),{ob:t}),console.error(s)}}runExpressWithWatcher(e,t,n,s,i){if(this.isDestroy)return;let o="string"==typeof e?Ee(e,i):e,r=new F(()=>{if(this.isDestroy||t[Je])return J;try{return o.call(t,t,me)}catch(n){return C(ve,`Expression error:${n.message}\n${i?.()||e}`,{ob:t,express:e,node:this.node}),console.error(n),J}},n,void 0,s);return this.addWatch(r),r.value===J?void 0:r.value}addWatch(e){!1===this.watchers.includes(e)&&this.watchers.push(e)}clearWatchers(){this.watchers.forEach(e=>{e.destroy()}),this.watchers.length=0}}class we extends be{parser(){this.node=new z.Text(this.ast.text,this.parent),this.appendNode()}}class Ne extends be{parser(){this.node=new z.Comment(this.ast.text,this.parent),this.appendNode()}}class $e extends be{parser(){if(this.node=new z.Condition(this.ast.kind,this.parent),"else"!==this.ast.kind){g(this.ast.condition)&&C("Conditional Command",`The current conditional command ${this.ast.kind} has no judgment condition, please check`);let e=this.runExpressWithWatcher(this.ast.condition,this.ob,e=>{let t=!!e;if(this.node?.result!==t){if(this.node.result=t,!1===t&&this.node?.isShow)this.destroyChildrens(!0);else if(t&&!this.node?.isShow){let e=this.getElseNode();if(e&&e.isShow&&e.childrens?.length){let t=e[z.PARSERKEY];t&&t instanceof $e&&t.renderConditionChildren()}}this.reloadAllCondition()}},!1,()=>this.ast._code);this.node.result=!!e}this.appendNode(),this.renderConditionChildren()}renderId;getElseNode(){let e=this.node?.next;for(;e&&e instanceof z.Condition&&"if"!==e.cmdName;){if("else"===e.cmdName)return e;e=e.next}}renderConditionChildren(){let e=!1;return this.getPrevIfResult()?e=!1:"else"===this.ast.kind?e=!0:(this.node.result=!!this.runExpress(this.ast.condition,this.ob,()=>{this.ast._code}),this.node.result&&(e=!0)),e!==this.node.isShow&&(this.node.isShow=e,this.destroyChildrens(!0),e&&this.ast.childrens&&this.ext.parserNodes(this.ast.childrens,this.node,this.ob),!0)}getPrevIfResult(){if("if"===this.ast.kind)return!1;let e=this.node?.prev;for(;e&&e instanceof z.Condition;){if(e.result)return!0;if("if"===e.cmdName)break;e=e.prev}return!1}reloadAllCondition(){if(this.renderConditionChildren()){let e=this.node?.next;for(;e&&e instanceof z.Condition&&"if"!==e.cmdName;){let t=e[z.PARSERKEY];t&&t instanceof $e&&t.renderConditionChildren(),e=e.next}}let e=this.node?.next;for(this.node?.result||this.destroyChildrens(!0);e&&e instanceof z.Condition&&"if"!==e.cmdName;){let t=e[z.PARSERKEY];t&&t instanceof $e&&t.renderConditionChildren(),e=e.next}}}class Re extends be{parser(){this.node=new z.List(this.parent),this.appendNode(),this.renderChildrens()}renderChildrens(){switch(this.ast.keyType){case"condition":this.renderConditionChildrens();break;case"in":case"of":this.renderInOrOfChildrens()}}renderConditionChildrens(){let t=this.ast.param,n=Object.create(this.ob),s=!!this.runExpressWithWatcher(function(t,n,s){try{return new Function(e,`${e}.${t}=${n}; return ${s};`)}catch{throw new Error(`Dependency collection for the For loop command expression execution encountered an unknown error. Details: letKey: ${t}, keyVal: ${n}, condition: ${s}`)}}(t.letKey,t.defaultKeyVal,t.condition),n,()=>{this.clearWatchers(),this.renderChildrens()},!0,()=>this.ast._code),i=0;for(;s;){let e=Object.create(this.ob);W(e,t.letKey,n[t.letKey]);let o=i++;this.renderItem(e,o),this.runExpressWithWatcher(()=>n[t.letKey],n,async(n,s,i,r)=>{await Promise.resolve(),r.isDestroy||(e[t.letKey]=n,i||this.updateListItemOb(e,o))},!0,()=>this.ast._code),this.runExpress(t.step,n,()=>{this.ast._code}),s=!!this.runExpress(t.condition,n,()=>this.ast._code)}this.destroyOldChildrens(i)}renderInOrOfChildrens(){let e=this.ast.param,t=this.runExpressWithWatcher(e.dataKey,this.ob,()=>{this.clearWatchers(),this.renderChildrens()},!1,()=>this.ast._code),n=0;if(t&&(Array.isArray(t)||u(t)))for(let s in t){let i=Object.create(this.ob),o=Array.isArray(t)?Number(s):s;e.indexKey&&W(i,e.indexKey,o),e.itemKey&&W(i,e.itemKey,t[s]);let r=n++;this.renderItem(i,r,e.indexKey),e.itemKey&&this.runExpressWithWatcher(()=>t[o],t,async(n,s,a,h)=>{await Promise.resolve(),h.isDestroy||o in t&&(i[e.itemKey]=n,a||this.updateListItemOb(i,r))},!0,()=>this.ast._code)}this.destroyOldChildrens(n)}findIndexByIndex(e,t,n){let s=-1;if(this.node)for(let i=t;i<this.node.childrens.length;i++)if(this.checkObEqual(e,this.node.childrens[i]?.ob,n?[n]:void 0)){s=i;break}return s}renderItem(e,t,n){if(!this.ast.childrens?.length||!this.node)return;let s=this.node.childrens?.[t];if(s){if(this.checkObEqual(e,s.ob,n?[n]:void 0))return void(n&&s.ob[n]!==e[n]&&(s.ob[n]=e[n]));let i=this.findIndexByIndex(e,t+1,n);if(i>-1){if(t+1===i)this.node.childrens?.[t]?.[z.PARSERKEY]?.destroy();else for(let e=0;e<i-t-1;e++)this.node.childrens?.[t]?.[z.PARSERKEY]?.destroy();return this.renderItem(e,t,n)}return new Ce(this.ast,e,this.node,this.ext).init(t)}return new Ce(this.ast,e,this.node,this.ext).init()}updateListItemOb(e,t){if(!this.ast.childrens?.length||!this.node)return;let n=this.node.childrens?.[t];l(e,(e,t)=>{n.ob[e]!==t&&(n.ob[e]=t)})}destroyOldChildrens(e){if(this.node)for(;this.node.childrens.length>e;){let e=this.node.childrens.pop();if(!e)break;e[z.PARSERKEY]?.destroy(!1)}}checkObEqual(e,t,n){let s=!0;return void 0!==t&&(l(e,(e,i)=>{n?.includes(e)||t?.[e]===i||(s=!1)}),s)}}class Ce extends be{parser(e){this.node=new z.ListItem(this.ob,this.parent),this.appendNode(e),this.ast.childrens&&this.ext.parserNodes(this.ast.childrens,this.node,this.ob)}}class xe extends be{parser(){if(g(this.ast.cmdName))throw C("Template Directive","Error occurred while converting AST to VNode: Directive name not found",this.ast),new Error("Error converting AST to VNode: Directive name not found");let e;if("Html"===this.ast.cmdName||"Text"===this.ast.cmdName?e=this.ast.param:this.ast.cmdName.startsWith(ge+".")?e=`${this.ast.cmdName}(${this.ast.param})`:this.ast.cmdName in this.ob&&"function"==typeof this.ob[this.ast.cmdName]&&(e=`${t(this.ast.cmdName)}(${this.ast.param})`),e){let t=this.runExpressWithWatcher(`[${e}]`,this.ob,e=>{this.changeValue(e?.[0])},!1,()=>this.ast._code);return t||=[],"Html"===this.ast.cmdName?this.node=new z.Html(Ae(t[0]),this.parent,t[1]):this.node=new z.Text(Ae(t[0]),this.parent),void this.appendNode()}throw new Error("Command not found: "+this.ast.cmdName)}changeValue(e){this.node&&(this.node instanceof z.Html?this.node.html=Ae(e):this.node.text=Ae(e),this.ext.render?.updateNode(this.node))}}function Ae(e){return null==e||"function"==typeof e?"":e.toString()}const Oe="default";class Se extends be{parser(){let e=this.transformParam();this.node=new z.RenderSection(e.id,this.parent),this.node.params=e.params,this.node.section??=this.ob.$sections?.[e.id],this.appendNode(),this.node.section&&(this.node.section.params?(this.node.ob=Object.create(this.node.section.ob||this.ob),this.node.section.params?.forEach((e,t)=>{W(this.node.ob,e,this.node.params[t])})):this.node.ob=this.node.section.ob||this.ob,(this.node.section.parser||this.ext).parserNodes(this.node.section.asts,this.node,this.node.ob))}transformParam(){if(this.ast.param){let e=this.runExpressWithWatcher(`[${this.ast.param}]`,this.ob,e=>{let t=e?.[0]||Oe;if("string"==typeof t&&t!==this.node.id)throw new Error("The section ID cannot be dynamically changed");this.node.params=e.slice(1),this.node?.ob&&this.node.section&&this.node.section.params?.forEach((e,t)=>{this.node?.ob&&this.node.ob[e]!==this.node.params[t]&&(this.node.ob[e]=this.node.params[t])})},!0,()=>this.ast._code);return{id:e?.[0]||Oe,params:e?.slice(1)||[]}}return{id:Oe,params:[]}}}const Pe="Component Parsing";function Te(e,t){return!!t.components[e]||!!et(e)}class De extends be{loadPromise;parser(){if(this.ast.node)return this.node=this.ast.node,this.node.parent=this.parent,this.initPropData(),void(this.node&&(this.appendNode(),this.node.component?.$mount(this.node)));this.node=new z.Component(this.parent),this.initPropData(),this.appendNode(),this.initEvent(),this.loadPromise=this.renderChildren(),this.ext.promiseQueue.add(this.loadPromise),this.loadPromise.finally(()=>{this.loadPromise&&(this.ext.promiseQueue.delete(this.loadPromise),this.loadPromise=void 0)})}get canReload(){return"tagName"in this.ast||"function"==typeof this.ast.component}reload(){this.canReload?(this.beforeDestroy(),this.renderChildren()):R(Pe,"Reload operation is not supported for the current component",this.node)}initPropData(){for(let e of this.ast.attributes)if("ref"!==e.name)if("keep-alive"===e.name&&"false"!==e.value&&(this.node.keepalive=!0),e.express){let t=this.runExpressWithWatcher(e.express,this.ob,t=>{this.node.propValues[e.name]=t,this.notifyNodeWatcher("update",e.name)},!0,()=>{if(e.value)return`express:${e.value} \nfrom <${"tagName"in this.ast?this.ast.tagName:"Component"} ${e.name}="${e.value}" ... /> `});this.node.propValues[e.name]=t}else this.node.propValues[e.name]=e.value;else{if(g(e.value)){R(Pe,"The 'ref' value of the element cannot be empty");continue}this.ref=e.value,this.ext.addRef(e.value,this.node)}this.node.propValues=K(this.node.propValues)}initEvent(){this.ast.events.forEach(e=>{let t=e.functionName?this.ob[e.functionName]:void 0;void 0===e.functionName?this.node.events.push([e.name,{modifiers:e.modifiers,callBack:E}]):t&&"function"==typeof t?this.node.events.push([e.name,{modifiers:e.modifiers,callBack:n=>{let s=[];e.functionParam&&(s=this.runExpress(`[${e.functionParam}]`,this.ob,()=>{if(e._code){let t=e.modifiers?.join(".");return`express:${e._code} \nfrom: <${"tagName"in this.ast?this.ast.tagName:"Component"} @${e.name}${t?"."+t:""}="${e._code}" ... /> `}})),t.call(this.ext.ob,n,...s)}}]):C(Pe,`The callback method (${e.functionName}) specified for the ${e.name} event in the ${"tagName"in this.ast?this.ast.tagName:""} element was not found. Please check.`)})}async renderChildren(){return new Promise(async(e,t)=>{if("tagName"in this.ast){let e=this.ob.components[this.ast.tagName]||et(this.ast.tagName);if(void 0===e)return void C(Pe,`Failed to render component. Private or global component named '${this.ast.tagName}' not found.`);if(Ge in e||(e=(await e()).default),!this.node)return;{let t=this.getSections();this.node.name=this.ast.tagName,this.node.component=new e(this.node?.propValues,t,this.node?.keepalive)}}else if("function"==typeof this.ast.component){let e=this.getSections();this.node.component=new this.ast.component(this.node?.propValues,e,this.node?.keepalive)}else this.node.component=this.ast.component;if(!this.node)return;!this.node.name&&"name"in this.node.component&&this.node.component.name&&"string"==typeof this.node.component.name&&(this.node.name=this.node.component.name);let n=this,s=function(){n.loadPromise&&e(void 0)};if(this.node.component.$on("mounted",()=>{this.node?.component.$off("beforeDestroy",s),e(void 0)}),this.node.component.$on("beforeDestroy",s),this.node.component.$mount(this.node),!this.node)return;let i=this.node?.component;i.isKeepAlive&&(this.ast.node=this.node)})}getSections(){let t={},s=[];return this.ast.childrens.forEach(t=>{if(t.type===n.NodeType.COMMAND&&"if"===t.cmdName&&t.childrens){let i=t,o=t.childrens.some(e=>e.type===n.NodeType.COMMAND&&"section"===e.cmdName),r=i.condition.startsWith(e+".$sections");if(r){return this.runExpress(i.condition,this.ob,()=>i._code)?void s.push(...t.childrens):void 0}if(o&&"if"===i.kind&&!r)return void R(Pe,"While parsing the section, it was found that this section is wrapped in a conditional statement. This conditional statement only supports if judgments using $sections. It has been excluded.")}s.push(t)}),s.forEach(e=>{if(e.type===n.NodeType.COMMAND&&"section"===e.cmdName){let n=e,s=n.id||Oe;/^(\'|\")(.*?)((\'|\"))$/.test(s)&&(s=s.slice(1,-1)),t[s]=t[s]||{asts:[],ob:this.ob,params:n.paramKeys,parser:this.ext},t[s].asts.push(...e.childrens||[])}else t[Oe]=t[Oe]||{asts:[],ob:this.ob,parser:this.ext},t[Oe].asts.push(e)}),t}beforeDestroy(e){this.loadPromise&&(this.ext.promiseQueue.delete(this.loadPromise),this.loadPromise=void 0),!0===e&&this.node?.component?.isKeepAlive?this.node?.component?.$destroy():(this.node?.component?.$destroy(!0),this.ast.node=void 0)}}class ke extends be{parser(){this.node=new z.Element(this.ast.tagName,this.parent),this.initAttributes(),this.initEvents(),this.appendNode(),this.ext.parserNodes(this.ast.childrens,this.node,this.ob)}initAttributes(){for(let e of this.ast.attributes)if("ref"!==e.name)if(e.express){let t=t=>{this.node&&(this.node.attributes[e.name]=this.transformAttrVal(t),this.ext.render?.updateNode(this.node,e.name),this.notifyNodeWatcher("update",e.name))},n=this.runExpressWithWatcher(e.express,this.ob,e=>{t(e)},!1,()=>{if(e.value)return`express:${e.value} \nfrom <${this.ast.tagName} ${e.name}="${e.value}" ... /> `});this.node.attributes[e.name]=this.transformAttrVal(n)}else this.node.attributes[e.name]=e.value;else{if(g(e.value)){R("Element","The 'ref' value of the element cannot be empty");continue}this.ref=e.value,this.ext.addRef(e.value,this.node)}}initEvents(){for(let e of this.ast.events){let t=e.functionName?this.ob[e.functionName]:void 0;if(!(void 0===e.functionName||t&&"function"==typeof t))throw new Error(`The callback method (${e.functionName}) specified for the ${e.name} event in the ${this.ast.tagName} element was not found. Please check.`);this.node?.events.push([e.name,{modifiers:e.modifiers,callBack:n=>{if(void 0===t)return;let s=[];e.functionParam&&(s=this.runExpress(`[${e.functionParam}]`,this.ob,()=>{if(e._code){let t=e.modifiers?.join(".");return`express:${e._code}\nfrom <${this.ast.tagName} @${e.name}${t?"."+t:""}="${e._code}" ... /> `}})),t&&t.call(this.ext.ob,n,...s)}}])}}transformAttrVal(e){return void 0!==e&&("string"==typeof e||"boolean"==typeof e||"function"!=typeof e&&Object.prototype.toString()?e:void 0)}}class _e{asts;ob;root=new z.Root;refs={};sleeped=!1;promiseQueue=new Set;nodeWatcherEvents={};render;constructor(e,t,n){this.asts=e,this.ob=t,this.root.component=t,this.render=q.get(ee.IRENDERIOCTAGID)??new ee.DomRender,n&&n instanceof z.Node&&(this.root.parent=n,n.childrens??=[],n.childrens.push(this.root))}parser(){this.parserNodes(this.asts,this.root)}mount(e){this.sleeped&&this.weakup(),this.render?.mount(e)}parserNodes(e,t,s){if(0!==this.asts.length)for(let i of e)if(i.type===n.NodeType.TEXT)new we(i,s??this.ob,t,this).init();else if(i.type===n.NodeType.COMMENT)new Ne(i,s??this.ob,t,this).init();else if(i.type===n.NodeType.COMPONENT)new De(i,s??this.ob,t,this).init();else if(i.type===n.NodeType.ELEMENT){let e=i;Te(e.tagName,s??this.ob)?new De(e,s??this.ob,t,this).init():new ke(e,s??this.ob,t,this).init()}else if(i.type===n.NodeType.COMMAND){let e=i;switch(e.cmdName){case"if":case"elseif":case"else":new $e(e,s??this.ob,t,this).init();break;case"for":new Re(e,s??this.ob,t,this).init();break;case"RenderSection":new Se(e,s??this.ob,t,this).init();break;case"section":break;default:new xe(e,s??this.ob,t,this).init()}}}addRef(e,t){this.refs[e]=this.refs[e]||[],this.refs[e].push(t),t.ref=e}removeRef(e){for(let t in this.refs)this.refs[t].includes(e)&&m(this.refs[t],e)}addNodeWatcher(e,t){this.nodeWatcherEvents[e]=this.nodeWatcherEvents[e]||[],this.nodeWatcherEvents[e].push(t)}removeNodeWatcher(e,t){m(this.nodeWatcherEvents[e]||[],t)}notifyNodeWatcher(e,t,n,s){this.nodeWatcherEvents[e]?.forEach(e=>{e(t,n,s)})}sleep(e){let t=e||this.root;t.childrens?.forEach(e=>{let t=()=>{e.childrens&&this.sleep(e),e.sleep=!0,this.render?.removeNode(e,!0)};this.nodeTransition(e,"leave",void 0,()=>{t()})||t()}),void 0===e&&(this.sleeped=!0)}weakup(e){let t=e||this.root;t.childrens?.forEach(e=>{e.sleep=!1,this.render?.appendNode(e),e.childrens&&this.weakup(e),this.nodeTransition(e,"enter")}),void 0===e&&(this.sleeped=!1)}destroy(e){for(;this.root.childrens.length;){let t=this.root.childrens[0];t[z.PARSERKEY]?t[z.PARSERKEY].destroy(e):m(this.root.childrens,t)}this.render.destroy(),this.refs={},this.root.childrens.length=0,this.nodeWatcherEvents={},this.asts.length=0}destroyWathcers(){for(let e of this.root.childrens)e[z.PARSERKEY]&&e[z.PARSERKEY].destroyWathcers()}reSetAsts(e,t){this.destroy(t),this.render=q.get(ee.IRENDERIOCTAGID)??new ee.DomRender,this.asts=e}nodeTransition(e,t,n,s,i){if(e&&e.parent?.childrens&&(e instanceof z.Element||e instanceof z.Component)){let o=function(e){if(e instanceof z.Element||e instanceof z.Component){let t=e instanceof z.Element?e.attributes:e.propValues;return{name:t["transition-name"],type:t["transition-type"]}}}(e);if(n??=o?.name,i??=o?.type,!n)return!1;let r=Ke(e);if(r)return"enter"===t?this.render.elementToEnter(r,n,i,()=>{let t=e[z.PARSERKEY];t&&t.ref&&this.notifyNodeWatcher(t.ref,e,"after-enter"),s?.()}):this.render.elementToLeave(r,n,i,()=>{let t=e[z.PARSERKEY];t&&t.ref&&this.notifyNodeWatcher(t.ref,e,"after-leave"),s?.()}),!0;R("Render Core","Incomplete data found when executing node animation, please check")}return!1}}function Ke(e){if(e instanceof z.Element)return e;if(e.childrens&&e.childrens.length)for(let t of e.childrens)return t instanceof z.Element?t:Ke(t)}function We(e,t,n){if(void 0===t)return;const s=Array.isArray(n)?n:[n];for(const e of s){if(e===Array&&Array.isArray(t))return t;if(typeof t===e.name.toLowerCase())return t}switch(s[0]){case Number:const e=Number(t);if(!isNaN(e))return e;break;case String:return String(t)}throw new Error(`The type of ${e.toString()} in props does not match the constrained type`)}function Ie(e,t,n){let s,i,o;if("symbol"!=typeof t&&(s=v(t)),t in e?i=e[t]:s&&(i=e[s]),n&&(t in n?o=n[t]:s&&s in n&&(o=n[s])),void 0!==o){if(u(o)&&("type"in o||"required"in o||"default"in o||"validate"in o)){const e=o;if(e.required&&void 0===i)throw new Error(`props key:${t.toString()} is required, please check`);if(e.type&&(i=We(t,i,e.type)),e.validate&&!1===e.validate(i))throw new Error(`Validation failed for props key ${t.toString()}`);i=i??e.default}else i=Ve(o)?We(t,i,o):i??o;return i}return i}function Ve(e){return!![String,Array,Number,Object,Function,Boolean].includes(e)||!!Array.isArray(e)&&Ve(e[0])}function Me(e,t){if(!e.constructor)return!1;let n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);return n&&n.get}const je="Component",Le=Symbol.for("JOKER_PROPS_DATA_KEY"),Ye=Symbol.for("JOKER_PROPS_DATA_PROXY"),Be=Symbol.for("JOKER_PRIVATE_WATCHERS"),He=Symbol.for("JOKER_EVENT_DATA_KEY"),Je=Symbol.for("JOKER_IS_DESTROY"),Fe=Symbol.for("JOKER_PARSER_TEMPLATE_TARGET"),qe=Symbol.for("JOKER_SCOPE_ID"),Ge=Symbol.for("JOKER_COMPONENT_TAG"),ze=Symbol();let Qe=["constructor","$mount","$nodeTransition","$destroy","$getRef","$getRefs","$syncProp","$watchNode","$watch","$on","$off","$trigger","$render","created","mounted","beforeDestroy","sleeped","wakeup","destroyed"];class Ue{$sections;isKeepAlive;static[Ge]=!0;[qe];model={};template;$root;isSleeped=!1;components={};propsOption;[Le]={};[Fe];[Ye];[Be]=[];[He]=new Map;[Je]=!1;[ze]=!1;constructor(e,t={},n){this.$sections=t,this.isKeepAlive=n,this[Le]=e||{}}get props(){if(void 0===this[Ye]){let e=this;this[Ye]=new Proxy(e[Le],{get:(t,n)=>Ie(e[Le],n,e.propsOption),set(){throw new Error("props parameters are not allowed to be changed, only one-way data transfer is allowed")}})}return this[Ye]}$mount(e){if(!1===this[ze]){let e=()=>{let e=[],t=Object.getPrototypeOf(this);for(;null!==t&&t!==Object.prototype;)Object.getOwnPropertyNames(t).forEach(n=>{!1!==Qe.includes(n)||Me(t,n)||"function"!=typeof t[n]||t[n].prototype?.hasOwnProperty("constructor")||e.push(n)}),t=Object.getPrototypeOf(t);return e};for(let t of e())this[t]=this[t].bind(this);this[ze]=!0}if(this.$root=e,this.isKeepAlive&&this.isSleeped)return this.isSleeped=!1,this[Fe]&&this.$root?(this[Fe].mount(this.$root),this.wakeup(),this.$trigger("wakeup"),this.$rootVNode&&nt(this.$rootVNode),this):(C(je,"When attempting to wake up the current component, it was found that the rendering handler has been destroyed. The wake-up operation cannot proceed.",[this,this.$root]),this);this.isSleeped=!1,this.model=K(this.model);let t=this.created(),n=async()=>{this.$trigger("created"),this.template&&this.$render(),await this.$nextUpdatedRender(),this[Je]||(await this.mounted(),this[Je]||this.$trigger("mounted"))};return t&&t instanceof Promise?t.then(()=>{this[Je]||n()}):n(),this}$nextUpdatedRender(e){if(this[Je])return;let t=[...this[Fe]?.promiseQueue||[]],n=this.$rootVNode?.find(e=>e instanceof z.Component);if(n?.forEach(e=>{e?.component&&t.push(...e.component[Fe]?.promiseQueue||[])}),t.length)return Promise.all(t).finally(()=>{this[Je]||e?.()});this[Je]||e?.()}$nodeTransition(e,t,n,s,i){if(this.$root&&!this[Je]){if("string"==typeof e){let t=this.$getRef(e);if(!t)return void R(je,`Node with ref=${e} not found when executing node animation`);e=t}this[Fe]?.nodeTransition(e,t,n,s,i)}}$destroy(e){if(!e&&this.isKeepAlive)return this[Fe]?.sleep(),this.isSleeped=!0,this.sleeped(),this.$trigger("sleeped"),void(this.$rootVNode&&tt(this.$rootVNode));this[Je]=!0;for(let e of this[Be])e.destroy();this[Be].length=0,this[Fe]?.destroyWathcers(),this.beforeDestroy(),this.$trigger("beforeDestroy"),this[Fe]?.destroy(),this[Fe]=void 0,this.template&&Array.isArray(this.template)&&(this.template.length=0),this.$trigger("destroy"),this[He].clear(),this.$root=void 0,this.isSleeped=!1,this.$sections={},this[Ye]=void 0,this[Le]={},this.destroyed()}get $refs(){return this[Fe]?.refs||{}}$getRef(e){return this.$refs[e]?.[0]}$getRefs(e){return this.$refs[e]}$syncProp(e,t,n){"function"==typeof t&&(n=t,t=void 0),t??=e,n??=e=>e,this.model[t]=n(this.props[e]),this.$watch(()=>this.props[e],()=>{this.model[t]=n?.(this.props[e])})}get $rootVNode(){return this[Fe]?.root}$watchNode(e,t){if(this[Fe])return this[Fe]?.addNodeWatcher(e,t),()=>{this[Fe]?.removeNodeWatcher(e,t)};R(je,"Component is not yet mounted. Node observation and monitoring cannot be performed.")}$watch(e,t,n){let s=new F(()=>{if(this[Je]){for(let e of this[Be])e.destroy();return J}return e()},(e,n)=>{this[Je]||t(e,n)},void 0,n);return this[Be].push(s),[s.value,()=>{s.destroy(),m(this[Be],s)}]}$on(e,t){let n=this[He].get(e);void 0===n&&(n=new Set,this[He].set(e,n)),!1===n?.has(t)&&n.add(t)}$off(e,t){let n=this[He].get(e);n&&(t?n.delete(t):n.clear())}get $listeners(){let e={};for(let t in this[He])e[t]||=[],e[t].push(...Array.from(this[He].get(t)||[]));if(this.$root&&this.$root instanceof z.Component)for(let t of this.$root.events){let n=t[0];e[n]||=[],e[n].push(t[1].callBack)}return e}$trigger(e,t,n){if(!this.$root)return;let s={eventName:e,stopPropagation:n?.stopPropagation??(()=>{}),preventDefault:n?.preventDefault??(()=>{}),data:t,target:n?.target??this.$rootVNode,event:n?.event};if(this.$rootVNode&&this.$rootVNode.parent&&this.$rootVNode.parent instanceof z.Component&&!1===this[Fe]?.render.triggerEvent(this.$rootVNode.parent,e,s))return;let i=this[He].get(e);i?.size&&[...i].forEach(e=>{e(s)});let o=this[He].get("*");o?.size&&[...o].forEach(e=>{e(s)})}$render(e,t){e??=this.template,this.template="function"==typeof e?e(s):e,this.$root&&(this.template??=[],this[Fe]?.reSetAsts(this.template,t),this[Fe]??=new _e(this.template,this,this.$root),this[Fe].parser(),this.$root&&this[Fe].mount(this.$root))}created(){}mounted(){}beforeDestroy(){}sleeped(){}wakeup(){}destroyed(){}}const Xe={};function Ze(e,t){if("string"==typeof e)t&&(Xe[e]=t);else for(let t in e)Xe[t]=e[t]}function et(e){return Xe[e]}function tt(e){e.childrens?.forEach(e=>{e instanceof z.Component&&e.component?.sleeped(),tt(e)})}function nt(e){e.childrens?.forEach(e=>{e instanceof z.Component&&e.component?.wakeup(),nt(e)})}class st extends Ue{template=[];cache=new Map;async mounted(){this.$watch(()=>this.props.name,async e=>{this.$render([],!0),await Promise.resolve(),this.$root&&this.loadComponent(e)}),await this.loadComponent(this.props.name)}propsVaule;created(){this.initProps()}initProps(){let e={};this.props.props||(Object.keys(this.props).forEach(t=>{!1!==this.filterProps(t)&&(e[t]=this.props[t],this.$watch(()=>this.props[t],()=>{this.propsVaule[t]=this.props[t]}))}),this.propsVaule=K(e))}filterProps(e){if("string"!=typeof e)return!1;let t=v(e);return"transition-name"!==t&&"name"!==t&&"keep-alive"!==t&&"ref"!==t&&void 0}async loadComponent(e){if(!e)return void this.$render([],this.isKeepAlive);let t;if(this.isKeepAlive){let t=this.cache.get(e);if(t)return void this.$render([i(t,{"transition-name":this.props["transition-name"]})],!0)}let n=this.$rootVNode?.parent?.[z.PARSERKEY]?.ob.components,s=n?.[e];void 0===s&&(s=et(e)),s?(Ge in s||(s=(await s()).default),t=new s(this.props.props||this.propsVaule,this.$sections,this.isKeepAlive),t.$on("*",e=>{this.$trigger(e.eventName,e.data,e)}),this.isKeepAlive&&this.cache.set(e,t),this.$render([i(t,{"transition-name":this.props["transition-name"]})],this.isKeepAlive)):R("component",`Component ${e} not found`)}beforeDestroy(){this.removeCache()}removeCache(e){if(e){let t=this.cache.get(e);this.cache.delete(e),t&&t.$destroy(!0)}else this.cache.forEach(e=>{e.$destroy(!0)}),this.cache.clear()}}class it extends Ue{template=function(){return[o("RenderSection")]};async mounted(){await this.$nextUpdatedRender()}}Ze({template:it,component:st});class ot{eventDatas=new Map;on(e,t){let n=this.eventDatas.get(e);void 0===n&&(n=[],this.eventDatas.set(e,n));const s={callBack:t};return n.push(s),()=>{n&&m(n,s)}}once(e,t){let n=this.eventDatas.get(e);void 0===n&&(n=[],this.eventDatas.set(e,n));const s={callBack:t,once:!0};return n.push(s),()=>{n&&m(n,s)}}off(e,t){if(void 0!==e)if(t){const n=this.eventDatas.get(e),s=n?.find(e=>e.callBack===t);s&&m(n,s)}else this.eventDatas.delete(e);else this.eventDatas.clear()}async trigger(e,t){let n=[...this.eventDatas.get(e)||[]];if(n.push(...this.eventDatas.get("*")||[]),n&&n.length){let s=0,i=0,o=!1;for(;n[s];){const r=n[s],a=await r.callBack({stopPropagation:()=>o=!0,callTimes:i,eventName:e},t);if(r.once?m(n,r):s++,!1===a||o)return!1}}}}export{J as BREAK_WATCH_UPDATE,Ue as Component,st as ComponentContainer,O as Dep,ot as EventBus,q as IContainer,Je as IS_DESTROY,Ge as JOKER_COMPONENT_TAG,G as JOKER_VNODE_TAG,S as OBJECTPROXY_DEPID,Fe as PARSER_TEMPLATE_TARGET,_e as ParserTemplate,ee as Render,qe as SCOPE_ID,V as ShallowObserver,it as Template,z as VNode,F as Watcher,me as __GLONAL_FUNTIONS__,d as __JOKER_HMR_RUNTIME,Y as combinedReply,W as defineObserverProperty,et as getGlobalComponent,B as isObserverData,K as observer,Ze as registerGlobalComponent,ye as registerGlobalFunction};