efficient-easel 0.102.0 → 0.104.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 (116) hide show
  1. package/README.md +45 -4
  2. package/dist/chunk-4EUWOGZF.js +1 -0
  3. package/dist/chunk-5D2XAZKH.js +62 -0
  4. package/dist/chunk-7755VWRT.js +4 -0
  5. package/dist/chunk-7GVLSNFW.js +1 -0
  6. package/dist/chunk-A2LFBOUF.js +1 -0
  7. package/dist/chunk-BBRY7KI4.js +10 -0
  8. package/dist/chunk-BVN33R76.js +1 -0
  9. package/dist/chunk-D6324C3E.js +5 -0
  10. package/dist/chunk-ERR437B5.js +1 -0
  11. package/dist/chunk-HMWJB3HF.js +1 -0
  12. package/dist/{chunk-KDYIMJTZ.js → chunk-KCOBHPN6.js} +1 -1
  13. package/dist/chunk-KVNRNDUC.js +1 -0
  14. package/dist/chunk-LEGAPYPC.js +1 -0
  15. package/dist/chunk-LRTIMWZG.js +2 -0
  16. package/dist/chunk-LXEOVUAV.js +1 -0
  17. package/dist/{chunk-D7M6IRPJ.js → chunk-NEQIEYYO.js} +1 -1
  18. package/dist/{chunk-6TZTKAB5.js → chunk-O7Q4DDJT.js} +1 -1
  19. package/dist/chunk-PYNQRX56.js +4 -0
  20. package/dist/chunk-Q2HPBMG5.js +1 -0
  21. package/dist/chunk-QCBWT2XE.js +1 -0
  22. package/dist/{chunk-7MU3RJ6S.js → chunk-QDEZQ5A6.js} +1 -1
  23. package/dist/chunk-QOPY2LQM.js +1 -0
  24. package/dist/{chunk-AKFJK65Z.js → chunk-R2MUSGPS.js} +1 -1
  25. package/dist/chunk-RSCMJIWS.js +1 -0
  26. package/dist/{chunk-E7GGVILG.js → chunk-TTENU2HX.js} +1 -1
  27. package/dist/chunk-UB7JVPK4.js +1 -0
  28. package/dist/{chunk-VLSTGOVD.js → chunk-YODRYAZX.js} +2 -2
  29. package/dist/chunk-Z6BAZFSW.js +2 -0
  30. package/dist/chunk-ZOJEFIP4.js +1 -0
  31. package/dist/{host-B-byaQxg.d.ts → host-DJ8Gzsx7.d.ts} +93 -21
  32. package/dist/screen/components/AddBlockRow.js +1 -1
  33. package/dist/screen/components/AddSidePanel.js +1 -1
  34. package/dist/screen/components/MediaSidePanel.d.ts +3 -2
  35. package/dist/screen/components/MediaSidePanel.js +1 -1
  36. package/dist/screen/components/NodeContextMenu.d.ts +47 -2
  37. package/dist/screen/components/NodeContextMenu.js +1 -1
  38. package/dist/screen/components/PageEditGuardNotices.js +1 -1
  39. package/dist/screen/components/ScreenChrome.js +1 -1
  40. package/dist/screen/components/ScreenDocumentContext.d.ts +2 -1
  41. package/dist/screen/components/ScreenDocumentContext.js +1 -1
  42. package/dist/screen/components/ScreenMount.d.ts +9 -5
  43. package/dist/screen/components/ScreenMount.js +1 -1
  44. package/dist/screen/components/ScreenStoreProvider.d.ts +3 -0
  45. package/dist/screen/components/ScreenStoreProvider.js +1 -1
  46. package/dist/screen/components/SectionScreenShell.js +16 -16
  47. package/dist/screen/components/usePartBridge.d.ts +3 -0
  48. package/dist/screen/components/usePartBridge.js +1 -1
  49. package/dist/screen/index.d.ts +6 -3
  50. package/dist/screen/index.js +1 -1
  51. package/dist/screen/lib/admin-bridge.d.ts +2 -0
  52. package/dist/screen/lib/admin-bridge.js +1 -1
  53. package/dist/screen/lib/backend-error.d.ts +20 -5
  54. package/dist/screen/lib/backend-error.js +1 -1
  55. package/dist/screen/lib/document-addressing.d.ts +2 -1
  56. package/dist/screen/lib/document-contract.d.ts +7 -0
  57. package/dist/screen/lib/failure.d.ts +6 -2
  58. package/dist/screen/lib/failure.js +1 -1
  59. package/dist/screen/lib/host-inbound.js +1 -1
  60. package/dist/screen/lib/host.d.ts +3 -2
  61. package/dist/screen/lib/load-error.d.ts +9 -3
  62. package/dist/screen/lib/load-error.js +1 -1
  63. package/dist/screen/lib/media-panel.d.ts +81 -17
  64. package/dist/screen/lib/media-panel.js +1 -1
  65. package/dist/screen/lib/media-picker.d.ts +14 -2
  66. package/dist/screen/lib/media-picker.js +1 -1
  67. package/dist/screen/lib/page-lock.d.ts +45 -1
  68. package/dist/screen/lib/page-lock.js +1 -1
  69. package/dist/screen/lib/puck/content-tree.d.ts +20 -1
  70. package/dist/screen/lib/puck/content-tree.js +1 -1
  71. package/dist/screen/lib/puck/device-fields.d.ts +4 -2
  72. package/dist/screen/lib/puck/section-doc.js +1 -1
  73. package/dist/screen/lib/puck/slot-child-name.d.ts +18 -3
  74. package/dist/screen/lib/puck/slot-child-name.js +1 -1
  75. package/dist/screen/lib/puck/style-clipboard.js +1 -1
  76. package/dist/screen/lib/puck/use-section-ops.d.ts +6 -0
  77. package/dist/screen/lib/puck/use-section-ops.js +1 -1
  78. package/dist/screen/lib/screen-parts.d.ts +171 -4
  79. package/dist/screen/lib/screen-parts.js +1 -1
  80. package/dist/screen/lib/section-templates.d.ts +25 -1
  81. package/dist/screen/lib/section-templates.js +1 -1
  82. package/dist/screen/lib/session-context.d.ts +5 -1
  83. package/dist/screen/lib/session-context.js +1 -1
  84. package/dist/screen/lib/session.d.ts +58 -5
  85. package/dist/screen/lib/session.js +1 -1
  86. package/dist/screen/screen.css +14 -0
  87. package/dist/screen/words.d.ts +65 -0
  88. package/dist/screen/words.js +1 -0
  89. package/dist/strings/catalogue.d.ts +9 -2
  90. package/dist/strings/catalogue.js +1 -1
  91. package/dist/strings/index.d.ts +1 -0
  92. package/dist/strings/index.js +1 -1
  93. package/dist/tree/index.d.ts +4 -142
  94. package/dist/types-DJDBtdB2.d.ts +143 -0
  95. package/package.json +6 -1
  96. package/dist/chunk-3U4GP5VA.js +0 -10
  97. package/dist/chunk-5464H65G.js +0 -4
  98. package/dist/chunk-6FY3PZS3.js +0 -1
  99. package/dist/chunk-7RNTMJER.js +0 -5
  100. package/dist/chunk-A7ZJII7O.js +0 -1
  101. package/dist/chunk-AJBJ74ME.js +0 -1
  102. package/dist/chunk-AKZWUV5Z.js +0 -1
  103. package/dist/chunk-F2FPZIZV.js +0 -62
  104. package/dist/chunk-F6CCTEIX.js +0 -1
  105. package/dist/chunk-FT35FX7D.js +0 -2
  106. package/dist/chunk-FUDHI5I4.js +0 -1
  107. package/dist/chunk-HMX55DYT.js +0 -1
  108. package/dist/chunk-HWW4XJOH.js +0 -1
  109. package/dist/chunk-J4RAY75C.js +0 -1
  110. package/dist/chunk-PP44LCJM.js +0 -1
  111. package/dist/chunk-Q3SQBNJB.js +0 -1
  112. package/dist/chunk-TEZ6V6PA.js +0 -4
  113. package/dist/chunk-UH7TGWHR.js +0 -1
  114. package/dist/chunk-UVWVYMMZ.js +0 -1
  115. package/dist/chunk-VV5ADNBR.js +0 -1
  116. package/dist/chunk-ZZ7VLIHQ.js +0 -1
package/README.md CHANGED
@@ -977,6 +977,45 @@ second editor (the campaign designer) can stand on it. A host hands it:
977
977
  - **its backend and its block registry**, on the session
978
978
  (`createEaselSession`, `screen/lib/session`).
979
979
 
