efficient-easel 0.101.1 → 0.103.0

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 (234) hide show
  1. package/README.md +51 -0
  2. package/dist/LinkPicker-W2Rtxetz.d.ts +111 -0
  3. package/dist/autosave/index.d.ts +6 -3
  4. package/dist/autosave/index.js +1 -1
  5. package/dist/chrome/index.d.ts +3 -2
  6. package/dist/chrome/index.js +1 -25
  7. package/dist/chunk-26OOWIJJ.js +1 -0
  8. package/dist/chunk-2LK54I4E.js +1 -0
  9. package/dist/chunk-3M3A3DN2.js +4 -0
  10. package/dist/chunk-3QVB4AG2.js +3 -0
  11. package/dist/chunk-3WSPDAK2.js +1 -0
  12. package/dist/chunk-4ES5JGGX.js +1 -0
  13. package/dist/chunk-4MXFKJUY.js +1 -0
  14. package/dist/chunk-57DJOKXT.js +1 -0
  15. package/dist/chunk-5MZ3RNQQ.js +13 -0
  16. package/dist/chunk-5ZBY24K7.js +1 -0
  17. package/dist/chunk-66ICOE3I.js +8 -0
  18. package/dist/chunk-6DJHRLCU.js +25 -0
  19. package/dist/chunk-6FY3PZS3.js +1 -0
  20. package/dist/chunk-6TZTKAB5.js +1 -0
  21. package/dist/chunk-6UJ3Y6FC.js +1 -0
  22. package/dist/chunk-6W7WLPZH.js +1 -0
  23. package/dist/chunk-7F52SZOI.js +2 -0
  24. package/dist/chunk-7MU3RJ6S.js +1 -0
  25. package/dist/chunk-A7ZJII7O.js +1 -0
  26. package/dist/chunk-AJBJ74ME.js +1 -0
  27. package/dist/chunk-AKFJK65Z.js +1 -0
  28. package/dist/chunk-AKZWUV5Z.js +1 -0
  29. package/dist/chunk-BDTITTMW.js +1 -0
  30. package/dist/chunk-BSPCSC45.js +1 -0
  31. package/dist/chunk-BXZ6WLHC.js +22 -0
  32. package/dist/chunk-DUVRZ456.js +1 -0
  33. package/dist/chunk-F6CCTEIX.js +1 -0
  34. package/dist/chunk-FGNR22NY.js +1 -0
  35. package/dist/chunk-FUDHI5I4.js +1 -0
  36. package/dist/chunk-GENAF3P6.js +1 -0
  37. package/dist/chunk-GOTN2KY4.js +2 -0
  38. package/dist/chunk-GXN65JMA.js +1 -0
  39. package/dist/chunk-GXQCZJOP.js +1 -0
  40. package/dist/chunk-GZO72N3Q.js +0 -0
  41. package/dist/chunk-HDKTR5TZ.js +62 -0
  42. package/dist/chunk-HMX55DYT.js +1 -0
  43. package/dist/chunk-HQ4VVRIC.js +1 -0
  44. package/dist/chunk-HWW4XJOH.js +1 -0
  45. package/dist/chunk-I54UCYOU.js +1 -0
  46. package/dist/chunk-IQ5TA7AM.js +1 -0
  47. package/dist/chunk-IWAPPEL4.js +6 -0
  48. package/dist/chunk-IYT6NN2J.js +1 -0
  49. package/dist/chunk-KCBEE2MC.js +2 -0
  50. package/dist/chunk-KDYIMJTZ.js +1 -0
  51. package/dist/chunk-KQMML6JM.js +4 -0
  52. package/dist/chunk-LG436UTD.js +1 -0
  53. package/dist/chunk-MSBF7IW3.js +2 -0
  54. package/dist/chunk-NBJ2YY6Y.js +4 -0
  55. package/dist/chunk-OM67AJQC.js +1 -0
  56. package/dist/chunk-OORDMLL4.js +5 -0
  57. package/dist/chunk-OYX47SL7.js +1 -0
  58. package/dist/chunk-P67FP7PG.js +9 -0
  59. package/dist/chunk-PWZOS45R.js +2 -0
  60. package/dist/chunk-Q2HPBMG5.js +1 -0
  61. package/dist/chunk-Q3SQBNJB.js +1 -0
  62. package/dist/chunk-R2HLPNQF.js +1 -0
  63. package/dist/chunk-R5L2E7JX.js +1 -0
  64. package/dist/chunk-R5ZVNJLJ.js +2 -0
  65. package/dist/chunk-RLBXE4EU.js +1 -0
  66. package/dist/chunk-RW4XBUUW.js +1 -0
  67. package/dist/chunk-SERF2FAU.js +1 -0
  68. package/dist/chunk-TTJ54QGG.js +18 -0
  69. package/dist/chunk-VV5ADNBR.js +1 -0
  70. package/dist/chunk-YJXEHK6I.js +2 -0
  71. package/dist/chunk-Z3KBLIEH.js +10 -0
  72. package/dist/chunk-ZE7I3PLX.js +1 -0
  73. package/dist/chunk-ZWK3CBRU.js +1 -0
  74. package/dist/chunk-ZZ7VLIHQ.js +1 -0
  75. package/dist/drag/index.d.ts +3 -41
  76. package/dist/drag/index.js +1 -18
  77. package/dist/easel/index.js +1 -9
  78. package/dist/{words-BMzV04b1.d.ts → engine-DBxp_v6B.d.ts} +1 -58
  79. package/dist/fields/index.d.ts +2 -109
  80. package/dist/fields/index.js +1 -22
  81. package/dist/gold/index.d.ts +4 -2
  82. package/dist/host-DJ8Gzsx7.d.ts +552 -0
  83. package/dist/menu/index.js +1 -1
  84. package/dist/node-ops/index.js +1 -1
  85. package/dist/panelWidths-D9hTLR25.d.ts +66 -0
  86. package/dist/screen/components/AddBlockRow.d.ts +14 -0
  87. package/dist/screen/components/AddBlockRow.js +1 -0
  88. package/dist/screen/components/AddChildRow.d.ts +39 -0
  89. package/dist/screen/components/AddChildRow.js +1 -0
  90. package/dist/screen/components/AddSidePanel.d.ts +54 -0
  91. package/dist/screen/components/AddSidePanel.js +1 -0
  92. package/dist/screen/components/MediaSidePanel.d.ts +47 -0
  93. package/dist/screen/components/MediaSidePanel.js +1 -0
  94. package/dist/screen/components/NodeContextMenu.d.ts +364 -0
  95. package/dist/screen/components/NodeContextMenu.js +1 -0
  96. package/dist/screen/components/PageEditGuardNotices.d.ts +5 -0
  97. package/dist/screen/components/PageEditGuardNotices.js +1 -0
  98. package/dist/screen/components/PanelToggleIcon.d.ts +14 -0
  99. package/dist/screen/components/PanelToggleIcon.js +1 -0
  100. package/dist/screen/components/PreviewDeviceContext.d.ts +28 -0
  101. package/dist/screen/components/PreviewDeviceContext.js +1 -0
  102. package/dist/screen/components/PreviewPartsContext.d.ts +33 -0
  103. package/dist/screen/components/PreviewPartsContext.js +1 -0
  104. package/dist/screen/components/ScreenChrome.d.ts +5 -0
  105. package/dist/screen/components/ScreenChrome.js +1 -0
  106. package/dist/screen/components/ScreenDocumentContext.d.ts +20 -0
  107. package/dist/screen/components/ScreenDocumentContext.js +1 -0
  108. package/dist/screen/components/ScreenMount.d.ts +76 -0
  109. package/dist/screen/components/ScreenMount.js +1 -0
  110. package/dist/screen/components/ScreenStoreProvider.d.ts +63 -0
  111. package/dist/screen/components/ScreenStoreProvider.js +1 -0
  112. package/dist/screen/components/SectionScreenShell.d.ts +5 -0
  113. package/dist/screen/components/SectionScreenShell.js +16 -0
  114. package/dist/screen/components/SidePanelHead.d.ts +81 -0
  115. package/dist/screen/components/SidePanelHead.js +1 -0
  116. package/dist/screen/components/SlotChildActionsContext.d.ts +41 -0
  117. package/dist/screen/components/SlotChildActionsContext.js +1 -0
  118. package/dist/screen/components/UiIcon.d.ts +52 -0
  119. package/dist/screen/components/UiIcon.js +1 -0
  120. package/dist/screen/components/panel-widths.d.ts +37 -0
  121. package/dist/screen/components/panel-widths.js +1 -0
  122. package/dist/screen/components/usePartBridge.d.ts +66 -0
  123. package/dist/screen/components/usePartBridge.js +1 -0
  124. package/dist/screen/index.d.ts +31 -0
  125. package/dist/screen/index.js +1 -0
  126. package/dist/screen/lib/admin-bridge.d.ts +105 -0
  127. package/dist/screen/lib/admin-bridge.js +1 -0
  128. package/dist/screen/lib/backend-error.d.ts +106 -0
  129. package/dist/screen/lib/backend-error.js +1 -0
  130. package/dist/screen/lib/chrome-theme.d.ts +21 -0
  131. package/dist/screen/lib/chrome-theme.js +1 -0
  132. package/dist/screen/lib/client-only.d.ts +24 -0
  133. package/dist/screen/lib/client-only.js +1 -0
  134. package/dist/screen/lib/content/view-tiers.d.ts +25 -0
  135. package/dist/screen/lib/content/view-tiers.js +1 -0
  136. package/dist/screen/lib/document-addressing.d.ts +20 -0
  137. package/dist/screen/lib/document-addressing.js +1 -0
  138. package/dist/screen/lib/document-contract.d.ts +237 -0
  139. package/dist/screen/lib/document-contract.js +1 -0
  140. package/dist/screen/lib/document-hooks.d.ts +71 -0
  141. package/dist/screen/lib/document-hooks.js +0 -0
  142. package/dist/screen/lib/document-switch.d.ts +74 -0
  143. package/dist/screen/lib/document-switch.js +1 -0
  144. package/dist/screen/lib/failure.d.ts +54 -0
  145. package/dist/screen/lib/failure.js +1 -0
  146. package/dist/screen/lib/host-chrome.d.ts +181 -0
  147. package/dist/screen/lib/host-chrome.js +1 -0
  148. package/dist/screen/lib/host-inbound.d.ts +20 -0
  149. package/dist/screen/lib/host-inbound.js +1 -0
  150. package/dist/screen/lib/host.d.ts +20 -0
  151. package/dist/screen/lib/host.js +1 -0
  152. package/dist/screen/lib/key-scope.d.ts +23 -0
  153. package/dist/screen/lib/key-scope.js +1 -0
  154. package/dist/screen/lib/links/link-filters.d.ts +41 -0
  155. package/dist/screen/lib/links/link-filters.js +0 -0
  156. package/dist/screen/lib/load-error.d.ts +29 -0
  157. package/dist/screen/lib/load-error.js +1 -0
  158. package/dist/screen/lib/media-panel.d.ts +94 -0
  159. package/dist/screen/lib/media-panel.js +1 -0
  160. package/dist/screen/lib/media-picker.d.ts +68 -0
  161. package/dist/screen/lib/media-picker.js +1 -0
  162. package/dist/screen/lib/page-lock.d.ts +5 -0
  163. package/dist/screen/lib/page-lock.js +1 -0
  164. package/dist/screen/lib/puck/add-target-types.d.ts +55 -0
  165. package/dist/screen/lib/puck/add-target-types.js +0 -0
  166. package/dist/screen/lib/puck/block-choice.d.ts +52 -0
  167. package/dist/screen/lib/puck/block-choice.js +1 -0
  168. package/dist/screen/lib/puck/block-types-in.d.ts +39 -0
  169. package/dist/screen/lib/puck/block-types-in.js +1 -0
  170. package/dist/screen/lib/puck/content-tree.d.ts +196 -0
  171. package/dist/screen/lib/puck/content-tree.js +1 -0
  172. package/dist/screen/lib/puck/device-fields.d.ts +128 -0
  173. package/dist/screen/lib/puck/device-fields.js +1 -0
  174. package/dist/screen/lib/puck/field-buckets.d.ts +22 -0
  175. package/dist/screen/lib/puck/field-buckets.js +1 -0
  176. package/dist/screen/lib/puck/field-markers.d.ts +205 -0
  177. package/dist/screen/lib/puck/field-markers.js +1 -0
  178. package/dist/screen/lib/puck/hidable.d.ts +44 -0
  179. package/dist/screen/lib/puck/hidable.js +1 -0
  180. package/dist/screen/lib/puck/palette-sections.d.ts +96 -0
  181. package/dist/screen/lib/puck/palette-sections.js +1 -0
  182. package/dist/screen/lib/puck/panel-fields.d.ts +47 -0
  183. package/dist/screen/lib/puck/panel-fields.js +1 -0
  184. package/dist/screen/lib/puck/panel-no-control-mark.d.ts +74 -0
  185. package/dist/screen/lib/puck/panel-no-control-mark.js +1 -0
  186. package/dist/screen/lib/puck/part-id.d.ts +23 -0
  187. package/dist/screen/lib/puck/part-id.js +1 -0
  188. package/dist/screen/lib/puck/preview-click.d.ts +49 -0
  189. package/dist/screen/lib/puck/preview-click.js +1 -0
  190. package/dist/screen/lib/puck/preview-dom.d.ts +8 -0
  191. package/dist/screen/lib/puck/preview-dom.js +1 -0
  192. package/dist/screen/lib/puck/preview-events.d.ts +25 -0
  193. package/dist/screen/lib/puck/preview-events.js +1 -0
  194. package/dist/screen/lib/puck/preview-selection-context.d.ts +72 -0
  195. package/dist/screen/lib/puck/preview-selection-context.js +1 -0
  196. package/dist/screen/lib/puck/section-doc.d.ts +20 -0
  197. package/dist/screen/lib/puck/section-doc.js +1 -0
  198. package/dist/screen/lib/puck/slot-child-name.d.ts +186 -0
  199. package/dist/screen/lib/puck/slot-child-name.js +1 -0
  200. package/dist/screen/lib/puck/slot-heal.d.ts +5 -0
  201. package/dist/screen/lib/puck/slot-heal.js +1 -0
  202. package/dist/screen/lib/puck/slot-section-spec.d.ts +96 -0
  203. package/dist/screen/lib/puck/slot-section-spec.js +0 -0
  204. package/dist/screen/lib/puck/style-clipboard.d.ts +78 -0
  205. package/dist/screen/lib/puck/style-clipboard.js +1 -0
  206. package/dist/screen/lib/puck/text-control-kinds.d.ts +71 -0
  207. package/dist/screen/lib/puck/text-control-kinds.js +1 -0
  208. package/dist/screen/lib/puck/tree-reveal.d.ts +62 -0
  209. package/dist/screen/lib/puck/tree-reveal.js +1 -0
  210. package/dist/screen/lib/puck/use-section-ops.d.ts +86 -0
  211. package/dist/screen/lib/puck/use-section-ops.js +1 -0
  212. package/dist/screen/lib/screen-parts.d.ts +748 -0
  213. package/dist/screen/lib/screen-parts.js +1 -0
  214. package/dist/screen/lib/section-template-types.d.ts +49 -0
  215. package/dist/screen/lib/section-template-types.js +0 -0
  216. package/dist/screen/lib/section-templates.d.ts +23 -0
  217. package/dist/screen/lib/section-templates.js +1 -0
  218. package/dist/screen/lib/session-context.d.ts +30 -0
  219. package/dist/screen/lib/session-context.js +1 -0
  220. package/dist/screen/lib/session.d.ts +255 -0
  221. package/dist/screen/lib/session.js +1 -0
  222. package/dist/screen/screen.css +1102 -0
  223. package/dist/screen/words.d.ts +42 -0
  224. package/dist/screen/words.js +1 -0
  225. package/dist/session-DSQFmIvx.d.ts +43 -0
  226. package/dist/strings/catalogue.d.ts +13 -4
  227. package/dist/strings/catalogue.js +1 -1
  228. package/dist/strings/index.d.ts +5 -2
  229. package/dist/strings/index.js +1 -1
  230. package/dist/style-clipboard/index.js +1 -1
  231. package/dist/{types-DGcCsxs8.d.ts → types-CqY85foL.d.ts} +3 -65
  232. package/dist/words-D_Lnw1Gr.d.ts +59 -0
  233. package/package.json +348 -2
  234. package/dist/chunk-IG3U5NWJ.js +0 -1
