@blocklet/pages-kit-inner-components 0.6.104 → 0.6.106

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blocklet/pages-kit-inner-components",
3
- "version": "0.6.104",
3
+ "version": "0.6.106",
4
4
  "description": "Pages Kit inner components library",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -73,19 +73,19 @@
73
73
  "@arcblock/did-connect-storage-nedb": "^1.8.0",
74
74
  "@arcblock/react-hooks": "^3.1.52",
75
75
  "@arcblock/ux": "^3.1.52",
76
- "@blocklet/aigne-hub": "^0.4.57",
76
+ "@blocklet/aigne-hub": "^0.4.61",
77
77
  "@blocklet/aigne-sdk": "^0.5.26",
78
78
  "@blocklet/code-editor": "^0.5.26",
79
79
  "@blocklet/embed": "^0.2.5",
80
- "@blocklet/js-sdk": "^1.16.54-beta-20251027-105624-dfa978f8",
80
+ "@blocklet/js-sdk": "^1.16.54-beta-20251028-092308-569763e6",
81
81
  "@blocklet/logger": "1.16.54-beta-20251021-070951-25e3083c",
82
82
  "@blocklet/quickjs": "^0.5.26",
83
- "@blocklet/sdk": "^1.16.54-beta-20251027-105624-dfa978f8",
83
+ "@blocklet/sdk": "^1.16.54-beta-20251028-092308-569763e6",
84
84
  "@blocklet/studio-ui": "^0.5.26",
85
- "@blocklet/tracker": "^1.16.54-beta-20251027-105624-dfa978f8",
85
+ "@blocklet/tracker": "^1.16.54-beta-20251028-092308-569763e6",
86
86
  "@blocklet/ui-react": "^3.1.52",
87
- "@blocklet/uploader": "^0.2.15",
88
- "@blocklet/uploader-server": "^0.2.15",
87
+ "@blocklet/uploader": "^0.3.1",
88
+ "@blocklet/uploader-server": "^0.3.1",
89
89
  "@dnd-kit/core": "^6.3.1",
90
90
  "@dnd-kit/modifiers": "^9.0.0",
91
91
  "@dnd-kit/sortable": "^10.0.0",
@@ -201,8 +201,8 @@
201
201
  "yaml": "^2.5.0",
202
202
  "yjs": "^13.6.18",
203
203
  "zustand": "^4.5.5",
204
- "@blocklet/pages-kit": "^0.6.104",
205
- "@blocklet/pages-kit-block-studio": "^0.6.104"
204
+ "@blocklet/pages-kit": "^0.6.106",
205
+ "@blocklet/pages-kit-block-studio": "^0.6.106"
206
206
  },
