efficient-easel 23.0.0 → 23.2.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 (77) hide show
  1. package/README.md +11 -1
  2. package/dist/autosave/index.d.ts +3 -3
  3. package/dist/chrome/chrome.css +16 -0
  4. package/dist/chrome/index.d.ts +9 -3
  5. package/dist/chrome/index.js +1 -1
  6. package/dist/chunk-22I55W37.js +2 -0
  7. package/dist/chunk-2FYFAAAK.js +2 -0
  8. package/dist/chunk-33P4J2SF.js +1 -0
  9. package/dist/{chunk-HLMQ34GP.js → chunk-4RRIYPAV.js} +1 -1
  10. package/dist/{chunk-PY7OOQEZ.js → chunk-55KKGABA.js} +1 -1
  11. package/dist/{chunk-SINAM2IT.js → chunk-5PXVT7JY.js} +1 -1
  12. package/dist/chunk-6QSFJCJT.js +21 -0
  13. package/dist/{chunk-FF54HWSE.js → chunk-C57RLYDQ.js} +6 -6
  14. package/dist/{chunk-GKG3M5QK.js → chunk-CMBJHSHY.js} +1 -1
  15. package/dist/chunk-DCBSRZ6Z.js +5 -0
  16. package/dist/chunk-DSKNJXB4.js +1 -0
  17. package/dist/chunk-FEF3OQRT.js +16 -0
  18. package/dist/{chunk-AT4DDMJS.js → chunk-J5OSNZPU.js} +1 -1
  19. package/dist/{chunk-YHEYJKQL.js → chunk-MYAJ7MGI.js} +1 -1
  20. package/dist/{chunk-3P735WOM.js → chunk-QWLWSIDH.js} +4 -4
  21. package/dist/{chunk-FOOK54T2.js → chunk-RMQDKVGW.js} +1 -1
  22. package/dist/{chunk-XJ23ULBP.js → chunk-VNDPFDO5.js} +1 -1
  23. package/dist/chunk-WYTPBF3Q.js +20 -0
  24. package/dist/{chunk-C56MPJBH.js → chunk-Y53EKN35.js} +1 -1
  25. package/dist/chunk-YCSZAP7T.js +1 -0
  26. package/dist/chunk-ZOPYJQFS.js +64 -0
  27. package/dist/easel/easel.css +12 -9
  28. package/dist/easel/index.js +1 -1
  29. package/dist/fields/index.d.ts +35 -1
  30. package/dist/fields/index.js +1 -1
  31. package/dist/panel/panel.css +4 -0
  32. package/dist/rowMarks-CO5TpfLY.d.ts +44 -0
  33. package/dist/screen/components/AddBlockRow.js +1 -1
  34. package/dist/screen/components/AddSidePanel.js +1 -1
  35. package/dist/screen/components/NodeContextMenu.d.ts +1 -1
  36. package/dist/screen/components/NodeContextMenu.js +1 -1
  37. package/dist/screen/components/PageEditGuardNotices.js +1 -1
  38. package/dist/screen/components/SaveControls.d.ts +1 -1
  39. package/dist/screen/components/SaveControls.js +1 -1
  40. package/dist/screen/components/ScreenChrome.js +1 -1
  41. package/dist/screen/components/ScreenMount.d.ts +1 -1
  42. package/dist/screen/components/ScreenMount.js +1 -1
  43. package/dist/screen/components/ScreenStoreProvider.d.ts +1 -1
  44. package/dist/screen/components/ScreenStoreProvider.js +1 -1
  45. package/dist/screen/components/SectionScreenShell.js +17 -17
  46. package/dist/screen/components/SidePanelHead.js +1 -1
  47. package/dist/screen/components/panel-widths.js +1 -1
  48. package/dist/screen/components/usePartBridge.d.ts +1 -1
  49. package/dist/screen/components/usePartBridge.js +1 -1
  50. package/dist/screen/index.d.ts +2 -2
  51. package/dist/screen/index.js +1 -1
  52. package/dist/screen/lib/document/device-fields.d.ts +7 -21
  53. package/dist/screen/lib/document/device-fields.js +1 -1
  54. package/dist/screen/lib/document/panel-no-control-mark.d.ts +3 -7
  55. package/dist/screen/lib/document/panel-no-control-mark.js +1 -1
  56. package/dist/screen/lib/document/style-clipboard.d.ts +1 -1
  57. package/dist/screen/lib/document/style-clipboard.js +1 -1
  58. package/dist/screen/lib/document/use-section-ops.js +1 -1
  59. package/dist/screen/lib/key-scope.js +1 -1
  60. package/dist/screen/lib/save-status.d.ts +1 -1
  61. package/dist/screen/lib/screen-parts.d.ts +23 -5
  62. package/dist/screen/lib/screen-parts.js +1 -1
  63. package/dist/strings/index.d.ts +2 -2
  64. package/dist/strings/index.js +1 -1
  65. package/dist/text-styles/index.js +21 -21
  66. package/dist/{types-B3iSHX-w.d.ts → types-SrGNzYeO.d.ts} +6 -0
  67. package/dist/{words-Cm8PMYn0.d.ts → words-BAx3u2dD.d.ts} +1 -1
  68. package/package.json +2 -2
  69. package/dist/chunk-4YUC7B7E.js +0 -2
  70. package/dist/chunk-6F5GO337.js +0 -1
  71. package/dist/chunk-G3HAKQUF.js +0 -1
  72. package/dist/chunk-GXRS52JD.js +0 -5
  73. package/dist/chunk-INRERJU4.js +0 -2
  74. package/dist/chunk-KXTXYINN.js +0 -16
  75. package/dist/chunk-MXECWHRJ.js +0 -21
  76. package/dist/chunk-VZUXOZGP.js +0 -64
  77. package/dist/chunk-ZG6PVMC3.js +0 -19
