diff --git a/app/srv/core/main.js b/app/srv/core/main.js index 00156859..47d7830f 100644 --- a/app/srv/core/main.js +++ b/app/srv/core/main.js @@ -95,7 +95,7 @@ Error generating stack: `+o.message+` ${uy(e,t.mode)} ${Kg(e,t.mode)} ${dy(e,t.mode)} - `,(t?.hover||t?.active)&&fy({item:e,hover:t?.hover,active:t?.active}),Gg(e,t.mode)])}catch(n){console.log(n)}return cx([])};var hy=A(Z()),Eo=(e,t,n,r,i)=>{let o=t.item,l;o.component?.style&&(l={style:o.component.style,className:Ef(o.component.style,{mode:e.mode})});let s={className:Ef(o,{mode:e.mode}),inherit:l},c={},a=t.item.childs,u;return t.item.type==="text"?(u=null,s.dangerouslySetInnerHTML={__html:t.item.html||""}):u=Array.isArray(a)&&a?.map(d=>{if(!d)return null;let{id:f}=d,p=n?e.layout?.meta[f]:e.meta[f];return p?(0,hy.jsx)(qt,{meta:p,is_layout:n,passprop:{...r},depth:i+1},f):null}),s.children=u,t.item.adv?.html?(delete s.children,s.dangerouslySetInnerHTML={__html:t.item.adv?.html}):t.item.adv?.js&&!t.item.adv.js.includes("children")&&(delete s.children,delete s.dangerouslySetInnerHTML),{props:s,text_props:c}};var My=A(ge());var Ay=A(Rf());var Jr={NORMAL:0,WILDCARD:1,PLACEHOLDER:2};function Us(e={}){let t={options:e,rootNode:by(),staticRoutesMap:{}},n=r=>e.strictTrailingSlash?r:r.replace(/\/$/,"")||"/";if(e.routes)for(let r in e.routes)Ey(t,n(r),e.routes[r]);return{ctx:t,lookup:r=>i2(t,n(r)),insert:(r,i)=>Ey(t,n(r),i),remove:r=>o2(t,n(r))}}function i2(e,t){let n=e.staticRoutesMap[t];if(n)return n.data;let r=t.split("/"),i={},o=!1,l=null,s=e.rootNode,c=null;for(let a=0;a{},db:null,api:null,init_local_effect:{}},page:{history:{id:"",show:!1},root_id:"root",cur:a2,doc:null,list:{},building:!1,meta:{},entry:[],tree:[],render:()=>{}},comp:{doc:null,item:null,loaded:{},list:{},group:{}},code:{},global_prop:[],ui:{comp_editable:localStorage.getItem("prasi-comp-editable")==="yes",zoom:localStorage.zoom||"100%",side:{prop:!0},layout:{left:parseInt(localStorage.getItem("prasi-layout-left")||"250"),right:parseInt(localStorage.getItem("prasi-layout-right")||"250")},prevent_indent_hook:!1,syncing:!1,tree:{item_loading:[],search:"",search_ref:null,search_mode:{Name:!0,JS:!1,HTML:!1,CSS:!1},rename_id:"",open:{}},popup:{file:{enabled:!1,open:!1,picker:{value:"",on_pick:!1,multi:!1},path:"/",expanded:JSON.parse(localStorage.getItem("panel-file-expanded")||"{}"),entry:{},selected:new Set,action:null,file_renaming:"",file_ctx_menu_event:null,tree:[],tree_renaming:"",tree_ctx_path:"",tree_ctx_menu_event:null,preview:!0,upload:{started:!1,progress:{}}},code:{init:!1,open:!1,name:"site",log:"",loading:!1,startup_status:"init",error:!1,show_log:!1,list:{}},page:{open:null,form:null},script:{open:!1,mode:"js",lastMode:"js",type:"item",prop_kind:"",prop_name:"",on_close:()=>{},typings:{status:"ok",err_msg:""},wb_render:()=>{}},site:null,site_form:null,comp:{preview_id:"",open:null,import:!1},comp_group:null,api:{open:!1}}}};var Bs=e=>({isMobile:e.mode==="mobile",isDesktop:e.mode==="desktop",isEditor:location.pathname.startsWith("/ed/")});var ur=A(ge());var at=window;var u2=pf("prasi-cache","prasi-cache-store"),Co={timeout:null,store:u2},$s=(e,t)=>{let n=[...Ry(t,"navigate(",")"),...Ry(t,"href = ",";")],r=e.page.cur.id;e.page.navs[r]||(e.page.navs[r]=new Set);for(let i of n)e.page.navs[r].add(i);clearTimeout(Co.timeout),Co.timeout=setTimeout(()=>{e.on_nav_loaded&&e.on_nav_loaded({urls:Array.from(e.page.navs[r])})},100)},Ry=(e,t,n)=>{let r=0,i=0,o=[];for(;;){let l=e.indexOf(t,r);if(i=r,l>=0){let s=e[l+t.length];if(s==='"'||s==="'"||s==="`"){let c=e.indexOf(`${s}${n}`,l+t.length+1),a=e.substring(l+t.length+1,c);r=c+2+n.length,o.push(a)}}if(i===r)break}return o};var ar=A(ge());var Ty=A(Sf()),sr=A(ge());var Cf=A(Z()),Ny=(e,t,n,r)=>i=>{let[o,l]=(0,sr.useState)({}),s=i.internal_key;n.item.script||(n.item.script={});let c=n.item.script;s&&(n.item.script_keyed||(n.item.script_keyed={}),n.item.script_keyed[s]||(n.item.script_keyed[s]={}),c=n.item.script_keyed[s]),c.passprop||(c.passprop={});let a={};if(c.passprop){let f=!1;for(let[p,g]of Object.entries(i))["children","key"].includes(p)||(f=!0,a[p]=g,c.passprop[p]={end:0,start:0,value:g})}let u={...r,...a};if(!Array.isArray(i.children)&&(0,sr.isValidElement)(i.children)&&typeof i.children=="object"){let f=(0,Ty.default)(i.children,"props.meta.item.component.props.child.content.childs");if(Array.isArray(f)){let p=!0;for(let g of f)!(0,sr.isValidElement)(g)&&typeof g=="object"||(p=!1);if(p)return f.map(g=>{let _=e.meta[g.id];if(_||(e.meta[g.id]={item:g},_=e.meta[g.id]),_){if(Object.keys(_.item).length<=3&&_.mitem){let x={..._.item},h=_.mitem.toJSON();_.item={...h,...x}}return(0,Cf.jsx)(qt,{is_layout:t,meta:_,passprop:u,parent_key:i.internal_key},g.id)}return null})}}if(!Array.isArray(i.children)&&!(0,sr.isValidElement)(i.children)&&typeof i.children=="object"){let f=i.children.id;if(f){let p=e.meta[f];if(!p){e.meta[f]={item:i.children},p=e.meta[f];let g=p.item.component?.id;g&&e.comp.load(g).then(_=>{if(_){for(let[h,m]of Object.entries(_)){let y=p.item;y[h]||(y[h]=m)}let x=p.item.component?.props;for(let[h,m]of Object.entries(_.component?.props||{}))x[h]||(x[h]=m);l({})}})}return(0,Cf.jsx)(qt,{is_layout:t,meta:p,passprop:u,parent_key:i.internal_key})}}return Tf(i,u,s?{parent_key:s}:void 0)},Tf=(e,t,n)=>{let r={};if(Array.isArray(e)?r.children=e:r=e,Array.isArray(r.children)){let i=[];for(let o of r.children)i.push(Cy(o,r,t,n));return i}return Cy(r.children,r,t,n)},Cy=(e,t,n,r)=>{if((0,sr.isValidElement)(e)){let i={...t};return delete i.children,{...e,props:{...e.props,...r,passprop:{...n,...i}}}}return e};var ti={},Iy=(e,t,n)=>r=>{let i=["localhost","prasi.avolut.com"].includes(location.hostname)&&location.pathname.startsWith("/ed/"),o=n.item.id,{children:l,parent_key:s}=r,c=e.script?.init_local_effect,a=t?e.layout?.meta:e.meta,u=(0,ar.useRef)(ti[o]?ti[o]:r.value),[d,f]=(0,ar.useState)({}),p=u.current;return p.render=()=>{f({})},Hs(e,n,n.script?.scope,s),r.hook&&r.hook(p),(0,ar.useEffect)(()=>{if(n.parent?.instance_id&&a){let _=a[n.parent?.instance_id];if(_&&_.instances){for(let[x,h]of Object.entries(_.instances[n.parent.instance_id]))if(h===n.item.id){o=x;break}}}return!c[o]&&(typeof c=="object"&&(c[o]=!0),(async()=>r.effect&&(await r.effect(p),i&&(ti[o]=p)))()),()=>{}},[...r.deps||[],location.pathname]),(0,ar.useEffect)(()=>{i&&ti[o]===null&&(async()=>r.effect&&(await r.effect(p),i&&(ti[o]=p)))()},[ti[o]]),Tf(l,{...n.script?.scope,[r.name]:p})};var Nf=A(Z()),Oy=(e,t,n,r,i,o)=>{let l=Eo(e,t,n,r,i);e.visit&&e.visit(t,l),t.script?t.script.scope=r:t.script={scope:r,result:null,Local:Iy(e,n,t),PassProp:Ny(e,n,t,r)};let s=t.script,c=window.exports,a={useEffect:ur.useEffect,children:l.props.children,props:l.props,Local:s?.Local,db:e.site.db,api:e.site.api,PassProp:s?.PassProp,ErrorBox:Nt,newElement:()=>{},render:f=>{let p=f;if((0,ur.isValidElement)(f)&&f.props.children){let g=x=>{let h=!1,m=[];if((0,ur.isValidElement)(x)){if(x.type===t.script?.PassProp)return{should_replace:!0,el:{...x,props:{...x.props,internal_key:x.key}}};if(Array.isArray(x.props?.children))for(let y of x.props?.children)if(Array.isArray(y)){let v=[],S=!1;for(let R of y){let k=g(R);k.should_replace?(v.push(k.el),S=!0):v.push(R)}S?(h=!0,m.push(v)):m.push(y)}else typeof y=="object"?y.type===t.script?.PassProp&&(h=!0,m.push({...y,props:{...y.props,internal_key:y.props.key}})):m.push(y)}return{should_replace:h,el:{...x,props:{...x.props,children:m}}}},_=g(f);_.should_replace&&(p=_.el)}s&&(s.result=(0,Nf.jsx)(ur.Suspense,{children:p}))},params,...Bs(e),...c,...r,_meta:e.meta,_item:t.item,_syncm:typeof syncronize<"u"?syncronize:void 0};if(typeof r=="object"){for(let[f,p]of Object.entries(r))if(typeof p=="object"&&p&&p._jsx){let g=p;a[f]=(0,Nf.jsx)(c2,{fn:g.fn,passprop:{...r},meta:t})}}!at.isEditor&&t.item.adv?.js&&$s(e,t.item.adv.js);let u=t.item.adv?.jsBuilt||"",d=Of(u,If)||"";try{new Function(...Object.keys(a),"___js",`// ${t.item.name}: ${t.item.id} + `,(t?.hover||t?.active)&&fy({item:e,hover:t?.hover,active:t?.active}),Gg(e,t.mode)])}catch(n){console.log(n)}return cx([])};var hy=A(Z()),Eo=(e,t,n,r,i)=>{let o=t.item,l;o.component?.style&&(l={style:o.component.style,className:Ef(o.component.style,{mode:e.mode})});let s={className:Ef(o,{mode:e.mode}),inherit:l},c={},a=t.item.childs,u;return t.item.type==="text"?(u=null,s.dangerouslySetInnerHTML={__html:t.item.html||""}):u=Array.isArray(a)&&a?.map(d=>{if(!d)return null;let{id:f}=d,p=n?e.layout?.meta[f]:e.meta[f];return p?(0,hy.jsx)(qt,{meta:p,is_layout:n,passprop:{...r},depth:i+1},f):null}),s.children=u,t.item.adv?.html?(delete s.children,s.dangerouslySetInnerHTML={__html:t.item.adv?.html}):t.item.adv?.js&&!t.item.adv.js.includes("children")&&(delete s.children,delete s.dangerouslySetInnerHTML),{props:s,text_props:c}};var My=A(ge());var Ay=A(Rf());var Jr={NORMAL:0,WILDCARD:1,PLACEHOLDER:2};function Us(e={}){let t={options:e,rootNode:by(),staticRoutesMap:{}},n=r=>e.strictTrailingSlash?r:r.replace(/\/$/,"")||"/";if(e.routes)for(let r in e.routes)Ey(t,n(r),e.routes[r]);return{ctx:t,lookup:r=>i2(t,n(r)),insert:(r,i)=>Ey(t,n(r),i),remove:r=>o2(t,n(r))}}function i2(e,t){let n=e.staticRoutesMap[t];if(n)return n.data;let r=t.split("/"),i={},o=!1,l=null,s=e.rootNode,c=null;for(let a=0;a{},db:null,api:null,init_local_effect:{}},page:{history:{id:"",show:!1},root_id:"root",cur:a2,doc:null,list:{},building:!1,meta:{},entry:[],tree:[],render:()=>{}},comp:{doc:null,item:null,loaded:{},list:{},group:{}},code:{},global_prop:[],ui:{comp_editable:localStorage.getItem("prasi-comp-editable")==="yes",zoom:localStorage.zoom||"100%",side:{prop:!0},layout:{left:parseInt(localStorage.getItem("prasi-layout-left")||"250"),right:parseInt(localStorage.getItem("prasi-layout-right")||"250")},prevent_indent_hook:!1,syncing:!1,tree:{item_loading:[],search:"",search_ref:null,search_mode:{Name:!0,JS:!1,HTML:!1,CSS:!1},rename_id:"",open:{}},popup:{file:{enabled:!1,open:!1,picker:{value:"",on_pick:!1,multi:!1},path:"/",expanded:JSON.parse(localStorage.getItem("panel-file-expanded")||"{}"),entry:{},selected:new Set,action:null,file_renaming:"",file_ctx_menu_event:null,tree:[],tree_renaming:"",tree_ctx_path:"",tree_ctx_menu_event:null,preview:!0,upload:{started:!1,progress:{}}},code:{init:!1,open:!1,name:"site",log:"",loading:!1,startup_status:"init",error:!1,show_log:!1,list:{}},page:{open:null,form:null},script:{open:!1,mode:"js",lastMode:"js",type:"item",prop_kind:"",prop_name:"",on_close:()=>{},typings:{status:"ok",err_msg:""},wb_render:()=>{}},site:null,site_form:null,comp:{preview_id:"",open:null,import:!1},comp_group:null,api:{open:!1}}}};var Bs=e=>({isMobile:e.mode==="mobile",isDesktop:e.mode==="desktop",isEditor:location.pathname.startsWith("/ed/")});var ur=A(ge());var at=window;var u2=pf("prasi-cache","prasi-cache-store"),Co={timeout:null,store:u2},$s=(e,t)=>{let n=[...Ry(t,"navigate(",")"),...Ry(t,"href = ",";")],r=e.page.cur.id;e.page.navs[r]||(e.page.navs[r]=new Set);for(let i of n)e.page.navs[r].add(i);clearTimeout(Co.timeout),Co.timeout=setTimeout(()=>{e.on_nav_loaded&&e.on_nav_loaded({urls:Array.from(e.page.navs[r])})},100)},Ry=(e,t,n)=>{let r=0,i=0,o=[];for(;;){let l=e.indexOf(t,r);if(i=r,l>=0){let s=e[l+t.length];if(s==='"'||s==="'"||s==="`"){let c=e.indexOf(`${s}${n}`,l+t.length+1),a=e.substring(l+t.length+1,c);r=c+2+n.length,o.push(a)}}if(i===r)break}return o};var ar=A(ge());var Ty=A(Sf()),sr=A(ge());var Cf=A(Z()),Ny=(e,t,n,r)=>i=>{let[o,l]=(0,sr.useState)({}),s=i.internal_key;n.item.script||(n.item.script={});let c=n.item.script;s&&(n.item.script_keyed||(n.item.script_keyed={}),n.item.script_keyed[s]||(n.item.script_keyed[s]={}),c=n.item.script_keyed[s]),c.passprop||(c.passprop={});let a={};if(c.passprop){let f=!1;for(let[p,g]of Object.entries(i))["children","key"].includes(p)||(f=!0,a[p]=g,c.passprop[p]={end:0,start:0,value:g})}let u={...r,...a};if(!Array.isArray(i.children)&&(0,sr.isValidElement)(i.children)&&typeof i.children=="object"){let f=(0,Ty.default)(i.children,"props.meta.item.component.props.child.content.childs");if(Array.isArray(f)){let p=!0;for(let g of f)!(0,sr.isValidElement)(g)&&typeof g=="object"||(p=!1);if(p)return f.map(g=>{let _=e.meta[g.id];if(_||(e.meta[g.id]={item:g},_=e.meta[g.id]),_){if(Object.keys(_.item).length<=3&&_.mitem){let x={..._.item},h=_.mitem.toJSON();_.item={...h,...x}}return(0,Cf.jsx)(qt,{is_layout:t,meta:_,passprop:u,parent_key:i.internal_key},g.id)}return null})}}if(!Array.isArray(i.children)&&!(0,sr.isValidElement)(i.children)&&typeof i.children=="object"){let f=i.children.id;if(f){let p=e.meta[f];if(!p){e.meta[f]={item:i.children},p=e.meta[f];let g=p.item.component?.id;g&&e.comp.load(g).then(_=>{if(_){for(let[h,m]of Object.entries(_)){let y=p.item;y[h]||(y[h]=m)}let x=p.item.component?.props;for(let[h,m]of Object.entries(_.component?.props||{}))x[h]||(x[h]=m);l({})}})}return(0,Cf.jsx)(qt,{is_layout:t,meta:p,passprop:u,parent_key:i.internal_key})}}return Tf(i,u,s?{parent_key:s}:void 0)},Tf=(e,t,n)=>{let r={};if(Array.isArray(e)?r.children=e:r=e,Array.isArray(r.children)){let i=[];for(let o of r.children)i.push(Cy(o,r,t,n));return i}return Cy(r.children,r,t,n)},Cy=(e,t,n,r)=>{if((0,sr.isValidElement)(e)){let i={...t};return delete i.children,{...e,props:{...e.props,...r,passprop:{...n,...i}}}}return e};var ti={},Iy=(e,t,n)=>r=>{let i=["localhost","prasi.avolut.com"].includes(location.hostname)&&location.pathname.startsWith("/ed/"),o=n.item.id,{children:l,parent_key:s}=r,c=e.script?.init_local_effect,a=t?e.layout?.meta:e.meta,u=(0,ar.useRef)(ti[o]?ti[o]:r.value),[d,f]=(0,ar.useState)({}),p=u.current;return p.render=()=>{window.prasiContext?.render?window.prasiContext?.render():f({})},Hs(e,n,n.script?.scope,s),r.hook&&r.hook(p),(0,ar.useEffect)(()=>{if(n.parent?.instance_id&&a){let _=a[n.parent?.instance_id];if(_&&_.instances){for(let[x,h]of Object.entries(_.instances[n.parent.instance_id]))if(h===n.item.id){o=x;break}}}return!c[o]&&(typeof c=="object"&&(c[o]=!0),(async()=>r.effect&&(await r.effect(p),i&&(ti[o]=p)))()),()=>{}},[...r.deps||[],location.pathname]),(0,ar.useEffect)(()=>{i&&ti[o]===null&&(async()=>r.effect&&(await r.effect(p),i&&(ti[o]=p)))()},[ti[o]]),Tf(l,{...n.script?.scope,[r.name]:p})};var Nf=A(Z()),Oy=(e,t,n,r,i,o)=>{let l=Eo(e,t,n,r,i);e.visit&&e.visit(t,l),t.script?t.script.scope=r:t.script={scope:r,result:null,Local:Iy(e,n,t),PassProp:Ny(e,n,t,r)};let s=t.script,c=window.exports,a={useEffect:ur.useEffect,children:l.props.children,props:l.props,Local:s?.Local,db:e.site.db,api:e.site.api,PassProp:s?.PassProp,ErrorBox:Nt,newElement:()=>{},render:f=>{let p=f;if((0,ur.isValidElement)(f)&&f.props.children){let g=x=>{let h=!1,m=[];if((0,ur.isValidElement)(x)){if(x.type===t.script?.PassProp)return{should_replace:!0,el:{...x,props:{...x.props,internal_key:x.key}}};if(Array.isArray(x.props?.children))for(let y of x.props?.children)if(Array.isArray(y)){let v=[],S=!1;for(let R of y){let k=g(R);k.should_replace?(v.push(k.el),S=!0):v.push(R)}S?(h=!0,m.push(v)):m.push(y)}else typeof y=="object"?y.type===t.script?.PassProp&&(h=!0,m.push({...y,props:{...y.props,internal_key:y.props.key}})):m.push(y)}return{should_replace:h,el:{...x,props:{...x.props,children:m}}}},_=g(f);_.should_replace&&(p=_.el)}s&&(s.result=(0,Nf.jsx)(ur.Suspense,{children:p}))},params,...Bs(e),...c,...r,_meta:e.meta,_item:t.item,_syncm:typeof syncronize<"u"?syncronize:void 0};if(typeof r=="object"){for(let[f,p]of Object.entries(r))if(typeof p=="object"&&p&&p._jsx){let g=p;a[f]=(0,Nf.jsx)(c2,{fn:g.fn,passprop:{...r},meta:t})}}!at.isEditor&&t.item.adv?.js&&$s(e,t.item.adv.js);let u=t.item.adv?.jsBuilt||"",d=Of(u,If)||"";try{new Function(...Object.keys(a),"___js",`// ${t.item.name}: ${t.item.id} try { ${d} } catch(e) { diff --git a/app/web/src/nova/vi/render/script/local.tsx b/app/web/src/nova/vi/render/script/local.tsx index 028cc001..202b8119 100644 --- a/app/web/src/nova/vi/render/script/local.tsx +++ b/app/web/src/nova/vi/render/script/local.tsx @@ -41,7 +41,11 @@ export const createViLocal = ( const [_, set] = useState({}); const local = ref.current; local.render = () => { - set({}); + if ((window as any).prasiContext?.render) { + (window as any).prasiContext?.render(); + } else { + set({}); + } }; updatePropScope(vi, meta, meta.script?.scope, parent_key);