diff --git a/app/srv/core/main.js b/app/srv/core/main.js index ce6a2129..8f53f8bc 100644 --- a/app/srv/core/main.js +++ b/app/srv/core/main.js @@ -95,7 +95,7 @@ Error generating stack: `+i.message+` ${gy(e,t.mode)} ${ny(e,t.mode)} ${_y(e,t.mode)} - `,(t?.hover||t?.active)&&wy({item:e,hover:t?.hover,active:t?.active}),ty(e,t.mode)])}catch(n){console.log(n)}return cx([])};var ky=O(V()),Mo=(e,t,n,r)=>{let o=t.item,i;o.component?.style&&(i={style:o.component.style,className:lc(o.component.style,{mode:e.mode})});let s={className:lc(o,{mode:e.mode}),inherit:i},l={},a=t.item.childs,f;return t.item.type==="text"?(f=null,s.dangerouslySetInnerHTML={__html:t.item.html||""}):f=Array.isArray(a)&&a?.map(u=>{if(!u)return null;let{id:c}=u,d=n?e.layout?.meta[c]:e.meta[c];return d?(0,ky.jsx)(Lt,{meta:d,is_layout:n,passprop:r},c):null}),s.children=f,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:l}};var $y=O(fe());var By=O(uc());var vr={NORMAL:0,WILDCARD:1,PLACEHOLDER:2};function Ms(e={}){let t={options:e,rootNode:Ly(),staticRoutesMap:{}},n=r=>e.strictTrailingSlash?r:r.replace(/\/$/,"")||"/";if(e.routes)for(let r in e.routes)by(t,n(r),e.routes[r]);return{ctx:t,lookup:r=>G_(t,n(r)),insert:(r,o)=>by(t,n(r),o),remove:r=>K_(t,n(r))}}function G_(e,t){let n=e.staticRoutesMap[t];if(n)return n.data;let r=t.split("/"),o={},i=!1,s=null,l=e.rootNode,a=null;for(let f=0;f{},db:null,api:null,init_local_effect:{}},page:{history:{id:"",show:!1},root_id:"root",cur:J_,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 js=e=>({isMobile:e.mode==="mobile",isDesktop:e.mode==="desktop",isEditor:location.pathname.startsWith("/ed/")});var Mn=O(fe());var Ye=window;var X_=Ju("prasi-cache","prasi-cache-store"),Do={timeout:null,store:X_},Fs=(e,t)=>{let n=[...Ay(t,"navigate(",")"),...Ay(t,"href = ",";")],r=e.page.cur.id;e.page.navs[r]||(e.page.navs[r]=new Set);for(let o of n)e.page.navs[r].add(o);clearTimeout(Do.timeout),Do.timeout=setTimeout(()=>{e.on_nav_loaded&&e.on_nav_loaded({urls:Array.from(e.page.navs[r])})},100)},Ay=(e,t,n)=>{let r=0,o=0,i=[];for(;;){let s=e.indexOf(t,r);if(o=r,s>=0){let l=e[s+t.length];if(l==='"'||l==="'"||l==="`"){let a=e.indexOf(`${l}${n}`,s+t.length+1),f=e.substring(s+t.length+1,a);r=a+2+n.length,i.push(f)}}if(o===r)break}return i};var zo=O(fe());var jy=O(sc()),An=O(fe());var cc=O(V()),Fy=(e,t,n,r)=>o=>{let[i,s]=(0,An.useState)({}),l=o.internal_key;n.item.script||(n.item.script={});let a=n.item.script;l&&(n.item.script_keyed||(n.item.script_keyed={}),n.item.script_keyed[l]||(n.item.script_keyed[l]={}),a=n.item.script_keyed[l]),a.passprop||(a.passprop={});let f={};if(a.passprop){let d=!1;for(let[y,h]of Object.entries(o))["children","key"].includes(y)||(d=!0,f[y]=h,a.passprop[y]={end:0,start:0,value:h})}let u={...r,...f};if(!Array.isArray(o.children)&&(0,An.isValidElement)(o.children)&&typeof o.children=="object"){let d=(0,jy.default)(o.children,"props.meta.item.component.props.child.content.childs");if(Array.isArray(d)){let y=!0;for(let h of d)!(0,An.isValidElement)(h)&&typeof h=="object"||(y=!1);if(y)return d.map(h=>{let g=e.meta[h.id];if(g||(e.meta[h.id]={item:h},g=e.meta[h.id]),g){if(Object.keys(g.item).length<=3&&g.mitem){let S={...g.item},m=g.mitem.toJSON();g.item={...m,...S}}return(0,cc.jsx)(Lt,{is_layout:t,meta:g,passprop:u,parent_key:o.internal_key},h.id)}return null})}}if(!Array.isArray(o.children)&&!(0,An.isValidElement)(o.children)&&typeof o.children=="object"){let d=o.children.id;if(d){let y=e.meta[d];if(!y){e.meta[d]={item:o.children},y=e.meta[d];let h=y.item.component?.id;h&&e.comp.load(h).then(g=>{if(g){for(let[m,p]of Object.entries(g)){let v=y.item;v[m]||(v[m]=p)}let S=y.item.component?.props;for(let[m,p]of Object.entries(g.component?.props||{}))S[m]||(S[m]=p);s({})}})}return(0,cc.jsx)(Lt,{is_layout:t,meta:y,passprop:u,parent_key:o.internal_key})}}return fc(o,u,l?{parent_key:l}:void 0)},fc=(e,t,n)=>{let r={};if(Array.isArray(e)?r.children=e:r=e,Array.isArray(r.children)){let o=[];for(let i of r.children)o.push(My(i,r,t,n));return o}return My(r.children,r,t,n)},My=(e,t,n,r)=>{if((0,An.isValidElement)(e)){let o={...t};return delete o.children,{...e,props:{...e.props,...r,passprop:{...n,...o}}}}return e};var _r={},Dy=(e,t,n)=>r=>{let o=["localhost","prasi.avolut.com"].includes(location.hostname)&&location.pathname.startsWith("/ed/"),i=n.item.id,{children:s,parent_key:l}=r,a=e.script?.init_local_effect,f=t?e.layout?.meta:e.meta,c=(0,zo.useRef)(_r[i]?_r[i]:r.value).current;return c.render=n.render,Ds(e,n,n.script?.scope,l),r.hook&&r.hook(c),(0,zo.useEffect)(()=>{if(n.parent?.instance_id&&f){let y=f[n.parent?.instance_id];if(y&&y.instances){for(let[h,g]of Object.entries(y.instances[n.parent.instance_id]))if(g===n.item.id){i=h;break}}}return!a[i]&&(typeof a=="object"&&(a[i]=!0),(async()=>r.effect&&(await r.effect(c),o&&(_r[i]=c)))()),()=>{}},[location.pathname]),(0,zo.useEffect)(()=>{o&&_r[i]===null&&(async()=>r.effect&&(await r.effect(c),o&&(_r[i]=c)))()},[_r[i]]),fc(s,{...n.script?.scope,[r.name]:c})};var dc=O(V()),zy=(e,t,n,r,o)=>{let i=Mo(e,t,n,r);e.visit&&e.visit(t,i),t.script?t.script.scope=r:t.script={scope:r,result:null,Local:Dy(e,n,t),PassProp:Fy(e,n,t,r)};let s=t.script,l=window.exports,a={useEffect:Mn.useEffect,children:i.props.children,props:i.props,Local:s?.Local,db:e.site.db,api:e.site.api,PassProp:s?.PassProp,ErrorBox:gt,newElement:()=>{},render:d=>{let y=d;if((0,Mn.isValidElement)(d)&&d.props.children&&Array.isArray(d.props.children)){let h=d.props.children.filter(S=>S),g=!1;if(h.length>1){let S=[];for(let m of h)(0,Mn.isValidElement)(m)&&m.type===t.script?.PassProp&&(g=!0),m.key?S.push({...m,props:{...m.props,internal_key:m.key}}):console.warn(`No key prop in item: ${t.item.name}`,` + `,(t?.hover||t?.active)&&wy({item:e,hover:t?.hover,active:t?.active}),ty(e,t.mode)])}catch(n){console.log(n)}return cx([])};var ky=O(V()),Mo=(e,t,n,r)=>{let o=t.item,i;o.component?.style&&(i={style:o.component.style,className:lc(o.component.style,{mode:e.mode})});let s={className:lc(o,{mode:e.mode}),inherit:i},l={},a=t.item.childs,f;return t.item.type==="text"?(f=null,s.dangerouslySetInnerHTML={__html:t.item.html||""}):f=Array.isArray(a)&&a?.map(u=>{if(!u)return null;let{id:c}=u,d=n?e.layout?.meta[c]:e.meta[c];return d?(0,ky.jsx)(Lt,{meta:d,is_layout:n,passprop:r},c):null}),s.children=f,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:l}};var $y=O(fe());var By=O(uc());var vr={NORMAL:0,WILDCARD:1,PLACEHOLDER:2};function Ms(e={}){let t={options:e,rootNode:Ly(),staticRoutesMap:{}},n=r=>e.strictTrailingSlash?r:r.replace(/\/$/,"")||"/";if(e.routes)for(let r in e.routes)by(t,n(r),e.routes[r]);return{ctx:t,lookup:r=>G_(t,n(r)),insert:(r,o)=>by(t,n(r),o),remove:r=>K_(t,n(r))}}function G_(e,t){let n=e.staticRoutesMap[t];if(n)return n.data;let r=t.split("/"),o={},i=!1,s=null,l=e.rootNode,a=null;for(let f=0;f{},db:null,api:null,init_local_effect:{}},page:{history:{id:"",show:!1},root_id:"root",cur:J_,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 js=e=>({isMobile:e.mode==="mobile",isDesktop:e.mode==="desktop",isEditor:location.pathname.startsWith("/ed/")});var Mn=O(fe());var Ye=window;var X_=Ju("prasi-cache","prasi-cache-store"),Do={timeout:null,store:X_},Fs=(e,t)=>{let n=[...Ay(t,"navigate(",")"),...Ay(t,"href = ",";")],r=e.page.cur.id;e.page.navs[r]||(e.page.navs[r]=new Set);for(let o of n)e.page.navs[r].add(o);clearTimeout(Do.timeout),Do.timeout=setTimeout(()=>{e.on_nav_loaded&&e.on_nav_loaded({urls:Array.from(e.page.navs[r])})},100)},Ay=(e,t,n)=>{let r=0,o=0,i=[];for(;;){let s=e.indexOf(t,r);if(o=r,s>=0){let l=e[s+t.length];if(l==='"'||l==="'"||l==="`"){let a=e.indexOf(`${l}${n}`,s+t.length+1),f=e.substring(s+t.length+1,a);r=a+2+n.length,i.push(f)}}if(o===r)break}return i};var zo=O(fe());var jy=O(sc()),An=O(fe());var cc=O(V()),Fy=(e,t,n,r)=>o=>{let[i,s]=(0,An.useState)({}),l=o.internal_key;n.item.script||(n.item.script={});let a=n.item.script;l&&(n.item.script_keyed||(n.item.script_keyed={}),n.item.script_keyed[l]||(n.item.script_keyed[l]={}),a=n.item.script_keyed[l]),a.passprop||(a.passprop={});let f={};if(a.passprop){let d=!1;for(let[y,h]of Object.entries(o))["children","key"].includes(y)||(d=!0,f[y]=h,a.passprop[y]={end:0,start:0,value:h})}let u={...r,...f};if(!Array.isArray(o.children)&&(0,An.isValidElement)(o.children)&&typeof o.children=="object"){let d=(0,jy.default)(o.children,"props.meta.item.component.props.child.content.childs");if(Array.isArray(d)){let y=!0;for(let h of d)!(0,An.isValidElement)(h)&&typeof h=="object"||(y=!1);if(y)return d.map(h=>{let g=e.meta[h.id];if(g||(e.meta[h.id]={item:h},g=e.meta[h.id]),g){if(Object.keys(g.item).length<=3&&g.mitem){let S={...g.item},m=g.mitem.toJSON();g.item={...m,...S}}return(0,cc.jsx)(Lt,{is_layout:t,meta:g,passprop:u,parent_key:o.internal_key},h.id)}return null})}}if(!Array.isArray(o.children)&&!(0,An.isValidElement)(o.children)&&typeof o.children=="object"){let d=o.children.id;if(d){let y=e.meta[d];if(!y){e.meta[d]={item:o.children},y=e.meta[d];let h=y.item.component?.id;h&&e.comp.load(h).then(g=>{if(g){for(let[m,p]of Object.entries(g)){let v=y.item;v[m]||(v[m]=p)}let S=y.item.component?.props;for(let[m,p]of Object.entries(g.component?.props||{}))S[m]||(S[m]=p);s({})}})}return(0,cc.jsx)(Lt,{is_layout:t,meta:y,passprop:u,parent_key:o.internal_key})}}return fc(o,u,l?{parent_key:l}:void 0)},fc=(e,t,n)=>{let r={};if(Array.isArray(e)?r.children=e:r=e,Array.isArray(r.children)){let o=[];for(let i of r.children)o.push(My(i,r,t,n));return o}return My(r.children,r,t,n)},My=(e,t,n,r)=>{if((0,An.isValidElement)(e)){let o={...t};return delete o.children,{...e,props:{...e.props,...r,passprop:{...n,...o}}}}return e};var _r={},Dy=(e,t,n)=>r=>{let o=["localhost","prasi.avolut.com"].includes(location.hostname)&&location.pathname.startsWith("/ed/"),i=n.item.id,{children:s,parent_key:l}=r,a=e.script?.init_local_effect,f=t?e.layout?.meta:e.meta,c=(0,zo.useRef)(_r[i]?_r[i]:r.value).current;return c.render=n.render,Ds(e,n,n.script?.scope,l),r.hook&&r.hook(c),(0,zo.useEffect)(()=>{if(n.parent?.instance_id&&f){let y=f[n.parent?.instance_id];if(y&&y.instances){for(let[h,g]of Object.entries(y.instances[n.parent.instance_id]))if(g===n.item.id){i=h;break}}}return!a[i]&&(typeof a=="object"&&(a[i]=!0),(async()=>r.effect&&(await r.effect(c),o&&(_r[i]=c)))()),()=>{}},[location.pathname]),(0,zo.useEffect)(()=>{o&&_r[i]===null&&(async()=>r.effect&&(await r.effect(c),o&&(_r[i]=c)))()},[_r[i]]),fc(s,{...n.script?.scope,[r.name]:c})};var dc=O(V()),zy=(e,t,n,r,o)=>{let i=Mo(e,t,n,r);e.visit&&e.visit(t,i),t.script?t.script.scope=r:t.script={scope:r,result:null,Local:Dy(e,n,t),PassProp:Fy(e,n,t,r)};let s=t.script,l=window.exports,a={useEffect:Mn.useEffect,children:i.props.children,props:i.props,Local:s?.Local,db:e.site.db,api:e.site.api,PassProp:s?.PassProp,ErrorBox:gt,newElement:()=>{},render:d=>{let y=d;if((0,Mn.isValidElement)(d)&&d.props.children&&Array.isArray(d.props.children)){let h=d.props.children.filter(S=>S),g=!1;if(h.length>1){let S=[];for(let m of h)(0,Mn.isValidElement)(m)&&m.type===t.script?.PassProp&&(g=!0),m.key?S.push({...m,props:{...m.props,internal_key:m.key}}):g&&console.warn(`No key prop in item: ${t.item.name}`,` `,t.item.adv?.js);g&&(y={...d,props:{...d.props,children:S}})}}s&&(s.result=(0,dc.jsx)(Mn.Suspense,{children:y}))},params,...js(e),...l,...r,_meta:e.meta,_item:t.item,_syncm:typeof syncronize<"u"?syncronize:void 0};if(typeof r=="object"){for(let[d,y]of Object.entries(r))if(typeof y=="object"&&y&&y._jsx){let h=y;a[d]=(0,dc.jsx)(Y_,{fn:h.fn,passprop:r,meta:t})}}!Ye.isEditor&&t.item.adv?.js&&Fs(e,t.item.adv.js);let f=t.item.adv?.jsBuilt||"",u=mc(f,pc)||"";new Function(...Object.keys(a),`// ${t.item.name}: ${t.item.id} ${u} diff --git a/app/web/src/nova/vi/render/script/eval-script.tsx b/app/web/src/nova/vi/render/script/eval-script.tsx index 8a31cf23..6ef6c5ca 100644 --- a/app/web/src/nova/vi/render/script/eval-script.tsx +++ b/app/web/src/nova/vi/render/script/eval-script.tsx @@ -69,11 +69,13 @@ export const viEvalScript = ( replace_child = true; } if (!child.key) { - console.warn( - `No key prop in item: ${meta.item.name}`, - `\n\n`, - meta.item.adv?.js - ); + if (replace_child) { + console.warn( + `No key prop in item: ${meta.item.name}`, + `\n\n`, + meta.item.adv?.js + ); + } } else { new_childs.push({ ...child,