@@ -1,17 +1,17 @@
1
- import{AddBlockRow as e}from"../../chunk-HLMQ34GP.js";import{scrollPreviewToSection as n,gotoPreviewSlide as o}from"../../chunk-DDH2DYQP.js";import{useEaselUndoKeys as r}from"../../chunk-YHEYJKQL.js";import{SlotChildActionsProvider as t}from"../../chunk-KCBEE2MC.js";import{DEFAULT_PANEL_W as s}from"../../chunk-C56MPJBH.js";import{usePartBridge as i}from"../../chunk-6F5GO337.js";import{useSectionOps as c}from"../../chunk-FOOK54T2.js";import"../../chunk-RUQOIQWI.js";import{SELECTION_MODE as p,useScreenPinned as l,useScreenCanvasFrame as m,useScreenInspectorPanel as d,useScreenPickFollowsSelection as a,sameInspectorMode as u,useStandaloneScreenBridges as h,useScreenBlockLook as k,useScreenBlockRules as j,isSelectionMode as f}from"../../chunk-GXRS52JD.js";import{MediaPopup as S}from"../../chunk-2G6MAXPY.js";import{useScreenDocument as y}from"../../chunk-A6ZP5II4.js";import"../../chunk-77IWWW6X.js";import"../../chunk-ERR437B5.js";import"../../chunk-UNVKPVZW.js";import"../../chunk-GMCZXMOV.js";import"../../chunk-RLBXE4EU.js";import"../../chunk-HNKB2ZYR.js";import"../../chunk-CLOS6SSX.js";import"../../chunk-BIK3AO2V.js";import"../../chunk-LOMEH6DG.js";import"../../chunk-KCOBHPN6.js";import"../../chunk-FHCKFOCD.js";import"../../chunk-YM4UEGBV.js";import"../../chunk-SNF5764Q.js";import"../../chunk-MQA7OFRA.js";import{DEFAULT_SCREEN_WORDS as N}from"../../chunk-IYHO4XQX.js";import{slotChildRowName as A}from"../../chunk-SSRYU3YG.js";import"../../chunk-AJ2SUSET.js";import"../../chunk-ANPOR6EY.js";import"../../chunk-6UAEFOJ4.js";import"../../chunk-R4AUZVA3.js";import{slotFieldsOf as C,nestsInTree as x}from"../../chunk-TCAAOYQY.js";import{useEasel as O}from"../../chunk-KXTXYINN.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-MXECWHRJ.js";import"../../chunk-BPXEFVSQ.js";import{LayersTree as P,Subtree as Y,TreeRow as M,TreeRowAction as F,TreeSeam as R}from"../../chunk-WHS6Y55E.js";import{DEFAULT_TREE_WORDS as H}from"../../chunk-K56YDHYQ.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-AGWKB77Q.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-RPMSET77.js";import"../../chunk-FM6JO4WF.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-NDRZP6YR.js";import{DEFAULT_SAVE_WORDS as W,saveIndicator as g}from"../../chunk-H6DDIBQ4.js";import{SaveState as D,panelWidthVars as E}from"../../chunk-ZG6PVMC3.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-AJSDWWJW.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-HZSZT3BE.js";import"../../chunk-KRL3IUV3.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-JACEEVVF.js";import"../../chunk-S3DUFDQ6.js";import{useWords as I}from"../../chunk-MFIRYGHW.js";import"../../chunk-LN43DP2A.js";import"../../chunk-TQ5Y6S2X.js";import{useTreeDrag as v}from"../../chunk-6NJHYXJM.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-YU3WHLGI.js";import"../../chunk-LF3FUSCQ.js";import{zoneKey as z,parseZoneKey as b}from"../../chunk-TGZCD6IP.js";import"../../chunk-KXM6YRG2.js";import"../../chunk-467WWV4I.js";import"../../chunk-TIAWIOGD.js";import"../../chunk-MGVI67QV.js";import{useState as B,useRef as Q,useEffect as w,useCallback as V,Fragment as G}from"react";import{Tooltip as K}from"efficient-shell/ui";import{TrashIcon as J}from"efficient-shell/icons/efficient";import{jsxs as X,jsx as T,Fragment as Z}from"react/jsx-runtime";var L=e=>n=>{n.target.closest("button, input")||e()},U={rowClick:L};function $(){const{saveState:$,readOnly:q,readOnlyReason:_=null}=y(),ee=c(),{appState:ne,selectedItem:oe,config:re}=O(e=>e),[te,se]=B(p),ie=I("screen",N),ce=I("tree",H),pe=I("save",W),{first:le,last:me,panelOf:de}=l(),ae=de(le),ue=m(),he=d(),ke=ne.data.content?.[0]??null,je=ke?.props.id??null,fe=ke?.type===le,Se=ke?.type===me,ye=Q(null),Ne=Q(null);r(Ne),a(oe?.props.id),w(()=>{je&&ye.current!==je&&(ye.current=je,fe?se(ae??p):oe||ee.select({index:0}))},[je,oe,ee,fe]);const Ae=V(e=>se(n=>u(n,e)?n:e),[]),Ce=h({kind:te.kind,mode:te,open:Ae,show:e=>se(e),reveal:()=>{},select:(e,n)=>{se(e=>u(e,n)?e:n),ee.select(e)}}),{selectNode:xe}=i({mode:te,setMode:se,onOpenPart:n}),Oe=k(),{labelAtLevel:Pe,Icon:Ye}=Oe,{canAddTo:Me}=j(),Fe=e=>Pe(e,"block",re.components[e]?.label??e),Re=e=>Pe(e,"section",Fe(e)),He=!fe&&f(te)&&oe?.props.id===je,We=ke?Me(ke.type)?.spec??null:null,ge=ke&&We?`${ke.props.id}:${We.slot}`:null,De=ke&&We&&Array.isArray(ke.props[We.slot])?ke.props[We.slot]:[],Ee=e=>A(e,Fe,Oe.plainText),Ie=(e,r)=>{ke&&We&&ge&&(se(p),We.slider?(o(String(ke.props.id),e),ee.select({index:e,zone:ge}),n(String(ke.props.id))):(ee.select({index:e,zone:ge}),n(r)))},ve=()=>{if(!ke||!We||!ge)return;const e=De.length;ee.insertComponent(ge,We.childType,e),se(p),We.slider?requestAnimationFrame(()=>{o(String(ke.props.id),e),ee.select({index:e,zone:ge})}):ee.select({index:e,zone:ge})},ze=e=>C(re,e),be=e=>{const{parentId:n,slot:o}=b(e),r=e=>{if(!e)return null;if(String(e.props.id)===n)return e;for(const n of ze(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(ke)?.props[o];return Array.isArray(t)?t.length:0},Be=(e,n,o)=>{const r=Math.min(Math.max(o,0),be(e)),t=n<r?r-1:r;t!==n&&(ee.reorderComponent(e,n,t),se(p),ee.select({index:t,zone:e}))},Qe=v({keyOf:e=>e.id,readOnly:Boolean(q),canDrop:(e,n)=>z(n)===e.zone&&n.index>=0&&n.index<=be(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)}),we=(e,n)=>/* @__PURE__ */T(R,{...q?{}:Qe.seam({place:{...b(e),index:n}})},`seam:${e}:${n}`),Ve=e=>Oe.blockRowName(e,Fe),Ge=(e,o,r)=>{se(p),ee.select({index:o,zone:e}),n(r)},Ke=(e,n,o)=>{ee.insertComponent(e,n,o),se(p),ee.select({index:o,zone:e})},Je=(n,o,r)=>/* @__PURE__ */T(e,{choices:r,onPick:e=>Ke(n,e,o)}),Xe=(e,n)=>{const o=ze((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=Me(e.type),s=t?.choices??null,i="footer"===t?.source?Ve:Ee;/* @__PURE__ */
2
- return X(Z,{children:[o.map(({child:e,zone:o,index:r})=>{const t=oe?.props.id===e.props.id,s=x(re,e.type,n),c=i(e),l=String(e.props.id),m=()=>Ge(o,r,l),{rowProps:d,...a}=Qe.row({item:{id:l,zone:o,index:r},place:{...b(o),index:r}},{onClick:L(m)});/* @__PURE__ */
3
- return X(G,{children:[0===r&&we(o,0),
4
- /* @__PURE__ */T(M,{words:ce,icon:/* @__PURE__ */T(Ye,{type:e.type,size:13}),name:c,selected:t,onSelect:m,...a,actions:/* @__PURE__ */T(F,{kind:"delete",label:ie.deleteNamed({name:c}),onClick:()=>{return e=o,n=r,ee.removeComponent(e,n),se(p),void ee.select(null);var e,n},children:/* @__PURE__ */T(J,{size:13})}),rowProps:d}),s&&/* @__PURE__ */T(Y,{children:Xe(e,n+1)}),we(o,r+1)]},String(e.props.id??`${o}-${r}`))}),t&&s?Je(`${e.props.id}:${t.slot}`,o.length,s):null]})},Te="HeroSingle"===ke?.type,Ze=Boolean(ke)&&(Boolean(Me(ke.type))||ze(ke.type).length>0),Le=Boolean(ke)&&(Boolean(We)||Se||fe||Te||Ze);/* @__PURE__ */
5
- return X("div",{ref:Ne,className:"sf-editor es-editor",style:E(s),children:[
6
- /* @__PURE__ */T("div",{className:"sf-section-bar",children:/* @__PURE__ */T(D,null!==_?{tone:"off",label:_,role:"status"}:{...g($,pe),role:"status"})}),
7
- /* @__PURE__ */X("div",{className:"sf-body",children:[Le&&ke&&/* @__PURE__ */X("aside",{className:"es-sidepanel es-sidepanel--left sf-panel sf-panel--left",children:[
8
- /* @__PURE__ */T("div",{className:"sf-panel-head",children:/* @__PURE__ */T(K,{content:fe?ie.headerSettings:ie.sectionSettings({name:Re(ke.type)}),side:"bottom",children:/* @__PURE__ */T("button",{type:"button",className:"sf-panel-title sf-panel-title--btn "+(He?"is-selected":""),"aria-pressed":He,onClick:()=>{fe?se(ae??p):(se(p),ee.select({index:0}))},children:Re(ke.type)})})}),
9
- /* @__PURE__ */T(P,{className:"sf-tree sf-scroll",rootProps:Qe.rootProps(),words:ce,children:/* @__PURE__ */T(Y,{children:fe?
10
- /* @__PURE__ */T(M,{words:ce,icon:/* @__PURE__ */T(Ye,{type:"header",size:13}),name:ie.headerSettings,selected:te.kind===ae?.kind,onSelect:()=>se(ae??p),rowProps:{onClick:L(()=>se(ae??p))}}):We?/* @__PURE__ */X(Z,{children:[De.map((e,n)=>{const o=oe?.props.id===e.props.id,r=Ee(e),t=String(e.props.id),s=()=>Ie(n,t),{rowProps:i,...c}=Qe.row({item:{id:t,zone:ge,index:n},place:{...b(ge),index:n}},{onClick:L(s)});/* @__PURE__ */
11
- return X(G,{children:[0===n&&we(ge,0),
12
- /* @__PURE__ */T(M,{words:ce,icon:/* @__PURE__ */T(Ye,{type:e.type,size:13}),name:r,selected:o,onSelect:s,...c,actions:/* @__PURE__ */T(F,{kind:"delete",label:ie.deleteNamed({name:r}),onClick:()=>{return e=n,void(ge&&(ee.removeComponent(ge,e),se(p),ee.select(null)));var e},children:/* @__PURE__ */T(J,{size:13})}),rowProps:i}),we(ge,n+1)]},String(e.props.id??n))}),
13
- /* @__PURE__ */X("button",{type:"button",className:"sf-add-card",onClick:ve,children:[
14
- /* @__PURE__ */T("span",{className:"sf-plus sf-plus--sm",children:"+"}),We.addLabel]}),je?Ce.partRows?.(ke,U):null]}):Xe(ke,1)})})]}),
15
- /* @__PURE__ */T("div",{className:"sf-center",children:/* @__PURE__ */T("div",{className:"sf-preview-host",children:/* @__PURE__ */T(ue,{})})}),
16
- /* @__PURE__ */T(t,{value:{selectChild:(e,n,o,r)=>"section"===Me(r)?.source?Ie(n,o):Ge(e,n,o),addChild:(e,n,o,r,t)=>"section"===Me(t)?.source?ve():Ke(`${e}:${n}`,o,r),childRowName:Ee,blockRowName:Ve},children:/* @__PURE__ */T(he,{mode:te,onOpenWebsiteSettings:Ce.openSettings??(()=>{}),onSelectNode:xe,hideNodeActions:!0})})]}),
17
- /* @__PURE__ */T(S,{})]})}export{$ as default};
1
+ import{AddBlockRow as e}from"../../chunk-4RRIYPAV.js";import{scrollPreviewToSection as n,gotoPreviewSlide as o}from"../../chunk-DDH2DYQP.js";import{useEaselUndoKeys as r}from"../../chunk-MYAJ7MGI.js";import{SlotChildActionsProvider as t}from"../../chunk-KCBEE2MC.js";import{DEFAULT_PANEL_W as s}from"../../chunk-Y53EKN35.js";import{usePartBridge as i}from"../../chunk-33P4J2SF.js";import{useSectionOps as c}from"../../chunk-RMQDKVGW.js";import"../../chunk-RUQOIQWI.js";import{SELECTION_MODE as p,useScreenPinned as l,useScreenCanvasFrame as m,useScreenInspectorPanel as d,useScreenPickFollowsSelection as u,sameInspectorMode as a,useStandaloneScreenBridges as h,useScreenBlockLook as k,useScreenBlockRules as j,isSelectionMode as f,shownChildSlotsOf as S}from"../../chunk-DCBSRZ6Z.js";import{MediaPopup as y}from"../../chunk-2G6MAXPY.js";import{useScreenDocument as A}from"../../chunk-A6ZP5II4.js";import"../../chunk-77IWWW6X.js";import"../../chunk-ERR437B5.js";import"../../chunk-UNVKPVZW.js";import"../../chunk-GMCZXMOV.js";import"../../chunk-RLBXE4EU.js";import"../../chunk-HNKB2ZYR.js";import"../../chunk-CLOS6SSX.js";import"../../chunk-BIK3AO2V.js";import"../../chunk-LOMEH6DG.js";import"../../chunk-KCOBHPN6.js";import"../../chunk-FHCKFOCD.js";import"../../chunk-YM4UEGBV.js";import"../../chunk-SNF5764Q.js";import"../../chunk-MQA7OFRA.js";import{DEFAULT_SCREEN_WORDS as C}from"../../chunk-IYHO4XQX.js";import{slotChildRowName as N}from"../../chunk-SSRYU3YG.js";import"../../chunk-AJ2SUSET.js";import"../../chunk-ANPOR6EY.js";import"../../chunk-6UAEFOJ4.js";import"../../chunk-R4AUZVA3.js";import{slotFieldsOf as Y,nestsInTree as P}from"../../chunk-TCAAOYQY.js";import{useEasel as x}from"../../chunk-FEF3OQRT.js";import"../../chunk-RPMSET77.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-6QSFJCJT.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-YCSZAP7T.js";import{LayersTree as F,Subtree as R,TreeRow as O,TreeRowAction as W,TreeSeam as D}from"../../chunk-WHS6Y55E.js";import{DEFAULT_TREE_WORDS as I}from"../../chunk-K56YDHYQ.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-AGWKB77Q.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-FM6JO4WF.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-NDRZP6YR.js";import{DEFAULT_SAVE_WORDS as M,saveIndicator as g}from"../../chunk-H6DDIBQ4.js";import{SaveState as E,panelWidthVars as Q}from"../../chunk-WYTPBF3Q.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-AJSDWWJW.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-HZSZT3BE.js";import"../../chunk-KRL3IUV3.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-JACEEVVF.js";import"../../chunk-S3DUFDQ6.js";import{useWords as B}from"../../chunk-MFIRYGHW.js";import"../../chunk-LN43DP2A.js";import"../../chunk-TQ5Y6S2X.js";import{useTreeDrag as b}from"../../chunk-6NJHYXJM.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-YU3WHLGI.js";import"../../chunk-LF3FUSCQ.js";import{zoneKey as v,parseZoneKey as z}from"../../chunk-TGZCD6IP.js";import"../../chunk-KXM6YRG2.js";import"../../chunk-467WWV4I.js";import"../../chunk-TIAWIOGD.js";import"../../chunk-MGVI67QV.js";import{useState as V,useRef as w,useEffect as H,useCallback as T,Fragment as J}from"react";import{Tooltip as K}from"efficient-shell/ui";import{TrashIcon as Z}from"efficient-shell/icons/efficient";import{jsxs as G,jsx as U,Fragment as X}from"react/jsx-runtime";var L=e=>n=>{n.target.closest("button, input")||e()},$={rowClick:L};function q(){const{saveState:q,readOnly:_,readOnlyReason:ee=null}=A(),ne=c(),{appState:oe,selectedItem:re,config:te}=x(e=>e),[se,ie]=V(p),ce=B("screen",C),pe=B("tree",I),le=B("save",M),{first:me,last:de,panelOf:ue}=l(),ae=ue(me),he=m(),ke=d(),je=oe.data.content?.[0]??null,fe=je?.props.id??null,Se=je?.type===me,ye=je?.type===de,Ae=w(null),Ce=w(null);r(Ce),u(re?.props.id),H(()=>{fe&&Ae.current!==fe&&(Ae.current=fe,Se?ie(ae??p):re||ne.select({index:0}))},[fe,re,ne,Se]);const Ne=T(e=>ie(n=>a(n,e)?n:e),[]),Ye=h({kind:se.kind,mode:se,open:Ne,show:e=>ie(e),reveal:()=>{},select:(e,n)=>{ie(e=>a(e,n)?e:n),ne.select(e)}}),{selectNode:Pe}=i({mode:se,setMode:ie,onOpenPart:n}),xe=k(),{labelAtLevel:Fe,Icon:Re}=xe,{canAddTo:Oe}=j(),We=e=>Fe(e,"block",te.components[e]?.label??e),De=e=>Fe(e,"section",We(e)),Ie=!Se&&f(se)&&re?.props.id===fe,Me=je?Oe(je.type)?.spec??null:null,ge=je&&Me?`${je.props.id}:${Me.slot}`:null,Ee=je&&Me&&Array.isArray(je.props[Me.slot])?je.props[Me.slot]:[],Qe=e=>N(e,We,xe.plainText),Be=(e,r)=>{je&&Me&&ge&&(ie(p),Me.slider?(o(String(je.props.id),e),ne.select({index:e,zone:ge}),n(String(je.props.id))):(ne.select({index:e,zone:ge}),n(r)))},be=()=>{if(!je||!Me||!ge)return;const e=Ee.length;ne.insertComponent(ge,Me.childType,e),ie(p),Me.slider?requestAnimationFrame(()=>{o(String(je.props.id),e),ne.select({index:e,zone:ge})}):ne.select({index:e,zone:ge})},ve=e=>Y(te,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 ve(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(je)?.props[o];return Array.isArray(t)?t.length:0},Ve=(e,n,o)=>{const r=Math.min(Math.max(o,0),ze(e)),t=n<r?r-1:r;t!==n&&(ne.reorderComponent(e,n,t),ie(p),ne.select({index:t,zone:e}))},we=b({keyOf:e=>e.id,readOnly:Boolean(_),canDrop:(e,n)=>v(n)===e.zone&&n.index>=0&&n.index<=ze(e.zone),onDrop:(e,n)=>Ve(e.zone,e.index,n.index),onStep:(e,n)=>Ve(e.zone,e.index,n<0?e.index-1:e.index+2)}),He=(e,n)=>/* @__PURE__ */U(D,{..._?{}:we.seam({place:{...z(e),index:n}})},`seam:${e}:${n}`),Te=e=>xe.blockRowName(e,We),Je=(e,o,r)=>{ie(p),ne.select({index:o,zone:e}),n(r)},Ke=(e,n,o)=>{ne.insertComponent(e,n,o),ie(p),ne.select({index:o,zone:e})},Ze=(n,o,r)=>/* @__PURE__ */U(e,{choices:r,onPick:e=>Ke(n,e,o)}),Ge=(e,n)=>{const o=S(te,e);const r=Oe(e.type),t=r?.choices??null,s="footer"===r?.source?Te:Qe;/* @__PURE__ */
2
+ return G(X,{children:[o.map(({child:e,zone:o,index:r})=>{const t=re?.props.id===e.props.id,i=P(te,e.type,n),c=s(e),l=String(e.props.id),m=()=>Je(o,r,l),{rowProps:d,...u}=we.row({item:{id:l,zone:o,index:r},place:{...z(o),index:r}},{onClick:L(m)});/* @__PURE__ */
3
+ return G(J,{children:[0===r&&He(o,0),
4
+ /* @__PURE__ */U(O,{words:pe,icon:/* @__PURE__ */U(Re,{type:e.type,size:13}),name:c,selected:t,onSelect:m,...u,actions:/* @__PURE__ */U(W,{kind:"delete",label:ce.deleteNamed({name:c}),onClick:()=>{return e=o,n=r,ne.removeComponent(e,n),ie(p),void ne.select(null);var e,n},children:/* @__PURE__ */U(Z,{size:13})}),rowProps:d}),i&&/* @__PURE__ */U(R,{children:Ge(e,n+1)}),He(o,r+1)]},String(e.props.id??`${o}-${r}`))}),r&&t?Ze(`${e.props.id}:${r.slot}`,o.length,t):null]})},Ue="HeroSingle"===je?.type,Xe=Boolean(je)&&(Boolean(Oe(je.type))||ve(je.type).length>0),Le=Boolean(je)&&(Boolean(Me)||ye||Se||Ue||Xe);/* @__PURE__ */
5
+ return G("div",{ref:Ce,className:"sf-editor es-editor",style:Q(s),children:[
6
+ /* @__PURE__ */U("div",{className:"sf-section-bar",children:/* @__PURE__ */U(E,null!==ee?{tone:"off",label:ee,role:"status"}:{...g(q,le),role:"status"})}),
7
+ /* @__PURE__ */G("div",{className:"sf-body",children:[Le&&je&&/* @__PURE__ */G("aside",{className:"es-sidepanel es-sidepanel--left sf-panel sf-panel--left",children:[
8
+ /* @__PURE__ */U("div",{className:"sf-panel-head",children:/* @__PURE__ */U(K,{content:Se?ce.headerSettings:ce.sectionSettings({name:De(je.type)}),side:"bottom",children:/* @__PURE__ */U("button",{type:"button",className:"sf-panel-title sf-panel-title--btn "+(Ie?"is-selected":""),"aria-pressed":Ie,onClick:()=>{Se?ie(ae??p):(ie(p),ne.select({index:0}))},children:De(je.type)})})}),
9
+ /* @__PURE__ */U(F,{className:"sf-tree sf-scroll",rootProps:we.rootProps(),words:pe,children:/* @__PURE__ */U(R,{children:Se?
10
+ /* @__PURE__ */U(O,{words:pe,icon:/* @__PURE__ */U(Re,{type:"header",size:13}),name:ce.headerSettings,selected:se.kind===ae?.kind,onSelect:()=>ie(ae??p),rowProps:{onClick:L(()=>ie(ae??p))}}):Me?/* @__PURE__ */G(X,{children:[Ee.map((e,n)=>{const o=re?.props.id===e.props.id,r=Qe(e),t=String(e.props.id),s=()=>Be(n,t),{rowProps:i,...c}=we.row({item:{id:t,zone:ge,index:n},place:{...z(ge),index:n}},{onClick:L(s)});/* @__PURE__ */
11
+ return G(J,{children:[0===n&&He(ge,0),
12
+ /* @__PURE__ */U(O,{words:pe,icon:/* @__PURE__ */U(Re,{type:e.type,size:13}),name:r,selected:o,onSelect:s,...c,actions:/* @__PURE__ */U(W,{kind:"delete",label:ce.deleteNamed({name:r}),onClick:()=>{return e=n,void(ge&&(ne.removeComponent(ge,e),ie(p),ne.select(null)));var e},children:/* @__PURE__ */U(Z,{size:13})}),rowProps:i}),He(ge,n+1)]},String(e.props.id??n))}),
13
+ /* @__PURE__ */G("button",{type:"button",className:"sf-add-card",onClick:be,children:[
14
+ /* @__PURE__ */U("span",{className:"sf-plus sf-plus--sm",children:"+"}),Me.addLabel]}),fe?Ye.partRows?.(je,$):null]}):Ge(je,1)})})]}),
15
+ /* @__PURE__ */U("div",{className:"sf-center",children:/* @__PURE__ */U("div",{className:"sf-preview-host",children:/* @__PURE__ */U(he,{})})}),
16
+ /* @__PURE__ */U(t,{value:{selectChild:(e,n,o,r)=>"section"===Oe(r)?.source?Be(n,o):Je(e,n,o),addChild:(e,n,o,r,t)=>"section"===Oe(t)?.source?be():Ke(`${e}:${n}`,o,r),childRowName:Qe,blockRowName:Te},children:/* @__PURE__ */U(ke,{mode:se,onOpenWebsiteSettings:Ye.openSettings??(()=>{}),onSelectNode:Pe,hideNodeActions:!0})})]}),
17
+ /* @__PURE__ */U(y,{})]})}export{q as default};
@@ -1 +1 @@
1
- export{PanelHideButton,PanelModeExit,PanelShowStrip,SidePanelHead as default}from"../../chunk-SINAM2IT.js";import"../../chunk-UMDQ6CLQ.js";import"../../chunk-ZG6PVMC3.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-AJSDWWJW.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MFIRYGHW.js";
1
+ export{PanelHideButton,PanelModeExit,PanelShowStrip,SidePanelHead as default}from"../../chunk-5PXVT7JY.js";import"../../chunk-UMDQ6CLQ.js";import"../../chunk-WYTPBF3Q.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-AJSDWWJW.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MFIRYGHW.js";
@@ -1 +1 @@
1
- export{COLLAPSED_SECTIONS_KEY,DEFAULT_PANEL_W,PANEL_WIDTHS_KEY,clampPanelWidth,screenStorageKeys}from"../../chunk-C56MPJBH.js";export{MAX_PANEL_W,MIN_PANEL_W,MIN_PANEL_W_BY_SIDE,panelWidthVars}from"../../chunk-ZG6PVMC3.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-AJSDWWJW.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MFIRYGHW.js";
1
+ export{COLLAPSED_SECTIONS_KEY,DEFAULT_PANEL_W,PANEL_WIDTHS_KEY,clampPanelWidth,screenStorageKeys}from"../../chunk-Y53EKN35.js";export{MAX_PANEL_W,MIN_PANEL_W,MIN_PANEL_W_BY_SIDE,panelWidthVars}from"../../chunk-WYTPBF3Q.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-AJSDWWJW.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MFIRYGHW.js";
@@ -7,7 +7,7 @@ import '../../types-Dq180WRV.js';
7
7
  import '../../resolve-Bz4mszpL.js';
8
8
  import '../../plan-D0DgSLnY.js';
9
9
  import '../../watch-Unf6SfUf.js';
10
- import '../../types-B3iSHX-w.js';
10
+ import '../../types-SrGNzYeO.js';
11
11
  import '../../types-Cy7rdmXt.js';
12
12
  import '../../wordFit-7XpmhcaW.js';
13
13
  import '../../edit-lock/index.js';
@@ -1 +1 @@
1
- export{usePartBridge}from"../../chunk-6F5GO337.js";import"../../chunk-FOOK54T2.js";import"../../chunk-GXRS52JD.js";import"../../chunk-FHCKFOCD.js";import"../../chunk-MQA7OFRA.js";import"../../chunk-R4AUZVA3.js";import"../../chunk-TCAAOYQY.js";import"../../chunk-KXTXYINN.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-MXECWHRJ.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-WHS6Y55E.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-AGWKB77Q.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-RPMSET77.js";import"../../chunk-FM6JO4WF.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-HZSZT3BE.js";import"../../chunk-KRL3IUV3.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-JACEEVVF.js";import"../../chunk-S3DUFDQ6.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-6NJHYXJM.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-YU3WHLGI.js";import"../../chunk-LF3FUSCQ.js";import"../../chunk-TGZCD6IP.js";import"../../chunk-KXM6YRG2.js";import"../../chunk-467WWV4I.js";import"../../chunk-TIAWIOGD.js";import"../../chunk-MGVI67QV.js";
1
+ export{usePartBridge}from"../../chunk-33P4J2SF.js";import"../../chunk-RMQDKVGW.js";import"../../chunk-DCBSRZ6Z.js";import"../../chunk-FHCKFOCD.js";import"../../chunk-MQA7OFRA.js";import"../../chunk-R4AUZVA3.js";import"../../chunk-TCAAOYQY.js";import"../../chunk-FEF3OQRT.js";import"../../chunk-RPMSET77.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-6QSFJCJT.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-YCSZAP7T.js";import"../../chunk-WHS6Y55E.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-AGWKB77Q.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-FM6JO4WF.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-HZSZT3BE.js";import"../../chunk-KRL3IUV3.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-JACEEVVF.js";import"../../chunk-S3DUFDQ6.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-6NJHYXJM.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-YU3WHLGI.js";import"../../chunk-LF3FUSCQ.js";import"../../chunk-TGZCD6IP.js";import"../../chunk-KXM6YRG2.js";import"../../chunk-467WWV4I.js";import"../../chunk-TIAWIOGD.js";import"../../chunk-MGVI67QV.js";
@@ -1,6 +1,6 @@
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, ScreenBlockLook, ScreenBlockRules, ScreenBridges, ScreenCanvas, ScreenCanvasDrag, ScreenCanvasDragContext, ScreenCanvasHeadProps, ScreenCanvasTargetProvider, ScreenDevices, ScreenDocumentOps, ScreenDragItem, ScreenInspector, ScreenInspectorMode, ScreenInspectorPanelProps, ScreenLeftPanel, ScreenLeftView, ScreenLeftViewFrame, ScreenLeftViewRules, ScreenMainAction, ScreenMediaDrop, ScreenMediaFile, ScreenMenuItem, ScreenMenuRows, ScreenNewNode, ScreenNode, ScreenNodeActions, ScreenNodeLevel, ScreenNodeMaker, ScreenPartMode, ScreenParts, ScreenPartsProvider, ScreenPinnedBand, ScreenPinnedNodes, ScreenRailItem, ScreenSelector, ScreenSharedSections, ScreenSlot, ScreenSlotAction, ScreenSlotMode, ScreenStyleClipboard, ScreenStyleDocument, ScreenStylePastePlan, ScreenToastExtra, ScreenTree, ScreenTreeFolds, ScreenTreeRows, isPinnedFirst, isPinnedLast, isSelectionMode, isSlotMode, sameInspectorMode, screenSlotsOf, 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';
3
+ export { NodeDefaults, SELECTION_MODE, ScreenBlockLook, ScreenBlockRules, ScreenBridges, ScreenCanvas, ScreenCanvasDrag, ScreenCanvasDragContext, ScreenCanvasHeadProps, ScreenCanvasTargetProvider, ScreenDevices, ScreenDocumentOps, ScreenDragItem, ScreenInspector, ScreenInspectorMode, ScreenInspectorPanelProps, ScreenLeftPanel, ScreenLeftView, ScreenLeftViewFrame, ScreenLeftViewRules, ScreenMainAction, ScreenMediaDrop, ScreenMediaFile, ScreenMenuItem, ScreenMenuRows, ScreenNewNode, ScreenNode, ScreenNodeActions, ScreenNodeLevel, ScreenNodeMaker, ScreenPartMode, ScreenParts, ScreenPartsProvider, ScreenPinnedBand, ScreenPinnedNodes, ScreenRailItem, ScreenSelector, ScreenSharedSections, ScreenSlot, ScreenSlotAction, ScreenSlotMode, ScreenStyleClipboard, ScreenStyleDocument, ScreenStylePastePlan, ScreenToastExtra, ScreenTree, ScreenTreeFolds, ScreenTreeRows, isPinnedFirst, isPinnedLast, isSelectionMode, isSlotMode, sameInspectorMode, screenSlotsOf, shownChildSlotsOf, shownSlotFieldsOf, 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
6
  export { A as AnyDocumentAddressing, D as DETACHED_EASEL_HOST, a as DocumentAddressing, E as EaselBlockType, b as EaselFieldDescription, c as EaselHost, d as EaselHostAddress, e as EaselHostContext, f as EaselHostPanels, g as EaselHostProvider, h as EaselMessageType, i as EaselSelection, j as EaselToHostMessage, H as HostPickedMedia, k as HostToEaselMessage, I as InboundHostMessage, N as NO_DOCUMENT_ADDRESSING, P as PageEditOp, l as PickedMediaSource, S as SectionScreenTarget, m as SendToHost, n as createEaselHost, u as useEaselHost, o as useHostEscape } from '../ScreenDocumentContext-BDLUYzlM.js';
@@ -13,7 +13,7 @@ import '../types-Dq180WRV.js';
13
13
  import '../resolve-Bz4mszpL.js';
14
14
  import '../plan-D0DgSLnY.js';
15
15
  import '../watch-Unf6SfUf.js';
16
- import '../types-B3iSHX-w.js';
16
+ import '../types-SrGNzYeO.js';
17
17
  import '../types-Cy7rdmXt.js';
18
18
  import '../wordFit-7XpmhcaW.js';
19
19
  import '../edit-lock/index.js';
@@ -1 +1 @@
1
- import"../chunk-GZO72N3Q.js";export{DocumentScreen,ScreenMount}from"../chunk-3P735WOM.js";import"../chunk-GXQCZJOP.js";import"../chunk-VZUXOZGP.js";import"../chunk-OXZDSOZV.js";import"../chunk-7OCEPOEJ.js";import"../chunk-G3HAKQUF.js";import"../chunk-UMBNBCL4.js";import"../chunk-5XL2RXFU.js";import"../chunk-4YUC7B7E.js";import"../chunk-INRERJU4.js";import"../chunk-3QB2ZQXK.js";import"../chunk-DDH2DYQP.js";import"../chunk-YHEYJKQL.js";import"../chunk-KCBEE2MC.js";import"../chunk-C56MPJBH.js";import"../chunk-6F5GO337.js";import"../chunk-FOOK54T2.js";import"../chunk-PY7OOQEZ.js";import"../chunk-RKTF5XLP.js";export{ScreenStoreProvider}from"../chunk-XJ23ULBP.js";import"../chunk-5545A3PC.js";import"../chunk-FF54HWSE.js";import"../chunk-VKPOH6MK.js";import"../chunk-IZGFJWH4.js";import"../chunk-N7E6264U.js";import"../chunk-N3MJOHAG.js";import"../chunk-SINAM2IT.js";import"../chunk-UMDQ6CLQ.js";import"../chunk-RUQOIQWI.js";export{SELECTION_MODE,ScreenCanvasTargetProvider,ScreenPartsProvider,isPinnedFirst,isPinnedLast,isSelectionMode,isSlotMode,sameInspectorMode,screenSlotsOf,useScreenBlockLook,useScreenBlockRules,useScreenBridges,useScreenCanvasDrag,useScreenCanvasFrame,useScreenCanvasHead,useScreenCanvasTarget,useScreenDevices,useScreenDocumentLabel,useScreenDocumentPass,useScreenInspectorPanel,useScreenLeftView,useScreenNodeKeys,useScreenNotify,useScreenOwnerName,useScreenParts,useScreenPickFollowsSelection,useScreenPinned,useScreenSaveSwitch,useScreenStorageNamespace,useScreenStyleClipboard,useStandaloneScreenBridges}from"../chunk-GXRS52JD.js";import"../chunk-2G6MAXPY.js";import"../chunk-AT4DDMJS.js";import"../chunk-GKG3M5QK.js";import"../chunk-A6ZP5II4.js";import"../chunk-77IWWW6X.js";import"../chunk-ERR437B5.js";import"../chunk-UNVKPVZW.js";import"../chunk-GMCZXMOV.js";export{NO_DOCUMENT_ADDRESSING}from"../chunk-RLBXE4EU.js";import"../chunk-HNKB2ZYR.js";import"../chunk-CLOS6SSX.js";import"../chunk-BIK3AO2V.js";import"../chunk-LOMEH6DG.js";import"../chunk-KCOBHPN6.js";import"../chunk-FHCKFOCD.js";export{EaselSessionProvider,useEaselSession}from"../chunk-YM4UEGBV.js";export{EFFICIENT_BACKEND,activateEaselSession,backendOf,createEaselSession,currentEaselSession,deactivateEaselSession,efficientClientOpen,isEfficientBackend,provideDefaultBackend,resetAmbientEaselSession,sessionRegistry,setSessionBridgedSite,setSessionDocumentSite}from"../chunk-SNF5764Q.js";export{DETACHED_EASEL_HOST,EaselHostContext,EaselHostProvider,createEaselHost,useEaselHost,useHostEscape}from"../chunk-MQA7OFRA.js";import"../chunk-XFYFKITX.js";import"../chunk-IYHO4XQX.js";import"../chunk-V7U33NF2.js";import"../chunk-6WY6ZXJG.js";import"../chunk-SSRYU3YG.js";import"../chunk-AJ2SUSET.js";import"../chunk-ANPOR6EY.js";import"../chunk-6UAEFOJ4.js";import"../chunk-R4AUZVA3.js";import"../chunk-TCAAOYQY.js";import"../chunk-KXTXYINN.js";import"../chunk-TBY3DFKS.js";import"../chunk-MXECWHRJ.js";import"../chunk-BPXEFVSQ.js";import"../chunk-WHS6Y55E.js";import"../chunk-K56YDHYQ.js";import"../chunk-ZEH6QLBH.js";import"../chunk-AGWKB77Q.js";import"../chunk-ZKY45F5G.js";import"../chunk-FIVU2COQ.js";import"../chunk-P5VYGWYO.js";import"../chunk-WK3AFPXY.js";import"../chunk-RPMSET77.js";import"../chunk-FM6JO4WF.js";import"../chunk-KFV7N2DJ.js";import"../chunk-NDRZP6YR.js";import"../chunk-H6DDIBQ4.js";import"../chunk-ZG6PVMC3.js";import"../chunk-MJM6SFD3.js";import"../chunk-AJSDWWJW.js";import"../chunk-2OAZYSWJ.js";import"../chunk-THWO5YVZ.js";import"../chunk-RE4LP46F.js";import"../chunk-HZSZT3BE.js";import"../chunk-KRL3IUV3.js";import"../chunk-Y2T3JX7K.js";import"../chunk-KFWNGPW3.js";import"../chunk-JACEEVVF.js";import"../chunk-S3DUFDQ6.js";import"../chunk-MFIRYGHW.js";import"../chunk-LN43DP2A.js";import"../chunk-TQ5Y6S2X.js";import"../chunk-6NJHYXJM.js";import"../chunk-P2VEMZH5.js";import"../chunk-YU3WHLGI.js";import"../chunk-LF3FUSCQ.js";import"../chunk-TGZCD6IP.js";import"../chunk-KXM6YRG2.js";import"../chunk-BSPCSC45.js";import"../chunk-467WWV4I.js";import"../chunk-TIAWIOGD.js";import"../chunk-MGVI67QV.js";
1
+ import"../chunk-GZO72N3Q.js";export{DocumentScreen,ScreenMount}from"../chunk-QWLWSIDH.js";import"../chunk-GXQCZJOP.js";import"../chunk-ZOPYJQFS.js";import"../chunk-OXZDSOZV.js";import"../chunk-7OCEPOEJ.js";import"../chunk-DSKNJXB4.js";import"../chunk-UMBNBCL4.js";import"../chunk-5XL2RXFU.js";import"../chunk-2FYFAAAK.js";import"../chunk-22I55W37.js";import"../chunk-3QB2ZQXK.js";import"../chunk-DDH2DYQP.js";import"../chunk-MYAJ7MGI.js";import"../chunk-KCBEE2MC.js";import"../chunk-Y53EKN35.js";import"../chunk-33P4J2SF.js";import"../chunk-RMQDKVGW.js";import"../chunk-55KKGABA.js";import"../chunk-RKTF5XLP.js";export{ScreenStoreProvider}from"../chunk-VNDPFDO5.js";import"../chunk-5545A3PC.js";import"../chunk-C57RLYDQ.js";import"../chunk-VKPOH6MK.js";import"../chunk-IZGFJWH4.js";import"../chunk-N7E6264U.js";import"../chunk-N3MJOHAG.js";import"../chunk-5PXVT7JY.js";import"../chunk-UMDQ6CLQ.js";import"../chunk-RUQOIQWI.js";export{SELECTION_MODE,ScreenCanvasTargetProvider,ScreenPartsProvider,isPinnedFirst,isPinnedLast,isSelectionMode,isSlotMode,sameInspectorMode,screenSlotsOf,shownChildSlotsOf,shownSlotFieldsOf,useScreenBlockLook,useScreenBlockRules,useScreenBridges,useScreenCanvasDrag,useScreenCanvasFrame,useScreenCanvasHead,useScreenCanvasTarget,useScreenDevices,useScreenDocumentLabel,useScreenDocumentPass,useScreenInspectorPanel,useScreenLeftView,useScreenNodeKeys,useScreenNotify,useScreenOwnerName,useScreenParts,useScreenPickFollowsSelection,useScreenPinned,useScreenSaveSwitch,useScreenStorageNamespace,useScreenStyleClipboard,useStandaloneScreenBridges}from"../chunk-DCBSRZ6Z.js";import"../chunk-2G6MAXPY.js";import"../chunk-J5OSNZPU.js";import"../chunk-V7U33NF2.js";import"../chunk-CMBJHSHY.js";import"../chunk-A6ZP5II4.js";import"../chunk-77IWWW6X.js";import"../chunk-ERR437B5.js";import"../chunk-UNVKPVZW.js";import"../chunk-GMCZXMOV.js";export{NO_DOCUMENT_ADDRESSING}from"../chunk-RLBXE4EU.js";import"../chunk-HNKB2ZYR.js";import"../chunk-CLOS6SSX.js";import"../chunk-BIK3AO2V.js";import"../chunk-LOMEH6DG.js";import"../chunk-KCOBHPN6.js";import"../chunk-FHCKFOCD.js";export{EaselSessionProvider,useEaselSession}from"../chunk-YM4UEGBV.js";export{EFFICIENT_BACKEND,activateEaselSession,backendOf,createEaselSession,currentEaselSession,deactivateEaselSession,efficientClientOpen,isEfficientBackend,provideDefaultBackend,resetAmbientEaselSession,sessionRegistry,setSessionBridgedSite,setSessionDocumentSite}from"../chunk-SNF5764Q.js";export{DETACHED_EASEL_HOST,EaselHostContext,EaselHostProvider,createEaselHost,useEaselHost,useHostEscape}from"../chunk-MQA7OFRA.js";import"../chunk-P5VYGWYO.js";import"../chunk-XFYFKITX.js";import"../chunk-6WY6ZXJG.js";import"../chunk-WK3AFPXY.js";import"../chunk-IYHO4XQX.js";import"../chunk-SSRYU3YG.js";import"../chunk-AJ2SUSET.js";import"../chunk-ANPOR6EY.js";import"../chunk-6UAEFOJ4.js";import"../chunk-R4AUZVA3.js";import"../chunk-TCAAOYQY.js";import"../chunk-FEF3OQRT.js";import"../chunk-RPMSET77.js";import"../chunk-TBY3DFKS.js";import"../chunk-6QSFJCJT.js";import"../chunk-BPXEFVSQ.js";import"../chunk-YCSZAP7T.js";import"../chunk-WHS6Y55E.js";import"../chunk-K56YDHYQ.js";import"../chunk-ZEH6QLBH.js";import"../chunk-AGWKB77Q.js";import"../chunk-ZKY45F5G.js";import"../chunk-FIVU2COQ.js";import"../chunk-FM6JO4WF.js";import"../chunk-KFV7N2DJ.js";import"../chunk-NDRZP6YR.js";import"../chunk-H6DDIBQ4.js";import"../chunk-WYTPBF3Q.js";import"../chunk-MJM6SFD3.js";import"../chunk-AJSDWWJW.js";import"../chunk-2OAZYSWJ.js";import"../chunk-THWO5YVZ.js";import"../chunk-RE4LP46F.js";import"../chunk-HZSZT3BE.js";import"../chunk-KRL3IUV3.js";import"../chunk-Y2T3JX7K.js";import"../chunk-KFWNGPW3.js";import"../chunk-JACEEVVF.js";import"../chunk-S3DUFDQ6.js";import"../chunk-MFIRYGHW.js";import"../chunk-LN43DP2A.js";import"../chunk-TQ5Y6S2X.js";import"../chunk-6NJHYXJM.js";import"../chunk-P2VEMZH5.js";import"../chunk-YU3WHLGI.js";import"../chunk-LF3FUSCQ.js";import"../chunk-TGZCD6IP.js";import"../chunk-KXM6YRG2.js";import"../chunk-BSPCSC45.js";import"../chunk-467WWV4I.js";import"../chunk-TIAWIOGD.js";import"../chunk-MGVI67QV.js";
@@ -1,5 +1,7 @@
1
1
  import { ReactElement } from 'react';
2
2
  import { PreviewDevice } from '../../components/PreviewDeviceContext.js';
3
+ import { D as DeviceFieldTier, a as DeviceTier } from '../../../rowMarks-CO5TpfLY.js';
4
+ export { b as DEVICE_FIELD_MARKER, c as DeviceFieldMeta, d as deviceMetaOf } from '../../../rowMarks-CO5TpfLY.js';
3
5
  import '../content/view-tiers.js';
4
6
 
5
7
  /**
@@ -44,9 +46,6 @@ import '../content/view-tiers.js';
44
46
  * instead of a second DOM pass (so it cannot race the fold's).
45
47
  */
46
48
 
47
- /** The two tiers a stored value can belong to. Tablet is not one — see
48
- * {@link shownTier}. */
49
- type DeviceTier = "desktop" | "mobile";
50
49
  /**
51
50
  * Which tier's stored values the panel shows for a given preview device.
52
51
  *
@@ -78,26 +77,13 @@ type AnyCustomField = {
78
77
  type: "custom";
79
78
  render: FieldRender;
80
79
  };
81
- /** Marker carried by every gated field, in the same style as
82
- * {@link import("./controls").FOLD_FIELD_MARKER}: the tier and the field it
83
- * wraps live ON the field object, never only inside the render closure. Without
84
- * it a gated control is opaque to every static walk — and the fold guard in
85
- * `scripts/test-section-groups.ts` genuinely needs to see the header underneath
86
- * to check its label against what it draws. The old library ignores extra keys. */
87
- declare const DEVICE_FIELD_MARKER: "__device";
88
- /** The payload on {@link DEVICE_FIELD_MARKER}. */
89
- type DeviceFieldMeta = {
90
- tier: DeviceTier;
91
- inner: unknown;
92
- };
93
- /** Read a field's device payload, or null when it is not gated. The ONE place
94
- * that knows the marker's shape. */
95
- declare function deviceMetaOf(field: unknown): DeviceFieldMeta | null;
96
80
  /** The field a gate wraps, or the field itself when it wraps nothing — what a
97
81
  * static walk wants to look at. */
98
82
  declare function withoutDeviceGate(field: unknown): unknown;
99
83
  /**
100
- * Paint `field` only while the canvas is showing `tier`.
84
+ * Paint `field` only while the canvas is showing `tier` — or, with `"each"`, in
85
+ * every view, handing the control the tier it writes there (`tier` prop:
86
+ * `"mobile"` in the phone view, `"desktop"` otherwise). See `DeviceFieldTier`.
101
87
  *
102
88
  * Everything else about the field is preserved by identity-spread — its `type`,
103
89
  * its manifest markers, its data keys — so the media and neutralization walks,
@@ -106,7 +92,7 @@ declare function withoutDeviceGate(field: unknown): unknown;
106
92
  declare function deviceField<F extends {
107
93
  type: "custom";
108
94
  render: (p: never) => ReactElement;
109
- }>(tier: DeviceTier, field: F): F;
95
+ }>(tier: DeviceFieldTier, field: F): F;
110
96
  /**
111
97
  * The panel's device indicator — one quiet line, and only when there is
112
98
  * something to say (see {@link DEVICE_NOTE}).
@@ -125,4 +111,4 @@ declare function deviceField<F extends {
125
111
  */
126
112
  declare function deviceNote(): AnyCustomField;
127
113
 
128
- export { DEVICE_FIELD_MARKER, DEVICE_HIDDEN_ATTR, DEVICE_NOTE, type DeviceFieldMeta, type DeviceTier, deviceField, deviceMetaOf, deviceNote, shownTier, withoutDeviceGate };
114
+ export { DEVICE_HIDDEN_ATTR, DEVICE_NOTE, DeviceFieldTier, DeviceTier, deviceField, deviceNote, shownTier, withoutDeviceGate };
@@ -1 +1 @@
1
- export{DEVICE_FIELD_MARKER,DEVICE_HIDDEN_ATTR,DEVICE_NOTE,deviceField,deviceMetaOf,deviceNote,shownTier,withoutDeviceGate}from"../../../chunk-4YUC7B7E.js";import"../../../chunk-INRERJU4.js";import"../../../chunk-IYHO4XQX.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-BSPCSC45.js";
1
+ export{DEVICE_HIDDEN_ATTR,DEVICE_NOTE,deviceField,deviceNote,shownTier,withoutDeviceGate}from"../../../chunk-2FYFAAAK.js";import"../../../chunk-22I55W37.js";import"../../../chunk-IYHO4XQX.js";export{DEVICE_FIELD_MARKER,deviceMetaOf}from"../../../chunk-YCSZAP7T.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-BSPCSC45.js";
@@ -1,4 +1,6 @@
1
1
  import { ReactElement } from 'react';
2
+ import { N as NoControlFieldMeta } from '../../../rowMarks-CO5TpfLY.js';
3
+ export { e as NO_CONTROL_FIELD, n as noControlMetaOf } from '../../../rowMarks-CO5TpfLY.js';
2
4
 
3
5
  /**
4
6
  * panel-no-control-mark — what a settings field draws when it draws NO CONTROL
@@ -58,16 +60,10 @@ declare function NoControlMark(): ReactElement;
58
60
  * It draws nothing on the section screen unless its prop is STRUCTURAL, which
59
61
  * is the one question `SuppressibleText` also asks at render time.
60
62
  */
61
- declare const NO_CONTROL_FIELD: "__noControl";
62
- /** The payload on {@link NO_CONTROL_FIELD}. */
63
- type NoControlFieldMeta = "always" | "authored-copy";
64
- /** Read a field's no-control payload, or `null` when it draws a control of its
65
- * own. The ONE place that knows the marker's shape. */
66
- declare function noControlMetaOf(field: unknown): NoControlFieldMeta | null;
67
63
  /** Stamp {@link NO_CONTROL_FIELD} on a field. The cast is here and nowhere else:
68
64
  * The old library's field types have no slot for a marker, so an object literal carrying
69
65
  * one trips the excess-property check at every call site otherwise — the same
70
66
  * reason `group()` and the text/link markers have their own builders. */
71
67
  declare function noControlField<F>(field: F, reason: NoControlFieldMeta): F;
72
68
 
73
- export { NO_CONTROL_ATTR, NO_CONTROL_FIELD, type NoControlFieldMeta, NoControlMark, noControlField, noControlMetaOf };
69
+ export { NO_CONTROL_ATTR, NoControlFieldMeta, NoControlMark, noControlField };
@@ -1 +1 @@
1
- export{NO_CONTROL_ATTR,NO_CONTROL_FIELD,NoControlMark,noControlField,noControlMetaOf}from"../../../chunk-INRERJU4.js";
1
+ export{NO_CONTROL_ATTR,NoControlMark,noControlField}from"../../../chunk-22I55W37.js";export{NO_CONTROL_FIELD,noControlMetaOf}from"../../../chunk-YCSZAP7T.js";
@@ -11,7 +11,7 @@ import '../../../types-Dq180WRV.js';
11
11
  import '../../../resolve-Bz4mszpL.js';
12
12
  import '../../../plan-D0DgSLnY.js';
13
13
  import '../../../watch-Unf6SfUf.js';
14
- import '../../../types-B3iSHX-w.js';
14
+ import '../../../types-SrGNzYeO.js';
15
15
  import '../../../types-Cy7rdmXt.js';
16
16
  import '../../../wordFit-7XpmhcaW.js';
17
17
  import '../../../edit-lock/index.js';
@@ -1 +1 @@
1
- export{copyNodeStyle,nodeStyleRows,planNodePaste,shopFieldKind,siteStyleScope,styleClipboardOf}from"../../../chunk-G3HAKQUF.js";import"../../../chunk-5XL2RXFU.js";import"../../../chunk-4YUC7B7E.js";import"../../../chunk-INRERJU4.js";import"../../../chunk-3QB2ZQXK.js";import"../../../chunk-IYHO4XQX.js";import"../../../chunk-V7U33NF2.js";import"../../../chunk-6WY6ZXJG.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-BPXEFVSQ.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-BSPCSC45.js";
1
+ export{copyNodeStyle,nodeStyleRows,planNodePaste,shopFieldKind,siteStyleScope,styleClipboardOf}from"../../../chunk-DSKNJXB4.js";import"../../../chunk-5XL2RXFU.js";import"../../../chunk-2FYFAAAK.js";import"../../../chunk-22I55W37.js";import"../../../chunk-3QB2ZQXK.js";import"../../../chunk-V7U33NF2.js";import"../../../chunk-6WY6ZXJG.js";import"../../../chunk-IYHO4XQX.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-BPXEFVSQ.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-BSPCSC45.js";
@@ -1 +1 @@
1
- export{useSectionOps}from"../../../chunk-FOOK54T2.js";import"../../../chunk-GXRS52JD.js";import"../../../chunk-FHCKFOCD.js";import"../../../chunk-MQA7OFRA.js";import"../../../chunk-TCAAOYQY.js";import"../../../chunk-KXTXYINN.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-MXECWHRJ.js";import"../../../chunk-BPXEFVSQ.js";import"../../../chunk-WHS6Y55E.js";import"../../../chunk-K56YDHYQ.js";import"../../../chunk-ZEH6QLBH.js";import"../../../chunk-AGWKB77Q.js";import"../../../chunk-FIVU2COQ.js";import"../../../chunk-RPMSET77.js";import"../../../chunk-FM6JO4WF.js";import"../../../chunk-KFV7N2DJ.js";import"../../../chunk-HZSZT3BE.js";import"../../../chunk-KRL3IUV3.js";import"../../../chunk-Y2T3JX7K.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-JACEEVVF.js";import"../../../chunk-S3DUFDQ6.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-6NJHYXJM.js";import"../../../chunk-P2VEMZH5.js";import"../../../chunk-YU3WHLGI.js";import"../../../chunk-LF3FUSCQ.js";import"../../../chunk-TGZCD6IP.js";import"../../../chunk-KXM6YRG2.js";
1
+ export{useSectionOps}from"../../../chunk-RMQDKVGW.js";import"../../../chunk-DCBSRZ6Z.js";import"../../../chunk-FHCKFOCD.js";import"../../../chunk-MQA7OFRA.js";import"../../../chunk-TCAAOYQY.js";import"../../../chunk-FEF3OQRT.js";import"../../../chunk-RPMSET77.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-6QSFJCJT.js";import"../../../chunk-BPXEFVSQ.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-WHS6Y55E.js";import"../../../chunk-K56YDHYQ.js";import"../../../chunk-ZEH6QLBH.js";import"../../../chunk-AGWKB77Q.js";import"../../../chunk-FIVU2COQ.js";import"../../../chunk-FM6JO4WF.js";import"../../../chunk-KFV7N2DJ.js";import"../../../chunk-HZSZT3BE.js";import"../../../chunk-KRL3IUV3.js";import"../../../chunk-Y2T3JX7K.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-JACEEVVF.js";import"../../../chunk-S3DUFDQ6.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-6NJHYXJM.js";import"../../../chunk-P2VEMZH5.js";import"../../../chunk-YU3WHLGI.js";import"../../../chunk-LF3FUSCQ.js";import"../../../chunk-TGZCD6IP.js";import"../../../chunk-KXM6YRG2.js";
@@ -1 +1 @@
1
- export{editorRootFocus,isSaveShortcut,useEaselKeyTarget,useEaselSaveKey,useEaselUndoKeys}from"../../chunk-YHEYJKQL.js";import"../../chunk-MQA7OFRA.js";import"../../chunk-KXTXYINN.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-AGWKB77Q.js";import"../../chunk-RPMSET77.js";import"../../chunk-HZSZT3BE.js";import"../../chunk-KRL3IUV3.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-YU3WHLGI.js";import"../../chunk-LF3FUSCQ.js";import"../../chunk-TGZCD6IP.js";import"../../chunk-KXM6YRG2.js";
1
+ export{editorRootFocus,isSaveShortcut,useEaselKeyTarget,useEaselSaveKey,useEaselUndoKeys}from"../../chunk-MYAJ7MGI.js";import"../../chunk-MQA7OFRA.js";import"../../chunk-FEF3OQRT.js";import"../../chunk-RPMSET77.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-AGWKB77Q.js";import"../../chunk-HZSZT3BE.js";import"../../chunk-KRL3IUV3.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-YU3WHLGI.js";import"../../chunk-LF3FUSCQ.js";import"../../chunk-TGZCD6IP.js";import"../../chunk-KXM6YRG2.js";
@@ -1,5 +1,5 @@
1
1
  import { A as AutosaveSnapshot } from '../../engine-CvXpFE86.js';
2
- import { a as SaveIconState } from '../../types-B3iSHX-w.js';
2
+ import { a as SaveIconState } from '../../types-SrGNzYeO.js';
3
3
  import { ScreenSaveStatusWords } from '../words.js';
4
4
  import '../../types-Cy7rdmXt.js';
5
5
  import '../../wordFit-7XpmhcaW.js';
@@ -2,7 +2,7 @@ import * as react from 'react';
2
2
  import { ReactNode, MouseEvent, ComponentType } from 'react';
3
3
  import { Data } from '../../blocks/index.js';
4
4
  import { C as CanvasTarget } from '../../watch-Unf6SfUf.js';
5
- import { D as DeviceOption } from '../../types-B3iSHX-w.js';
5
+ import { D as DeviceOption } from '../../types-SrGNzYeO.js';
6
6
  import { P as Place } from '../../types-Dq180WRV.js';
7
7
  import { M as MeasuredCanvas, C as CanvasDragModel } from '../../CanvasDragLayer-NZpaX6aq.js';
8
8
  import { E as EaselContextMenuItem } from '../../types-BbOBWXMP.js';
@@ -15,7 +15,7 @@ import { HostProduct } from './host-chrome.js';
15
15
  import { EaselSession } from './session.js';
16
16
  import { SharedSectionUse, SharedSection } from './shared-section-types.js';
17
17
  import { AddTarget } from './document/add-target-types.js';
18
- import { SlotConfigView } from './document/content-tree.js';
18
+ import { SlotConfigView, SlotChild } from './document/content-tree.js';
19
19
  import '../../types-BljCVdzR.js';
20
20
  import '../../data/index.js';
21
21
  import '../../resolve-Bz4mszpL.js';
@@ -781,10 +781,28 @@ interface ScreenSlotAction {
781
781
  */
782
782
  run: () => string | null | void | Promise<string | null | void>;
783
783
  }
784
+ /**
785
+ * The slot fields of `node` whose row the panel shows, in the config's order —
786
+ * THE ONE READER of "does a slot follow its row" (plan 2026-10-23 §6.0, "Batch
787
+ * 3 must do" item 2, GG 2026-10-26). A slot field that carries the shell's
788
+ * show-when rule (`./fields` `fieldIsShown`) and reads false for the node's own
789
+ * values is left out: the panel hides that row, so no Layers tree lists blocks
790
+ * the section no longer draws (the Product Grid's hand-picked products once its
791
+ * content is a Category). Nothing is deleted; the blocks come back with the row.
792
+ *
793
+ * Every Layers tree reads it: {@link screenSlotsOf} (the page editor's), the
794
+ * page tree's run with no `slotsOf`, and the one-section editor's. Where a
795
+ * node's children are FOUND — a drop, the address map, dedupe — is still
796
+ * content-tree's `childSlotsOf`, every slot field.
797
+ */
798
+ declare function shownSlotFieldsOf(config: SlotConfigView, node: ScreenNode): string[];
799
+ /** The children a Layers tree lists under `node`: those of its shown slots
800
+ * ({@link shownSlotFieldsOf}), addressed as `childSlotsOf` addresses them. */
801
+ declare function shownChildSlotsOf(config: SlotConfigView, node: ScreenNode): SlotChild[];
784
802
  /**
785
803
  * The slots of `node` as the screen draws them: the layer's answer
786
- * (`slotsOf`), else — with no `slotsOf`, or none for this node — every slot
787
- * field the config declares, in its order, none of them a rung.
804
+ * (`slotsOf`), else — with no `slotsOf`, or none for this node — the slots
805
+ * {@link shownSlotFieldsOf} answers, in the config's order, none of them a rung.
788
806
  */
789
807
  declare function screenSlotsOf(rules: ScreenBlockRules, config: SlotConfigView, node: ScreenNode): ReadonlyArray<ScreenSlot>;
790
808
  /** The tier a node is NAMED at: a node at the top of the document is a section,
@@ -1581,4 +1599,4 @@ declare function useScreenCanvasTarget(): CanvasTarget | null;
1581
1599
  * engine's plain rows for the selection. */
1582
1600
  declare function useScreenInspectorPanel(): ComponentType<ScreenInspectorPanelProps>;
1583
1601
 
1584
- export { type NodeDefaults, SELECTION_MODE, type ScreenBlockLook, type ScreenBlockRules, type ScreenBridges, type ScreenCanvas, type ScreenCanvasDrag, type ScreenCanvasDragContext, type ScreenCanvasHeadProps, ScreenCanvasTargetProvider, type ScreenDevices, type ScreenDocumentOps, type ScreenDragItem, type ScreenInspector, type ScreenInspectorMode, type ScreenInspectorPanelProps, type ScreenLeftPanel, type ScreenLeftView, type ScreenLeftViewFrame, type ScreenLeftViewRules, type ScreenMainAction, type ScreenMediaDrop, type ScreenMediaFile, type ScreenMenuItem, type ScreenMenuRows, type ScreenNewNode, type ScreenNode, type ScreenNodeActions, type ScreenNodeLevel, type ScreenNodeMaker, type ScreenPartMode, type ScreenParts, ScreenPartsProvider, type ScreenPinnedBand, type ScreenPinnedNodes, type ScreenRailItem, type ScreenSelector, type ScreenSharedSections, type ScreenSlot, type ScreenSlotAction, type ScreenSlotMode, type ScreenStyleClipboard, type ScreenStyleDocument, type ScreenStylePastePlan, type ScreenToastExtra, type ScreenTree, type ScreenTreeFolds, type ScreenTreeRows, isPinnedFirst, isPinnedLast, isSelectionMode, isSlotMode, sameInspectorMode, screenSlotsOf, useScreenBlockLook, useScreenBlockRules, useScreenBridges, useScreenCanvasDrag, useScreenCanvasFrame, useScreenCanvasHead, useScreenCanvasTarget, useScreenDevices, useScreenDocumentLabel, useScreenDocumentPass, useScreenInspectorPanel, useScreenLeftView, useScreenNodeKeys, useScreenNotify, useScreenOwnerName, useScreenParts, useScreenPickFollowsSelection, useScreenPinned, useScreenSaveSwitch, useScreenStorageNamespace, useScreenStyleClipboard, useStandaloneScreenBridges };
1602
+ export { type NodeDefaults, SELECTION_MODE, type ScreenBlockLook, type ScreenBlockRules, type ScreenBridges, type ScreenCanvas, type ScreenCanvasDrag, type ScreenCanvasDragContext, type ScreenCanvasHeadProps, ScreenCanvasTargetProvider, type ScreenDevices, type ScreenDocumentOps, type ScreenDragItem, type ScreenInspector, type ScreenInspectorMode, type ScreenInspectorPanelProps, type ScreenLeftPanel, type ScreenLeftView, type ScreenLeftViewFrame, type ScreenLeftViewRules, type ScreenMainAction, type ScreenMediaDrop, type ScreenMediaFile, type ScreenMenuItem, type ScreenMenuRows, type ScreenNewNode, type ScreenNode, type ScreenNodeActions, type ScreenNodeLevel, type ScreenNodeMaker, type ScreenPartMode, type ScreenParts, ScreenPartsProvider, type ScreenPinnedBand, type ScreenPinnedNodes, type ScreenRailItem, type ScreenSelector, type ScreenSharedSections, type ScreenSlot, type ScreenSlotAction, type ScreenSlotMode, type ScreenStyleClipboard, type ScreenStyleDocument, type ScreenStylePastePlan, type ScreenToastExtra, type ScreenTree, type ScreenTreeFolds, type ScreenTreeRows, isPinnedFirst, isPinnedLast, isSelectionMode, isSlotMode, sameInspectorMode, screenSlotsOf, shownChildSlotsOf, shownSlotFieldsOf, useScreenBlockLook, useScreenBlockRules, useScreenBridges, useScreenCanvasDrag, useScreenCanvasFrame, useScreenCanvasHead, useScreenCanvasTarget, useScreenDevices, useScreenDocumentLabel, useScreenDocumentPass, useScreenInspectorPanel, useScreenLeftView, useScreenNodeKeys, useScreenNotify, useScreenOwnerName, useScreenParts, useScreenPickFollowsSelection, useScreenPinned, useScreenSaveSwitch, useScreenStorageNamespace, useScreenStyleClipboard, useStandaloneScreenBridges };
@@ -1 +1 @@
1
- export{SELECTION_MODE,ScreenCanvasTargetProvider,ScreenPartsProvider,isPinnedFirst,isPinnedLast,isSelectionMode,isSlotMode,sameInspectorMode,screenSlotsOf,useScreenBlockLook,useScreenBlockRules,useScreenBridges,useScreenCanvasDrag,useScreenCanvasFrame,useScreenCanvasHead,useScreenCanvasTarget,useScreenDevices,useScreenDocumentLabel,useScreenDocumentPass,useScreenInspectorPanel,useScreenLeftView,useScreenNodeKeys,useScreenNotify,useScreenOwnerName,useScreenParts,useScreenPickFollowsSelection,useScreenPinned,useScreenSaveSwitch,useScreenStorageNamespace,useScreenStyleClipboard,useStandaloneScreenBridges}from"../../chunk-GXRS52JD.js";import"../../chunk-FHCKFOCD.js";import"../../chunk-MQA7OFRA.js";import"../../chunk-TCAAOYQY.js";import"../../chunk-KXTXYINN.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-MXECWHRJ.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-WHS6Y55E.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-AGWKB77Q.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-RPMSET77.js";import"../../chunk-FM6JO4WF.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-HZSZT3BE.js";import"../../chunk-KRL3IUV3.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-JACEEVVF.js";import"../../chunk-S3DUFDQ6.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-6NJHYXJM.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-YU3WHLGI.js";import"../../chunk-LF3FUSCQ.js";import"../../chunk-TGZCD6IP.js";import"../../chunk-KXM6YRG2.js";
1
+ export{SELECTION_MODE,ScreenCanvasTargetProvider,ScreenPartsProvider,isPinnedFirst,isPinnedLast,isSelectionMode,isSlotMode,sameInspectorMode,screenSlotsOf,shownChildSlotsOf,shownSlotFieldsOf,useScreenBlockLook,useScreenBlockRules,useScreenBridges,useScreenCanvasDrag,useScreenCanvasFrame,useScreenCanvasHead,useScreenCanvasTarget,useScreenDevices,useScreenDocumentLabel,useScreenDocumentPass,useScreenInspectorPanel,useScreenLeftView,useScreenNodeKeys,useScreenNotify,useScreenOwnerName,useScreenParts,useScreenPickFollowsSelection,useScreenPinned,useScreenSaveSwitch,useScreenStorageNamespace,useScreenStyleClipboard,useStandaloneScreenBridges}from"../../chunk-DCBSRZ6Z.js";import"../../chunk-FHCKFOCD.js";import"../../chunk-MQA7OFRA.js";import"../../chunk-TCAAOYQY.js";import"../../chunk-FEF3OQRT.js";import"../../chunk-RPMSET77.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-6QSFJCJT.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-YCSZAP7T.js";import"../../chunk-WHS6Y55E.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-AGWKB77Q.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-FM6JO4WF.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-HZSZT3BE.js";import"../../chunk-KRL3IUV3.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-JACEEVVF.js";import"../../chunk-S3DUFDQ6.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-6NJHYXJM.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-YU3WHLGI.js";import"../../chunk-LF3FUSCQ.js";import"../../chunk-TGZCD6IP.js";import"../../chunk-KXM6YRG2.js";
@@ -1,4 +1,4 @@
1
- import { a as SaveWords } from '../words-Cm8PMYn0.js';
1
+ import { a as SaveWords } from '../words-BAx3u2dD.js';
2
2
  import { N as NoticeWords, C as ChromeWords } from '../words-DYu4iBrR.js';
3
3
  import { C as CopyWords } from '../words-Cf5VT2Ic.js';
4
4
  import { D as DragWords } from '../words-SD4neL0n.js';
@@ -14,7 +14,7 @@ import { T as TextStylesWords } from '../words-B5Gb7KFq.js';
14
14
  import { T as TreeWords } from '../words-Cl9xMUYY.js';
15
15
  import * as react from 'react';
16
16
  import { ReactNode } from 'react';
17
- import '../types-B3iSHX-w.js';
17
+ import '../types-SrGNzYeO.js';
18
18
  import '../types-Cy7rdmXt.js';
19
19
  import '../wordFit-7XpmhcaW.js';
20
20
  import '../panelWidths-DgQXiPXU.js';
@@ -1,2 +1,2 @@
1
- import{DEFAULT_SCREEN_WORDS as r}from"../chunk-IYHO4XQX.js";import{DEFAULT_STYLE_CLIPBOARD_WORDS as o}from"../chunk-6WY6ZXJG.js";import{DEFAULT_TEXT_STYLES_WORDS as n}from"../chunk-OGH6CC3E.js";import{DEFAULT_PICK_WORDS as t}from"../chunk-OFBZOI6W.js";import{DEFAULT_CANVAS_WORDS as c}from"../chunk-TBY3DFKS.js";import{DEFAULT_TREE_WORDS as e}from"../chunk-K56YDHYQ.js";import{DEFAULT_NODE_MENU_WORDS as m}from"../chunk-WK3AFPXY.js";import{DEFAULT_PANEL_WORDS as i}from"../chunk-KFV7N2DJ.js";import{DEFAULT_SAVE_WORDS as s}from"../chunk-H6DDIBQ4.js";import{DEFAULT_CHROME_WORDS as u,DEFAULT_NOTICE_WORDS as f}from"../chunk-AJSDWWJW.js";import{DEFAULT_RAIL_WORDS as p}from"../chunk-2OAZYSWJ.js";import{DEFAULT_LOCK_WORDS as l}from"../chunk-RE4LP46F.js";import{DEFAULT_COPY_WORDS as h}from"../chunk-KRL3IUV3.js";import{DEFAULT_FIELDS_WORDS as j}from"../chunk-JACEEVVF.js";import{stringsContext as k}from"../chunk-MFIRYGHW.js";import{DEFAULT_DRAG_WORDS as a}from"../chunk-TQ5Y6S2X.js";import{useContext as Y,useMemo as W}from"react";import{jsx as y}from"react/jsx-runtime";var F={notice:f,lock:l,save:s,chrome:u,rail:p,tree:e,panel:i,fields:j,pick:t,drag:a,menu:m,styleClipboard:o,copy:h,canvas:c,textStyles:n,screen:r},d=r=>"object"==typeof r&&null!==r;function v(r,o){const n={};for(const t of Object.keys(r)){const c=r[t],e=o[t];null==e?n[t]=c:d(c)?n[t]=d(e)?v(c,e):c:n[t]=typeof e==typeof c?e:c}return n}function D(r,o){return o?v(r,o):r}function J({value:r,locale:o,children:n}){const t=k(),c=Y(t),e=c?.strings??F,m=o??c?.locale??"en",i=W(()=>({strings:D(e,r),locale:m}),[e,r,m]);/* @__PURE__ */
1
+ import{DEFAULT_STYLE_CLIPBOARD_WORDS as r}from"../chunk-6WY6ZXJG.js";import{DEFAULT_NODE_MENU_WORDS as o}from"../chunk-WK3AFPXY.js";import{DEFAULT_SCREEN_WORDS as n}from"../chunk-IYHO4XQX.js";import{DEFAULT_TEXT_STYLES_WORDS as t}from"../chunk-OGH6CC3E.js";import{DEFAULT_CANVAS_WORDS as c}from"../chunk-TBY3DFKS.js";import{DEFAULT_TREE_WORDS as e}from"../chunk-K56YDHYQ.js";import{DEFAULT_PANEL_WORDS as m}from"../chunk-KFV7N2DJ.js";import{DEFAULT_PICK_WORDS as i}from"../chunk-OFBZOI6W.js";import{DEFAULT_SAVE_WORDS as s}from"../chunk-H6DDIBQ4.js";import{DEFAULT_CHROME_WORDS as u,DEFAULT_NOTICE_WORDS as f}from"../chunk-AJSDWWJW.js";import{DEFAULT_RAIL_WORDS as p}from"../chunk-2OAZYSWJ.js";import{DEFAULT_LOCK_WORDS as l}from"../chunk-RE4LP46F.js";import{DEFAULT_COPY_WORDS as h}from"../chunk-KRL3IUV3.js";import{DEFAULT_FIELDS_WORDS as j}from"../chunk-JACEEVVF.js";import{stringsContext as k}from"../chunk-MFIRYGHW.js";import{DEFAULT_DRAG_WORDS as a}from"../chunk-TQ5Y6S2X.js";import{useContext as Y,useMemo as W}from"react";import{jsx as y}from"react/jsx-runtime";var F={notice:f,lock:l,save:s,chrome:u,rail:p,tree:e,panel:m,fields:j,pick:i,drag:a,menu:o,styleClipboard:r,copy:h,canvas:c,textStyles:t,screen:n},d=r=>"object"==typeof r&&null!==r;function v(r,o){const n={};for(const t of Object.keys(r)){const c=r[t],e=o[t];null==e?n[t]=c:d(c)?n[t]=d(e)?v(c,e):c:n[t]=typeof e==typeof c?e:c}return n}function D(r,o){return o?v(r,o):r}function J({value:r,locale:o,children:n}){const t=k(),c=Y(t),e=c?.strings??F,m=o??c?.locale??"en",i=W(()=>({strings:D(e,r),locale:m}),[e,r,m]);/* @__PURE__ */
2
2
  return y(t.Provider,{value:i,children:n})}function O(){return Y(k())?.strings??F}function H(){return Y(k())?.locale??"en"}export{F as DEFAULT_EASEL_STRINGS,J as EaselStringsProvider,D as mergeEaselStrings,H as useEaselLocale,O as useEaselStrings};
@@ -1,32 +1,32 @@
1
- import{hexReadout as e,ColourWindow as s,typedHex as t}from"../chunk-U6LJ5UKD.js";import{DEFAULT_TEXT_STYLES_WORDS as a}from"../chunk-OGH6CC3E.js";export{DEFAULT_TEXT_STYLES_WORDS}from"../chunk-OGH6CC3E.js";import"../chunk-OFBZOI6W.js";import{FieldSlider as n}from"../chunk-ZEH6QLBH.js";import{TEXT_STYLE_KINDS as l,canAddTextStyle as i,TEXT_STYLE_MAX as r,isDefaultTextStyle as o,CAMPAIGN_TEXT_STYLE_SETTINGS as d,TEXT_STYLE_SETTINGS as c,textStyleRowSize as u,describeTextStyle as m,updateTextStyle as h,textStyleCaseCss as f,TEXT_STYLE_CASES as p,addTextStyle as v,removeTextStyle as y,TEXT_STYLE_RANGES as S}from"../chunk-YHZSBL2N.js";export{CAMPAIGN_TEXT_STYLE_SETTINGS,TEXT_STYLE_CASES,TEXT_STYLE_CASE_CSS,TEXT_STYLE_DEFAULT_COUNT,TEXT_STYLE_KINDS,TEXT_STYLE_MAX,TEXT_STYLE_RANGES,TEXT_STYLE_SETTINGS,addTextStyle,canAddTextStyle,defaultTextStyles,describeTextStyle,isDefaultTextStyle,isTextStyleCase,removeTextStyle,resolveTextStyle,textStyleCaseCss,textStyleCaseOfCss,textStyleRowSize,updateTextStyle,weightWord}from"../chunk-YHZSBL2N.js";import{FieldSelect as g}from"../chunk-KFWNGPW3.js";import"../chunk-JACEEVVF.js";import{useWords as b}from"../chunk-MFIRYGHW.js";import{withTip as k}from"../chunk-P2VEMZH5.js";import{hsvToHex as N,Tooltip as C,ColorSwatch as x,IconButton as T}from"efficient-shell/ui";import{useState as w,useRef as E,useId as z,useEffect as O,Fragment as _}from"react";import{TrashIcon as L,ChevronIcon as A,BoldIcon as j,ItalicIcon as M,CaseLowerIcon as $,CaseCapitalizedIcon as W,CaseUpperIcon as Y,CaseNormalIcon as I}from"efficient-shell/icons/efficient";import{jsxs as D,jsx as X,Fragment as F}from"react/jsx-runtime";var H=`conic-gradient(${[0,60,120,180,240,300,0].map(e=>N({h:e,s:1,v:1})).join(", ")})`;function P({value:t,hex:a,colours:n,label:l,followsWord:i,anyWord:r,onChange:o,readOnly:d=!1}){const[c,u]=w(!1),m=E(null),h=E(null),f=z(),p=void 0!==t&&n.some(e=>e.key===t),v=void 0!==t&&!p;return O(()=>{if(!c)return;const e=m.current?.ownerDocument;if(!e)return;const s=e=>{m.current&&!m.current.contains(e.target)&&u(!1)};return e.addEventListener("click",s,!0),()=>e.removeEventListener("click",s,!0)},[c]),/* @__PURE__ */D("div",{ref:m,className:"es-ts-set","data-ts-setting":"color",children:[
1
+ import{DEFAULT_TEXT_STYLES_WORDS as e}from"../chunk-OGH6CC3E.js";export{DEFAULT_TEXT_STYLES_WORDS}from"../chunk-OGH6CC3E.js";import{FieldSlider as s}from"../chunk-ZEH6QLBH.js";import{hexReadout as t,ColourWindow as a,typedHex as n}from"../chunk-U6LJ5UKD.js";import"../chunk-OFBZOI6W.js";import{TEXT_STYLE_KINDS as l,canAddTextStyle as i,TEXT_STYLE_MAX as r,isDefaultTextStyle as o,CAMPAIGN_TEXT_STYLE_SETTINGS as d,TEXT_STYLE_SETTINGS as c,textStyleRowSize as u,describeTextStyle as m,updateTextStyle as h,textStyleCaseCss as f,TEXT_STYLE_CASES as p,addTextStyle as v,removeTextStyle as y,TEXT_STYLE_RANGES as S}from"../chunk-YHZSBL2N.js";export{CAMPAIGN_TEXT_STYLE_SETTINGS,TEXT_STYLE_CASES,TEXT_STYLE_CASE_CSS,TEXT_STYLE_DEFAULT_COUNT,TEXT_STYLE_KINDS,TEXT_STYLE_MAX,TEXT_STYLE_RANGES,TEXT_STYLE_SETTINGS,addTextStyle,canAddTextStyle,defaultTextStyles,describeTextStyle,isDefaultTextStyle,isTextStyleCase,removeTextStyle,resolveTextStyle,textStyleCaseCss,textStyleCaseOfCss,textStyleRowSize,updateTextStyle,weightWord}from"../chunk-YHZSBL2N.js";import{FieldSelect as g}from"../chunk-KFWNGPW3.js";import"../chunk-JACEEVVF.js";import{useWords as b}from"../chunk-MFIRYGHW.js";import{withTip as k}from"../chunk-P2VEMZH5.js";import{hsvToHex as N,Tooltip as C,ColorSwatch as x,IconButton as T}from"efficient-shell/ui";import{useState as w,useRef as E,useId as z,useEffect as O,Fragment as _}from"react";import{TrashIcon as L,ChevronIcon as A,BoldIcon as j,ItalicIcon as M,CaseLowerIcon as $,CaseCapitalizedIcon as W,CaseUpperIcon as Y,CaseNormalIcon as I}from"efficient-shell/icons/efficient";import{jsxs as D,jsx as X,Fragment as F}from"react/jsx-runtime";var H=`conic-gradient(${[0,60,120,180,240,300,0].map(e=>N({h:e,s:1,v:1})).join(", ")})`;function P({value:e,hex:s,colours:n,label:l,followsWord:i,anyWord:r,onChange:o,readOnly:d=!1}){const[c,u]=w(!1),m=E(null),h=E(null),f=z(),p=void 0!==e&&n.some(s=>s.key===e),v=void 0!==e&&!p;return O(()=>{if(!c)return;const e=m.current?.ownerDocument;if(!e)return;const s=e=>{m.current&&!m.current.contains(e.target)&&u(!1)};return e.addEventListener("click",s,!0),()=>e.removeEventListener("click",s,!0)},[c]),/* @__PURE__ */D("div",{ref:m,className:"es-ts-set","data-ts-setting":"color",children:[
2
2
  /* @__PURE__ */D("div",{className:"es-ts-top",children:[
3
3
  /* @__PURE__ */X("span",{className:"es-ts-sub",children:l}),
4
- /* @__PURE__ */X("span",{className:"es-ts-colour-read",children:a?e(a):i})]}),
5
- /* @__PURE__ */D("div",{className:"es-ts-swatches",role:"group","aria-label":l,children:[n.map(s=>/* @__PURE__ */X(C,{content:`${s.name} · ${e(s.value)}`,children:/* @__PURE__ */X(x,{color:s.value,size:"sm",className:"es-ts-swatch","aria-label":s.name,selected:t===s.key,disabled:d,onClick:()=>o(s.key)})},s.key)),
6
- /* @__PURE__ */X(C,{content:r,children:/* @__PURE__ */X(x,{ref:h,color:H,size:"sm",className:"es-ts-swatch es-ts-swatch--any","aria-label":r,selected:v,"aria-expanded":c,"aria-controls":c?f:void 0,disabled:d,onClick:()=>u(e=>!e)})})]}),c?/* @__PURE__ */X(s,{id:f,value:a??"",onChange:e=>o(e),label:l,readOnly:d,onClose:()=>{u(!1),h.current?.focus()}}):null]})}function B({styles:e,onChange:s,fonts:t,colours:n=[],settings:c=d,auto:u=[],fallback:m,sample:h,openId:f,defaultOpenId:p=null,onOpenChange:S,onAdd:g,rowActions:N,onRemove:C,max:x=r,device:T="desktop",readOnly:_=!1}){const A=b("textStyles",a),j=z(),[M,$]=w(p),W=void 0!==f?f:M,Y=e=>{void 0===f&&$(e),S?.(e)},I=E(null),[H,P]=w(null);O(()=>{if(!H||!I.current)return;const e=[...I.current.querySelectorAll(".es-ts-item")].find(e=>e.dataset.tsId===H.id),s=e?e.querySelector(".es-ts-row"):I.current.querySelector(`.es-ts-add[data-ts-kind="${H.kind}"]`);s?.focus(),P(null)},[H]);/* @__PURE__ */
7
- return X("div",{className:"es-ts",ref:I,children:l.map(a=>{const l=e.filter(e=>e.kind===a),r=!i(e,a,x),d=!_&&!r;/* @__PURE__ */
8
- return D(G,{label:A.groups[a],children:[l.map(a=>{const l=N?.(a),i=null!=l&&!1!==l,r=Boolean(C)&&!_&&!o(a);/* @__PURE__ */
9
- return X(R,{style:a,fonts:t,colours:n,settings:c,auto:u,fallback:m,sample:h,device:T,readOnly:_,open:W===a.id,onOpenChange:e=>Y(e?a.id:null),onChange:t=>s(e.map(e=>e.id===t.id?t:e)),actions:r||i?/* @__PURE__ */D(F,{children:[r?k(A.remove,/* @__PURE__ */X("button",{type:"button",className:"es-ts-del","aria-label":A.removeNamed({name:a.name}),onClick:()=>(t=>{if(_||!C)return;const a=y(e,t.id,{name:A.styleName});if(!a)return;const n=e.filter(e=>e.kind===t.kind),l=n[n.indexOf(t)+1];W===t.id&&Y(null),s(a.styles),C(a.removed),P({id:l?.id??null,kind:t.kind})})(a),children:/* @__PURE__ */X(L,{size:14,"aria-hidden":"true"})})):null,i?l:null]}):null},a.id)}),k(!_&&r?A.full({kind:a,max:x}):void 0,/* @__PURE__ */D("button",{type:"button",className:"es-ts-add","data-ts-kind":a,disabled:_,"aria-disabled":!(_||!r)||void 0,"aria-describedby":!_&&r?`${j}-full-${a}`:void 0,onClick:()=>{d&&(t=>{if(_)return;const a=v(e,t,{max:x,name:A.styleName,make:g});a&&s(a.styles)})(a)},children:[
10
- /* @__PURE__ */X("span",{className:"es-ts-add-word",children:A.add[a]}),
11
- /* @__PURE__ */X("span",{className:"es-ts-count",children:A.count({n:l.length,max:x})})]})),_||!r?null:/* @__PURE__ */X("span",{id:`${j}-full-${a}`,className:"es-vh",children:A.full({kind:a,max:x})})]},a)})})}function G({label:e,children:s}){const t=z();/* @__PURE__ */
4
+ /* @__PURE__ */X("span",{className:"es-ts-colour-read",children:s?t(s):i})]}),
5
+ /* @__PURE__ */D("div",{className:"es-ts-swatches",role:"group","aria-label":l,children:[n.map(s=>/* @__PURE__ */X(C,{content:`${s.name} · ${t(s.value)}`,children:/* @__PURE__ */X(x,{color:s.value,size:"sm",className:"es-ts-swatch","aria-label":s.name,selected:e===s.key,disabled:d,onClick:()=>o(s.key)})},s.key)),
6
+ /* @__PURE__ */X(C,{content:r,children:/* @__PURE__ */X(x,{ref:h,color:H,size:"sm",className:"es-ts-swatch es-ts-swatch--any","aria-label":r,selected:v,"aria-expanded":c,"aria-controls":c?f:void 0,disabled:d,onClick:()=>u(e=>!e)})})]}),c?/* @__PURE__ */X(a,{id:f,value:s??"",onChange:e=>o(e),label:l,readOnly:d,onClose:()=>{u(!1),h.current?.focus()}}):null]})}function B({styles:s,onChange:t,fonts:a,colours:n=[],settings:c=d,auto:u=[],fallback:m,sample:h,openId:f,defaultOpenId:p=null,onOpenChange:S,onAdd:g,rowActions:N,onRemove:C,max:x=r,device:T="desktop",readOnly:_=!1}){const A=b("textStyles",e),j=z(),[M,$]=w(p),W=void 0!==f?f:M,Y=e=>{void 0===f&&$(e),S?.(e)},I=E(null),[H,P]=w(null);O(()=>{if(!H||!I.current)return;const e=[...I.current.querySelectorAll(".es-ts-item")].find(e=>e.dataset.tsId===H.id),s=e?e.querySelector(".es-ts-row"):I.current.querySelector(`.es-ts-add[data-ts-kind="${H.kind}"]`);s?.focus(),P(null)},[H]);/* @__PURE__ */
7
+ return X("div",{className:"es-ts",ref:I,children:l.map(e=>{const l=s.filter(s=>s.kind===e),r=!i(s,e,x),d=!_&&!r;/* @__PURE__ */
8
+ return D(G,{label:A.groups[e],children:[l.map(e=>{const l=N?.(e),i=null!=l&&!1!==l,r=Boolean(C)&&!_&&!o(e);/* @__PURE__ */
9
+ return X(R,{style:e,fonts:a,colours:n,settings:c,auto:u,fallback:m,sample:h,device:T,readOnly:_,open:W===e.id,onOpenChange:s=>Y(s?e.id:null),onChange:e=>t(s.map(s=>s.id===e.id?e:s)),actions:r||i?/* @__PURE__ */D(F,{children:[r?k(A.remove,/* @__PURE__ */X("button",{type:"button",className:"es-ts-del","aria-label":A.removeNamed({name:e.name}),onClick:()=>(e=>{if(_||!C)return;const a=y(s,e.id,{name:A.styleName});if(!a)return;const n=s.filter(s=>s.kind===e.kind),l=n[n.indexOf(e)+1];W===e.id&&Y(null),t(a.styles),C(a.removed),P({id:l?.id??null,kind:e.kind})})(e),children:/* @__PURE__ */X(L,{size:14,"aria-hidden":"true"})})):null,i?l:null]}):null},e.id)}),k(!_&&r?A.full({kind:e,max:x}):void 0,/* @__PURE__ */D("button",{type:"button",className:"es-ts-add","data-ts-kind":e,disabled:_,"aria-disabled":!(_||!r)||void 0,"aria-describedby":!_&&r?`${j}-full-${e}`:void 0,onClick:()=>{d&&(e=>{if(_)return;const a=v(s,e,{max:x,name:A.styleName,make:g});a&&t(a.styles)})(e)},children:[
10
+ /* @__PURE__ */X("span",{className:"es-ts-add-word",children:A.add[e]}),
11
+ /* @__PURE__ */X("span",{className:"es-ts-count",children:A.count({n:l.length,max:x})})]})),_||!r?null:/* @__PURE__ */X("span",{id:`${j}-full-${e}`,className:"es-vh",children:A.full({kind:e,max:x})})]},e)})})}function G({label:e,children:s}){const t=z();/* @__PURE__ */
12
12
  return D("section",{className:"es-ts-section","aria-labelledby":t,children:[
13
- /* @__PURE__ */X("div",{className:"es-ts-group",id:t,children:e}),s]})}function R({style:e,fonts:s,colours:t=[],settings:n=d,auto:l=[],fallback:i,sample:r,open:o,onOpenChange:f,onChange:p,actions:v,device:y="desktop",readOnly:S=!1}){const g=b("textStyles",a),k=`${z()}-open-${e.id}`,N=new Set(l),C=c.filter(e=>n.includes(e)),x={...i?.(e)??{},...e.values},T="phone"===y,w=T&&void 0!==e.values.sizePhone?{...x,size:e.values.sizePhone}:x,E=s.find(e=>e.value===x.font),O={fontFamily:E?.family,fontSize:`${u(w.size??16)}px`,fontWeight:x.weight,fontStyle:x.italic?"italic":void 0};/* @__PURE__ */
13
+ /* @__PURE__ */X("div",{className:"es-ts-group",id:t,children:e}),s]})}function R({style:s,fonts:t,colours:a=[],settings:n=d,auto:l=[],fallback:i,sample:r,open:o,onOpenChange:f,onChange:p,actions:v,device:y="desktop",readOnly:S=!1}){const g=b("textStyles",e),k=`${z()}-open-${s.id}`,N=new Set(l),C=c.filter(e=>n.includes(e)),x={...i?.(s)??{},...s.values},T="phone"===y,w=T&&void 0!==s.values.sizePhone?{...x,size:s.values.sizePhone}:x,E=t.find(e=>e.value===x.font),O={fontFamily:E?.family,fontSize:`${u(w.size??16)}px`,fontWeight:x.weight,fontStyle:x.italic?"italic":void 0};/* @__PURE__ */
14
14
  return D(_,{children:[
15
- /* @__PURE__ */D("div",{className:"es-ts-item","data-ts-id":e.id,children:[
15
+ /* @__PURE__ */D("div",{className:"es-ts-item","data-ts-id":s.id,children:[
16
16
  /* @__PURE__ */D("button",{type:"button",className:"es-ts-row","aria-expanded":o,"aria-controls":o?k:void 0,onClick:()=>f(!o),children:[
17
17
  /* @__PURE__ */X("span",{className:"es-ts-chev","aria-hidden":"true",children:/* @__PURE__ */X(A,{size:12})}),
18
- /* @__PURE__ */X("span",{className:"es-ts-name",style:O,children:e.name}),
19
- /* @__PURE__ */X("span",{className:"es-ts-meta",children:m(w,s,g,{autoSize:N.has("size")&&w===x&&void 0===e.values.size})})]}),v?/* @__PURE__ */X("div",{className:"es-ts-actions",children:v}):null]}),o?/* @__PURE__ */X("div",{className:"es-ts-open",id:k,children:/* @__PURE__ */X(V,{style:e,values:x,fonts:s,colours:t,settings:C,autoSet:N,sample:r??g.sample,words:g,phone:T,readOnly:S,set:s=>p(h([e],e.id,s)[0])})}):null]})}var U={none:I,upper:Y,capitalize:W,lower:$};function V({style:e,values:s,fonts:a,colours:l,settings:i,autoSet:r,sample:o,words:d,phone:c,readOnly:u,set:m}){const h=e.values,p=a.find(e=>e.value===s.font),v=function(e,s){return e?s.find(s=>s.key===e)?.value??t(e)??void 0:void 0}(s.color,l),y=e=>"largestSize"===e||r.has(e),g=e=>y(e)?h[e]:s[e],b=g("size"),N=c&&void 0!==h.sizePhone?h.sizePhone:b,C=g("lineSpacing"),x=g("letterSpacing"),w=y("letterCase")?h.letterCase:s.letterCase,E={fontFamily:p?.family,fontSize:void 0===N?void 0:`${N}px`,fontWeight:s.weight,fontStyle:s.italic?"italic":void 0,lineHeight:void 0===C?void 0:String(C/100),letterSpacing:void 0===x?void 0:`${x}px`,color:v,textTransform:f(w)},z=e=>{const t=S[e],a=y(e);/* @__PURE__ */
20
- return X("div",{className:"es-ts-slider","data-ts-setting":e,children:/* @__PURE__ */X(n,{label:d.settings[e],value:h[e],onChange:s=>m({[e]:s}),min:t.min,max:t.max,step:t.step,shiftStep:t.shiftStep,sliderMin:t.sliderMin,sliderMax:t.sliderMax,unit:t.unit||void 0,styleValue:a?void 0:s[e],auto:a?d.auto:void 0,readOnly:u})},e)};/* @__PURE__ */
18
+ /* @__PURE__ */X("span",{className:"es-ts-name",style:O,children:s.name}),
19
+ /* @__PURE__ */X("span",{className:"es-ts-meta",children:m(w,t,g,{autoSize:N.has("size")&&w===x&&void 0===s.values.size})})]}),v?/* @__PURE__ */X("div",{className:"es-ts-actions",children:v}):null]}),o?/* @__PURE__ */X("div",{className:"es-ts-open",id:k,children:/* @__PURE__ */X(V,{style:s,values:x,fonts:t,colours:a,settings:C,autoSet:N,sample:r??g.sample,words:g,phone:T,readOnly:S,set:e=>p(h([s],s.id,e)[0])})}):null]})}var U={none:I,upper:Y,capitalize:W,lower:$};function V({style:e,values:t,fonts:a,colours:l,settings:i,autoSet:r,sample:o,words:d,phone:c,readOnly:u,set:m}){const h=e.values,p=a.find(e=>e.value===t.font),v=function(e,s){return e?s.find(s=>s.key===e)?.value??n(e)??void 0:void 0}(t.color,l),y=e=>"largestSize"===e||r.has(e),g=e=>y(e)?h[e]:t[e],b=g("size"),N=c&&void 0!==h.sizePhone?h.sizePhone:b,C=g("lineSpacing"),x=g("letterSpacing"),w=y("letterCase")?h.letterCase:t.letterCase,E={fontFamily:p?.family,fontSize:void 0===N?void 0:`${N}px`,fontWeight:t.weight,fontStyle:t.italic?"italic":void 0,lineHeight:void 0===C?void 0:String(C/100),letterSpacing:void 0===x?void 0:`${x}px`,color:v,textTransform:f(w)},z=e=>{const a=S[e],n=y(e);/* @__PURE__ */
20
+ return X("div",{className:"es-ts-slider","data-ts-setting":e,children:/* @__PURE__ */X(s,{label:d.settings[e],value:h[e],onChange:s=>m({[e]:s}),min:a.min,max:a.max,step:a.step,shiftStep:a.shiftStep,sliderMin:a.sliderMin,sliderMax:a.sliderMax,unit:a.unit||void 0,styleValue:n?void 0:t[e],auto:n?d.auto:void 0,readOnly:u})},e)};/* @__PURE__ */
21
21
  return D(F,{children:[
22
- /* @__PURE__ */X("div",{className:"es-ts-preview",style:E,"aria-label":d.preview,children:o}),i.map(t=>{switch(t){case"font":/* @__PURE__ */
23
- return X(Z,{value:h.font,fonts:a,words:d,readOnly:u,set:m},t);case"color":/* @__PURE__ */
24
- return X(K,{value:h.color,hex:v,colours:l,words:d,readOnly:u,set:m},t);case"emphasis":{const e=(s.weight??400)>=600,a=!1!==p?.italic;/* @__PURE__ */
25
- return D("div",{className:"es-ts-set","data-ts-setting":t,children:[
22
+ /* @__PURE__ */X("div",{className:"es-ts-preview",style:E,"aria-label":d.preview,children:o}),i.map(n=>{switch(n){case"font":/* @__PURE__ */
23
+ return X(Z,{value:h.font,fonts:a,words:d,readOnly:u,set:m},n);case"color":/* @__PURE__ */
24
+ return X(K,{value:h.color,hex:v,colours:l,words:d,readOnly:u,set:m},n);case"emphasis":{const e=(t.weight??400)>=600,s=!1!==p?.italic;/* @__PURE__ */
25
+ return D("div",{className:"es-ts-set","data-ts-setting":n,children:[
26
26
  /* @__PURE__ */X("span",{className:"es-ts-sub",children:d.settings.emphasis}),
27
- /* @__PURE__ */D("div",{className:"es-ts-icons",children:[k(d.bold,/* @__PURE__ */X(T,{className:"es-ts-icon","aria-label":d.bold,"aria-pressed":e,disabled:u,onClick:()=>m({weight:e?400:700}),children:/* @__PURE__ */X(j,{size:16})})),u||a?k(d.italic,/* @__PURE__ */X(T,{className:"es-ts-icon","aria-label":d.italic,"aria-pressed":Boolean(s.italic),disabled:u,onClick:()=>m({italic:!s.italic||void 0}),children:/* @__PURE__ */X(M,{size:16})})):/* @__PURE__ */X(T,{className:"es-ts-icon","aria-label":d.italic,"aria-pressed":Boolean(s.italic),"aria-disabled":!0,disabledReason:d.italicMissing,children:/* @__PURE__ */X(M,{size:16})})]})]},t)}case"letterCase":/* @__PURE__ */
28
- return X(q,{value:h.letterCase??s.letterCase,auto:y("letterCase"),words:d,readOnly:u,set:m},t);case"largestSize":return"heading"===e.kind?z(t):null;case"size":return c?(()=>{const e=S.size;/* @__PURE__ */
29
- return X("div",{className:"es-ts-slider","data-ts-setting":"size","data-ts-device":"phone",children:/* @__PURE__ */X(n,{label:d.settings.size,value:h.sizePhone,onChange:e=>m({sizePhone:e}),min:e.min,max:e.max,step:e.step,shiftStep:e.shiftStep,sliderMin:e.sliderMin,sliderMax:e.sliderMax,unit:e.unit||void 0,styleValue:b,readOnly:u})},"size")})():z(t);default:return z(t)}})]})}function Z({value:e,fonts:s,words:t,readOnly:a,set:n}){const l=z();/* @__PURE__ */
27
+ /* @__PURE__ */D("div",{className:"es-ts-icons",children:[k(d.bold,/* @__PURE__ */X(T,{className:"es-ts-icon","aria-label":d.bold,"aria-pressed":e,disabled:u,onClick:()=>m({weight:e?400:700}),children:/* @__PURE__ */X(j,{size:16})})),u||s?k(d.italic,/* @__PURE__ */X(T,{className:"es-ts-icon","aria-label":d.italic,"aria-pressed":Boolean(t.italic),disabled:u,onClick:()=>m({italic:!t.italic||void 0}),children:/* @__PURE__ */X(M,{size:16})})):/* @__PURE__ */X(T,{className:"es-ts-icon","aria-label":d.italic,"aria-pressed":Boolean(t.italic),"aria-disabled":!0,disabledReason:d.italicMissing,children:/* @__PURE__ */X(M,{size:16})})]})]},n)}case"letterCase":/* @__PURE__ */
28
+ return X(q,{value:h.letterCase??t.letterCase,auto:y("letterCase"),words:d,readOnly:u,set:m},n);case"largestSize":return"heading"===e.kind?z(n):null;case"size":return c?(()=>{const e=S.size;/* @__PURE__ */
29
+ return X("div",{className:"es-ts-slider","data-ts-setting":"size","data-ts-device":"phone",children:/* @__PURE__ */X(s,{label:d.settings.size,value:h.sizePhone,onChange:e=>m({sizePhone:e}),min:e.min,max:e.max,step:e.step,shiftStep:e.shiftStep,sliderMin:e.sliderMin,sliderMax:e.sliderMax,unit:e.unit||void 0,styleValue:b,readOnly:u})},"size")})():z(n);default:return z(n)}})]})}function Z({value:e,fonts:s,words:t,readOnly:a,set:n}){const l=z();/* @__PURE__ */
30
30
  return D("div",{className:"es-ts-set","data-ts-setting":"font",children:[
31
31
  /* @__PURE__ */X("span",{className:"es-ts-sub",id:l,children:t.settings.font}),
32
32
  /* @__PURE__ */X(g,{value:e,options:s.map(e=>({label:e.label,value:e.value})),onChange:e=>n({font:e}),ariaLabelledBy:l,readOnly:a})]})}function K({value:e,hex:s,colours:t,words:a,readOnly:n,set:l}){/* @__PURE__ */
@@ -133,6 +133,12 @@ type InspectorUpLevelProps = {
133
133
  * above the inspector head.
134
134
  */
135
135
  inline?: boolean;
136
+ /**
137
+ * The open level's name, drawn under the link — for a level the inspector
138
+ * head does not name ("Map" under "← Los Angeles"). Omit it where the head
139
+ * already names what is open: a third copy of the name is noise.
140
+ */
141
+ title?: string;
136
142
  };
137
143
  type InspectorIconButtonProps = {
138
144
  /** Accessible name, and the tooltip unless `title` says something else. */
@@ -1,4 +1,4 @@
1
- import { S as SaveTone } from './types-B3iSHX-w.js';
1
+ import { S as SaveTone } from './types-SrGNzYeO.js';
2
2
  import { A as AutosaveSnapshot } from './engine-CvXpFE86.js';
3
3
 
4
4
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efficient-easel",
3
- "version": "23.0.0",
3
+ "version": "23.2.0",
4
4
  "description": "Efficient Easel: the EFFICIENT editors' shared engine and chrome: the saved document as pure functions, the published renderer, and the editor frame, panels, Layers tree, text grammar and type-in-place box. Published as editor-shell up to 0.66.0 and as efficient-editor up to 0.95.0.",
5
5
  "license": "UNLICENSED",
6
6
  "author": "Efficient Pty Ltd",
@@ -25,6 +25,7 @@
25
25
  "./draw",
26
26
  "./draw/client",
27
27
  "./blocks",
28
+ "./data",
28
29
  "./text-styles/model",
29
30
  "./screen/lib/session",
30
31
  "./screen/components/PreviewDeviceContext",
@@ -41,7 +42,6 @@
41
42
  "./panel",
42
43
  "./chrome",
43
44
  "./tree",
44
- "./data",
45
45
  "./node-ops",
46
46
  "./drag",
47
47
  "./pick",
@@ -1,2 +0,0 @@
1
- import{noControlField as e}from"./chunk-INRERJU4.js";import{DEFAULT_SCREEN_WORDS as n}from"./chunk-IYHO4XQX.js";import{useWords as r}from"./chunk-MFIRYGHW.js";import{usePreviewDevice as t}from"./chunk-BSPCSC45.js";import{jsx as o}from"react/jsx-runtime";function i(e){return"mobile"===e?"mobile":"desktop"}var c={desktop:null,tablet:n.deviceNote.tablet,mobile:n.deviceNote.mobile},u="data-sf-device-hidden";function d(){/* @__PURE__ */
2
- return o("span",{hidden:!0,[u]:""})}function s({tier:e,render:n,...r}){return i(t())===e?/* @__PURE__ */o(n,{...r}):/* @__PURE__ */o(d,{})}var m="__device";function f(e){const n=e?.[m];return n??null}function l(e){return f(e)?.inner??e}function a(e,n){const r=n.render;return{...n,[m]:{tier:e,inner:n},render:n=>/* @__PURE__ */o(s,{tier:e,render:r,...n})}}function p(){const e=r("screen",n).deviceNote,i=t(),c="desktop"===i?null:e[i];return c?/* @__PURE__ */o("div",{className:"sf-device-scope",children:c}):/* @__PURE__ */o(d,{})}function v(){return e({type:"custom",render:()=>/* @__PURE__ */o(p,{})},"always")}export{m as DEVICE_FIELD_MARKER,u as DEVICE_HIDDEN_ATTR,c as DEVICE_NOTE,a as deviceField,f as deviceMetaOf,v as deviceNote,i as shownTier,l as withoutDeviceGate};