efficient-easel 0.105.1 → 1.0.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 (184) hide show
  1. package/README.md +103 -29
  2. package/dist/{LinkPicker-W2Rtxetz.d.ts → LinkPicker-hPEr1MJx.d.ts} +6 -4
  3. package/dist/autosave/index.d.ts +5 -5
  4. package/dist/chrome/chrome.css +50 -273
  5. package/dist/chrome/index.d.ts +61 -56
  6. package/dist/chrome/index.js +1 -1
  7. package/dist/chunk-2GVCAIPX.js +1 -0
  8. package/dist/chunk-4GNPKHV4.js +64 -0
  9. package/dist/chunk-5545A3PC.js +4 -0
  10. package/dist/chunk-7SQF6LZL.js +1 -0
  11. package/dist/chunk-BXMXTO36.js +1 -0
  12. package/dist/{chunk-NYKIQJT2.js → chunk-CKEPQNSQ.js} +1 -1
  13. package/dist/chunk-DJMMTWFP.js +1 -0
  14. package/dist/{chunk-PQXIFBDY.js → chunk-E2O2MRZR.js} +1 -1
  15. package/dist/chunk-EA2HTX37.js +5 -0
  16. package/dist/{chunk-SARZN4M7.js → chunk-FEK3S6HN.js} +1 -1
  17. package/dist/chunk-FPAVNX3Y.js +6 -0
  18. package/dist/chunk-HMJS344F.js +1 -0
  19. package/dist/chunk-JLTZQ4US.js +1 -0
  20. package/dist/chunk-JMGPPXNQ.js +24 -0
  21. package/dist/chunk-K56YDHYQ.js +1 -0
  22. package/dist/chunk-LOMEH6DG.js +1 -0
  23. package/dist/{chunk-V4LF7D4F.js → chunk-MAEXP3KE.js} +1 -1
  24. package/dist/chunk-MJM6SFD3.js +3 -0
  25. package/dist/chunk-NLRW4BGG.js +8 -0
  26. package/dist/chunk-OJAJVH7S.js +5 -0
  27. package/dist/chunk-ONRYLR2D.js +2 -0
  28. package/dist/chunk-ORR3Q4WV.js +1 -0
  29. package/dist/chunk-OTEXGJDU.js +5 -0
  30. package/dist/chunk-P2VEMZH5.js +1 -0
  31. package/dist/chunk-PT6V53OO.js +1 -0
  32. package/dist/chunk-PYCLHOSA.js +9 -0
  33. package/dist/chunk-Q27BB5ZC.js +14 -0
  34. package/dist/chunk-QLD57GBB.js +6 -0
  35. package/dist/{chunk-NWIW7AWH.js → chunk-QMNML7XH.js} +1 -1
  36. package/dist/chunk-QR4DLZ3P.js +5 -0
  37. package/dist/chunk-TJ7YIRWQ.js +21 -0
  38. package/dist/{chunk-3P6AMTOS.js → chunk-VPFNZ7TB.js} +1 -1
  39. package/dist/chunk-W3XX2CNW.js +16 -0
  40. package/dist/chunk-X6DQWK2C.js +1 -0
  41. package/dist/chunk-XWR5YVA7.js +9 -0
  42. package/dist/chunk-YABL4EWX.js +7 -0
  43. package/dist/chunk-ZNNATBDC.js +1 -0
  44. package/dist/chunk-ZP4G3X44.js +4 -0
  45. package/dist/copy/copy.css +66 -177
  46. package/dist/copy/index.d.ts +0 -2
  47. package/dist/copy/index.js +31 -32
  48. package/dist/drag/drag.css +31 -11
  49. package/dist/drag/index.d.ts +10 -0
  50. package/dist/drag/index.js +1 -1
  51. package/dist/easel/index.d.ts +10 -1
  52. package/dist/easel/index.js +1 -1
  53. package/dist/fields/fields.css +35 -304
  54. package/dist/fields/index.d.ts +87 -95
  55. package/dist/fields/index.js +1 -1
  56. package/dist/gold/gold.css +3 -3
  57. package/dist/gold/index.d.ts +6 -5
  58. package/dist/gold/index.js +1 -1
  59. package/dist/{host-BQ_b9Qzk.d.ts → host-CiuzZJXj.d.ts} +11 -1
  60. package/dist/index.d.ts +3 -3
  61. package/dist/index.js +1 -1
  62. package/dist/menu/index.d.ts +49 -93
  63. package/dist/menu/index.js +1 -1
  64. package/dist/menu/menu.css +37 -246
  65. package/dist/node-ops/index.d.ts +1 -1
  66. package/dist/panel/index.d.ts +46 -72
  67. package/dist/panel/index.js +17 -18
  68. package/dist/panel/panel.css +143 -372
  69. package/dist/pick/index.d.ts +52 -33
  70. package/dist/pick/index.js +7 -7
  71. package/dist/pick/pick.css +19 -150
  72. package/dist/rail/index.d.ts +48 -90
  73. package/dist/rail/index.js +1 -1
  74. package/dist/rail/rail.css +21 -108
  75. package/dist/screen/components/AddBlockRow.d.ts +8 -2
  76. package/dist/screen/components/AddBlockRow.js +1 -1
  77. package/dist/screen/components/AddChildRow.d.ts +4 -3
  78. package/dist/screen/components/AddChildRow.js +1 -1
  79. package/dist/screen/components/AddSidePanel.js +1 -1
  80. package/dist/screen/components/MediaSidePanel.d.ts +2 -2
  81. package/dist/screen/components/MediaSidePanel.js +1 -1
  82. package/dist/screen/components/NodeContextMenu.d.ts +31 -9
  83. package/dist/screen/components/NodeContextMenu.js +1 -1
  84. package/dist/screen/components/PageEditGuardNotices.js +1 -1
  85. package/dist/screen/components/ScreenChrome.js +1 -1
  86. package/dist/screen/components/ScreenDocumentContext.d.ts +2 -2
  87. package/dist/screen/components/ScreenDocumentContext.js +1 -1
  88. package/dist/screen/components/ScreenMount.d.ts +8 -8
  89. package/dist/screen/components/ScreenMount.js +1 -1
  90. package/dist/screen/components/ScreenStoreProvider.d.ts +8 -8
  91. package/dist/screen/components/ScreenStoreProvider.js +1 -1
  92. package/dist/screen/components/SectionScreenShell.js +16 -16
  93. package/dist/screen/components/SidePanelHead.d.ts +4 -2
  94. package/dist/screen/components/SidePanelHead.js +1 -1
  95. package/dist/screen/components/UiIcon.d.ts +10 -26
  96. package/dist/screen/components/UiIcon.js +2 -1
  97. package/dist/screen/components/panel-widths.d.ts +15 -1
  98. package/dist/screen/components/panel-widths.js +1 -1
  99. package/dist/screen/components/usePartBridge.d.ts +8 -8
  100. package/dist/screen/components/usePartBridge.js +1 -1
  101. package/dist/screen/index.d.ts +9 -9
  102. package/dist/screen/index.js +1 -1
  103. package/dist/screen/lib/admin-bridge.d.ts +1 -1
  104. package/dist/screen/lib/admin-bridge.js +1 -1
  105. package/dist/screen/lib/chrome-theme.d.ts +20 -12
  106. package/dist/screen/lib/chrome-theme.js +1 -1
  107. package/dist/screen/lib/document-addressing.d.ts +2 -2
  108. package/dist/screen/lib/host-chrome.d.ts +1 -1
  109. package/dist/screen/lib/host.d.ts +2 -2
  110. package/dist/screen/lib/key-scope.d.ts +31 -2
  111. package/dist/screen/lib/key-scope.js +1 -1
  112. package/dist/screen/lib/links/link-filters.d.ts +1 -1
  113. package/dist/screen/lib/media-panel.d.ts +2 -2
  114. package/dist/screen/lib/media-picker.d.ts +2 -2
  115. package/dist/screen/lib/page-lock.d.ts +1 -1
  116. package/dist/screen/lib/puck/section-doc.d.ts +5 -1
  117. package/dist/screen/lib/puck/section-doc.js +1 -1
  118. package/dist/screen/lib/puck/style-clipboard.d.ts +8 -8
  119. package/dist/screen/lib/puck/use-section-ops.js +1 -1
  120. package/dist/screen/lib/screen-parts.d.ts +47 -10
  121. package/dist/screen/lib/screen-parts.js +1 -1
  122. package/dist/screen/lib/section-templates.d.ts +1 -1
  123. package/dist/screen/lib/session-context.d.ts +1 -1
  124. package/dist/screen/lib/session.d.ts +1 -1
  125. package/dist/screen/screen.css +54 -206
  126. package/dist/screen/words.d.ts +17 -1
  127. package/dist/screen/words.js +1 -1
  128. package/dist/shell/index.d.ts +134 -118
  129. package/dist/shell/index.js +1 -1
  130. package/dist/shell/shell.css +130 -88
  131. package/dist/strings/catalogue.d.ts +5 -5
  132. package/dist/strings/catalogue.js +1 -1
  133. package/dist/strings/index.d.ts +5 -5
  134. package/dist/strings/index.js +1 -1
  135. package/dist/style-clipboard/index.d.ts +1 -1
  136. package/dist/text-styles/index.d.ts +12 -3
  137. package/dist/text-styles/index.js +33 -38
  138. package/dist/text-styles/text-styles.css +39 -71
  139. package/dist/tree/index.d.ts +49 -44
  140. package/dist/tree/index.js +1 -1
  141. package/dist/tree/tree.css +31 -653
  142. package/dist/{types-DJDBtdB2.d.ts → types-BqGnUVX5.d.ts} +32 -32
  143. package/dist/types-BsyPh6EW.d.ts +99 -0
  144. package/dist/{types-DWS-s9z-.d.ts → types-CsgMwHHa.d.ts} +14 -11
  145. package/dist/{types-CqY85foL.d.ts → types-Dt1CFR1S.d.ts} +4 -2
  146. package/dist/{wordFit-D4S36PvB.d.ts → wordFit-7XpmhcaW.d.ts} +3 -5
  147. package/dist/words-Cl9xMUYY.d.ts +41 -0
  148. package/dist/{words-D_Lnw1Gr.d.ts → words-CvFnwGSr.d.ts} +1 -1
  149. package/package.json +5 -1
  150. package/dist/chunk-2UX75JDP.js +0 -1
  151. package/dist/chunk-3EDSDPIP.js +0 -1
  152. package/dist/chunk-3QVB4AG2.js +0 -3
  153. package/dist/chunk-3WSPDAK2.js +0 -1
  154. package/dist/chunk-53G47SWO.js +0 -1
  155. package/dist/chunk-5MZ3RNQQ.js +0 -13
  156. package/dist/chunk-5ZBBXZPV.js +0 -6
  157. package/dist/chunk-7FBDZTUD.js +0 -2
  158. package/dist/chunk-7V5WZ46F.js +0 -2
  159. package/dist/chunk-BXZ6WLHC.js +0 -22
  160. package/dist/chunk-BZ5ASXOL.js +0 -1
  161. package/dist/chunk-EOJNJCMJ.js +0 -16
  162. package/dist/chunk-EWVJSRRY.js +0 -6
  163. package/dist/chunk-FMGFZNPW.js +0 -1
  164. package/dist/chunk-H24N5TMZ.js +0 -11
  165. package/dist/chunk-HLEET6NV.js +0 -65
  166. package/dist/chunk-IE4GFYKO.js +0 -1
  167. package/dist/chunk-KTVH2ZRL.js +0 -15
  168. package/dist/chunk-N7VRF7PR.js +0 -5
  169. package/dist/chunk-OWBO4WKA.js +0 -0
  170. package/dist/chunk-P67FP7PG.js +0 -9
  171. package/dist/chunk-P6O363EE.js +0 -6
  172. package/dist/chunk-Q4N7C6CT.js +0 -10
  173. package/dist/chunk-QH6LCNOX.js +0 -8
  174. package/dist/chunk-RW4XBUUW.js +0 -1
  175. package/dist/chunk-TTJ54QGG.js +0 -18
  176. package/dist/chunk-VSHV6KJQ.js +0 -5
  177. package/dist/chunk-VSOP4GUM.js +0 -1
  178. package/dist/chunk-WZ7TGAAT.js +0 -3
  179. package/dist/chunk-YC4TB3CJ.js +0 -25
  180. package/dist/chunk-ZFDCDJNZ.js +0 -16
  181. package/dist/chunk-ZNS7727Y.js +0 -12
  182. package/dist/chunk-ZTTWFAAC.js +0 -1
  183. package/dist/types-Djdq6Xkd.d.ts +0 -138
  184. package/dist/words-DgHcY5qB.d.ts +0 -33
