@jiess/core
Version:
基于javascript的配置式渲染库,同时支持vue2,vue3和react
1 lines • 2.06 kB
JavaScript
(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{default:()=>s}),function(e={},t="toString"){if("function"==typeof e[t]){if("string"==typeof t){const r=new RegExp(t,"g");return(e[t]+"").replace(r,"")}e[t]}}(),new WeakMap;const r=(...e)=>{};var n;((((()=>{let e})(),()=>{let e=0;return function(t,r=100){let n=(new Date).getTime();n-e>r&&t(),e=n}})(),()=>{let e=!0;return function(t,r=100){e&&(e=!1,setTimeout((()=>{e=!0,t()}),r))}})(),()=>{let e=0;return function(t,r=100){let n=(new Date).getTime();n-e>r&&(e=n,t())}})(),function(e){e.React="react",e.Vue2="vue2",e.Vue3="vue3"}(n||(n={}));const o="react";class s{jiess;env=o;constructor(e,t){this.jiess=e,this.initRender(),this.env=e.$env=o,e.JiessComponent=e=>{const{is:r,setup:n,children:o,...s}=e,c={is:r,setup:n,jiessEnv:this};return this.createElement(t(c).start(s,o))}}initRender(){const{$render:e}=this.jiess;"function"==typeof e&&(this.jiess.createElement=(...t)=>{try{return e.call(this,...t)}catch(e){console.error("Error in custom createElement:",e)}})}createElement(e,t={},r){const{useRef:n,createElement:o}=this.jiess,{ref:s,...c}=t;return"function"==typeof s&&(c.ref=n(null),s(c.ref)),o(e,c,r)}createVNode({key:e},t){const{NativeComponent:r}=t(this);return this.createElement(r,{key:e})}component(e,t){let n=r;const{useRef:o,useEffect:s,useReducer:c}=this.jiess;return i=>{let u=!0,a=!0;const f=o(!1),[l,p]=c((e=>f.current=!e)),m=o({forceUpdate:p});return e.frame=m.current,e.frameProps=i,(e=>{const t=o(!0);t.current&&(t.current=!1,e())})((()=>{n=t(),n("beforeMount")})),(e.ctx.useCustomHook||r)(i),e.frame&&(e.frame.props=i),s((()=>(u=!1,n("mounted"),()=>{a=!1,n("beforeUnmount")})),[]),s((()=>(u&&n("updated"),()=>a&&n("beforeUpdate")))),e.ctx._buildVNodeTree()}}}module.exports=t})();