@joker.front/core 1.3.83 → 1.3.84
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 +46 -38
- package/dist/bundle.es.js +1 -1
- package/dist/bundle.es.js.map +1 -0
- package/dist/bundle.js +1 -1
- package/dist/bundle.js.map +1 -0
- package/package.json +24 -18
- package/types/component.d.ts +1 -0
- package/types/parser/vnode.d.ts +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.es.js","sources":["../src/hmr.ts","../node_modules/.pnpm/@joker.front+shared@1.5.32/node_modules/@joker.front/shared/dist/bundle.es.js","../src/observer/dep.ts","../src/observer/index.ts","../src/observer/watcher.ts","../src/utils/DI.ts","../src/parser/vnode.ts","../src/parser/render.ts","../src/global.ts","../src/parser/parser.ts","../src/parser/text.ts","../src/parser/comment.ts","../src/parser/command/condition.ts","../src/parser/command/for.ts","../src/parser/command/code.ts","../src/parser/command/section.ts","../src/parser/component.ts","../src/parser/element.ts","../src/parser/index.ts","../src/props.ts","../src/utils/index.ts","../src/component.ts","../src/event-bus.ts"],"sourcesContent":["import { VNode } from \"./index\";\nimport { Component, ComponentConstructor, TemplateType } from \"./component\";\nimport { ParserComponent } from \"./parser/component\";\n\nconst HMR_MAP: Map<string, Set<Component>> = new Map();\nconst HMR_RENDER_MAP: Map<string, { render: TemplateType }> = new Map();\nconst HMR_COMPONENT_MAP: Map<string, { component: ComponentConstructor }> = new Map();\n/**\n * 热更新助手(热更新使用)(构建时会按需剔除)\n */\nexport let __JOKER_HMR_RUNTIME = {\n recordRender: (id: string, template: { render: TemplateType }) => {\n HMR_RENDER_MAP.set(id, template);\n },\n\n recordComponent: (id: string, component: { component: ComponentConstructor }) => {\n HMR_COMPONENT_MAP.set(id, component);\n },\n\n record: (id: string, component: Component) => {\n if (HMR_MAP.get(id) === undefined) {\n HMR_MAP.set(id, new Set());\n }\n HMR_MAP.get(id)!.add(component);\n\n component.$on(\"destroy\", () => {\n HMR_MAP.get(id)?.delete(component);\n });\n },\n\n reload: (id: string, component: ComponentConstructor) => {\n let recode = HMR_COMPONENT_MAP.get(id);\n if (!recode) return;\n\n //1. 更新值\n recode.component = component;\n\n //2. 更新已渲染的\n let rendered = HMR_MAP.get(id);\n\n if (!rendered) return;\n let reloadRecodes = Array.from(rendered);\n\n //刷新/重载组件时会重新完成map绘制\n rendered.clear();\n\n //引用类型存在循环\n reloadRecodes.forEach((c) => {\n //未被销毁\n if (c.$root) {\n if (c.$rootVNode?.parent) {\n let parent = c.$rootVNode.parent;\n if (\n parent instanceof VNode.Component &&\n parent[VNode.PARSERKEY] &&\n //直接指向内存的组件,无法重新实例化\n (parent[VNode.PARSERKEY] as ParserComponent).canReload\n ) {\n (parent[VNode.PARSERKEY] as ParserComponent).reload();\n } else {\n window.onbeforeunload = null;\n //无法更新\n location.reload();\n return;\n }\n } else {\n window.onbeforeunload = null;\n //无根的话只能重载\n location.reload();\n return;\n }\n }\n });\n },\n\n rerender: (id: string, template: TemplateType) => {\n let prevRender = HMR_RENDER_MAP.get(id);\n //更新render根方法,以实现未实例化的组件更新\n if (prevRender) {\n prevRender.render = template;\n }\n //完成已实例化的组件的更新\n HMR_MAP.get(id)?.forEach((c) => {\n c.$render(template);\n });\n }\n};\n","function e(e){if(null==e)return!0;if(t(e)){for(let t in e)return!1;return!0}return!1}function t(e){return null!==e&&\"object\"==typeof e}function n(e){return!!e.__proto__}function r(e,t){Object.getOwnPropertyNames(e).forEach(n=>{t(n,e[n])})}function i(e,t,n,r){Object.defineProperty(e,t,{value:n,enumerable:r,writable:!0,configurable:!0})}function o(e,t){return t in e}function a(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function l(e){return\"[object Object]\"===Object.prototype.toString.call(e)}function u(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 r of n){let n=e[r];t[r]=\"object\"==typeof n?u(n):n}return t}function c(e,t=\"\"){let n,r=t.split(\".\"),i=e,o=r.length;for(let e=0;e<o;e++){let t=r[e];if(!i)break;if(e===o-1){n=i[t];break}i=i[t]}return n}function s(e,t,n){return Array.isArray(e)&&Array.isArray(t)?p(e,t,n):f(e,t,n)}function f(e,n,r){if(e===n)return!0;let i=t(e),o=t(n);if(i&&o){if(l(e)&&l(n)){let t=Object.keys(e);if(t.length!==Object.keys(n).length)return!1;if(r){for(let r of t)if(e[r]!==n[r])return!1;return!0}return JSON.stringify(e)===JSON.stringify(n)}return e===n}return!i&&!o&&String(e)===String(n)}function h(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 p(e,t,n){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(n){if(e[r]!==t[r])return!1}else if(!1===f(e[r],t[r],n))return!1;return!0}function d(e){return Array.apply(null,{length:e}).map((e,t)=>t)}function b(e,t){t>0&&([e[t-1],e[t]]=[e[t],e[t-1]])}function m(e,t){t<e.length-1&&([e[t+1],e[t]]=[e[t],e[t+1]])}let y=0;function M(){return\"guid_\"+y+++\"_\"+(new Date).getTime()+v(12)}function v(e=32){let t=[],n=[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"y\",\"z\"];for(let r=0;r<e;r++){let e=Math.round(Math.random()*(n.length-1));t.push(n[e])}return t.join(\"\")}function x(e){return!e||\"\"===e.trim()}function O(e){return e.replace(/^[\\s\\r\\n]+/,\"\")}function w(e){return e.replace(/[\\s\\r\\n]+$/,\"\")}function $(e){return e.replace(/[\\s\\r\\n]+/g,\"\")}function j(e){let t=document.createElement(\"textarea\");t.setAttribute(\"readonly\",\"readonly\"),t.value=e,document.body.appendChild(t),t.select();let n=document.execCommand(\"copy\");return document.body.removeChild(t),n}function A(e,t=\"-\"){return(e=e||\"\").split(/(?=[A-Z])/).map(e=>e.toLowerCase()).join(t)}function C(e=\"\"){return e.replace(/[|\\\\{}()[\\]^$+*?.]/g,\"\\\\$&\")}function S(e=\"\"){return e&&0!==e.length?e.charAt(0).toUpperCase()+e.slice(1):e}function k(e,t,n=!0,r=!0){let i=/^([\\S\\s]+?)\\.\\.\\.([\\S\\s]+)$/.exec(t);if(!i||i.length<3||i[1]===i[2])throw new Error(`${t}: Format must be in X...X style, and the keywords before and after must not be the same`);const o=i[1],a=i[2],l=e=>e.replace(/[-[\\]{}()*+?.\\\\^$|,]/g,\"\\\\$&\"),u=l(o),c=l(a),s=new RegExp(`${u}|${c}`,\"g\"),f=/(['\"])(.*?)\\1/g,h=[];let g;if(r)for(f.lastIndex=0;g=f.exec(e);)if(void 0!==g.index){const e=g.index,t=e+g[0].length;h.push({start:e,end:t})}const p=[];let d,b=0,m=-1;for(s.lastIndex=0;d=s.exec(e);){const t=d.index,r=d[0];if(!h.some(e=>t>=e.start&&t<e.end))if(r===o)0===b&&(m=t),b++;else if(r===a&&b>0&&(b--,0===b&&-1!==m)){const r=t+a.length,i=e.substring(m,r);if(p.push({index:m,value:i}),!n)break}}if(0!==b)throw new Error(`${e}: There are unclosed separators, please check`);return p}const F=/#/g,D=/&/g,E=/\\//g,T=/=/g,q=/\\?/g,I=/\\+/g,L=/%5B/g,U=/%5D/g,_=/%5E/g,P=/%60/g,B=/%7B/g,R=/%7C/g,N=/%7D/g,J=/%20/g;function W(e){return encodeURI(\"\"+e).replace(R,\"|\").replace(L,\"[\").replace(U,\"]\")}function X(e){return W(e).replace(B,\"{\").replace(N,\"}\").replace(_,\"^\")}function z(e){return W(e).replace(I,\"%2B\").replace(J,\"+\").replace(F,\"%23\").replace(D,\"%26\").replace(P,\"`\").replace(B,\"{\").replace(N,\"}\").replace(_,\"^\")}function H(e){return z(e).replace(T,\"%3D\")}function V(e){return W(e).replace(F,\"%23\").replace(q,\"%3F\")}function Z(e){return void 0===e?\"\":V(e).replace(E,\"%2F\")}function G(e){if(void 0===e||\"\"===e)return\"\";try{return decodeURIComponent(\"\"+e)}catch(t){console.warn(`转码decoding ${e} 失败,使用了原值字符`)}return\"\"+e}const K=/\\?.*$/s,Q=/#.*$/s,Y=/^(https?:)?\\/\\//,ee=/^\\s*data:/i;function te(e){return e.replace(Q,\"\").replace(K,\"\")}function ne(e){return Y.test(e)}function re(e){return ee.test(e)}function ie(e){e=e.split(\"#\")[0];let t={};return e.replace(/([^?=&]+)=([^?=&]+)/g,function(e,n,r){return t[n]=r,\"\"}),t}function oe(e){let t={};if(\"\"===e||\"?\"===e)return t;let n=(\"?\"===e.charAt(0)?e.slice(1):e).split(\"&\");for(let e of n){e=e.replace(I,\" \");let n=e.indexOf(\"=\"),r=G(-1===n?e:e.slice(0,n)),i=-1===n?void 0:G(e.slice(n+1));if(r in t){let e=t[r];Array.isArray(e)?e.push(i):t[r]=[e,i]}else t[r]=i}return t}function ae(e){let t=[];for(let n in e){let r=e[n];n=H(n),(Array.isArray(r)?r.map(e=>e&&z(e)):[r&&z(r)]).forEach(e=>{void 0===e?t.push(`${n}`):t.push(`${n}=${e}`)})}return t.join(\"&\")}function le(e,t=\"/\"){let n,r={},i=\"\",o=\"\",a=e.indexOf(\"#\"),l=e.indexOf(\"?\");return-1!==a&&a<l&&l>=0&&(l=-1),l>-1&&(n=e.slice(0,l),i=e.slice(l+1,a>-1?a:e.length),r=oe(i)),a>-1&&(n=n||e.slice(0,a),o=e.slice(a,e.length)),n=ce(void 0===n?e:n,t),{fullPath:n+(i&&\"?\")+i+o,path:n,query:r,hash:o}}function ue(e){let t=e.query?ae(e.query):\"\";return(e.path||\"\")+(t&&\"?\")+t+(e.hash||\"\")}function ce(e,t){if(e.startsWith(\"/\"))return e;if(!e)return t;let n=t.split(\"/\"),r=e.split(\"/\"),i=r[r.length-1];\"..\"!==i&&\".\"!==i||r.push(\"\");let o,a,l=n.length-1;for(o=0;o<r.length;o++)if(a=r[o],\".\"!==a){if(\"..\"!==a)break;l>1&&l--}return n.slice(0,l).join(\"/\")+\"/\"+r.slice(o-(o===r.length?1:0)).join(\"/\")}function se(e,t){return t&&!1!==e.toLowerCase().startsWith(t.toLowerCase())?e.slice(t.length):e}function fe(){let e=[];return{add:function(t){return e.push(t),()=>{h(e,t)}},callbacks:e,reset:function(){e=[]},remove:function(t){h(e,t)}}}let he=(...e)=>{},ge=\"warn\";const pe=[\"silent\",\"error\",\"warn\",\"info\"];function de(){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 be(e,t,n,r){pe.indexOf(e)<=pe.indexOf(ge)&&(void 0===r?console[e](`${de()} [${t}]:`,n):console[e](`${de()} [${t}]:`,n,r))}let me={info:function(e,t,n){be(\"info\",e,t,n)},warn:function(e,t,n){be(\"warn\",e,t,n)},error:function(e,t,n){be(\"error\",e,t,n)},setLoggerLeve:function(e){ge=e}};const ye={\"<\":\"<\",\">\":\">\",\"&\":\"&\",'\"':\""\",\"'\":\"'\"},Me={lt:\"<\",gt:\">\",nbsp:\" \",amp:\"&\",quot:'\"',\"#39\":\"'\"};function ve(e){return e.replace(/[<>&\"']/g,e=>ye[e]||\"\")}function xe(e){return e.replace(/&(lt|gt|nbsp|amp|quot|#39);/gi,(e,t)=>Me[t]||\"\")}class Oe{format;h=0;s=100;v=100;a=100;value=\"\";constructor(e=\"hex\"){this.format=e}setVal(e,t){this[e]=t,this.doOnChange()}toRgb(){return Ce(this.h,this.s,this.v)}setFormat(e){this.format=e,this.doOnChange()}fromString(e){if(!e)return this.h=0,this.s=100,this.v=100,void this.doOnChange();let t=(e,t,n)=>{this.h=Math.max(0,Math.min(360,e)),this.s=Math.max(0,Math.min(100,t)),this.v=Math.max(0,Math.min(100,n)),this.doOnChange()};if(-1!==e.indexOf(\"rgb\")){let n=e.replace(/rgba|rgb|\\(|\\)/gm,\"\").split(/\\s|,/g).filter(e=>\"\"!==e).map((e,t)=>t>2?parseFloat(e):parseInt(e,10));if(4===n.length?this.a=Math.floor(100*n[3]):3===n.length&&(this.a=100),n.length>=3){let{h:e,s:r,v:i}=Ae(n[0],n[1],n[2]);t(e,r,i)}}else if(-1!==e.indexOf(\"#\")){let n=e.replace(\"#\",\"\").trim();if(!/^(?:[0-9a-fA-F]{3}){1,2}|[0-9a-fA-F]{8}$/.test(n))return;let r=0,i=0,o=0;3===n.length?(r=je(n[0]+n[0]),i=je(n[1]+n[1]),o=je(n[2]+n[2])):6!==n.length&&8!==n.length||(r=je(n.substring(0,2)),i=je(n.substring(2,4)),o=je(n.substring(4,6))),8===n.length?this.a=Math.floor(je(n.substring(6))/255*100):3!==n.length&&6!==n.length||(this.a=100);let{h:a,s:l,v:u}=Ae(r,i,o);t(a,l,u)}}compare(e){return Math.abs(e.h-this.h)<2&&Math.abs(e.s-this.s)<1&&Math.abs(e.v-this.v)<1&&Math.abs(e.a-this.a)<1}doOnChange(){let{h:e,s:t,v:n,a:r,format:i}=this;if(\"rgba\"===i){let{r:i,g:o,b:a}=Ce(e,t,n);this.value=`rgba(${i}, ${o}, ${a}, ${r/100})`}else this.value=Se(e,t,n,r/100)}}let we=function(e,t){var n;\"string\"==typeof(n=e)&&-1!==n.indexOf(\".\")&&1===parseFloat(n)&&(e=\"100%\");let r=function(e){return\"string\"==typeof e&&-1!==e.indexOf(\"%\")}(e);return e=Math.min(t,Math.max(0,parseFloat(e))),r&&(e=parseInt(e*t,10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)},$e={A:10,B:11,C:12,D:13,E:14,F:15},je=function(e){return 2===e.length?16*($e[e[0].toUpperCase()]||+e[0])+($e[e[1].toUpperCase()]||+e[1]):$e[e[1].toUpperCase()]||+e[1]};function Ae(e,t,n){e=we(e,255),t=we(t,255),n=we(n,255);let r=Math.max(e,t,n),i=Math.min(e,t,n),o=0,a=0,l=r,u=r-i;if(a=0===r?0:u/r,r===i)o=0;else{switch(r){case e:o=(t-n)/u+(t<n?6:0);break;case t:o=(n-e)/u+2;break;case n:o=(e-t)/u+4}o/=6}return{h:360*o,s:100*a,v:100*l}}function Ce(e,t,n){e=6*we(e,360),t=we(t,100),n=we(n,100);let r=Math.floor(e),i=e-r,o=n*(1-t),a=n*(1-i*t),l=n*(1-(1-i)*t),u=r%6,c=[n,a,o,o,l,n][u],s=[l,n,n,a,o,o][u],f=[o,o,l,n,n,a][u];return{r:Math.round(255*c),g:Math.round(255*s),b:Math.round(255*f)}}let Se=function(e,t,n,r){let i=Ce(e,t,n),o=Math.floor(r*i.r+255*(1-r)),a=Math.floor(r*i.g+255*(1-r)),l=Math.floor(r*i.b+255*(1-r));return\"#\"+(\"0\"+o.toString(16)).slice(-2)+(\"0\"+a.toString(16)).slice(-2)+(\"0\"+l.toString(16)).slice(-2)};function ke(e,t,n={}){let r,i=!1,o=0,a=()=>{r&&clearTimeout(r)};function l(...u){let c=Date.now()-o;if(i)return;let s=()=>{o=Date.now(),t.apply(l,u)};function f(){r=void 0}n.noLeading||!n.debounceMode||r||s(),a(),void 0===n.debounceMode&&c>e?n.noLeading?(o=Date.now(),n.noTrailing||(r=setTimeout(n.debounceMode?f:s,e))):s():!0!==n.noTrailing&&(r=setTimeout(n.debounceMode?f:s,void 0===n.debounceMode?e-c:e))}return l.cancel=e=>{a(),i=!e},l}function Fe(e,t,n=!1){return ke(e,t,{debounceMode:!1!==n})}async function De(e){return await new Promise(t=>{setTimeout(()=>{t(!0)},e)})}export{D as AMPERSAND_RE,Oe as Color,P as ENC_BACKTICK_RE,U as ENC_BRACKET_CLOSE_RE,L as ENC_BRACKET_OPEN_RE,_ as ENC_CARET_RE,N as ENC_CURLY_CLOSE_RE,B as ENC_CURLY_OPEN_RE,R as ENC_PIPE_RE,J as ENC_SPACE_RE,T as EQUAL_RE,F as HASH_RE,q as IM_RE,I as PLUS_RE,E as SLASH_RE,ee as URL_DATA_RE,Y as URL_EXTERNAL_RE,Q as URL_HASH_RE,K as URL_QUERY_RE,p as _arrayEquals,f as _looseEqual,S as capitalizeFirstLetter,te as cleanUrl,j as copyText,Fe as debounce,G as decode,u as deepClone,i as defineProperty,X as encodeHash,Z as encodeParam,V as encodePath,H as encodeQueryKey,z as encodeQueryValue,xe as escape2Html,C as escapeRegexpString,r as foEachProperties,ie as getUrlQueryParams,c as getValueByPath,v as guid,a as hasOwnProperty,o as hasProperty,n as hasProto,Ce as hsv2rgb,ve as html2Escape,M as id,re as isDataUrl,e as isEmptyObject,x as isEmptyStr,s as isEqual,ne as isExternalUrl,t as isObject,l as isPlainObject,me as logger,k as matchGroupContent,m as moveDown,b as moveUp,he as noop,oe as parseQuery,le as parseURL,d as range,h as remove,g as removeFilter,ce as resolveRelativePath,Ae as rgb2hsv,De as sleep,ae as stringifyQuery,ue as stringifyURL,se as stripBase,ke as throttle,A as toLowerCase,$ as trimAll,w as trimEnd,O as trimStart,fe as useCallbacks};\n","import { remove, removeFilter } from \"@joker.front/shared\";\nimport { Watcher } from \"./watcher\";\n\n/**\n * Dependency manager acting as a bridge between watchers and proxied objects\n * Data change flow: Ob -> dep -> watcher\n * Dependency setup flow: watcher -> dep\n */\nexport class Dep {\n /**\n * Current target watcher\n *\n * Set this static value before changing a value to collect dependencies,\n * clear it after setup.\n *\n * Using a static value instead of a method allows handling\n * multiple value changes/reads.\n */\n public static target?: Watcher<any>;\n\n public watchers: Map<string | symbol | number, Watcher<any>[]> = new Map();\n\n /**\n * Establish a dependency for a key\n * @param key Property key to depend on\n */\n public depend(key: string | symbol | number) {\n Dep.target?.addDep(this, key);\n }\n\n /**\n * Add a watcher for a key\n * @param key Property key to watch\n * @param watcher Watcher instance to add\n */\n public addWatcher(key: string | symbol | number, watcher: Watcher<any>) {\n let watchers = this.watchers.get(key) || [];\n\n watchers.push(watcher);\n\n this.watchers.set(key, watchers);\n }\n\n /**\n * Remove a watcher for a key\n * @param key Property key to unwatch\n * @param watcher Watcher instance to remove\n */\n public removeWatcher(key: string | symbol | number, watcher: Watcher<any>) {\n const watchers = this.watchers.get(key);\n\n if (watchers) {\n remove(watchers, watcher);\n }\n }\n\n /**\n * Notify watchers of a key change\n * @param key Property key that changed\n */\n public notify(key: string | symbol | number) {\n const watchers = this.watchers.get(key);\n\n if (watchers) {\n // Remove destroyed watchers\n removeFilter(watchers, (w) => w.isDestroy);\n\n /**\n * Use a copy of watchers to avoid issues with\n * dynamic additions/removals during notification\n */\n const _watchers = [...watchers];\n\n _watchers.forEach((w) => {\n if (!w.isDestroy) {\n w.update();\n }\n });\n }\n }\n}\n\n/**\n * Notify groups of dependencies in a batch\n * @param list Map of Dep instances to their respective keys\n */\nexport function notifyGroupDeps(list: Map<Dep, Array<string | symbol | number>>) {\n const watchers: Watcher[] = [];\n const hasNotifyWatchers: Watcher[] = [];\n\n // Flatten watchers to avoid dynamic changes during notification\n list.forEach((keys, dep) => {\n keys.forEach((key) => {\n watchers.push(...(dep.watchers.get(key) || []));\n });\n });\n\n watchers.forEach((watcher) => {\n if (hasNotifyWatchers.includes(watcher)) return;\n\n !watcher.isDestroy && watcher.update();\n\n hasNotifyWatchers.push(watcher);\n });\n}\n","import {\n defineProperty,\n deepClone,\n hasOwnProperty,\n hasProperty,\n isObject,\n isPlainObject,\n logger\n} from \"@joker.front/shared\";\nimport { Dep, notifyGroupDeps } from \"./dep\";\nimport { Component, JOKER_COMPONENT_TAG, JOKER_VNODE_TAG, ParserTemplate, Watcher } from \"../index\";\n\n/**\n * Symbol key for storing the Dep instance of a proxied object\n */\nexport const OBJECTPROXY_DEPID = Symbol.for(\"__JOKER_OBJECT_PROXY_DEP_ID__\");\n\nconst OBJECTPROXY_DATA_KEY = Symbol.for(\"__JOKER_OBJECT_PROXY_DATA_KEY__\");\n\n/**\n * Symbol key for virtual dependency level tracking in deep observation\n */\nconst OBJECTPROXY_DEPLEVE_ID = Symbol.for(\"__JOKER_OBJECTPROXY_DEPLEVE_ID__\");\n\n/**\n * Check if an object can be proxied for observation\n * @param data Object to check\n * @returns True if the object can be proxied\n */\nfunction checkEnableProxy(data: any): boolean {\n try {\n return (\n data !== undefined &&\n data !== null &&\n isObject(data) &&\n data !== window.parent &&\n data instanceof Window === false &&\n data instanceof Watcher === false &&\n data instanceof Component === false &&\n data instanceof ParserTemplate === false &&\n (Array.isArray(data) || isPlainObject(data) || data instanceof Set || data instanceof Map) &&\n // Not frozen\n !Object.isFrozen(data) &&\n !(data instanceof Element) &&\n !(JOKER_VNODE_TAG in data) &&\n !(JOKER_SHALLOW_OBSERVER_TAG in data) &&\n !(JOKER_COMPONENT_TAG in data)\n );\n } catch {\n return false;\n }\n}\n\n/**\n * Create a reactive proxy for an object\n * @param data Object to proxy\n * @returns Proxied object\n */\nfunction proxyData<T extends object | Set<any>>(data: T): T {\n let proxyDepTarget = getProxyDep(data);\n\n // Return existing proxy if already observed\n if (proxyDepTarget) {\n return data;\n }\n\n // Check for existing proxy data key\n if (data && data.hasOwnProperty(OBJECTPROXY_DATA_KEY)) {\n let readiedData = Reflect.get(data, OBJECTPROXY_DATA_KEY);\n if (readiedData) {\n return readiedData as T;\n }\n }\n\n let dep = new Dep();\n\n // Flag to skip notifications during initial setup\n let resetData = true;\n\n let result = new Proxy(data, {\n get(target: any, key: string | symbol, receiver: any) {\n if (target instanceof Set || target instanceof Map) {\n if (key === \"add\") {\n let result = Reflect.get(target, key) as Function;\n return (value: any) => {\n if (checkEnableProxy(value)) {\n // Observe objects before adding\n value = observer(value);\n }\n\n let callResult = result.call(target, value);\n notifyDep(dep, \"size\");\n notifyDep(dep, OBJECTPROXY_DEPLEVE_ID);\n return callResult;\n };\n } else if (key === \"set\") {\n let result = Reflect.get(target, key) as Function;\n return (key: any, value: any) => {\n if (checkEnableProxy(value)) {\n // Observe objects before setting\n value = observer(value);\n }\n\n let callResult = result.call(target, key, value);\n notifyDep(dep, \"size\");\n notifyDep(dep, OBJECTPROXY_DEPLEVE_ID);\n return callResult;\n };\n } else if (key === \"delete\" || key === \"clear\") {\n let result = Reflect.get(target, key) as Function;\n return (value: any) => {\n let callResult = result.call(target, value);\n\n if (key === \"clear\" || callResult) {\n notifyDep(dep, \"size\");\n notifyDep(dep, OBJECTPROXY_DEPLEVE_ID);\n }\n return callResult;\n };\n }\n let result = Reflect.get(target, key);\n if (typeof result === \"function\") {\n return result.bind(target);\n }\n }\n\n // Skip internal data key\n if (key === OBJECTPROXY_DATA_KEY) {\n return undefined;\n }\n\n // Return the Dep instance for this proxy\n if (key === OBJECTPROXY_DEPID) {\n return dep;\n }\n\n // Skip virtual dependency key\n if (key === OBJECTPROXY_DEPLEVE_ID) {\n return undefined;\n }\n\n let result = Reflect.get(target, key);\n\n if (key === Symbol.toStringTag) {\n return result;\n }\n\n // Skip non-existent properties (except length/size)\n if (hasProperty(target, key) === false && key !== \"length\" && key !== \"size\") {\n return result;\n }\n\n // Collect dependency for this property\n dep.depend(key);\n\n // Track nested object dependencies\n if (checkEnableProxy(result)) {\n getProxyDep(result)?.depend(OBJECTPROXY_DEPLEVE_ID);\n }\n\n return result;\n },\n set(target: object, key: string | symbol, value: any): boolean {\n if (resetData) {\n Reflect.set(target, key, value);\n return true;\n }\n if (checkEnableProxy(value)) {\n // Observe new object values\n value = observer(value);\n }\n let isNewProperty = hasOwnProperty(target, key) === false;\n\n let isChange = Reflect.get(target, key) !== value;\n\n Reflect.set(target, key, value);\n\n // Notify on value changes (or length changes for arrays)\n if (isChange || (key === \"length\" && Array.isArray(target))) notifyDep(dep, key);\n\n // Notify on array length changes or new object properties\n if (Array.isArray(target)) {\n key === \"length\" && notifyDep(dep, OBJECTPROXY_DEPLEVE_ID);\n } else if (isNewProperty) {\n notifyDep(dep, OBJECTPROXY_DEPLEVE_ID);\n }\n\n return true;\n },\n deleteProperty(target: object, key: string | symbol): boolean {\n Reflect.deleteProperty(target, key);\n\n // Notify on property deletion for non-arrays\n if (Array.isArray(target) === false) {\n notifyDep(dep, OBJECTPROXY_DEPLEVE_ID);\n }\n\n return true;\n }\n });\n\n // Attach proxy reference to original object\n defineProperty(data, OBJECTPROXY_DATA_KEY, result, false);\n\n // Recursively observe existing properties\n for (let key in data) {\n let itemData = data[key];\n\n // Observe nested objects that aren't already observed\n if (checkEnableProxy(itemData) && !getProxyDep(itemData)) {\n //@ts-ignore\n result[key] = proxyData(data[key]);\n }\n }\n resetData = false;\n\n return result;\n}\n\n/**\n * Get the Dep instance for a proxied object\n * @param data Object to check\n * @returns Dep instance or undefined\n */\nfunction getProxyDep(data: any): Dep | undefined {\n if (isObject(data)) {\n return Reflect.get(data, OBJECTPROXY_DEPID);\n }\n}\n\n/**\n * Create a reactive version of an object\n * @param data Object to observe\n * @param clone Whether to clone the object before observing\n * @returns Reactive object\n */\nexport function observer<T extends Object>(data: T, clone: boolean = false): T {\n if (checkEnableProxy(data) === false) {\n throw new Error(\"The provided data is not of the correct type. It must be an array or an object.\");\n }\n\n if (clone) {\n return proxyData(deepClone(data));\n } else {\n return proxyData(data);\n }\n}\n\n/**\n * Define a reactive property on an object\n * @param target Object to define property on\n * @param key Property key\n * @param value Property value\n */\nexport function defineObserverProperty(target: any, key: string | symbol | number, value: any) {\n let propertyVal: any = value;\n\n if (checkEnableProxy(value)) {\n // Observe object values\n propertyVal = observer(value);\n }\n\n let dep = new Dep();\n\n Object.defineProperty(target, key, {\n // Enumerable and configurable\n enumerable: true,\n configurable: true,\n get: () => {\n dep.depend(key);\n\n // Track nested dependencies\n getProxyDep(propertyVal)?.depend(OBJECTPROXY_DEPLEVE_ID);\n\n return propertyVal;\n },\n set: (value) => {\n if (value === propertyVal) {\n return;\n }\n\n if (checkEnableProxy(value)) {\n // Observe new object values\n value = observer(value);\n }\n\n propertyVal = value;\n\n // Notify dependents\n notifyDep(dep, key);\n }\n });\n}\n\nconst JOKER_SHALLOW_OBSERVER_TAG = Symbol.for(\"JOKER_SHALLOW_OBSERVER\");\n/**\n * Shallow observer that watches only the root value\n * @returns Shallow observer instance\n */\nexport class ShallowObserver<T> {\n [JOKER_SHALLOW_OBSERVER_TAG] = true;\n private dep = new Dep();\n constructor(private data: T) {}\n\n /**\n * Flag indicating if the value has changed\n */\n public isChanged: boolean = false;\n\n get value() {\n this.dep.depend(OBJECTPROXY_DEPLEVE_ID);\n return this.data;\n }\n\n set value(newVal) {\n if (Object.is(newVal, this.data) === false) {\n this.isChanged = true;\n\n this.data = newVal;\n notifyDep(this.dep, OBJECTPROXY_DEPLEVE_ID);\n }\n }\n}\n\n/**\n * Flag indicating if combined replies are active\n */\nlet isCombined = false;\n/**\n * Queue for collecting combined dependency updates\n */\nlet combinedReplyQueue: Map<Dep, Array<string | symbol | number>> = new Map();\n\n/**\n * Notify a dependency, either immediately or queue for combined reply\n */\nfunction notifyDep(dep: Dep, key: string | symbol | number) {\n // Direct notification when not combining\n if (isCombined === false) dep.notify(key);\n // Queue for combined notification\n else {\n let depQueue = combinedReplyQueue.get(dep);\n if (depQueue === undefined) {\n depQueue = [];\n combinedReplyQueue.set(dep, depQueue);\n }\n\n if (!depQueue.includes(key)) {\n depQueue.push(key);\n }\n }\n}\n\n/**\n * Combine multiple dependency updates into a single notification\n * @param func Function containing changes to combine\n */\nexport function combinedReply(func: Function) {\n isCombined = true;\n\n try {\n func();\n } catch (e: any) {\n isCombined = false;\n combinedReplyQueue.clear();\n logger.error(\n \"Data Hijacking\",\n \"Encountered a blocking error while collecting changes for data hijacking composite responses. No action will be taken. Please investigate.\",\n e\n );\n return;\n }\n\n isCombined = false;\n\n // Notify all queued dependencies\n notifyGroupDeps(combinedReplyQueue);\n combinedReplyQueue.clear();\n}\n\n/**\n * Check if an object is being observed\n */\nexport function isObserverData(data: any) {\n return getProxyDep(data) !== undefined;\n}\n","import { isEqual, isObject, logger } from \"@joker.front/shared\";\nimport { Dep } from \"./dep\";\nconst LOGTAG = \"Data Observation\";\n\nexport const BREAK_WATCH_UPDATE = Symbol.for(\"JOKER_BREAK_WATCH_UPDATE\");\n/**\n * Convert value expression to get method\n * @param exp Expression string\n * @returns Getter function or undefined on error\n */\nfunction transformGetter(exp: string): Function | undefined {\n // Filter invalid properties\n if (/[^\\w.$]/.test(exp)) {\n return;\n }\n\n const exps = exp.split(\".\");\n\n return function (data: object) {\n let result: any = data;\n exps.forEach((key) => {\n if (!result) {\n return;\n }\n\n result = result[key];\n });\n\n return result;\n };\n}\n\n/**\n * Observer\n *\n * Manages object observation, collects dependency relationships,\n * and triggers callback responses when values change\n */\nexport class Watcher<T extends object = any> {\n private getter!: Function;\n\n public value: any;\n\n public isDestroy = false;\n\n public updating = false;\n /**\n * Runtime relationship collection\n *\n * Main purpose: filter duplicates at runtime and collect \"valid\" Dep relationships\n * Each Dep corresponds to an object, and object keys do not repeat\n */\n private runRelations: Map<Dep, Array<string | symbol | number>> = new Map();\n\n /**\n * Actual dependency relations\n */\n public relations: Map<Dep, Array<string | symbol | number>> = new Map();\n\n /**\n * @param ob Data source to observe (object or getter function)\n * @param updateCallBack Callback function for value changes\n * @param expOrFn Expression string or value extraction function\n * @param forceCallBack Force callback even if value appears unchanged\n */\n constructor(\n private ob: T | (() => T),\n private updateCallBack: Function,\n expOrFn?: string | ((obj: T) => any | void) | Function,\n private forceCallBack?: boolean\n ) {\n if (ob === undefined) {\n throw new Error(\"Cannot observe changes on undefined\");\n }\n\n if (expOrFn === undefined) {\n this.getter = (obj: any) => obj;\n } else if (typeof expOrFn === \"function\") {\n this.getter = expOrFn;\n } else {\n const getFunc = transformGetter(expOrFn);\n\n if (getFunc === undefined) {\n throw new Error(\n `${expOrFn} failed to parse. Unable to interpret the expression. ` +\n `Please check the expOrFn parameter or use the function mode instead.`\n );\n }\n this.getter = getFunc;\n }\n\n if (this.getter === undefined) {\n logger.error(LOGTAG, \"Failed to create getter\", arguments);\n }\n\n this.value = this.getValue();\n }\n\n public getValue() {\n // Skip if watcher is destroyed (avoids upward listening broadcasts)\n if (this.getter === undefined) {\n return;\n }\n\n Dep.target = this;\n\n const targetData = typeof this.ob === \"function\" ? this.ob() : this.ob;\n let value;\n try {\n value = this.getter.call(targetData, targetData);\n } catch (e) {\n logger.error(LOGTAG, \"Failed to retrieve value. Executed method: \" + this.getter.toString());\n throw e;\n }\n Dep.target = undefined;\n\n this.clearnDeps();\n return value;\n }\n\n /**\n * Add Dep relationship\n * @param dep Dependency instance\n * @param key Observed property key\n */\n public addDep(dep: Dep, key: string | symbol | number) {\n let runItem = this.runRelations.get(dep);\n\n if (runItem === undefined || !runItem.includes(key)) {\n runItem = runItem || [];\n runItem.push(key);\n\n this.runRelations.set(dep, runItem);\n\n const depItem = this.relations.get(dep);\n // Add if relationship not previously stored\n // Cleanup will handle relation conversion later\n if (depItem === undefined || !depItem.includes(key)) {\n dep.addWatcher(key, this);\n }\n }\n }\n\n /**\n * Update observed value and trigger response\n */\n public update() {\n // Prevent circular calls during notification\n if (this.updating) return;\n\n const newVal = this.getValue();\n\n if (newVal === BREAK_WATCH_UPDATE) return;\n\n const oldVal = this.value;\n\n // Force callback | value changed | value is object (reference type)\n if (this.forceCallBack || newVal !== oldVal || isObject(newVal)) {\n this.value = newVal;\n\n // Skip response for reference-unequal but value-equal objects\n // (does not affect future changes)\n const isEqualValue = newVal !== oldVal && isEqual(newVal, oldVal, true);\n if (isEqualValue && !this.forceCallBack) {\n return;\n }\n this.updating = true;\n try {\n this.updateCallBack(newVal, oldVal, isEqualValue, this);\n } catch (e) {\n throw e;\n } finally {\n this.updating = false;\n }\n }\n }\n\n public destroy() {\n this.relations.forEach((keys, dep) => {\n for (const key of keys) {\n dep.removeWatcher(key, this);\n }\n });\n\n this.isDestroy = true;\n\n this.relations.clear();\n this.runRelations.clear();\n this.ob = <any>undefined;\n this.value = undefined;\n this.getter = <any>undefined;\n }\n\n private clearnDeps() {\n this.relations.forEach((keys, dep) => {\n const runItem = this.runRelations.get(dep);\n for (const key of keys) {\n if (runItem) {\n if (!runItem.includes(key)) {\n dep.removeWatcher(key, this);\n }\n } else {\n // Remove all dependencies for this key\n dep.removeWatcher(key, this);\n }\n }\n });\n\n this.relations.clear();\n this.relations = this.runRelations;\n\n this.runRelations = new Map();\n }\n}\n","type Constructor<T = any> = new (...args: any[]) => T;\n\n/**\n * IOC Dependency Injection Container\n *\n * Applicable scenarios for IOC dependency injection:\n * APIs and Interfaces that are internally planned but need external logic injection.\n * Different from plugins, which are aspect injections based on the overall lifecycle.\n */\nexport namespace IContainer {\n let bindings: Map<symbol | string, Constructor> = new Map();\n\n /**\n * Bind a tag identifier to a constructor\n * @param tagId Unique identifier for the binding\n * @returns Object with 'to' method to specify the target constructor\n */\n export function bind<T>(tagId: symbol | string) {\n return {\n to: (target: Constructor<T>) => {\n if (bindings.has(tagId)) {\n throw new Error(\n `TagId:${tagId.toString()} already has an implementation bound. Do not bind again.`\n );\n }\n\n bindings.set(tagId, target);\n }\n };\n }\n\n /**\n * Resolve a dependency by tag identifier\n * @param tagId Unique identifier for the binding\n * @param params Parameters to pass to the constructor\n * @returns New instance of the bound constructor, or undefined if not found\n */\n export function get<T>(tagId: symbol | string, ...params: any[]): T | undefined {\n const target = bindings.get(tagId);\n\n if (target) {\n return new target(...params);\n }\n\n return undefined;\n }\n}\n","import { AST, IComponent } from \"@joker.front/ast\";\nimport { Component as ComponentClass } from \"../component\";\nimport { ObType } from \".\";\nimport { SectionType } from \"../component\";\nimport { IParser } from \"./parser\";\n\nexport const JOKER_VNODE_TAG = Symbol.for(\"JOKER_VNODE_TAG\");\n/**\n * Virtual DOM (VNode)\n *\n * This control classification differs from AST, as it is divided based on the actual output type.\n */\nexport namespace VNode {\n export const PARSERKEY = Symbol.for(\"JOKER_PARSER_KEY\");\n\n /**\n * Base class for VNode\n */\n export class Node {\n [JOKER_VNODE_TAG] = true;\n /**\n * Whether it is a static node (non-dynamic), such as element, text, comment, etc.\n */\n public static?: boolean;\n\n public output?: any;\n\n public [PARSERKEY]?: IParser<AST.Node, VNode.Node>;\n\n public childrens?: Node[];\n\n public ref?: string;\n /**\n * Whether the current node is in sleep state\n */\n public sleep: boolean = false;\n\n constructor(public parent?: Node) {}\n\n /**\n * Previous node\n */\n public get prev(): Node | undefined {\n if (this.parent) {\n return this.parent.childrens?.[this.parent.childrens?.indexOf(this) - 1];\n }\n\n return;\n }\n\n /**\n * Next node\n */\n public get next(): Node | undefined {\n if (this.parent) {\n return this.parent.childrens?.[this.parent.childrens?.indexOf(this) + 1];\n }\n return;\n }\n\n /**\n * Find the first ancestor element that matches the filter\n * @param filter Filter condition: return true to select the current node\n * @param shouldBreak Custom stop condition: return true to stop searching upwards\n * @returns The matched ancestor node or undefined\n */\n public closest<T extends VNode.Node = VNode.Element & VNode.Component>(\n filter: (node: VNode.Node) => true | any,\n shouldBreak?: (node: VNode.Node) => true | any\n ): T | undefined {\n if (filter(this) === true) {\n return this as unknown as T;\n }\n\n let parent = this.parent;\n\n while (parent) {\n if (filter(parent) === true) {\n return parent as T;\n }\n if (shouldBreak?.(parent) === true) break;\n parent = parent.parent;\n }\n return;\n }\n\n /**\n * Find all child elements that match the filter\n * @param filter Return true to include the node\n * @param shouldBreak Custom stop condition: return true to stop searching downwards\n * @param deepSearch Whether to search deeply (default: false). If true, continue searching after matching.\n * @returns Array of matched nodes\n */\n public find<T extends VNode.Node = VNode.Element & VNode.Component>(\n filter: (node: VNode.Node) => true | any,\n shouldBreak?: (node: VNode.Node) => true | any,\n deepSearch?: boolean,\n _childrens?: Array<VNode.Node>,\n _out?: Array<VNode.Node>\n ): Array<T> {\n let result: Array<VNode.Node> = _out ?? [];\n\n _childrens ??= this.childrens;\n\n if (_childrens) {\n for (let item of _childrens) {\n let findResult = filter(item);\n if (findResult === true) {\n result.push(item);\n\n if (!deepSearch) continue;\n }\n\n if (shouldBreak?.(item) === true) continue;\n\n if (item.childrens) {\n this.find(filter, shouldBreak, deepSearch, item.childrens, result);\n }\n }\n }\n\n return result as T[];\n }\n\n /**\n * Check if any child node matches the filter\n * @param filter Return true to include the node, return false to skip its children\n * @returns True if any child matches, false otherwise\n */\n public contains(filter: (node: VNode.Node) => true | any, childrens?: Array<VNode.Node>): boolean {\n childrens ??= this.childrens;\n\n if (childrens) {\n for (let item of childrens) {\n let findResult = filter(item);\n if (findResult === true) {\n return true;\n }\n\n if (item.childrens && item.childrens.length) {\n if (this.contains(filter, item.childrens)) {\n return true;\n }\n }\n }\n }\n\n return false;\n }\n\n /**\n * Find the first child node that matches the filter\n * @param filter Return true to select the node\n * @returns The first matched child node or undefined\n */\n public first<T extends VNode.Node = VNode.Element & VNode.Component>(\n filter: (node: VNode.Node) => true | any,\n childrens?: Array<VNode.Node>\n ): T | undefined {\n childrens ??= this.childrens;\n\n if (childrens) {\n for (let item of childrens) {\n let findResult = filter(item);\n if (findResult === true) {\n return item as T;\n }\n\n if (item.childrens && item.childrens.length) {\n let result = this.first<T>(filter, item.childrens);\n if (result) {\n return result;\n }\n }\n }\n }\n\n return;\n }\n }\n\n /**\n * Root node\n */\n export class Root<T extends IComponent = IComponent & Record<string, any>> extends Node {\n public childrens: Node[] = [];\n\n public component!: T;\n\n constructor() {\n super();\n }\n }\n\n /**\n * Text node\n */\n export class Text extends Node {\n public static = true;\n\n constructor(public text: string, parent: Node) {\n super(parent);\n }\n }\n\n /**\n * HTML node\n */\n export class Html extends Node {\n public static = true;\n public scopedId?: string;\n constructor(public html: string, parent: Node, public notShadow?: boolean) {\n super(parent);\n }\n }\n\n /**\n * Comment node\n */\n export class Comment extends Node {\n public static = true;\n\n constructor(public text: string, parent: Node) {\n super(parent);\n }\n }\n\n /**\n * Element node\n */\n export class Element extends Node {\n public static = true;\n\n public attributes: Record<string, any> = {};\n\n public childrens: Node[] = [];\n\n public events: Array<[string, { modifiers?: string[]; callBack: EventCallBack }]> = [];\n\n /**\n * Auxiliary event storage for storing assist events like 'outside'\n */\n public _assistEventCache?: Array<[string, (e: any) => void]>;\n\n constructor(public tagName: string, parent: Node) {\n super(parent);\n }\n }\n\n export type Event<T = undefined, N extends VNode.Node = VNode.Element & VNode.Component> = {\n /**\n * Event name\n */\n eventName: string;\n /**\n * Native event corresponding to the runtime platform\n */\n event?: any;\n /** Target element that triggered the event */\n target?: N;\n /** Prevent default event behavior */\n preventDefault(): void;\n /** Stop event propagation */\n stopPropagation(): void;\n /** Event parameters */\n data: T;\n };\n\n export type EventCallBack<T = any> = (e: Event<T>) => void;\n\n /**\n * Component node\n */\n export class Component<T extends ComponentClass = ComponentClass<any> & Record<string, any>> extends Node {\n /** Component name (template tag name) */\n public name?: string;\n\n /** Component instance */\n public component!: T;\n\n /** Events */\n public events: Array<[string, { modifiers?: string[]; callBack: EventCallBack }]> = [];\n\n /** Properties values */\n public propValues: Record<string, any> = {};\n\n /** Whether to keep the component alive */\n public keepalive?: boolean;\n\n /**\n * First element VNode of the current component\n */\n public get firstElement() {\n if (this.childrens) {\n let findElement = (childrens: Array<VNode.Node>) => {\n for (let item of childrens) {\n if (item instanceof VNode.Element) {\n return item;\n }\n\n if (item.childrens) {\n let result = findElement(item.childrens) as VNode.Element;\n\n if (result) return result;\n }\n }\n };\n return findElement(this.childrens);\n }\n }\n\n /** Get root element nodes (including VNode.Html) */\n public get rootElements() {\n if (this.childrens) {\n let result: (VNode.Element | VNode.Html)[] = [];\n let findElements = (childrens: Array<VNode.Node>) => {\n for (let item of childrens) {\n if (item instanceof VNode.Element) {\n result.push(item);\n } else if (item instanceof VNode.Html) {\n result.push(item);\n } else if (item.childrens) {\n findElements(item.childrens);\n }\n }\n };\n findElements(this.childrens);\n return result;\n }\n return [];\n }\n }\n\n /**\n * Condition node\n */\n export class Condition extends Node {\n public result: boolean = false;\n\n public childrens: Node[] = [];\n\n public isShow: boolean = false;\n\n constructor(public cmdName: AST.IfCommand[\"kind\"], parent: Node) {\n super(parent);\n }\n }\n\n /**\n * List node, containing multiple list items\n */\n export class List extends Node {\n public childrens: ListItem[] = [];\n }\n\n /**\n * List item for looping\n */\n export class ListItem extends Node {\n public childrens: Node[] = [];\n\n constructor(public ob: ObType, parent: VNode.Node) {\n super(parent);\n }\n }\n\n /**\n * Render section node (slot)\n */\n export class RenderSection extends Node {\n public id: string = \"unknown\";\n\n public params: any[] = [];\n\n public section?: SectionType;\n\n public childrens: Node[] = [];\n\n public ob?: ComponentClass & Record<string, any>;\n\n constructor(idOrSection: string | SectionType, parent: Node) {\n super(parent);\n if (typeof idOrSection === \"string\") {\n this.id = idOrSection;\n } else {\n this.section = idOrSection;\n }\n }\n }\n}\n","import { escape2Html, isEmptyStr, isObject, logger, remove, removeFilter } from \"@joker.front/shared\";\nimport { VNode } from \"./vnode\";\nconst LOGTAG = \"DOM Rendering\";\n\nconst TAG_PLAINTEXT_ELEMENT = [\"script\", \"style\", \"textarea\", \"pre\"];\n\ntype TransitionType = \"transition\" | \"animation\";\n\nlet eventSeed = 0;\n\nconst svgElementTags = [\n \"svg\",\n \"defs\",\n \"use\",\n \"rect\",\n \"circle\",\n \"ellipse\",\n \"line\",\n \"polyline\",\n \"polygon\",\n \"path\",\n \"text\",\n \"g\"\n];\n\nexport namespace Render {\n /**\n * Inversion of Control tag ID for rendering\n */\n export const IRENDERIOCTAGID = Symbol.for(\"JOKER_IRENDERIOC_TAGID\");\n\n export let ROOT_CONTAINER: string = \"\";\n /**\n * Note: appendNode is executed during rendering, and mount is called once at the end.\n * There will be no scenario where the root is appended because command groups take precedence.\n * append and remove methods do not require a parent parameter because after mounting,\n * the relationship is established, and they are executed directly based on that relationship.\n * Upstream calls do not need to care about the parent, especially during watch cycles.\n */\n export interface IRender {\n /**\n * Mount the rendering to a root container\n * @param root Root container (element or component)\n * Root type is not restricted for multi-platform compatibility\n */\n mount(root: any): void;\n\n /**\n * Append a node to the rendering\n * @param node VNode to append\n * @param index Optional index for insertion\n */\n appendNode(node: VNode.Node, index?: number): void;\n\n /**\n * Update a node's properties\n * @param node VNode to update\n * @param propertyKey Property to update (optional)\n */\n updateNode(node: VNode.Node, propertyKey?: string): void;\n\n /**\n * Remove a node from the rendering\n * @param node VNode to remove\n * @param parent Optional parent node (root if undefined)\n * @param reserveOutPut Whether to retain the output\n */\n removeNode(node: VNode.Node, reserveOutPut?: boolean): void;\n\n /**\n * Destroy the renderer, unmount DOM and release resources\n */\n destroy(): void;\n\n /**\n * Handle element transition enter animation\n */\n elementToEnter(node: VNode.Element, name: string, type?: TransitionType, callBack?: Function): void;\n\n /**\n * Handle element transition leave animation\n */\n elementToLeave(node: VNode.Element, name: string, type?: TransitionType, callBack?: Function): void;\n\n /**\n * Trigger a component event\n * @param node Component node\n * @param eventName Event name\n * @returns false to stop propagation\n */\n triggerEvent(node: VNode.Component, eventName: string, e: VNode.Event): void | false;\n }\n\n /**\n * Default renderer using HTML DOM\n */\n export class DomRender implements IRender {\n public elements: DocumentFragment;\n\n constructor() {\n this.elements = document.createDocumentFragment();\n }\n\n mount(root: Element | VNode.Component): void {\n if (root instanceof Element) {\n root.appendChild(this.elements);\n } else if (root instanceof VNode.Component) {\n if (root.parent) {\n if (root.output) {\n const nodeEl = root.output as Element;\n const parentEl = getVNodeAppendToContainer(root) || nodeEl.parentNode;\n\n // Parent element should always exist\n if (parentEl) {\n parentEl.insertBefore(this.elements, nodeEl);\n }\n } else {\n logger.error(LOGTAG, \"Component mount found no DOM target node\", root);\n }\n } else {\n logger.error(LOGTAG, \"Mounting child component with no parent\", root);\n }\n } else {\n logger.error(LOGTAG, \"Mount only supports Element or VNode.Node\", root);\n }\n }\n\n appendNode(node: VNode.Node, index?: number): void {\n this.renderNode(node);\n\n if (node.output) {\n const nodes =\n node.output instanceof HTMLCollection ||\n node.output instanceof NodeList ||\n Array.isArray(node.output)\n ? Array.from(node.output)\n : [node.output];\n\n for (const item of nodes) {\n this.appendNodeChildren(node, item, node.parent, index);\n }\n\n return;\n }\n\n logger.error(LOGTAG, \"No output found for node, cannot mount\", node);\n }\n\n updateNode(node: VNode.Node, propertyKey?: string): void {\n if (node instanceof VNode.Element) {\n for (const attrName in node.attributes) {\n const attrVal = node.attributes[attrName];\n this.setAttribute(node.output, attrName, attrVal);\n }\n } else if (node instanceof VNode.Text) {\n if (\n node.parent &&\n node.parent instanceof VNode.Element &&\n TAG_PLAINTEXT_ELEMENT.includes(node.parent.tagName)\n ) {\n this.removeNode(node);\n this.appendNode(node);\n } else {\n (node.output as Text).textContent = escape2Html(node.text || \"\");\n }\n } else if (node instanceof VNode.Html) {\n if (node.notShadow) {\n node.output.innerHTML = node.html;\n if (node.scopedId) {\n addDataScopedAttribute(node.output, node.scopedId);\n }\n } else {\n node.output.root.innerHTML = node.html;\n }\n } else {\n logger.error(LOGTAG, `Node does not support ${propertyKey} update`, node);\n }\n }\n\n removeNode(node: VNode.Node, reserveOutPut?: boolean): void {\n const domNodes =\n node.output instanceof HTMLCollection || node.output instanceof NodeList || Array.isArray(node.output)\n ? Array.from(node.output)\n : [node.output];\n\n domNodes?.forEach((item) => item?.remove());\n\n if (!reserveOutPut) {\n node instanceof VNode.Element && removeAssistEvent(node);\n node.output = undefined;\n }\n }\n\n destroy(): void {\n (<any>this.elements) = undefined;\n }\n\n elementToEnter(node: VNode.Element, name: string, type?: TransitionType, callBack?: Function): void {\n if (!node.output) return;\n this.transitionFrame(node, name, \"enter\", type, callBack);\n }\n\n elementToLeave(node: VNode.Element, name: string, type?: TransitionType, callBack?: Function): void {\n if (!node.output) return;\n this.transitionFrame(node, name, \"leave\", type, callBack);\n }\n\n triggerEvent(node: VNode.Component, _eventName: string, _e: VNode.Event): void | false {\n const removeEvent: any[] = [];\n for (const item of node.events) {\n const [eventName, event] = item;\n\n if (eventName === _eventName) {\n const isSelf = event.modifiers?.includes(\"self\");\n const isOutSide = event.modifiers?.includes(\"outside\");\n\n if (isSelf || isOutSide) {\n logger.warn(LOGTAG, \"Event modifiers 'self' and 'outside' not supported in components\", node);\n continue;\n }\n\n const e = _e.event;\n\n if (\n (e instanceof KeyboardEvent && [\"keydown\", \"keypress\", \"keyup\"].includes(eventName)) ||\n (e instanceof MouseEvent && [\"click\", \"dbclick\", \"mouseup\", \"mousedown\"].includes(eventName))\n ) {\n if (checkEventModifier(e, event.modifiers) === false) continue;\n }\n\n event.callBack(_e);\n\n if (event.modifiers?.includes(\"prevent\")) {\n _e.preventDefault();\n }\n\n if (event.modifiers?.includes(\"once\")) {\n removeEvent.push(item);\n }\n\n if (event.modifiers?.includes(\"stop\")) {\n _e.stopPropagation();\n return false;\n }\n }\n }\n\n if (removeEvent.length) {\n removeEvent.forEach((e) => remove(node.events, e));\n }\n }\n\n //#region Private implementations\n private transitionFrame(\n node: VNode.Element,\n transitionName: string,\n model: \"leave\" | \"enter\",\n type?: TransitionType,\n callBack?: Function\n ): void {\n addClassName(node, getTransitionClassName(transitionName, model, \"from\"));\n type ||= \"transition\";\n\n const id = (node!.output!.__TRANSITION_EVNETID__ = eventSeed++);\n\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!node.output) return;\n addClassName(node, getTransitionClassName(transitionName, model, \"active\"));\n removeClassName(node, getTransitionClassName(transitionName, model, \"from\"));\n addClassName(node, getTransitionClassName(transitionName, model, \"to\"));\n\n const transitionInfo = getTransitionInfo(node.output!, type!);\n\n if (!transitionInfo) {\n callBack?.();\n return;\n }\n\n let ended = 0;\n\n const resolve = () => {\n removeClassName(node, getTransitionClassName(transitionName, model, \"to\"));\n removeClassName(node, getTransitionClassName(transitionName, model, \"active\"));\n if (!node.output) return;\n node.output.removeEventListener(`${type}end`, onEnd);\n if (id === node!.output!.__TRANSITION_EVNETID__) {\n callBack?.();\n }\n };\n\n const onEnd = (e: Event) => {\n if (e.target === node.output && ++ended >= transitionInfo.count) {\n resolve();\n }\n };\n\n setTimeout(() => {\n if (ended < transitionInfo.count) {\n resolve();\n }\n }, transitionInfo.timeout + 1);\n\n node.output?.addEventListener(`${type}end`, onEnd);\n });\n });\n }\n\n private renderNode(node: VNode.Node): void {\n if (node.output) return;\n\n if (node instanceof VNode.Text) {\n if (\n node.parent &&\n node.parent instanceof VNode.Element &&\n TAG_PLAINTEXT_ELEMENT.includes(node.parent.tagName)\n ) {\n node.output = this.parserHtml(node.text);\n } else {\n node.output = document.createTextNode(escape2Html(node.text || \"\"));\n }\n } else if (node instanceof VNode.Html) {\n if (node.notShadow) {\n const container = document.createElement(\"joker-html-container\");\n //@ts-ignore\n container.JOKER_NODE = node;\n container.innerHTML = node.html;\n if (node.scopedId) {\n container.setAttribute(\"data-scoped-\" + node.scopedId, \"\");\n addDataScopedAttribute(container, node.scopedId);\n }\n node.output = container;\n } else {\n const conatiner = document.createElement(\"joker-html-shadow\") as HtmlContainerWebComponent;\n //@ts-ignore\n conatiner.JOKER_NODE = node;\n conatiner.style.lineHeight = \"1\";\n conatiner.root.innerHTML = node.html;\n node.output = conatiner;\n }\n } else if (node instanceof VNode.Element) {\n let element: any;\n const tagName = node.tagName.toLowerCase();\n\n //@ts-ignore\n if (tagName === \"svg\" || svgElementTags.includes(tagName) || node.parent?.inSvg) {\n //@ts-ignore\n node.inSvg = true;\n element = document.createElementNS(\"http://www.w3.org/2000/svg\", node.tagName);\n } else {\n element = document.createElement(node.tagName);\n }\n\n for (const attrName in node.attributes) {\n this.setAttribute(element, attrName, node.attributes[attrName]);\n }\n //@ts-ignore\n element.JOKER_NODE = node;\n\n node.output = element;\n\n if (node.events.some((n) => n[0] === \"click\" && n[1].modifiers?.includes(\"outside\"))) {\n setTimeout(() => {\n this.initElementEvents(element, node);\n });\n } else {\n this.initElementEvents(element, node);\n }\n } else if (node instanceof VNode.Comment) {\n node.output = document.createComment(node.text);\n } else {\n node.output = document.createTextNode(\"\");\n }\n }\n\n private initElementEvents(el: HTMLElement, node: VNode.Element) {\n for (const [eventName, event] of node.events) {\n const isSelf = event.modifiers?.includes(\"self\");\n let isOutSide = event.modifiers?.includes(\"outside\");\n\n if (isSelf && isOutSide) {\n logger.warn(LOGTAG, \"Event modifiers 'self' and 'outside' cannot coexist, using 'self'\", node);\n isOutSide = false;\n }\n\n const eventCallBack = (e: Event) => {\n if (node.sleep) return;\n\n if (isSelf) {\n if (e.target !== el) return;\n }\n\n if (isOutSide) {\n if (e.target === el || el.contains(<any>e.target)) return;\n if (document.contains(<any>e.target) === false) return;\n if (\n node.contains((n) => {\n const nodes =\n n.output instanceof HTMLCollection ||\n n.output instanceof NodeList ||\n Array.isArray(n.output)\n ? Array.from(n.output)\n : [n.output];\n return nodes.includes(e.target);\n })\n ) {\n return true;\n }\n }\n\n if (\n (e instanceof KeyboardEvent && [\"keydown\", \"keypress\", \"keyup\"].includes(eventName)) ||\n (e instanceof MouseEvent && [\"click\", \"dbclick\", \"mouseup\", \"mousedown\"].includes(eventName))\n ) {\n if (checkEventModifier(e, event.modifiers) === false) return;\n }\n\n event.callBack({\n eventName,\n event: e,\n //@ts-ignore\n target: node,\n preventDefault: () => e.preventDefault(),\n stopPropagation: () => e.stopPropagation(),\n data: undefined\n });\n\n if (event.modifiers?.includes(\"prevent\")) {\n e.preventDefault();\n }\n\n if (event.modifiers?.includes(\"stop\")) {\n e.stopPropagation();\n }\n\n if (event.modifiers?.includes(\"once\")) {\n if (isOutSide) {\n removeAssistEvent(node, eventName, eventCallBack);\n } else {\n el.removeEventListener(eventName, eventCallBack);\n }\n }\n };\n\n let eventOpt = undefined;\n if (event.modifiers?.includes(\"passive\")) {\n eventOpt = {\n passive: true\n };\n }\n\n if (isOutSide) {\n registoryAssistEvent(node, eventName, eventCallBack, eventOpt);\n } else {\n el.addEventListener(eventName, eventCallBack, eventOpt);\n }\n }\n }\n\n private parserHtml(str: string): NodeList {\n const tempContainer = document.createElement(\"div\");\n tempContainer.innerHTML = str;\n return tempContainer.childNodes;\n }\n\n private isCommandGroup(node: VNode.Node) {\n return (\n node instanceof VNode.Component ||\n node instanceof VNode.Condition ||\n node instanceof VNode.List ||\n node instanceof VNode.ListItem ||\n node instanceof VNode.RenderSection\n );\n }\n\n private appendNodeChildren(node: VNode.Node, element: Element, parent?: VNode.Node, index?: number) {\n let parentEl = getVNodeAppendToContainer(node);\n\n if (parentEl) {\n parentEl.appendChild(element);\n return;\n }\n\n if (parent === undefined) {\n this.elements?.appendChild(element);\n } else if (parent) {\n if (parent instanceof VNode.Root) {\n const containerParent = parent.parent;\n if (containerParent && containerParent instanceof VNode.Component) {\n if (containerParent.output) {\n const nodeEl = containerParent.output as Element;\n const parentEl = nodeEl?.parentNode;\n if (parentEl) {\n parentEl.insertBefore(element, nodeEl);\n return;\n }\n }\n }\n this.elements?.appendChild(element);\n } else if (parent instanceof VNode.Element) {\n const parentEl = parent.output;\n if (parentEl === undefined) return;\n parentEl.appendChild(element);\n } else if (this.isCommandGroup(parent)) {\n const parentEl = parent.output?.parentNode as HTMLElement;\n\n if (index !== undefined && parent.childrens?.length && parentEl) {\n const prevNodeIndex = index - 1;\n if (prevNodeIndex < 0) {\n const firstNode = getNodePrevInstallPosition(node);\n if (firstNode && parentEl.contains(firstNode.output)) {\n firstNode.output.after(element);\n } else {\n parentEl.insertBefore(element, parentEl.firstChild);\n }\n return;\n } else {\n const prevNode = parent.childrens[prevNodeIndex];\n if (prevNode) {\n const appendNodeTag = <HTMLElement>prevNode.output;\n if (appendNodeTag) {\n appendNodeTag.after(element);\n return;\n }\n }\n }\n }\n\n if (parentEl) {\n parentEl.insertBefore(element, parent.output);\n }\n } else {\n logger.error(LOGTAG, \"Node does not support nested children\", { node, parent });\n }\n }\n }\n\n private setAttribute(el: HTMLElement, attrName: string, attrVal: any) {\n if (!el) return;\n if (typeof attrVal === \"boolean\") {\n if (attrVal) {\n el.setAttribute(attrName, \"\");\n } else {\n el.removeAttribute(attrName);\n }\n return;\n }\n\n if (attrName === \"class\") {\n if (attrVal) {\n let newClass = flatClassValues(attrVal);\n attrVal = newClass.join(\" \");\n }\n } else if (attrName === \"style\" && isObject(attrVal)) {\n el.removeAttribute(\"style\");\n for (const name in attrVal) {\n let isEmptyValue = false;\n if (attrVal[name] === undefined || attrVal[name] === false) {\n isEmptyValue = true;\n }\n const val = String(attrVal[name]);\n if (isEmptyStr(val)) {\n isEmptyValue = true;\n }\n if (!isEmptyValue) {\n //@ts-ignore\n el.style[name] = val;\n }\n }\n return;\n }\n\n attrVal = (attrVal ?? \"\").toString().trim();\n if (attrName === \"class\") {\n attrVal = (<string>attrVal)\n .split(/\\s/)\n .filter((m) => m.trim())\n .join(\" \");\n }\n if (attrName === \"value\" && \"value\" in el) {\n el.value = attrVal;\n } else {\n if (attrName === \"xlink:href\") {\n el.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"xlink:href\", attrVal);\n } else {\n el.setAttribute(attrName, attrVal);\n }\n }\n }\n //#endregion\n }\n}\n\nexport function getTransitionClassName(\n transition: string,\n mode: \"enter\" | \"leave\",\n type: \"from\" | \"active\" | \"to\"\n): string {\n return `${transition}-${mode}-${type}`;\n}\n\n/**\n * Register assist event for outside event handling\n */\nfunction registoryAssistEvent(\n node: VNode.Element,\n eventName: string,\n eventCallBack: (e: Event) => void,\n eventOpt: any\n) {\n node._assistEventCache ??= [];\n node._assistEventCache.push([eventName, eventCallBack]);\n document.body.addEventListener(eventName, eventCallBack, eventOpt);\n}\n\nfunction removeAssistEvent(node: VNode.Element, eventName?: string, eventCallBack?: (e: Event) => void) {\n if (node._assistEventCache && eventName && eventCallBack) {\n removeFilter(node._assistEventCache, (m) => m[0] === eventName && m[1] === eventCallBack);\n document.body.removeEventListener(eventName, eventCallBack);\n } else {\n node._assistEventCache?.forEach((m) => {\n document.body.removeEventListener(m[0], m[1]);\n });\n node._assistEventCache && (node._assistEventCache.length = 0);\n node._assistEventCache = undefined;\n }\n}\n\nconst keyEventModifierNative = {\n enter: \"enter\",\n backspace: \"delete\",\n tab: \"tab\",\n arrowup: \"up\",\n arrowdown: \"down\",\n arrowleft: \"left\",\n arrowright: \"right\",\n escape: \"esc\",\n \" \": \"space\"\n};\n\nfunction checkEventModifier(e: KeyboardEvent | MouseEvent, modifiers?: string[]): boolean {\n if (e instanceof KeyboardEvent) {\n if (e.key === undefined) return false;\n for (const name in keyEventModifierNative) {\n if (\n //@ts-ignore\n modifiers?.includes(keyEventModifierNative[name]) &&\n e.key.toLowerCase() !== name\n )\n return false;\n }\n } else {\n if (modifiers?.includes(\"left\") && e.button !== 0) return false;\n if (modifiers?.includes(\"right\") && e.button !== 2) return false;\n if (modifiers?.includes(\"middle\") && e.button !== 1) return false;\n }\n\n if (modifiers?.includes(\"ctrl\") && e.ctrlKey === false) return false;\n if (modifiers?.includes(\"alt\") && e.altKey === false) return false;\n if (modifiers?.includes(\"shift\") && e.shiftKey === false) return false;\n\n return true;\n}\n\nfunction addClassName(node: VNode.Element, className: string) {\n if (!node.output) return;\n (<HTMLElement>node.output).classList.add(className);\n}\n\nfunction removeClassName(node: VNode.Element, className: string) {\n if (!node.output) return;\n (<HTMLElement>node.output).classList.remove(className);\n}\n\nfunction getVNodeAppendToContainer(node: VNode.Node) {\n if (node instanceof VNode.Element || node instanceof VNode.Component) {\n let appendTo = node instanceof VNode.Component ? node.propValues[\"append-to\"] : node.attributes[\"append-to\"];\n\n if (appendTo) {\n if (appendTo instanceof VNode.Element) {\n return appendTo.output;\n } else if (typeof appendTo === \"string\") {\n if (Render.ROOT_CONTAINER) {\n if (appendTo === \"body\") {\n appendTo = Render.ROOT_CONTAINER;\n } else {\n appendTo = `${Render.ROOT_CONTAINER} ${appendTo}`;\n }\n }\n const dom = document.querySelector(appendTo);\n if (dom) return dom;\n }\n logger.warn(LOGTAG, \"Unsupported appendTo type\", { appendTo, node });\n }\n }\n}\n\nfunction getTransitionInfo(el: Element, type: TransitionType) {\n const styles = window.getComputedStyle(el);\n const getStyleProperties = (key: any) => (styles[key] || \"\").split(\", \");\n\n if (type === \"transition\") {\n const delays = getStyleProperties(\"transitionDelay\");\n const durations = getStyleProperties(\"transitionDuration\");\n const timeout = getTimeout(delays, durations);\n if (timeout > 0) {\n return {\n timeout,\n count: durations.length\n };\n }\n } else if (type === \"animation\") {\n const delays = getStyleProperties(\"animationDelay\");\n const durations = getStyleProperties(\"animationDuration\");\n const timeout = getTimeout(delays, durations);\n if (timeout > 0) {\n return {\n timeout,\n count: durations.length\n };\n }\n }\n}\n\nfunction getTimeout(delays: string[], durations: string[]): number {\n while (delays.length < durations.length) {\n delays.concat(delays);\n }\n return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\n}\n\nfunction toMs(s: string): number {\n if (s === \"auto\") return 0;\n return Number(s.slice(0, -1).replace(\",\", \".\")) * 1000;\n}\n\nfunction getNodePrevInstallPosition(node: VNode.Node, notSearchParent?: boolean): VNode.Node | undefined {\n let prev = node.prev;\n while (prev) {\n if (prev instanceof VNode.ListItem === false) {\n return prev;\n }\n prev = prev.prev;\n }\n\n if (!notSearchParent) {\n let parent = node.parent;\n while (parent) {\n if (parent instanceof VNode.Element) return;\n const result = getNodePrevInstallPosition(parent, true);\n if (result) return result;\n parent = parent.parent;\n }\n }\n return;\n}\n\nclass HtmlContainerWebComponent extends HTMLElement {\n root: ShadowRoot;\n\n constructor() {\n super();\n this.root = this.attachShadow({ mode: \"open\" });\n }\n}\n\n!customElements.get(\"joker-html-shadow\") && customElements.define(\"joker-html-shadow\", HtmlContainerWebComponent);\n\n/**\n * Recursively add data-scoped attributes to all elements\n */\nfunction addDataScopedAttribute(element: HTMLElement, scoped: string) {\n const childNodes = element.childNodes;\n for (let i = 0; i < childNodes.length; i++) {\n const node = childNodes[i];\n if (node.nodeType === 1) {\n const childElement = node as HTMLElement;\n childElement.setAttribute(\"data-scoped-\" + scoped, \"\");\n addDataScopedAttribute(childElement, scoped);\n }\n }\n}\n\nfunction flatClassValues(value: any, _result?: string[]): string[] {\n const result: string[] = _result || [];\n\n if (typeof value === \"string\") {\n const trimmedClass = value.trim();\n\n if (trimmedClass && !result.includes(trimmedClass)) {\n result.push(trimmedClass);\n }\n } else if (Array.isArray(value)) {\n value.forEach((item) => flatClassValues(item, result));\n } else if (value !== null && typeof value === \"object\") {\n Object.entries(value).forEach(([key, val]) => {\n if (val === true) {\n const trimmedKey = key.trim();\n if (trimmedKey && !result.includes(trimmedKey)) {\n result.push(trimmedKey);\n }\n }\n });\n }\n return result;\n}\n","export type GlobalFunctionType = (...args: any[]) => any;\n\n// Global functions\nexport const __GLONAL_FUNTIONS__: Record<string, GlobalFunctionType> = {};\n\n/**\n * Register global functions\n * @param functions Object containing function names and implementations\n */\nexport function registerGlobalFunction(functions: Record<string, GlobalFunctionType>): void {\n for (const name in functions) {\n __GLONAL_FUNTIONS__[name] = functions[name];\n }\n}\n\n/**\n * Get a registered global function by key\n * @param key Function name\n * @returns Registered function or undefined if not found\n */\nexport function getGlobalFunction(key: string): GlobalFunctionType | undefined {\n return __GLONAL_FUNTIONS__[key];\n}\n","import { AST, EXPRESSHANDLERTAG } from \"@joker.front/ast\";\nimport { logger, remove } from \"@joker.front/shared\";\nimport { ObType, ParserTemplate, NodeChangeType } from \".\";\nimport { IS_DESTROY, SCOPE_ID } from \"../index\";\nimport { __GLONAL_FUNTIONS__ } from \"../global\";\nimport { BREAK_WATCH_UPDATE, Watcher } from \"../observer/watcher\";\nimport { VNode } from \"./vnode\";\n\nexport const GLOBAL_TAG = \"Global\";\nconst LOGTAG = \"Render Core\";\n/**\n * 创建表达式运行方法\n * @param express 表达式字符串(依赖AST转换,自带参数文根)\n * @returns\n */\nfunction createExpress(express: string, customLog?: () => string | void): Function {\n try {\n return new Function(EXPRESSHANDLERTAG, GLOBAL_TAG, `return ${express};`);\n } catch (e: any) {\n throw new Error(\n `An unknown error occurred while creating the expression execution method. \\nmessage: ${e.message} \\n${\n customLog?.() || express\n }`\n );\n }\n}\n\nexport abstract class IParser<T extends AST.Node, N extends VNode.Node> {\n /** 当前转换节点ref标记 */\n public ref: string = \"\";\n /** 当前AST解析 所产生的观察者 */\n private watchers: Watcher<any>[] = [];\n\n public node?: N;\n\n isDestroy = false;\n constructor(\n /** ast集合 */\n protected ast: T,\n /** 数据源 会在component上进行属性新增 */\n public ob: ObType,\n /** 父节点 */\n protected parent: VNode.Node,\n /** 外部处理(ParserTemplate) */\n protected ext: ParserTemplate\n ) {}\n\n init(index?: number) {\n this.parser(index);\n\n this.afterParser();\n }\n\n /**\n * 上游主入口方法(初始化执行)\n */\n public abstract parser(index?: number): void;\n\n protected beforeDestroy(keepalive?: boolean): void | boolean {}\n\n /**\n * 销毁流程\n */\n public destroy(keepalive?: boolean) {\n this.isDestroy = true;\n //优先移除watcher关系\n this.clearWatchers();\n\n if (this.parent.childrens && this.node) {\n if (this.node instanceof VNode.Element || this.node instanceof VNode.Component) {\n //如果是Element 或者 组件节点(只有这些类型可以配置ref)\n\n this.ext.removeRef(this.node);\n }\n\n let removeNode = () => {\n if (this.parent && this.node) {\n this.beforeDestroy(keepalive);\n\n this.destroyChildrens(keepalive);\n\n //可能存在before等钩子中触发了当前的移出\n if (this.node) {\n //remove 应该按照append倒序执行\n this.ext.render?.removeNode(this.node);\n\n this.parent.childrens && remove(this.parent.childrens, this.node);\n\n //通知放最后\n this.notifyNodeWatcher(\"remove\");\n this.destroyOtherData();\n }\n }\n };\n\n //如果有动画\n if (\n this.ext.nodeTransition(this.node, \"leave\", undefined, () => {\n removeNode();\n })\n ) {\n //先解除层级关系,不阻塞其余节点正常卸载\n remove(this.parent.childrens, this.node);\n\n //消除所有子集的watcher监听\n this.destroyChildrensWatcher(this.node);\n return;\n }\n\n removeNode();\n } else {\n this.destroyOtherData();\n }\n }\n\n public destroyWathcers() {\n this.isDestroy = true;\n this.clearWatchers();\n //消除所有子集的watcher监听\n this.destroyChildrensWatcher(this.node);\n }\n\n private destroyOtherData() {\n this.node && (this.node[VNode.PARSERKEY] = undefined);\n\n this.node = undefined;\n\n this.parent = <any>undefined;\n }\n\n /**\n * 销毁所有子集VNode\n */\n public destroyChildrens(keepalive?: boolean) {\n while (this.node?.childrens?.length) {\n let item = this.node.childrens[0];\n if (item[VNode.PARSERKEY]) {\n item[VNode.PARSERKEY].destroy(keepalive);\n } else {\n //root 类型 ,不做销毁,只是做数组移除,销毁已处理\n remove(this.node.childrens, item);\n }\n }\n }\n\n /**\n * 销毁所有子集VNode的watcher,为了防止延迟卸载时,无效通知广播\n */\n protected destroyChildrensWatcher(nodeItem?: VNode.Node) {\n if (nodeItem?.childrens?.length) {\n for (let node of nodeItem?.childrens) {\n if (node[VNode.PARSERKEY]) {\n node[VNode.PARSERKEY].clearWatchers();\n\n this.destroyChildrensWatcher(node);\n }\n }\n }\n }\n\n /**\n * 插入自身节点\n */\n protected appendNode(index?: number) {\n if (this.parent?.childrens && this.node && !this.isDestroy) {\n this.node[VNode.PARSERKEY] = this;\n\n if (this.node instanceof VNode.Element && this.ob[SCOPE_ID]) {\n this.node.attributes[\"data-scoped-\" + this.ob[SCOPE_ID]] = undefined;\n } else if (this.node instanceof VNode.Html && this.ob[SCOPE_ID]) {\n this.node.scopedId = this.ob[SCOPE_ID];\n }\n\n this.ext.render?.appendNode(this.node, index);\n\n if (index === undefined) {\n this.parent.childrens.push(this.node);\n } else {\n this.parent.childrens.splice(index, 0, this.node);\n }\n this.notifyNodeWatcher(\"append\");\n }\n }\n\n protected afterParser() {\n this.ext.nodeTransition(this.node, \"enter\");\n }\n\n /**\n * 通知节点观察者\n * @param type 通知类型\n */\n protected notifyNodeWatcher(type: NodeChangeType, propertyKey?: string) {\n //除非destroy 否则node 有值\n this.ext.notifyNodeWatcher(this.ref, this.node!, type, propertyKey);\n }\n\n /**\n * 运行表达式方法,并返回运行后的值(不带观察者)\n * @param express 表达式 string|function\n * @param ob 数据源\n * @returns\n */\n protected runExpress(express: string, ob: any, customLog: () => string | void): any {\n try {\n return createExpress(express, customLog).call(ob, ob, __GLONAL_FUNTIONS__);\n } catch (e: any) {\n logger.error(LOGTAG, `Expression error:${e.message}\\n` + (customLog?.() || express), {\n ob\n });\n console.error(e);\n }\n }\n\n /**\n * 运行表达式方法,并返回运行后的值(带观察者)\n * @param express 表达式 string|function\n * @param ob 数据源\n * @param updateCallBack 更新回调\n * @param forceCallBack 是否强制回调\n * @returns\n */\n protected runExpressWithWatcher(\n express: string | Function,\n ob: any,\n updateCallBack: (newVal: any, oldVal: any, isEqul: boolean, wathcer: Watcher) => void,\n forceCallBack?: boolean,\n customLog?: () => string | void\n ) {\n if (this.isDestroy) return;\n let expressFunction = typeof express === \"string\" ? createExpress(express, customLog) : express;\n\n let watcher = new Watcher(\n () => {\n if (this.isDestroy || ob[IS_DESTROY]) {\n return BREAK_WATCH_UPDATE;\n }\n try {\n return expressFunction.call(ob, ob, __GLONAL_FUNTIONS__);\n } catch (e: any) {\n logger.error(LOGTAG, `Expression error:${e.message}\\n${customLog?.() || express}`, {\n ob,\n express,\n node: this.node\n });\n console.error(e);\n\n return BREAK_WATCH_UPDATE;\n }\n },\n updateCallBack,\n undefined,\n forceCallBack\n );\n\n //添加 watcher 时会有防重复和空dep判断\n this.addWatch(watcher);\n\n return watcher.value === BREAK_WATCH_UPDATE ? undefined : watcher.value;\n }\n\n /**\n * 添加观察者\n * @param watcher\n */\n protected addWatch(watcher: Watcher<any>) {\n if (this.watchers.includes(watcher) === false) {\n this.watchers.push(watcher);\n }\n }\n\n /**\n * 清空所有观察者\n */\n protected clearWatchers() {\n this.watchers.forEach((w) => {\n w.destroy();\n });\n\n this.watchers.length = 0;\n }\n}\n","import { AST } from \"@joker.front/ast\";\nimport { IParser } from \"./parser\";\nimport { VNode } from \"./vnode\";\n\nexport class ParserText extends IParser<AST.Text, VNode.Text> {\n public parser(): void {\n this.node = new VNode.Text(this.ast.text, this.parent);\n\n this.appendNode();\n }\n}\n","import { AST } from \"@joker.front/ast\";\nimport { IParser } from \"./parser\";\nimport { VNode } from \"./vnode\";\n\nexport class ParserComment extends IParser<AST.Comment, VNode.Comment> {\n public parser(): void {\n this.node = new VNode.Comment(this.ast.text, this.parent);\n\n this.appendNode();\n }\n}\n","import { AST } from \"@joker.front/ast\";\nimport { IParser } from \"../parser\";\nimport { VNode } from \"../vnode\";\nimport { isEmptyStr, logger } from \"@joker.front/shared\";\n\nexport class ParserCondition extends IParser<AST.IfCommand, VNode.Condition> {\n public parser() {\n this.node = new VNode.Condition(this.ast.kind, this.parent);\n\n if (this.ast.kind !== \"else\") {\n if (isEmptyStr(this.ast.condition)) {\n logger.error(\n \"Conditional Command\",\n `The current conditional command ${this.ast.kind} has no judgment condition, please check`\n );\n }\n\n let conditionResult = this.runExpressWithWatcher(\n this.ast.condition,\n this.ob,\n (newVal) => {\n let value = !!newVal;\n\n if (this.node?.result !== value) {\n this.node!.result = value;\n if (value === false && this.node?.isShow) {\n //第一时间销毁子集 销毁子集 避免子集做无效的值响应更新,if切换时,使用keepalive\n this.destroyChildrens(true);\n } else if (value && !this.node?.isShow) {\n //第一时间销毁else\n let elseNode = this.getElseNode();\n if (elseNode && elseNode.isShow && elseNode.childrens?.length) {\n let parserTarget = elseNode[VNode.PARSERKEY];\n if (parserTarget && parserTarget instanceof ParserCondition) {\n parserTarget.renderConditionChildren();\n }\n }\n }\n\n this.reloadAllCondition();\n }\n },\n false,\n () => {\n return this.ast._code;\n }\n );\n\n //第一次运行完表达式,进行留值存储\n this.node.result = !!conditionResult;\n }\n\n this.appendNode();\n\n this.renderConditionChildren();\n }\n\n renderId?: string;\n private getElseNode() {\n let nextNode = this.node?.next;\n //向上查询,获取级联条件结果\n while (nextNode && nextNode instanceof VNode.Condition) {\n if (nextNode.cmdName === \"if\") break;\n\n if (nextNode.cmdName === \"else\") {\n return nextNode;\n }\n nextNode = nextNode.next;\n }\n }\n /**\n * 渲染子集\n *\n * @return 返回当前渲染是否有显示变更\n */\n private renderConditionChildren() {\n let newShowState = false;\n let prevResult = this.getPrevIfResult();\n\n if (prevResult) {\n newShowState = false;\n } else if (this.ast.kind === \"else\") {\n newShowState = true;\n } else {\n //刷新一次result\n this.node!.result = !!this.runExpress(this.ast.condition, this.ob, () => {\n this.ast._code;\n });\n if (this.node!.result) {\n newShowState = true;\n }\n }\n\n //展示状态发生改变才去触发子节点的创建或销毁\n if (newShowState !== this.node!.isShow) {\n this.node!.isShow = newShowState;\n\n //先去触发一次销毁,避免同一个条件 被多次渲染 同为true 时,可能会被多次渲染\n this.destroyChildrens(true);\n\n if (newShowState) {\n if (this.ast.childrens) {\n this.ext.parserNodes(this.ast.childrens, this.node!, this.ob);\n }\n }\n\n return true;\n }\n\n return false;\n }\n\n /**\n * 获取同级前面的判断条件结果,如果有一个true则返回true,\n * 否则认为上面所有条件判断都为false\n * @returns\n */\n private getPrevIfResult(): boolean {\n /**\n * 由于页面AST的解析及装载顺序是从上向下的\n * 所以,当运行到此节点时,👆面的条件已全部完成运行,并返回了结果\n */\n\n //如果当前节点就是if则算上面(虚拟条件为false)\n if (this.ast.kind === \"if\") {\n return false;\n }\n\n let prevNode = this.node?.prev;\n //向上查询,获取级联条件结果\n while (prevNode && prevNode instanceof VNode.Condition) {\n if (prevNode.result) {\n return true;\n }\n\n //避免相邻之间互相影响\n if (prevNode.cmdName === \"if\") {\n break;\n }\n\n prevNode = prevNode.prev;\n }\n\n return false;\n }\n\n /**\n * 重载所有的判断(从上到下)\n */\n private reloadAllCondition() {\n /**\n * 当当前值变更后,不需要向上遍历,因为值在读取时已经挂载观察者\n * 观察者响应时按照先后顺序去响应\n * 所以当当前值变更时,之前的条件如果有变动就已经变动完毕\n *\n * 这里只需要向下去重置条件即可\n */\n\n //执行自己的子集渲染\n let isChange = this.renderConditionChildren();\n\n /**\n * 如果自己发生变更,则向下传递影响性\n * 若自身无变更,则不向下传递,交由下面的观察者触发\n *\n * 这样可以过滤掉多条件相同观察对象的场景的无效响应\n *\n * 例如:\n * @if(a ===1){\n * }\n * else if(a===2){\n * }\n * else if(true){\n * }\n *\n * 若a从3变更到1时\n * 第一个if发生变更向下传递所有变更影响\n * 这时else if(a===2) 也收到变更通知, 这时发现自身展示状态无变更,则不向下传递影响\n */\n if (isChange) {\n let next = this.node?.next;\n\n //有下一级 && 下一级是条件节点 && 下一级不是if起始\n while (next && next instanceof VNode.Condition && next.cmdName !== \"if\") {\n let parserTarget = next[VNode.PARSERKEY];\n\n if (parserTarget && parserTarget instanceof ParserCondition) {\n parserTarget.renderConditionChildren();\n }\n\n next = next.next;\n }\n }\n\n let next = this.node?.next;\n if (!this.node?.result) {\n this.destroyChildrens(true);\n }\n\n //有下一级 && 下一级是条件节点 && 下一级不是if起始\n while (next && next instanceof VNode.Condition && next.cmdName !== \"if\") {\n let parserTarget = next[VNode.PARSERKEY];\n\n if (parserTarget && parserTarget instanceof ParserCondition) {\n parserTarget.renderConditionChildren();\n }\n\n next = next.next;\n }\n }\n}\n","import { AST, EXPRESSHANDLERTAG } from \"@joker.front/ast\";\nimport { isPlainObject, foEachProperties } from \"@joker.front/shared\";\nimport { defineObserverProperty } from \"../../observer\";\nimport { ObType } from \"../index\";\nimport { IParser } from \"../parser\";\nimport { VNode } from \"../vnode\";\n\n/**\n * For循环专用表达式运行方法\n */\nfunction createExpress(letKey: string, keyVal: string, condition: string): Function {\n try {\n return new Function(EXPRESSHANDLERTAG, `${EXPRESSHANDLERTAG}.${letKey}=${keyVal}; return ${condition};`);\n } catch {\n throw new Error(\n `Dependency collection for the For loop command expression execution encountered an unknown error. Details: letKey: ${letKey}, keyVal: ${keyVal}, condition: ${condition}`\n );\n }\n}\n\nexport class ParserList extends IParser<AST.ForCommand, VNode.List> {\n public parser() {\n this.node = new VNode.List(this.parent);\n this.appendNode();\n this.renderChildrens();\n }\n\n private renderChildrens() {\n switch (this.ast.keyType) {\n case \"condition\":\n this.renderConditionChildrens();\n break;\n case \"in\":\n case \"of\":\n this.renderInOrOfChildrens();\n break;\n }\n }\n\n private renderConditionChildrens() {\n let param = this.ast.param as AST.ConditionParam;\n\n let forOb = Object.create(this.ob);\n\n /**\n * 此处采用自定义表达式方法目的是:\n *\n * 此处存在两个依赖采集点,分别是:defaultKeyVal和condition\n * 这两个采集点可能存在依赖点重叠,如果重叠则会造成重复遍历\n * 为了解决此问题,将创建一个复合表达式,对齐进行统一采集\n *\n * 该方法会设置一次默认值,并且返回首次的判断结果\n */\n let breakVal = !!this.runExpressWithWatcher(\n createExpress(param.letKey, param.defaultKeyVal, param.condition),\n forOb,\n () => {\n //每次都需要重新观察\n this.clearWatchers();\n this.renderChildrens();\n },\n true,\n () => {\n return this.ast._code;\n }\n );\n\n let index = 0;\n\n while (breakVal) {\n //每次都要创新新的对象,因为对象是引用类型,不可以公用一个对象传递\n //如果挂载的新属性都是作为渲染,则可以用同一个属性传递\n //但是我们的属性可能会存在于一些延时触发的事件中\n let stepOb = Object.create(this.ob);\n\n //设置数据劫持属性\n defineObserverProperty(stepOb, param.letKey, forOb[param.letKey]);\n\n let currentIndex = index++;\n\n this.renderItem(stepOb, currentIndex);\n\n this.runExpressWithWatcher(\n () => forOb[param.letKey],\n forOb,\n async (newVal, _, isEqual, watcher) => {\n //做一次等待,防止后续长度变更带来的二次更新\n await Promise.resolve();\n if (watcher.isDestroy) return;\n\n stepOb[param.letKey!] = newVal;\n if (!isEqual) {\n this.updateListItemOb(stepOb, currentIndex);\n }\n },\n true,\n () => {\n return this.ast._code;\n }\n );\n\n //执行下一次循环设值\n this.runExpress(param.step, forOb, () => {\n this.ast._code;\n });\n //读取下一次的判断条件\n breakVal = !!this.runExpress(param.condition, forOb, () => this.ast._code);\n }\n\n this.destroyOldChildrens(index);\n }\n\n private renderInOrOfChildrens() {\n let param = this.ast.param as AST.InOrOfParam;\n\n let listOb = this.runExpressWithWatcher(\n param.dataKey,\n this.ob,\n () => {\n //每次都需要重新观察\n this.clearWatchers();\n this.renderChildrens();\n },\n false,\n () => {\n return this.ast._code;\n }\n );\n\n let index = 0;\n\n if (listOb && (Array.isArray(listOb) || isPlainObject(listOb))) {\n for (let key in listOb) {\n let stepOb = Object.create(this.ob);\n let keyVal = Array.isArray(listOb) ? Number(key) : key;\n //对于数组时,index为索引,对于对象index为key(统称索引Key)\n if (param.indexKey) {\n defineObserverProperty(stepOb, param.indexKey, keyVal);\n }\n\n if (param.itemKey) {\n defineObserverProperty(stepOb, param.itemKey, listOb[key]);\n }\n let currentIndex = index++;\n\n this.renderItem(stepOb, currentIndex, param.indexKey);\n\n if (param.itemKey) {\n this.runExpressWithWatcher(\n //@ts-ignore\n () => listOb[keyVal],\n listOb,\n async (newVal, _, isEqual, watcher) => {\n //做一次等待,防止后续长度变更带来的二次更新\n await Promise.resolve();\n if (watcher.isDestroy) return;\n\n if (keyVal in listOb) {\n stepOb[param.itemKey!] = newVal;\n if (!isEqual) {\n this.updateListItemOb(stepOb, currentIndex);\n }\n }\n },\n true,\n () => {\n return this.ast._code;\n }\n );\n }\n }\n }\n this.destroyOldChildrens(index);\n }\n\n findIndexByIndex(ob: ObType, startIndex: number, indexKey?: string) {\n let nextIndex = -1;\n if (this.node) {\n for (let i = startIndex; i < this.node.childrens.length; i++) {\n if (this.checkObEqual(ob, this.node.childrens[i]?.ob, indexKey ? [indexKey] : undefined)) {\n nextIndex = i;\n break;\n }\n }\n }\n return nextIndex;\n }\n\n /**\n * 渲染循环项\n * @param ob\n * @param index\n */\n private renderItem(ob: ObType, index: number, indexKey?: string): any {\n if (!this.ast.childrens?.length || !this.node) {\n return;\n }\n\n let stepList = this.node.childrens?.[index];\n\n //若已经存在,则响应变更\n if (stepList) {\n if (this.checkObEqual(ob, stepList.ob, indexKey ? [indexKey] : undefined)) {\n //做一次index 同步\n if (indexKey && stepList.ob[indexKey] !== ob[indexKey]) {\n stepList.ob[indexKey] = ob[indexKey];\n }\n return;\n }\n\n let nextIndex = this.findIndexByIndex(ob, index + 1, indexKey);\n\n if (nextIndex > -1) {\n //删除\n if (index + 1 === nextIndex) {\n this.node.childrens?.[index]?.[VNode.PARSERKEY]?.destroy();\n } else {\n //删除同位索引项,相同位置删除几次\n for (let i = 0; i < nextIndex - index - 1; i++) {\n this.node.childrens?.[index]?.[VNode.PARSERKEY]?.destroy();\n }\n }\n\n return this.renderItem(ob, index, indexKey);\n } else {\n //新增\n return new ParserListeItem(this.ast, ob, this.node!, this.ext).init(index);\n }\n } else {\n return new ParserListeItem(this.ast, ob, this.node!, this.ext).init();\n }\n }\n\n private updateListItemOb(ob: any, index: number) {\n if (!this.ast.childrens?.length || !this.node) {\n return;\n }\n\n let stepList = this.node.childrens?.[index];\n foEachProperties(ob, (key: PropertyKey, val: any) => {\n //@ts-ignore\n if (stepList!.ob[key] !== val) {\n //新老值不一致时\n\n //设置值,做值变更通知\n //@ts-ignore\n stepList!.ob[key] = val;\n }\n });\n }\n /**\n * 销毁历史遗留多余的节点\n * @param index\n */\n private destroyOldChildrens(index: number) {\n if (!this.node) return;\n while (this.node.childrens.length > index) {\n let item = this.node!.childrens.pop();\n\n if (item) {\n item[VNode.PARSERKEY]?.destroy(false);\n } else {\n break;\n }\n }\n }\n\n private checkObEqual(newOb: ObType, oldOb?: any, excludeKey?: PropertyKey[]) {\n let equal = true;\n if (oldOb === undefined) return false;\n\n foEachProperties(newOb, (key: PropertyKey, val: any) => {\n if (!excludeKey?.includes(key) && oldOb?.[key] !== val) {\n equal = false;\n }\n });\n return equal;\n }\n}\n\nexport class ParserListeItem extends IParser<AST.ForCommand, VNode.ListItem> {\n public parser(index?: number) {\n this.node = new VNode.ListItem(this.ob, this.parent);\n\n this.appendNode(index);\n\n this.ast.childrens && this.ext.parserNodes(this.ast.childrens, this.node, this.ob);\n }\n}\n","import { AST, createFuntionBody } from \"@joker.front/ast\";\nimport { isEmptyStr, logger } from \"@joker.front/shared\";\nimport { GLOBAL_TAG, IParser } from \"../parser\";\nimport { VNode } from \"../vnode\";\n\nexport class ParserCode extends IParser<AST.PropertyOrFunctionCommand, VNode.Text | VNode.Html> {\n public parser(): void {\n if (isEmptyStr(this.ast.cmdName)) {\n logger.error(\n \"Template Directive\",\n \"Error occurred while converting AST to VNode: Directive name not found\",\n this.ast\n );\n throw new Error(\"Error converting AST to VNode: Directive name not found\");\n }\n\n let express: string | undefined = undefined;\n //全局过滤器\n if (this.ast.cmdName === \"Html\" || this.ast.cmdName === \"Text\") {\n express = this.ast.param;\n } else if (this.ast.cmdName.startsWith(GLOBAL_TAG + \".\")) {\n express = `${this.ast.cmdName}(${this.ast.param})`;\n } else if (this.ast.cmdName in this.ob && typeof this.ob[this.ast.cmdName] === \"function\") {\n express = `${createFuntionBody(this.ast.cmdName)}(${this.ast.param})`;\n }\n\n if (express) {\n let data = this.runExpressWithWatcher(\n `[${express}]`,\n this.ob,\n (newVal) => {\n this.changeValue(newVal?.[0]);\n },\n false,\n () => {\n return this.ast._code;\n }\n );\n\n data ||= [];\n\n if (this.ast.cmdName === \"Html\") {\n this.node = new VNode.Html(transformText(data[0]), this.parent, data[1]);\n } else {\n this.node = new VNode.Text(transformText(data[0]), this.parent);\n }\n\n this.appendNode();\n return;\n }\n\n throw new Error(\"Command not found: \" + this.ast.cmdName);\n }\n\n changeValue(val: any) {\n if (!this.node) return;\n if (this.node instanceof VNode.Html) {\n this.node.html = transformText(val);\n } else {\n this.node!.text = transformText(val);\n }\n\n this.ext.render?.updateNode(this.node!);\n //不需要做nodeChange广播, 因为它不具备ref能力\n }\n}\n\nfunction transformText(val: any): string {\n if (val === undefined || val === null || typeof val === \"function\") return \"\";\n\n return val.toString();\n}\n","import { AST } from \"@joker.front/ast\";\nimport { defineObserverProperty } from \"../../observer\";\nimport { IParser } from \"../parser\";\nimport { VNode } from \"../vnode\";\nexport const DEFAULT_SECTION_TAG = \"default\";\n\nexport class ParserRenderSection extends IParser<AST.PropertyOrFunctionCommand, VNode.RenderSection> {\n public parser() {\n let paramData = this.transformParam();\n\n this.node = new VNode.RenderSection(paramData.id, this.parent);\n\n this.node.params = paramData.params;\n\n this.node.section ??= this.ob.$sections?.[paramData.id];\n\n this.appendNode();\n\n if (this.node.section) {\n /**\n * section 挂载子组件中\n *\n * ob是父组件渲染组件时的ob,在此之上,添加一些param\n * 然后用当前组件的parser+新的ob去渲染\n *\n * 渲染出来的子集属于组件的子集\n */\n if (this.node.section.params) {\n this.node.ob = Object.create(this.node.section.ob || this.ob);\n\n this.node.section.params?.forEach((item, index) => {\n defineObserverProperty(this.node!.ob, item, this.node!.params[index]);\n });\n } else {\n //无参数 不需要创建新的对象,避免性能开销\n this.node.ob = this.node.section.ob || this.ob;\n }\n\n //使用之前的node.parser去渲染\n (this.node.section.parser || this.ext).parserNodes(this.node.section.asts, this.node, this.node.ob);\n }\n }\n\n private transformParam() {\n if (this.ast.param) {\n let expressVal = this.runExpressWithWatcher(\n `[${this.ast.param}]`,\n this.ob,\n (newVal) => {\n let newSectionId = newVal?.[0] || DEFAULT_SECTION_TAG;\n\n if (typeof newSectionId === \"string\" && newSectionId !== this.node!.id) {\n throw new Error(\"The section ID cannot be dynamically changed\");\n }\n\n this.node!.params = newVal.slice(1);\n\n if (this.node?.ob && this.node.section) {\n this.node.section.params?.forEach((item, index) => {\n if (this.node?.ob) {\n if (this.node.ob[item] !== this.node.params[index]) {\n this.node.ob[item] = this.node.params[index];\n }\n }\n });\n }\n },\n true,\n () => {\n return this.ast._code;\n }\n );\n\n return {\n id: expressVal?.[0] || DEFAULT_SECTION_TAG,\n params: expressVal?.slice(1) || []\n };\n } else {\n return {\n id: DEFAULT_SECTION_TAG,\n params: []\n };\n }\n }\n}\n","import { AST, EXPRESSHANDLERTAG } from \"@joker.front/ast\";\nimport { isEmptyStr, logger, noop, remove } from \"@joker.front/shared\";\nimport { IParser } from \"./parser\";\nimport { JOKER_COMPONENT_TAG, getGlobalComponent } from \"../component\";\nimport { Component, SectionType } from \"../component\";\nimport { observer } from \"../observer\";\n\nimport { DEFAULT_SECTION_TAG } from \"./command/section\";\nimport { VNode } from \"./vnode\";\n\nconst LOGTAG = \"Component Parsing\";\n\nexport function checkIsComponent(tagName: string, ob: Component) {\n return !!ob.components[tagName] || !!getGlobalComponent(tagName);\n}\n\nexport class ParserComponent extends IParser<\n (AST.Element | AST.Component) & {\n node?: VNode.Component;\n },\n VNode.Component\n> {\n loadPromise?: Promise<any>;\n public parser() {\n //唤醒时\n if (this.ast.node) {\n this.node = this.ast.node;\n //重新做层级挂载\n this.node.parent = this.parent;\n //唤醒时做一次 watcher同步\n this.initPropData();\n if (this.node) {\n this.appendNode();\n this.node.component?.$mount(this.node);\n }\n return;\n }\n\n this.node = new VNode.Component(this.parent);\n\n this.initPropData();\n\n this.appendNode();\n this.initEvent();\n\n this.loadPromise = this.renderChildren();\n\n this.ext.promiseQueue.add(this.loadPromise);\n\n this.loadPromise.finally(() => {\n if (this.loadPromise) {\n this.ext.promiseQueue.delete(this.loadPromise);\n this.loadPromise = undefined;\n }\n });\n }\n\n /**\n * 是否允许重载\n * 直接指向内存的组件,无法重新实例化\n */\n public get canReload(): boolean {\n return \"tagName\" in this.ast || typeof this.ast.component === \"function\";\n }\n\n /** 用于重载 */\n public reload() {\n if (this.canReload) {\n //无需考虑sleep,渲染时会挂载到无根节点上\n this.beforeDestroy();\n this.renderChildren();\n } else {\n logger.warn(LOGTAG, \"Reload operation is not supported for the current component\", this.node);\n }\n }\n\n private initPropData() {\n for (let attr of this.ast.attributes) {\n if (attr.name === \"ref\") {\n if (isEmptyStr(attr.value)) {\n logger.warn(LOGTAG, \"The 'ref' value of the element cannot be empty\");\n continue;\n }\n\n this.ref = attr.value!;\n this.ext.addRef(attr.value!, this.node!);\n\n continue;\n }\n\n if (attr.name === \"keep-alive\" && attr.value !== \"false\") {\n this.node!.keepalive = true;\n }\n\n if (attr.express) {\n let watcherValue = this.runExpressWithWatcher(\n attr.express,\n this.ob,\n (newVal) => {\n this.node!.propValues[attr.name] = newVal;\n\n // 不做render更新,数据变更广播会向下传递\n this.notifyNodeWatcher(\"update\", attr.name);\n },\n true,\n () => {\n if (attr.value) {\n return `express:${attr.value} \\nfrom <${\n \"tagName\" in this.ast ? this.ast.tagName : \"Component\"\n } ${attr.name}=\"${attr.value}\" ... /> `;\n }\n }\n );\n\n this.node!.propValues[attr.name] = watcherValue;\n } else {\n this.node!.propValues[attr.name] = attr.value;\n }\n }\n\n this.node!.propValues = observer(this.node!.propValues);\n }\n\n private initEvent() {\n this.ast.events.forEach((event) => {\n let eventCallBack = event.functionName ? this.ob[event.functionName] : undefined;\n if (event.functionName === undefined) {\n this.node!.events.push([\n event.name,\n {\n modifiers: event.modifiers,\n //noop 回调,为空方法做兼容,例如:@click.stop,仅做阻止冒泡\n callBack: noop\n }\n ]);\n } else if (eventCallBack && typeof eventCallBack === \"function\") {\n this.node!.events.push([\n event.name,\n {\n modifiers: event.modifiers,\n callBack: (e) => {\n let eventParams: Array<any> = [];\n\n if (event.functionParam) {\n //事件触发时,主动获取,不需要做数据劫持监听\n eventParams = this.runExpress(`[${event.functionParam}]`, this.ob, () => {\n if (event._code) {\n let modifiers = event.modifiers?.join(\".\");\n\n return `express:${event._code} \\nfrom: <${\n \"tagName\" in this.ast ? this.ast.tagName : \"Component\"\n } @${event.name}${modifiers ? \".\" + modifiers : \"\"}=\"${event._code}\" ... /> `;\n }\n });\n }\n\n <Function>eventCallBack.call(this.ext.ob, e, ...eventParams);\n }\n }\n ]);\n } else {\n logger.error(\n LOGTAG,\n `The callback method (${event.functionName}) specified for the ${event.name} event ` +\n `in the ${\"tagName\" in this.ast ? this.ast.tagName : \"\"} element was not found. Please check.`\n );\n }\n });\n }\n\n private async renderChildren() {\n return new Promise(async (resolve, reject) => {\n if (\"tagName\" in this.ast) {\n let component = this.ob.components[this.ast.tagName] || getGlobalComponent(this.ast.tagName);\n if (component === undefined) {\n logger.error(\n LOGTAG,\n `Failed to render component. Private or global component named '${this.ast.tagName}' not found.`\n );\n return;\n }\n\n if (!(JOKER_COMPONENT_TAG in component)) {\n component = (await component()).default;\n }\n\n //可能被销毁\n if (this.node) {\n let sections = this.getSections();\n this.node.name = this.ast.tagName;\n this.node.component = new component(this.node?.propValues, sections, this.node?.keepalive);\n } else {\n return;\n }\n } else if (typeof this.ast.component === \"function\") {\n let sections = this.getSections();\n\n this.node!.component = new this.ast.component(\n this.node?.propValues,\n sections,\n this.node?.keepalive\n ) as Component;\n } else {\n this.node!.component = this.ast.component as Component;\n }\n\n if (!this.node) return;\n\n //如果没有name时取初始化后的name\n if (\n !this.node.name &&\n \"name\" in this.node!.component &&\n this.node.component.name &&\n typeof this.node.component.name === \"string\"\n ) {\n this.node!.name = this.node.component.name;\n }\n let self = this;\n let destoryReject = function () {\n if (self.loadPromise) {\n resolve(undefined);\n }\n };\n\n this.node.component!.$on(\"mounted\", () => {\n this.node?.component.$off(\"beforeDestroy\", destoryReject);\n resolve(undefined);\n });\n\n this.node.component!.$on(\"beforeDestroy\", destoryReject);\n\n this.node.component!.$mount(this.node);\n\n //可能会造成挂载生命周期内部卸载,可能存在内不判断\n if (!this.node) return;\n let component = this.node?.component as Component;\n\n if (component.isKeepAlive) {\n this.ast.node = this.node;\n }\n });\n }\n\n private getSections(): Record<string, SectionType> {\n let result: Record<string, SectionType> = {};\n\n let resolvedAsts: AST.Node[] = [];\n\n //剔除条件\n this.ast.childrens.forEach((ast) => {\n if (ast.type === AST.NodeType.COMMAND && (<AST.Command>ast).cmdName === \"if\" && ast.childrens) {\n let ifAst = <AST.IfCommand>ast;\n let hasSection = ast.childrens.some(\n (n) => n.type === AST.NodeType.COMMAND && (<AST.Command>n).cmdName === \"section\"\n );\n\n let validateCondition = ifAst.condition.startsWith(EXPRESSHANDLERTAG + \".$sections\");\n //只要根符合$section判断,无论是否时default一律处理,不考虑劫持\n if (validateCondition) {\n let conditionResult = this.runExpress(ifAst.condition, this.ob, () => {\n return ifAst._code;\n });\n\n if (conditionResult) {\n resolvedAsts.push(...ast.childrens);\n return;\n }\n\n return;\n }\n\n if (hasSection && ifAst.kind === \"if\" && !validateCondition) {\n logger.warn(\n LOGTAG,\n \"While parsing the section, it was found that this section is wrapped in a conditional statement. \" +\n \"This conditional statement only supports if judgments using $sections. It has been excluded.\"\n );\n\n return;\n }\n }\n resolvedAsts.push(ast);\n });\n\n resolvedAsts.forEach((ast) => {\n if (ast.type === AST.NodeType.COMMAND && (<AST.Command>ast).cmdName === \"section\") {\n let sectionAst = <AST.SectionCommand>ast;\n\n let id = sectionAst.id || DEFAULT_SECTION_TAG;\n\n if (/^(\\'|\\\")(.*?)((\\'|\\\"))$/.test(id)) {\n id = id.slice(1, -1);\n }\n //做插槽ASTS合并\n result[id] = result[id] || {\n asts: [],\n ob: this.ob,\n params: sectionAst.paramKeys,\n parser: this.ext\n };\n\n result[id].asts.push(...(ast.childrens || []));\n } else {\n result[DEFAULT_SECTION_TAG] = result[DEFAULT_SECTION_TAG] || {\n asts: [],\n ob: this.ob,\n parser: this.ext\n };\n\n result[DEFAULT_SECTION_TAG].asts.push(ast);\n }\n });\n\n return result;\n }\n\n protected beforeDestroy(keepalive?: boolean) {\n if (this.loadPromise) {\n this.ext.promiseQueue.delete(this.loadPromise);\n this.loadPromise = undefined;\n }\n if (keepalive === true && this.node?.component?.isKeepAlive) {\n this.node?.component?.$destroy();\n } else {\n this.node?.component?.$destroy(true);\n this.ast.node = undefined;\n }\n }\n}\n","import { AST } from \"@joker.front/ast\";\nimport { isEmptyStr, logger } from \"@joker.front/shared\";\nimport { IParser } from \"./parser\";\nimport { VNode } from \"./vnode\";\n\nconst LOGTAG = \"Element\";\n\nexport class ParserElement extends IParser<AST.Element, VNode.Element> {\n public parser() {\n this.node = new VNode.Element(this.ast.tagName, this.parent);\n\n this.initAttributes();\n\n this.initEvents();\n\n this.appendNode();\n\n this.ext.parserNodes(this.ast.childrens, this.node, this.ob);\n }\n\n private initAttributes() {\n for (let attr of this.ast.attributes) {\n if (attr.name === \"ref\") {\n if (isEmptyStr(attr.value)) {\n logger.warn(LOGTAG, \"The 'ref' value of the element cannot be empty\");\n continue;\n }\n\n this.ref = attr.value!;\n this.ext.addRef(attr.value!, this.node!);\n\n continue;\n }\n\n if (attr.express) {\n let change = (val: any) => {\n if (!this.node) return;\n this.node!.attributes[attr.name] = this.transformAttrVal(val);\n\n //通知渲染更新\n this.ext.render?.updateNode(this.node!, attr.name);\n\n this.notifyNodeWatcher(\"update\", attr.name);\n };\n\n let watcherVal = this.runExpressWithWatcher(\n attr.express,\n this.ob,\n (newVal) => {\n change(newVal);\n },\n false,\n () => {\n if (attr.value) {\n return `express:${attr.value} \\nfrom <${this.ast.tagName} ${attr.name}=\"${attr.value}\" ... /> `;\n }\n }\n );\n\n this.node!.attributes[attr.name] = this.transformAttrVal(watcherVal);\n } else {\n this.node!.attributes[attr.name] = attr.value;\n }\n }\n }\n\n private initEvents() {\n for (let event of this.ast.events) {\n let eventCallBack = event.functionName ? this.ob[event.functionName] : undefined;\n\n if (event.functionName === undefined || (eventCallBack && typeof eventCallBack === \"function\")) {\n this.node?.events.push([\n event.name,\n {\n modifiers: event.modifiers,\n callBack: (e) => {\n //如果空方法,不做异常处理,为事件挡板做兼容,例如:@keydown.stop\n if (eventCallBack === undefined) {\n return;\n }\n\n let eventParams: Array<any> = [];\n\n if (event.functionParam) {\n //事件触发时,主动获取,不需要做数据劫持监听\n eventParams = this.runExpress(`[${event.functionParam}]`, this.ob, () => {\n if (event._code) {\n let modifiers = event.modifiers?.join(\".\");\n\n return `express:${event._code}\\nfrom <${this.ast.tagName} @${event.name}${\n modifiers ? \".\" + modifiers : \"\"\n }=\"${event._code}\" ... /> `;\n }\n });\n }\n\n if (eventCallBack) {\n (<Function>eventCallBack).call(this.ext.ob, e, ...eventParams);\n }\n }\n }\n ]);\n } else {\n throw new Error(\n `The callback method (${event.functionName}) specified for the ${event.name} event ` +\n `in the ${this.ast.tagName} element was not found. Please check.`\n );\n }\n }\n }\n\n private transformAttrVal(val: any): any {\n if (val === undefined) {\n return false;\n }\n\n if (typeof val === \"string\") {\n return val;\n }\n\n if (typeof val === \"boolean\") {\n return val;\n }\n\n if (typeof val === \"function\") {\n return undefined;\n }\n\n if (Object.prototype.toString()) return val;\n }\n}\n","import { AST } from \"@joker.front/ast\";\nimport { Component } from \"../component\";\nimport { IContainer } from \"../utils/DI\";\nimport { Render } from \"./render\";\nimport { ParserText } from \"./text\";\nimport { VNode } from \"./vnode\";\nimport { logger, remove } from \"@joker.front/shared\";\nimport { ParserComment } from \"./comment\";\nimport { ParserCondition } from \"./command/condition\";\nimport { ParserList } from \"./command/for\";\nimport { ParserCode } from \"./command/code\";\nimport { checkIsComponent, ParserComponent } from \"./component\";\nimport { ParserElement } from \"./element\";\nimport { ParserRenderSection } from \"./command/section\";\n\nexport type NodeChangeType = \"append\" | \"remove\" | \"update\" | \"after-enter\" | \"after-leave\";\n\nexport type ObType = Component & Record<string, any>;\n\nexport class ParserTemplate {\n /** VNode root */\n public root: VNode.Root = new VNode.Root();\n\n /** VNode ref index set */\n public refs: Record<string, Array<VNode.Node>> = {};\n\n public sleeped: boolean = false;\n\n public promiseQueue: Set<Promise<any>> = new Set();\n\n /**\n * Node change observer\n */\n public nodeWatcherEvents: Record<\n string,\n Array<(node: VNode.Node, type: NodeChangeType, propertyKey?: string) => void>\n > = {};\n\n /** VNode rendering handler (dependency injection) */\n public render: Render.IRender;\n\n constructor(public asts: AST.Node[], public ob: ObType, parent?: VNode.Node) {\n this.root.component = ob;\n this.render = IContainer.get(Render.IRENDERIOCTAGID) ?? new Render.DomRender();\n if (parent && parent instanceof VNode.Node) {\n this.root.parent = parent;\n\n parent.childrens ??= [];\n parent.childrens.push(this.root);\n }\n }\n\n public parser() {\n this.parserNodes(this.asts, this.root);\n }\n\n /**\n * Mount VNode\n * @param root\n */\n public mount(root: any): void {\n // If already output, directly mount to render.elements\n if (this.sleeped) {\n this.weakup();\n }\n\n this.render?.mount(root);\n }\n\n /**\n * Compile AST subset\n * @param asts\n * @param parent\n */\n public parserNodes(asts: AST.Node[], parent: VNode.Node, ob?: Component & Record<string, any>) {\n if (this.asts.length === 0) return; // Terminate downward rendering if destroyed\n\n for (let ast of asts) {\n if (ast.type === AST.NodeType.TEXT) {\n new ParserText(ast as AST.Text, ob ?? this.ob, parent, this).init();\n } else if (ast.type === AST.NodeType.COMMENT) {\n new ParserComment(ast as AST.Comment, ob ?? this.ob, parent, this).init();\n } else if (ast.type === AST.NodeType.COMPONENT) {\n // Dynamic component\n new ParserComponent(ast as AST.Component, ob ?? this.ob, parent, this).init();\n } else if (ast.type === AST.NodeType.ELEMENT) {\n let elementAST = <AST.Element>ast;\n if (checkIsComponent(elementAST.tagName, ob ?? this.ob)) {\n new ParserComponent(elementAST, ob ?? this.ob, parent, this).init();\n } else {\n new ParserElement(elementAST, ob ?? this.ob, parent, this).init();\n }\n } else if (ast.type === AST.NodeType.COMMAND) {\n let cmdAST = <AST.Command>ast;\n\n switch (cmdAST.cmdName) {\n case \"if\":\n case \"elseif\":\n case \"else\":\n new ParserCondition(cmdAST as AST.IfCommand, ob ?? this.ob, parent, this).init();\n break;\n case \"for\":\n new ParserList(cmdAST as AST.ForCommand, ob ?? this.ob, parent, this).init();\n break;\n case \"RenderSection\":\n new ParserRenderSection(\n cmdAST as AST.PropertyOrFunctionCommand,\n ob ?? this.ob,\n parent,\n this\n ).init();\n break;\n case \"section\":\n // Sections are not parsed until component loading, handled immediately\n break;\n default:\n new ParserCode(cmdAST as AST.PropertyOrFunctionCommand, ob ?? this.ob, parent, this).init();\n break;\n }\n }\n }\n }\n\n /**\n * Add ref\n * @param refName ref value\n * @param node VNode node\n */\n public addRef(refKey: string, node: VNode.Node) {\n this.refs[refKey] = this.refs[refKey] || [];\n\n this.refs[refKey].push(node);\n\n node.ref = refKey;\n }\n\n /**\n * Remove ref where Node is located\n * @param node VNode node\n */\n public removeRef(node: VNode.Node) {\n for (let refKey in this.refs) {\n if (this.refs[refKey].includes(node)) {\n remove(this.refs[refKey], node);\n }\n }\n }\n\n /**\n * Add node change observer\n * @param ref\n * @param callBack\n */\n public addNodeWatcher(ref: string, callBack: (node: VNode.Node, type: NodeChangeType) => void) {\n this.nodeWatcherEvents[ref] = this.nodeWatcherEvents[ref] || [];\n\n this.nodeWatcherEvents[ref].push(callBack);\n }\n\n /**\n * Remove node change observer\n * @param ref\n * @param callBack\n */\n public removeNodeWatcher(ref: string, callBack: Function) {\n remove(this.nodeWatcherEvents[ref] || [], callBack);\n }\n\n /**\n * Respond to node changes and notify observers\n * @param ref\n * @param node\n * @param nodeChangeType\n */\n public notifyNodeWatcher(ref: string, node: VNode.Node, nodeChangeType: NodeChangeType, propertyKey?: string) {\n this.nodeWatcherEvents[ref]?.forEach((callBack) => {\n callBack(node, nodeChangeType, propertyKey);\n });\n }\n\n public sleep(node?: VNode.Node) {\n let parent = node || this.root;\n\n // All nodes should be removed to avoid inconsistent/delayed DOM tree restoration due to data changes when waking up again\n parent.childrens?.forEach((m) => {\n let next = () => {\n if (m.childrens) {\n this.sleep(m);\n }\n\n m.sleep = true;\n\n this.render?.removeNode(m, true);\n };\n\n if (\n this.nodeTransition(m, \"leave\", undefined, () => {\n next();\n })\n ) {\n return;\n }\n next();\n });\n\n node === undefined && (this.sleeped = true);\n }\n\n private weakup(node?: VNode.Node) {\n let parent = node || this.root;\n\n parent.childrens?.forEach((m) => {\n m.sleep = false;\n this.render?.appendNode(m);\n\n if (m.childrens) {\n this.weakup(m);\n }\n\n this.nodeTransition(m, \"enter\");\n });\n\n node === undefined && (this.sleeped = false);\n }\n\n /**\n * Destroy\n */\n public destroy(keepalive?: boolean) {\n while (this.root.childrens.length) {\n let item = this.root.childrens[0];\n\n if (item[VNode.PARSERKEY]) {\n item[VNode.PARSERKEY].destroy(keepalive);\n } else {\n // root type\n remove(this.root.childrens, item);\n }\n }\n\n this.render.destroy();\n\n this.refs = {};\n\n this.root.childrens.length = 0;\n\n this.nodeWatcherEvents = {};\n this.asts.length = 0;\n }\n\n /** Clear all watches to optimize nested component destruction when custom destroy events trigger watchers again */\n public destroyWathcers() {\n for (let node of this.root.childrens) {\n if (node[VNode.PARSERKEY]) {\n node[VNode.PARSERKEY].destroyWathcers();\n }\n }\n }\n\n public reSetAsts(asts: AST.Node[], keepalive?: boolean) {\n // Destroy historical products\n this.destroy(keepalive);\n\n this.render = IContainer.get(Render.IRENDERIOCTAGID) ?? new Render.DomRender();\n\n this.asts = asts;\n }\n\n public nodeTransition(\n node: VNode.Node | undefined,\n mode: \"enter\" | \"leave\",\n name?: string,\n callBack?: Function,\n type?: \"transition\" | \"animation\"\n ): boolean {\n if (node && node.parent?.childrens && (node instanceof VNode.Element || node instanceof VNode.Component)) {\n let nodeTransitionOption = getNodeSupportTransition(node);\n name ??= nodeTransitionOption?.name;\n type ??= nodeTransitionOption?.type;\n\n if (!name) return false;\n\n let firstElement = getFirstElement(node);\n\n if (firstElement) {\n mode === \"enter\"\n ? this.render.elementToEnter(firstElement, name, type, () => {\n let parser = node[VNode.PARSERKEY];\n\n if (parser && parser.ref) {\n this.notifyNodeWatcher(parser.ref, node, \"after-enter\");\n }\n callBack?.();\n })\n : this.render.elementToLeave(firstElement, name, type, () => {\n let parser = node[VNode.PARSERKEY];\n\n if (parser && parser.ref) {\n this.notifyNodeWatcher(parser.ref, node, \"after-leave\");\n }\n callBack?.();\n });\n\n return true;\n } else {\n logger.warn(\"Render Core\", \"Incomplete data found when executing node animation, please check\");\n }\n }\n return false;\n }\n}\n\nexport function getFirstElement(node: VNode.Node): VNode.Element | undefined {\n if (node instanceof VNode.Element) return node;\n\n if (node.childrens && node.childrens.length) {\n for (let children of node.childrens) {\n if (children instanceof VNode.Element) {\n return children;\n } else {\n return getFirstElement(children);\n }\n }\n }\n return;\n}\n\nexport function getNodeSupportTransition(node: VNode.Node) {\n if (node instanceof VNode.Element || node instanceof VNode.Component) {\n let attrs: Record<string, any> = node instanceof VNode.Element ? node.attributes : node.propValues;\n\n return {\n name: attrs[\"transition-name\"],\n type: attrs[\"transition-type\"]\n };\n }\n}\n","import { isPlainObject, toLowerCase } from \"@joker.front/shared\";\n\nexport type PropValueType = String | ArrayConstructor | Number | Object | Function | Boolean;\n\nexport type PropTypeFullModel = {\n type?: PropValueType | Array<PropValueType>;\n required?: Boolean;\n default?: any;\n validate?: (val: any) => Boolean;\n};\n\nexport type PropType = PropValueType | Array<PropValueType> | PropTypeFullModel;\n\n/**\n * Check if a prop value matches the specified type(s)\n * @param key Prop key\n * @param value Prop value\n * @param types Expected type(s)\n * @returns The original or converted value if valid, otherwise throws an error\n */\nfunction checkPropType(key: string | symbol, value: any, types: PropValueType | Array<PropValueType>): any {\n // Undefined values are allowed (handled by required flag)\n if (value === undefined) {\n return;\n }\n\n const checkTypes: PropValueType[] = Array.isArray(types) ? types : [types];\n\n for (const checkType of checkTypes) {\n // Handle Array type explicitly due to proxy issues\n if (checkType === Array && Array.isArray(value)) {\n return value;\n }\n\n // Check primitive types by lowercase comparison\n if (typeof value === (<Function>checkType).name.toLowerCase()) {\n return value;\n }\n }\n\n // Attempt type conversion for the first specified type\n switch (checkTypes[0]) {\n case Number:\n const numValue = Number(value);\n if (!isNaN(numValue)) {\n return numValue;\n }\n break;\n\n case String:\n return String(value);\n }\n\n throw new Error(`The type of ${key.toString()} in props does not match the constrained type`);\n}\n\n/**\n * Get and validate a prop value based on its definition\n * @param propsData Source props data\n * @param key Prop key\n * @param propsType Prop type definition\n * @returns Validated and processed prop value\n */\nexport function getPropValue(\n propsData: Readonly<Record<string | symbol, any>>,\n key: string | symbol,\n propsType?: Record<string | symbol, any>\n) {\n let patchKey: string | undefined;\n if (typeof key !== \"symbol\") {\n patchKey = toLowerCase(key);\n }\n\n let propValue: any;\n\n // Check for exact key match first\n if (key in propsData) {\n propValue = propsData[key];\n }\n // Then check for case-insensitive match\n else if (patchKey) {\n propValue = propsData[patchKey];\n }\n\n let propOption: any;\n if (propsType) {\n if (key in propsType) {\n propOption = propsType[key];\n } else if (patchKey && patchKey in propsType) {\n propOption = propsType[patchKey];\n }\n }\n\n if (propOption !== undefined) {\n // Handle full model definition\n if (\n isPlainObject(propOption) &&\n (\"type\" in propOption || \"required\" in propOption || \"default\" in propOption || \"validate\" in propOption)\n ) {\n const fullModel = <PropTypeFullModel>propOption;\n\n // Check required flag\n if (fullModel.required && propValue === undefined) {\n throw new Error(`props key:${key.toString()} is required, please check`);\n }\n\n // Validate type\n if (fullModel.type) {\n propValue = checkPropType(key, propValue, fullModel.type);\n }\n\n // Run custom validation\n if (fullModel.validate && fullModel.validate(propValue) === false) {\n throw new Error(`Validation failed for props key ${key.toString()}`);\n }\n\n // Apply default value if needed\n propValue = propValue ?? fullModel.default;\n }\n // Handle shorthand type definition\n else if (isPropsType(propOption)) {\n propValue = checkPropType(key, propValue, propOption);\n }\n // Treat as default value\n else {\n propValue = propValue ?? propOption;\n }\n\n return propValue;\n }\n\n return propValue;\n}\n\n/**\n * Check if a value represents a valid prop type definition\n * @param propOption Value to check\n * @returns True if valid prop type, false otherwise\n */\nfunction isPropsType(propOption: any): boolean {\n if ([String, Array, Number, Object, Function, Boolean].includes(propOption)) {\n return true;\n }\n\n if (Array.isArray(propOption)) {\n return isPropsType(propOption[0] as any);\n }\n\n return false;\n}\n","export function isGetterProperty(obj: object, prop: string) {\n if (!obj.constructor) return false;\n let descriptor = Object.getOwnPropertyDescriptor(obj.constructor.prototype, prop);\n return descriptor && descriptor.get;\n}\n","import { AST, IComponent, RENDER_HANDLER, createCommand, createComponent } from \"@joker.front/ast\";\nimport { logger, remove, toLowerCase } from \"@joker.front/shared\";\nimport { observer } from \"./observer\";\nimport { BREAK_WATCH_UPDATE, Watcher } from \"./observer/watcher\";\nimport { NodeChangeType, ParserTemplate } from \"./parser\";\nimport { VNode } from \"./parser/vnode\";\nimport { PropType, getPropValue } from \"./props\";\nimport { isGetterProperty } from \"./utils\";\n\nconst LOGTAG = \"Component\";\nconst PROPS_DATA_KEY = Symbol.for(\"JOKER_PROPS_DATA_KEY\");\nconst PROPS_DATA_PROXY = Symbol.for(\"JOKER_PROPS_DATA_PROXY\");\nconst PRIVATE_WATCHERS = Symbol.for(\"JOKER_PRIVATE_WATCHERS\");\nconst EVENT_DATA_KEY = Symbol.for(\"JOKER_EVENT_DATA_KEY\");\nexport const IS_DESTROY = Symbol.for(\"JOKER_IS_DESTROY\");\n\nexport const PARSER_TEMPLATE_TARGET = Symbol.for(\"JOKER_PARSER_TEMPLATE_TARGET\");\n\nexport type TemplateType = Array<AST.Node> | ((h: typeof RENDER_HANDLER) => Array<AST.Node>);\n\nexport const SCOPE_ID = Symbol.for(\"JOKER_SCOPE_ID\");\n\nexport const JOKER_COMPONENT_TAG = Symbol.for(\"JOKER_COMPONENT_TAG\");\n\nconst TRANSFORM_FUNCTION_FLAG = Symbol();\n\nexport type ComponentConstructor = typeof Component<any>;\n\nexport type ImportComponentConstructor = () => Promise<{ default: ComponentConstructor }>;\n\nexport type SectionType = {\n asts: AST.Node[];\n ob?: Component & Record<string, any>;\n parser?: ParserTemplate;\n params?: string[];\n};\n\ntype DefaultKeyVal = Record<string | symbol, any>;\n\nlet componentFunctionPropertyNames = [\n \"constructor\",\n \"$mount\",\n \"$nodeTransition\",\n \"$destroy\",\n \"$getRef\",\n \"$getRefs\",\n \"$syncProp\",\n \"$watchNode\",\n \"$watch\",\n \"$on\",\n \"$off\",\n \"$trigger\",\n \"$render\",\n \"created\",\n \"mounted\",\n \"beforeDestroy\",\n \"sleeped\",\n \"wakeup\",\n \"destroyed\"\n];\n\n/**\n * Joker component\n */\nexport class Component<T extends DefaultKeyVal = {}> implements IComponent {\n static [JOKER_COMPONENT_TAG] = true;\n\n /**\n * scopeId for css scoping\n */\n public [SCOPE_ID]?: string;\n\n /**\n * Observable data (with hijacking observation capability)\n */\n public model: DefaultKeyVal = {};\n\n /**\n * Render template\n */\n public template?: TemplateType;\n\n /**\n * Mount root\n */\n public $root: any;\n\n /**\n * Whether it is slept\n */\n public isSleeped: boolean = false;\n /**\n * Available declared components\n */\n public components: Record<string, ComponentConstructor | ImportComponentConstructor> = {};\n\n /**\n * Props auxiliary constraints\n * @example { name:\"default value\", age:Number }\n * Can configure default values or constraints, type reference PropType\n */\n public propsOption?: Partial<Record<keyof T, PropType | any>>;\n\n private [PROPS_DATA_KEY]: Readonly<Record<string, any>> = {};\n\n private [PARSER_TEMPLATE_TARGET]?: ParserTemplate;\n\n private [PROPS_DATA_PROXY]?: Record<string, any>;\n\n private [PRIVATE_WATCHERS]: Watcher<any>[] = [];\n\n private [EVENT_DATA_KEY]: Map<string, Set<VNode.EventCallBack>> = new Map();\n\n private [IS_DESTROY] = false;\n\n // Method conversion flag\n private [TRANSFORM_FUNCTION_FLAG] = false;\n /**\n * @param propData prop parameters\n * @param sections Render partial area\n * @param isKeepAlive Whether to keep alive, when enabled, only the UI part will be destroyed during destroy, and the data will not be destroyed until destroy(true) is used\n */\n constructor(\n propData?: T,\n public $sections: Record<string, SectionType> = {},\n public readonly isKeepAlive?: boolean\n ) {\n this[PROPS_DATA_KEY] = propData || {};\n }\n\n /**\n * Actively declare accepted parameters\n * @returns\n */\n public get props(): Readonly<T> {\n if (this[PROPS_DATA_PROXY] === undefined) {\n let self = this;\n\n this[PROPS_DATA_PROXY] = new Proxy(self[PROPS_DATA_KEY], {\n get(target, p: string) {\n return getPropValue(self[PROPS_DATA_KEY], p, self.propsOption);\n },\n set() {\n throw new Error(\n \"props parameters are not allowed to be changed, only one-way data transfer is allowed\"\n );\n }\n });\n }\n\n return this[PROPS_DATA_PROXY] as T;\n }\n\n /**\n * Mount\n * @param root\n */\n public $mount(root: any | VNode.Component): this {\n if (this[TRANSFORM_FUNCTION_FLAG] === false) {\n let getAllChildFuncProperties = () => {\n let childMethods: string[] = [];\n let currentObj = Object.getPrototypeOf(this);\n while (currentObj !== null && currentObj !== Object.prototype) {\n Object.getOwnPropertyNames(currentObj).forEach((property) => {\n if (\n // Exclude constructor and internal functions\n componentFunctionPropertyNames.includes(property) === false &&\n // Exclude get properties\n !isGetterProperty(currentObj, property) &&\n typeof currentObj[property] === \"function\" &&\n // Exclude class\n !currentObj[property].prototype?.hasOwnProperty(\"constructor\")\n ) {\n childMethods.push(property);\n }\n });\n currentObj = Object.getPrototypeOf(currentObj);\n }\n return childMethods;\n };\n\n // Change function this pointer\n for (let name of getAllChildFuncProperties()) {\n this[name as keyof this] = (this[name as keyof this] as Function).bind(this);\n }\n this[TRANSFORM_FUNCTION_FLAG] = true;\n }\n\n this.$root = root;\n\n // Wake up from sleep\n if (this.isKeepAlive && this.isSleeped) {\n this.isSleeped = false;\n\n if (this[PARSER_TEMPLATE_TARGET] && this.$root) {\n this[PARSER_TEMPLATE_TARGET].mount(this.$root);\n } else {\n logger.error(\n LOGTAG,\n \"When attempting to wake up the current component, it was found that the rendering handler has been destroyed. The wake-up operation cannot proceed.\",\n [this, this.$root]\n );\n return this;\n }\n\n this.wakeup();\n this.$trigger(\"wakeup\");\n\n this.$rootVNode && weakupNotify(this.$rootVNode);\n\n return this;\n }\n\n this.isSleeped = false;\n\n this.model = observer(this.model);\n\n let createdPromise = this.created();\n\n let next = async () => {\n this.$trigger(\"created\");\n\n // If there is a template, execute render, otherwise do not process\n this.template && this.$render();\n\n await this.$nextUpdatedRender();\n\n if (this[IS_DESTROY]) return;\n\n await this.mounted();\n if (this[IS_DESTROY]) return;\n\n this.$trigger(\"mounted\");\n };\n if (createdPromise && createdPromise instanceof Promise) {\n createdPromise.then(() => {\n if (this[IS_DESTROY]) return;\n next();\n });\n } else {\n next();\n }\n\n return this;\n }\n\n public $nextUpdatedRender(callBack?: Function) {\n if (this[IS_DESTROY]) return;\n\n // Collect asynchronous renders at this moment (including subsets)\n let promiseQueue: Array<Promise<any>> = [...(this[PARSER_TEMPLATE_TARGET]?.promiseQueue || [])];\n let childrens: any = this.$rootVNode?.find((n) => n instanceof VNode.Component);\n childrens?.forEach((n: any) => {\n n?.component && promiseQueue.push(...(n.component[PARSER_TEMPLATE_TARGET]?.promiseQueue || []));\n });\n if (promiseQueue.length) {\n return Promise.all(promiseQueue).finally(() => {\n if (this[IS_DESTROY]) return;\n callBack?.();\n });\n } else {\n if (this[IS_DESTROY]) return;\n callBack?.();\n }\n }\n\n /**\n * Node animation, only supports element and component nodes\n */\n public $nodeTransition(\n nodeOrRef: string | VNode.Node,\n mode: \"enter\" | \"leave\",\n name?: string,\n callBack?: Function,\n type?: \"transition\" | \"animation\"\n ): void {\n if (typeof nodeOrRef === \"string\") {\n let vnode = this.$getRef(nodeOrRef);\n\n if (vnode) {\n nodeOrRef = vnode;\n } else {\n logger.error(LOGTAG, `Node with ref=${nodeOrRef} not found when executing node animation`);\n return;\n }\n }\n this[PARSER_TEMPLATE_TARGET]?.nodeTransition(nodeOrRef, mode, name, callBack, type);\n }\n\n /**\n * Destroy\n */\n public $destroy(force?: boolean) {\n if (!force && this.isKeepAlive) {\n this[PARSER_TEMPLATE_TARGET]?.sleep();\n\n this.isSleeped = true;\n\n this.sleeped();\n this.$trigger(\"sleeped\");\n\n this.$rootVNode && sleepNotify(this.$rootVNode);\n\n return;\n }\n\n this[IS_DESTROY] = true;\n\n //#region Clear listeners within the component and listeners within template compilation\n for (let watcher of this[PRIVATE_WATCHERS]) {\n watcher.destroy();\n }\n\n this[PRIVATE_WATCHERS].length = 0;\n\n this[PARSER_TEMPLATE_TARGET]?.destroyWathcers();\n //#endregion\n\n this.beforeDestroy();\n this.$trigger(\"beforeDestroy\");\n\n this[PARSER_TEMPLATE_TARGET]?.destroy();\n\n this[PARSER_TEMPLATE_TARGET] = undefined;\n\n if (this.template && Array.isArray(this.template)) {\n this.template.length = 0;\n }\n\n this.$trigger(\"destroy\");\n\n this[EVENT_DATA_KEY].clear();\n\n this.$root = undefined;\n\n this.isSleeped = false;\n\n this.$sections = {};\n\n this[PROPS_DATA_PROXY] = undefined;\n\n this[PROPS_DATA_KEY] = {};\n\n this.destroyed();\n }\n\n /**\n * VNode ref index set\n */\n public get $refs(): Readonly<Record<string, Array<VNode.Node>>> {\n return this[PARSER_TEMPLATE_TARGET]?.refs || {};\n }\n\n /**\n * Get a single VNode by ref\n */\n public $getRef<T extends VNode.Node = VNode.Element & VNode.Component>(ref: string): T | undefined {\n return this.$refs[ref]?.[0] as T;\n }\n\n /**\n * Get the VNode collection with the same ref\n */\n public $getRefs<T extends VNode.Node = VNode.Element & VNode.Component>(ref: string): Array<T> | undefined {\n return this.$refs[ref] as T[];\n }\n\n /**\n * Unidirectionally synchronize prop values and listen for changes to resynchronize\n * @param propKey The props key to observe and synchronize\n * @param modelKey The model key to assign, if not passed, assign by prop key\n * @param convertVal Value conversion method\n */\n public $syncProp(propKey: keyof T): void;\n public $syncProp(propKey: keyof T, modelKey: string): void;\n public $syncProp(propKey: keyof T, convertVal: (val: any) => any): void;\n public $syncProp(propKey: keyof T, modelKey: string, convertVal: (val: any) => any): void;\n public $syncProp(propKey: keyof T, modelKey?: string | ((val: any) => any), convertVal?: (val: any) => any): void {\n if (typeof modelKey === \"function\") {\n convertVal = modelKey;\n modelKey = undefined;\n }\n\n modelKey ??= propKey as string;\n convertVal ??= (val: any) => {\n return val;\n };\n // Synchronize first and then observe\n this.model[modelKey] = convertVal(this.props[propKey]);\n\n this.$watch(\n () => this.props[propKey],\n () => {\n this.model[modelKey! as string] = convertVal?.(this.props[propKey]);\n }\n );\n }\n\n /**\n * Root node (virtual DOM)\n */\n public get $rootVNode(): Readonly<VNode.Root> | undefined {\n return this[PARSER_TEMPLATE_TARGET]?.root;\n }\n\n /**\n * Add node change listening\n * @param ref ref mark\n * @param callBack\n * @returns Destroy method\n */\n public $watchNode(\n ref: string,\n callBack: (node: VNode.Node, type: NodeChangeType, property?: string) => void\n ): (() => void) | undefined {\n if (this[PARSER_TEMPLATE_TARGET]) {\n this[PARSER_TEMPLATE_TARGET]?.addNodeWatcher(ref, callBack);\n\n return () => {\n this[PARSER_TEMPLATE_TARGET]?.removeNodeWatcher(ref, callBack);\n };\n } else {\n logger.warn(LOGTAG, \"Component is not yet mounted. Node observation and monitoring cannot be performed.\");\n }\n }\n\n /**\n * Observe value changes\n * @param express\n * @param callBack\n * @param forceCallBack Force trigger callback even if the value is the same\n * @returns [wathcer value, destroy watcher]\n */\n public $watch(\n express: () => any,\n callBack: (nv?: any, ov?: any) => void,\n forceCallBack?: boolean\n ): [any, () => void] {\n let watcher = new Watcher(\n () => {\n if (this[IS_DESTROY]) {\n // Centralized cleaning\n for (let watcher of this[PRIVATE_WATCHERS]) {\n watcher.destroy();\n }\n return BREAK_WATCH_UPDATE;\n }\n return express();\n },\n (newVal: any, oldVal: any) => {\n if (this[IS_DESTROY]) return;\n callBack(newVal, oldVal);\n },\n undefined,\n forceCallBack\n );\n\n this[PRIVATE_WATCHERS].push(watcher);\n\n return [\n watcher.value,\n () => {\n watcher.destroy();\n remove(this[PRIVATE_WATCHERS], watcher);\n }\n ];\n }\n\n /**\n * Event registration\n * @param eventName\n * @param callBack\n */\n public $on(eventName: string, callBack: VNode.EventCallBack) {\n let callBacks = this[EVENT_DATA_KEY].get(eventName);\n\n if (callBacks === undefined) {\n callBacks = new Set();\n this[EVENT_DATA_KEY].set(eventName, callBacks);\n }\n\n if (callBacks?.has(callBack) === false) {\n callBacks.add(callBack);\n }\n }\n\n /**\n * Event unload\n * @param eventName\n * @param callBack\n */\n public $off(eventName: string, callBack?: VNode.EventCallBack) {\n let callBacks = this[EVENT_DATA_KEY].get(eventName);\n\n if (callBacks) {\n if (callBack) {\n callBacks.delete(callBack);\n } else {\n callBacks.clear();\n }\n }\n }\n public get $listeners() {\n let result: Record<string, VNode.EventCallBack<any>[]> = {};\n\n for (let eventName in this[EVENT_DATA_KEY]) {\n result[eventName] ||= [];\n\n result[eventName].push(...Array.from(this[EVENT_DATA_KEY].get(eventName) || []));\n }\n\n if (this.$root && this.$root instanceof VNode.Component) {\n for (let event of this.$root.events) {\n let eventName = event[0];\n result[eventName] ||= [];\n result[eventName].push(event[1].callBack);\n }\n }\n\n return result;\n }\n /**\n * Trigger event\n * @param eventName Event name\n * @param param Parameters\n * @param targetEvent event\n */\n public $trigger(eventName: string, param?: any, targetEvent?: VNode.Event<any>) {\n // Destroyed nodes do not respond to any events\n if (!this.$root) {\n return;\n }\n\n let e: VNode.Event<any> = {\n eventName,\n stopPropagation: targetEvent?.stopPropagation ?? (() => {}),\n preventDefault: targetEvent?.preventDefault ?? (() => {}),\n data: param,\n //@ts-ignore\n target: targetEvent?.target ?? this.$rootVNode,\n event: targetEvent?.event\n };\n // Event propagation of virtual nodes is not passed through on, but requires a container medium to ensure that it is not destroyed with the component\n if (this.$rootVNode && this.$rootVNode.parent && this.$rootVNode.parent instanceof VNode.Component) {\n if (this[PARSER_TEMPLATE_TARGET]?.render.triggerEvent(this.$rootVNode.parent, eventName, e) === false)\n return;\n }\n\n // Instance event response\n let callBacks = this[EVENT_DATA_KEY].get(eventName);\n if (callBacks?.size) {\n [...callBacks].forEach((m) => {\n m(e);\n });\n }\n\n // Global supplement\n let globalCallBacks = this[EVENT_DATA_KEY].get(\"*\");\n if (globalCallBacks?.size) {\n [...globalCallBacks].forEach((m) => {\n m(e);\n });\n }\n }\n\n /**\n * Active rendering (only rendering, generally suitable for complex scenarios such as hot updates of template areas/dynamic loading, etc.)\n * @param newTemplate Can specify a new template, otherwise use the original template\n * @param keepalive When rendering a new template, whether to retain the previous live components (advanced usage)\n * @returns\n */\n public $render(newTemplate?: TemplateType, keepalive?: boolean) {\n // The reason for placing the template in the front instead of after judging the root is for hot updates of keepalive components\n newTemplate ??= this.template;\n if (typeof newTemplate === \"function\") {\n this.template = newTemplate(RENDER_HANDLER);\n } else {\n this.template = newTemplate;\n }\n\n if (!this.$root) {\n // Do not rerender if not mounted/destroyed/pushed onto the stack\n return;\n }\n\n // Execute a render, then initialize a template\n this.template ??= [];\n\n this[PARSER_TEMPLATE_TARGET]?.reSetAsts(this.template, keepalive);\n\n this[PARSER_TEMPLATE_TARGET] ??= new ParserTemplate(this.template, this, this.$root);\n\n this[PARSER_TEMPLATE_TARGET].parser();\n\n if (this.$root) {\n this[PARSER_TEMPLATE_TARGET].mount(this.$root);\n }\n }\n\n /**\n * Lifecycle function (initialization completed)\n */\n protected created(): void | Promise<void> {}\n\n /**\n * Lifecycle function (mounting completed)\n */\n protected mounted(): void | Promise<void> {}\n\n /**\n * Lifecycle function (before destruction)\n */\n protected beforeDestroy() {}\n\n /**\n * When sleeping, this cycle is only triggered when the keepalive attribute is enabled\n */\n protected sleeped() {}\n\n /**\n * When waking up, this cycle is only triggered when the keepalive attribute is enabled\n */\n protected wakeup() {}\n\n /**\n * Lifecycle function (after destruction)\n */\n protected destroyed() {}\n}\n\n//#region Global component registration\n// Global component registration\nconst globalComponents: Record<string, ComponentConstructor | ImportComponentConstructor> = {};\n\n/**\n * Register global components\n * @param componentsOrName Component name/list\n * @param component Component\n */\nexport function registerGlobalComponent(\n componentsOrName: Record<string, ComponentConstructor | ImportComponentConstructor> | string,\n component?: ComponentConstructor | ImportComponentConstructor\n): void {\n if (typeof componentsOrName === \"string\") {\n if (component) {\n globalComponents[componentsOrName] = component;\n }\n } else {\n for (let name in componentsOrName) {\n globalComponents[name] = componentsOrName[name];\n }\n }\n}\n\n/**\n * Get component by registration key\n * @param name Component name\n * @returns Component\n */\nexport function getGlobalComponent(key: string): ComponentConstructor | ImportComponentConstructor | undefined {\n return globalComponents[key];\n}\n\n//#endregion\n\n//#region Tool methods\n/**\n * Sleep event penetration broadcast\n * @param vnode\n */\nfunction sleepNotify(vnode: VNode.Node) {\n vnode.childrens?.forEach((m) => {\n if (m instanceof VNode.Component) {\n m.component?.sleeped();\n }\n sleepNotify(m);\n });\n}\n\n/**\n * Wake up event penetration broadcast\n * @param vnode\n */\nfunction weakupNotify(vnode: VNode.Node) {\n vnode.childrens?.forEach((m) => {\n if (m instanceof VNode.Component) {\n m.component?.wakeup();\n }\n weakupNotify(m);\n });\n}\n//#endregion\n\n//#region Default integrated components\n/**\n * Dynamic component container\n */\nexport class ComponentContainer extends Component<{\n [key: string]: any;\n name: string;\n props: object;\n \"transition-name\": string;\n}> {\n template = [];\n\n private cache: Map<string, IComponent> = new Map();\n\n async mounted() {\n this.$watch(\n () => this.props.name,\n async (componentName) => {\n // Clean up first\n this.$render([], true);\n\n // Wait for parameter synchronization\n await Promise.resolve();\n\n // When the name value changes, wait for the parameter to refresh and update together\n this.$root && this.loadComponent(componentName);\n }\n );\n\n await this.loadComponent(this.props.name);\n }\n private propsVaule: any;\n\n created() {\n this.initProps();\n }\n\n initProps() {\n let propsData: Record<string, any> = {};\n\n if (!this.props.props) {\n Object.keys(this.props).forEach((p) => {\n // Filter\n if (this.filterProps(p) === false) return;\n\n propsData[p] = this.props[p];\n\n // Single-directional data synchronization\n this.$watch(\n () => this.props[p],\n () => {\n this.propsVaule[p] = this.props[p];\n }\n );\n });\n\n this.propsVaule = observer(propsData);\n }\n }\n\n filterProps(p: string) {\n // Filter\n if (typeof p !== \"string\") return false;\n\n let pName = toLowerCase(p);\n if (pName === \"transition-name\" || pName === \"name\" || pName === \"keep-alive\" || pName === \"ref\") return false;\n }\n\n async loadComponent(componentName?: string) {\n if (!componentName) {\n this.$render([], this.isKeepAlive);\n return;\n }\n\n let cacheComponent: IComponent;\n\n if (this.isKeepAlive) {\n let cacheComponent = this.cache.get(componentName);\n if (cacheComponent) {\n this.$render(\n [createComponent(cacheComponent, { \"transition-name\": this.props[\"transition-name\"] })],\n true\n );\n return;\n }\n }\n\n let hostComponents = this.$rootVNode?.parent?.[VNode.PARSERKEY]?.ob.components;\n\n let component = hostComponents?.[componentName];\n\n if (component === undefined) {\n component = getGlobalComponent(componentName);\n }\n\n if (component) {\n if (!(JOKER_COMPONENT_TAG in component)) {\n component = (await component()).default;\n }\n\n cacheComponent = new component(this.props.props || this.propsVaule, this.$sections, this.isKeepAlive);\n\n // Event upward penetration broadcast\n (<Component>cacheComponent).$on(\"*\", (e) => {\n this.$trigger(e.eventName, e.data, e);\n });\n\n this.isKeepAlive && this.cache.set(componentName, cacheComponent);\n\n this.$render(\n [createComponent(cacheComponent, { \"transition-name\": this.props[\"transition-name\"] })],\n this.isKeepAlive\n );\n } else {\n logger.warn(\"component\", `Component ${componentName} not found`);\n }\n }\n\n beforeDestroy() {\n this.removeCache();\n }\n\n public removeCache(componentName?: string) {\n if (componentName) {\n let cacheComponent = this.cache.get(componentName);\n this.cache.delete(componentName);\n if (cacheComponent) {\n cacheComponent.$destroy(true);\n }\n } else {\n this.cache.forEach((value) => {\n value.$destroy(true);\n });\n\n this.cache.clear();\n }\n }\n}\n\n/**\n * Virtual template container, used for grouping, as a component configuration attribute\n */\nexport class Template extends Component {\n template = function () {\n return [createCommand(\"RenderSection\")];\n };\n async mounted() {\n await this.$nextUpdatedRender();\n }\n}\n\nregisterGlobalComponent({\n template: Template,\n component: ComponentContainer\n});\n\n//#endregion\n","import { remove } from \"@joker.front/shared\";\n\nexport type EventCallBackItem<T> = {\n callBack: EventCallBackType<T>;\n once?: Boolean;\n};\n\nexport type EventCallBackType<T> = (\n e: {\n eventName: string | number | Symbol;\n stopPropagation: Function;\n callTimes: Number;\n },\n params: T\n) => boolean | void | Promise<boolean | void>;\n\nexport class EventBus<T extends Record<string, any>> {\n private eventDatas: Map<keyof T, EventCallBackItem<any>[]> = new Map();\n\n /**\n * Register an event\n * @param eventName Event name\n * @param callBack Callback function\n * @returns Event destruction function\n */\n public on<K extends keyof T>(eventName: K | \"*\", callBack: EventCallBackType<T[K]>) {\n let callbacks = this.eventDatas.get(eventName);\n\n if (callbacks === undefined) {\n callbacks = [];\n this.eventDatas.set(eventName, callbacks);\n }\n\n const newItem = { callBack };\n callbacks.push(newItem);\n\n return () => {\n callbacks && remove(callbacks, newItem);\n };\n }\n\n /**\n * Register a one-time event (triggers once)\n * @param eventName Event name\n * @param callBack Callback function\n * @returns Event destruction function\n */\n public once<K extends keyof T>(eventName: K, callBack: EventCallBackType<T[K]>) {\n let callbacks = this.eventDatas.get(eventName);\n\n if (callbacks === undefined) {\n callbacks = [];\n this.eventDatas.set(eventName, callbacks);\n }\n\n const newItem = { callBack, once: true };\n callbacks.push(newItem);\n return () => {\n callbacks && remove(callbacks, newItem);\n };\n }\n\n /**\n * Remove event listeners\n * @param eventName Event name (optional)\n * @param callBack Specific callback to remove (optional)\n */\n public off<K extends keyof T>(eventName?: K, callBack?: EventCallBackType<T[K]>) {\n if (eventName === undefined) {\n this.eventDatas.clear();\n return;\n }\n if (callBack) {\n const callbacks = this.eventDatas.get(eventName);\n const removeItem = callbacks?.find((m) => m.callBack === callBack);\n removeItem && remove(callbacks!, removeItem);\n } else {\n // Remove all listeners for the event\n this.eventDatas.delete(eventName);\n }\n }\n\n /**\n * Trigger an event\n * @param eventName Event name\n * @param param Event parameter\n * @returns Whether the event was stopped (`false` if stopped)\n */\n public async trigger<K extends keyof T>(eventName: K, param?: T[K]) {\n let callbacks = [...(this.eventDatas.get(eventName) || [])];\n callbacks.push(...(this.eventDatas.get(\"*\") || []));\n\n if (callbacks && callbacks.length) {\n let i = 0,\n callTimes = 0,\n isBreak = false;\n while (callbacks[i]) {\n const item = callbacks[i];\n const result = await item.callBack(\n {\n stopPropagation: () => (isBreak = true),\n callTimes,\n eventName\n },\n param\n );\n\n if (item.once) {\n remove(callbacks, item);\n } else {\n i++;\n }\n\n if (result === false || isBreak) {\n return false;\n }\n }\n }\n }\n}\n"],"names":["remove","removeFilter","isObject","isPlainObject","hasProperty","hasOwnProperty","defineProperty","deepClone","logger","LOGTAG","isEqual","escape2Html","isEmptyStr","createExpress","foEachProperties","noop","toLowerCase"],"mappings":"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","x_google_ignoreList":[1]}
|