@@ -0,0 +1,62 @@
1
+ import{dedupeSlotChildren as e}from"./chunk-26OOWIJJ.js";import{siteStyleScope as n,copyNodeStyle as t,nodeStyleRows as o,planNodePaste as r}from"./chunk-Q2HPBMG5.js";import{markedTreeNodeId as i,revealSelectedTreeRow as l,sameSelector as s}from"./chunk-FGNR22NY.js";import{cloneNodeWithFreshIds as d}from"./chunk-AKFJK65Z.js";import{rootRowName as c,slotChildRowName as a,slotChildRenameProp as p}from"./chunk-HWW4XJOH.js";import{scrollPreviewToSection as u,gotoPreviewSlide as f,scrollPreviewToTop as h}from"./chunk-4ES5JGGX.js";import{useEaselKeyTarget as m,useEaselUndoKeys as y}from"./chunk-OM67AJQC.js";import{SlotChildActionsProvider as g}from"./chunk-KCBEE2MC.js";import{UiIcon as k}from"./chunk-5MZ3RNQQ.js";import{DEFAULT_PANEL_W as S,PANEL_WIDTHS_KEY as b,clampPanelWidth as x}from"./chunk-SERF2FAU.js";import{usePartBridge as v}from"./chunk-GXN65JMA.js";import{useSectionOps as w}from"./chunk-VV5ADNBR.js";import{EASEL_NODE_CLIPBOARD as z,useNodeContextMenu as C}from"./chunk-F6CCTEIX.js";import{ROOT_ZONE as B,TREE_MAX_DEPTH as N,childSlotsOf as A,slotFieldsOf as O,nestsInTree as T,newNodeId as P}from"./chunk-FUDHI5I4.js";import{PageEditGuardNotices as $}from"./chunk-LG436UTD.js";import{useScreenDocument as j}from"./chunk-YJXEHK6I.js";import{requestMediaPick as R}from"./chunk-6FY3PZS3.js";import{useEaselHost as I}from"./chunk-R5ZVNJLJ.js";import{heldStyle as M,styleShortcut as E}from"./chunk-57DJOKXT.js";import{AddChildRow as L}from"./chunk-3QVB4AG2.js";import{AddSidePanel as D}from"./chunk-OORDMLL4.js";import{SidePanelHead as F,PanelShowStrip as H}from"./chunk-IWAPPEL4.js";import{MediaSidePanel as V}from"./chunk-3M3A3DN2.js";import{useMediaPanel as J,usePanelPick as G,cancelPanelPick as U}from"./chunk-ZZ7VLIHQ.js";import{useScreenSaveSwitch as W,useScreenPinned as Y,useScreenCanvasFrame as Q,useScreenInspectorPanel as X,useScreenDevices as Z,useScreenLeftView as K,SELECTION_MODE as _,sameInspectorMode as q,useScreenBridges as ee,useScreenBlockRules as ne,useScreenBlockLook as te,useScreenDocumentPass as oe}from"./chunk-NBJ2YY6Y.js";import{useEasel as re}from"./chunk-P67FP7PG.js";import{LayersTree as ie,TreeRow as le,TreeGroupLabel as se,Subtree as de,TreeRowAction as ce,TreeSeam as ae}from"./chunk-ZFDCDJNZ.js";import{useNodeOps as pe,toItemSelector as ue}from"./chunk-D2BCHTQR.js";import{saveIndicator as fe}from"./chunk-H6DDIBQ4.js";import{EaselTopBar as he,TopBarRail as me,TopBarCluster as ye,EaselIconButton as ge,TopBarDivider as ke,DeviceSwitch as Se,InspectorIconButton as be,PanelResizeHandle as xe,MAX_PANEL_W as ve,MIN_PANEL_W as we,panelWidthVars as ze,SaveState as Ce,SaveStateToggle as Be}from"./chunk-6DJHRLCU.js";import{CanvasDragLayer as Ne}from"./chunk-TTJ54QGG.js";import{createDragSession as Ae,useTreeDrag as Oe,gapToMoveIndex as Te}from"./chunk-67GNT6PF.js";import{useCanvasFrame as Pe,BLOCK_SELECTOR as $e,useCanvasEvent as je}from"./chunk-PAELDYYS.js";import{LayersIcon as Re,UndoIcon as Ie,RedoIcon as Me,TrashIcon as Ee,MediaIcon as Le}from"./chunk-L5KW4HG5.js";import{ROOT_ID as De,ROOT_SLOT as Fe,zoneKey as He,parseZoneKey as Ve,DataError as Je}from"./chunk-KRXQM65X.js";import{useRef as Ge,useMemo as Ue,useState as We,useEffect as Ye,useCallback as Qe,useLayoutEffect as Xe,Fragment as Ze}from"react";import{jsx as Ke,jsxs as _e,Fragment as qe}from"react/jsx-runtime";function en({saveState:e,notSaving:n,readOnlyReason:t,toggle:o,onToggle:r,onRetry:i}){if(null!==t)/* @__PURE__ */return Ke(Ce,{tone:"off",label:t,role:"status"});if(n)/* @__PURE__ */
2
+ return Ke(Ce,{tone:e.pending?"off-unsaved":"off",label:"Not saving — see the notice above",role:"status"});const{tone:l,label:s}=fe(e),d=e.failed&&!e.paused&&/* @__PURE__ */Ke("button",{type:"button",className:"es-btn-ghost",onClick:i,children:"Retry now"});/* @__PURE__ */
3
+ return _e(qe,o?{children:[
4
+ /* @__PURE__ */Ke(Be,{pressed:e.paused,onToggle:r,title:e.paused?"Auto-save is off — click to turn it back on (saves your held edits)":"Auto-save is on — click to pause it",children:/* @__PURE__ */Ke(Ce,{tone:l,label:s})}),d]}:{children:[
5
+ /* @__PURE__ */Ke(Ce,{tone:l,label:s,role:"status"}),d]})}function nn({expand:e}){/* @__PURE__ */
6
+ return Ke("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.9,strokeLinecap:"round",strokeLinejoin:"round",children:/* @__PURE__ */_e(qe,e?{children:[
7
+ /* @__PURE__ */Ke("path",{d:"M8 9l4-4 4 4"}),
8
+ /* @__PURE__ */Ke("path",{d:"M8 15l4 4 4-4"})]}:{children:[
9
+ /* @__PURE__ */Ke("path",{d:"M8 4l4 4 4-4"}),
10
+ /* @__PURE__ */Ke("path",{d:"M8 20l4-4 4 4"}),
11
+ /* @__PURE__ */Ke("path",{d:"M5 12h14"})]})})}function tn(){const fe=I(),{capabilities:Ce,currentSlug:Be,siteId:tn,onPublish:on,saveState:rn,saveConflict:ln,retrySave:sn,toggleAutoSave:dn,readOnly:cn,readOnlyReason:an=null}=j(),pn=W(),{canPublish:un,mediaEditing:fn,hasEditGuard:hn,hasPinnedChrome:mn}=Ce,{appState:yn,dispatch:gn,history:kn,selectedItem:Sn,getSelectorForId:bn,config:xn}=re(e=>e),{first:vn,last:wn,firstGroup:zn,lastGroup:Cn,isSectionGroup:Bn,sectionGroupZone:Nn,panelOf:An}=Y(),On=An(vn),Tn=Q(),Pn=X(),$n=w({readOnly:cn}),jn=Ge(null),Rn=Ue(()=>({...$n,select:e=>{jn.current=e,$n.select(e)}}),[$n]),In=yn.ui,Mn=In.leftSideBarVisible,En=In.rightSideBarVisible,{options:Ln,widths:Dn,initial:Fn,fluid:Hn}=Z(),[Vn,Jn]=We(Fn),Gn=J(),Un=fn&&null!==Gn,Wn=G(),{read:Yn,write:Qn,forSelection:Xn}=K(),[Zn,Kn]=We(Yn);Ye(()=>{Qn(Zn)},[Zn]);const[_n,qn]=We(0),et=Ge(null),nt=Ge(null),tt=Pe(nt,{readySelector:$e}),ot=m(nt);y(nt);const[rt,it]=We(!1),lt=Ge(!1),st=Ge(!1),[dt,ct]=We(null),at=dt&&dt.zone===B?dt.index:null,pt=e=>ct(null===e?null:{zone:B,index:e}),[ut,ft]=We([]),[ht,mt]=We(_),yt="puck"===ht.kind,gt=i(ht,Sn?.props.id),[kt,St]=We(null);Ye(()=>{kt&&(l(),St(null))},[kt]);const bt=Ge(bn);bt.current=bn;const xt=Qe((e,{scroll:n})=>{Kn(n=>Xn(e,n)),n&&St(e);const t=[];let o=e;for(let e=0;e<4;e++){const e=bt.current(o)?.zone;if(!e||!e.includes(":"))break;const n=e.split(":")[0];t.push(n),o=n}0!==t.length&&Jt(e=>{if(t.every(n=>!e.has(n)))return e;const n=new Set(e);return t.forEach(e=>n.delete(e)),n})},[]);Ye(()=>{mt(An(Sn?.type)??_);const e=Sn?.props.id,n=jn.current;if(jn.current=null,!e)return;const t=bn(e);xt(String(e),{scroll:!s(n,t??null,B)})},[Sn?.props.id,xt]);const vt=Qe(e=>{mt(n=>q(n,e)?n:e),gn({type:"setUi",ui:{rightSideBarVisible:!0}})},[gn]),wt=ee({kind:ht.kind,mode:ht,open:vt,show:e=>mt(e),reveal:()=>{En||gn({type:"setUi",ui:{rightSideBarVisible:!0}})}},{data:yn.data,selected:Sn??null,zoneOf:e=>bn(e)?.zone,readOnly:Boolean(cn),select:e=>{mt(_),Rn.select({index:e})},replace:(e,n)=>Rn.replaceComponent(B,e,n),scrollTo:e=>Xo(e)},{device:Vn,refreshes:_n},{setView:Kn,reveal:()=>{Mn||gn({type:"setUi",ui:{leftSideBarVisible:!0}})}}),zt=wt.pinnedSource??!1,Ct=wt.resolveLeftView?wt.resolveLeftView(Zn,Un):"media"===Zn&&Un?Zn:"sections",{isLockedBlock:Bt,duplicateBlocked:Nt,nestDepth:At,newSectionNode:Ot,canAddTo:Tt,blockIsOffered:Pt}=ne(),$t=te(),{labelAtLevel:jt,Icon:Rt,useProducts:It}=$t,Mt=Qe(e=>{gn({type:"setUi",ui:{rightSideBarVisible:!0}}),u(e),xt(e,{scroll:!0})},[gn,xt]),{selectNode:Et,openPartId:Lt}=v({mode:ht,setMode:mt,onOpenPart:Mt}),[Dt,Ft]=We(null),Ht="sf-editor-collapsed-sections",[Vt,Jt]=We(()=>{if("undefined"==typeof window)/* @__PURE__ */return new Set;try{const e=window.localStorage.getItem(Ht);return new Set(e?JSON.parse(e):[])}catch{/* @__PURE__ */
12
+ return new Set}});Ye(()=>{try{window.localStorage.setItem(Ht,JSON.stringify([...Vt]))}catch{}},[Vt]);const[Gt,Ut]=We(()=>{if("undefined"==typeof window)return{...S};try{const e=window.localStorage.getItem(b);if(!e)return{...S};const n=JSON.parse(e);return{left:x(Number(n.left)||S.left),right:x(Number(n.right)||S.right)}}catch{return{...S}}});Ye(()=>{const e=setTimeout(()=>{try{window.localStorage.setItem(b,JSON.stringify(Gt))}catch{}},300);return()=>clearTimeout(e)},[Gt]);const Wt=Qe((e,n)=>Ut(t=>{const o="function"==typeof n?n(t[e]):n;return t[e]===o?t:{...t,[e]:o}}),[]),Yt=Qe(e=>Wt("left",e),[Wt]),Qt=Qe(e=>Wt("right",e),[Wt]),Xt=e=>Vt.has(e),Zt=e=>Jt(n=>{const t=new Set(n);return t.has(e)?t.delete(e):t.add(e),t}),Kt=Ge(!1),_t=Ge(null);Ye(()=>{if(Kt.current&&!rt){const e=_t.current,n=e&&e.isConnected&&!e.closest('[aria-hidden="true"]')?e:null;(n??nt.current?.querySelector('button[aria-label="Add"]'))?.focus(),_t.current=null}Kt.current=rt},[rt]),Ye(()=>{if(!rt||!ot)return;const e=e=>{"Escape"===e.key&&rr()};return ot.addEventListener("keydown",e),()=>ot.removeEventListener("keydown",e)},[rt,ot]),Ye(()=>{!Mn&&rt&&(it(!1),ct(null),lt.current=!1)},[Mn]),Ye(()=>{if(!Wn)return st.current&&gn({type:"setUi",ui:{leftSideBarVisible:!1}}),void(st.current=!1);rt&&(it(!1),ct(null),st.current=lt.current,lt.current=!1),Mn||(st.current=!0,gn({type:"setUi",ui:{leftSideBarVisible:!0}}))},[Wn]),Ye(()=>{!Mn&&Wn&&(st.current=!1,U())},[Mn]),Ye(()=>{if(!Wn||!ot)return;const e=e=>{"Escape"===e.key&&U()};return ot.addEventListener("keydown",e),()=>ot.removeEventListener("keydown",e)},[Wn,ot]);const[qt,eo]=We(null),[no,to]=We(0),oo=Ge(null),ro=(e,n="success")=>{eo({msg:e,tone:n}),to(e=>e+1),oo.current&&clearTimeout(oo.current),oo.current=setTimeout(()=>eo(null),"error"===n?3200:1900)};Ye(()=>()=>{oo.current&&clearTimeout(oo.current)},[]);const io=Ge(null),[lo,so]=We(0),[co,ao]=We(0);Ye(()=>{const e=io.current;if(!e)return;const n=()=>{so(e.clientWidth),ao(e.clientHeight)};n();const t=new ResizeObserver(n);return t.observe(e),()=>t.disconnect()},[]),Xe(()=>{io.current&&(so(io.current.clientWidth),ao(io.current.clientHeight))},[Gt,Mn,En]);const po=Vn===Hn?lo>0?lo:Dn[Hn]:Dn[Vn],uo=lo>0?Math.min(lo/po,2):1,fo=po*uo,ho=lo>0&&fo>lo+1,mo={width:fo,height:co||"100%",flex:"none",position:"relative"},yo={width:po,height:co?co/uo:"100%",maxHeight:"none",transform:1!==uo?`scale(${uo})`:void 0,transformOrigin:"top left"},go=()=>gn({type:"setUi",ui:{leftSideBarVisible:!Mn}}),ko=()=>gn({type:"setUi",ui:{rightSideBarVisible:!En}}),So=e=>{rt&&(it(!1),ct(null),lt.current=!1,Mn&&Zn===e)||Wn&&(st.current=!1,U(),Mn&&Zn===e)||(Mn&&Zn===e?go():(Kn(e),Mn||gn({type:"setUi",ui:{leftSideBarVisible:!0}})))},bo=()=>{R(fe,{accept:"image/*",title:"Media library"})},xo=()=>{mt(_),Rn.select(null),h()},vo=()=>{mt(On??_),En||gn({type:"setUi",ui:{rightSideBarVisible:!0}})},wo=yn.data.content??[],zo=()=>{const e=wo.findIndex(e=>e.type===vn),n=wo.findIndex(e=>e.type===wn);return{floor:e>=0?e+1:0,cap:n>=0?n:wo.length}},Co=xn,Bo=pe({data:yn.data,config:Co,readOnly:Boolean(cn),clipboard:z,afterRemove:"none",stepBounds:(e,n)=>{if(e.parentId!==De||e.slot!==Fe)return{min:0,max:n-1};const{floor:t,cap:o}=zo();return{min:t,max:o-1}},commit:(e,{select:n})=>{if(void 0!==n){mt(_);const t="node"===n?.kind?ue(e,Co,n):null;Rn.select(t&&t.zone===B?{index:t.index}:t)}Rn.commitDocument(e)}}),No=e=>xn.components[e]?.label??e,Ao=Qe(e=>xn.components[e]?.defaultProps??{},[xn]),Oo=e=>jt(e,"section",No(e)),To=e=>c({type:e.type,props:e.props??{}},Oo(e.type)),{nodeAddresses:Po,zoneItems:$o}=Ue(()=>{const e=/* @__PURE__ */new Map,n=/* @__PURE__ */new Map,t=(o,r,i)=>{n.set(r,o),o.forEach((n,o)=>{const l=String(n.props?.id??"");if(l&&e.set(l,{zone:r,index:o}),i>=N)return;const s=/* @__PURE__ */new Map;for(const{child:e,zone:t}of A(xn,n))s.set(t,[...s.get(t)??[],e]);for(const[e,n]of s)t(n,e,i+1)})};return t(wo,B,0),{nodeAddresses:e,zoneItems:n}},[wo,xn]),jo=Qe(e=>$o.get(e)??[],[$o]),Ro=It(),Io=Ue(()=>{const e=/* @__PURE__ */new Map;for(const n of Ro??[])e.set(n.slug,n.name);return e},[Ro]),Mo=e=>a(e,No,$t.plainText,e=>Io.get(e)),Eo=(e,n)=>n===B?null:p(xn.components[e.type]?.fields),Lo=(e,n,t,o)=>{if(!(Dt?.zone===e&&Dt.index===n))return;const r=(t,o)=>{Ft(null),o&&((e,n,t)=>{const o=jo(e)[n];if(!o)return;const r=Eo(o,e);r&&Rn.replaceComponent(e,n,{...o,props:{...o.props,[r]:t.trim()}})})(e,n,t)};/* @__PURE__ */
13
+ return Ke("input",{className:"es-tree-rename",defaultValue:o,autoFocus:!0,"aria-label":"Rename",onClick:e=>e.stopPropagation(),onBlur:e=>r(e.currentTarget.value,!0),onKeyDown:e=>{"Enter"===e.key?(e.preventDefault(),r(e.currentTarget.value,!0)):"Escape"===e.key&&(e.preventDefault(),r("",!1))}},t)},Do=n(tn),Fo=xn,Ho=(e,n)=>n===B?Oo(e):No(e),Vo=(e,n,t)=>{const o=r(Fo,Do,t,Ho(t.type,e));o&&(o.changed&&Rn.replaceComponent(e,n,{...t,props:{...o.props,id:t.props.id}}),ro(o.message))},Jo=C({nodesIn:jo,nodeAt:(e,n)=>jo(e)[n]??null,labelOf:(e,n)=>n===B?Oo(e):No(e),renamePropOf:Eo,beginRename:(e,n)=>Ft({zone:e,index:n}),history:{hasPast:kn.hasPast,hasFuture:kn.hasFuture,back:()=>kn.back(),forward:()=>kn.forward()},openAddSection:()=>{Rn.select(null),tr(null)},openPageSettings:()=>{Rn.select(null),mt(_)},collapseAll:()=>Jt(new Set(jo(B).map(e=>String(e.props.id)))),onPasteRefused:()=>ro("Your browser won’t let us read the clipboard — press ⌘V","error"),isLocked:e=>Bt(e.type),duplicateBlocked:e=>Nt(yn.data,e),canAddTo:Tt,nodeOps:Bo,isPinned:(e,n)=>n===B&&(e.type===vn||e.type===wn),sectionBand:zo,openAddInside:(e,n)=>{e===B?Zo(n):Rn.select({zone:e,index:n}),tr(null)},locate:e=>Po.get(e)??null,rowNameOf:(e,n)=>n===B?To(e):Mo(e),selectAt:(e,n,t,o)=>{e===B?Zo(n):kr(e,n,t,o??"")},style:{held:()=>M(Do),canCopy:e=>o(Fo,e).some(e=>!1!==e.counted),copy:(e,n)=>t(Fo,Do,e,Ho(e.type,n)),paste:(e,n,t)=>Vo(e,n,t)}},tt),Go=Ge({copy:(e,n)=>{},paste:(e,n,t)=>{},at:()=>null,readOnly:!1});Ye(()=>{Go.current={copy:(e,n)=>t(Fo,Do,e,Ho(e.type,n)),paste:Vo,at:()=>{const e=yn.ui.itemSelector;if(!e)return null;const n=e.zone??B,t=jo(n)[e.index];return t?{zone:n,index:e.index,node:t}:null},readOnly:Boolean(cn)}});const Uo=Qe(e=>{const n=E(e);if(!n)return;const t=Go.current,o=t.at();o&&(e.preventDefault(),"copy"===n?t.copy(o.node,o.zone):t.readOnly||t.paste(o.zone,o.index,o.node))},[]);Ye(()=>{if(!ot)return;const e=e=>Uo(e);return ot.addEventListener("keydown",e),()=>ot.removeEventListener("keydown",e)},[Uo,ot]),je(tt,"keydown",Uo);const Wo=wo.map(e=>e.props.id).join("|");Ye(()=>{const e=tt?.document??null,n=tt?.window??null;let t=0;const o=[],r=()=>{if(!e)return void ft(e=>e.length?[]:e);const n=wo.findIndex(e=>e.type===wn),t=n>=0?n:wo.length,o=n=>{const t=wo[n]?.props?.id;if(null==t)return null;const o=e.querySelector(`[data-puck-component="${CSS.escape(String(t))}"]`);return o?o.getBoundingClientRect():null},r=[];for(let e=1;e<=t;e++){const n=o(e),t=o(e-1);(n||t)&&r.push({top:Math.round(n?n.top:t.bottom),index:e})}ft(e=>function(e,n){if(e.length!==n.length)return!1;for(let t=0;t<e.length;t++)if(e[t].top!==n[t].top||e[t].index!==n[t].index)return!1;return!0}(e,r)?e:r)},i=()=>{cancelAnimationFrame(t),t=requestAnimationFrame(r)};if(!e||!n)return void r();n.addEventListener("scroll",i,{passive:!0});const l=new ResizeObserver(i);return l.observe(e.documentElement),r(),o.push(setTimeout(r,150),setTimeout(r,450)),()=>{cancelAnimationFrame(t),o.forEach(clearTimeout),n.removeEventListener("scroll",i),l.disconnect()}},[tt,Wo,Vn,uo,Mn,En,Sn?.props.id]);const Yo=tt?.document??null,Qo=tt?.window??null;Ye(()=>{const e=et.current;if(!e||!Yo||!Qo)return;const n=[],t=()=>{const n=Yo.querySelector(`[data-puck-component="${CSS.escape(e.id)}"]`);if(!n)return!1;const t=n.getBoundingClientRect().top-e.offset;return Math.abs(t)>1&&Qo.scrollTo({left:Qo.scrollX,top:Qo.scrollY+t,behavior:"instant"}),!0};return et.current=null,t()&&n.push(setTimeout(t,150),setTimeout(t,450)),()=>n.forEach(clearTimeout)},[Yo,Qo]);const Xo=e=>{wt.holdCanvasOn?wt.holdCanvasOn(e):u(e)},Zo=e=>{mt(_),Rn.select({index:e}),wt.sectionPressed?.(wo[e]);const n=wo[e]?.props?.id;n&&Xo(n)},Ko=e=>{const{floor:n,cap:t}=zo(),o=e=>Math.min(Math.max(n,e),t);if("number"==typeof e)return o(e);const r=Sn&&ht.kind!==On?.kind?wo.findIndex(e=>e.props.id===Sn.props.id):-1;return o(r>=0?r+1:t)},_o=(e,n)=>{const{floor:t,cap:o}=zo(),r=Math.min(Math.max(n,t),o),i=e<r?r-1:r;return i===e?{moved:!1,dest:e}:(Rn.reorderComponent(B,e,i),Rn.select({index:i}),{moved:!0,dest:i})},qo=(e,n,t)=>{mt(_),Rn.select({index:e}),u(n),ro(`Added “${t}” section`)},er=(e,n)=>{const t=Ko(n),o=Ot(e,{nodeDefaults:Ao,newNodeId:P,sectionLabel:Oo,blockIsOffered:Pt}),r=o?Rn.insertNode(B,t,o):Rn.insertSection(e,t);return qo(t,r,Oo(e)),t},nr=(e,n,t)=>{const o=Ko(t),r=Rn.insertNode(B,o,n);return qo(o,r,e),o},tr=e=>or(B,e),or=(e,n)=>{_t.current=document.activeElement??null,Wn&&(lt.current=st.current,st.current=!1,U()),ct(null===n?null:{zone:e,index:n}),it(!0),Mn||(lt.current=!0,gn({type:"setUi",ui:{leftSideBarVisible:!0}}))},rr=()=>{it(!1),ct(null),lt.current&&gn({type:"setUi",ui:{leftSideBarVisible:!1}}),lt.current=!1},ir=(e,n,t)=>{if("section"===e.kind)Rn.insertComponent(n,e.type,t);else{if("template"!==e.kind)return;Rn.insertNode(n,t,d(e.template.node))}mt(_),Rn.select({index:t,zone:n})},lr=e=>n=>{n.target.closest(".es-tree-select")||e()},sr=()=>wt.editPinnedSource?.(),dr=(e,n,t)=>/* @__PURE__ */Ke(ce,{kind:"delete",label:`Delete ${t}`,onClick:()=>((e,n)=>{const t=jo(e)[n]?.props?.id;null!=t&&Bo.remove(String(t))})(e,n),children:/* @__PURE__ */Ke(Ee,{size:15})}),cr=(e,n,t,o)=>{const r=Boolean(t.props._hidden);/* @__PURE__ */
14
+ return Ke(ce,{kind:"eye",label:r?`Show ${o}`:`Hide ${o}`,onClick:()=>pr(e,n,t),children:/* @__PURE__ */Ke(k,r?{name:"eye-off",size:14}:{name:"eye",size:14})})},ar=e=>{const n=Oo(wo[e]?.type??"");return Vr(B,e,()=>tr(e),n?`Add section before ${n}`:"Add section here")},pr=(e,n,t)=>{Rn.replaceComponent(e,n,{...t,props:{...t.props,_hidden:!t.props._hidden}})},ur=e=>O(xn,e),fr=e=>A(xn,e),hr=(e,n,t)=>{const o=T(xn,e.type,n)&&(t||fr(e).length>0);return{collapsible:o,folded:o&&Xt(String(e.props.id))}},mr=(e,n,t)=>fr(e).flatMap(({child:e})=>hr(e,n,t(e.type)).collapsible?[String(e.props.id),...mr(e,n+1,t)]:[]),yr=e=>fr(e).length>0||Boolean(Tt(e.type)),gr=e=>Boolean(Tt(e)),kr=(e,n,t,o)=>{if(mt(_),Tt(o)?.spec?.slider){const t=e.split(":")[0];f(t,n),Rn.select({index:n,zone:e}),u(t)}else Rn.select({index:n,zone:e}),Xo(t)},Sr=(e,n,t,o,r)=>{const i=`${e}:${n}`;Rn.insertComponent(i,t,o),Tt(r)?.spec?.slider?requestAnimationFrame(()=>{f(e,o),Rn.select({index:o,zone:i})}):Rn.select({index:o,zone:i})},br=(e,n,t)=>{Rn.insertComponent(e,n,t),mt(_),Rn.select({index:t,zone:e})},xr=Ge(/* @__PURE__ */new Set);Ye(()=>{wo.forEach(e=>{const n=Tt(e.type)?.spec;if(!n)return;const t=e.props.id;if(xr.current.has(t))return;xr.current.add(t);if((Array.isArray(e.props[n.slot])?e.props[n.slot]:[]).length>0)return;if(n.skipSeed?.(e.props))return;const o=`${t}:${n.slot}`,r=n.legacy?.(e.props)??[];(r.length?r:n.seeds(Ao)).forEach((e,t)=>Rn.seedChild(o,t,n.childType,e))})},[wo,Rn,Ao]);const vr=Ge(/* @__PURE__ */new Set);Ye(()=>{wo.forEach((n,t)=>{const o=n.props.id;if(vr.current.has(o))return;const r=e(n,ur(n.type));vr.current.add(o),r&&Rn.replaceComponent(B,t,{...n,props:r})})},[wo,Rn]),oe(Rn,xn);const wr=wo.findIndex(e=>e.type===wn),zr=wr>=0?wo[wr]:null,Cr=wo.find(e=>e.type===zn)??null,Br=wo.find(e=>e.type===Cn)??null,Nr=wr>=0?wr:wo.length,Ar=[];wo.forEach(e=>{e.type!==wn&&(yr(e)&&Ar.push(String(e.props.id)),Ar.push(...mr(e,1,gr)))}),zr&&(Ar.push(String(zr.props.id)),Ar.push(...mr(zr,1,gr)));const Or=Ar.length>0&&Ar.every(e=>Vt.has(e)),Tr=e=>$t.blockRowName(e,No),Pr=(e,n,t,o)=>{const r=jo(e)[t];if(!r)return;const i={...Ve(e),index:t},l={...Ve(n),index:Math.min(Math.max(o,0),jo(n).length)},s=Te(i,l);if(e!==n||s!==t)try{Bo.move(String(r.props.id),{...l,index:s})}catch(e){if(!(e instanceof Je))throw e}},$r=e=>{const n=/* @__PURE__ */new Set,t=e=>{for(const{child:o,zone:r}of fr(e))n.add(r),t(o)};for(const t of ur(e.type))n.add(`${e.props.id}:${t}`);return t(e),n},jr=e=>{let n=e.slice(0,e.indexOf(":"));for(let e=0;e<64;e++){const e=Po.get(n);if(!e)return null;if(e.zone===B)return n;n=e.zone.slice(0,e.zone.indexOf(":"))}return null},Rr=e=>{const n=e.slice(0,e.indexOf(":")),t=wo.find(e=>Bn(e.type)&&String(e.props.id)===n);return t&&Nn(n)===e?t:null},Ir=(e,n)=>{if(e.add)return Er(e.add,n);const t=He(n);if(Bn(e.type))return!1;const o=Rr(t),r=Rr(e.zone);if(o||r)return!(!o||!r)&&(n.index>=0&&n.index<=jo(t).length);if(e.zone===B||t===B){if(e.zone!==t)return!1;const{floor:o,cap:r}=zo();return n.index>=o&&n.index<=r}if(n.index<0||n.index>jo(t).length)return!1;if(e.zone===t)return!0;const i=zr?String(zr.props.id):null;return(!i||jr(e.zone)!==i&&jr(t)!==i)&&((e,n,t)=>{if(e===n)return!0;const o=jo(e)[t];if(!o)return!1;const r=n.split(":")[0],i=Po.get(r),l=i?jo(i.zone)[i.index]:void 0;if(!l)return!1;if($r(o).has(n))return!1;const s=Tt(l.type,At(yn?.data,l.type,r));return!!s&&(!!(s.choices?s.choices.some(e=>e.type===o.type):s.spec?.childType===o.type)&&!s.spec?.addBlocked?.(jo(n),o))})(e.zone,t,e.index)},Mr=e=>{const n=e.slice(0,e.indexOf(":")),t=Po.get(n),o=t?jo(t.zone)[t.index]:void 0;if(!t||!o)return null;const r=Tt(o.type,At(yn?.data,o.type,n));if(!r||`${n}:${r.slot}`!==e)return null;if("footer"===r.source)return null;return{parent:o,parentId:n,target:r,choices:r.choices??(r.spec?[{type:r.spec.childType,label:No(r.spec.childType)}]:[]),parentName:t.zone===B?Oo(o.type):No(o.type)}},Er=(e,n)=>{const t=He(n);if("block"!==e.kind){if(Rr(t))return n.index>=0&&n.index<=jo(t).length;if(t!==B)return!1;const{floor:e,cap:o}=zo();return n.index>=e&&n.index<=o}if(t===B)return!1;const o=Mr(t);return!(!o||!o.choices.some(n=>n.type===e.type))&&!o.target.spec?.addBlocked?.(jo(t))},Lr=(e,n)=>{e.add?((e,n)=>{if("block"!==e.kind&&Rr(He(n)))return void ir(e,He(n),n.index);if("section"===e.kind)return void er(e.type,n.index);if("template"===e.kind)return void nr(e.template.name,d(e.template.node),n.index);const t=He(n),o=Mr(t);o&&(o.target.spec?Sr(o.parentId,o.target.slot,e.type,n.index,o.parent.type):br(t,e.type,n.index))})(e.add,n):e.zone===B?_o(e.index,n.index):Pr(e.zone,He(n),e.index,n.index)},[Dr]=We(()=>Ae()),Fr=Oe({keyOf:e=>e.id,readOnly:Boolean(cn),session:Dr,canDrop:Ir,onDrop:Lr,onStep:(e,n)=>{e.zone===B?((e,n)=>{const t=Oo(wo[e]?.type??""),o=_o(e,n<0?e-1:e+2);if(!o.moved)return void ro(`“${t}” is already ${n<0?"first":"last"}`);const{floor:r,cap:i}=zo();ro(`Moved “${t}” to position ${o.dest-r+1} of ${i-r}`)})(e.index,n):Pr(e.zone,e.zone,e.index,n<0?e.index-1:e.index+2)}}),Hr=Qe(e=>{const{floor:n,cap:t}=zo(),o=[];for(const r of e.nodes){const e=He(r.place),i=jo(e)[r.place.index];if(!i||String(i.props.id)!==r.id)continue;if(i.type===vn||i.type===wn||Bt(i.type))continue;if(Bn(i.type))continue;const l=Boolean(Rr(e)),s=e===B||l;e===B&&t-n<2||o.push({key:r.id,item:{id:r.id,zone:e,index:r.place.index,type:i.type},box:r.box,label:s?Oo(i.type):Mo(i),from:r.place})}return{sources:o,zones:e.zones.filter(e=>e.children.length>0||Boolean(Mr(He(e.list))?.choices.length)||Boolean(Rr(He(e.list))))}},[yn.data]),Vr=(e,n,t,o)=>/* @__PURE__ */Ke(ae,{...cn?{}:Fr.seam({place:{...Ve(e),index:n}}),onAdd:cn?void 0:t,label:o},`seam:${e}:${n}`),Jr={rowClick:lr,isCollapsed:Xt,toggleCollapse:Zt},Gr=e=>{const n=String(e.props.id),t=wo.findIndex(e=>String(e.props.id)===n),o=Nn(n),r=jo(o),i=Xt(n),l=No(e.type),s=e=>Vr(o,e,()=>or(o,e),"Add section here");/* @__PURE__ */
15
+ return _e(qe,{children:[
16
+ /* @__PURE__ */Ke(le,{icon:/* @__PURE__ */Ke(Rt,{type:e.type,size:13}),name:l,onSelect:()=>Zo(t),selected:gt===n,rowProps:{"data-node-id":n,onClick:lr(()=>Zo(t))},fold:{open:!i,label:"section",onToggle:()=>Zt(n)}}),!i&&/* @__PURE__ */_e(de,{children:[r.map((n,t)=>{const r=String(n.props.id),i=To(n),l=yr(n),d=l&&Xt(r),c=()=>kr(o,t,r,e.type),{rowProps:a,...p}=Fr.row({item:{id:r,zone:o,index:t,type:n.type},place:{...Ve(o),index:t}},{"data-node-id":r,onClick:lr(c)});/* @__PURE__ */
17
+ return _e(Ze,{children:[s(t),
18
+ /* @__PURE__ */Ke(le,{icon:/* @__PURE__ */Ke(Rt,{type:n.type,size:13}),name:i,onSelect:c,selected:gt===r,hidden:Boolean(n.props._hidden),...p,fold:l?{open:!d,label:"section",onToggle:()=>Zt(r)}:void 0,actions:/* @__PURE__ */_e(qe,{children:[dr(o,t,i),cr(o,t,n,i)]}),rowProps:a}),l&&!d&&/* @__PURE__ */Ke(de,{children:Wr(n,2)})]},r)}),s(r.length)]})]})},Ur=(e,n)=>{const t=fr(e),o=(e,n)=>Vr(e,n),r=Tt(e.type),i=r?`${e.props.id}:${r.slot}`:null;/* @__PURE__ */
19
+ return _e(qe,{children:[t.map(({child:t,zone:r,index:i})=>{const l=gt===String(t.props.id),{collapsible:s,folded:d}=hr(t,n,gr(t.type)),c=String(t.props.id),a=Tr(t),p=()=>kr(r,i,c,e.type),{rowProps:u,...f}=Fr.row({item:{id:c,zone:r,index:i,type:t.type},place:{...Ve(r),index:i}},{"data-node-id":c,onClick:lr(p)});/* @__PURE__ */
20
+ return _e(Ze,{children:[0===i&&o(r,0),
21
+ /* @__PURE__ */Ke(le,{icon:/* @__PURE__ */Ke(Rt,{type:t.type,size:13}),name:a,onSelect:p,selected:l,hidden:Boolean(t.props._hidden),...f,fold:s?{open:!d,label:"group",onToggle:()=>Zt(c)}:void 0,actions:/* @__PURE__ */_e(qe,{children:[dr(r,i,a),cr(r,i,t,a)]}),rowProps:u}),s&&!d&&/* @__PURE__ */Ke(de,{children:Ur(t,n+1)}),o(r,i+1)]},String(t.props.id??`${r}-${i}`))}),i&&!t.some(e=>e.zone===i)?o(i,0):null]})},Wr=(e,n)=>{const t=fr(e),o=Tt(e.type,At(yn?.data,e.type,String(e.props.id))),r=o?.spec??null,i=r&&Array.isArray(e.props[r.slot])?e.props[r.slot]:[],l=o&&o.choices?{slot:o.slot,choices:o.choices}:null,s=String(e.props.id),d=r&&!r.fixed?`${s}:${r.slot}`:null,c=l?`${s}:${l.slot}`:null,a=(n,t)=>{const o=n===d&&r&&!r.addBlocked?.(i)?()=>Sr(e.props.id,r.slot,r.childType,t,e.type):n===c?()=>or(n,t):void 0;return Vr(n,t,o,n===d&&r?r.addLabel:"Add block here")};/* @__PURE__ */
22
+ return _e(qe,{children:[t.map(({child:t,zone:o,index:r})=>{const i=gt===String(t.props.id),l=Mo(t),s=String(t.props.id),{collapsible:d,folded:c}=hr(t,n,gr(t.type)),p=ur(t.type),u=1===p.length?`${s}:${p[0]}`:null,f=u?{...Ve(u),index:jo(u).length}:void 0,h=Fr.dragging,m=f&&h&&Ir(h,f)?f:void 0,y=()=>kr(o,r,s,e.type),{rowProps:g,...k}=Fr.row({item:{id:s,zone:o,index:r,type:t.type},place:{...Ve(o),index:r},into:m,canDrag:!Bt(t.type)},{"data-node-id":s,onClick:lr(y)});/* @__PURE__ */
23
+ return _e(Ze,{children:[0===r&&a(o,0),
24
+ /* @__PURE__ */Ke(le,{icon:/* @__PURE__ */Ke(Rt,{type:t.type,size:13}),name:l,onSelect:y,nameSlot:Lo(o,r,s,l),selected:i,hidden:Boolean(t.props._hidden),...k,fold:d?{open:!c,label:"group",onToggle:()=>Zt(s)}:void 0,actions:Bt(t.type)?void 0:/* @__PURE__ */_e(qe,{children:[dr(o,r,l),cr(o,r,t,l)]}),rowProps:g}),d&&!c&&/* @__PURE__ */Ke(de,{children:Wr(t,n+1)}),a(o,r+1)]},String(t.props.id??`${o}-${r}`))}),r&&!r.fixed&&
25
+ /* @__PURE__ */Ke(L,{small:!0,label:r.addLabel,blocked:r.addBlocked?.(i)??null,onAdd:()=>Sr(e.props.id,r.slot,r.childType,i.length,e.type)}),c&&!t.some(e=>e.zone===c)?a(c,0):null]})},Yr=(()=>{if(!Sn||!yt)return null;const e=String(Sn.type),n=String(Sn.props.id),t=Tt(e,At(yn?.data,e,n));if(!t||"footer"===t.source)return null;const o=wo.some(e=>String(e.props?.id)===n),r=Array.isArray(Sn.props[t.slot])?Sn.props[t.slot]:[];if(t.spec?.addBlocked?.(r))return null;const i=t.choices??(t.spec?[{type:t.spec.childType,label:No(t.spec.childType)}]:[]);return 0===i.length?null:{parentName:o?Oo(e):No(e),choices:i,onPick:o=>{t.spec?Sr(n,t.slot,o,r.length,e):br(`${n}:${t.slot}`,o,r.length)}}})(),Qr=rt||null!==Wn,Xr=e=>"panel"in e?{id:e.id,label:e.label,icon:e.icon,active:Mn&&!Qr&&Ct===e.id,onSelect:()=>So(e.id)}:e,Zr=[{id:"add",label:"Add",icon:/* @__PURE__ */Ke("span",{className:"sf-rail-plus","aria-hidden":"true",children:"+"}),active:rt,onSelect:()=>rt?rr():tr(null)},...(wt.railLead??[]).map(Xr),{id:"sections",label:"Layers",icon:/* @__PURE__ */Ke(Re,{}),active:Mn&&!Qr&&"sections"===Ct,onSelect:()=>So("sections")},...(wt.railTrail??[]).map(Xr)];Un?Zr.push({id:"media",label:"Media library",icon:/* @__PURE__ */Ke(Le,{}),active:Mn&&!rt&&(null!==Wn||"media"===Ct),onSelect:()=>So("media")}):fn&&Zr.push({id:"media",label:"Media library",icon:/* @__PURE__ */Ke(Le,{}),onSelect:bo});const Kr=[...wt.railLead??[],...wt.railTrail??[]].find(e=>"panel"in e&&e.id===Ct);return(wt.wrap??(e=>e))(
26
+ /* @__PURE__ */_e("div",{ref:nt,className:"sf-editor es-editor",style:ze(Gt),onContextMenu:Jo.onEditorContextMenu,children:[
27
+ /* @__PURE__ */_e(he,{children:[
28
+ /* @__PURE__ */Ke(me,{items:Zr,ariaLabel:"Left panel views"}),
29
+ /* @__PURE__ */_e(ye,{children:[
30
+ /* @__PURE__ */Ke(ge,{label:"Undo",disabled:!kn.hasPast,onClick:()=>kn.back(),children:/* @__PURE__ */Ke(Ie,{})}),
31
+ /* @__PURE__ */Ke(ge,{label:"Redo",disabled:!kn.hasFuture,onClick:()=>kn.forward(),children:/* @__PURE__ */Ke(Me,{})}),
32
+ /* @__PURE__ */Ke(ke,{}),
33
+ /* @__PURE__ */Ke(Se,{devices:Ln,value:Vn,onChange:Jn})]}),
34
+ /* @__PURE__ */_e(ye,{kind:"right",style:{minWidth:300},children:[
35
+ /* @__PURE__ */Ke(en,{saveState:rn,notSaving:Boolean(cn)||null!=ln,readOnlyReason:an,toggle:pn,onToggle:dn,onRetry:sn}),wt.barLead?.(),
36
+ /* @__PURE__ */Ke("button",{type:"button",className:"es-btn-ghost",title:"Refresh the preview (reloads the canvas, keeps your place)",onClick:()=>{et.current=(()=>{const e=tt?.document;if(!e)return null;const n=wo.findIndex(e=>e.type===wn),t=n>=0?n:wo.length;let o=null;for(let n=0;n<t;n++){const t=wo[n]?.props?.id;if(null==t)continue;const r=e.querySelector(`[data-puck-component="${CSS.escape(String(t))}"]`);if(!r)continue;const i=r.getBoundingClientRect().top;i<=4&&(null===o||i>o.offset)&&(o={id:String(t),offset:i})}if(!o){const e=Sn?.props?.id??wo[0]?.props?.id;null!=e&&(o={id:String(e),offset:0})}return o})(),qn(e=>e+1)},children:"Refresh"}),wt.barTrail?.(),wt.barMain?wt.barMain():/* @__PURE__ */Ke("button",{type:"button",className:"es-btn-primary",disabled:null!==an,onClick:()=>{on(yn.data)},children:un?"Publish":"Save"})]})]}),
37
+ /* @__PURE__ */Ke($,{}),
38
+ /* @__PURE__ */_e("div",{className:"sf-body",children:[Mn?/* @__PURE__ */_e(qe,{children:[
39
+ /* @__PURE__ */Ke("div",{className:"es-sidepanel es-sidepanel--left sf-panel sf-panel--left",children:rt?/* @__PURE__ */Ke(D,{blocks:dt&&dt.zone!==B&&!Rr(dt.zone)?Mr(dt.zone):Yr,blocksOnly:Boolean(dt&&dt.zone!==B&&!Rr(dt.zone)),at:dt?{label:(e=>{const n=Rr(e.zone);if(n)return`Adding to ${No(n.type)}`;if(e.zone===B){const n=wo[e.index];return n&&n.type!==wn?`Adding before ${Oo(n.type)}`:"Adding at the end of the page"}const t=Mr(e.zone);return t?`Adding to ${t.parentName}`:"Adding here"})(dt),onClear:()=>ct(null)}:void 0,onAdd:e=>{if(dt&&"block"!==e.kind&&Rr(dt.zone))return ir(e,dt.zone,dt.index),void ct({zone:dt.zone,index:dt.index+1});if("section"===e.kind)return(e=>{if(null===at)return void er(e);const n=er(e,at);pt(n+1)})(e.type);if("template"===e.kind)return((e,n)=>{if(null===at)return void nr(e,n);const t=nr(e,n,at);pt(t+1)})(e.template.name,d(e.template.node));if(dt&&dt.zone!==B){const n=Mr(dt.zone);if(!n)return;return n.target.spec?Sr(n.parentId,n.target.slot,e.type,dt.index,n.parent.type):br(dt.zone,e.type,dt.index),void ct({zone:dt.zone,index:dt.index+1})}Yr?.onPick(e.type)},itemFor:e=>({id:`new:${e.kind}:${"template"===e.kind?e.template.id:e.type}`,zone:"",index:-1,type:"template"===e.kind?e.template.node.type:e.type,add:e}),session:Dr,siteWide:wt.addPanelRow?.(rr),onClose:rr,onHide:go,readOnly:Boolean(cn)}):Wn&&Gn?
40
+ /* @__PURE__ */Ke(V,{panel:Gn,pick:Wn,onHide:go}):Kr?Kr.panel({onHide:go,notify:ro}):"media"===Ct&&Gn?/* @__PURE__ */Ke(V,{panel:Gn,pick:null,onHide:go}):/* @__PURE__ */_e(qe,{children:[
41
+ /* @__PURE__ */Ke(F,{icon:/* @__PURE__ */Ke(Re,{}),title:"Layers",context:`/${Be}`,actions:Ar.length>0?/* @__PURE__ */Ke(be,{label:Or?"Expand all sections":"Collapse all sections",onClick:()=>Jt(e=>{const n=new Set(Ar);return Or?new Set([...e].filter(e=>!n.has(e))):/* @__PURE__ */new Set([...e,...Ar])}),children:/* @__PURE__ */Ke(nn,{expand:Or})}):void 0,onHide:go}),
42
+ /* @__PURE__ */_e(ie,{className:"sf-tree sf-scroll",children:[
43
+ /* @__PURE__ */Ke(le,{icon:/* @__PURE__ */Ke(Rt,{type:"page",size:13}),name:"Page settings",onSelect:xo,selected:!Sn&&yt,rowProps:{onClick:lr(xo)}}),Cr&&/* @__PURE__ */_e(qe,{children:[
44
+ /* @__PURE__ */Ke(se,{children:"Header"}),Gr(Cr)]}),!zt&&mn&&/* @__PURE__ */_e(qe,{children:[
45
+ /* @__PURE__ */Ke(se,{children:"Header"}),
46
+ /* @__PURE__ */Ke(le,{icon:/* @__PURE__ */Ke(Rt,{type:"header",size:13}),name:"Header",onSelect:vo,selected:ht.kind===On?.kind,rowProps:{onClick:lr(vo)}})]}),!zt&&/* @__PURE__ */_e(se,{children:["Template · ",hn?"Home page":"Template"]}),wo.map((e,n)=>{if(e.type===vn||e.type===wn||Bn(e.type))return null;const t=gt===String(e.props.id),o=Boolean(e.props._hidden);fr(e);const r=String(e.props.id),i=wt.hasOwnRows?.(e)??!1,l=yr(e)||i,s=l&&Xt(r),{rowProps:d,...c}=Fr.row({item:{id:r,zone:B,index:n,type:e.type},place:{...Ve(B),index:n}},{"data-node-id":r,onClick:lr(()=>Zo(n))});/* @__PURE__ */
47
+ return _e(Ze,{children:[n>0&&ar(n),
48
+ /* @__PURE__ */Ke(le,{icon:/* @__PURE__ */Ke(Rt,{type:e.type,size:13}),name:To(e),onSelect:()=>Zo(n),selected:t,hidden:o,...c,fold:l?{open:!s,label:"section",onToggle:()=>Zt(r)}:void 0,actions:/* @__PURE__ */_e(qe,{children:[dr(B,n,To(e)),cr(B,n,e,To(e))]}),rowProps:d}),yr(e)&&!s&&/* @__PURE__ */_e(de,{children:[Wr(e,1),wt.partRows?.(e,Jr)]}),i&&!s&&/* @__PURE__ */Ke(de,{children:wt.ownRows?.(e,n,Jr)})]},String(e.props.id??n))}),!zt&&Nr>0&&ar(Nr),mn&&/* @__PURE__ */Ke(se,{children:"Footer"}),zr&&(()=>{const e=String(zr.props.id),n=fr(zr).length>0||Boolean(Tt(zr.type)),t=n&&Xt(e);/* @__PURE__ */
49
+ return _e(qe,{children:[
50
+ /* @__PURE__ */Ke(le,{icon:/* @__PURE__ */Ke(Rt,{type:"footer",size:13}),name:"Footer",onSelect:()=>Zo(wr),selected:gt===String(zr.props.id),fold:n?{open:!t,label:"section",onToggle:()=>Zt(e)}:void 0,rowProps:{onClick:lr(()=>Zo(wr))}}),n&&!t&&/* @__PURE__ */Ke(de,{children:Ur(zr,1)})]})})(),!zt&&!zr&&mn&&/* @__PURE__ */Ke(le,{icon:/* @__PURE__ */Ke(Rt,{type:"footer",size:13}),name:"Footer",onSelect:sr,rowProps:{onClick:lr(sr),title:"Edit the site footer"}}),Br&&Gr(Br),wt.treeFoot?.()]})]})}),
51
+ /* @__PURE__ */Ke(xe,{side:"left",width:Gt.left,min:we,max:ve,defaultWidth:S.left,label:"Resize Sections panel",onResize:Yt})]}):/* @__PURE__ */Ke(H,{side:"left",onShow:go}),
52
+ /* @__PURE__ */Ke("div",{ref:io,className:"sf-center sf-scroll",style:{overflowX:ho?"auto":"hidden",overflowY:"hidden"},children:/* @__PURE__ */Ke("div",{className:"sf-frame-scaler",style:mo,children:/* @__PURE__ */Ke("div",{className:"sf-frame "+(Vn===Hn?"":`sf-frame--${Vn}`),style:yo,children:/* @__PURE__ */_e("div",{className:"sf-preview-host",children:[
53
+ /* @__PURE__ */Ke(Tn,{},_n),
54
+ /* @__PURE__ */Ke(Ne,{canvas:tt,session:Dr,model:Hr,canDrop:Ir,onDrop:Lr,onPick:e=>{mt(_),Rn.select(e.zone===B?{index:e.index}:{index:e.index,zone:e.zone})},onZoneAdd:e=>or(He(e),0),readOnly:Boolean(cn),revision:yn.data}),ut.length>0&&/* @__PURE__ */Ke("div",{className:"sf-preview-gaps","aria-hidden":"true",children:ut.map(e=>/* @__PURE__ */_e("button",{type:"button",tabIndex:-1,className:"sf-preview-gap",style:{top:e.top},title:"Add section here",onClick:()=>tr(e.index),children:[
55
+ /* @__PURE__ */Ke("span",{className:"sf-preview-gap-line"}),
56
+ /* @__PURE__ */_e("span",{className:"sf-preview-gap-pill",children:[
57
+ /* @__PURE__ */Ke("span",{className:"sf-preview-gap-plus",children:"+"}),
58
+ /* @__PURE__ */Ke("span",{className:"sf-preview-gap-label",children:"Add section"})]})]},e.index))})]})})})}),En?/* @__PURE__ */_e(qe,{children:[
59
+ /* @__PURE__ */Ke(g,{value:{selectChild:kr,addChild:Sr,childRowName:Mo,blockRowName:Tr},children:/* @__PURE__ */Ke(Pn,{mode:ht,onOpenWebsiteSettings:wt.openSettings??(()=>{}),onOpenSiteStyles:wt.openStyles,onSelectNode:Et,onNotify:ro,onHidePanel:ko})}),
60
+ /* @__PURE__ */Ke(xe,{side:"right",width:Gt.right,min:we,max:ve,defaultWidth:S.right,label:"Resize settings panel",onResize:Qt})]}):
61
+ /* @__PURE__ */Ke(H,{side:"right",onShow:ko})]}),qt&&/* @__PURE__ */_e("div",{className:"sf-toast "+("error"===qt.tone?"sf-toast--error":""),role:"status",children:[
62
+ /* @__PURE__ */Ke("span",{className:"sf-toast-check","aria-hidden":"true",children:"error"===qt.tone?"!":"✓"}),qt.msg]},no),Jo.menu]}))}export{tn as ScreenChrome};
@@ -0,0 +1 @@
1
+ import{readHostFailure as e,isBackendError as n,STATUS_UNREACHABLE as s}from"./chunk-KDYIMJTZ.js";import{EDIT_LOCK_TAKEN as t}from"./chunk-JUQ6YJCG.js";var a="page_changed_elsewhere",d={unauthorized:401,"changed-elsewhere":409,"lock-taken":409,"not-found":404,invalid:400,unavailable:s};function o(s){const o=e(s);if(o)return{status:o.status,data:o.data};if(!n(s))return null;const c=e(s.cause);if(c)return{status:c.status,data:c.data};const u=d[s.kind];return"changed-elsewhere"===s.kind?{status:u,data:{code:a,saved_by:s.conflict?.savedBy??"",saved_by_you:!0===s.conflict?.savedByYou,seconds_ago:s.conflict?.secondsAgo??0}}:"lock-taken"===s.kind?{status:u,data:{code:t,holder_name:s.holder?.name??"",seconds_since_seen:s.holder?.secondsSinceSeen??0,seconds_since_held:s.holder?.secondsSinceHeld??0}}:{status:u,data:null}}function c(e){return 401===o(e)?.status}export{a as PAGE_CONFLICT_CODE,c as isExpiredSession,o as readEaselFailure};
@@ -0,0 +1 @@
1
+ function o(o){const t=[];for(const r of o){const o=t[t.length-1];o&&o.group===r.group?o.items.push(r):t.push({group:r.group,items:[r]})}return t}export{o as blockRuns};
@@ -0,0 +1 @@
1
+ import{textFieldIdentifier as r}from"./chunk-DUVRZ456.js";import{hidableText as n}from"./chunk-6W7WLPZH.js";function t(r,t){const o=n(r.props.name);if(o)return o;const e=n(r.props.altName);if(e)return e;const u=r.props.collection?.name;if(u)return u;const c=r.props.source?.title;if(c)return c;const p=r.props.code;return p?t?.(p)??p:""}function o(r,n,o,e){return o(t(r,e))||n(r.type)}function e(n){if(!n)return null;for(const t of["name","altName"])if(r(n[t]))return t;return null}function u(r,t){return n(r.props?.name).trim()||t}export{u as rootRowName,t as slotChildName,e as slotChildRenameProp,o as slotChildRowName};
@@ -0,0 +1 @@
1
+ import{createPreviewSelectionContext as e}from"./chunk-GOTN2KY4.js";var{Provider:r,useSelection:o}=e("selectedPartId");export{r as PreviewPartsProvider,o as usePreviewParts};
@@ -0,0 +1 @@
1
+ var o="hero-slider:goto";export{o as HERO_SLIDER_GOTO_EVENT};
@@ -0,0 +1,6 @@
1
+ import{PanelToggleIcon as e}from"./chunk-KQMML6JM.js";import{InspectorHead as i,InspectorIconButton as n}from"./chunk-6DJHRLCU.js";import{jsx as t,jsxs as l,Fragment as o}from"react/jsx-runtime";function d({icon:e,title:n,context:d,actions:s,side:a="left",onHide:c}){/* @__PURE__ */
2
+ return t(i,{icon:e,name:n,kind:d,actions:s||c?/* @__PURE__ */l(o,{children:[s,c?/* @__PURE__ */t(r,{side:a,onHide:c,divider:Boolean(s)}):null]}):void 0})}function r({side:i,onHide:d,divider:r=!1}){/* @__PURE__ */
3
+ return l(o,{children:[r?/* @__PURE__ */t("span",{className:"sf-head-divider","aria-hidden":"true"}):null,
4
+ /* @__PURE__ */t(n,{label:`Hide the ${i} panel`,title:"Hide panel",onClick:d,children:/* @__PURE__ */t(e,{side:i})})]})}function s({side:i,onShow:l}){/* @__PURE__ */
5
+ return t("div",{className:`es-sidepanel es-sidepanel--${i} sf-panel-strip`,children:/* @__PURE__ */t(n,{label:`Show the ${i} panel`,title:"Show panel",onClick:l,children:/* @__PURE__ */t(e,{side:i})})})}function a({label:e,onClick:i,description:n}){/* @__PURE__ */
6
+ return t("button",{type:"button",className:"es-btn-ghost sf-head-textbtn",onClick:i,title:n,children:e})}export{r as PanelHideButton,a as PanelModeExit,s as PanelShowStrip,d as SidePanelHead};
@@ -0,0 +1 @@
1
+ var n="::";function e(e,r){return`${e}${n}${r??""}`}function r(e){const r=e.indexOf(n);return r<=0?null:{nodeId:e.slice(0,r),propKey:e.slice(r+2)||null}}export{n as PART_SEP,r as decodePartId,e as encodePartId};
@@ -0,0 +1,2 @@
1
+ import{createContext as r,useContext as e}from"react";import{jsx as n}from"react/jsx-runtime";var t=r(null);function i({value:r,children:e}){/* @__PURE__ */
2
+ return n(t.Provider,{value:r,children:e})}function o(){return e(t)}export{i as SlotChildActionsProvider,o as useSlotChildActions};
@@ -0,0 +1 @@
1
+ var e=class extends Error{kind;conflict;holder;fields;constructor(e,r,s={}){super(r??n[e],void 0===s.cause?void 0:{cause:s.cause}),this.name="WebsiteBackendError",this.kind=e,this.conflict=s.conflict,this.holder=s.holder,this.fields=s.fields}},n={unauthorized:"The editor's sign-in was refused.","changed-elsewhere":"This page was changed somewhere else.","lock-taken":"Somebody else is editing this page.","not-found":"This no longer exists.",invalid:"The request was refused.",unavailable:"The server could not be reached."};function r(e,n){if(!e||"object"!=typeof e)return!1;const r=e;return"WebsiteBackendError"===r.name&&"string"==typeof r.kind&&(void 0===n||r.kind===n)}var s=0,i=null;function o(e){i=e}function t(e){return i?.read(e)??null}function d(e,n){return i?.loadRefusal?.(e,n)??null}function a(){return i?.unreachableMessage??"The server could not be reached."}export{s as STATUS_UNREACHABLE,e as WebsiteBackendError,d as hostLoadRefusalOf,a as hostUnreachableMessage,r as isBackendError,o as provideHostFailures,t as readHostFailure};
@@ -0,0 +1,4 @@
1
+ import{jsxs as t,jsx as e}from"react/jsx-runtime";function r({side:r}){/* @__PURE__ */
2
+ return t("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.7,children:[
3
+ /* @__PURE__ */e("rect",{x:"3",y:"4",width:"18",height:"16",rx:"2"}),
4
+ /* @__PURE__ */e("path",{d:"left"===r?"M9 4v16":"M15 4v16"})]})}export{r as PanelToggleIcon};
@@ -0,0 +1 @@
1
+ import{useScreenDocument as n}from"./chunk-YJXEHK6I.js";import{DEFAULT_SCREEN_WORDS as o}from"./chunk-ZWK3CBRU.js";import{EditNotice as r}from"./chunk-6DJHRLCU.js";import{useWords as e}from"./chunk-MFIRYGHW.js";import{jsx as i}from"react/jsx-runtime";function t(){const{capabilities:t,access:c,takeOverEditing:a,viewReadOnly:s,saveConflict:m,reloadFromServer:u}=n(),{noun:l}=e("screen",o);return t.hasEditGuard?/* @__PURE__ */i(r,{access:c,conflict:m,noun:l,onTakeOver:a,onViewReadOnly:s,onReload:u}):null}export{t as PageEditGuardNotices};
@@ -0,0 +1,2 @@
1
+ import{useEaselHost as t}from"./chunk-R5ZVNJLJ.js";import{ScreenPartsProvider as r}from"./chunk-NBJ2YY6Y.js";import{createEasel as e,EaselProvider as n}from"./chunk-P67FP7PG.js";import{useState as o,useEffect as s}from"react";import{jsx as i}from"react/jsx-runtime";function a({config:a,data:c,onChange:m,permissions:p,parts:f,children:u}){const[h]=o(()=>e({config:a,data:c,permissions:p}));s(()=>{h.setConfig(a)},[h,a]),s(()=>{if(!m)return;let t=h.getState().appState.data;return h.subscribe(()=>{const r=h.getState().appState.data;r!==t&&(t=r,m(r))})},[h,m]),s(()=>{p&&h.setPermissions(p)},[h,p]);const d=t();/* @__PURE__ */
2
+ return i(n,{easel:h,hotkeys:d.ownsDocument,children:/* @__PURE__ */i(r,{parts:f,children:u})})}export{a as ScreenStoreProvider};
@@ -0,0 +1,4 @@
1
+ import{EaselCanvas as n,useSelectedFields as e}from"./chunk-P67FP7PG.js";import{Inspector as t}from"./chunk-BXZ6WLHC.js";import{DesktopIcon as r}from"./chunk-L5KW4HG5.js";import{createContext as o,useContext as i}from"react";import{jsx as u}from"react/jsx-runtime";var l={kind:"puck"};function s(n,e){const t=n,r=e,o=Object.keys(t);return o.length===Object.keys(r).length&&o.every(n=>Object.is(t[n],r[n]))}var c={},a=()=>c,d=()=>"",f=()=>{},p={isLockedBlock:()=>!1,duplicateBlocked:()=>null,nestDepth:()=>0,newSectionNode:()=>null,canAddTo:()=>null,blockIsOffered:()=>!0},k={labelAtLevel:(n,e,t)=>t,descriptions:{},categoryLabel:()=>{},firstSection:null,blockRowName:(n,e)=>e(n.type),plainText:n=>n,Icon:()=>null,Thumbnail:()=>null,useProducts:()=>null},h={options:[{id:"desktop",label:"Desktop",icon:/* @__PURE__ */u(r,{})}],initial:"desktop",fluid:"desktop",widths:{desktop:2e3}},m={read:()=>"sections",write:()=>{},forSelection:(n,e)=>n?"sections":e},v={first:null,last:null,firstGroup:null,lastGroup:null,isSectionGroup:()=>!1,sectionGroupZone:()=>"",panelOf:()=>null};function b(){/* @__PURE__ */
2
+ return u(n,{height:"fill"})}function g(){const{id:n,fields:r,values:o,readOnly:i,onChange:l}=e();/* @__PURE__ */
3
+ return u("div",{className:"es-sidepanel es-sidepanel--right",children:/* @__PURE__ */u(t,{fields:r,values:o,onChange:l,readOnly:i,idPrefix:n})})}var O=o({});function j({parts:n,children:e}){/* @__PURE__ */
4
+ return u(O.Provider,{value:n,children:e})}function w(){return i(O)}function y(){return(w().useOwnerName??d)()}function P(n,e,t,r){return(w().useBridges??a)(n,e,t,r)}function G(n){return(w().useStandaloneBridges??a)(n)}function L(n,e){(w().useDocumentPass??f)(n,e)}function S(){return w().blockRules??p}function B(){return w().blockLook??k}function x(){return w().devices??h}function C(){return w().leftView??m}function N(){return w().pinned??v}function D(){return w().saveSwitch??!0}function I(){return w().Canvas??b}function T(){return w().Inspector??g}export{l as SELECTION_MODE,j as ScreenPartsProvider,s as sameInspectorMode,B as useScreenBlockLook,S as useScreenBlockRules,P as useScreenBridges,I as useScreenCanvasFrame,x as useScreenDevices,L as useScreenDocumentPass,T as useScreenInspectorPanel,C as useScreenLeftView,y as useScreenOwnerName,w as useScreenParts,N as useScreenPinned,D as useScreenSaveSwitch,G as useStandaloneScreenBridges};
@@ -0,0 +1 @@
1
+ import{useEaselHost as n}from"./chunk-R5ZVNJLJ.js";import{useEaselApi as o,bindUndoKeys as t}from"./chunk-P67FP7PG.js";import{useState as r,useEffect as u}from"react";function c(o){const t=n(),[c,e]=r(null);return u(()=>e(o.current),[o]),t.ownsDocument?"undefined"==typeof document?null:document:c}function e(r){const e=n(),m=o(),f=c(r);u(()=>{if(!e.ownsDocument&&f)return t(f,m)},[e,m,f])}export{c as useEaselKeyTarget,e as useEaselUndoKeys};
@@ -0,0 +1,5 @@
1
+ import{blockTypesIn as e}from"./chunk-5ZBY24K7.js";import{buildPaletteSections as t,pinnedSection as o,paletteWithoutPinned as n,categoryLabel as r}from"./chunk-GENAF3P6.js";import{sectionTemplates as s}from"./chunk-4MXFKJUY.js";import{SidePanelHead as i,PanelModeExit as c}from"./chunk-IWAPPEL4.js";import{useEaselSession as l}from"./chunk-6TZTKAB5.js";import{blockRuns as a}from"./chunk-HQ4VVRIC.js";import{useScreenBlockLook as p,useScreenBlockRules as d}from"./chunk-NBJ2YY6Y.js";import{useEasel as m}from"./chunk-P67FP7PG.js";import{AddPanel as u}from"./chunk-TTJ54QGG.js";import{AddIcon as f}from"./chunk-L5KW4HG5.js";import{useState as h,useEffect as k,useMemo as y}from"react";import{jsx as b,jsxs as g,Fragment as j}from"react/jsx-runtime";var $=e=>`section:${e}`,A=e=>`block:${e}`,v=e=>`template:${e}`;function I({blocks:I,blocksOnly:L,at:O,onAdd:P,itemFor:Y,session:B,siteWide:F,onClose:G,onHide:S,readOnly:T}){const x=m(e=>e.config),C=p(),{labelAtLevel:H,categoryLabel:K,firstSection:N,Icon:D,Thumbnail:E}=C,{blockIsOffered:J}=d(),W=l(),[w,z]=h([]);k(()=>{let t=!1;const o=e=>J(e,W);return s.list().then(n=>{if(t)return;const r=x.components;z(n.filter(t=>t.node?.type&&r[t.node.type]&&e(t.node).every(o)))}).catch(()=>{}),()=>{t=!0}},[x,W]);const Q=y(()=>t(x,C),[x]),V=e=>({type:$(e.type),label:e.name,cover:/* @__PURE__ */b(E,{type:e.type}),title:e.desc?`${e.name} — ${e.desc}`:`Add ${e.name}`,keywords:[e.alias??"",e.desc,e.type,e.catLabel].filter(Boolean)}),Z=y(()=>{const e=[];if(I&&I.choices.length>0&&a(I.choices).forEach((t,o)=>{e.push({title:0===o?`Inside ${I.parentName}${t.group?` · ${t.group}`:""}`:t.group??"",tiles:t.items.map(e=>({type:A(e.type),label:e.label,icon:/* @__PURE__ */b(D,{type:e.type,size:18}),title:`Add ${e.label}`}))})}),L)return e;const t=o(Q,N);t&&e.push({title:"Start blank",tiles:[V(t)]}),w.length>0&&e.push({title:"Your templates",tiles:w.map(e=>{return{type:v(e.id),label:e.name,cover:/* @__PURE__ */b(E,{type:e.node.type}),keywords:[(t=e.node.type,H(t,"section",x.components[t]?.label??t)),e.node.type]};var t})});const s=n(Q,N);for(const t of Object.keys(x.categories??{})){const o=s.filter(e=>e.cat===t);0!==o.length&&e.push({title:r(x,t,K),tiles:o.map(V)})}return e},[I,L,w,Q,x]),M=e=>{const t=e.indexOf(":"),o=e.slice(0,t),n=e.slice(t+1);if("section"===o)return{kind:"section",type:n};if("block"===o)return{kind:"block",type:n};if("template"===o){const e=w.find(e=>e.id===n);return e?{kind:"template",template:e}:null}return null};/* @__PURE__ */
2
+ return g(j,{children:[
3
+ /* @__PURE__ */b(i,{icon:/* @__PURE__ */b(f,{size:15}),title:"Add",context:L?"Blocks for this place":"Sections and blocks",actions:/* @__PURE__ */b(c,{label:"Done",description:"Close Add and go back",onClick:G}),onHide:S}),
4
+ /* @__PURE__ */g("div",{className:"sf-addside sf-scroll",children:[
5
+ /* @__PURE__ */b(u,{groups:Z,session:B,itemFor:e=>Y(M(e)??{kind:"section",type:e}),onInsert:e=>{const t=M(e);t&&P(t)},at:O,hint:L?"Drag into the page, or click to add.":"Drag onto the page, or click to add.",searchLabel:L?"Search blocks":"Search sections",readOnly:T}),F&&!L?F:null]})]})}export{I as AddSidePanel,A as blockKey,$ as sectionKey,v as templateKey};
@@ -0,0 +1 @@
1
+ import{accessForNewDocument as e}from"./chunk-JUQ6YJCG.js";function n(e){return e.failed?"error":e.pending?"saving":e.saved?"saved":"idle"}function t(e){return"idle"}function r(n,t){t.resetAutosave(),t.setVersion(null),t.setSaveConflict(null),t.setAccess(e(n))}export{r as resetForDocumentSwitch,t as saveStatusForNewDocument,n as saveStatusOf};
@@ -0,0 +1,9 @@
1
+ import{DEFAULT_CANVAS_WORDS as e}from"./chunk-AELNNAFM.js";import{useResolvedFields as t}from"./chunk-YRLPFZW3.js";import{toItemSelector as n,fromItemSelector as o,useNodeOps as r}from"./chunk-D2BCHTQR.js";import{useWords as a}from"./chunk-MFIRYGHW.js";import{setCanvasNonce as i}from"./chunk-ZNCEOSXO.js";import{find as s,ROOT_ID as d,getList as l,remove as c,parseZoneKey as u,move as p,duplicate as f,replaceNode as h,createNode as m,insert as v,normalizeData as y,createResolveCache as g,resolveNodeData as k,ROOT_SLOT as b}from"./chunk-KRXQM65X.js";import{topLevelSlotKeys as w,fieldsFrom as S,defaultsFrom as I}from"./chunk-NKB3KVAB.js";import{createContext as C,useEffect as O,useContext as x,useRef as E,useSyncExternalStore as A,useState as D,useMemo as z,useCallback as M,useLayoutEffect as Z}from"react";import{jsx as N,jsxs as $}from"react/jsx-runtime";import{createPortal as j}from"react-dom";function R(e){return!["setData","setUi","set"].includes(e.type)}var B=(e,t,n,o)=>{const r=l(e,t,u(n));return r?.[o]??null},P=(e,t,n,o,r)=>{const a=B(e,t,n,o);if(!a)throw new Error(`${r}: nothing at ${n}[${o}]`);return a};function L(e,t){const{selection:o}=e;return{...e.ui,itemSelector:n(e.data,t,o),selectedSlot:o&&"slot"===o.kind?{parentId:o.parentId,slot:o.slot}:null}}function K(e,t,n){return n?"node"===n.kind?s(e,t,n.id)?n:null:n.parentId===d?l(e,t,n)?n:null:s(e,t,n.parentId)&&l(e,t,n)?n:null:null}function F(e,t,n,r=!1){const{itemSelector:a,selectedSlot:i,...s}=n;let d=e.selection;var l;return"itemSelector"in n&&(d=o(e.data,t,a??null)),"selectedSlot"in n&&(i?d=(l=i)?{kind:"slot",parentId:l.parentId,slot:l.slot}:null:"slot"===d?.kind&&(d=null)),{...e,selection:d,ui:r?s:{...e.ui,...s}}}function H(e,t,n){const o=V(e,t,n);if(o===e)return e;const r=K(o.data,n,o.selection);return r===o.selection?o:{...o,selection:r}}function V(e,t,n){const{data:o}=e;switch(t.type){case"setData":{const n="function"==typeof t.data?t.data(o):t.data;return{...e,data:{...o,...n}}}case"setUi":return F(e,n,"function"==typeof t.ui?t.ui(L(e,n)):t.ui);case"set":{const r={data:o,ui:L(e,n)},a="function"==typeof t.state?t.state(r):t.state;let i=a.data?{...e,data:a.data}:e;return a.ui&&(i=F(i,n,a.ui,!0)),i}case"insert":{const r={...u(t.destinationZone),index:t.destinationIndex},a=m(n,t.componentType,{},t.id?{id:t.id}:{});return{...e,data:v(o,n,r,a)}}case"replace":{const r=P(o,n,t.destinationZone,t.destinationIndex,"replace");if(r.props.id!==t.data.props.id)throw new Error("Can't change the id during a replace action. Use remove and insert for a new node.");return{...e,data:h(o,n,r.props.id,t.data)}}case"replaceRoot":{const n={...o.root,props:{...o.root.props,...t.root.props},readOnly:t.root.readOnly};return{...e,data:{...o,root:n}}}case"duplicate":{const r=P(o,n,t.sourceZone,t.sourceIndex,"duplicate"),a=f(o,n,r.props.id),i=B(a,n,t.sourceZone,t.sourceIndex+1);return{...e,data:a,selection:i?{kind:"node",id:i.props.id}:e.selection}}case"reorder":return V(e,{...t,type:"move",sourceZone:t.destinationZone},n);case"move":{if(t.sourceZone===t.destinationZone&&t.sourceIndex===t.destinationIndex)return e;const r=B(o,n,t.sourceZone,t.sourceIndex);if(!r)return e;const a={...u(t.destinationZone),index:t.destinationIndex};return{...e,data:p(o,n,r.props.id,a)}}case"remove":{const r=P(o,n,t.zone,t.index,"remove");return{...e,data:c(o,n,r.props.id)}}default:return e}}var T={drag:!0,duplicate:!0,delete:!0,edit:!0,insert:!0},q={leftSideBarVisible:!0,rightSideBarVisible:!0,arrayState:{},componentList:{},isDragging:!1,previewMode:"edit",viewports:{current:{width:360,height:"auto"},options:[],controlsVisible:!0},field:{focus:null}},Y=0,U=()=>`history-${Y+=1}`;function W(e){let t=e.config;const r=e.now??(()=>Date.now()),a=e.historyCoalesceMs??250;let i=e.permissions??{};const d=y(e.data,t);let c={data:d,selection:null,ui:{...q}};if(e.ui){const{itemSelector:n,selectedSlot:r,...a}=e.ui;c={data:d,selection:r?{kind:"slot",...r}:o(d,t,n??null),ui:{...q,...a}}}let u=[{core:c,at:-1/0,sealed:!0,id:U()}],p=0;const f=e=>{const t=u[p],n=r();!e&&p===u.length-1&&p>0&&!t.sealed&&n-t.at<a?u=[...u.slice(0,p),{...t,core:c,at:n}]:(u=[...u.slice(0,p+1),{core:c,at:n,sealed:e,id:U()}],p=u.length-1)},m=/* @__PURE__ */new Set;let v=null,b=null,w=0,S=null,I=!1;const C=()=>{for(const e of[...m])e()},O=()=>{u=[...u.slice(0,p),{...u[p],core:c},...u.slice(p+1)]},x=(t,n)=>{w>0?I=I||n:(n?f(!1):c!==t&&O(),c.data!==t.data&&e.onChange?.(c.data),c!==t&&C())},E=e=>{const n=c;if(c=H(c,e,t),c===n)return;const o=e.recordHistory??R(e);x(n,o&&c.data!==n.data)},A=t=>{0===w&&(S=c,I=!1),w+=1;try{t()}catch(e){throw w-=1,0===w&&S&&(c=S,S=null),e}if(w-=1,w>0||!S)return;const n=S;S=null,I&&c.data!==n.data?f(!0):c!==n&&O(),c.data!==n.data&&e.onChange?.(c.data),c!==n&&C()},D=e=>{const n=c,o=K(c.data,t,e);var r,a;(r=o,a=c.selection,r===a||r&&a&&r.kind===a.kind&&("node"===r.kind&&"node"===a.kind?r.id===a.id:"slot"===r.kind&&"slot"===a.kind&&r.parentId===a.parentId&&r.slot===a.slot))||(c={...c,selection:o},x(n,!1))},z=t=>{const n=c;p=t,c=u[p].core,c.data!==n.data&&e.onChange?.(c.data),c!==n&&C()},M=()=>(e={})=>{const n=e.root?t.root?.permissions:t.components[e.item?.type??e.type??""]?.permissions;return{...T,...i,...n}};let Z=M();const N=g(),$={resolveCache:N,async resolveAll({trigger:e="load",metadata:n}={}){const o=c.data,r={type:"root",props:{...o.root.props??{}}},a=[...o.content,...Object.values(o.zones??{}).flat()],[i,...d]=await Promise.all([k(r,t,{cache:N,trigger:e,metadata:n}),...a.map(o=>k(o,t,{cache:N,trigger:e,metadata:n}))]);A(()=>{const e=c;let n=c.data;d.forEach((e,r)=>{if(!e.didChange)return;const i=a[r].props.id,d=s(n,t,i)?.node;d&&d===s(o,t,i)?.node&&(n=h(n,t,i,e.node))}),i.didChange&&n.root===o.root&&(n={...n,root:{...n.root,props:i.node.props,readOnly:i.node.readOnly??n.root.readOnly}}),n!==c.data&&(c={...c,data:n,selection:K(n,t,c.selection)},x(e,!1))})},async resolveNode(e,{trigger:n="replace",metadata:o}={}){const r=s(c.data,t,e)?.node;if(!r)return!1;const a=await k(r,t,{cache:N,trigger:n,metadata:o});if(!a.didChange)return!1;let i=!1;return A(()=>{const n=c;if(s(c.data,t,e)?.node!==r)return;const o=h(c.data,t,e,a.node);o!==c.data&&(c={...c,data:o,selection:K(o,t,c.selection)},x(n,!1),i=!0)}),i},get config(){return t},getState(){if(v&&b===c)return v;const e=c,o={data:e.data,ui:L(e,t)},r="node"===e.selection?.kind?s(e.data,t,e.selection.id)?.node??null:null;return v={appState:o,selection:e.selection,selectedItem:r,config:t,dispatch:E,history:{back:()=>$.undo(),forward:()=>$.redo(),hasPast:p>0,hasFuture:p<u.length-1,histories:u.map(e=>({id:e.id,state:{data:e.core.data,ui:L(e.core,t)}})),index:p,setHistoryIndex:e=>{e>=0&&e<u.length&&e!==p&&z(e)}},getPermissions:Z,getItemById:n=>s(e.data,t,n)?.node,getItemBySelector:n=>function(e,t,n){const[o,r]=(n.zone??"root:default-zone").split(/:(.*)/s);return l(e,t,{parentId:o,slot:r})?.[n.index]}(e.data,t,n),getSelectorForId:o=>{const r=n(e.data,t,{kind:"node",id:o});return r?{index:r.index,zone:r.zone??"root:default-zone"}:void 0}},b=e,v},subscribe:e=>(m.add(e),()=>{m.delete(e)}),dispatch:E,batch:A,select:e=>D(e?{kind:"node",id:e}:null),selectSlot:e=>D(e?{kind:"slot",parentId:e.parentId,slot:e.slot}:null),run(e){A(()=>{const n=c,o=void 0===e.select?c.selection:e.select;c={...c,data:e.data,selection:K(e.data,t,o)},x(n,e.data!==n.data)})},load(e,n={}){const o=c,r=y(e,t);c={...c,data:r,selection:K(r,t,n.selection??c.selection)},n.keepHistory||(u=[{core:c,at:-1/0,sealed:!0,id:U()}],p=0),c!==o&&C()},undo(){p>0&&z(p-1)},redo(){p<u.length-1&&z(p+1)},setPermissions(e){(function(e,t){if(e===t)return!0;const n=Object.keys(e);return n.length===Object.keys(t).length&&n.every(n=>e[n]===t[n])})(e,i)||(i=e,Z=M(),v=null,C())},setConfig(e){e!==t&&(t=e,Z=M(),v=null,C())}};return $}function X(e,t){const n=e=>{if(e.altKey)return;if(!(e.metaKey!==e.ctrlKey))return;const n="KeyZ"===e.code,o="KeyY"===e.code&&!e.shiftKey;(n||o)&&!1!==t.getState?.().getPermissions().edit&&(e.preventDefault(),o||e.shiftKey?t.redo():t.undo())};return e.addEventListener("keydown",n),()=>e.removeEventListener("keydown",n)}var Q=C(null),G=C(!0);function J({easel:e,hotkeys:t=!0,resolveOnMount:n=!0,children:o}){return O(()=>{n&&e.resolveAll()},[e,n]),O(()=>{if(t&&"undefined"!=typeof document)return X(document,e)},[e,t]),/* @__PURE__ */N(Q.Provider,{value:e,children:/* @__PURE__ */N(G.Provider,{value:t,children:o})})}function _(){const e=x(Q);if(!e)throw new Error("useEasel: no <EaselProvider> above this component");return e}function ee(e){const t=_(),n=E({view:null,selector:null,value:void 0,has:!1}),o=()=>{const o=t.getState(),r=n.current;if(r.has&&r.view===o&&r.selector===e)return r.value;const a=e(o);return r.has&&Object.is(r.value,a)?(n.current={view:o,selector:e,value:r.value,has:!0},r.value):(n.current={view:o,selector:e,value:a,has:!0},a)};return A(t.subscribe,o,o)}function te(){return function(e){return ee(e)}}var ne="data-puck-component",oe="data-puck-dropzone",re={},ae="data-es-mirror",ie="undefined"==typeof window?O:Z;function se(e,t,n){for(const e of Array.from(t.head.querySelectorAll(`[${ae}]`)))e.remove();for(const o of Array.from(e.head.querySelectorAll('style, link[rel="stylesheet"]'))){const e=o.cloneNode(!0);e.setAttribute(ae,""),n&&e.setAttribute("nonce",n),t.head.appendChild(e)}}function de({children:t,id:n="preview-frame",title:o,className:r,style:s,mirrorStyles:d=!0,onDocument:l,height:c="auto",nonce:u}){const p=a("canvas",e),f=E(null),[h,m]=D(null);return ie(()=>{const e=f.current,t=h?.ownerDocument.defaultView;if("auto"!==c||!e||!h||!t)return;const n=()=>{e.style.height=`${Math.ceil(h.getBoundingClientRect().height)}px`};n();const o=t.ResizeObserver,r=o?new o(n):null;return r?.observe(h),()=>r?.disconnect()},[h,c]),ie(()=>{let e=f.current?.contentDocument;if(!e)return;"CSS1Compat"!==e.compatMode&&(e.open(),e.write("<!DOCTYPE html><html><head></head><body></body></html>"),e.close(),e=f.current?.contentDocument??e),e.body||e.documentElement.appendChild(e.createElement("body")),e.body.style.margin="0";const t=e.createElement("div");t.setAttribute("data-puck-entry",""),t.id="frame-root","fill"===c&&t.classList.add("es-frame-fill"),e.body.appendChild(t),i(e,u),m(t),l?.(e);let n=null;const o=f.current?.ownerDocument;if(d&&o){se(o,e,u);const t=o.defaultView;t&&"MutationObserver"in t&&(n=new t.MutationObserver(()=>se(o,e,u)),n.observe(o.head,{childList:!0,subtree:!0,characterData:!0}))}return()=>{n?.disconnect(),t.remove(),m(null),l?.(null)}},[]),/* @__PURE__ */N("iframe",{ref:f,id:n,title:o??p.frame,className:["es-canvas-frame","fill"===c?"is-fill":"",r??""].filter(Boolean).join(" "),style:s,children:h?j(t,h):null})}var le=C(null),ce=C(re),ue=[];function pe({parentId:e,slot:t,className:n,style:o,minEmptyHeight:r=128}){const a=_(),i=ee(n=>l(n.appState.data,a.config,{parentId:e,slot:t})??ue),s=ee(t=>"node"===t.selection?.kind&&t.selection.id===e&&e!==d),c=ee(n=>"slot"===n.selection?.kind&&n.selection.parentId===e&&n.selection.slot===t),u=x(le),p=["es-zone"];return i.length&&p.push("has-children"),e===d&&p.push("is-root"),(s||c)&&p.push("is-area-selected"),null!==u&&u===e&&e!==d&&p.push("is-hovering-area"),n&&p.push(n),/* @__PURE__ */N("div",{className:p.join(" "),[oe]:`${e}:${t}`,style:{...o,"--min-empty-height":`${r}px`},children:i.map(e=>/* @__PURE__ */N(me,{node:e},e.props.id))})}function fe(e,t,n,o){const r="root"===t?e.root:e.components[t],a={...o};for(const e of w(S(r)))a[e]=function(t={}){/* @__PURE__ */
2
+ return N(pe,{parentId:n,slot:e,...t})};return a}function he(e){return function({zone:t,...n}){/* @__PURE__ */
3
+ return N(pe,{parentId:e,slot:t,...n})}}function me({node:e}){const t=_().config,n=t.components[e.type],o=e.props.id,r=function(e){const t=E(null);return z(()=>n=>{const o=t.current;o&&o!==n&&(o.removeAttribute(ne),o.removeAttribute("data-puck-dnd")),t.current=n,n&&(n.setAttribute(ne,e),n.setAttribute("data-puck-dnd",e),n.style.position="relative")},[e])}(o),a=x(ce);if(!n?.render)return null;const i=n.render,s=fe(t,e.type,o,{...I(n),...e.props}),d={renderDropZone:he(o),isEditing:!0,dragRef:n.inline?r:null,metadata:{...a,...n.metadata}};return n.inline?/* @__PURE__ */N(i,{...s,puck:d,editMode:!0}):/* @__PURE__ */N("div",{[ne]:o,"data-puck-dnd":o,style:{position:"relative"},children:/* @__PURE__ */N(i,{...s,puck:d,editMode:!0})})}function ve({metadata:e}){const t=ee(e=>e.config),n=ee(e=>e.appState.data.root).props??{},o=t.root?.render,r=/* @__PURE__ */N(pe,{parentId:d,slot:b}),a=o?/* @__PURE__ */N(o,{id:"puck-root",...fe(t,"root",d,n),puck:{renderDropZone:he(d),isEditing:!0,dragRef:null,metadata:e??{}},editMode:!0,children:r}):r;/* @__PURE__ */
4
+ return N(ce.Provider,{value:e??re,children:a})}function ye({id:e,kind:t,overlay:n}){const o=E(null),[r,a]=D(null);ie(()=>{const t=o.current?.ownerDocument,n=t?.defaultView;if(!t||!n||!e)return void a(null);let r=0;const i=()=>{r=0;const i=function(e,t){if(!e||!t)return null;const n=e.getBoundingClientRect(),o=t.getBoundingClientRect();return{top:n.top-o.top,left:n.left-o.left,width:n.width,height:n.height}}(t.querySelector(`[${ne}="${n.CSS?.escape?n.CSS.escape(e):e}"]`),o.current?.parentElement??null);a(e=>{return(t=e)===(n=i)||t&&n&&t.top===n.top&&t.left===n.left&&t.width===n.width&&t.height===n.height?e:i;var t,n})},s=()=>{r||(r=(n.requestAnimationFrame??(e=>n.setTimeout(e,16)))(i))};i();const d="MutationObserver"in n?new n.MutationObserver(s):null;d?.observe(t.body,{childList:!0,subtree:!0,attributes:!0,characterData:!0});const l="ResizeObserver"in n?new n.ResizeObserver(s):null;return l?.observe(t.documentElement),n.addEventListener("resize",s),()=>{d?.disconnect(),l?.disconnect(),n.removeEventListener("resize",s),r&&(n.cancelAnimationFrame??n.clearTimeout)(r)}},[e]);const i=/* @__PURE__ */N("div",{ref:o,"aria-hidden":"true",className:`es-canvas-outline is-${t}`,style:r?{position:"absolute",top:r.top,left:r.left,width:r.width,height:r.height}:{display:"none"}});return n&&e?/* @__PURE__ */N(n,{componentId:e,kind:t,children:i}):i}function ge({frame:e=!0,className:t,style:n,metadata:o,mirrorStyles:r,onDocument:a,height:i,title:s,nonce:d,hotkeys:l,frameWrapper:c,overlay:u,children:p}){const f=_(),h=x(G),m=l??h,[v,y]=D(void 0),g=ee(e=>"node"===e.selection?.kind?e.selection.id:null),[k,b]=D(null),w=/* @__PURE__ */$("div",{className:"es-canvas-content",style:{position:"relative"},onClick:e=>{const t=e.target;t.closest?.("a[href]")&&e.preventDefault();const n=t.closest?.(`[${ne}]`);n?f.select(n.getAttribute(ne)):t.hasAttribute?.(oe)||f.select(null)},onMouseOver:e=>{const t=e.target.closest?.(`[${ne}]`),n=t?.getAttribute(ne)??null;n!==k&&b(n)},onMouseLeave:()=>b(null),children:[
5
+ /* @__PURE__ */N(le.Provider,{value:k,children:/* @__PURE__ */N(ve,{metadata:o})}),
6
+ /* @__PURE__ */$("div",{className:"es-canvas-outlines",style:{position:"absolute",top:0,left:0,pointerEvents:"none"},children:[
7
+ /* @__PURE__ */N(ye,{id:k&&k!==g?k:null,kind:"hover",overlay:u}),
8
+ /* @__PURE__ */N(ye,{id:g,kind:"selected",overlay:u})]}),p]}),S=c?/* @__PURE__ */N(c,{document:v,children:w}):w;O(()=>{if(v&&m)return X(v,f)},[v,m,f]);/* @__PURE__ */
9
+ return N("div",{className:"es-canvas"+(t?` ${t}`:""),style:n,"data-puck-preview":"",children:e?/* @__PURE__ */N(de,{mirrorStyles:r,onDocument:e=>{y(e??void 0),a?.(e)},height:i,title:s,nonce:d,children:S}):/* @__PURE__ */N("div",{id:"preview-frame","data-puck-entry":"",children:S})})}function ke(e={}){const t=_(),n=ee(e=>e.appState.data);return r({...e,data:n,config:t.config,commit:(e,{select:n})=>t.run({data:e,select:n})})}function be(){const e=_(),n=ee(e=>e.config),o=e.resolveCache,r=ee(e=>e.selectedItem),a=ee(e=>e.appState.data.root),i=r?r.props.id:"root",d=a.props??{},l=z(()=>r||{type:"root",props:d},[r,d]),c=r?n.components[r.type]:n.root,u=e.getState(),p=r?s(u.appState.data,n,i):null,f=p&&"root"!==p.place.parentId?p.place.parentId:null,h=f?u.getItemById(f)??null:null,{fields:m}=t({id:i,node:l,block:c,parent:h,appState:u.appState}),v=ee(e=>!1===e.getPermissions(r?{item:r}:{root:!0}).edit),y=M((t,r)=>{(async()=>{const a=e.getState();if("root"!==i){const s=a.getItemById(i),d=a.getSelectorForId(i);if(!s||!d)return;const l={...s,props:{...s.props,[t]:r}},{node:c}=await k(l,n,{cache:o,trigger:"replace"}),u=e.getState().getSelectorForId(i);if(!u)return;return void e.dispatch({type:"replace",destinationZone:u.zone??"root:default-zone",destinationIndex:u.index,data:c})}const s=a.appState.data.root.props??{},{node:d}=await k({type:"root",props:{...s,[t]:r}},n,{cache:o,trigger:"replace"});e.dispatch({type:"replaceRoot",root:{props:d.props,readOnly:d.readOnly},recordHistory:!0})})()},[e,n,o,i]);return{id:i,node:l,fields:m,values:l.props,readOnly:v,onChange:y}}export{de as CanvasFrame,q as DEFAULT_UI,ge as EaselCanvas,J as EaselProvider,ve as EditDocument,X as bindUndoKeys,W as createEasel,te as createUseEasel,R as recordsByDefault,H as reduce,L as uiView,ee as useEasel,_ as useEaselApi,ke as useEaselNodeOps,be as useSelectedFields,K as validSelection};
@@ -0,0 +1,2 @@
1
+ import{noControlField as e}from"./chunk-7F52SZOI.js";import{usePreviewDevice as n}from"./chunk-BSPCSC45.js";import{jsx as t}from"react/jsx-runtime";function r(e){return"mobile"===e?"mobile":"desktop"}var i={desktop:null,tablet:"Tablet uses the desktop settings.",mobile:"Showing the phone settings for this section."},o="data-sf-device-hidden";function s(){/* @__PURE__ */
2
+ return t("span",{hidden:!0,[o]:""})}function u({tier:e,render:i,...o}){return r(n())===e?/* @__PURE__ */t(i,{...o}):/* @__PURE__ */t(s,{})}var c="__device";function d(e){const n=e?.[c];return n??null}function f(e){return d(e)?.inner??e}function a(e,n){const r=n.render;return{...n,[c]:{tier:e,inner:n},render:n=>/* @__PURE__ */t(u,{tier:e,render:r,...n})}}function l(){const e=i[n()];return e?/* @__PURE__ */t("div",{className:"sf-device-scope",children:e}):/* @__PURE__ */t(s,{})}function m(){return e({type:"custom",render:()=>/* @__PURE__ */t(l,{})},"always")}export{c as DEVICE_FIELD_MARKER,o as DEVICE_HIDDEN_ATTR,i as DEVICE_NOTE,a as deviceField,d as deviceMetaOf,m as deviceNote,r as shownTier,f as withoutDeviceGate};
@@ -0,0 +1 @@
1
+ import{panelFieldsOf as t}from"./chunk-ZE7I3PLX.js";import{withoutDeviceGate as o,deviceMetaOf as e}from"./chunk-PWZOS45R.js";import{BUCKET_KEY as n}from"./chunk-R2HLPNQF.js";import{ANCHOR_FIELD_KEYS as r,foldMetaOf as s,MEDIA_FIELD_MARKER as i,TEXT_FIELD_MARKER as c,LINK_FIELD_MARKER as p}from"./chunk-DUVRZ456.js";import{STYLE_KIND as u,fieldKind as f,copyStyle as a,heldStyle as l,planPaste as m,pasteMessage as h}from"./chunk-57DJOKXT.js";var y=/* @__PURE__ */new Set([n.Style,n.Layout]),j=new Set(Object.values(n)),b=new Set(r),S=/* @__PURE__ */new Set(["focal","imageFocal"]),k=[i,c,p];function w(t){return`site:${t??""}`}function g(t){if(!t||"object"!=typeof t)return null;const e=t,n=o(t)??t,r=e[u]??n[u];if("string"==typeof r)return r;const s=e.options??n.options;if(Array.isArray(s)){return`choice:${s.map(t=>String(t?.value)).sort().join("|")}`}return f(n)}function L(t){const e=t,n=o(t);return k.some(t=>t in e||n&&t in n)}function O(o,n){const r=t(o,n)??{},i=[];let c=!1;for(const[t,o]of Object.entries(r))j.has(t)?c=y.has(t):c&&o&&"object"==typeof o&&!t.startsWith("_")&&(s(o)||b.has(t)||S.has(t)||L(o)||"slot"!==o.type&&i.push({path:[t],kind:g(o),counted:"mobile"!==e(o)?.tier}));return i}function v(t,o,e,n){a({scope:o,type:e.type,label:n,rows:O(t,e),props:e.props})}function P(t,o,e,n){const r=l(o);if(!r)return null;const s=m(r,{type:e.type,rows:O(t,e),props:e.props});return{...s,message:h(s,r.sourceLabel,n)}}export{v as copyNodeStyle,O as nodeStyleRows,P as planNodePaste,g as shopFieldKind,w as siteStyleScope};
@@ -0,0 +1 @@
1
+ import{applyEaselChromeTheme as e}from"./chunk-3WSPDAK2.js";import{useEaselHost as t}from"./chunk-R5ZVNJLJ.js";import{useEaselSession as n}from"./chunk-6TZTKAB5.js";import{currentEaselSession as r,setSessionBridgedSite as o}from"./chunk-AJBJ74ME.js";import{useState as s,useRef as a,useEffect as c}from"react";var u={canCreatePlatformTemplate:!1};function i(t,n={}){const s=n.session??r();s.auth.token=t.token,s.auth.brandId=t.brandId??null,o(s,t.siteId),(n.stampChromeTheme??!0)&&e(t.theme)}function m(e){const[r,o]=s(null),m=a(null),[l,f]=s(u),d=a(e?.onAuth),k=a(e?.onMessage);c(()=>{d.current=e?.onAuth,k.current=e?.onMessage});const p=t(),h=n();return c(()=>{const e=p.subscribe(e=>{const t=e;if("storefront-editor:auth"===t.type&&"string"==typeof t.token&&t.token){const e=!!m.current;m.current=t.token,o(t.token),i({...t,token:t.token},{stampChromeTheme:p.ownsDocument,session:h}),f((n=t.can)&&"object"==typeof n?{canCreatePlatformTemplate:!0===n.canCreatePlatformTemplate}:u),d.current?.(e)}else k.current?.(e);var n});if(p.send("storefront-editor:ready"),!h.usesBridgedToken)return e;const t=window.setInterval(()=>{m.current?window.clearInterval(t):p.send("storefront-editor:ready")},500);return()=>{e(),window.clearInterval(t)}},[p,h]),{token:r,tokenRef:m,capabilities:l}}export{u as NO_BRIDGED_CAPABILITIES,i as applyAuthGrant,m as useAdminBridge};
@@ -0,0 +1 @@
1
+ var t={Content:"_sContent",Style:"_sStyle",Layout:"_sLayout",Animation:"_sAnimation"};export{t as BUCKET_KEY};
@@ -0,0 +1 @@
1
+ var n=0;function r(r){n+=1;try{return r()}finally{n-=1}}function t(){return n>0}export{t as isPreviewClick,r as runAsPreviewClick};
@@ -0,0 +1,2 @@
1
+ import{createContext as e,useContext as r}from"react";import{jsx as n}from"react/jsx-runtime";var o={connected:!1,ownsDocument:!0,send:()=>{},subscribe:()=>()=>{},address:{search:()=>"",show:()=>{},load:()=>{},reload:()=>{}}},s=e(o);function t({host:e,children:r}){/* @__PURE__ */
2
+ return n(s.Provider,{value:e,children:r})}function d(){return r(s)}function c(e){const r=/* @__PURE__ */new Set;return{host:{connected:!0,ownsDocument:!1,send:(r,n)=>{e.onMessage({type:r,...n})},subscribe:e=>(r.add(e),()=>{r.delete(e)}),address:e.address},deliver:e=>{for(const n of[...r])n(e)}}}export{o as DETACHED_EASEL_HOST,s as EaselHostContext,t as EaselHostProvider,c as createEaselHost,d as useEaselHost};
@@ -0,0 +1 @@
1
+ var e={canPublish:!1,hasSiteSettings:!1,hasSiteTheme:!1,placeholderFrames:!1,mediaEditing:!1,pageCreationInAdminForm:!1,canDeletePagesInline:!1,hasEditLock:!1,hasEditGuard:!1,hasPinnedChrome:!1,explainsSiteSettings:!1,hasSiteRecord:!1,canEditSiteRecord:!1,hasPreviewLink:!1,hasCatalog:!1,hasForms:!1,hasBlog:!1,offersCommerce:!1,offersService:!1};var s={homeSlug:null,entryMayBounce:()=>!1,entryBounce:()=>null,onSwitch:()=>{},tellsHost:()=>!0,adapterFor:(s,r,o)=>function(s){const r=e=>!s?.sets||s.sets.includes(e);return{capabilities:{...e,offersCommerce:r("commerce"),offersService:r("service")},resolve:()=>Promise.resolve({id:"document",layout:{},version:null}),saveLayout:()=>Promise.resolve({version:null}),listPages:()=>Promise.resolve([])}}(o),migrateRenamedProps:e=>e};export{s as NO_DOCUMENT_ADDRESSING};
@@ -0,0 +1 @@
1
+ var e=/\b(transform|translate|rotate|scale|perspective|filter|backdrop-filter|contain)\b/;function t(t){const n=e=>t.getPropertyValue(e).trim(),r=(e,t)=>{const r=n(e);return""!==r&&!t.includes(r)};return!!r("transform",["none"])||(!!(r("translate",["none"])||r("rotate",["none"])||r("scale",["none"]))||(!!r("perspective",["none"])||(!!r("filter",["none"])||(!(!r("backdrop-filter",["none"])&&!r("-webkit-backdrop-filter",["none"]))||(!!/\b(layout|paint|strict|content)\b/.test(n("contain"))||(!!r("container-type",["normal"])||(!!r("content-visibility",["visible"])||e.test(n("will-change")))))))))}function n(e){const n=e?.ownerDocument,r=n?.defaultView;if(!(e&&n&&r&&e.isConnected))return null;for(let o=e;o&&o!==n.body&&o!==n.documentElement;o=o.parentElement)if(t(r.getComputedStyle(o)))return null;return e}export{n as menuPortalTarget};
@@ -0,0 +1 @@
1
+ import{DEFAULT_PANEL_W as a,clampPanelWidth as r}from"./chunk-6DJHRLCU.js";var s="sf-editor-panel-widths",t={...a},e=a=>r(a);export{t as DEFAULT_PANEL_W,s as PANEL_WIDTHS_KEY,e as clampPanelWidth};
@@ -0,0 +1,18 @@
1
+ import{DEFAULT_DRAG_WORDS as e}from"./chunk-O2NLQBFX.js";import{dropEffectFor as t,scrollBoxOf as n,frameScrollBox as l,startAutoScroll as r,isNoOpDrop as a}from"./chunk-67GNT6PF.js";import{useCanvasLayout as o,useCanvasEvent as s}from"./chunk-PAELDYYS.js";import{framePointToHost as i,elementScale as c,frameRectToLayer as d,clientPointToLayer as u}from"./chunk-ZNCEOSXO.js";import{CloseIcon as h,SearchIcon as f}from"./chunk-L5KW4HG5.js";import{parseZoneKey as p}from"./chunk-KRXQM65X.js";import{useRef as m,useEffect as b,useState as g,useCallback as y,useMemo as v,useSyncExternalStore as x,useId as k,useLayoutEffect as w}from"react";import{jsxs as N,jsx as A}from"react/jsx-runtime";var D=(e,t,n)=>t>=e.left&&t<=e.left+e.width&&n>=e.top&&n<=e.top+e.height,z=e=>e.width*e.height;function T(e,t,n){let l=null;for(const r of e)D(r.box,t,n)&&(!l||z(r.box)<=z(l.box))&&(l=r);return l}function C(e,t,n){const l="x"===e.axis?t:n;let r=0;for(const t of e.children){l>("x"===e.axis?t.left+t.width/2:t.top+t.height/2)&&(r+=1)}return r}function S(e,t){const n=e.children;if("x"===e.axis){const l=n[t-1],r=n[t],a=l&&r?(l.left+l.width+r.left)/2:l?l.left+l.width:r?r.left:e.box.left,o=r??l??e.box;return{left:a-1,top:o.top,width:2,height:o.height}}const l=n[t-1],r=n[t],a=l&&r?(l.top+l.height+r.top)/2:l?l.top+l.height:r?r.top:e.box.top;return{left:e.box.left,top:a-1,width:e.box.width,height:2}}function E(e,t,n,l,r=()=>!1,a=()=>!0){const o=e.filter(e=>D(e.box,t,n)).sort((e,t)=>z(e.box)-z(t.box));for(const e of o){const o=C(e,t,n),s={...e.list,index:o};if(r(s))return null;if(l(s))return{zone:e,to:s,line:S(e,o)};if(!a(s))return null}return null}function L(e,t=e.key){const n=[];for(let l=1;l<e.children.length;l++){const r=e.children[l-1],a=e.children[l],o=r.top+r.height;n.push({key:`${t}:${l}`,place:{...e.list,index:l},box:{left:e.box.left,top:o,width:e.box.width,height:Math.max(a.top-o,0)}})}return n}var j={nodes:[],zones:[]},$="data-puck-dropzone",B="data-puck-component";function K(e,t){if(e.length>=2){const[t,n]=e;return Math.abs(n.top-t.top)<Math.min(t.height,n.height)/2&&n.left>t.left?"x":"y"}const n=t.ownerDocument.defaultView?.getComputedStyle(t);return n&&n.display.includes("flex")&&n.flexDirection.startsWith("row")?"x":"y"}function M(e,t){const{frame:n,document:l}=e,r=e=>d(n,function(e){const t=e.getBoundingClientRect();return{left:t.left,top:t.top,width:t.width,height:t.height}}(e),t),a=[],o=[];for(const e of l.querySelectorAll(`[${$}]`)){const t=e.getAttribute($)??"";let n;try{n=p(t)}catch{continue}const l=[...e.querySelectorAll(`[${B}]`)].filter(t=>t.parentElement?.closest(`[${$}]`)===e),s=l.map(r);o.push({key:t,list:n,box:r(e),axis:K(s,e),children:s}),l.forEach((e,t)=>{const l=e.getAttribute(B);l&&a.push({id:l,place:{...n,index:t},box:s[t]})})}return{nodes:a,zones:o}}var O="data-es-empty-cell",X="data-puck-dropzone",q=140;var P=e=>({left:e.left,top:e.top,width:e.width,height:e.height});function Y(d){const{canvas:h,session:f,readOnly:p,words:k=e.canvas}=d,D=m(d);b(()=>{D.current=d});const z=m(null),C=o(h),[S,L]=g(0),$=y(()=>L(e=>e+1),[]),[B,K]=g(j);b(()=>{const e=z.current;h&&e&&K((D.current.measure??M)(h,e))},[h,C,d.revision,S]);const q=d.model,Y=v(()=>q(B),[q,B]),F=x(f.subscribe,f.shown,f.shown),[R,Z]=g(null),[G,Q]=g(null),W=m(null),H=()=>{W.current&&clearTimeout(W.current),W.current=null},I=()=>{H(),W.current=setTimeout(()=>{f.get()||Z(null)},140)};b(()=>H,[]);const V=m(null);s(h,"mousemove",e=>{const t=z.current;if(!h||!t)return;const n=i(h.frame,e.clientX,e.clientY,t),l=c(t),r={x:n.x/l,y:n.y/l};if(V.current=r,D.current.readOnly||f.get())return;H();const a=T(Y.sources,r.x,r.y);Z(e=>e?.key===a?.key&&e?.box===a?.box?e:a)}),s(h,"mouseout",e=>{e.relatedTarget||(V.current=null,I())}),s(h,"mouseover",e=>{e.relatedTarget||$()});const J=m(null),U=y(()=>{J.current?.(),J.current=null,Q(null)},[]);b(()=>f.subscribe(()=>{f.get()?$():U()}),[f,U,$]),b(()=>U,[U]),("undefined"==typeof document?b:w)(()=>{if(f.get())return;const e=V.current;Z(t=>p?null:e?T(Y.sources,e.x,e.y):t?Y.sources.find(e=>e.key===t.key)??null:null)},[Y,F,f,p]);const _=e=>{const t=f.get(),n=z.current;if(!t||!n)return null;const l=u(n,e.clientX,e.clientY);V.current=l;const r=E(Y.zones,l.x,l.y,e=>D.current.canDrop(t.item,e),e=>!!t.from&&a(t.from,e),e=>D.current.fallThrough?.(t.item,e,t.from)??!0);return r?{h:t,t:r}:null},ee={onDragEnter:e=>{if(J.current)return;const t=n(e.currentTarget.parentElement?.parentElement??null),a=h?l(h.document):null,o=[];t&&o.push(r(t)),a&&h&&o.push(r(a,h.frame)),J.current=o.length?()=>o.forEach(e=>e()):null},onDragOver:e=>{const n=_(e);if(!n)return void Q(null);e.preventDefault(),e.dataTransfer.dropEffect=t(e.dataTransfer.effectAllowed);const l={zoneKey:n.t.zone.key,line:n.t.line,axis:n.t.zone.axis};Q(e=>e&&e.zoneKey===l.zoneKey&&e.line.left===l.line.left&&e.line.top===l.line.top?e:l)},onDragLeave:e=>{const t=e.relatedTarget;t&&e.currentTarget.contains(t)||(V.current=null,Q(null))},onDrop:e=>{const t=_(e);t&&(e.preventDefault(),f.end(),U(),D.current.onDrop(t.h.item,t.t.to))}},te={draggable:!p&&!!R,onMouseEnter:H,onMouseLeave:()=>!f.get()&&I(),onDragStart:e=>{if(R&&!p){f.start({key:R.key,item:R.item,from:R.from}),e.dataTransfer.effectAllowed="move";try{e.dataTransfer.setData("text/plain",R.key)}catch{}}else e.preventDefault()},onDragEnd:()=>{f.end(),U()},onClick:()=>{R&&!p&&D.current.onPick?.(R.item)}},{seams:ne=[]}=Y,le=Y.zones.filter(e=>0===e.children.length),re=d.onZoneAdd&&!p?le:[],ae=re.map(e=>e.key).join("\n");return b(()=>{const e=h?.document;if(!e)return;const t=new Set(ae?ae.split("\n"):[]);for(const n of e.querySelectorAll(`[${X}]`))n.toggleAttribute(O,t.has(n.getAttribute(X)??""));return()=>{for(const t of e.querySelectorAll(`[${O}]`))t.removeAttribute(O)}},[h,ae,B,C,S]),/* @__PURE__ */N("div",{ref:z,className:"es-canvas-layer",children:[F||!d.onSeamAdd||p?null:ne.map(e=>/* @__PURE__ */A("div",{className:"es-canvas-seam",style:{left:e.box.left,top:e.box.top+e.box.height/2-8,width:e.box.width,height:16},children:/* @__PURE__ */A("button",{type:"button",className:"es-canvas-seam-add",onClick:()=>d.onSeamAdd?.(e.place),children:k.addButton({label:d.seamLabel??k.addSection})})},e.key)),re.length?re.map(e=>/* @__PURE__ */A("button",{type:"button",className:G?.zoneKey===e.key?"es-canvas-empty is-over":"es-canvas-empty",style:P(e.box),onClick:()=>d.onZoneAdd?.({...e.list,index:0}),children:/* @__PURE__ */A("span",{className:"es-canvas-empty-add",children:k.addButton({label:d.zoneAddLabel??k.addBlock})})},e.key)):null,F?/* @__PURE__ */A("div",{className:"es-canvas-catch",...ee}):null,G&&!le.some(e=>e.key===G.zoneKey)?/* @__PURE__ */A("div",{className:`es-canvas-line is-${G.axis}`,style:P(G.line)}):null,
2
+ /* @__PURE__ */N("div",{className:["es-canvas-handle",R&&!p?"is-shown":"",F?"is-dragging":""].filter(Boolean).join(" "),style:R?{left:R.box.left+2,top:Math.max(R.box.top-11,0)}:void 0,title:R?R.title??k.handle({label:R.label}):void 0,...te,children:[
3
+ /* @__PURE__ */A("span",{className:"es-canvas-grip","aria-hidden":"true",children:"⋮⋮"}),R?.label]})]})}var F=e=>e.tiles.length>0&&e.tiles.every(e=>null!=e.cover);function R({groups:t,session:n,itemFor:l,onInsert:r,at:a,hint:o,searchLabel:s,readOnly:i,words:c=e.add}){const d=o??c.hint,u=s??c.search,[p,m]=g(""),b=k(),y=p.trim().toLowerCase(),v=t.map(e=>({...e,tiles:y?e.tiles.filter(e=>((e,t)=>e.label.toLowerCase().includes(t)||(e.keywords??[]).some(e=>e.toLowerCase().includes(t)))(e,y)):e.tiles})).filter(e=>e.tiles.length>0),x=(e,t)=>r=>{if(t)r.preventDefault();else{n.start({key:`new:${e}`,item:l(e)}),r.dataTransfer.effectAllowed="copy";try{r.dataTransfer.setData("text/plain",e)}catch{}}};/* @__PURE__ */
4
+ return N("div",{className:"es-add",children:[a?/* @__PURE__ */N("div",{className:"es-add-at",role:"status",children:[
5
+ /* @__PURE__ */A("span",{children:a.label}),
6
+ /* @__PURE__ */A("button",{type:"button",className:"es-add-at-clear","aria-label":c.stop,title:c.stop,onClick:a.onClear,children:/* @__PURE__ */A(h,{size:12,"aria-hidden":"true"})})]}):null,
7
+ /* @__PURE__ */A("p",{className:"es-add-hint",children:d}),
8
+ /* @__PURE__ */N("div",{className:"es-add-search",children:[
9
+ /* @__PURE__ */A(f,{size:16,"aria-hidden":"true"}),
10
+ /* @__PURE__ */A("input",{id:b,type:"search","aria-label":u,placeholder:c.searchPlaceholder({label:u}),value:p,onChange:e=>m(e.target.value)}),p?/* @__PURE__ */A("button",{type:"button",className:"es-add-search-clear","aria-label":c.clearSearch,onClick:()=>m(""),children:/* @__PURE__ */A(h,{size:12,"aria-hidden":"true"})}):null]}),0===v.length?/* @__PURE__ */N("div",{className:"es-add-empty",role:"status",children:[
11
+ /* @__PURE__ */A("div",{className:"es-add-empty-title",children:c.nothing({query:p.trim()})}),
12
+ /* @__PURE__ */A("div",{className:"es-add-empty-sub",children:c.tryAnother})]}):v.map(e=>/* @__PURE__ */N("section",{className:"es-add-group","aria-label":e.title,children:[
13
+ /* @__PURE__ */N("div",{className:"es-add-group-head",children:[
14
+ /* @__PURE__ */A("span",{className:"es-add-group-title",children:e.title}),
15
+ /* @__PURE__ */A("span",{className:"es-add-group-count",children:e.tiles.length})]}),
16
+ /* @__PURE__ */A("div",{className:F(e)?"es-add-grid is-cards":"es-add-grid",children:e.tiles.map(e=>{const t=Boolean(i||e.disabled),l=i?void 0:e.disabled?e.disabledReason:e.title??c.tile({label:e.label});/* @__PURE__ */
17
+ return N("button",{type:"button",className:null!=e.cover?"es-add-tile has-cover":"es-add-tile",draggable:!t,"aria-disabled":t||void 0,"aria-label":c.tile({label:e.label}),title:l,onDragStart:x(e.type,t),onDragEnd:()=>n.end(),onClick:()=>!t&&r(e.type),children:[null!=e.cover?/* @__PURE__ */A("span",{className:"es-add-tile-cover","aria-hidden":"true",children:e.cover}):e.icon?/* @__PURE__ */A("span",{className:"es-add-tile-glyph","aria-hidden":"true",children:e.icon}):null,
18
+ /* @__PURE__ */A("span",{className:"es-add-tile-label",children:e.label})]},e.type)})})]},e.title))]})}export{R as AddPanel,Y as CanvasDragLayer,j as EMPTY_MEASURE,q as HANDLE_GRACE_MS,E as canvasTarget,D as contains,C as gapInZone,S as gapLine,M as measureCanvas,T as pickSource,L as seamsBetween};
@@ -0,0 +1 @@
1
+ import{newNodeId as e,ROOT_ZONE as t}from"./chunk-FUDHI5I4.js";import{useEasel as n}from"./chunk-P67FP7PG.js";import{useMemo as o}from"react";function r(r={}){const{dispatch:i}=n(e=>e),p=!0===r.readOnly;return o(()=>{const n=(t,n,o)=>{const r=e(n);return p||i({type:"insert",componentType:n,destinationZone:t,destinationIndex:o,id:r}),r},o=(e,t,n)=>{p||i({type:"replace",destinationZone:e,destinationIndex:t,data:n})};return{insertComponent:n,insertSection:(e,o)=>n(t,e,o),replaceComponent:o,seedChild:(e,t,r,i)=>{const p=n(e,r,t);o(e,t,{type:r,props:{id:p,...i}})},insertNode:(e,t,r)=>{const i=n(e,r.type,t);return o(e,t,{type:r.type,props:{...r.props,id:i}}),i},removeComponent:(e,t)=>{p||i({type:"remove",index:t,zone:e})},reorderComponent:(e,t,n)=>{p||i({type:"reorder",sourceIndex:t,destinationIndex:n,destinationZone:e})},duplicateComponent:(e,t)=>{p||i({type:"duplicate",sourceIndex:t,sourceZone:e})},select:e=>i({type:"setUi",ui:{itemSelector:e}}),setDocument:e=>{p||i({type:"setData",data:e})},commitDocument:e=>{p||i({type:"setData",data:()=>e,recordHistory:!0})}}},[i,p])}export{r as useSectionOps};
@@ -0,0 +1,2 @@
1
+ import{routeSharedHostMessage as e}from"./chunk-7MU3RJ6S.js";import{describeLoadFailure as r,hostLoadRefusal as n}from"./chunk-A7ZJII7O.js";import{pageEditLock as t}from"./chunk-AKZWUV5Z.js";import{NO_DOCUMENT_ADDRESSING as o}from"./chunk-RLBXE4EU.js";import{saveStatusOf as u,resetForDocumentSwitch as a}from"./chunk-OYX47SL7.js";import{isExpiredSession as s}from"./chunk-HMX55DYT.js";import{useAdminBridge as i}from"./chunk-Q3SQBNJB.js";import{useEaselHost as c}from"./chunk-R5ZVNJLJ.js";import{useEaselSession as l}from"./chunk-6TZTKAB5.js";import{backendOf as d,setSessionDocumentSite as f}from"./chunk-AJBJ74ME.js";import{DEFAULT_SCREEN_WORDS as g}from"./chunk-ZWK3CBRU.js";import{useAutosave as k}from"./chunk-BDTITTMW.js";import{canWriteDocument as m,newEaselClientId as v,reloadIfVersionMoved as p,holderOf as h}from"./chunk-JUQ6YJCG.js";import{useWords as y}from"./chunk-MFIRYGHW.js";import{createContext as w,useContext as S,useState as b,useMemo as I,useCallback as j,useEffect as P,useRef as B}from"react";import{jsx as A}from"react/jsx-runtime";var R={content:[],root:{},zones:{}};var E=w(null);function T(){const e=S(E);if(!e)throw new Error("useStorefrontDocument must be used within StorefrontDocumentProvider");return e}function C({target:w,addressing:S=o,onHostMessage:T,children:C}){const M=S,{homeSlug:O,entryMayBounce:H,entryBounce:J,onSwitch:D,tellsHost:L,adapterFor:N,migrateRenamedProps:F,describeMissing:U,onLoadFailed:V}=M,[W,Z]=b(w),Y=c(),K=l(),x=I(()=>d(K),[K]),Q="template"===W.kind,X="template"===W.kind?W.id:null,G="template"===W.kind?W.pageSlug??O??"":"document"===W.kind?W.slug??"":W.slug,z="page"===W.kind?W.siteId??null:null,_=K.blocks,q=I(()=>N(W,x,_),[N,x,_,W.kind,"template"===W.kind?W.id:"document"===W.kind?W.record:W.siteId]),$=q.capabilities,ee=j(e=>K.documentHooks?.stored?.(e)??e,[K]),re="page"===W.kind?W.originSlug??null:null;P(()=>{f(K,z)},[K,z]);const ne=B(W);P(()=>{ne.current=W},[W]);const{token:te,tokenRef:oe,capabilities:ue}=i({onMessage:r=>{if(T?.(r)||e(r))return;const n=r;if("storefront-editor:navigate"===n?.type){const e=r;e?.target&&wr(e.target)}}}),ae=!K.usesBridgedToken||null!==te,se=q.lock,ie=Boolean(x.lock),[ce,le]=b(null),[de,fe]=b(null),[ge,ke]=b(null),[me,ve]=b(null),pe=y("screen",g),he=me?function(e,r){if(null!==e.sentence)return e.sentence;if(!e.missing)return r.loadFailed({cause:e.cause});switch(e.target.kind){case"template":return r.missingTemplatePage;case"document":return r.missingDocument;default:return r.missingPage({slug:e.slug})}}(me,pe):null,[ye,we]=b(null),Se=B(null),be=B(null),[Ie,je]=b(!1),Pe=B(null),[Be,Ae]=b(null),Re=B(null),[Ee,Te]=b(null),Ce=B(null);P(()=>{Ce.current=Ee},[Ee]);const[Me,Oe]=b($.hasEditLock?{kind:"checking"}:{kind:"editing"}),He=B(Me);P(()=>{He.current=Me},[Me]);const Je=B(()=>Promise.resolve(!1)),De=j(e=>{be.current=e,je(!0)},[]),Le=k({save:async({id:e,data:r})=>{if(m(He.current)){if(!await Je.current(e,r)){if(!m(He.current))return void De({id:e,data:r});throw new Error("page save did not land")}}else De({id:e,data:r})},onFailure:(e,r)=>{0===r&&Y.send("storefront-editor:save-failed")}}),{state:Ne,push:Fe,flush:Ue,pause:Ve,resume:We,stop:Ze,reset:Ye,retryNow:Ke,hasPending:xe}=Le,Qe=B(Ne);P(()=>{Qe.current=Ne},[Ne]);const Xe=u(Ne),Ge=j(()=>{const e=be.current;e&&(be.current=null,je(!1),Fe(e))},[Fe]),ze=B("");ze.current||(ze.current=v());const[_e,qe]=b(0),$e=B(!1),[er,rr]=b(H(w)),nr=B(!1);P(()=>{if(nr.current)return;nr.current=!0;const e=Y.address.search(),r=J(w,e);r?Y.address.load(r):H(w)&&rr(!1)},[w,Y]);const tr=Y.send;P(()=>{if(!ae)return;let e=!1;const t=ne.current,o=q.resolve(G),u=K.documentHooks?.opening?.({slug:G,isTemplate:Q,capabilities:$});return o.then(async r=>{if(e)return;if(!r)return"page"===t.kind&&null!==O&&G!==O?void Y.address.load({kind:"page",slug:O,siteId:z??void 0}):(ve({target:t,slug:G,missing:!0,sentence:U?.(t)??null}),void V?.(t,null));const n=r.readOnlyReason?r.readOnlyReason:null;Se.current=n,we(n),le(r.id),fe(r.kind??null),Re.current=r.version??null;const o=r.layout,a=o&&Object.keys(o).length?o:R,s=F(a),i=u?await u(s):s;e||ke(i)}).catch(o=>{e||(console.error("[storefront-editor] document load failed",o),ve({target:t,slug:G,missing:!1,sentence:n(o,{slug:G}),cause:r(o)}),V?.(t,o))}),()=>{e=!0}},[ae,te,Q,q,G]);const or=j(e=>new Promise(r=>{const n=Date.now(),t=setInterval(()=>{const o=oe.current;o&&o!==e?(clearInterval(t),r(o)):Date.now()-n>6e3&&(clearInterval(t),r(null))},200)}),[]),ur=j(async e=>{const r=oe.current;if(!r&&K.usesBridgedToken)return{ok:!1,error:new Error("no editor token")};try{return{ok:!0,value:await e(r??"")}}catch(n){if(s(n)){tr("storefront-editor:auth-expired");const n=r?await or(r):null;if(n)try{return{ok:!0,value:await e(n)}}catch(e){return{ok:!1,error:e}}}return{ok:!1,error:n}}},[tr,or,K]),ar=j(async e=>{const r=oe.current?await ur(e):{ok:!1};return r.ok||tr("storefront-editor:save-failed"),r.ok},[tr,ur]),sr=j(async(e,r,n=!1)=>{if(null!==Se.current)return!1;if(!m(He.current))return!1;if(Ce.current)return!1;const o=await ur(()=>q.saveLayout(e,r,Re.current,ze.current));if(o.ok)return Re.current=o.value.version??Re.current,!0;const u=t.readLockTaken(o.error);if(u){const e={kind:"takenover",holder:u};return He.current=e,Oe(e),!1}const a=t.readSaveConflict(o.error);if(a){if(a.savedByYou&&!n&&q.rereadVersion){const n=await ur(()=>q.rereadVersion(e));if(n.ok&&n.value)return Re.current=n.value,Je.current(e,r,!0)}Ze(),Ce.current=a,Te(a)}return!1},[q,ur,Ze]);P(()=>{Je.current=sr},[sr]);const ir=j(e=>{if(null!==Se.current)return;if(tr("storefront-editor:dirty"),!ce)return;const r=ee(e);Pe.current=r,m(He.current)?Fe({id:ce,data:r}):De({id:ce,data:r})},[ce,tr,De,Fe,ee]),cr=j(async()=>{m(He.current)&&Ge();return await Ue()&&null==be.current},[Ge,Ue]),lr=B(cr);P(()=>{lr.current=cr},[cr]);const dr=B(ur);P(()=>{dr.current=ur},[ur]);const fr=j(()=>{Y.address.reload()},[Y]),gr=B(()=>Promise.resolve(!1));P(()=>{gr.current=()=>{const e=q.rereadVersion;return ce&&e?p({ours:Re.current,stored:async()=>{const r=await dr.current(()=>e(ce));return r.ok?r.value:null},hasPending:()=>null!=be.current||xe(),reload:fr}):Promise.resolve(!1)}},[q,ce,xe,fr]);const kr=null!==ye;P(()=>{if(!se||!ce||!ae||kr)return;let e=!1,r=null;const n=ze.current,o=t.makeClaimBeat({claim:async e=>{const r=await dr.current(()=>se.claim(ce,n,e));if(r.ok)return{heartbeat_seconds:r.value.heartbeatSeconds};throw r.error},cancelled:()=>e,currentAccess:()=>He.current,heldWrite:()=>({pending:null!=be.current||xe(),autoSaveEnabled:!Qe.current.paused,saveConflict:null!=Ce.current}),setAccess:e=>{He.current=e,Oe(e)},releaseHeldWrite:()=>{lr.current()},startHeartbeat:e=>{r=setInterval(()=>{o(!1)},e)},stopHeartbeat:()=>{r&&(clearInterval(r),r=null)},reloadIfMoved:()=>{gr.current()}}),u=$e.current;return $e.current=!1,u||Oe({kind:"checking"}),o(u),()=>{e=!0,r&&clearInterval(r),se.release(ce,n).catch(()=>{})}},[ce,se,ae,te,_e,kr]);const mr=j(()=>{se&&ce&&($e.current=!0,qe(e=>e+1))},[ce,se]),vr=j(()=>{Oe(e=>{const r="blocked"===e.kind||"takenover"===e.kind?e.holder:null;return r?{kind:"readonly",holder:r}:e})},[]),pr=j(()=>{Qe.current.paused?(m(He.current)&&Ge(),We()):Ve()},[Ge,Ve,We]),hr=j(()=>{Ke()},[Ke]),yr=j(e=>{Pe.current=null,a("template"!==e.kind&&ie,{resetAutosave:()=>{Ye(),be.current=null,je(!1)},setVersion:e=>{Re.current=e},setSaveConflict:Te,setAccess:Oe}),D(e),Z(e),Se.current=null,we(null),le(null),fe(null),ke(null),ve(null),Y.address.show(e),"document"!==e.kind&&L(e)&&Y.send("storefront-editor:navigated",{target:e})},[Ye,Y,ie,D,L]),wr=j(e=>{if(function(e,r,n){if(e.kind!==r.kind)return!1;if("template"===e.kind){const t=r;return e.id===t.id&&(e.pageSlug??n)===(t.pageSlug??n)}if("document"===e.kind){const n=r;return e.record===n.record&&(e.slug??"")===(n.slug??"")}const t=r;return e.slug===t.slug&&e.siteId===t.siteId}(e,ne.current,O))return;const r=null!=be.current;if(!r&&!xe())return void yr(e);const n=Qe.current;r||n.paused||n.failed||n.stopped?Ae(e):Ue().then(r=>{r?yr(e):Ae(e)})},[yr,xe,Ue,O]),Sr=j(()=>Ae(null),[]),br=j(()=>{Ae(e=>(e&&yr(e),null))},[yr]),Ir=j(async()=>{const e=Be;if(!e)return;await cr()&&(Ae(null),yr(e))},[Be,cr,yr]),jr=j(async e=>{if(null!==Se.current)return;if(!ce)return;if(!m(He.current)||Ce.current)return;const r=ee(e);if(!await sr(ce,r))return void(Ce.current||tr("storefront-editor:save-failed"));const n=q.publish;if(!$.canPublish||!n)return void tr("storefront-editor:saved");const t=await ur(()=>n(ce,Re.current??void 0));t.ok?(Re.current=t.value.version??Re.current,tr("storefront-editor:published")):tr("storefront-editor:save-failed")},[ce,q,$.canPublish,tr,sr,ur,ee]);/* @__PURE__ */
2
+ return A(E.Provider,{value:{target:W,adapter:q,capabilities:$,templateId:X,currentSlug:G,currentKind:de,siteId:z,ready:ae,token:te,tokenRef:oe,notifyParent:tr,bridgeCapabilities:ue,runAuthed:ar,docId:ce,data:ge,getLiveData:()=>Pe.current??ge,footerOriginSlug:re,error:he,redirecting:er,saveStatus:Xe,saveState:Ne,autoSaveEnabled:!Ne.paused,autoSaveStoppedByConflict:Ne.stopped,hasUnsavedEdits:Ne.pending||Ie,toggleAutoSave:pr,retrySave:hr,onChange:ir,flushSave:cr,onPublish:jr,access:Me,readOnly:null!==h(Me)||null!==ye,readOnlyReason:ye,takeOverEditing:mr,viewReadOnly:vr,saveConflict:Ee,reloadFromServer:fr,navigate:wr,pendingNav:Be,cancelPendingNav:Sr,discardAndNavigate:br,saveAndNavigate:Ir},children:C})}export{E as ScreenDocumentContext,C as ScreenDocumentProvider,T as useScreenDocument};
@@ -0,0 +1,10 @@
1
+ import{clientOnly as e}from"./chunk-GXQCZJOP.js";import{ScreenStoreProvider as n}from"./chunk-MSBF7IW3.js";import{ScreenChrome as r}from"./chunk-HDKTR5TZ.js";import{ScreenDocumentProvider as t,useScreenDocument as a}from"./chunk-YJXEHK6I.js";import{DEFAULT_SCREEN_WORDS as i}from"./chunk-ZWK3CBRU.js";import{documentPermissions as s}from"./chunk-JUQ6YJCG.js";import{useWords as o}from"./chunk-MFIRYGHW.js";import{useMemo as d}from"react";import{jsx as c,jsxs as l,Fragment as m}from"react/jsx-runtime";var g=e(n),h=e(r);function p({saving:e,onCancel:n,onDiscard:r,onSave:t}){/* @__PURE__ */
2
+ return c("div",{className:"fixed inset-0 z-[200] flex items-center justify-center bg-black/30 p-4",role:"dialog","aria-modal":"true","aria-labelledby":"sf-leave-title",children:/* @__PURE__ */l("div",{className:"w-full max-w-sm rounded-lg bg-white p-5 shadow-xl",children:[
3
+ /* @__PURE__ */c("h2",{id:"sf-leave-title",className:"text-[15px] font-semibold text-zinc-900",children:"Unsaved changes"}),
4
+ /* @__PURE__ */c("p",{className:"mt-2 text-[13px] leading-relaxed text-zinc-600",children:"Your most recent edits haven’t finished saving yet. Save them before switching, or leave and discard them."}),
5
+ /* @__PURE__ */l("div",{className:"mt-4 flex justify-end gap-2",children:[
6
+ /* @__PURE__ */c("button",{type:"button",onClick:n,className:"rounded-md border border-zinc-300 px-3 py-[7px] text-[13px] font-medium text-zinc-700 transition-colors hover:bg-zinc-100",children:"Cancel"}),
7
+ /* @__PURE__ */c("button",{type:"button",onClick:r,className:"rounded-md border border-red-200 px-3 py-[7px] text-[13px] font-medium text-red-600 transition-colors hover:bg-red-50",children:"Discard & leave"}),
8
+ /* @__PURE__ */c("button",{type:"button",onClick:t,disabled:e,className:"rounded-md bg-blue-600 px-3 py-[7px] text-[13px] font-medium text-white transition-colors hover:bg-blue-700 disabled:opacity-60",children:e?"Saving…":"Save & leave"})]})]})})}function u({target:e,addressing:n,onHostMessage:r,children:a}){/* @__PURE__ */
9
+ return c(t,{target:e,addressing:n,onHostMessage:r,children:a})}var v=(e,n)=>/* @__PURE__ */l(m,{children:[e,n]});function f({config:e,parts:n,wrap:r=v}){const{data:t,error:l,redirecting:m,ready:u,saveStatus:f,readOnly:x,onChange:b,pendingNav:N,cancelPendingNav:y,discardAndNavigate:k,saveAndNavigate:C}=a(),j=d(()=>s(!x),[x]),w=o("screen",i);return m?/* @__PURE__ */c("div",{className:"sf-msg",children:w.loading}):l?/* @__PURE__ */c("div",{className:"sf-msg sf-msg--error",children:l}):u?t?r(
10
+ /* @__PURE__ */c(g,{config:e,data:t,onChange:b,permissions:j,parts:n,children:/* @__PURE__ */c(h,{})}),N&&/* @__PURE__ */c(p,{saving:"saving"===f,onCancel:y,onDiscard:k,onSave:()=>{C()}})):/* @__PURE__ */c("div",{className:"sf-msg",children:w.loading}):/* @__PURE__ */c("div",{className:"sf-msg",children:w.waitingForAuthorization})}export{f as DocumentScreen,u as ScreenMount};
@@ -0,0 +1 @@
1
+ function t(t,e){if(!e)return null;const n=t.components?.[e.type],l=n?.fields??null;if(!l||"function"!=typeof n?.resolveFields)return l;try{const t=n.resolveFields({type:e.type,props:e.props},{fields:l,lastFields:l,lastData:null,changed:{},parent:null,appState:{}});return t&&"function"!=typeof t.then?t:l}catch{return l}}export{t as panelFieldsOf};
@@ -0,0 +1 @@
1
+ var o={loading:"Loading…",waitingForAuthorization:"Waiting for editor authorization…",missingTemplatePage:"Couldn’t open a page in this template.",missingPage:({slug:o})=>`No storefront page with slug "${o}".`,missingDocument:"Couldn’t open this document.",loadFailed:({cause:o})=>`Could not load the document — ${o}`,noun:"page"};export{o as DEFAULT_SCREEN_WORDS};
@@ -0,0 +1 @@
1
+ import{createContext as e,useEffect as n,useContext as r,useSyncExternalStore as u}from"react";import{jsx as t}from"react/jsx-runtime";var l=e(null),o=null;function i({panel:e,children:r}){return o=e,n(()=>(o=e,()=>{o===e&&(o=null,v(f?.request.requestId??"",null))}),[e]),/* @__PURE__ */t(l.Provider,{value:e,children:r})}function s(){return r(l)}function c(){return null!==o}var f=null,d=/* @__PURE__ */new Set,a=()=>{for(const e of[...d])e()};function q(e){return new Promise(n=>{const r=f;f={request:e,resolve:n},a(),r?.resolve(null)})}function v(e,n){if(!f||f.request.requestId!==e)return;const{resolve:r}=f;f=null,a(),r(n)}function m(){f&&v(f.request.requestId,null)}function p(e){return d.add(e),()=>{d.delete(e)}}var I=()=>f?.request??null,h=()=>null;function w(){return u(p,I,h)}export{i as MediaPanelProvider,m as cancelPanelPick,c as hasMediaPanel,q as requestPanelPick,v as settlePanelPick,s as useMediaPanel,w as usePanelPick};
@@ -1,49 +1,11 @@
1
1
  import * as react from 'react';
