efficient-easel 0.102.0 → 0.103.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +17 -3
  2. package/dist/{chunk-TEZ6V6PA.js → chunk-3M3A3DN2.js} +1 -1
  3. package/dist/chunk-4MXFKJUY.js +1 -0
  4. package/dist/{chunk-D7M6IRPJ.js → chunk-66ICOE3I.js} +1 -1
  5. package/dist/chunk-6UJ3Y6FC.js +1 -0
  6. package/dist/{chunk-E7GGVILG.js → chunk-GXN65JMA.js} +1 -1
  7. package/dist/chunk-HDKTR5TZ.js +62 -0
  8. package/dist/chunk-LG436UTD.js +1 -0
  9. package/dist/{chunk-VLSTGOVD.js → chunk-MSBF7IW3.js} +1 -1
  10. package/dist/{chunk-5464H65G.js → chunk-NBJ2YY6Y.js} +1 -1
  11. package/dist/chunk-OORDMLL4.js +5 -0
  12. package/dist/chunk-Q2HPBMG5.js +1 -0
  13. package/dist/chunk-YJXEHK6I.js +2 -0
  14. package/dist/chunk-Z3KBLIEH.js +10 -0
  15. package/dist/chunk-ZWK3CBRU.js +1 -0
  16. package/dist/{host-B-byaQxg.d.ts → host-DJ8Gzsx7.d.ts} +93 -21
  17. package/dist/screen/components/AddBlockRow.js +1 -1
  18. package/dist/screen/components/AddSidePanel.js +1 -1
  19. package/dist/screen/components/MediaSidePanel.d.ts +1 -1
  20. package/dist/screen/components/MediaSidePanel.js +1 -1
  21. package/dist/screen/components/PageEditGuardNotices.js +1 -1
  22. package/dist/screen/components/ScreenChrome.js +1 -1
  23. package/dist/screen/components/ScreenDocumentContext.d.ts +1 -1
  24. package/dist/screen/components/ScreenDocumentContext.js +1 -1
  25. package/dist/screen/components/ScreenMount.d.ts +5 -4
  26. package/dist/screen/components/ScreenMount.js +1 -1
  27. package/dist/screen/components/ScreenStoreProvider.js +1 -1
  28. package/dist/screen/components/SectionScreenShell.js +16 -16
  29. package/dist/screen/components/usePartBridge.js +1 -1
  30. package/dist/screen/index.d.ts +2 -2
  31. package/dist/screen/index.js +1 -1
  32. package/dist/screen/lib/document-addressing.d.ts +1 -1
  33. package/dist/screen/lib/document-contract.d.ts +7 -0
  34. package/dist/screen/lib/host.d.ts +1 -1
  35. package/dist/screen/lib/media-panel.d.ts +1 -1
  36. package/dist/screen/lib/media-picker.d.ts +1 -1
  37. package/dist/screen/lib/puck/device-fields.d.ts +4 -2
  38. package/dist/screen/lib/puck/style-clipboard.js +1 -1
  39. package/dist/screen/lib/screen-parts.d.ts +22 -1
  40. package/dist/screen/lib/screen-parts.js +1 -1
  41. package/dist/screen/lib/section-templates.js +1 -1
  42. package/dist/screen/screen.css +14 -0
  43. package/dist/screen/words.d.ts +42 -0
  44. package/dist/screen/words.js +1 -0
  45. package/dist/strings/catalogue.d.ts +9 -2
  46. package/dist/strings/catalogue.js +1 -1
  47. package/dist/strings/index.d.ts +1 -0
  48. package/dist/strings/index.js +1 -1
  49. package/package.json +6 -1
  50. package/dist/chunk-3U4GP5VA.js +0 -10
  51. package/dist/chunk-7RNTMJER.js +0 -5
  52. package/dist/chunk-F2FPZIZV.js +0 -62
  53. package/dist/chunk-FT35FX7D.js +0 -2
  54. package/dist/chunk-J4RAY75C.js +0 -1
  55. package/dist/chunk-PP44LCJM.js +0 -1
  56. package/dist/chunk-UH7TGWHR.js +0 -1
  57. package/dist/chunk-UVWVYMMZ.js +0 -1
