From caf5cdd7c3fac27c680f41ae3dc7c596f9b3b633 Mon Sep 17 00:00:00 2001 From: Rizky Date: Sat, 2 Mar 2024 14:48:02 +0700 Subject: [PATCH] fix layout in section --- app/srv/core/main.js | 2 +- app/web/src/nova/vi/render/render.tsx | 5 ++++- app/web/src/nova/vi/render/script.tsx | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/srv/core/main.js b/app/srv/core/main.js index a0a71f24..51fc0fa2 100644 --- a/app/srv/core/main.js +++ b/app/srv/core/main.js @@ -133,7 +133,7 @@ ${c} return ${I} `);t.item.script.props[s]={value:I};let u=l(...Object.values(r));typeof u=="function"&&(t.item.script.props[s].fn=u,u=(...g)=>t.item.script?.props?.[s].fn(...g)),r[s]=u,i&&(i[s]=u)}catch{o.add(s)}}},Rc=(e,t,A)=>{if(t.item.script?.props){let i={...A,api:e.site.api,db:e.site.db};for(let[n,r]of Object.entries(t.item.script.props))if(r.fn){let o=new Function(...Object.keys(i),`// [${t.item.name}] ${n}: ${t.item.id} return ${r.value||""} - `);r.fn=o(...Object.values(i))}}};var C0=K(ce()),UB=({meta:e,passprop:t,is_layout:A})=>{let i=ki(Oi,"VI"),[n,r]=(0,d0.useState)({});e.render=()=>{r({})};let o=t;return e.item.component?.id&&(o||(o={}),f0(i,e,A,o)),e.item.adv?.js&&(u0(i,e,A,o),e.script)?e.script.result:(0,C0.jsx)(NB,{meta:e,passprop:o,is_layout:A})};var Ze=K(ce()),cH=70,qc={enabled:!1,meta:{}},Kr=({meta:e,children:t,passprop:A,is_layout:i})=>{if(qc.enabled){let n=qc.meta;if(n[e.item.id]?n[e.item.id].last_render===Math.floor(Date.now()/1e3)?n[e.item.id].count++:n[e.item.id]={last_render:Math.floor(Date.now()/1e3),count:1}:n[e.item.id]={last_render:Math.floor(Date.now()/1e3),count:1},n[e.item.id]?.count>cH)return(0,Ze.jsxs)("div",{className:"bg-orange-100 border border-orange-300 rounded-sm text-xs flex flex-col items-center",children:[(0,Ze.jsxs)("div",{className:"text-[10px] font-bold text-red-900 self-stretch px-1",children:["WARNING: Render loop detected in [",e.item.name,"]"]}),(0,Ze.jsxs)("p",{className:"border-b border-orange-300 px-1 pb-1 min-w-[100px]",children:["Rendered ",n[e.item.id]?.count," times in less than 1 second."]})]})}return!e||e.item.hidden?null:e.item.adv?.js||e.item.component?.id?(0,Ze.jsx)(GA,{meta:e,children:(0,Ze.jsx)(UB,{meta:e,is_layout:i,passprop:A})}):(0,Ze.jsx)(GA,{meta:e,children:(0,Ze.jsx)(NB,{meta:e,passprop:A,is_layout:i})})},NB=({meta:e,passprop:t,is_layout:A})=>{let i=ki(Oi,"VI");if(A&&e.item.name==="children"){let r=[];for(let o of i.entry){let s=i.meta[o];if(s.item.adv?.js||s.item.component?.id)r.push((0,Ze.jsx)(GA,{meta:s,children:(0,Ze.jsx)(UB,{meta:s,is_layout:A,passprop:t})}));else{let a=Hs(i,s,!1,t);i.visit&&i.visit(s,a),r.push((0,Ze.jsx)("div",{...a.props}))}}return(0,Ze.jsx)(Ze.Fragment,{children:r.map((o,s)=>(0,Ze.jsx)(Q0.Fragment,{children:o},s))})}let n=Hs(i,e,A,t);return i.visit&&i.visit(e,n),(0,Ze.jsx)("div",{...n.props})};var br=K(ce()),h0=({})=>{let e=ki(Oi,"VI"),t=wi({tick:Date.now()});if(e.tick=t.tick,e.status!=="ready")return(0,br.jsx)("div",{className:"flex flex-1 flex-col relative",children:(0,br.jsx)(rn,{backdrop:!1})});let A=!!e.layout?.entry&&e.layout.entry.length>0,i=e.entry;return A&&e.layout?.entry&&(i=e.layout?.entry),(0,br.jsx)("div",{className:"flex flex-1 flex-col relative",children:Array.isArray(i)&&i.map(n=>{let r=A?e.layout?.meta[n]:e.meta[n];return r&&Element?(0,br.jsx)(GA,{children:(0,br.jsx)(Kr,{meta:r,is_layout:A})},r.item.id):null})})};var Kc=K(ce()),xB=window,p0=({meta:e,entry:t,api_url:A,site_id:i,api:n,mode:r,db:o,visit:s,script:a,page_id:c,render_stat:I,on_status_changed:l,on_preload:u,layout:g})=>{let f=ki(Oi,"VI");return f.mode=r,f.entry=t,f.on_preload=u,xB.isMobile=r==="mobile",xB.isDesktop=r==="desktop",xB.preload=Q=>{f.page.navs[c]||(f.page.navs[c]=new Set);let k=typeof Q=="string"?[Q]:Q;for(let d of k)f.page.navs[c].add(d);return clearTimeout(wn.timeout),wn.timeout=setTimeout(()=>{f.on_preload&&f.on_preload({urls:Array.from(f.page.navs[c])})},100),""},f.layout=g,f.page.cur.id=c,f.on_status_changes=l,I==="disabled"&&(qc.enabled=!1),f.meta!==e&&(f.meta=e),a&&(f.script.init_local_effect=a.init_local_effect),f.visit=s,f.status==="init"&&(f.site.db=o,f.site.api=n,Mw(f,{api_url:A,site_id:i})),u&&(0,bc.useEffect)(()=>{setTimeout(()=>{let Q=f.page.navs[f.page.cur.id];Q&&u({urls:Array.from(Q)})},500)},[f.page.cur.id]),(0,Kc.jsx)(GA,{children:(0,Kc.jsx)(bc.Suspense,{children:(0,Kc.jsx)(h0,{})})})};var GB=window,v={root:null,url(...e){let t=e.map(i=>Array.isArray(i)?i.join(""):i).join(""),A=this.root.toString();return A.endsWith("/")&&(A=A.substring(0,A.length-1)),t.startsWith("/")?A+t:A+"/"+t},get pathname(){let e=location.pathname.substring(v.root.pathname.length);return e.startsWith("/")?e:`/${e}`},site:{id:GB._prasi?.site_id},init_local_effect:{},mode:"",route:{status:"init",pages:[],router:null},comp:{list:{},pending:new Set},layout:{id:"",root:null,meta:null},cache:{urls:new Set},page:{id:"",url:"",root:null,meta:null,cache:{}}},E0=()=>{if(!v.root){let e=new URL(location.href);GB._prasi.basepath&&(e.pathname=GB._prasi.basepath),v.root=new URL(`${e.protocol}//${e.host}${e.pathname}`),v.root.pathname.endsWith("/")&&(v.root.pathname=v.root.pathname.substring(0,v.root.length-1))}};var cA=Qn("prasi-prod","prasi-cache-prod");var Nn=async(e,t)=>{let A=v.comp;for(let i of e)i&&i.type!=="text"&&HB(i);if(A.pending.size>0){let i=!0,n=[];if(t!==!1){for(let r of[...A.pending]){let o=await kA(`comp-${r}`,cA);o||(i=!1),A.list[r]=o,n.push(o)}if(i){for(let r of[...A.pending])A.pending.delete(r);await Nn(n,t);return}}}if(A.pending.size>0)try{let i=await(await fetch(v.url`_prasi/comp`,{method:"POST",body:JSON.stringify({ids:[...A.pending]})})).json();for(let[n,r]of Object.entries(i))A.pending.delete(n),A.list[n]=r,await SA(`comp-${n}`,r,cA);await Nn(Object.values(i),t)}catch{}},HB=e=>{let t=v.comp;if(e.type==="item"){let A=e.component?.id;if(A){!t.list[A]&&!t.pending.has(A)&&t.pending.add(A);for(let i of Object.values(e.component?.props||{}))i.content&&i.meta?.type==="content-element"&&HB(i.content)}}if(e.childs)for(let A of e.childs)A&&A.type!=="text"&&HB(A)};var m0=(e,t)=>new Promise(async A=>{let i=!1;if(t!==!1){let r=await kA(`page-${e}`,cA);r&&(A(r),i=!0)}let n=await(await fetch(v.url`_prasi/page/${e}`)).json();SA(`page-${e}`,{id:e,url:n.url,root:n.root},cA),i||A(n)}),lH=e=>new Promise(async t=>{let A={},i=[...new Set(e)],n=!0;for(let o of i){let s=await kA(`page-${o}`,cA);if(s)A[o]=s;else{n=!1;break}}n&&t(A);let r=await(await fetch(v.url`_prasi/pages`,{method:"POST",body:JSON.stringify({ids:i})})).json();for(let[o,s]of Object.entries(r))SA(`page-${o}`,s,cA);n||t(r)}),y0=async e=>{let t=e.map(A=>v.route.router?.lookup(A)).filter(A=>A&&A.id);return await lH(t.map(A=>A?.id))};var F0=K(w0()),D0=()=>{let e=v;if(e.site.id){if(!e.mode&&e.site.responsive)if(e.site.responsive!=="mobile-only"&&e.site.responsive!=="desktop-only"){let t=(0,F0.default)();e.mode=t.device.type==="mobile"?"mobile":"desktop"}else e.site.responsive==="mobile-only"?e.mode="mobile":e.site.responsive==="desktop-only"&&(e.mode="desktop");localStorage.getItem("prasi-editor-mode")&&(e.mode=localStorage.getItem("prasi-editor-mode"))}};var gH=()=>new Promise(async e=>{let t=!1,A=await kA("route",cA);A&&(e(A),t=!0);let i=await(await fetch(v.url`_prasi/route`)).json();await SA("route",i,cA),t||e(i)}),k0=async e=>{let t=Sr(),A=[];try{let i=await gH();if(i&&i.site&&i.urls){i.layout&&(v.layout.id=i.layout.id,v.layout.root=i.layout.root,v.layout.meta={},v.layout.root&&(await Nn(v.layout.root.childs,!e),Lc(v.layout.meta,v.layout.root))),v.site=i.site,v.site.code={mode:"new"},await uH(),v.site.api=Fn(v.site.api_url),v.site.db=Dn(v.site.api_url);let n=window;n.serverurl=v.site.api_url,n.db=v.site.db,n.api=v.site.api;for(let r of i.urls)t.insert(r.url,r),A.push(r)}}catch{}return{router:t,pages:A}},uH=()=>new Promise(e=>{let t=document,A=t.createElement("script");A.onload=async()=>{e()};let i=v.site.api_url;try{new URL(i)}catch{location.hostname==="localhost"?i="http://localhost:4550":i="https://prasi.avolut.com"}localStorage.getItem("api-ts-"+i)||localStorage.setItem("api-ts-"+i,Date.now().toString());let n=localStorage.getItem("api-ts-"+i);A.src=`${i}/_prasi/load.js?url=${i}&v3&ts=${n}`,document.querySelector(`script[src="${A.src}"]`)?e():t.body.appendChild(A)}),Lc=(e,t)=>{for(let A of t.childs)vt({comps:v.comp.list,meta:e,mode:"page"},{item:A})};var xn=window;var ti=K(ce()),MB=()=>location.hostname.split(".").length===4||location.hostname==="prasi.app"||location.hostname==="prasi.avolut.com"||location.hostname.includes("ngrok")||location.hostname==="localhost"||location.hostname==="127.0.0.1"||location.hostname==="10.0.2.2",U0=()=>{let e=wi({page_id:""}),[t,A]=(0,S0.useState)({}),i=()=>A({});xn.prasiContext.render=i;let n=Eu.Provider,r=MB()&&location.pathname.startsWith("/prod");if(v.route.status!=="ready")return v.route.status==="init"&&(v.route.status="loading",k0(r).then(async({router:I,pages:l})=>{D0(),v.route.status="ready",v.route.router=I,v.route.pages=l;let u=Gc(await(await fetch(`${xn._prasi.basepath}/_prasi/code/index.js`.replace("//","/"))).text());if(u)for(let[g,f]of Object.entries(u))window[g]=f;i()})),(0,ti.jsx)(rn,{});let o=v.route.router;if(!o)return(0,ti.jsx)(Fu,{children:"Failed to create Router"});let s="";if(r){let I=location.pathname.split("/");wu(I[3])&&(s=I[3])}let a=o.lookup(v.pathname);if(s){let I=v.route.pages.find(l=>s===l.id);I&&(a=I)}if(!a)return(0,ti.jsx)(Fu,{children:"Page Not Found"});a.id!==e.page_id&&(v.init_local_effect={}),xn.params=a.params||{},v.page.id=a.id,v.page.url=a.url;let c=v.page.cache[a.id];if(c)v.page.root=c.root,v.page.meta=c.meta;else return m0(a.id,!r).then(async({root:I})=>{if(a){let l={id:a.id,url:a.url,root:I,meta:{}};await Nn(I.childs,!r),Lc(l.meta,I),v.page.cache[l.id]=l,i()}}).catch(()=>{i()}),(0,ti.jsx)(rn,{note:"Loading page"});return(0,ti.jsx)(n,{value:xn.prasiContext,children:(0,ti.jsx)("div",{className:cx("relative flex flex-1 items-center justify-center"),children:(0,ti.jsx)("div",{className:cx("absolute flex flex-col items-stretch flex-1 bg-white main-content-preview",v.mode==="mobile"?css` + `);r.fn=o(...Object.values(i))}}};var C0=K(ce()),UB=({meta:e,passprop:t,is_layout:A})=>{let i=ki(Oi,"VI"),[n,r]=(0,d0.useState)({});e.render=()=>{r({})};let o=t;return e.item.component?.id&&(o||(o={}),f0(i,e,A,o)),e.item.adv?.js&&(u0(i,e,A,o),e.script)?e.script.result:(0,C0.jsx)(NB,{meta:e,passprop:o,is_layout:A})};var Ze=K(ce()),cH=70,qc={enabled:!1,meta:{}},Kr=({meta:e,children:t,passprop:A,is_layout:i})=>{if(qc.enabled){let n=qc.meta;if(n[e.item.id]?n[e.item.id].last_render===Math.floor(Date.now()/1e3)?n[e.item.id].count++:n[e.item.id]={last_render:Math.floor(Date.now()/1e3),count:1}:n[e.item.id]={last_render:Math.floor(Date.now()/1e3),count:1},n[e.item.id]?.count>cH)return(0,Ze.jsxs)("div",{className:"bg-orange-100 border border-orange-300 rounded-sm text-xs flex flex-col items-center",children:[(0,Ze.jsxs)("div",{className:"text-[10px] font-bold text-red-900 self-stretch px-1",children:["WARNING: Render loop detected in [",e.item.name,"]"]}),(0,Ze.jsxs)("p",{className:"border-b border-orange-300 px-1 pb-1 min-w-[100px]",children:["Rendered ",n[e.item.id]?.count," times in less than 1 second."]})]})}return!e||e.item.hidden?null:e.item.adv?.js||e.item.component?.id?(0,Ze.jsx)(GA,{meta:e,children:(0,Ze.jsx)(UB,{meta:e,is_layout:i,passprop:A})}):(0,Ze.jsx)(GA,{meta:e,children:(0,Ze.jsx)(NB,{meta:e,passprop:A,is_layout:i})})},NB=({meta:e,passprop:t,is_layout:A})=>{let i=ki(Oi,"VI");if(A&&e.item.name==="children"){let r=[];for(let o of i.entry){let s=i.meta[o];if(s.item.adv?.js||s.item.component?.id)r.push((0,Ze.jsx)(GA,{meta:s,children:(0,Ze.jsx)(UB,{meta:s,is_layout:!1,passprop:t})}));else{let a=Hs(i,s,!1,t);i.visit&&i.visit(s,a),r.push((0,Ze.jsx)("div",{...a.props}))}}return(0,Ze.jsx)(Ze.Fragment,{children:r.map((o,s)=>(0,Ze.jsx)(Q0.Fragment,{children:o},s))})}let n=Hs(i,e,A,t);return i.visit&&i.visit(e,n),(0,Ze.jsx)("div",{...n.props})};var br=K(ce()),h0=({})=>{let e=ki(Oi,"VI"),t=wi({tick:Date.now()});if(e.tick=t.tick,e.status!=="ready")return(0,br.jsx)("div",{className:"flex flex-1 flex-col relative",children:(0,br.jsx)(rn,{backdrop:!1})});let A=!!e.layout?.entry&&e.layout.entry.length>0,i=e.entry;return A&&e.layout?.entry&&(i=e.layout?.entry),(0,br.jsx)("div",{className:"flex flex-1 flex-col relative",children:Array.isArray(i)&&i.map(n=>{let r=A?e.layout?.meta[n]:e.meta[n];return r&&Element?(0,br.jsx)(GA,{children:(0,br.jsx)(Kr,{meta:r,is_layout:A})},r.item.id):null})})};var Kc=K(ce()),xB=window,p0=({meta:e,entry:t,api_url:A,site_id:i,api:n,mode:r,db:o,visit:s,script:a,page_id:c,render_stat:I,on_status_changed:l,on_preload:u,layout:g})=>{let f=ki(Oi,"VI");return f.mode=r,f.entry=t,f.on_preload=u,xB.isMobile=r==="mobile",xB.isDesktop=r==="desktop",xB.preload=Q=>{f.page.navs[c]||(f.page.navs[c]=new Set);let k=typeof Q=="string"?[Q]:Q;for(let d of k)f.page.navs[c].add(d);return clearTimeout(wn.timeout),wn.timeout=setTimeout(()=>{f.on_preload&&f.on_preload({urls:Array.from(f.page.navs[c])})},100),""},f.layout=g,f.page.cur.id=c,f.on_status_changes=l,I==="disabled"&&(qc.enabled=!1),f.meta!==e&&(f.meta=e),a&&(f.script.init_local_effect=a.init_local_effect),f.visit=s,f.status==="init"&&(f.site.db=o,f.site.api=n,Mw(f,{api_url:A,site_id:i})),u&&(0,bc.useEffect)(()=>{setTimeout(()=>{let Q=f.page.navs[f.page.cur.id];Q&&u({urls:Array.from(Q)})},500)},[f.page.cur.id]),(0,Kc.jsx)(GA,{children:(0,Kc.jsx)(bc.Suspense,{children:(0,Kc.jsx)(h0,{})})})};var GB=window,v={root:null,url(...e){let t=e.map(i=>Array.isArray(i)?i.join(""):i).join(""),A=this.root.toString();return A.endsWith("/")&&(A=A.substring(0,A.length-1)),t.startsWith("/")?A+t:A+"/"+t},get pathname(){let e=location.pathname.substring(v.root.pathname.length);return e.startsWith("/")?e:`/${e}`},site:{id:GB._prasi?.site_id},init_local_effect:{},mode:"",route:{status:"init",pages:[],router:null},comp:{list:{},pending:new Set},layout:{id:"",root:null,meta:null},cache:{urls:new Set},page:{id:"",url:"",root:null,meta:null,cache:{}}},E0=()=>{if(!v.root){let e=new URL(location.href);GB._prasi.basepath&&(e.pathname=GB._prasi.basepath),v.root=new URL(`${e.protocol}//${e.host}${e.pathname}`),v.root.pathname.endsWith("/")&&(v.root.pathname=v.root.pathname.substring(0,v.root.length-1))}};var cA=Qn("prasi-prod","prasi-cache-prod");var Nn=async(e,t)=>{let A=v.comp;for(let i of e)i&&i.type!=="text"&&HB(i);if(A.pending.size>0){let i=!0,n=[];if(t!==!1){for(let r of[...A.pending]){let o=await kA(`comp-${r}`,cA);o||(i=!1),A.list[r]=o,n.push(o)}if(i){for(let r of[...A.pending])A.pending.delete(r);await Nn(n,t);return}}}if(A.pending.size>0)try{let i=await(await fetch(v.url`_prasi/comp`,{method:"POST",body:JSON.stringify({ids:[...A.pending]})})).json();for(let[n,r]of Object.entries(i))A.pending.delete(n),A.list[n]=r,await SA(`comp-${n}`,r,cA);await Nn(Object.values(i),t)}catch{}},HB=e=>{let t=v.comp;if(e.type==="item"){let A=e.component?.id;if(A){!t.list[A]&&!t.pending.has(A)&&t.pending.add(A);for(let i of Object.values(e.component?.props||{}))i.content&&i.meta?.type==="content-element"&&HB(i.content)}}if(e.childs)for(let A of e.childs)A&&A.type!=="text"&&HB(A)};var m0=(e,t)=>new Promise(async A=>{let i=!1;if(t!==!1){let r=await kA(`page-${e}`,cA);r&&(A(r),i=!0)}let n=await(await fetch(v.url`_prasi/page/${e}`)).json();SA(`page-${e}`,{id:e,url:n.url,root:n.root},cA),i||A(n)}),lH=e=>new Promise(async t=>{let A={},i=[...new Set(e)],n=!0;for(let o of i){let s=await kA(`page-${o}`,cA);if(s)A[o]=s;else{n=!1;break}}n&&t(A);let r=await(await fetch(v.url`_prasi/pages`,{method:"POST",body:JSON.stringify({ids:i})})).json();for(let[o,s]of Object.entries(r))SA(`page-${o}`,s,cA);n||t(r)}),y0=async e=>{let t=e.map(A=>v.route.router?.lookup(A)).filter(A=>A&&A.id);return await lH(t.map(A=>A?.id))};var F0=K(w0()),D0=()=>{let e=v;if(e.site.id){if(!e.mode&&e.site.responsive)if(e.site.responsive!=="mobile-only"&&e.site.responsive!=="desktop-only"){let t=(0,F0.default)();e.mode=t.device.type==="mobile"?"mobile":"desktop"}else e.site.responsive==="mobile-only"?e.mode="mobile":e.site.responsive==="desktop-only"&&(e.mode="desktop");localStorage.getItem("prasi-editor-mode")&&(e.mode=localStorage.getItem("prasi-editor-mode"))}};var gH=()=>new Promise(async e=>{let t=!1,A=await kA("route",cA);A&&(e(A),t=!0);let i=await(await fetch(v.url`_prasi/route`)).json();await SA("route",i,cA),t||e(i)}),k0=async e=>{let t=Sr(),A=[];try{let i=await gH();if(i&&i.site&&i.urls){i.layout&&(v.layout.id=i.layout.id,v.layout.root=i.layout.root,v.layout.meta={},v.layout.root&&(await Nn(v.layout.root.childs,!e),Lc(v.layout.meta,v.layout.root))),v.site=i.site,v.site.code={mode:"new"},await uH(),v.site.api=Fn(v.site.api_url),v.site.db=Dn(v.site.api_url);let n=window;n.serverurl=v.site.api_url,n.db=v.site.db,n.api=v.site.api;for(let r of i.urls)t.insert(r.url,r),A.push(r)}}catch{}return{router:t,pages:A}},uH=()=>new Promise(e=>{let t=document,A=t.createElement("script");A.onload=async()=>{e()};let i=v.site.api_url;try{new URL(i)}catch{location.hostname==="localhost"?i="http://localhost:4550":i="https://prasi.avolut.com"}localStorage.getItem("api-ts-"+i)||localStorage.setItem("api-ts-"+i,Date.now().toString());let n=localStorage.getItem("api-ts-"+i);A.src=`${i}/_prasi/load.js?url=${i}&v3&ts=${n}`,document.querySelector(`script[src="${A.src}"]`)?e():t.body.appendChild(A)}),Lc=(e,t)=>{for(let A of t.childs)vt({comps:v.comp.list,meta:e,mode:"page"},{item:A})};var xn=window;var ti=K(ce()),MB=()=>location.hostname.split(".").length===4||location.hostname==="prasi.app"||location.hostname==="prasi.avolut.com"||location.hostname.includes("ngrok")||location.hostname==="localhost"||location.hostname==="127.0.0.1"||location.hostname==="10.0.2.2",U0=()=>{let e=wi({page_id:""}),[t,A]=(0,S0.useState)({}),i=()=>A({});xn.prasiContext.render=i;let n=Eu.Provider,r=MB()&&location.pathname.startsWith("/prod");if(v.route.status!=="ready")return v.route.status==="init"&&(v.route.status="loading",k0(r).then(async({router:I,pages:l})=>{D0(),v.route.status="ready",v.route.router=I,v.route.pages=l;let u=Gc(await(await fetch(`${xn._prasi.basepath}/_prasi/code/index.js`.replace("//","/"))).text());if(u)for(let[g,f]of Object.entries(u))window[g]=f;i()})),(0,ti.jsx)(rn,{});let o=v.route.router;if(!o)return(0,ti.jsx)(Fu,{children:"Failed to create Router"});let s="";if(r){let I=location.pathname.split("/");wu(I[3])&&(s=I[3])}let a=o.lookup(v.pathname);if(s){let I=v.route.pages.find(l=>s===l.id);I&&(a=I)}if(!a)return(0,ti.jsx)(Fu,{children:"Page Not Found"});a.id!==e.page_id&&(v.init_local_effect={}),xn.params=a.params||{},v.page.id=a.id,v.page.url=a.url;let c=v.page.cache[a.id];if(c)v.page.root=c.root,v.page.meta=c.meta;else return m0(a.id,!r).then(async({root:I})=>{if(a){let l={id:a.id,url:a.url,root:I,meta:{}};await Nn(I.childs,!r),Lc(l.meta,I),v.page.cache[l.id]=l,i()}}).catch(()=>{i()}),(0,ti.jsx)(rn,{note:"Loading page"});return(0,ti.jsx)(n,{value:xn.prasiContext,children:(0,ti.jsx)("div",{className:cx("relative flex flex-1 items-center justify-center"),children:(0,ti.jsx)("div",{className:cx("absolute flex flex-col items-stretch flex-1 bg-white main-content-preview",v.mode==="mobile"?css` @media (min-width: 768px) { border-left: 1px solid #ccc; border-right: 1px solid #ccc; diff --git a/app/web/src/nova/vi/render/render.tsx b/app/web/src/nova/vi/render/render.tsx index 1ed418bf..60519c68 100644 --- a/app/web/src/nova/vi/render/render.tsx +++ b/app/web/src/nova/vi/render/render.tsx @@ -56,6 +56,7 @@ export const ViRender: FC<{ if (!meta) return null; if (meta.item.hidden) return null; + if (meta.item.adv?.js || meta.item.component?.id) { return ( @@ -92,7 +93,7 @@ export const ViChild: FC<{ @@ -103,6 +104,7 @@ export const ViChild: FC<{ childs.push(
); } } + return ( <> {childs.map((e, idx) => ( @@ -111,6 +113,7 @@ export const ViChild: FC<{ ); } + const parts = viParts(vi, meta, is_layout, passprop); if (vi.visit) vi.visit(meta, parts); diff --git a/app/web/src/nova/vi/render/script.tsx b/app/web/src/nova/vi/render/script.tsx index 70db5117..80683009 100644 --- a/app/web/src/nova/vi/render/script.tsx +++ b/app/web/src/nova/vi/render/script.tsx @@ -28,5 +28,5 @@ export const ViScript: FC<{ if (meta.script) return meta.script.result; } - return ; + return ; };