2
2
  import { HTMLAttributes, ReactNode } from 'react';
3
3
  import { P as Place, S as SlotAddress } from '../types-41704JE4.js';
4
+ import { D as DragSession } from '../session-DSQFmIvx.js';
5
+ export { a as DragHeld, c as createDragSession } from '../session-DSQFmIvx.js';
4
6
  import { C as CanvasTarget$1 } from '../watch-BTYOJpQU.js';
5
7
  import { D as DragWords } from '../words-BDignMl_.js';
6
8
 
7
- /**
8
- * The one drag in flight, shared by every surface of an editor — the Layers
9
- * tree, the canvas and the Add list (blueprint step 3.2).
10
- *
11
- * Native drag-and-drop does not let a drop target read what is being dragged
12
- * until the drop itself (the data is sealed during `dragover`), and a tree that
13
- * only knows about drags it started cannot take a block from the Add list. So
14
- * the surface that starts a drag writes it here and every surface reads it: a
15
- * block picked up on the canvas can land in the tree, a tile from the Add list
16
- * on either.
17
- *
18
- * `from` is where the thing sits now — absent for something new (an Add tile),
19
- * which is also why a new thing can never be a no-op drop.
20
- */
21
-
22
- type DragHeld<I> = {
23
- /** The identity `keyOf` gave it — which row or box is the one being dragged. */
24
- key: string;
25
- item: I;
26
- /** Where it sits now. Absent: it is new, from the Add list. */
27
- from?: Place;
28
- };
29
- type DragSession<I> = {
30
- /** The drag in flight, current at once (for event handlers). */
31
- get: () => DragHeld<I> | null;
32
- /** The drag as last TOLD to subscribers (for rendering — see below). */
33
- shown: () => DragHeld<I> | null;
34
- start: (held: DragHeld<I>) => void;
35
- end: () => void;
36
- subscribe: (listener: () => void) => () => void;
37
- };
38
- /**
39
- * `get()` is current the moment a drag starts — the drop targets read it on
40
- * their first `dragover`. SUBSCRIBERS hear about a start one tick later: the
41
- * browser takes the drag picture when the `dragstart` handlers return, and a
42
- * render in between (a row dimming, the handle hiding) would be in the picture.
43
- * An end is told at once.
44
- */
45
- declare function createDragSession<I>(): DragSession<I>;
46
-
47
9
  /**
48
10
  * Where a drop lands — the engine's one hit rule, as pure functions (blueprint
49
11
  * step 3.1).
@@ -467,4 +429,4 @@ declare function frameScrollBox(doc: Document): HTMLElement | null;
467
429
  */