@@ -1,62 +0,0 @@
1
- import{dedupeSlotChildren as e}from"./chunk-26OOWIJJ.js";import{siteStyleScope as n,copyNodeStyle as t,nodeStyleRows as o,planNodePaste as r}from"./chunk-PP44LCJM.js";import{markedTreeNodeId as i,revealSelectedTreeRow as l,sameSelector as s}from"./chunk-FGNR22NY.js";import{cloneNodeWithFreshIds as d}from"./chunk-AKFJK65Z.js";import{scrollPreviewToSection as c,gotoPreviewSlide as a,scrollPreviewToTop as p}from"./chunk-4ES5JGGX.js";import{rootRowName as u,slotChildRowName as f,slotChildRenameProp as h}from"./chunk-HWW4XJOH.js";import{useEaselKeyTarget as m,useEaselUndoKeys as y}from"./chunk-OM67AJQC.js";import{SlotChildActionsProvider as g}from"./chunk-KCBEE2MC.js";import{UiIcon as k}from"./chunk-5MZ3RNQQ.js";import{DEFAULT_PANEL_W as S,PANEL_WIDTHS_KEY as x,clampPanelWidth as b}from"./chunk-SERF2FAU.js";import{usePartBridge as v}from"./chunk-E7GGVILG.js";import{useSectionOps as w}from"./chunk-VV5ADNBR.js";import{PageEditGuardNotices as z}from"./chunk-UVWVYMMZ.js";import{useScreenDocument as C}from"./chunk-FT35FX7D.js";import{requestMediaPick as B}from"./chunk-6FY3PZS3.js";import{useEaselHost as N}from"./chunk-R5ZVNJLJ.js";import{AddChildRow as A}from"./chunk-3QVB4AG2.js";import{AddSidePanel as T}from"./chunk-7RNTMJER.js";import{SidePanelHead as P,PanelShowStrip as $}from"./chunk-IWAPPEL4.js";import{MediaSidePanel as O}from"./chunk-TEZ6V6PA.js";import{useMediaPanel as j,usePanelPick as E,cancelPanelPick as I}from"./chunk-ZZ7VLIHQ.js";import{useScreenPinned as R,useScreenCanvasFrame as M,useScreenInspectorPanel as L,useScreenDevices as V,useScreenLeftView as F,SELECTION_MODE as D,sameInspectorMode as H,useScreenBridges as G,useScreenBlockRules as J,useScreenBlockLook as U,useScreenDocumentPass as W}from"./chunk-5464H65G.js";import{EASEL_NODE_CLIPBOARD as Z,useNodeContextMenu as Q}from"./chunk-F6CCTEIX.js";import{ROOT_ZONE as X,TREE_MAX_DEPTH as Y,childSlotsOf as K,slotFieldsOf as _,nestsInTree as q,newNodeId as ee}from"./chunk-FUDHI5I4.js";import{heldStyle as ne,styleShortcut as te}from"./chunk-57DJOKXT.js";import{useEasel as oe}from"./chunk-P67FP7PG.js";import{LayersTree as re,TreeRow as ie,TreeGroupLabel as le,Subtree as se,TreeRowAction as de,TreeSeam as ce}from"./chunk-ZFDCDJNZ.js";import{useNodeOps as ae,toItemSelector as pe}from"./chunk-D2BCHTQR.js";import{saveIndicator as ue}from"./chunk-H6DDIBQ4.js";import{EaselTopBar as fe,TopBarRail as he,TopBarCluster as me,EaselIconButton as ye,TopBarDivider as ge,DeviceSwitch as ke,InspectorIconButton as Se,PanelResizeHandle as xe,MAX_PANEL_W as be,MIN_PANEL_W as ve,panelWidthVars as we,SaveState as ze,SaveStateToggle as Ce}from"./chunk-6DJHRLCU.js";import{CanvasDragLayer as Be}from"./chunk-TTJ54QGG.js";import{createDragSession as Ne,useTreeDrag as Ae,gapToMoveIndex as Te}from"./chunk-67GNT6PF.js";import{useCanvasFrame as Pe,BLOCK_SELECTOR as $e,useCanvasEvent as Oe}from"./chunk-PAELDYYS.js";import{LayersIcon as je,UndoIcon as Ee,RedoIcon as Ie,TrashIcon as Re,MediaIcon as Me}from"./chunk-L5KW4HG5.js";import{ROOT_ID as Le,ROOT_SLOT as Ve,zoneKey as Fe,parseZoneKey as De,DataError as He}from"./chunk-KRXQM65X.js";import{useRef as Ge,useMemo as Je,useState as Ue,useEffect as We,useCallback as Ze,useLayoutEffect as Qe,Fragment as Xe}from"react";import{jsx as Ye,jsxs as Ke,Fragment as _e}from"react/jsx-runtime";function qe({saveState:e,notSaving:n,onToggle:t,onRetry:o}){if(n)/* @__PURE__ */
2
- return Ye(ze,{tone:e.pending?"off-unsaved":"off",label:"Not saving — see the notice above",role:"status"});const{tone:r,label:i}=ue(e);/* @__PURE__ */
3
- return Ke(_e,{children:[
4
- /* @__PURE__ */Ye(Ce,{pressed:e.paused,onToggle:t,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__ */Ye(ze,{tone:r,label:i})}),e.failed&&!e.paused&&/* @__PURE__ */Ye("button",{type:"button",className:"es-btn-ghost",onClick:o,children:"Retry now"})]})}function en({expand:e}){/* @__PURE__ */
5
- return Ye("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.9,strokeLinecap:"round",strokeLinejoin:"round",children:/* @__PURE__ */Ke(_e,e?{children:[
6
- /* @__PURE__ */Ye("path",{d:"M8 9l4-4 4 4"}),
7
- /* @__PURE__ */Ye("path",{d:"M8 15l4 4 4-4"})]}:{children:[
8
- /* @__PURE__ */Ye("path",{d:"M8 4l4 4 4-4"}),
9
- /* @__PURE__ */Ye("path",{d:"M8 20l4-4 4 4"}),
10
- /* @__PURE__ */Ye("path",{d:"M5 12h14"})]})})}function nn(){const ue=N(),{capabilities:ze,currentSlug:Ce,siteId:nn,onPublish:tn,saveState:on,saveConflict:rn,retrySave:ln,toggleAutoSave:sn,readOnly:dn}=C(),{canPublish:cn,mediaEditing:an,hasEditGuard:pn,hasPinnedChrome:un}=ze,{appState:fn,dispatch:hn,history:mn,selectedItem:yn,getSelectorForId:gn,config:kn}=oe(e=>e),{first:Sn,last:xn,firstGroup:bn,lastGroup:vn,isSectionGroup:wn,sectionGroupZone:zn,panelOf:Cn}=R(),Bn=Cn(Sn),Nn=M(),An=L(),Tn=w({readOnly:dn}),Pn=Ge(null),$n=Je(()=>({...Tn,select:e=>{Pn.current=e,Tn.select(e)}}),[Tn]),On=fn.ui,jn=On.leftSideBarVisible,En=On.rightSideBarVisible,{options:In,widths:Rn,initial:Mn,fluid:Ln}=V(),[Vn,Fn]=Ue(Mn),Dn=j(),Hn=an&&null!==Dn,Gn=E(),{read:Jn,write:Un,forSelection:Wn}=F(),[Zn,Qn]=Ue(Jn);We(()=>{Un(Zn)},[Zn]);const[Xn,Yn]=Ue(0),Kn=Ge(null),_n=Ge(null),qn=Pe(_n,{readySelector:$e}),et=m(_n);y(_n);const[nt,tt]=Ue(!1),ot=Ge(!1),rt=Ge(!1),[it,lt]=Ue(null),st=it&&it.zone===X?it.index:null,dt=e=>lt(null===e?null:{zone:X,index:e}),[ct,at]=Ue([]),[pt,ut]=Ue(D),ft="puck"===pt.kind,ht=i(pt,yn?.props.id),[mt,yt]=Ue(null);We(()=>{mt&&(l(),yt(null))},[mt]);const gt=Ge(gn);gt.current=gn;const kt=Ze((e,{scroll:n})=>{Qn(n=>Wn(e,n)),n&&yt(e);const t=[];let o=e;for(let e=0;e<4;e++){const e=gt.current(o)?.zone;if(!e||!e.includes(":"))break;const n=e.split(":")[0];t.push(n),o=n}0!==t.length&&Ft(e=>{if(t.every(n=>!e.has(n)))return e;const n=new Set(e);return t.forEach(e=>n.delete(e)),n})},[]);We(()=>{ut(Cn(yn?.type)??D);const e=yn?.props.id,n=Pn.current;if(Pn.current=null,!e)return;const t=gn(e);kt(String(e),{scroll:!s(n,t??null,X)})},[yn?.props.id,kt]);const St=Ze(e=>{ut(n=>H(n,e)?n:e),hn({type:"setUi",ui:{rightSideBarVisible:!0}})},[hn]),xt=G({kind:pt.kind,mode:pt,open:St,show:e=>ut(e),reveal:()=>{En||hn({type:"setUi",ui:{rightSideBarVisible:!0}})}},{data:fn.data,selected:yn??null,zoneOf:e=>gn(e)?.zone,readOnly:Boolean(dn),select:e=>{ut(D),$n.select({index:e})},replace:(e,n)=>$n.replaceComponent(X,e,n),scrollTo:e=>Wo(e)},{device:Vn,refreshes:Xn},{setView:Qn,reveal:()=>{jn||hn({type:"setUi",ui:{leftSideBarVisible:!0}})}}),bt=xt.pinnedSource??!1,vt=xt.resolveLeftView?xt.resolveLeftView(Zn,Hn):"media"===Zn&&Hn?Zn:"sections",{isLockedBlock:wt,duplicateBlocked:zt,nestDepth:Ct,newSectionNode:Bt,canAddTo:Nt,blockIsOffered:At}=J(),Tt=U(),{labelAtLevel:Pt,Icon:$t,useProducts:Ot}=Tt,jt=Ze(e=>{hn({type:"setUi",ui:{rightSideBarVisible:!0}}),c(e),kt(e,{scroll:!0})},[hn,kt]),{selectNode:Et,openPartId:It}=v({mode:pt,setMode:ut,onOpenPart:jt}),[Rt,Mt]=Ue(null),Lt="sf-editor-collapsed-sections",[Vt,Ft]=Ue(()=>{if("undefined"==typeof window)/* @__PURE__ */return new Set;try{const e=window.localStorage.getItem(Lt);return new Set(e?JSON.parse(e):[])}catch{/* @__PURE__ */
11
- return new Set}});We(()=>{try{window.localStorage.setItem(Lt,JSON.stringify([...Vt]))}catch{}},[Vt]);const[Dt,Ht]=Ue(()=>{if("undefined"==typeof window)return{...S};try{const e=window.localStorage.getItem(x);if(!e)return{...S};const n=JSON.parse(e);return{left:b(Number(n.left)||S.left),right:b(Number(n.right)||S.right)}}catch{return{...S}}});We(()=>{const e=setTimeout(()=>{try{window.localStorage.setItem(x,JSON.stringify(Dt))}catch{}},300);return()=>clearTimeout(e)},[Dt]);const Gt=Ze((e,n)=>Ht(t=>{const o="function"==typeof n?n(t[e]):n;return t[e]===o?t:{...t,[e]:o}}),[]),Jt=Ze(e=>Gt("left",e),[Gt]),Ut=Ze(e=>Gt("right",e),[Gt]),Wt=e=>Vt.has(e),Zt=e=>Ft(n=>{const t=new Set(n);return t.has(e)?t.delete(e):t.add(e),t}),Qt=Ge(!1),Xt=Ge(null);We(()=>{if(Qt.current&&!nt){const e=Xt.current,n=e&&e.isConnected&&!e.closest('[aria-hidden="true"]')?e:null;(n??_n.current?.querySelector('button[aria-label="Add"]'))?.focus(),Xt.current=null}Qt.current=nt},[nt]),We(()=>{if(!nt||!et)return;const e=e=>{"Escape"===e.key&&nr()};return et.addEventListener("keydown",e),()=>et.removeEventListener("keydown",e)},[nt,et]),We(()=>{!jn&&nt&&(tt(!1),lt(null),ot.current=!1)},[jn]),We(()=>{if(!Gn)return rt.current&&hn({type:"setUi",ui:{leftSideBarVisible:!1}}),void(rt.current=!1);nt&&(tt(!1),lt(null),rt.current=ot.current,ot.current=!1),jn||(rt.current=!0,hn({type:"setUi",ui:{leftSideBarVisible:!0}}))},[Gn]),We(()=>{!jn&&Gn&&(rt.current=!1,I())},[jn]),We(()=>{if(!Gn||!et)return;const e=e=>{"Escape"===e.key&&I()};return et.addEventListener("keydown",e),()=>et.removeEventListener("keydown",e)},[Gn,et]);const[Yt,Kt]=Ue(null),[_t,qt]=Ue(0),eo=Ge(null),no=(e,n="success")=>{Kt({msg:e,tone:n}),qt(e=>e+1),eo.current&&clearTimeout(eo.current),eo.current=setTimeout(()=>Kt(null),"error"===n?3200:1900)};We(()=>()=>{eo.current&&clearTimeout(eo.current)},[]);const to=Ge(null),[oo,ro]=Ue(0),[io,lo]=Ue(0);We(()=>{const e=to.current;if(!e)return;const n=()=>{ro(e.clientWidth),lo(e.clientHeight)};n();const t=new ResizeObserver(n);return t.observe(e),()=>t.disconnect()},[]),Qe(()=>{to.current&&(ro(to.current.clientWidth),lo(to.current.clientHeight))},[Dt,jn,En]);const so=Vn===Ln?oo>0?oo:Rn[Ln]:Rn[Vn],co=oo>0?Math.min(oo/so,2):1,ao=so*co,po=oo>0&&ao>oo+1,uo={width:ao,height:io||"100%",flex:"none",position:"relative"},fo={width:so,height:io?io/co:"100%",maxHeight:"none",transform:1!==co?`scale(${co})`:void 0,transformOrigin:"top left"},ho=()=>hn({type:"setUi",ui:{leftSideBarVisible:!jn}}),mo=()=>hn({type:"setUi",ui:{rightSideBarVisible:!En}}),yo=e=>{nt&&(tt(!1),lt(null),ot.current=!1,jn&&Zn===e)||Gn&&(rt.current=!1,I(),jn&&Zn===e)||(jn&&Zn===e?ho():(Qn(e),jn||hn({type:"setUi",ui:{leftSideBarVisible:!0}})))},go=()=>{B(ue,{accept:"image/*",title:"Media library"})},ko=()=>{ut(D),$n.select(null),p()},So=()=>{ut(Bn??D),En||hn({type:"setUi",ui:{rightSideBarVisible:!0}})},xo=fn.data.content??[],bo=()=>{const e=xo.findIndex(e=>e.type===Sn),n=xo.findIndex(e=>e.type===xn);return{floor:e>=0?e+1:0,cap:n>=0?n:xo.length}},vo=kn,wo=ae({data:fn.data,config:vo,readOnly:Boolean(dn),clipboard:Z,afterRemove:"none",stepBounds:(e,n)=>{if(e.parentId!==Le||e.slot!==Ve)return{min:0,max:n-1};const{floor:t,cap:o}=bo();return{min:t,max:o-1}},commit:(e,{select:n})=>{if(void 0!==n){ut(D);const t="node"===n?.kind?pe(e,vo,n):null;$n.select(t&&t.zone===X?{index:t.index}:t)}$n.commitDocument(e)}}),zo=e=>kn.components[e]?.label??e,Co=Ze(e=>kn.components[e]?.defaultProps??{},[kn]),Bo=e=>Pt(e,"section",zo(e)),No=e=>u({type:e.type,props:e.props??{}},Bo(e.type)),{nodeAddresses:Ao,zoneItems:To}=Je(()=>{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>=Y)return;const s=/* @__PURE__ */new Map;for(const{child:e,zone:t}of K(kn,n))s.set(t,[...s.get(t)??[],e]);for(const[e,n]of s)t(n,e,i+1)})};return t(xo,X,0),{nodeAddresses:e,zoneItems:n}},[xo,kn]),Po=Ze(e=>To.get(e)??[],[To]),$o=Ot(),Oo=Je(()=>{const e=/* @__PURE__ */new Map;for(const n of $o??[])e.set(n.slug,n.name);return e},[$o]),jo=e=>f(e,zo,Tt.plainText,e=>Oo.get(e)),Eo=(e,n)=>n===X?null:h(kn.components[e.type]?.fields),Io=(e,n,t,o)=>{if(!(Rt?.zone===e&&Rt.index===n))return;const r=(t,o)=>{Mt(null),o&&((e,n,t)=>{const o=Po(e)[n];if(!o)return;const r=Eo(o,e);r&&$n.replaceComponent(e,n,{...o,props:{...o.props,[r]:t.trim()}})})(e,n,t)};/* @__PURE__ */
12
- return Ye("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)},Ro=n(nn),Mo=kn,Lo=(e,n)=>n===X?Bo(e):zo(e),Vo=(e,n,t)=>{const o=r(Mo,Ro,t,Lo(t.type,e));o&&(o.changed&&$n.replaceComponent(e,n,{...t,props:{...o.props,id:t.props.id}}),no(o.message))},Fo=Q({nodesIn:Po,nodeAt:(e,n)=>Po(e)[n]??null,labelOf:(e,n)=>n===X?Bo(e):zo(e),renamePropOf:Eo,beginRename:(e,n)=>Mt({zone:e,index:n}),history:{hasPast:mn.hasPast,hasFuture:mn.hasFuture,back:()=>mn.back(),forward:()=>mn.forward()},openAddSection:()=>{$n.select(null),qo(null)},openPageSettings:()=>{$n.select(null),ut(D)},collapseAll:()=>Ft(new Set(Po(X).map(e=>String(e.props.id)))),onPasteRefused:()=>no("Your browser won’t let us read the clipboard — press ⌘V","error"),isLocked:e=>wt(e.type),duplicateBlocked:e=>zt(fn.data,e),canAddTo:Nt,nodeOps:wo,isPinned:(e,n)=>n===X&&(e.type===Sn||e.type===xn),sectionBand:bo,openAddInside:(e,n)=>{e===X?Zo(n):$n.select({zone:e,index:n}),qo(null)},locate:e=>Ao.get(e)??null,rowNameOf:(e,n)=>n===X?No(e):jo(e),selectAt:(e,n,t,o)=>{e===X?Zo(n):mr(e,n,t,o??"")},style:{held:()=>ne(Ro),canCopy:e=>o(Mo,e).some(e=>!1!==e.counted),copy:(e,n)=>t(Mo,Ro,e,Lo(e.type,n)),paste:(e,n,t)=>Vo(e,n,t)}},qn),Do=Ge({copy:(e,n)=>{},paste:(e,n,t)=>{},at:()=>null,readOnly:!1});We(()=>{Do.current={copy:(e,n)=>t(Mo,Ro,e,Lo(e.type,n)),paste:Vo,at:()=>{const e=fn.ui.itemSelector;if(!e)return null;const n=e.zone??X,t=Po(n)[e.index];return t?{zone:n,index:e.index,node:t}:null},readOnly:Boolean(dn)}});const Ho=Ze(e=>{const n=te(e);if(!n)return;const t=Do.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))},[]);We(()=>{if(!et)return;const e=e=>Ho(e);return et.addEventListener("keydown",e),()=>et.removeEventListener("keydown",e)},[Ho,et]),Oe(qn,"keydown",Ho);const Go=xo.map(e=>e.props.id).join("|");We(()=>{const e=qn?.document??null,n=qn?.window??null;let t=0;const o=[],r=()=>{if(!e)return void at(e=>e.length?[]:e);const n=xo.findIndex(e=>e.type===xn),t=n>=0?n:xo.length,o=n=>{const t=xo[n]?.props?.id;if(null==t)return null;const o=e.querySelector(`[data-puck-component="${CSS.escape(String(t))}"]`);return o?o.getBoundingClientRect():null},r=[];for(let e=1;e<=t;e++){const n=o(e),t=o(e-1);(n||t)&&r.push({top:Math.round(n?n.top:t.bottom),index:e})}at(e=>function(e,n){if(e.length!==n.length)return!1;for(let t=0;t<e.length;t++)if(e[t].top!==n[t].top||e[t].index!==n[t].index)return!1;return!0}(e,r)?e:r)},i=()=>{cancelAnimationFrame(t),t=requestAnimationFrame(r)};if(!e||!n)return void r();n.addEventListener("scroll",i,{passive:!0});const l=new ResizeObserver(i);return l.observe(e.documentElement),r(),o.push(setTimeout(r,150),setTimeout(r,450)),()=>{cancelAnimationFrame(t),o.forEach(clearTimeout),n.removeEventListener("scroll",i),l.disconnect()}},[qn,Go,Vn,co,jn,En,yn?.props.id]);const Jo=qn?.document??null,Uo=qn?.window??null;We(()=>{const e=Kn.current;if(!e||!Jo||!Uo)return;const n=[],t=()=>{const n=Jo.querySelector(`[data-puck-component="${CSS.escape(e.id)}"]`);if(!n)return!1;const t=n.getBoundingClientRect().top-e.offset;return Math.abs(t)>1&&Uo.scrollTo({left:Uo.scrollX,top:Uo.scrollY+t,behavior:"instant"}),!0};return Kn.current=null,t()&&n.push(setTimeout(t,150),setTimeout(t,450)),()=>n.forEach(clearTimeout)},[Jo,Uo]);const Wo=e=>{xt.holdCanvasOn?xt.holdCanvasOn(e):c(e)},Zo=e=>{ut(D),$n.select({index:e}),xt.sectionPressed?.(xo[e]);const n=xo[e]?.props?.id;n&&Wo(n)},Qo=e=>{const{floor:n,cap:t}=bo(),o=e=>Math.min(Math.max(n,e),t);if("number"==typeof e)return o(e);const r=yn&&pt.kind!==Bn?.kind?xo.findIndex(e=>e.props.id===yn.props.id):-1;return o(r>=0?r+1:t)},Xo=(e,n)=>{const{floor:t,cap:o}=bo(),r=Math.min(Math.max(n,t),o),i=e<r?r-1:r;return i===e?{moved:!1,dest:e}:($n.reorderComponent(X,e,i),$n.select({index:i}),{moved:!0,dest:i})},Yo=(e,n,t)=>{ut(D),$n.select({index:e}),c(n),no(`Added “${t}” section`)},Ko=(e,n)=>{const t=Qo(n),o=Bt(e,{nodeDefaults:Co,newNodeId:ee,sectionLabel:Bo,blockIsOffered:At}),r=o?$n.insertNode(X,t,o):$n.insertSection(e,t);return Yo(t,r,Bo(e)),t},_o=(e,n,t)=>{const o=Qo(t),r=$n.insertNode(X,o,n);return Yo(o,r,e),o},qo=e=>er(X,e),er=(e,n)=>{Xt.current=document.activeElement??null,Gn&&(ot.current=rt.current,rt.current=!1,I()),lt(null===n?null:{zone:e,index:n}),tt(!0),jn||(ot.current=!0,hn({type:"setUi",ui:{leftSideBarVisible:!0}}))},nr=()=>{tt(!1),lt(null),ot.current&&hn({type:"setUi",ui:{leftSideBarVisible:!1}}),ot.current=!1},tr=(e,n,t)=>{if("section"===e.kind)$n.insertComponent(n,e.type,t);else{if("template"!==e.kind)return;$n.insertNode(n,t,d(e.template.node))}ut(D),$n.select({index:t,zone:n})},or=e=>n=>{n.target.closest(".es-tree-select")||e()},rr=()=>xt.editPinnedSource?.(),ir=(e,n,t)=>/* @__PURE__ */Ye(de,{kind:"delete",label:`Delete ${t}`,onClick:()=>((e,n)=>{const t=Po(e)[n]?.props?.id;null!=t&&wo.remove(String(t))})(e,n),children:/* @__PURE__ */Ye(Re,{size:15})}),lr=(e,n,t,o)=>{const r=Boolean(t.props._hidden);/* @__PURE__ */
13
- return Ye(de,{kind:"eye",label:r?`Show ${o}`:`Hide ${o}`,onClick:()=>dr(e,n,t),children:/* @__PURE__ */Ye(k,r?{name:"eye-off",size:14}:{name:"eye",size:14})})},sr=e=>{const n=Bo(xo[e]?.type??"");return Vr(X,e,()=>qo(e),n?`Add section before ${n}`:"Add section here")},dr=(e,n,t)=>{$n.replaceComponent(e,n,{...t,props:{...t.props,_hidden:!t.props._hidden}})},cr=e=>_(kn,e),ar=e=>K(kn,e),pr=(e,n,t)=>{const o=q(kn,e.type,n)&&(t||ar(e).length>0);return{collapsible:o,folded:o&&Wt(String(e.props.id))}},ur=(e,n,t)=>ar(e).flatMap(({child:e})=>pr(e,n,t(e.type)).collapsible?[String(e.props.id),...ur(e,n+1,t)]:[]),fr=e=>ar(e).length>0||Boolean(Nt(e.type)),hr=e=>Boolean(Nt(e)),mr=(e,n,t,o)=>{if(ut(D),Nt(o)?.spec?.slider){const t=e.split(":")[0];a(t,n),$n.select({index:n,zone:e}),c(t)}else $n.select({index:n,zone:e}),Wo(t)},yr=(e,n,t,o,r)=>{const i=`${e}:${n}`;$n.insertComponent(i,t,o),Nt(r)?.spec?.slider?requestAnimationFrame(()=>{a(e,o),$n.select({index:o,zone:i})}):$n.select({index:o,zone:i})},gr=(e,n,t)=>{$n.insertComponent(e,n,t),ut(D),$n.select({index:t,zone:e})},kr=Ge(/* @__PURE__ */new Set);We(()=>{xo.forEach(e=>{const n=Nt(e.type)?.spec;if(!n)return;const t=e.props.id;if(kr.current.has(t))return;kr.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(Co)).forEach((e,t)=>$n.seedChild(o,t,n.childType,e))})},[xo,$n,Co]);const Sr=Ge(/* @__PURE__ */new Set);We(()=>{xo.forEach((n,t)=>{const o=n.props.id;if(Sr.current.has(o))return;const r=e(n,cr(n.type));Sr.current.add(o),r&&$n.replaceComponent(X,t,{...n,props:r})})},[xo,$n]),W($n,kn);const xr=xo.findIndex(e=>e.type===xn),br=xr>=0?xo[xr]:null,vr=xo.find(e=>e.type===bn)??null,wr=xo.find(e=>e.type===vn)??null,zr=xr>=0?xr:xo.length,Cr=[];xo.forEach(e=>{e.type!==xn&&(fr(e)&&Cr.push(String(e.props.id)),Cr.push(...ur(e,1,hr)))}),br&&(Cr.push(String(br.props.id)),Cr.push(...ur(br,1,hr)));const Br=Cr.length>0&&Cr.every(e=>Vt.has(e)),Nr=e=>Tt.blockRowName(e,zo),Ar=(e,n,t,o)=>{const r=Po(e)[t];if(!r)return;const i={...De(e),index:t},l={...De(n),index:Math.min(Math.max(o,0),Po(n).length)},s=Te(i,l);if(e!==n||s!==t)try{wo.move(String(r.props.id),{...l,index:s})}catch(e){if(!(e instanceof He))throw e}},Tr=e=>{const n=/* @__PURE__ */new Set,t=e=>{for(const{child:o,zone:r}of ar(e))n.add(r),t(o)};for(const t of cr(e.type))n.add(`${e.props.id}:${t}`);return t(e),n},Pr=e=>{let n=e.slice(0,e.indexOf(":"));for(let e=0;e<64;e++){const e=Ao.get(n);if(!e)return null;if(e.zone===X)return n;n=e.zone.slice(0,e.zone.indexOf(":"))}return null},$r=e=>{const n=e.slice(0,e.indexOf(":")),t=xo.find(e=>wn(e.type)&&String(e.props.id)===n);return t&&zn(n)===e?t:null},Or=(e,n)=>{if(e.add)return Er(e.add,n);const t=Fe(n);if(wn(e.type))return!1;const o=$r(t),r=$r(e.zone);if(o||r)return!(!o||!r)&&(n.index>=0&&n.index<=Po(t).length);if(e.zone===X||t===X){if(e.zone!==t)return!1;const{floor:o,cap:r}=bo();return n.index>=o&&n.index<=r}if(n.index<0||n.index>Po(t).length)return!1;if(e.zone===t)return!0;const i=br?String(br.props.id):null;return(!i||Pr(e.zone)!==i&&Pr(t)!==i)&&((e,n,t)=>{if(e===n)return!0;const o=Po(e)[t];if(!o)return!1;const r=n.split(":")[0],i=Ao.get(r),l=i?Po(i.zone)[i.index]:void 0;if(!l)return!1;if(Tr(o).has(n))return!1;const s=Nt(l.type,Ct(fn?.data,l.type,r));return!!s&&(!!(s.choices?s.choices.some(e=>e.type===o.type):s.spec?.childType===o.type)&&!s.spec?.addBlocked?.(Po(n),o))})(e.zone,t,e.index)},jr=e=>{const n=e.slice(0,e.indexOf(":")),t=Ao.get(n),o=t?Po(t.zone)[t.index]:void 0;if(!t||!o)return null;const r=Nt(o.type,Ct(fn?.data,o.type,n));if(!r||`${n}:${r.slot}`!==e)return null;if("footer"===r.source)return null;return{parent:o,parentId:n,target:r,choices:r.choices??(r.spec?[{type:r.spec.childType,label:zo(r.spec.childType)}]:[]),parentName:t.zone===X?Bo(o.type):zo(o.type)}},Er=(e,n)=>{const t=Fe(n);if("block"!==e.kind){if($r(t))return n.index>=0&&n.index<=Po(t).length;if(t!==X)return!1;const{floor:e,cap:o}=bo();return n.index>=e&&n.index<=o}if(t===X)return!1;const o=jr(t);return!(!o||!o.choices.some(n=>n.type===e.type))&&!o.target.spec?.addBlocked?.(Po(t))},Ir=(e,n)=>{e.add?((e,n)=>{if("block"!==e.kind&&$r(Fe(n)))return void tr(e,Fe(n),n.index);if("section"===e.kind)return void Ko(e.type,n.index);if("template"===e.kind)return void _o(e.template.name,d(e.template.node),n.index);const t=Fe(n),o=jr(t);o&&(o.target.spec?yr(o.parentId,o.target.slot,e.type,n.index,o.parent.type):gr(t,e.type,n.index))})(e.add,n):e.zone===X?Xo(e.index,n.index):Ar(e.zone,Fe(n),e.index,n.index)},[Rr]=Ue(()=>Ne()),Mr=Ae({keyOf:e=>e.id,readOnly:Boolean(dn),session:Rr,canDrop:Or,onDrop:Ir,onStep:(e,n)=>{e.zone===X?((e,n)=>{const t=Bo(xo[e]?.type??""),o=Xo(e,n<0?e-1:e+2);if(!o.moved)return void no(`“${t}” is already ${n<0?"first":"last"}`);const{floor:r,cap:i}=bo();no(`Moved “${t}” to position ${o.dest-r+1} of ${i-r}`)})(e.index,n):Ar(e.zone,e.zone,e.index,n<0?e.index-1:e.index+2)}}),Lr=Ze(e=>{const{floor:n,cap:t}=bo(),o=[];for(const r of e.nodes){const e=Fe(r.place),i=Po(e)[r.place.index];if(!i||String(i.props.id)!==r.id)continue;if(i.type===Sn||i.type===xn||wt(i.type))continue;if(wn(i.type))continue;const l=Boolean($r(e)),s=e===X||l;e===X&&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?Bo(i.type):jo(i),from:r.place})}return{sources:o,zones:e.zones.filter(e=>e.children.length>0||Boolean(jr(Fe(e.list))?.choices.length)||Boolean($r(Fe(e.list))))}},[fn.data]),Vr=(e,n,t,o)=>/* @__PURE__ */Ye(ce,{...dn?{}:Mr.seam({place:{...De(e),index:n}}),onAdd:dn?void 0:t,label:o},`seam:${e}:${n}`),Fr={rowClick:or,isCollapsed:Wt,toggleCollapse:Zt},Dr=e=>{const n=String(e.props.id),t=xo.findIndex(e=>String(e.props.id)===n),o=zn(n),r=Po(o),i=Wt(n),l=zo(e.type),s=e=>Vr(o,e,()=>er(o,e),"Add section here");/* @__PURE__ */
14
- return Ke(_e,{children:[
15
- /* @__PURE__ */Ye(ie,{icon:/* @__PURE__ */Ye($t,{type:e.type,size:13}),name:l,onSelect:()=>Zo(t),selected:ht===n,rowProps:{"data-node-id":n,onClick:or(()=>Zo(t))},fold:{open:!i,label:"section",onToggle:()=>Zt(n)}}),!i&&/* @__PURE__ */Ke(se,{children:[r.map((n,t)=>{const r=String(n.props.id),i=No(n),l=fr(n),d=l&&Wt(r),c=()=>mr(o,t,r,e.type),{rowProps:a,...p}=Mr.row({item:{id:r,zone:o,index:t,type:n.type},place:{...De(o),index:t}},{"data-node-id":r,onClick:or(c)});/* @__PURE__ */
16
- return Ke(Xe,{children:[s(t),
17
- /* @__PURE__ */Ye(ie,{icon:/* @__PURE__ */Ye($t,{type:n.type,size:13}),name:i,onSelect:c,selected:ht===r,hidden:Boolean(n.props._hidden),...p,fold:l?{open:!d,label:"section",onToggle:()=>Zt(r)}:void 0,actions:/* @__PURE__ */Ke(_e,{children:[ir(o,t,i),lr(o,t,n,i)]}),rowProps:a}),l&&!d&&/* @__PURE__ */Ye(se,{children:Gr(n,2)})]},r)}),s(r.length)]})]})},Hr=(e,n)=>{const t=ar(e),o=(e,n)=>Vr(e,n),r=Nt(e.type),i=r?`${e.props.id}:${r.slot}`:null;/* @__PURE__ */
18
- return Ke(_e,{children:[t.map(({child:t,zone:r,index:i})=>{const l=ht===String(t.props.id),{collapsible:s,folded:d}=pr(t,n,hr(t.type)),c=String(t.props.id),a=Nr(t),p=()=>mr(r,i,c,e.type),{rowProps:u,...f}=Mr.row({item:{id:c,zone:r,index:i,type:t.type},place:{...De(r),index:i}},{"data-node-id":c,onClick:or(p)});/* @__PURE__ */
19
- return Ke(Xe,{children:[0===i&&o(r,0),
20
- /* @__PURE__ */Ye(ie,{icon:/* @__PURE__ */Ye($t,{type:t.type,size:13}),name:a,onSelect:p,selected:l,hidden:Boolean(t.props._hidden),...f,fold:s?{open:!d,label:"group",onToggle:()=>Zt(c)}:void 0,actions:/* @__PURE__ */Ke(_e,{children:[ir(r,i,a),lr(r,i,t,a)]}),rowProps:u}),s&&!d&&/* @__PURE__ */Ye(se,{children:Hr(t,n+1)}),o(r,i+1)]},String(t.props.id??`${r}-${i}`))}),i&&!t.some(e=>e.zone===i)?o(i,0):null]})},Gr=(e,n)=>{const t=ar(e),o=Nt(e.type,Ct(fn?.data,e.type,String(e.props.id))),r=o?.spec??null,i=r&&Array.isArray(e.props[r.slot])?e.props[r.slot]:[],l=o&&o.choices?{slot:o.slot,choices:o.choices}:null,s=String(e.props.id),d=r&&!r.fixed?`${s}:${r.slot}`:null,c=l?`${s}:${l.slot}`:null,a=(n,t)=>{const o=n===d&&r&&!r.addBlocked?.(i)?()=>yr(e.props.id,r.slot,r.childType,t,e.type):n===c?()=>er(n,t):void 0;return Vr(n,t,o,n===d&&r?r.addLabel:"Add block here")};/* @__PURE__ */
21
- return Ke(_e,{children:[t.map(({child:t,zone:o,index:r})=>{const i=ht===String(t.props.id),l=jo(t),s=String(t.props.id),{collapsible:d,folded:c}=pr(t,n,hr(t.type)),p=cr(t.type),u=1===p.length?`${s}:${p[0]}`:null,f=u?{...De(u),index:Po(u).length}:void 0,h=Mr.dragging,m=f&&h&&Or(h,f)?f:void 0,y=()=>mr(o,r,s,e.type),{rowProps:g,...k}=Mr.row({item:{id:s,zone:o,index:r,type:t.type},place:{...De(o),index:r},into:m,canDrag:!wt(t.type)},{"data-node-id":s,onClick:or(y)});/* @__PURE__ */
22
- return Ke(Xe,{children:[0===r&&a(o,0),
23
- /* @__PURE__ */Ye(ie,{icon:/* @__PURE__ */Ye($t,{type:t.type,size:13}),name:l,onSelect:y,nameSlot:Io(o,r,s,l),selected:i,hidden:Boolean(t.props._hidden),...k,fold:d?{open:!c,label:"group",onToggle:()=>Zt(s)}:void 0,actions:wt(t.type)?void 0:/* @__PURE__ */Ke(_e,{children:[ir(o,r,l),lr(o,r,t,l)]}),rowProps:g}),d&&!c&&/* @__PURE__ */Ye(se,{children:Gr(t,n+1)}),a(o,r+1)]},String(t.props.id??`${o}-${r}`))}),r&&!r.fixed&&
24
- /* @__PURE__ */Ye(A,{small:!0,label:r.addLabel,blocked:r.addBlocked?.(i)??null,onAdd:()=>yr(e.props.id,r.slot,r.childType,i.length,e.type)}),c&&!t.some(e=>e.zone===c)?a(c,0):null]})},Jr=(()=>{if(!yn||!ft)return null;const e=String(yn.type),n=String(yn.props.id),t=Nt(e,Ct(fn?.data,e,n));if(!t||"footer"===t.source)return null;const o=xo.some(e=>String(e.props?.id)===n),r=Array.isArray(yn.props[t.slot])?yn.props[t.slot]:[];if(t.spec?.addBlocked?.(r))return null;const i=t.choices??(t.spec?[{type:t.spec.childType,label:zo(t.spec.childType)}]:[]);return 0===i.length?null:{parentName:o?Bo(e):zo(e),choices:i,onPick:o=>{t.spec?yr(n,t.slot,o,r.length,e):gr(`${n}:${t.slot}`,o,r.length)}}})(),Ur=nt||null!==Gn,Wr=e=>"panel"in e?{id:e.id,label:e.label,icon:e.icon,active:jn&&!Ur&&vt===e.id,onSelect:()=>yo(e.id)}:e,Zr=[{id:"add",label:"Add",icon:/* @__PURE__ */Ye("span",{className:"sf-rail-plus","aria-hidden":"true",children:"+"}),active:nt,onSelect:()=>nt?nr():qo(null)},...(xt.railLead??[]).map(Wr),{id:"sections",label:"Layers",icon:/* @__PURE__ */Ye(je,{}),active:jn&&!Ur&&"sections"===vt,onSelect:()=>yo("sections")},...(xt.railTrail??[]).map(Wr)];Hn?Zr.push({id:"media",label:"Media library",icon:/* @__PURE__ */Ye(Me,{}),active:jn&&!nt&&(null!==Gn||"media"===vt),onSelect:()=>yo("media")}):an&&Zr.push({id:"media",label:"Media library",icon:/* @__PURE__ */Ye(Me,{}),onSelect:go});const Qr=[...xt.railLead??[],...xt.railTrail??[]].find(e=>"panel"in e&&e.id===vt);return(xt.wrap??(e=>e))(
25
- /* @__PURE__ */Ke("div",{ref:_n,className:"sf-editor es-editor",style:we(Dt),onContextMenu:Fo.onEditorContextMenu,children:[
26
- /* @__PURE__ */Ke(fe,{children:[
27
- /* @__PURE__ */Ye(he,{items:Zr,ariaLabel:"Left panel views"}),
28
- /* @__PURE__ */Ke(me,{children:[
29
- /* @__PURE__ */Ye(ye,{label:"Undo",disabled:!mn.hasPast,onClick:()=>mn.back(),children:/* @__PURE__ */Ye(Ee,{})}),
30
- /* @__PURE__ */Ye(ye,{label:"Redo",disabled:!mn.hasFuture,onClick:()=>mn.forward(),children:/* @__PURE__ */Ye(Ie,{})}),
31
- /* @__PURE__ */Ye(ge,{}),
32
- /* @__PURE__ */Ye(ke,{devices:In,value:Vn,onChange:Fn})]}),
33
- /* @__PURE__ */Ke(me,{kind:"right",style:{minWidth:300},children:[
34
- /* @__PURE__ */Ye(qe,{saveState:on,notSaving:Boolean(dn)||null!=rn,onToggle:sn,onRetry:ln}),xt.barLead?.(),
35
- /* @__PURE__ */Ye("button",{type:"button",className:"es-btn-ghost",title:"Refresh the preview (reloads the canvas, keeps your place)",onClick:()=>{Kn.current=(()=>{const e=qn?.document;if(!e)return null;const n=xo.findIndex(e=>e.type===xn),t=n>=0?n:xo.length;let o=null;for(let n=0;n<t;n++){const t=xo[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=yn?.props?.id??xo[0]?.props?.id;null!=e&&(o={id:String(e),offset:0})}return o})(),Yn(e=>e+1)},children:"Refresh"}),xt.barTrail?.(),
36
- /* @__PURE__ */Ye("button",{type:"button",className:"es-btn-primary",onClick:()=>{tn(fn.data)},children:cn?"Publish":"Save"})]})]}),
37
- /* @__PURE__ */Ye(z,{}),
38
- /* @__PURE__ */Ke("div",{className:"sf-body",children:[jn?/* @__PURE__ */Ke(_e,{children:[
39
- /* @__PURE__ */Ye("div",{className:"es-sidepanel es-sidepanel--left sf-panel sf-panel--left",children:nt?/* @__PURE__ */Ye(T,{blocks:it&&it.zone!==X&&!$r(it.zone)?jr(it.zone):Jr,blocksOnly:Boolean(it&&it.zone!==X&&!$r(it.zone)),at:it?{label:(e=>{const n=$r(e.zone);if(n)return`Adding to ${zo(n.type)}`;if(e.zone===X){const n=xo[e.index];return n&&n.type!==xn?`Adding before ${Bo(n.type)}`:"Adding at the end of the page"}const t=jr(e.zone);return t?`Adding to ${t.parentName}`:"Adding here"})(it),onClear:()=>lt(null)}:void 0,onAdd:e=>{if(it&&"block"!==e.kind&&$r(it.zone))return tr(e,it.zone,it.index),void lt({zone:it.zone,index:it.index+1});if("section"===e.kind)return(e=>{if(null===st)return void Ko(e);const n=Ko(e,st);dt(n+1)})(e.type);if("template"===e.kind)return((e,n)=>{if(null===st)return void _o(e,n);const t=_o(e,n,st);dt(t+1)})(e.template.name,d(e.template.node));if(it&&it.zone!==X){const n=jr(it.zone);if(!n)return;return n.target.spec?yr(n.parentId,n.target.slot,e.type,it.index,n.parent.type):gr(it.zone,e.type,it.index),void lt({zone:it.zone,index:it.index+1})}Jr?.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:Rr,siteWide:xt.addPanelRow?.(nr),onClose:nr,onHide:ho,readOnly:Boolean(dn)}):Gn&&Dn?
40
- /* @__PURE__ */Ye(O,{panel:Dn,pick:Gn,onHide:ho}):Qr?Qr.panel({onHide:ho,notify:no}):"media"===vt&&Dn?/* @__PURE__ */Ye(O,{panel:Dn,pick:null,onHide:ho}):/* @__PURE__ */Ke(_e,{children:[
41
- /* @__PURE__ */Ye(P,{icon:/* @__PURE__ */Ye(je,{}),title:"Layers",context:`/${Ce}`,actions:Cr.length>0?/* @__PURE__ */Ye(Se,{label:Br?"Expand all sections":"Collapse all sections",onClick:()=>Ft(e=>{const n=new Set(Cr);return Br?new Set([...e].filter(e=>!n.has(e))):/* @__PURE__ */new Set([...e,...Cr])}),children:/* @__PURE__ */Ye(en,{expand:Br})}):void 0,onHide:ho}),
42
- /* @__PURE__ */Ke(re,{className:"sf-tree sf-scroll",children:[
43
- /* @__PURE__ */Ye(ie,{icon:/* @__PURE__ */Ye($t,{type:"page",size:13}),name:"Page settings",onSelect:ko,selected:!yn&&ft,rowProps:{onClick:or(ko)}}),vr&&/* @__PURE__ */Ke(_e,{children:[
44
- /* @__PURE__ */Ye(le,{children:"Header"}),Dr(vr)]}),!bt&&un&&/* @__PURE__ */Ke(_e,{children:[
45
- /* @__PURE__ */Ye(le,{children:"Header"}),
46
- /* @__PURE__ */Ye(ie,{icon:/* @__PURE__ */Ye($t,{type:"header",size:13}),name:"Header",onSelect:So,selected:pt.kind===Bn?.kind,rowProps:{onClick:or(So)}})]}),!bt&&/* @__PURE__ */Ke(le,{children:["Template · ",pn?"Home page":"Template"]}),xo.map((e,n)=>{if(e.type===Sn||e.type===xn||wn(e.type))return null;const t=ht===String(e.props.id),o=Boolean(e.props._hidden);ar(e);const r=String(e.props.id),i=xt.hasOwnRows?.(e)??!1,l=fr(e)||i,s=l&&Wt(r),{rowProps:d,...c}=Mr.row({item:{id:r,zone:X,index:n,type:e.type},place:{...De(X),index:n}},{"data-node-id":r,onClick:or(()=>Zo(n))});/* @__PURE__ */
47
- return Ke(Xe,{children:[n>0&&sr(n),
48
- /* @__PURE__ */Ye(ie,{icon:/* @__PURE__ */Ye($t,{type:e.type,size:13}),name:No(e),onSelect:()=>Zo(n),selected:t,hidden:o,...c,fold:l?{open:!s,label:"section",onToggle:()=>Zt(r)}:void 0,actions:/* @__PURE__ */Ke(_e,{children:[ir(X,n,No(e)),lr(X,n,e,No(e))]}),rowProps:d}),fr(e)&&!s&&/* @__PURE__ */Ke(se,{children:[Gr(e,1),xt.partRows?.(e,Fr)]}),i&&!s&&/* @__PURE__ */Ye(se,{children:xt.ownRows?.(e,n,Fr)})]},String(e.props.id??n))}),!bt&&zr>0&&sr(zr),un&&/* @__PURE__ */Ye(le,{children:"Footer"}),br&&(()=>{const e=String(br.props.id),n=ar(br).length>0||Boolean(Nt(br.type)),t=n&&Wt(e);/* @__PURE__ */
49
- return Ke(_e,{children:[
50
- /* @__PURE__ */Ye(ie,{icon:/* @__PURE__ */Ye($t,{type:"footer",size:13}),name:"Footer",onSelect:()=>Zo(xr),selected:ht===String(br.props.id),fold:n?{open:!t,label:"section",onToggle:()=>Zt(e)}:void 0,rowProps:{onClick:or(()=>Zo(xr))}}),n&&!t&&/* @__PURE__ */Ye(se,{children:Hr(br,1)})]})})(),!bt&&!br&&un&&/* @__PURE__ */Ye(ie,{icon:/* @__PURE__ */Ye($t,{type:"footer",size:13}),name:"Footer",onSelect:rr,rowProps:{onClick:or(rr),title:"Edit the site footer"}}),wr&&Dr(wr),xt.treeFoot?.()]})]})}),
51
- /* @__PURE__ */Ye(xe,{side:"left",width:Dt.left,min:ve,max:be,defaultWidth:S.left,label:"Resize Sections panel",onResize:Jt})]}):/* @__PURE__ */Ye($,{side:"left",onShow:ho}),
52
- /* @__PURE__ */Ye("div",{ref:to,className:"sf-center sf-scroll",style:{overflowX:po?"auto":"hidden",overflowY:"hidden"},children:/* @__PURE__ */Ye("div",{className:"sf-frame-scaler",style:uo,children:/* @__PURE__ */Ye("div",{className:"sf-frame "+(Vn===Ln?"":`sf-frame--${Vn}`),style:fo,children:/* @__PURE__ */Ke("div",{className:"sf-preview-host",children:[
53
- /* @__PURE__ */Ye(Nn,{},Xn),
54
- /* @__PURE__ */Ye(Be,{canvas:qn,session:Rr,model:Lr,canDrop:Or,onDrop:Ir,onPick:e=>{ut(D),$n.select(e.zone===X?{index:e.index}:{index:e.index,zone:e.zone})},onZoneAdd:e=>er(Fe(e),0),readOnly:Boolean(dn),revision:fn.data}),ct.length>0&&/* @__PURE__ */Ye("div",{className:"sf-preview-gaps","aria-hidden":"true",children:ct.map(e=>/* @__PURE__ */Ke("button",{type:"button",tabIndex:-1,className:"sf-preview-gap",style:{top:e.top},title:"Add section here",onClick:()=>qo(e.index),children:[
55
- /* @__PURE__ */Ye("span",{className:"sf-preview-gap-line"}),
56
- /* @__PURE__ */Ke("span",{className:"sf-preview-gap-pill",children:[
57
- /* @__PURE__ */Ye("span",{className:"sf-preview-gap-plus",children:"+"}),
58
- /* @__PURE__ */Ye("span",{className:"sf-preview-gap-label",children:"Add section"})]})]},e.index))})]})})})}),En?/* @__PURE__ */Ke(_e,{children:[
59
- /* @__PURE__ */Ye(g,{value:{selectChild:mr,addChild:yr,childRowName:jo,blockRowName:Nr},children:/* @__PURE__ */Ye(An,{mode:pt,onOpenWebsiteSettings:xt.openSettings??(()=>{}),onOpenSiteStyles:xt.openStyles,onSelectNode:Et,onNotify:no,onHidePanel:mo})}),
60
- /* @__PURE__ */Ye(xe,{side:"right",width:Dt.right,min:ve,max:be,defaultWidth:S.right,label:"Resize settings panel",onResize:Ut})]}):
61
- /* @__PURE__ */Ye($,{side:"right",onShow:mo})]}),Yt&&/* @__PURE__ */Ke("div",{className:"sf-toast "+("error"===Yt.tone?"sf-toast--error":""),role:"status",children:[
62
- /* @__PURE__ */Ye("span",{className:"sf-toast-check","aria-hidden":"true",children:"error"===Yt.tone?"!":"✓"}),Yt.msg]},_t),Fo.menu]}))}export{nn as ScreenChrome};
@@ -1,2 +0,0 @@
1
- import{routeSharedHostMessage as e}from"./chunk-7MU3RJ6S.js";import{hostLoadRefusal as r,describeLoadFailure as t}from"./chunk-A7ZJII7O.js";import{pageEditLock as n}from"./chunk-AKZWUV5Z.js";import{NO_DOCUMENT_ADDRESSING as o}from"./chunk-RLBXE4EU.js";import{saveStatusOf as a,resetForDocumentSwitch as u}from"./chunk-OYX47SL7.js";import{isExpiredSession as s}from"./chunk-HMX55DYT.js";import{useAdminBridge as i}from"./chunk-Q3SQBNJB.js";import{useEaselHost as c}from"./chunk-R5ZVNJLJ.js";import{useEaselSession as l}from"./chunk-6TZTKAB5.js";import{backendOf as d,setSessionDocumentSite as f}from"./chunk-AJBJ74ME.js";import{useAutosave as v}from"./chunk-BDTITTMW.js";import{canWriteDocument as k,newEaselClientId as p,reloadIfVersionMoved as g,holderOf as m}from"./chunk-JUQ6YJCG.js";import{createContext as h,useContext as w,useState as y,useMemo as S,useCallback as b,useEffect as I,useRef as j}from"react";import{jsx as B}from"react/jsx-runtime";var P={content:[],root:{},zones:{}};var A=h(null);function C(){const e=w(A);if(!e)throw new Error("useStorefrontDocument must be used within StorefrontDocumentProvider");return e}function E({target:h,addressing:w=o,onHostMessage:C,children:E}){const{homeSlug:T,entryMayBounce:J,entryBounce:H,onSwitch:M,tellsHost:N,adapterFor:D,migrateRenamedProps:L}=w,[O,R]=y(h),V=c(),U=l(),Z=S(()=>d(U),[U]),W="template"===O.kind,Y="template"===O.kind?O.id:null,x="template"===O.kind?O.pageSlug??T??"":O.slug,F="page"===O.kind?O.siteId??null:null,K=U.blocks,Q=S(()=>D(O,Z,K),[D,Z,K,O.kind,"template"===O.kind?O.id:O.siteId]),X=Q.capabilities,$=b(e=>U.documentHooks?.stored?.(e)??e,[U]),z="page"===O.kind?O.originSlug??null:null;I(()=>{f(U,F)},[U,F]);const G=j(O);I(()=>{G.current=O},[O]);const{token:_,tokenRef:q,capabilities:ee}=i({onMessage:r=>{if(C?.(r)||e(r))return;const t=r;if("storefront-editor:navigate"===t?.type){const e=r;e?.target&&cr(e.target)}}}),re=!U.usesBridgedToken||null!==_,te=Q.lock,ne=Boolean(Z.lock),[oe,ae]=y(null),[ue,se]=y(null),[ie,ce]=y(null),[le,de]=y(null),fe=j(null),[ve,ke]=y(!1),pe=j(null),[ge,me]=y(null),he=j(null),[we,ye]=y(null),Se=j(null);I(()=>{Se.current=we},[we]);const[be,Ie]=y(X.hasEditLock?{kind:"checking"}:{kind:"editing"}),je=j(be);I(()=>{je.current=be},[be]);const Be=j(()=>Promise.resolve(!1)),Pe=b(e=>{fe.current=e,ke(!0)},[]),Ae=v({save:async({id:e,data:r})=>{if(k(je.current)){if(!await Be.current(e,r)){if(!k(je.current))return void Pe({id:e,data:r});throw new Error("page save did not land")}}else Pe({id:e,data:r})},onFailure:(e,r)=>{0===r&&V.send("storefront-editor:save-failed")}}),{state:Ce,push:Ee,flush:Te,pause:Je,resume:He,stop:Me,reset:Ne,retryNow:De,hasPending:Le}=Ae,Oe=j(Ce);I(()=>{Oe.current=Ce},[Ce]);const Re=a(Ce),Ve=b(()=>{const e=fe.current;e&&(fe.current=null,ke(!1),Ee(e))},[Ee]),Ue=j("");Ue.current||(Ue.current=p());const[Ze,We]=y(0),Ye=j(!1),[xe,Fe]=y(J(h)),Ke=j(!1);I(()=>{if(Ke.current)return;Ke.current=!0;const e=V.address.search(),r=H(h,e);r?V.address.load(r):J(h)&&Fe(!1)},[h,V]);const Qe=V.send;I(()=>{if(!re)return;let e=!1;const n=Q.resolve(x),o=U.documentHooks?.opening?.({slug:x,isTemplate:W,capabilities:X});return n.then(async r=>{if(e)return;if(!r)return W||null===T||x===T?void de(W?"Couldn’t open a page in this template.":`No storefront page with slug "${x}".`):void V.address.load({kind:"page",slug:T,siteId:F??void 0});ae(r.id),se(r.kind??null),he.current=r.version??null;const t=r.layout,n=t&&Object.keys(t).length?t:P,a=L(n),u=o?await o(a):a;e||ce(u)}).catch(n=>{e||(console.error("[storefront-editor] document load failed",n),de(r(n,{slug:x})??`Could not load the document — ${t(n)}`))}),()=>{e=!0}},[re,_,W,Q,x]);const Xe=b(e=>new Promise(r=>{const t=Date.now(),n=setInterval(()=>{const o=q.current;o&&o!==e?(clearInterval(n),r(o)):Date.now()-t>6e3&&(clearInterval(n),r(null))},200)}),[]),$e=b(async e=>{const r=q.current;if(!r&&U.usesBridgedToken)return{ok:!1,error:new Error("no editor token")};try{return{ok:!0,value:await e(r??"")}}catch(t){if(s(t)){Qe("storefront-editor:auth-expired");const t=r?await Xe(r):null;if(t)try{return{ok:!0,value:await e(t)}}catch(e){return{ok:!1,error:e}}}return{ok:!1,error:t}}},[Qe,Xe,U]),ze=b(async e=>{const r=q.current?await $e(e):{ok:!1};return r.ok||Qe("storefront-editor:save-failed"),r.ok},[Qe,$e]),Ge=b(async(e,r,t=!1)=>{if(!k(je.current))return!1;if(Se.current)return!1;const o=await $e(()=>Q.saveLayout(e,r,he.current,Ue.current));if(o.ok)return he.current=o.value.version??he.current,!0;const a=n.readLockTaken(o.error);if(a){const e={kind:"takenover",holder:a};return je.current=e,Ie(e),!1}const u=n.readSaveConflict(o.error);if(u){if(u.savedByYou&&!t&&Q.rereadVersion){const t=await $e(()=>Q.rereadVersion(e));if(t.ok&&t.value)return he.current=t.value,Be.current(e,r,!0)}Me(),Se.current=u,ye(u)}return!1},[Q,$e,Me]);I(()=>{Be.current=Ge},[Ge]);const _e=b(e=>{if(Qe("storefront-editor:dirty"),!oe)return;const r=$(e);pe.current=r,k(je.current)?Ee({id:oe,data:r}):Pe({id:oe,data:r})},[oe,Qe,Pe,Ee,$]),qe=b(async()=>{k(je.current)&&Ve();return await Te()&&null==fe.current},[Ve,Te]),er=j(qe);I(()=>{er.current=qe},[qe]);const rr=j($e);I(()=>{rr.current=$e},[$e]);const tr=b(()=>{V.address.reload()},[V]),nr=j(()=>Promise.resolve(!1));I(()=>{nr.current=()=>{const e=Q.rereadVersion;return oe&&e?g({ours:he.current,stored:async()=>{const r=await rr.current(()=>e(oe));return r.ok?r.value:null},hasPending:()=>null!=fe.current||Le(),reload:tr}):Promise.resolve(!1)}},[Q,oe,Le,tr]),I(()=>{if(!te||!oe||!re)return;let e=!1,r=null;const t=Ue.current,o=n.makeClaimBeat({claim:async e=>{const r=await rr.current(()=>te.claim(oe,t,e));if(r.ok)return{heartbeat_seconds:r.value.heartbeatSeconds};throw r.error},cancelled:()=>e,currentAccess:()=>je.current,heldWrite:()=>({pending:null!=fe.current||Le(),autoSaveEnabled:!Oe.current.paused,saveConflict:null!=Se.current}),setAccess:e=>{je.current=e,Ie(e)},releaseHeldWrite:()=>{er.current()},startHeartbeat:e=>{r=setInterval(()=>{o(!1)},e)},stopHeartbeat:()=>{r&&(clearInterval(r),r=null)},reloadIfMoved:()=>{nr.current()}}),a=Ye.current;return Ye.current=!1,a||Ie({kind:"checking"}),o(a),()=>{e=!0,r&&clearInterval(r),te.release(oe,t).catch(()=>{})}},[oe,te,re,_,Ze]);const or=b(()=>{te&&oe&&(Ye.current=!0,We(e=>e+1))},[oe,te]),ar=b(()=>{Ie(e=>{const r="blocked"===e.kind||"takenover"===e.kind?e.holder:null;return r?{kind:"readonly",holder:r}:e})},[]),ur=b(()=>{Oe.current.paused?(k(je.current)&&Ve(),He()):Je()},[Ve,Je,He]),sr=b(()=>{De()},[De]),ir=b(e=>{pe.current=null,u("template"!==e.kind&&ne,{resetAutosave:()=>{Ne(),fe.current=null,ke(!1)},setVersion:e=>{he.current=e},setSaveConflict:ye,setAccess:Ie}),M(e),R(e),ae(null),se(null),ce(null),de(null),V.address.show(e),N(e)&&V.send("storefront-editor:navigated",{target:e})},[Ne,V,ne,M,N]),cr=b(e=>{if(function(e,r,t){if(e.kind!==r.kind)return!1;if("template"===e.kind){const n=r;return e.id===n.id&&(e.pageSlug??t)===(n.pageSlug??t)}const n=r;return e.slug===n.slug&&e.siteId===n.siteId}(e,G.current,T))return;const r=null!=fe.current;if(!r&&!Le())return void ir(e);const t=Oe.current;r||t.paused||t.failed||t.stopped?me(e):Te().then(r=>{r?ir(e):me(e)})},[ir,Le,Te,T]),lr=b(()=>me(null),[]),dr=b(()=>{me(e=>(e&&ir(e),null))},[ir]),fr=b(async()=>{const e=ge;if(!e)return;await qe()&&(me(null),ir(e))},[ge,qe,ir]),vr=b(async e=>{if(!oe)return;if(!k(je.current)||Se.current)return;const r=$(e);if(!await Ge(oe,r))return void(Se.current||Qe("storefront-editor:save-failed"));const t=Q.publish;if(!X.canPublish||!t)return void Qe("storefront-editor:saved");const n=await $e(()=>t(oe,he.current??void 0));n.ok?(he.current=n.value.version??he.current,Qe("storefront-editor:published")):Qe("storefront-editor:save-failed")},[oe,Q,X.canPublish,Qe,Ge,$e,$]);/* @__PURE__ */
2
- return B(A.Provider,{value:{target:O,adapter:Q,capabilities:X,templateId:Y,currentSlug:x,currentKind:ue,siteId:F,ready:re,token:_,tokenRef:q,notifyParent:Qe,bridgeCapabilities:ee,runAuthed:ze,docId:oe,data:ie,getLiveData:()=>pe.current??ie,footerOriginSlug:z,error:le,redirecting:xe,saveStatus:Re,saveState:Ce,autoSaveEnabled:!Ce.paused,autoSaveStoppedByConflict:Ce.stopped,hasUnsavedEdits:Ce.pending||ve,toggleAutoSave:ur,retrySave:sr,onChange:_e,flushSave:qe,onPublish:vr,access:be,readOnly:null!==m(be),takeOverEditing:or,viewReadOnly:ar,saveConflict:we,reloadFromServer:tr,navigate:cr,pendingNav:ge,cancelPendingNav:lr,discardAndNavigate:dr,saveAndNavigate:fr},children:E})}export{A as ScreenDocumentContext,E as ScreenDocumentProvider,C as useScreenDocument};
@@ -1 +0,0 @@
1
- import{backendOf as e}from"./chunk-AJBJ74ME.js";import{WebsiteBackendError as s}from"./chunk-KDYIMJTZ.js";var r=()=>Promise.reject(new s("unavailable","This editor's backend keeps no section templates.")),t={list:()=>Promise.resolve([]),get:()=>Promise.resolve(null),ensure:r,save:r,update:r,rename:r,remove:r},o=()=>e().sectionTemplates??t,a={list:()=>o().list(),get:e=>o().get(e),ensure:(e,s,r)=>o().ensure(e,s,r),save:(e,s)=>o().save(e,s),update:(e,s)=>o().update(e,s),rename:(e,s)=>o().rename(e,s),remove:e=>o().remove(e)};export{a as sectionTemplates};
@@ -1 +0,0 @@
1
- import{withoutDeviceGate as t,deviceMetaOf as o}from"./chunk-PWZOS45R.js";import{BUCKET_KEY as e}from"./chunk-R2HLPNQF.js";import{panelFieldsOf as n}from"./chunk-ZE7I3PLX.js";import{ANCHOR_FIELD_KEYS as r,foldMetaOf as s,MEDIA_FIELD_MARKER as i,TEXT_FIELD_MARKER as c,LINK_FIELD_MARKER as p}from"./chunk-DUVRZ456.js";import{STYLE_KIND as u,fieldKind as f,copyStyle as a,heldStyle as l,planPaste as m,pasteMessage as h}from"./chunk-57DJOKXT.js";var y=/* @__PURE__ */new Set([e.Style,e.Layout]),j=new Set(Object.values(e)),b=new Set(r),S=/* @__PURE__ */new Set(["focal","imageFocal"]),k=[i,c,p];function w(t){return`site:${t??""}`}function g(o){if(!o||"object"!=typeof o)return null;const e=o,n=t(o)??o,r=e[u]??n[u];if("string"==typeof r)return r;const s=e.options??n.options;if(Array.isArray(s)){return`choice:${s.map(t=>String(t?.value)).sort().join("|")}`}return f(n)}function L(o){const e=o,n=t(o);return k.some(t=>t in e||n&&t in n)}function O(t,e){const r=n(t,e)??{},i=[];let c=!1;for(const[t,e]of Object.entries(r))j.has(t)?c=y.has(t):c&&e&&"object"==typeof e&&!t.startsWith("_")&&(s(e)||b.has(t)||S.has(t)||L(e)||"slot"!==e.type&&i.push({path:[t],kind:g(e),counted:"mobile"!==o(e)?.tier}));return i}function v(t,o,e,n){a({scope:o,type:e.type,label:n,rows:O(t,e),props:e.props})}function P(t,o,e,n){const r=l(o);if(!r)return null;const s=m(r,{type:e.type,rows:O(t,e),props:e.props});return{...s,message:h(s,r.sourceLabel,n)}}export{v as copyNodeStyle,O as nodeStyleRows,P as planNodePaste,g as shopFieldKind,w as siteStyleScope};
@@ -1 +0,0 @@
1
- import{DEFAULT_TEXT_STYLES_WORDS as o}from"./chunk-M6F6LS3H.js";import{DEFAULT_STYLE_CLIPBOARD_WORDS as r}from"./chunk-6WY6ZXJG.js";import{DEFAULT_CANVAS_WORDS as t}from"./chunk-AELNNAFM.js";import{DEFAULT_TREE_WORDS as m}from"./chunk-3EDSDPIP.js";import{DEFAULT_PANEL_WORDS as n}from"./chunk-QTLAVDJE.js";import{DEFAULT_NODE_MENU_WORDS as c}from"./chunk-WK3AFPXY.js";import{DEFAULT_SAVE_WORDS as s}from"./chunk-H6DDIBQ4.js";import{DEFAULT_COPY_WORDS as f}from"./chunk-UH7IGZKF.js";import{DEFAULT_PICK_WORDS as p}from"./chunk-ZAOM6PFH.js";import{DEFAULT_FIELDS_WORDS as i}from"./chunk-FPOKPNO4.js";import{DEFAULT_CHROME_WORDS as u,DEFAULT_NOTICE_WORDS as e}from"./chunk-ZJEBF4NB.js";import{DEFAULT_LOCK_WORDS as k}from"./chunk-RE4LP46F.js";import{DEFAULT_RAIL_WORDS as j}from"./chunk-2OAZYSWJ.js";import{DEFAULT_DRAG_WORDS as h}from"./chunk-O2NLQBFX.js";var l={notice:e,lock:k,save:s,chrome:u,rail:j,tree:m,panel:n,fields:i,pick:p,drag:h,menu:c,styleClipboard:r,copy:f,canvas:t,textStyles:o},F=o=>"object"==typeof o&&null!==o;function a(o,r){const t={};for(const m of Object.keys(o)){const n=o[m],c=r[m];null==c?t[m]=n:F(n)?t[m]=F(c)?a(n,c):n:t[m]=typeof c==typeof n?c:n}return t}function y(o,r){return r?a(o,r):o}export{l as DEFAULT_EASEL_STRINGS,y as mergeEaselStrings};
@@ -1 +0,0 @@
1
- import{useScreenDocument as e}from"./chunk-FT35FX7D.js";import{EditNotice as n}from"./chunk-6DJHRLCU.js";import{jsx as o}from"react/jsx-runtime";function r(){const{capabilities:r,access:a,takeOverEditing:i,viewReadOnly:t,saveConflict:c,reloadFromServer:s}=e();return r.hasEditGuard?/* @__PURE__ */o(n,{access:a,conflict:c,noun:"page",onTakeOver:i,onViewReadOnly:t,onReload:s}):null}export{r as PageEditGuardNotices};