diff --git a/app/srv/core/main.js b/app/srv/core/main.js index ec6a3ef3..2f4f5882 100644 --- a/app/srv/core/main.js +++ b/app/srv/core/main.js @@ -95,7 +95,7 @@ Error generating stack: `+i.message+` ${cy(e,t.mode)} ${qh(e,t.mode)} ${py(e,t.mode)} - `,(t?.hover||t?.active)&&dy({item:e,hover:t?.hover,active:t?.active}),Kh(e,t.mode)])}catch(n){console.log(n)}return cx([])};var yy=O(V()),To=(e,t,n,r)=>{let o=t.item,i;o.component?.style&&(i={style:o.component.style,className:Yu(o.component.style,{mode:e.mode})});let s={className:Yu(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,yy.jsx)(Tt,{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 Py=O(ce());var Ts=e=>({isMobile:e.mode==="mobile",isDesktop:e.mode==="desktop",isEditor:location.pathname.startsWith("/ed/")});var Ls=O(ce());var Xe=window;function ec(e){return new Promise((t,n)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>n(e.error)})}function tc(e,t){let n=indexedDB.open(e);n.onupgradeneeded=()=>n.result.createObjectStore(t);let r=ec(n);return(o,i)=>r.then(s=>i(s.transaction(t,o).objectStore(t)))}var Zu;function gy(){return Zu||(Zu=tc("keyval-store","keyval")),Zu}function nc(e,t=gy()){return t("readonly",n=>ec(n.get(e)))}function vy(e,t,n=gy()){return n("readwrite",r=>(r.put(t,e),ec(r.transaction)))}var Ax=tc("prasi-cache","prasi-cache-store"),Io={timeout:null,store:Ax},Is=(e,t)=>{let n=[...wy(t,"navigate(",")"),...wy(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(Io.timeout),Io.timeout=setTimeout(()=>{e.on_nav_loaded&&e.on_nav_loaded({urls:Array.from(e.page.navs[r])})},100)},wy=(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 Lo=O(ce());var Sy=O(Ju()),bo=O(ce());var rc=O(V()),_y=(e,t,n,r)=>o=>{n.item.script||(n.item.script={}),n.item.script.passprop||(n.item.script.passprop={});let i={};if(n.item.script.passprop){let a=!1;for(let[f,u]of Object.entries(o))["children","key"].includes(f)||(a=!0,i[f]=u,n.item.script.passprop[f]={end:0,start:0,value:u})}let s={...r,...i};if(!Array.isArray(o.children)&&(0,bo.isValidElement)(o.children)&&typeof o.children=="object"){let a=(0,Sy.default)(o.children,"props.meta.item.component.props.child.content.childs");if(Array.isArray(a)){let f=!0;for(let u of a)!(0,bo.isValidElement)(u)&&typeof u=="object"||(f=!1);if(f)return a.map(u=>{let c=e.meta[u.id];return c||(e.meta[u.id]={item:u},c=e.meta[u.id]),c?(Object.keys(c.item).length===1&&c.mitem&&(c.item=c.mitem.toJSON()),(0,rc.jsx)(Tt,{is_layout:t,meta:c,passprop:s},u.id)):null})}}if(!Array.isArray(o.children)&&!(0,bo.isValidElement)(o.children)&&typeof o.children=="object"){let a=o.children.id;if(a){let f=e.meta[a];return(0,rc.jsx)(Tt,{is_layout:t,meta:f,passprop:s})}}return oc(o,n.script?.scope)},oc=(e,t)=>{let n={};if(Array.isArray(e)?n.children=e:n=e,Array.isArray(n.children)){let r=[];for(let o of n.children)r.push(xy(o,n,t));return r}return xy(n.children,n,t)},xy=(e,t,n)=>{if((0,bo.isValidElement)(e)){let r={...t};return delete r.children,{...e,props:{...e.props,passprop:{...n,...r}}}}return e};var mr={},ky=(e,t,n)=>r=>{let o=["localhost","prasi.avolut.com"].includes(location.hostname)&&location.pathname.startsWith("/ed/"),i=n.item.id,{children:s}=r,l=e.script?.init_local_effect,a=t?e.layout?.meta:e.meta,u=(0,Lo.useRef)(mr[i]?mr[i]:r.value).current;return u.render=n.render,bs(e,n,n.script?.scope),r.hook&&r.hook(u),(0,Lo.useEffect)(()=>{if(n.parent?.instance_id&&a){let d=a[n.parent?.instance_id];if(d&&d.instances){for(let[y,m]of Object.entries(d.instances[n.parent.instance_id]))if(m===n.item.id){i=y;break}}}return!l[i]&&(typeof l=="object"&&(l[i]=!0),(async()=>r.effect&&(await r.effect(u),o&&(mr[i]=u)))()),()=>{}},[location.pathname]),(0,Lo.useEffect)(()=>{o&&mr[i]===null&&(async()=>r.effect&&(await r.effect(u),o&&(mr[i]=u)))()},[mr[i]]),oc(s,{...n.script?.scope,[r.name]:u})};var ic=O(V()),Ey=(e,t,n,r)=>{let o=To(e,t,n,r);e.visit&&e.visit(t,o),t.script?t.script.scope=r:t.script={scope:r,result:null,Local:ky(e,n,t),PassProp:_y(e,n,t,r)};let i=t.script,s=window.exports,l={useEffect:Ls.useEffect,children:o.props.children,props:o.props,Local:i.Local,db:e.site.db,api:e.site.api,PassProp:i?.PassProp,ErrorBox:mt,newElement:()=>{},render:c=>{i.result=(0,ic.jsx)(Ls.Suspense,{children:c})},params,...Ts(e),...s,...r};if(typeof r=="object"){for(let[c,d]of Object.entries(r))if(typeof d=="object"&&d&&d._jsx){let y=d;l[c]=(0,ic.jsx)(jx,{fn:y.fn,passprop:r,meta:t})}}!Xe.isEditor&&t.item.adv?.js&&Is(e,t.item.adv.js);let a=t.item.adv?.jsBuilt||"",f=lc(a,sc)||"";new Function(...Object.keys(l),`// ${t.item.name}: ${t.item.id} + `,(t?.hover||t?.active)&&dy({item:e,hover:t?.hover,active:t?.active}),Kh(e,t.mode)])}catch(n){console.log(n)}return cx([])};var yy=O(V()),To=(e,t,n,r)=>{let o=t.item,i;o.component?.style&&(i={style:o.component.style,className:Yu(o.component.style,{mode:e.mode})});let s={className:Yu(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,yy.jsx)(Tt,{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 Py=O(ce());var Ts=e=>({isMobile:e.mode==="mobile",isDesktop:e.mode==="desktop",isEditor:location.pathname.startsWith("/ed/")});var Ls=O(ce());var Xe=window;function ec(e){return new Promise((t,n)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>n(e.error)})}function tc(e,t){let n=indexedDB.open(e);n.onupgradeneeded=()=>n.result.createObjectStore(t);let r=ec(n);return(o,i)=>r.then(s=>i(s.transaction(t,o).objectStore(t)))}var Zu;function gy(){return Zu||(Zu=tc("keyval-store","keyval")),Zu}function nc(e,t=gy()){return t("readonly",n=>ec(n.get(e)))}function vy(e,t,n=gy()){return n("readwrite",r=>(r.put(t,e),ec(r.transaction)))}var Ax=tc("prasi-cache","prasi-cache-store"),Io={timeout:null,store:Ax},Is=(e,t)=>{let n=[...wy(t,"navigate(",")"),...wy(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(Io.timeout),Io.timeout=setTimeout(()=>{e.on_nav_loaded&&e.on_nav_loaded({urls:Array.from(e.page.navs[r])})},100)},wy=(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 Lo=O(ce());var Sy=O(Ju()),bo=O(ce());var rc=O(V()),_y=(e,t,n,r)=>o=>{n.item.script||(n.item.script={}),n.item.script.passprop||(n.item.script.passprop={});let i={};if(n.item.script.passprop){let a=!1;for(let[f,u]of Object.entries(o))["children","key"].includes(f)||(a=!0,i[f]=u,n.item.script.passprop[f]={end:0,start:0,value:u})}let s={...r,...i};if(!Array.isArray(o.children)&&(0,bo.isValidElement)(o.children)&&typeof o.children=="object"){let a=(0,Sy.default)(o.children,"props.meta.item.component.props.child.content.childs");if(console.log(a),Array.isArray(a)){let f=!0;for(let u of a)!(0,bo.isValidElement)(u)&&typeof u=="object"||(f=!1);if(f)return a.map(u=>{let c=e.meta[u.id];return c||(e.meta[u.id]={item:u},c=e.meta[u.id]),c?(Object.keys(c.item).length===1&&c.mitem&&(c.item=c.mitem.toJSON()),(0,rc.jsx)(Tt,{is_layout:t,meta:c,passprop:s},u.id)):null})}}if(!Array.isArray(o.children)&&!(0,bo.isValidElement)(o.children)&&typeof o.children=="object"){let a=o.children.id;if(a){let f=e.meta[a];return(0,rc.jsx)(Tt,{is_layout:t,meta:f,passprop:s})}}return oc(o,n.script?.scope)},oc=(e,t)=>{let n={};if(Array.isArray(e)?n.children=e:n=e,Array.isArray(n.children)){let r=[];for(let o of n.children)r.push(xy(o,n,t));return r}return xy(n.children,n,t)},xy=(e,t,n)=>{if((0,bo.isValidElement)(e)){let r={...t};return delete r.children,{...e,props:{...e.props,passprop:{...n,...r}}}}return e};var mr={},ky=(e,t,n)=>r=>{let o=["localhost","prasi.avolut.com"].includes(location.hostname)&&location.pathname.startsWith("/ed/"),i=n.item.id,{children:s}=r,l=e.script?.init_local_effect,a=t?e.layout?.meta:e.meta,u=(0,Lo.useRef)(mr[i]?mr[i]:r.value).current;return u.render=n.render,bs(e,n,n.script?.scope),r.hook&&r.hook(u),(0,Lo.useEffect)(()=>{if(n.parent?.instance_id&&a){let d=a[n.parent?.instance_id];if(d&&d.instances){for(let[y,m]of Object.entries(d.instances[n.parent.instance_id]))if(m===n.item.id){i=y;break}}}return!l[i]&&(typeof l=="object"&&(l[i]=!0),(async()=>r.effect&&(await r.effect(u),o&&(mr[i]=u)))()),()=>{}},[location.pathname]),(0,Lo.useEffect)(()=>{o&&mr[i]===null&&(async()=>r.effect&&(await r.effect(u),o&&(mr[i]=u)))()},[mr[i]]),oc(s,{...n.script?.scope,[r.name]:u})};var ic=O(V()),Ey=(e,t,n,r)=>{let o=To(e,t,n,r);e.visit&&e.visit(t,o),t.script?t.script.scope=r:t.script={scope:r,result:null,Local:ky(e,n,t),PassProp:_y(e,n,t,r)};let i=t.script,s=window.exports,l={useEffect:Ls.useEffect,children:o.props.children,props:o.props,Local:i.Local,db:e.site.db,api:e.site.api,PassProp:i?.PassProp,ErrorBox:mt,newElement:()=>{},render:c=>{i.result=(0,ic.jsx)(Ls.Suspense,{children:c})},params,...Ts(e),...s,...r};if(typeof r=="object"){for(let[c,d]of Object.entries(r))if(typeof d=="object"&&d&&d._jsx){let y=d;l[c]=(0,ic.jsx)(jx,{fn:y.fn,passprop:r,meta:t})}}!Xe.isEditor&&t.item.adv?.js&&Is(e,t.item.adv.js);let a=t.item.adv?.jsBuilt||"",f=lc(a,sc)||"";new Function(...Object.keys(l),`// ${t.item.name}: ${t.item.id} ${f} `)(...Object.values(l)),bs(e,t,r)},jx=({fn:e,meta:t,passprop:n})=>e({passprop:n,meta:t}),sc={"stroke-width":"strokeWidth","fill-rule":"fillRule","clip-rule":"clipRule","stroke-linejoin":"strokeLinejoin","stroke-linecap":"strokeLinecap","clip-path":"clipPath"},lc=(e,t)=>{let n=e;for(let[r,o]of Object.entries(t))n=n.replaceAll(r,o);return n};var Ry=O(V()),Cy=(e,t,n,r)=>{if(t.item.component?.id){t.item.script||(t.item.script={});let i={...window.exports,db:e.site.db,api:e.site.api,...Ts(e),...r,params};t.item.script.props={};let s=new Set;if(t.item.component.props)for(let[l,a]of Object.entries(t.item.component.props))try{if(a.meta?.type==="content-element"){let y={_jsx:!0,fn:m=>{let v=a.content?.id;if(v){let E=n?e.layout?.meta[v]:e.meta[v];if(!E)return null;let h=t.instances;if(!m.meta.item.originalId||!h||!h[t.item.id])return null;let g=m.meta.item.originalId;if(E.mitem&&(a.jsxCalledBy&&(!a.jsxCalledBy.includes(g)||a.jsxCalledBy.length!==2)||!a.jsxCalledBy)){let x=t.mitem?.get("component")?.get("props")?.get(l);if(x){let k=x.get("jsxCalledBy");!k||typeof k!="object"?x.set("jsxCalledBy",[t.item.id,g]):(!k.includes(g)||k.length!==2||k[0]!==t.item.id||k[1]!==g)&&x.set("jsxCalledBy",[t.item.id,g])}}return(0,Ry.jsx)(Tt,{meta:E,passprop:m.passprop,is_layout:n})}return null}};i[l]=y,r&&(r[l]=y);continue}a.value&&Is(e,a.value);let f=a.valueBuilt||"",u=lc(f,sc)||"",c=new Function(...Object.keys(i),`// [${t.item.name}] ${l}: ${t.item.id} return ${u} diff --git a/app/web/src/nova/vi/render/script/passprop.tsx b/app/web/src/nova/vi/render/script/passprop.tsx index 7f8b2866..234a9d0b 100644 --- a/app/web/src/nova/vi/render/script/passprop.tsx +++ b/app/web/src/nova/vi/render/script/passprop.tsx @@ -43,6 +43,8 @@ export const createViPassProp = ( "props.meta.item.component.props.child.content.childs" ) as unknown as any[]; + console.log(children); + if (Array.isArray(children)) { let is_meta = true; for (const c of children) {