980
+ A host whose documents are not a website's (0.103.0) points the screen at
981
+ one of its own: `ScreenMount`'s `target` is `{ kind: "document", record,
982
+ slug? }` (`DocumentTarget`), and its `addressing` is a
983
+ `DocumentAddressing<DocumentTarget>`, which may also say what a missing one
984
+ is called (`describeMissing`) and hear that one would not open
985
+ (`onLoadFailed`). A document the backend resolves with a `readOnlyReason` is
986
+ held read-only for good, and the save pill's place says why. The top bar's
987
+ main button is the layer's when its bridges hand one back (`barMain`), and
988
+ the save pill is no switch under `saveSwitch: false`. The words the screen
989
+ says while a document opens, or will not, and the edit notice's word for the
990
+ document are the `screen` group of `EaselStrings`. A field's media pick may
991
+ carry the field's own terms to the host's panel (`options`) and give way to a
992
+ change of selection (`pickFollowsSelection`), and a block may be resolved as
993
+ it goes in (`blockRules.resolveOnInsert`). Each is optional: without it the
994
+ screen is the website's, as it was.
995
+
996
+ Two screens may be mounted in one page (0.103.0): the second host's session
997
+ is made with `claimsPage: false`, so it never becomes the page's current
998
+ session (the website's loaders and client keep reading the website's), holds
999
+ a block clipboard of its own registry's, and may bring its own default
1000
+ backend (`defaultBackend`) and its own reading of its client's errors
1001
+ (`hostFailures`). Each `MediaPanelProvider` keeps its own pending pick, found
1002
+ by the host a field asks through; the Add panel lists its own session's saved
1003
+ sections.
1004
+
1005
+ Its Layers tree is the layer's to frame (0.103.0). `pinned.isFirst` and
1006
+ `isLast` say which node is pinned where the type alone does not (the campaign
1007
+ designer's Header and Footer are sections, told apart by `_region`);
1008
+ `pinned.firstRow: "node"` draws the first pinned node with its children, as
1009
+ the Footer is drawn; `pinned.band` names the sections between the pins, folds
1010
+ them under a row of their own and ends them with an "Add section" row; and
1011
+ `useDocumentLabel` is the head's context line. A row's name, its quieter
1012
+ words, its marks and buttons of the layer's own are `blockLook.rowName`,
1013
+ `rowPreview`, `rowMarks` and `rowActions`. A block config's
1014
+ `permissions.delete` / `duplicate` set to `false` takes the action off the
1015
+ block's rows and its menu, and the inspector is handed the answer for its
1016
+ head (`nodeActions`). The frame's words (Page settings, the pinned labels,
1017
+ the band's) are `screen` words too.
1018
+
980
1019
  - **Every module is a subpath of its own** (`efficient-easel/screen/lib/session`,
981
1020
  `efficient-easel/screen/components/ScreenChrome`): hosts and their guards
982
1021
  import them one by one, and two export different types under one name.
@@ -984,10 +1023,12 @@ second editor (the campaign designer) can stand on it. A host hands it:
984
1023
  folder, never written down: `scripts/sync-screen-exports.mjs` writes the
985
1024
  `exports` map from it and `tests/screen-exports.test.ts` fails one that
986
1025
  drifted.
987
- - **It still writes out some of the website it came from** (a target's site
988
- and template, the pinned Header and Footer rows, the
989
- `storefront-editor:` host messages). Each is handed in as the campaign
990
- designer needs it; the list is in the builder's `doc/adr/0004`.
1026
+ - **It still writes out some of the website it came from** (a website
1027
+ target's site and template, the `storefront-editor:` host messages). Each
1028
+ is handed in as the campaign designer needs it; the list is in the
1029
+ builder's `doc/adr/0004`. A host's own document target is the first to have
1030
+ left it, and the frame of the pinned Header and Footer rows the second
1031
+ (0.103.0).
991
1032
  - **Its classes keep their `sf-` names** and its strings their words: the
992
1033
  hosts' sheets, their guards and the website's host address them.
993
1034
 
@@ -0,0 +1 @@
1
+ import{readHostFailure as e,isBackendError as n,STATUS_UNREACHABLE as s}from"./chunk-KCOBHPN6.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,o){const c=e(s,o);if(c)return{status:c.status,data:c.data};if(!n(s))return null;const u=e(s.cause,o);if(u)return{status:u.status,data:u.data};const r=d[s.kind];return"changed-elsewhere"===s.kind?{status:r,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:r,data:{code:t,holder_name:s.holder?.name??"",seconds_since_seen:s.holder?.secondsSinceSeen??0,seconds_since_held:s.holder?.secondsSinceHeld??0}}:{status:r,data:null}}function c(e,n){return 401===o(e,n)?.status}export{a as PAGE_CONFLICT_CODE,c as isExpiredSession,o as readEaselFailure};
@@ -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-R2MUSGPS.js";import{rootRowName as c,slotChildRowName as a,slotChildRenameProp as p}from"./chunk-QOPY2LQM.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 v}from"./chunk-SERF2FAU.js";import{usePartBridge as w}from"./chunk-TTENU2HX.js";import{useSectionOps as x}from"./chunk-A2LFBOUF.js";import{useNodeClipboard as z,useNodeContextMenu as C}from"./chunk-HMWJB3HF.js";import{ROOT_ZONE as N,blockNodeActions as B,TREE_MAX_DEPTH as A,childSlotsOf as P,slotFieldsOf as T,nestsInTree as O,newNodeId as $}from"./chunk-7GVLSNFW.js";import{PageEditGuardNotices as R}from"./chunk-LXEOVUAV.js";import{useScreenDocument as j}from"./chunk-LRTIMWZG.js";import{requestMediaPick as M}from"./chunk-UB7JVPK4.js";import{heldStyle as E,styleShortcut as L}from"./chunk-57DJOKXT.js";import{AddChildRow as I}from"./chunk-3QVB4AG2.js";import{AddSidePanel as V}from"./chunk-D6324C3E.js";import{SidePanelHead as F,PanelShowStrip as D}from"./chunk-IWAPPEL4.js";import{MediaSidePanel as H}from"./chunk-PYNQRX56.js";import{useScreenSaveSwitch as G,useScreenPinned as U,useScreenDocumentLabel as W,useScreenCanvasFrame as J,useScreenInspectorPanel as Q,useScreenDevices as Y,useScreenPickFollowsSelection as X,useScreenLeftView as Z,SELECTION_MODE as _,sameInspectorMode as q,useScreenBridges as K,useScreenBlockRules as ee,useScreenBlockLook as ne,useScreenDocumentPass as te,isPinnedFirst as oe,isPinnedLast as re}from"./chunk-7755VWRT.js";import{useMediaPanel as ie,usePanelPick as le,useCancelPanelPick as se}from"./chunk-Z6BAZFSW.js";import{useEaselHost as de}from"./chunk-R5ZVNJLJ.js";import{DEFAULT_SCREEN_WORDS as ce}from"./chunk-LEGAPYPC.js";import{useEasel as ae}from"./chunk-P67FP7PG.js";import{TreeRow as pe,Subtree as ue,LayersTree as fe,TreeGroupLabel as he,TreeRowAction as me,TreeSeam as ye}from"./chunk-ZFDCDJNZ.js";import{useNodeOps as ge,toItemSelector as ke}from"./chunk-D2BCHTQR.js";import{saveIndicator as Se}from"./chunk-H6DDIBQ4.js";import{EaselTopBar as be,TopBarRail as ve,TopBarCluster as we,EaselIconButton as xe,TopBarDivider as ze,DeviceSwitch as Ce,InspectorIconButton as Ne,PanelResizeHandle as Be,MAX_PANEL_W as Ae,MIN_PANEL_W as Pe,panelWidthVars as Te,SaveState as Oe,SaveStateToggle as $e}from"./chunk-6DJHRLCU.js";import{useWords as Re}from"./chunk-MFIRYGHW.js";import{CanvasDragLayer as je}from"./chunk-TTJ54QGG.js";import{createDragSession as Me,useTreeDrag as Ee,gapToMoveIndex as Le}from"./chunk-67GNT6PF.js";import{useCanvasFrame as Ie,BLOCK_SELECTOR as Ve,useCanvasEvent as Fe}from"./chunk-PAELDYYS.js";import{LayersIcon as De,UndoIcon as He,RedoIcon as Ge,TrashIcon as Ue,MediaIcon as We}from"./chunk-L5KW4HG5.js";import{ROOT_ID as Je,ROOT_SLOT as Qe,zoneKey as Ye,parseZoneKey as Xe,DataError as Ze}from"./chunk-KRXQM65X.js";import{useRef as _e,useMemo as qe,useState as Ke,useEffect as en,useCallback as nn,useLayoutEffect as tn,Fragment as on}from"react";import{jsx as rn,jsxs as ln,Fragment as sn}from"react/jsx-runtime";function dn({saveState:e,notSaving:n,readOnlyReason:t,toggle:o,onToggle:r,onRetry:i}){if(null!==t)/* @__PURE__ */return rn(Oe,{tone:"off",label:t,role:"status"});if(n)/* @__PURE__ */
2
+ return rn(Oe,{tone:e.pending?"off-unsaved":"off",label:"Not saving — see the notice above",role:"status"});const{tone:l,label:s}=Se(e),d=e.failed&&!e.paused&&/* @__PURE__ */rn("button",{type:"button",className:"es-btn-ghost",onClick:i,children:"Retry now"});/* @__PURE__ */
3
+ return ln(sn,o?{children:[
4
+ /* @__PURE__ */rn($e,{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__ */rn(Oe,{tone:l,label:s})}),d]}:{children:[
5
+ /* @__PURE__ */rn(Oe,{tone:l,label:s,role:"status"}),d]})}function cn({expand:e}){/* @__PURE__ */
6
+ return rn("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.9,strokeLinecap:"round",strokeLinejoin:"round",children:/* @__PURE__ */ln(sn,e?{children:[
7
+ /* @__PURE__ */rn("path",{d:"M8 9l4-4 4 4"}),
8
+ /* @__PURE__ */rn("path",{d:"M8 15l4 4 4-4"})]}:{children:[
9
+ /* @__PURE__ */rn("path",{d:"M8 4l4 4 4-4"}),
10
+ /* @__PURE__ */rn("path",{d:"M8 20l4-4 4 4"}),
11
+ /* @__PURE__ */rn("path",{d:"M5 12h14"})]})})}var an="screen:band",pn={duplicate:!0,delete:!0};function un(){const Se=de(),{capabilities:Oe,currentSlug:$e,siteId:un,onPublish:fn,saveState:hn,saveConflict:mn,retrySave:yn,toggleAutoSave:gn,readOnly:kn,readOnlyReason:Sn=null}=j(),bn=G(),{canPublish:vn,mediaEditing:wn,hasEditGuard:xn,hasPinnedChrome:zn}=Oe,{appState:Cn,dispatch:Nn,history:Bn,selectedItem:An,getSelectorForId:Pn,config:Tn}=ae(e=>e),On=U(),{first:$n,firstGroup:Rn,lastGroup:jn,isSectionGroup:Mn,sectionGroupZone:En,panelOf:Ln}=On,In=Ln($n),Vn=e=>oe(On,e),Fn=e=>re(On,e),Dn="node"===On.firstRow,Hn=On.band??null,Gn=Re("screen",ce),Un=W()??`/${$e}`,Wn=J(),Jn=Q(),Qn=x({readOnly:kn}),Yn=_e(null),Xn=qe(()=>({...Qn,select:e=>{Yn.current=e,Qn.select(e)}}),[Qn]),Zn=Cn.ui,_n=Zn.leftSideBarVisible,qn=Zn.rightSideBarVisible,{options:Kn,widths:et,initial:nt,fluid:tt}=Y(),[ot,rt]=Ke(nt),it=ie(),lt=wn&&null!==it,st=le(),dt=se();X(An?.props.id);const{read:ct,write:at,forSelection:pt}=Z(),[ut,ft]=Ke(ct);en(()=>{at(ut)},[ut]);const[ht,mt]=Ke(0),yt=_e(null),gt=_e(null),kt=Ie(gt,{readySelector:Ve}),St=m(gt);y(gt);const[bt,vt]=Ke(!1),wt=_e(!1),xt=_e(!1),[zt,Ct]=Ke(null),Nt=zt&&zt.zone===N?zt.index:null,Bt=e=>Ct(null===e?null:{zone:N,index:e}),[At,Pt]=Ke([]),[Tt,Ot]=Ke(_),$t="puck"===Tt.kind,Rt=i(Tt,An?.props.id),[jt,Mt]=Ke(null);en(()=>{jt&&(l(),Mt(null))},[jt]);const Et=_e(Pn);Et.current=Pn;const Lt=nn((e,{scroll:n})=>{ft(n=>pt(e,n)),n&&Mt(e);const t=[];let o=e;for(let e=0;e<4;e++){const e=Et.current(o)?.zone;if(!e||!e.includes(":"))break;const n=e.split(":")[0];t.push(n),o=n}0!==t.length&&lo(e=>{if(t.every(n=>!e.has(n)))return e;const n=new Set(e);return t.forEach(e=>n.delete(e)),n})},[]);en(()=>{Ot(Ln(An?.type)??_);const e=An?.props.id,n=Yn.current;if(Yn.current=null,!e)return;const t=Pn(e);Lt(String(e),{scroll:!s(n,t??null,N)})},[An?.props.id,Lt]);const It=nn(e=>{Ot(n=>q(n,e)?n:e),Nn({type:"setUi",ui:{rightSideBarVisible:!0}})},[Nn]),Vt=K({kind:Tt.kind,mode:Tt,open:It,show:e=>Ot(e),reveal:()=>{qn||Nn({type:"setUi",ui:{rightSideBarVisible:!0}})}},{data:Cn.data,selected:An??null,zoneOf:e=>Pn(e)?.zone,readOnly:Boolean(kn),select:e=>{Ot(_),Xn.select({index:e})},replace:(e,n)=>Xn.replaceComponent(N,e,n),scrollTo:e=>fr(e)},{device:ot,refreshes:ht},{setView:ft,reveal:()=>{_n||Nn({type:"setUi",ui:{leftSideBarVisible:!0}})}}),Ft=Vt.pinnedSource??!1,Dt=Vt.resolveLeftView?Vt.resolveLeftView(ut,lt):"media"===ut&&lt?ut:"sections",{isLockedBlock:Ht,duplicateBlocked:Gt,nestDepth:Ut,newSectionNode:Wt,canAddTo:Jt,blockIsOffered:Qt}=ee(),Yt=ne(),{labelAtLevel:Xt,Icon:Zt,useProducts:_t}=Yt,qt=Yt.rowName?(e,n,t)=>Yt.rowName(e,n,t):void 0,Kt=nn(e=>{Nn({type:"setUi",ui:{rightSideBarVisible:!0}}),u(e),Lt(e,{scroll:!0})},[Nn,Lt]),{selectNode:eo,openPartId:no}=w({mode:Tt,setMode:Ot,onOpenPart:Kt}),[to,oo]=Ke(null),ro="sf-editor-collapsed-sections",[io,lo]=Ke(()=>{if("undefined"==typeof window)/* @__PURE__ */return new Set;try{const e=window.localStorage.getItem(ro);return new Set(e?JSON.parse(e):[])}catch{/* @__PURE__ */
12
+ return new Set}});en(()=>{try{window.localStorage.setItem(ro,JSON.stringify([...io]))}catch{}},[io]);const[so,co]=Ke(()=>{if("undefined"==typeof window)return{...S};try{const e=window.localStorage.getItem(b);if(!e)return{...S};const n=JSON.parse(e);return{left:v(Number(n.left)||S.left),right:v(Number(n.right)||S.right)}}catch{return{...S}}});en(()=>{const e=setTimeout(()=>{try{window.localStorage.setItem(b,JSON.stringify(so))}catch{}},300);return()=>clearTimeout(e)},[so]);const ao=nn((e,n)=>co(t=>{const o="function"==typeof n?n(t[e]):n;return t[e]===o?t:{...t,[e]:o}}),[]),po=nn(e=>ao("left",e),[ao]),uo=nn(e=>ao("right",e),[ao]),fo=e=>io.has(e),ho=e=>lo(n=>{const t=new Set(n);return t.has(e)?t.delete(e):t.add(e),t}),mo=_e(!1),yo=_e(null);en(()=>{if(mo.current&&!bt){const e=yo.current,n=e&&e.isConnected&&!e.closest('[aria-hidden="true"]')?e:null;(n??gt.current?.querySelector('button[aria-label="Add"]'))?.focus(),yo.current=null}mo.current=bt},[bt]),en(()=>{if(!bt||!St)return;const e=e=>{"Escape"===e.key&&wr()};return St.addEventListener("keydown",e),()=>St.removeEventListener("keydown",e)},[bt,St]),en(()=>{!_n&&bt&&(vt(!1),Ct(null),wt.current=!1)},[_n]),en(()=>{if(!st)return xt.current&&Nn({type:"setUi",ui:{leftSideBarVisible:!1}}),void(xt.current=!1);bt&&(vt(!1),Ct(null),xt.current=wt.current,wt.current=!1),_n||(xt.current=!0,Nn({type:"setUi",ui:{leftSideBarVisible:!0}}))},[st]),en(()=>{!_n&&st&&(xt.current=!1,dt())},[_n]),en(()=>{if(!st||!St)return;const e=e=>{"Escape"===e.key&&dt()};return St.addEventListener("keydown",e),()=>St.removeEventListener("keydown",e)},[st,St]);const[go,ko]=Ke(null),[So,bo]=Ke(0),vo=_e(null),wo=(e,n="success")=>{ko({msg:e,tone:n}),bo(e=>e+1),vo.current&&clearTimeout(vo.current),vo.current=setTimeout(()=>ko(null),"error"===n?3200:1900)};en(()=>()=>{vo.current&&clearTimeout(vo.current)},[]);const xo=_e(null),[zo,Co]=Ke(0),[No,Bo]=Ke(0);en(()=>{const e=xo.current;if(!e)return;const n=()=>{Co(e.clientWidth),Bo(e.clientHeight)};n();const t=new ResizeObserver(n);return t.observe(e),()=>t.disconnect()},[]),tn(()=>{xo.current&&(Co(xo.current.clientWidth),Bo(xo.current.clientHeight))},[so,_n,qn]);const Ao=ot===tt?zo>0?zo:et[tt]:et[ot],Po=zo>0?Math.min(zo/Ao,2):1,To=Ao*Po,Oo=zo>0&&To>zo+1,$o={width:To,height:No||"100%",flex:"none",position:"relative"},Ro={width:Ao,height:No?No/Po:"100%",maxHeight:"none",transform:1!==Po?`scale(${Po})`:void 0,transformOrigin:"top left"},jo=()=>Nn({type:"setUi",ui:{leftSideBarVisible:!_n}}),Mo=()=>Nn({type:"setUi",ui:{rightSideBarVisible:!qn}}),Eo=e=>{bt&&(vt(!1),Ct(null),wt.current=!1,_n&&ut===e)||st&&(xt.current=!1,dt(),_n&&ut===e)||(_n&&ut===e?jo():(ft(e),_n||Nn({type:"setUi",ui:{leftSideBarVisible:!0}})))},Lo=()=>{M(Se,{accept:"image/*",title:"Media library"})},Io=()=>{Ot(_),Xn.select(null),h()},Vo=()=>{Ot(In??_),qn||Nn({type:"setUi",ui:{rightSideBarVisible:!0}})},Fo=Cn.data.content??[],Do=()=>{const e=Fo.findIndex(Vn),n=Fo.findIndex(Fn);return{floor:e>=0?e+1:0,cap:n>=0?n:Fo.length}},Ho=Tn,Go=z(),Uo=ge({data:Cn.data,config:Ho,readOnly:Boolean(kn),clipboard:Go,afterRemove:"none",stepBounds:(e,n)=>{if(e.parentId!==Je||e.slot!==Qe)return{min:0,max:n-1};const{floor:t,cap:o}=Do();return{min:t,max:o-1}},commit:(e,{select:n})=>{if(void 0!==n){Ot(_);const t="node"===n?.kind?ke(e,Ho,n):null;Xn.select(t&&t.zone===N?{index:t.index}:t)}Xn.commitDocument(e)}}),Wo=e=>Tn.components[e]?.label??e,Jo=nn(e=>Tn.components[e]?.defaultProps??{},[Tn]),Qo=e=>Xt(e,"section",Wo(e)),Yo=e=>c({type:e.type,props:e.props??{}},Qo(e.type),qt),{nodeAddresses:Xo,zoneItems:Zo}=qe(()=>{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>=A)return;const s=/* @__PURE__ */new Map;for(const{child:e,zone:t}of P(Tn,n))s.set(t,[...s.get(t)??[],e]);for(const[e,n]of s)t(n,e,i+1)})};return t(Fo,N,0),{nodeAddresses:e,zoneItems:n}},[Fo,Tn]),_o=nn(e=>Zo.get(e)??[],[Zo]),qo=_t(),Ko=qe(()=>{const e=/* @__PURE__ */new Map;for(const n of qo??[])e.set(n.slug,n.name);return e},[qo]),er=e=>a(e,Wo,Yt.plainText,e=>Ko.get(e),Yt.rowName),nr=(e,n)=>n===N?null:p(Tn.components[e.type]?.fields),tr=(e,n,t,o)=>{if(!(to?.zone===e&&to.index===n))return;const r=(t,o)=>{oo(null),o&&((e,n,t)=>{const o=_o(e)[n];if(!o)return;const r=nr(o,e);r&&Xn.replaceComponent(e,n,{...o,props:{...o.props,[r]:t.trim()}})})(e,n,t)};/* @__PURE__ */
13
+ return rn("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)},or=n(un),rr=Tn,ir=(e,n)=>n===N?Qo(e):Wo(e),lr=(e,n,t)=>{const o=r(rr,or,t,ir(t.type,e));o&&(o.changed&&Xn.replaceComponent(e,n,{...t,props:{...o.props,id:t.props.id}}),wo(o.message))},sr=C({nodesIn:_o,nodeAt:(e,n)=>_o(e)[n]??null,labelOf:(e,n)=>n===N?Qo(e):Wo(e),renamePropOf:nr,beginRename:(e,n)=>oo({zone:e,index:n}),history:{hasPast:Bn.hasPast,hasFuture:Bn.hasFuture,back:()=>Bn.back(),forward:()=>Bn.forward()},openAddSection:()=>{Xn.select(null),br(null)},openPageSettings:()=>{Xn.select(null),Ot(_)},collapseAll:()=>lo(new Set(_o(N).map(e=>String(e.props.id)))),onPasteRefused:()=>wo("Your browser won’t let us read the clipboard — press ⌘V","error"),isLocked:e=>Ht(e.type),duplicateBlocked:e=>Gt(Cn.data,e),permits:e=>B(Tn,e.type),canAddTo:Jt,nodeOps:Uo,isPinned:(e,n)=>n===N&&(Vn(e)||Fn(e)),sectionBand:Do,openAddInside:(e,n)=>{e===N?hr(n):Xn.select({zone:e,index:n}),br(null)},locate:e=>Xo.get(e)??null,rowNameOf:(e,n)=>n===N?Yo(e):er(e),selectAt:(e,n,t,o)=>{e===N?hr(n):Vr(e,n,t,o??"")},style:{held:()=>E(or),canCopy:e=>o(rr,e).some(e=>!1!==e.counted),copy:(e,n)=>t(rr,or,e,ir(e.type,n)),paste:(e,n,t)=>lr(e,n,t)}},kt),dr=_e({copy:(e,n)=>{},paste:(e,n,t)=>{},at:()=>null,readOnly:!1});en(()=>{dr.current={copy:(e,n)=>t(rr,or,e,ir(e.type,n)),paste:lr,at:()=>{const e=Cn.ui.itemSelector;if(!e)return null;const n=e.zone??N,t=_o(n)[e.index];return t?{zone:n,index:e.index,node:t}:null},readOnly:Boolean(kn)}});const cr=nn(e=>{const n=L(e);if(!n)return;const t=dr.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))},[]);en(()=>{if(!St)return;const e=e=>cr(e);return St.addEventListener("keydown",e),()=>St.removeEventListener("keydown",e)},[cr,St]),Fe(kt,"keydown",cr);const ar=Fo.map(e=>e.props.id).join("|");en(()=>{const e=kt?.document??null,n=kt?.window??null;let t=0;const o=[],r=()=>{if(!e)return void Pt(e=>e.length?[]:e);const n=Fo.findIndex(Fn),t=n>=0?n:Fo.length,o=n=>{const t=Fo[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})}Pt(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()}},[kt,ar,ot,Po,_n,qn,An?.props.id]);const pr=kt?.document??null,ur=kt?.window??null;en(()=>{const e=yt.current;if(!e||!pr||!ur)return;const n=[],t=()=>{const n=pr.querySelector(`[data-puck-component="${CSS.escape(e.id)}"]`);if(!n)return!1;const t=n.getBoundingClientRect().top-e.offset;return Math.abs(t)>1&&ur.scrollTo({left:ur.scrollX,top:ur.scrollY+t,behavior:"instant"}),!0};return yt.current=null,t()&&n.push(setTimeout(t,150),setTimeout(t,450)),()=>n.forEach(clearTimeout)},[pr,ur]);const fr=e=>{Vt.holdCanvasOn?Vt.holdCanvasOn(e):u(e)},hr=e=>{Ot(_),Xn.select({index:e}),Vt.sectionPressed?.(Fo[e]);const n=Fo[e]?.props?.id;n&&fr(n)},mr=e=>{const{floor:n,cap:t}=Do(),o=e=>Math.min(Math.max(n,e),t);if("number"==typeof e)return o(e);const r=An&&Tt.kind!==In?.kind?Fo.findIndex(e=>e.props.id===An.props.id):-1;return o(r>=0?r+1:t)},yr=(e,n)=>{const{floor:t,cap:o}=Do(),r=Math.min(Math.max(n,t),o),i=e<r?r-1:r;return i===e?{moved:!1,dest:e}:(Xn.reorderComponent(N,e,i),Xn.select({index:i}),{moved:!0,dest:i})},gr=(e,n,t)=>{Ot(_),Xn.select({index:e}),u(n),wo(`Added “${t}” section`)},kr=(e,n)=>{const t=mr(n),o=Wt(e,{nodeDefaults:Jo,newNodeId:$,sectionLabel:Qo,blockIsOffered:Qt}),r=o?Xn.insertNode(N,t,o):Xn.insertSection(e,t);return gr(t,r,Qo(e)),t},Sr=(e,n,t)=>{const o=mr(t),r=Xn.insertNode(N,o,n);return gr(o,r,e),o},br=e=>vr(N,e),vr=(e,n)=>{yo.current=document.activeElement??null,st&&(wt.current=xt.current,xt.current=!1,dt()),Ct(null===n?null:{zone:e,index:n}),vt(!0),_n||(wt.current=!0,Nn({type:"setUi",ui:{leftSideBarVisible:!0}}))},wr=()=>{vt(!1),Ct(null),wt.current&&Nn({type:"setUi",ui:{leftSideBarVisible:!1}}),wt.current=!1},xr=(e,n,t)=>{if("section"===e.kind)Xn.insertComponent(n,e.type,t);else{if("template"!==e.kind)return;Xn.insertNode(n,t,d(e.template.node))}Ot(_),Xn.select({index:t,zone:n})},zr=e=>n=>{n.target.closest(".es-tree-select")||e()},Cr=()=>Vt.editPinnedSource?.(),Nr=(e,n,t)=>{const o=_o(e)[n];return o&&!B(Tn,o.type).delete?null:/* @__PURE__ */rn(me,{kind:"delete",label:`Delete ${t}`,onClick:()=>((e,n)=>{const t=_o(e)[n]?.props?.id;null!=t&&Uo.remove(String(t))})(e,n),children:/* @__PURE__ */rn(Ue,{size:15})})},Br=e=>Yt.rowPreview?.(e)||void 0,Ar=e=>Yt.rowMarks?.(e)??void 0,Pr=(e,n,t)=>Yt.rowActions?.(e,n,t)??null,Tr=(e,n,t,o)=>{const r=Boolean(t.props._hidden);/* @__PURE__ */
14
+ return rn(me,{kind:"eye",label:r?`Show ${o}`:`Hide ${o}`,onClick:()=>$r(e,n,t),children:/* @__PURE__ */rn(k,r?{name:"eye-off",size:14}:{name:"eye",size:14})})},Or=e=>{const n=Qo(Fo[e]?.type??""),t=n?Gn.addSectionBefore({name:n}):Gn.addSectionHere;return pi(N,e,()=>br(e),t)},$r=(e,n,t)=>{Xn.replaceComponent(e,n,{...t,props:{...t.props,_hidden:!t.props._hidden}})},Rr=e=>T(Tn,e),jr=e=>P(Tn,e),Mr=(e,n,t)=>{const o=O(Tn,e.type,n)&&(t||jr(e).length>0);return{collapsible:o,folded:o&&fo(String(e.props.id))}},Er=(e,n,t)=>jr(e).flatMap(({child:e})=>Mr(e,n,t(e.type)).collapsible?[String(e.props.id),...Er(e,n+1,t)]:[]),Lr=e=>jr(e).length>0||Boolean(Jt(e.type)),Ir=e=>Boolean(Jt(e)),Vr=(e,n,t,o)=>{if(Ot(_),Jt(o)?.spec?.slider){const t=e.split(":")[0];f(t,n),Xn.select({index:n,zone:e}),u(t)}else Xn.select({index:n,zone:e}),fr(t)},Fr=(e,n,t,o,r)=>{const i=`${e}:${n}`;Xn.insertComponent(i,t,o),Jt(r)?.spec?.slider?requestAnimationFrame(()=>{f(e,o),Xn.select({index:o,zone:i})}):Xn.select({index:o,zone:i})},Dr=(e,n,t)=>{Xn.insertComponent(e,n,t),Ot(_),Xn.select({index:t,zone:e})},Hr=_e(/* @__PURE__ */new Set);en(()=>{Fo.forEach(e=>{const n=Jt(e.type)?.spec;if(!n)return;const t=e.props.id;if(Hr.current.has(t))return;Hr.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(Jo)).forEach((e,t)=>Xn.seedChild(o,t,n.childType,e))})},[Fo,Xn,Jo]);const Gr=_e(/* @__PURE__ */new Set);en(()=>{Fo.forEach((n,t)=>{const o=n.props.id;if(Gr.current.has(o))return;const r=e(n,Rr(n.type));Gr.current.add(o),r&&Xn.replaceComponent(N,t,{...n,props:r})})},[Fo,Xn]),te(Xn,Tn);const Ur=Fo.findIndex(Fn),Wr=Ur>=0?Fo[Ur]:null,Jr=Dn?Fo.findIndex(Vn):-1,Qr=Jr>=0?Fo[Jr]:null,Yr=Fo.find(e=>e.type===Rn)??null,Xr=Fo.find(e=>e.type===jn)??null,Zr=Ur>=0?Ur:Fo.length,_r=[];Fo.forEach(e=>{Fn(e)||(Lr(e)&&_r.push(String(e.props.id)),_r.push(...Er(e,1,Ir)))}),Wr&&(_r.push(String(Wr.props.id)),_r.push(...Er(Wr,1,Ir)));const qr=_r.length>0&&_r.every(e=>io.has(e)),Kr=e=>{const n=Yt.blockRowName(e,Wo);return Yt.rowName?Yt.rowName(e,"block",n):n},ei=(e,n,t,o)=>{const r=_o(e)[t];if(!r)return;const i={...Xe(e),index:t},l={...Xe(n),index:Math.min(Math.max(o,0),_o(n).length)},s=Le(i,l);if(e!==n||s!==t)try{Uo.move(String(r.props.id),{...l,index:s})}catch(e){if(!(e instanceof Ze))throw e}},ni=e=>{const n=/* @__PURE__ */new Set,t=e=>{for(const{child:o,zone:r}of jr(e))n.add(r),t(o)};for(const t of Rr(e.type))n.add(`${e.props.id}:${t}`);return t(e),n},ti=e=>{let n=e.slice(0,e.indexOf(":"));for(let e=0;e<64;e++){const e=Xo.get(n);if(!e)return null;if(e.zone===N)return n;n=e.zone.slice(0,e.zone.indexOf(":"))}return null},oi=e=>{const n=e.slice(0,e.indexOf(":")),t=Fo.find(e=>Mn(e.type)&&String(e.props.id)===n);return t&&En(n)===e?t:null},ri=(e,n)=>{if(e.add)return li(e.add,n);const t=Ye(n);if(Mn(e.type))return!1;const o=oi(t),r=oi(e.zone);if(o||r)return!(!o||!r)&&(n.index>=0&&n.index<=_o(t).length);if(e.zone===N||t===N){if(e.zone!==t)return!1;const{floor:o,cap:r}=Do();return n.index>=o&&n.index<=r}if(n.index<0||n.index>_o(t).length)return!1;if(e.zone===t)return!0;const i=Wr?String(Wr.props.id):null;return(!i||ti(e.zone)!==i&&ti(t)!==i)&&((e,n,t)=>{if(e===n)return!0;const o=_o(e)[t];if(!o)return!1;const r=n.split(":")[0],i=Xo.get(r),l=i?_o(i.zone)[i.index]:void 0;if(!l)return!1;if(ni(o).has(n))return!1;const s=Jt(l.type,Ut(Cn?.data,l.type,r));return!!s&&(!!(s.choices?s.choices.some(e=>e.type===o.type):s.spec?.childType===o.type)&&!s.spec?.addBlocked?.(_o(n),o))})(e.zone,t,e.index)},ii=e=>{const n=e.slice(0,e.indexOf(":")),t=Xo.get(n),o=t?_o(t.zone)[t.index]:void 0;if(!t||!o)return null;const r=Jt(o.type,Ut(Cn?.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:Wo(r.spec.childType)}]:[]),parentName:t.zone===N?Qo(o.type):Wo(o.type)}},li=(e,n)=>{const t=Ye(n);if("block"!==e.kind){if(oi(t))return n.index>=0&&n.index<=_o(t).length;if(t!==N)return!1;const{floor:e,cap:o}=Do();return n.index>=e&&n.index<=o}if(t===N)return!1;const o=ii(t);return!(!o||!o.choices.some(n=>n.type===e.type))&&!o.target.spec?.addBlocked?.(_o(t))},si=(e,n)=>{e.add?((e,n)=>{if("block"!==e.kind&&oi(Ye(n)))return void xr(e,Ye(n),n.index);if("section"===e.kind)return void kr(e.type,n.index);if("template"===e.kind)return void Sr(e.template.name,d(e.template.node),n.index);const t=Ye(n),o=ii(t);o&&(o.target.spec?Fr(o.parentId,o.target.slot,e.type,n.index,o.parent.type):Dr(t,e.type,n.index))})(e.add,n):e.zone===N?yr(e.index,n.index):ei(e.zone,Ye(n),e.index,n.index)},[di]=Ke(()=>Me()),ci=Ee({keyOf:e=>e.id,readOnly:Boolean(kn),session:di,canDrop:ri,onDrop:si,onStep:(e,n)=>{e.zone===N?((e,n)=>{const t=Qo(Fo[e]?.type??""),o=yr(e,n<0?e-1:e+2);if(!o.moved)return void wo(`“${t}” is already ${n<0?"first":"last"}`);const{floor:r,cap:i}=Do();wo(`Moved “${t}” to position ${o.dest-r+1} of ${i-r}`)})(e.index,n):ei(e.zone,e.zone,e.index,n<0?e.index-1:e.index+2)}}),ai=nn(e=>{const{floor:n,cap:t}=Do(),o=[];for(const r of e.nodes){const e=Ye(r.place),i=_o(e)[r.place.index];if(!i||String(i.props.id)!==r.id)continue;if(Vn(i)||Fn(i)||Ht(i.type))continue;if(Mn(i.type))continue;const l=Boolean(oi(e)),s=e===N||l;e===N&&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?Qo(i.type):er(i),from:r.place})}return{sources:o,zones:e.zones.filter(e=>e.children.length>0||Boolean(ii(Ye(e.list))?.choices.length)||Boolean(oi(Ye(e.list))))}},[Cn.data]),pi=(e,n,t,o)=>/* @__PURE__ */rn(ye,{...kn?{}:ci.seam({place:{...Xe(e),index:n}}),onAdd:kn?void 0:t,label:o},`seam:${e}:${n}`),ui={rowClick:zr,isCollapsed:fo,toggleCollapse:ho},fi=e=>{const n=String(e.props.id),t=Fo.findIndex(e=>String(e.props.id)===n),o=En(n),r=_o(o),i=fo(n),l=Wo(e.type),s=Yt.rowName?Yt.rowName(e,"section",l):l,d=e=>pi(o,e,()=>vr(o,e),Gn.addSectionHere);/* @__PURE__ */
15
+ return ln(sn,{children:[
16
+ /* @__PURE__ */rn(pe,{icon:/* @__PURE__ */rn(Zt,{type:e.type,size:13}),name:s,preview:Br(e),marks:Ar(e),onSelect:()=>hr(t),selected:Rt===n,actions:Pr(e,N,t)??void 0,rowProps:{"data-node-id":n,onClick:zr(()=>hr(t))},fold:{open:!i,label:"section",onToggle:()=>ho(n)}}),!i&&/* @__PURE__ */ln(ue,{children:[r.map((n,t)=>{const r=String(n.props.id),i=Yo(n),l=Lr(n),s=l&&fo(r),c=()=>Vr(o,t,r,e.type),{rowProps:a,...p}=ci.row({item:{id:r,zone:o,index:t,type:n.type},place:{...Xe(o),index:t}},{"data-node-id":r,onClick:zr(c)});/* @__PURE__ */
17
+ return ln(on,{children:[d(t),
18
+ /* @__PURE__ */rn(pe,{icon:/* @__PURE__ */rn(Zt,{type:n.type,size:13}),name:i,preview:Br(n),marks:Ar(n),onSelect:c,selected:Rt===r,hidden:Boolean(n.props._hidden),...p,fold:l?{open:!s,label:"section",onToggle:()=>ho(r)}:void 0,actions:/* @__PURE__ */ln(sn,{children:[Nr(o,t,i),Pr(n,o,t),Tr(o,t,n,i)]}),rowProps:a}),l&&!s&&/* @__PURE__ */rn(ue,{children:mi(n,2)})]},r)}),d(r.length)]})]})},hi=(e,n)=>{const t=jr(e),o=(e,n)=>pi(e,n),r=Jt(e.type),i=r?`${e.props.id}:${r.slot}`:null;/* @__PURE__ */
19
+ return ln(sn,{children:[t.map(({child:t,zone:r,index:i})=>{const l=Rt===String(t.props.id),{collapsible:s,folded:d}=Mr(t,n,Ir(t.type)),c=String(t.props.id),a=Kr(t),p=()=>Vr(r,i,c,e.type),{rowProps:u,...f}=ci.row({item:{id:c,zone:r,index:i,type:t.type},place:{...Xe(r),index:i}},{"data-node-id":c,onClick:zr(p)});/* @__PURE__ */
20
+ return ln(on,{children:[0===i&&o(r,0),
21
+ /* @__PURE__ */rn(pe,{icon:/* @__PURE__ */rn(Zt,{type:t.type,size:13}),name:a,preview:Br(t),marks:Ar(t),onSelect:p,selected:l,hidden:Boolean(t.props._hidden),...f,fold:s?{open:!d,label:"group",onToggle:()=>ho(c)}:void 0,actions:/* @__PURE__ */ln(sn,{children:[Nr(r,i,a),Pr(t,r,i),Tr(r,i,t,a)]}),rowProps:u}),s&&!d&&/* @__PURE__ */rn(ue,{children:hi(t,n+1)}),o(r,i+1)]},String(t.props.id??`${r}-${i}`))}),i&&!t.some(e=>e.zone===i)?o(i,0):null]})},mi=(e,n)=>{const t=jr(e),o=Jt(e.type,Ut(Cn?.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)?()=>Fr(e.props.id,r.slot,r.childType,t,e.type):n===c?()=>vr(n,t):void 0;return pi(n,t,o,n===d&&r?r.addLabel:"Add block here")};/* @__PURE__ */
22
+ return ln(sn,{children:[t.map(({child:t,zone:o,index:r})=>{const i=Rt===String(t.props.id),l=er(t),s=String(t.props.id),{collapsible:d,folded:c}=Mr(t,n,Ir(t.type)),p=Rr(t.type),u=1===p.length?`${s}:${p[0]}`:null,f=u?{...Xe(u),index:_o(u).length}:void 0,h=ci.dragging,m=f&&h&&ri(h,f)?f:void 0,y=()=>Vr(o,r,s,e.type),{rowProps:g,...k}=ci.row({item:{id:s,zone:o,index:r,type:t.type},place:{...Xe(o),index:r},into:m,canDrag:!Ht(t.type)},{"data-node-id":s,onClick:zr(y)});/* @__PURE__ */
23
+ return ln(on,{children:[0===r&&a(o,0),
24
+ /* @__PURE__ */rn(pe,{icon:/* @__PURE__ */rn(Zt,{type:t.type,size:13}),name:l,preview:Br(t),marks:Ar(t),onSelect:y,nameSlot:tr(o,r,s,l),selected:i,hidden:Boolean(t.props._hidden),...k,fold:d?{open:!c,label:"group",onToggle:()=>ho(s)}:void 0,actions:Ht(t.type)?Pr(t,o,r)??void 0:/* @__PURE__ */ln(sn,{children:[Nr(o,r,l),Pr(t,o,r),Tr(o,r,t,l)]}),rowProps:g}),d&&!c&&/* @__PURE__ */rn(ue,{children:mi(t,n+1)}),a(o,r+1)]},String(t.props.id??`${o}-${r}`))}),r&&!r.fixed&&
25
+ /* @__PURE__ */rn(I,{small:!0,label:r.addLabel,blocked:r.addBlocked?.(i)??null,onAdd:()=>Fr(e.props.id,r.slot,r.childType,i.length,e.type)}),c&&!t.some(e=>e.zone===c)?a(c,0):null]})},yi=(()=>{if(!An||!$t)return null;const e=String(An.type),n=String(An.props.id),t=Jt(e,Ut(Cn?.data,e,n));if(!t||"footer"===t.source)return null;const o=Fo.some(e=>String(e.props?.id)===n),r=Array.isArray(An.props[t.slot])?An.props[t.slot]:[];if(t.spec?.addBlocked?.(r))return null;const i=t.choices??(t.spec?[{type:t.spec.childType,label:Wo(t.spec.childType)}]:[]);return 0===i.length?null:{parentName:o?Qo(e):Wo(e),choices:i,onPick:o=>{t.spec?Fr(n,t.slot,o,r.length,e):Dr(`${n}:${t.slot}`,o,r.length)}}})(),gi=bt||null!==st,ki=e=>"panel"in e?{id:e.id,label:e.label,icon:e.icon,active:_n&&!gi&&Dt===e.id,onSelect:()=>Eo(e.id)}:e,Si=[{id:"add",label:"Add",icon:/* @__PURE__ */rn("span",{className:"sf-rail-plus","aria-hidden":"true",children:"+"}),active:bt,onSelect:()=>bt?wr():br(null)},...(Vt.railLead??[]).map(ki),{id:"sections",label:"Layers",icon:/* @__PURE__ */rn(De,{}),active:_n&&!gi&&"sections"===Dt,onSelect:()=>Eo("sections")},...(Vt.railTrail??[]).map(ki)];lt?Si.push({id:"media",label:"Media library",icon:/* @__PURE__ */rn(We,{}),active:_n&&!bt&&(null!==st||"media"===Dt),onSelect:()=>Eo("media")}):wn&&Si.push({id:"media",label:"Media library",icon:/* @__PURE__ */rn(We,{}),onSelect:Lo});const bi=[...Vt.railLead??[],...Vt.railTrail??[]].find(e=>"panel"in e&&e.id===Dt),vi=Boolean(Hn?.foldable)&&!Ft,wi=Hn?.label??(xn?Gn.pageSections:Gn.templateSections),xi=vi&&fo(an),zi=/* @__PURE__ */ln(sn,{children:[Fo.map((e,n)=>{if(Vn(e)||Fn(e)||Mn(e.type))return null;const t=Rt===String(e.props.id),o=Boolean(e.props._hidden);jr(e);const r=String(e.props.id),i=Vt.hasOwnRows?.(e)??!1,l=Lr(e)||i,s=l&&fo(r),{rowProps:d,...c}=ci.row({item:{id:r,zone:N,index:n,type:e.type},place:{...Xe(N),index:n}},{"data-node-id":r,onClick:zr(()=>hr(n))});/* @__PURE__ */
26
+ return ln(on,{children:[n>0&&Or(n),
27
+ /* @__PURE__ */rn(pe,{icon:/* @__PURE__ */rn(Zt,{type:e.type,size:13}),name:Yo(e),preview:Br(e),marks:Ar(e),onSelect:()=>hr(n),selected:t,hidden:o,...c,fold:l?{open:!s,label:"section",onToggle:()=>ho(r)}:void 0,actions:/* @__PURE__ */ln(sn,{children:[Nr(N,n,Yo(e)),Pr(e,N,n),Tr(N,n,e,Yo(e))]}),rowProps:d}),Lr(e)&&!s&&/* @__PURE__ */ln(ue,{children:[mi(e,1),Vt.partRows?.(e,ui)]}),i&&!s&&/* @__PURE__ */rn(ue,{children:Vt.ownRows?.(e,n,ui)})]},String(e.props.id??n))}),!Ft&&Zr>0&&Or(Zr),Hn?.addAtEnd&&!Ft&&!kn&&/* @__PURE__ */rn(I,{small:!0,label:Gn.addSection,blocked:null,onAdd:()=>br(Zr)})]}),Ci=(e,n,t)=>{const o=String(e.props.id),r=jr(e).length>0||Boolean(Jt(e.type)),i=r&&fo(o),l="header"===t?Gn.header:Gn.footer,s=Yt.rowName?Yt.rowName(e,"section",l):l;/* @__PURE__ */
28
+ return ln(sn,{children:[
29
+ /* @__PURE__ */rn(pe,{icon:/* @__PURE__ */rn(Zt,{type:t,size:13}),name:s,preview:Br(e),marks:Ar(e),onSelect:()=>hr(n),selected:Rt===String(e.props.id),fold:r?{open:!i,label:"section",onToggle:()=>ho(o)}:void 0,actions:Pr(e,N,n)??void 0,rowProps:{onClick:zr(()=>hr(n))}}),r&&!i&&/* @__PURE__ */rn(ue,{children:hi(e,1)})]})};return(Vt.wrap??(e=>e))(
30
+ /* @__PURE__ */ln("div",{ref:gt,className:"sf-editor es-editor",style:Te(so),onContextMenu:sr.onEditorContextMenu,children:[
31
+ /* @__PURE__ */ln(be,{children:[
32
+ /* @__PURE__ */rn(ve,{items:Si,ariaLabel:"Left panel views"}),
33
+ /* @__PURE__ */ln(we,{children:[
34
+ /* @__PURE__ */rn(xe,{label:"Undo",disabled:!Bn.hasPast,onClick:()=>Bn.back(),children:/* @__PURE__ */rn(He,{})}),
35
+ /* @__PURE__ */rn(xe,{label:"Redo",disabled:!Bn.hasFuture,onClick:()=>Bn.forward(),children:/* @__PURE__ */rn(Ge,{})}),
36
+ /* @__PURE__ */rn(ze,{}),
37
+ /* @__PURE__ */rn(Ce,{devices:Kn,value:ot,onChange:rt})]}),
38
+ /* @__PURE__ */ln(we,{kind:"right",style:{minWidth:300},children:[
39
+ /* @__PURE__ */rn(dn,{saveState:hn,notSaving:Boolean(kn)||null!=mn,readOnlyReason:Sn,toggle:bn,onToggle:gn,onRetry:yn}),Vt.barLead?.(),
40
+ /* @__PURE__ */rn("button",{type:"button",className:"es-btn-ghost",title:"Refresh the preview (reloads the canvas, keeps your place)",onClick:()=>{yt.current=(()=>{const e=kt?.document;if(!e)return null;const n=Fo.findIndex(Fn),t=n>=0?n:Fo.length;let o=null;for(let n=0;n<t;n++){const t=Fo[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=An?.props?.id??Fo[0]?.props?.id;null!=e&&(o={id:String(e),offset:0})}return o})(),mt(e=>e+1)},children:"Refresh"}),Vt.barTrail?.(),Vt.barMain?Vt.barMain():/* @__PURE__ */rn("button",{type:"button",className:"es-btn-primary",disabled:null!==Sn,onClick:()=>{fn(Cn.data)},children:vn?"Publish":"Save"})]})]}),
41
+ /* @__PURE__ */rn(R,{}),
42
+ /* @__PURE__ */ln("div",{className:"sf-body",children:[_n?/* @__PURE__ */ln(sn,{children:[
43
+ /* @__PURE__ */rn("div",{className:"es-sidepanel es-sidepanel--left sf-panel sf-panel--left",children:bt?/* @__PURE__ */rn(V,{blocks:zt&&zt.zone!==N&&!oi(zt.zone)?ii(zt.zone):yi,blocksOnly:Boolean(zt&&zt.zone!==N&&!oi(zt.zone)),at:zt?{label:(e=>{const n=oi(e.zone);if(n)return`Adding to ${Wo(n.type)}`;if(e.zone===N){const n=Fo[e.index];return n&&!Fn(n)?`Adding before ${Qo(n.type)}`:"Adding at the end of the page"}const t=ii(e.zone);return t?`Adding to ${t.parentName}`:"Adding here"})(zt),onClear:()=>Ct(null)}:void 0,onAdd:e=>{if(zt&&"block"!==e.kind&&oi(zt.zone))return xr(e,zt.zone,zt.index),void Ct({zone:zt.zone,index:zt.index+1});if("section"===e.kind)return(e=>{if(null===Nt)return void kr(e);const n=kr(e,Nt);Bt(n+1)})(e.type);if("template"===e.kind)return((e,n)=>{if(null===Nt)return void Sr(e,n);const t=Sr(e,n,Nt);Bt(t+1)})(e.template.name,d(e.template.node));if(zt&&zt.zone!==N){const n=ii(zt.zone);if(!n)return;return n.target.spec?Fr(n.parentId,n.target.slot,e.type,zt.index,n.parent.type):Dr(zt.zone,e.type,zt.index),void Ct({zone:zt.zone,index:zt.index+1})}yi?.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:di,siteWide:Vt.addPanelRow?.(wr),onClose:wr,onHide:jo,readOnly:Boolean(kn)}):st&&it?
44
+ /* @__PURE__ */rn(H,{panel:it,pick:st,onHide:jo}):bi?bi.panel({onHide:jo,notify:wo}):"media"===Dt&&it?/* @__PURE__ */rn(H,{panel:it,pick:null,onHide:jo}):/* @__PURE__ */ln(sn,{children:[
45
+ /* @__PURE__ */rn(F,{icon:/* @__PURE__ */rn(De,{}),title:"Layers",context:Un,actions:_r.length>0?/* @__PURE__ */rn(Ne,{label:qr?"Expand all sections":"Collapse all sections",onClick:()=>lo(e=>{const n=new Set(_r);return qr?new Set([...e].filter(e=>!n.has(e))):/* @__PURE__ */new Set([...e,..._r])}),children:/* @__PURE__ */rn(cn,{expand:qr})}):void 0,onHide:jo}),
46
+ /* @__PURE__ */ln(fe,{className:"sf-tree sf-scroll",children:[
47
+ /* @__PURE__ */rn(pe,{icon:/* @__PURE__ */rn(Zt,{type:"page",size:13}),name:Gn.pageSettings,onSelect:Io,selected:!An&&$t,rowProps:{onClick:zr(Io)}}),Yr&&/* @__PURE__ */ln(sn,{children:[
48
+ /* @__PURE__ */rn(he,{children:Gn.header}),fi(Yr)]}),!Ft&&zn&&/* @__PURE__ */ln(sn,{children:[
49
+ /* @__PURE__ */rn(he,{children:Gn.header}),!Dn&&/* @__PURE__ */rn(pe,{icon:/* @__PURE__ */rn(Zt,{type:"header",size:13}),name:Gn.header,onSelect:Vo,selected:Tt.kind===In?.kind,rowProps:{onClick:zr(Vo)}})]}),!Ft&&Qr&&Ci(Qr,Jr,"header"),!Ft&&!vi&&/* @__PURE__ */rn(he,{children:wi}),vi?/* @__PURE__ */ln(sn,{children:[
50
+ /* @__PURE__ */rn(pe,{icon:null,name:wi,fold:{open:!xi,label:wi,onToggle:()=>ho(an)}}),!xi&&/* @__PURE__ */rn(ue,{children:zi})]}):zi,zn&&/* @__PURE__ */rn(he,{children:Gn.footer}),Wr&&Ci(Wr,Ur,"footer"),!Ft&&!Wr&&zn&&/* @__PURE__ */rn(pe,{icon:/* @__PURE__ */rn(Zt,{type:"footer",size:13}),name:Gn.footer,onSelect:Cr,rowProps:{onClick:zr(Cr),title:"Edit the site footer"}}),Xr&&fi(Xr),Vt.treeFoot?.()]})]})}),
51
+ /* @__PURE__ */rn(Be,{side:"left",width:so.left,min:Pe,max:Ae,defaultWidth:S.left,label:"Resize Sections panel",onResize:po})]}):/* @__PURE__ */rn(D,{side:"left",onShow:jo}),
52
+ /* @__PURE__ */rn("div",{ref:xo,className:"sf-center sf-scroll",style:{overflowX:Oo?"auto":"hidden",overflowY:"hidden"},children:/* @__PURE__ */rn("div",{className:"sf-frame-scaler",style:$o,children:/* @__PURE__ */rn("div",{className:"sf-frame "+(ot===tt?"":`sf-frame--${ot}`),style:Ro,children:/* @__PURE__ */ln("div",{className:"sf-preview-host",children:[
53
+ /* @__PURE__ */rn(Wn,{},ht),
54
+ /* @__PURE__ */rn(je,{canvas:kt,session:di,model:ai,canDrop:ri,onDrop:si,onPick:e=>{Ot(_),Xn.select(e.zone===N?{index:e.index}:{index:e.index,zone:e.zone})},onZoneAdd:e=>vr(Ye(e),0),readOnly:Boolean(kn),revision:Cn.data}),At.length>0&&/* @__PURE__ */rn("div",{className:"sf-preview-gaps","aria-hidden":"true",children:At.map(e=>/* @__PURE__ */ln("button",{type:"button",tabIndex:-1,className:"sf-preview-gap",style:{top:e.top},title:"Add section here",onClick:()=>br(e.index),children:[
55
+ /* @__PURE__ */rn("span",{className:"sf-preview-gap-line"}),
56
+ /* @__PURE__ */ln("span",{className:"sf-preview-gap-pill",children:[
57
+ /* @__PURE__ */rn("span",{className:"sf-preview-gap-plus",children:"+"}),
58
+ /* @__PURE__ */rn("span",{className:"sf-preview-gap-label",children:"Add section"})]})]},e.index))})]})})})}),qn?/* @__PURE__ */ln(sn,{children:[
59
+ /* @__PURE__ */rn(g,{value:{selectChild:Vr,addChild:Fr,childRowName:er,blockRowName:Kr},children:/* @__PURE__ */rn(Jn,{mode:Tt,onOpenWebsiteSettings:Vt.openSettings??(()=>{}),onOpenSiteStyles:Vt.openStyles,onSelectNode:eo,onNotify:wo,onHidePanel:Mo,nodeActions:An?B(Tn,An.type):pn})}),
60
+ /* @__PURE__ */rn(Be,{side:"right",width:so.right,min:Pe,max:Ae,defaultWidth:S.right,label:"Resize settings panel",onResize:uo})]}):
61
+ /* @__PURE__ */rn(D,{side:"right",onShow:Mo})]}),go&&/* @__PURE__ */ln("div",{className:"sf-toast "+("error"===go.tone?"sf-toast--error":""),role:"status",children:[
62
+ /* @__PURE__ */rn("span",{className:"sf-toast-check","aria-hidden":"true",children:"error"===go.tone?"!":"✓"}),go.msg]},So),sr.menu]}))}export{un as ScreenChrome};
@@ -0,0 +1,4 @@
1
+ import{usePickFollowsSelection as n}from"./chunk-Z6BAZFSW.js";import{EaselCanvas as e,useSelectedFields as t}from"./chunk-P67FP7PG.js";import{Inspector as r}from"./chunk-BXZ6WLHC.js";import{DesktopIcon as i}from"./chunk-L5KW4HG5.js";import{createContext as o,useContext as u}from"react";import{jsx as l}from"react/jsx-runtime";var s={kind:"puck"};function c(n,e){const t=n,r=e,i=Object.keys(t);return i.length===Object.keys(r).length&&i.every(n=>Object.is(t[n],r[n]))}function a(n,e){return n.isFirst?n.isFirst(e):e.type===n.first}function f(n,e){return n.isLast?n.isLast(e):e.type===n.last}var d={},p=()=>d,k=()=>"",m=()=>null,h=()=>{},v={isLockedBlock:()=>!1,duplicateBlocked:()=>null,nestDepth:()=>0,newSectionNode:()=>null,canAddTo:()=>null,blockIsOffered:()=>!0},b={labelAtLevel:(n,e,t)=>t,descriptions:{},categoryLabel:()=>{},firstSection:null,blockRowName:(n,e)=>e(n.type),plainText:n=>n,Icon:()=>null,Thumbnail:()=>null,useProducts:()=>null},g={options:[{id:"desktop",label:"Desktop",icon:/* @__PURE__ */l(i,{})}],initial:"desktop",fluid:"desktop",widths:{desktop:2e3}},y={read:()=>"sections",write:()=>{},forSelection:(n,e)=>n?"sections":e},L={first:null,last:null,firstGroup:null,lastGroup:null,isSectionGroup:()=>!1,sectionGroupZone:()=>"",panelOf:()=>null};function j(){/* @__PURE__ */
2
+ return l(e,{height:"fill"})}function w(){const{id:n,fields:e,values:i,readOnly:o,onChange:u}=t();/* @__PURE__ */
3
+ return l("div",{className:"es-sidepanel es-sidepanel--right",children:/* @__PURE__ */l(r,{fields:e,values:i,onChange:u,readOnly:o,idPrefix:n})})}var O=o({});function S({parts:n,children:e}){/* @__PURE__ */
4
+ return l(O.Provider,{value:n,children:e})}function P(){return u(O)}function B(){return(P().useOwnerName??k)()}function G(){return(P().useDocumentLabel??m)()}function F(n,e,t,r){return(P().useBridges??p)(n,e,t,r)}function x(n){return(P().useStandaloneBridges??p)(n)}function C(n,e){(P().useDocumentPass??h)(n,e)}function D(){return P().blockRules??v}function N(){return P().blockLook??b}function Z(){return P().devices??g}function A(){return P().leftView??y}function I(){return P().pinned??L}function T(){return P().saveSwitch??!0}function W(e){n(!0===P().pickFollowsSelection,e)}function H(){return P().Canvas??j}function R(){return P().Inspector??w}export{s as SELECTION_MODE,S as ScreenPartsProvider,a as isPinnedFirst,f as isPinnedLast,c as sameInspectorMode,N as useScreenBlockLook,D as useScreenBlockRules,F as useScreenBridges,H as useScreenCanvasFrame,Z as useScreenDevices,G as useScreenDocumentLabel,C as useScreenDocumentPass,R as useScreenInspectorPanel,A as useScreenLeftView,B as useScreenOwnerName,P as useScreenParts,W as useScreenPickFollowsSelection,I as useScreenPinned,T as useScreenSaveSwitch,x as useStandaloneScreenBridges};
@@ -0,0 +1 @@
1
+ function n(n,t){const e=n.components?.[t]?.fields??{};return Object.keys(e).filter(n=>"slot"===e[n]?.type)}function t(n,t){const e=n.components?.[t]?.permissions;return{duplicate:!1!==e?.duplicate,delete:!1!==e?.delete}}function e(t,e){return n(t,e.type).flatMap(n=>(Array.isArray(e.props[n])?e.props[n]:[]).map((t,r)=>({child:t,zone:`${e.props.id}:${n}`,index:r})))}function r(n,t,r){const o=(t,i,u,p)=>{if(!t||"object"!=typeof t||!t.props)return null;if(t.props.id===r)return{item:t,zone:i,index:u};if(p>=12)return null;for(const{child:r,zone:i,index:u}of e(n,t)){const n=o(r,i,u,p+1);if(n)return n}return null};for(let n=0;n<t.length;n+=1){const e=o(t[n],c,n,0);if(e)return e}return null}var o=6;function i(t,e,r){return r<6&&n(t,e).length>0}var u=n=>`${n}-${crypto.randomUUID()}`,p="Header",s="Footer",c="root:default-zone",f=[p,s];function l(n){const t=/* @__PURE__ */new Set,e=[];return n.forEach((n,r)=>{const o=n?.type;void 0!==o&&f.includes(o)&&(t.has(o)?e.push(r):t.add(o))}),e}function d(n){return l(n).map(t=>n[t]?.props?.id).filter(n=>"string"==typeof n)}function a(n,t){const e=(n,t)=>n.some(n=>n?.type===t);return f.filter(r=>!e(n,r)&&!e(t,r))}export{s as FOOTER_TYPE,p as HEADER_TYPE,c as ROOT_ZONE,o as TREE_MAX_DEPTH,t as blockNodeActions,e as childSlotsOf,r as locateNode,a as missingPinnedTypes,i as nestsInTree,u as newNodeId,d as pinnedDuplicateIds,l as pinnedDuplicateIndices,n as slotFieldsOf};
@@ -0,0 +1 @@
1
+ import{newNodeId as e,ROOT_ZONE as t}from"./chunk-7GVLSNFW.js";import{useScreenBlockRules as n}from"./chunk-7755VWRT.js";import{useEasel as o,useEaselApi as r}from"./chunk-P67FP7PG.js";import{useMemo as s}from"react";function i(i={}){const{dispatch:p}=o(e=>e),d=r(),c=!0===i.readOnly,a=n().resolveOnInsert,m=!0===(i.resolveOnInsert??a);return s(()=>{const n=(t,n,o)=>{const r=e(n);return c||p({type:"insert",componentType:n,destinationZone:t,destinationIndex:o,id:r}),r},o=e=>(m&&!c&&d.resolveNode(e,{trigger:"insert"}),e),r=(e,t,n)=>{c||p({type:"replace",destinationZone:e,destinationIndex:t,data:n})},s=(e,t,r)=>o(n(e,t,r));return{insertComponent:s,insertSection:(e,n)=>s(t,e,n),replaceComponent:r,seedChild:(e,t,s,i)=>{const p=n(e,s,t);r(e,t,{type:s,props:{id:p,...i}}),o(p)},insertNode:(e,t,s)=>{const i=n(e,s.type,t);return r(e,t,{type:s.type,props:{...s.props,id:i}}),o(i)},removeComponent:(e,t)=>{c||p({type:"remove",index:t,zone:e})},reorderComponent:(e,t,n)=>{c||p({type:"reorder",sourceIndex:t,destinationIndex:n,destinationZone:e})},duplicateComponent:(e,t)=>{c||p({type:"duplicate",sourceIndex:t,sourceZone:e})},select:e=>p({type:"setUi",ui:{itemSelector:e}}),setDocument:e=>{c||p({type:"setData",data:e})},commitDocument:e=>{c||p({type:"setData",data:()=>e,recordHistory:!0})}}},[p,c,m,d])}export{i as useSectionOps};
@@ -0,0 +1,10 @@
1
+ import{clientOnly as e}from"./chunk-GXQCZJOP.js";import{ScreenStoreProvider as n}from"./chunk-YODRYAZX.js";import{ScreenChrome as r}from"./chunk-5D2XAZKH.js";import{ScreenDocumentProvider as t,useScreenDocument as a}from"./chunk-LRTIMWZG.js";import{DEFAULT_SCREEN_WORDS as i}from"./chunk-LEGAPYPC.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
+ import{WebsiteBackendError as e}from"./chunk-KCOBHPN6.js";import{backendOf as s}from"./chunk-RSCMJIWS.js";var r=()=>Promise.reject(new e("unavailable","This editor's backend keeps no section templates.")),t={list:()=>Promise.resolve([]),get:()=>Promise.resolve(null),ensure:r,save:r,update:r,rename:r,remove:r},a=e=>s(e).sectionTemplates??t,n=e=>({list:()=>a(e).list(),get:s=>a(e).get(s),ensure:(s,r,t)=>a(e).ensure(s,r,t),save:(s,r)=>a(e).save(s,r),update:(s,r)=>a(e).update(s,r),rename:(s,r)=>a(e).rename(s,r),remove:s=>a(e).remove(s)}),o=n();function m(e){return e.cache("easel:section-templates",()=>n(e))}export{o as sectionTemplates,m as sectionTemplatesOf};
@@ -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{sectionTemplatesOf as s}from"./chunk-BVN33R76.js";import{SidePanelHead as i,PanelModeExit as c}from"./chunk-IWAPPEL4.js";import{useEaselSession as l}from"./chunk-O7Q4DDJT.js";import{blockRuns as a}from"./chunk-HQ4VVRIC.js";import{useScreenBlockLook as p,useScreenBlockRules as d}from"./chunk-7755VWRT.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 O({blocks:O,blocksOnly:I,at:L,onAdd:P,itemFor:D,session:G,siteWide:S,onClose:T,onHide:x,readOnly:B}){const C=m(e=>e.config),F=p(),{labelAtLevel:H,categoryLabel:N,firstSection:V,Icon:W,Thumbnail:E}=F,{blockIsOffered:Q}=d(),R=l(),[w,z]=h([]);k(()=>{let t=!1;const o=e=>Q(e,R);return s(R).list().then(n=>{if(t)return;const r=C.components;z(n.filter(t=>t.node?.type&&r[t.node.type]&&e(t.node).every(o)))}).catch(()=>{}),()=>{t=!0}},[C,R]);const J=y(()=>t(C,F),[C]),K=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)}),Y=y(()=>{const e=[];if(O&&O.choices.length>0&&a(O.choices).forEach((t,o)=>{e.push({title:0===o?`Inside ${O.parentName}${t.group?` · ${t.group}`:""}`:t.group??"",tiles:t.items.map(e=>({type:A(e.type),label:e.label,icon:/* @__PURE__ */b(W,{type:e.type,size:18}),title:`Add ${e.label}`}))})}),I)return e;const t=o(J,V);t&&e.push({title:"Start blank",tiles:[K(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",C.components[t]?.label??t)),e.node.type]};var t})});const s=n(J,V);for(const t of Object.keys(C.categories??{})){const o=s.filter(e=>e.cat===t);0!==o.length&&e.push({title:r(C,t,N),tiles:o.map(K)})}return e},[O,I,w,J,C]),Z=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:I?"Blocks for this place":"Sections and blocks",actions:/* @__PURE__ */b(c,{label:"Done",description:"Close Add and go back",onClick:T}),onHide:x}),
4
+ /* @__PURE__ */g("div",{className:"sf-addside sf-scroll",children:[
5
+ /* @__PURE__ */b(u,{groups:Y,session:G,itemFor:e=>D(Z(e)??{kind:"section",type:e}),onInsert:e=>{const t=Z(e);t&&P(t)},at:L,hint:I?"Drag into the page, or click to add.":"Drag onto the page, or click to add.",searchLabel:I?"Search blocks":"Search sections",readOnly:B}),S&&!I?S:null]})]})}export{O as AddSidePanel,A as blockKey,$ as sectionKey,v as templateKey};
@@ -0,0 +1 @@
1
+ import{isBackendError as e,readHostFailure as s,STATUS_UNREACHABLE as t,hostUnreachableMessage as n,hostLoadRefusalOf as a}from"./chunk-KCOBHPN6.js";var i={unauthorized:"the editor's sign-in was refused (unauthorized).","changed-elsewhere":"the page changed while it was being opened (changed-elsewhere).","lock-taken":"somebody else holds this page (lock-taken).","not-found":"this page no longer exists (not-found).",invalid:"the backend refused the request (invalid).",unavailable:"the backend could not be reached (unavailable)."};function o(a,r){if(e(a))return s(a.cause,r)?o(a.cause,r):`${i[a.kind]} ${a.message}`.trim();const u=s(a,r);return u?u.status===t?`${n(r)} (no response)`:401===u.status||403===u.status?`the editor's sign-in was refused (${u.status}). Reload the console and open the editor again; if it keeps happening the bridged token is not valid for this site.`:404===u.status?"this page no longer exists (404).":u.status>=500?`the server failed (${u.status}). ${u.message}`:`the server refused the request (${u.status}). ${u.message}`:a instanceof Error?`${a.name}: ${a.message}`:String(a)}function r(e,s,t){return a(e,s,t)}export{o as describeLoadFailure,r as hostLoadRefusal};
@@ -0,0 +1 @@
1
+ import{ROOT_ZONE as e}from"./chunk-7GVLSNFW.js";import{styleMenuItems as n}from"./chunk-57DJOKXT.js";import{useEaselSession as t}from"./chunk-O7Q4DDJT.js";import{EaselContextMenu as o}from"./chunk-KTVH2ZRL.js";import{createNodeClipboard as i,nodeMenuItems as l}from"./chunk-2LK54I4E.js";import{useCanvasEvent as c}from"./chunk-PAELDYYS.js";import{framePointToHost as r}from"./chunk-ZNCEOSXO.js";import{UndoIcon as s,RedoIcon as a,AddIcon as d,PasteIcon as p,SettingsIcon as u,LayersIcon as f,CopyIcon as m}from"./chunk-L5KW4HG5.js";import{zoneKey as h,ROOT_SLOT as k,ROOT_ID as y}from"./chunk-KRXQM65X.js";import{useState as b,useCallback as v}from"react";import{jsx as x}from"react/jsx-runtime";function C(n,t){const o=[],i=/* @__PURE__ */new Set;let l={zone:t.zone,index:t.index};for(;l;){const t=n.nodeAt(l.zone,l.index);if(!t||i.has(t.props.id))break;if(i.add(t.props.id),o.push({zone:l.zone,index:l.index,node:t,parentType:null}),l.zone===e)break;const c=l.zone.lastIndexOf(":");if(c<=0)break;l=n.locate(l.zone.slice(0,c))}for(let e=0;e<o.length-1;e+=1)o[e].parentType=o[e+1].node.type;return o}var g=i(),P=/* @__PURE__ */new WeakMap;function A(e){if(e.claimsPage)return g;const n=e.registry;if(!n)return e.cache("easel:node-clipboard",i);let t=P.get(n);return t||(t=i(),P.set(n,t)),t}function O(){return A(t())}function T(n,t,o){if(t===e){const{floor:e,cap:t}=n.sectionBand();return{parentId:y,slot:k,index:Math.min(Math.max(o,e),t)}}const i=t.lastIndexOf(":");return{parentId:t.slice(0,i),slot:t.slice(i+1),index:o}}function w(e,t){const{zone:o,index:i}=t,c=e.nodeAt(o,i);if(!c)return[];const r=c.props.id,s=e.labelOf(c.type,o),a=Boolean(c.props._hidden),d=e.nodeOps,p=e.isPinned(c,o),u=e.isLocked(c),f=!p&&!u&&!e.duplicateBlocked(c),m=e.permits?.(c)??{duplicate:!0,delete:!0},k=C(e,t),y=d.held,b=y&&!p&&h(y.from)===o?T(e,o,i+1):null,v=e.style?n({held:e.style.held(),canCopy:e.style.canCopy(c,o),onCopy:()=>e.style?.copy(c,o),onPaste:()=>e.style?.paste(o,i,c)}):[];return l({title:s,layer:{group:"pick",items:k.map((n,t)=>({label:e.rowNameOf(n.node,n.zone),checked:0===t,onClick:()=>e.selectAt(n.zone,n.index,n.node.props.id,n.parentType)}))},actions:{addInside:e.canAddTo(c.type)?()=>e.openAddInside(o,i):void 0,duplicate:f&&m.duplicate?()=>d.duplicate(r):void 0,moveUp:d.canStep(r,-1)?()=>d.step(r,-1):void 0,moveDown:d.canStep(r,1)?()=>d.step(r,1):void 0,copy:!p&&m.duplicate?()=>d.copy(r,s):void 0,cut:f&&m.duplicate&&m.delete?()=>d.cut(r,s):void 0,paste:y&&b?{label:y.label,run:()=>d.paste(b)}:void 0,rename:e.renamePropOf(c,o)?()=>e.beginRename(o,i):void 0,hide:u||p?void 0:{hidden:a,run:()=>d.setProps(r,{_hidden:!a})},delete:f&&m.delete?()=>d.remove(r):void 0},style:v,pinnedLine:p?"Pinned — can’t be moved or deleted":void 0})}function z(n){const t=[];n.history.hasPast&&t.push({label:"Undo",icon:/* @__PURE__ */x(s,{}),shortcut:"⌘Z",onClick:n.history.back}),n.history.hasFuture&&t.push({label:"Redo",icon:/* @__PURE__ */x(a,{}),shortcut:"⇧⌘Z",onClick:n.history.forward});const o=[{label:"Add section",icon:/* @__PURE__ */x(d,{}),onClick:n.openAddSection}],i=n.nodeOps.held;if(i&&h(i.from)===e){const t=T(n,e,n.sectionBand().cap);o.push({label:`Paste ${i.label}`,icon:/* @__PURE__ */x(p,{}),shortcut:"⌘V",onClick:()=>n.nodeOps.paste(t)})}const l=[t,o,[{label:"Page settings",icon:/* @__PURE__ */x(u,{}),onClick:n.openPageSettings},{label:"Collapse all layers",icon:/* @__PURE__ */x(f,{}),onClick:n.collapseAll}]].filter(e=>e.length>0),c={label:"—",onClick:()=>{}};return l.flatMap((e,n)=>n?[c,...e]:e)}function j(e,n){const t=n.selectionStart??0,o=n.selectionEnd??0,i=n.value.slice(t,o),l=e=>{n.focus(),n.setRangeText(e,t,o,"end"),n.dispatchEvent(new Event("input",{bubbles:!0}))},c=[];i&&(c.push({label:"Copy",icon:/* @__PURE__ */x(m,{}),shortcut:"⌘C",onClick:()=>navigator.clipboard?.writeText(i)}),c.push({label:"Cut",icon:/* @__PURE__ */x(m,{}),shortcut:"⌘X",onClick:()=>{navigator.clipboard?.writeText(i),l("")}})),c.push({label:"Paste",icon:/* @__PURE__ */x(p,{}),shortcut:"⌘V",onClick:()=>{navigator.clipboard?.readText().then(e=>{e&&l(e)}).catch(()=>e.onPasteRefused())}});const r=[c,n.value?[{label:"Select all",shortcut:"⌘A",onClick:()=>{n.focus(),n.select()}}]:[]].filter(e=>e.length>0),s={label:"—",onClick:()=>{}};return r.flatMap((e,n)=>n?[s,...e]:e)}function M(e){return e.shiftKey}function S(e,n){const[t,i]=b(null),l=v(()=>i(null),[]),s=v(n=>{if(M(n))return;const t=n.target,o=function(e){const n=e?.closest?.("input, textarea");return n?n instanceof HTMLInputElement&&!["text","search","url","email","tel","number",""].includes(n.type)?null:n:null}(t);if(o)return n.preventDefault(),void i({kind:"input",x:n.clientX,y:n.clientY,el:o});const l=t?.closest?.("[data-node-id]")?.getAttribute("data-node-id"),c=l?e.locate(l):null;n.preventDefault(),i(c?{kind:"node",x:n.clientX,y:n.clientY,...c}:{kind:"empty",x:n.clientX,y:n.clientY})},[e]);c(n,"contextmenu",t=>{if(M(t)||!n)return;const o=t.target?.closest?.("[data-puck-component]")??null,l=o?.getAttribute("data-puck-component"),c=l?e.locate(l):null;t.preventDefault();const s=r(n.frame,t.clientX,t.clientY);i(c?{kind:"node",...s,...c}:{kind:"empty",...s})}),c(n,"mousedown",l),c(n,"scroll",l,{on:"window"});return{onEditorContextMenu:s,menu:t?/* @__PURE__ */x(o,{x:t.x,y:t.y,items:"node"===t.kind?w(e,t):"input"===t.kind?j(e,t.el):z(e),onClose:l}):null,closeMenu:l}}export{g as EASEL_NODE_CLIPBOARD,C as ancestorChain,A as nodeClipboardOf,w as nodeMenuItems,z as pageMenuItems,j as textMenuItems,O as useNodeClipboard,S as useNodeContextMenu};
@@ -1 +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};
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,o=e=>e?.hostFailures??i;function t(e){i=e}function a(e,n){return o(n)?.read(e)??null}function d(e,n,r){return o(r)?.loadRefusal?.(e,n)??null}function l(e){return o(e)?.unreachableMessage??"The server could not be reached."}export{s as STATUS_UNREACHABLE,e as WebsiteBackendError,d as hostLoadRefusalOf,l as hostUnreachableMessage,r as isBackendError,t as provideHostFailures,a as readHostFailure};
@@ -0,0 +1 @@
1
+ import{applyEaselChromeTheme as e}from"./chunk-3WSPDAK2.js";import{useEaselSession as t}from"./chunk-O7Q4DDJT.js";import{currentEaselSession as n,setSessionBridgedSite as r}from"./chunk-RSCMJIWS.js";import{useEaselHost as o}from"./chunk-R5ZVNJLJ.js";import{useState as s,useRef as a,useEffect as c}from"react";var u={canCreatePlatformTemplate:!1};function i(t,o={}){const s=o.session??n();s.auth.token=t.token,s.auth.brandId=t.brandId??null,r(s,t.siteId),(o.stampChromeTheme??!0)&&e(t.theme)}function m(e){const[n,r]=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=o(),h=t();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,r(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:n,tokenRef:m,capabilities:l}}export{u as NO_BRIDGED_CAPABILITIES,i as applyAuthGrant,m as useAdminBridge};
@@ -0,0 +1 @@
1
+ var e={loading:"Loading…",waitingForAuthorization:"Waiting for editor authorization…",missingTemplatePage:"Couldn’t open a page in this template.",missingPage:({slug:e})=>`No storefront page with slug "${e}".`,missingDocument:"Couldn’t open this document.",loadFailed:({cause:e})=>`Could not load the document — ${e}`,noun:"page",pageSettings:"Page settings",header:"Header",footer:"Footer",pageSections:"Template · Home page",templateSections:"Template · Template",addSection:"Add section",addSectionBefore:({name:e})=>`Add section before ${e}`,addSectionHere:"Add section here"};export{e as DEFAULT_SCREEN_WORDS};
@@ -0,0 +1,2 @@
1
+ import{routeSharedHostMessage as e}from"./chunk-QDEZQ5A6.js";import{describeLoadFailure as r,hostLoadRefusal as n}from"./chunk-ERR437B5.js";import{editLockOf as t}from"./chunk-ZOJEFIP4.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-4EUWOGZF.js";import{useAdminBridge as i}from"./chunk-KVNRNDUC.js";import{useEaselSession as c}from"./chunk-O7Q4DDJT.js";import{backendOf as l,setSessionDocumentSite as d}from"./chunk-RSCMJIWS.js";import{useEaselHost as f}from"./chunk-R5ZVNJLJ.js";import{DEFAULT_SCREEN_WORDS as g}from"./chunk-LEGAPYPC.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 P,useEffect as j,useRef as E}from"react";import{jsx as R}from"react/jsx-runtime";var C={content:[],root:{},zones:{}};var O=w(null);function B(){const e=S(O);if(!e)throw new Error("useStorefrontDocument must be used within StorefrontDocumentProvider");return e}function D({target:w,addressing:S=o,onHostMessage:B,children:D}){const A=S,{homeSlug:L,entryMayBounce:T,entryBounce:F,onSwitch:H,tellsHost:M,adapterFor:N,migrateRenamedProps:J,describeMissing:V,onLoadFailed:W}=A,[U,Y]=b(w),G=f(),Q=c(),Z=I(()=>l(Q),[Q]),x=I(()=>t(Q),[Q]),K="template"===U.kind,X="template"===U.kind?U.id:null,z="template"===U.kind?U.pageSlug??L??"":"document"===U.kind?U.slug??"":U.slug,_="page"===U.kind?U.siteId??null:null,q=Q.blocks,$=I(()=>N(U,Z,q),[N,Z,q,U.kind,"template"===U.kind?U.id:"document"===U.kind?U.record:U.siteId]),ee=$.capabilities,re=P(e=>Q.documentHooks?.stored?.(e)??e,[Q]),ne="page"===U.kind?U.originSlug??null:null;j(()=>{d(Q,_)},[Q,_]);const te=E(U);j(()=>{te.current=U},[U]);const{token:oe,tokenRef:ue,capabilities:ae}=i({onMessage:r=>{if(B?.(r)||e(r))return;const n=r;if("storefront-editor:navigate"===n?.type){const e=r;e?.target&&Sr(e.target)}}}),se=!Q.usesBridgedToken||null!==oe,ie=$.lock,ce=Boolean(Z.lock),[le,de]=b(null),[fe,ge]=b(null),[ke,me]=b(null),[ve,pe]=b(null),he=y("screen",g),ye=ve?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})}}(ve,he):null,[we,Se]=b(null),be=E(null),Ie=E(null),[Pe,je]=b(!1),Ee=E(null),[Re,Ce]=b(null),Oe=E(null),[Be,De]=b(null),Ae=E(null);j(()=>{Ae.current=Be},[Be]);const[Le,Te]=b(ee.hasEditLock?{kind:"checking"}:{kind:"editing"}),Fe=E(Le);j(()=>{Fe.current=Le},[Le]);const He=E(()=>Promise.resolve(!1)),Me=P(e=>{Ie.current=e,je(!0)},[]),Ne=k({save:async({id:e,data:r})=>{if(m(Fe.current)){if(!await He.current(e,r)){if(!m(Fe.current))return void Me({id:e,data:r});throw new Error("page save did not land")}}else Me({id:e,data:r})},onFailure:(e,r)=>{0===r&&G.send("storefront-editor:save-failed")}}),{state:Je,push:Ve,flush:We,pause:Ue,resume:Ye,stop:Ge,reset:Qe,retryNow:Ze,hasPending:xe}=Ne,Ke=E(Je);j(()=>{Ke.current=Je},[Je]);const Xe=u(Je),ze=P(()=>{const e=Ie.current;e&&(Ie.current=null,je(!1),Ve(e))},[Ve]),_e=E("");_e.current||(_e.current=v());const[qe,$e]=b(0),er=E(!1),[rr,nr]=b(T(w)),tr=E(!1);j(()=>{if(tr.current)return;tr.current=!0;const e=G.address.search(),r=F(w,e);r?G.address.load(r):T(w)&&nr(!1)},[w,G]);const or=G.send;j(()=>{if(!se)return;let e=!1;const t=te.current,o=$.resolve(z),u=Q.documentHooks?.opening?.({slug:z,isTemplate:K,capabilities:ee});return o.then(async r=>{if(e)return;if(!r)return"page"===t.kind&&null!==L&&z!==L?void G.address.load({kind:"page",slug:L,siteId:_??void 0}):(pe({target:t,slug:z,missing:!0,sentence:V?.(t)??null}),void W?.(t,null));const n=r.readOnlyReason?r.readOnlyReason:null;be.current=n,Se(n),de(r.id),ge(r.kind??null),Oe.current=r.version??null;const o=r.layout,a=o&&Object.keys(o).length?o:C,s=J(a),i=u?await u(s):s;e||me(i)}).catch(o=>{e||(console.error("[storefront-editor] document load failed",o),pe({target:t,slug:z,missing:!1,sentence:n(o,{slug:z},Q),cause:r(o,Q)}),W?.(t,o))}),()=>{e=!0}},[se,oe,K,$,z]);const ur=P(e=>new Promise(r=>{const n=Date.now(),t=setInterval(()=>{const o=ue.current;o&&o!==e?(clearInterval(t),r(o)):Date.now()-n>6e3&&(clearInterval(t),r(null))},200)}),[]),ar=P(async e=>{const r=ue.current;if(!r&&Q.usesBridgedToken)return{ok:!1,error:new Error("no editor token")};try{return{ok:!0,value:await e(r??"")}}catch(n){if(s(n,Q)){or("storefront-editor:auth-expired");const n=r?await ur(r):null;if(n)try{return{ok:!0,value:await e(n)}}catch(e){return{ok:!1,error:e}}}return{ok:!1,error:n}}},[or,ur,Q]),sr=P(async e=>{const r=ue.current?await ar(e):{ok:!1};return r.ok||or("storefront-editor:save-failed"),r.ok},[or,ar]),ir=P(async(e,r,n=!1)=>{if(null!==be.current)return!1;if(!m(Fe.current))return!1;if(Ae.current)return!1;const t=await ar(()=>$.saveLayout(e,r,Oe.current,_e.current));if(t.ok)return Oe.current=t.value.version??Oe.current,!0;const o=x.readLockTaken(t.error);if(o){const e={kind:"takenover",holder:o};return Fe.current=e,Te(e),!1}const u=x.readSaveConflict(t.error);if(u){if(u.savedByYou&&!n&&$.rereadVersion){const n=await ar(()=>$.rereadVersion(e));if(n.ok&&n.value)return Oe.current=n.value,He.current(e,r,!0)}Ge(),Ae.current=u,De(u)}return!1},[$,ar,Ge]);j(()=>{He.current=ir},[ir]);const cr=P(e=>{if(null!==be.current)return;if(or("storefront-editor:dirty"),!le)return;const r=re(e);Ee.current=r,m(Fe.current)?Ve({id:le,data:r}):Me({id:le,data:r})},[le,or,Me,Ve,re]),lr=P(async()=>{m(Fe.current)&&ze();return await We()&&null==Ie.current},[ze,We]),dr=E(lr);j(()=>{dr.current=lr},[lr]);const fr=E(ar);j(()=>{fr.current=ar},[ar]);const gr=P(()=>{G.address.reload()},[G]),kr=E(()=>Promise.resolve(!1));j(()=>{kr.current=()=>{const e=$.rereadVersion;return le&&e?p({ours:Oe.current,stored:async()=>{const r=await fr.current(()=>e(le));return r.ok?r.value:null},hasPending:()=>null!=Ie.current||xe(),reload:gr}):Promise.resolve(!1)}},[$,le,xe,gr]);const mr=null!==we;j(()=>{if(!ie||!le||!se||mr)return;let e=!1,r=null;const n=_e.current,t=x.makeClaimBeat({claim:async e=>{const r=await fr.current(()=>ie.claim(le,n,e));if(r.ok)return{heartbeat_seconds:r.value.heartbeatSeconds};throw r.error},cancelled:()=>e,currentAccess:()=>Fe.current,heldWrite:()=>({pending:null!=Ie.current||xe(),autoSaveEnabled:!Ke.current.paused,saveConflict:null!=Ae.current}),setAccess:e=>{Fe.current=e,Te(e)},releaseHeldWrite:()=>{dr.current()},startHeartbeat:e=>{r=setInterval(()=>{t(!1)},e)},stopHeartbeat:()=>{r&&(clearInterval(r),r=null)},reloadIfMoved:()=>{kr.current()}}),o=er.current;return er.current=!1,o||Te({kind:"checking"}),t(o),()=>{e=!0,r&&clearInterval(r),ie.release(le,n).catch(()=>{})}},[le,ie,se,oe,qe,mr]);const vr=P(()=>{ie&&le&&(er.current=!0,$e(e=>e+1))},[le,ie]),pr=P(()=>{Te(e=>{const r="blocked"===e.kind||"takenover"===e.kind?e.holder:null;return r?{kind:"readonly",holder:r}:e})},[]),hr=P(()=>{Ke.current.paused?(m(Fe.current)&&ze(),Ye()):Ue()},[ze,Ue,Ye]),yr=P(()=>{Ze()},[Ze]),wr=P(e=>{Ee.current=null,a("template"!==e.kind&&ce,{resetAutosave:()=>{Qe(),Ie.current=null,je(!1)},setVersion:e=>{Oe.current=e},setSaveConflict:De,setAccess:Te}),H(e),Y(e),be.current=null,Se(null),de(null),ge(null),me(null),pe(null),G.address.show(e),"document"!==e.kind&&M(e)&&G.send("storefront-editor:navigated",{target:e})},[Qe,G,ce,H,M]),Sr=P(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,te.current,L))return;const r=null!=Ie.current;if(!r&&!xe())return void wr(e);const n=Ke.current;r||n.paused||n.failed||n.stopped?Ce(e):We().then(r=>{r?wr(e):Ce(e)})},[wr,xe,We,L]),br=P(()=>Ce(null),[]),Ir=P(()=>{Ce(e=>(e&&wr(e),null))},[wr]),Pr=P(async()=>{const e=Re;if(!e)return;await lr()&&(Ce(null),wr(e))},[Re,lr,wr]),jr=P(async e=>{if(null!==be.current)return;if(!le)return;if(!m(Fe.current)||Ae.current)return;const r=re(e);if(!await ir(le,r))return void(Ae.current||or("storefront-editor:save-failed"));const n=$.publish;if(!ee.canPublish||!n)return void or("storefront-editor:saved");const t=await ar(()=>n(le,Oe.current??void 0));t.ok?(Oe.current=t.value.version??Oe.current,or("storefront-editor:published")):or("storefront-editor:save-failed")},[le,$,ee.canPublish,or,ir,ar,re]);/* @__PURE__ */
2
+ return R(O.Provider,{value:{target:U,adapter:$,capabilities:ee,templateId:X,currentSlug:z,currentKind:fe,siteId:_,ready:se,token:oe,tokenRef:ue,notifyParent:or,bridgeCapabilities:ae,runAuthed:sr,docId:le,data:ke,getLiveData:()=>Ee.current??ke,footerOriginSlug:ne,error:ye,redirecting:rr,saveStatus:Xe,saveState:Je,autoSaveEnabled:!Je.paused,autoSaveStoppedByConflict:Je.stopped,hasUnsavedEdits:Je.pending||Pe,toggleAutoSave:hr,retrySave:yr,onChange:cr,flushSave:lr,onPublish:jr,access:Le,readOnly:null!==h(Le)||null!==we,readOnlyReason:we,takeOverEditing:vr,viewReadOnly:pr,saveConflict:Be,reloadFromServer:gr,navigate:Sr,pendingNav:Re,cancelPendingNav:br,discardAndNavigate:Ir,saveAndNavigate:Pr},children:D})}export{O as ScreenDocumentContext,D as ScreenDocumentProvider,B as useScreenDocument};
@@ -0,0 +1 @@
1
+ import{useScreenDocument as n}from"./chunk-LRTIMWZG.js";import{DEFAULT_SCREEN_WORDS as o}from"./chunk-LEGAPYPC.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};
@@ -1,4 +1,4 @@
1
- import{blockRuns as e}from"./chunk-HQ4VVRIC.js";import{useScreenBlockLook as n}from"./chunk-5464H65G.js";import{useState as s,Fragment as a}from"react";import{jsxs as r,Fragment as c,jsx as o}from"react/jsx-runtime";function l({choices:l,onPick:t,open:m,onToggle:i}){const[p,u]=s(!1),{Icon:d}=n(),h=m??p;/* @__PURE__ */
1
+ import{blockRuns as e}from"./chunk-HQ4VVRIC.js";import{useScreenBlockLook as n}from"./chunk-7755VWRT.js";import{useState as s,Fragment as a}from"react";import{jsxs as r,Fragment as c,jsx as o}from"react/jsx-runtime";function l({choices:l,onPick:t,open:m,onToggle:i}){const[p,u]=s(!1),{Icon:d}=n(),h=m??p;/* @__PURE__ */
2
2
  return r(c,{children:[
3
3
  /* @__PURE__ */r("button",{type:"button",className:"sf-add-card","aria-expanded":h,onClick:i??(()=>u(e=>!e)),children:[
4
4
  /* @__PURE__ */o("span",{className:"sf-plus sf-plus--sm",children:"+"}),"Add block"]}),h&&/* @__PURE__ */o("div",{className:"sf-blockmenu",role:"menu",children:e(l).map(e=>/* @__PURE__ */r(a,{children:[e.group&&/* @__PURE__ */r("div",{className:"sf-menugroup-head",role:"presentation",children:[
@@ -1 +1 @@
1
- import{activateEaselSession as r,deactivateEaselSession as n,currentEaselSession as e}from"./chunk-AJBJ74ME.js";import{createContext as o,useEffect as t,useContext as i}from"react";import{jsx as u}from"react/jsx-runtime";var c=o(null);function m({session:e,children:o}){return r(e),t(()=>(r(e),()=>n(e)),[e]),/* @__PURE__ */u(c.Provider,{value:e,children:o})}function f(){return i(c)??e()}export{m as EaselSessionProvider,f as useEaselSession};
1
+ import{activateEaselSession as r,deactivateEaselSession as n,currentEaselSession as e}from"./chunk-RSCMJIWS.js";import{createContext as o,useEffect as t,useContext as i}from"react";import{jsx as u}from"react/jsx-runtime";var c=o(null);function m({session:e,children:o}){return r(e),t(()=>(r(e),()=>n(e)),[e]),/* @__PURE__ */u(c.Provider,{value:e,children:o})}function f(){return i(c)??e()}export{m as EaselSessionProvider,f as useEaselSession};
@@ -0,0 +1,4 @@
1
+ import{useScreenOwnerName as e}from"./chunk-7755VWRT.js";import{settlePanelPick as n}from"./chunk-Z6BAZFSW.js";import{MediaPanelHead as i,mediaPickKind as c}from"./chunk-6DJHRLCU.js";import{jsxs as o,Fragment as r,jsx as t}from"react/jsx-runtime";function l({panel:l,pick:d,onHide:m}){const p=e();/* @__PURE__ */
2
+ return o(r,{children:[
3
+ /* @__PURE__ */t(i,{context:p,pick:d?{kind:c(d.accept),field:d.title||void 0}:null,onCancel:()=>d&&n(d.requestId,null),onHide:m}),
4
+ /* @__PURE__ */t("div",{className:"sf-media-panel",children:/* @__PURE__ */t(l,{pick:d,onPick:e=>d&&n(d.requestId,e)})})]})}export{l as MediaSidePanel};
@@ -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{DEFAULT_TEXT_STYLES_WORDS as o}from"./chunk-M6F6LS3H.js";import{DEFAULT_STYLE_CLIPBOARD_WORDS as r}from"./chunk-6WY6ZXJG.js";import{DEFAULT_SCREEN_WORDS as t}from"./chunk-LEGAPYPC.js";import{DEFAULT_CANVAS_WORDS as m}from"./chunk-AELNNAFM.js";import{DEFAULT_TREE_WORDS as n}from"./chunk-3EDSDPIP.js";import{DEFAULT_PANEL_WORDS as c}from"./chunk-QTLAVDJE.js";import{DEFAULT_NODE_MENU_WORDS as s}from"./chunk-WK3AFPXY.js";import{DEFAULT_SAVE_WORDS as f}from"./chunk-H6DDIBQ4.js";import{DEFAULT_CHROME_WORDS as p,DEFAULT_NOTICE_WORDS as e}from"./chunk-ZJEBF4NB.js";import{DEFAULT_LOCK_WORDS as i}from"./chunk-RE4LP46F.js";import{DEFAULT_RAIL_WORDS as u}from"./chunk-2OAZYSWJ.js";import{DEFAULT_COPY_WORDS as k}from"./chunk-UH7IGZKF.js";import{DEFAULT_PICK_WORDS as j}from"./chunk-ZAOM6PFH.js";import{DEFAULT_FIELDS_WORDS as h}from"./chunk-FPOKPNO4.js";import{DEFAULT_DRAG_WORDS as l}from"./chunk-O2NLQBFX.js";var F={notice:e,lock:i,save:f,chrome:p,rail:u,tree:n,panel:c,fields:h,pick:j,drag:l,menu:s,styleClipboard:r,copy:k,canvas:m,textStyles:o,screen:t},P=o=>"object"==typeof o&&null!==o;function a(o,r){const t={};for(const m of Object.keys(o)){const n=o[m],c=r[m];null==c?t[m]=n:P(n)?t[m]=P(c)?a(n,c):n:t[m]=typeof c==typeof n?c:n}return t}function y(o,r){return r?a(o,r):o}export{F as DEFAULT_EASEL_STRINGS,y as mergeEaselStrings};
@@ -1 +1 @@
1
- import{resolveMediaPick as e}from"./chunk-6FY3PZS3.js";function t(t){const r=t;switch(r?.type){case"storefront-editor:media-picked":{const r=t;return r.requestId&&e(r.requestId,r.media??null),!0}case"storefront-editor:media-pick-cancelled":{const r=t;return r.requestId&&e(r.requestId,null),!0}default:return!1}}export{t as routeSharedHostMessage};
1
+ import{resolveMediaPick as e}from"./chunk-UB7JVPK4.js";function t(t){const r=t;switch(r?.type){case"storefront-editor:media-picked":{const r=t;return r.requestId&&e(r.requestId,r.media??null),!0}case"storefront-editor:media-pick-cancelled":{const r=t;return r.requestId&&e(r.requestId,null),!0}default:return!1}}export{t as routeSharedHostMessage};
@@ -0,0 +1 @@
1
+ import{textFieldIdentifier as n}from"./chunk-DUVRZ456.js";import{hidableText as r}from"./chunk-6W7WLPZH.js";function t(n,t){const o=r(n.props.name);if(o)return o;const e=r(n.props.altName);if(e)return e;const c=n.props.collection?.name;if(c)return c;const u=n.props.source?.title;if(u)return u;const s=n.props.code;return s?t?.(s)??s:""}function o(n,r,o,e,c){const u=o(t(n,e))||r(n.type);return c?c(n,"block",u):u}function e(r){if(!r)return null;for(const t of["name","altName"])if(n(r[t]))return t;return null}function c(n,t,o){const e=r(n.props?.name).trim()||t;return o?o(n,"section",e):e}export{c as rootRowName,t as slotChildName,e as slotChildRenameProp,o as slotChildRowName};
@@ -1 +1 @@
1
- import{newNodeId as t}from"./chunk-FUDHI5I4.js";function o(t){return{root:{props:{}},content:[t],zones:{}}}function n(t){return(t.content??[])[0]??null}function r(t){return Array.isArray(t)&&t.length>0&&t.every(t=>!!t&&"object"==typeof t&&"string"==typeof t.type&&"object"==typeof t.props)}function e(o){const n={...o.props,id:t(o.type)};for(const[t,o]of Object.entries(n))r(o)&&(n[t]=o.map(e));return{type:o.type,props:n}}export{e as cloneNodeWithFreshIds,n as docToNode,o as nodeToDoc};
1
+ import{newNodeId as t}from"./chunk-7GVLSNFW.js";function o(t){return{root:{props:{}},content:[t],zones:{}}}function n(t){return(t.content??[])[0]??null}function r(t){return Array.isArray(t)&&t.length>0&&t.every(t=>!!t&&"object"==typeof t&&"string"==typeof t.type&&"object"==typeof t.props)}function e(o){const n={...o.props,id:t(o.type)};for(const[t,o]of Object.entries(n))r(o)&&(n[t]=o.map(e));return{type:o.type,props:n}}export{e as cloneNodeWithFreshIds,n as docToNode,o as nodeToDoc};
@@ -0,0 +1 @@
1
+ var e=/* @__PURE__ */Symbol.for("efficient-web.efficient-backend");function n(n){return!!n&&!0===n[e]}function t(e){return e?.trim()||null}var r=null,i=/* @__PURE__ */new WeakMap,o=/* @__PURE__ */new WeakMap;function l(e){r=e}function u(e=k()){if(e.hostBackend)return e.hostBackend;let n=i.get(e);if(!n){const t=o.get(e)??r;if(!t)throw new Error("efficient-web-builder: this editor was given no backend, and its host named no default one. Pass `backend`, or load the host's default backend first (the storefront's is lib/efficient-backend).");n=t(e),i.set(e,n)}return n}function s(e){if(!e.registry)throw new Error("efficient-web-builder: this editor was mounted with no block registry. Pass `registry` to createEditorSession (the storefront's is lib/puck/config).");return e.registry}function d(e={}){const t=e.backend??null,r=null===t?e.defaultBackend??null:null,i=/* @__PURE__ */new Map,l={documentId:null,bridgedId:null},s={hostBackend:t,usesBridgedToken:null===t||n(t),blocks:e.blocks??null,registry:e.registry??null,chrome:e.chrome??null,documentHooks:e.documentHooks??null,claimsPage:e.claimsPage??!0,hostFailures:e.hostFailures??null,auth:{token:null,brandId:null},site:l,siteId:()=>l.documentId??l.bridgedId,cache:(e,n)=>(i.has(e)||i.set(e,n()),i.get(e)),forget(e){void 0===e?i.clear():i.delete(e)}};return r&&(o.set(s,r),Object.defineProperty(s,"usesBridgedToken",{get:()=>n(u(s)),enumerable:!0})),s}function c(e,n){e.site.documentId=t(n)}function a(e,n){e.site.bridgedId=t(n)}var f=d(),b=null,g=/* @__PURE__ */new Set;function k(){return b??f}function h(e){e.claimsPage&&(g.delete(e),b=e)}function m(e){e.claimsPage&&(g.add(e),queueMicrotask(()=>{g.delete(e)&&b===e&&(b=null)}))}function w(){return k().usesBridgedToken}function y(){f=d()}export{e as EFFICIENT_BACKEND,h as activateEaselSession,u as backendOf,d as createEaselSession,k as currentEaselSession,m as deactivateEaselSession,w as efficientClientOpen,n as isEfficientBackend,l as provideDefaultBackend,y as resetAmbientEaselSession,s as sessionRegistry,a as setSessionBridgedSite,c as setSessionDocumentSite};
@@ -1 +1 @@
1
- import{useSectionOps as o}from"./chunk-VV5ADNBR.js";import{decodePartId as e,encodePartId as r}from"./chunk-IYT6NN2J.js";import{usePreviewParts as t}from"./chunk-I54UCYOU.js";import{SELECTION_MODE as n}from"./chunk-5464H65G.js";import{useEasel as p}from"./chunk-P67FP7PG.js";import{useCallback as d,useEffect as c}from"react";var s=o=>"part"===o.kind;function m({mode:m,setMode:i,onOpenPart:a}){const{getSelectorForId:u}=p(o=>o),I=o(),{setSelectedPartId:f,setSelectHandler:k}=t(),l=d(o=>{const r=e(o);if(!r)return;const{nodeId:t,propKey:p}=r;p?(i(o=>s(o)&&o.nodeId===t&&o.propKey===p?o:{kind:"part",nodeId:t,propKey:p}),a?.(t)):i(o=>"part"===o.kind?n:o)},[i,a]);c(()=>{k(l)},[k,l]);const P=s(m)?r(m.nodeId,m.propKey):null;c(()=>{f(P)},[P,f]);return{selectNode:d(o=>{i(()=>n);const e=u(o);e&&I.select(e)},[i,u,I]),openPartId:P}}export{m as usePartBridge};
1
+ import{useSectionOps as o}from"./chunk-A2LFBOUF.js";import{decodePartId as e,encodePartId as r}from"./chunk-IYT6NN2J.js";import{usePreviewParts as t}from"./chunk-I54UCYOU.js";import{SELECTION_MODE as n}from"./chunk-7755VWRT.js";import{useEasel as p}from"./chunk-P67FP7PG.js";import{useCallback as d,useEffect as c}from"react";var s=o=>"part"===o.kind;function m({mode:m,setMode:i,onOpenPart:a}){const{getSelectorForId:u}=p(o=>o),I=o(),{setSelectedPartId:f,setSelectHandler:k}=t(),l=d(o=>{const r=e(o);if(!r)return;const{nodeId:t,propKey:p}=r;p?(i(o=>s(o)&&o.nodeId===t&&o.propKey===p?o:{kind:"part",nodeId:t,propKey:p}),a?.(t)):i(o=>"part"===o.kind?n:o)},[i,a]);c(()=>{k(l)},[k,l]);const P=s(m)?r(m.nodeId,m.propKey):null;c(()=>{f(P)},[P,f]);return{selectNode:d(o=>{i(()=>n);const e=u(o);e&&I.select(e)},[i,u,I]),openPartId:P}}export{m as usePartBridge};
@@ -0,0 +1 @@
1
+ import{mediaPickStoreFor as e}from"./chunk-Z6BAZFSW.js";var t=/* @__PURE__ */new Map,n=0;function o(o,i){if(!o.connected)return Promise.resolve(null);const r=(n+=1,`mp-${"undefined"!=typeof crypto&&"randomUUID"in crypto?crypto.randomUUID():String(n)}`),c=e(o);return c?c.request({requestId:r,accept:i.accept,title:i.title,file:i.file??null,...i.options?{options:i.options}:{}}):new Promise(e=>{t.set(r,e),o.send("storefront-editor:open-media-picker",{requestId:r,accept:i.accept,title:i.title,...i.file?{file:i.file}:{}})})}function i(e,n){const o=t.get(e);o&&(t.delete(e),o(n))}export{o as requestMediaPick,i as resolveMediaPick};
@@ -1,2 +1,2 @@
1
- import{useEaselHost as t}from"./chunk-R5ZVNJLJ.js";import{ScreenPartsProvider as r}from"./chunk-5464H65G.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};
1
+ import{ScreenPartsProvider as t}from"./chunk-7755VWRT.js";import{useEaselHost as r}from"./chunk-R5ZVNJLJ.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=r();/* @__PURE__ */
2
+ return i(n,{easel:h,hotkeys:d.ownsDocument,children:/* @__PURE__ */i(t,{parts:f,children:u})})}export{a as ScreenStoreProvider};
@@ -0,0 +1,2 @@
1
+ import{useEaselHost as e}from"./chunk-R5ZVNJLJ.js";import{createContext as n,useState as t,useEffect as r,useMemo as l,useContext as o,useSyncExternalStore as u,useRef as c}from"react";import{jsx as s}from"react/jsx-runtime";var i=/* @__PURE__ */new Set,f=()=>{for(const e of[...i])e()};function a(){let e=null;const n=/* @__PURE__ */new Set,t=()=>{for(const e of[...n])e();f()},r=(n,r)=>{if(!e||e.request.requestId!==n)return;const{resolve:l}=e;e=null,t(),l(r)};return{current:()=>e?.request??null,request:n=>new Promise(r=>{const l=e;e={request:n,resolve:r},t(),l?.resolve(null)}),settle:r,cancel:()=>{e&&r(e.request.requestId,null)},subscribe:e=>(n.add(e),()=>{n.delete(e)})}}var d=[],p=null,h=a(),v=()=>d[d.length-1]??p,m=()=>v()?.store??h,q=n(null);function b({panel:n,children:o}){const u=e(),[c]=t(()=>({panel:n,host:u,store:a()}));c.panel=n,c.host=u,d.includes(c)||(p=c),r(()=>{const e=d.indexOf(c);return e>=0&&d.splice(e,1),d.push(c),p?.host===c.host&&(p=null),f(),()=>{const e=d.indexOf(c);e>=0&&d.splice(e,1),p===c&&(p=null),c.store.cancel(),f()}},[c]);const i=l(()=>({panel:n,store:c.store}),[n,c]);/* @__PURE__ */
2
+ return s(q.Provider,{value:i,children:o})}function x(){return o(q)?.panel??null}function j(e){let n=null;for(let t=d.length-1;t>=0&&!n;t-=1)d[t].host===e&&(n=d[t]);n||p?.host!==e||(n=p);const t=n??v();return t?.panel?t.store:null}function w(){return null!=v()?.panel}function O(e){return m().request(e)}function g(e,n){for(const{store:t}of[...d])t.settle(e,n);p?.store.settle(e,n),h.settle(e,n)}function I(){m().cancel()}var J={current:()=>m().current(),subscribe:e=>(i.add(e),()=>{i.delete(e)}),cancel:()=>m().cancel()};function P(){return o(q)?.store??J}var S=()=>null;function k(){const e=P();return u(e.subscribe,e.current,S)}function L(){return P().cancel}function N(e,n){const t=P(),l=c(n);r(()=>{Object.is(l.current,n)||(l.current=n,e&&t.cancel())},[e,n,t])}export{b as MediaPanelProvider,I as cancelPanelPick,a as createMediaPickStore,w as hasMediaPanel,j as mediaPickStoreFor,O as requestPanelPick,g as settlePanelPick,L as useCancelPanelPick,x as useMediaPanel,k as usePanelPick,N as usePickFollowsSelection};
@@ -0,0 +1 @@
1
+ import{PAGE_CONFLICT_CODE as e,readEaselFailure as r}from"./chunk-4EUWOGZF.js";import{createEditLock as o}from"./chunk-JUQ6YJCG.js";var c=o({readFailure:r,conflictCode:e});function i(i){return i.hostFailures?i.cache("easel:edit-lock",()=>o({readFailure:e=>r(e,i),conflictCode:e})):c}export{i as editLockOf,c as pageEditLock};