@blocklet/pages-kit-inner-components 0.6.103 → 0.6.105

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/lib/cjs/add-component.js +1 -1
  2. package/lib/cjs/chunks/components-BmFOXvb0.js +57 -0
  3. package/lib/cjs/chunks/{draft-data-CkVvOh60.js → draft-data-e1KnFlxv.js} +1 -1
  4. package/lib/cjs/chunks/{home-DdN3Z-6B.js → home-DHmHyTMb.js} +10 -10
  5. package/lib/cjs/chunks/{index-B-Wh6PRT.js → index-Cu2Jg8OH.js} +24 -24
  6. package/lib/cjs/chunks/{publish-button-BtLFUEny.js → publish-button-Do7oJLSH.js} +1 -1
  7. package/lib/cjs/chunks/site-state-BQySNTiP.js +1 -0
  8. package/lib/cjs/chunks/state-DU3L5Lve.js +1 -0
  9. package/lib/cjs/components.js +1 -1
  10. package/lib/cjs/home.js +1 -1
  11. package/lib/cjs/project-html.js +1 -1
  12. package/lib/cjs/resources.js +1 -1
  13. package/lib/cjs/setting.js +3 -3
  14. package/lib/cjs/site-state.js +1 -1
  15. package/lib/es/add-component.js +2 -2
  16. package/lib/es/chunks/components-DLjI_Xlm.js +615 -0
  17. package/lib/es/chunks/{draft-data-BOoVhbon.js → draft-data-DRdPzuGm.js} +1 -1
  18. package/lib/es/chunks/{home-DVTVPkSm.js → home-DajDpGXA.js} +123 -123
  19. package/lib/es/chunks/{index-DENjTU8O.js → index-BpP1FqET.js} +239 -238
  20. package/lib/es/chunks/{publish-button-BVcMw8Fh.js → publish-button-8kEbdc0k.js} +3 -3
  21. package/lib/es/chunks/site-state-DS7eIMFg.js +1684 -0
  22. package/lib/es/chunks/{state-DNdwHwty.js → state-qDCrgEMQ.js} +114 -113
  23. package/lib/es/components.js +14 -13
  24. package/lib/es/home.js +3 -3
  25. package/lib/es/project-html.js +1 -1
  26. package/lib/es/resources.js +2 -2
  27. package/lib/es/setting.js +415 -413
  28. package/lib/es/site-state.js +2 -2
  29. package/package.json +7 -7
  30. package/lib/cjs/chunks/components-DsHjikTX.js +0 -57
  31. package/lib/cjs/chunks/site-state-DlLhHuIr.js +0 -1
  32. package/lib/cjs/chunks/state-BdtFHk36.js +0 -1
  33. package/lib/es/chunks/components-BIhMGXjB.js +0 -610
  34. package/lib/es/chunks/site-state-CN4Kulgk.js +0 -1671
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),N=require("./state-BdtFHk36.js"),q=require("@arcblock/ux/lib/Locale/context"),Y=require("@arcblock/ux/lib/Toast"),Z=require("@blocklet/pages-kit/utils/route"),C=require("@mui/icons-material"),F=require("@mui/lab"),s=require("@mui/material"),ee=require("immer"),te=require("lodash/difference"),a=require("react"),se=require("react-use"),ne=require("./home-DdN3Z-6B.js"),H=require("./index-B-Wh6PRT.js"),J=o=>o&&o.__esModule?o:{default:o},z=J(Y),V=J(te);function ie(o){const[x,g]=a.useState(!1);return e.jsx(F.LoadingButton,{...o,loading:o.loading||x,onClick:c=>{const m=o.onClick?.(c);m instanceof Promise&&(g(!0),m.finally(()=>{g(!1)}))}})}const oe=s.createSvgIcon(e.jsxs("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M7.75732 16.2426L16.2426 7.75736",stroke:"#4B5563",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),e.jsx("path",{d:"M16.2426 16.2426L7.75732 7.75735",stroke:"#4B5563",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),"Close");function re(){const[o,x]=a.useState(),g=a.useMemo(()=>o?e.jsx(s.Dialog,{...o}):null,[o]),c=a.useCallback(()=>{x(void 0)},[]),m=a.useCallback(({title:b,content:d,cancelText:P="Cancel",okText:f="Ok",onOk:y,onClose:u,okIcon:L,okColor:k="primary",cancelColor:h="primary",DialogContentProps:v,form:R,...I})=>{x({...I,open:!0,children:e.jsxs("form",{onSubmit:B=>B.preventDefault(),children:[b&&e.jsxs(s.DialogTitle,{className:"between",zIndex:"appBar",bgcolor:"background.paper",sx:{borderBottom:B=>`1px solid ${B.palette.divider}`},children:[e.jsx(s.Box,{children:b}),e.jsx(s.IconButton,{size:"small",onClick:async()=>{c(),u?.()},children:e.jsx(oe,{})})]}),d&&e.jsx(s.DialogContent,{...v,sx:{mt:-3,...v?.sx,bgcolor:"background.paper"},children:e.jsx(s.Box,{sx:{pt:3},children:d})}),e.jsxs(s.DialogActions,{sx:{bgcolor:"background.paper"},children:[e.jsx(s.Button,{variant:"outlined",color:h||"primary",onClick:u??c,children:P}),e.jsx(ie,{variant:"contained",color:k||"primary",startIcon:L,loadingPosition:L?"start":"center",onClick:async()=>{await y?.(),c()},type:"submit",children:f})]})]}),onClose:u??c})},[c]);return{dialog:g,showDialog:m,closeDialog:c}}const ae=({ref:o,mode:x,state:g})=>{const{t:c}=q.useLocaleContext(),[m,b]=a.useState(!1),{dialog:d,showDialog:P}=re(),f=N.useProjectId(),y=a.useCallback(L=>{let k=[];P({title:c("maker.publishToProduction"),content:e.jsxs(s.Box,{sx:{minWidth:300},children:[e.jsx(s.Alert,{color:"warning",icon:e.jsx(C.Warning,{}),children:c("maker.publishToProductionTip")}),e.jsx(s.Box,{sx:{maxHeight:"50vh",overflow:"auto",mt:2},children:e.jsx(ce,{state:g,toMode:x,onChange:h=>k=h,defaultRouteIds:L})})]}),okText:c("maker.publish"),cancelText:c("common.cancel"),onOk:async()=>{if(k?.length===0){const h=c("maker.publishSelectPagesMessage");throw z.default.error(h),new Error(h)}localStorage.setItem(N.getProjectPageVersionKey(f??""),String(new Date().getTime())),b(!0);try{await H.publishPages({mode:x,routes:k}),z.default.success(c("maker.publishSuccessMessage"))}catch(h){throw z.default.error(h.message),h}finally{b(!1)}}})},[x,g,c,f,P]);a.useImperativeHandle(o,()=>({openPublishDialog:y}));const u=a.useCallback(()=>{y()},[y]);return e.jsxs(e.Fragment,{children:[e.jsx(F.LoadingButton,{color:"primary",variant:"contained",size:"small",sx:{mr:1},onClick:u,loading:m,disabled:m,children:c("maker.publish")}),d]})};function le({routePathInfo:o,checked:x,onClick:g,route:c}){const{t:m}=q.useLocaleContext(),b=!o.routeMetaData?.publishedAt||o.routeMetaData?.updatedAt&&new Date(o.routeMetaData?.updatedAt)>new Date(o.routeMetaData?.publishedAt);return e.jsx(s.ListItem,{sx:{pl:4,pr:3},disablePadding:!0,secondaryAction:e.jsxs(s.Box,{sx:{display:"flex",alignItems:"center",minWidth:"auto"},children:[b&&e.jsx(s.Box,{className:"visible",title:m("maker.pages.needPublish"),sx:{mr:.35,color:"warning.main",display:"flex",alignItems:"center"},children:e.jsx(s.Tooltip,{title:m("maker.pages.needPublish"),children:e.jsx(C.Sync,{fontSize:"small",sx:{fontSize:"16px"}})})}),(!o.routeMetaData?.isPublic||!c.isPublic)&&e.jsx(s.Box,{className:"visible",sx:{color:"warning.main"},children:e.jsx(s.Tooltip,{title:m("maker.pages.notPublic"),children:e.jsx(C.VisibilityOff,{fontSize:"small",sx:{fontSize:"16px"}})})})]}),children:e.jsxs(s.ListItemButton,{onClick:g,dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:x,tabIndex:-1})}),e.jsx(s.ListItemText,{primary:o.path,slotProps:{primary:{fontSize:"0.8rem",fontStyle:"italic",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",pr:1}}})]})})}function ce({state:o,toMode:x,onChange:g,defaultRouteIds:c}){const{t:m,locale:b}=q.useLocaleContext(),[d,P]=a.useState(!1),[f,y]=a.useState(()=>c?Object.fromEntries(c.filter(t=>!t.includes("-")).map(t=>[t,!0])):{}),[u,L]=a.useState({}),[k,h]=a.useState(()=>c?Object.fromEntries(c.filter(t=>t.includes("-")).map(t=>[t,!0])):{}),[v,R]=a.useState({}),{loading:I,error:B,value:w}=se.useAsync(()=>H.getPages({mode:x}),[x]);if(B)throw B;const j=a.useMemo(()=>o.routeIds||[],[o]),M=a.useMemo(()=>w?.pageIds||[],[w]),D=a.useMemo(()=>!j||!o.routes?[]:JSON.parse(JSON.stringify(j)).sort((n,i)=>{const r=o.routes?.[n],l=o.routes?.[i];return r?.publishedAt&&new Date(r.publishedAt).getTime()<new Date(r.updatedAt).getTime()?-1:l?.publishedAt&&new Date(l.publishedAt).getTime()<new Date(l.updatedAt).getTime()?1:new Date(r?.updatedAt??"").getTime()-new Date(l?.updatedAt??"").getTime()}),[o,j]),E=a.useMemo(()=>{if(!D)return[];if(!u)return D;const t=[...D].filter(n=>!u[n]);return Object.values(u).forEach(n=>{n.forEach(i=>{t.push(`${i.originalRouteId}-${i.paramOptionIds.join("-")}`)})}),t},[D,u]),O=a.useMemo(()=>!w||!M||!E?[]:V.default(M,E),[E,w,M]),T=a.useMemo(()=>j?[...j].concat(O):O,[j,O]),$=a.useCallback(()=>{const t={};D?.forEach(n=>{const i=o.routes?.[n];if(i&&i.params&&i.params.length>0&&i.paramsOptions&&i.paramsOptions.length>0){const r=Z.generateParamCombinations({basePath:i.path,params:i.params,routeId:i.id,paramsOptions:i.paramsOptions,currentIndex:0,currentParams:[],currentOptionIds:[],result:[]});r.length>0&&(t[i.id]=r)}}),L(t)},[D,o.routes]);a.useEffect(()=>{$()},[$]),a.useEffect(()=>{R(t=>{const n={...t};return Object.keys(u).forEach(i=>{u[i]&&u[i]?.length>0&&n[i]===void 0&&(n[i]=!0)}),n})},[u]);const W=a.useRef(!0);a.useEffect(()=>{h(t=>{const n={...t};return Object.keys(u).length===0||(Object.keys(u).forEach(i=>{const r=u[i]||[],l=d||!!f[i];r.forEach(A=>{const p=`${i}-${A.paramOptionIds.join("-")}`;W.current?n[p]=l||t[p]||!1:n[p]=l})}),W.current=!1),n})},[f,u,d]);const U=(t,n)=>{n.stopPropagation(),R(i=>{const r={...i};return r[t]=!r[t],r})},_=a.useCallback(t=>{y(n=>{const i=ee.produce(n,r=>{d?(Object.assign(r,Object.fromEntries(T.map(l=>[l,!0]))),delete r[t]):r[t]?(delete r[t],O.includes(t)&&(j||[]).filter(l=>o.pages[l]?.slug===w?.pages[t]?.slug).forEach(l=>{delete r[l]})):(r[t]=!0,j&&j.includes(t)&&O.filter(l=>w?.pages[l]?.slug===o.pages[t]?.slug).forEach(l=>{r[l]=!0}))});return P(V.default(T,Object.keys(i)).length===0),i})},[d,T,O,o,w,j]),G=a.useCallback((t,n)=>{const i=`${t}-${n.paramOptionIds.join("-")}`;h(r=>{const l={...r};l[i]=!l[i];const A=u[t]?.every(p=>l[`${t}-${p.paramOptionIds.join("-")}`])??!1;return y(p=>{if(A&&!p[t])return{...p,[t]:!0};if(!A&&p[t]){const S={...p};return delete S[t],S}return p}),l})},[u]),Q=a.useCallback(()=>{P(t=>(t&&y({}),!t))},[]);return a.useEffect(()=>{const t=d?T:Object.keys(f),n=Object.entries(k).filter(([,r])=>r).map(([r])=>r).filter(r=>r!==void 0),i=Array.from(new Set([...t,...n]));g(d?null:i)},[d,f,k,T,g]),I?e.jsx(ne.Loading,{sx:{my:4}}):e.jsxs(s.List,{disablePadding:!0,sx:{maxWidth:700},children:[e.jsx(s.ListItem,{sx:{position:"sticky",top:0,zIndex:1},disablePadding:!0,children:e.jsxs(s.ListItemButton,{onClick:Q,dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:d,tabIndex:-1})}),e.jsx(s.ListItemText,{primary:m("common.all")})]})}),D.map(t=>{const n=o.routes?.[t];if(!n)return null;const i=!1,r=u&&u[t]&&u[t]?.length>0,l=v[t]!==!1,A=u[t]||[],p=!n.publishedAt||n.updatedAt&&new Date(n.updatedAt).getTime()>new Date(n.publishedAt).getTime();return e.jsxs(s.Box,{children:[e.jsx(s.ListItem,{sx:{pr:4},disablePadding:!0,secondaryAction:e.jsxs(s.Box,{sx:{display:"flex",alignItems:"center"},children:[p&&e.jsx(s.Tooltip,{title:m("maker.pages.needPublish"),children:e.jsx(C.Sync,{fontSize:"small",sx:{color:"warning.main",fontSize:16,mr:.35}})}),!n.isPublic&&e.jsx(s.Tooltip,{title:m("maker.pages.notPublic"),children:e.jsx(C.VisibilityOff,{fontSize:"small",sx:{color:"warning.main",fontSize:16,mr:.35}})}),i,r&&e.jsx(s.Box,{onClick:S=>U(t,S),sx:{display:"inline-flex",alignItems:"center",mr:.35,cursor:"pointer",color:"info.main"},children:l?e.jsx(C.KeyboardArrowDown,{fontSize:"small",sx:{fontSize:"18px"}}):e.jsx(C.KeyboardArrowRight,{fontSize:"small",sx:{fontSize:"18px"}})})]}),children:e.jsxs(s.ListItemButton,{onClick:()=>_(t),dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:d||!!f[t],tabIndex:-1})}),e.jsx(s.ListItemText,{primary:n.path,slotProps:{primary:{noWrap:!0,textOverflow:"ellipsis"},secondary:{noWrap:!0,textOverflow:"ellipsis"}}})]})}),r&&e.jsx(s.Collapse,{in:l,children:e.jsx(s.Box,{children:A.map(S=>{const K=`${t}-${S.paramOptionIds.join("-")}`,X=k[K]||!1;return e.jsx(le,{routePathInfo:S,checked:d||X,onClick:()=>G(t,S),route:n},K)})})})]},t)}),O.map(t=>{const n=w?.pages[t];return n?e.jsx(s.ListItem,{disablePadding:!0,secondaryAction:e.jsx(s.Chip,{color:"warning",label:"deleted",size:"small"}),children:e.jsxs(s.ListItemButton,{onClick:()=>_(t),dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:d||!!f[t],tabIndex:-1})}),e.jsx(s.ListItemText,{primary:n.slug,secondary:n.locales?.[b]?.title,slotProps:{primary:{noWrap:!0,textOverflow:"ellipsis"},secondary:{noWrap:!0,textOverflow:"ellipsis"}}})]})},t):null})]})}exports.default=ae;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),N=require("./state-DU3L5Lve.js"),q=require("@arcblock/ux/lib/Locale/context"),Y=require("@arcblock/ux/lib/Toast"),Z=require("@blocklet/pages-kit/utils/route"),C=require("@mui/icons-material"),F=require("@mui/lab"),s=require("@mui/material"),ee=require("immer"),te=require("lodash/difference"),a=require("react"),se=require("react-use"),ne=require("./home-DHmHyTMb.js"),H=require("./index-Cu2Jg8OH.js"),J=o=>o&&o.__esModule?o:{default:o},z=J(Y),V=J(te);function ie(o){const[x,g]=a.useState(!1);return e.jsx(F.LoadingButton,{...o,loading:o.loading||x,onClick:c=>{const m=o.onClick?.(c);m instanceof Promise&&(g(!0),m.finally(()=>{g(!1)}))}})}const oe=s.createSvgIcon(e.jsxs("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M7.75732 16.2426L16.2426 7.75736",stroke:"#4B5563",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),e.jsx("path",{d:"M16.2426 16.2426L7.75732 7.75735",stroke:"#4B5563",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),"Close");function re(){const[o,x]=a.useState(),g=a.useMemo(()=>o?e.jsx(s.Dialog,{...o}):null,[o]),c=a.useCallback(()=>{x(void 0)},[]),m=a.useCallback(({title:b,content:d,cancelText:P="Cancel",okText:f="Ok",onOk:y,onClose:u,okIcon:L,okColor:k="primary",cancelColor:h="primary",DialogContentProps:v,form:R,...I})=>{x({...I,open:!0,children:e.jsxs("form",{onSubmit:B=>B.preventDefault(),children:[b&&e.jsxs(s.DialogTitle,{className:"between",zIndex:"appBar",bgcolor:"background.paper",sx:{borderBottom:B=>`1px solid ${B.palette.divider}`},children:[e.jsx(s.Box,{children:b}),e.jsx(s.IconButton,{size:"small",onClick:async()=>{c(),u?.()},children:e.jsx(oe,{})})]}),d&&e.jsx(s.DialogContent,{...v,sx:{mt:-3,...v?.sx,bgcolor:"background.paper"},children:e.jsx(s.Box,{sx:{pt:3},children:d})}),e.jsxs(s.DialogActions,{sx:{bgcolor:"background.paper"},children:[e.jsx(s.Button,{variant:"outlined",color:h||"primary",onClick:u??c,children:P}),e.jsx(ie,{variant:"contained",color:k||"primary",startIcon:L,loadingPosition:L?"start":"center",onClick:async()=>{await y?.(),c()},type:"submit",children:f})]})]}),onClose:u??c})},[c]);return{dialog:g,showDialog:m,closeDialog:c}}const ae=({ref:o,mode:x,state:g})=>{const{t:c}=q.useLocaleContext(),[m,b]=a.useState(!1),{dialog:d,showDialog:P}=re(),f=N.useProjectId(),y=a.useCallback(L=>{let k=[];P({title:c("maker.publishToProduction"),content:e.jsxs(s.Box,{sx:{minWidth:300},children:[e.jsx(s.Alert,{color:"warning",icon:e.jsx(C.Warning,{}),children:c("maker.publishToProductionTip")}),e.jsx(s.Box,{sx:{maxHeight:"50vh",overflow:"auto",mt:2},children:e.jsx(ce,{state:g,toMode:x,onChange:h=>k=h,defaultRouteIds:L})})]}),okText:c("maker.publish"),cancelText:c("common.cancel"),onOk:async()=>{if(k?.length===0){const h=c("maker.publishSelectPagesMessage");throw z.default.error(h),new Error(h)}localStorage.setItem(N.getProjectPageVersionKey(f??""),String(new Date().getTime())),b(!0);try{await H.publishPages({mode:x,routes:k}),z.default.success(c("maker.publishSuccessMessage"))}catch(h){throw z.default.error(h.message),h}finally{b(!1)}}})},[x,g,c,f,P]);a.useImperativeHandle(o,()=>({openPublishDialog:y}));const u=a.useCallback(()=>{y()},[y]);return e.jsxs(e.Fragment,{children:[e.jsx(F.LoadingButton,{color:"primary",variant:"contained",size:"small",sx:{mr:1},onClick:u,loading:m,disabled:m,children:c("maker.publish")}),d]})};function le({routePathInfo:o,checked:x,onClick:g,route:c}){const{t:m}=q.useLocaleContext(),b=!o.routeMetaData?.publishedAt||o.routeMetaData?.updatedAt&&new Date(o.routeMetaData?.updatedAt)>new Date(o.routeMetaData?.publishedAt);return e.jsx(s.ListItem,{sx:{pl:4,pr:3},disablePadding:!0,secondaryAction:e.jsxs(s.Box,{sx:{display:"flex",alignItems:"center",minWidth:"auto"},children:[b&&e.jsx(s.Box,{className:"visible",title:m("maker.pages.needPublish"),sx:{mr:.35,color:"warning.main",display:"flex",alignItems:"center"},children:e.jsx(s.Tooltip,{title:m("maker.pages.needPublish"),children:e.jsx(C.Sync,{fontSize:"small",sx:{fontSize:"16px"}})})}),(!o.routeMetaData?.isPublic||!c.isPublic)&&e.jsx(s.Box,{className:"visible",sx:{color:"warning.main"},children:e.jsx(s.Tooltip,{title:m("maker.pages.notPublic"),children:e.jsx(C.VisibilityOff,{fontSize:"small",sx:{fontSize:"16px"}})})})]}),children:e.jsxs(s.ListItemButton,{onClick:g,dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:x,tabIndex:-1})}),e.jsx(s.ListItemText,{primary:o.path,slotProps:{primary:{fontSize:"0.8rem",fontStyle:"italic",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",pr:1}}})]})})}function ce({state:o,toMode:x,onChange:g,defaultRouteIds:c}){const{t:m,locale:b}=q.useLocaleContext(),[d,P]=a.useState(!1),[f,y]=a.useState(()=>c?Object.fromEntries(c.filter(t=>!t.includes("-")).map(t=>[t,!0])):{}),[u,L]=a.useState({}),[k,h]=a.useState(()=>c?Object.fromEntries(c.filter(t=>t.includes("-")).map(t=>[t,!0])):{}),[v,R]=a.useState({}),{loading:I,error:B,value:w}=se.useAsync(()=>H.getPages({mode:x}),[x]);if(B)throw B;const j=a.useMemo(()=>o.routeIds||[],[o]),M=a.useMemo(()=>w?.pageIds||[],[w]),D=a.useMemo(()=>!j||!o.routes?[]:JSON.parse(JSON.stringify(j)).sort((n,i)=>{const r=o.routes?.[n],l=o.routes?.[i];return r?.publishedAt&&new Date(r.publishedAt).getTime()<new Date(r.updatedAt).getTime()?-1:l?.publishedAt&&new Date(l.publishedAt).getTime()<new Date(l.updatedAt).getTime()?1:new Date(r?.updatedAt??"").getTime()-new Date(l?.updatedAt??"").getTime()}),[o,j]),E=a.useMemo(()=>{if(!D)return[];if(!u)return D;const t=[...D].filter(n=>!u[n]);return Object.values(u).forEach(n=>{n.forEach(i=>{t.push(`${i.originalRouteId}-${i.paramOptionIds.join("-")}`)})}),t},[D,u]),O=a.useMemo(()=>!w||!M||!E?[]:V.default(M,E),[E,w,M]),T=a.useMemo(()=>j?[...j].concat(O):O,[j,O]),$=a.useCallback(()=>{const t={};D?.forEach(n=>{const i=o.routes?.[n];if(i&&i.params&&i.params.length>0&&i.paramsOptions&&i.paramsOptions.length>0){const r=Z.generateParamCombinations({basePath:i.path,params:i.params,routeId:i.id,paramsOptions:i.paramsOptions,currentIndex:0,currentParams:[],currentOptionIds:[],result:[]});r.length>0&&(t[i.id]=r)}}),L(t)},[D,o.routes]);a.useEffect(()=>{$()},[$]),a.useEffect(()=>{R(t=>{const n={...t};return Object.keys(u).forEach(i=>{u[i]&&u[i]?.length>0&&n[i]===void 0&&(n[i]=!0)}),n})},[u]);const W=a.useRef(!0);a.useEffect(()=>{h(t=>{const n={...t};return Object.keys(u).length===0||(Object.keys(u).forEach(i=>{const r=u[i]||[],l=d||!!f[i];r.forEach(A=>{const p=`${i}-${A.paramOptionIds.join("-")}`;W.current?n[p]=l||t[p]||!1:n[p]=l})}),W.current=!1),n})},[f,u,d]);const U=(t,n)=>{n.stopPropagation(),R(i=>{const r={...i};return r[t]=!r[t],r})},_=a.useCallback(t=>{y(n=>{const i=ee.produce(n,r=>{d?(Object.assign(r,Object.fromEntries(T.map(l=>[l,!0]))),delete r[t]):r[t]?(delete r[t],O.includes(t)&&(j||[]).filter(l=>o.pages[l]?.slug===w?.pages[t]?.slug).forEach(l=>{delete r[l]})):(r[t]=!0,j&&j.includes(t)&&O.filter(l=>w?.pages[l]?.slug===o.pages[t]?.slug).forEach(l=>{r[l]=!0}))});return P(V.default(T,Object.keys(i)).length===0),i})},[d,T,O,o,w,j]),G=a.useCallback((t,n)=>{const i=`${t}-${n.paramOptionIds.join("-")}`;h(r=>{const l={...r};l[i]=!l[i];const A=u[t]?.every(p=>l[`${t}-${p.paramOptionIds.join("-")}`])??!1;return y(p=>{if(A&&!p[t])return{...p,[t]:!0};if(!A&&p[t]){const S={...p};return delete S[t],S}return p}),l})},[u]),Q=a.useCallback(()=>{P(t=>(t&&y({}),!t))},[]);return a.useEffect(()=>{const t=d?T:Object.keys(f),n=Object.entries(k).filter(([,r])=>r).map(([r])=>r).filter(r=>r!==void 0),i=Array.from(new Set([...t,...n]));g(d?null:i)},[d,f,k,T,g]),I?e.jsx(ne.Loading,{sx:{my:4}}):e.jsxs(s.List,{disablePadding:!0,sx:{maxWidth:700},children:[e.jsx(s.ListItem,{sx:{position:"sticky",top:0,zIndex:1},disablePadding:!0,children:e.jsxs(s.ListItemButton,{onClick:Q,dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:d,tabIndex:-1})}),e.jsx(s.ListItemText,{primary:m("common.all")})]})}),D.map(t=>{const n=o.routes?.[t];if(!n)return null;const i=!1,r=u&&u[t]&&u[t]?.length>0,l=v[t]!==!1,A=u[t]||[],p=!n.publishedAt||n.updatedAt&&new Date(n.updatedAt).getTime()>new Date(n.publishedAt).getTime();return e.jsxs(s.Box,{children:[e.jsx(s.ListItem,{sx:{pr:4},disablePadding:!0,secondaryAction:e.jsxs(s.Box,{sx:{display:"flex",alignItems:"center"},children:[p&&e.jsx(s.Tooltip,{title:m("maker.pages.needPublish"),children:e.jsx(C.Sync,{fontSize:"small",sx:{color:"warning.main",fontSize:16,mr:.35}})}),!n.isPublic&&e.jsx(s.Tooltip,{title:m("maker.pages.notPublic"),children:e.jsx(C.VisibilityOff,{fontSize:"small",sx:{color:"warning.main",fontSize:16,mr:.35}})}),i,r&&e.jsx(s.Box,{onClick:S=>U(t,S),sx:{display:"inline-flex",alignItems:"center",mr:.35,cursor:"pointer",color:"info.main"},children:l?e.jsx(C.KeyboardArrowDown,{fontSize:"small",sx:{fontSize:"18px"}}):e.jsx(C.KeyboardArrowRight,{fontSize:"small",sx:{fontSize:"18px"}})})]}),children:e.jsxs(s.ListItemButton,{onClick:()=>_(t),dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:d||!!f[t],tabIndex:-1})}),e.jsx(s.ListItemText,{primary:n.path,slotProps:{primary:{noWrap:!0,textOverflow:"ellipsis"},secondary:{noWrap:!0,textOverflow:"ellipsis"}}})]})}),r&&e.jsx(s.Collapse,{in:l,children:e.jsx(s.Box,{children:A.map(S=>{const K=`${t}-${S.paramOptionIds.join("-")}`,X=k[K]||!1;return e.jsx(le,{routePathInfo:S,checked:d||X,onClick:()=>G(t,S),route:n},K)})})})]},t)}),O.map(t=>{const n=w?.pages[t];return n?e.jsx(s.ListItem,{disablePadding:!0,secondaryAction:e.jsx(s.Chip,{color:"warning",label:"deleted",size:"small"}),children:e.jsxs(s.ListItemButton,{onClick:()=>_(t),dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:d||!!f[t],tabIndex:-1})}),e.jsx(s.ListItemText,{primary:n.slug,secondary:n.locales?.[b]?.title,slotProps:{primary:{noWrap:!0,textOverflow:"ellipsis"},secondary:{noWrap:!0,textOverflow:"ellipsis"}}})]})},t):null})]})}exports.default=ae;
@@ -0,0 +1 @@
1
+ "use strict";const d=require("./components-BmFOXvb0.js"),q=require("@syncedstore/core"),et=require("yjs"),tt=require("@blocklet/pages-kit/utils/data-source"),Q=require("@blocklet/pages-kit/utils/route"),st=require("lodash/cloneDeep"),at=require("@blocklet/sdk/lib/config"),S=require("fs"),g=require("path"),ke=require("@blocklet/pages-kit/utils/common"),nt=require("@blocklet/pages-kit/utils/page-model"),ot=require("@blocklet/pages-kit/utils/property"),Ee=require("@blocklet/sdk/lib/component"),rt=require("@reactivedata/reactive"),Z=require("glob"),it=require("lib0/decoding"),ct=require("lib0/encoding"),lt=require("lodash/debounce"),ut=require("lodash/get"),dt=require("lodash/isEmpty"),pt=require("lodash/set"),ft=require("lodash/union"),we=require("lru-cache"),gt=require("p-limit"),D=require("sequelize"),mt=require("stream/promises"),ht=require("tar"),U=require("ufo"),yt=require("wait-on"),z=require("y-protocols/awareness"),ue=require("y-protocols/sync"),St=require("yaml"),Le=require("./html-xfTPTsl5.js");require("sqlite3");require("@blocklet/pages-kit/types/state");const $=t=>t&&t.__esModule?t:{default:t};function ne(t){if(t&&t.__esModule)return t;const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const s in t)if(s!=="default"){const a=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,a.get?a:{enumerable:!0,get:()=>t[s]})}}return e.default=t,Object.freeze(e)}const M=ne(et),Ae=$(st),A=$(at),de=ne(it),v=ne(ct),Pe=$(lt),je=$(ut),Oe=$(dt),_e=$(pt),It=$(ft),Ne=$(gt),bt=$(yt),B=ne(St),Et=D.DataTypes.sqlite.DATE.parse;D.DataTypes.sqlite.DATE.parse=(t,e)=>typeof t=="number"?new Date(t):Et(t,e);const N=new D.Sequelize({dialect:"sqlite",storage:d.databaseUrl,benchmark:process.env.ENABLE_SEQUELIZE_BENCHMARK==="true",retry:{match:[/SQLITE_BUSY/],name:"query",max:10},logging:process.env.ENABLE_SEQUELIZE_LOGGING==="true"?console.log:!1});N.query("PRAGMA journal_mode = WAL;");N.query("PRAGMA synchronous = normal;");N.query("PRAGMA journal_size_limit = 67108864;");N.query("PRAGMA cache_size = 10000;");process.on("SIGINT",async()=>{await N.close(),process.exit(0)});process.on("SIGTERM",async()=>{await N.close(),process.exit(0)});async function wt(t,e){try{if(t.getDialect()!=="sqlite")return;const[s]=await t.query("SELECT 1");if(!s||s.length===0)return;await t.query("PRAGMA shrink_memory;")}catch(s){if(s.name==="SequelizeConnectionError"||s?.message&&/closed!/.test(s.message))return;console.error("Failed to cleanup SQLite memory",e,s)}}let me=null;me&&clearInterval(me);me=setInterval(async()=>{d.logger.info("Start cleanupSqliteMemory"),await wt(N,d.databaseUrl),d.logger.info("End cleanupSqliteMemory")},60*1e3*10);const At="z8iZiDFg3vkkrPwsiba1TLXy3H9XHzFERsP8o",he="page",ye="trigger-reload-project-resource",De=At,Pt="z2qa7BQdkEb3TwYyEYC1psK6uvmGnHSUHt5RM",jt="z8iZiDFg3vkkrPwsiba1TLXy3H9XHzFERsP8o";class Te extends D.Model{}Te.init({id:{type:D.DataTypes.UUID,allowNull:!1,primaryKey:!0,defaultValue:D.DataTypes.UUIDV4},projectId:{type:D.DataTypes.UUID,allowNull:!1},componentId:{type:D.DataTypes.STRING,allowNull:!1}},{sequelize:N,tableName:"ProjectComponents",timestamps:!1});const Ot="SLUG_INVALID",Y=t=>({error:"slugInvalid",code:Ot,field:"slug",message:t}),Dt={error:"slugRequired",code:"SLUG_REQUIRED",field:"slug",message:()=>"Project slug is required"},Tt={error:"slugAlreadyExists",code:"SLUG_EXISTS",field:"slug",message:t=>`Project slug "${t}" already exists`},Ct=[/\.\./,/<[^>]*>/,/%[0-9a-f]{2}/i,/[<>'"%;{}()\\]/,/\x00/,/\n|\r|\t|\v|\f/,/[^a-zA-Z0-9-_@/\\:]/],Ue=t=>{if(!t)return"";if(t==="/")return"/";const e=U.withoutTrailingSlash(t);return U.withLeadingSlash(e)||"/"},Rt=t=>t.did===jt;class L extends D.Model{static async getProjectByIdOrSlug(e,s){return e?L.findOne({where:{[D.Op.or]:[{id:e},{slug:e}],...s?.createdBy?{createdBy:s.createdBy}:{}}}):null}static async validateProjectSlug({slug:e,projectId:s}){if(e==null)return null;if(e==="")return Dt;const a=e==="/"?"/":U.withoutTrailingSlash(U.withLeadingSlash(e)),n=Ue(a);if(a!=="/"&&a.endsWith("/"))return Y(i=>`Project slug "${i}" cannot end with /`);if(/\/{2,}/.test(a))return Y(i=>`Project slug "${i}" cannot contain consecutive /`);if(/\s/.test(a))return Y(i=>`Project slug "${i}" cannot contain whitespace`);if(Ct.some(i=>i.test(a)))return Y(i=>`Project slug "${i}" contains invalid characters`);if(A.default.components?.filter(i=>i.mountPoint&&!Rt(i)).some(i=>Ue(i.mountPoint)===n))return Y(i=>`Project slug "${i}" conflicts with existing blocklet`);const c=await L.findOne({where:{slug:a}});return c&&c?.id!==s?Tt:null}}L.init({id:{type:D.DataTypes.UUID,defaultValue:D.DataTypes.UUIDV4,primaryKey:!0},name:{type:D.DataTypes.STRING,allowNull:!1},description:D.DataTypes.TEXT,createdAt:D.DataTypes.DATE,updatedAt:D.DataTypes.DATE,createdBy:{type:D.DataTypes.STRING,allowNull:!1},updatedBy:{type:D.DataTypes.STRING,allowNull:!1},slug:D.DataTypes.STRING,icon:D.DataTypes.STRING,pinnedAt:D.DataTypes.DATE,useAllResources:D.DataTypes.BOOLEAN,npmSecret:D.DataTypes.STRING,relatedBlocklets:{type:D.DataTypes.JSON,allowNull:!1,defaultValue:{},get(){const t=this.getDataValue("relatedBlocklets");if(typeof t=="object")return t??{};try{return t?JSON.parse(t):{}}catch(e){return d.logger.error("Failed to parse relatedBlocklets",{error:e,rawValue:t}),{}}},set(t){try{this.setDataValue("relatedBlocklets",t?JSON.stringify(t):"{}")}catch(e){d.logger.error("Failed to set relatedBlocklets",{error:e,value:t}),this.setDataValue("relatedBlocklets","{}")}}},productionState:{type:D.DataTypes.JSON,allowNull:!1,defaultValue:{},get(){const t=this.getDataValue("productionState");if(typeof t=="object")return t??{};try{return t?JSON.parse(t):{}}catch(e){return d.logger.error("Failed to parse productionState",{error:e,rawValue:t}),{}}},set(t){try{this.setDataValue("productionState",t?JSON.stringify(t):"{}")}catch(e){d.logger.error("Failed to set productionState",{error:e,value:t}),this.setDataValue("productionState","{}")}}},meta:{type:D.DataTypes.JSON,allowNull:!0}},{sequelize:N,paranoid:!0,indexes:[{name:"projects_slug_unique",unique:!0,fields:["slug"]},{name:"projects_created_by",fields:["createdBy"]},{name:"projects_pinned_updated_meta_not_null",fields:[{name:"pinnedAt",order:"DESC"},{name:"updatedAt",order:"DESC"}],where:{meta:{[D.Op.ne]:null}}}]});L.hasMany(Te,{foreignKey:"projectId",as:"components"});function ee(t){t.observeDeep(e=>{e.some(s=>s.changes.keys.has("updatedAt")||s.changes.keys.has("publishedAt"))||t.set("updatedAt",new Date().toISOString())})}function Fe(){return S.mkdtempSync(g.join(A.default.env.dataDir,"tmp-"))}function te(t,e,s=[]){return Array.isArray(t)?t.flatMap((a,n)=>te(a,e,[...s,n])):typeof t=="object"?t===null?[]:Object.entries(t).flatMap(([a,n])=>te(n,e,[...s,a])):e(t)?[s]:[]}function k(t){return t.filter(e=>e!=null)}function vt(t){t.pages&&Object.keys(t.pages).forEach(s=>{const a=q.getYjsValue(t.pages[s]);a&&a instanceof M.Map&&ee(a)});const e=q.getYjsValue(t.pages);e&&e instanceof M.Map&&e.observe(s=>{s.changes.keys.forEach((a,n)=>{if(a.action==="add"){const o=q.getYjsValue(t.pages[n]);o&&o instanceof M.Map&&ee(o)}})})}function kt(t){t.routes&&Object.keys(t.routes).forEach(s=>{const a=q.getYjsValue(t.routes?.[s]);a&&a instanceof M.Map&&ee(a)});const e=q.getYjsValue(t.routes);e&&e instanceof M.Map&&e.observe(s=>{s.changes.keys.forEach((a,n)=>{if(a.action==="add"){const o=q.getYjsValue(t.routes?.[n]);o&&o instanceof M.Map&&ee(o)}})})}function Lt(t,e){for(const s of e||Object.keys(t.routes||{})){let a=s,n=[];if(s.includes("-")){const[o,...c]=s.split("-");a=o,n=c||[]}if(t.routes?.[a]!==void 0){t.routes[a].publishedAt=new Date().toISOString();const o=t.routes[a];if(!o||!o.params||o.params.length===0)continue;if(s.includes("-")&&n.length>0){const c=Q.getRouteMetaDataByOptionIds(n,o);c&&(c.publishedAt=new Date().toISOString())}if(!e){const c=Q.generateParamCombinations({basePath:o.path,params:o.params,routeId:o.id,paramsOptions:o.paramsOptions,currentIndex:0,currentParams:[],currentOptionIds:[],result:[]});for(const i of c)i.routeMetaData??={},i.routeMetaData.publishedAt=new Date().toISOString()}}}}function pe({page:t,route:e,state:s,routeId:a,routePathInfo:n}){d.logger.info(`Executing datasource data assembly, routeId: ${a}, routePathInfo: ${JSON.stringify(n)}`);const o={...Ae.default(t),id:a,slug:n?.path??e.path,createdAt:e.createdAt,updatedAt:n?.routeMetaData?.updatedAt??e.updatedAt,publishedAt:n?.routeMetaData?.publishedAt??e.publishedAt,isPublic:(n?.routeMetaData?.isPublic??e.isPublic)&&e.isPublic};for(const c of s.supportedLocales){if(e.dataSource){let i=e.id;n&&(i=n.paramOptionIds.join("-"));const p=e.dataSource.pathDataMappings?.[i]?.dataCache?.[c.locale]??e.dataSource.pathDataMappings?.[i]?.dataCache?.[s.config.defaultLocale||"en"];if(!p)continue;tt.setPageDataSource(o,s,c.locale,p)}n&&n.routeMetaData&&(n.routeMetaData.publishedAt=new Date().toISOString())}return o}["true","1","yes","y"].includes(process.env.USE_FS_CACHE_HTML??"");const _t=60*60*1e3,H=new we.LRUCache({max:300,ttl:_t,ttlResolution:10*1e3,allowStale:!0});function Ut(t,e=[]){let s=0;const a=Array.from(H.keys()),n=t.map(o=>U.withoutTrailingSlash(o));for(const o of a)for(const c of n){if(Le.matchCacheKey(o,{currentPath:c})){H.delete(o),s++,d.logger.info(`[Cache CLEAR] key: ${o}`);break}for(const i of e)if(Le.matchCacheKey(o,{currentPath:`/${i}${c}`})){H.delete(o),s++,d.logger.info(`[Cache CLEAR] key: ${o}`);break}}return d.logger.info(`[Cache CLEAR] cleared ${s} entries for paths:`,n),s}function Mt(){const t=H.size;return H.clear(),d.logger.info(`[Cache CLEAR ALL] cleared ${t} entries`),t}A.default.events.on(A.default.Events.envUpdate,Mt);const{uploadToMediaKit:$t}=require("@blocklet/uploader-server"),Ce=/^\w+(\w|-|\.)+\w+\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm)$/,K=/mediakit:\/\/([a-f0-9]{32}\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm))/i,Me=/mediakit:\/\/([a-f0-9]{32}\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm))/gi,Nt=1e4,Ft=3e4,W=0,fe=1,qt=0,xt=1,Se=A.default,x=g.join(process.env.BLOCKLET_DATA_DIR,"site-state"),Bt=["production","draft"],Gt=["production"];function se(t){return t?.replace(/\//g,"|")||""}function qe(){const t=Se.env.languages?.map(s=>({locale:s.code,name:s.name}))||[],e=t[0]?.locale||"en";return{pageIds:[],pages:{},routeIds:[],routes:{},dataSourceIds:[],dataSources:{},components:{},supportedLocales:t,config:{defaultLocale:e},resources:{}}}class T extends M.Doc{constructor(e){super(),this.options=e,S.existsSync(this.draftYjsFilePath)&&M.applyUpdate(this,S.readFileSync(this.draftYjsFilePath)),this.syncedStore=rt.reactive(q.syncedStore({pages:{},pageIds:[],components:{},supportedLocales:[],config:{},resources:{},routeIds:[],routes:{},dataSourceIds:[],dataSources:{}},this)),this.initObserver(),this.on("update",this.updateHandler),this.awareness=new z.Awareness(this),this.awareness.on("update",this.awarenessChangeHandler),this.ensureDataStructure()}static RELEASE_DELAY=5*60*1e3;static PERIODIC_CHECK_INTERVAL=2*60*60*1e3;static sharedInstances={};static pageUrlMapCache=new we.LRUCache({max:300,ttl:1e3*60*60*24});static periodicCheckTimer;static safeDeleteProjectStateDir(e){if(!e)throw new Error("Should provide project context");try{const s=g.join(x,e),a=g.join(x,`@del-${e}`);S.renameSync(s,a)}catch(s){d.logger.error("Failed to safe delete project state dir:",s)}}static async getProjectIds(){return(await L.findAll({attributes:["id"],raw:!0}))?.map(e=>e.id)}static get projectIds(){return Z.globSync("*/",{cwd:x,ignore:["@del-*","@tmp-*",".*","staging","production","@backup-*","undefined"]})}static get allShared(){return this.projectIds.map(e=>T.shared(e))}static shared(e){if(!e)throw new Error("Should provide project context");let s=T.sharedInstances[e];return s||(s=new T({path:g.join(x,e)}),T.sharedInstances[e]=s,s)}static async getProductionState(e){const s=await L.findByPk(e,{attributes:["productionState"]});if(Oe.default(s?.productionState)){const a=g.join(x,e,"production"),n=await Re(a,{includeResources:!0})??qe();if(!n?.config?.defaultLocale){n.config??={};const o=Se.env.languages?.map(c=>({locale:c.code,name:c.name}))||[];n.config.defaultLocale=o[0]?.locale}return n}return s?.productionState}destroy(){this.cancelRelease(),this.save({flush:!0}),this.conns.forEach((s,a)=>this.closeConn(a)),this.awareness.destroy();const e=g.basename(this.options.path);delete T.sharedInstances[e],super.destroy()}initObserver(){vt(this.syncedStore),kt(this.syncedStore)}get draftYjsFilePath(){return g.join(this.options.path,"draft.yjs")}static async getStateByProjectId(e,s){if(s==="draft"){const a=T.shared(e);return JSON.parse(JSON.stringify(a.syncedStore))}return T.getProductionState(e)}async getState(e){if(e==="draft")return JSON.parse(JSON.stringify(this.syncedStore));const s=g.basename(this.options.path);return T.getProductionState(s)}async setState(e,s){const a=await Ve(s,{exportAssets:!1,includeResources:!0}),n=this.getPublishDir(e);if(S.mkdirSync(g.dirname(n),{recursive:!0}),S.rmSync(n,{force:!0,recursive:!0}),S.renameSync(a,n),e==="production"){const o=g.basename(this.options.path);T.pageUrlMapCache.delete(o);const c=Ae.default(s);await L.update({productionState:c},{where:{id:o}})}}getPublishDir(e){return g.join(this.options.path,e)}syncedStore;conns=new Map;awareness;releaseTimer;awarenessChangeHandler=({added:e,updated:s,removed:a},n)=>{const o=e.concat(s,a);if(n!==null){const p=this.conns.get(n);p&&(e.forEach(y=>{p.add(y)}),a.forEach(y=>{p.delete(y)}))}const c=v.createEncoder();v.writeVarUint(c,fe),v.writeVarUint8Array(c,z.encodeAwarenessUpdate(this.awareness,o));const i=v.toUint8Array(c);this.conns.forEach((p,y)=>this.send(y,i))};updateHandler=e=>{const s=v.createEncoder();v.writeVarUint(s,W),ue.writeUpdate(s,e);const a=v.toUint8Array(s);this.conns.forEach((n,o)=>this.send(o,a))};ensureDataStructure=()=>{const{supportedLocales:e,pages:s,pageIds:a,config:n,routes:o,routeIds:c}=this.syncedStore;{const i=new Set(Object.keys(s));let p=0;for(;p<a.length;){const y=a[p];i.has(y)?(i.delete(y),p++):a.splice(p,1)}}{const i=new Set(Object.keys(o));let p=0;for(;p<c.length;){const y=c[p];i.has(y)?(i.delete(y),p++):c.splice(p,1)}}e.splice(0,e.length),e.push(...Se.env.languages.map(i=>({locale:i.code,name:i.name}))),n.defaultLocale=e[0]?.locale;{let i=0;const p=new Set;for(;i<e.length;){const{locale:y}=e[i];p.has(y)?e.splice(i,1):(i++,p.add(y))}}};send=(e,s)=>{e.readyState!==qt&&e.readyState!==xt&&this.closeConn(e);try{e.send(s,a=>{a&&this.closeConn(e)})}catch{this.closeConn(e)}};closeConn=e=>{if(e.removeAllListeners(),this.conns.has(e)){const s=this.conns.get(e);this.conns.delete(e),s&&z.removeAwarenessStates(this.awareness,Array.from(s),null)}e.close(),this.checkAndScheduleRelease()};checkAndScheduleRelease(){this.conns.size===0&&this.scheduleRelease()}scheduleRelease(){this.cancelRelease();const e=g.basename(this.options.path);this.releaseTimer=setTimeout(()=>{d.logger.info(`[SiteState] releasing instance due to no active connections: ${e}`),this.conns.size===0&&(this.releaseTimer=void 0,this.destroy())},T.RELEASE_DELAY),d.logger.info(`[SiteState] scheduled release for project ${e} in ${T.RELEASE_DELAY/1e3}s`)}cancelRelease(){if(this.releaseTimer){clearTimeout(this.releaseTimer),this.releaseTimer=void 0;const e=g.basename(this.options.path);d.logger.info(`[SiteState] cancelled scheduled release for project ${e}`)}}autoSave=Pe.default(()=>{S.mkdirSync(g.dirname(this.draftYjsFilePath),{recursive:!0}),S.writeFileSync(this.draftYjsFilePath,M.encodeStateAsUpdate(this))},Nt);save=({flush:e=!1}={})=>{this.autoSave(),e&&this.autoSave.flush()};publish=async({mode:e,routes:s})=>{const a=g.basename(this.options.path);await Qe(a);const n=await this.getState("draft"),o=await this.getState("production");await be(n,o,{routes:s,mergeMode:"replace",deleteRoutes:!0,publishMode:e}),o.config.publishedAt=new Date().getTime(),Lt(this.syncedStore,s),await this.setState(e,o),await this.clearPageCacheForRoutes(s,o)};mergeState=async(e,s)=>{const a=JSON.parse(JSON.stringify(s));e.config.fontFamily??={};const n=a.config?.fontFamily,o=e.config?.fontFamily;e.config.fontFamily.title=n?.title||o?.title,e.config.fontFamily.description=n?.description||o?.description,await new Promise((c,i)=>{this.transact(async()=>{try{const p=await be(e,s);c(p)}catch(p){i(p)}})})};clearPageCacheForRoutes=async(e,s)=>{const a=g.basename(this.options.path),o=(await L.findByPk(a))?.slug||a;let c=e;(!c||c.length===0)&&(c=s.pageIds??[]),d.logger.info(`[SiteState] clearing page cache for project ${a}, routes:`,c||[]);const i=s.supportedLocales.map(j=>j.locale),p=[],y=c.filter(j=>s.pageIds?.includes(j));for(const j of y){const E=s.pages[j].slug;o&&o!==a&&(o==="/"?p.push(E):p.push(`/${o}${E}`)),p.push(`/${a}${E}`)}if(p.length>0)try{const j=Ut(p,i);d.logger.info(`[SiteState] cleared ${j} page cache entries for project ${a}, routes:`,c)}catch{}T.pageUrlMapCache.delete(a)};addConnection=e=>{if(this.conns.has(e))return;this.cancelRelease(),e.binaryType="arraybuffer",this.conns.set(e,new Set),e.on("message",n=>this.messageListener(e,new Uint8Array(n)));let s=!0;const a=setInterval(()=>{if(!s)this.conns.has(e)&&this.closeConn(e),clearInterval(a);else if(this.conns.has(e)){s=!1;try{e.ping()}catch{this.closeConn(e),clearInterval(a)}}},Ft);e.on("close",()=>{this.closeConn(e),clearInterval(a)}),e.on("pong",()=>{s=!0});{const n=v.createEncoder();v.writeVarUint(n,W),ue.writeSyncStep1(n,this),this.send(e,v.toUint8Array(n));const o=this.awareness.getStates();if(o.size>0){const c=v.createEncoder();v.writeVarUint(c,fe),v.writeVarUint8Array(c,z.encodeAwarenessUpdate(this.awareness,Array.from(o.keys()))),this.send(e,v.toUint8Array(c))}}};messageListener=(e,s)=>{try{const a=v.createEncoder(),n=de.createDecoder(s),o=de.readVarUint(n);switch(o){case W:v.writeVarUint(a,W),ue.readSyncMessage(n,a,this,null),v.length(a)>1&&(this.ensureDataStructure(),this.send(e,v.toUint8Array(a)));break;case fe:{z.applyAwarenessUpdate(this.awareness,de.readVarUint8Array(n),e);break}default:d.logger.warn(`Unsupported messageType ${o}`)}}catch(a){d.logger.error(a)}this.save()};static async pageUrlMap(e,s){d.logger.info(`[SiteState] get pageUrlMap, mode: ${e}, projectId: ${s}`);let a=[];s?a=[s]:a=await this.getProjectIds();let n={};if(e==="production"&&a?.length){const o=new Map(a?.map(c=>[c,!0])||[]);for(const c of a){const i=T.pageUrlMapCache.get(c);i&&(Object.assign(n,i),o.delete(c))}a=Array.from(o.keys())}if(a?.length){d.logger.info("[SiteState] find project infos from database, projectIds: ",a);const o=10;for(let c=0;c<a.length;c+=o){const i=a.slice(c,c+o);d.logger.info(`[SiteState] processing project batch ${c/o+1}, ids: `,i);const p=await L.findAll({where:{id:{[D.Op.in]:i}}});await Promise.all(p?.map(async y=>{const j=y.id,R=y.slug||j,E={},m=e==="production"&&y?.productionState?y.productionState:await T.getStateByProjectId(y.id,e),f=It.default(A.default.env.languages?.map(w=>w.code)||[],m.supportedLocales?.map(w=>w.locale)||[]),I=(w,l)=>{R&&(E[U.joinURL("/",R,w)]={...l,shouldRedirect:!0,mainPage:!0}),E[U.joinURL("/",j,w)]={...l,shouldRedirect:!0,mainPage:!0};for(const u of f){const h={...l,locale:u};E[U.joinURL("/",u,j,w)]=h,R&&(E[U.joinURL("/",u,R,w)]=h)}};if(e==="draft")for(const w of m.routeIds||[]){const l=m?.routes?.[w];if(!l)continue;if(l.params&&l.params.length>0){const O=Q.generateParamCombinations({basePath:l.path,params:l.params,routeId:l.id,paramsOptions:l.paramsOptions,currentIndex:0,currentParams:[],currentOptionIds:[],result:[]});for(const P of O){const r=P.path,b={projectId:j,projectSlug:R,pageSlug:r,pageId:l.displayTemplateId||"",routeId:w,defaultLocale:f?.[0],locales:f,publishedAt:m.config.publishedAt,isPublic:l.isPublic&&P?.routeMetaData?.isPublic};I(r,b)}}const u=l.path,h={projectId:j,projectSlug:R,pageSlug:u,pageId:l.displayTemplateId||"",routeId:w,defaultLocale:f?.[0],locales:f,publishedAt:m.config.publishedAt,isPublic:l.isPublic};I(u,h)}for(const w of m.pageIds||[]){const l=m.pages[w];if(!l||e==="production"&&!l.isPublic)continue;const u=l.slug,h=y.slug||j,O={projectId:j,projectSlug:h,pageSlug:u,pageId:w,defaultLocale:f?.[0],locales:f,publishedAt:m.config.publishedAt,isPublic:l.isPublic,templateConfig:l.templateConfig};I(u,O)}e==="production"&&T.pageUrlMapCache.set(j,E),n={...n,...E}}))}}return d.logger.info("[SiteState] success get pageUrlMap"),n}getDocumentSize(){return M.encodeStateAsUpdate(this).byteLength}static getInstancesSizeInfo(){const e=[];for(const[s,a]of Object.entries(T.sharedInstances)){const n=a.getDocumentSize();e.push({projectId:s,sizeInBytes:n,sizeInMB:`${(n/(1024*1024)).toFixed(2)} MB`,activeConnections:a.conns.size})}return e}static startPeriodicCheck(){this.periodicCheckTimer||(this.periodicCheckTimer=setInterval(()=>{this.performPeriodicCheck()},this.PERIODIC_CHECK_INTERVAL),d.logger.info(`[SiteState] periodic check started, interval: ${this.PERIODIC_CHECK_INTERVAL/(60*60*1e3)} hours`))}static stopPeriodicCheck(){this.periodicCheckTimer&&(clearInterval(this.periodicCheckTimer),this.periodicCheckTimer=void 0,d.logger.info("[SiteState] periodic check stopped"))}static performPeriodicCheck(){const e=Object.keys(T.sharedInstances).length,s=[],a=[];for(const[n,o]of Object.entries(T.sharedInstances))o.conns.size===0?s.push({projectId:n,instance:o}):a.push({projectId:n,connections:o.conns.size});if(d.logger.info(`[SiteState] periodic check summary: total instances: ${e}, with connections: ${a.length}, without connections: ${s.length}`),s.length>0){d.logger.info(`[SiteState] releasing ${s.length} instances without connections:`,s.map(o=>o.projectId));let n=0;for(const{projectId:o,instance:c}of s)try{d.logger.info(`[SiteState] releasing instance due to periodic check: ${o}`),c.destroy(),n++}catch(i){d.logger.error(`[SiteState] failed to release instance ${o} during periodic check:`,i)}d.logger.info(`[SiteState] periodic check completed: ${n}/${s.length} instances released successfully`)}else e>0?d.logger.debug("[SiteState] periodic check: all instances have active connections"):d.logger.debug("[SiteState] periodic check: no instances exist")}}async function Vt(t,e,s){if(!t||!S.existsSync(t)||!S.lstatSync(t).isFile())return null;let a=s[t];return a||(a=(async()=>{try{return(await $t({filePath:t,fileName:e}))?.data?.filename}catch(n){return d.logger.error(`Failed to upload asset ${t}:`,n),null}})(),s[t]=a),a}const xe=async(t,e)=>{const s=g.basename(t),a=await Ee.call({name:De,path:U.joinURL("/uploads",s),responseType:"stream",method:"GET"});if(a.status>=200&&a.status<400){const n=S.createWriteStream(e);await mt.pipeline(a.data,n)}else throw new Error(`download asset failed ${a.status}`)},Be=async(t,e)=>{await Promise.all(t.map(async s=>{try{await xe(s,g.join(e,g.basename(s)))}catch(a){d.logger.error(`Failed to export assets: ${s}, ${a}`)}}))};function Ge(t){return Ce.test(t)?[t]:K.test(t)?(Me.lastIndex=0,Array.from(t.matchAll(Me)).map(s=>s[1]).filter(s=>!!s)):[]}async function X(t,e,s){const{getFilename:a,exportAssets:n}=s,o=g.join(e,a(t));if(S.mkdirSync(g.dirname(o),{recursive:!0}),S.writeFileSync(o,B.stringify(t)),n){const i=te(t,p=>typeof p=="string"&&(Ce.test(p)||K.test(p))).map(p=>{const y=je.default(t,p);return Ge(y)}).flat().filter(Boolean);await Be(i,g.dirname(o))}}const Ie=new we.LRUCache({max:100,ttl:1*60*1e3});async function $e(t,e,s){const a=te(t,i=>typeof i=="string"&&(Ce.test(i)||K.test(i))),n=Ne.default(2),o=a.map(i=>n(async()=>{try{const p=je.default(t,i),y=Ge(p);for(const j of y){const R=g.basename(j),E=s.getFilePath(j,i),m=E?`${E}:${R}`:R,f=Ie.get(m);if(f){K.test(p)||_e.default(t,i,f);return}const I=await Vt(E,R,e);I&&(K.test(p)||_e.default(t,i,I),Ie.set(m,I))}}catch(p){d.logger.error(`Failed to process upload for path ${i.join(".")}:`,p.message||p.reason)}})),c=await Promise.allSettled(o);s.onFinish?.(c)}async function Ve(t,{exportAssets:e,pageIds:s="all",componentIds:a="all",rawConfig:n,includeResources:o=!1,routeIds:c="all"}={}){const i=s==="all"?t.pageIds:s,p=ot.getComponentDependencies({state:t,pageIds:i,componentIds:a==="all"?Object.keys(t.components):a});Object.entries(t.components).forEach(([r,b])=>{b.data?.renderer?.type==="component-template"&&p.push(r)});const y=c==="all"?t.routeIds:c,j=r=>({id:r.id,name:r.name,isTemplateSection:r.isTemplateSection??!1,templateDescription:r.templateDescription,component:r.component,config:r.config,visibility:r.visibility,sections:r?.sectionIds?k(r?.sectionIds?.map(b=>{const C=r.sections?.[b];return C&&j(C)})):void 0}),R=(r,b)=>({id:r.id,createdAt:r.createdAt,updatedAt:r.updatedAt,publishedAt:r.publishedAt,isPublic:r.isPublic??!0,templateConfig:r.templateConfig,meta:r.locales?.[b]??{},sections:k(r.sectionIds.map(C=>{const F=r.sections[C];return F&&j(F)})),dataSource:Object.fromEntries(Object.entries(r.dataSource||{}).map(([C,F])=>[C,F?.[b]??{}]))}),E=r=>({id:r.id,createdAt:r.createdAt,updatedAt:r.updatedAt,publishedAt:r.publishedAt,path:r.path,handler:r.handler,isPublic:r.isPublic??!0,params:r.params??[],enabledGenerate:r.enabledGenerate??!1,displayTemplateId:r.displayTemplateId,dataSource:r.dataSource}),m=k(y.map(r=>{const b=t.routes[r];return b&&E(b)})),f=k(t.supportedLocales.map(r=>r.locale).flatMap(r=>i.map(b=>{const C=t.pages[b];return C&&{locale:r,slug:C.slug,page:R(C,r)}}))),I=Fe(),w=g.join(I,"pages");S.mkdirSync(w,{recursive:!0});const l=g.join(I,"components");S.mkdirSync(l,{recursive:!0});const u=g.join(I,"routes");S.mkdirSync(u,{recursive:!0});for(const{locale:r,slug:b,page:C}of f)await X(C,w,{getFilename:()=>`${se(b)||"index"}.${r}.yml`,exportAssets:e});for(const r of m)await X(r,u,{getFilename:()=>`${se(r.path)||"index"}.yml`,exportAssets:e});for(const r of p){const b=t.components[r]?.data;b&&await X(b,l,{getFilename:C=>`${C.name||"unnamed"}.${C.id}.yml`,exportAssets:e})}const h=g.join(I,".blocklet/pages/pages.config.yml");S.mkdirSync(g.dirname(h),{recursive:!0});const O={pages:k(i.map(r=>{const b=t.pages[r];return b&&{id:r,slug:b.slug}})),routes:k(y.map(r=>{const b=t.routes[r];return b&&{id:r,path:b.path}})),components:k(p.map(r=>{const b=t.components[r]?.data;return b&&{id:r,name:b.name}})),...o?{resources:{components:k(Object.keys(t.resources?.components||{}).filter(r=>p.includes(r)).map(r=>({id:r,name:t.resources?.components?.[r]?.component?.name})))}}:{},supportedLocales:t.supportedLocales,config:t.config};S.writeFileSync(h,B.stringify(O));const P=g.join(I,"config.source.json");if(n&&S.writeFileSync(P,JSON.stringify(n)),o){const r=g.join(I,"resources"),b=g.join(r,"components");S.mkdirSync(b,{recursive:!0});for(const G of Object.keys(t?.resources?.components??{}).filter(_=>p.includes(_))){const _=t.resources?.components?.[G]?.component;_&&await X(_,b,{getFilename:V=>`${V.name||"unnamed"}.${V.id}.yml`,exportAssets:e})}const C=g.join(I,"chunks");S.mkdirSync(C,{recursive:!0});const F=zt();for(const G of Object.keys(t?.resources?.components??{}).filter(_=>p.includes(_))){const _=t.resources?.components?.[G]?.component;if(_&&_.renderer?.type==="react-component"){const V=_.renderer?.chunks??[];if(V?.length>0)for(const ce of V){const ve=g.join(C,ce),le=F?.[ce];try{le&&S.existsSync(le)&&!S.existsSync(ve)&&S.copyFileSync(le,ve)}catch(Ze){d.logger.error(`copy chunk ${ce} error`,Ze.message)}}}}}return I}async function Re(t,{importAssets:e,includeResources:s}={}){if(!S.existsSync(t))return null;let a,n=!1;try{S.lstatSync(t).isDirectory()?a=t:/\.(tgz|gz|tar)$/.test(t)&&(n=!0,a=Fe(),await ht.x({file:t,C:a}));const o=Z.globSync("**/.blocklet/pages/pages.config.yml",{cwd:a,absolute:!0}).at(0),c=o&&g.join(g.dirname(o),"../../pages"),i=o&&g.join(g.dirname(o),"../../components"),p=o&&g.join(g.dirname(o),"../../routes");if(!o)return null;const y=B.parse(S.readFileSync(o).toString()),j=(l,u,h)=>{let O=g.join(l,`${u}${h?`.${h}`:""}.yml`);return(!S.existsSync(O)||!S.lstatSync(O).isFile())&&(O=g.join(l,u,`index${h?`.${h}`:""}.yml`),!S.existsSync(O)||!S.lstatSync(O))?null:B.parse(S.readFileSync(O).toString())},R=(l,u)=>{try{const h=Z.globSync(`*.${u}.yml`,{cwd:l,absolute:!0})[0];return h?B.parse(S.readFileSync(h).toString()):null}catch(h){d.logger.error("parse component error",h)}return null},E=(l,u)=>{let h=g.join(l,`${u}.yml`);return(!S.existsSync(h)||!S.lstatSync(h).isFile())&&(h=g.join(l,u,"index.yml"),!S.existsSync(h)||!S.lstatSync(h))?null:B.parse(S.readFileSync(h).toString())},m=k(y.pages.map(({slug:l})=>{const u=k(y.supportedLocales.map(({locale:P})=>{const r=c?j(c,se(l),P):void 0;if(r)return{locale:P,page:r};const b=c?j(c,l,P):void 0;return b&&{locale:P,page:b}})),h=u[0]?.page;if(!h)return null;const O=h.sections.map(nt.unzipSection);return{id:h.id||ke.nextId(),createdAt:h.createdAt,updatedAt:h.updatedAt,publishedAt:h.publishedAt,isPublic:h.isPublic??!0,templateConfig:h.templateConfig,slug:l,sections:Object.fromEntries(O.map(P=>[P.id,P])),sectionIds:O.map(P=>P.id),locales:Object.fromEntries(u.map(({locale:P,page:r})=>[P,r.meta])),dataSource:h.dataSource?Object.fromEntries([...new Set(u.flatMap(({page:P})=>Object.keys(P.dataSource??{})))].map(P=>[P,Object.fromEntries(u.map(({locale:r,page:b})=>{const C=b.dataSource?.[P];return[r,C||{}]}))])):Object.fromEntries([...new Set(u.flatMap(({page:P})=>P.sections.map(r=>r.id)))].map(P=>[P,Object.fromEntries(u.map(({locale:r,page:b})=>{const C=b.dataSource?.[P];if(C)return[r,C];const F=b.sections.find(G=>G.id===P);return[r,F?.properties||{}]}))]))}})),f=k(y?.routes?.map(({path:l})=>{const u=p?E(p,se(l)):void 0;return{...u,id:u?.id||ke.nextId(),createdAt:u?.createdAt??new Date().toISOString(),updatedAt:u?.updatedAt??new Date().toISOString(),publishedAt:new Date(0).toISOString(),path:u?.path??`/${u?.id}`,params:u?.params,handler:u?.handler??"Pages Kit",isPublic:u?.isPublic??!0,enabledGenerate:u?.enabledGenerate??!1,displayTemplateId:u?.displayTemplateId??void 0,dataSource:u?.dataSource??{}}})??[]),I=i?k(y.components?.map(({id:l})=>R(i,l))??[]):[];if(e){const l=(...u)=>{d.logger.info(`[${n?g.basename(t):g.basename(g.join(t,"../../../../"))}] importAssets:`,...u)};try{l("wait image-bin api ready"),await bt.default({resources:[`${Ee.getComponentWebEndpoint(d.IMAGE_BIN_NAME)}/api/sdk/uploads`],validateStatus:O=>O>=200&&O<=500}),l("image-bin api is ready");const u={},h={};l("start to upload assets"),await Promise.allSettled([$e(I,u,{getFilePath:O=>i&&g.join(i,O),onFinish:O=>{l(`upload ${O.length} component assets`)}}),$e(m,h,{getFilePath:(O,P)=>{const r=je.default(m,P.slice(0,1));return c&&g.join(c,g.dirname(r.slug),O)},onFinish:O=>{l(`upload ${O.length} page assets`)}})]),l("upload assets done"),Ie.clear(),global.gc&&global.gc()}catch(u){l("Error during asset import:",u)}}const w={};if(s){const l=o&&g.join(g.dirname(o),"../../resources/components"),u=k(y.resources?.components?.map(({id:h})=>R(l,h))??[]);u.length>0&&(w.components=Object.fromEntries(u.map((h,O)=>[h.id,{index:O,component:h}])))}return{supportedLocales:y.supportedLocales,pageIds:m.map(l=>l.id),components:Object.fromEntries(I.map((l,u)=>[l.id,{index:u,data:l}])),pages:Object.fromEntries(m.map(l=>[l.id,l])),config:y.config||{},resources:w,routeIds:f.map(l=>l.id),routes:Object.fromEntries(f.map(l=>[l.id,l])),dataSourceIds:[],dataSources:{}}}finally{n&&a&&S.rmSync(a,{force:!0,recursive:!0})}}async function be(t,e,{routes:s,mergeMode:a="byUpdateTime",deleteRoutes:n=!1,publishMode:o=void 0}={}){try{o&&d.clearPreloadComponentsCacheByMode(o)}catch(E){d.logger.error("clear preload page cache error",{error:E})}const{pages:c,pageIds:i,routeIds:p,routes:y,supportedLocales:j}=t;if(o==="production"){let E=s??[],m=null;for(const f of p??[]){const I=y?.[f];if(I?.params&&I?.params.length>0&&I?.paramsOptions&&I?.paramsOptions.length>0){const w=Q.generateParamCombinations({basePath:I.path,params:I.params,routeId:I.id,paramsOptions:I.paramsOptions,currentIndex:0,currentParams:[],currentOptionIds:[],result:[]}),l=Object.fromEntries(w.map(u=>[`${f}-${u.paramOptionIds.join("-")}`,u]));m={...m||{},...l},s||(E=[...E,...w.map(u=>`${f}-${u.paramOptionIds.join("-")}`)])}else s||E.push(f)}d.logger.info("routeIds to be published: ",E);for(const f of E){let I=f;if(I.includes("-")){const[u]=I.split("-");I=u}const w=y?.[I];if(!w){const u=e.pageIds.indexOf(I);u!==-1&&n&&(e.pageIds.splice(u,1),delete e.pages[I]);for(const h of e.pageIds)h.includes(`${I}-`)&&(e.pageIds.splice(e.pageIds.indexOf(h),1),delete e.pages[h]);d.logger.info("delete main route page",I);continue}if(f.includes("-")&&!m?.[f]){const u=e.pageIds.indexOf(f);u!==-1&&n&&(e.pageIds.splice(u,1),delete e.pages[f]),d.logger.info("delete page",f);continue}if(!w.displayTemplateId){d.logger.info("no display template",f);continue}const l=c[w.displayTemplateId];if(!l){d.logger.info("no template page",f);continue}if(e.pageIds.includes(f)){if(d.logger.info("has need update page",f),a==="replace")e.pages[f]=pe({page:l,route:w,state:t,routeId:f,routePathInfo:m?.[f]}),d.logger.info("replace page",f);else if(a==="byUpdateTime"){const u=e.pages[w.id];(!u||w.updatedAt&&w.updatedAt>u.updatedAt)&&(e.pages[f]=pe({page:l,route:w,state:t,routeId:f,routePathInfo:m?.[f]}),d.logger.info("replace page by update time",f))}}else e.pageIds.push(f),e.pages[f]=pe({page:l,route:w,state:t,routeId:f,routePathInfo:m?.[f]}),d.logger.info("add page",f)}if(n&&!s)for(const f of e.pageIds)E?.includes(f)||(delete e.pages[f],d.logger.info("delete page",f)),e.pageIds=[...e.pageIds].filter(I=>E?.includes(I))}else{for(const E of i){const m=c[E];if(m)if(e.pageIds.includes(m.id)){if(a==="replace")e.pages[m.id]=m;else if(a==="byUpdateTime"){const f=e.pages[m.id];(!f||m.updatedAt&&m.updatedAt>f.updatedAt)&&(e.pages[m.id]=m)}}else e.pageIds.push(m.id),e.pages[m.id]=m}for(const E of p){const m=y[E];if(m)if(e.routeIds.includes(m.id)){if(a==="replace")e.routes[m.id]=m;else if(a==="byUpdateTime"){const f=e.routes[m.id];(!f||m.updatedAt&&m.updatedAt>f.updatedAt)&&(e.routes[m.id]=m)}}else e.routeIds.push(m.id),e.routes[m.id]=m}}if(e.supportedLocales.splice(0,e.supportedLocales.length),e.supportedLocales.push(...Ae.default(j)),n)for(const E of Object.keys(e.components))delete e.components[E];let R=JSON.parse(JSON.stringify(t.components));R=Object.fromEntries(await Promise.all(Object.entries(R).map(async([E,m])=>{const f=await ze(m?.data);return[E,{...m,data:f}]}))),Object.assign(e.components,R),Object.assign(e.config,JSON.parse(JSON.stringify(t.config))),Oe.default(t.resources.components)||(e.resources.components=JSON.parse(JSON.stringify(t.resources.components||{})))}const ze=d.memoizeWithFs(async t=>{if(!Oe.default(t?.properties))return t;if(t?.renderer?.type==="react-component"){const{script:e,PROPERTIES_SCHEMA:s}=t?.renderer||{};if(s||e&&e.includes("PROPERTIES_SCHEMA"))try{const a=await d.getExportSchemaValueFromCode(e??"","PROPERTIES_SCHEMA",t.id,s);a&&a.length>0&&t&&(t.properties={},a.forEach((n,o)=>{t?.properties&&(t.properties[n.id]={index:o,data:n})}))}catch(a){d.logger.error("getPropertiesFromCode error",{componentId:t.id,name:t.name},{error:a})}}return t},{subdir:"getPropertiesFromCode"});let ae,J,oe,re;const Ye=()=>Ee.getResources({types:[{did:De,type:he},{did:Pt,type:he}]}),zt=()=>{const t=Ye(),e={};return t.forEach(s=>{const a=Z.globSync("**/.blocklet/pages/pages.config.yml",{cwd:s.path,absolute:!0}).at(0),n=a&&g.join(g.dirname(a),"../../chunks");if(n&&S.existsSync(n)){const o=S.readdirSync(n);for(const c of o)e[c]=g.join(n,c)}}),e};function He(){return ae=(async()=>{const t=Ye();J=(await Promise.all(t.map(async s=>{const a=s.path?await Re(s.path,{importAssets:!1}):void 0;return a?{blockletId:s.did,state:a,blockletTitle:s.title}:void 0}))).filter(s=>!!s),oe=J.reduce((s,a)=>Object.assign(s,Object.fromEntries(Object.values(a.state.pages).map(n=>n?[n?.id,{page:n,blockletId:a.blockletId}]:[]))),{});const e=J.reduce((s,a)=>Object.assign(s,Object.fromEntries(Object.values(a.state.components).map(n=>[n.data.id,{blockletId:a.blockletId,component:n.data}]))),{});re=Object.fromEntries(await Promise.all(Object.entries(e).map(async([s,a])=>{const n=await ze(a.component);return[s,{...a,component:n}]})))})(),ae}function Ke(t){const e=Pe.default(async()=>{await He().catch(s=>{d.logger.error("load resource states error",{error:s})}),await t?.({states:J,pages:oe,components:re})},3e3,{leading:!1,trailing:!0});return e(),A.default.events.on(A.default.Events.componentAdded,e),A.default.events.on(A.default.Events.componentRemoved,e),A.default.events.on(A.default.Events.componentStarted,e),A.default.events.on(A.default.Events.componentStopped,e),A.default.events.on(A.default.Events.componentUpdated,e),A.default.events.on(ye,e),()=>{A.default.events.off(A.default.Events.componentAdded,e),A.default.events.off(A.default.Events.componentRemoved,e),A.default.events.off(A.default.Events.componentStarted,e),A.default.events.off(A.default.Events.componentStopped,e),A.default.events.off(A.default.Events.componentUpdated,e),A.default.events.off(ye,e)}}const Je=Symbol.for("GLOBAL_RESOURCE_STATES_LISTENER_KEY"),We=Symbol.for("GLOBAL_ENV_UPDATE_LISTENER_KEY"),ie=globalThis;ie[Je]?.();ie[Je]=Ke(async({pages:t,components:e})=>{const s=await T.getProjectIds();d.logger.info(`start update resource states projects(${s.length})`,s);const a=Ne.default(10);await Promise.race([new Promise(n=>{setTimeout(()=>{n({})},30*1e3)}),Promise.all(s.map(n=>a(async()=>{Xe({projectId:n,pages:t,components:e})})))]).catch(n=>{d.logger.error("update resource states failed:",n)})});ie[We]?.();ie[We]=()=>{const t=()=>{T.pageUrlMapCache.clear(),d.logger.info("[Cache CLEAR ALL] clear all page url map cache by env update")};return A.default.events.on(A.default.Events.envUpdate,t),()=>{A.default.events.off(A.default.Events.envUpdate,t)}};T.startPeriodicCheck();process.on("beforeExit",()=>{T.stopPeriodicCheck()});process.on("SIGINT",()=>{T.stopPeriodicCheck(),process.exit(0)});process.on("SIGTERM",()=>{T.stopPeriodicCheck(),process.exit(0)});async function Xe({projectId:t,pages:e,components:s}){const a=T.sharedInstances[t];if(!a){d.logger.info(`projectId: ${t} not found in sharedInstances`);return}if(a.syncedStore.resources.pages=e,(await L.findByPk(t))?.useAllResources)a.syncedStore.resources.components=s;else{const c=(await Te.findAll({where:{projectId:t}})).map(p=>p.componentId),i=Object.fromEntries(Object.entries(s||{}).filter(([p])=>c.includes(p)));a.syncedStore.resources.components=i}d.logger.info(`update [${t}] resource states:`,{pages:Object.keys(a.syncedStore.resources.pages||{}).length,components:Object.keys(a.syncedStore.resources.components||{}).length})}const ge=new Map;async function Qe(t){if(!ge.has(t)){const e=Pe.default(async s=>Xe({projectId:s,pages:oe,components:re}),3e3);ge.set(t,e)}return ge.get(t)(t)}async function Yt(){d.logger.info("trigger reload all project resource"),A.default.events.emit(ye)}async function Ht({ensureLoaded:t=!0}={}){return t&&(ae??=He(),await ae),{states:J,pages:oe,components:re}}exports.COMPONENT_DID=De;exports.PUBLISH_MODES=Gt;exports.Project=L;exports.RESOURCE_TYPE=he;exports.SITE_STATE_PATH=x;exports.STATE_MODES=Bt;exports.SiteState=T;exports.downloadAsset=xe;exports.downloadAssets=Be;exports.fromPackage=Re;exports.getDefaultState=qe;exports.getResourceStates=Ht;exports.initPackResourceStates=Ke;exports.mergeState=be;exports.toPackage=Ve;exports.triggerReloadAllProjectResource=Yt;exports.updateResourceStatesByProjectId=Qe;
@@ -0,0 +1 @@
1
+ "use strict";const ge=require("react/jsx-runtime"),D=require("ufo"),Se=require("@blocklet/js-sdk"),Ie=require("lodash/isEmpty"),Pe=require("yaml"),ye=require("@arcblock/ux/lib/Locale/context"),ee=require("@blocklet/pages-kit/hooks/use-deep-compare-memo"),J=require("@blocklet/pages-kit/utils/common"),Ce=require("@blocklet/pages-kit/utils/page-model");require("@mui/material");const te=require("@syncedstore/core"),we=require("@syncedstore/react"),he=require("ahooks"),A=require("immer"),be=require("lodash/cloneDeep"),ve=require("lodash/debounce"),S=require("react"),oe=require("react-router-dom"),Oe=require("y-indexeddb"),xe=require("y-websocket"),ke=require("yjs");require("@blocklet/pages-kit/types");const G=o=>o&&o.__esModule?o:{default:o};function Ee(o){if(o&&o.__esModule)return o;const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const g in o)if(g!=="default"){const f=Object.getOwnPropertyDescriptor(o,g);Object.defineProperty(n,g,f.get?f:{enumerable:!0,get:()=>o[g]})}}return n.default=o,Object.freeze(n)}const Te=G(Ie),je=Ee(Pe),Me=G(te),R=G(be),ne=G(ve);function ce(){const{pathname:o}=window.location,g=o.match(/\/admin\/(maker|previewer)\/([^/]+)/)?.[2],f=window.__PROJECT_ID__;if(!g&&!f)throw new Error("Unable to get projectId from pathname");return g||f}function Ne(o){return`${o}:pages:version`}function Le(o,n){return n==="yaml"?Te.default(o)?"":je.stringify(o,{indent:2}):n==="json"?JSON.parse(JSON.stringify(o||{})):n==="array"?JSON.parse(JSON.stringify(o||[])):o}const K=window.blocklet?.prefix||"/",z=Se.createAxios({timeout:200*1e3}),_e=window.location.protocol==="https:"?"wss":"ws",Ae=o=>D.joinURL(`${_e}://${window.location.hostname}`,K,`api/${o}/ws/pages`),Re="z8ia1mAXo8ZE7ytGF36L5uBf9kD2kenhqFGp9";blocklet?.componentMountPoints.find(o=>o.did===Re)?.mountPoint||D.joinURL(K,"/image-bin");function De(o){return o&&!/^(https?:\/\/|\/)/.test(o)?window.location.origin+D.joinURL(K,"uploads",o):o}const $e=window.innerWidth<=750;function qe(o,n,g){if(!o||/\.gif/.test(o))return o;const f=($e?n/1.5:n)*(g==="quality"?1.5:1);return Je(o,{imageFilter:"resize",w:f,f:"webp"})}function Je(o,n){return!o||!n?o:D.withQuery(o,n)}async function Ue(o){return z.get(`/api/projects/${o}`).then(n=>n.data)}async function Be(o){return z.post(`/api/projects/${o.id}/update`,o).then(n=>n.data)}const X="@COMPONENT-TEMPLATE-",W=o=>`${X}${o}`,F=o=>o.startsWith(X),Z=o=>F(o)?o.slice(X.length):null;function re(o,n={}){return n[o.id]=o,o.sectionIds&&o.sections&&o.sectionIds.forEach(g=>{const f=o.sections?.[g];f&&re(f,n)}),n}function se(o,n){const g=W(o.id),f=n.section,O=re(f);n.dataSource??={};const w=n.dataSource;return{id:g,createdAt:o.createdAt,updatedAt:o.updatedAt,publishedAt:o.updatedAt,slug:o.id,sections:O,sectionIds:[f.id],isPublic:!0,templateConfig:{isTemplate:!0},locales:{},dataSource:w}}const Fe=500,ie=S.createContext(null);function Ge({url:o,name:n,children:g,waitingSynced:f}){const[O,w]=S.useState(!1),{locale:L}=ye.useLocaleContext(),b=Q(),j=`${b}:MakerLocalState`,x=`${b}:${n}`,[v,P]=he.useLocalStorageState(j,{defaultValue:{},listenStorageChange:!0}),$=S.useRef(v);$.current=v;const q=S.useMemo(()=>Me.default({dataSourceIds:[],dataSources:{},pages:{},pageIds:[],routes:{},routeIds:[],components:{},supportedLocales:[],config:{},resources:{}}),[]),C=S.useMemo(()=>te.getYjsDoc(q),[q]);S.useMemo(()=>new Oe.IndexeddbPersistence(x,C),[x,C]);const h=S.useMemo(()=>new xe.WebsocketProvider(o,x,C,{params:{},resyncInterval:5*60*1e3}),[o,x,C]),B=S.useCallback(()=>{h&&(h.wsconnected?(h.disconnect(),setTimeout(()=>h.connect(),100)):h.connect())},[h]),e=S.useMemo(()=>new ke.UndoManager([C.getArray("pageIds"),C.getMap("pages"),C.getArray("supportedLocales"),C.getMap("config"),C.getMap("dataSources"),C.getArray("dataSourceIds"),C.getArray("routeIds"),C.getMap("routes")],{doc:C}),[C]),[t,c]=S.useState(null),[r,d]=S.useState(!1),[i,l]=S.useState(void 0),m=S.useCallback(async()=>{if(b){d(!0);try{const s=await Ue(b);c(s)}catch(s){console.error("Failed to fetch project:",s)}finally{d(!1)}}},[b]),u=S.useCallback(async(s,a)=>{if(l(void 0),!!b){a?.optimisticUpdate&&t&&c(I=>({...I,...s}));try{const I=await Be({...s});c(I)}catch(I){console.error("Failed to update project:",I),a?.optimisticUpdate&&c(t),l(I?.response?.data)}}},[b,t]);S.useEffect(()=>{b&&m()},[b,m]);const p=ee.useDeepCompareMemo(()=>({doc:C,state:q,localState:{...v,currentLocale:L},setLocalState:s=>P(typeof s=="function"?a=>s(a??{}):s),undoManager:e,projectState:{project:t,isLoadingProject:r,error:i},updateProject:u,forceSync:B}),[C,q,v,P,e,t,r,u,i,L,B]);return S.useEffect(()=>{e.on("stack-item-added",({stackItem:s})=>{const{currentPageId:a,currentLocale:I,pages:y}=$.current;s.meta.set("localState",{currentPageId:a,currentLocale:I,pages:y})}),e.on("stack-item-popped",({stackItem:s})=>{const a=s.meta.get("localState");a&&P(I=>({...I,...a}))})},[e,P]),S.useEffect(()=>{h.awareness.setLocalState(v)},[h,v]),S.useEffect(()=>{h.once("synced",()=>{w(!0)});let s=0,a=null;const I=3,y=5e3,M=15e3,k=()=>{s=0,P(T=>({...T,networkStatus:void 0}))},E=()=>{P(T=>({...T,networkStatus:"offline"}))},N=ne.default(({status:T})=>{if(T==="connected")k(),a&&(clearTimeout(a),a=null);else if(T==="disconnected"){if(s++,!a){const pe=Date.now();let Y=0;const fe=Math.ceil(M/y),H=()=>{Y++;const me=Date.now()-pe;if(h.wsconnected){k();return}if(me>=M||Y>=fe){E();return}a=setTimeout(H,y)};a=setTimeout(H,y)}s>=I&&E()}},Fe),_=()=>{h.wsconnected||h.connect(),k()},U=()=>{E()};return h.on("status",N),window.addEventListener("online",_),window.addEventListener("offline",U),h.wsconnected&&k(),()=>{a&&clearTimeout(a),h.off("status",N),window.removeEventListener("online",_),window.removeEventListener("offline",U)}},[h,P]),f&&!O?null:ge.jsx(ie.Provider,{value:p,children:g})}const ae=()=>{const o=S.useContext(ie);if(!o)throw new Error("Context is null");const n=we.useSyncedStore(o.state),{setLocalState:g,localState:f}=o,O=oe.useNavigate(),w=Q(),L=S.useRef({}),b=S.useCallback(e=>{const t=n.components[e]?.data;return!t||t.renderer?.type!=="component-template"?void 0:(L.current[e]||(L.current[e]={page:se(t,t.renderer)}),L.current[e]?.page)},[n.components]),j=S.useCallback(e=>{const t=n.components[e]?.data;if(!t||t.renderer?.type!=="component-template")return;const c=b(e);if(c)return{componentId:e,component:t,renderer:t.renderer,page:c}},[b,n.components]),x=S.useCallback(e=>{const t=n.pages[e];if(t)return{kind:"page",pageId:e,page:t};if(!F(e))return;const c=Z(e);if(!c)return;const r=j(c);if(r)return{kind:"component-template",pageId:e,page:r.page,componentId:r.componentId,component:r.component,renderer:r.renderer}},[j,n.pages]),v=S.useCallback(e=>{const t=x(e);if(!t)throw new Error(`Page ${e} is not exists`);return t},[x]),P=ee.useDeepCompareMemo(()=>({get currentPage(){const{localState:{currentPageId:e,currentComponentId:t}}=o;if(e){const c=x(e);if(c)return c.page}if(t){const c=j(t);if(c)return c.page}},get currentSection(){const{localState:{currentPageId:e,...t}}=o,{currentPage:c}=this;if(!c||!e)return;const r=t.pages?.[e]?.currentSectionId;if(r)return c.sections?.[r]??this.currentPageModel?.getComponentById(r)?.model},get currentSectionProperties(){const{localState:{currentPageId:e,...t}}=o,{currentPage:c}=this;if(!c||!e)return;const r=t.pages?.[e]?.currentSectionId;if(!r)return;const d=c.dataSource?.[r];if(!d)return;const{currentLocale:i}=this.currentLocaleMap;return i?d[i]:void 0},get currentSectionPropertiesWithFallback(){const{localState:{currentPageId:e,...t}}=o,{currentPage:c}=this;if(!c||!e)return;const r=t.pages?.[e]?.currentSectionId;if(!r)return;const d=c.dataSource?.[r];if(!d)return;const{currentLocale:i,defaultLocale:l,fallbackLocale:m}=this.currentLocaleMap;if(i&&d[i])return d[i];if(l&&d[l])return d[l];if(m&&d[m])return d[m]},get currentLocaleMap(){const{localState:{currentLocale:e},state:{supportedLocales:t,config:{defaultLocale:c}}}=o;return{currentLocale:e,defaultLocale:c,fallbackLocale:t?.[0]?.locale??"en"}},get currentRoute(){const{localState:{currentRouteId:e}}=o;return e?n.routes?.[e]:void 0},get currentPageModel(){const e=this.currentPage??null;if(e)return Ce.getPageTemplateModel(e,!1)}}),[f,n]),$=S.useMemo(()=>{if(f.currentPageId){const e=x(f.currentPageId);if(e?.kind==="component-template")return e}if(f.currentComponentId){const e=j(f.currentComponentId);if(e)return{kind:"component-template",pageId:W(e.componentId),page:e.page,componentId:e.componentId,component:e.component,renderer:e.renderer}}},[f.currentPageId,f.currentComponentId,x,j]),q=S.useCallback(()=>$?.kind==="component-template"?$:void 0,[$]),C=S.useMemo(()=>({setCurrentSectionId:(e,t)=>{const c=F(e),r=c?Z(e):null;e===f.currentPageId&&t===f.pages?.[e]?.currentSectionId&&(!c||r===f.currentComponentId)||(O(c&&r?D.joinURL("/admin/maker",w??"","components",r):D.joinURL("/admin/maker",w??"","pages",e)),g(d=>A.produce(d,i=>{i.currentPageId=e,c?r&&(i.currentComponentId=r):i.currentComponentId=void 0,i.pages??={},i.pages[e]??={},i.pages[e].currentSectionId=t??void 0,t?window.sessionStorage.setItem("iframe_show_id",`"${t}"`):window.sessionStorage.removeItem("iframe_show_id")})))},setCurrentComponentId:e=>{if(!e){g(d=>A.produce(d,i=>{i.currentComponentId=void 0}));return}const c=n.components[e]?.data?.renderer?.type==="component-template",r=c?W(e):void 0;e===f.currentComponentId&&(!c||f.currentPageId===r)||(O(D.joinURL("/admin/maker",w??"","components",e)),g(d=>A.produce(d,i=>{i.currentComponentId=e,c&&r?(i.currentPageId=r,i.pages??={},i.pages[r]??={}):i.currentPageId&&F(i.currentPageId)&&(i.currentPageId=void 0)})))},setCurrentRouteId:({routeId:e,dynamicParams:t})=>{g(c=>A.produce(c,r=>{r.currentRouteId=e,r.currentDynamicParams=t}))},setCustomComponentPreviewerProperties:(()=>{const e={};let t="";const c=ne.default(()=>{g(r=>A.produce(r,d=>{d.customComponentPreviewerProperties??={},d.customComponentPreviewerProperties[t]={...d.customComponentPreviewerProperties[t],...R.default(e[t])},delete e[t]}))},5);return(r,d)=>{const i=e[r]??{};Object.assign(i,d),e[r]=i,t=r,c()}})(),setRouteGenerateProcess:e=>{g(t=>A.produce(t,c=>{e?c.routeGenerateProcess={...c.routeGenerateProcess,...e}:c.routeGenerateProcess={}}))},resetRouteGenerateProcess:()=>{g(e=>A.produce(e,t=>{t.routeGenerateProcess={progress:"complete"}}))}}),[g,O,w,P]),h=S.useCallback((e,t,c,r,d)=>{const i=v(e),{page:l}=i,m=R.default(t),u=c?R.default(c):void 0,p=V(m);return o.doc.transact(()=>{if(d&&d.component==="layout-block"){const s=P.currentPageModel?.getComponentById(d.id);s&&(s.model.sections??={},s.model.sections[p.id]=p,s.model.sectionIds??=[],s.model.sectionIds.push(p.id))}else if(i.kind==="component-template"){const s=i.renderer.section;s.sections??={},s.sections[p.id]=p,s.sectionIds??=[],s.sectionIds.push(p.id)}else l.sections[p.id]=p,l.sectionIds.splice(r??l.sectionIds.length,0,p.id);if(u){l.dataSource??={};const s=(a,I)=>{const y=u[a.id];y&&(l.dataSource[I.id]=R.default(y)),a.component==="layout-block"&&a.sectionIds?.length&&a.sectionIds.forEach((M,k)=>{const E=a.sections?.[M],N=I.sectionIds?.[k],_=N?I.sections?.[N]:void 0;E&&_&&s(E,_)})};s(m,p)}}),C.setCurrentSectionId(e,p.id),p},[v,P,o.doc,C]),B=S.useMemo(()=>({addPage:(e,t)=>{const c=e?.id??J.nextId(),r={...e,id:c,createdAt:e?.createdAt??new Date().toISOString(),updatedAt:e?.updatedAt??new Date().toISOString(),publishedAt:new Date(0).toISOString(),slug:e?.slug??`/${c}`,sections:e?.sections??{},sectionIds:e?.sectionIds??[],isPublic:e?.isPublic??!0,templateConfig:e?.templateConfig??{isTemplate:e?.templateConfig?.isTemplate??!0,displayTemplateId:e?.templateConfig?.displayTemplateId??void 0,dataSourceIds:e?.templateConfig?.dataSourceIds??void 0,dataSourceParameters:e?.templateConfig?.dataSourceParameters??{},enabledGenerate:e?.templateConfig?.enabledGenerate??!1,agentId:e?.templateConfig?.agentId??void 0}};return o.doc.transact(()=>{n.pages[r.id]=r,n.pageIds.splice(t??n.pageIds.length,0,r.id)}),r},addRoute:(e,t)=>{const c=e?.id??J.nextId(),r={...e,id:c,createdAt:e?.createdAt??new Date().toISOString(),updatedAt:e?.updatedAt??new Date().toISOString(),publishedAt:new Date(0).toISOString(),path:e?.path??`/${c}`,handler:e?.handler??"Pages Kit",isPublic:e?.isPublic??!0,params:e?.params??[],enabledGenerate:e?.enabledGenerate??!1,displayTemplateId:e?.displayTemplateId??void 0,dataSource:e?.dataSource??{}};return o.doc.transact(()=>{n.routes??={},n.routeIds??=[],n.routes[r.id]=r,n.routeIds.splice(t??n.routeIds.length,0,r.id)}),r},deleteRoute:e=>{if(!e)return;const t=n.routeIds?.indexOf(e);t!==void 0&&t!==-1&&o.doc.transact(()=>{n.routeIds?.splice(t,1),delete n.routes?.[e]})},deletePage:e=>{const t=n.pageIds.indexOf(e);t!==-1&&o.doc.transact(()=>{n.pageIds.splice(t,1),delete n.pages[e]})},movePage:(e,t)=>{const{pageIds:c}=n,r=c.indexOf(e);r>=0&&c.splice(t,0,...c.splice(r,1))},addSection:(e,t,c,r)=>{const d=v(e),{page:i}=d,l=t?.config,m=typeof l?.componentId=="string"?l.componentId:void 0;if(t.component==="custom-component"&&m){const a=(n.components[m]?.data??n.resources?.components?.[m]?.component)?.renderer;if(a?.type==="component-template")return h(e,a.section,a.dataSource,c,r)}const u={...t,id:t.id??J.nextId(),isTemplateSection:t.isTemplateSection??!0},p=R.default(u.locales);return delete u.locales,o.doc.transact(()=>{if(r&&r.component==="layout-block"){const s=P.currentPageModel?.getComponentById(r.id);s&&(s.model.sections??={},s.model.sections[u.id]=u,s.model.sectionIds??=[],s.model.sectionIds.push(u.id))}else if(d.kind==="component-template"){const s=d.renderer.section;s.sections??={},s.sections[u.id]=u,s.sectionIds??=[],s.sectionIds.push(u.id)}else i.sections[u.id]=u,i.sectionIds.splice(c??i.sectionIds.length,0,u.id);p&&(i.dataSource??={},i.dataSource[u.id]=p)}),u},deleteSection:(e,t)=>{const c=v(e),{page:r}=c;o.doc.transact(()=>{const d=[],i=P.currentPageModel?.getComponentById(t),l=i?.parent;if(i&&(d.push(i.model.id,...i.all().map(m=>m.model.id)),l?.model.component==="layout-block")){const m=l.model.sectionIds?.indexOf(t);m!==void 0&&m!==-1&&(l.model.sectionIds?.splice(m,1),delete l.model.sections?.[t]),l.model.config?.gridSettings&&Object.keys(l.model.config.gridSettings).forEach(u=>{try{delete l.model.config.gridSettings[u]?.[t]}catch{}}),l.model.config?.backgroundSectionId===t&&(l.model.config.backgroundSectionId=void 0)}d.forEach(m=>{const u=r.sectionIds.indexOf(m);u!==-1&&r.sectionIds.splice(u,1),r.sections[m]&&delete r.sections[m],r.dataSource?.[m]&&delete r.dataSource?.[m]})})},lockSection:(e,t)=>{v(e);const c=P.currentPageModel?.getComponentById(t)?.model;c&&(c.locked=!c.locked)},toggleSectionVisibility:(e,t,c)=>{v(e);const r=P.currentPageModel?.getComponentById(t)?.model;r&&(r.visibility=c)},moveSection:(e,t,c,r)=>{const d=v(e),{page:i}=d,l=P.currentPageModel;if(!l)throw new Error(`Page model for ${e} is not available`);const m=p=>{const s=l.getComponentById(p);if(!s)return null;const a=s.model,I=s.parent;if(!I)return{section:a,container:i,containerType:"root",index:i.sectionIds.indexOf(p)};const y=I.model;return{section:a,container:y,containerType:"layout-block",index:y.sectionIds.indexOf(p)}},u=m(t);if(!u)throw new Error(`Section ${t} not found`);o.doc.transact(()=>{if(c.startsWith("layout-")){const a=c.replace("layout-",""),y=l.getComponentById(a)?.model;if(!y||y.component!=="layout-block")throw new Error(`Layout block ${a} not found`);if(a===t||((E,N)=>{const _=l.getComponentById(E),U=l.getComponentById(N);if(!_||!U||_.model.component!=="layout-block")return!1;let T=U.parent;for(;T;){if(T.model.id===E)return!0;T=T.parent}return!1})(t,a))return;const k=JSON.parse(JSON.stringify(u.section));y.sections||(y.sections={}),y.sectionIds||(y.sectionIds=[]),y.sections[t]=k,y.sectionIds.push(t),u.container.sectionIds.splice(u.index,1),u.containerType==="layout-block"&&delete u.container.sections[t];return}const p=m(c);if(!p)throw new Error(`Target section ${c} not found`);let s=p.index;if(r==="bottom"&&(s=p.index+1),u.container===p.container){const{sectionIds:a}=u.container;a.splice(u.index,1),u.index<s&&(s-=1),a.splice(s,0,t)}else{const a=JSON.parse(JSON.stringify(u.section));p.containerType==="root"||(p.container.sections||(p.container.sections={}),p.container.sections[t]=a),p.container.sectionIds.splice(s,0,t),u.container.sectionIds.splice(u.index,1),u.containerType==="layout-block"&&delete u.container.sections[t]}})},copySection:(e,t)=>{v(e);const c=P.currentPageModel?.getComponentById(t);if(!c?.model)throw new Error(`Section ${t} is not exists`);const r=JSON.parse(JSON.stringify(c.model)),d=V(r),i=d.id,l=c?.parent;if(l){if(l.model.sections[i]=d,l.model.sectionIds.push(i),P.currentPage?.dataSource?.[t]&&(P.currentPage.dataSource[i]=JSON.parse(JSON.stringify(P.currentPage.dataSource[t])),d.component==="layout-block")){const m=(u,p)=>{const s=u.sectionIds,a=p.sectionIds;s?.forEach((I,y)=>{const M=a?.[y];if(M){if(M&&P.currentPage?.dataSource){const N=P.currentPage.dataSource[M];N&&(P.currentPage.dataSource[I]=JSON.parse(JSON.stringify(N)))}const k=u.sections?.[I],E=p?.sections?.[M];k?.component==="layout-block"&&k.sectionIds&&E?.sectionIds&&m(k,E)}})};d.sectionIds&&r.sectionIds&&m(d,r)}C.setCurrentSectionId(e,i)}return d},extractSectionToComponentTemplate:(e,t)=>{const c=v(e),{page:r}=c,i=P.currentPageModel?.getComponentById(t)?.model;if(!i){console.warn(`Section ${t} is not exists`);return}const l=JSON.parse(JSON.stringify(i));if(l.component!=="layout-block"||!(l.sectionIds?.length??0)){console.warn(`Section ${t} is not eligible for component template extraction.`);return}const m=(s,a=[])=>(s&&(a.push(s.id),s.sectionIds?.forEach(I=>{const y=s.sections?.[I];m(y,a)})),a),p=m(i).reduce((s,a)=>{const I=r.dataSource?.[a];return I&&(s[a]=JSON.parse(JSON.stringify(I))),s},{});return{section:l,dataSource:Object.keys(p).length?p:void 0}},addComponentTemplate:({name:e,description:t,section:c,dataSource:r})=>{const d=J.nextId(),i=new Date().toISOString(),l=R.default(c),m=r?R.default(r):void 0;return o.doc.transact(()=>{const u=Object.values(n.components).length;n.components[d]={index:u,data:{id:d,name:e.trim()||void 0,description:t?.trim()||void 0,createdAt:i,updatedAt:i,renderer:{type:"component-template",section:l,dataSource:m}}}}),n.components[d]},addDataSource:e=>{const t=e.id??J.nextId(),c={...e??{},id:t,createdAt:new Date().toISOString()};return o.doc.transact(()=>{n.dataSourceIds??=[],n.dataSources??={},n.dataSourceIds.push(t),n.dataSources[t]=c}),n.dataSources[t]},deleteDataSource:e=>{const t=n.dataSourceIds.indexOf(e);t!==-1&&o.doc.transact(()=>{n.dataSourceIds.splice(t,1),delete n.dataSources[e]})}}),[n,o.doc,P]);return{...o,state:n,actions:B,localActions:C,...P,getComponentTemplateContext:q}},Q=()=>{const{projectId:o}=oe.useParams();return o??ce()??""},We=()=>window.__PROJECT_SLUG__??"";function de(o){const{resources:n}=o;if(!n.components)return{};const g={};return window?.blocklet?.componentMountPoints?.forEach(f=>{g[f.did]=f}),Object.fromEntries(Object.entries(n.components).map(([f,{blockletId:O,component:w}])=>[f,{data:w,blockletId:O,blockletTitle:g[O]?.title||O}]))}function ue(o){const{components:n}=o;return n||{}}function le(o){return{...de(o),...ue(o)}}const Ve=()=>le(ae().state);function V(o){const n=JSON.parse(JSON.stringify(o)),g=J.nextId();if(n.component==="layout-block"){const f={...n.config??{}},O=n.sectionIds?.map(w=>{const L=n.sections?.[w],b=V(n.sections?.[w]),j=b.id;return L?.id===n.config?.backgroundSectionId&&(f.backgroundSectionId=b.id),n.config?.gridSettings&&Object.keys(n.config.gridSettings).forEach(x=>{f.gridSettings[x]={...f.gridSettings[x]??{},[j]:{...n.config?.gridSettings?.[x]?.[w],id:j}},delete n.config?.gridSettings?.[x]?.[w]}),b});n.sections=Object.fromEntries(O?.map(w=>[w.id,w])??[]),n.sectionIds=O?.map(w=>w.id)??[],n.config=f}return{...n,id:g}}exports.StoreProvider=Ge;exports.api=z;exports.autoResizeImage=qe;exports.createComponentTemplatePage=se;exports.getAllComponents=le;exports.getCustomComponents=ue;exports.getImageAbsoluteUrl=De;exports.getProjectIdFromPathnameOrWindow=ce;exports.getProjectPageVersionKey=Ne;exports.getResourceComponents=de;exports.getWssURL=Ae;exports.transformValue=Le;exports.useAllComponents=Ve;exports.useProjectId=Q;exports.useProjectSlug=We;exports.useStore=ae;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./chunks/components-DsHjikTX.js");require("@blocklet/pages-kit/builtin/utils");require("@blocklet/pages-kit/types");require("@blocklet/pages-kit/utils/builtin");require("@blocklet/pages-kit/utils/property");require("@blocklet/quickjs");require("@blocklet/sdk/lib/config");require("lodash/isEmpty");require("lru-cache");require("node-fetch");require("ufo");exports.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS=e.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS;exports.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS=e.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS;exports.clearPreloadComponentsCache=e.clearPreloadComponentsCache;exports.clearPreloadComponentsCacheByInstanceId=e.clearPreloadComponentsCacheByInstanceId;exports.clearPreloadComponentsCacheByMode=e.clearPreloadComponentsCacheByMode;exports.getComponentFromState=e.getComponentFromState;exports.getComponentFromStateByName=e.getComponentFromStateByName;exports.getExportSchemaValueFromCode=e.getExportSchemaValueFromCode;exports.getPreloadComponent=e.getPreloadComponent;exports.getPreloadComponents=e.getPreloadComponents;exports.getPreloadComponentsCacheKey=e.getPreloadComponentsCacheKey;exports.skipTranspileComponent=e.skipTranspileComponent;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./chunks/components-BmFOXvb0.js");require("@blocklet/pages-kit/builtin/utils");require("@blocklet/pages-kit/types");require("@blocklet/pages-kit/utils/builtin");require("@blocklet/pages-kit/utils/property");require("@blocklet/quickjs");require("@blocklet/sdk/lib/config");require("lodash/isEmpty");require("lru-cache");require("node-fetch");require("p-limit");require("ufo");exports.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS=e.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS;exports.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS=e.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS;exports.clearPreloadComponentsCache=e.clearPreloadComponentsCache;exports.clearPreloadComponentsCacheByInstanceId=e.clearPreloadComponentsCacheByInstanceId;exports.clearPreloadComponentsCacheByMode=e.clearPreloadComponentsCacheByMode;exports.getComponentFromState=e.getComponentFromState;exports.getComponentFromStateByName=e.getComponentFromStateByName;exports.getExportSchemaValueFromCode=e.getExportSchemaValueFromCode;exports.getPreloadComponent=e.getPreloadComponent;exports.getPreloadComponents=e.getPreloadComponents;exports.getPreloadComponentsCacheKey=e.getPreloadComponentsCacheKey;exports.skipTranspileComponent=e.skipTranspileComponent;
package/lib/cjs/home.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("react/jsx-runtime");require("./chunks/state-BdtFHk36.js");require("@arcblock/ux/lib/Locale/context");require("@arcblock/ux/lib/Result");require("@arcblock/ux/lib/Theme");require("@blocklet/pages-kit/builtin/page/header");require("@blocklet/pages-kit/contexts/color");require("@blocklet/pages-kit/utils/data-source");require("@blocklet/pages-kit/utils/route");require("@blocklet/ui-react/lib/Header");require("@emotion/css");require("@emotion/react");require("@mui/material");require("ahooks");require("isomorphic-dompurify");require("lodash/cloneDeep");require("lodash/isEmpty");require("lodash/isEqual");require("react");require("react-helmet");require("react-router-dom");require("react-use");require("ufo");require("./chunks/index-B-Wh6PRT.js");const e=require("./chunks/home-DdN3Z-6B.js");require("./chunks/session-BZ3-x8Ef.js");exports.HomeView=e.HomeView;exports.PageHeader=e.PageHeader;exports.PageRoutes=e.PageRoutes;exports.PageView=e.PageView;exports.PageViewByPath=e.PageViewByPath;exports.PageViewWithDataSource=e.PageViewWithDataSource;exports.TranslucentHeader=e.TranslucentHeader;exports.default=e.Home;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("react/jsx-runtime");require("./chunks/state-DU3L5Lve.js");require("@arcblock/ux/lib/Locale/context");require("@arcblock/ux/lib/Result");require("@arcblock/ux/lib/Theme");require("@blocklet/pages-kit/builtin/page/header");require("@blocklet/pages-kit/contexts/color");require("@blocklet/pages-kit/utils/data-source");require("@blocklet/pages-kit/utils/route");require("@blocklet/ui-react/lib/Header");require("@emotion/css");require("@emotion/react");require("@mui/material");require("ahooks");require("isomorphic-dompurify");require("lodash/cloneDeep");require("lodash/isEmpty");require("lodash/isEqual");require("react");require("react-helmet");require("react-router-dom");require("react-use");require("ufo");require("./chunks/index-Cu2Jg8OH.js");const e=require("./chunks/home-DHmHyTMb.js");require("./chunks/session-BZ3-x8Ef.js");exports.HomeView=e.HomeView;exports.PageHeader=e.PageHeader;exports.PageRoutes=e.PageRoutes;exports.PageView=e.PageView;exports.PageViewByPath=e.PageViewByPath;exports.PageViewWithDataSource=e.PageViewWithDataSource;exports.TranslucentHeader=e.TranslucentHeader;exports.default=e.Home;
@@ -1,4 +1,4 @@
1
- "use strict";const B=require("@arcblock/did-connect-storage-nedb"),E=require("@blocklet/sdk/lib/config"),D=require("@blocklet/sdk/lib/wallet"),U=require("@blocklet/sdk/lib/wallet-authenticator"),H=require("@blocklet/sdk/lib/wallet-handler"),K=require("@blocklet/sdk/service/auth"),C=require("path"),v=require("./chunks/components-DsHjikTX.js"),T=require("./chunks/html-xfTPTsl5.js"),W=require("@arcblock/crawler-middleware"),N=require("@blocklet/pages-kit/types"),R=require("@blocklet/pages-kit/utils/common"),A=require("@blocklet/pages-kit/utils/preload"),F=require("@blocklet/sdk/lib/component"),O=require("express"),P=require("fs"),J=require("lodash/get"),z=require("mustache"),j=require("ufo"),y=n=>n&&n.__esModule?n:{default:n},G=y(B),s=y(E),Y=y(C),Q=y(J),V=y(z),X=(n={})=>{const e={data:new Map,timers:new Map,set:(t,d,u=n.ttl||36e5)=>{n.max&&e.data.size>=n.max&&e.delete(e.data.keys().next().value),e.timers.has(t)&&clearTimeout(e.timers.get(t)),e.timers.set(t,setTimeout(()=>e.delete(t),u)),e.data.set(t,d)},get:t=>e.data.get(t),has:t=>e.data.has(t),delete:t=>(e.timers.has(t)&&clearTimeout(e.timers.get(t)),e.timers.delete(t),e.data.delete(t)),clear:()=>{e.data.clear();for(const t of e.timers.values())clearTimeout(t);e.timers.clear()}};return e},q=X({max:1,ttl:1e3*30});D.getWallet();const Z=new U.WalletAuthenticator;new H.WalletHandlers({authenticator:Z,tokenStorage:new G.default({dbPath:Y.default.join(s.default.env.dataDir,"auth.db")})});const ee=new K.BlockletService,te=async()=>{try{const n=q.get("blockletInfo");if(n)return n;const{blocklet:e}=await ee.getBlocklet();return q.set("blockletInfo",e),e}catch{return null}},ne=["/assets/"];function oe({app:n,viteDevServer:e,state:t}){let d;if(e){const o=P.readFileSync(C.resolve(process.cwd(),"./index.html"),"utf-8");n.use(async(f,k,S)=>{const i=f.originalUrl;d=await e.transformIndexHtml(i,o),S()})}else d=P.readFileSync(C.resolve(process.env.BLOCKLET_APP_DIR,"dist/index.html"),"utf-8");const u=O.Router();u.use((o,f,k)=>{if(o.headers["x-unique-record"]==="dial_http"){v.logger.info("[html] dial http request, return 200 status code"),f.status(200).send("ok");return}k()}),s.default.env.preferences.snapkitEnabled&&s.default.env.preferences.snapkitEndpoint&&s.default.env.SNAP_KIT_ACCESS_KEY&&u.use(W.createSnapshotMiddleware({endpoint:s.default.env.preferences.snapkitEndpoint,accessKey:s.default.env.SNAP_KIT_ACCESS_KEY,cacheMax:s.default.env.preferences.snapkitCacheSize||100})),u.get("/:path(*)?",async(o,f,k)=>{if(ne.some(c=>o.path?.startsWith(c))){k();return}const S="production";let i,b,g=d;if(o.path.startsWith("/pages")){const c=o.params.lang,_=o.cookies.nf_lang,w=new Set([...s.default.env.languages.map(h=>h.code)]);let m=(c&&w.has(c)?c:void 0)||(w.has(_)?_:void 0)||[...w][0];if((!m||!t.supportedLocales?.find(h=>h.locale===m))&&(m=t.supportedLocales?.[0]?.locale||""),m){const h=[];Object.values(t.pages).forEach(a=>{const L=Object.values(a?.sections??{}).filter(r=>r.component==="custom-component"&&r.config?.componentId).map(r=>({id:r.id,componentId:r.config.componentId,useCache:r.config.useCache,cacheDuration:r.config.cacheDuration,properties:a?.dataSource?.[r.id]?.[m]}));h.push(...L)});const x=new Promise(a=>{setTimeout(()=>{a({})},30*1e3)});try{await Promise.race([x,v.getPreloadComponents({mode:S,req:o,state:t,locale:m,instances:h,module:N.PreloadComponentScriptModule.UMD_FN}).then(a=>{a&&(b=A.injectPreloadComponents(a))})])}catch(a){v.logger.warn("getPreloadComponents timeout in promise race, skip inject html elements",a)}}}try{const c=i?.title||s.default.env.appName,_=i?.description||s.default.env.appDescription,w=j.withQuery(j.joinURL(s.default.env.appUrl,"/.well-known/service/blocklet/og.png"),{title:c,description:_});g=V.default.render(d,{ogTitle:c,ogDescription:_,ogImage:se(i?.image)||w,pagesPublishedAt:t?.config.publishedAt||new Date().getTime()})}catch{}const p=t?.config.fontFamily,M=o.query.mode==="draft"||o.url.includes("preview")||o.path?.startsWith("/admin");let l=i?.backgroundColor;if(l&&R.isMuiColorKey(l)){const c=await te();l=Q.default(c,`settings.theme.light.palette.${l}`,l)}const I=E.getBlockletJs(),$=[{selector:{cheerio:"#injected-head-elements",pattern:/<script[^>]*id=["']injected-head-elements["'][^>]*><\/script>/gis},value:`
1
+ "use strict";const B=require("@arcblock/did-connect-storage-nedb"),E=require("@blocklet/sdk/lib/config"),D=require("@blocklet/sdk/lib/wallet"),U=require("@blocklet/sdk/lib/wallet-authenticator"),H=require("@blocklet/sdk/lib/wallet-handler"),K=require("@blocklet/sdk/service/auth"),C=require("path"),v=require("./chunks/components-BmFOXvb0.js"),T=require("./chunks/html-xfTPTsl5.js"),W=require("@arcblock/crawler-middleware"),N=require("@blocklet/pages-kit/types"),R=require("@blocklet/pages-kit/utils/common"),A=require("@blocklet/pages-kit/utils/preload"),F=require("@blocklet/sdk/lib/component"),O=require("express"),P=require("fs"),J=require("lodash/get"),z=require("mustache"),j=require("ufo"),y=n=>n&&n.__esModule?n:{default:n},G=y(B),s=y(E),Y=y(C),Q=y(J),V=y(z),X=(n={})=>{const e={data:new Map,timers:new Map,set:(t,d,u=n.ttl||36e5)=>{n.max&&e.data.size>=n.max&&e.delete(e.data.keys().next().value),e.timers.has(t)&&clearTimeout(e.timers.get(t)),e.timers.set(t,setTimeout(()=>e.delete(t),u)),e.data.set(t,d)},get:t=>e.data.get(t),has:t=>e.data.has(t),delete:t=>(e.timers.has(t)&&clearTimeout(e.timers.get(t)),e.timers.delete(t),e.data.delete(t)),clear:()=>{e.data.clear();for(const t of e.timers.values())clearTimeout(t);e.timers.clear()}};return e},q=X({max:1,ttl:1e3*30});D.getWallet();const Z=new U.WalletAuthenticator;new H.WalletHandlers({authenticator:Z,tokenStorage:new G.default({dbPath:Y.default.join(s.default.env.dataDir,"auth.db")})});const ee=new K.BlockletService,te=async()=>{try{const n=q.get("blockletInfo");if(n)return n;const{blocklet:e}=await ee.getBlocklet();return q.set("blockletInfo",e),e}catch{return null}},ne=["/assets/"];function oe({app:n,viteDevServer:e,state:t}){let d;if(e){const o=P.readFileSync(C.resolve(process.cwd(),"./index.html"),"utf-8");n.use(async(f,k,S)=>{const i=f.originalUrl;d=await e.transformIndexHtml(i,o),S()})}else d=P.readFileSync(C.resolve(process.env.BLOCKLET_APP_DIR,"dist/index.html"),"utf-8");const u=O.Router();u.use((o,f,k)=>{if(o.headers["x-unique-record"]==="dial_http"){v.logger.info("[html] dial http request, return 200 status code"),f.status(200).send("ok");return}k()}),s.default.env.preferences.snapkitEnabled&&s.default.env.preferences.snapkitEndpoint&&s.default.env.SNAP_KIT_ACCESS_KEY&&u.use(W.createSnapshotMiddleware({endpoint:s.default.env.preferences.snapkitEndpoint,accessKey:s.default.env.SNAP_KIT_ACCESS_KEY,cacheMax:s.default.env.preferences.snapkitCacheSize||100})),u.get("/:path(*)?",async(o,f,k)=>{if(ne.some(c=>o.path?.startsWith(c))){k();return}const S="production";let i,b,g=d;if(o.path.startsWith("/pages")){const c=o.params.lang,_=o.cookies.nf_lang,w=new Set([...s.default.env.languages.map(h=>h.code)]);let m=(c&&w.has(c)?c:void 0)||(w.has(_)?_:void 0)||[...w][0];if((!m||!t.supportedLocales?.find(h=>h.locale===m))&&(m=t.supportedLocales?.[0]?.locale||""),m){const h=[];Object.values(t.pages).forEach(a=>{const L=Object.values(a?.sections??{}).filter(r=>r.component==="custom-component"&&r.config?.componentId).map(r=>({id:r.id,componentId:r.config.componentId,useCache:r.config.useCache,cacheDuration:r.config.cacheDuration,properties:a?.dataSource?.[r.id]?.[m]}));h.push(...L)});const x=new Promise(a=>{setTimeout(()=>{a({})},30*1e3)});try{await Promise.race([x,v.getPreloadComponents({mode:S,req:o,state:t,locale:m,instances:h,module:N.PreloadComponentScriptModule.UMD_FN}).then(a=>{a&&(b=A.injectPreloadComponents(a))})])}catch(a){v.logger.warn("getPreloadComponents timeout in promise race, skip inject html elements",a)}}}try{const c=i?.title||s.default.env.appName,_=i?.description||s.default.env.appDescription,w=j.withQuery(j.joinURL(s.default.env.appUrl,"/.well-known/service/blocklet/og.png"),{title:c,description:_});g=V.default.render(d,{ogTitle:c,ogDescription:_,ogImage:se(i?.image)||w,pagesPublishedAt:t?.config.publishedAt||new Date().getTime()})}catch{}const p=t?.config.fontFamily,M=o.query.mode==="draft"||o.url.includes("preview")||o.path?.startsWith("/admin");let l=i?.backgroundColor;if(l&&R.isMuiColorKey(l)){const c=await te();l=Q.default(c,`settings.theme.light.palette.${l}`,l)}const I=E.getBlockletJs(),$=[{selector:{cheerio:"#injected-head-elements",pattern:/<script[^>]*id=["']injected-head-elements["'][^>]*><\/script>/gis},value:`
2
2
  ${l?`<meta name="theme-color" content="${l}" /><style>html,body,#app {background-color: ${l};}</style>`:""}
3
3
  ${p?.title?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${p.title}&display=swap">`:""}
4
4
  ${p?.description&&p?.description!==p?.title?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${p.description}&display=swap">`:""}
@@ -1 +1 @@
1
- "use strict";const I=require("./chunks/components-DsHjikTX.js"),c=require("./chunks/site-state-DlLhHuIr.js"),F=require("express"),L=require("fs"),J=require("joi"),X=require("lodash/groupBy"),W=require("lodash/sortBy"),B=require("path"),C=require("@blocklet/sdk/lib/middlewares/auth"),G=require("@blocklet/sdk/lib/component"),g=e=>e&&e.__esModule?e:{default:e},u=g(L),f=g(J),D=g(X),K=g(W),k=g(B),Y=async(e,t,o)=>{try{const{projectId:s}=e.params;if(!s)return o();const n=await c.Project.findByPk(s);if(!n)return t?.status(404).json({error:"Project not found"});const r=e.user?.did,a=e.user?.role||"UNKNOWN_ROLE";if(!r)return t?.status(401).json({error:"Authentication required"});if(I.isMultiTenant()){const P=n.createdBy===r,y=I.getMultiTenantAllProjectAccessPassports()?.includes?.(a);if(!P&&!y)return t?.status(403).json({error:"No permission to access this project in multi-tenant mode"})}else if(!["owner","admin","pagesEditor"].includes(a))return t?.status(403).json({error:"No permission to access this project in single-tenant mode"});e.project=n,e.projectId=s,o()}catch(s){I.logger.error("Project middleware error:",s),t?.status(400).json({error:"Internal server error"})}};function b(e,t){return new Promise((o,s)=>{const n=u.default.createReadStream(e),r=u.default.createWriteStream(t);n.on("error",s),r.on("error",s),r.on("finish",o),n.pipe(r)})}async function N(e,t){await u.default.promises.mkdir(t,{recursive:!0});const o=await u.default.promises.readdir(e,{withFileTypes:!0});for(const s of o){const n=k.default.join(e,s.name),r=k.default.join(t,s.name);s.isDirectory()?await N(n,r):await b(n,r)}}async function $(e,t){(await u.default.promises.stat(e)).isDirectory()?await N(e,t):await b(e,t)}const h=(e,t,o)=>I.isMultiTenant()?C.authMiddleware()(e,t,o):C.authMiddleware({roles:["owner","admin","pagesEditor"]})(e,t,o),z=(e,t)=>{const o=G.getResourceExportDir({projectId:e,releaseId:t});return B.join(o,c.COMPONENT_DID,c.RESOURCE_TYPE)},_=F.Router(),T="@page",U="@component",m=":",R="ALL",M="@project",v=({pageId:e,projectId:t})=>[T,t,e].join(m),H=e=>{const[t,o,s]=e.split(m);if(t===T)return{pageId:s,projectId:o}},x=({componentId:e,projectId:t})=>[U,t,e].join(m),Q=e=>{const[t,o,s]=e.split(m);if(t===U)return{componentId:s,projectId:o}},V=e=>[M,e].join(m),Z=e=>{const[t,o]=e.split(m);if(t===M)return o},ee=e=>{try{return JSON.parse(e)}catch{}return{}};async function A(e){const t=await c.SiteState.getStateByProjectId(e,"production"),o=await c.Project.findByPk(e),s=t.pageIds.map(r=>{const a=t.pages[r];if(a)return{id:v({pageId:r,projectId:e}),name:a.slug}}).filter(Boolean),n=K.default(Object.values(t.components),r=>r.index).map(({data:r})=>({id:x({componentId:r.id,projectId:e}),name:r.name||r.id}));return{id:V(e),name:o?.name||"Unnamed Project",children:[{id:v({pageId:R,projectId:e}),name:"Pages",children:s},{id:x({componentId:R,projectId:e}),name:"Components",children:n}]}}_.get("/resources",h,async(e,t)=>{const{projectId:o}=ee(e.query.resourcesParams);if(o){e.params={...e.params,projectId:o},await Y(e,t,()=>{});const r=await A(o);t.json({resources:[r]});return}const s=await c.Project.findAll({where:{}}),n=await Promise.all(s.map(r=>A(r.id)));t.json({resources:n})});const te=f.default.object({projectId:f.default.string().required().min(1),releaseId:f.default.string().allow(""),resources:f.default.array().items(f.default.string()).required(),locale:f.default.string().allow("")});_.post("/resources",h,async(e,t)=>{const{resources:o,projectId:s,releaseId:n}=await te.validateAsync(e.body),r="production",a=[],P=[];for(const i of o){if(Z(i))continue;const{pageId:d,projectId:w}=H(i)||{};if(d)d===R||d&&w&&a.push({pageId:d,projectId:w});else{const{componentId:j,projectId:p}=Q(i)||{};j===R||j&&p&&P.push({componentId:j,projectId:p})}}const y=D.default(a,"projectId"),O=D.default(P,"projectId"),q=new Set([...Object.keys(y),...Object.keys(O)]),E=z(s,n);u.default.rmSync(E,{recursive:!0,force:!0}),u.default.mkdirSync(E,{recursive:!0});for(const i of q){const d=await c.SiteState.getStateByProjectId(i,r),w=y[i],j=O[i],p=w?.map(l=>l.pageId),S=j?.map(l=>l.componentId);if(p?.length||S?.length){const l=await c.toPackage(d,{exportAssets:!0,pageIds:p,componentIds:S});await $(l,E),u.default.rmSync(l,{recursive:!0,force:!0})}I.logger.info(`Exported resources for project ${i}`,{pageIds:p,componentIds:S})}t.json({})});_.get("/all-resources",h,async(e,t)=>{const{states:o}=await c.getResourceStates(),s=o?.map(n=>{const r={blockletId:n.blockletId,blockletTitle:n.blockletTitle,components:{}};if(n.state.components&&(r.components=n.state.components),Object.keys(r.components).length!==0)return r}).filter(Boolean);t.json(s)});module.exports=_;
1
+ "use strict";const I=require("./chunks/components-BmFOXvb0.js"),c=require("./chunks/site-state-BQySNTiP.js"),F=require("express"),L=require("fs"),J=require("joi"),X=require("lodash/groupBy"),W=require("lodash/sortBy"),B=require("path"),C=require("@blocklet/sdk/lib/middlewares/auth"),G=require("@blocklet/sdk/lib/component"),g=e=>e&&e.__esModule?e:{default:e},u=g(L),f=g(J),D=g(X),K=g(W),k=g(B),Y=async(e,t,o)=>{try{const{projectId:s}=e.params;if(!s)return o();const n=await c.Project.findByPk(s);if(!n)return t?.status(404).json({error:"Project not found"});const r=e.user?.did,a=e.user?.role||"UNKNOWN_ROLE";if(!r)return t?.status(401).json({error:"Authentication required"});if(I.isMultiTenant()){const P=n.createdBy===r,y=I.getMultiTenantAllProjectAccessPassports()?.includes?.(a);if(!P&&!y)return t?.status(403).json({error:"No permission to access this project in multi-tenant mode"})}else if(!["owner","admin","pagesEditor"].includes(a))return t?.status(403).json({error:"No permission to access this project in single-tenant mode"});e.project=n,e.projectId=s,o()}catch(s){I.logger.error("Project middleware error:",s),t?.status(400).json({error:"Internal server error"})}};function b(e,t){return new Promise((o,s)=>{const n=u.default.createReadStream(e),r=u.default.createWriteStream(t);n.on("error",s),r.on("error",s),r.on("finish",o),n.pipe(r)})}async function N(e,t){await u.default.promises.mkdir(t,{recursive:!0});const o=await u.default.promises.readdir(e,{withFileTypes:!0});for(const s of o){const n=k.default.join(e,s.name),r=k.default.join(t,s.name);s.isDirectory()?await N(n,r):await b(n,r)}}async function $(e,t){(await u.default.promises.stat(e)).isDirectory()?await N(e,t):await b(e,t)}const h=(e,t,o)=>I.isMultiTenant()?C.authMiddleware()(e,t,o):C.authMiddleware({roles:["owner","admin","pagesEditor"]})(e,t,o),z=(e,t)=>{const o=G.getResourceExportDir({projectId:e,releaseId:t});return B.join(o,c.COMPONENT_DID,c.RESOURCE_TYPE)},_=F.Router(),T="@page",U="@component",m=":",R="ALL",M="@project",v=({pageId:e,projectId:t})=>[T,t,e].join(m),H=e=>{const[t,o,s]=e.split(m);if(t===T)return{pageId:s,projectId:o}},x=({componentId:e,projectId:t})=>[U,t,e].join(m),Q=e=>{const[t,o,s]=e.split(m);if(t===U)return{componentId:s,projectId:o}},V=e=>[M,e].join(m),Z=e=>{const[t,o]=e.split(m);if(t===M)return o},ee=e=>{try{return JSON.parse(e)}catch{}return{}};async function A(e){const t=await c.SiteState.getStateByProjectId(e,"production"),o=await c.Project.findByPk(e),s=t.pageIds.map(r=>{const a=t.pages[r];if(a)return{id:v({pageId:r,projectId:e}),name:a.slug}}).filter(Boolean),n=K.default(Object.values(t.components),r=>r.index).map(({data:r})=>({id:x({componentId:r.id,projectId:e}),name:r.name||r.id}));return{id:V(e),name:o?.name||"Unnamed Project",children:[{id:v({pageId:R,projectId:e}),name:"Pages",children:s},{id:x({componentId:R,projectId:e}),name:"Components",children:n}]}}_.get("/resources",h,async(e,t)=>{const{projectId:o}=ee(e.query.resourcesParams);if(o){e.params={...e.params,projectId:o},await Y(e,t,()=>{});const r=await A(o);t.json({resources:[r]});return}const s=await c.Project.findAll({where:{}}),n=await Promise.all(s.map(r=>A(r.id)));t.json({resources:n})});const te=f.default.object({projectId:f.default.string().required().min(1),releaseId:f.default.string().allow(""),resources:f.default.array().items(f.default.string()).required(),locale:f.default.string().allow("")});_.post("/resources",h,async(e,t)=>{const{resources:o,projectId:s,releaseId:n}=await te.validateAsync(e.body),r="production",a=[],P=[];for(const i of o){if(Z(i))continue;const{pageId:d,projectId:w}=H(i)||{};if(d)d===R||d&&w&&a.push({pageId:d,projectId:w});else{const{componentId:j,projectId:p}=Q(i)||{};j===R||j&&p&&P.push({componentId:j,projectId:p})}}const y=D.default(a,"projectId"),O=D.default(P,"projectId"),q=new Set([...Object.keys(y),...Object.keys(O)]),E=z(s,n);u.default.rmSync(E,{recursive:!0,force:!0}),u.default.mkdirSync(E,{recursive:!0});for(const i of q){const d=await c.SiteState.getStateByProjectId(i,r),w=y[i],j=O[i],p=w?.map(l=>l.pageId),S=j?.map(l=>l.componentId);if(p?.length||S?.length){const l=await c.toPackage(d,{exportAssets:!0,pageIds:p,componentIds:S});await $(l,E),u.default.rmSync(l,{recursive:!0,force:!0})}I.logger.info(`Exported resources for project ${i}`,{pageIds:p,componentIds:S})}t.json({})});_.get("/all-resources",h,async(e,t)=>{const{states:o}=await c.getResourceStates(),s=o?.map(n=>{const r={blockletId:n.blockletId,blockletTitle:n.blockletTitle,components:{}};if(n.state.components&&(r.components=n.state.components),Object.keys(r.components).length!==0)return r}).filter(Boolean);t.json(s)});module.exports=_;
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),r=require("@mui/material"),V=require("./chunks/state-BdtFHk36.js"),ve=require("@arcblock/ux/lib/Empty"),R=require("@arcblock/ux/lib/Locale/context"),re=require("@blocklet/code-editor"),Ce=require("@mui/icons-material/AddRounded"),Se=require("@mui/icons-material/ArrowDownward"),ke=require("@mui/icons-material/ArrowUpward"),Pe=require("@mui/icons-material/DeleteOutline"),we=require("lodash/sortBy"),P=require("react"),se=require("react-use"),oe=require("@blocklet/pages-kit/builtin/color-picker"),z=require("@blocklet/pages-kit/builtin/uploader"),Ie=require("@iconify-icon/react"),Te=require("lodash/isEmpty"),Be=require("lodash/set"),Oe=require("yaml"),Re=require("lodash/cloneDeep"),Ne=require("@arcblock/ux/lib/Toast"),J=require("@blocklet/pages-kit/components"),Ae=require("@blocklet/pages-kit/utils/property"),ae=require("@mui/base"),N=require("@mui/icons-material"),U=require("@syncedstore/core"),ze=require("ahooks"),Ve=require("lodash/assign"),_e=require("lodash/get"),Ee=require("lodash/has"),De=require("lodash/isEqual"),Fe=require("lodash/isNil"),Le=require("lodash/isObject"),qe=require("lodash/keyBy"),Ue=require("lodash/omit"),Me=require("lodash/pick"),We=require("lodash/reduce"),E=require("material-ui-popup-state/hooks"),Ke=require("react-error-boundary"),q=require("@dnd-kit/core"),Q=require("@dnd-kit/sortable"),Je=require("@dnd-kit/utilities"),ce=require("@blocklet/pages-kit/utils/common"),O=t=>t&&t.__esModule?t:{default:t};function He(t){if(t&&t.__esModule)return t;const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const o in t)if(o!=="default"){const l=Object.getOwnPropertyDescriptor(t,o);Object.defineProperty(s,o,l.get?l:{enumerable:!0,get:()=>t[o]})}}return s.default=t,Object.freeze(s)}const M=O(ve),$e=O(Ce),Ge=O(Se),Ye=O(ke),Qe=O(Pe),_=O(we),D=O(Te),de=O(Be),X=He(Oe),Z=O(Re),ee=O(Ne),Xe=O(Ve),Ze=O(_e),et=O(Ee),tt=O(De),$=O(Fe),rt=O(Le),st=O(qe),nt=O(Ue),ot=O(Me),it=O(We);function lt({error:t}){return e.jsx(r.Box,{children:e.jsx(r.Alert,{severity:"error",children:t.message})})}function at({onClick:t,disabled:s,sx:o,...l}){return e.jsx(r.IconButton,{size:"small",color:"warning",variant:"outlined",disabled:s,onClick:t,...l,children:e.jsx(Qe.default,{fontSize:"small"})})}function ct({onClick:t,disabled:s,sx:o,...l}){return e.jsx(r.IconButton,{size:"small",color:"primary",disabled:s,onClick:t,...l,children:e.jsx(Ye.default,{fontSize:"small"})})}function dt({onClick:t,disabled:s,sx:o,...l}){return e.jsx(r.IconButton,{size:"small",color:"primary",disabled:s,onClick:t,...l,children:e.jsx(Ge.default,{fontSize:"small"})})}function ut({label:t,value:s,onChange:o,disabled:l=!1,itemLabel:f="",emptyHeight:p=40,property:u,renderItem:j,...m}){const{t:c,locale:d}=R.useLocaleContext(),a=se.useUpdate(),i=P.useCallback(b=>{o(V.transformValue(b,u.type))},[o,u.type]),n=P.useMemo(()=>Array.isArray(s)?s:[],[s]),x=P.useCallback(()=>{const b=[...n,""];i(b),a()},[n,i,a]),g=P.useCallback(()=>{if(!u||!u.subProperties)return x();const b={};_.default(Object.values(u.subProperties),"index").forEach(({data:B})=>{if(!B.key)return;const A=B.locales?.[d]?.defaultValue??"";b[B.key]=A});const w=[...n,b];i(w),a()},[n,i,a,u,d,x]),h=P.useCallback(b=>{try{const v=JSON.parse(b);Array.isArray(v)?i(v):console.error("JSON解析结果不是数组")}catch(v){console.error("JSON解析错误:",v)}},[i]),S=P.useCallback(b=>{const v=n.filter((w,B)=>B!==b);i(v),a()},[n,i,a]),y=P.useCallback(b=>{if(b<=0)return;const v=[...n],w=v[b];v[b]=v[b-1],v[b-1]=w,i(v),a()},[n,i,a]),I=P.useCallback(b=>{if(b>=n.length-1)return;const v=[...n],w=v[b];v[b]=v[b+1],v[b+1]=w,i(v),a()},[n,i,a]),T=P.useCallback((b,v)=>{const w=[...n];w[b]=v,i(w)},[n,i]),C=u&&u.subProperties&&Object.keys(u.subProperties).length>0,k=P.useMemo(()=>[{field:"index",headerName:"#",width:40,align:"center",renderCell:({index:b})=>e.jsx(r.Typography,{variant:"body1",sx:{bgcolor:"action.hover",borderRadius:"50%",width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center",color:"text.secondary"},children:b+1})},{field:"content",headerName:"",renderCell:({row:b,index:v})=>j&&C?j({item:b,index:v,property:u,onChange:w=>T(v,w)}):e.jsx(r.TextField,{fullWidth:!0,size:"small",disabled:l,value:b,placeholder:f||`${c("item")} ${v+1}`,onChange:w=>T(v,w.target.value),...m})},{field:"actions",headerName:"",width:30,align:"center",renderCell:({index:b})=>e.jsxs(r.Stack,{direction:"column",spacing:.25,children:[e.jsx(ct,{disabled:l||b===0,onClick:()=>y(b)}),e.jsx(dt,{disabled:l||b===n.length-1,onClick:()=>I(b)}),e.jsx(at,{disabled:l,onClick:()=>S(b)})]})}],[j,C,u,T,f,c,l,m,S,y,I,n.length]);return C?e.jsxs(r.Stack,{sx:{width:"100%",gap:1},children:[t&&e.jsx(r.FormLabel,{children:t}),n.length>0?e.jsx(r.TableContainer,{component:r.Paper,variant:"outlined",sx:{borderRadius:1,mb:1},children:e.jsxs(r.Table,{size:"small",sx:{"& .MuiTableCell-root":{py:.25,px:1,whiteSpace:"nowrap"},"& .MuiTableCell-head":{backgroundColor:"action.hover",py:.25,px:1},borderCollapse:"collapse"},children:[e.jsx(r.TableHead,{sx:{display:"none"},children:e.jsx(r.TableRow,{children:k.map(b=>e.jsx(r.TableCell,{width:b.width,align:b.align||"left",sx:{fontWeight:"bold"},children:b.renderHeader?b.renderHeader():b.headerName},b.field))})}),e.jsx(r.TableBody,{children:n.map((b,v,w)=>e.jsx(r.TableRow,{sx:{borderBottom:v<w.length-1?"1px solid":"none",borderColor:"divider","&:hover":{backgroundColor:"action.hover"}},children:k.map(B=>e.jsx(r.TableCell,{width:B.width,align:B.align||"left",sx:{borderBottom:"none"},children:B.renderCell({row:b,index:v,onChange:A=>T(v,A)})},`${v}-${B.field}`))},v))})]})}):e.jsx(M.default,{style:{fontSize:12,height:p},children:c("maker.properties.arrayEmpty")}),e.jsx(r.Button,{fullWidth:!0,size:"small",variant:"outlined",disabled:l,startIcon:e.jsx($e.default,{}),onClick:g,children:c("maker.properties.addArrayItem")})]}):e.jsxs(r.Stack,{sx:{width:"100%",gap:1},children:[t&&e.jsx(r.FormLabel,{children:t}),e.jsx(r.Box,{sx:{border:1,borderColor:"divider",borderRadius:1,minHeight:150},children:e.jsx(re.CodeEditor,{keyId:u.id,locale:d,language:"json",value:JSON.stringify(n,null,2),onChange:b=>h(b||""),fullScreenOptions:{enableEscExit:!0,targetContainer:()=>document.getElementById("parameters-config-dialog")||null}},u.id)})]})}function pt({ref:t,showMarkdown:s,markdown:o,onMarkdownChange:l,showUploader:f,value:p,meta:u,onChange:j,...m}){const[c,d]=P.useState("");P.useEffect(()=>{d(p||"")},[p,d]);const a=async()=>{if(c!==p){const n=V.getImageAbsoluteUrl(c);if(!n){j(c,void 0);return}const x=await z.getImageSize(n).catch(()=>z.getVideoSize(n)).catch(()=>{});j(c,{...x,filename:c})}};se.useDebounce(()=>{c!==p&&j(c)},300,[c]),P.useImperativeHandle(t,()=>({submit:a}));const i={};return f&&(i.InputProps={sx:{pr:0},endAdornment:e.jsx(r.InputAdornment,{position:"end",sx:{mx:.5},children:e.jsx(z.UploaderButton,{onChange:async({response:n})=>{const x=n?.data?.filename,g=V.getImageAbsoluteUrl(x)||"";let h={};g&&(h=await z.getImageSize(g).catch(()=>z.getVideoSize(g)).catch(()=>{})),j(x,{...h,filename:x})}})})}),e.jsx(r.TextField,{size:"small",fullWidth:!0,...m,label:e.jsxs(r.Stack,{direction:"row",spacing:1,sx:{alignItems:"center"},children:[m.label,s&&e.jsxs(e.Fragment,{children:[" (",e.jsx(r.FormControlLabel,{checked:o,label:e.jsx(r.Box,{component:Ie.Icon,icon:"tabler:markdown",sx:{verticalAlign:"middle"}}),labelPlacement:"start",control:e.jsx(r.Switch,{size:"small"}),sx:{ml:.25,pr:1},onChange:(n,x)=>l?.(x)}),")"]})]}),value:c,onChange:n=>d(n.target.value),...i,onKeyDown:n=>{n.keyCode!==229&&n.key==="Enter"&&a()},slotProps:{inputLabel:{shrink:!0,...m.InputLabelProps}}})}function xt({value:t,onChange:s,disableGradient:o=!1,...l}){const f=P.useRef(null);return e.jsxs(e.Fragment,{children:[e.jsx(pt,{...l,value:t,onChange:s,InputProps:{endAdornment:e.jsx(r.InputAdornment,{position:"end",children:e.jsx(oe.ColorItem,{color:t??"",style:{width:"1.5rem",height:"1.5rem",padding:0},onClick:()=>{f.current?.open({value:t??""})}})})}}),e.jsx(oe.ConfigColorDialog,{ref:f,onSave:({value:p},u)=>{s(p),u()},disableGradient:o})]})}function mt({label:t,value:s,onChange:o,property:l,component:f,defaultLocale:p,allComponents:u,PropertyValueField:j,onUpload:m}){const{locale:c}=R.useLocaleContext(),d=P.useRef(null);if(!D.default(l.subProperties)){const i=_.default(Object.values(l.subProperties||{}),"index").filter(n=>n.data.visible!==!1&&n.data.key);return e.jsxs(r.Stack,{sx:{width:"100%"},children:[e.jsx(r.FormLabel,{sx:{px:.25,py:.5},children:t}),e.jsx(r.Box,{children:e.jsx(r.Box,{sx:{position:"relative"},children:i.map((n,x)=>{const{data:g}=n,h=g.key??g.id,S=x===i.length-1;let y=null;try{s&&typeof s=="object"?y=s[h]:typeof s=="string"&&(y=(l.type==="yaml"?X.parse(s||""):JSON.parse(s||"{}"))[h])}catch{}y==null&&(g.locales&&c&&g.locales[c]?y=g.locales[c].defaultValue:g.locales&&p&&g.locales[p]&&(y=g.locales[p].defaultValue));const I=C=>{try{let k={};if(typeof s=="string")try{k=l.type==="yaml"?X.parse(s||""):JSON.parse(s||"{}")}catch{}else typeof s=="object"&&s!==null&&(k={...s});de.default(k,h,C);const b=V.transformValue(k,l.type);o?.(b)}catch(k){console.error("Error updating property:",k)}},T=8;return e.jsxs(r.Box,{sx:{mb:S?0:1,display:"flex",flexDirection:"row"},children:[e.jsxs(r.Box,{sx:{position:"relative",width:24,flexShrink:0},children:[e.jsx(r.Box,{sx:{position:"absolute",left:T,top:0,height:16,width:0,borderLeft:"1px dashed",borderColor:"divider"}}),e.jsx(r.Box,{sx:{position:"absolute",left:T,top:16,width:12,height:0,borderTop:"1px dashed",borderColor:"divider"}}),!S&&e.jsx(r.Box,{sx:{position:"absolute",left:T,top:16,bottom:-8,width:0,borderLeft:"1px dashed",borderColor:"divider"}})]}),e.jsx(r.Box,{sx:{flexGrow:1},children:e.jsx(j,{component:f,property:g,value:y,onChange:I,size:"small",fullWidth:!0,defaultLocale:p,allComponents:u})})]},g.id)})})})]})}return e.jsx(r.Stack,{sx:{width:"100%",gap:2},children:e.jsxs(r.Stack,{sx:{width:"100%",position:"relative",pt:1,pb:"6px",px:"1px",minHeight:50,".monaco-editor,.overflow-guard":{borderRadius:1}},children:[e.jsx(r.FormLabel,{sx:{position:"absolute",left:0,top:0,transform:"translate(0px, -7px) scale(0.75)"},children:t}),e.jsx(re.CodeEditor,{keyId:l.id,locale:c,language:l.type==="yaml"?"yaml":"json",value:typeof s=="string"?s:"",onChange:i=>{o?.(i)},onUpload:i=>{d.current=i,m&&m(i)},fullScreenOptions:{enableEscExit:!0,targetContainer:()=>document.getElementById("parameters-config-dialog")||null}},l.id),e.jsx(r.Box,{component:"fieldset",sx:{pointerEvents:"none",position:"absolute",left:0,top:-5,width:"100%",height:"100%",border:1,borderColor:"rgba(0, 0, 0, 0.23)",borderRadius:1,px:1,py:0},children:e.jsx(r.Box,{component:"legend",sx:{fontSize:"0.75em"},children:e.jsx(r.Box,{component:"span",sx:{opacity:0},children:t})})})]})})}function ie(t){return!!t.shared}const ft={setActivatorNodeRef:()=>{},attributes:{},listeners:{}};function ue({disabled:t,list:s,renderItem:o,...l}){const f=_.default(Object.entries(s),([,x])=>x.index),p=f.map(([x])=>x),[u,j]=P.useState(null),[m,c]=P.useState(null),d=q.useSensors(q.useSensor(q.PointerSensor,{activationConstraint:{distance:8}})),a=x=>{const{active:g}=x,h=s[g.id];h&&(c(g.id),j(h.data))},i=()=>{},n=x=>{const{active:g,over:h}=x;if(c(null),j(null),!h||g.id===h.id)return;const S=g.id,y=h.id;if(s[S]&&s[y]){const I=()=>{const k=Object.entries(s).sort(([,B],[,A])=>B.index-A.index),b=k.findIndex(([B])=>B===S),v=k.findIndex(([B])=>B===y),[w]=k.splice(b,1);w&&k.splice(v,0,w),k.forEach(([,B],A)=>{B.index=A})},T=U.getYjsValue(s)?.doc;T?T.transact(()=>{I()}):I()}};return e.jsxs(q.DndContext,{sensors:d,collisionDetection:q.closestCorners,onDragStart:a,onDragOver:i,onDragEnd:n,children:[e.jsx(Q.SortableContext,{items:p,strategy:Q.verticalListSortingStrategy,children:e.jsx(r.Stack,{...l,children:f.map(([x,g],h)=>e.jsx(ht,{id:x,disabled:t,isDragging:m===x,children:({dragHandle:S})=>o(g.data,h,{isDragging:m===x,dragHandle:S,drag:null,drop:null,preview:null})},x))})}),e.jsx(q.DragOverlay,{children:u&&m?e.jsx(r.Box,{sx:{opacity:.8,backgroundColor:"background.paper",border:"1px solid",borderColor:"primary.main",borderRadius:1,boxShadow:2,maxWidth:400},children:o(u,0,{isDragging:!0,dragHandle:ft,drag:null,drop:null,preview:null})}):null})]})}function ht({id:t,disabled:s,isDragging:o,children:l}){const{attributes:f,listeners:p,setNodeRef:u,setActivatorNodeRef:j,transform:m,transition:c}=Q.useSortable({id:t,disabled:s}),d={transform:Je.CSS.Transform.toString(m),transition:c,opacity:o?.5:1};return e.jsx(r.Box,{ref:u,style:d,children:l({dragHandle:{setActivatorNodeRef:j,attributes:f??{},listeners:{...p??{}}}})})}function bt({disabled:t,isDragging:s,children:o,onDelete:l,onVisibilityChange:f,visible:p=!0,onSharedChange:u,shared:j=!1,actions:m,alwaysShowActions:c=!1,dragHandle:d}){const{t:a}=R.useLocaleContext(),i=d?.attributes??{},n=d?.listeners??{},x=d?.setActivatorNodeRef;return e.jsx(r.Box,{sx:{":hover .hover-visible":{maxWidth:"100%"},opacity:p?1:.5},children:e.jsxs(r.Box,{sx:{position:"relative"},children:[e.jsx(r.Box,{sx:{flex:1,borderRadius:.5,bgcolor:s?"action.hover":"background.paper",opacity:.9999},children:o}),!t&&e.jsx(r.Box,{className:c?"":"hover-visible",sx:{maxWidth:c?"100%":0,overflow:"hidden",position:"absolute",right:2,top:2,transition:"max-width 0.3s ease-in-out"},children:e.jsxs(r.Stack,{direction:"row",sx:{bgcolor:g=>r.alpha(g.palette.grey[200],.9),borderRadius:1,p:.5,[`.${r.buttonClasses.root}`]:{minWidth:24,width:24,height:24,p:0}},children:[m,u&&e.jsx(r.Tooltip,{title:a(j?"disableSharing":"enableSharing"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{onClick:()=>u(!j),children:j?e.jsx(N.SyncRounded,{sx:{fontSize:"1.25rem",color:"primary.main"}}):e.jsx(N.SyncDisabledRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}})})}),f&&e.jsx(r.Tooltip,{title:a(p?"hideParameter":"showParameter"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{onClick:()=>f(!p),children:p?e.jsx(N.VisibilityOffRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}}):e.jsx(N.VisibilityRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}})})}),l&&e.jsx(r.Tooltip,{title:a("delete"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{onClick:l,children:e.jsx(N.DeleteOutlineRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}})})}),e.jsx(r.Tooltip,{title:a("dragSort"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{ref:x,...i,...n,children:e.jsx(N.DragIndicatorRounded,{sx:{color:"grey.500"}})})})]})})]})})}function gt(t){const s=["string","json","array","url","multiline"],o=["style","fontSize","color","content","type"];return!!(s.includes(t.type||"")&&!o.includes(t.key||""))}function jt(t,s,o){return t.locales&&t.locales[s]&&t.locales[s].name?t.locales[s].name:o&&t.locales&&t.locales[o]&&t.locales[o].name?t.locales[o].name:t.key?t.key:t.id}const pe=(t,s,o,l)=>{const f={};return _.default(Object.entries(t),([,u])=>u.index).forEach(([u,j])=>{const m=j.data;if(!m)return;const c=m.key||m.id,d=o?jt(m,o,l||""):c,a=s?.[m.id],i={key:c,isNeedGenerate:a?.isNeedGenerate??gt(m),describe:a?.describe??"",displayName:d};m.subProperties&&!D.default(m.subProperties)&&(i.subProperties=pe(m.subProperties,a?.subProperties,o,l)),f[m.id]=i}),f};function yt({open:t,onClose:s,onConfirm:o,component:l,initialConfig:f,locale:p,defaultLocale:u,title:j,loading:m=!1}){const{t:c}=R.useLocaleContext(),[d,a]=P.useState(null);P.useEffect(()=>{if(t&&l){const h={properties:{}};if(l.properties){const S=f?.properties;h.properties=pe(l.properties,S,p,u)}a(h)}},[t,l,f,p,u]);const i=()=>{s()},n=()=>{d&&(o(d),s())},x=(h,S,y)=>{if(!d||!h.length)return;const I=JSON.parse(JSON.stringify(d));let T=I.properties,C=null;for(let b=0;b<h.length-1;b++){const v=h[b];if(!v||!T[v])return;C=T;const w=T[v];w.subProperties||(w.subProperties={}),T=w.subProperties}const k=h[h.length-1];if(k){if("isNeedGenerate"in y){const b=y.isNeedGenerate,v={...S,...y};if(S.subProperties&&!D.default(S.subProperties)){const w=(B,A)=>{const L={};return Object.entries(B).forEach(([ye,W])=>{const Y={...W};A!==null&&(Y.isNeedGenerate=A),W.subProperties&&!D.default(W.subProperties)&&(Y.subProperties=w(W.subProperties,A!==null?A:null)),L[ye]=Y}),L};v.subProperties=w(S.subProperties,b===!1?!1:null)}if(h.length===1)I.properties[k]=v;else if(C&&h.length>=2){const w=h[h.length-2];w&&C[w]&&(C[w].subProperties||(C[w].subProperties={}),C[w].subProperties[k]=v)}}else if(h.length===1)I.properties[k]={...S,...y};else if(C&&h.length>=2){const b=h[h.length-2];b&&C[b]&&C[b].subProperties&&(C[b].subProperties[k]={...S,...y})}a(I)}},g=(h,S=[],y=!0)=>{if(!h||D.default(h))return e.jsx(M.default,{children:c("maker.properties.noProperties")});const I=_.default(Object.entries(h),([,T])=>T.displayName);return e.jsx(r.Stack,{spacing:1.5,children:I.map(([T,C],k)=>{const b=[...S,T],v=k===I.length-1,w=C.subProperties&&!D.default(C.subProperties),B=C.displayName||T,A=!y;return e.jsx(r.Box,{sx:{position:"relative"},children:e.jsxs(r.Stack,{direction:"row",children:[S.length>0&&e.jsxs(r.Box,{sx:{position:"relative",width:24,flexShrink:0},children:[e.jsx(r.Box,{sx:{position:"absolute",left:8,top:0,height:16,width:0,borderLeft:"1px dashed",borderColor:"divider"}}),e.jsx(r.Box,{sx:{position:"absolute",left:8,top:16,width:12,height:0,borderTop:"1px dashed",borderColor:"divider"}}),!v&&e.jsx(r.Box,{sx:{position:"absolute",left:8,top:16,bottom:-12,width:0,borderLeft:"1px dashed",borderColor:"divider"}})]}),e.jsxs(r.Stack,{spacing:1.5,sx:{flexGrow:1},children:[e.jsxs(r.Stack,{direction:{xs:"column",md:"row"},spacing:1.5,sx:{alignItems:{xs:"flex-start",md:"center"},width:"100%"},children:[e.jsx(r.FormControlLabel,{control:e.jsx(r.Checkbox,{checked:C.isNeedGenerate,disabled:A,onChange:L=>{x(b,C,{isNeedGenerate:L.target.checked})}}),label:B,sx:{minWidth:"180px",maxWidth:"280px",mr:2,"& .MuiFormControlLabel-label":{wordBreak:"break-word"}}}),e.jsx(r.TextField,{size:"small",fullWidth:!0,label:c("maker.properties.llmPropertyDescribe"),value:C.describe,onChange:L=>{x(b,C,{describe:L.target.value})},disabled:!C.isNeedGenerate})]}),w&&e.jsx(r.Box,{sx:{ml:3},children:g(C.subProperties,b,C.isNeedGenerate&&y)})]})]})},T)})})};return e.jsxs(r.Dialog,{open:t,onClose:i,maxWidth:"lg",fullWidth:!0,children:[e.jsx(r.DialogTitle,{children:j||c("maker.properties.llmConfigTitle")}),e.jsx(r.DialogContent,{children:e.jsx(r.Box,{sx:{my:3},children:m?e.jsx(r.Typography,{children:c("maker.properties.loading")}):l?d?e.jsxs(r.Stack,{spacing:3,children:[e.jsx(r.Typography,{variant:"subtitle2",children:c("maker.properties.llmConfigInstructions")}),g(d.properties)]}):e.jsx(r.Typography,{children:c("maker.properties.loading")}):e.jsx(r.Typography,{color:"error",children:c("maker.properties.componentNotFound")})})}),e.jsxs(r.DialogActions,{children:[e.jsx(r.Button,{onClick:i,children:c("common.cancel")}),e.jsx(r.Button,{variant:"contained",onClick:n,disabled:!d||m,children:c("common.confirm")})]})]})}function vt({label:t,value:s,onChange:o}){const[l,f]=P.useState(!1);return e.jsxs(r.Stack,{sx:{gap:1},children:[e.jsx(r.TextField,{label:t,size:"small",value:s,onChange:p=>o?.(p.target.value),slotProps:{input:{sx:{pr:0},endAdornment:e.jsx(r.InputAdornment,{position:"end",children:e.jsx(z.UploaderButton,{onChange:({response:p})=>{const u=p?.data?.filename;u&&o?.(u)}})})}}}),s&&e.jsx(r.Box,{component:"img",src:V.getImageAbsoluteUrl(s),alt:t,onClick:()=>f(!0),sx:{maxWidth:100,maxHeight:100,width:"100%",objectFit:"contain",borderRadius:1,cursor:"pointer"}}),e.jsx(r.Dialog,{open:l,onClose:()=>f(!1),children:e.jsx(r.Box,{component:"img",sx:{objectFit:"contain"},src:V.getImageAbsoluteUrl(s),alt:t})})]})}function te(t,s=""){return it.default(t,(o,l,f)=>{const p=s?`${s}.${f}`:f;return rt.default(l)?Xe.default(o,te(l,p)):o[p]=l,o},{})}const Ct=[{value:"string",label:"Text"},{value:"multiline",label:"Text (Multiline)"},{value:"number",label:"Number"},{value:"decimal",label:"Decimal"},{value:"boolean",label:"Boolean"},{value:"color",label:"Color"},{value:"url",label:"URL (Upload)"},{value:"json",label:"JSON"},{value:"yaml",label:"YAML"},{value:"array",label:"Array"},{value:"component",label:"Component"},{value:"custom",label:"Custom (Render by a Component)"}];function K(t,s,o){return!t||!o?!1:Object.values(t).some(({data:l})=>l.id!==s&&l.key===o)}function H(t,s){return!t||!s?!1:t[s]?.data.visible??!0}function xe(t,s){return!t||!s?!1:t[s]?.data.shared??!1}function St({componentId:t}){const{state:{components:s}}=V.useStore(),l=s[t]?.data;return l?e.jsx(r.Stack,{sx:{maxHeight:"100%",overflow:"auto"},children:e.jsx(r.Box,{sx:{p:2},children:e.jsx(Ke.ErrorBoundary,{FallbackComponent:lt,resetKeys:[t],children:e.jsx(kt,{value:l,componentId:t})})})}):null}function kt({value:t,componentId:s}){const{t:o}=R.useLocaleContext(),{localState:{currentLocale:l,customComponentPreviewerProperties:f},state:{config:{defaultLocale:p}},localActions:{setCustomComponentPreviewerProperties:u}}=V.useStore(),j=U.getYjsValue(t).doc,m=V.useAllComponents(),c=P.useMemo(()=>f?.[s]??{},[s,f]),d=t.renderer?.type||"react-component",a=d==="component-template",i=ze.useReactive({componentId:s,propertiesValue:{...c}});return P.useEffect(()=>{i.componentId!==s&&(i.componentId=s,i.propertiesValue={...c})},[s,c,i]),P.useEffect(()=>{if(i.componentId!==s)return;const n=Object.fromEntries(Object.values(t.properties??{}).map(({data:x})=>[x.id,{value:i.propertiesValue[x.id]?.value??Ae.parsePropertyValue(x,x.locales?.[l]?.defaultValue??x.locales?.[p]?.defaultValue,{locale:l,defaultLocale:p})}]));u(s,n)},[JSON.stringify(i.propertiesValue),s,i.componentId]),e.jsx(r.Stack,{sx:{height:"100%"},children:e.jsxs(r.Stack,{sx:{gap:2},children:[e.jsx(me,{config:t}),e.jsxs(e.Fragment,{children:[e.jsx(he,{config:t,currentLocale:l,defaultLocale:p,allComponents:m,onUpdateConfig:n=>{j.transact(()=>{n(t)})}}),e.jsxs(r.Stack,{direction:"row",sx:{gap:2,justifyContent:"space-between",alignItems:"center"},children:[e.jsx(r.Typography,{variant:"subtitle1",children:o("renderer")}),e.jsxs(r.TextField,{hiddenLabel:!0,size:"small",select:!0,value:d,disabled:a,onChange:n=>{j.transact(()=>{const x=n.target.value;t.renderer??={type:x},t.renderer.type=x})},slotProps:{select:{autoWidth:!0}},children:[e.jsx(r.MenuItem,{value:"component-template",disabled:!0,children:o("maker.components.componentTemplate")}),e.jsx(r.MenuItem,{value:"react-component",children:"React Component"}),e.jsx(r.MenuItem,{value:"component",children:"Custom Component"})]})]}),d==="component"&&e.jsx(Rt,{value:t}),d==="react-component"&&e.jsx(Ot,{value:t}),e.jsx(ne,{config:t,currentLocale:l,defaultLocale:p,allComponents:m,propertiesValue:i.propertiesValue,onChange:({value:n,id:x,path:g})=>{const h=[...g,"data"];if(!Ze.default(t,h)){ee.default.warning(o("cannotFindPropertyKey",{key:h.join(".")}));return}i.propertiesValue[x]={value:n.value}}})]})]})})}function me({config:t}){const{t:s}=R.useLocaleContext();return e.jsx(z.UploaderProvider,{children:e.jsxs(r.Stack,{sx:{gap:2},children:[e.jsx(r.Typography,{variant:"subtitle1",children:s("basicInfo")}),e.jsx(r.TextField,{label:s("name"),size:"small",value:t.name||"",onChange:o=>t.name=o.target.value}),e.jsx(r.TextField,{label:s("description"),size:"small",multiline:!0,minRows:2,maxRows:8,value:t.description||"",onChange:o=>t.description=o.target.value,slotProps:{input:{endAdornment:e.jsx(r.InputAdornment,{position:"end",sx:{mt:-1.5},children:e.jsx(Nt,{config:t})})},htmlInput:{maxLength:2048}}}),e.jsx(r.Autocomplete,{size:"small",options:[],multiple:!0,freeSolo:!0,value:t.tags??[],onChange:(o,l)=>t.tags=l,renderInput:o=>e.jsx(r.TextField,{label:s("tags"),...o})}),e.jsx(vt,{label:s("previewImage"),value:t.previewImage||"",onChange:o=>t.previewImage=o})]})})}function fe({data:t,params:s,visible:o,shared:l,config:f,currentLocale:p,defaultLocale:u,allComponents:j,onUpdateConfig:m}){const{t:c}=R.useLocaleContext(),d=P.useMemo(()=>t.type==="json"||t.type==="yaml"||t.type==="array"?Tt:F,[t.type]);return e.jsx(bt,{preview:s.preview,drop:s.drop,drag:s.drag,isDragging:s.isDragging,dragHandle:s.dragHandle,onDelete:()=>{m(a=>{if(a.properties){const n=Object.entries(a.properties).sort(([,g],[,h])=>g.index-h.index);delete a.properties[t.id],n.filter(([g])=>g!==t.id).forEach(([,g],h)=>{g.index=h})}})},visible:o,onVisibilityChange:a=>{m(i=>{const n=i.properties[t.id].data;n.visible=a})},shared:l,onSharedChange:a=>{m(i=>{const n=i.properties[t.id].data;n.shared=a})},alwaysShowActions:!0,children:e.jsxs(r.Stack,{direction:"column",sx:{gap:2},children:[e.jsx(r.TextField,{label:c("key"),size:"small",required:!0,sx:{width:"calc(100% - 104px - 8px)",flex:1,"& .MuiOutlinedInput-root":{borderColor:t.key?K(f.properties,t.id,t.key)?"warning.main":void 0:"error.main"},"& .MuiFormLabel-root":{color:t.key?K(f.properties,t.id,t.key)?"warning.main":"text.secondary":"error.main"},"& .MuiFormLabel-root.Mui-focused":{color:t.key?K(f.properties,t.id,t.key)?"warning.main":"primary.main":"error.main"}},value:t.key||"",onChange:a=>{m(i=>{const n=i.properties[t.id].data;n.key=a.target.value.trim()})},slotProps:{input:{endAdornment:!t.key||t.key&&K(f.properties,t.id,t.key)?e.jsx(r.InputAdornment,{position:"end",sx:{width:16,ml:0},children:e.jsx(r.Tooltip,{title:t.key?c("duplicateKey"):c("requiredKey"),children:e.jsx(N.InfoRounded,{sx:{color:t.key?"warning.main":"error.main",fontSize:16}})})}):null}}}),e.jsxs(r.Stack,{direction:"row",sx:{gap:1},children:[e.jsx(r.TextField,{label:c("label"),size:"small",sx:{flex:1},value:(t.locales?.[p]?.name??t.locales?.[u]?.name)||"",onChange:a=>{m(i=>{const n=i.properties[t.id].data;n.locales??={},n.locales[p]??={},n.locales[p].name=a.target.value})}}),e.jsx(r.TextField,{label:c("type"),size:"small",select:!0,sx:{flex:1},value:t.type==="string"&&t.multiline?"multiline":t.type||"string",onChange:a=>{m(i=>{const n=i.properties[t.id].data;if(n.locales)for(const g of Object.keys(n.locales))n.locales[g].defaultValue=void 0;const x=a.target.value;x==="multiline"?(n.type="string",n.multiline=!0):(typeof n.multiline<"u"&&delete n.multiline,n.type=x)})},children:Ct.map(a=>e.jsx(r.MenuItem,{value:a.value,children:a.label},a.value))})]}),e.jsxs(r.Stack,{direction:"row",sx:{gap:1},children:[e.jsx(d,{allComponents:j,defaultLocale:u,component:f,property:t,label:c("defaultValue"),size:"small",fullWidth:!0,value:t.locales?.[p]?.defaultValue,onChange:(a,i)=>{m(n=>{const x=n.properties[t.id].data;if(i?.forceUpdateProperty){const g=te(x),h=te(a);Object.keys(h).forEach(S=>{g[S]||de.default(x,S,h[S])})}else x.locales??={},x.locales[p]??={},x.locales[p].defaultValue=a})}}),t.type==="custom"?e.jsx(r.Box,{children:e.jsx(wt,{property:t,allComponents:j})}):null]})]})})}function Pt(t,s){const[o,l]=P.useState(0);return P.useEffect(()=>{const p=setTimeout(()=>{if(t.current){let u=t.current.parentElement,j=0;for(;u;)u.classList.contains("property-container")&&j++,u=u.parentElement;l(j)}},100);return()=>clearTimeout(p)},[t,s]),o}function he({config:t,currentLocale:s,defaultLocale:o,allComponents:l,onUpdateConfig:f,useI18nEditor:p=!0}){const{t:u}=R.useLocaleContext(),j=E.usePopupState({variant:"dialog"}),m=t.properties&&_.default(Object.values(t.properties),"index");return e.jsx(z.UploaderProvider,{children:e.jsxs(r.Stack,{sx:{gap:2},children:[e.jsxs(r.Stack,{direction:"row",sx:{gap:1,alignItems:"center",justifyContent:"space-between"},children:[e.jsx(r.Typography,{variant:"subtitle1",children:u("properties")}),e.jsx(r.Box,{sx:{flex:1}}),p&&e.jsx(r.Button,{sx:{minWidth:32,minHeight:32,p:0},...E.bindTrigger(j),children:e.jsx(N.TranslateRounded,{fontSize:"small"})})]}),t.properties&&Object.keys(t.properties).length>0?e.jsx(ue,{component:r.Stack,gap:2,list:t.properties,renderItem:(c,d,a)=>{const i=H(t.properties,c.id),n=xe(t.properties,c.id);return e.jsx(r.Paper,{elevation:0,className:"property-container",sx:{p:1.25,borderRadius:1,border:i?"1px solid":"1px dashed",borderColor:"divider"},children:e.jsx(r.Stack,{sx:{gap:2},children:e.jsx(fe,{data:c,params:a,visible:i,shared:n,config:t,currentLocale:s,defaultLocale:o,allComponents:l,onUpdateConfig:f})})},c.id)}}):e.jsx(M.default,{style:{fontSize:12},children:u("maker.properties.noProperties")}),e.jsx(r.Button,{fullWidth:!0,variant:"outlined",className:"ignore-style-override",onClick:()=>{f(c=>{const d=ce.nextId();c.properties??={},c.properties[d]??={index:m?.length||0,data:{id:d,shared:!1}}})},startIcon:e.jsx(N.AddRounded,{}),children:u("addObject",{object:u("property")})}),p&&e.jsx(be,{...E.bindDialog(j),component:t})]})})}function wt({property:t,allComponents:s}){const o=E.usePopupState({variant:"popper"});return e.jsxs(e.Fragment,{children:[e.jsx(r.Button,{sx:{minWidth:0},...E.bindTrigger(o),children:e.jsx(N.SettingsRounded,{fontSize:"small"})}),e.jsx(r.Popper,{...E.bindPopper(o),children:e.jsx(ae.ClickAwayListener,{onClickAway:o.close,children:e.jsx(r.Paper,{children:e.jsx(r.Box,{sx:{width:500,p:2},children:e.jsx(G,{value:t.componentId,onChange:(l,f)=>t.componentId=f,allComponents:s})})})})})]})}function It({value:t,valueImmutable:s,onChange:o,defaultLocale:l,allComponents:f}){const[p,u]=P.useState(!1),{t:j,locale:m}=R.useLocaleContext(),c=typeof t?.componentId=="string"?f[t.componentId]?.data:void 0;return c?e.jsxs(r.Box,{sx:{width:"100%",position:"relative"},children:[e.jsx(r.IconButton,{sx:{minWidth:0},disabled:!c,size:"small",onClick:()=>u(!p),color:p?"primary":"default",children:e.jsx(N.SettingsRounded,{fontSize:"small"})}),p&&e.jsx(r.Collapse,{in:p,timeout:"auto",unmountOnExit:!0,sx:{width:"100%",zIndex:10},children:e.jsxs(r.Paper,{elevation:1,sx:{mt:1,p:2,borderRadius:1,border:"1px solid",borderColor:"divider",width:"100%"},children:[e.jsx(r.Box,{sx:{width:"100%",mb:2},children:e.jsx(ne,{config:c,currentLocale:m,defaultLocale:l,allComponents:f,propertiesValue:t?.properties,onChange:({id:d,value:a})=>{const i=Z.default(a.value),n=JSON.parse(JSON.stringify(t));n?.componentId&&(s?o?.({...n,properties:{...n.properties,[d]:{value:i}}}):(n.properties=n.properties??{},n.properties[d]={value:i},o?.(n)))}})}),e.jsx(r.Button,{size:"small",onClick:()=>u(!1),sx:{mt:1},children:j("close")})]})})]}):null}function be({type:t="properties",component:s,...o}){const{t:l}=R.useLocaleContext(),{state:{components:f,supportedLocales:p,config:{defaultLocale:u}}}=V.useStore(),j=V.useAllComponents(),m=U.getYjsValue(s).doc,c=t==="properties"?s.properties:t==="parameters"&&s.renderer?.type==="component"?f[s.renderer.componentId]?.data.properties:void 0,d=s.renderer?.type==="component"?s:void 0;return e.jsxs(r.Dialog,{...o,fullWidth:!0,maxWidth:"lg",children:[e.jsx(r.DialogTitle,{children:l("i18nEditorTitle")}),e.jsx(r.DialogContent,{children:c&&e.jsx(r.Stack,{children:e.jsxs(r.Table,{stickyHeader:!0,sx:{td:{verticalAlign:"top"}},children:[e.jsx(r.TableHead,{children:e.jsx(r.TableRow,{children:p.map(({locale:a,name:i})=>e.jsx(r.TableCell,{children:e.jsxs(r.Typography,{sx:{color:"text.primary"},children:[i,u===a&&e.jsx(N.StarRounded,{sx:{fontSize:12}})]})},a))})}),e.jsx(r.TableBody,{children:_.default(Object.values(c),"index").map(({data:a})=>e.jsx(r.TableRow,{children:p.map(({locale:i})=>e.jsx(r.TableCell,{children:e.jsx(r.Stack,{sx:{gap:1},children:t==="properties"?e.jsxs(e.Fragment,{children:[e.jsx(r.TextField,{size:"small",label:"Key",value:a.key||"",onChange:n=>{m.transact(()=>{a.key=n.target.value.trim()})}}),e.jsx(r.TextField,{size:"small",label:l("label"),value:(a.locales?.[i]?.name??a.locales?.[u]?.name)||"",onChange:n=>{m.transact(()=>{a.locales??={},a.locales[i]??={},a.locales[i].name=n.target.value})}}),e.jsx(r.Box,{children:e.jsx(F,{allComponents:j,defaultLocale:u,component:s,property:a,size:"small",fullWidth:!0,label:"Default Value",valueImmutable:$.default(a.locales?.[i]?.defaultValue),value:a.locales?.[i]?.defaultValue??a.locales?.[u]?.defaultValue,onChange:n=>{m.transact(()=>{a.locales??={},a.locales[i]??={},a.locales[i].defaultValue=n})}})})]}):t==="parameters"&&d?e.jsx(r.Box,{children:e.jsx(F,{allComponents:j,defaultLocale:u,component:s,property:a,size:"small",fullWidth:!0,valueImmutable:$.default(d.renderer.properties?.[a.id]?.locales?.[i]?.value),value:d.renderer.properties?.[a.id]?.locales?.[i]?.value??d.renderer.properties?.[a.id]?.locales?.[u]?.value??a.locales?.[i]?.defaultValue??a.locales?.[u]?.defaultValue,onChange:n=>{m.transact(()=>{d.renderer.properties??={},d.renderer.properties[a.id]??={},d.renderer.properties[a.id].locales??={},d.renderer.properties[a.id].locales[i]??={},d.renderer.properties[a.id].locales[i].value=n})}})}):null},a.id)},i))},a.id))})]})})}),e.jsx(r.DialogActions,{children:e.jsx(r.Button,{onClick:a=>o.onClose?.(a,"escapeKeyDown"),children:l("close")})})]})}const le=(t,s)=>o=>{const l=[o.palette.info.main,o.palette.primary.main,o.palette.secondary.main,o.palette.success.main,o.palette.warning.main],f=Math.min(l.length-1,t),p=l[f],u=r.alpha(p,.5),j=r.alpha(p,1);return{borderColor:`${u} !important`,borderLeft:"3px solid !important",borderLeftColor:u,color:j,...s}};function Tt({property:t,onChange:s,defaultLocale:o,allComponents:l}){const{t:f,locale:p}=R.useLocaleContext(),u=P.useRef(null),j=Pt(u,t),m=P.useCallback(()=>{if(!(t.type!=="json"&&t.type!=="yaml"&&t.type!=="array")&&t.subProperties)try{let c={};_.default(Object.values(t.subProperties),"index").filter(i=>i.data.visible!==!1&&i.data.key).forEach(({data:i})=>{if(!i.key)return;let n=i.locales?.[p]?.defaultValue??i.locales?.[o]?.defaultValue;if(i.type==="number")n=Number(n);else if(i.type==="boolean")n=n===!0||n==="true";else if((i.type==="json"||i.type==="yaml")&&typeof n=="string")try{i.type==="json"?n=JSON.parse(n):n=X.parse(n)}catch(x){console.error("Error parsing nested value",n,x),n={}}c[i.key]=n}),t.type==="array"&&!Array.isArray(c)&&(c=D.default(c)?[]:[c]);const a=V.transformValue(c,t.type);s?.(a)}catch(c){console.error("Error converting structure to text:",c)}},[t,p,o,s]);return t.type!=="json"&&t.type!=="yaml"&&t.type!=="array"?null:e.jsxs(r.Stack,{direction:"column",ref:u,sx:{gap:1.5,width:"100%"},children:[e.jsx(r.Divider,{sx:{mt:-1},children:e.jsx(r.Typography,{variant:"caption",sx:{color:"text.secondary"},children:f("maker.properties.subProperties")})}),t.subProperties&&Object.keys(t.subProperties).length>0?e.jsx(ue,{component:r.Stack,gap:2,list:t.subProperties,renderItem:(c,d,a)=>{const i=c.visible!==!1,n=c.shared??!1;return e.jsx(r.Paper,{elevation:0,className:"property-container",sx:{p:1.25,borderRadius:1,border:i?"1px solid":"1px dashed","&":le(j)},children:e.jsx(r.Stack,{sx:{gap:2},children:e.jsx(fe,{data:c,params:a,visible:i,shared:n,config:{properties:t.subProperties},currentLocale:p,defaultLocale:o,allComponents:l,onUpdateConfig:x=>{try{const g={properties:t.subProperties||{}};x(g);const h={...t,subProperties:g.properties};s?.(h,{forceUpdateProperty:!0}),m()}catch(g){console.error("Error updating property:",g)}}})})},c.id)}}):e.jsx(M.default,{style:{fontSize:12,height:100},children:f("maker.properties.noSubProperties")}),e.jsx(r.Button,{fullWidth:!0,variant:"outlined",className:"ignore-style-override",size:"small",startIcon:e.jsx(N.AddRounded,{}),onClick:()=>{try{const c=t.subProperties||{},d=ce.nextId(),i={index:Object.values(c).length,data:{id:d,key:"",type:"string",visible:!0,shared:!1,locales:{[p]:{name:"",defaultValue:""}},subProperties:{}}},n={...t,subProperties:{...c,[d]:i}};s?.(n,{forceUpdateProperty:!0}),m()}catch(c){console.error("Error adding property:",c)}},sx:{"&":le(j,{})},children:f("maker.properties.addSubProperty")})]})}function F({component:t,property:s,value:o,onChange:l,valueImmutable:f,defaultLocale:p,allComponents:u,...j}){const{locale:m}=R.useLocaleContext(),c=z.useUploader(),d=P.useRef(null),a=()=>{const n=c?.current?.getUploader();n?.open(),d.current&&n.onceUploadSuccess(({response:x})=>{let g=x?.data?.filename||"";g&&(g=`mediakit://${g}`,o&&!o.includes("mediakit://")&&(g+=" # please use < import { getMediaKitAbsoluteUrl } from '@blocklet/pages-kit/builtin/utils' > to get the full address")),d.current?.(g)})},i=j.label??(s.locales?.[m]?.name||s.locales?.[p]?.name||s.key||s.id);if(s.type==="number")return e.jsx(Bt,{...j,label:i,NumberProps:{value:["number","string"].includes(typeof o)?o:null,onChange:(n,x)=>l?.(x)}});if(s.type==="decimal")return e.jsx(r.TextField,{...j,label:i,type:"text",value:o??"",onChange:n=>{const x=n.target.value;if(x===""||x==="-"){l?.(x);return}if(/^-?(?!.*\..*\.)[0-9]*(\.[0-9]{0,9})?$/.test(x)){let h=x;/^-?[1-9]+[0-9]*(\.[0-9]{1,9})?$/.test(h)&&(h=Number(h)),l?.(h)}}});if(s.type==="boolean")return e.jsx(r.FormControlLabel,{label:i,labelPlacement:"start",control:e.jsx(r.Switch,{checked:o===!0,onChange:(n,x)=>l?.(x)})});if(s.type==="color")return e.jsx(xt,{label:i,value:o,onChange:n=>{l?.(n)}});if(s.type==="json"||s.type==="yaml")return e.jsx(mt,{label:i,value:o,onChange:n=>{l?.(n)},property:s,component:t,defaultLocale:p,allComponents:u,PropertyValueField:F,onUpload:n=>{d.current=n,a()}});if(s.type==="custom"){const n=u[s.componentId]?.data;return n?e.jsx(r.Box,{sx:{width:"100%"},children:e.jsx(J.CustomComponentRenderer,{componentId:n.id,props:{label:i,value:o,onChange:l},locale:m,dev:{mode:"draft",components:u,defaultLocale:p}})}):e.jsx(r.TextField,{...j,label:i,disabled:!0,placeholder:"Click right button select a component"})}if(s.type==="component")return e.jsxs(r.Stack,{direction:"column",sx:{width:"100%",gap:1},children:[e.jsx(G,{allComponents:u,label:i,value:o?.componentId,onChange:(n,x)=>{f||!o?l?.({...o&&JSON.parse(JSON.stringify(o)),componentId:x}):typeof o=="object"&&(o.componentId=x,l?.({...o&&JSON.parse(JSON.stringify(o)),componentId:x}))}}),o?.componentId&&e.jsx(It,{value:o,valueImmutable:f,onChange:l,defaultLocale:p,allComponents:u})]});if(!s.type||["string","url","multiline"].includes(s.type)){let n=s.type==="string"?s.multiline:void 0;s.type==="multiline"&&(n=!0);const x=s.type==="url"?o?.url:o;return e.jsx(r.TextField,{...j,label:i,value:typeof x=="string"?x:"",multiline:n,minRows:n?2:void 0,maxRows:n?10:void 0,onChange:g=>l?.(s.type==="url"?{...o,url:g.target.value,mediaKitUrl:g.target.value}:g.target.value),slotProps:{input:s.type==="url"?{sx:{pr:0},endAdornment:e.jsxs(r.InputAdornment,{position:"end",sx:{display:"flex",alignItems:"center",justifyContent:"center"},children:[e.jsx(z.UploaderButton,{onChange:async({response:g})=>{const h=g?.data?.url||g?.data?.fileUrl;let S;h&&(S=await z.getImageSize(h).catch(()=>z.getVideoSize(h)).catch(()=>{}));let y=g?.data?.filename||"";y&&(y=`mediakit://${y}`),l?.({url:h,mediaKitUrl:y,width:S?.naturalWidth,height:S?.naturalHeight})}}),e.jsx(r.Tooltip,{title:"If you are using the 'mediaKitUrl' property, please use < import { getMediaKitAbsoluteUrl } from '@blocklet/pages-kit/builtin/utils' > to get the full address.",children:e.jsx(N.InfoRounded,{sx:{cursor:"default",mr:1},fontSize:"small"})})]})}:void 0}})}return s.type==="array"?e.jsx(ut,{label:i,value:Array.isArray(o)?o:[],onChange:n=>l?.(n),property:s,renderItem:({item:n,index:x,onChange:g})=>s.subProperties&&Object.keys(s.subProperties).length>0?e.jsx(r.Stack,{sx:{gap:1,width:"100%"},children:_.default(Object.values(s.subProperties),"index").filter(h=>h.data.visible!==!1).map(({data:h})=>h.key?e.jsx(F,{component:t,property:h,value:n[h.key],onChange:S=>{const y={...n,[h.key]:S};g(y)},size:"small",fullWidth:!0,defaultLocale:p,allComponents:u},h.id):null)},x):e.jsx(r.TextField,{size:j.size,fullWidth:!0,value:n,onChange:h=>g(h.target.value)})}):(console.error("Unsupported property type",s.type),null)}function Bt({NumberProps:t,...s}){const{getInputProps:o}=ae.unstable_useNumberInput(t),l=o();return e.jsx(r.TextField,{...s,slotProps:{htmlInput:l}})}const ge=`import React from '@blocklet/pages-kit/builtin/react'
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),r=require("@mui/material"),N=require("./chunks/state-DU3L5Lve.js"),Ce=require("@arcblock/ux/lib/Empty"),R=require("@arcblock/ux/lib/Locale/context"),se=require("@blocklet/code-editor"),ke=require("@mui/icons-material/AddRounded"),Se=require("@mui/icons-material/ArrowDownward"),Pe=require("@mui/icons-material/ArrowUpward"),we=require("@mui/icons-material/DeleteOutline"),Ie=require("lodash/sortBy"),I=require("react"),ne=require("react-use"),ie=require("@blocklet/pages-kit/builtin/color-picker"),V=require("@blocklet/pages-kit/builtin/uploader"),Te=require("@iconify-icon/react"),Be=require("lodash/isEmpty"),Oe=require("lodash/set"),Re=require("yaml"),Ae=require("lodash/cloneDeep"),ze=require("@arcblock/ux/lib/Toast"),H=require("@blocklet/pages-kit/components"),Ve=require("@blocklet/pages-kit/hooks/use-deep-compare-callback"),Ne=require("@blocklet/pages-kit/hooks/use-deep-compare-memo"),_e=require("@blocklet/pages-kit/utils/property"),ce=require("@mui/base"),A=require("@mui/icons-material"),U=require("@syncedstore/core"),Q=require("ahooks"),De=require("lodash/assign"),Ee=require("lodash/get"),Fe=require("lodash/has"),qe=require("lodash/isEqual"),Le=require("lodash/isNil"),Ue=require("lodash/isObject"),Me=require("lodash/keyBy"),We=require("lodash/omit"),Ke=require("lodash/pick"),He=require("lodash/reduce"),D=require("material-ui-popup-state/hooks"),Je=require("react-error-boundary"),L=require("@dnd-kit/core"),X=require("@dnd-kit/sortable"),$e=require("@dnd-kit/utilities"),de=require("@blocklet/pages-kit/utils/common"),O=t=>t&&t.__esModule?t:{default:t};function Ge(t){if(t&&t.__esModule)return t;const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const o in t)if(o!=="default"){const l=Object.getOwnPropertyDescriptor(t,o);Object.defineProperty(s,o,l.get?l:{enumerable:!0,get:()=>t[o]})}}return s.default=t,Object.freeze(s)}const M=O(Ce),Ye=O(ke),Qe=O(Se),Xe=O(Pe),Ze=O(we),_=O(Ie),E=O(Be),ue=O(Oe),Z=Ge(Re),ee=O(Ae),te=O(ze),et=O(De),tt=O(Ee),rt=O(Fe),st=O(qe),$=O(Le),nt=O(Ue),ot=O(Me),it=O(We),lt=O(Ke),at=O(He);function ct({error:t}){return e.jsx(r.Box,{children:e.jsx(r.Alert,{severity:"error",children:t.message})})}function dt({onClick:t,disabled:s,sx:o,...l}){return e.jsx(r.IconButton,{size:"small",color:"warning",variant:"outlined",disabled:s,onClick:t,...l,children:e.jsx(Ze.default,{fontSize:"small"})})}function ut({onClick:t,disabled:s,sx:o,...l}){return e.jsx(r.IconButton,{size:"small",color:"primary",disabled:s,onClick:t,...l,children:e.jsx(Xe.default,{fontSize:"small"})})}function pt({onClick:t,disabled:s,sx:o,...l}){return e.jsx(r.IconButton,{size:"small",color:"primary",disabled:s,onClick:t,...l,children:e.jsx(Qe.default,{fontSize:"small"})})}function xt({label:t,value:s,onChange:o,disabled:l=!1,itemLabel:f="",emptyHeight:p=40,property:u,renderItem:j,...m}){const{t:c,locale:d}=R.useLocaleContext(),a=ne.useUpdate(),i=I.useCallback(b=>{o(N.transformValue(b,u.type))},[o,u.type]),n=I.useMemo(()=>Array.isArray(s)?s:[],[s]),x=I.useCallback(()=>{const b=[...n,""];i(b),a()},[n,i,a]),g=I.useCallback(()=>{if(!u||!u.subProperties)return x();const b={};_.default(Object.values(u.subProperties),"index").forEach(({data:B})=>{if(!B.key)return;const z=B.locales?.[d]?.defaultValue??"";b[B.key]=z});const P=[...n,b];i(P),a()},[n,i,a,u,d,x]),h=I.useCallback(b=>{try{const v=JSON.parse(b);Array.isArray(v)?i(v):console.error("JSON解析结果不是数组")}catch(v){console.error("JSON解析错误:",v)}},[i]),k=I.useCallback(b=>{const v=n.filter((P,B)=>B!==b);i(v),a()},[n,i,a]),y=I.useCallback(b=>{if(b<=0)return;const v=[...n],P=v[b];v[b]=v[b-1],v[b-1]=P,i(v),a()},[n,i,a]),w=I.useCallback(b=>{if(b>=n.length-1)return;const v=[...n],P=v[b];v[b]=v[b+1],v[b+1]=P,i(v),a()},[n,i,a]),T=I.useCallback((b,v)=>{const P=[...n];P[b]=v,i(P)},[n,i]),C=u&&u.subProperties&&Object.keys(u.subProperties).length>0,S=I.useMemo(()=>[{field:"index",headerName:"#",width:40,align:"center",renderCell:({index:b})=>e.jsx(r.Typography,{variant:"body1",sx:{bgcolor:"action.hover",borderRadius:"50%",width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center",color:"text.secondary"},children:b+1})},{field:"content",headerName:"",renderCell:({row:b,index:v})=>j&&C?j({item:b,index:v,property:u,onChange:P=>T(v,P)}):e.jsx(r.TextField,{fullWidth:!0,size:"small",disabled:l,value:b,placeholder:f||`${c("item")} ${v+1}`,onChange:P=>T(v,P.target.value),...m})},{field:"actions",headerName:"",width:30,align:"center",renderCell:({index:b})=>e.jsxs(r.Stack,{direction:"column",spacing:.25,children:[e.jsx(ut,{disabled:l||b===0,onClick:()=>y(b)}),e.jsx(pt,{disabled:l||b===n.length-1,onClick:()=>w(b)}),e.jsx(dt,{disabled:l,onClick:()=>k(b)})]})}],[j,C,u,T,f,c,l,m,k,y,w,n.length]);return C?e.jsxs(r.Stack,{sx:{width:"100%",gap:1},children:[t&&e.jsx(r.FormLabel,{children:t}),n.length>0?e.jsx(r.TableContainer,{component:r.Paper,variant:"outlined",sx:{borderRadius:1,mb:1},children:e.jsxs(r.Table,{size:"small",sx:{"& .MuiTableCell-root":{py:.25,px:1,whiteSpace:"nowrap"},"& .MuiTableCell-head":{backgroundColor:"action.hover",py:.25,px:1},borderCollapse:"collapse"},children:[e.jsx(r.TableHead,{sx:{display:"none"},children:e.jsx(r.TableRow,{children:S.map(b=>e.jsx(r.TableCell,{width:b.width,align:b.align||"left",sx:{fontWeight:"bold"},children:b.renderHeader?b.renderHeader():b.headerName},b.field))})}),e.jsx(r.TableBody,{children:n.map((b,v,P)=>e.jsx(r.TableRow,{sx:{borderBottom:v<P.length-1?"1px solid":"none",borderColor:"divider","&:hover":{backgroundColor:"action.hover"}},children:S.map(B=>e.jsx(r.TableCell,{width:B.width,align:B.align||"left",sx:{borderBottom:"none"},children:B.renderCell({row:b,index:v,onChange:z=>T(v,z)})},`${v}-${B.field}`))},v))})]})}):e.jsx(M.default,{style:{fontSize:12,height:p},children:c("maker.properties.arrayEmpty")}),e.jsx(r.Button,{fullWidth:!0,size:"small",variant:"outlined",disabled:l,startIcon:e.jsx(Ye.default,{}),onClick:g,children:c("maker.properties.addArrayItem")})]}):e.jsxs(r.Stack,{sx:{width:"100%",gap:1},children:[t&&e.jsx(r.FormLabel,{children:t}),e.jsx(r.Box,{sx:{border:1,borderColor:"divider",borderRadius:1,minHeight:150},children:e.jsx(se.CodeEditor,{keyId:u.id,locale:d,language:"json",value:JSON.stringify(n,null,2),onChange:b=>h(b||""),fullScreenOptions:{enableEscExit:!0,targetContainer:()=>document.getElementById("parameters-config-dialog")||null}},u.id)})]})}function mt({ref:t,showMarkdown:s,markdown:o,onMarkdownChange:l,showUploader:f,value:p,meta:u,onChange:j,...m}){const[c,d]=I.useState("");I.useEffect(()=>{d(p||"")},[p,d]);const a=async()=>{if(c!==p){const n=N.getImageAbsoluteUrl(c);if(!n){j(c,void 0);return}const x=await V.getImageSize(n).catch(()=>V.getVideoSize(n)).catch(()=>{});j(c,{...x,filename:c})}};ne.useDebounce(()=>{c!==p&&j(c)},300,[c]),I.useImperativeHandle(t,()=>({submit:a}));const i={};return f&&(i.InputProps={sx:{pr:0},endAdornment:e.jsx(r.InputAdornment,{position:"end",sx:{mx:.5},children:e.jsx(V.UploaderButton,{onChange:async({response:n})=>{const x=n?.data?.filename,g=N.getImageAbsoluteUrl(x)||"";let h={};g&&(h=await V.getImageSize(g).catch(()=>V.getVideoSize(g)).catch(()=>{})),j(x,{...h,filename:x})}})})}),e.jsx(r.TextField,{size:"small",fullWidth:!0,...m,label:e.jsxs(r.Stack,{direction:"row",spacing:1,sx:{alignItems:"center"},children:[m.label,s&&e.jsxs(e.Fragment,{children:[" (",e.jsx(r.FormControlLabel,{checked:o,label:e.jsx(r.Box,{component:Te.Icon,icon:"tabler:markdown",sx:{verticalAlign:"middle"}}),labelPlacement:"start",control:e.jsx(r.Switch,{size:"small"}),sx:{ml:.25,pr:1},onChange:(n,x)=>l?.(x)}),")"]})]}),value:c,onChange:n=>d(n.target.value),...i,onKeyDown:n=>{n.keyCode!==229&&n.key==="Enter"&&a()},slotProps:{inputLabel:{shrink:!0,...m.InputLabelProps}}})}function ft({value:t,onChange:s,disableGradient:o=!1,...l}){const f=I.useRef(null);return e.jsxs(e.Fragment,{children:[e.jsx(mt,{...l,value:t,onChange:s,InputProps:{endAdornment:e.jsx(r.InputAdornment,{position:"end",children:e.jsx(ie.ColorItem,{color:t??"",style:{width:"1.5rem",height:"1.5rem",padding:0},onClick:()=>{f.current?.open({value:t??""})}})})}}),e.jsx(ie.ConfigColorDialog,{ref:f,onSave:({value:p},u)=>{s(p),u()},disableGradient:o})]})}function ht({label:t,value:s,onChange:o,property:l,component:f,defaultLocale:p,allComponents:u,PropertyValueField:j,onUpload:m}){const{locale:c}=R.useLocaleContext(),d=I.useRef(null);if(!E.default(l.subProperties)){const i=_.default(Object.values(l.subProperties||{}),"index").filter(n=>n.data.visible!==!1&&n.data.key);return e.jsxs(r.Stack,{sx:{width:"100%"},children:[e.jsx(r.FormLabel,{sx:{px:.25,py:.5},children:t}),e.jsx(r.Box,{children:e.jsx(r.Box,{sx:{position:"relative"},children:i.map((n,x)=>{const{data:g}=n,h=g.key??g.id,k=x===i.length-1;let y=null;try{s&&typeof s=="object"?y=s[h]:typeof s=="string"&&(y=(l.type==="yaml"?Z.parse(s||""):JSON.parse(s||"{}"))[h])}catch{}y==null&&(g.locales&&c&&g.locales[c]?y=g.locales[c].defaultValue:g.locales&&p&&g.locales[p]&&(y=g.locales[p].defaultValue));const w=C=>{try{let S={};if(typeof s=="string")try{S=l.type==="yaml"?Z.parse(s||""):JSON.parse(s||"{}")}catch{}else typeof s=="object"&&s!==null&&(S={...s});ue.default(S,h,C);const b=N.transformValue(S,l.type);o?.(b)}catch(S){console.error("Error updating property:",S)}},T=8;return e.jsxs(r.Box,{sx:{mb:k?0:1,display:"flex",flexDirection:"row"},children:[e.jsxs(r.Box,{sx:{position:"relative",width:24,flexShrink:0},children:[e.jsx(r.Box,{sx:{position:"absolute",left:T,top:0,height:16,width:0,borderLeft:"1px dashed",borderColor:"divider"}}),e.jsx(r.Box,{sx:{position:"absolute",left:T,top:16,width:12,height:0,borderTop:"1px dashed",borderColor:"divider"}}),!k&&e.jsx(r.Box,{sx:{position:"absolute",left:T,top:16,bottom:-8,width:0,borderLeft:"1px dashed",borderColor:"divider"}})]}),e.jsx(r.Box,{sx:{flexGrow:1},children:e.jsx(j,{component:f,property:g,value:y,onChange:w,size:"small",fullWidth:!0,defaultLocale:p,allComponents:u})})]},g.id)})})})]})}return e.jsx(r.Stack,{sx:{width:"100%",gap:2},children:e.jsxs(r.Stack,{sx:{width:"100%",position:"relative",pt:1,pb:"6px",px:"1px",minHeight:50,".monaco-editor,.overflow-guard":{borderRadius:1}},children:[e.jsx(r.FormLabel,{sx:{position:"absolute",left:0,top:0,transform:"translate(0px, -7px) scale(0.75)"},children:t}),e.jsx(se.CodeEditor,{keyId:l.id,locale:c,language:l.type==="yaml"?"yaml":"json",value:typeof s=="string"?s:"",onChange:i=>{o?.(i)},onUpload:i=>{d.current=i,m&&m(i)},fullScreenOptions:{enableEscExit:!0,targetContainer:()=>document.getElementById("parameters-config-dialog")||null}},l.id),e.jsx(r.Box,{component:"fieldset",sx:{pointerEvents:"none",position:"absolute",left:0,top:-5,width:"100%",height:"100%",border:1,borderColor:"rgba(0, 0, 0, 0.23)",borderRadius:1,px:1,py:0},children:e.jsx(r.Box,{component:"legend",sx:{fontSize:"0.75em"},children:e.jsx(r.Box,{component:"span",sx:{opacity:0},children:t})})})]})})}function le(t){return!!t.shared}const bt={setActivatorNodeRef:()=>{},attributes:{},listeners:{}};function pe({disabled:t,list:s,renderItem:o,...l}){const f=_.default(Object.entries(s),([,x])=>x.index),p=f.map(([x])=>x),[u,j]=I.useState(null),[m,c]=I.useState(null),d=L.useSensors(L.useSensor(L.PointerSensor,{activationConstraint:{distance:8}})),a=x=>{const{active:g}=x,h=s[g.id];h&&(c(g.id),j(h.data))},i=()=>{},n=x=>{const{active:g,over:h}=x;if(c(null),j(null),!h||g.id===h.id)return;const k=g.id,y=h.id;if(s[k]&&s[y]){const w=()=>{const S=Object.entries(s).sort(([,B],[,z])=>B.index-z.index),b=S.findIndex(([B])=>B===k),v=S.findIndex(([B])=>B===y),[P]=S.splice(b,1);P&&S.splice(v,0,P),S.forEach(([,B],z)=>{B.index=z})},T=U.getYjsValue(s)?.doc;T?T.transact(()=>{w()}):w()}};return e.jsxs(L.DndContext,{sensors:d,collisionDetection:L.closestCorners,onDragStart:a,onDragOver:i,onDragEnd:n,children:[e.jsx(X.SortableContext,{items:p,strategy:X.verticalListSortingStrategy,children:e.jsx(r.Stack,{...l,children:f.map(([x,g],h)=>e.jsx(gt,{id:x,disabled:t,isDragging:m===x,children:({dragHandle:k})=>o(g.data,h,{isDragging:m===x,dragHandle:k,drag:null,drop:null,preview:null})},x))})}),e.jsx(L.DragOverlay,{children:u&&m?e.jsx(r.Box,{sx:{opacity:.8,backgroundColor:"background.paper",border:"1px solid",borderColor:"primary.main",borderRadius:1,boxShadow:2,maxWidth:400},children:o(u,0,{isDragging:!0,dragHandle:bt,drag:null,drop:null,preview:null})}):null})]})}function gt({id:t,disabled:s,isDragging:o,children:l}){const{attributes:f,listeners:p,setNodeRef:u,setActivatorNodeRef:j,transform:m,transition:c}=X.useSortable({id:t,disabled:s}),d={transform:$e.CSS.Transform.toString(m),transition:c,opacity:o?.5:1};return e.jsx(r.Box,{ref:u,style:d,children:l({dragHandle:{setActivatorNodeRef:j,attributes:f??{},listeners:{...p??{}}}})})}function jt({disabled:t,isDragging:s,children:o,onDelete:l,onVisibilityChange:f,visible:p=!0,onSharedChange:u,shared:j=!1,actions:m,alwaysShowActions:c=!1,dragHandle:d}){const{t:a}=R.useLocaleContext(),i=d?.attributes??{},n=d?.listeners??{},x=d?.setActivatorNodeRef;return e.jsx(r.Box,{sx:{":hover .hover-visible":{maxWidth:"100%"},opacity:p?1:.5},children:e.jsxs(r.Box,{sx:{position:"relative"},children:[e.jsx(r.Box,{sx:{flex:1,borderRadius:.5,bgcolor:s?"action.hover":"background.paper",opacity:.9999},children:o}),!t&&e.jsx(r.Box,{className:c?"":"hover-visible",sx:{maxWidth:c?"100%":0,overflow:"hidden",position:"absolute",right:2,top:2,transition:"max-width 0.3s ease-in-out"},children:e.jsxs(r.Stack,{direction:"row",sx:{bgcolor:g=>r.alpha(g.palette.grey[200],.9),borderRadius:1,p:.5,[`.${r.buttonClasses.root}`]:{minWidth:24,width:24,height:24,p:0}},children:[m,u&&e.jsx(r.Tooltip,{title:a(j?"disableSharing":"enableSharing"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{onClick:()=>u(!j),children:j?e.jsx(A.SyncRounded,{sx:{fontSize:"1.25rem",color:"primary.main"}}):e.jsx(A.SyncDisabledRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}})})}),f&&e.jsx(r.Tooltip,{title:a(p?"hideParameter":"showParameter"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{onClick:()=>f(!p),children:p?e.jsx(A.VisibilityOffRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}}):e.jsx(A.VisibilityRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}})})}),l&&e.jsx(r.Tooltip,{title:a("delete"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{onClick:l,children:e.jsx(A.DeleteOutlineRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}})})}),e.jsx(r.Tooltip,{title:a("dragSort"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{ref:x,...i,...n,children:e.jsx(A.DragIndicatorRounded,{sx:{color:"grey.500"}})})})]})})]})})}function yt(t){const s=["string","json","array","url","multiline"],o=["style","fontSize","color","content","type"];return!!(s.includes(t.type||"")&&!o.includes(t.key||""))}function vt(t,s,o){return t.locales&&t.locales[s]&&t.locales[s].name?t.locales[s].name:o&&t.locales&&t.locales[o]&&t.locales[o].name?t.locales[o].name:t.key?t.key:t.id}const xe=(t,s,o,l)=>{const f={};return _.default(Object.entries(t),([,u])=>u.index).forEach(([u,j])=>{const m=j.data;if(!m)return;const c=m.key||m.id,d=o?vt(m,o,l||""):c,a=s?.[m.id],i={key:c,isNeedGenerate:a?.isNeedGenerate??yt(m),describe:a?.describe??"",displayName:d};m.subProperties&&!E.default(m.subProperties)&&(i.subProperties=xe(m.subProperties,a?.subProperties,o,l)),f[m.id]=i}),f};function Ct({open:t,onClose:s,onConfirm:o,component:l,initialConfig:f,locale:p,defaultLocale:u,title:j,loading:m=!1}){const{t:c}=R.useLocaleContext(),[d,a]=I.useState(null);I.useEffect(()=>{if(t&&l){const h={properties:{}};if(l.properties){const k=f?.properties;h.properties=xe(l.properties,k,p,u)}a(h)}},[t,l,f,p,u]);const i=()=>{s()},n=()=>{d&&(o(d),s())},x=(h,k,y)=>{if(!d||!h.length)return;const w=JSON.parse(JSON.stringify(d));let T=w.properties,C=null;for(let b=0;b<h.length-1;b++){const v=h[b];if(!v||!T[v])return;C=T;const P=T[v];P.subProperties||(P.subProperties={}),T=P.subProperties}const S=h[h.length-1];if(S){if("isNeedGenerate"in y){const b=y.isNeedGenerate,v={...k,...y};if(k.subProperties&&!E.default(k.subProperties)){const P=(B,z)=>{const q={};return Object.entries(B).forEach(([ve,W])=>{const Y={...W};z!==null&&(Y.isNeedGenerate=z),W.subProperties&&!E.default(W.subProperties)&&(Y.subProperties=P(W.subProperties,z!==null?z:null)),q[ve]=Y}),q};v.subProperties=P(k.subProperties,b===!1?!1:null)}if(h.length===1)w.properties[S]=v;else if(C&&h.length>=2){const P=h[h.length-2];P&&C[P]&&(C[P].subProperties||(C[P].subProperties={}),C[P].subProperties[S]=v)}}else if(h.length===1)w.properties[S]={...k,...y};else if(C&&h.length>=2){const b=h[h.length-2];b&&C[b]&&C[b].subProperties&&(C[b].subProperties[S]={...k,...y})}a(w)}},g=(h,k=[],y=!0)=>{if(!h||E.default(h))return e.jsx(M.default,{children:c("maker.properties.noProperties")});const w=_.default(Object.entries(h),([,T])=>T.displayName);return e.jsx(r.Stack,{spacing:1.5,children:w.map(([T,C],S)=>{const b=[...k,T],v=S===w.length-1,P=C.subProperties&&!E.default(C.subProperties),B=C.displayName||T,z=!y;return e.jsx(r.Box,{sx:{position:"relative"},children:e.jsxs(r.Stack,{direction:"row",children:[k.length>0&&e.jsxs(r.Box,{sx:{position:"relative",width:24,flexShrink:0},children:[e.jsx(r.Box,{sx:{position:"absolute",left:8,top:0,height:16,width:0,borderLeft:"1px dashed",borderColor:"divider"}}),e.jsx(r.Box,{sx:{position:"absolute",left:8,top:16,width:12,height:0,borderTop:"1px dashed",borderColor:"divider"}}),!v&&e.jsx(r.Box,{sx:{position:"absolute",left:8,top:16,bottom:-12,width:0,borderLeft:"1px dashed",borderColor:"divider"}})]}),e.jsxs(r.Stack,{spacing:1.5,sx:{flexGrow:1},children:[e.jsxs(r.Stack,{direction:{xs:"column",md:"row"},spacing:1.5,sx:{alignItems:{xs:"flex-start",md:"center"},width:"100%"},children:[e.jsx(r.FormControlLabel,{control:e.jsx(r.Checkbox,{checked:C.isNeedGenerate,disabled:z,onChange:q=>{x(b,C,{isNeedGenerate:q.target.checked})}}),label:B,sx:{minWidth:"180px",maxWidth:"280px",mr:2,"& .MuiFormControlLabel-label":{wordBreak:"break-word"}}}),e.jsx(r.TextField,{size:"small",fullWidth:!0,label:c("maker.properties.llmPropertyDescribe"),value:C.describe,onChange:q=>{x(b,C,{describe:q.target.value})},disabled:!C.isNeedGenerate})]}),P&&e.jsx(r.Box,{sx:{ml:3},children:g(C.subProperties,b,C.isNeedGenerate&&y)})]})]})},T)})})};return e.jsxs(r.Dialog,{open:t,onClose:i,maxWidth:"lg",fullWidth:!0,children:[e.jsx(r.DialogTitle,{children:j||c("maker.properties.llmConfigTitle")}),e.jsx(r.DialogContent,{children:e.jsx(r.Box,{sx:{my:3},children:m?e.jsx(r.Typography,{children:c("maker.properties.loading")}):l?d?e.jsxs(r.Stack,{spacing:3,children:[e.jsx(r.Typography,{variant:"subtitle2",children:c("maker.properties.llmConfigInstructions")}),g(d.properties)]}):e.jsx(r.Typography,{children:c("maker.properties.loading")}):e.jsx(r.Typography,{color:"error",children:c("maker.properties.componentNotFound")})})}),e.jsxs(r.DialogActions,{children:[e.jsx(r.Button,{onClick:i,children:c("common.cancel")}),e.jsx(r.Button,{variant:"contained",onClick:n,disabled:!d||m,children:c("common.confirm")})]})]})}function kt({label:t,value:s,onChange:o}){const[l,f]=I.useState(!1);return e.jsxs(r.Stack,{sx:{gap:1},children:[e.jsx(r.TextField,{label:t,size:"small",value:s,onChange:p=>o?.(p.target.value),slotProps:{input:{sx:{pr:0},endAdornment:e.jsx(r.InputAdornment,{position:"end",children:e.jsx(V.UploaderButton,{onChange:({response:p})=>{const u=p?.data?.filename;u&&o?.(u)}})})}}}),s&&e.jsx(r.Box,{component:"img",src:N.getImageAbsoluteUrl(s),alt:t,onClick:()=>f(!0),sx:{maxWidth:100,maxHeight:100,width:"100%",objectFit:"contain",borderRadius:1,cursor:"pointer"}}),e.jsx(r.Dialog,{open:l,onClose:()=>f(!1),children:e.jsx(r.Box,{component:"img",sx:{objectFit:"contain"},src:N.getImageAbsoluteUrl(s),alt:t})})]})}function re(t,s=""){return at.default(t,(o,l,f)=>{const p=s?`${s}.${f}`:f;return nt.default(l)?et.default(o,re(l,p)):o[p]=l,o},{})}const St=[{value:"string",label:"Text"},{value:"multiline",label:"Text (Multiline)"},{value:"number",label:"Number"},{value:"decimal",label:"Decimal"},{value:"boolean",label:"Boolean"},{value:"color",label:"Color"},{value:"url",label:"URL (Upload)"},{value:"json",label:"JSON"},{value:"yaml",label:"YAML"},{value:"array",label:"Array"},{value:"component",label:"Component"},{value:"custom",label:"Custom (Render by a Component)"}];function K(t,s,o){return!t||!o?!1:Object.values(t).some(({data:l})=>l.id!==s&&l.key===o)}function J(t,s){return!t||!s?!1:t[s]?.data.visible??!0}function me(t,s){return!t||!s?!1:t[s]?.data.shared??!1}function Pt({componentId:t}){const{state:{components:s}}=N.useStore(),l=s[t]?.data;return l?e.jsx(r.Stack,{sx:{maxHeight:"100%",overflow:"auto"},children:e.jsx(r.Box,{sx:{p:2},children:e.jsx(Je.ErrorBoundary,{FallbackComponent:ct,resetKeys:[t],children:e.jsx(wt,{value:l,componentId:t})})})}):null}function wt({value:t,componentId:s}){const{t:o}=R.useLocaleContext(),{localState:{currentLocale:l,customComponentPreviewerProperties:f},state:{config:{defaultLocale:p}},localActions:{setCustomComponentPreviewerProperties:u}}=N.useStore(),j=U.getYjsValue(t).doc,m=N.useAllComponents(),c=I.useMemo(()=>f?.[s]??{},[s,f]),d=t.renderer?.type||"react-component",a=d==="component-template",i=Q.useReactive({componentId:s,propertiesValue:{...c}});return I.useEffect(()=>{i.componentId!==s&&(i.componentId=s,i.propertiesValue={...c})},[s,c,i]),Q.useDeepCompareEffect(()=>{if(i.componentId!==s)return;const n=Object.fromEntries(Object.values(t.properties??{}).map(({data:x})=>[x.id,{value:i.propertiesValue[x.id]?.value??_e.parsePropertyValue(x,x.locales?.[l]?.defaultValue??x.locales?.[p]?.defaultValue,{locale:l,defaultLocale:p})}]));u(s,n)},[i.propertiesValue,s,i.componentId]),e.jsx(r.Stack,{sx:{height:"100%"},children:e.jsxs(r.Stack,{sx:{gap:2},children:[e.jsx(fe,{config:t}),e.jsxs(e.Fragment,{children:[e.jsx(be,{config:t,currentLocale:l,defaultLocale:p,allComponents:m,onUpdateConfig:n=>{j.transact(()=>{n(t)})}}),e.jsxs(r.Stack,{direction:"row",sx:{gap:2,justifyContent:"space-between",alignItems:"center"},children:[e.jsx(r.Typography,{variant:"subtitle1",children:o("renderer")}),e.jsxs(r.TextField,{hiddenLabel:!0,size:"small",select:!0,value:d,disabled:a,onChange:n=>{j.transact(()=>{const x=n.target.value;t.renderer??={type:x},t.renderer.type=x})},slotProps:{select:{autoWidth:!0}},children:[e.jsx(r.MenuItem,{value:"component-template",disabled:!0,children:o("maker.components.componentTemplate")}),e.jsx(r.MenuItem,{value:"react-component",children:"React Component"}),e.jsx(r.MenuItem,{value:"component",children:"Custom Component"})]})]}),d==="component"&&e.jsx(zt,{value:t}),d==="react-component"&&e.jsx(At,{value:t}),e.jsx(oe,{config:t,currentLocale:l,defaultLocale:p,allComponents:m,propertiesValue:i.propertiesValue,onChange:({value:n,id:x,path:g})=>{const h=[...g,"data"];if(!tt.default(t,h)){te.default.warning(o("cannotFindPropertyKey",{key:h.join(".")}));return}i.propertiesValue[x]={value:n.value}}})]})]})})}function fe({config:t}){const{t:s}=R.useLocaleContext();return e.jsx(V.UploaderProvider,{children:e.jsxs(r.Stack,{sx:{gap:2},children:[e.jsx(r.Typography,{variant:"subtitle1",children:s("basicInfo")}),e.jsx(r.TextField,{label:s("name"),size:"small",value:t.name||"",onChange:o=>t.name=o.target.value}),e.jsx(r.TextField,{label:s("description"),size:"small",multiline:!0,minRows:2,maxRows:8,value:t.description||"",onChange:o=>t.description=o.target.value,slotProps:{input:{endAdornment:e.jsx(r.InputAdornment,{position:"end",sx:{mt:-1.5},children:e.jsx(Vt,{config:t})})},htmlInput:{maxLength:2048}}}),e.jsx(r.Autocomplete,{size:"small",options:[],multiple:!0,freeSolo:!0,value:t.tags??[],onChange:(o,l)=>t.tags=l,renderInput:o=>e.jsx(r.TextField,{label:s("tags"),...o})}),e.jsx(kt,{label:s("previewImage"),value:t.previewImage||"",onChange:o=>t.previewImage=o})]})})}function he({data:t,params:s,visible:o,shared:l,config:f,currentLocale:p,defaultLocale:u,allComponents:j,onUpdateConfig:m}){const{t:c}=R.useLocaleContext(),d=I.useMemo(()=>t.type==="json"||t.type==="yaml"||t.type==="array"?Ot:F,[t.type]);return e.jsx(jt,{preview:s.preview,drop:s.drop,drag:s.drag,isDragging:s.isDragging,dragHandle:s.dragHandle,onDelete:()=>{m(a=>{if(a.properties){const n=Object.entries(a.properties).sort(([,g],[,h])=>g.index-h.index);delete a.properties[t.id],n.filter(([g])=>g!==t.id).forEach(([,g],h)=>{g.index=h})}})},visible:o,onVisibilityChange:a=>{m(i=>{const n=i.properties[t.id].data;n.visible=a})},shared:l,onSharedChange:a=>{m(i=>{const n=i.properties[t.id].data;n.shared=a})},alwaysShowActions:!0,children:e.jsxs(r.Stack,{direction:"column",sx:{gap:2},children:[e.jsx(r.TextField,{label:c("key"),size:"small",required:!0,sx:{width:"calc(100% - 104px - 8px)",flex:1,"& .MuiOutlinedInput-root":{borderColor:t.key?K(f.properties,t.id,t.key)?"warning.main":void 0:"error.main"},"& .MuiFormLabel-root":{color:t.key?K(f.properties,t.id,t.key)?"warning.main":"text.secondary":"error.main"},"& .MuiFormLabel-root.Mui-focused":{color:t.key?K(f.properties,t.id,t.key)?"warning.main":"primary.main":"error.main"}},value:t.key||"",onChange:a=>{m(i=>{const n=i.properties[t.id].data;n.key=a.target.value.trim()})},slotProps:{input:{endAdornment:!t.key||t.key&&K(f.properties,t.id,t.key)?e.jsx(r.InputAdornment,{position:"end",sx:{width:16,ml:0},children:e.jsx(r.Tooltip,{title:t.key?c("duplicateKey"):c("requiredKey"),children:e.jsx(A.InfoRounded,{sx:{color:t.key?"warning.main":"error.main",fontSize:16}})})}):null}}}),e.jsxs(r.Stack,{direction:"row",sx:{gap:1},children:[e.jsx(r.TextField,{label:c("label"),size:"small",sx:{flex:1},value:(t.locales?.[p]?.name??t.locales?.[u]?.name)||"",onChange:a=>{m(i=>{const n=i.properties[t.id].data;n.locales??={},n.locales[p]??={},n.locales[p].name=a.target.value})}}),e.jsx(r.TextField,{label:c("type"),size:"small",select:!0,sx:{flex:1},value:t.type==="string"&&t.multiline?"multiline":t.type||"string",onChange:a=>{m(i=>{const n=i.properties[t.id].data;if(n.locales)for(const g of Object.keys(n.locales))n.locales[g].defaultValue=void 0;const x=a.target.value;x==="multiline"?(n.type="string",n.multiline=!0):(typeof n.multiline<"u"&&delete n.multiline,n.type=x)})},children:St.map(a=>e.jsx(r.MenuItem,{value:a.value,children:a.label},a.value))})]}),e.jsxs(r.Stack,{direction:"row",sx:{gap:1},children:[e.jsx(d,{allComponents:j,defaultLocale:u,component:f,property:t,label:c("defaultValue"),size:"small",fullWidth:!0,value:t.locales?.[p]?.defaultValue,onChange:(a,i)=>{m(n=>{const x=n.properties[t.id].data;if(i?.forceUpdateProperty){const g=re(x),h=re(a);Object.keys(h).forEach(k=>{g[k]||ue.default(x,k,h[k])})}else x.locales??={},x.locales[p]??={},x.locales[p].defaultValue=a})}}),t.type==="custom"?e.jsx(r.Box,{children:e.jsx(Tt,{property:t,allComponents:j})}):null]})]})})}function It(t,s){const[o,l]=I.useState(0);return I.useEffect(()=>{const p=setTimeout(()=>{if(t.current){let u=t.current.parentElement,j=0;for(;u;)u.classList.contains("property-container")&&j++,u=u.parentElement;l(j)}},100);return()=>clearTimeout(p)},[t,s]),o}function be({config:t,currentLocale:s,defaultLocale:o,allComponents:l,onUpdateConfig:f,useI18nEditor:p=!0}){const{t:u}=R.useLocaleContext(),j=D.usePopupState({variant:"dialog"}),m=t.properties&&_.default(Object.values(t.properties),"index");return e.jsx(V.UploaderProvider,{children:e.jsxs(r.Stack,{sx:{gap:2},children:[e.jsxs(r.Stack,{direction:"row",sx:{gap:1,alignItems:"center",justifyContent:"space-between"},children:[e.jsx(r.Typography,{variant:"subtitle1",children:u("properties")}),e.jsx(r.Box,{sx:{flex:1}}),p&&e.jsx(r.Button,{sx:{minWidth:32,minHeight:32,p:0},...D.bindTrigger(j),children:e.jsx(A.TranslateRounded,{fontSize:"small"})})]}),t.properties&&Object.keys(t.properties).length>0?e.jsx(pe,{component:r.Stack,gap:2,list:t.properties,renderItem:(c,d,a)=>{const i=J(t.properties,c.id),n=me(t.properties,c.id);return e.jsx(r.Paper,{elevation:0,className:"property-container",sx:{p:1.25,borderRadius:1,border:i?"1px solid":"1px dashed",borderColor:"divider"},children:e.jsx(r.Stack,{sx:{gap:2},children:e.jsx(he,{data:c,params:a,visible:i,shared:n,config:t,currentLocale:s,defaultLocale:o,allComponents:l,onUpdateConfig:f})})},c.id)}}):e.jsx(M.default,{style:{fontSize:12},children:u("maker.properties.noProperties")}),e.jsx(r.Button,{fullWidth:!0,variant:"outlined",className:"ignore-style-override",onClick:()=>{f(c=>{const d=de.nextId();c.properties??={},c.properties[d]??={index:m?.length||0,data:{id:d,shared:!1}}})},startIcon:e.jsx(A.AddRounded,{}),children:u("addObject",{object:u("property")})}),p&&e.jsx(ge,{...D.bindDialog(j),component:t})]})})}function Tt({property:t,allComponents:s}){const o=D.usePopupState({variant:"popper"});return e.jsxs(e.Fragment,{children:[e.jsx(r.Button,{sx:{minWidth:0},...D.bindTrigger(o),children:e.jsx(A.SettingsRounded,{fontSize:"small"})}),e.jsx(r.Popper,{...D.bindPopper(o),children:e.jsx(ce.ClickAwayListener,{onClickAway:o.close,children:e.jsx(r.Paper,{children:e.jsx(r.Box,{sx:{width:500,p:2},children:e.jsx(G,{value:t.componentId,onChange:(l,f)=>t.componentId=f,allComponents:s})})})})})]})}function Bt({value:t,valueImmutable:s,onChange:o,defaultLocale:l,allComponents:f}){const[p,u]=I.useState(!1),{t:j,locale:m}=R.useLocaleContext(),c=typeof t?.componentId=="string"?f[t.componentId]?.data:void 0;return c?e.jsxs(r.Box,{sx:{width:"100%",position:"relative"},children:[e.jsx(r.IconButton,{sx:{minWidth:0},disabled:!c,size:"small",onClick:()=>u(!p),color:p?"primary":"default",children:e.jsx(A.SettingsRounded,{fontSize:"small"})}),p&&e.jsx(r.Collapse,{in:p,timeout:"auto",unmountOnExit:!0,sx:{width:"100%",zIndex:10},children:e.jsxs(r.Paper,{elevation:1,sx:{mt:1,p:2,borderRadius:1,border:"1px solid",borderColor:"divider",width:"100%"},children:[e.jsx(r.Box,{sx:{width:"100%",mb:2},children:e.jsx(oe,{config:c,currentLocale:m,defaultLocale:l,allComponents:f,propertiesValue:t?.properties,onChange:({id:d,value:a})=>{const i=ee.default(a.value),n=JSON.parse(JSON.stringify(t));n?.componentId&&(s?o?.({...n,properties:{...n.properties,[d]:{value:i}}}):(n.properties=n.properties??{},n.properties[d]={value:i},o?.(n)))}})}),e.jsx(r.Button,{size:"small",onClick:()=>u(!1),sx:{mt:1},children:j("close")})]})})]}):null}function ge({type:t="properties",component:s,...o}){const{t:l}=R.useLocaleContext(),{state:{components:f,supportedLocales:p,config:{defaultLocale:u}}}=N.useStore(),j=N.useAllComponents(),m=U.getYjsValue(s).doc,c=t==="properties"?s.properties:t==="parameters"&&s.renderer?.type==="component"?f[s.renderer.componentId]?.data.properties:void 0,d=s.renderer?.type==="component"?s:void 0;return e.jsxs(r.Dialog,{...o,fullWidth:!0,maxWidth:"lg",children:[e.jsx(r.DialogTitle,{children:l("i18nEditorTitle")}),e.jsx(r.DialogContent,{children:c&&e.jsx(r.Stack,{children:e.jsxs(r.Table,{stickyHeader:!0,sx:{td:{verticalAlign:"top"}},children:[e.jsx(r.TableHead,{children:e.jsx(r.TableRow,{children:p.map(({locale:a,name:i})=>e.jsx(r.TableCell,{children:e.jsxs(r.Typography,{sx:{color:"text.primary"},children:[i,u===a&&e.jsx(A.StarRounded,{sx:{fontSize:12}})]})},a))})}),e.jsx(r.TableBody,{children:_.default(Object.values(c),"index").map(({data:a})=>e.jsx(r.TableRow,{children:p.map(({locale:i})=>e.jsx(r.TableCell,{children:e.jsx(r.Stack,{sx:{gap:1},children:t==="properties"?e.jsxs(e.Fragment,{children:[e.jsx(r.TextField,{size:"small",label:"Key",value:a.key||"",onChange:n=>{m.transact(()=>{a.key=n.target.value.trim()})}}),e.jsx(r.TextField,{size:"small",label:l("label"),value:(a.locales?.[i]?.name??a.locales?.[u]?.name)||"",onChange:n=>{m.transact(()=>{a.locales??={},a.locales[i]??={},a.locales[i].name=n.target.value})}}),e.jsx(r.Box,{children:e.jsx(F,{allComponents:j,defaultLocale:u,component:s,property:a,size:"small",fullWidth:!0,label:"Default Value",valueImmutable:$.default(a.locales?.[i]?.defaultValue),value:a.locales?.[i]?.defaultValue??a.locales?.[u]?.defaultValue,onChange:n=>{m.transact(()=>{a.locales??={},a.locales[i]??={},a.locales[i].defaultValue=n})}})})]}):t==="parameters"&&d?e.jsx(r.Box,{children:e.jsx(F,{allComponents:j,defaultLocale:u,component:s,property:a,size:"small",fullWidth:!0,valueImmutable:$.default(d.renderer.properties?.[a.id]?.locales?.[i]?.value),value:d.renderer.properties?.[a.id]?.locales?.[i]?.value??d.renderer.properties?.[a.id]?.locales?.[u]?.value??a.locales?.[i]?.defaultValue??a.locales?.[u]?.defaultValue,onChange:n=>{m.transact(()=>{d.renderer.properties??={},d.renderer.properties[a.id]??={},d.renderer.properties[a.id].locales??={},d.renderer.properties[a.id].locales[i]??={},d.renderer.properties[a.id].locales[i].value=n})}})}):null},a.id)},i))},a.id))})]})})}),e.jsx(r.DialogActions,{children:e.jsx(r.Button,{onClick:a=>o.onClose?.(a,"escapeKeyDown"),children:l("close")})})]})}const ae=(t,s)=>o=>{const l=[o.palette.info.main,o.palette.primary.main,o.palette.secondary.main,o.palette.success.main,o.palette.warning.main],f=Math.min(l.length-1,t),p=l[f],u=r.alpha(p,.5),j=r.alpha(p,1);return{borderColor:`${u} !important`,borderLeft:"3px solid !important",borderLeftColor:u,color:j,...s}};function Ot({property:t,onChange:s,defaultLocale:o,allComponents:l}){const{t:f,locale:p}=R.useLocaleContext(),u=I.useRef(null),j=It(u,t),m=I.useCallback(()=>{if(!(t.type!=="json"&&t.type!=="yaml"&&t.type!=="array")&&t.subProperties)try{let c={};_.default(Object.values(t.subProperties),"index").filter(i=>i.data.visible!==!1&&i.data.key).forEach(({data:i})=>{if(!i.key)return;let n=i.locales?.[p]?.defaultValue??i.locales?.[o]?.defaultValue;if(i.type==="number")n=Number(n);else if(i.type==="boolean")n=n===!0||n==="true";else if((i.type==="json"||i.type==="yaml")&&typeof n=="string")try{i.type==="json"?n=JSON.parse(n):n=Z.parse(n)}catch(x){console.error("Error parsing nested value",n,x),n={}}c[i.key]=n}),t.type==="array"&&!Array.isArray(c)&&(c=E.default(c)?[]:[c]);const a=N.transformValue(c,t.type);s?.(a)}catch(c){console.error("Error converting structure to text:",c)}},[t,p,o,s]);return t.type!=="json"&&t.type!=="yaml"&&t.type!=="array"?null:e.jsxs(r.Stack,{direction:"column",ref:u,sx:{gap:1.5,width:"100%"},children:[e.jsx(r.Divider,{sx:{mt:-1},children:e.jsx(r.Typography,{variant:"caption",sx:{color:"text.secondary"},children:f("maker.properties.subProperties")})}),t.subProperties&&Object.keys(t.subProperties).length>0?e.jsx(pe,{component:r.Stack,gap:2,list:t.subProperties,renderItem:(c,d,a)=>{const i=c.visible!==!1,n=c.shared??!1;return e.jsx(r.Paper,{elevation:0,className:"property-container",sx:{p:1.25,borderRadius:1,border:i?"1px solid":"1px dashed","&":ae(j)},children:e.jsx(r.Stack,{sx:{gap:2},children:e.jsx(he,{data:c,params:a,visible:i,shared:n,config:{properties:t.subProperties},currentLocale:p,defaultLocale:o,allComponents:l,onUpdateConfig:x=>{try{const g={properties:t.subProperties||{}};x(g);const h={...t,subProperties:g.properties};s?.(h,{forceUpdateProperty:!0}),m()}catch(g){console.error("Error updating property:",g)}}})})},c.id)}}):e.jsx(M.default,{style:{fontSize:12,height:100},children:f("maker.properties.noSubProperties")}),e.jsx(r.Button,{fullWidth:!0,variant:"outlined",className:"ignore-style-override",size:"small",startIcon:e.jsx(A.AddRounded,{}),onClick:()=>{try{const c=t.subProperties||{},d=de.nextId(),i={index:Object.values(c).length,data:{id:d,key:"",type:"string",visible:!0,shared:!1,locales:{[p]:{name:"",defaultValue:""}},subProperties:{}}},n={...t,subProperties:{...c,[d]:i}};s?.(n,{forceUpdateProperty:!0}),m()}catch(c){console.error("Error adding property:",c)}},sx:{"&":ae(j,{})},children:f("maker.properties.addSubProperty")})]})}function F({component:t,property:s,value:o,onChange:l,valueImmutable:f,defaultLocale:p,allComponents:u,...j}){const{locale:m}=R.useLocaleContext(),c=V.useUploader(),d=I.useRef(null),a=()=>{const n=c?.current?.getUploader();n?.open(),d.current&&n.onceUploadSuccess(({response:x})=>{let g=x?.data?.filename||"";g&&(g=`mediakit://${g}`,o&&!o.includes("mediakit://")&&(g+=" # please use < import { getMediaKitAbsoluteUrl } from '@blocklet/pages-kit/builtin/utils' > to get the full address")),d.current?.(g)})},i=j.label??(s.locales?.[m]?.name||s.locales?.[p]?.name||s.key||s.id);if(s.type==="number")return e.jsx(Rt,{...j,label:i,NumberProps:{value:["number","string"].includes(typeof o)?o:null,onChange:(n,x)=>l?.(x)}});if(s.type==="decimal")return e.jsx(r.TextField,{...j,label:i,type:"text",value:o??"",onChange:n=>{const x=n.target.value;if(x===""||x==="-"){l?.(x);return}if(/^-?(?!.*\..*\.)[0-9]*(\.[0-9]{0,9})?$/.test(x)){let h=x;/^-?[1-9]+[0-9]*(\.[0-9]{1,9})?$/.test(h)&&(h=Number(h)),l?.(h)}}});if(s.type==="boolean")return e.jsx(r.FormControlLabel,{label:i,labelPlacement:"start",control:e.jsx(r.Switch,{checked:o===!0,onChange:(n,x)=>l?.(x)})});if(s.type==="color")return e.jsx(ft,{label:i,value:o,onChange:n=>{l?.(n)}});if(s.type==="json"||s.type==="yaml")return e.jsx(ht,{label:i,value:o,onChange:n=>{l?.(n)},property:s,component:t,defaultLocale:p,allComponents:u,PropertyValueField:F,onUpload:n=>{d.current=n,a()}});if(s.type==="custom"){const n=u[s.componentId]?.data;return n?e.jsx(r.Box,{sx:{width:"100%"},children:e.jsx(H.CustomComponentRenderer,{componentId:n.id,props:{label:i,value:o,onChange:l},locale:m,dev:{mode:"draft",components:u,defaultLocale:p}})}):e.jsx(r.TextField,{...j,label:i,disabled:!0,placeholder:"Click right button select a component"})}if(s.type==="component")return e.jsxs(r.Stack,{direction:"column",sx:{width:"100%",gap:1},children:[e.jsx(G,{allComponents:u,label:i,value:o?.componentId,onChange:(n,x)=>{f||!o?l?.({...o&&JSON.parse(JSON.stringify(o)),componentId:x}):typeof o=="object"&&(o.componentId=x,l?.({...o&&JSON.parse(JSON.stringify(o)),componentId:x}))}}),o?.componentId&&e.jsx(Bt,{value:o,valueImmutable:f,onChange:l,defaultLocale:p,allComponents:u})]});if(!s.type||["string","url","multiline"].includes(s.type)){let n=s.type==="string"?s.multiline:void 0;s.type==="multiline"&&(n=!0);const x=s.type==="url"?o?.url:o;return e.jsx(r.TextField,{...j,label:i,value:typeof x=="string"?x:"",multiline:n,minRows:n?2:void 0,maxRows:n?10:void 0,onChange:g=>l?.(s.type==="url"?{...o,url:g.target.value,mediaKitUrl:g.target.value}:g.target.value),slotProps:{input:s.type==="url"?{sx:{pr:0},endAdornment:e.jsxs(r.InputAdornment,{position:"end",sx:{display:"flex",alignItems:"center",justifyContent:"center"},children:[e.jsx(V.UploaderButton,{onChange:async({response:g})=>{const h=g?.data?.url||g?.data?.fileUrl;let k;h&&(k=await V.getImageSize(h).catch(()=>V.getVideoSize(h)).catch(()=>{}));let y=g?.data?.filename||"";y&&(y=`mediakit://${y}`),l?.({url:h,mediaKitUrl:y,width:k?.naturalWidth,height:k?.naturalHeight})}}),e.jsx(r.Tooltip,{title:"If you are using the 'mediaKitUrl' property, please use < import { getMediaKitAbsoluteUrl } from '@blocklet/pages-kit/builtin/utils' > to get the full address.",children:e.jsx(A.InfoRounded,{sx:{cursor:"default",mr:1},fontSize:"small"})})]})}:void 0}})}return s.type==="array"?e.jsx(xt,{label:i,value:Array.isArray(o)?o:[],onChange:n=>l?.(n),property:s,renderItem:({item:n,index:x,onChange:g})=>s.subProperties&&Object.keys(s.subProperties).length>0?e.jsx(r.Stack,{sx:{gap:1,width:"100%"},children:_.default(Object.values(s.subProperties),"index").filter(h=>h.data.visible!==!1).map(({data:h})=>h.key?e.jsx(F,{component:t,property:h,value:n[h.key],onChange:k=>{const y={...n,[h.key]:k};g(y)},size:"small",fullWidth:!0,defaultLocale:p,allComponents:u},h.id):null)},x):e.jsx(r.TextField,{size:j.size,fullWidth:!0,value:n,onChange:h=>g(h.target.value)})}):(console.error("Unsupported property type",s.type),null)}function Rt({NumberProps:t,...s}){const{getInputProps:o}=ce.unstable_useNumberInput(t),l=o();return e.jsx(r.TextField,{...s,slotProps:{htmlInput:l}})}const je=`import React from '@blocklet/pages-kit/builtin/react'
2
2
  import { Box } from '@blocklet/pages-kit/builtin/mui/material'
3
3
 
4
4
  export default function () {
@@ -7,5 +7,5 @@ export default function () {
7
7
  Hello World
8
8
  </Box>
9
9
  )
10
- }`,je=`console.log('hello')
11
- `;function Ot({value:t}){const{locale:s}=R.useLocaleContext(),o=se.useUpdate(),l=U.getYjsValue(t).doc;return P.useEffect(()=>{t.renderer?.script||(l.transact(()=>{t.renderer.script=t.renderer.type==="react-component"?ge:je}),o())},[t]),e.jsx(r.Box,{sx:{border:1,borderColor:"divider",borderRadius:1,overflow:"hidden"},children:e.jsx(re.CodeEditor,{keyId:t.id,locale:s,language:"typescript",value:t.renderer.script||"",onChange:f=>t.renderer.script=f,typeScriptNoValidation:!1,fullScreenOptions:{enableEscExit:!0}},t.id)})}function Rt({value:t}){const{t:s}=R.useLocaleContext(),o=U.getYjsValue(t).doc,{state:{components:l,config:{defaultLocale:f},resources:p},localState:{currentLocale:u}}=V.useStore(),j=V.useAllComponents(),m=l[t.renderer.componentId]?.data??p.components?.[t.renderer.componentId]?.component,c=E.usePopupState({variant:"dialog"});return e.jsx(z.UploaderProvider,{children:e.jsxs(r.Stack,{sx:{gap:1},children:[e.jsx(G,{allComponents:j,excludes:[t.id],value:t.renderer.componentId,onChange:(d,a)=>t.renderer.componentId=a}),m&&e.jsxs(e.Fragment,{children:[e.jsxs(r.Stack,{direction:"row",sx:{justifyContent:"space-between",alignItems:"center"},children:[e.jsx(r.Typography,{variant:"subtitle2",children:s("parameters")}),e.jsx(r.Button,{sx:{minWidth:32,minHeight:32,p:0},...E.bindTrigger(c),children:e.jsx(N.TranslateRounded,{fontSize:"small"})})]}),m.properties&&_.default(Object.values(m.properties),"index").map(({data:d})=>e.jsx(r.Box,{children:e.jsx(F,{allComponents:j,defaultLocale:f,component:m,property:d,fullWidth:!0,size:"small",valueImmutable:$.default(t.renderer.properties?.[d.id]?.locales?.[u]?.value),value:t.renderer.properties?.[d.id]?.locales?.[u]?.value??t.renderer.properties?.[d.id]?.locales?.[f]?.value??d.locales?.[u]?.defaultValue??d.locales?.[f]?.defaultValue,onChange:a=>{o.transact(()=>{t.renderer.properties??={},t.renderer.properties[d.id]??={},t.renderer.properties[d.id].locales??={},t.renderer.properties[d.id].locales[u]??={},t.renderer.properties[d.id].locales[u].value=a})}})},d.id)),e.jsx(be,{...E.bindDialog(c),component:t,type:"parameters"})]})]})})}function G({label:t,options:s,excludes:o,value:l,onChange:f,allComponents:p,...u}){const{t:j}=R.useLocaleContext(),m=s??_.default(Object.values(nt.default(p,...o??[])),"index").map(d=>d.data),c=(typeof l=="string"?p[l]?.data:void 0)??null;return e.jsx(r.Autocomplete,{...u,size:"small",options:m,autoHighlight:!0,isOptionEqualToValue:(d,a)=>d.id===a.id,getOptionKey:d=>d.id,getOptionLabel:d=>d.name||d.id,renderInput:d=>e.jsx(r.TextField,{label:t||j("component"),...d}),value:c,onChange:(d,a)=>{let i={};a&&(i={blockletId:p[a?.id]?.blockletId,blockletTitle:p[a?.id]?.blockletTitle,componentName:p[a?.id]?.data?.name||p[a?.id]?.data?.id}),f?.(d,a?.id,i)}})}function ne({config:t,allComponents:s,defaultLocale:o,propertiesValue:l,currentLocale:f,onChange:p,props:u}){const{t:j}=R.useLocaleContext(),[m,c]=P.useState(Z.default(t?.properties)),[d,a]=P.useState(null),[i,n]=P.useState(!1);P.useEffect(()=>{(()=>{t?.renderer?.type==="react-component"&&D.default(t?.properties)?J.transpileAndLoadScript(t?.renderer?.script).then(I=>{const T=J.getPropertiesFromCode(I);c(T)}):c(Z.default(t?.properties))})()},[JSON.stringify(t)]);const x=P.useCallback(()=>!t||!m?{}:Object.values(m).reduce((y,{data:I})=>{const T=I.key||I.id;return y[I.id]={key:T,value:u?.[T]??l?.[I.id]?.value??I.locales?.[f]?.defaultValue??I.locales?.[o]?.defaultValue,id:I.id,type:I.type,visible:H(m,I.id),shared:xe(m,I.id)},y},{}),[JSON.stringify(m),t,l,f,o]),g=P.useMemo(()=>{if(!m)return{canUseProperties:[],visibleProperties:[],canUsePropertiesKeys:[]};const y=_.default(Object.values(m),"index"),I=y.filter(({data:k})=>k.key&&H(m,k.id)),T=y.filter(({data:k})=>k.key&&k.type!=="component"),C=T.map(({data:k})=>k.key);return{canUseProperties:T,visibleProperties:I,canUsePropertiesKeys:C}},[JSON.stringify(m)]),h=x(),S=st.default(h,"key");return e.jsx(z.UploaderProvider,{children:e.jsxs(r.Stack,{sx:{gap:2},children:[e.jsxs(r.Typography,{variant:"subtitle1",sx:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[j("maker.properties.parameters"),e.jsx(r.FormControlLabel,{control:e.jsx(r.Switch,{size:"small",checked:i,onChange:y=>n(y.target.checked)}),label:e.jsx(r.Typography,{variant:"caption",children:j("maker.properties.forceSyncToAllLanguages")}),sx:{mr:0}})]}),!t||g.canUsePropertiesKeys.length===0?e.jsx(M.default,{style:{fontSize:12},children:j("maker.properties.noParameters")}):e.jsxs(e.Fragment,{children:[e.jsx(r.Stack,{sx:{gap:2},children:g.visibleProperties.map(({data:y})=>e.jsx(r.Box,{children:e.jsx(F,{allComponents:s,defaultLocale:o,size:"small",fullWidth:!0,component:t,property:y,valueImmutable:$.default(l?.[y.id]?.value),value:u?.[y.key||y.id]??h[y.id]?.value,onChange:I=>{p({path:["properties",y.id],id:y.id,value:{value:I},shouldSync:i?!0:ie(y),excludeKeys:[],key:y.key||y.id})}})},y.id))}),e.jsx(r.Stack,{sx:{gap:2,width:"100%"},children:e.jsx(J.CustomComponentRenderer,{componentId:t?.id||"",renderType:"setting",locale:f,properties:h,dev:{mode:"draft",components:s,defaultLocale:o},props:{...ot.default(u??{},g.canUsePropertiesKeys),onChange:y=>{const{canUsePropertiesKeys:I}=g;Object.keys(y).filter(C=>!tt.default(y[C],S?.[C]?.value)).filter(C=>!(C==="locale"&&!et.default(S[C],"locale")||S[C]?.type==="component"||(S[C]?.type==="yaml"||S[C]?.type==="json")&&H(m,S[C]?.id))).reduce((C,k)=>C.then(()=>{const b=S[k],v=I.includes(k);if(b?.id&&v)return p({path:["properties",b.id],id:b.id,value:{value:y[k]},shouldSync:i?!0:ie(b),excludeKeys:[],key:b.key||b.id}),Promise.resolve();const w=`propertyNotFound${k}`;if(d===w)return Promise.resolve();ee.default.close(d);const B=ee.default.warning(j("maker.properties.propertyNotFound",{key:k}),{key:w});return a(B),Promise.resolve()}),Promise.resolve())}}})})]})]},f)})}function Nt({config:t}){const{t:s,locale:o}=R.useLocaleContext(),[l,f]=P.useState(!1),p=u=>{t.llmConfig=u};return e.jsxs(e.Fragment,{children:[e.jsx(r.Tooltip,{title:s("maker.properties.configLLMDescription"),children:e.jsx(r.IconButton,{color:"primary",onClick:()=>f(!0),size:"small",children:e.jsx(N.PsychologyAlt,{})})}),l&&e.jsx(yt,{open:l,onClose:()=>f(!1),onConfirm:p,component:t,initialConfig:t.llmConfig,locale:o,defaultLocale:"en",title:s("maker.properties.llmConfigTitle")})]})}exports.BasicInfo=me;exports.CustomComponentAutocomplete=G;exports.CustomComponentSettings=St;exports.DefaultReactComponentScriptTemplate=ge;exports.DefaultWebComponentScriptTemplate=je;exports.ParametersConfig=ne;exports.PropertiesConfig=he;exports.PropertyValueField=F;
10
+ }`,ye=`console.log('hello')
11
+ `;function At({value:t}){const{locale:s}=R.useLocaleContext(),o=ne.useUpdate(),l=U.getYjsValue(t).doc;return I.useEffect(()=>{t.renderer?.script||(l.transact(()=>{t.renderer.script=t.renderer.type==="react-component"?je:ye}),o())},[t]),e.jsx(r.Box,{sx:{border:1,borderColor:"divider",borderRadius:1,overflow:"hidden"},children:e.jsx(se.CodeEditor,{keyId:t.id,locale:s,language:"typescript",value:t.renderer.script||"",onChange:f=>t.renderer.script=f,typeScriptNoValidation:!1,fullScreenOptions:{enableEscExit:!0}},t.id)})}function zt({value:t}){const{t:s}=R.useLocaleContext(),o=U.getYjsValue(t).doc,{state:{components:l,config:{defaultLocale:f},resources:p},localState:{currentLocale:u}}=N.useStore(),j=N.useAllComponents(),m=l[t.renderer.componentId]?.data??p.components?.[t.renderer.componentId]?.component,c=D.usePopupState({variant:"dialog"});return e.jsx(V.UploaderProvider,{children:e.jsxs(r.Stack,{sx:{gap:1},children:[e.jsx(G,{allComponents:j,excludes:[t.id],value:t.renderer.componentId,onChange:(d,a)=>t.renderer.componentId=a}),m&&e.jsxs(e.Fragment,{children:[e.jsxs(r.Stack,{direction:"row",sx:{justifyContent:"space-between",alignItems:"center"},children:[e.jsx(r.Typography,{variant:"subtitle2",children:s("parameters")}),e.jsx(r.Button,{sx:{minWidth:32,minHeight:32,p:0},...D.bindTrigger(c),children:e.jsx(A.TranslateRounded,{fontSize:"small"})})]}),m.properties&&_.default(Object.values(m.properties),"index").map(({data:d})=>e.jsx(r.Box,{children:e.jsx(F,{allComponents:j,defaultLocale:f,component:m,property:d,fullWidth:!0,size:"small",valueImmutable:$.default(t.renderer.properties?.[d.id]?.locales?.[u]?.value),value:t.renderer.properties?.[d.id]?.locales?.[u]?.value??t.renderer.properties?.[d.id]?.locales?.[f]?.value??d.locales?.[u]?.defaultValue??d.locales?.[f]?.defaultValue,onChange:a=>{o.transact(()=>{t.renderer.properties??={},t.renderer.properties[d.id]??={},t.renderer.properties[d.id].locales??={},t.renderer.properties[d.id].locales[u]??={},t.renderer.properties[d.id].locales[u].value=a})}})},d.id)),e.jsx(ge,{...D.bindDialog(c),component:t,type:"parameters"})]})]})})}function G({label:t,options:s,excludes:o,value:l,onChange:f,allComponents:p,...u}){const{t:j}=R.useLocaleContext(),m=s??_.default(Object.values(it.default(p,...o??[])),"index").map(d=>d.data),c=(typeof l=="string"?p[l]?.data:void 0)??null;return e.jsx(r.Autocomplete,{...u,size:"small",options:m,autoHighlight:!0,isOptionEqualToValue:(d,a)=>d.id===a.id,getOptionKey:d=>d.id,getOptionLabel:d=>d.name||d.id,renderInput:d=>e.jsx(r.TextField,{label:t||j("component"),...d}),value:c,onChange:(d,a)=>{let i={};a&&(i={blockletId:p[a?.id]?.blockletId,blockletTitle:p[a?.id]?.blockletTitle,componentName:p[a?.id]?.data?.name||p[a?.id]?.data?.id}),f?.(d,a?.id,i)}})}function oe({config:t,allComponents:s,defaultLocale:o,propertiesValue:l,currentLocale:f,onChange:p,props:u}){const{t:j}=R.useLocaleContext(),[m,c]=I.useState(ee.default(t?.properties)),[d,a]=I.useState(null),[i,n]=I.useState(!1);Q.useDeepCompareEffect(()=>{(()=>{t?.renderer?.type==="react-component"&&E.default(t?.properties)?H.transpileAndLoadScript(t?.renderer?.script).then(w=>{const T=H.getPropertiesFromCode(w);c(T)}):c(ee.default(t?.properties))})()},[t]);const x=Ve.useDeepCompareCallback(()=>!t||!m?{}:Object.values(m).reduce((y,{data:w})=>{const T=w.key||w.id;return y[w.id]={key:T,value:u?.[T]??l?.[w.id]?.value??w.locales?.[f]?.defaultValue??w.locales?.[o]?.defaultValue,id:w.id,type:w.type,visible:J(m,w.id),shared:me(m,w.id)},y},{}),[m,t,l,f,o]),g=Ne.useDeepCompareMemo(()=>{if(!m)return{canUseProperties:[],visibleProperties:[],canUsePropertiesKeys:[]};const y=_.default(Object.values(m),"index"),w=y.filter(({data:S})=>S.key&&J(m,S.id)),T=y.filter(({data:S})=>S.key&&S.type!=="component"),C=T.map(({data:S})=>S.key);return{canUseProperties:T,visibleProperties:w,canUsePropertiesKeys:C}},[m]),h=x(),k=ot.default(h,"key");return e.jsx(V.UploaderProvider,{children:e.jsxs(r.Stack,{sx:{gap:2},children:[e.jsxs(r.Typography,{variant:"subtitle1",sx:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[j("maker.properties.parameters"),e.jsx(r.FormControlLabel,{control:e.jsx(r.Switch,{size:"small",checked:i,onChange:y=>n(y.target.checked)}),label:e.jsx(r.Typography,{variant:"caption",children:j("maker.properties.forceSyncToAllLanguages")}),sx:{mr:0}})]}),!t||g.canUsePropertiesKeys.length===0?e.jsx(M.default,{style:{fontSize:12},children:j("maker.properties.noParameters")}):e.jsxs(e.Fragment,{children:[e.jsx(r.Stack,{sx:{gap:2},children:g.visibleProperties.map(({data:y})=>e.jsx(r.Box,{children:e.jsx(F,{allComponents:s,defaultLocale:o,size:"small",fullWidth:!0,component:t,property:y,valueImmutable:$.default(l?.[y.id]?.value),value:u?.[y.key||y.id]??h[y.id]?.value,onChange:w=>{p({path:["properties",y.id],id:y.id,value:{value:w},shouldSync:i?!0:le(y),excludeKeys:[],key:y.key||y.id})}})},y.id))}),e.jsx(r.Stack,{sx:{gap:2,width:"100%"},children:e.jsx(H.CustomComponentRenderer,{componentId:t?.id||"",renderType:"setting",locale:f,properties:h,dev:{mode:"draft",components:s,defaultLocale:o},props:{...lt.default(u??{},g.canUsePropertiesKeys),onChange:y=>{const{canUsePropertiesKeys:w}=g;Object.keys(y).filter(C=>!st.default(y[C],k?.[C]?.value)).filter(C=>!(C==="locale"&&!rt.default(k[C],"locale")||k[C]?.type==="component"||(k[C]?.type==="yaml"||k[C]?.type==="json")&&J(m,k[C]?.id))).reduce((C,S)=>C.then(()=>{const b=k[S],v=w.includes(S);if(b?.id&&v)return p({path:["properties",b.id],id:b.id,value:{value:y[S]},shouldSync:i?!0:le(b),excludeKeys:[],key:b.key||b.id}),Promise.resolve();const P=`propertyNotFound${S}`;if(d===P)return Promise.resolve();te.default.close(d);const B=te.default.warning(j("maker.properties.propertyNotFound",{key:S}),{key:P});return a(B),Promise.resolve()}),Promise.resolve())}}})})]})]},f)})}function Vt({config:t}){const{t:s,locale:o}=R.useLocaleContext(),[l,f]=I.useState(!1),p=u=>{t.llmConfig=u};return e.jsxs(e.Fragment,{children:[e.jsx(r.Tooltip,{title:s("maker.properties.configLLMDescription"),children:e.jsx(r.IconButton,{color:"primary",onClick:()=>f(!0),size:"small",children:e.jsx(A.PsychologyAlt,{})})}),l&&e.jsx(Ct,{open:l,onClose:()=>f(!1),onConfirm:p,component:t,initialConfig:t.llmConfig,locale:o,defaultLocale:"en",title:s("maker.properties.llmConfigTitle")})]})}exports.BasicInfo=fe;exports.CustomComponentAutocomplete=G;exports.CustomComponentSettings=Pt;exports.DefaultReactComponentScriptTemplate=je;exports.DefaultWebComponentScriptTemplate=ye;exports.ParametersConfig=oe;exports.PropertiesConfig=be;exports.PropertyValueField=F;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("./chunks/components-DsHjikTX.js");const e=require("./chunks/site-state-DlLhHuIr.js"),u=require("@blocklet/pages-kit/utils/common");require("@blocklet/pages-kit/utils/page-model");require("@blocklet/pages-kit/utils/property");require("@blocklet/pages-kit/utils/route");require("@blocklet/sdk/lib/component");require("@blocklet/sdk/lib/config");require("@reactivedata/reactive");require("@syncedstore/core");require("fs");require("glob");require("lib0/decoding");require("lib0/encoding");require("lodash/cloneDeep");require("lodash/debounce");require("lodash/get");require("lodash/isEmpty");require("lodash/set");require("lodash/union");require("lru-cache");require("p-limit");require("path");require("sequelize");require("stream/promises");require("tar");require("ufo");require("wait-on");require("y-protocols/awareness");require("y-protocols/sync");require("yaml");require("yjs");const t=require("@blocklet/pages-kit/types/state");exports.PUBLISH_MODES=e.PUBLISH_MODES;exports.SITE_STATE_PATH=e.SITE_STATE_PATH;exports.STATE_MODES=e.STATE_MODES;exports.default=e.SiteState;exports.downloadAsset=e.downloadAsset;exports.downloadAssets=e.downloadAssets;exports.fromPackage=e.fromPackage;exports.getDefaultState=e.getDefaultState;exports.getResourceStates=e.getResourceStates;exports.initPackResourceStates=e.initPackResourceStates;exports.mergeState=e.mergeState;exports.toPackage=e.toPackage;exports.triggerReloadAllProjectResource=e.triggerReloadAllProjectResource;exports.updateResourceStatesByProjectId=e.updateResourceStatesByProjectId;Object.defineProperty(exports,"nextId",{enumerable:!0,get:()=>u.nextId});Object.keys(t).forEach(r=>{r!=="default"&&!Object.prototype.hasOwnProperty.call(exports,r)&&Object.defineProperty(exports,r,{enumerable:!0,get:()=>t[r]})});
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("./chunks/components-BmFOXvb0.js");const e=require("./chunks/site-state-BQySNTiP.js"),u=require("@blocklet/pages-kit/utils/common");require("@blocklet/pages-kit/utils/page-model");require("@blocklet/pages-kit/utils/property");require("@blocklet/pages-kit/utils/route");require("@blocklet/sdk/lib/component");require("@blocklet/sdk/lib/config");require("@reactivedata/reactive");require("@syncedstore/core");require("fs");require("glob");require("lib0/decoding");require("lib0/encoding");require("lodash/cloneDeep");require("lodash/debounce");require("lodash/get");require("lodash/isEmpty");require("lodash/set");require("lodash/union");require("lru-cache");require("p-limit");require("path");require("sequelize");require("stream/promises");require("tar");require("ufo");require("wait-on");require("y-protocols/awareness");require("y-protocols/sync");require("yaml");require("yjs");const t=require("@blocklet/pages-kit/types/state");exports.PUBLISH_MODES=e.PUBLISH_MODES;exports.SITE_STATE_PATH=e.SITE_STATE_PATH;exports.STATE_MODES=e.STATE_MODES;exports.default=e.SiteState;exports.downloadAsset=e.downloadAsset;exports.downloadAssets=e.downloadAssets;exports.fromPackage=e.fromPackage;exports.getDefaultState=e.getDefaultState;exports.getResourceStates=e.getResourceStates;exports.initPackResourceStates=e.initPackResourceStates;exports.mergeState=e.mergeState;exports.toPackage=e.toPackage;exports.triggerReloadAllProjectResource=e.triggerReloadAllProjectResource;exports.updateResourceStatesByProjectId=e.updateResourceStatesByProjectId;Object.defineProperty(exports,"nextId",{enumerable:!0,get:()=>u.nextId});Object.keys(t).forEach(r=>{r!=="default"&&!Object.prototype.hasOwnProperty.call(exports,r)&&Object.defineProperty(exports,r,{enumerable:!0,get:()=>t[r]})});