468
430
  declare function startAutoScroll(box: HTMLElement, edges?: Element): () => void;
469
431
 
470
- export { AUTO_SCROLL_EDGE, AUTO_SCROLL_MAX_SPEED, type AddGroup, AddPanel, type AddPanelProps, type AddTile, type Box, CanvasDragLayer, type CanvasDragLayerProps, type CanvasDragModel, type CanvasTarget as CanvasDropTarget, type CanvasSeam, type CanvasSource, type CanvasZone, type DragHeld, type DragSession, DragWords, type DropRow, type DropSide, type DropSpot, EMPTY_MEASURE, HANDLE_GRACE_MS, type MeasuredCanvas, type MeasuredNode, type TreeDrag, type TreeDragOptions, type TreeDragRowOptions, type TreeDragRowProps, type TreeDragSeamOptions, type TreeDragSeamProps, autoScrollDelta, autoScrollSpeed, canvasTarget, contains, createDragSession, dropEffectFor, dropOnRow, frameScrollBox, gapInZone, gapLine, gapToMoveIndex, isNoOpDrop, measureCanvas, pickSource, scrollBoxOf, scrollParent, seamsBetween, startAutoScroll, stepGap, useTreeDrag };
432
+ export { AUTO_SCROLL_EDGE, AUTO_SCROLL_MAX_SPEED, type AddGroup, AddPanel, type AddPanelProps, type AddTile, type Box, CanvasDragLayer, type CanvasDragLayerProps, type CanvasDragModel, type CanvasTarget as CanvasDropTarget, type CanvasSeam, type CanvasSource, type CanvasZone, DragSession, DragWords, type DropRow, type DropSide, type DropSpot, EMPTY_MEASURE, HANDLE_GRACE_MS, type MeasuredCanvas, type MeasuredNode, type TreeDrag, type TreeDragOptions, type TreeDragRowOptions, type TreeDragRowProps, type TreeDragSeamOptions, type TreeDragSeamProps, autoScrollDelta, autoScrollSpeed, canvasTarget, contains, dropEffectFor, dropOnRow, frameScrollBox, gapInZone, gapLine, gapToMoveIndex, isNoOpDrop, measureCanvas, pickSource, scrollBoxOf, scrollParent, seamsBetween, startAutoScroll, stepGap, useTreeDrag };
@@ -1,18 +1 @@
1
- import{DEFAULT_DRAG_WORDS as e}from"../chunk-O2NLQBFX.js";import{dropEffectFor as t,scrollBoxOf as n,frameScrollBox as l,startAutoScroll as r,isNoOpDrop as a}from"../chunk-67GNT6PF.js";export{AUTO_SCROLL_EDGE,AUTO_SCROLL_MAX_SPEED,autoScrollDelta,autoScrollSpeed,createDragSession,dropEffectFor,dropOnRow,frameScrollBox,gapToMoveIndex,isNoOpDrop,scrollBoxOf,scrollParent,startAutoScroll,stepGap,useTreeDrag}from"../chunk-67GNT6PF.js";import{useCanvasLayout as o,useCanvasEvent as s}from"../chunk-PAELDYYS.js";import{framePointToHost as i,elementScale as c,frameRectToLayer as d,clientPointToLayer as u}from"../chunk-ZNCEOSXO.js";import{CloseIcon as h,SearchIcon as p}from"../chunk-L5KW4HG5.js";import{parseZoneKey as f}from"../chunk-KRXQM65X.js";import"../chunk-NKB3KVAB.js";import{useRef as m,useEffect as g,useState as b,useCallback as y,useMemo as v,useSyncExternalStore as x,useId as k,useLayoutEffect as w}from"react";import{jsxs as N,jsx as D}from"react/jsx-runtime";var A=(e,t,n)=>t>=e.left&&t<=e.left+e.width&&n>=e.top&&n<=e.top+e.height,S=e=>e.width*e.height;function T(e,t,n){let l=null;for(const r of e)A(r.box,t,n)&&(!l||S(r.box)<=S(l.box))&&(l=r);return l}function z(e,t,n){const l="x"===e.axis?t:n;let r=0;for(const t of e.children){l>("x"===e.axis?t.left+t.width/2:t.top+t.height/2)&&(r+=1)}return r}function E(e,t){const n=e.children;if("x"===e.axis){const l=n[t-1],r=n[t],a=l&&r?(l.left+l.width+r.left)/2:l?l.left+l.width:r?r.left:e.box.left,o=r??l??e.box;return{left:a-1,top:o.top,width:2,height:o.height}}const l=n[t-1],r=n[t],a=l&&r?(l.top+l.height+r.top)/2:l?l.top+l.height:r?r.top:e.box.top;return{left:e.box.left,top:a-1,width:e.box.width,height:2}}function C(e,t,n,l,r=()=>!1,a=()=>!0){const o=e.filter(e=>A(e.box,t,n)).sort((e,t)=>S(e.box)-S(t.box));for(const e of o){const o=z(e,t,n),s={...e.list,index:o};if(r(s))return null;if(l(s))return{zone:e,to:s,line:E(e,o)};if(!a(s))return null}return null}function L(e,t=e.key){const n=[];for(let l=1;l<e.children.length;l++){const r=e.children[l-1],a=e.children[l],o=r.top+r.height;n.push({key:`${t}:${l}`,place:{...e.list,index:l},box:{left:e.box.left,top:o,width:e.box.width,height:Math.max(a.top-o,0)}})}return n}var O={nodes:[],zones:[]},j="data-puck-dropzone",B="data-puck-component";function K(e,t){if(e.length>=2){const[t,n]=e;return Math.abs(n.top-t.top)<Math.min(t.height,n.height)/2&&n.left>t.left?"x":"y"}const n=t.ownerDocument.defaultView?.getComputedStyle(t);return n&&n.display.includes("flex")&&n.flexDirection.startsWith("row")?"x":"y"}function M(e,t){const{frame:n,document:l}=e,r=e=>d(n,function(e){const t=e.getBoundingClientRect();return{left:t.left,top:t.top,width:t.width,height:t.height}}(e),t),a=[],o=[];for(const e of l.querySelectorAll(`[${j}]`)){const t=e.getAttribute(j)??"";let n;try{n=f(t)}catch{continue}const l=[...e.querySelectorAll(`[${B}]`)].filter(t=>t.parentElement?.closest(`[${j}]`)===e),s=l.map(r);o.push({key:t,list:n,box:r(e),axis:K(s,e),children:s}),l.forEach((e,t)=>{const l=e.getAttribute(B);l&&a.push({id:l,place:{...n,index:t},box:s[t]})})}return{nodes:a,zones:o}}var $="data-es-empty-cell",P="data-puck-dropzone",X=140;var R=e=>({left:e.left,top:e.top,width:e.width,height:e.height});function q(d){const{canvas:h,session:p,readOnly:f,words:k=e.canvas}=d,A=m(d);g(()=>{A.current=d});const S=m(null),z=o(h),[E,L]=b(0),j=y(()=>L(e=>e+1),[]),[B,K]=b(O);g(()=>{const e=S.current;h&&e&&K((A.current.measure??M)(h,e))},[h,z,d.revision,E]);const X=d.model,q=v(()=>X(B),[X,B]),F=x(p.subscribe,p.shown,p.shown),[G,_]=b(null),[Y,Z]=b(null),I=m(null),Q=()=>{I.current&&clearTimeout(I.current),I.current=null},U=()=>{Q(),I.current=setTimeout(()=>{p.get()||_(null)},140)};g(()=>Q,[]);const V=m(null);s(h,"mousemove",e=>{const t=S.current;if(!h||!t)return;const n=i(h.frame,e.clientX,e.clientY,t),l=c(t),r={x:n.x/l,y:n.y/l};if(V.current=r,A.current.readOnly||p.get())return;Q();const a=T(q.sources,r.x,r.y);_(e=>e?.key===a?.key&&e?.box===a?.box?e:a)}),s(h,"mouseout",e=>{e.relatedTarget||(V.current=null,U())}),s(h,"mouseover",e=>{e.relatedTarget||j()});const W=m(null),H=y(()=>{W.current?.(),W.current=null,Z(null)},[]);g(()=>p.subscribe(()=>{p.get()?j():H()}),[p,H,j]),g(()=>H,[H]),("undefined"==typeof document?g:w)(()=>{if(p.get())return;const e=V.current;_(t=>f?null:e?T(q.sources,e.x,e.y):t?q.sources.find(e=>e.key===t.key)??null:null)},[q,F,p,f]);const J=e=>{const t=p.get(),n=S.current;if(!t||!n)return null;const l=u(n,e.clientX,e.clientY);V.current=l;const r=C(q.zones,l.x,l.y,e=>A.current.canDrop(t.item,e),e=>!!t.from&&a(t.from,e),e=>A.current.fallThrough?.(t.item,e,t.from)??!0);return r?{h:t,t:r}:null},ee={onDragEnter:e=>{if(W.current)return;const t=n(e.currentTarget.parentElement?.parentElement??null),a=h?l(h.document):null,o=[];t&&o.push(r(t)),a&&h&&o.push(r(a,h.frame)),W.current=o.length?()=>o.forEach(e=>e()):null},onDragOver:e=>{const n=J(e);if(!n)return void Z(null);e.preventDefault(),e.dataTransfer.dropEffect=t(e.dataTransfer.effectAllowed);const l={zoneKey:n.t.zone.key,line:n.t.line,axis:n.t.zone.axis};Z(e=>e&&e.zoneKey===l.zoneKey&&e.line.left===l.line.left&&e.line.top===l.line.top?e:l)},onDragLeave:e=>{const t=e.relatedTarget;t&&e.currentTarget.contains(t)||(V.current=null,Z(null))},onDrop:e=>{const t=J(e);t&&(e.preventDefault(),p.end(),H(),A.current.onDrop(t.h.item,t.t.to))}},te={draggable:!f&&!!G,onMouseEnter:Q,onMouseLeave:()=>!p.get()&&U(),onDragStart:e=>{if(G&&!f){p.start({key:G.key,item:G.item,from:G.from}),e.dataTransfer.effectAllowed="move";try{e.dataTransfer.setData("text/plain",G.key)}catch{}}else e.preventDefault()},onDragEnd:()=>{p.end(),H()},onClick:()=>{G&&!f&&A.current.onPick?.(G.item)}},{seams:ne=[]}=q,le=q.zones.filter(e=>0===e.children.length),re=d.onZoneAdd&&!f?le:[],ae=re.map(e=>e.key).join("\n");return g(()=>{const e=h?.document;if(!e)return;const t=new Set(ae?ae.split("\n"):[]);for(const n of e.querySelectorAll(`[${P}]`))n.toggleAttribute($,t.has(n.getAttribute(P)??""));return()=>{for(const t of e.querySelectorAll(`[${$}]`))t.removeAttribute($)}},[h,ae,B,z,E]),/* @__PURE__ */N("div",{ref:S,className:"es-canvas-layer",children:[F||!d.onSeamAdd||f?null:ne.map(e=>/* @__PURE__ */D("div",{className:"es-canvas-seam",style:{left:e.box.left,top:e.box.top+e.box.height/2-8,width:e.box.width,height:16},children:/* @__PURE__ */D("button",{type:"button",className:"es-canvas-seam-add",onClick:()=>d.onSeamAdd?.(e.place),children:k.addButton({label:d.seamLabel??k.addSection})})},e.key)),re.length?re.map(e=>/* @__PURE__ */D("button",{type:"button",className:Y?.zoneKey===e.key?"es-canvas-empty is-over":"es-canvas-empty",style:R(e.box),onClick:()=>d.onZoneAdd?.({...e.list,index:0}),children:/* @__PURE__ */D("span",{className:"es-canvas-empty-add",children:k.addButton({label:d.zoneAddLabel??k.addBlock})})},e.key)):null,F?/* @__PURE__ */D("div",{className:"es-canvas-catch",...ee}):null,Y&&!le.some(e=>e.key===Y.zoneKey)?/* @__PURE__ */D("div",{className:`es-canvas-line is-${Y.axis}`,style:R(Y.line)}):null,
2
- /* @__PURE__ */N("div",{className:["es-canvas-handle",G&&!f?"is-shown":"",F?"is-dragging":""].filter(Boolean).join(" "),style:G?{left:G.box.left+2,top:Math.max(G.box.top-11,0)}:void 0,title:G?G.title??k.handle({label:G.label}):void 0,...te,children:[
3
- /* @__PURE__ */D("span",{className:"es-canvas-grip","aria-hidden":"true",children:"⋮⋮"}),G?.label]})]})}var F=e=>e.tiles.length>0&&e.tiles.every(e=>null!=e.cover);function G({groups:t,session:n,itemFor:l,onInsert:r,at:a,hint:o,searchLabel:s,readOnly:i,words:c=e.add}){const d=o??c.hint,u=s??c.search,[f,m]=b(""),g=k(),y=f.trim().toLowerCase(),v=t.map(e=>({...e,tiles:y?e.tiles.filter(e=>((e,t)=>e.label.toLowerCase().includes(t)||(e.keywords??[]).some(e=>e.toLowerCase().includes(t)))(e,y)):e.tiles})).filter(e=>e.tiles.length>0),x=(e,t)=>r=>{if(t)r.preventDefault();else{n.start({key:`new:${e}`,item:l(e)}),r.dataTransfer.effectAllowed="copy";try{r.dataTransfer.setData("text/plain",e)}catch{}}};/* @__PURE__ */
4
- return N("div",{className:"es-add",children:[a?/* @__PURE__ */N("div",{className:"es-add-at",role:"status",children:[
5
- /* @__PURE__ */D("span",{children:a.label}),
6
- /* @__PURE__ */D("button",{type:"button",className:"es-add-at-clear","aria-label":c.stop,title:c.stop,onClick:a.onClear,children:/* @__PURE__ */D(h,{size:12,"aria-hidden":"true"})})]}):null,
7
- /* @__PURE__ */D("p",{className:"es-add-hint",children:d}),
8
- /* @__PURE__ */N("div",{className:"es-add-search",children:[
9
- /* @__PURE__ */D(p,{size:16,"aria-hidden":"true"}),
10
- /* @__PURE__ */D("input",{id:g,type:"search","aria-label":u,placeholder:c.searchPlaceholder({label:u}),value:f,onChange:e=>m(e.target.value)}),f?/* @__PURE__ */D("button",{type:"button",className:"es-add-search-clear","aria-label":c.clearSearch,onClick:()=>m(""),children:/* @__PURE__ */D(h,{size:12,"aria-hidden":"true"})}):null]}),0===v.length?/* @__PURE__ */N("div",{className:"es-add-empty",role:"status",children:[
11
- /* @__PURE__ */D("div",{className:"es-add-empty-title",children:c.nothing({query:f.trim()})}),
12
- /* @__PURE__ */D("div",{className:"es-add-empty-sub",children:c.tryAnother})]}):v.map(e=>/* @__PURE__ */N("section",{className:"es-add-group","aria-label":e.title,children:[
13
- /* @__PURE__ */N("div",{className:"es-add-group-head",children:[
14
- /* @__PURE__ */D("span",{className:"es-add-group-title",children:e.title}),
15
- /* @__PURE__ */D("span",{className:"es-add-group-count",children:e.tiles.length})]}),
16
- /* @__PURE__ */D("div",{className:F(e)?"es-add-grid is-cards":"es-add-grid",children:e.tiles.map(e=>{const t=Boolean(i||e.disabled),l=i?void 0:e.disabled?e.disabledReason:e.title??c.tile({label:e.label});/* @__PURE__ */
17
- return N("button",{type:"button",className:null!=e.cover?"es-add-tile has-cover":"es-add-tile",draggable:!t,"aria-disabled":t||void 0,"aria-label":c.tile({label:e.label}),title:l,onDragStart:x(e.type,t),onDragEnd:()=>n.end(),onClick:()=>!t&&r(e.type),children:[null!=e.cover?/* @__PURE__ */D("span",{className:"es-add-tile-cover","aria-hidden":"true",children:e.cover}):e.icon?/* @__PURE__ */D("span",{className:"es-add-tile-glyph","aria-hidden":"true",children:e.icon}):null,
18
- /* @__PURE__ */D("span",{className:"es-add-tile-label",children:e.label})]},e.type)})})]},e.title))]})}export{G as AddPanel,q as CanvasDragLayer,O as EMPTY_MEASURE,X as HANDLE_GRACE_MS,C as canvasTarget,A as contains,z as gapInZone,E as gapLine,M as measureCanvas,T as pickSource,L as seamsBetween};
1
+ export{AddPanel,CanvasDragLayer,EMPTY_MEASURE,HANDLE_GRACE_MS,canvasTarget,contains,gapInZone,gapLine,measureCanvas,pickSource,seamsBetween}from"../chunk-TTJ54QGG.js";import"../chunk-O2NLQBFX.js";export{AUTO_SCROLL_EDGE,AUTO_SCROLL_MAX_SPEED,autoScrollDelta,autoScrollSpeed,createDragSession,dropEffectFor,dropOnRow,frameScrollBox,gapToMoveIndex,isNoOpDrop,scrollBoxOf,scrollParent,startAutoScroll,stepGap,useTreeDrag}from"../chunk-67GNT6PF.js";import"../chunk-PAELDYYS.js";import"../chunk-ZNCEOSXO.js";import"../chunk-L5KW4HG5.js";import"../chunk-KRXQM65X.js";import"../chunk-NKB3KVAB.js";