207
207
  "devDependencies": {
208
208
  "@trivago/prettier-plugin-sort-imports": "^5.2.1",
@@ -1 +0,0 @@
1
- "use strict";const me=require("react/jsx-runtime"),D=require("ufo"),ge=require("@blocklet/js-sdk"),Se=require("lodash/isEmpty"),Ie=require("yaml"),Pe=require("@arcblock/ux/lib/Locale/context"),q=require("@blocklet/pages-kit/utils/common"),ye=require("@blocklet/pages-kit/utils/page-model");require("@mui/material");const ee=require("@syncedstore/core"),Ce=require("@syncedstore/react"),we=require("ahooks"),A=require("immer"),he=require("lodash/cloneDeep"),be=require("lodash/debounce"),g=require("react"),te=require("react-router-dom"),ve=require("y-indexeddb"),Oe=require("y-websocket"),xe=require("yjs");require("@blocklet/pages-kit/types");const G=o=>o&&o.__esModule?o:{default:o};function ke(o){if(o&&o.__esModule)return o;const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const S in o)if(S!=="default"){const f=Object.getOwnPropertyDescriptor(o,S);Object.defineProperty(n,S,f.get?f:{enumerable:!0,get:()=>o[S]})}}return n.default=o,Object.freeze(n)}const Ee=G(Se),Te=ke(Ie),je=G(ee),R=G(he),oe=G(be);function ne(){const{pathname:o}=window.location,S=o.match(/\/admin\/(maker|previewer)\/([^/]+)/)?.[2],f=window.__PROJECT_ID__;if(!S&&!f)throw new Error("Unable to get projectId from pathname");return S||f}function Me(o){return`${o}:pages:version`}function Ne(o,n){return n==="yaml"?Ee.default(o)?"":Te.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=ge.createAxios({timeout:200*1e3}),Le=window.location.protocol==="https:"?"wss":"ws",_e=o=>D.joinURL(`${Le}://${window.location.hostname}`,K,`api/${o}/ws/pages`),Ae="z8ia1mAXo8ZE7ytGF36L5uBf9kD2kenhqFGp9";blocklet?.componentMountPoints.find(o=>o.did===Ae)?.mountPoint||D.joinURL(K,"/image-bin");function Re(o){return o&&!/^(https?:\/\/|\/)/.test(o)?window.location.origin+D.joinURL(K,"uploads",o):o}const De=window.innerWidth<=750;function $e(o,n,S){if(!o||/\.gif/.test(o))return o;const f=(De?n/1.5:n)*(S==="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 qe(o){return z.get(`/api/projects/${o}`).then(n=>n.data)}async function Ue(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 ce(o,n={}){return n[o.id]=o,o.sectionIds&&o.sections&&o.sectionIds.forEach(S=>{const f=o.sections?.[S];f&&ce(f,n)}),n}function re(o,n){const S=W(o.id),f=n.section,O=ce(f);n.dataSource??={};const w=n.dataSource;return{id:S,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 Be=500,se=g.createContext(null);function Fe({url:o,name:n,children:S,waitingSynced:f}){const[O,w]=g.useState(!1),{locale:L}=Pe.useLocaleContext(),b=Q(),j=`${b}:MakerLocalState`,x=`${b}:${n}`,[v,P]=we.useLocalStorageState(j,{defaultValue:{},listenStorageChange:!0}),$=g.useRef(v);$.current=v;const J=g.useMemo(()=>je.default({dataSourceIds:[],dataSources:{},pages:{},pageIds:[],routes:{},routeIds:[],components:{},supportedLocales:[],config:{},resources:{}}),[]),C=g.useMemo(()=>ee.getYjsDoc(J),[J]);g.useMemo(()=>new ve.IndexeddbPersistence(x,C),[x,C]);const h=g.useMemo(()=>new Oe.WebsocketProvider(o,x,C,{params:{},resyncInterval:5*60*1e3}),[o,x,C]),B=g.useCallback(()=>{h&&(h.wsconnected?(h.disconnect(),setTimeout(()=>h.connect(),100)):h.connect())},[h]),e=g.useMemo(()=>new xe.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]=g.useState(null),[r,d]=g.useState(!1),[i,l]=g.useState(void 0),m=g.useCallback(async()=>{if(b){d(!0);try{const s=await qe(b);c(s)}catch(s){console.error("Failed to fetch project:",s)}finally{d(!1)}}},[b]),u=g.useCallback(async(s,a)=>{if(l(void 0),!!b){a?.optimisticUpdate&&t&&c(I=>({...I,...s}));try{const I=await Ue({...s});c(I)}catch(I){console.error("Failed to update project:",I),a?.optimisticUpdate&&c(t),l(I?.response?.data)}}},[b,t]);g.useEffect(()=>{b&&m()},[b,m]);const p=g.useMemo(()=>({doc:C,state:J,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,J,JSON.stringify(v),P,e,t,r,u,i,L,B]);return g.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]),g.useEffect(()=>{h.awareness.setLocalState(v)},[h,v]),g.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=oe.default(({status:T})=>{if(T==="connected")k(),a&&(clearTimeout(a),a=null);else if(T==="disconnected"){if(s++,!a){const le=Date.now();let Y=0;const pe=Math.ceil(M/y),H=()=>{Y++;const fe=Date.now()-le;if(h.wsconnected){k();return}if(fe>=M||Y>=pe){E();return}a=setTimeout(H,y)};a=setTimeout(H,y)}s>=I&&E()}},Be),_=()=>{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:me.jsx(se.Provider,{value:p,children:S})}const ie=()=>{const o=g.useContext(se);if(!o)throw new Error("Context is null");const n=Ce.useSyncedStore(o.state),{setLocalState:S,localState:f}=o,O=te.useNavigate(),w=Q(),L=g.useRef({}),b=g.useCallback(e=>{const t=n.components[e]?.data;return!t||t.renderer?.type!=="component-template"?void 0:(L.current[e]||(L.current[e]={page:re(t,t.renderer)}),L.current[e]?.page)},[n.components]),j=g.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=g.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=g.useCallback(e=>{const t=x(e);if(!t)throw new Error(`Page ${e} is not exists`);return t},[x]),P=g.useMemo(()=>({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 ye.getPageTemplateModel(e,!1)}}),[JSON.stringify(f),n]),$=g.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]),J=g.useCallback(()=>$?.kind==="component-template"?$:void 0,[$]),C=g.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)),S(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){S(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)),S(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})=>{S(c=>A.produce(c,r=>{r.currentRouteId=e,r.currentDynamicParams=t}))},setCustomComponentPreviewerProperties:(()=>{const e={};let t="";const c=oe.default(()=>{S(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=>{S(t=>A.produce(t,c=>{e?c.routeGenerateProcess={...c.routeGenerateProcess,...e}:c.routeGenerateProcess={}}))},resetRouteGenerateProcess:()=>{S(e=>A.produce(e,t=>{t.routeGenerateProcess={progress:"complete"}}))}}),[S,O,w,P]),h=g.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=g.useMemo(()=>({addPage:(e,t)=>{const c=e?.id??q.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??q.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??q.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=q.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??q.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:J}},Q=()=>{const{projectId:o}=te.useParams();return o??ne()??""},Ge=()=>window.__PROJECT_SLUG__??"";function ae(o){const{resources:n}=o;if(!n.components)return{};const S={};return window?.blocklet?.componentMountPoints?.forEach(f=>{S[f.did]=f}),Object.fromEntries(Object.entries(n.components).map(([f,{blockletId:O,component:w}])=>[f,{data:w,blockletId:O,blockletTitle:S[O]?.title||O}]))}function de(o){const{components:n}=o;return n||{}}function ue(o){return{...ae(o),...de(o)}}const We=()=>ue(ie().state);function V(o){const n=JSON.parse(JSON.stringify(o)),S=q.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:S}}exports.StoreProvider=Fe;exports.api=z;exports.autoResizeImage=$e;exports.createComponentTemplatePage=re;exports.getAllComponents=ue;exports.getCustomComponents=de;exports.getImageAbsoluteUrl=Re;exports.getProjectIdFromPathnameOrWindow=ne;exports.getProjectPageVersionKey=Me;exports.getResourceComponents=ae;exports.getWssURL=_e;exports.transformValue=Ne;exports.useAllComponents=We;exports.useProjectId=Q;exports.useProjectSlug=Ge;exports.useStore=ie;