efficient-easel 0.105.0 → 0.106.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.
- package/README.md +33 -0
- package/dist/chunk-2GVCAIPX.js +1 -0
- package/dist/chunk-37OCQYNX.js +65 -0
- package/dist/chunk-6WH7FA2M.js +9 -0
- package/dist/chunk-C6BJB5AC.js +2 -0
- package/dist/{chunk-TTJ54QGG.js → chunk-DX4XELD6.js} +6 -6
- package/dist/{chunk-PQXIFBDY.js → chunk-E2O2MRZR.js} +1 -1
- package/dist/{chunk-V4LF7D4F.js → chunk-FS5BLARH.js} +1 -1
- package/dist/{chunk-QH6LCNOX.js → chunk-I6T4TZ5Q.js} +1 -1
- package/dist/{chunk-NYKIQJT2.js → chunk-JWMNPRTT.js} +1 -1
- package/dist/{chunk-YN4KND5F.js → chunk-LY4K2ECT.js} +1 -1
- package/dist/chunk-M7N2V4TG.js +2 -0
- package/dist/chunk-MHKBLPQ2.js +1 -0
- package/dist/chunk-MS4QRBJ6.js +5 -0
- package/dist/chunk-ND55LTCA.js +5 -0
- package/dist/{chunk-TLZG2FCF.js → chunk-PBSEUZD6.js} +1 -1
- package/dist/{chunk-RQHC4TD6.js → chunk-UEVTQBM7.js} +3 -3
- package/dist/{chunk-BXZ6WLHC.js → chunk-VCQVNPTG.js} +16 -16
- package/dist/{chunk-SARZN4M7.js → chunk-VINYARYJ.js} +1 -1
- package/dist/chunk-WTMHT7BI.js +1 -0
- package/dist/chunk-Z6SOLDWV.js +1 -0
- package/dist/copy/index.js +9 -9
- package/dist/drag/index.d.ts +10 -0
- package/dist/drag/index.js +1 -1
- package/dist/easel/index.d.ts +10 -1
- package/dist/easel/index.js +1 -1
- package/dist/fields/index.js +1 -1
- package/dist/{host-BQ_b9Qzk.d.ts → host-CiuzZJXj.d.ts} +11 -1
- package/dist/index.js +1 -1
- package/dist/screen/components/AddBlockRow.js +1 -1
- package/dist/screen/components/AddSidePanel.js +1 -1
- package/dist/screen/components/MediaSidePanel.d.ts +1 -1
- package/dist/screen/components/MediaSidePanel.js +1 -1
- package/dist/screen/components/NodeContextMenu.d.ts +19 -1
- package/dist/screen/components/NodeContextMenu.js +1 -1
- package/dist/screen/components/PageEditGuardNotices.js +1 -1
- package/dist/screen/components/ScreenChrome.js +1 -1
- package/dist/screen/components/ScreenDocumentContext.d.ts +1 -1
- package/dist/screen/components/ScreenDocumentContext.js +1 -1
- package/dist/screen/components/ScreenMount.d.ts +1 -1
- package/dist/screen/components/ScreenMount.js +1 -1
- package/dist/screen/components/ScreenStoreProvider.d.ts +1 -1
- package/dist/screen/components/ScreenStoreProvider.js +1 -1
- package/dist/screen/components/SectionScreenShell.js +16 -16
- package/dist/screen/components/panel-widths.d.ts +15 -1
- package/dist/screen/components/panel-widths.js +1 -1
- package/dist/screen/components/usePartBridge.d.ts +1 -1
- package/dist/screen/components/usePartBridge.js +1 -1
- package/dist/screen/index.d.ts +2 -2
- package/dist/screen/index.js +1 -1
- package/dist/screen/lib/document-addressing.d.ts +1 -1
- package/dist/screen/lib/host.d.ts +1 -1
- package/dist/screen/lib/key-scope.d.ts +31 -2
- package/dist/screen/lib/key-scope.js +1 -1
- package/dist/screen/lib/media-panel.d.ts +1 -1
- package/dist/screen/lib/media-picker.d.ts +1 -1
- package/dist/screen/lib/puck/section-doc.d.ts +5 -1
- package/dist/screen/lib/puck/section-doc.js +1 -1
- package/dist/screen/lib/puck/style-clipboard.d.ts +1 -1
- package/dist/screen/lib/puck/use-section-ops.d.ts +14 -12
- package/dist/screen/lib/puck/use-section-ops.js +1 -1
- package/dist/screen/lib/screen-parts.d.ts +38 -2
- package/dist/screen/lib/screen-parts.js +1 -1
- package/dist/screen/screen.css +21 -0
- package/dist/screen/words.d.ts +17 -1
- package/dist/screen/words.js +1 -1
- package/dist/strings/catalogue.js +1 -1
- package/dist/strings/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-4XQUWGIV.js +0 -65
- package/dist/chunk-53G47SWO.js +0 -1
- package/dist/chunk-7FBDZTUD.js +0 -2
- package/dist/chunk-7V5WZ46F.js +0 -2
- package/dist/chunk-IE4GFYKO.js +0 -1
- package/dist/chunk-N7VRF7PR.js +0 -5
- package/dist/chunk-P67FP7PG.js +0 -9
- package/dist/chunk-VSHV6KJQ.js +0 -5
- package/dist/chunk-VSOP4GUM.js +0 -1
- package/dist/chunk-ZTTWFAAC.js +0 -1
package/README.md
CHANGED
|
@@ -858,6 +858,10 @@ const easel = createEasel<EaselConfig>({ config, data, onChange: (doc) => autosa
|
|
|
858
858
|
- Whatever those say, the keys do nothing while the easel-wide `edit`
|
|
859
859
|
permission is off. An undo is a write. `bindUndoKeys(target, editor)`, for
|
|
860
860
|
a host's own target, is held the same way.
|
|
861
|
+
- `bindUndoKeys(target, editor, { leaveTyping: true })` (0.106.0) leaves a
|
|
862
|
+
press where a person types — a text field, a textarea, an editable
|
|
863
|
+
region — to that field's own undo. Left out, a press there undoes the
|
|
864
|
+
easel's step, as Puck's did; the provider and the canvas bind so.
|
|
861
865
|
- **`planFields().rows` holds `slot` rows.** They draw nothing and are there so
|
|
862
866
|
the slot's name has a bucket. Filter `row.field.type !== 'slot'` before
|
|
863
867
|
drawing or counting rows of your own.
|
|
@@ -1055,6 +1059,19 @@ selected block by the menu's rules (`nodeKeys`, on unless the layer says
|
|
|
1055
1059
|
`createEaselHost({ claimEscape })`, so the menu, Add, a field's pick and a
|
|
1056
1060
|
rename box take Escape first.
|
|
1057
1061
|
|
|
1062
|
+
Add and the panels speak of the layer's own nodes (0.106.0). Add's groups are
|
|
1063
|
+
keyed apart (`AddGroup.key`, `efficient-easel/drag`), so a container may offer
|
|
1064
|
+
its blocks grouped under the catalogue's headings; "Adding to …" and
|
|
1065
|
+
"Inside …" name a node as its Layers row does where the layer says
|
|
1066
|
+
(`blockLook.rowName`); a block a layer lays down in a section of its own at a
|
|
1067
|
+
gap (`newSectionNode`) lands selected; an empty slot's canvas cell selects the
|
|
1068
|
+
slot as its row does, in `screen.canvasAddBlock`'s words; and the canvas's
|
|
1069
|
+
"Add section" pill keeps off blocks. `storageNamespace` names where widths
|
|
1070
|
+
and folds are kept (`<namespace>-panel-widths`,
|
|
1071
|
+
`<namespace>-collapsed-sections`; the website's keys without it), and
|
|
1072
|
+
`screen.railMedia`, `screen.leftPanel` and `screen.resizeLeftPanel` are the
|
|
1073
|
+
rail's Media button, the left panel's accessible name and its grip's.
|
|
1074
|
+
|
|
1058
1075
|
Two rulings of the owner's (Victor Mau, 2026-10-09) change what every host
|
|
1059
1076
|
gets, the website included: a held block PASTES ACROSS LISTS — into any list
|
|
1060
1077
|
on the way up from the node pointed at that a drag of it could land in, by the
|
|
@@ -1074,6 +1091,22 @@ last word (the campaign designer's sections are named by their `label`). And a
|
|
|
1074
1091
|
host may say the screen's toasts itself (R17, `ScreenParts.notify(message,
|
|
1075
1092
|
tone)`): every line goes to it and the screen draws none.
|
|
1076
1093
|
|
|
1094
|
+
The parity round with the old campaign designer (0.106.0) changes what every
|
|
1095
|
+
host gets as well. ONE write gate: a document is read-only for the screen when
|
|
1096
|
+
it is frozen, somebody else holds it, or a save was refused (somebody else's
|
|
1097
|
+
save moved it on); then Undo and Redo are drawn DISABLED (owner ruling R5),
|
|
1098
|
+
their keys do nothing, the store takes no edit, the Layers rows draw no trash,
|
|
1099
|
+
eye, grip or rename, and the menus offer only what writes nothing (Select
|
|
1100
|
+
layer, Copy, Copy style). Inside another app's page (`ownsDocument` false) ⌘Z
|
|
1101
|
+
/ ⇧⌘Z / ⌘Y are heard in the canvas frame too, and after a click on the
|
|
1102
|
+
editor's ground (its root takes focus, never a tab stop), and never in a text
|
|
1103
|
+
field or an editable region, where they are the field's own. A row's
|
|
1104
|
+
right-click is that row's: a pinned node's row opens its node's menu, a rung's
|
|
1105
|
+
row opens none, and the ground's "Page settings" is `screen.pageSettings`.
|
|
1106
|
+
And `blockRules.stripCopy(node)` cleans every copy the screen makes — the
|
|
1107
|
+
menu's Duplicate and Paste, ⌘V, a saved section put in from Add — of what
|
|
1108
|
+
only its original may hold (the campaign designer's baked picture).
|
|
1109
|
+
|
|
1077
1110
|
- **Every module is a subpath of its own** (`efficient-easel/screen/lib/session`,
|
|
1078
1111
|
`efficient-easel/screen/components/ScreenChrome`): hosts and their guards
|
|
1079
1112
|
import them one by one, and two export different types under one name.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{newNodeId as t}from"./chunk-PLVEGYK6.js";function o(t){return{root:{props:{}},content:[t],zones:{}}}function r(t){return(t.content??[])[0]??null}function n(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,r){const p={...o.props,id:t(o.type)};for(const[t,o]of Object.entries(p))n(o)&&(p[t]=o.map(t=>e(t,r)));const s={type:o.type,props:p};if(!r)return s;const c=r(s);return{...c,props:{...c.props,id:p.id}}}export{e as cloneNodeWithFreshIds,r as docToNode,o as nodeToDoc};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import{dedupeSlotChildren as e}from"./chunk-26OOWIJJ.js";import{styleClipboardOf as n}from"./chunk-SQTY6CJD.js";import{markedTreeNodeId as t,revealSelectedTreeRow as o,sameSelector as r}from"./chunk-FGNR22NY.js";import{cloneNodeWithFreshIds as i}from"./chunk-2GVCAIPX.js";import{rootRowName as l,slotChildRowName as s,slotChildRenameProp as d,sectionRenameProp as c}from"./chunk-TBF5CVPA.js";import{scrollPreviewToSection as a,gotoPreviewSlide as p,scrollPreviewToTop as u}from"./chunk-4ES5JGGX.js";import{useEaselKeyTarget as f,useEaselUndoKeys as h,editorRootFocus as m}from"./chunk-MHKBLPQ2.js";import{SlotChildActionsProvider as g}from"./chunk-KCBEE2MC.js";import{UiIcon as y}from"./chunk-5MZ3RNQQ.js";import{screenStorageKeys as k,DEFAULT_PANEL_W as S,clampPanelWidth as v}from"./chunk-WTMHT7BI.js";import{usePartBridge as x}from"./chunk-LY4K2ECT.js";import{useSectionOps as b}from"./chunk-PBSEUZD6.js";import{useNodeClipboard as w,useNodeContextMenu as z}from"./chunk-M7N2V4TG.js";import{PageEditGuardNotices as B}from"./chunk-FS5BLARH.js";import{useScreenDocument as C}from"./chunk-C6BJB5AC.js";import{requestMediaPick as N}from"./chunk-KG7RJWOK.js";import{heldStyle as $,styleShortcut as T}from"./chunk-57DJOKXT.js";import{AddChildRow as O}from"./chunk-3QVB4AG2.js";import{AddSidePanel as I}from"./chunk-MS4QRBJ6.js";import{SidePanelHead as P,PanelShowStrip as A}from"./chunk-5ZBBXZPV.js";import{MediaSidePanel as M}from"./chunk-JWMNPRTT.js";import{useScreenSaveSwitch as R,useScreenNodeKeys as j,useScreenPinned as E,useScreenDocumentLabel as L,useScreenCanvasFrame as D,useScreenInspectorPanel as V,useScreenDevices as H,useScreenPickFollowsSelection as F,useScreenLeftView as W,useScreenAdd as G,SELECTION_MODE as J,sameInspectorMode as U,useScreenBridges as Y,useScreenBlockRules as K,useScreenBlockLook as Q,useScreenStorageNamespace as X,useScreenNotify as Z,useScreenCanvasHead as _,isSlotMode as q,useScreenStyleClipboard as ee,useScreenDocumentPass as ne,useScreenCanvasDrag as te,ScreenCanvasTargetProvider as oe,isPinnedFirst as re,isPinnedLast as ie,screenSlotsOf as le}from"./chunk-ND55LTCA.js";import{ROOT_ZONE as se,blockNodeActions as de,TREE_MAX_DEPTH as ce,childSlotsOf as ae,slotFieldsOf as pe,slotChildrenIn as ue,nestsInTree as fe,newNodeId as he}from"./chunk-PLVEGYK6.js";import{useMediaPanel as me,usePanelPick as ge,useCancelPanelPick as ye}from"./chunk-R6WTQWAC.js";import{useEaselHost as ke,useHostEscape as Se}from"./chunk-U3JP4VGF.js";import{DEFAULT_SCREEN_WORDS as ve}from"./chunk-E2O2MRZR.js";import{useEasel as xe,useEaselApi as be}from"./chunk-6WH7FA2M.js";import{toItemSelector as we,useNodeOps as ze}from"./chunk-D2BCHTQR.js";import{TreeRow as Be,Subtree as Ce,LayersTree as Ne,TreeGroupLabel as $e,TreeRowAction as Te,TreeSeam as Oe}from"./chunk-ZFDCDJNZ.js";import{saveIndicator as Ie}from"./chunk-H6DDIBQ4.js";import{EaselTopBar as Pe,TopBarRail as Ae,TopBarCluster as Me,EaselIconButton as Re,TopBarDivider as je,DeviceSwitch as Ee,InspectorIconButton as Le,PanelResizeHandle as De,MAX_PANEL_W as Ve,MIN_PANEL_W as He,panelWidthVars as Fe,SaveState as We,SaveStateToggle as Ge}from"./chunk-YC4TB3CJ.js";import{useWords as Je}from"./chunk-MFIRYGHW.js";import{CanvasDragLayer as Ue}from"./chunk-DX4XELD6.js";import{createDragSession as Ye,useTreeDrag as Ke,gapToMoveIndex as Qe}from"./chunk-67GNT6PF.js";import{useCanvasFrame as Xe,BLOCK_SELECTOR as Ze,useCanvasEvent as _e}from"./chunk-PAELDYYS.js";import{LayersIcon as qe,MediaIcon as en,UndoIcon as nn,RedoIcon as tn,TrashIcon as on,DuplicateIcon as rn}from"./chunk-L5KW4HG5.js";import{zoneKey as ln,ROOT_ID as sn,ROOT_SLOT as dn,parseZoneKey as cn,DataError as an}from"./chunk-KRXQM65X.js";import{useRef as pn,useMemo as un,useState as fn,useEffect as hn,useCallback as mn,useLayoutEffect as gn,Fragment as yn}from"react";import{jsx as kn,jsxs as Sn,Fragment as vn}from"react/jsx-runtime";function xn({saveState:e,notSaving:n,readOnlyReason:t,toggle:o,onToggle:r,onRetry:i}){if(null!==t)/* @__PURE__ */return kn(We,{tone:"off",label:t,role:"status"});if(n)/* @__PURE__ */
|
|
2
|
+
return kn(We,{tone:e.pending?"off-unsaved":"off",label:"Not saving — see the notice above",role:"status"});const{tone:l,label:s}=Ie(e),d=e.failed&&!e.paused&&/* @__PURE__ */kn("button",{type:"button",className:"es-btn-ghost",onClick:i,children:"Retry now"});/* @__PURE__ */
|
|
3
|
+
return Sn(vn,o?{children:[
|
|
4
|
+
/* @__PURE__ */kn(Ge,{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__ */kn(We,{tone:l,label:s})}),d]}:{children:[
|
|
5
|
+
/* @__PURE__ */kn(We,{tone:l,label:s,role:"status"}),d]})}function bn({expand:e}){/* @__PURE__ */
|
|
6
|
+
return kn("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.9,strokeLinecap:"round",strokeLinejoin:"round",children:/* @__PURE__ */Sn(vn,e?{children:[
|
|
7
|
+
/* @__PURE__ */kn("path",{d:"M8 9l4-4 4 4"}),
|
|
8
|
+
/* @__PURE__ */kn("path",{d:"M8 15l4 4 4-4"})]}:{children:[
|
|
9
|
+
/* @__PURE__ */kn("path",{d:"M8 4l4 4 4-4"}),
|
|
10
|
+
/* @__PURE__ */kn("path",{d:"M8 20l4-4 4 4"}),
|
|
11
|
+
/* @__PURE__ */kn("path",{d:"M5 12h14"})]})})}function wn(e,n,t){const o=t-n;if(o<6)return null;if(o<26)return{top:Math.round((n+t)/2),height:Math.round(o)};return{top:Math.round(Math.min(Math.max(e,n+13),t-13))}}var zn="__rungs";var Bn="screen:band",Cn={duplicate:!0,delete:!0};function Nn(){const Ie=ke(),{target:We,docId:Ge,capabilities:Nn,currentSlug:$n,siteId:Tn,onPublish:On,saveState:In,saveConflict:Pn,retrySave:An,toggleAutoSave:Mn,readOnly:Rn,readOnlyReason:jn=null}=C(),En=R(),Ln=j(),{mediaEditing:Dn,hasEditGuard:Vn,hasPinnedChrome:Hn}=Nn,{appState:Fn,dispatch:Wn,history:Gn,selectedItem:Jn,getSelectorForId:Un,config:Yn}=xe(e=>e),Kn=E(),{first:Qn,firstGroup:Xn,lastGroup:Zn,isSectionGroup:_n,sectionGroupZone:qn,panelOf:et}=Kn,nt=et(Qn),tt=e=>re(Kn,e),ot=e=>ie(Kn,e),rt="node"===Kn.firstRow,it=Kn.band??null,lt=Je("screen",ve),st=L()??`/${$n}`,dt=D(),ct=V(),at=b({readOnly:Rn}),pt=pn(null),ut=be(),ft=un(()=>({...at,select:e=>{pt.current=e,at.select(e)},commitDocument:(e,n)=>{if(void 0!==n){const t=ut.config;pt.current=we(e,t,n)}at.commitDocument(e,n)}}),[at,ut]),ht=Fn.ui,mt=ht.leftSideBarVisible,gt=ht.rightSideBarVisible,{options:yt,widths:kt,initial:St,fluid:vt,fit:xt}=H(),[bt,wt]=fn(St),zt=me(),Bt=Dn&&null!==zt,Ct=ge(),Nt=ye();F(Jn?.props.id);const{read:$t,write:Tt,forSelection:Ot}=W(),[It,Pt]=fn($t);hn(()=>{Tt(It)},[It]);const[At,Mt]=fn(0),Rt=pn(null),jt=pn(null),Et=Xe(jt,{readySelector:Ze}),Lt=f(jt);h(jt,Et);const[Dt,Vt]=fn(!1),Ht=pn(!1),Ft=pn(!1),[Wt,Gt]=fn(null),Jt=G(),Ut=e=>Gt(null===e?null:{zone:se,index:e}),[Yt,Kt]=fn([]),[Qt,Xt]=fn(J),Zt="puck"===Qt.kind,_t=Dt&&!Wt&&Jt.railTarget?Jt.railTarget(Fn.data,{node:Jn??null,mode:Qt}):null,qt=_t?{zone:ln(_t),index:_t.index}:null,eo=Wt??qt,no=eo&&eo.zone===se?eo.index:null,to=t(Qt,Jn?.props.id),[oo,ro]=fn(null);hn(()=>{oo&&(o(),ro(null))},[oo]);const io=pn(Un);io.current=Un;const lo=mn((e,{scroll:n})=>{Pt(n=>Ot(e,n)),n&&ro(e);const t=[];let o=e;for(let e=0;e<4;e++){const e=io.current(o)?.zone;if(!e||!e.includes(":"))break;const n=e.split(":")[0];t.push(n),t.push(e),o=n}0!==t.length&&Eo(e=>{if(t.every(n=>!e.has(n)))return e;const n=new Set(e);return t.forEach(e=>n.delete(e)),n})},[]),so=pn(null);hn(()=>{const e=so.current;so.current=null;const n=null==Jn?.props.id?null:String(Jn.props.id);Xt(e&&e.id===n?e.mode:et(Jn?.type)??J);const t=Jn?.props.id,o=pt.current;if(pt.current=null,!t)return;const i=Un(t);lo(String(t),{scroll:!r(o,i??null,se)})},[Jn?.props.id,lo]);const co=mn(e=>{Xt(n=>U(n,e)?n:e),Wn({type:"setUi",ui:{rightSideBarVisible:!0}})},[Wn]),ao=pn(()=>{});ao.current=(e,n)=>{const t=e?Ar(e.zone??se)[e.index]?.props.id:null,o=null==t?null:String(t),r=null==Jn?.props.id?null:String(Jn.props.id);Xt(e=>U(e,n)?e:n),o!==r&&(so.current={id:o,mode:n},ft.select(e))};const po=mn((e,n)=>ao.current(e,n),[]),uo={kind:Qt.kind,mode:Qt,open:co,show:e=>Xt(e),reveal:()=>{gt||Wn({type:"setUi",ui:{rightSideBarVisible:!0}})},select:po},fo=Y(uo,{data:Fn.data,selected:Jn??null,zoneOf:e=>Un(e)?.zone,readOnly:Boolean(Rn),select:e=>{Xt(J),ft.select({index:e})},replace:(e,n)=>ft.replaceComponent(se,e,n),scrollTo:e=>ri(e)},{device:bt,refreshes:At},{setView:Pt,reveal:()=>{mt||Wn({type:"setUi",ui:{leftSideBarVisible:!0}})}}),ho=fo.pinnedSource??!1,mo=fo.resolveLeftView?fo.resolveLeftView(It,Bt):"media"===It&&Bt?It:"sections",go=K(),{isLockedBlock:yo,duplicateBlocked:ko,nestDepth:So,newSectionNode:vo,canAddTo:xo,blockIsOffered:bo}=go,wo=Q(),{labelAtLevel:zo,Icon:Bo,useProducts:Co}=wo,No=wo.rowName?(e,n,t)=>wo.rowName(e,n,t):void 0,$o=mn(e=>{Wn({type:"setUi",ui:{rightSideBarVisible:!0}}),a(e),lo(e,{scroll:!0})},[Wn,lo]),{selectNode:To,openPartId:Oo}=x({mode:Qt,setMode:Xt,onOpenPart:$o}),[Io,Po]=fn(null);Se(null!==Io,()=>Po(null));const Ao=k(X()),Mo=Ao.collapsed,Ro=Ao.panelWidths,[jo,Eo]=fn(()=>{if("undefined"==typeof window)/* @__PURE__ */return new Set;try{const e=window.localStorage.getItem(Mo);return new Set(e?JSON.parse(e):[])}catch{/* @__PURE__ */
|
|
12
|
+
return new Set}});hn(()=>{try{window.localStorage.setItem(Mo,JSON.stringify([...jo]))}catch{}},[jo]);const[Lo,Do]=fn(()=>{if("undefined"==typeof window)return{...S};try{const e=window.localStorage.getItem(Ro);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}}});hn(()=>{const e=setTimeout(()=>{try{window.localStorage.setItem(Ro,JSON.stringify(Lo))}catch{}},300);return()=>clearTimeout(e)},[Lo]);const Vo=mn((e,n)=>Do(t=>{const o="function"==typeof n?n(t[e]):n;return t[e]===o?t:{...t,[e]:o}}),[]),Ho=mn(e=>Vo("left",e),[Vo]),Fo=mn(e=>Vo("right",e),[Vo]),Wo=e=>jo.has(e),Go=e=>Eo(n=>{const t=new Set(n);return t.has(e)?t.delete(e):t.add(e),t}),Jo=pn(!1),Uo=pn(null);hn(()=>{if(Jo.current&&!Dt){const e=Uo.current,n=e&&e.isConnected&&!e.closest('[aria-hidden="true"]')?e:null;(n??jt.current?.querySelector(`button[aria-label="${CSS.escape(lt.add.title)}"]`))?.focus(),Uo.current=null}Jo.current=Dt},[Dt]),hn(()=>{if(!Dt||!Lt)return;const e=e=>{"Escape"===e.key&&fi()};return Lt.addEventListener("keydown",e),()=>Lt.removeEventListener("keydown",e)},[Dt,Lt]),Se(Dt,()=>fi()),hn(()=>{!mt&&Dt&&(Vt(!1),Gt(null),Ht.current=!1)},[mt]),hn(()=>{if(!Ct)return Ft.current&&Wn({type:"setUi",ui:{leftSideBarVisible:!1}}),void(Ft.current=!1);Dt&&(Vt(!1),Gt(null),Ft.current=Ht.current,Ht.current=!1),mt||(Ft.current=!0,Wn({type:"setUi",ui:{leftSideBarVisible:!0}}))},[Ct]),hn(()=>{!mt&&Ct&&(Ft.current=!1,Nt())},[mt]),hn(()=>{if(!Ct||!Lt)return;const e=e=>{"Escape"===e.key&&Nt()};return Lt.addEventListener("keydown",e),()=>Lt.removeEventListener("keydown",e)},[Ct,Lt]),Se(null!==Ct,()=>Nt());const Yo=Z(),[Ko,Qo]=fn(null),[Xo,Zo]=fn(0),_o=pn(null),qo=(e,n="success")=>{Yo?Yo(e,"error"===n?"error":"info"):(Qo({msg:e,tone:n}),Zo(e=>e+1),_o.current&&clearTimeout(_o.current),_o.current=setTimeout(()=>Qo(null),"error"===n?3200:1900))};hn(()=>()=>{_o.current&&clearTimeout(_o.current)},[]);const er=pn(null),[nr,tr]=fn(0),[or,rr]=fn(0),ir=_(),lr=pn(null),sr=e=>Math.max(0,e.clientHeight-(lr.current?.offsetHeight??0));hn(()=>{const e=er.current;if(!e)return;const n=()=>{tr(e.clientWidth),rr(sr(e))};n();const t=new ResizeObserver(n);return t.observe(e),lr.current&&t.observe(lr.current),()=>t.disconnect()},[]),gn(()=>{er.current&&(tr(er.current.clientWidth),rr(sr(er.current)))},[Lo,mt,gt]);const dr=bt===vt?nr>0?nr:kt[vt]:kt[bt],cr=nr>0?Math.min(nr/dr,"shrink"===xt?1:2):1,ar=dr*cr,pr=nr>0&&ar>nr+1,ur={width:ar,height:or||"100%",flex:"none",position:"relative"},fr={width:dr,height:or?or/cr:"100%",maxHeight:"none",transform:1!==cr?`scale(${cr})`:void 0,transformOrigin:"top left"},hr=()=>Wn({type:"setUi",ui:{leftSideBarVisible:!mt}}),mr=()=>Wn({type:"setUi",ui:{rightSideBarVisible:!gt}}),gr=e=>{Dt&&(Vt(!1),Gt(null),Ht.current=!1,mt&&It===e)||Ct&&(Ft.current=!1,Nt(),mt&&It===e)||(mt&&It===e?hr():(Pt(e),mt||Wn({type:"setUi",ui:{leftSideBarVisible:!0}})))},yr=()=>{N(Ie,{accept:"image/*",title:"Media library"})},kr=()=>{Xt(J),ft.select(null),u()},Sr=()=>{Xt(nt??J),gt||Wn({type:"setUi",ui:{rightSideBarVisible:!0}})},vr=Fn.data.content??[],xr=()=>{const e=vr.findIndex(tt),n=vr.findIndex(ot);return{floor:e>=0?e+1:0,cap:n>=0?n:vr.length}},br=Yn,wr=go.stripCopy,zr=e=>i(e,wr),Br=w(),Cr=ze({data:Fn.data,config:br,readOnly:Boolean(Rn),clipboard:Br,strip:wr?e=>wr(e):void 0,afterRemove:"none",stepBounds:(e,n)=>{if(e.parentId!==sn||e.slot!==dn)return{min:0,max:n-1};const{floor:t,cap:o}=xr();return{min:t,max:o-1}},commit:(e,{select:n})=>{void 0!==n&&Xt(J);const t=void 0===n||"node"===n?.kind?n:null;ft.commitDocument(e,t)}}),Nr=e=>Yn.components[e]?.label??e,$r=mn(e=>Yn.components[e]?.defaultProps??{},[Yn]),Tr=e=>zo(e,"section",Nr(e)),Or=e=>l({type:e.type,props:e.props??{}},Tr(e.type),No),{nodeAddresses:Ir,zoneItems:Pr}=un(()=>{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>=ce)return;const s=/* @__PURE__ */new Map;for(const{child:e,zone:t}of ae(Yn,n))s.set(t,[...s.get(t)??[],e]);for(const[e,n]of s)t(n,e,i+1)})};return t(vr,se,0),{nodeAddresses:e,zoneItems:n}},[vr,Yn]),Ar=mn(e=>Pr.get(e)??[],[Pr]),Mr=e=>{const n=Ir.get(e);return n?Ar(n.zone)[n.index]:void 0},Rr=e=>le(go,Yn,e),jr=e=>{if(!go.slotsOf||e===se)return null;const n=e.lastIndexOf(":");if(n<=0)return null;const t=Mr(e.slice(0,n));if(!t)return null;const o=Rr(t).filter(e=>e.rung),r=o.findIndex(t=>t.slot===e.slice(n+1));return r<0?null:{node:t,slot:o[r],position:r}},Er=(()=>{if(!q(Qt))return null;const e=`${Qt.nodeId}:${Qt.slot}`;return jr(e)?.slot.panel===Qt.kind?e:null})(),Lr=pn(null);hn(()=>{const e=Lr.current;if(Lr.current=null,!Er||!q(Qt))return;const n=Qt.nodeId;lo(n,{scroll:e!==Er}),Eo(e=>{if(!e.has(n))return e;const t=new Set(e);return t.delete(n),t})},[Qt]);const Dr=(e,n,t)=>{const o=String(e.props.id);if(!n.panel)return void(e=>{const n=Ir.get(e);n&&(n.zone===se?ii(n.index):Ri(n.zone,n.index,e,Mr(n.zone.slice(0,n.zone.lastIndexOf(":")))?.type??""))})(o);const r={kind:n.panel,nodeId:o,slot:n.slot},i=`${o}:${n.slot}`;t&&Er!==i&&(Lr.current=i),po(null,r),gt||Wn({type:"setUi",ui:{rightSideBarVisible:!0}}),ri(o)},Vr=(e,n,t)=>{const o=`${e}:${n}`;if(Eo(n=>{if(!n.has(o)&&!n.has(e))return n;const t=new Set(n);return t.delete(o),t.delete(e),t}),!t)return;Er!==o&&(Lr.current=o);po(null,{kind:t,nodeId:e,slot:n})},Hr=(e,n,t)=>{if(Rn||!go.moveSlot)return;const o=Mr(e),r=o?Rr(o).filter(e=>e.rung):[],i=r[n];if(!i)return;const l={parentId:e,slot:zn,index:n},s=Qe(l,{...l,index:Math.min(Math.max(t,0),r.length)});if(s===n)return;const d=go.moveSlot(e,n,s);"string"==typeof d&&Vr(e,d,i.panel)},Fr=Co(),Wr=un(()=>{const e=/* @__PURE__ */new Map;for(const n of Fr??[])e.set(n.slug,n.name);return e},[Fr]),Gr=e=>s(e,Nr,wo.plainText,e=>Wr.get(e),wo.rowName),Jr=(e,n)=>{const t=Yn.components[e.type]?.fields,o=n===se||qi(n)?"section":"block",r=n===se&&(tt(e)||ot(e)||_n(e.type)),i="block"===o?d(t):r?null:c(t);return wo.renamePropOf?wo.renamePropOf(e,o,i):i},Ur=(e,n,t,o)=>{if(!(!Rn&&Io?.zone===e&&Io.index===n))return;const r=(t,o)=>{Po(null),o&&((e,n,t)=>{const o=Ar(e)[n];if(!o)return;const r=Jr(o,e);r&&ft.replaceComponent(e,n,{...o,props:{...o.props,[r]:t.trim()}})})(e,n,t)};/* @__PURE__ */
|
|
13
|
+
return kn("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)},Yr=n(ee()),Kr=Yr.scope({target:We,siteId:Tn,docId:Ge}),Qr=Yn,Xr=(e,n)=>n===se?Tr(e):Nr(e),Zr=(e,n,t)=>{const o=Yr.plan(Kr,t,Xr(t.type,e),Qr);o&&(o.changed&&ft.replaceComponent(e,n,{...t,props:{...o.props,id:t.props.id}}),qo(o.message))},_r=z({nodesIn:Ar,nodeAt:(e,n)=>Ar(e)[n]??null,labelOf:(e,n)=>n===se?Tr(e):Nr(e),renamePropOf:Jr,beginRename:(e,n)=>Po({zone:e,index:n}),history:{hasPast:Gn.hasPast,hasFuture:Gn.hasFuture,back:()=>Gn.back(),forward:()=>Gn.forward()},openAddSection:()=>{ft.select(null),pi(null)},openPageSettings:()=>{ft.select(null),Xt(J)},pageSettingsLabel:lt.pageSettings,readOnly:Boolean(Rn),collapseAll:()=>Eo(new Set(Ar(se).map(e=>String(e.props.id)))),onPasteRefused:e=>qo(e?lt.pasteRefused({name:e.label}):"Your browser won’t let us read the clipboard — press ⌘V","error"),canPasteAt:(e,n)=>nl(e,n),menuRows:fo.menuRows,isLocked:e=>yo(e.type),duplicateBlocked:e=>ko(Fn.data,e),permits:e=>de(Yn,e.type),canAddTo:xo,nodeOps:Cr,isPinned:(e,n)=>n===se&&(tt(e)||ot(e)),sectionBand:xr,openAddInside:(e,n)=>{e===se?ii(n):ft.select({zone:e,index:n}),pi(null)},locate:e=>Ir.get(e)??null,rowNameOf:(e,n)=>n===se?Or(e):Gr(e),selectAt:(e,n,t,o)=>{e===se?ii(n):Ri(e,n,t,o??"")},slotRung:e=>{const n=jr(e);return n?.slot.panel?{label:n.slot.label,select:()=>Dr(n.node,n.slot,!1)}:null},style:{held:()=>$(Kr),canCopy:e=>Yr.rows(Qr,e).some(e=>!1!==e.counted),copy:(e,n)=>Yr.copy(Kr,e,Xr(e.type,n),Qr),paste:(e,n,t)=>Zr(e,n,t)},keys:Ln?{target:Lt,selected:()=>{const e=Fn.ui.itemSelector;return e?{zone:e.zone??se,index:e.index}:null},held:()=>Br.get(),readOnly:Boolean(Rn),onDone:({done:e,name:n})=>{"copied"===e&&qo(lt.copied({name:n}))}}:void 0},Et),qr=pn({copy:(e,n)=>{},paste:(e,n,t)=>{},at:()=>null,readOnly:!1});hn(()=>{qr.current={copy:(e,n)=>Yr.copy(Kr,e,Xr(e.type,n),Qr),paste:Zr,at:()=>{const e=Fn.ui.itemSelector;if(!e)return null;const n=e.zone??se,t=Ar(n)[e.index];return t?{zone:n,index:e.index,node:t}:null},readOnly:Boolean(Rn)}});const ei=mn(e=>{const n=T(e);if(!n)return;const t=qr.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))},[]);hn(()=>{if(!Lt)return;const e=e=>ei(e);return Lt.addEventListener("keydown",e),()=>Lt.removeEventListener("keydown",e)},[ei,Lt]),_e(Et,"keydown",ei);const ni=vr.map(e=>e.props.id).join("|");hn(()=>{const e=Et?.document??null,n=Et?.window??null;let t=0;const o=[],r=()=>{if(!e)return void Kt(e=>e.length?[]:e);const n=vr.findIndex(ot),t=n>=0?n:vr.length,o=n=>{const t=vr[n]?.props?.id;return null==t?null:e.querySelector(`[data-puck-component="${CSS.escape(String(t))}"]`)},r=e=>e?[...e.querySelectorAll(Ze)].map(e=>e.getBoundingClientRect()).filter(e=>e.width>0||e.height>0):[],i=[];for(let e=1;e<=t;e++){const n=o(e),t=o(e-1),l=n?.getBoundingClientRect()??null,s=t?.getBoundingClientRect()??null;if(!l&&!s)continue;const d=wn(l&&s?(s.bottom+l.top)/2:l?l.top:s.bottom,Math.max(-1/0,...r(t).map(e=>e.bottom)),Math.min(1/0,...r(n).map(e=>e.top)));d&&i.push({...d,index:e})}Kt(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||e[t].height!==n[t].height)return!1;return!0}(e,i)?e:i)},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()}},[Et,ni,bt,cr,mt,gt,Jn?.props.id]);const ti=Et?.document??null,oi=Et?.window??null;hn(()=>{const e=Rt.current;if(!e||!ti||!oi)return;const n=[],t=()=>{const n=ti.querySelector(`[data-puck-component="${CSS.escape(e.id)}"]`);if(!n)return!1;const t=n.getBoundingClientRect().top-e.offset;return Math.abs(t)>1&&oi.scrollTo({left:oi.scrollX,top:oi.scrollY+t,behavior:"instant"}),!0};return Rt.current=null,t()&&n.push(setTimeout(t,150),setTimeout(t,450)),()=>n.forEach(clearTimeout)},[ti,oi]);const ri=e=>{fo.holdCanvasOn?fo.holdCanvasOn(e):a(e)},ii=e=>{Xt(J),ft.select({index:e}),fo.sectionPressed?.(vr[e]);const n=vr[e]?.props?.id;n&&ri(n)},li=e=>{const{floor:n,cap:t}=xr(),o=e=>Math.min(Math.max(n,e),t);if("number"==typeof e)return o(e);const r=Jn&&Qt.kind!==nt?.kind?vr.findIndex(e=>e.props.id===Jn.props.id):-1;return o(r>=0?r+1:t)},si=(e,n)=>{const{floor:t,cap:o}=xr(),r=Math.min(Math.max(n,t),o),i=e<r?r-1:r;return i===e?{moved:!1,dest:e}:(ft.reorderComponent(se,e,i),ft.select({index:i}),{moved:!0,dest:i})},di=(e,n,t,o)=>{Xt(J),ft.select(o?{index:o.index,zone:o.zone}:{index:e}),a(n),qo(`Added “${t}” section`)},ci=(e,n)=>{const t=li(n),o=vo(e,{nodeDefaults:$r,newNodeId:he,sectionLabel:Tr,blockIsOffered:bo}),r=o?ft.insertNode(se,t,o):ft.insertSection(e,t);return di(t,r,Tr(e),o?((e,n,t)=>{if(e.type===t)return null;const o={at:null},r=(e,n,i)=>{const l=i.filter(n=>n===e.type).length;for(const{child:s,zone:d,index:c}of ae(Yn,e)){if(s.type===t&&(!o.at||n>o.at.depth)){const r=xo(e.type,l,d.slice(d.lastIndexOf(":")+1)),i=r?.choices??(r?.spec?[{type:r.spec.childType,label:r.spec.childType}]:[]);null!==r&&"footer"!==r.source&&`${e.props.id}:${r.slot}`===d&&i.some(e=>e.type===t)&&(o.at={zone:d,index:c,depth:n})}r(s,n+1,[...i,e.type])}};return r({type:e.type,props:{...e.props,id:n}},1,[]),o.at?{zone:o.at.zone,index:o.at.index}:null})(o,r,e):null),t},ai=(e,n,t)=>{const o=li(t),r=ft.insertNode(se,o,n);return di(o,r,e),o},pi=e=>ui(se,e),ui=(e,n)=>{Uo.current=document.activeElement??null,Ct&&(Ht.current=Ft.current,Ft.current=!1,Nt()),Gt(null===n?null:{zone:e,index:n}),Vt(!0),mt||(Ht.current=!0,Wn({type:"setUi",ui:{leftSideBarVisible:!0}}))},fi=()=>{Vt(!1),Gt(null),Ht.current&&Wn({type:"setUi",ui:{leftSideBarVisible:!1}}),Ht.current=!1},hi=(e,n,t)=>{if("section"===e.kind)ft.insertComponent(n,e.type,t);else{if("template"!==e.kind)return;ft.insertNode(n,t,zr(e.template.node))}Xt(J),ft.select({index:t,zone:n})},mi=(e,n)=>wo.rowName?n?tt(e)?wo.rowName(e,"section",lt.header):ot(e)?wo.rowName(e,"section",lt.footer):_n(e.type)?wo.rowName(e,"section",Nr(e.type)):Or(e):Gr(e):n?Tr(e.type):Nr(e.type),gi=e=>n=>{n.target.closest(".es-tree-select")||e()},yi=()=>fo.editPinnedSource?.(),ki=(e,n,t)=>{if(Rn)return null;const o=Ar(e)[n];return o&&!de(Yn,o.type).delete?null:/* @__PURE__ */kn(Te,{kind:"delete",label:`Delete ${t}`,onClick:()=>((e,n)=>{const t=Ar(e)[n]?.props?.id;null!=t&&Cr.remove(String(t))})(e,n),children:/* @__PURE__ */kn(on,{size:15})})},Si=e=>wo.rowPreview?.(e)||void 0,vi=e=>wo.rowMarks?.(e)??void 0,xi=(e,n,t)=>wo.rowActions?.(e,n,t)??null,bi=(e,n,t,o)=>{if(Rn)return null;const r=Boolean(t.props._hidden);/* @__PURE__ */
|
|
14
|
+
return kn(Te,{kind:"eye",label:r?`Show ${o}`:`Hide ${o}`,onClick:()=>zi(e,n,t),children:/* @__PURE__ */kn(y,r?{name:"eye-off",size:14}:{name:"eye",size:14})})},wi=e=>{const n=Tr(vr[e]?.type??""),t=n?lt.addSectionBefore({name:n}):lt.addSectionHere;return xl(se,e,()=>pi(e),t)},zi=(e,n,t)=>{ft.replaceComponent(e,n,{...t,props:{...t.props,_hidden:!t.props._hidden}})},Bi=e=>pe(Yn,e),Ci=e=>ae(Yn,e),Ni=e=>go.slotsOf?Rr(e).map(n=>({slot:n.slot,rung:n.rung?n:null,kids:ue(e,n.slot)})):[{slot:null,rung:null,kids:Ci(e)}],$i=e=>go.slotsOf?Ni(e).flatMap(e=>e.kids):Ci(e),Ti=e=>Boolean(go.slotsOf)&&Rr(e).some(e=>e.rung),Oi=(e,n,t)=>null===t?void 0===n?xo(e):xo(e,n):xo(e,n,t),Ii=(e,n,t)=>{const o=fe(Yn,e.type,n)&&(t||$i(e).length>0||Ti(e));return{collapsible:o,folded:o&&Wo(String(e.props.id))}},Pi=(e,n,t)=>Ni(e).flatMap(o=>{const r=o.rung?n+1:n,i=o.kids.flatMap(({child:e})=>Ii(e,r,t(e.type)).collapsible?[String(e.props.id),...Pi(e,r+1,t)]:[]);return o.rung?[`${e.props.id}:${o.rung.slot}`,...i]:i}),Ai=e=>$i(e).length>0||Ti(e)||Boolean(xo(e.type)),Mi=e=>Boolean(xo(e)),Ri=(e,n,t,o)=>{if(Xt(J),xo(o)?.spec?.slider){const t=e.split(":")[0];p(t,n),ft.select({index:n,zone:e}),a(t)}else ft.select({index:n,zone:e}),ri(t)},ji=(e,n,t,o,r)=>{const i=`${e}:${n}`;ft.insertComponent(i,t,o),xo(r)?.spec?.slider?requestAnimationFrame(()=>{p(e,o),ft.select({index:o,zone:i})}):ft.select({index:o,zone:i})},Ei=(e,n,t)=>{ft.insertComponent(e,n,t),Xt(J),ft.select({index:t,zone:e})},Li=pn(/* @__PURE__ */new Set);hn(()=>{vr.forEach(e=>{const n=xo(e.type)?.spec;if(!n)return;const t=e.props.id;if(Li.current.has(t))return;Li.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($r)).forEach((e,t)=>ft.seedChild(o,t,n.childType,e))})},[vr,ft,$r]);const Di=pn(/* @__PURE__ */new Set);hn(()=>{vr.forEach((n,t)=>{const o=n.props.id;if(Di.current.has(o))return;const r=e(n,Bi(n.type));Di.current.add(o),r&&ft.replaceComponent(se,t,{...n,props:r})})},[vr,ft]),ne(ft,Yn);const Vi=vr.findIndex(ot),Hi=Vi>=0?vr[Vi]:null,Fi=rt?vr.findIndex(tt):-1,Wi=Fi>=0?vr[Fi]:null,Gi=vr.find(e=>e.type===Xn)??null,Ji=vr.find(e=>e.type===Zn)??null,Ui=Vi>=0?Vi:vr.length,Yi=[];vr.forEach(e=>{ot(e)||(Ai(e)&&Yi.push(String(e.props.id)),Yi.push(...Pi(e,1,Mi)))}),Hi&&(Yi.push(String(Hi.props.id)),Yi.push(...Pi(Hi,1,Mi)));const Ki=Yi.length>0&&Yi.every(e=>jo.has(e)),Qi=e=>{const n=wo.blockRowName(e,Nr);return wo.rowName?wo.rowName(e,"block",n):n},Xi=(e,n,t,o)=>{const r=Ar(e)[t];if(!r)return;const i={...cn(e),index:t},l={...cn(n),index:Math.min(Math.max(o,0),Ar(n).length)},s=Qe(i,l);if(e!==n||s!==t)try{Cr.move(String(r.props.id),{...l,index:s})}catch(e){if(!(e instanceof an))throw e}},Zi=e=>{const n=/* @__PURE__ */new Set,t=e=>{for(const{child:o,zone:r}of Ci(e))n.add(r),t(o)};for(const t of Bi(e.type))n.add(`${e.props.id}:${t}`);return t(e),n},_i=e=>{let n=e.slice(0,e.indexOf(":"));for(let e=0;e<64;e++){const e=Ir.get(n);if(!e)return null;if(e.zone===se)return n;n=e.zone.slice(0,e.zone.indexOf(":"))}return null},qi=e=>{const n=e.slice(0,e.indexOf(":")),t=vr.find(e=>_n(e.type)&&String(e.props.id)===n);return t&&qn(n)===e?t:null},el=(e,n,t)=>{if(e.rung){const t=Mr(e.rung.nodeId),o=t?Rr(t).filter(e=>e.rung).length:0;return n.parentId===e.rung.nodeId&&n.slot===zn&&n.index>=0&&n.index<=o}if(n.slot===zn)return!1;if(e.add)return ol(e.add,n);const o=ln(n);if(_n(e.type))return!1;const r=qi(o),i=qi(e.zone);if(r||i)return!(!r||!i)&&(n.index>=0&&n.index<=Ar(o).length);if(e.zone===se||o===se){if(e.zone!==o)return!1;const{floor:t,cap:r}=xr();return n.index>=t&&n.index<=r}if(n.index<0||n.index>Ar(o).length)return!1;if(e.zone===o)return!0;const l=Hi&&!Kn.lastIsOpen?String(Hi.props.id):null;return(!l||_i(e.zone)!==l&&_i(o)!==l)&&((e,n,t,o)=>{if(e===n)return!0;const r=o??Ar(e)[t];if(!r)return!1;const i=n.split(":")[0],l=Ir.get(i),s=l?Ar(l.zone)[l.index]:void 0;if(!s)return!1;if(!o&&Zi(r).has(n))return!1;const d=xo(s.type,So(Fn?.data,s.type,i),n.slice(n.lastIndexOf(":")+1));return!!d&&(!!(d.choices?d.choices.some(e=>e.type===r.type):d.spec?.childType===r.type)&&!d.spec?.addBlocked?.(Ar(n),r))})(e.zone,o,e.index,t)},nl=(e,n)=>{const t=ln(e.from);if(t===ln(n))return!0;const o=e.node;return el({id:String(o.props?.id??""),zone:t,index:-1,type:o.type},n,o)},tl=e=>{const n=e.slice(0,e.indexOf(":")),t=Ir.get(n),o=t?Ar(t.zone)[t.index]:void 0;if(!t||!o)return null;const r=xo(o.type,So(Fn?.data,o.type,n),e.slice(e.lastIndexOf(":")+1));if(!r||`${n}:${r.slot}`!==e)return null;if("footer"===r.source)return null;const i=r.choices??(r.spec?[{type:r.spec.childType,label:Nr(r.spec.childType)}]:[]),l=jr(e);return{parent:o,parentId:n,target:r,choices:i,parentName:l?l.slot.label:mi(o,t.zone===se)}},ol=(e,n)=>{const t=ln(n);if("block"!==e.kind){if(qi(t))return n.index>=0&&n.index<=Ar(t).length;if(t!==se)return!1;const{floor:e,cap:o}=xr();return n.index>=e&&n.index<=o}if(t===se)return!1;const o=tl(t);return!(!o||!o.choices.some(n=>n.type===e.type))&&!o.target.spec?.addBlocked?.(Ar(t))},rl=(e,n)=>{e.rung?Hr(e.rung.nodeId,e.index,n.index):e.add?((e,n)=>{if("block"!==e.kind&&qi(ln(n)))return void hi(e,ln(n),n.index);if("section"===e.kind)return void ci(e.type,n.index);if("template"===e.kind)return void ai(e.template.name,zr(e.template.node),n.index);const t=ln(n),o=tl(t);o&&(o.target.spec?ji(o.parentId,o.target.slot,e.type,n.index,o.parent.type):Ei(t,e.type,n.index))})(e.add,n):e.zone===se?si(e.index,n.index):Xi(e.zone,ln(n),e.index,n.index)},[il]=fn(()=>Ye()),ll=Ke({keyOf:e=>e.id,readOnly:Boolean(Rn),session:il,canDrop:el,onDrop:rl,onStep:(e,n)=>{e.rung?Hr(e.rung.nodeId,e.index,n<0?e.index-1:e.index+2):e.zone===se?((e,n)=>{const t=Tr(vr[e]?.type??""),o=si(e,n<0?e-1:e+2);if(!o.moved)return void qo(`“${t}” is already ${n<0?"first":"last"}`);const{floor:r,cap:i}=xr();qo(`Moved “${t}” to position ${o.dest-r+1} of ${i-r}`)})(e.index,n):Xi(e.zone,e.zone,e.index,n<0?e.index-1:e.index+2)}}),sl=mn(e=>{const{floor:n,cap:t}=xr(),o=[];for(const r of e.nodes){const e=ln(r.place),i=Ar(e)[r.place.index];if(!i||String(i.props.id)!==r.id)continue;if(tt(i)||ot(i)||yo(i.type))continue;if(_n(i.type))continue;const l=Boolean(qi(e)),s=e===se||l;e===se&&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?Tr(i.type):Gr(i),from:r.place})}return{sources:o,zones:e.zones.filter(e=>e.children.length>0||Boolean(tl(ln(e.list))?.choices.length)||Boolean(qi(ln(e.list))))}},[Fn.data]),dl=e=>{Xt(J),ft.select(e.zone===se?{index:e.index}:{index:e.index,zone:e.zone})},cl=te(),al=()=>({data:Fn.data,device:bt,ops:ft,inspector:uo}),pl=cl?.model,ul=un(()=>pl?e=>pl(e,sl(e),al()):sl,[pl,sl,bt]),fl=cl?.measure,hl=fl?(e,n)=>fl(e,n,al()):void 0,ml=cl?.canDrop,gl=ml?(e,n)=>ml(e,n,el,al()):el,yl=cl?.drop,kl=yl?(e,n)=>yl(e,n,rl,al()):rl,Sl=cl?.pick,vl=Sl?e=>Sl(e,dl,al()):dl,xl=(e,n,t,o)=>/* @__PURE__ */kn(Oe,{...Rn?{}:ll.seam({place:{...cn(e),index:n}}),onAdd:Rn?void 0:t,label:o},`seam:${e}:${n}`),bl={rowClick:gi,isCollapsed:Wo,toggleCollapse:Go},wl=e=>{const n=String(e.props.id),t=vr.findIndex(e=>String(e.props.id)===n),o=qn(n),r=Ar(o),i=Wo(n),l=Nr(e.type),s=wo.rowName?wo.rowName(e,"section",l):l,d=e=>xl(o,e,()=>ui(o,e),lt.addSectionHere);/* @__PURE__ */
|
|
15
|
+
return Sn(vn,{children:[
|
|
16
|
+
/* @__PURE__ */kn(Be,{icon:/* @__PURE__ */kn(Bo,{type:e.type,size:13}),name:s,preview:Si(e),marks:vi(e),onSelect:()=>ii(t),nameSlot:Ur(se,t,n,s),selected:to===n,actions:xi(e,se,t)??void 0,rowProps:{"data-node-id":n,onClick:gi(()=>ii(t))},fold:{open:!i,label:"section",onToggle:()=>Go(n)}}),!i&&/* @__PURE__ */Sn(Ce,{children:[r.map((n,t)=>{const r=String(n.props.id),i=Or(n),l=Ai(n),s=l&&Wo(r),c=()=>Ri(o,t,r,e.type),{rowProps:a,...p}=ll.row({item:{id:r,zone:o,index:t,type:n.type},place:{...cn(o),index:t}},{"data-node-id":r,onClick:gi(c)});/* @__PURE__ */
|
|
17
|
+
return Sn(yn,{children:[d(t),
|
|
18
|
+
/* @__PURE__ */kn(Be,{icon:/* @__PURE__ */kn(Bo,{type:n.type,size:13}),name:i,preview:Si(n),marks:vi(n),onSelect:c,nameSlot:Ur(o,t,r,i),selected:to===r,hidden:Boolean(n.props._hidden),...p,fold:l?{open:!s,label:"section",onToggle:()=>Go(r)}:void 0,actions:/* @__PURE__ */Sn(vn,{children:[ki(o,t,i),xi(n,o,t),bi(o,t,n,i)]}),rowProps:a}),l&&!s&&/* @__PURE__ */kn(Ce,{children:Cl(n,2)})]},r)}),d(r.length)]})]})},zl=(e,n,t,o,r)=>{const i=String(e.props.id),l=`${i}:${n.slot}`,s=ll.dragging,d=!Wo(l)&&s?.rung?.nodeId!==i,c={...cn(l),index:0},a=s&&!s.rung&&el(s,c)?c:void 0,p=()=>Dr(e,n,!0),{rowProps:u,...f}=ll.row({item:{id:`rung:${l}`,zone:`${i}:${zn}`,index:t,type:e.type,rung:{nodeId:i,slot:n.slot}},place:{parentId:i,slot:zn,index:t},into:a,canDrag:Boolean(go.moveSlot)&&!1!==n.movable&&o>1},{"data-slot-zone":l,onClick:gi(p)}),h=Rn?null:go.slotActions?.(e,n.slot);/* @__PURE__ */
|
|
19
|
+
return Sn(yn,{children:[n.heading,
|
|
20
|
+
/* @__PURE__ */kn(Be,{icon:n.glyph??null,name:n.label,badge:n.badge,onSelect:p,selected:Er===l,...f,dragHint:n.dragHint,fold:{open:d,label:n.label,onToggle:()=>Go(l)},actions:h&&h.length>0?/* @__PURE__ */kn(vn,{children:h.map((t,o)=>/* @__PURE__ */kn(Te,{kind:"delete"===t.kind?"delete":"plain",label:t.label,disabled:t.disabled,onClick:()=>((e,n,t)=>{if(Rn||t.disabled)return;const o=String(e.props.id),r=e=>{"string"==typeof e&&Vr(o,e,n.panel)},i=t.run();i&&"function"==typeof i.then?i.then(r):r(i)})(e,n,t),children:"delete"===t.kind?/* @__PURE__ */kn(on,{size:15}):/* @__PURE__ */kn(rn,{size:15})},`${o}:${t.kind}`))}):void 0,rowProps:u}),d&&/* @__PURE__ */kn(Ce,{children:r})]},l)},Bl=(e,n)=>{const t=Ni(e),o=t.filter(e=>e.rung).length;let r=0;/* @__PURE__ */
|
|
21
|
+
return kn(vn,{children:t.map(t=>{const i=t.kids,l=t.rung?n+1:n,s=Oi(e.type,void 0,t.slot),d=s?`${e.props.id}:${s.slot}`:null,c=null===t.slot?null:`${e.props.id}:${t.slot}`,a=null!==c&&Boolean(tl(c)?.choices.length),p=(e,n)=>a?xl(e,n,()=>ui(e,n),"Add block here"):xl(e,n),u=/* @__PURE__ */Sn(vn,{children:[i.map(({child:n,zone:t,index:o})=>{const r=to===String(n.props.id),{collapsible:i,folded:s}=Ii(n,l,Mi(n.type)),d=String(n.props.id),c=Qi(n),a=()=>Ri(t,o,d,e.type),{rowProps:u,...f}=ll.row({item:{id:d,zone:t,index:o,type:n.type},place:{...cn(t),index:o}},{"data-node-id":d,onClick:gi(a)});/* @__PURE__ */
|
|
22
|
+
return Sn(yn,{children:[0===o&&p(t,0),
|
|
23
|
+
/* @__PURE__ */kn(Be,{icon:/* @__PURE__ */kn(Bo,{type:n.type,size:13}),name:c,preview:Si(n),marks:vi(n),onSelect:a,nameSlot:Ur(t,o,d,c),selected:r,hidden:Boolean(n.props._hidden),...f,fold:i?{open:!s,label:"group",onToggle:()=>Go(d)}:void 0,actions:/* @__PURE__ */Sn(vn,{children:[ki(t,o,c),xi(n,t,o),bi(t,o,n,c)]}),rowProps:u}),i&&!s&&/* @__PURE__ */kn(Ce,{children:Bl(n,l+1)}),p(t,o+1)]},String(n.props.id??`${t}-${o}`))}),null===c?d&&!i.some(e=>e.zone===d)?p(d,0):null:0!==i.length||!t.rung&&d!==c?null:p(c,0)]});return t.rung?zl(e,t.rung,r++,o,u):/* @__PURE__ */kn(yn,{children:u},t.slot??"")})})},Cl=(e,n)=>{const t=So(Fn?.data,e.type,String(e.props.id)),o=Ni(e),r=o.filter(e=>e.rung).length;let i=0;/* @__PURE__ */
|
|
24
|
+
return kn(vn,{children:o.map(o=>{const l=o.kids,s=o.rung?n+1:n,d=Oi(e.type,t,o.slot),c=d?.spec??null,a=c&&Array.isArray(e.props[c.slot])?e.props[c.slot]:[],p=d&&d.choices?{slot:d.slot,choices:d.choices}:null,u=String(e.props.id),f=c&&!c.fixed?`${u}:${c.slot}`:null,h=p?`${u}:${p.slot}`:null,m=(n,t)=>{const o=n===f&&c&&!c.addBlocked?.(a)?()=>ji(e.props.id,c.slot,c.childType,t,e.type):n===h?()=>ui(n,t):void 0;return xl(n,t,o,n===f&&c?c.addLabel:"Add block here")},g=null===o.slot?null:`${u}:${o.slot}`,y=Boolean(c&&!c.fixed&&(null===g||g===f)),k=/* @__PURE__ */Sn(vn,{children:[l.map(({child:n,zone:t,index:o})=>{const r=to===String(n.props.id),i=Gr(n),l=String(n.props.id),{collapsible:d,folded:c}=Ii(n,s,Mi(n.type)),a=Bi(n.type),p=1===a.length?`${l}:${a[0]}`:null,u=p?{...cn(p),index:Ar(p).length}:void 0,f=ll.dragging,h=u&&f&&el(f,u)?u:void 0,g=()=>Ri(t,o,l,e.type),{rowProps:y,...k}=ll.row({item:{id:l,zone:t,index:o,type:n.type},place:{...cn(t),index:o},into:h,canDrag:!yo(n.type)},{"data-node-id":l,onClick:gi(g)});/* @__PURE__ */
|
|
25
|
+
return Sn(yn,{children:[0===o&&m(t,0),
|
|
26
|
+
/* @__PURE__ */kn(Be,{icon:/* @__PURE__ */kn(Bo,{type:n.type,size:13}),name:i,preview:Si(n),marks:vi(n),onSelect:g,nameSlot:Ur(t,o,l,i),selected:r,hidden:Boolean(n.props._hidden),...k,fold:d?{open:!c,label:"group",onToggle:()=>Go(l)}:void 0,actions:yo(n.type)?xi(n,t,o)??void 0:/* @__PURE__ */Sn(vn,{children:[ki(t,o,i),xi(n,t,o),bi(t,o,n,i)]}),rowProps:y}),d&&!c&&/* @__PURE__ */kn(Ce,{children:Cl(n,s+1)}),m(t,o+1)]},String(n.props.id??`${t}-${o}`))}),y&&c&&
|
|
27
|
+
/* @__PURE__ */kn(O,{small:!0,label:c.addLabel,blocked:c.addBlocked?.(a)??null,onAdd:()=>ji(e.props.id,c.slot,c.childType,a.length,e.type)}),null===g?h&&!l.some(e=>e.zone===h)?m(h,0):null:0!==l.length||(o.rung?y:g!==h)?null:m(g,0)]});return o.rung?zl(e,o.rung,i++,r,k):/* @__PURE__ */kn(yn,{children:k},o.slot??"")})})},Nl=(()=>{if(!Jn||!Zt)return null;const e=String(Jn.type),n=String(Jn.props.id),t=xo(e,So(Fn?.data,e,n));if(!t||"footer"===t.source)return null;const o=vr.some(e=>String(e.props?.id)===n),r=Array.isArray(Jn.props[t.slot])?Jn.props[t.slot]:[];if(t.spec?.addBlocked?.(r))return null;const i=t.choices??(t.spec?[{type:t.spec.childType,label:Nr(t.spec.childType)}]:[]);return 0===i.length?null:{parentName:mi(Jn,o),choices:i,onPick:o=>{t.spec?ji(n,t.slot,o,r.length,e):Ei(`${n}:${t.slot}`,o,r.length)}}})(),$l=eo&&eo.zone!==se&&!qi(eo.zone)?eo.zone:null,Tl=!0===Jt.blocksFirst,Ol=$l?tl($l):Tl&&eo?null:Nl,Il=Boolean(Wt&&$l)||Tl&&Boolean(Ol&&Ol.choices.length>0),Pl=Dt||null!==Ct,Al=e=>"panel"in e?{id:e.id,label:e.label,icon:e.icon,active:mt&&!Pl&&mo===e.id,onSelect:()=>gr(e.id)}:e,Ml=[{id:"add",label:lt.add.title,icon:/* @__PURE__ */kn("span",{className:"sf-rail-plus","aria-hidden":"true",children:"+"}),active:Dt,onSelect:()=>Dt?fi():pi(null)},...(fo.railLead??[]).map(Al),{id:"sections",label:"Layers",icon:/* @__PURE__ */kn(qe,{}),active:mt&&!Pl&&"sections"===mo,onSelect:()=>gr("sections")},...(fo.railTrail??[]).map(Al)];Bt?Ml.push({id:"media",label:lt.railMedia,icon:/* @__PURE__ */kn(en,{}),active:mt&&!Dt&&(null!==Ct||"media"===mo),onSelect:()=>gr("media")}):Dn&&Ml.push({id:"media",label:lt.railMedia,icon:/* @__PURE__ */kn(en,{}),onSelect:yr});const Rl=[...fo.railLead??[],...fo.railTrail??[]].find(e=>"panel"in e&&e.id===mo),jl=Boolean(it?.foldable)&&!ho,El=it?.label??(Vn?lt.pageSections:lt.templateSections),Ll=jl&&Wo(Bn),Dl=/* @__PURE__ */Sn(vn,{children:[vr.map((e,n)=>{if(tt(e)||ot(e)||_n(e.type))return null;const t=to===String(e.props.id),o=Boolean(e.props._hidden);Ci(e);const r=String(e.props.id),i=fo.hasOwnRows?.(e)??!1,l=Ai(e)||i,s=l&&Wo(r),{rowProps:d,...c}=ll.row({item:{id:r,zone:se,index:n,type:e.type},place:{...cn(se),index:n}},{"data-node-id":r,onClick:gi(()=>ii(n))});/* @__PURE__ */
|
|
28
|
+
return Sn(yn,{children:[n>0&&wi(n),
|
|
29
|
+
/* @__PURE__ */kn(Be,{icon:/* @__PURE__ */kn(Bo,{type:e.type,size:13}),name:Or(e),preview:Si(e),marks:vi(e),onSelect:()=>ii(n),nameSlot:Ur(se,n,r,Or(e)),selected:t,hidden:o,...c,fold:l?{open:!s,label:"section",onToggle:()=>Go(r)}:void 0,actions:/* @__PURE__ */Sn(vn,{children:[ki(se,n,Or(e)),xi(e,se,n),bi(se,n,e,Or(e))]}),rowProps:d}),Ai(e)&&!s&&/* @__PURE__ */Sn(Ce,{children:[Cl(e,1),fo.partRows?.(e,bl)]}),i&&!s&&/* @__PURE__ */kn(Ce,{children:fo.ownRows?.(e,n,bl)})]},String(e.props.id??n))}),!ho&&Ui>0&&wi(Ui),it?.addAtEnd&&!ho&&!Rn&&/* @__PURE__ */kn(O,{small:!0,label:lt.addSection,blocked:null,onAdd:()=>pi(Ui)})]}),Vl=(e,n,t)=>{const o=String(e.props.id),r=$i(e).length>0||Ti(e)||Boolean(xo(e.type)),i=r&&Wo(o),l="header"===t?lt.header:lt.footer,s=wo.rowName?wo.rowName(e,"section",l):l;/* @__PURE__ */
|
|
30
|
+
return Sn(vn,{children:[
|
|
31
|
+
/* @__PURE__ */kn(Be,{icon:/* @__PURE__ */kn(Bo,{type:t,size:13}),name:s,preview:Si(e),marks:vi(e),onSelect:()=>ii(n),nameSlot:Ur(se,n,o,s),selected:to===String(e.props.id),fold:r?{open:!i,label:"section",onToggle:()=>Go(o)}:void 0,actions:xi(e,se,n)??void 0,rowProps:{"data-node-id":o,onClick:gi(()=>ii(n))}}),r&&!i&&/* @__PURE__ */kn(Ce,{children:Bl(e,1)})]})};return(fo.wrap??(e=>e))(
|
|
32
|
+
/* @__PURE__ */kn(oe,{target:Et,children:/* @__PURE__ */Sn("div",{ref:jt,className:"sf-editor es-editor",style:Fe(Lo),onContextMenu:_r.onEditorContextMenu,...m(Ie),children:[
|
|
33
|
+
/* @__PURE__ */Sn(Pe,{children:[
|
|
34
|
+
/* @__PURE__ */kn(Ae,{items:Ml,ariaLabel:"Left panel views"}),
|
|
35
|
+
/* @__PURE__ */Sn(Me,{children:[
|
|
36
|
+
/* @__PURE__ */kn(Re,{label:"Undo",disabled:Boolean(Rn)||!Gn.hasPast,onClick:()=>Gn.back(),children:/* @__PURE__ */kn(nn,{})}),
|
|
37
|
+
/* @__PURE__ */kn(Re,{label:"Redo",disabled:Boolean(Rn)||!Gn.hasFuture,onClick:()=>Gn.forward(),children:/* @__PURE__ */kn(tn,{})}),
|
|
38
|
+
/* @__PURE__ */kn(je,{}),
|
|
39
|
+
/* @__PURE__ */kn(Ee,{devices:yt,value:bt,onChange:wt})]}),
|
|
40
|
+
/* @__PURE__ */Sn(Me,{kind:"right",style:{minWidth:300},children:[
|
|
41
|
+
/* @__PURE__ */kn(xn,{saveState:In,notSaving:Boolean(Rn)||null!=Pn,readOnlyReason:jn,toggle:En,onToggle:Mn,onRetry:An}),fo.barLead?.(),
|
|
42
|
+
/* @__PURE__ */kn("button",{type:"button",className:"es-btn-ghost",title:"Refresh the preview (reloads the canvas, keeps your place)",onClick:()=>{Rt.current=(()=>{const e=Et?.document;if(!e)return null;const n=vr.findIndex(ot),t=n>=0?n:vr.length;let o=null;for(let n=0;n<t;n++){const t=vr[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=Jn?.props?.id??vr[0]?.props?.id;null!=e&&(o={id:String(e),offset:0})}return o})(),Mt(e=>e+1)},children:"Refresh"}),fo.barTrail?.(),fo.barMain?fo.barMain():/* @__PURE__ */kn("button",{type:"button",className:"es-btn-primary",disabled:null!==jn,onClick:()=>{On(Fn.data)},children:lt.done})]})]}),
|
|
43
|
+
/* @__PURE__ */kn(B,{}),
|
|
44
|
+
/* @__PURE__ */Sn("div",{className:"sf-body",children:[mt?/* @__PURE__ */Sn(vn,{children:[
|
|
45
|
+
/* @__PURE__ */kn("aside",{className:"es-sidepanel es-sidepanel--left sf-panel sf-panel--left","aria-label":lt.leftPanel,children:Dt?/* @__PURE__ */kn(I,{blocks:Ol,blocksOnly:Il,at:Wt?{label:(e=>{const n=qi(e.zone);if(n)return lt.add.addingTo({name:wo.rowName?mi(n,!0):Nr(n.type)});if(e.zone===se){const n=vr[e.index];return n&&!ot(n)?lt.add.addingBefore({name:mi(n,!0)}):lt.add.addingAtEnd}const t=tl(e.zone);return t?lt.add.addingTo({name:t.parentName}):lt.add.addingHere})(Wt),onClear:()=>Gt(null)}:void 0,onAdd:e=>{const n=eo,t=(e,n)=>{Wt&&Gt({zone:e,index:n})};if(n&&"block"!==e.kind&&qi(n.zone))return hi(e,n.zone,n.index),void t(n.zone,n.index+1);if("section"===e.kind)return(e=>{if(null===no)return void ci(e);const n=ci(e,no);Wt&&Ut(n+1)})(e.type);if("template"===e.kind)return((e,n)=>{if(null===no)return void ai(e,n);const t=ai(e,n,no);Wt&&Ut(t+1)})(e.template.name,zr(e.template.node));if(n&&n.zone!==se){const o=tl(n.zone);if(!o)return;return o.target.spec?ji(o.parentId,o.target.slot,e.type,n.index,o.parent.type):Ei(n.zone,e.type,n.index),void t(n.zone,n.index+1)}Nl?.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:il,siteWide:fo.addPanelRow?.(fi),onClose:fi,onHide:hr,readOnly:Boolean(Rn)}):Ct&&zt?
|
|
46
|
+
/* @__PURE__ */kn(M,{panel:zt,pick:Ct,onHide:hr}):Rl?Rl.panel({onHide:hr,notify:qo}):"media"===mo&&zt?/* @__PURE__ */kn(M,{panel:zt,pick:null,onHide:hr}):/* @__PURE__ */Sn(vn,{children:[
|
|
47
|
+
/* @__PURE__ */kn(P,{icon:/* @__PURE__ */kn(qe,{}),title:"Layers",context:st,actions:Yi.length>0?/* @__PURE__ */kn(Le,{label:Ki?"Expand all sections":"Collapse all sections",onClick:()=>Eo(e=>{const n=new Set(Yi);return Ki?new Set([...e].filter(e=>!n.has(e))):/* @__PURE__ */new Set([...e,...Yi])}),children:/* @__PURE__ */kn(bn,{expand:Ki})}):void 0,onHide:hr}),
|
|
48
|
+
/* @__PURE__ */Sn(Ne,{className:"sf-tree sf-scroll",children:[
|
|
49
|
+
/* @__PURE__ */kn(Be,{icon:/* @__PURE__ */kn(Bo,{type:"page",size:13}),name:lt.pageSettings,onSelect:kr,selected:!Jn&&Zt,rowProps:{onClick:gi(kr)}}),Gi&&/* @__PURE__ */Sn(vn,{children:[
|
|
50
|
+
/* @__PURE__ */kn($e,{children:lt.header}),wl(Gi)]}),!ho&&Hn&&/* @__PURE__ */Sn(vn,{children:[
|
|
51
|
+
/* @__PURE__ */kn($e,{children:lt.header}),!rt&&/* @__PURE__ */kn(Be,{icon:/* @__PURE__ */kn(Bo,{type:"header",size:13}),name:lt.header,onSelect:Sr,selected:Qt.kind===nt?.kind,rowProps:{onClick:gi(Sr)}})]}),!ho&&Wi&&Vl(Wi,Fi,"header"),!ho&&!jl&&/* @__PURE__ */kn($e,{children:El}),jl?/* @__PURE__ */Sn(vn,{children:[
|
|
52
|
+
/* @__PURE__ */kn(Be,{icon:null,name:El,fold:{open:!Ll,label:El,onToggle:()=>Go(Bn)}}),!Ll&&/* @__PURE__ */kn(Ce,{children:Dl})]}):Dl,Hn&&/* @__PURE__ */kn($e,{children:lt.footer}),Hi&&Vl(Hi,Vi,"footer"),!ho&&!Hi&&Hn&&/* @__PURE__ */kn(Be,{icon:/* @__PURE__ */kn(Bo,{type:"footer",size:13}),name:lt.footer,onSelect:yi,rowProps:{onClick:gi(yi),title:"Edit the site footer"}}),Ji&&wl(Ji),fo.treeFoot?.()]})]})}),
|
|
53
|
+
/* @__PURE__ */kn(De,{side:"left",width:Lo.left,min:He,max:Ve,defaultWidth:S.left,label:lt.resizeLeftPanel,onResize:Ho})]}):/* @__PURE__ */kn(A,{side:"left",onShow:hr}),
|
|
54
|
+
/* @__PURE__ */Sn("div",{ref:er,className:"sf-center sf-scroll","data-sf-canvas-head":ir?"":void 0,style:{overflowX:pr?"auto":"hidden",overflowY:"hidden"},children:[ir&&/* @__PURE__ */kn("div",{ref:lr,className:"sf-canvas-head",children:/* @__PURE__ */kn(ir,{device:bt})}),
|
|
55
|
+
/* @__PURE__ */kn("div",{className:"sf-frame-scaler",style:ur,children:/* @__PURE__ */kn("div",{className:"sf-frame "+(bt===vt?"":`sf-frame--${bt}`),style:fr,children:/* @__PURE__ */Sn("div",{className:"sf-preview-host",children:[
|
|
56
|
+
/* @__PURE__ */kn(dt,{},At),
|
|
57
|
+
/* @__PURE__ */kn(Ue,{canvas:Et,session:il,model:ul,measure:hl,canDrop:gl,onDrop:kl,onPick:vl,onZoneAdd:e=>{const n=ln(e),t=jr(n);t&&Dr(t.node,t.slot,!1),ui(n,0)},zoneAddLabel:lt.canvasAddBlock,readOnly:Boolean(Rn),revision:Fn.data}),Yt.length>0&&/* @__PURE__ */kn("div",{className:"sf-preview-gaps","aria-hidden":"true",children:Yt.map(e=>/* @__PURE__ */Sn("button",{type:"button",tabIndex:-1,className:void 0===e.height?"sf-preview-gap":"sf-preview-gap sf-preview-gap--tight",style:void 0===e.height?{top:e.top}:{top:e.top,height:e.height},title:"Add section here",onClick:()=>pi(e.index),children:[
|
|
58
|
+
/* @__PURE__ */kn("span",{className:"sf-preview-gap-line"}),
|
|
59
|
+
/* @__PURE__ */Sn("span",{className:"sf-preview-gap-pill",children:[
|
|
60
|
+
/* @__PURE__ */kn("span",{className:"sf-preview-gap-plus",children:"+"}),
|
|
61
|
+
/* @__PURE__ */kn("span",{className:"sf-preview-gap-label",children:"Add section"})]})]},e.index))})]})})})]}),gt?/* @__PURE__ */Sn(vn,{children:[
|
|
62
|
+
/* @__PURE__ */kn(g,{value:{selectChild:Ri,addChild:ji,childRowName:Gr,blockRowName:Qi},children:/* @__PURE__ */kn(ct,{mode:Qt,onOpenWebsiteSettings:fo.openSettings??(()=>{}),onOpenSiteStyles:fo.openStyles,onSelectNode:To,onNotify:qo,onHidePanel:mr,nodeActions:Jn?de(Yn,Jn.type):Cn})}),
|
|
63
|
+
/* @__PURE__ */kn(De,{side:"right",width:Lo.right,min:He,max:Ve,defaultWidth:S.right,label:"Resize settings panel",onResize:Fo})]}):
|
|
64
|
+
/* @__PURE__ */kn(A,{side:"right",onShow:mr})]}),Ko&&/* @__PURE__ */Sn("div",{className:"sf-toast "+("error"===Ko.tone?"sf-toast--error":""),role:"status",children:[
|
|
65
|
+
/* @__PURE__ */kn("span",{className:"sf-toast-check","aria-hidden":"true",children:"error"===Ko.tone?"!":"✓"}),Ko.msg]},Xo),_r.menu]})}))}export{Nn as ScreenChrome};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{toItemSelector as e,fromItemSelector as t,useNodeOps as n}from"./chunk-D2BCHTQR.js";import{DEFAULT_CANVAS_WORDS as o}from"./chunk-AELNNAFM.js";import{useResolvedFields as r}from"./chunk-YRLPFZW3.js";import{useWords as a}from"./chunk-MFIRYGHW.js";import{setCanvasNonce as i,isTypingTarget as s}from"./chunk-ZNCEOSXO.js";import{find as d,ROOT_ID as l,getList as c,remove as u,parseZoneKey as p,move as f,duplicate as h,replaceNode as m,createNode as v,insert as y,normalizeData as g,createResolveCache as k,resolveNodeData as b,ROOT_SLOT as w}from"./chunk-KRXQM65X.js";import{topLevelSlotKeys as S,fieldsFrom as I,defaultsFrom as C}from"./chunk-NKB3KVAB.js";import{createContext as O,useEffect as x,useContext as E,useRef as A,useSyncExternalStore as D,useState as z,useMemo as M,useCallback as Z,useLayoutEffect as N}from"react";import{jsx as $,jsxs as j}from"react/jsx-runtime";import{createPortal as R}from"react-dom";function B(e){return!["setData","setUi","set"].includes(e.type)}var P=(e,t,n,o)=>{const r=c(e,t,p(n));return r?.[o]??null},L=(e,t,n,o,r)=>{const a=P(e,t,n,o);if(!a)throw new Error(`${r}: nothing at ${n}[${o}]`);return a};function K(t,n){const{selection:o}=t;return{...t.ui,itemSelector:e(t.data,n,o),selectedSlot:o&&"slot"===o.kind?{parentId:o.parentId,slot:o.slot}:null}}function F(e,t,n){return n?"node"===n.kind?d(e,t,n.id)?n:null:n.parentId===l?c(e,t,n)?n:null:d(e,t,n.parentId)&&c(e,t,n)?n:null:null}function H(e,n,o,r=!1){const{itemSelector:a,selectedSlot:i,...s}=o;let d=e.selection;var l;return"itemSelector"in o&&(d=t(e.data,n,a??null)),"selectedSlot"in o&&(i?d=(l=i)?{kind:"slot",parentId:l.parentId,slot:l.slot}:null:"slot"===d?.kind&&(d=null)),{...e,selection:d,ui:r?s:{...e.ui,...s}}}function V(e,t,n){const o=T(e,t,n);if(o===e)return e;const r=F(o.data,n,o.selection);return r===o.selection?o:{...o,selection:r}}function T(e,t,n){const{data:o}=e;switch(t.type){case"setData":{const n="function"==typeof t.data?t.data(o):t.data;return{...e,data:{...o,...n}}}case"setUi":return H(e,n,"function"==typeof t.ui?t.ui(K(e,n)):t.ui);case"set":{const r={data:o,ui:K(e,n)},a="function"==typeof t.state?t.state(r):t.state;let i=a.data?{...e,data:a.data}:e;return a.ui&&(i=H(i,n,a.ui,!0)),i}case"insert":{const r={...p(t.destinationZone),index:t.destinationIndex},a=v(n,t.componentType,{},t.id?{id:t.id}:{});return{...e,data:y(o,n,r,a)}}case"replace":{const r=L(o,n,t.destinationZone,t.destinationIndex,"replace");if(r.props.id!==t.data.props.id)throw new Error("Can't change the id during a replace action. Use remove and insert for a new node.");return{...e,data:m(o,n,r.props.id,t.data)}}case"replaceRoot":{const n={...o.root,props:{...o.root.props,...t.root.props},readOnly:t.root.readOnly};return{...e,data:{...o,root:n}}}case"duplicate":{const r=L(o,n,t.sourceZone,t.sourceIndex,"duplicate"),a=h(o,n,r.props.id),i=P(a,n,t.sourceZone,t.sourceIndex+1);return{...e,data:a,selection:i?{kind:"node",id:i.props.id}:e.selection}}case"reorder":return T(e,{...t,type:"move",sourceZone:t.destinationZone},n);case"move":{if(t.sourceZone===t.destinationZone&&t.sourceIndex===t.destinationIndex)return e;const r=P(o,n,t.sourceZone,t.sourceIndex);if(!r)return e;const a={...p(t.destinationZone),index:t.destinationIndex};return{...e,data:f(o,n,r.props.id,a)}}case"remove":{const r=L(o,n,t.zone,t.index,"remove");return{...e,data:u(o,n,r.props.id)}}default:return e}}var q={drag:!0,duplicate:!0,delete:!0,edit:!0,insert:!0},Y={leftSideBarVisible:!0,rightSideBarVisible:!0,arrayState:{},componentList:{},isDragging:!1,previewMode:"edit",viewports:{current:{width:360,height:"auto"},options:[],controlsVisible:!0},field:{focus:null}},U=0,W=()=>`history-${U+=1}`;function X(n){let o=n.config;const r=n.now??(()=>Date.now()),a=n.historyCoalesceMs??250;let i=n.permissions??{};const s=g(n.data,o);let l={data:s,selection:null,ui:{...Y}};if(n.ui){const{itemSelector:e,selectedSlot:r,...a}=n.ui;l={data:s,selection:r?{kind:"slot",...r}:t(s,o,e??null),ui:{...Y,...a}}}let u=[{core:l,at:-1/0,sealed:!0,id:W()}],p=0;const f=e=>{const t=u[p],n=r();!e&&p===u.length-1&&p>0&&!t.sealed&&n-t.at<a?u=[...u.slice(0,p),{...t,core:l,at:n}]:(u=[...u.slice(0,p+1),{core:l,at:n,sealed:e,id:W()}],p=u.length-1)},h=/* @__PURE__ */new Set;let v=null,y=null,w=0,S=null,I=!1;const C=()=>{for(const e of[...h])e()},O=()=>{u=[...u.slice(0,p),{...u[p],core:l},...u.slice(p+1)]},x=(e,t)=>{w>0?I=I||t:(t?f(!1):l!==e&&O(),l.data!==e.data&&n.onChange?.(l.data),l!==e&&C())},E=e=>{const t=l;if(l=V(l,e,o),l===t)return;const n=e.recordHistory??B(e);x(t,n&&l.data!==t.data)},A=e=>{0===w&&(S=l,I=!1),w+=1;try{e()}catch(e){throw w-=1,0===w&&S&&(l=S,S=null),e}if(w-=1,w>0||!S)return;const t=S;S=null,I&&l.data!==t.data?f(!0):l!==t&&O(),l.data!==t.data&&n.onChange?.(l.data),l!==t&&C()},D=e=>{const t=l,n=F(l.data,o,e);var r,a;(r=n,a=l.selection,r===a||r&&a&&r.kind===a.kind&&("node"===r.kind&&"node"===a.kind?r.id===a.id:"slot"===r.kind&&"slot"===a.kind&&r.parentId===a.parentId&&r.slot===a.slot))||(l={...l,selection:n},x(t,!1))},z=e=>{const t=l;p=e,l=u[p].core,l.data!==t.data&&n.onChange?.(l.data),l!==t&&C()},M=()=>(e={})=>{const t=e.root?o.root?.permissions:o.components[e.item?.type??e.type??""]?.permissions;return{...q,...i,...t}};let Z=M();const N=k(),$={resolveCache:N,async resolveAll({trigger:e="load",metadata:t}={}){const n=l.data,r={type:"root",props:{...n.root.props??{}}},a=[...n.content,...Object.values(n.zones??{}).flat()],[i,...s]=await Promise.all([b(r,o,{cache:N,trigger:e,metadata:t}),...a.map(n=>b(n,o,{cache:N,trigger:e,metadata:t}))]);A(()=>{const e=l;let t=l.data;s.forEach((e,r)=>{if(!e.didChange)return;const i=a[r].props.id,s=d(t,o,i)?.node;s&&s===d(n,o,i)?.node&&(t=m(t,o,i,e.node))}),i.didChange&&t.root===n.root&&(t={...t,root:{...t.root,props:i.node.props,readOnly:i.node.readOnly??t.root.readOnly}}),t!==l.data&&(l={...l,data:t,selection:F(t,o,l.selection)},x(e,!1))})},async resolveNode(e,{trigger:t="replace",metadata:n}={}){const r=d(l.data,o,e)?.node;if(!r)return!1;const a=await b(r,o,{cache:N,trigger:t,metadata:n});if(!a.didChange)return!1;let i=!1;return A(()=>{const t=l;if(d(l.data,o,e)?.node!==r)return;const n=m(l.data,o,e,a.node);n!==l.data&&(l={...l,data:n,selection:F(n,o,l.selection)},x(t,!1),i=!0)}),i},get config(){return o},getState(){if(v&&y===l)return v;const t=l,n={data:t.data,ui:K(t,o)},r="node"===t.selection?.kind?d(t.data,o,t.selection.id)?.node??null:null;return v={appState:n,selection:t.selection,selectedItem:r,config:o,dispatch:E,history:{back:()=>$.undo(),forward:()=>$.redo(),hasPast:p>0,hasFuture:p<u.length-1,histories:u.map(e=>({id:e.id,state:{data:e.core.data,ui:K(e.core,o)}})),index:p,setHistoryIndex:e=>{e>=0&&e<u.length&&e!==p&&z(e)}},getPermissions:Z,getItemById:e=>d(t.data,o,e)?.node,getItemBySelector:e=>function(e,t,n){const[o,r]=(n.zone??"root:default-zone").split(/:(.*)/s);return c(e,t,{parentId:o,slot:r})?.[n.index]}(t.data,o,e),getSelectorForId:n=>{const r=e(t.data,o,{kind:"node",id:n});return r?{index:r.index,zone:r.zone??"root:default-zone"}:void 0}},y=t,v},subscribe:e=>(h.add(e),()=>{h.delete(e)}),dispatch:E,batch:A,select:e=>D(e?{kind:"node",id:e}:null),selectSlot:e=>D(e?{kind:"slot",parentId:e.parentId,slot:e.slot}:null),run(e){A(()=>{const t=l,n=void 0===e.select?l.selection:e.select;l={...l,data:e.data,selection:F(e.data,o,n)},x(t,e.data!==t.data)})},load(e,t={}){const n=l,r=g(e,o);l={...l,data:r,selection:F(r,o,t.selection??l.selection)},t.keepHistory||(u=[{core:l,at:-1/0,sealed:!0,id:W()}],p=0),l!==n&&C()},undo(){p>0&&z(p-1)},redo(){p<u.length-1&&z(p+1)},setPermissions(e){(function(e,t){if(e===t)return!0;const n=Object.keys(e);return n.length===Object.keys(t).length&&n.every(n=>e[n]===t[n])})(e,i)||(i=e,Z=M(),v=null,C())},setConfig(e){e!==o&&(o=e,Z=M(),v=null,C())}};return $}function Q(e,t,n={}){const o=e=>{if(e.altKey)return;if(!(e.metaKey!==e.ctrlKey))return;const o="KeyZ"===e.code,r="KeyY"===e.code&&!e.shiftKey;(o||r)&&(n.leaveTyping&&s(e.target)||!1!==t.getState?.().getPermissions().edit&&(e.preventDefault(),r||e.shiftKey?t.redo():t.undo()))};return e.addEventListener("keydown",o),()=>e.removeEventListener("keydown",o)}var G=O(null),J=O(!0);function _({easel:e,hotkeys:t=!0,resolveOnMount:n=!0,children:o}){return x(()=>{n&&e.resolveAll()},[e,n]),x(()=>{if(t&&"undefined"!=typeof document)return Q(document,e)},[e,t]),/* @__PURE__ */$(G.Provider,{value:e,children:/* @__PURE__ */$(J.Provider,{value:t,children:o})})}function ee(){const e=E(G);if(!e)throw new Error("useEasel: no <EaselProvider> above this component");return e}function te(e){const t=ee(),n=A({view:null,selector:null,value:void 0,has:!1}),o=()=>{const o=t.getState(),r=n.current;if(r.has&&r.view===o&&r.selector===e)return r.value;const a=e(o);return r.has&&Object.is(r.value,a)?(n.current={view:o,selector:e,value:r.value,has:!0},r.value):(n.current={view:o,selector:e,value:a,has:!0},a)};return D(t.subscribe,o,o)}function ne(){return function(e){return te(e)}}var oe="data-puck-component",re="data-puck-dropzone",ae={},ie="data-es-mirror",se="undefined"==typeof window?x:N;function de(e,t,n){for(const e of Array.from(t.head.querySelectorAll(`[${ie}]`)))e.remove();for(const o of Array.from(e.head.querySelectorAll('style, link[rel="stylesheet"]'))){const e=o.cloneNode(!0);e.setAttribute(ie,""),n&&e.setAttribute("nonce",n),t.head.appendChild(e)}}function le({children:e,id:t="preview-frame",title:n,className:r,style:s,mirrorStyles:d=!0,onDocument:l,height:c="auto",nonce:u}){const p=a("canvas",o),f=A(null),[h,m]=z(null);return se(()=>{const e=f.current,t=h?.ownerDocument.defaultView;if("auto"!==c||!e||!h||!t)return;const n=()=>{e.style.height=`${Math.ceil(h.getBoundingClientRect().height)}px`};n();const o=t.ResizeObserver,r=o?new o(n):null;return r?.observe(h),()=>r?.disconnect()},[h,c]),se(()=>{let e=f.current?.contentDocument;if(!e)return;"CSS1Compat"!==e.compatMode&&(e.open(),e.write("<!DOCTYPE html><html><head></head><body></body></html>"),e.close(),e=f.current?.contentDocument??e),e.body||e.documentElement.appendChild(e.createElement("body")),e.body.style.margin="0";const t=e.createElement("div");t.setAttribute("data-puck-entry",""),t.id="frame-root","fill"===c&&t.classList.add("es-frame-fill"),e.body.appendChild(t),i(e,u),m(t),l?.(e);let n=null;const o=f.current?.ownerDocument;if(d&&o){de(o,e,u);const t=o.defaultView;t&&"MutationObserver"in t&&(n=new t.MutationObserver(()=>de(o,e,u)),n.observe(o.head,{childList:!0,subtree:!0,characterData:!0}))}return()=>{n?.disconnect(),t.remove(),m(null),l?.(null)}},[]),/* @__PURE__ */$("iframe",{ref:f,id:t,title:n??p.frame,className:["es-canvas-frame","fill"===c?"is-fill":"",r??""].filter(Boolean).join(" "),style:s,children:h?R(e,h):null})}var ce=O(null),ue=O(ae),pe=[];function fe({parentId:e,slot:t,className:n,style:o,minEmptyHeight:r=128}){const a=ee(),i=te(n=>c(n.appState.data,a.config,{parentId:e,slot:t})??pe),s=te(t=>"node"===t.selection?.kind&&t.selection.id===e&&e!==l),d=te(n=>"slot"===n.selection?.kind&&n.selection.parentId===e&&n.selection.slot===t),u=E(ce),p=["es-zone"];return i.length&&p.push("has-children"),e===l&&p.push("is-root"),(s||d)&&p.push("is-area-selected"),null!==u&&u===e&&e!==l&&p.push("is-hovering-area"),n&&p.push(n),/* @__PURE__ */$("div",{className:p.join(" "),[re]:`${e}:${t}`,style:{...o,"--min-empty-height":`${r}px`},children:i.map(e=>/* @__PURE__ */$(ve,{node:e},e.props.id))})}function he(e,t,n,o){const r="root"===t?e.root:e.components[t],a={...o};for(const e of S(I(r)))a[e]=function(t={}){/* @__PURE__ */
|
|
2
|
+
return $(fe,{parentId:n,slot:e,...t})};return a}function me(e){return function({zone:t,...n}){/* @__PURE__ */
|
|
3
|
+
return $(fe,{parentId:e,slot:t,...n})}}function ve({node:e}){const t=ee().config,n=t.components[e.type],o=e.props.id,r=function(e){const t=A(null);return M(()=>n=>{const o=t.current;o&&o!==n&&(o.removeAttribute(oe),o.removeAttribute("data-puck-dnd")),t.current=n,n&&(n.setAttribute(oe,e),n.setAttribute("data-puck-dnd",e),n.style.position="relative")},[e])}(o),a=E(ue);if(!n?.render)return null;const i=n.render,s=he(t,e.type,o,{...C(n),...e.props}),d={renderDropZone:me(o),isEditing:!0,dragRef:n.inline?r:null,metadata:{...a,...n.metadata}};return n.inline?/* @__PURE__ */$(i,{...s,puck:d,editMode:!0}):/* @__PURE__ */$("div",{[oe]:o,"data-puck-dnd":o,style:{position:"relative"},children:/* @__PURE__ */$(i,{...s,puck:d,editMode:!0})})}function ye({metadata:e}){const t=te(e=>e.config),n=te(e=>e.appState.data.root).props??{},o=t.root?.render,r=/* @__PURE__ */$(fe,{parentId:l,slot:w}),a=o?/* @__PURE__ */$(o,{id:"puck-root",...he(t,"root",l,n),puck:{renderDropZone:me(l),isEditing:!0,dragRef:null,metadata:e??{}},editMode:!0,children:r}):r;/* @__PURE__ */
|
|
4
|
+
return $(ue.Provider,{value:e??ae,children:a})}function ge({id:e,kind:t,overlay:n}){const o=A(null),[r,a]=z(null);se(()=>{const t=o.current?.ownerDocument,n=t?.defaultView;if(!t||!n||!e)return void a(null);let r=0;const i=()=>{r=0;const i=function(e,t){if(!e||!t)return null;const n=e.getBoundingClientRect(),o=t.getBoundingClientRect();return{top:n.top-o.top,left:n.left-o.left,width:n.width,height:n.height}}(t.querySelector(`[${oe}="${n.CSS?.escape?n.CSS.escape(e):e}"]`),o.current?.parentElement??null);a(e=>{return(t=e)===(n=i)||t&&n&&t.top===n.top&&t.left===n.left&&t.width===n.width&&t.height===n.height?e:i;var t,n})},s=()=>{r||(r=(n.requestAnimationFrame??(e=>n.setTimeout(e,16)))(i))};i();const d="MutationObserver"in n?new n.MutationObserver(s):null;d?.observe(t.body,{childList:!0,subtree:!0,attributes:!0,characterData:!0});const l="ResizeObserver"in n?new n.ResizeObserver(s):null;return l?.observe(t.documentElement),n.addEventListener("resize",s),()=>{d?.disconnect(),l?.disconnect(),n.removeEventListener("resize",s),r&&(n.cancelAnimationFrame??n.clearTimeout)(r)}},[e]);const i=/* @__PURE__ */$("div",{ref:o,"aria-hidden":"true",className:`es-canvas-outline is-${t}`,style:r?{position:"absolute",top:r.top,left:r.left,width:r.width,height:r.height}:{display:"none"}});return n&&e?/* @__PURE__ */$(n,{componentId:e,kind:t,children:i}):i}function ke({frame:e=!0,className:t,style:n,metadata:o,mirrorStyles:r,onDocument:a,height:i,title:s,nonce:d,hotkeys:l,frameWrapper:c,overlay:u,children:p}){const f=ee(),h=E(J),m=l??h,[v,y]=z(void 0),g=te(e=>"node"===e.selection?.kind?e.selection.id:null),[k,b]=z(null),w=/* @__PURE__ */j("div",{className:"es-canvas-content",style:{position:"relative"},onClick:e=>{const t=e.target;t.closest?.("a[href]")&&e.preventDefault();const n=t.closest?.(`[${oe}]`);n?f.select(n.getAttribute(oe)):t.hasAttribute?.(re)||f.select(null)},onMouseOver:e=>{const t=e.target.closest?.(`[${oe}]`),n=t?.getAttribute(oe)??null;n!==k&&b(n)},onMouseLeave:()=>b(null),children:[
|
|
5
|
+
/* @__PURE__ */$(ce.Provider,{value:k,children:/* @__PURE__ */$(ye,{metadata:o})}),
|
|
6
|
+
/* @__PURE__ */j("div",{className:"es-canvas-outlines",style:{position:"absolute",top:0,left:0,pointerEvents:"none"},children:[
|
|
7
|
+
/* @__PURE__ */$(ge,{id:k&&k!==g?k:null,kind:"hover",overlay:u}),
|
|
8
|
+
/* @__PURE__ */$(ge,{id:g,kind:"selected",overlay:u})]}),p]}),S=c?/* @__PURE__ */$(c,{document:v,children:w}):w;x(()=>{if(v&&m)return Q(v,f)},[v,m,f]);/* @__PURE__ */
|
|
9
|
+
return $("div",{className:"es-canvas"+(t?` ${t}`:""),style:n,"data-puck-preview":"",children:e?/* @__PURE__ */$(le,{mirrorStyles:r,onDocument:e=>{y(e??void 0),a?.(e)},height:i,title:s,nonce:d,children:S}):/* @__PURE__ */$("div",{id:"preview-frame","data-puck-entry":"",children:S})})}function be(e={}){const t=ee(),o=te(e=>e.appState.data);return n({...e,data:o,config:t.config,commit:(e,{select:n})=>t.run({data:e,select:n})})}function we(){const e=ee(),t=te(e=>e.config),n=e.resolveCache,o=te(e=>e.selectedItem),a=te(e=>e.appState.data.root),i=o?o.props.id:"root",s=a.props??{},l=M(()=>o||{type:"root",props:s},[o,s]),c=o?t.components[o.type]:t.root,u=e.getState(),p=o?d(u.appState.data,t,i):null,f=p&&"root"!==p.place.parentId?p.place.parentId:null,h=f?u.getItemById(f)??null:null,{fields:m}=r({id:i,node:l,block:c,parent:h,appState:u.appState}),v=te(e=>!1===e.getPermissions(o?{item:o}:{root:!0}).edit),y=Z((o,r)=>{(async()=>{const a=e.getState();if("root"!==i){const s=a.getItemById(i),d=a.getSelectorForId(i);if(!s||!d)return;const l={...s,props:{...s.props,[o]:r}},{node:c}=await b(l,t,{cache:n,trigger:"replace"}),u=e.getState().getSelectorForId(i);if(!u)return;return void e.dispatch({type:"replace",destinationZone:u.zone??"root:default-zone",destinationIndex:u.index,data:c})}const s=a.appState.data.root.props??{},{node:d}=await b({type:"root",props:{...s,[o]:r}},t,{cache:n,trigger:"replace"});e.dispatch({type:"replaceRoot",root:{props:d.props,readOnly:d.readOnly},recordHistory:!0})})()},[e,t,n,i]);return{id:i,node:l,fields:m,values:l.props,readOnly:v,onChange:y}}export{le as CanvasFrame,Y as DEFAULT_UI,ke as EaselCanvas,_ as EaselProvider,ye as EditDocument,Q as bindUndoKeys,X as createEasel,ne as createUseEasel,B as recordsByDefault,V as reduce,K as uiView,te as useEasel,ee as useEaselApi,be as useEaselNodeOps,we as useSelectedFields,F as validSelection};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{routeSharedHostMessage as e}from"./chunk-S4AWJX4Q.js";import{describeLoadFailure as r,hostLoadRefusal as n}from"./chunk-ERR437B5.js";import{editLockOf as t}from"./chunk-GMCZXMOV.js";import{NO_DOCUMENT_ADDRESSING as o}from"./chunk-RLBXE4EU.js";import{saveStatusOf as u,resetForDocumentSwitch as a}from"./chunk-HNKB2ZYR.js";import{isExpiredSession as s}from"./chunk-CLOS6SSX.js";import{useAdminBridge as i}from"./chunk-3P6AMTOS.js";import{useEaselSession as l}from"./chunk-O7Q4DDJT.js";import{backendOf as c,setSessionDocumentSite as d}from"./chunk-RSCMJIWS.js";import{useEaselHost as f}from"./chunk-U3JP4VGF.js";import{DEFAULT_SCREEN_WORDS as m}from"./chunk-E2O2MRZR.js";import{useAutosave as g}from"./chunk-BDTITTMW.js";import{canWriteDocument as k,newEaselClientId as v,reloadIfVersionMoved as p,openUnansweredClaim as h,FAIL_OPEN_RETRY_MS as y,CLAIM_FAIL_OPEN_MS as S,holderOf as w}from"./chunk-THWO5YVZ.js";import{useWords as b}from"./chunk-MFIRYGHW.js";import{createContext as I,useContext as P,useState as j,useMemo as R,useCallback as O,useEffect as T,useRef as B}from"react";import{jsx as E}from"react/jsx-runtime";var M={content:[],root:{},zones:{}};var C=I(null);function H(){const e=P(C);if(!e)throw new Error("useStorefrontDocument must be used within StorefrontDocumentProvider");return e}function A({target:I,addressing:P=o,onHostMessage:H,children:A}){const D=P,{homeSlug:F,entryMayBounce:L,entryBounce:V,onSwitch:W,tellsHost:N,adapterFor:J,migrateRenamedProps:X,describeMissing:Y,onLoadFailed:Z}=D,[x,G]=j(I),U=f(),K=l(),Q=R(()=>c(K),[K]),z=R(()=>t(K),[K]),_="template"===x.kind,q="template"===x.kind?x.id:null,$="template"===x.kind?x.pageSlug??F??"":"document"===x.kind?x.slug??"":x.slug,ee="page"===x.kind?x.siteId??null:null,re=K.blocks,ne=R(()=>J(x,Q,re),[J,Q,re,x.kind,"template"===x.kind?x.id:"document"===x.kind?x.record:x.siteId]),te=ne.capabilities,oe=O(e=>K.documentHooks?.stored?.(e)??e,[K]),ue="page"===x.kind?x.originSlug??null:null;T(()=>{d(K,ee)},[K,ee]);const ae=B(x);T(()=>{ae.current=x},[x]);const{token:se,tokenRef:ie,capabilities:le}=i({onMessage:r=>{if(H?.(r)||e(r))return;const n=r;if("storefront-editor:navigate"===n?.type){const e=r;e?.target&&Pr(e.target)}}}),ce=!K.usesBridgedToken||null!==se,de=ne.lock,fe=Boolean(Q.lock),[me,ge]=j(null),[ke,ve]=j(null),[pe,he]=j(null),[ye,Se]=j(null),we=b("screen",m),be=ye?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})}}(ye,we):null,[Ie,Pe]=j(null),je=B(null),Re=B(null),[Oe,Te]=j(!1),Be=B(null),[Ee,Me]=j(null),Ce=B(null),[He,Ae]=j(null),De=B(null);T(()=>{De.current=He},[He]);const[Fe,Le]=j(te.hasEditLock?{kind:"checking"}:{kind:"editing"}),Ve=B(Fe);T(()=>{Ve.current=Fe},[Fe]);const We=B(()=>Promise.resolve(!1)),Ne=O(e=>{Re.current=e,Te(!0)},[]),Je=g({save:async({id:e,data:r})=>{if(k(Ve.current)){if(!await We.current(e,r)){if(!k(Ve.current))return void Ne({id:e,data:r});throw new Error("page save did not land")}}else Ne({id:e,data:r})},onFailure:(e,r)=>{0===r&&U.send("storefront-editor:save-failed")}}),{state:Xe,push:Ye,flush:Ze,pause:xe,resume:Ge,stop:Ue,reset:Ke,retryNow:Qe,hasPending:ze}=Je,_e=B(Xe);T(()=>{_e.current=Xe},[Xe]);const qe=u(Xe),$e=O(()=>{const e=Re.current;e&&(Re.current=null,Te(!1),Ye(e))},[Ye]),er=B("");er.current||(er.current=v());const[rr,nr]=j(0),tr=B(!1),[or,ur]=j(L(I)),ar=B(!1);T(()=>{if(ar.current)return;ar.current=!0;const e=U.address.search(),r=V(I,e);r?U.address.load(r):L(I)&&ur(!1)},[I,U]);const sr=U.send;T(()=>{if(!ce)return;let e=!1;const t=ae.current,o=ne.resolve($),u=K.documentHooks?.opening?.({slug:$,isTemplate:_,capabilities:te});return o.then(async r=>{if(e)return;if(!r)return"page"===t.kind&&null!==F&&$!==F?void U.address.load({kind:"page",slug:F,siteId:ee??void 0}):(Se({target:t,slug:$,missing:!0,sentence:Y?.(t)??null}),void Z?.(t,null));const n=r.readOnlyReason?r.readOnlyReason:null;je.current=n,Pe(n),ge(r.id),ve(r.kind??null),Ce.current=r.version??null;const o=r.layout,a=o&&Object.keys(o).length?o:M,s=X(a),i=u?await u(s):s;e||he(i)}).catch(o=>{e||(console.error("[storefront-editor] document load failed",o),Se({target:t,slug:$,missing:!1,sentence:n(o,{slug:$},K),cause:r(o,K)}),Z?.(t,o))}),()=>{e=!0}},[ce,se,_,ne,$]);const ir=O(e=>new Promise(r=>{const n=Date.now(),t=setInterval(()=>{const o=ie.current;o&&o!==e?(clearInterval(t),r(o)):Date.now()-n>6e3&&(clearInterval(t),r(null))},200)}),[]),lr=O(async e=>{const r=ie.current;if(!r&&K.usesBridgedToken)return{ok:!1,error:new Error("no editor token")};try{return{ok:!0,value:await e(r??"")}}catch(n){if(s(n,K)){sr("storefront-editor:auth-expired");const n=r?await ir(r):null;if(n)try{return{ok:!0,value:await e(n)}}catch(e){return{ok:!1,error:e}}}return{ok:!1,error:n}}},[sr,ir,K]),cr=O(async e=>{const r=ie.current?await lr(e):{ok:!1};return r.ok||sr("storefront-editor:save-failed"),r.ok},[sr,lr]),dr=O(async(e,r,n=!1)=>{if(null!==je.current)return!1;if(!k(Ve.current))return!1;if(De.current)return!1;const t=await lr(()=>ne.saveLayout(e,r,Ce.current,er.current));if(t.ok)return Ce.current=t.value.version??Ce.current,!0;const o=z.readLockTaken(t.error);if(o){const e={kind:"takenover",holder:o};return Ve.current=e,Le(e),!1}const u=z.readSaveConflict(t.error);if(u){if(u.savedByYou&&!n&&ne.rereadVersion){const n=await lr(()=>ne.rereadVersion(e));if(n.ok&&n.value)return Ce.current=n.value,We.current(e,r,!0)}Ue(),De.current=u,Ae(u)}return!1},[ne,lr,Ue]);T(()=>{We.current=dr},[dr]);const fr=O(e=>{if(null!==je.current)return;if(sr("storefront-editor:dirty"),!me)return;const r=oe(e);Be.current=r,k(Ve.current)?Ye({id:me,data:r}):Ne({id:me,data:r})},[me,sr,Ne,Ye,oe]),mr=O(async()=>{k(Ve.current)&&$e();return await Ze()&&null==Re.current},[$e,Ze]),gr=B(mr);T(()=>{gr.current=mr},[mr]);const kr=B(lr);T(()=>{kr.current=lr},[lr]);const vr=O(()=>{U.address.reload()},[U]),pr=B(()=>Promise.resolve(!1));T(()=>{pr.current=()=>{const e=ne.rereadVersion;return me&&e?p({ours:Ce.current,stored:async()=>{const r=await kr.current(()=>e(me));return r.ok?r.value:null},hasPending:()=>null!=Re.current||ze(),reload:vr}):Promise.resolve(!1)}},[ne,me,ze,vr]);const hr=null!==Ie;T(()=>{if(!de||!me||!ce||hr)return;let e=!1,r=null,n=null;const t=er.current,o={claim:async e=>{const r=await kr.current(()=>de.claim(me,t,e));if(r.ok)return{heartbeat_seconds:r.value.heartbeatSeconds};throw r.error},cancelled:()=>e,currentAccess:()=>Ve.current,heldWrite:()=>({pending:null!=Re.current||ze(),autoSaveEnabled:!_e.current.paused,saveConflict:null!=De.current}),setAccess:e=>{Ve.current=e,Le(e)},releaseHeldWrite:()=>{gr.current()},startHeartbeat:e=>{r&&clearInterval(r),r=setInterval(()=>{u(!1)},e)},stopHeartbeat:()=>{r&&(clearInterval(r),r=null)},reloadIfMoved:()=>{pr.current()}},u=z.makeClaimBeat(o),a=tr.current;return tr.current=!1,a||(Le({kind:"checking"}),n=setTimeout(()=>{n=null,h(o)&&o.startHeartbeat(y)},S)),u(a).finally(()=>{n&&clearTimeout(n),n=null}),()=>{e=!0,n&&clearTimeout(n),r&&clearInterval(r),de.release(me,t).catch(()=>{})}},[me,de,ce,se,rr,hr]);const yr=O(()=>{de&&me&&(tr.current=!0,nr(e=>e+1))},[me,de]),Sr=O(()=>{Le(e=>{const r="blocked"===e.kind||"takenover"===e.kind?e.holder:null;return r?{kind:"readonly",holder:r}:e})},[]),wr=O(()=>{_e.current.paused?(k(Ve.current)&&$e(),Ge()):xe()},[$e,xe,Ge]),br=O(()=>{Qe()},[Qe]),Ir=O(e=>{Be.current=null,a("template"!==e.kind&&fe,{resetAutosave:()=>{Ke(),Re.current=null,Te(!1)},setVersion:e=>{Ce.current=e},setSaveConflict:Ae,setAccess:Le}),W(e),G(e),je.current=null,Pe(null),ge(null),ve(null),he(null),Se(null),U.address.show(e),"document"!==e.kind&&N(e)&&U.send("storefront-editor:navigated",{target:e})},[Ke,U,fe,W,N]),Pr=O(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,ae.current,F))return;const r=null!=Re.current;if(!r&&!ze())return void Ir(e);const n=_e.current;r||n.paused||n.failed||n.stopped?Me(e):Ze().then(r=>{r?Ir(e):Me(e)})},[Ir,ze,Ze,F]),jr=O(()=>Me(null),[]),Rr=O(()=>{Me(e=>(e&&Ir(e),null))},[Ir]),Or=O(async()=>{const e=Ee;if(!e)return;await mr()&&(Me(null),Ir(e))},[Ee,mr,Ir]),Tr=O(async e=>{if(null!==je.current)return;if(!me)return;if(!k(Ve.current)||De.current)return;const r=oe(e);if(!await dr(me,r))return void(De.current||sr("storefront-editor:save-failed"));const n=ne.publish;if(!te.canPublish||!n)return void sr("storefront-editor:saved");const t=await lr(()=>n(me,Ce.current??void 0));t.ok?(Ce.current=t.value.version??Ce.current,sr("storefront-editor:published")):sr("storefront-editor:save-failed")},[me,ne,te.canPublish,sr,dr,lr,oe]);/* @__PURE__ */
|
|
2
|
+
return E(C.Provider,{value:{target:x,adapter:ne,capabilities:te,templateId:q,currentSlug:$,currentKind:ke,siteId:ee,ready:ce,token:se,tokenRef:ie,notifyParent:sr,bridgeCapabilities:le,runAuthed:cr,docId:me,data:pe,getLiveData:()=>Be.current??pe,footerOriginSlug:ue,error:be,redirecting:or,saveStatus:qe,saveState:Xe,autoSaveEnabled:!Xe.paused,autoSaveStoppedByConflict:Xe.stopped,hasUnsavedEdits:Xe.pending||Oe,toggleAutoSave:wr,retrySave:br,onChange:fr,flushSave:mr,onPublish:Tr,access:Fe,readOnly:null!==w(Fe)||null!==Ie||null!==He,readOnlyReason:Ie,takeOverEditing:yr,viewReadOnly:Sr,saveConflict:He,reloadFromServer:vr,navigate:Pr,pendingNav:Ee,cancelPendingNav:jr,discardAndNavigate:Rr,saveAndNavigate:Or},children:A})}export{C as ScreenDocumentContext,A as ScreenDocumentProvider,H as useScreenDocument};
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import{DEFAULT_DRAG_WORDS as e}from"./chunk-O2NLQBFX.js";import{dropEffectFor as t,scrollBoxOf as n,frameScrollBox as l,startAutoScroll as r,isNoOpDrop as a}from"./chunk-67GNT6PF.js";import{useCanvasLayout as o,useCanvasEvent as s}from"./chunk-PAELDYYS.js";import{framePointToHost as i,elementScale as c,frameRectToLayer as d,clientPointToLayer as u}from"./chunk-ZNCEOSXO.js";import{CloseIcon as h,SearchIcon as f}from"./chunk-L5KW4HG5.js";import{parseZoneKey as p}from"./chunk-KRXQM65X.js";import{useRef as m,useEffect as b,useState as g,useCallback as y,useMemo as v,useSyncExternalStore as x,useId as k,useLayoutEffect as w}from"react";import{jsxs as N,jsx as A}from"react/jsx-runtime";var D=(e,t,n)=>t>=e.left&&t<=e.left+e.width&&n>=e.top&&n<=e.top+e.height,z=e=>e.width*e.height;function T(e,t,n){let l=null;for(const r of e)D(r.box,t,n)&&(!l||z(r.box)<=z(l.box))&&(l=r);return l}function C(e,t,n){const l="x"===e.axis?t:n;let r=0;for(const t of e.children){l>("x"===e.axis?t.left+t.width/2:t.top+t.height/2)&&(r+=1)}return r}function S(e,t){const n=e.children;if("x"===e.axis){const l=n[t-1],r=n[t],a=l&&r?(l.left+l.width+r.left)/2:l?l.left+l.width:r?r.left:e.box.left,o=r??l??e.box;return{left:a-1,top:o.top,width:2,height:o.height}}const l=n[t-1],r=n[t],a=l&&r?(l.top+l.height+r.top)/2:l?l.top+l.height:r?r.top:e.box.top;return{left:e.box.left,top:a-1,width:e.box.width,height:2}}function E(e,t,n,l,r=()=>!1,a=()=>!0){const o=e.filter(e=>D(e.box,t,n)).sort((e,t)=>z(e.box)-z(t.box));for(const e of o){const o=C(e,t,n),s={...e.list,index:o};if(r(s))return null;if(l(s))return{zone:e,to:s,line:S(e,o)};if(!a(s))return null}return null}function L(e,t=e.key){const n=[];for(let l=1;l<e.children.length;l++){const r=e.children[l-1],a=e.children[l],o=r.top+r.height;n.push({key:`${t}:${l}`,place:{...e.list,index:l},box:{left:e.box.left,top:o,width:e.box.width,height:Math.max(a.top-o,0)}})}return n}var
|
|
1
|
+
import{DEFAULT_DRAG_WORDS as e}from"./chunk-O2NLQBFX.js";import{dropEffectFor as t,scrollBoxOf as n,frameScrollBox as l,startAutoScroll as r,isNoOpDrop as a}from"./chunk-67GNT6PF.js";import{useCanvasLayout as o,useCanvasEvent as s}from"./chunk-PAELDYYS.js";import{framePointToHost as i,elementScale as c,frameRectToLayer as d,clientPointToLayer as u}from"./chunk-ZNCEOSXO.js";import{CloseIcon as h,SearchIcon as f}from"./chunk-L5KW4HG5.js";import{parseZoneKey as p}from"./chunk-KRXQM65X.js";import{useRef as m,useEffect as b,useState as g,useCallback as y,useMemo as v,useSyncExternalStore as x,useId as k,useLayoutEffect as w}from"react";import{jsxs as N,jsx as A}from"react/jsx-runtime";var D=(e,t,n)=>t>=e.left&&t<=e.left+e.width&&n>=e.top&&n<=e.top+e.height,z=e=>e.width*e.height;function T(e,t,n){let l=null;for(const r of e)D(r.box,t,n)&&(!l||z(r.box)<=z(l.box))&&(l=r);return l}function C(e,t,n){const l="x"===e.axis?t:n;let r=0;for(const t of e.children){l>("x"===e.axis?t.left+t.width/2:t.top+t.height/2)&&(r+=1)}return r}function S(e,t){const n=e.children;if("x"===e.axis){const l=n[t-1],r=n[t],a=l&&r?(l.left+l.width+r.left)/2:l?l.left+l.width:r?r.left:e.box.left,o=r??l??e.box;return{left:a-1,top:o.top,width:2,height:o.height}}const l=n[t-1],r=n[t],a=l&&r?(l.top+l.height+r.top)/2:l?l.top+l.height:r?r.top:e.box.top;return{left:e.box.left,top:a-1,width:e.box.width,height:2}}function E(e,t,n,l,r=()=>!1,a=()=>!0){const o=e.filter(e=>D(e.box,t,n)).sort((e,t)=>z(e.box)-z(t.box));for(const e of o){const o=C(e,t,n),s={...e.list,index:o};if(r(s))return null;if(l(s))return{zone:e,to:s,line:S(e,o)};if(!a(s))return null}return null}function L(e,t=e.key){const n=[];for(let l=1;l<e.children.length;l++){const r=e.children[l-1],a=e.children[l],o=r.top+r.height;n.push({key:`${t}:${l}`,place:{...e.list,index:l},box:{left:e.box.left,top:o,width:e.box.width,height:Math.max(a.top-o,0)}})}return n}var $={nodes:[],zones:[]},j="data-puck-dropzone",M="data-puck-component";function B(e,t){if(e.length>=2){const[t,n]=e;return Math.abs(n.top-t.top)<Math.min(t.height,n.height)/2&&n.left>t.left?"x":"y"}const n=t.ownerDocument.defaultView?.getComputedStyle(t);return n&&n.display.includes("flex")&&n.flexDirection.startsWith("row")?"x":"y"}function K(e,t){const{frame:n,document:l}=e,r=e=>d(n,function(e){const t=e.getBoundingClientRect();return{left:t.left,top:t.top,width:t.width,height:t.height}}(e),t),a=[],o=[];for(const e of l.querySelectorAll(`[${j}]`)){const t=e.getAttribute(j)??"";let n;try{n=p(t)}catch{continue}const l=[...e.querySelectorAll(`[${M}]`)].filter(t=>t.parentElement?.closest(`[${j}]`)===e),s=l.map(r);o.push({key:t,list:n,box:r(e),axis:B(s,e),children:s}),l.forEach((e,t)=>{const l=e.getAttribute(M);l&&a.push({id:l,place:{...n,index:t},box:s[t]})})}return{nodes:a,zones:o}}var O="data-es-empty-cell",X="data-puck-dropzone",q=140;var P=e=>({left:e.left,top:e.top,width:e.width,height:e.height});function Y(d){const{canvas:h,session:f,readOnly:p,words:k=e.canvas}=d,D=m(d);b(()=>{D.current=d});const z=m(null),C=o(h),[S,L]=g(0),j=y(()=>L(e=>e+1),[]),[M,B]=g($);b(()=>{const e=z.current;h&&e&&B((D.current.measure??K)(h,e))},[h,C,d.revision,S]);const q=d.model,Y=v(()=>q(M),[q,M]),F=x(f.subscribe,f.shown,f.shown),[R,Z]=g(null),[G,Q]=g(null),W=m(null),H=()=>{W.current&&clearTimeout(W.current),W.current=null},I=()=>{H(),W.current=setTimeout(()=>{f.get()||Z(null)},140)};b(()=>H,[]);const V=m(null);s(h,"mousemove",e=>{const t=z.current;if(!h||!t)return;const n=i(h.frame,e.clientX,e.clientY,t),l=c(t),r={x:n.x/l,y:n.y/l};if(V.current=r,D.current.readOnly||f.get())return;H();const a=T(Y.sources,r.x,r.y);Z(e=>e?.key===a?.key&&e?.box===a?.box?e:a)}),s(h,"mouseout",e=>{e.relatedTarget||(V.current=null,I())}),s(h,"mouseover",e=>{e.relatedTarget||j()});const J=m(null),U=y(()=>{J.current?.(),J.current=null,Q(null)},[]);b(()=>f.subscribe(()=>{f.get()?j():U()}),[f,U,j]),b(()=>U,[U]),("undefined"==typeof document?b:w)(()=>{if(f.get())return;const e=V.current;Z(t=>p?null:e?T(Y.sources,e.x,e.y):t?Y.sources.find(e=>e.key===t.key)??null:null)},[Y,F,f,p]);const _=e=>{const t=f.get(),n=z.current;if(!t||!n)return null;const l=u(n,e.clientX,e.clientY);V.current=l;const r=E(Y.zones,l.x,l.y,e=>D.current.canDrop(t.item,e),e=>!!t.from&&a(t.from,e),e=>D.current.fallThrough?.(t.item,e,t.from)??!0);return r?{h:t,t:r}:null},ee={onDragEnter:e=>{if(J.current)return;const t=n(e.currentTarget.parentElement?.parentElement??null),a=h?l(h.document):null,o=[];t&&o.push(r(t)),a&&h&&o.push(r(a,h.frame)),J.current=o.length?()=>o.forEach(e=>e()):null},onDragOver:e=>{const n=_(e);if(!n)return void Q(null);e.preventDefault(),e.dataTransfer.dropEffect=t(e.dataTransfer.effectAllowed);const l={zoneKey:n.t.zone.key,line:n.t.line,axis:n.t.zone.axis};Q(e=>e&&e.zoneKey===l.zoneKey&&e.line.left===l.line.left&&e.line.top===l.line.top?e:l)},onDragLeave:e=>{const t=e.relatedTarget;t&&e.currentTarget.contains(t)||(V.current=null,Q(null))},onDrop:e=>{const t=_(e);t&&(e.preventDefault(),f.end(),U(),D.current.onDrop(t.h.item,t.t.to))}},te={draggable:!p&&!!R,onMouseEnter:H,onMouseLeave:()=>!f.get()&&I(),onDragStart:e=>{if(R&&!p){f.start({key:R.key,item:R.item,from:R.from}),e.dataTransfer.effectAllowed="move";try{e.dataTransfer.setData("text/plain",R.key)}catch{}}else e.preventDefault()},onDragEnd:()=>{f.end(),U()},onClick:()=>{R&&!p&&D.current.onPick?.(R.item)}},{seams:ne=[]}=Y,le=Y.zones.filter(e=>0===e.children.length),re=d.onZoneAdd&&!p?le:[],ae=re.map(e=>e.key).join("\n");return b(()=>{const e=h?.document;if(!e)return;const t=new Set(ae?ae.split("\n"):[]);for(const n of e.querySelectorAll(`[${X}]`))n.toggleAttribute(O,t.has(n.getAttribute(X)??""));return()=>{for(const t of e.querySelectorAll(`[${O}]`))t.removeAttribute(O)}},[h,ae,M,C,S]),/* @__PURE__ */N("div",{ref:z,className:"es-canvas-layer",children:[F||!d.onSeamAdd||p?null:ne.map(e=>/* @__PURE__ */A("div",{className:"es-canvas-seam",style:{left:e.box.left,top:e.box.top+e.box.height/2-8,width:e.box.width,height:16},children:/* @__PURE__ */A("button",{type:"button",className:"es-canvas-seam-add",onClick:()=>d.onSeamAdd?.(e.place),children:k.addButton({label:d.seamLabel??k.addSection})})},e.key)),re.length?re.map(e=>/* @__PURE__ */A("button",{type:"button",className:G?.zoneKey===e.key?"es-canvas-empty is-over":"es-canvas-empty",style:P(e.box),onClick:()=>d.onZoneAdd?.({...e.list,index:0}),children:/* @__PURE__ */A("span",{className:"es-canvas-empty-add",children:k.addButton({label:d.zoneAddLabel??k.addBlock})})},e.key)):null,F?/* @__PURE__ */A("div",{className:"es-canvas-catch",...ee}):null,G&&!le.some(e=>e.key===G.zoneKey)?/* @__PURE__ */A("div",{className:`es-canvas-line is-${G.axis}`,style:P(G.line)}):null,
|
|
2
2
|
/* @__PURE__ */N("div",{className:["es-canvas-handle",R&&!p?"is-shown":"",F?"is-dragging":""].filter(Boolean).join(" "),style:R?{left:R.box.left+2,top:Math.max(R.box.top-11,0)}:void 0,title:R?R.title??k.handle({label:R.label}):void 0,...te,children:[
|
|
3
|
-
/* @__PURE__ */A("span",{className:"es-canvas-grip","aria-hidden":"true",children:"⋮⋮"}),R?.label]})]})}var F=e=>e.tiles.length>0&&e.tiles.every(e=>null!=e.cover);function R({groups:t,session:n,itemFor:l,onInsert:r,at:a,hint:o,searchLabel:s,readOnly:i,words:c=e.add}){const d=o??c.hint,u=s??c.search,[p,m]=g(""),b=k(),y=p.trim().toLowerCase(),v=t.map(e=>({...e,tiles:y?e.tiles.filter(e=>((e,t)=>e.label.toLowerCase().includes(t)||(e.keywords??[]).some(e=>e.toLowerCase().includes(t)))(e,y)):e.tiles})).filter(e=>e.tiles.length>0),
|
|
3
|
+
/* @__PURE__ */A("span",{className:"es-canvas-grip","aria-hidden":"true",children:"⋮⋮"}),R?.label]})]})}var F=e=>e.tiles.length>0&&e.tiles.every(e=>null!=e.cover);function R({groups:t,session:n,itemFor:l,onInsert:r,at:a,hint:o,searchLabel:s,readOnly:i,words:c=e.add}){const d=o??c.hint,u=s??c.search,[p,m]=g(""),b=k(),y=p.trim().toLowerCase(),v=function(e){const t=/* @__PURE__ */new Map;return e.map(e=>{const n=e.key??e.title,l=t.get(n)??0;return t.set(n,l+1),0===l?n:`${n}\0${l}`})}(t),x=t.map((e,t)=>({...e,key:v[t],tiles:y?e.tiles.filter(e=>((e,t)=>e.label.toLowerCase().includes(t)||(e.keywords??[]).some(e=>e.toLowerCase().includes(t)))(e,y)):e.tiles})).filter(e=>e.tiles.length>0),w=(e,t)=>r=>{if(t)r.preventDefault();else{n.start({key:`new:${e}`,item:l(e)}),r.dataTransfer.effectAllowed="copy";try{r.dataTransfer.setData("text/plain",e)}catch{}}};/* @__PURE__ */
|
|
4
4
|
return N("div",{className:"es-add",children:[a?/* @__PURE__ */N("div",{className:"es-add-at",role:"status",children:[
|
|
5
5
|
/* @__PURE__ */A("span",{children:a.label}),
|
|
6
6
|
/* @__PURE__ */A("button",{type:"button",className:"es-add-at-clear","aria-label":c.stop,title:c.stop,onClick:a.onClear,children:/* @__PURE__ */A(h,{size:12,"aria-hidden":"true"})})]}):null,
|
|
7
7
|
/* @__PURE__ */A("p",{className:"es-add-hint",children:d}),
|
|
8
8
|
/* @__PURE__ */N("div",{className:"es-add-search",children:[
|
|
9
9
|
/* @__PURE__ */A(f,{size:16,"aria-hidden":"true"}),
|
|
10
|
-
/* @__PURE__ */A("input",{id:b,type:"search","aria-label":u,placeholder:c.searchPlaceholder({label:u}),value:p,onChange:e=>m(e.target.value)}),p?/* @__PURE__ */A("button",{type:"button",className:"es-add-search-clear","aria-label":c.clearSearch,onClick:()=>m(""),children:/* @__PURE__ */A(h,{size:12,"aria-hidden":"true"})}):null]}),0===
|
|
10
|
+
/* @__PURE__ */A("input",{id:b,type:"search","aria-label":u,placeholder:c.searchPlaceholder({label:u}),value:p,onChange:e=>m(e.target.value)}),p?/* @__PURE__ */A("button",{type:"button",className:"es-add-search-clear","aria-label":c.clearSearch,onClick:()=>m(""),children:/* @__PURE__ */A(h,{size:12,"aria-hidden":"true"})}):null]}),0===x.length?/* @__PURE__ */N("div",{className:"es-add-empty",role:"status",children:[
|
|
11
11
|
/* @__PURE__ */A("div",{className:"es-add-empty-title",children:c.nothing({query:p.trim()})}),
|
|
12
|
-
/* @__PURE__ */A("div",{className:"es-add-empty-sub",children:c.tryAnother})]}):
|
|
12
|
+
/* @__PURE__ */A("div",{className:"es-add-empty-sub",children:c.tryAnother})]}):x.map(e=>/* @__PURE__ */N("section",{className:"es-add-group","aria-label":e.title,children:[
|
|
13
13
|
/* @__PURE__ */N("div",{className:"es-add-group-head",children:[
|
|
14
14
|
/* @__PURE__ */A("span",{className:"es-add-group-title",children:e.title}),
|
|
15
15
|
/* @__PURE__ */A("span",{className:"es-add-group-count",children:e.tiles.length})]}),
|
|
16
16
|
/* @__PURE__ */A("div",{className:F(e)?"es-add-grid is-cards":"es-add-grid",children:e.tiles.map(e=>{const t=Boolean(i||e.disabled),l=i?void 0:e.disabled?e.disabledReason:e.title??c.tile({label:e.label});/* @__PURE__ */
|
|
17
|
-
return N("button",{type:"button",className:null!=e.cover?"es-add-tile has-cover":"es-add-tile",draggable:!t,"aria-disabled":t||void 0,"aria-label":c.tile({label:e.label}),title:l,onDragStart:
|
|
18
|
-
/* @__PURE__ */A("span",{className:"es-add-tile-label",children:e.label})]},e.type)})})]},e.
|
|
17
|
+
return N("button",{type:"button",className:null!=e.cover?"es-add-tile has-cover":"es-add-tile",draggable:!t,"aria-disabled":t||void 0,"aria-label":c.tile({label:e.label}),title:l,onDragStart:w(e.type,t),onDragEnd:()=>n.end(),onClick:()=>!t&&r(e.type),children:[null!=e.cover?/* @__PURE__ */A("span",{className:"es-add-tile-cover","aria-hidden":"true",children:e.cover}):e.icon?/* @__PURE__ */A("span",{className:"es-add-tile-glyph","aria-hidden":"true",children:e.icon}):null,
|
|
18
|
+
/* @__PURE__ */A("span",{className:"es-add-tile-label",children:e.label})]},e.type)})})]},e.key))]})}export{R as AddPanel,Y as CanvasDragLayer,$ as EMPTY_MEASURE,q as HANDLE_GRACE_MS,E as canvasTarget,D as contains,C as gapInZone,S as gapLine,K as measureCanvas,T as pickSource,L as seamsBetween};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={title:"Add",contextBlocks:"Blocks for this place",contextAll:"Sections and blocks",done:"Done",doneDescription:"Close Add and go back",startBlank:"Start blank",templates:"Your templates",inside:({name:e})=>`Inside ${e}`,tile:({name:e})=>`Add ${e}`,hintBlocks:"Drag into the page, or click to add.",hint:"Drag onto the page, or click to add.",searchBlocks:"Search blocks",searchSections:"Search sections",addingTo:({name:e})=>`Adding to ${e}`,addingBefore:({name:e})=>`Adding before ${e}`,addingAtEnd:"Adding at the end of the page",addingHere:"Adding here"},t={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",done:"Done",copied:({name:e})=>`Copied ${e}`,pasteRefused:({name:e})=>`${e} can’t be pasted here.`,add:e};export{e as DEFAULT_SCREEN_ADD_WORDS,t as DEFAULT_SCREEN_WORDS};
|
|
1
|
+
var e={title:"Add",contextBlocks:"Blocks for this place",contextAll:"Sections and blocks",done:"Done",doneDescription:"Close Add and go back",startBlank:"Start blank",templates:"Your templates",inside:({name:e})=>`Inside ${e}`,tile:({name:e})=>`Add ${e}`,hintBlocks:"Drag into the page, or click to add.",hint:"Drag onto the page, or click to add.",searchBlocks:"Search blocks",searchSections:"Search sections",addingTo:({name:e})=>`Adding to ${e}`,addingBefore:({name:e})=>`Adding before ${e}`,addingAtEnd:"Adding at the end of the page",addingHere:"Adding here"},t={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",done:"Done",copied:({name:e})=>`Copied ${e}`,pasteRefused:({name:e})=>`${e} can’t be pasted here.`,add:e,canvasAddBlock:"Add block",railMedia:"Media library",leftPanel:"Left panel",resizeLeftPanel:"Resize left panel"};export{e as DEFAULT_SCREEN_ADD_WORDS,t as DEFAULT_SCREEN_WORDS};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useScreenDocument as n}from"./chunk-
|
|
1
|
+
import{useScreenDocument as n}from"./chunk-C6BJB5AC.js";import{DEFAULT_SCREEN_WORDS as o}from"./chunk-E2O2MRZR.js";import{EditNotice as r}from"./chunk-YC4TB3CJ.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-
|
|
1
|
+
import{blockRuns as e}from"./chunk-HQ4VVRIC.js";import{useScreenBlockLook as n}from"./chunk-ND55LTCA.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,4 +1,4 @@
|
|
|
1
|
-
import{useScreenOwnerName as e}from"./chunk-
|
|
1
|
+
import{useScreenOwnerName as e}from"./chunk-ND55LTCA.js";import{settlePanelPick as n}from"./chunk-R6WTQWAC.js";import{MediaPanelHead as i,mediaPickKind as c}from"./chunk-YC4TB3CJ.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
2
|
return o(r,{children:[
|
|
3
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
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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useSectionOps as o}from"./chunk-
|
|
1
|
+
import{useSectionOps as o}from"./chunk-PBSEUZD6.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-ND55LTCA.js";import{useEasel as p}from"./chunk-6WH7FA2M.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 h=s(m)?r(m.nodeId,m.propKey):null;c(()=>{f(h)},[h,f]);return{selectNode:d(o=>{i(()=>n);const e=u(o);e&&I.select(e)},[i,u,I]),openPartId:h}}export{m as usePartBridge};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{styleMenuItems as e}from"./chunk-57DJOKXT.js";import{useEaselSession as n}from"./chunk-O7Q4DDJT.js";import{ROOT_ZONE as t}from"./chunk-PLVEGYK6.js";import{useHostEscape as o}from"./chunk-U3JP4VGF.js";import{createNodeClipboard as l,nodeMenuItems as i}from"./chunk-2LK54I4E.js";import{EaselContextMenu as r}from"./chunk-KTVH2ZRL.js";import{useCanvasEvent as c}from"./chunk-PAELDYYS.js";import{isTypingTarget as s,framePointToHost as a}from"./chunk-ZNCEOSXO.js";import{UndoIcon as u,RedoIcon as d,AddIcon as p,PasteIcon as f,SettingsIcon as m,LayersIcon as y,CopyIcon as h}from"./chunk-L5KW4HG5.js";import{zoneKey as k,ROOT_SLOT as b,ROOT_ID as v}from"./chunk-KRXQM65X.js";import{useState as g,useCallback as x,useRef as C,useEffect as P}from"react";import{jsx as z}from"react/jsx-runtime";function O(e,n){const o=[],l=/* @__PURE__ */new Set;let i={zone:n.zone,index:n.index};for(;i;){const n=e.nodeAt(i.zone,i.index);if(!n||l.has(n.props.id))break;if(l.add(n.props.id),o.push({zone:i.zone,index:i.index,node:n,parentType:null}),i.zone===t)break;const r=i.zone.lastIndexOf(":");if(r<=0)break;i=e.locate(i.zone.slice(0,r))}for(let e=0;e<o.length-1;e+=1)o[e].parentType=o[e+1].node.type;return o}var w=l(),A=/* @__PURE__ */new WeakMap;function K(e){if(e.claimsPage)return w;const n=e.registry;if(!n)return e.cache("easel:node-clipboard",l);let t=A.get(n);return t||(t=l(),A.set(n,t)),t}function D(){return K(n())}function L(e,n,o){if(n===t){const{floor:n,cap:t}=e.sectionBand();return{parentId:v,slot:b,index:Math.min(Math.max(o,n),t)}}const l=n.lastIndexOf(":");return{parentId:n.slice(0,l),slot:n.slice(l+1),index:o}}function S(e,n,t){const o=e.isPinned(n,t),l=!o&&!e.isLocked(n)&&!e.duplicateBlocked(n),i=e.permits?.(n)??{duplicate:!0,delete:!0};return{copy:!o&&i.duplicate,cut:l&&i.duplicate&&i.delete}}function T(e,n,t){const o=e.canPasteAt;if(!o)return k(n.from)===t.zone?L(e,t.zone,t.index+1):null;for(const l of O(e,t)){const t=L(e,l.zone,l.index+1);if(o(n,t))return t}return null}function j(e){if(e.defaultPrevented||e.altKey||e.shiftKey||!e.metaKey&&!e.ctrlKey)return null;if(s(e.target))return null;const n=e.target,t=n&&"ownerDocument"in n?n.ownerDocument??n:null,o=t?.getSelection?.();if(o&&!o.isCollapsed&&o.toString().trim())return null;const l=e.code||(1===e.key.length?`Key${e.key.toUpperCase()}`:"");return"KeyC"===l?"copy":"KeyX"===l?"cut":"KeyV"===l?"paste":null}function E(e,n,t,o){const l=e.nodeAt(t.zone,t.index);if(!l)return null;const i=l.props.id,r=e.labelOf(l.type,t.zone),c=S(e,l,t.zone);if("copy"===n)return c.copy?(e.nodeOps.copy(i,r),{done:"copied",name:r}):null;if(o.readOnly)return null;if("cut"===n)return c.cut?(e.nodeOps.cut(i,r),{done:"cut",name:r}):null;const s=o.held;if(!s)return null;const a=e.isPinned(l,t.zone)?null:T(e,s,t);return a?(e.nodeOps.paste(a),{done:"pasted",name:s.label}):(e.onPasteRefused(s),{done:"refused",name:s.label})}function M(n,o){const{zone:l,index:r}=o,c=n.nodeAt(l,r);if(!c)return[];const s=c.props.id,a=n.labelOf(c.type,l),u=Boolean(c.props._hidden),d=n.nodeOps,p=n.isPinned(c,l),f=n.isLocked(c),m=!p&&!f&&!n.duplicateBlocked(c),y=n.permits?.(c)??{duplicate:!0,delete:!0},h=S(n,c,l),k=O(n,o),b=d.held,v=b&&!p?T(n,b,o):null,g=!n.readOnly,x=n.style?e({held:g?n.style.held():null,canCopy:n.style.canCopy(c,l),onCopy:()=>n.style?.copy(c,l),onPaste:()=>n.style?.paste(l,r,c)}):[];return i({title:a,layer:{group:"pick",items:k.flatMap((e,o)=>{const l={label:n.rowNameOf(e.node,e.zone),checked:0===o,onClick:()=>n.selectAt(e.zone,e.index,e.node.props.id,e.parentType)},i=e.zone===t?null:n.slotRung?.(e.zone)??null;return i?[l,{label:i.label,checked:!1,onClick:i.select}]:[l]})},actions:{addInside:g&&n.canAddTo(c.type)?()=>n.openAddInside(l,r):void 0,duplicate:g&&m&&y.duplicate?()=>d.duplicate(s):void 0,moveUp:g&&d.canStep(s,-1)?()=>d.step(s,-1):void 0,moveDown:g&&d.canStep(s,1)?()=>d.step(s,1):void 0,copy:h.copy?()=>d.copy(s,a):void 0,cut:g&&h.cut?()=>d.cut(s,a):void 0,paste:g&&b&&v?{label:b.label,run:()=>d.paste(v)}:void 0,rename:g&&n.renamePropOf(c,l)?()=>n.beginRename(l,r):void 0,hide:!g||f||p?void 0:{hidden:u,run:()=>d.setProps(s,{_hidden:!u})},delete:g&&m&&y.delete?()=>d.remove(s):void 0},style:x,extras:n.menuRows?.(c,l,r)??void 0,pinnedLine:p?"Pinned — can’t be moved or deleted":void 0})}function X(e){const n=!e.readOnly,o=[];n&&e.history.hasPast&&o.push({label:"Undo",icon:/* @__PURE__ */z(u,{}),shortcut:"⌘Z",onClick:e.history.back}),n&&e.history.hasFuture&&o.push({label:"Redo",icon:/* @__PURE__ */z(d,{}),shortcut:"⇧⌘Z",onClick:e.history.forward});const l=n?[{label:"Add section",icon:/* @__PURE__ */z(p,{}),onClick:e.openAddSection}]:[],i=e.nodeOps.held,r=L(e,t,e.sectionBand().cap);if(n&&i&&(e.canPasteAt?e.canPasteAt(i,r):k(i.from)===t)){const n=r;l.push({label:`Paste ${i.label}`,icon:/* @__PURE__ */z(f,{}),shortcut:"⌘V",onClick:()=>e.nodeOps.paste(n)})}const c=[o,l,[{label:e.pageSettingsLabel??"Page settings",icon:/* @__PURE__ */z(m,{}),onClick:e.openPageSettings},{label:"Collapse all layers",icon:/* @__PURE__ */z(y,{}),onClick:e.collapseAll}]].filter(e=>e.length>0),s={label:"—",onClick:()=>{}};return c.flatMap((e,n)=>n?[s,...e]:e)}function I(e,n){const t=n.selectionStart??0,o=n.selectionEnd??0,l=n.value.slice(t,o),i=e=>{n.focus(),n.setRangeText(e,t,o,"end"),n.dispatchEvent(new Event("input",{bubbles:!0}))},r=[];l&&(r.push({label:"Copy",icon:/* @__PURE__ */z(h,{}),shortcut:"⌘C",onClick:()=>navigator.clipboard?.writeText(l)}),r.push({label:"Cut",icon:/* @__PURE__ */z(h,{}),shortcut:"⌘X",onClick:()=>{navigator.clipboard?.writeText(l),i("")}})),r.push({label:"Paste",icon:/* @__PURE__ */z(f,{}),shortcut:"⌘V",onClick:()=>{navigator.clipboard?.readText().then(e=>{e&&i(e)}).catch(()=>e.onPasteRefused())}});const c=[r,n.value?[{label:"Select all",shortcut:"⌘A",onClick:()=>{n.focus(),n.select()}}]:[]].filter(e=>e.length>0),s={label:"—",onClick:()=>{}};return c.flatMap((e,n)=>n?[s,...e]:e)}function R(e){return e.shiftKey}function Y(e,n){const[t,l]=g(null),i=x(()=>l(null),[]);o(null!==t,i);const r=C(e);r.current=e;const s=x(e=>{const n=r.current,t=n.keys;if(!t)return;const o=j(e);if(!o)return;const l=t.selected();if(!l)return;const i=E(n,o,l,{readOnly:t.readOnly,held:t.held()});i&&(e.preventDefault(),t.onDone?.(i))},[]),u=e.keys?.target??null;P(()=>{if(!u)return;const e=e=>s(e);return u.addEventListener("keydown",e),()=>u.removeEventListener("keydown",e)},[u,s]),c(n,"keydown",s);const d=x(n=>{if(R(n))return;const t=n.target;if(t?.closest?.("[data-slot-zone]"))return n.preventDefault(),void l(null);const 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 l({kind:"input",x:n.clientX,y:n.clientY,el:o});const i=t?.closest?.("[data-node-id]")?.getAttribute("data-node-id"),r=i?e.locate(i):null;n.preventDefault(),l(r?{kind:"node",x:n.clientX,y:n.clientY,...r}:{kind:"empty",x:n.clientX,y:n.clientY})},[e]);c(n,"contextmenu",t=>{if(R(t)||!n)return;const o=t.target?.closest?.("[data-puck-component]")??null,i=o?.getAttribute("data-puck-component"),r=i?e.locate(i):null;t.preventDefault();const c=a(n.frame,t.clientX,t.clientY);l(r?{kind:"node",...c,...r}:{kind:"empty",...c})}),c(n,"mousedown",i),c(n,"scroll",i,{on:"window"});return{onEditorContextMenu:d,menu:t?/* @__PURE__ */z(V,{host:e,target:t,onClose:i}):null,closeMenu:i}}function V({host:e,target:n,onClose:t}){/* @__PURE__ */
|
|
2
|
+
return z(r,{x:n.x,y:n.y,items:"node"===n.kind?M(e,n):"input"===n.kind?I(e,n.el):X(e),onClose:t})}export{w as EASEL_NODE_CLIPBOARD,O as ancestorChain,K as nodeClipboardOf,S as nodeClipboardRules,M as nodeMenuItems,j as nodeShortcut,X as pageMenuItems,T as pastePlace,E as runNodeShortcut,I as textMenuItems,D as useNodeClipboard,Y as useNodeContextMenu};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useEaselHost as n}from"./chunk-U3JP4VGF.js";import{useEaselApi as o,bindUndoKeys as t}from"./chunk-6WH7FA2M.js";import{useState as e,useEffect as u}from"react";function r(o){const t=n(),[r,c]=e(null);return u(()=>c(o.current),[o]),t.ownsDocument?"undefined"==typeof document?null:document:r}function c(e,c){const m=n(),i=o(),f=r(e);u(()=>{if(!m.ownsDocument&&f)return t(f,i,{leaveTyping:!0})},[m,i,f]);const s=c?.document??null;u(()=>{if(!m.ownsDocument&&s)return t(s,i,{leaveTyping:!0})},[m,i,s])}function m(n){return n.ownsDocument?{}:{tabIndex:-1}}export{m as editorRootFocus,r as useEaselKeyTarget,c as useEaselUndoKeys};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{blockTypesIn as e}from"./chunk-5ZBY24K7.js";import{buildPaletteSections as t,pinnedSection as o,paletteWithoutPinned as n,categoryLabel as s}from"./chunk-PA3PNTVV.js";import{sectionTemplatesOf as i}from"./chunk-BVN33R76.js";import{SidePanelHead as r,PanelModeExit as c}from"./chunk-5ZBBXZPV.js";import{useEaselSession as l}from"./chunk-O7Q4DDJT.js";import{blockRuns as a}from"./chunk-HQ4VVRIC.js";import{useScreenBlockLook as p,useScreenBlockRules as m}from"./chunk-ND55LTCA.js";import{DEFAULT_SCREEN_WORDS as d}from"./chunk-E2O2MRZR.js";import{useEasel as u}from"./chunk-6WH7FA2M.js";import{useWords as k}from"./chunk-MFIRYGHW.js";import{AddPanel as f}from"./chunk-DX4XELD6.js";import{AddIcon as h}from"./chunk-L5KW4HG5.js";import{useState as y,useEffect as b,useMemo as j}from"react";import{jsx as g,jsxs as $,Fragment as B}from"react/jsx-runtime";var O=e=>`section:${e}`,v=e=>`block:${e}`,L=e=>`template:${e}`;function x({blocks:x,blocksOnly:A,at:D,onAdd:H,itemFor:V,session:I,siteWide:N,onClose:R,onHide:C,readOnly:F}){const T=u(e=>e.config),W=p(),{labelAtLevel:Z,categoryLabel:E,firstSection:M,Icon:P,Thumbnail:X}=W,{blockIsOffered:w}=m(),z=k("screen",d).add,G=l(),[K,Q]=y([]);b(()=>{let t=!1;const o=e=>w(e,G);return i(G).list().then(n=>{if(t)return;const s=T.components;Q(n.filter(t=>t.node?.type&&s[t.node.type]&&e(t.node).every(o)))}).catch(()=>{}),()=>{t=!0}},[T,G]);const S=j(()=>t(T,W),[T]),Y=e=>({type:O(e.type),label:e.name,cover:/* @__PURE__ */g(X,{type:e.type}),title:e.desc?`${e.name} — ${e.desc}`:z.tile({name:e.name}),keywords:[e.alias??"",e.desc,e.type,e.catLabel].filter(Boolean)}),J=j(()=>{const e=[];if(x&&x.choices.length>0&&a(x.choices).forEach((t,o)=>{e.push({key:`blocks:${o}`,title:0===o?`${z.inside({name:x.parentName})}${t.group?` · ${t.group}`:""}`:t.group??"",tiles:t.items.map(e=>({type:v(e.type),label:e.label,icon:/* @__PURE__ */g(P,{type:e.type,size:18}),title:z.tile({name:e.label})}))})}),A)return e;const t=o(S,M);t&&e.push({key:"start",title:z.startBlank,tiles:[Y(t)]}),K.length>0&&e.push({key:"templates",title:z.templates,tiles:K.map(e=>{return{type:L(e.id),label:e.name,cover:/* @__PURE__ */g(X,{type:e.node.type}),keywords:[(t=e.node.type,Z(t,"section",T.components[t]?.label??t)),e.node.type]};var t})});const i=n(S,M);for(const t of Object.keys(T.categories??{})){const o=i.filter(e=>e.cat===t);0!==o.length&&e.push({key:`category:${t}`,title:s(T,t,E),tiles:o.map(Y)})}return e},[x,A,K,S,T,z]),q=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=K.find(e=>e.id===n);return e?{kind:"template",template:e}:null}return null};/* @__PURE__ */
|
|
2
|
+
return $(B,{children:[
|
|
3
|
+
/* @__PURE__ */g(r,{icon:/* @__PURE__ */g(h,{size:15}),title:z.title,context:A?z.contextBlocks:z.contextAll,actions:/* @__PURE__ */g(c,{label:z.done,description:z.doneDescription,onClick:R}),onHide:C}),
|
|
4
|
+
/* @__PURE__ */$("div",{className:"sf-addside sf-scroll",children:[
|
|
5
|
+
/* @__PURE__ */g(f,{groups:J,session:I,itemFor:e=>V(q(e)??{kind:"section",type:e}),onInsert:e=>{const t=q(e);t&&H(t)},at:D,hint:A?z.hintBlocks:z.hint,searchLabel:A?z.searchBlocks:z.searchSections,readOnly:F}),N&&!A?N:null]})]})}export{x as AddSidePanel,v as blockKey,O as sectionKey,L as templateKey};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{slotFieldsOf as n}from"./chunk-PLVEGYK6.js";import{usePickFollowsSelection as e}from"./chunk-R6WTQWAC.js";import{EaselCanvas as t,useSelectedFields as r}from"./chunk-6WH7FA2M.js";import{Inspector as o}from"./chunk-VCQVNPTG.js";import{DesktopIcon as u}from"./chunk-L5KW4HG5.js";import{createContext as i,useContext as l}from"react";import{jsx as s}from"react/jsx-runtime";var c={kind:"puck"};function a(n,e){const t=n,r=e,o=Object.keys(t);return o.length===Object.keys(r).length&&o.every(n=>Object.is(t[n],r[n]))}function f(n){const e=n;return"string"==typeof e.nodeId&&"string"==typeof e.slot}function d(e,t,r){const o=e.slotsOf?.(r);return o||n(t,r.type).map(n=>({slot:n,label:n,rung:!1}))}function p(n,e){return n.isFirst?n.isFirst(e):e.type===n.first}function k(n,e){return n.isLast?n.isLast(e):e.type===n.last}var m={},h={},v=()=>m,g=()=>"",y=()=>null,b=()=>{},j={isLockedBlock:()=>!1,duplicateBlocked:()=>null,nestDepth:()=>0,newSectionNode:()=>null,canAddTo:()=>null,blockIsOffered:()=>!0},L={labelAtLevel:(n,e,t)=>t,descriptions:{},categoryLabel:()=>{},firstSection:null,blockRowName:(n,e)=>e(n.type),plainText:n=>n,Icon:()=>null,Thumbnail:()=>null,useProducts:()=>null},O={options:[{id:"desktop",label:"Desktop",icon:/* @__PURE__ */s(u,{})}],initial:"desktop",fluid:"desktop",widths:{desktop:2e3}},w={read:()=>"sections",write:()=>{},forSelection:(n,e)=>n?"sections":e},C={first:null,last:null,firstGroup:null,lastGroup:null,isSectionGroup:()=>!1,sectionGroupZone:()=>"",panelOf:()=>null};function G(){/* @__PURE__ */
|
|
2
|
+
return s(t,{height:"fill"})}function P(){const{id:n,fields:e,values:t,readOnly:u,onChange:i}=r();/* @__PURE__ */
|
|
3
|
+
return s("div",{className:"es-sidepanel es-sidepanel--right",children:/* @__PURE__ */s(o,{fields:e,values:t,onChange:i,readOnly:u,idPrefix:n})})}var S=i({});function N({parts:n,children:e}){/* @__PURE__ */
|
|
4
|
+
return s(S.Provider,{value:n,children:e})}function D(){return l(S)}function T(){return(D().useOwnerName??g)()}function x(){return(D().useDocumentLabel??y)()}function A(n,e,t,r){return(D().useBridges??v)(n,e,t,r)}function B(n){return(D().useStandaloneBridges??v)(n)}function F(n,e){(D().useDocumentPass??b)(n,e)}function I(){return D().blockRules??j}function V(){return D().blockLook??L}function W(){return D().devices??O}function H(){return D().leftView??w}function K(){return D().pinned??C}function R(){return D().saveSwitch??!0}function Q(n){e(!0===D().pickFollowsSelection,n)}function E(){return D().add??h}function M(){return D().storageNamespace||void 0}function Y(){return D().styleClipboard??null}function Z(){return D().nodeKeys??!0}function q(){return D().notify??null}function z(){return D().Canvas??G}function J(){return D().CanvasHead??null}function U(){return D().canvasDrag??null}var X=i(null);function $({target:n,children:e}){/* @__PURE__ */
|
|
5
|
+
return s(X.Provider,{value:n,children:e})}function _(){return l(X)}function nn(){return D().Inspector??P}export{c as SELECTION_MODE,$ as ScreenCanvasTargetProvider,N as ScreenPartsProvider,p as isPinnedFirst,k as isPinnedLast,f as isSlotMode,a as sameInspectorMode,d as screenSlotsOf,E as useScreenAdd,V as useScreenBlockLook,I as useScreenBlockRules,A as useScreenBridges,U as useScreenCanvasDrag,z as useScreenCanvasFrame,J as useScreenCanvasHead,_ as useScreenCanvasTarget,W as useScreenDevices,x as useScreenDocumentLabel,F as useScreenDocumentPass,nn as useScreenInspectorPanel,H as useScreenLeftView,Z as useScreenNodeKeys,q as useScreenNotify,T as useScreenOwnerName,D as useScreenParts,Q as useScreenPickFollowsSelection,K as useScreenPinned,R as useScreenSaveSwitch,M as useScreenStorageNamespace,Y as useScreenStyleClipboard,B as useStandaloneScreenBridges};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useScreenBlockRules as e}from"./chunk-
|
|
1
|
+
import{useScreenBlockRules as e}from"./chunk-ND55LTCA.js";import{newNodeId as t,ROOT_ZONE as n}from"./chunk-PLVEGYK6.js";import{useEasel as o,useEaselApi as r}from"./chunk-6WH7FA2M.js";import{useMemo as s}from"react";function i(i={}){const{dispatch:p}=o(e=>e),d=r(),c=!0===i.readOnly,a=e().resolveOnInsert,m=!0===(i.resolveOnInsert??a);return s(()=>{const e=(e,n,o)=>{const r=t(n);return c||p({type:"insert",componentType:n,destinationZone:e,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=(t,n,r)=>o(e(t,n,r));return{insertComponent:s,insertSection:(e,t)=>s(n,e,t),replaceComponent:r,seedChild:(t,n,s,i)=>{const p=e(t,s,n);r(t,n,{type:s,props:{id:p,...i}}),o(p)},insertNode:(t,n,s)=>{const i=e(t,s.type,n);return r(t,n,{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,t)=>{c||d.run({data:e,select:t})}}},[p,c,m,d])}export{i as useSectionOps};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{clientOnly as e}from"./chunk-GXQCZJOP.js";import{ScreenStoreProvider as n}from"./chunk-
|
|
1
|
+
import{clientOnly as e}from"./chunk-GXQCZJOP.js";import{ScreenStoreProvider as n}from"./chunk-VINYARYJ.js";import{ScreenChrome as r}from"./chunk-37OCQYNX.js";import{ScreenDocumentProvider as t,useScreenDocument as a}from"./chunk-C6BJB5AC.js";import{DEFAULT_SCREEN_WORDS as i}from"./chunk-E2O2MRZR.js";import{documentPermissions as s}from"./chunk-THWO5YVZ.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
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
3
|
/* @__PURE__ */c("h2",{id:"sf-leave-title",className:"text-[15px] font-semibold text-zinc-900",children:"Unsaved changes"}),
|
|
4
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."}),
|
|
@@ -6,5 +6,5 @@ return c("div",{className:"fixed inset-0 z-[200] flex items-center justify-cente
|
|
|
6
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
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
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:
|
|
10
|
-
/* @__PURE__ */c(g,{config:e,data:t,onChange:b,permissions:
|
|
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:C,saveAndNavigate:k}=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:C,onSave:()=>{k()}})):/* @__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};
|