@@ -1,16 +1,16 @@
1
- import{AddBlockRow as e}from"../../chunk-QH6LCNOX.js";import{slotChildRowName as n}from"../../chunk-TBF5CVPA.js";import{scrollPreviewToSection as o,gotoPreviewSlide as r}from"../../chunk-4ES5JGGX.js";import"../../chunk-IQ5TA7AM.js";import"../../chunk-DUVRZ456.js";import"../../chunk-6W7WLPZH.js";import{useEaselUndoKeys as t}from"../../chunk-VSOP4GUM.js";import{SlotChildActionsProvider as s}from"../../chunk-KCBEE2MC.js";import{DEFAULT_PANEL_W as i}from"../../chunk-ZTTWFAAC.js";import{usePartBridge as c}from"../../chunk-FMGFZNPW.js";import{useSectionOps as p}from"../../chunk-NWIW7AWH.js";import"../../chunk-IYT6NN2J.js";import"../../chunk-I54UCYOU.js";import"../../chunk-GOTN2KY4.js";import"../../chunk-R5L2E7JX.js";import{useScreenDocument as l}from"../../chunk-7V5WZ46F.js";import"../../chunk-S4AWJX4Q.js";import"../../chunk-ERR437B5.js";import"../../chunk-KG7RJWOK.js";import"../../chunk-GMCZXMOV.js";import"../../chunk-RLBXE4EU.js";import"../../chunk-HNKB2ZYR.js";import"../../chunk-CLOS6SSX.js";import"../../chunk-3P6AMTOS.js";import"../../chunk-3WSPDAK2.js";import"../../chunk-KCOBHPN6.js";import"../../chunk-O7Q4DDJT.js";import"../../chunk-RSCMJIWS.js";import"../../chunk-HQ4VVRIC.js";import{MediaSidePanel as d}from"../../chunk-NYKIQJT2.js";import{SELECTION_MODE as m,useScreenPinned as a,useScreenCanvasFrame as u,useScreenInspectorPanel as h,useScreenPickFollowsSelection as k,sameInspectorMode as j,useStandaloneScreenBridges as f,useScreenBlockLook as N,useScreenBlockRules as S}from"../../chunk-VSHV6KJQ.js";import{nestsInTree as y,slotFieldsOf as C}from"../../chunk-PLVEGYK6.js";import{useMediaPanel as A,usePanelPick as P,useCancelPanelPick as x}from"../../chunk-R6WTQWAC.js";import{useHostEscape as O}from"../../chunk-U3JP4VGF.js";import"../../chunk-PQXIFBDY.js";import{useEasel as T}from"../../chunk-P67FP7PG.js";import"../../chunk-AELNNAFM.js";import"../../chunk-BXZ6WLHC.js";import"../../chunk-EOJNJCMJ.js";import{LayersTree as W,Subtree as R,TreeRow as g,TreeRowAction as v,TreeSeam as E}from"../../chunk-ZFDCDJNZ.js";import"../../chunk-ZNS7727Y.js";import"../../chunk-3EDSDPIP.js";import"../../chunk-QTLAVDJE.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-KTVH2ZRL.js";import"../../chunk-D2BCHTQR.js";import"../../chunk-BDTITTMW.js";import{saveIndicator as B}from"../../chunk-H6DDIBQ4.js";import{SaveState as z,panelWidthVars as J}from"../../chunk-YC4TB3CJ.js";import"../../chunk-ZJEBF4NB.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-WZ7TGAAT.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-EWVJSRRY.js";import"../../chunk-P6O363EE.js";import"../../chunk-FPOKPNO4.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-BZ5ASXOL.js";import"../../chunk-TTJ54QGG.js";import"../../chunk-O2NLQBFX.js";import{useTreeDrag as L}from"../../chunk-67GNT6PF.js";import"../../chunk-PAELDYYS.js";import"../../chunk-ZNCEOSXO.js";import{TrashIcon as D}from"../../chunk-L5KW4HG5.js";import{zoneKey as F,parseZoneKey as Z}from"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";import{useState as b,useRef as H,useEffect as M,useCallback as w,Fragment as G}from"react";import{jsxs as K,jsx as V,Fragment as Y}from"react/jsx-runtime";var I=e=>n=>{n.target.closest(".es-tree-select, button")||e()},Q={rowClick:I};function $(){const{saveState:$,readOnly:X,readOnlyReason:U=null}=l(),q=p(),{appState:_,selectedItem:ee,config:ne}=T(e=>e),[oe,re]=b(m),[te,se]=b(null),{first:ie,last:ce,panelOf:pe}=a(),le=pe(ie),de=u(),me=h(),ae=_.data.content?.[0]??null,ue=ae?.props.id??null,he=ae?.type===ie,ke=ae?.type===ce,je=H(null),fe=H(null);t(fe);const Ne=A(),Se=P(),ye=x();k(ee?.props.id),M(()=>{const e=fe.current;if(!Se||!e)return;const n=e=>{"Escape"===e.key&&ye()};return e.addEventListener("keydown",n),()=>e.removeEventListener("keydown",n)},[Se]),O(null!==Se,()=>ye()),M(()=>{ue&&je.current!==ue&&(je.current=ue,he?re(le??m):ee||q.select({index:0}))},[ue,ee,q,he]);const Ce=w(e=>re(n=>j(n,e)?n:e),[]),Ae=f({kind:oe.kind,mode:oe,open:Ce,show:e=>re(e),reveal:()=>{},select:(e,n)=>{re(e=>j(e,n)?e:n),q.select(e)}}),{selectNode:Pe}=c({mode:oe,setMode:re,onOpenPart:o}),xe=N(),{labelAtLevel:Oe,Icon:Te}=xe,{canAddTo:We}=S(),Re=e=>ne.components[e]?.label??e,ge=e=>Oe(e,"section",Re(e)),ve=!he&&"puck"===oe.kind&&ee?.props.id===ue,Ee=ae?We(ae.type)?.spec??null:null,Be=ae&&Ee?`${ae.props.id}:${Ee.slot}`:null,ze=ae&&Ee&&Array.isArray(ae.props[Ee.slot])?ae.props[Ee.slot]:[],Je=e=>n(e,Re,xe.plainText),Le=(e,n)=>{ae&&Ee&&Be&&(re(m),Ee.slider?(r(String(ae.props.id),e),q.select({index:e,zone:Be}),o(String(ae.props.id))):(q.select({index:e,zone:Be}),o(n)))},De=()=>{if(!ae||!Ee||!Be)return;const e=ze.length;q.insertComponent(Be,Ee.childType,e),re(m),Ee.slider?requestAnimationFrame(()=>{r(String(ae.props.id),e),q.select({index:e,zone:Be})}):q.select({index:e,zone:Be})},Fe=e=>C(ne,e),Ze=e=>{const{parentId:n,slot:o}=Z(e),r=e=>{if(!e)return null;if(String(e.props.id)===n)return e;for(const n of Fe(e.type)){const o=Array.isArray(e.props[n])?e.props[n]:[];for(const e of o){const n=r(e);if(n)return n}}return null},t=r(ae)?.props[o];return Array.isArray(t)?t.length:0},be=(e,n,o)=>{const r=Math.min(Math.max(o,0),Ze(e)),t=n<r?r-1:r;t!==n&&(q.reorderComponent(e,n,t),re(m),q.select({index:t,zone:e}))},He=L({keyOf:e=>e.id,readOnly:Boolean(X),canDrop:(e,n)=>F(n)===e.zone&&n.index>=0&&n.index<=Ze(e.zone),onDrop:(e,n)=>be(e.zone,e.index,n.index),onStep:(e,n)=>be(e.zone,e.index,n<0?e.index-1:e.index+2)}),Me=(e,n)=>/* @__PURE__ */V(E,{...X?{}:He.seam({place:{...Z(e),index:n}})},`seam:${e}:${n}`),we=e=>xe.blockRowName(e,Re),Ge=(e,n,r)=>{re(m),q.select({index:n,zone:e}),o(r)},Ke=(e,n,o)=>{q.insertComponent(e,n,o),re(m),q.select({index:o,zone:e}),se(null)},Ve=(n,o,r)=>/* @__PURE__ */V(e,{choices:r,open:te===n,onToggle:()=>se(te===n?null:n),onPick:e=>Ke(n,e,o)}),Ye=(e,n)=>{const o=Fe((r=e).type).flatMap(e=>(Array.isArray(r.props[e])?r.props[e]:[]).map((n,o)=>({child:n,zone:`${r.props.id}:${e}`,index:o})));var r;const t=We(e.type),s=t?.choices??null,i="footer"===t?.source?we:Je;/* @__PURE__ */
2
- return K(Y,{children:[o.map(({child:e,zone:o,index:r})=>{const t=ee?.props.id===e.props.id,s=y(ne,e.type,n),c=i(e),p=String(e.props.id),l=()=>Ge(o,r,p),{rowProps:d,...a}=He.row({item:{id:p,zone:o,index:r},place:{...Z(o),index:r}},{onClick:I(l)});/* @__PURE__ */
3
- return K(G,{children:[0===r&&Me(o,0),
4
- /* @__PURE__ */V(g,{icon:/* @__PURE__ */V(Te,{type:e.type,size:13}),name:c,selected:t,onSelect:l,...a,actions:/* @__PURE__ */V(v,{kind:"delete",label:`Delete ${c}`,onClick:()=>{return e=o,n=r,q.removeComponent(e,n),re(m),void q.select(null);var e,n},children:/* @__PURE__ */V(D,{size:13})}),rowProps:d}),s&&/* @__PURE__ */V(R,{children:Ye(e,n+1)}),Me(o,r+1)]},String(e.props.id??`${o}-${r}`))}),t&&s?Ve(`${e.props.id}:${t.slot}`,o.length,s):null]})},Ie="HeroSingle"===ae?.type,Qe=Boolean(ae)&&(Boolean(Ee)||ke||he||Ie);/* @__PURE__ */
5
- return K("div",{ref:fe,className:"sf-editor es-editor",style:J(i),children:[
6
- /* @__PURE__ */V("div",{className:"sf-section-bar",children:/* @__PURE__ */V(z,null!==U?{tone:"off",label:U,role:"status"}:{...B($),role:"status"})}),
7
- /* @__PURE__ */K("div",{className:"sf-body",children:[Se&&Ne?/* @__PURE__ */V("aside",{className:"es-sidepanel es-sidepanel--left sf-panel sf-panel--left",children:/* @__PURE__ */V(d,{panel:Ne,pick:Se})}):Qe&&ae&&/* @__PURE__ */K("aside",{className:"es-sidepanel es-sidepanel--left sf-panel sf-panel--left",children:[
8
- /* @__PURE__ */V("div",{className:"sf-panel-head",children:/* @__PURE__ */V("button",{type:"button",className:"sf-panel-title sf-panel-title--btn "+(ve?"is-selected":""),"aria-pressed":ve,title:he?"Header settings":`${ge(ae.type)} settings`,onClick:()=>{he?re(le??m):(re(m),q.select({index:0}))},children:ge(ae.type)})}),
9
- /* @__PURE__ */V(W,{className:"sf-tree sf-scroll",rootProps:He.rootProps(),children:/* @__PURE__ */V(R,{children:he?
10
- /* @__PURE__ */V(g,{icon:/* @__PURE__ */V(Te,{type:"header",size:13}),name:"Header settings",selected:oe.kind===le?.kind,onSelect:()=>re(le??m),rowProps:{onClick:I(()=>re(le??m))}}):Ee?/* @__PURE__ */K(Y,{children:[ze.map((e,n)=>{const o=ee?.props.id===e.props.id,r=Je(e),t=String(e.props.id),s=()=>Le(n,t),{rowProps:i,...c}=He.row({item:{id:t,zone:Be,index:n},place:{...Z(Be),index:n}},{onClick:I(s)});/* @__PURE__ */
11
- return K(G,{children:[0===n&&Me(Be,0),
12
- /* @__PURE__ */V(g,{icon:/* @__PURE__ */V(Te,{type:e.type,size:13}),name:r,selected:o,onSelect:s,...c,actions:/* @__PURE__ */V(v,{kind:"delete",label:`Delete ${r}`,onClick:()=>{return e=n,void(Be&&(q.removeComponent(Be,e),re(m),q.select(null)));var e},children:/* @__PURE__ */V(D,{size:13})}),rowProps:i}),Me(Be,n+1)]},String(e.props.id??n))}),
13
- /* @__PURE__ */K("button",{type:"button",className:"sf-add-card",onClick:De,children:[
14
- /* @__PURE__ */V("span",{className:"sf-plus sf-plus--sm",children:"+"}),Ee.addLabel]}),ue?Ae.partRows?.(ae,Q):null]}):Ye(ae,1)})})]}),
15
- /* @__PURE__ */V("div",{className:"sf-center",children:/* @__PURE__ */V("div",{className:"sf-preview-host",children:/* @__PURE__ */V(de,{})})}),
16
- /* @__PURE__ */V(s,{value:{selectChild:(e,n,o,r)=>"section"===We(r)?.source?Le(n,o):Ge(e,n,o),addChild:(e,n,o,r,t)=>"section"===We(t)?.source?De():Ke(`${e}:${n}`,o,r),childRowName:Je,blockRowName:we},children:/* @__PURE__ */V(me,{mode:oe,onOpenWebsiteSettings:Ae.openSettings??(()=>{}),onSelectNode:Pe,hideNodeActions:!0})})]})]})}export{$ as default};
1
+ import{AddBlockRow as e}from"../../chunk-ZP4G3X44.js";import{slotChildRowName as n}from"../../chunk-TBF5CVPA.js";import{scrollPreviewToSection as o,gotoPreviewSlide as r}from"../../chunk-4ES5JGGX.js";import"../../chunk-IQ5TA7AM.js";import"../../chunk-DUVRZ456.js";import"../../chunk-6W7WLPZH.js";import{useEaselUndoKeys as t}from"../../chunk-PT6V53OO.js";import{SlotChildActionsProvider as s}from"../../chunk-KCBEE2MC.js";import{DEFAULT_PANEL_W as i}from"../../chunk-ORR3Q4WV.js";import{usePartBridge as c}from"../../chunk-DJMMTWFP.js";import{useSectionOps as p}from"../../chunk-QMNML7XH.js";import"../../chunk-IYT6NN2J.js";import"../../chunk-I54UCYOU.js";import"../../chunk-GOTN2KY4.js";import"../../chunk-R5L2E7JX.js";import{useScreenDocument as l}from"../../chunk-ONRYLR2D.js";import"../../chunk-S4AWJX4Q.js";import"../../chunk-ERR437B5.js";import"../../chunk-KG7RJWOK.js";import"../../chunk-GMCZXMOV.js";import"../../chunk-RLBXE4EU.js";import"../../chunk-HNKB2ZYR.js";import"../../chunk-CLOS6SSX.js";import"../../chunk-VPFNZ7TB.js";import"../../chunk-LOMEH6DG.js";import"../../chunk-KCOBHPN6.js";import"../../chunk-O7Q4DDJT.js";import"../../chunk-RSCMJIWS.js";import"../../chunk-HQ4VVRIC.js";import{MediaSidePanel as m}from"../../chunk-CKEPQNSQ.js";import{SELECTION_MODE as d,useScreenPinned as a,useScreenCanvasFrame as u,useScreenInspectorPanel as h,useScreenPickFollowsSelection as k,sameInspectorMode as j,useStandaloneScreenBridges as f,useScreenBlockLook as N,useScreenBlockRules as y}from"../../chunk-OJAJVH7S.js";import{nestsInTree as S,slotFieldsOf as C}from"../../chunk-PLVEGYK6.js";import{useMediaPanel as O,usePanelPick as P,useCancelPanelPick as R}from"../../chunk-R6WTQWAC.js";import{useHostEscape as x}from"../../chunk-U3JP4VGF.js";import"../../chunk-E2O2MRZR.js";import{useEasel as A}from"../../chunk-PYCLHOSA.js";import"../../chunk-AELNNAFM.js";import"../../chunk-JMGPPXNQ.js";import"../../chunk-NLRW4BGG.js";import{LayersTree as L,Subtree as B,TreeRow as M,TreeRowAction as v,TreeSeam as E}from"../../chunk-XWR5YVA7.js";import"../../chunk-Q27BB5ZC.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-QTLAVDJE.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-EA2HTX37.js";import"../../chunk-D2BCHTQR.js";import"../../chunk-BDTITTMW.js";import{saveIndicator as T}from"../../chunk-H6DDIBQ4.js";import{SaveState as W,panelWidthVars as g}from"../../chunk-TJ7YIRWQ.js";import"../../chunk-ZJEBF4NB.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-7SQF6LZL.js";import"../../chunk-QLD57GBB.js";import"../../chunk-FPOKPNO4.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-W3XX2CNW.js";import"../../chunk-O2NLQBFX.js";import{useTreeDrag as z}from"../../chunk-67GNT6PF.js";import"../../chunk-PAELDYYS.js";import"../../chunk-ZNCEOSXO.js";import"../../chunk-P2VEMZH5.js";import{TrashIcon as Q}from"../../chunk-L5KW4HG5.js";import{zoneKey as D,parseZoneKey as H}from"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";import{useState as b,useRef as J,useEffect as X,useCallback as Y,Fragment as w}from"react";import{Tooltip as F}from"efficient-shell/ui";import{jsxs as G,jsx as V,Fragment as Z}from"react/jsx-runtime";var $=e=>n=>{n.target.closest("button, input")||e()},K={rowClick:$};function I(){const{saveState:I,readOnly:U,readOnlyReason:q=null}=l(),_=p(),{appState:ee,selectedItem:ne,config:oe}=A(e=>e),[re,te]=b(d),{first:se,last:ie,panelOf:ce}=a(),pe=ce(se),le=u(),me=h(),de=ee.data.content?.[0]??null,ae=de?.props.id??null,ue=de?.type===se,he=de?.type===ie,ke=J(null),je=J(null);t(je);const fe=O(),Ne=P(),ye=R();k(ne?.props.id),X(()=>{const e=je.current;if(!Ne||!e)return;const n=e=>{"Escape"===e.key&&ye()};return e.addEventListener("keydown",n),()=>e.removeEventListener("keydown",n)},[Ne]),x(null!==Ne,()=>ye()),X(()=>{ae&&ke.current!==ae&&(ke.current=ae,ue?te(pe??d):ne||_.select({index:0}))},[ae,ne,_,ue]);const Se=Y(e=>te(n=>j(n,e)?n:e),[]),Ce=f({kind:re.kind,mode:re,open:Se,show:e=>te(e),reveal:()=>{},select:(e,n)=>{te(e=>j(e,n)?e:n),_.select(e)}}),{selectNode:Oe}=c({mode:re,setMode:te,onOpenPart:o}),Pe=N(),{labelAtLevel:Re,Icon:xe}=Pe,{canAddTo:Ae}=y(),Le=e=>oe.components[e]?.label??e,Be=e=>Re(e,"section",Le(e)),Me=!ue&&"puck"===re.kind&&ne?.props.id===ae,ve=de?Ae(de.type)?.spec??null:null,Ee=de&&ve?`${de.props.id}:${ve.slot}`:null,Te=de&&ve&&Array.isArray(de.props[ve.slot])?de.props[ve.slot]:[],We=e=>n(e,Le,Pe.plainText),ge=(e,n)=>{de&&ve&&Ee&&(te(d),ve.slider?(r(String(de.props.id),e),_.select({index:e,zone:Ee}),o(String(de.props.id))):(_.select({index:e,zone:Ee}),o(n)))},ze=()=>{if(!de||!ve||!Ee)return;const e=Te.length;_.insertComponent(Ee,ve.childType,e),te(d),ve.slider?requestAnimationFrame(()=>{r(String(de.props.id),e),_.select({index:e,zone:Ee})}):_.select({index:e,zone:Ee})},Qe=e=>C(oe,e),De=e=>{const{parentId:n,slot:o}=H(e),r=e=>{if(!e)return null;if(String(e.props.id)===n)return e;for(const n of Qe(e.type)){const o=Array.isArray(e.props[n])?e.props[n]:[];for(const e of o){const n=r(e);if(n)return n}}return null},t=r(de)?.props[o];return Array.isArray(t)?t.length:0},He=(e,n,o)=>{const r=Math.min(Math.max(o,0),De(e)),t=n<r?r-1:r;t!==n&&(_.reorderComponent(e,n,t),te(d),_.select({index:t,zone:e}))},be=z({keyOf:e=>e.id,readOnly:Boolean(U),canDrop:(e,n)=>D(n)===e.zone&&n.index>=0&&n.index<=De(e.zone),onDrop:(e,n)=>He(e.zone,e.index,n.index),onStep:(e,n)=>He(e.zone,e.index,n<0?e.index-1:e.index+2)}),Je=(e,n)=>/* @__PURE__ */V(E,{...U?{}:be.seam({place:{...H(e),index:n}})},`seam:${e}:${n}`),Xe=e=>Pe.blockRowName(e,Le),Ye=(e,n,r)=>{te(d),_.select({index:n,zone:e}),o(r)},we=(e,n,o)=>{_.insertComponent(e,n,o),te(d),_.select({index:o,zone:e})},Fe=(n,o,r)=>/* @__PURE__ */V(e,{choices:r,onPick:e=>we(n,e,o)}),Ge=(e,n)=>{const o=Qe((r=e).type).flatMap(e=>(Array.isArray(r.props[e])?r.props[e]:[]).map((n,o)=>({child:n,zone:`${r.props.id}:${e}`,index:o})));var r;const t=Ae(e.type),s=t?.choices??null,i="footer"===t?.source?Xe:We;/* @__PURE__ */
2
+ return G(Z,{children:[o.map(({child:e,zone:o,index:r})=>{const t=ne?.props.id===e.props.id,s=S(oe,e.type,n),c=i(e),p=String(e.props.id),l=()=>Ye(o,r,p),{rowProps:m,...a}=be.row({item:{id:p,zone:o,index:r},place:{...H(o),index:r}},{onClick:$(l)});/* @__PURE__ */
3
+ return G(w,{children:[0===r&&Je(o,0),
4
+ /* @__PURE__ */V(M,{icon:/* @__PURE__ */V(xe,{type:e.type,size:13}),name:c,selected:t,onSelect:l,...a,actions:/* @__PURE__ */V(v,{kind:"delete",label:`Delete ${c}`,onClick:()=>{return e=o,n=r,_.removeComponent(e,n),te(d),void _.select(null);var e,n},children:/* @__PURE__ */V(Q,{size:13})}),rowProps:m}),s&&/* @__PURE__ */V(B,{children:Ge(e,n+1)}),Je(o,r+1)]},String(e.props.id??`${o}-${r}`))}),t&&s?Fe(`${e.props.id}:${t.slot}`,o.length,s):null]})},Ve="HeroSingle"===de?.type,Ze=Boolean(de)&&(Boolean(ve)||he||ue||Ve);/* @__PURE__ */
5
+ return G("div",{ref:je,className:"sf-editor es-editor",style:g(i),children:[
6
+ /* @__PURE__ */V("div",{className:"sf-section-bar",children:/* @__PURE__ */V(W,null!==q?{tone:"off",label:q,role:"status"}:{...T(I),role:"status"})}),
7
+ /* @__PURE__ */G("div",{className:"sf-body",children:[Ne&&fe?/* @__PURE__ */V("aside",{className:"es-sidepanel es-sidepanel--left sf-panel sf-panel--left",children:/* @__PURE__ */V(m,{panel:fe,pick:Ne})}):Ze&&de&&/* @__PURE__ */G("aside",{className:"es-sidepanel es-sidepanel--left sf-panel sf-panel--left",children:[
8
+ /* @__PURE__ */V("div",{className:"sf-panel-head",children:/* @__PURE__ */V(F,{content:ue?"Header settings":`${Be(de.type)} settings`,side:"bottom",children:/* @__PURE__ */V("button",{type:"button",className:"sf-panel-title sf-panel-title--btn "+(Me?"is-selected":""),"aria-pressed":Me,onClick:()=>{ue?te(pe??d):(te(d),_.select({index:0}))},children:Be(de.type)})})}),
9
+ /* @__PURE__ */V(L,{className:"sf-tree sf-scroll",rootProps:be.rootProps(),children:/* @__PURE__ */V(B,{children:ue?
10
+ /* @__PURE__ */V(M,{icon:/* @__PURE__ */V(xe,{type:"header",size:13}),name:"Header settings",selected:re.kind===pe?.kind,onSelect:()=>te(pe??d),rowProps:{onClick:$(()=>te(pe??d))}}):ve?/* @__PURE__ */G(Z,{children:[Te.map((e,n)=>{const o=ne?.props.id===e.props.id,r=We(e),t=String(e.props.id),s=()=>ge(n,t),{rowProps:i,...c}=be.row({item:{id:t,zone:Ee,index:n},place:{...H(Ee),index:n}},{onClick:$(s)});/* @__PURE__ */
11
+ return G(w,{children:[0===n&&Je(Ee,0),
12
+ /* @__PURE__ */V(M,{icon:/* @__PURE__ */V(xe,{type:e.type,size:13}),name:r,selected:o,onSelect:s,...c,actions:/* @__PURE__ */V(v,{kind:"delete",label:`Delete ${r}`,onClick:()=>{return e=n,void(Ee&&(_.removeComponent(Ee,e),te(d),_.select(null)));var e},children:/* @__PURE__ */V(Q,{size:13})}),rowProps:i}),Je(Ee,n+1)]},String(e.props.id??n))}),
13
+ /* @__PURE__ */G("button",{type:"button",className:"sf-add-card",onClick:ze,children:[
14
+ /* @__PURE__ */V("span",{className:"sf-plus sf-plus--sm",children:"+"}),ve.addLabel]}),ae?Ce.partRows?.(de,K):null]}):Ge(de,1)})})]}),
15
+ /* @__PURE__ */V("div",{className:"sf-center",children:/* @__PURE__ */V("div",{className:"sf-preview-host",children:/* @__PURE__ */V(le,{})})}),
16
+ /* @__PURE__ */V(s,{value:{selectChild:(e,n,o,r)=>"section"===Ae(r)?.source?ge(n,o):Ye(e,n,o),addChild:(e,n,o,r,t)=>"section"===Ae(t)?.source?ze():we(`${e}:${n}`,o,r),childRowName:We,blockRowName:Xe},children:/* @__PURE__ */V(me,{mode:re,onOpenWebsiteSettings:Ce.openSettings??(()=>{}),onSelectNode:Oe,hideNodeActions:!0})})]})]})}export{I as default};
@@ -25,7 +25,8 @@ import { ReactNode } from 'react';
25
25
  * • the chip is the glyph of what the panel shows (a rail item's own glyph on
26
26
  * the left, the selected thing's type on the right);
27
27
  * • the context line says which page, website or field the panel is about;
28
- * • actions are the panel's own tools, all 28px `InspectorIconButton`s;
28
+ * • actions are the panel's own tools, all the shell's `IconButton`s
29
+ * (UI-24, efficient-easel#199 step 4), explained by its `Tooltip`;
29
30
  * • a MODE laid over a panel (Add, choosing an image) names its way out in a
30
31
  * WORD — "Done", "Cancel" — never a glyph;
31
32
  * • the HIDE button is always last, on both panels; a hidden panel leaves a
@@ -49,7 +50,8 @@ declare function SidePanelHead({ icon, title, context, actions, side, onHide, }:
49
50
  onHide?: () => void;
50
51
  }): react.JSX.Element;
51
52
  /**
52
- * Hide a side panel — the last button of its head, after a hairline when the
53
+ * Hide a side panel — the shell's `IconButton` in its `Tooltip` (UI-24) —
54
+ * the last button of its head, after a hairline when the
53
55
  * panel has tools of its own. Exported for the right panel, whose head is
54
56
  * `InspectorHead` drawn by SectionEditor around the selected node.
55
57
  */
@@ -1 +1 @@
1
- export{PanelHideButton,PanelModeExit,PanelShowStrip,SidePanelHead as default}from"../../chunk-5ZBBXZPV.js";import"../../chunk-KQMML6JM.js";import"../../chunk-YC4TB3CJ.js";import"../../chunk-ZJEBF4NB.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-WZ7TGAAT.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-BZ5ASXOL.js";import"../../chunk-L5KW4HG5.js";
1
+ export{PanelHideButton,PanelModeExit,PanelShowStrip,SidePanelHead as default}from"../../chunk-QR4DLZ3P.js";import"../../chunk-KQMML6JM.js";import"../../chunk-TJ7YIRWQ.js";import"../../chunk-ZJEBF4NB.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-L5KW4HG5.js";
@@ -2,36 +2,20 @@ import * as react from 'react';
2
2
  import { CSSProperties } from 'react';
3
3
 
4
4
  /**
5
- * UiIcon — the single source of truth for the small line-icons that stand for an
6
- * ACTION or a STATE: show, hide, search, open elsewhere, rename, delete, unfold.
5
+ * UiIcon — the small line-icons that stand for an ACTION or a STATE: show,
6
+ * hide, search, open elsewhere, rename, delete, unfold, named by the verb.
7
7
  *
8
- * The sibling of {@link SectionIcon}, and the split between them is the question
9
- * each one answers. `SectionIcon` answers *"what kind of section is this?"* — its
10
- * 37 glyphs are keyed by Puck component type (Hero, ProductGrid, Footer…).
11
- * `UiIcon` answers *"what will this control do to it?"* — its keys are verbs, not
12
- * nouns. Neither is a place to put the other's glyphs.
13
- *
14
- * Card 66058 built it. Before it, seven of these drawings existed twice or more —
15
- * the eye in FOUR files — and one had already drifted: the magnifier was two
16
- * different pictures (`l-4.3-4.3` in the editor's two search fields,
17
- * `l-3.8-3.8` in the shopper's header and command palette). That is the failure
18
- * `doc/editor-ui.md` E2 exists to prevent, so the drawings live here now and the
19
- * call sites reference them. `scripts/test-glyph-single-home.mjs` keeps it that
20
- * way: any geometry that reappears in a second file fails `just check`.
21
- *
22
- * NOT `efficient-easel`, deliberately. That package is ours and E2 sends shared
23
- * editor chrome to it, but two of these seven are drawn on the STOREFRONT —
24
- * `Header` and `SearchDialog` — and an editor package can never be their home.
25
- * A set split across two repos by which surface happens to use it is a second
26
- * vocabulary with extra steps. `QUESTIONS-66048.md` reached the same answer from
27
- * the other direction (draw them in the shop first; move a whole coherent set
28
- * later, as one card, not one glyph at a time across two release cycles).
8
+ * ONE ICON SET (efficient-easel#199 step 4, harness UI-24). Up to 0.106.0 this
9
+ * module drew its seven glyphs itself, a second copy of drawings the
10
+ * package's one set (`efficient-easel/icons`) already held — the icons there
11
+ * were lifted from here, path for path. Now the names map onto that set and
12
+ * nothing is drawn twice; the subpath and its names stay because the
13
+ * website builder and the storefront import them.
29
14
  *
30
15
  * WRAPPER ATTRIBUTES ARE THE CALLER'S. Size, stroke weight and cap style are
31
16
  * passed in rather than fixed, because they legitimately differ — a 10px caret
32
- * in the dense page tree, an 18px magnifier in the storefront header. Only the
33
- * GEOMETRY is owned here. That is also what let this card move every glyph with
34
- * its drawn output unchanged; see `scripts/test-glyph-parity.tsx`.
17
+ * in the dense page tree, an 18px magnifier in the storefront header. The
18
+ * geometry is the icon set's, unchanged.
35
19
  */
36
20
  /** What the icon means, named by the action — never by the picture. */
37
21
  type UiIconName = "eye" | "eye-off" | "search" | "external-link" | "pencil" | "trash" | "chevron-right";
@@ -1 +1,2 @@
1
- export{UiIcon as default}from"../../chunk-5MZ3RNQQ.js";
1
+ import{ChevronIcon as e,TrashIcon as r,RenameIcon as t,ExternalIcon as o,SearchIcon as s,EyeOffIcon as i,EyeIcon as n}from"../../chunk-L5KW4HG5.js";import{jsx as a}from"react/jsx-runtime";var c={eye:n,"eye-off":i,search:s,"external-link":o,pencil:t,trash:r,"chevron-right":e};function d({name:e,size:r,strokeWidth:t=1.8,rounded:o=!1,className:s,style:i}){/* @__PURE__ */
2
+ return a(c[e],{size:r,strokeWidth:t,strokeLinecap:o?"round":void 0,strokeLinejoin:o?"round":void 0,className:s,style:i})}export{d as default};
@@ -21,6 +21,20 @@ import 'react';
21
21
  */
22
22
 
23
23
  declare const PANEL_WIDTHS_KEY = "sf-editor-panel-widths";
24
+ /** …and the key the Layers tree's folds are kept under, beside them. */
25
+ declare const COLLAPSED_SECTIONS_KEY = "sf-editor-collapsed-sections";
26
+ /**
27
+ * THE KEYS ONE MOUNT KEEPS A PERSON'S WIDTHS AND FOLDS UNDER (0.106.0, parity
28
+ * item #21): the website's two above, or — where the layer names a namespace
29
+ * of its own (`ScreenParts.storageNamespace`) — `<namespace>-panel-widths` and
30
+ * `<namespace>-collapsed-sections`. The campaign designer and the website
31
+ * editor, open in one browser, each keep their own; a website, which names
32
+ * none, reads what it always kept, so nobody's layout resets.
33
+ */
34
+ declare function screenStorageKeys(namespace?: string): {
35
+ panelWidths: string;
36
+ collapsed: string;
37
+ };
24
38
  declare const DEFAULT_PANEL_W: {
25
39
  readonly left: 288;
26
40
  readonly right: 320;
@@ -34,4 +48,4 @@ type PanelWidths = {
34
48
  /** Clamp a width into the panels' resizable band and round to a whole pixel. */
35
49
  declare const clampPanelWidth: (w: number) => number;
36
50
 
37
- export { DEFAULT_PANEL_W, PANEL_WIDTHS_KEY, type PanelSide, type PanelWidths, clampPanelWidth };
51
+ export { COLLAPSED_SECTIONS_KEY, DEFAULT_PANEL_W, PANEL_WIDTHS_KEY, type PanelSide, type PanelWidths, clampPanelWidth, screenStorageKeys };
@@ -1 +1 @@
1
- export{DEFAULT_PANEL_W,PANEL_WIDTHS_KEY,clampPanelWidth}from"../../chunk-ZTTWFAAC.js";export{MAX_PANEL_W,MIN_PANEL_W,panelWidthVars}from"../../chunk-YC4TB3CJ.js";import"../../chunk-ZJEBF4NB.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-WZ7TGAAT.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-BZ5ASXOL.js";import"../../chunk-L5KW4HG5.js";
1
+ export{COLLAPSED_SECTIONS_KEY,DEFAULT_PANEL_W,PANEL_WIDTHS_KEY,clampPanelWidth,screenStorageKeys}from"../../chunk-ORR3Q4WV.js";export{MAX_PANEL_W,MIN_PANEL_W,panelWidthVars}from"../../chunk-TJ7YIRWQ.js";import"../../chunk-ZJEBF4NB.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-L5KW4HG5.js";
@@ -7,30 +7,30 @@ import '../../types-41704JE4.js';
7
7
  import '../../resolve-D68pb3Bx.js';
8
8
  import '../../plan-DChbUXdS.js';
9
9
  import '../../watch-BTYOJpQU.js';
10
- import '../../types-CqY85foL.js';
11
- import '../../types-DWS-s9z-.js';
12
- import '../../wordFit-D4S36PvB.js';
10
+ import '../../types-Dt1CFR1S.js';
11
+ import '../../types-CsgMwHHa.js';
12
+ import '../../wordFit-7XpmhcaW.js';
13
13
  import '../../edit-lock/index.js';
14
14
  import '../../panelWidths-D9hTLR25.js';
15
15
  import '../../CanvasDragLayer-zgYT1xwY.js';
16
16
  import '../../session-DSQFmIvx.js';
17
17
  import '../../words-BDignMl_.js';
18
- import '../../types-Djdq6Xkd.js';
18
+ import '../../types-BsyPh6EW.js';
19
19
  import '../../style-clipboard/index.js';
20
20
  import '../../words-CnnHb9jo.js';
21
- import '../../types-DJDBtdB2.js';
22
- import '../../words-DgHcY5qB.js';
21
+ import '../../types-BqGnUVX5.js';
22
+ import '../../words-Cl9xMUYY.js';
23
23
  import './AddSidePanel.js';
24
24
  import '../lib/section-template-types.js';
25
25
  import '../lib/puck/content-tree.js';
26
26
  import '../lib/puck/block-choice.js';
27
- import '../../host-BQ_b9Qzk.js';
27
+ import '../../host-CiuzZJXj.js';
28
28
  import '../lib/document-contract.js';
29
29
  import '../lib/session.js';
30
30
  import '../lib/backend-error.js';
31
31
  import '../lib/host-chrome.js';
32
32
  import '../lib/links/link-filters.js';
33
- import '../../LinkPicker-W2Rtxetz.js';
33
+ import '../../LinkPicker-hPEr1MJx.js';
34
34
  import '../lib/document-hooks.js';
35
35
  import '../lib/document-switch.js';
36
36
  import '../../engine-DBxp_v6B.js';
@@ -1 +1 @@
1
- export{usePartBridge}from"../../chunk-FMGFZNPW.js";import"../../chunk-NWIW7AWH.js";import"../../chunk-IYT6NN2J.js";import"../../chunk-I54UCYOU.js";import"../../chunk-GOTN2KY4.js";import"../../chunk-R5L2E7JX.js";import"../../chunk-VSHV6KJQ.js";import"../../chunk-PLVEGYK6.js";import"../../chunk-R6WTQWAC.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-P67FP7PG.js";import"../../chunk-AELNNAFM.js";import"../../chunk-BXZ6WLHC.js";import"../../chunk-EOJNJCMJ.js";import"../../chunk-ZFDCDJNZ.js";import"../../chunk-ZNS7727Y.js";import"../../chunk-3EDSDPIP.js";import"../../chunk-QTLAVDJE.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-KTVH2ZRL.js";import"../../chunk-D2BCHTQR.js";import"../../chunk-EWVJSRRY.js";import"../../chunk-P6O363EE.js";import"../../chunk-FPOKPNO4.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-BZ5ASXOL.js";import"../../chunk-67GNT6PF.js";import"../../chunk-ZNCEOSXO.js";import"../../chunk-L5KW4HG5.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
1
+ export{usePartBridge}from"../../chunk-DJMMTWFP.js";import"../../chunk-QMNML7XH.js";import"../../chunk-IYT6NN2J.js";import"../../chunk-I54UCYOU.js";import"../../chunk-GOTN2KY4.js";import"../../chunk-R5L2E7JX.js";import"../../chunk-OJAJVH7S.js";import"../../chunk-PLVEGYK6.js";import"../../chunk-R6WTQWAC.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-PYCLHOSA.js";import"../../chunk-AELNNAFM.js";import"../../chunk-JMGPPXNQ.js";import"../../chunk-NLRW4BGG.js";import"../../chunk-XWR5YVA7.js";import"../../chunk-Q27BB5ZC.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-QTLAVDJE.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-EA2HTX37.js";import"../../chunk-D2BCHTQR.js";import"../../chunk-7SQF6LZL.js";import"../../chunk-QLD57GBB.js";import"../../chunk-FPOKPNO4.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-67GNT6PF.js";import"../../chunk-ZNCEOSXO.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-L5KW4HG5.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
@@ -1,9 +1,9 @@
1
1
  export { DocumentScreen, default as ScreenMount } from './components/ScreenMount.js';
2
2
  export { default as ScreenStoreProvider } from './components/ScreenStoreProvider.js';
3
- export { NodeDefaults, SELECTION_MODE, ScreenAdd, ScreenBlockLook, ScreenBlockRules, ScreenBridges, ScreenCanvas, ScreenCanvasDrag, ScreenCanvasDragContext, ScreenCanvasHeadProps, ScreenCanvasTargetProvider, ScreenDevices, ScreenDocumentOps, ScreenDragItem, ScreenInspector, ScreenInspectorMode, ScreenInspectorPanelProps, ScreenLeftPanel, ScreenLeftView, ScreenLeftViewFrame, ScreenLeftViewRules, ScreenMenuRows, ScreenNewNode, ScreenNode, ScreenNodeActions, ScreenNodeLevel, ScreenNodeMaker, ScreenPartMode, ScreenParts, ScreenPartsProvider, ScreenPinnedBand, ScreenPinnedNodes, ScreenRailItem, ScreenSelection, ScreenSelector, ScreenSlot, ScreenSlotAction, ScreenSlotMode, ScreenStyleClipboard, ScreenStyleDocument, ScreenStylePastePlan, ScreenTree, ScreenTreeFolds, ScreenTreeRows, isPinnedFirst, isPinnedLast, isSlotMode, sameInspectorMode, screenSlotsOf, useScreenAdd, useScreenBlockLook, useScreenBlockRules, useScreenBridges, useScreenCanvasDrag, useScreenCanvasFrame, useScreenCanvasHead, useScreenCanvasTarget, useScreenDevices, useScreenDocumentLabel, useScreenDocumentPass, useScreenInspectorPanel, useScreenLeftView, useScreenNodeKeys, useScreenNotify, useScreenOwnerName, useScreenParts, useScreenPickFollowsSelection, useScreenPinned, useScreenSaveSwitch, useScreenStyleClipboard, useStandaloneScreenBridges } from './lib/screen-parts.js';
3
+ export { NodeDefaults, SELECTION_MODE, ScreenAdd, ScreenBlockLook, ScreenBlockRules, ScreenBridges, ScreenCanvas, ScreenCanvasDrag, ScreenCanvasDragContext, ScreenCanvasHeadProps, ScreenCanvasTargetProvider, ScreenDevices, ScreenDocumentOps, ScreenDragItem, ScreenInspector, ScreenInspectorMode, ScreenInspectorPanelProps, ScreenLeftPanel, ScreenLeftView, ScreenLeftViewFrame, ScreenLeftViewRules, ScreenMenuRows, ScreenNewNode, ScreenNode, ScreenNodeActions, ScreenNodeLevel, ScreenNodeMaker, ScreenPartMode, ScreenParts, ScreenPartsProvider, ScreenPinnedBand, ScreenPinnedNodes, ScreenRailItem, ScreenSelection, ScreenSelector, ScreenSlot, ScreenSlotAction, ScreenSlotMode, ScreenStyleClipboard, ScreenStyleDocument, ScreenStylePastePlan, ScreenTree, ScreenTreeFolds, ScreenTreeRows, isPinnedFirst, isPinnedLast, isSlotMode, sameInspectorMode, screenSlotsOf, useScreenAdd, useScreenBlockLook, useScreenBlockRules, useScreenBridges, useScreenCanvasDrag, useScreenCanvasFrame, useScreenCanvasHead, useScreenCanvasTarget, useScreenDevices, useScreenDocumentLabel, useScreenDocumentPass, useScreenInspectorPanel, useScreenLeftView, useScreenNodeKeys, useScreenNotify, useScreenOwnerName, useScreenParts, useScreenPickFollowsSelection, useScreenPinned, useScreenSaveSwitch, useScreenStorageNamespace, useScreenStyleClipboard, useStandaloneScreenBridges } from './lib/screen-parts.js';
4
4
  export { DefaultBackend, EFFICIENT_BACKEND, EaselSession, SessionBackend, SessionBlocks, activateEaselSession, backendOf, createEaselSession, currentEaselSession, deactivateEaselSession, efficientClientOpen, isEfficientBackend, provideDefaultBackend, resetAmbientEaselSession, sessionRegistry, setSessionBridgedSite, setSessionDocumentSite } from './lib/session.js';
5
5
  export { EaselSessionProvider, useEaselSession } from './lib/session-context.js';
6
- export { A as AnyDocumentAddressing, D as DETACHED_EASEL_HOST, a as DocumentAddressing, E as EaselHost, b as EaselHostAddress, c as EaselHostContext, d as EaselHostProvider, e as EaselMessageType, f as EaselToHostMessage, H as HostPickedMedia, g as HostToEaselMessage, I as InboundHostMessage, N as NO_DOCUMENT_ADDRESSING, S as SectionScreenTarget, h as SendToHost, i as createEaselHost, u as useEaselHost, j as useHostEscape } from '../host-BQ_b9Qzk.js';
6
+ export { A as AnyDocumentAddressing, D as DETACHED_EASEL_HOST, a as DocumentAddressing, E as EaselHost, b as EaselHostAddress, c as EaselHostContext, d as EaselHostProvider, e as EaselMessageType, f as EaselToHostMessage, H as HostPickedMedia, g as HostToEaselMessage, I as InboundHostMessage, N as NO_DOCUMENT_ADDRESSING, S as SectionScreenTarget, h as SendToHost, i as createEaselHost, u as useEaselHost, j as useHostEscape } from '../host-CiuzZJXj.js';
7
7
  export { EaselCapabilities, EaselDocument, EaselDocumentAdapter, EaselPageRow, SiteRecord, SiteRecordPatch, WebsiteEditLock } from './lib/document-contract.js';
8
8
  import 'react';
9
9
  import '../blocks/index.js';
@@ -13,26 +13,26 @@ import '../types-41704JE4.js';
13
13
  import '../resolve-D68pb3Bx.js';
14
14
  import '../plan-DChbUXdS.js';
15
15
  import '../watch-BTYOJpQU.js';
16
- import '../types-CqY85foL.js';
17
- import '../types-DWS-s9z-.js';
18
- import '../wordFit-D4S36PvB.js';
16
+ import '../types-Dt1CFR1S.js';
17
+ import '../types-CsgMwHHa.js';
18
+ import '../wordFit-7XpmhcaW.js';
19
19
  import '../edit-lock/index.js';
20
20
  import '../panelWidths-D9hTLR25.js';
21
21
  import '../CanvasDragLayer-zgYT1xwY.js';
22
22
  import '../session-DSQFmIvx.js';
23
23
  import '../words-BDignMl_.js';
24
- import '../types-Djdq6Xkd.js';
24
+ import '../types-BsyPh6EW.js';
25
25
  import '../style-clipboard/index.js';
26
26
  import '../words-CnnHb9jo.js';
27
- import '../types-DJDBtdB2.js';
28
- import '../words-DgHcY5qB.js';
27
+ import '../types-BqGnUVX5.js';
28
+ import '../words-Cl9xMUYY.js';
29
29
  import './components/AddSidePanel.js';
30
30
  import './lib/section-template-types.js';
31
31
  import './lib/puck/content-tree.js';
32
32
  import './lib/puck/block-choice.js';
33
33
  import './lib/host-chrome.js';
34
34
  import './lib/links/link-filters.js';
35
- import '../LinkPicker-W2Rtxetz.js';
35
+ import '../LinkPicker-hPEr1MJx.js';
36
36
  import './lib/puck/add-target-types.js';
37
37
  import './lib/puck/slot-section-spec.js';
38
38
  import './lib/backend-error.js';
@@ -1 +1 @@
1
- import"../chunk-GZO72N3Q.js";export{DocumentScreen,ScreenMount}from"../chunk-Q4N7C6CT.js";import"../chunk-GXQCZJOP.js";export{ScreenStoreProvider}from"../chunk-SARZN4M7.js";import"../chunk-HLEET6NV.js";import"../chunk-26OOWIJJ.js";import"../chunk-SQTY6CJD.js";import"../chunk-FGNR22NY.js";import"../chunk-ZE7I3PLX.js";import"../chunk-IE4GFYKO.js";import"../chunk-PWZOS45R.js";import"../chunk-7F52SZOI.js";import"../chunk-R2HLPNQF.js";import"../chunk-TBF5CVPA.js";import"../chunk-4ES5JGGX.js";import"../chunk-IQ5TA7AM.js";import"../chunk-DUVRZ456.js";import"../chunk-6W7WLPZH.js";import"../chunk-VSOP4GUM.js";import"../chunk-KCBEE2MC.js";import"../chunk-5MZ3RNQQ.js";import"../chunk-ZTTWFAAC.js";import"../chunk-FMGFZNPW.js";import"../chunk-NWIW7AWH.js";import"../chunk-IYT6NN2J.js";import"../chunk-7FBDZTUD.js";import"../chunk-V4LF7D4F.js";import"../chunk-BSPCSC45.js";import"../chunk-I54UCYOU.js";import"../chunk-GOTN2KY4.js";import"../chunk-R5L2E7JX.js";import"../chunk-7V5WZ46F.js";import"../chunk-S4AWJX4Q.js";import"../chunk-ERR437B5.js";import"../chunk-KG7RJWOK.js";import"../chunk-GMCZXMOV.js";export{NO_DOCUMENT_ADDRESSING}from"../chunk-RLBXE4EU.js";import"../chunk-HNKB2ZYR.js";import"../chunk-CLOS6SSX.js";import"../chunk-3P6AMTOS.js";import"../chunk-3WSPDAK2.js";import"../chunk-57DJOKXT.js";import"../chunk-3QVB4AG2.js";import"../chunk-N7VRF7PR.js";import"../chunk-5ZBY24K7.js";import"../chunk-PA3PNTVV.js";import"../chunk-BVN33R76.js";import"../chunk-5ZBBXZPV.js";import"../chunk-KQMML6JM.js";import"../chunk-KCOBHPN6.js";export{EaselSessionProvider,useEaselSession}from"../chunk-O7Q4DDJT.js";export{EFFICIENT_BACKEND,activateEaselSession,backendOf,createEaselSession,currentEaselSession,deactivateEaselSession,efficientClientOpen,isEfficientBackend,provideDefaultBackend,resetAmbientEaselSession,sessionRegistry,setSessionBridgedSite,setSessionDocumentSite}from"../chunk-RSCMJIWS.js";import"../chunk-HQ4VVRIC.js";import"../chunk-NYKIQJT2.js";export{SELECTION_MODE,ScreenCanvasTargetProvider,ScreenPartsProvider,isPinnedFirst,isPinnedLast,isSlotMode,sameInspectorMode,screenSlotsOf,useScreenAdd,useScreenBlockLook,useScreenBlockRules,useScreenBridges,useScreenCanvasDrag,useScreenCanvasFrame,useScreenCanvasHead,useScreenCanvasTarget,useScreenDevices,useScreenDocumentLabel,useScreenDocumentPass,useScreenInspectorPanel,useScreenLeftView,useScreenNodeKeys,useScreenNotify,useScreenOwnerName,useScreenParts,useScreenPickFollowsSelection,useScreenPinned,useScreenSaveSwitch,useScreenStyleClipboard,useStandaloneScreenBridges}from"../chunk-VSHV6KJQ.js";import"../chunk-PLVEGYK6.js";import"../chunk-R6WTQWAC.js";export{DETACHED_EASEL_HOST,EaselHostContext,EaselHostProvider,createEaselHost,useEaselHost,useHostEscape}from"../chunk-U3JP4VGF.js";import"../chunk-6WY6ZXJG.js";import"../chunk-PQXIFBDY.js";import"../chunk-P67FP7PG.js";import"../chunk-AELNNAFM.js";import"../chunk-BXZ6WLHC.js";import"../chunk-EOJNJCMJ.js";import"../chunk-ZFDCDJNZ.js";import"../chunk-ZNS7727Y.js";import"../chunk-3EDSDPIP.js";import"../chunk-QTLAVDJE.js";import"../chunk-YRLPFZW3.js";import"../chunk-RW4XBUUW.js";import"../chunk-KTVH2ZRL.js";import"../chunk-2LK54I4E.js";import"../chunk-WK3AFPXY.js";import"../chunk-D2BCHTQR.js";import"../chunk-OWBO4WKA.js";import"../chunk-BDTITTMW.js";import"../chunk-H6DDIBQ4.js";import"../chunk-YC4TB3CJ.js";import"../chunk-ZJEBF4NB.js";import"../chunk-THWO5YVZ.js";import"../chunk-RE4LP46F.js";import"../chunk-WZ7TGAAT.js";import"../chunk-2OAZYSWJ.js";import"../chunk-EWVJSRRY.js";import"../chunk-P6O363EE.js";import"../chunk-FPOKPNO4.js";import"../chunk-MFIRYGHW.js";import"../chunk-BZ5ASXOL.js";import"../chunk-TTJ54QGG.js";import"../chunk-O2NLQBFX.js";import"../chunk-67GNT6PF.js";import"../chunk-PAELDYYS.js";import"../chunk-ZNCEOSXO.js";import"../chunk-L5KW4HG5.js";import"../chunk-KRXQM65X.js";import"../chunk-NKB3KVAB.js";
1
+ import"../chunk-GZO72N3Q.js";export{DocumentScreen,ScreenMount}from"../chunk-YABL4EWX.js";import"../chunk-GXQCZJOP.js";export{ScreenStoreProvider}from"../chunk-FEK3S6HN.js";import"../chunk-4GNPKHV4.js";import"../chunk-26OOWIJJ.js";import"../chunk-SQTY6CJD.js";import"../chunk-FGNR22NY.js";import"../chunk-ZE7I3PLX.js";import"../chunk-2GVCAIPX.js";import"../chunk-PWZOS45R.js";import"../chunk-7F52SZOI.js";import"../chunk-R2HLPNQF.js";import"../chunk-TBF5CVPA.js";import"../chunk-4ES5JGGX.js";import"../chunk-IQ5TA7AM.js";import"../chunk-DUVRZ456.js";import"../chunk-6W7WLPZH.js";import"../chunk-PT6V53OO.js";import"../chunk-KCBEE2MC.js";import"../chunk-ORR3Q4WV.js";import"../chunk-DJMMTWFP.js";import"../chunk-QMNML7XH.js";import"../chunk-IYT6NN2J.js";import"../chunk-JLTZQ4US.js";import"../chunk-MAEXP3KE.js";import"../chunk-BSPCSC45.js";import"../chunk-I54UCYOU.js";import"../chunk-GOTN2KY4.js";import"../chunk-R5L2E7JX.js";import"../chunk-ONRYLR2D.js";import"../chunk-S4AWJX4Q.js";import"../chunk-ERR437B5.js";import"../chunk-KG7RJWOK.js";import"../chunk-GMCZXMOV.js";export{NO_DOCUMENT_ADDRESSING}from"../chunk-RLBXE4EU.js";import"../chunk-HNKB2ZYR.js";import"../chunk-CLOS6SSX.js";import"../chunk-VPFNZ7TB.js";import"../chunk-LOMEH6DG.js";import"../chunk-57DJOKXT.js";import"../chunk-5545A3PC.js";import"../chunk-OTEXGJDU.js";import"../chunk-5ZBY24K7.js";import"../chunk-PA3PNTVV.js";import"../chunk-BVN33R76.js";import"../chunk-QR4DLZ3P.js";import"../chunk-KQMML6JM.js";import"../chunk-KCOBHPN6.js";export{EaselSessionProvider,useEaselSession}from"../chunk-O7Q4DDJT.js";export{EFFICIENT_BACKEND,activateEaselSession,backendOf,createEaselSession,currentEaselSession,deactivateEaselSession,efficientClientOpen,isEfficientBackend,provideDefaultBackend,resetAmbientEaselSession,sessionRegistry,setSessionBridgedSite,setSessionDocumentSite}from"../chunk-RSCMJIWS.js";import"../chunk-HQ4VVRIC.js";import"../chunk-CKEPQNSQ.js";export{SELECTION_MODE,ScreenCanvasTargetProvider,ScreenPartsProvider,isPinnedFirst,isPinnedLast,isSlotMode,sameInspectorMode,screenSlotsOf,useScreenAdd,useScreenBlockLook,useScreenBlockRules,useScreenBridges,useScreenCanvasDrag,useScreenCanvasFrame,useScreenCanvasHead,useScreenCanvasTarget,useScreenDevices,useScreenDocumentLabel,useScreenDocumentPass,useScreenInspectorPanel,useScreenLeftView,useScreenNodeKeys,useScreenNotify,useScreenOwnerName,useScreenParts,useScreenPickFollowsSelection,useScreenPinned,useScreenSaveSwitch,useScreenStorageNamespace,useScreenStyleClipboard,useStandaloneScreenBridges}from"../chunk-OJAJVH7S.js";import"../chunk-PLVEGYK6.js";import"../chunk-R6WTQWAC.js";export{DETACHED_EASEL_HOST,EaselHostContext,EaselHostProvider,createEaselHost,useEaselHost,useHostEscape}from"../chunk-U3JP4VGF.js";import"../chunk-6WY6ZXJG.js";import"../chunk-E2O2MRZR.js";import"../chunk-PYCLHOSA.js";import"../chunk-AELNNAFM.js";import"../chunk-JMGPPXNQ.js";import"../chunk-NLRW4BGG.js";import"../chunk-XWR5YVA7.js";import"../chunk-Q27BB5ZC.js";import"../chunk-K56YDHYQ.js";import"../chunk-QTLAVDJE.js";import"../chunk-YRLPFZW3.js";import"../chunk-BXMXTO36.js";import"../chunk-EA2HTX37.js";import"../chunk-2LK54I4E.js";import"../chunk-WK3AFPXY.js";import"../chunk-D2BCHTQR.js";import"../chunk-X6DQWK2C.js";import"../chunk-BDTITTMW.js";import"../chunk-H6DDIBQ4.js";import"../chunk-TJ7YIRWQ.js";import"../chunk-ZJEBF4NB.js";import"../chunk-THWO5YVZ.js";import"../chunk-RE4LP46F.js";import"../chunk-MJM6SFD3.js";import"../chunk-2OAZYSWJ.js";import"../chunk-7SQF6LZL.js";import"../chunk-QLD57GBB.js";import"../chunk-FPOKPNO4.js";import"../chunk-MFIRYGHW.js";import"../chunk-W3XX2CNW.js";import"../chunk-O2NLQBFX.js";import"../chunk-67GNT6PF.js";import"../chunk-PAELDYYS.js";import"../chunk-ZNCEOSXO.js";import"../chunk-P2VEMZH5.js";import"../chunk-L5KW4HG5.js";import"../chunk-KRXQM65X.js";import"../chunk-NKB3KVAB.js";
@@ -10,7 +10,7 @@ import './backend-error.js';
10
10
  import '../../edit-lock/index.js';
11
11
  import './host-chrome.js';
12
12
  import './links/link-filters.js';
13
- import '../../LinkPicker-W2Rtxetz.js';
13
+ import '../../LinkPicker-hPEr1MJx.js';
14
14
  import './document-contract.js';
15
15
  import './document-hooks.js';
16
16
  import './section-template-types.js';
@@ -1 +1 @@
1
- export{NO_BRIDGED_CAPABILITIES,applyAuthGrant,useAdminBridge}from"../../chunk-3P6AMTOS.js";import"../../chunk-3WSPDAK2.js";import"../../chunk-O7Q4DDJT.js";import"../../chunk-RSCMJIWS.js";import"../../chunk-U3JP4VGF.js";
1
+ export{NO_BRIDGED_CAPABILITIES,applyAuthGrant,useAdminBridge}from"../../chunk-VPFNZ7TB.js";import"../../chunk-LOMEH6DG.js";import"../../chunk-O7Q4DDJT.js";import"../../chunk-RSCMJIWS.js";import"../../chunk-U3JP4VGF.js";
@@ -1,20 +1,28 @@
1
1
  /**
2
- * Editor chrome theme bridge — the embedded editor is deliberately LIGHT-ONLY.
2
+ * Editor chrome theme bridge — the editor follows the shell's theme (UI-24).
3
3
  *
4
4
  * The admin portal bridges its resolved efficient-shell theme in the
5
- * `storefront-editor:auth` message (see efficient-admin-portal's
6
- * PageBlockEditor). Every editor entry point — the page/template editor AND the
7
- * standalone section editor — still hands that value here so the call site stays
8
- * uniform, but the editor no longer mirrors the admin's dark palette: per owner
9
- * directive the storefront editor renders in the light base regardless of the
10
- * bridged theme. This function stamps `data-editor-theme="light"` unconditionally;
11
- * the CSS (components/storefront-editor.css) carries only the light `--sf-*` base,
12
- * so the editor chrome is always light.
5
+ * `storefront-editor:auth` message (efficient-admin-portal's PageBlockEditor:
6
+ * `'dark'` or `'light'`, re-sent on change). Where the editor owns its document
7
+ * (the website editor in its own iframe), this stamps that theme where the
8
+ * shell itself puts it — `data-theme` on `<html>`, as `useTheme()` does — so
9
+ * the shell's CSS, and through it every `--es-*` token, swaps the chrome's
10
+ * ramp. Inside another app's page the caller does not call this at all
11
+ * (`stampChromeTheme: false`): that `<html>` is the app's, and its shell has
12
+ * already stamped it.
13
+ *
14
+ * Up to 0.106.0 this stamped `data-editor-theme="light"` unconditionally and
15
+ * ignored the bridged value: the editor was pinned light by owner directive.
16
+ * Harness UI-24 (efficient-harness#117, 2026-10-10) reverses that — an editor
17
+ * does not pin itself light. The old attribute is removed when it is found.
18
+ *
19
+ * The CANVAS is not touched: the preview iframe is its own document, and the
20
+ * website's own light/dark is decided there by the host (output, not chrome).
13
21
  */
14
22
  /**
15
- * Reflect the (light-only) editor chrome theme onto the editor document.
16
- * The bridged admin theme is intentionally ignored — the editor is always light.
17
- * No-op server-side.
23
+ * Reflect the bridged shell theme onto the editor document's `<html>`.
24
+ * A missing or empty theme leaves the document as it is (the host's shell
25
+ * decides). No-op server-side.
18
26
  */
19
27
  declare function applyEaselChromeTheme(theme: string | null | undefined): void;
20
28
 
@@ -1 +1 @@
1
- export{applyEaselChromeTheme}from"../../chunk-3WSPDAK2.js";
1
+ export{applyEaselChromeTheme}from"../../chunk-LOMEH6DG.js";
@@ -1,4 +1,4 @@
1
- export { A as AnyDocumentAddressing, a as DocumentAddressing, N as NO_DOCUMENT_ADDRESSING } from '../../host-BQ_b9Qzk.js';
1
+ export { A as AnyDocumentAddressing, a as DocumentAddressing, N as NO_DOCUMENT_ADDRESSING } from '../../host-CiuzZJXj.js';
2
2
  import './document-contract.js';
3
3
  import './session.js';
4
4
  import 'react';
@@ -15,7 +15,7 @@ import './admin-bridge.js';
15
15
  import './backend-error.js';
16
16
  import './host-chrome.js';
17
17
  import './links/link-filters.js';
18
- import '../../LinkPicker-W2Rtxetz.js';
18
+ import '../../LinkPicker-hPEr1MJx.js';
19
19
  import './document-hooks.js';
20
20
  import './section-template-types.js';
21
21
  import './puck/content-tree.js';
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { ComponentType, ReactNode, RefObject } from 'react';
3
3
  import { LinkPickerPage, LinkFilters } from './links/link-filters.js';
4
- import '../../LinkPicker-W2Rtxetz.js';
4
+ import '../../LinkPicker-hPEr1MJx.js';
5
5
 
6
6
  /**
7
7
  * WHAT A HOST STANDS ROUND THE EDITOR — its own furniture, handed over as
@@ -1,5 +1,5 @@
1
1
  import 'react';
2
- export { D as DETACHED_EASEL_HOST, E as EaselHost, b as EaselHostAddress, c as EaselHostContext, d as EaselHostProvider, e as EaselMessageType, f as EaselToHostMessage, H as HostPickedMedia, g as HostToEaselMessage, I as InboundHostMessage, S as SectionScreenTarget, h as SendToHost, i as createEaselHost, u as useEaselHost, j as useHostEscape } from '../../host-BQ_b9Qzk.js';
2
+ export { D as DETACHED_EASEL_HOST, E as EaselHost, b as EaselHostAddress, c as EaselHostContext, d as EaselHostProvider, e as EaselMessageType, f as EaselToHostMessage, H as HostPickedMedia, g as HostToEaselMessage, I as InboundHostMessage, S as SectionScreenTarget, h as SendToHost, i as createEaselHost, u as useEaselHost, j as useHostEscape } from '../../host-CiuzZJXj.js';
3
3
  import '../../blocks/index.js';
4
4
  import '../../types-E3HrTPg2.js';
5
5
  import '../../data/index.js';
@@ -12,7 +12,7 @@ import './backend-error.js';
12
12
  import '../../edit-lock/index.js';
13
13
  import './host-chrome.js';
14
14
  import './links/link-filters.js';
15
- import '../../LinkPicker-W2Rtxetz.js';
15
+ import '../../LinkPicker-hPEr1MJx.js';
16
16
  import './document-hooks.js';
17
17
  import './section-template-types.js';
18
18
  import './puck/content-tree.js';
@@ -1,4 +1,5 @@
1
1
  import { RefObject } from 'react';
2
+ import { C as CanvasTarget } from '../../watch-BTYOJpQU.js';
2
3
 
3
4
  /**
4
5
  * Where the editor listens for its page-wide shortcuts — undo / redo, copy and
@@ -17,7 +18,35 @@ declare function useEaselKeyTarget(rootRef: RefObject<HTMLElement | null>): Even
17
18
  * Undo / redo on the editor's own root when the editor does not own the page —
18
19
  * the engine's `EaselProvider` binds them to `document`, and is told not to
19
20
  * (`hotkeys={host.ownsDocument}` in ScreenStoreProvider) in exactly this case.
21
+ *
22
+ * …and in the CANVAS FRAME (`canvas`, the frame the screen found, 0.106.0): a
23
+ * key pressed in the frame never leaves its document, and the canvas binds
24
+ * the frame's keys only under the provider's switch, which is off here. Until
25
+ * 0.106.0 ⌘Z on the canvas did nothing in the campaign designer, and in the
26
+ * website editor inside the admin's window. One binder for both
27
+ * (`bindUndoKeys`), never a copy of it; a layer's canvas leaves its own
28
+ * `hotkeys` out, or the frame would answer twice.
29
+ *
30
+ * Both leave a press where a person types to the field (`leaveTyping`): ⌘Z in
31
+ * a settings box or an editable region of the canvas is that field's own undo.
32
+ * And the root takes focus without a tab stop (`editorRootFocus`), so a click
33
+ * on the editor's ground — the top bar between its buttons, a panel's
34
+ * padding — leaves focus inside it, where its keys are heard, and not on the
35
+ * page's body.
36
+ */
37
+ declare function useEaselUndoKeys(rootRef: RefObject<HTMLElement | null>, canvas?: CanvasTarget | null): void;
38
+ /**
39
+ * What the editor's root carries so a click on its ground keeps focus inside
40
+ * it (0.106.0): a tab index of -1 — focusable, and never a tab stop — where
41
+ * its keys are its root's, inside another app's page; nothing where it owns
42
+ * the page and listens on `document`. A browser moves focus on a press to the
43
+ * nearest focusable thing round it, else to the body, which is outside the
44
+ * root and so out of its keys' hearing.
20
45
  */
21
- declare function useEaselUndoKeys(rootRef: RefObject<HTMLElement | null>): void;
46
+ declare function editorRootFocus(host: {
47
+ ownsDocument: boolean;
48
+ }): {
49
+ tabIndex?: number;
50
+ };
22
51
 
23
- export { useEaselKeyTarget, useEaselUndoKeys };
52
+ export { editorRootFocus, useEaselKeyTarget, useEaselUndoKeys };
@@ -1 +1 @@
1
- export{useEaselKeyTarget,useEaselUndoKeys}from"../../chunk-VSOP4GUM.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-P67FP7PG.js";import"../../chunk-AELNNAFM.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-D2BCHTQR.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-ZNCEOSXO.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
1
+ export{editorRootFocus,useEaselKeyTarget,useEaselUndoKeys}from"../../chunk-PT6V53OO.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-PYCLHOSA.js";import"../../chunk-AELNNAFM.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-D2BCHTQR.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-ZNCEOSXO.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
@@ -1,4 +1,4 @@
1
- import { L as LinkOption, a as LinkFilterField, b as LinkFilter } from '../../../LinkPicker-W2Rtxetz.js';
1
+ import { L as LinkOption, a as LinkFilterField, b as LinkFilter } from '../../../LinkPicker-hPEr1MJx.js';
2
2
  import 'react';
3
3
 
4
4
  /**
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { ComponentType, ReactNode } from 'react';
3
- import { H as HostPickedMedia, E as EaselHost } from '../../host-BQ_b9Qzk.js';
3
+ import { H as HostPickedMedia, E as EaselHost } from '../../host-CiuzZJXj.js';
4
4
  import '../../blocks/index.js';
5
5
  import '../../types-E3HrTPg2.js';
6
6
  import '../../data/index.js';
@@ -13,7 +13,7 @@ import './backend-error.js';
13
13
  import '../../edit-lock/index.js';
14
14
  import './host-chrome.js';
15
15
  import './links/link-filters.js';
16
- import '../../LinkPicker-W2Rtxetz.js';
16
+ import '../../LinkPicker-hPEr1MJx.js';
17
17
  import './document-hooks.js';
18
18
  import './section-template-types.js';
19
19
  import './puck/content-tree.js';
@@ -1,4 +1,4 @@
1
- import { E as EaselHost } from '../../host-BQ_b9Qzk.js';
1
+ import { E as EaselHost } from '../../host-CiuzZJXj.js';
2
2
  import 'react';
3
3
  import '../../blocks/index.js';
4
4
  import '../../types-E3HrTPg2.js';
@@ -12,7 +12,7 @@ import './backend-error.js';
12
12
  import '../../edit-lock/index.js';
13
13
  import './host-chrome.js';
14
14
  import './links/link-filters.js';
15
- import '../../LinkPicker-W2Rtxetz.js';
15
+ import '../../LinkPicker-hPEr1MJx.js';
16
16
  import './document-hooks.js';
17
17
  import './section-template-types.js';
18
18
  import './puck/content-tree.js';
@@ -10,7 +10,7 @@ import '../../plan-DChbUXdS.js';
10
10
  import './backend-error.js';
11
11
  import './host-chrome.js';
12
12
  import './links/link-filters.js';
13
- import '../../LinkPicker-W2Rtxetz.js';
13
+ import '../../LinkPicker-hPEr1MJx.js';
14
14
  import './document-contract.js';
15
15
  import './document-hooks.js';
16
16
  import './section-template-types.js';
@@ -14,7 +14,11 @@ declare function docToNode(data: Data): TreeItem | null;
14
14
  * inline slot child's, recursively — so inserting the same template twice never
15
15
  * lands two nodes with colliding ids (Puck keys selection/replace on id, and
16
16
  * React keys render on it).
17
+ *
18
+ * `strip` (0.106.0) sees each copied node once its children are copied, and
19
+ * answers it as the copy should hold it — the layer's `blockRules.stripCopy`,
20
+ * which takes out what only an original may hold. It keeps the fresh id.
17
21
  */
18
- declare function cloneNodeWithFreshIds(node: TreeItem): TreeItem;
22
+ declare function cloneNodeWithFreshIds(node: TreeItem, strip?: (node: TreeItem) => TreeItem): TreeItem;
19
23
 
20
24
  export { cloneNodeWithFreshIds, docToNode, nodeToDoc };
@@ -1 +1 @@
1
- export{cloneNodeWithFreshIds,docToNode,nodeToDoc}from"../../../chunk-IE4GFYKO.js";import"../../../chunk-PLVEGYK6.js";
1
+ export{cloneNodeWithFreshIds,docToNode,nodeToDoc}from"../../../chunk-2GVCAIPX.js";import"../../../chunk-PLVEGYK6.js";