@blocklet/pages-kit-inner-components 0.6.99 → 0.6.101

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.
@@ -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-kta5etlt.js"),H=require("./index-CuUJrmkJ.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-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-Bu90cJ-l.js"),H=require("./index-B4sanPsc.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;
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-CuUJrmkJ.js");const e=require("./chunks/home-kta5etlt.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-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-B4sanPsc.js");const e=require("./chunks/home-Bu90cJ-l.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,11 +1,11 @@
1
- "use strict";const W=require("@arcblock/did-connect-storage-nedb"),E=require("@blocklet/sdk/lib/config"),B=require("@blocklet/sdk/lib/wallet"),D=require("@blocklet/sdk/lib/wallet-authenticator"),U=require("@blocklet/sdk/lib/wallet-handler"),H=require("@blocklet/sdk/service/auth"),C=require("path"),S=require("./chunks/components-DLLpFRy5.js"),I=require("./chunks/html-xfTPTsl5.js"),K=require("@arcblock/crawler-middleware"),N=require("@blocklet/pages-kit/types"),R=require("@blocklet/pages-kit/utils/common"),T=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"),A=require("ufo"),l=n=>n&&n.__esModule?n:{default:n},G=l(W),s=l(E),Y=l(B),Q=l(D),V=l(U),X=l(H),Z=l(C),ee=l(J),te=l(z),ne=(n={})=>{const e={data:new Map,timers:new Map,set:(t,u,p=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),p)),e.data.set(t,u)},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=ne({max:1,ttl:1e3*30});Y.default();const oe=new Q.default;new V.default({authenticator:oe,tokenStorage:new G.default({dbPath:Z.default.join(s.default.env.dataDir,"auth.db")})});const se=new X.default,ae=async()=>{try{const n=q.get("blockletInfo");if(n)return n;const{blocklet:e}=await se.getBlocklet();return q.set("blockletInfo",e),e}catch{return null}},ce=["/assets/"];function le({app:n,viteDevServer:e,state:t}){let u;if(e){const o=P.readFileSync(C.resolve(process.cwd(),"./index.html"),"utf-8");n.use(async(g,k,b)=>{const d=g.originalUrl;u=await e.transformIndexHtml(d,o),b()})}else u=P.readFileSync(C.resolve(process.env.BLOCKLET_APP_DIR,"dist/index.html"),"utf-8");const p=O.Router();p.use((o,g,k)=>{if(o.headers["x-unique-record"]==="dial_http"){S.logger.info("[html] dial http request, return 200 status code"),g.status(200).send("ok");return}k()}),s.default.env.preferences.snapkitEnabled&&s.default.env.preferences.snapkitEndpoint&&s.default.env.SNAP_KIT_ACCESS_KEY&&p.use(K.createSnapshotMiddleware({endpoint:s.default.env.preferences.snapkitEndpoint,accessKey:s.default.env.SNAP_KIT_ACCESS_KEY,cacheMax:s.default.env.preferences.snapkitCacheSize||100})),p.get("/:path(*)?",async(o,g,k)=>{if(ce.some(a=>o.path?.startsWith(a))){k();return}const b="production";let d,v,_=u;if(o.path.startsWith("/pages")){const a=o.params.lang,y=o.cookies.nf_lang,w=new Set([...s.default.env.languages.map(h=>h.code)]);let f=(a&&w.has(a)?a:void 0)||(w.has(y)?y:void 0)||[...w][0];if((!f||!t.supportedLocales?.find(h=>h.locale===f))&&(f=t.supportedLocales?.[0]?.locale||""),f){const h=[];Object.values(t.pages).forEach(c=>{const L=Object.values(c?.sections??{}).filter(i=>i.component==="custom-component"&&i.config?.componentId).map(i=>({id:i.id,componentId:i.config.componentId,useCache:i.config.useCache,cacheDuration:i.config.cacheDuration,properties:c?.dataSource?.[i.id]?.[f]}));h.push(...L)});const x=new Promise(c=>{setTimeout(()=>{c({})},30*1e3)});try{await Promise.race([x,S.getPreloadComponents({mode:b,req:o,state:t,locale:f,instances:h,module:N.PreloadComponentScriptModule.UMD_FN}).then(c=>{c&&(v=T.injectPreloadComponents(c))})])}catch(c){S.logger.warn("getPreloadComponents timeout in promise race, skip inject html elements",c)}}}try{const a=d?.title||s.default.env.appName,y=d?.description||s.default.env.appDescription,w=A.withQuery(A.joinURL(s.default.env.appUrl,"/.well-known/service/blocklet/og.png"),{title:a,description:y});_=te.default.render(u,{ogTitle:a,ogDescription:y,ogImage:re(d?.image)||w,pagesPublishedAt:t?.config.publishedAt||new Date().getTime()})}catch{}const m=t?.config.fontFamily,M=o.query.mode==="draft"||o.url.includes("preview")||o.path?.startsWith("/admin");let r=d?.backgroundColor;if(r&&R.isMuiColorKey(r)){const a=await ae();r=ee.default(a,`settings.theme.light.palette.${r}`,r)}const j=E.getBlockletJs(),$=[{selector:{cheerio:"#injected-head-elements",pattern:/<script[^>]*id=["']injected-head-elements["'][^>]*><\/script>/gis},value:`
2
- ${r?`<meta name="theme-color" content="${r}" /><style>html,body,#app {background-color: ${r};}</style>`:""}
3
- ${m?.title?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${m.title}&display=swap">`:""}
4
- ${m?.description&&m?.description!==m?.title?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${m.description}&display=swap">`:""}
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-DLLpFRy5.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
+ ${l?`<meta name="theme-color" content="${l}" /><style>html,body,#app {background-color: ${l};}</style>`:""}
3
+ ${p?.title?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${p.title}&display=swap">`:""}
4
+ ${p?.description&&p?.description!==p?.title?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${p.description}&display=swap">`:""}
5
5
 
6
6
 
7
7
  <script>
8
- window.__PAGE_STATE__ = ${T.safeJSONStringify(t||null)};
8
+ window.__PAGE_STATE__ = ${A.safeJSONStringify(t||null)};
9
9
  <\/script>
10
10
 
11
11
 
@@ -24,4 +24,4 @@
24
24
  darkMode: "class",
25
25
  };
26
26
  <\/script>`:""}
27
- `},j&&{selector:{cheerio:'script[src="__blocklet__.js"]',pattern:/<script[^>]*src=["']__blocklet__\.js["'][^>]*><\/script>/gis},value:`<script>${j}<\/script>`},v?.html&&{selector:{cheerio:"#injected-html-elements",pattern:/<script[^>]*id=["']injected-html-elements["'][^>]*><\/script>/gis},value:v.html},o.cachedHtml&&{selector:{cheerio:"body",pattern:/(<body[^>]*>).*?(<\/body>)/gis},value:`<body>${I.extractBodyContent(o.cachedHtml)}</body>`}].filter(Boolean);_=await I.injectToHtml(_,$),g.send(_),S.logger.info(`[html] render: ${o.path}`),_=null,d=null,v=null}),n.use(p)}function re(n){const e=F.getComponentMountPoint("image-bin");return e&&n&&!/^(https?:\/\/|\/)/.test(n)?s.default.env.appUrl+A.joinURL(e,"uploads",n):n}module.exports=le;
27
+ `},I&&{selector:{cheerio:'script[src="__blocklet__.js"]',pattern:/<script[^>]*src=["']__blocklet__\.js["'][^>]*><\/script>/gis},value:`<script>${I}<\/script>`},b?.html&&{selector:{cheerio:"#injected-html-elements",pattern:/<script[^>]*id=["']injected-html-elements["'][^>]*><\/script>/gis},value:b.html},o.cachedHtml&&{selector:{cheerio:"body",pattern:/(<body[^>]*>).*?(<\/body>)/gis},value:`<body>${T.extractBodyContent(o.cachedHtml)}</body>`}].filter(Boolean);g=await T.injectToHtml(g,$),f.send(g),v.logger.info(`[html] render: ${o.path}`),g=null,i=null,b=null}),n.use(u)}function se(n){const e=F.getComponentMountPoint("image-bin");return e&&n&&!/^(https?:\/\/|\/)/.test(n)?s.default.env.appUrl+j.joinURL(e,"uploads",n):n}module.exports=oe;
@@ -1 +1 @@
1
- "use strict";const g=require("./chunks/components-DLLpFRy5.js"),c=require("./chunks/site-state-uZR_uvZu.js"),F=require("express"),L=require("fs"),J=require("joi"),X=require("lodash/groupBy"),W=require("lodash/sortBy"),B=require("path"),G=require("@blocklet/sdk/lib/middlewares/auth"),K=require("@blocklet/sdk/lib/component"),m=e=>e&&e.__esModule?e:{default:e},u=m(L),f=m(J),C=m(X),Y=m(W),D=m(B),k=m(G),$=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(g.isMultiTenant()){const P=n.createdBy===r,y=g.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){g.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=D.default.join(e,s.name),r=D.default.join(t,s.name);s.isDirectory()?await N(n,r):await b(n,r)}}async function z(e,t){(await u.default.promises.stat(e)).isDirectory()?await N(e,t):await b(e,t)}const h=(e,t,o)=>g.isMultiTenant()?k.default()(e,t,o):k.default({roles:["owner","admin","pagesEditor"]})(e,t,o),H=(e,t)=>{const o=K.getResourceExportDir({projectId:e,releaseId:t});return B.join(o,c.COMPONENT_DID,c.RESOURCE_TYPE)},w=F.Router(),T="@page",U="@component",j=":",R="ALL",q="@project",v=({pageId:e,projectId:t})=>[T,t,e].join(j),Q=e=>{const[t,o,s]=e.split(j);if(t===T)return{pageId:s,projectId:o}},x=({componentId:e,projectId:t})=>[U,t,e].join(j),V=e=>{const[t,o,s]=e.split(j);if(t===U)return{componentId:s,projectId:o}},Z=e=>[q,e].join(j),ee=e=>{const[t,o]=e.split(j);if(t===q)return o},te=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=Y.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:Z(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}]}}w.get("/resources",h,async(e,t)=>{const{projectId:o}=te(e.query.resourcesParams);if(o){e.params={...e.params,projectId:o},await $(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 oe=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("")});w.post("/resources",h,async(e,t)=>{const{resources:o,projectId:s,releaseId:n}=await oe.validateAsync(e.body),r="production",a=[],P=[];for(const i of o){if(ee(i))continue;const{pageId:d,projectId:_}=Q(i)||{};if(d)d===R||d&&_&&a.push({pageId:d,projectId:_});else{const{componentId:I,projectId:p}=V(i)||{};I===R||I&&p&&P.push({componentId:I,projectId:p})}}const y=C.default(a,"projectId"),O=C.default(P,"projectId"),M=new Set([...Object.keys(y),...Object.keys(O)]),E=H(s,n);u.default.rmSync(E,{recursive:!0,force:!0}),u.default.mkdirSync(E,{recursive:!0});for(const i of M){const d=await c.SiteState.getStateByProjectId(i,r),_=y[i],I=O[i],p=_?.map(l=>l.pageId),S=I?.map(l=>l.componentId);if(p?.length||S?.length){const l=await c.toPackage(d,{exportAssets:!0,pageIds:p,componentIds:S});await z(l,E),u.default.rmSync(l,{recursive:!0,force:!0})}g.logger.info(`Exported resources for project ${i}`,{pageIds:p,componentIds:S})}t.json({})});w.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=w;
1
+ "use strict";const I=require("./chunks/components-DLLpFRy5.js"),c=require("./chunks/site-state-uZR_uvZu.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=_;
@@ -7,7 +7,7 @@ import ie from "@mui/icons-material/Check";
7
7
  import { Box as n, styled as H, alpha as ne, Stack as ae, Dialog as se, DialogTitle as le, TextField as pe, IconButton as ce, DialogContent as de, Tabs as me, Tab as ue, Grid as O, Card as fe, CardMedia as be, CardContent as ge, Typography as W, DialogActions as xe, Button as N, Skeleton as he } from "@mui/material";
8
8
  import { useReactive as Q } from "ahooks";
9
9
  import { createContext as _, useMemo as P, useEffect as M, useRef as E } from "react";
10
- import { a as ye, R as ve, B as V, c as Ce, T as ke, I as we } from "./chunks/index-qonduhoW.js";
10
+ import { a as ye, R as ve, B as V, c as Ce, T as ke, I as we } from "./chunks/index-B3PuGYfF.js";
11
11
  import { styled as g } from "@arcblock/ux/lib/Theme";
12
12
  import "@blocklet/pages-kit/builtin/color-picker";
13
13
  import "@blocklet/pages-kit/utils/style";
@@ -21,6 +21,7 @@ import "@dnd-kit/core";
21
21
  import "@dnd-kit/sortable";
22
22
  import "@mui/icons-material";
23
23
  import "@dnd-kit/utilities";
24
+ import "@blocklet/pages-kit/contexts/color";
24
25
  import "@mui/lab";
25
26
  import "immer";
26
27
  import "lodash/omit";
@@ -230,7 +231,7 @@ H(n)`
230
231
  transform: translateY(-50%);
231
232
  }
232
233
  `;
233
- const Ve = _({ embed: !1 }), { Provider: ct } = Ve;
234
+ const Ve = _({ embed: !1 }), { Provider: dt } = Ve;
234
235
  _(void 0);
235
236
  U({
236
237
  axios: D,
@@ -658,7 +659,7 @@ const j = 260, Ye = 5, K = "IGNORE_RENDER_BLOCKLET_TITLE", B = (e, c) => e ? Obj
658
659
  properties: {}
659
660
  }
660
661
  ].map((e) => ({ ...e, type: "basic", component: e.id }));
661
- function dt({
662
+ function mt({
662
663
  state: e,
663
664
  open: c,
664
665
  onClose: d,
@@ -1138,10 +1139,10 @@ function Je({
1138
1139
  )) : /* @__PURE__ */ o($, { children: c }) });
1139
1140
  }
1140
1141
  export {
1141
- dt as AddComponent,
1142
+ mt as AddComponent,
1142
1143
  qe as AutoScaledComponentRenderer,
1143
1144
  Ke as BASIC_COMPONENT_LIST,
1144
1145
  Je as GroupedComponentsList,
1145
- dt as default,
1146
+ mt as default,
1146
1147
  B as formatComponent
1147
1148
  };
@@ -21,7 +21,7 @@ import { Helmet as Se } from "react-helmet";
21
21
  import { useSearchParams as Z, Routes as Ce, Route as S, Navigate as Ie, ScrollRestoration as Te } from "react-router-dom";
22
22
  import { useAsync as ee } from "react-use";
23
23
  import { joinURL as P } from "ufo";
24
- import { u as Re, S as je, i as z, P as Me, a as Oe, R as Ee, B as Le, b as te, g as Ae } from "./index-qonduhoW.js";
24
+ import { u as Re, S as je, i as z, P as Me, a as Oe, R as Ee, B as Le, b as te, g as Ae } from "./index-B3PuGYfF.js";
25
25
  import Be from "@blocklet/ui-react/lib/Footer";
26
26
  import "webfontloader";
27
27
  import { u as _e, a as Fe } from "./session-Dx5M-1r2.js";
@@ -149,7 +149,7 @@ function Ge({ mode: t }) {
149
149
  }
150
150
  return /* @__PURE__ */ e(Ke, { children: ({ state: o }) => /* @__PURE__ */ e(L, { mode: t, state: o }) });
151
151
  }
152
- const qe = X(() => import("./publish-button-C9H28ZXf.js")), Ke = X(() => import("./draft-data-BOoVhbon.js"));
152
+ const qe = X(() => import("./publish-button-5KAKGqbO.js")), Ke = X(() => import("./draft-data-BOoVhbon.js"));
153
153
  function Ye({
154
154
  mode: t,
155
155
  children: o