efficient-easel 26.16.0 → 27.1.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 (167) hide show
  1. package/README.md +9 -8
  2. package/dist/blocks/index.d.ts +1 -1
  3. package/dist/canvas/index.d.ts +2 -1
  4. package/dist/canvas/index.js +1 -1
  5. package/dist/chrome/index.js +1 -1
  6. package/dist/{chunk-PVBDKBJB.js → chunk-2EEYFRQM.js} +1 -1
  7. package/dist/{chunk-6DUCOSHW.js → chunk-3FANFZ4D.js} +1 -1
  8. package/dist/{chunk-CWELHADJ.js → chunk-3OOYGEJY.js} +1 -1
  9. package/dist/chunk-53QUHEHK.js +1 -0
  10. package/dist/{chunk-JIP5JNRB.js → chunk-5HYVOOH3.js} +1 -1
  11. package/dist/chunk-6GJEOER4.js +1 -0
  12. package/dist/{chunk-6ATIYLUL.js → chunk-6V6LC7QV.js} +1 -1
  13. package/dist/{chunk-KO47WAWR.js → chunk-7YXWWMBM.js} +1 -1
  14. package/dist/{chunk-GR3XRILS.js → chunk-A5USZ6Z6.js} +1 -1
  15. package/dist/{chunk-Y2T3JX7K.js → chunk-ANBPE45L.js} +1 -1
  16. package/dist/{chunk-KFWNGPW3.js → chunk-C63IB4VW.js} +5 -5
  17. package/dist/chunk-DIOTWSCO.js +1 -0
  18. package/dist/chunk-DTEYSPJE.js +64 -0
  19. package/dist/{chunk-C4TJN6GR.js → chunk-G2VZ4DET.js} +1 -1
  20. package/dist/{chunk-YYD257TD.js → chunk-G7J6SGMF.js} +1 -1
  21. package/dist/chunk-GJ427TZL.js +8 -0
  22. package/dist/chunk-J5VPNHOW.js +1 -0
  23. package/dist/{chunk-QZJKWKGH.js → chunk-JUJEVGLY.js} +1 -1
  24. package/dist/chunk-L36E2WCO.js +19 -0
  25. package/dist/chunk-LAJYMOY3.js +1 -0
  26. package/dist/{chunk-K53PQAMP.js → chunk-LDHUPZBK.js} +1 -1
  27. package/dist/{chunk-SBVIW3KJ.js → chunk-MTWQYLJE.js} +1 -1
  28. package/dist/chunk-OB4KI2AN.js +2 -0
  29. package/dist/{chunk-5U6DUZE2.js → chunk-P3HXHLES.js} +4 -4
  30. package/dist/{chunk-3XECMGXX.js → chunk-QEEW4X64.js} +1 -1
  31. package/dist/{chunk-JDQSRKJG.js → chunk-QPNNWQ24.js} +1 -1
  32. package/dist/{chunk-BFJAEQZ6.js → chunk-RTMDZJNE.js} +1 -1
  33. package/dist/chunk-SDSBXW3V.js +26 -0
  34. package/dist/chunk-SEC6NV6Y.js +18 -0
  35. package/dist/{chunk-W2S2VJOQ.js → chunk-SEH3Q3EL.js} +1 -1
  36. package/dist/chunk-TDEBPOWV.js +3 -0
  37. package/dist/{chunk-QTHQPJWA.js → chunk-TF6NAIV7.js} +1 -1
  38. package/dist/{chunk-6EDVZBUO.js → chunk-TQUEVJOO.js} +1 -1
  39. package/dist/chunk-TUIBPB77.js +5 -0
  40. package/dist/chunk-UMTUKSE6.js +1 -0
  41. package/dist/chunk-VNUXFD4X.js +1 -0
  42. package/dist/{chunk-VBEVZZTV.js → chunk-VTY7OQB5.js} +11 -11
  43. package/dist/chunk-WL57KM5C.js +17 -0
  44. package/dist/{chunk-H4TUOPI7.js → chunk-WW24O7HT.js} +1 -1
  45. package/dist/chunk-XESNAMI3.js +4 -0
  46. package/dist/chunk-XT75WETI.js +1 -0
  47. package/dist/{chunk-MGEXTIZH.js → chunk-XV5D4V2T.js} +1 -1
  48. package/dist/{chunk-CLAADE4J.js → chunk-XWTQTANN.js} +5 -5
  49. package/dist/chunk-YDTEYXQW.js +1 -0
  50. package/dist/chunk-ZNLODQD4.js +3 -0
  51. package/dist/copy/index.d.ts +1 -1
  52. package/dist/copy/index.js +13 -13
  53. package/dist/data/index.d.ts +2 -1
  54. package/dist/data/index.js +1 -1
  55. package/dist/drag/index.js +1 -1
  56. package/dist/draw/index.js +1 -1
  57. package/dist/easel/index.d.ts +2 -2
  58. package/dist/easel/index.js +1 -1
  59. package/dist/edit-lock/index.js +1 -1
  60. package/dist/fields/fields.css +8 -0
  61. package/dist/fields/index.d.ts +89 -18
  62. package/dist/fields/index.js +1 -1
  63. package/dist/node-ops/index.js +1 -1
  64. package/dist/panel/index.js +1 -1
  65. package/dist/phone-order-CRKvsTsz.d.ts +141 -0
  66. package/dist/{rowMarks-CO5TpfLY.d.ts → rowMarks-D2cO7UTi.d.ts} +5 -5
  67. package/dist/screen/components/AddBlockRow.js +1 -1
  68. package/dist/screen/components/AddSidePanel.d.ts +1 -1
  69. package/dist/screen/components/AddSidePanel.js +1 -1
  70. package/dist/screen/components/NodeContextMenu.d.ts +1 -1
  71. package/dist/screen/components/NodeContextMenu.js +1 -1
  72. package/dist/screen/components/PageEditGuardNotices.js +1 -1
  73. package/dist/screen/components/SaveControls.d.ts +1 -1
  74. package/dist/screen/components/SaveControls.js +1 -1
  75. package/dist/screen/components/ScreenChrome.js +1 -1
  76. package/dist/screen/components/ScreenDocumentContext.d.ts +1 -1
  77. package/dist/screen/components/ScreenDocumentContext.js +1 -1
  78. package/dist/screen/components/ScreenMount.d.ts +1 -1
  79. package/dist/screen/components/ScreenMount.js +1 -1
  80. package/dist/screen/components/ScreenStoreProvider.d.ts +1 -1
  81. package/dist/screen/components/ScreenStoreProvider.js +1 -1
  82. package/dist/screen/components/SectionScreenShell.js +16 -16
  83. package/dist/screen/components/SidePanelHead.js +1 -1
  84. package/dist/screen/components/panel-widths.js +1 -1
  85. package/dist/screen/components/usePartBridge.d.ts +1 -1
  86. package/dist/screen/components/usePartBridge.js +1 -1
  87. package/dist/screen/index.d.ts +1 -1
  88. package/dist/screen/index.js +1 -1
  89. package/dist/screen/lib/admin-bridge.d.ts +1 -1
  90. package/dist/screen/lib/content/view-tiers.d.ts +11 -1
  91. package/dist/screen/lib/content/view-tiers.js +1 -1
  92. package/dist/screen/lib/document/block-set-host.js +1 -1
  93. package/dist/screen/lib/document/block-size-fields.d.ts +1 -1
  94. package/dist/screen/lib/document/block-size-fields.js +1 -1
  95. package/dist/screen/lib/document/block-types-in.js +1 -1
  96. package/dist/screen/lib/document/box-fields.d.ts +42 -14
  97. package/dist/screen/lib/document/box-fields.js +1 -1
  98. package/dist/screen/lib/document/button-fields.d.ts +1 -1
  99. package/dist/screen/lib/document/button-fields.js +1 -1
  100. package/dist/screen/lib/document/device-fields.d.ts +10 -17
  101. package/dist/screen/lib/document/device-fields.js +1 -1
  102. package/dist/screen/lib/document/image-fields.d.ts +1 -1
  103. package/dist/screen/lib/document/image-fields.js +5 -5
  104. package/dist/screen/lib/document/palette-sections.d.ts +1 -1
  105. package/dist/screen/lib/document/panel-no-control-mark.d.ts +2 -2
  106. package/dist/screen/lib/document/section-doc.d.ts +1 -1
  107. package/dist/screen/lib/document/section-doc.js +1 -1
  108. package/dist/screen/lib/document/shadow-fields.d.ts +1 -1
  109. package/dist/screen/lib/document/shadow-fields.js +2 -2
  110. package/dist/screen/lib/document/style-clipboard.d.ts +1 -1
  111. package/dist/screen/lib/document/style-clipboard.js +1 -1
  112. package/dist/screen/lib/document/style-fields.d.ts +1 -1
  113. package/dist/screen/lib/document/style-fields.js +1 -1
  114. package/dist/screen/lib/document/use-section-ops.d.ts +1 -1
  115. package/dist/screen/lib/document/use-section-ops.js +1 -1
  116. package/dist/screen/lib/document-addressing.d.ts +1 -1
  117. package/dist/screen/lib/document-hooks.d.ts +1 -1
  118. package/dist/screen/lib/document-switch.js +1 -1
  119. package/dist/screen/lib/failure.js +1 -1
  120. package/dist/screen/lib/host-inbound.js +1 -1
  121. package/dist/screen/lib/host.d.ts +1 -1
  122. package/dist/screen/lib/key-scope.js +1 -1
  123. package/dist/screen/lib/media-panel.d.ts +1 -1
  124. package/dist/screen/lib/media-picker.d.ts +1 -1
  125. package/dist/screen/lib/media-picker.js +1 -1
  126. package/dist/screen/lib/page-lock.d.ts +1 -1
  127. package/dist/screen/lib/page-lock.js +1 -1
  128. package/dist/screen/lib/screen-parts.d.ts +1 -11
  129. package/dist/screen/lib/screen-parts.js +1 -1
  130. package/dist/screen/lib/section-templates.d.ts +1 -1
  131. package/dist/screen/lib/session-context.d.ts +1 -1
  132. package/dist/screen/lib/session.d.ts +1 -1
  133. package/dist/screen/lib/shared-sections.d.ts +1 -1
  134. package/dist/screen/screen.css +0 -6
  135. package/dist/screen/words.d.ts +1 -3
  136. package/dist/screen/words.js +1 -1
  137. package/dist/strings/index.d.ts +1 -1
  138. package/dist/strings/index.js +2 -2
  139. package/dist/style-clipboard/index.js +1 -1
  140. package/dist/text-styles/index.d.ts +6 -5
  141. package/dist/text-styles/index.js +37 -37
  142. package/dist/text-styles/model.d.ts +24 -14
  143. package/dist/text-styles/model.js +1 -1
  144. package/dist/{types-CVHwspYM.d.ts → types-DcyH17ij.d.ts} +2 -0
  145. package/dist/{words-CFkb8XtN.d.ts → words-dNm6REMa.d.ts} +21 -0
  146. package/package.json +1 -1
  147. package/dist/chunk-3W2O22DZ.js +0 -19
  148. package/dist/chunk-BLE3U2GS.js +0 -2
  149. package/dist/chunk-CPIWSFGR.js +0 -2
  150. package/dist/chunk-E52W3M5I.js +0 -1
  151. package/dist/chunk-EUFDQ4KL.js +0 -1
  152. package/dist/chunk-JACEEVVF.js +0 -1
  153. package/dist/chunk-JQQFB7EZ.js +0 -1
  154. package/dist/chunk-LWFE6QDN.js +0 -20
  155. package/dist/chunk-OGG6FMBA.js +0 -17
  156. package/dist/chunk-RN5AYO53.js +0 -1
  157. package/dist/chunk-RQO3UDKP.js +0 -8
  158. package/dist/chunk-SQTVXE5D.js +0 -18
  159. package/dist/chunk-T5U2UZO6.js +0 -64
  160. package/dist/chunk-TOKMFZPB.js +0 -1
  161. package/dist/chunk-TXNCWF67.js +0 -4
  162. package/dist/chunk-U4TG43PD.js +0 -1
  163. package/dist/chunk-XFI3UPB2.js +0 -1
  164. package/dist/chunk-YHZSBL2N.js +0 -1
  165. package/dist/chunk-YTF65TZA.js +0 -5
  166. package/dist/chunk-ZEH6QLBH.js +0 -4
  167. package/dist/resolve-Bz4mszpL.d.ts +0 -57
@@ -1,17 +1,17 @@
1
- import{AddBlockRow as e}from"../../chunk-W2S2VJOQ.js";import{scrollPreviewToSection as n,gotoPreviewSlide as o}from"../../chunk-LUOY3A3Q.js";import{useEaselUndoKeys as r}from"../../chunk-BFJAEQZ6.js";import{SlotChildActionsProvider as t}from"../../chunk-KCBEE2MC.js";import{DEFAULT_PANEL_W as s}from"../../chunk-6EDVZBUO.js";import{usePartBridge as i}from"../../chunk-XFI3UPB2.js";import{useSectionOps as c}from"../../chunk-6DUCOSHW.js";import{useScreenDocument as p}from"../../chunk-CPIWSFGR.js";import"../../chunk-QZJKWKGH.js";import"../../chunk-ERR437B5.js";import"../../chunk-JIP5JNRB.js";import"../../chunk-GR3XRILS.js";import"../../chunk-RLBXE4EU.js";import"../../chunk-6ATIYLUL.js";import"../../chunk-KO47WAWR.js";import"../../chunk-NQW6XCAY.js";import"../../chunk-LOMEH6DG.js";import"../../chunk-KCOBHPN6.js";import"../../chunk-RUQOIQWI.js";import{SELECTION_MODE as l,useScreenPinned as m,useScreenCanvasFrame as d,useScreenInspectorPanel as u,useScreenPickFollowsSelection as a,sameInspectorMode as h,useStandaloneScreenBridges as k,useScreenBlockLook as j,useScreenBlockRules as f,isSelectionMode as S,shownChildSlotsOf as N}from"../../chunk-YTF65TZA.js";import{MediaPopup as y}from"../../chunk-T2RINM7R.js";import"../../chunk-NCXYC7WI.js";import"../../chunk-YM4UEGBV.js";import"../../chunk-SNF5764Q.js";import"../../chunk-LX23TCTP.js";import{DEFAULT_SCREEN_WORDS as A}from"../../chunk-C4TJN6GR.js";import{slotChildRowName as C}from"../../chunk-5NHQ452C.js";import"../../chunk-AJ2SUSET.js";import"../../chunk-6UAEFOJ4.js";import"../../chunk-ANPOR6EY.js";import"../../chunk-R4AUZVA3.js";import{slotFieldsOf as E,nestsInTree as Q}from"../../chunk-TCAAOYQY.js";import{useEasel as R}from"../../chunk-3W2O22DZ.js";import"../../chunk-JQQFB7EZ.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-LWFE6QDN.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-YCSZAP7T.js";import"../../chunk-ZEH6QLBH.js";import{LayersTree as x,Subtree as P,TreeRow as F,TreeRowAction as O,TreeSeam as T}from"../../chunk-WHS6Y55E.js";import{DEFAULT_TREE_WORDS as W}from"../../chunk-K56YDHYQ.js";import"../../chunk-K53PQAMP.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-QTHQPJWA.js";import"../../chunk-D4TH4QQR.js";import"../../chunk-56ID6FKZ.js";import"../../chunk-NDRZP6YR.js";import{DEFAULT_SAVE_WORDS as D,saveIndicator as g}from"../../chunk-H6DDIBQ4.js";import{SaveState as I,panelWidthVars as Y}from"../../chunk-VBEVZZTV.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-AJSDWWJW.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-YYD257TD.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MNQDOSAX.js";import"../../chunk-PMRN5Z3T.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-JACEEVVF.js";import"../../chunk-MIX7EGRG.js";import"../../chunk-DX3VILZ3.js";import{useWords as v}from"../../chunk-MFIRYGHW.js";import"../../chunk-SQTVXE5D.js";import"../../chunk-TQ5Y6S2X.js";import{useTreeDrag as B}from"../../chunk-3XECMGXX.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-TOKMFZPB.js";import"../../chunk-FR7EEKFF.js";import"../../chunk-7UFKEX72.js";import{zoneKey as b,parseZoneKey as z}from"../../chunk-EUFDQ4KL.js";import"../../chunk-KXM6YRG2.js";import"../../chunk-467WWV4I.js";import"../../chunk-TIAWIOGD.js";import"../../chunk-MGVI67QV.js";import{useState as M,useRef as w,useEffect as X,useCallback as Z,Fragment as V}from"react";import{Tooltip as J}from"efficient-shell/ui";import{TrashIcon as K}from"efficient-shell/icons/efficient";import{jsxs as H,jsx as G,Fragment as L}from"react/jsx-runtime";var U=e=>n=>{n.target.closest("button, input")||e()},$={rowClick:U};function q(){const{saveState:q,readOnly:_,readOnlyReason:ee=null}=p(),ne=c(),{appState:oe,selectedItem:re,config:te}=R(e=>e),[se,ie]=M(l),ce=v("screen",A),pe=v("tree",W),le=v("save",D),{first:me,last:de,panelOf:ue}=m(),ae=ue(me),he=d(),ke=u(),je=oe.data.content?.[0]??null,fe=je?.props.id??null,Se=je?.type===me,Ne=je?.type===de,ye=w(null),Ae=w(null);r(Ae),a(re?.props.id),X(()=>{fe&&ye.current!==fe&&(ye.current=fe,Se?ie(ae??l):re||ne.select({index:0}))},[fe,re,ne,Se]);const Ce=Z(e=>ie(n=>h(n,e)?n:e),[]),Ee=k({kind:se.kind,mode:se,open:Ce,show:e=>ie(e),reveal:()=>{},select:(e,n)=>{ie(e=>h(e,n)?e:n),ne.select(e)}}),{selectNode:Qe}=i({mode:se,setMode:ie,onOpenPart:n}),Re=j(),{labelAtLevel:xe,Icon:Pe}=Re,{canAddTo:Fe}=f(),Oe=e=>xe(e,"block",te.components[e]?.label??e),Te=e=>xe(e,"section",Oe(e)),We=!Se&&S(se)&&re?.props.id===fe,De=je?Fe(je.type)?.spec??null:null,ge=je&&De?`${je.props.id}:${De.slot}`:null,Ie=je&&De&&Array.isArray(je.props[De.slot])?je.props[De.slot]:[],Ye=e=>C(e,Oe,Re.plainText),ve=(e,r)=>{je&&De&&ge&&(ie(l),De.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||!De||!ge)return;const e=Ie.length;ne.insertComponent(ge,De.childType,e),ie(l),De.slider?requestAnimationFrame(()=>{o(String(je.props.id),e),ne.select({index:e,zone:ge})}):ne.select({index:e,zone:ge})},be=e=>E(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 be(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},Me=(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(l),ne.select({index:t,zone:e}))},we=B({keyOf:e=>e.id,readOnly:Boolean(_),canDrop:(e,n)=>b(n)===e.zone&&n.index>=0&&n.index<=ze(e.zone),onDrop:(e,n)=>Me(e.zone,e.index,n.index),onStep:(e,n)=>Me(e.zone,e.index,n<0?e.index-1:e.index+2)}),Xe=(e,n)=>/* @__PURE__ */G(T,{..._?{}:we.seam({place:{...z(e),index:n}})},`seam:${e}:${n}`),Ze=e=>Re.blockRowName(e,Oe),Ve=(e,o,r)=>{ie(l),ne.select({index:o,zone:e}),n(r)},Je=(e,n,o)=>{ne.insertComponent(e,n,o),ie(l),ne.select({index:o,zone:e})},Ke=(n,o,r)=>/* @__PURE__ */G(e,{choices:r,onPick:e=>Je(n,e,o)}),He=(e,n)=>{const o=N(te,e);const r=Fe(e.type,void 0,void 0,{id:String(e.props.id??""),data:oe.data}),t=r?.choices??null,s="footer"===r?.source?Ze:Ye;/* @__PURE__ */
2
- return H(L,{children:[o.map(({child:e,zone:o,index:r})=>{const t=re?.props.id===e.props.id,i=Q(te,e.type,n),c=s(e),p=String(e.props.id),m=()=>Ve(o,r,p),{rowProps:d,...u}=we.row({item:{id:p,zone:o,index:r},place:{...z(o),index:r}},{onClick:U(m)});/* @__PURE__ */
3
- return H(V,{children:[0===r&&Xe(o,0),
4
- /* @__PURE__ */G(F,{words:pe,icon:/* @__PURE__ */G(Pe,{type:e.type,size:13}),name:c,selected:t,onSelect:m,...u,actions:/* @__PURE__ */G(O,{kind:"delete",label:ce.deleteNamed({name:c}),onClick:()=>{return e=o,n=r,ne.removeComponent(e,n),ie(l),void ne.select(null);var e,n},children:/* @__PURE__ */G(K,{size:13})}),rowProps:d}),i&&/* @__PURE__ */G(P,{children:He(e,n+1)}),Xe(o,r+1)]},String(e.props.id??`${o}-${r}`))}),r&&t?Ke(`${e.props.id}:${r.slot}`,o.length,t):null]})},Ge="HeroSingle"===je?.type,Le=Boolean(je)&&(Boolean(Fe(je.type))||be(je.type).length>0),Ue=Boolean(je)&&(Boolean(De)||Ne||Se||Ge||Le);/* @__PURE__ */
5
- return H("div",{ref:Ae,className:"sf-editor es-editor",style:Y(s),children:[
6
- /* @__PURE__ */G("div",{className:"sf-section-bar",children:/* @__PURE__ */G(I,null!==ee?{tone:"off",label:ee,role:"status"}:{...g(q,le),role:"status"})}),
7
- /* @__PURE__ */H("div",{className:"sf-body",children:[Ue&&je&&/* @__PURE__ */H("aside",{className:"es-sidepanel es-sidepanel--left sf-panel sf-panel--left",children:[
8
- /* @__PURE__ */G("div",{className:"sf-panel-head",children:/* @__PURE__ */G(J,{content:Se?ce.headerSettings:ce.sectionSettings({name:Te(je.type)}),side:"bottom",children:/* @__PURE__ */G("button",{type:"button",className:"sf-panel-title sf-panel-title--btn "+(We?"is-selected":""),"aria-pressed":We,onClick:()=>{Se?ie(ae??l):(ie(l),ne.select({index:0}))},children:Te(je.type)})})}),
9
- /* @__PURE__ */G(x,{className:"sf-tree sf-scroll",rootProps:we.rootProps(),words:pe,children:/* @__PURE__ */G(P,{children:Se?
10
- /* @__PURE__ */G(F,{words:pe,icon:/* @__PURE__ */G(Pe,{type:"header",size:13}),name:ce.headerSettings,selected:se.kind===ae?.kind,onSelect:()=>ie(ae??l),rowProps:{onClick:U(()=>ie(ae??l))}}):De?/* @__PURE__ */H(L,{children:[Ie.map((e,n)=>{const o=re?.props.id===e.props.id,r=Ye(e),t=String(e.props.id),s=()=>ve(n,t),{rowProps:i,...c}=we.row({item:{id:t,zone:ge,index:n},place:{...z(ge),index:n}},{onClick:U(s)});/* @__PURE__ */
11
- return H(V,{children:[0===n&&Xe(ge,0),
12
- /* @__PURE__ */G(F,{words:pe,icon:/* @__PURE__ */G(Pe,{type:e.type,size:13}),name:r,selected:o,onSelect:s,...c,actions:/* @__PURE__ */G(O,{kind:"delete",label:ce.deleteNamed({name:r}),onClick:()=>{return e=n,void(ge&&(ne.removeComponent(ge,e),ie(l),ne.select(null)));var e},children:/* @__PURE__ */G(K,{size:13})}),rowProps:i}),Xe(ge,n+1)]},String(e.props.id??n))}),
13
- /* @__PURE__ */H("button",{type:"button",className:"sf-add-card",onClick:Be,children:[
14
- /* @__PURE__ */G("span",{className:"sf-plus sf-plus--sm",children:"+"}),De.addLabel]}),fe?Ee.partRows?.(je,$):null]}):He(je,1)})})]}),
1
+ import{AddBlockRow as e}from"../../chunk-SEH3Q3EL.js";import{scrollPreviewToSection as n,gotoPreviewSlide as o}from"../../chunk-LUOY3A3Q.js";import{useEaselUndoKeys as r}from"../../chunk-RTMDZJNE.js";import{SlotChildActionsProvider as t}from"../../chunk-KCBEE2MC.js";import{DEFAULT_PANEL_W as s}from"../../chunk-TQUEVJOO.js";import{usePartBridge as i}from"../../chunk-J5VPNHOW.js";import{useSectionOps as c}from"../../chunk-3FANFZ4D.js";import{useScreenDocument as p}from"../../chunk-OB4KI2AN.js";import"../../chunk-JUJEVGLY.js";import"../../chunk-ERR437B5.js";import"../../chunk-5HYVOOH3.js";import"../../chunk-A5USZ6Z6.js";import"../../chunk-RLBXE4EU.js";import"../../chunk-6V6LC7QV.js";import"../../chunk-7YXWWMBM.js";import"../../chunk-NQW6XCAY.js";import"../../chunk-LOMEH6DG.js";import"../../chunk-KCOBHPN6.js";import"../../chunk-RUQOIQWI.js";import{SELECTION_MODE as l,useScreenPinned as m,useScreenCanvasFrame as d,useScreenInspectorPanel as u,useScreenPickFollowsSelection as a,sameInspectorMode as h,useStandaloneScreenBridges as k,useScreenBlockLook as j,useScreenBlockRules as f,isSelectionMode as S,shownChildSlotsOf as N}from"../../chunk-TUIBPB77.js";import{MediaPopup as E}from"../../chunk-T2RINM7R.js";import"../../chunk-NCXYC7WI.js";import"../../chunk-YM4UEGBV.js";import"../../chunk-SNF5764Q.js";import"../../chunk-LX23TCTP.js";import{DEFAULT_SCREEN_WORDS as y}from"../../chunk-G2VZ4DET.js";import{slotChildRowName as C}from"../../chunk-5NHQ452C.js";import"../../chunk-AJ2SUSET.js";import"../../chunk-6UAEFOJ4.js";import"../../chunk-ANPOR6EY.js";import"../../chunk-R4AUZVA3.js";import{slotFieldsOf as A,nestsInTree as O}from"../../chunk-TCAAOYQY.js";import{useEasel as x}from"../../chunk-L36E2WCO.js";import"../../chunk-XT75WETI.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-SDSBXW3V.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-YCSZAP7T.js";import"../../chunk-TDEBPOWV.js";import{LayersTree as T,Subtree as R,TreeRow as Y,TreeRowAction as B,TreeSeam as P}from"../../chunk-WHS6Y55E.js";import"../../chunk-D4TH4QQR.js";import{DEFAULT_TREE_WORDS as W}from"../../chunk-K56YDHYQ.js";import"../../chunk-56ID6FKZ.js";import"../../chunk-LDHUPZBK.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-TF6NAIV7.js";import"../../chunk-NDRZP6YR.js";import{DEFAULT_SAVE_WORDS as g,saveIndicator as D}from"../../chunk-H6DDIBQ4.js";import{SaveState as I,panelWidthVars as Q}from"../../chunk-VTY7OQB5.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-AJSDWWJW.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-G7J6SGMF.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MNQDOSAX.js";import"../../chunk-PMRN5Z3T.js";import"../../chunk-ANBPE45L.js";import"../../chunk-C63IB4VW.js";import"../../chunk-DX3VILZ3.js";import"../../chunk-MIX7EGRG.js";import"../../chunk-UMTUKSE6.js";import{useWords as V}from"../../chunk-MFIRYGHW.js";import"../../chunk-SEC6NV6Y.js";import"../../chunk-TQ5Y6S2X.js";import{useTreeDrag as v}from"../../chunk-QEEW4X64.js";import"../../chunk-P2VEMZH5.js";import{zoneKey as M,parseZoneKey as b}from"../../chunk-YDTEYXQW.js";import"../../chunk-KXM6YRG2.js";import"../../chunk-6GJEOER4.js";import"../../chunk-FR7EEKFF.js";import"../../chunk-7UFKEX72.js";import"../../chunk-467WWV4I.js";import"../../chunk-TIAWIOGD.js";import"../../chunk-MGVI67QV.js";import{useState as z,useRef as F,useEffect as w,useCallback as U,Fragment as X}from"react";import{Tooltip as H}from"efficient-shell/ui";import{TrashIcon as L}from"efficient-shell/icons/efficient";import{jsxs as Z,jsx as G,Fragment as J}from"react/jsx-runtime";var K=e=>n=>{n.target.closest("button, input")||e()},$={rowClick:K};function q(){const{saveState:q,readOnly:_,readOnlyReason:ee=null}=p(),ne=c(),{appState:oe,selectedItem:re,config:te}=x(e=>e),[se,ie]=z(l),ce=V("screen",y),pe=V("tree",W),le=V("save",g),{first:me,last:de,panelOf:ue}=m(),ae=ue(me),he=d(),ke=u(),je=oe.data.content?.[0]??null,fe=je?.props.id??null,Se=je?.type===me,Ne=je?.type===de,Ee=F(null),ye=F(null);r(ye),a(re?.props.id),w(()=>{fe&&Ee.current!==fe&&(Ee.current=fe,Se?ie(ae??l):re||ne.select({index:0}))},[fe,re,ne,Se]);const Ce=U(e=>ie(n=>h(n,e)?n:e),[]),Ae=k({kind:se.kind,mode:se,open:Ce,show:e=>ie(e),reveal:()=>{},select:(e,n)=>{ie(e=>h(e,n)?e:n),ne.select(e)}}),{selectNode:Oe}=i({mode:se,setMode:ie,onOpenPart:n}),xe=j(),{labelAtLevel:Te,Icon:Re}=xe,{canAddTo:Ye}=f(),Be=e=>Te(e,"block",te.components[e]?.label??e),Pe=e=>Te(e,"section",Be(e)),We=!Se&&S(se)&&re?.props.id===fe,ge=je?Ye(je.type)?.spec??null:null,De=je&&ge?`${je.props.id}:${ge.slot}`:null,Ie=je&&ge&&Array.isArray(je.props[ge.slot])?je.props[ge.slot]:[],Qe=e=>C(e,Be,xe.plainText),Ve=(e,r)=>{je&&ge&&De&&(ie(l),ge.slider?(o(String(je.props.id),e),ne.select({index:e,zone:De}),n(String(je.props.id))):(ne.select({index:e,zone:De}),n(r)))},ve=()=>{if(!je||!ge||!De)return;const e=Ie.length;ne.insertComponent(De,ge.childType,e),ie(l),ge.slider?requestAnimationFrame(()=>{o(String(je.props.id),e),ne.select({index:e,zone:De})}):ne.select({index:e,zone:De})},Me=e=>A(te,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 Me(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},ze=(e,n,o)=>{const r=Math.min(Math.max(o,0),be(e)),t=n<r?r-1:r;t!==n&&(ne.reorderComponent(e,n,t),ie(l),ne.select({index:t,zone:e}))},Fe=v({keyOf:e=>e.id,readOnly:Boolean(_),canDrop:(e,n)=>M(n)===e.zone&&n.index>=0&&n.index<=be(e.zone),onDrop:(e,n)=>ze(e.zone,e.index,n.index),onStep:(e,n)=>ze(e.zone,e.index,n<0?e.index-1:e.index+2)}),we=(e,n)=>/* @__PURE__ */G(P,{..._?{}:Fe.seam({place:{...b(e),index:n}})},`seam:${e}:${n}`),Ue=e=>xe.blockRowName(e,Be),Xe=(e,o,r)=>{ie(l),ne.select({index:o,zone:e}),n(r)},He=(e,n,o)=>{ne.insertComponent(e,n,o),ie(l),ne.select({index:o,zone:e})},Le=(n,o,r)=>/* @__PURE__ */G(e,{choices:r,onPick:e=>He(n,e,o)}),Ze=(e,n)=>{const o=N(te,e);const r=Ye(e.type,void 0,void 0,{id:String(e.props.id??""),data:oe.data}),t=r?.choices??null,s="footer"===r?.source?Ue:Qe;/* @__PURE__ */
2
+ return Z(J,{children:[o.map(({child:e,zone:o,index:r})=>{const t=re?.props.id===e.props.id,i=O(te,e.type,n),c=s(e),p=String(e.props.id),m=()=>Xe(o,r,p),{rowProps:d,...u}=Fe.row({item:{id:p,zone:o,index:r},place:{...b(o),index:r}},{onClick:K(m)});/* @__PURE__ */
3
+ return Z(X,{children:[0===r&&we(o,0),
4
+ /* @__PURE__ */G(Y,{words:pe,icon:/* @__PURE__ */G(Re,{type:e.type,size:13}),name:c,selected:t,onSelect:m,...u,actions:/* @__PURE__ */G(B,{kind:"delete",label:ce.deleteNamed({name:c}),onClick:()=>{return e=o,n=r,ne.removeComponent(e,n),ie(l),void ne.select(null);var e,n},children:/* @__PURE__ */G(L,{size:13})}),rowProps:d}),i&&/* @__PURE__ */G(R,{children:Ze(e,n+1)}),we(o,r+1)]},String(e.props.id??`${o}-${r}`))}),r&&t?Le(`${e.props.id}:${r.slot}`,o.length,t):null]})},Ge="HeroSingle"===je?.type,Je=Boolean(je)&&(Boolean(Ye(je.type))||Me(je.type).length>0),Ke=Boolean(je)&&(Boolean(ge)||Ne||Se||Ge||Je);/* @__PURE__ */
5
+ return Z("div",{ref:ye,className:"sf-editor es-editor",style:Q(s),children:[
6
+ /* @__PURE__ */G("div",{className:"sf-section-bar",children:/* @__PURE__ */G(I,null!==ee?{tone:"off",label:ee,role:"status"}:{...D(q,le),role:"status"})}),
7
+ /* @__PURE__ */Z("div",{className:"sf-body",children:[Ke&&je&&/* @__PURE__ */Z("aside",{className:"es-sidepanel es-sidepanel--left sf-panel sf-panel--left",children:[
8
+ /* @__PURE__ */G("div",{className:"sf-panel-head",children:/* @__PURE__ */G(H,{content:Se?ce.headerSettings:ce.sectionSettings({name:Pe(je.type)}),side:"bottom",children:/* @__PURE__ */G("button",{type:"button",className:"sf-panel-title sf-panel-title--btn "+(We?"is-selected":""),"aria-pressed":We,onClick:()=>{Se?ie(ae??l):(ie(l),ne.select({index:0}))},children:Pe(je.type)})})}),
9
+ /* @__PURE__ */G(T,{className:"sf-tree sf-scroll",rootProps:Fe.rootProps(),words:pe,children:/* @__PURE__ */G(R,{children:Se?
10
+ /* @__PURE__ */G(Y,{words:pe,icon:/* @__PURE__ */G(Re,{type:"header",size:13}),name:ce.headerSettings,selected:se.kind===ae?.kind,onSelect:()=>ie(ae??l),rowProps:{onClick:K(()=>ie(ae??l))}}):ge?/* @__PURE__ */Z(J,{children:[Ie.map((e,n)=>{const o=re?.props.id===e.props.id,r=Qe(e),t=String(e.props.id),s=()=>Ve(n,t),{rowProps:i,...c}=Fe.row({item:{id:t,zone:De,index:n},place:{...b(De),index:n}},{onClick:K(s)});/* @__PURE__ */
11
+ return Z(X,{children:[0===n&&we(De,0),
12
+ /* @__PURE__ */G(Y,{words:pe,icon:/* @__PURE__ */G(Re,{type:e.type,size:13}),name:r,selected:o,onSelect:s,...c,actions:/* @__PURE__ */G(B,{kind:"delete",label:ce.deleteNamed({name:r}),onClick:()=>{return e=n,void(De&&(ne.removeComponent(De,e),ie(l),ne.select(null)));var e},children:/* @__PURE__ */G(L,{size:13})}),rowProps:i}),we(De,n+1)]},String(e.props.id??n))}),
13
+ /* @__PURE__ */Z("button",{type:"button",className:"sf-add-card",onClick:ve,children:[
14
+ /* @__PURE__ */G("span",{className:"sf-plus sf-plus--sm",children:"+"}),ge.addLabel]}),fe?Ae.partRows?.(je,$):null]}):Ze(je,1)})})]}),
15
15
  /* @__PURE__ */G("div",{className:"sf-center",children:/* @__PURE__ */G("div",{className:"sf-preview-host",children:/* @__PURE__ */G(he,{})})}),
16
- /* @__PURE__ */G(t,{value:{selectChild:(e,n,o,r)=>"section"===Fe(r)?.source?ve(n,o):Ve(e,n,o),addChild:(e,n,o,r,t)=>"section"===Fe(t)?.source?Be():Je(`${e}:${n}`,o,r),childRowName:Ye,blockRowName:Ze},children:/* @__PURE__ */G(ke,{mode:se,onOpenWebsiteSettings:Ee.openSettings??(()=>{}),onSelectNode:Qe,hideNodeActions:!0})})]}),
17
- /* @__PURE__ */G(y,{})]})}export{q as default};
16
+ /* @__PURE__ */G(t,{value:{selectChild:(e,n,o,r)=>"section"===Ye(r)?.source?Ve(n,o):Xe(e,n,o),addChild:(e,n,o,r,t)=>"section"===Ye(t)?.source?ve():He(`${e}:${n}`,o,r),childRowName:Qe,blockRowName:Ue},children:/* @__PURE__ */G(ke,{mode:se,onOpenWebsiteSettings:Ae.openSettings??(()=>{}),onSelectNode:Oe,hideNodeActions:!0})})]}),
17
+ /* @__PURE__ */G(E,{})]})}export{q as default};
@@ -1 +1 @@
1
- export{PanelHideButton,PanelModeExit,PanelShowStrip,SidePanelHead as default}from"../../chunk-SBVIW3KJ.js";import"../../chunk-UMDQ6CLQ.js";import"../../chunk-VBEVZZTV.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-AJSDWWJW.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-YYD257TD.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-EUFDQ4KL.js";import"../../chunk-KXM6YRG2.js";
1
+ export{PanelHideButton,PanelModeExit,PanelShowStrip,SidePanelHead as default}from"../../chunk-MTWQYLJE.js";import"../../chunk-UMDQ6CLQ.js";import"../../chunk-VTY7OQB5.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-AJSDWWJW.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-G7J6SGMF.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-YDTEYXQW.js";import"../../chunk-KXM6YRG2.js";
@@ -1 +1 @@
1
- export{COLLAPSED_SECTIONS_KEY,DEFAULT_PANEL_W,PANEL_WIDTHS_KEY,clampPanelWidth,screenStorageKeys}from"../../chunk-6EDVZBUO.js";export{MAX_PANEL_W,MIN_PANEL_W,MIN_PANEL_W_BY_SIDE,panelWidthVars}from"../../chunk-VBEVZZTV.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-AJSDWWJW.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-YYD257TD.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-EUFDQ4KL.js";import"../../chunk-KXM6YRG2.js";
1
+ export{COLLAPSED_SECTIONS_KEY,DEFAULT_PANEL_W,PANEL_WIDTHS_KEY,clampPanelWidth,screenStorageKeys}from"../../chunk-TQUEVJOO.js";export{MAX_PANEL_W,MIN_PANEL_W,MIN_PANEL_W_BY_SIDE,panelWidthVars}from"../../chunk-VTY7OQB5.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-AJSDWWJW.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-G7J6SGMF.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-YDTEYXQW.js";import"../../chunk-KXM6YRG2.js";
@@ -11,7 +11,7 @@ import '../lib/document/block-choice.js';
11
11
  import '../../blocks/index.js';
12
12
  import '../../types-BljCVdzR.js';
13
13
  import '../../data/index.js';
14
- import '../../resolve-Bz4mszpL.js';
14
+ import '../../phone-order-CRKvsTsz.js';
15
15
  import '../../plan-D0DgSLnY.js';
16
16
  import '../../types-SrGNzYeO.js';
17
17
  import '../../types-Cy7rdmXt.js';
@@ -1 +1 @@
1
- export{usePartBridge}from"../../chunk-XFI3UPB2.js";import"../../chunk-6DUCOSHW.js";import"../../chunk-YTF65TZA.js";import"../../chunk-NCXYC7WI.js";import"../../chunk-LX23TCTP.js";import"../../chunk-R4AUZVA3.js";import"../../chunk-TCAAOYQY.js";import"../../chunk-3W2O22DZ.js";import"../../chunk-JQQFB7EZ.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-LWFE6QDN.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-YCSZAP7T.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-WHS6Y55E.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-K53PQAMP.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-QTHQPJWA.js";import"../../chunk-D4TH4QQR.js";import"../../chunk-56ID6FKZ.js";import"../../chunk-MNQDOSAX.js";import"../../chunk-PMRN5Z3T.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-JACEEVVF.js";import"../../chunk-MIX7EGRG.js";import"../../chunk-DX3VILZ3.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-3XECMGXX.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-TOKMFZPB.js";import"../../chunk-FR7EEKFF.js";import"../../chunk-7UFKEX72.js";import"../../chunk-EUFDQ4KL.js";import"../../chunk-KXM6YRG2.js";import"../../chunk-467WWV4I.js";import"../../chunk-TIAWIOGD.js";import"../../chunk-MGVI67QV.js";
1
+ export{usePartBridge}from"../../chunk-J5VPNHOW.js";import"../../chunk-3FANFZ4D.js";import"../../chunk-TUIBPB77.js";import"../../chunk-NCXYC7WI.js";import"../../chunk-LX23TCTP.js";import"../../chunk-R4AUZVA3.js";import"../../chunk-TCAAOYQY.js";import"../../chunk-L36E2WCO.js";import"../../chunk-XT75WETI.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-SDSBXW3V.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-YCSZAP7T.js";import"../../chunk-TDEBPOWV.js";import"../../chunk-WHS6Y55E.js";import"../../chunk-D4TH4QQR.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-56ID6FKZ.js";import"../../chunk-LDHUPZBK.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-TF6NAIV7.js";import"../../chunk-MNQDOSAX.js";import"../../chunk-PMRN5Z3T.js";import"../../chunk-ANBPE45L.js";import"../../chunk-C63IB4VW.js";import"../../chunk-DX3VILZ3.js";import"../../chunk-MIX7EGRG.js";import"../../chunk-UMTUKSE6.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-QEEW4X64.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-YDTEYXQW.js";import"../../chunk-KXM6YRG2.js";import"../../chunk-6GJEOER4.js";import"../../chunk-FR7EEKFF.js";import"../../chunk-7UFKEX72.js";import"../../chunk-467WWV4I.js";import"../../chunk-TIAWIOGD.js";import"../../chunk-MGVI67QV.js";
@@ -10,7 +10,7 @@ import '../blocks/index.js';
10
10
  import '../types-BljCVdzR.js';
11
11
  import '../data/index.js';
12
12
  import '../types-Dq180WRV.js';
13
- import '../resolve-Bz4mszpL.js';
13
+ import '../phone-order-CRKvsTsz.js';
14
14
  import '../plan-D0DgSLnY.js';
15
15
  import '../CanvasDragLayer-DXeQGrwJ.js';
16
16
  import '../watch-Unf6SfUf.js';
@@ -1 +1 @@
1
- import"../chunk-GZO72N3Q.js";export{DocumentScreen,ScreenMount}from"../chunk-5U6DUZE2.js";import"../chunk-GXQCZJOP.js";export{ScreenStoreProvider}from"../chunk-JDQSRKJG.js";import"../chunk-T5U2UZO6.js";import"../chunk-UMBNBCL4.js";import"../chunk-OXZDSOZV.js";import"../chunk-7OCEPOEJ.js";import"../chunk-U4TG43PD.js";import"../chunk-5XL2RXFU.js";import"../chunk-3QB2ZQXK.js";import"../chunk-BLE3U2GS.js";import"../chunk-22I55W37.js";import"../chunk-LUOY3A3Q.js";import"../chunk-BFJAEQZ6.js";import"../chunk-KCBEE2MC.js";import"../chunk-6EDVZBUO.js";import"../chunk-XFI3UPB2.js";import"../chunk-6DUCOSHW.js";import"../chunk-MGEXTIZH.js";import"../chunk-PVBDKBJB.js";import"../chunk-RKTF5XLP.js";import"../chunk-CPIWSFGR.js";import"../chunk-QZJKWKGH.js";import"../chunk-ERR437B5.js";import"../chunk-JIP5JNRB.js";import"../chunk-GR3XRILS.js";export{NO_DOCUMENT_ADDRESSING}from"../chunk-RLBXE4EU.js";import"../chunk-6ATIYLUL.js";import"../chunk-KO47WAWR.js";import"../chunk-NQW6XCAY.js";import"../chunk-LOMEH6DG.js";import"../chunk-5545A3PC.js";import"../chunk-RQO3UDKP.js";import"../chunk-GDO4QJ4G.js";import"../chunk-IZGFJWH4.js";import"../chunk-N7E6264U.js";import"../chunk-N3MJOHAG.js";import"../chunk-SBVIW3KJ.js";import"../chunk-UMDQ6CLQ.js";import"../chunk-KCOBHPN6.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-YTF65TZA.js";import"../chunk-T2RINM7R.js";import"../chunk-NCXYC7WI.js";import"../chunk-H4TUOPI7.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,FIELD_DESCRIPTION_MARKER,createEaselHost,describedAs,useEaselHost,useHostEscape}from"../chunk-LX23TCTP.js";import"../chunk-XFYFKITX.js";import"../chunk-C4TJN6GR.js";import"../chunk-CWELHADJ.js";import"../chunk-6WY6ZXJG.js";import"../chunk-5NHQ452C.js";import"../chunk-AJ2SUSET.js";import"../chunk-6UAEFOJ4.js";import"../chunk-ANPOR6EY.js";import"../chunk-R4AUZVA3.js";import"../chunk-TCAAOYQY.js";import"../chunk-3W2O22DZ.js";import"../chunk-JQQFB7EZ.js";import"../chunk-TBY3DFKS.js";import"../chunk-LWFE6QDN.js";import"../chunk-BPXEFVSQ.js";import"../chunk-YCSZAP7T.js";import"../chunk-ZEH6QLBH.js";import"../chunk-WHS6Y55E.js";import"../chunk-K56YDHYQ.js";import"../chunk-K53PQAMP.js";import"../chunk-ZKY45F5G.js";import"../chunk-FIVU2COQ.js";import"../chunk-P5VYGWYO.js";import"../chunk-WK3AFPXY.js";import"../chunk-QTHQPJWA.js";import"../chunk-D4TH4QQR.js";import"../chunk-56ID6FKZ.js";import"../chunk-NDRZP6YR.js";import"../chunk-H6DDIBQ4.js";import"../chunk-VBEVZZTV.js";import"../chunk-MJM6SFD3.js";import"../chunk-AJSDWWJW.js";import"../chunk-2OAZYSWJ.js";import"../chunk-YYD257TD.js";import"../chunk-RE4LP46F.js";import"../chunk-MNQDOSAX.js";import"../chunk-PMRN5Z3T.js";import"../chunk-Y2T3JX7K.js";import"../chunk-KFWNGPW3.js";import"../chunk-JACEEVVF.js";import"../chunk-MIX7EGRG.js";import"../chunk-DX3VILZ3.js";import"../chunk-MFIRYGHW.js";import"../chunk-SQTVXE5D.js";import"../chunk-TQ5Y6S2X.js";import"../chunk-3XECMGXX.js";import"../chunk-P2VEMZH5.js";import"../chunk-TOKMFZPB.js";import"../chunk-FR7EEKFF.js";import"../chunk-7UFKEX72.js";import"../chunk-EUFDQ4KL.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-P3HXHLES.js";import"../chunk-GXQCZJOP.js";export{ScreenStoreProvider}from"../chunk-QPNNWQ24.js";import"../chunk-DTEYSPJE.js";import"../chunk-UMBNBCL4.js";import"../chunk-OXZDSOZV.js";import"../chunk-7OCEPOEJ.js";import"../chunk-VNUXFD4X.js";import"../chunk-5XL2RXFU.js";import"../chunk-3QB2ZQXK.js";import"../chunk-ZNLODQD4.js";import"../chunk-22I55W37.js";import"../chunk-LUOY3A3Q.js";import"../chunk-RTMDZJNE.js";import"../chunk-KCBEE2MC.js";import"../chunk-TQUEVJOO.js";import"../chunk-J5VPNHOW.js";import"../chunk-3FANFZ4D.js";import"../chunk-XV5D4V2T.js";import"../chunk-2EEYFRQM.js";import"../chunk-RKTF5XLP.js";import"../chunk-OB4KI2AN.js";import"../chunk-JUJEVGLY.js";import"../chunk-ERR437B5.js";import"../chunk-5HYVOOH3.js";import"../chunk-A5USZ6Z6.js";export{NO_DOCUMENT_ADDRESSING}from"../chunk-RLBXE4EU.js";import"../chunk-6V6LC7QV.js";import"../chunk-7YXWWMBM.js";import"../chunk-NQW6XCAY.js";import"../chunk-LOMEH6DG.js";import"../chunk-5545A3PC.js";import"../chunk-GJ427TZL.js";import"../chunk-GDO4QJ4G.js";import"../chunk-IZGFJWH4.js";import"../chunk-N7E6264U.js";import"../chunk-N3MJOHAG.js";import"../chunk-MTWQYLJE.js";import"../chunk-UMDQ6CLQ.js";import"../chunk-KCOBHPN6.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-TUIBPB77.js";import"../chunk-T2RINM7R.js";import"../chunk-NCXYC7WI.js";import"../chunk-WW24O7HT.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,FIELD_DESCRIPTION_MARKER,createEaselHost,describedAs,useEaselHost,useHostEscape}from"../chunk-LX23TCTP.js";import"../chunk-XFYFKITX.js";import"../chunk-G2VZ4DET.js";import"../chunk-3OOYGEJY.js";import"../chunk-6WY6ZXJG.js";import"../chunk-5NHQ452C.js";import"../chunk-AJ2SUSET.js";import"../chunk-6UAEFOJ4.js";import"../chunk-ANPOR6EY.js";import"../chunk-R4AUZVA3.js";import"../chunk-TCAAOYQY.js";import"../chunk-L36E2WCO.js";import"../chunk-XT75WETI.js";import"../chunk-TBY3DFKS.js";import"../chunk-SDSBXW3V.js";import"../chunk-BPXEFVSQ.js";import"../chunk-YCSZAP7T.js";import"../chunk-TDEBPOWV.js";import"../chunk-WHS6Y55E.js";import"../chunk-D4TH4QQR.js";import"../chunk-K56YDHYQ.js";import"../chunk-56ID6FKZ.js";import"../chunk-LDHUPZBK.js";import"../chunk-ZKY45F5G.js";import"../chunk-FIVU2COQ.js";import"../chunk-P5VYGWYO.js";import"../chunk-WK3AFPXY.js";import"../chunk-TF6NAIV7.js";import"../chunk-NDRZP6YR.js";import"../chunk-H6DDIBQ4.js";import"../chunk-VTY7OQB5.js";import"../chunk-MJM6SFD3.js";import"../chunk-AJSDWWJW.js";import"../chunk-2OAZYSWJ.js";import"../chunk-G7J6SGMF.js";import"../chunk-RE4LP46F.js";import"../chunk-MNQDOSAX.js";import"../chunk-PMRN5Z3T.js";import"../chunk-ANBPE45L.js";import"../chunk-C63IB4VW.js";import"../chunk-DX3VILZ3.js";import"../chunk-MIX7EGRG.js";import"../chunk-UMTUKSE6.js";import"../chunk-MFIRYGHW.js";import"../chunk-SEC6NV6Y.js";import"../chunk-TQ5Y6S2X.js";import"../chunk-QEEW4X64.js";import"../chunk-P2VEMZH5.js";import"../chunk-YDTEYXQW.js";import"../chunk-KXM6YRG2.js";import"../chunk-6GJEOER4.js";import"../chunk-FR7EEKFF.js";import"../chunk-7UFKEX72.js";import"../chunk-BSPCSC45.js";import"../chunk-467WWV4I.js";import"../chunk-TIAWIOGD.js";import"../chunk-MGVI67QV.js";
@@ -4,7 +4,7 @@ import '../../blocks/index.js';
4
4
  import '../../types-BljCVdzR.js';
5
5
  import '../../data/index.js';
6
6
  import '../../types-Dq180WRV.js';
7
- import '../../resolve-Bz4mszpL.js';
7
+ import '../../phone-order-CRKvsTsz.js';
8
8
  import '../../plan-D0DgSLnY.js';
9
9
  import './backend-error.js';
10
10
  import '../../edit-lock/index.js';
@@ -113,5 +113,15 @@ interface ViewValues<T> {
113
113
  * auto into a copy that stops following its parent.
114
114
  */
115
115
  declare function resolveViewValue<T>(kind: ViewValueKind, desktop: T, tablet?: T | null, phone?: T | null, rules?: Record<ViewValueKind, AutoRule>): ViewValues<T>;
116
+ /**
117
+ * What an EMPTY view value follows, as the editor's panel shows it: the next
118
+ * wider view's value. With `tablet` given (the phone's twin): the tablet value,
119
+ * then the desktop value. Without it (the tablet's twin): the desktop value.
120
+ * Every panel row that shows a followed value reads it here, through
121
+ * {@link resolveViewValue} under {@link FOLLOW_RULES}, so the chain is spelled
122
+ * once. A page drawn by {@link AUTO_RULES} scales that value; the panel does
123
+ * not show the scaled number yet.
124
+ */
125
+ declare function viewFollows<T>(desktop: T, tablet?: T | null): T;
116
126
 
117
- export { AUTO_RULES, type AutoRule, FOLLOW_RULES, VIEW_DESKTOP_MIN, VIEW_TABLET_MIN, VIEW_TIERS, VIEW_TIER_LABEL, type ViewTier, type ViewValueKind, type ViewValues, isAuto, phoneKey, resolveViewValue, tabletKey, viewTierForWidth };
127
+ export { AUTO_RULES, type AutoRule, FOLLOW_RULES, VIEW_DESKTOP_MIN, VIEW_TABLET_MIN, VIEW_TIERS, VIEW_TIER_LABEL, type ViewTier, type ViewValueKind, type ViewValues, isAuto, phoneKey, resolveViewValue, tabletKey, viewFollows, viewTierForWidth };
@@ -1 +1 @@
1
- export{AUTO_RULES,FOLLOW_RULES,VIEW_DESKTOP_MIN,VIEW_TABLET_MIN,VIEW_TIERS,VIEW_TIER_LABEL,isAuto,phoneKey,resolveViewValue,tabletKey,viewTierForWidth}from"../../../chunk-E52W3M5I.js";
1
+ export{AUTO_RULES,FOLLOW_RULES,VIEW_DESKTOP_MIN,VIEW_TABLET_MIN,VIEW_TIERS,VIEW_TIER_LABEL,isAuto,phoneKey,resolveViewValue,tabletKey,viewFollows,viewTierForWidth}from"../../../chunk-DIOTWSCO.js";
@@ -1 +1 @@
1
- import{buttonFieldSet as e}from"../../../chunk-RN5AYO53.js";import"../../../chunk-TXNCWF67.js";import{boxFieldSet as o}from"../../../chunk-OGG6FMBA.js";import"../../../chunk-BLE3U2GS.js";import"../../../chunk-22I55W37.js";import"../../../chunk-LX23TCTP.js";import"../../../chunk-C4TJN6GR.js";import"../../../chunk-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";import"../../../chunk-PLTTPHK5.js";import{phoneKey as t}from"../../../chunk-E52W3M5I.js";import{foldMetaOf as n}from"../../../chunk-ANPOR6EY.js";import"../../../chunk-3W2O22DZ.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-CLAADE4J.js";import"../../../chunk-2T22IY3J.js";import"../../../chunk-D4TH4QQR.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-MNQDOSAX.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-JACEEVVF.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-MIX7EGRG.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-TOKMFZPB.js";import"../../../chunk-FR7EEKFF.js";import"../../../chunk-7UFKEX72.js";import"../../../chunk-EUFDQ4KL.js";import"../../../chunk-KXM6YRG2.js";import"../../../chunk-BSPCSC45.js";function s(e){return Object.keys(e).filter(o=>{return t=e[o],!(null!==n(t));var t})}function r(e,o){const t=o.off??{},s=o.keys??{};for(const[e,o]of Object.entries(t))if(!o.trim())throw new Error(`blockSetFor: off row "${e}" needs a reason.`);for(const o of[...Object.keys(t),...Object.keys(s)]){if(!Object.hasOwn(e,o))throw new Error(`blockSetFor: the set has no row "${o}".`);if(Object.hasOwn(t,o)&&Object.hasOwn(s,o))throw new Error(`blockSetFor: row "${o}" is both off and renamed.`)}const r={};let i=[];for(const[o,c]of Object.entries(e)){const a=n(c);if(a){i=i.filter(([,e])=>n(e).level<a.level),i.push([o,c]);continue}if(Object.hasOwn(t,o))continue;for(const[e,o]of i)r[e]=o;i=[];const u=Object.hasOwn(s,o)?s[o]:o;if(Object.hasOwn(r,u)||u!==o&&Object.hasOwn(e,u))throw new Error(`blockSetFor: renamed key "${u}" is already a row.`);r[u]=c}return r}function i(e){const o=e.build();r(o,e.email),r(o,e.website);const t=s(o),n=e=>new Set(Object.keys(e.off??{})),i=n(e.email),c=n(e.website),a=[];for(const o of t)i.has(o)&&!c.has(o)&&a.push({row:o,only:"website",reason:e.email.off[o]}),c.has(o)&&!i.has(o)&&a.push({row:o,only:"email",reason:e.website.off[o]});return a}var c=["button","image","box","divider","logo","text","section","social"],a={useFill:()=>"",useText:()=>"",useBorder:()=>({width:0,color:""}),useCorners:()=>0},u={button:{build:()=>e({follows:a,padding:{fallback:{}}}),email:{editor:"email"},website:{editor:"website"}},box:{build:()=>o(),email:{editor:"email",keys:{gap:"itemGap"},off:Object.fromEntries(["sectionPaddingTop","sectionPaddingRight","sectionPaddingBottom","sectionPaddingLeft"].map(e=>[t(e),"email: a Banner Box draws in the desktop view only (admin inBannerFields)"]))},website:{editor:"website"}}},h={button:"the set is in easel; admin (A-B) and web-builder (W-B) still build their own rows (plan group 1)",image:"no easel set yet (plan group 2)",box:"the set is in easel and the email Banner Box imports it; the website Flex builds its own rows (plan group 3)",divider:"no easel set yet (plan group 4)",logo:"no easel set yet (plan group 5)",text:"no easel set yet (plan group 6)",section:"no easel set yet (plan group 7)",social:"no easel set yet (plan group 7)"};export{c as BLOCK_KINDS,h as BLOCK_SETS_STILL_TWO_COPIES,u as BLOCK_SET_PAIRS,i as blockSetDifferences,r as blockSetFor,s as blockSetRowKeys};
1
+ import{buttonFieldSet as e}from"../../../chunk-LAJYMOY3.js";import"../../../chunk-XESNAMI3.js";import{boxFieldSet as o}from"../../../chunk-WL57KM5C.js";import"../../../chunk-XWTQTANN.js";import"../../../chunk-2T22IY3J.js";import"../../../chunk-ZNLODQD4.js";import"../../../chunk-22I55W37.js";import"../../../chunk-LX23TCTP.js";import"../../../chunk-G2VZ4DET.js";import"../../../chunk-3OOYGEJY.js";import"../../../chunk-6WY6ZXJG.js";import"../../../chunk-PLTTPHK5.js";import{foldMetaOf as t}from"../../../chunk-ANPOR6EY.js";import"../../../chunk-L36E2WCO.js";import"../../../chunk-XT75WETI.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-D4TH4QQR.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-LDHUPZBK.js";import"../../../chunk-TF6NAIV7.js";import"../../../chunk-OECWLNKJ.js";import{phoneKey as n}from"../../../chunk-DIOTWSCO.js";import"../../../chunk-MNQDOSAX.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-C63IB4VW.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-MIX7EGRG.js";import"../../../chunk-UMTUKSE6.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-YDTEYXQW.js";import"../../../chunk-KXM6YRG2.js";import"../../../chunk-6GJEOER4.js";import"../../../chunk-FR7EEKFF.js";import"../../../chunk-7UFKEX72.js";import"../../../chunk-BSPCSC45.js";function s(e){return Object.keys(e).filter(o=>{return n=e[o],!(null!==t(n));var n})}function r(e,o){const n=o.off??{},s=o.keys??{};for(const[e,o]of Object.entries(n))if(!o.trim())throw new Error(`blockSetFor: off row "${e}" needs a reason.`);for(const o of[...Object.keys(n),...Object.keys(s)]){if(!Object.hasOwn(e,o))throw new Error(`blockSetFor: the set has no row "${o}".`);if(Object.hasOwn(n,o)&&Object.hasOwn(s,o))throw new Error(`blockSetFor: row "${o}" is both off and renamed.`)}const r={};let i=[];for(const[o,c]of Object.entries(e)){const a=t(c);if(a){i=i.filter(([,e])=>t(e).level<a.level),i.push([o,c]);continue}if(Object.hasOwn(n,o))continue;for(const[e,o]of i)r[e]=o;i=[];const u=Object.hasOwn(s,o)?s[o]:o;if(Object.hasOwn(r,u)||u!==o&&Object.hasOwn(e,u))throw new Error(`blockSetFor: renamed key "${u}" is already a row.`);r[u]=c}return r}function i(e){const o=e.build();r(o,e.email),r(o,e.website);const t=s(o),n=e=>new Set(Object.keys(e.off??{})),i=n(e.email),c=n(e.website),a=[];for(const o of t)i.has(o)&&!c.has(o)&&a.push({row:o,only:"website",reason:e.email.off[o]}),c.has(o)&&!i.has(o)&&a.push({row:o,only:"email",reason:e.website.off[o]});return a}var c=["button","image","box","divider","logo","text","section","social"],a={useFill:()=>"",useText:()=>"",useBorder:()=>({width:0,color:""}),useCorners:()=>0},u={button:{build:()=>e({follows:a,padding:{fallback:{}}}),email:{editor:"email"},website:{editor:"website"}},box:{build:()=>o(),email:{editor:"email",keys:{gap:"itemGap"},off:Object.fromEntries(["sectionPaddingTop","sectionPaddingRight","sectionPaddingBottom","sectionPaddingLeft"].map(e=>[n(e),"email: a Banner Box draws in the desktop view only (admin inBannerFields)"]))},website:{editor:"website"}}},h={button:"the set is in easel; admin (A-B) and web-builder (W-B) still build their own rows (plan group 1)",image:"no easel set yet (plan group 2)",box:"the set is in easel and the email Banner Box imports it; the website Flex builds its own rows (plan group 3)",divider:"no easel set yet (plan group 4)",logo:"no easel set yet (plan group 5)",text:"no easel set yet (plan group 6)",section:"no easel set yet (plan group 7)",social:"no easel set yet (plan group 7)"};export{c as BLOCK_KINDS,h as BLOCK_SETS_STILL_TWO_COPIES,u as BLOCK_SET_PAIRS,i as blockSetDifferences,r as blockSetFor,s as blockSetRowKeys};
@@ -12,7 +12,7 @@ import '../../../blocks/index.js';
12
12
  import '../../../types-BljCVdzR.js';
13
13
  import '../../../data/index.js';
14
14
  import '../../../types-Dq180WRV.js';
15
- import '../../../resolve-Bz4mszpL.js';
15
+ import '../../../phone-order-CRKvsTsz.js';
16
16
  import '../../../plan-D0DgSLnY.js';
17
17
  import '../document-contract.js';
18
18
  import '../document-switch.js';
@@ -1 +1 @@
1
- import{noGlyph as t,boxFieldBuilders as i,PHONE_KEY_ACCESS as n,group as o,phoneTwinFields as r}from"../../../chunk-OGG6FMBA.js";import"../../../chunk-BLE3U2GS.js";import"../../../chunk-22I55W37.js";import"../../../chunk-LX23TCTP.js";import"../../../chunk-C4TJN6GR.js";import"../../../chunk-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";import{BLOCK_WIDTH_LIMIT as h,BLOCK_FIXED_WIDTH as m,BLOCK_WIDTH_FIT_POINTS as e,BLOCK_WIDTH_FIT_DEFAULT as s,TEXT_FIT_MIN_FONT as c,TEXT_FIT_POINTS as p}from"../../../chunk-XH4BP64C.js";import"../../../chunk-E52W3M5I.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-3W2O22DZ.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-CLAADE4J.js";import"../../../chunk-2T22IY3J.js";import"../../../chunk-D4TH4QQR.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-MNQDOSAX.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-JACEEVVF.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-MIX7EGRG.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-TOKMFZPB.js";import"../../../chunk-FR7EEKFF.js";import"../../../chunk-7UFKEX72.js";import"../../../chunk-EUFDQ4KL.js";import"../../../chunk-KXM6YRG2.js";import"../../../chunk-BSPCSC45.js";import{WidthIcon as u,TextLinesIcon as k}from"efficient-shell/icons/efficient";import{jsx as j}from"react/jsx-runtime";var d=t("a value or limit row under the Width and text-fit choices; drawn bare in the approved design (owner 2026-10-29, c25 row 4); no shell glyph names a min, max or fixed width");function a(t={}){const a=i(t.say),F=t.phone??n,x=(t,i)=>r(t,i,F),f=(t,i,n,o,r)=>x(t,a.slider(i,d,n.min,n.max,n.step,o,"px",{clear:r?{hint:o,emptyLabel:r}:{hint:o}}));return{size:{_gBlockSize:o("Size"),...x("widthFit",a.segmented("Width",/* @__PURE__ */j(u,{}),[...e],s)),...f("width","Fixed width",m,m.fallback),...f("minWidth","Min width",h,h.min,"None"),...f("maxWidth","Content width",h,h.min,"None")},text:t.textFit?{_gText:o("Text"),...x("textFit",a.segmented("When the text does not fit",/* @__PURE__ */j(k,{}),[...p],t.textFit)),...f("minFont","Min font size",c,c.fallback)}:{}}}export{a as blockSizeFieldSet};
1
+ import{noGlyph as t,boxFieldBuilders as i,PHONE_KEY_ACCESS as n,group as o,phoneTwinFields as r}from"../../../chunk-WL57KM5C.js";import"../../../chunk-XWTQTANN.js";import"../../../chunk-2T22IY3J.js";import"../../../chunk-ZNLODQD4.js";import"../../../chunk-22I55W37.js";import"../../../chunk-LX23TCTP.js";import"../../../chunk-G2VZ4DET.js";import"../../../chunk-3OOYGEJY.js";import"../../../chunk-6WY6ZXJG.js";import{BLOCK_WIDTH_LIMIT as h,BLOCK_FIXED_WIDTH as m,BLOCK_WIDTH_FIT_POINTS as e,BLOCK_WIDTH_FIT_DEFAULT as s,TEXT_FIT_MIN_FONT as c,TEXT_FIT_POINTS as p}from"../../../chunk-XH4BP64C.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-L36E2WCO.js";import"../../../chunk-XT75WETI.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-D4TH4QQR.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-LDHUPZBK.js";import"../../../chunk-TF6NAIV7.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-DIOTWSCO.js";import"../../../chunk-MNQDOSAX.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-C63IB4VW.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-MIX7EGRG.js";import"../../../chunk-UMTUKSE6.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-YDTEYXQW.js";import"../../../chunk-KXM6YRG2.js";import"../../../chunk-6GJEOER4.js";import"../../../chunk-FR7EEKFF.js";import"../../../chunk-7UFKEX72.js";import"../../../chunk-BSPCSC45.js";import{WidthIcon as u,TextLinesIcon as k}from"efficient-shell/icons/efficient";import{jsx as j}from"react/jsx-runtime";var d=t("a value or limit row under the Width and text-fit choices; drawn bare in the approved design (owner 2026-10-29, c25 row 4); no shell glyph names a min, max or fixed width");function a(t={}){const a=i(t.say),T=t.phone??n,x=(t,i)=>r(t,i,T),W=(t,i,n,o,r)=>x(t,a.slider(i,d,n.min,n.max,n.step,o,"px",{clear:r?{hint:o,emptyLabel:r}:{hint:o}}));return{size:{_gBlockSize:o("Size"),...x("widthFit",a.segmented("Width",/* @__PURE__ */j(u,{}),[...e],s)),...W("width","Fixed width",m,m.fallback),...W("minWidth","Min width",h,h.min,"None"),...W("maxWidth","Content width",h,h.min,"None")},text:t.textFit?{_gText:o("Text"),...x("textFit",a.segmented("When the text does not fit",/* @__PURE__ */j(k,{}),[...p],t.textFit)),...W("minFont","Min font size",c,c.fallback)}:{}}}export{a as blockSizeFieldSet};
@@ -1 +1 @@
1
- export{blockTypesIn}from"../../../chunk-IZGFJWH4.js";import"../../../chunk-EUFDQ4KL.js";import"../../../chunk-KXM6YRG2.js";
1
+ export{blockTypesIn}from"../../../chunk-IZGFJWH4.js";import"../../../chunk-YDTEYXQW.js";import"../../../chunk-KXM6YRG2.js";
@@ -11,7 +11,7 @@ import '../../../blocks/index.js';
11
11
  import '../../../types-BljCVdzR.js';
12
12
  import '../../../data/index.js';
13
13
  import '../../../types-Dq180WRV.js';
14
- import '../../../resolve-Bz4mszpL.js';
14
+ import '../../../phone-order-CRKvsTsz.js';
15
15
  import '../../../plan-D0DgSLnY.js';
16
16
  import '../document-contract.js';
17
17
  import '../document-switch.js';
@@ -30,11 +30,12 @@ import '../shared-section-types.js';
30
30
  /** A host's word for an English word or row label a builder draws. */
31
31
  type BoxFieldSay = (english: string) => string;
32
32
  /**
33
- * What a phone row says it follows: "{value} on desktop", in the host's words.
34
- * The ONE home of that sentence: every twin row (a slider, a strip, a list, a
35
- * colour, a border) says it through here.
33
+ * What a twin row says it follows: "{value} on desktop", or on the tablet for a
34
+ * phone twin that rests on a tablet value, in the host's words. The ONE home of
35
+ * that sentence: every twin row (a slider, a strip, a list, a colour, a border)
36
+ * says it through here.
36
37
  */
37
- declare function onDesktopWords(say: BoxFieldSay, shown: string): string;
38
+ declare function onDesktopWords(say: BoxFieldSay, shown: string, followsView?: 'desktop' | 'tablet'): string;
38
39
  /** A choice's option, as a builder is given it and as it rides the field. */
39
40
  interface SelectOption {
40
41
  value: string;
@@ -76,12 +77,20 @@ type BoxFieldRenderProps<V> = {
76
77
  * that stores nothing passes `undefined`.
77
78
  */
78
79
  follows?: unknown;
80
+ /** Which view `follows` is the value of. Left out: the desktop. */
81
+ followsView?: 'desktop' | 'tablet';
79
82
  /**
80
83
  * Where a phone twin's values are kept ({@link phoneTwinFields} passes its
81
84
  * access). A row that reads or writes a SIBLING key too (a colour's
82
85
  * opacity) goes through this, so the twin never touches a desktop key.
83
86
  */
84
87
  twinAccess?: PhoneValueAccess;
88
+ /**
89
+ * Where the next wider view's values are kept, on the phone's twin of a
90
+ * host with tablet values: the tablet's access. A row that follows a SIBLING
91
+ * key too (the Corners' sides) reads the tablet's there, then the desktop's.
92
+ */
93
+ widerAccess?: PhoneValueAccess;
85
94
  id?: string;
86
95
  name?: string;
87
96
  };
@@ -276,9 +285,17 @@ interface PhoneValueAccess extends ValueAccess {
276
285
  /** The phone value is stored under `fieldKey` itself, so the row reads and
277
286
  * writes through its own field (`value` / `onChange`), as any row does. */
278
287
  ownField?: boolean;
288
+ /** Where the row's TABLET value is kept. Left out: the row has none, and the
289
+ * tablet view hides it (the email designer has no tablet view). */
290
+ tablet?: PhoneValueAccess;
279
291
  }
280
292
  /** The website's phone values: `phoneKey(key)`, beside the desktop key. */
281
293
  declare const PHONE_KEY_ACCESS: PhoneValueAccess;
294
+ /**
295
+ * The website's phone AND tablet values. A row takes this in the PR that makes
296
+ * the page draw its tablet value, so no panel row writes a value nothing reads.
297
+ */
298
+ declare const VIEW_KEY_ACCESS: PhoneValueAccess;
282
299
  /**
283
300
  * Phone values kept in ONE object prop (the email designer's `mobile`). A
284
301
  * write keeps the object's other keys; a clear removes only its own, and an
@@ -290,7 +307,7 @@ declare function phoneObjectAccess(objectKey: string): PhoneValueAccess;
290
307
  * is kept. */
291
308
  interface PhoneTwinOptions<V> {
292
309
  /**
293
- * The row the phone view draws, when it is not the desktop's row: a phone
310
+ * The row the phone and tablet views draw, when it is not the desktop's row: a phone
294
311
  * that takes a different range or unit (a divider's length is a % of the
295
312
  * column on a phone, px or % on the desktop). It is still given `follows`;
296
313
  * a row that must not rest on the desktop value says so itself
@@ -299,11 +316,19 @@ interface PhoneTwinOptions<V> {
299
316
  phoneRow?: BoxField<V>;
300
317
  }
301
318
  /**
302
- * A row WITH its phone value (twins plan E2: "phone values in phone view, on
303
- * the same row", Lewis 2026-10-27): the row under `key` (Desktop view only)
304
- * and its twin (Phone view only) under `access.fieldKey(key)`. The twin is the
305
- * same row given `follows`, the desktop value: empty, it rests on that and
306
- * says so. A clear writes nothing — never a copy of the desktop value.
319
+ * A row WITH its view values (twins plan E2: "phone values in phone view, on
320
+ * the same row", Lewis 2026-10-27): the row under `key` (Desktop view only), its
321
+ * tablet twin under `access.tablet.fieldKey(key)` when the host keeps one
322
+ * (Tablet view only) and its phone twin under `access.fieldKey(key)` (Phone view
323
+ * only). A twin is the same row given `follows`, the next wider view's value:
324
+ * empty, it rests on that and says so. A clear writes nothing — never a copy.
325
+ *
326
+ * A row can be a twin when it reads and writes through its own field or
327
+ * through `twinAccess` (every builder here: slider, select, the style rows,
328
+ * the object padding row). Not a twin, because it reads the node's keys
329
+ * itself: `positionFields` (its two keys), and the picture row's focus point
330
+ * (`focusKey`, which knows the phone only). A host that gives either one a
331
+ * view value changes the row first; a test holds each row it makes a twin.
307
332
  */
308
333
  declare function phoneTwinFields<V>(key: string, row: BoxField<V>, access?: PhoneValueAccess, more?: PhoneTwinOptions<V>): Record<string, BoxField<V>>;
309
334
  /** A slider's label-line mark, as a function of the STORED value. */
@@ -331,8 +356,8 @@ interface SliderClear {
331
356
  * follows is not one ("Auto": a picture's own height). */
332
357
  emptyLabel?: string;
333
358
  /**
334
- * Whether this row's PHONE TWIN rests on the desktop value. Default true.
335
- * `false`: an empty phone value is the row's own empty state (`hint`,
359
+ * Whether this row's TWINS rest on the wider view's value. Default true.
360
+ * `false`: an empty tablet or phone value is the row's own empty state (`hint`,
336
361
  * `useHint`, `emptyLabel`), whatever the desktop stores — a picture whose
337
362
  * phone height is its natural height ("Auto"), not the desktop's band.
338
363
  */
@@ -486,6 +511,9 @@ type SidesPaddingOptions = {
486
511
  };
487
512
  /** Give the row a phone twin (shown in phone view only). Default true. */
488
513
  phone?: boolean;
514
+ /** Give the row a tablet twin too (shown in tablet view only), under
515
+ * `tabletKey(key)`, as {@link VIEW_KEY_ACCESS} does for one key. */
516
+ tablet?: boolean;
489
517
  /** What an EMPTY side draws, per side, shown in grey (default 0). */
490
518
  fallback?: Partial<Record<PadSide, number>>;
491
519
  /**
@@ -733,4 +761,4 @@ declare const boxFieldSet: (opts?: BoxFieldSetOptions) => {
733
761
  _gNudge: BoxField<undefined>;
734
762
  };
735
763
 
736
- export { ANCHOR_LABELS, type AlignmentOptions, AlignmentStrip, BOX_ALIGN_POINTS, BOX_DIRECTIONS, BOX_DIRECTION_LABEL, BOX_GAP, BOX_JUSTIFY_POINTS, BOX_NUDGE_LIMIT, BOX_PLACEMENTS, BOX_PLACEMENT_DEFAULT, BOX_WIDTH, BOX_WRAP_LABEL, BOX_WRAP_POINTS, type BlockAlignmentOptions, BlockAlignmentStrip, type BoxAlign, type BoxField, type BoxFieldRenderProps, type BoxFieldSay, type BoxFieldSetOptions, type BoxFlexRowOptions, type BoxJustify, type BoxPlacement, type BoxWrap, type DirectionFieldOptions, FLAT_ACCESS, type GapFieldOptions, OPEN_PLACEMENT_POINTS, PHONE_KEY_ACCESS, type PhoneTwinOptions, type PhoneValueAccess, type PlacementFieldOptions, PlacementGridView, type PlacementPoint, type PositionOptions, type RowRead, SIDE_PAD_KEYS, Segmented, type SegmentedOptions, type SelectField, type SelectOption, type SelectOptions, type SidesPaddingOptions, type SliderAction, type SliderClear, SliderControl, type SliderControlProps, type SliderOptions, type ValueAccess, alignmentField, alignmentFields, blockAlignmentField, blockAlignmentFields, boxAlignField, boxFieldBuilders, boxFieldSet, boxJustifyField, boxWrapField, directionField, gapField, group, iconOf, isNoGlyph, noGlyph, normaliseBoxPlacement, objectAccess, onDesktopWords, phoneObjectAccess, phoneTwinFields, placementField, positionFields, positionPatch, section, segmented, select, sharedStyleKinds, sidesFromObject, sidesPaddingFields, sidesPaddingPatch, sidesToObject, slider, useAccessPatch, useAccessValue };
764
+ export { ANCHOR_LABELS, type AlignmentOptions, AlignmentStrip, BOX_ALIGN_POINTS, BOX_DIRECTIONS, BOX_DIRECTION_LABEL, BOX_GAP, BOX_JUSTIFY_POINTS, BOX_NUDGE_LIMIT, BOX_PLACEMENTS, BOX_PLACEMENT_DEFAULT, BOX_WIDTH, BOX_WRAP_LABEL, BOX_WRAP_POINTS, type BlockAlignmentOptions, BlockAlignmentStrip, type BoxAlign, type BoxField, type BoxFieldRenderProps, type BoxFieldSay, type BoxFieldSetOptions, type BoxFlexRowOptions, type BoxJustify, type BoxPlacement, type BoxWrap, type DirectionFieldOptions, FLAT_ACCESS, type GapFieldOptions, OPEN_PLACEMENT_POINTS, PHONE_KEY_ACCESS, type PhoneTwinOptions, type PhoneValueAccess, type PlacementFieldOptions, PlacementGridView, type PlacementPoint, type PositionOptions, type RowRead, SIDE_PAD_KEYS, Segmented, type SegmentedOptions, type SelectField, type SelectOption, type SelectOptions, type SidesPaddingOptions, type SliderAction, type SliderClear, SliderControl, type SliderControlProps, type SliderOptions, VIEW_KEY_ACCESS, type ValueAccess, alignmentField, alignmentFields, blockAlignmentField, blockAlignmentFields, boxAlignField, boxFieldBuilders, boxFieldSet, boxJustifyField, boxWrapField, directionField, gapField, group, iconOf, isNoGlyph, noGlyph, normaliseBoxPlacement, objectAccess, onDesktopWords, phoneObjectAccess, phoneTwinFields, placementField, positionFields, positionPatch, section, segmented, select, sharedStyleKinds, sidesFromObject, sidesPaddingFields, sidesPaddingPatch, sidesToObject, slider, useAccessPatch, useAccessValue };
@@ -1 +1 @@
1
- export{ANCHOR_LABELS,AlignmentStrip,BOX_ALIGN_POINTS,BOX_DIRECTIONS,BOX_DIRECTION_LABEL,BOX_GAP,BOX_JUSTIFY_POINTS,BOX_NUDGE_LIMIT,BOX_PLACEMENTS,BOX_PLACEMENT_DEFAULT,BOX_WIDTH,BOX_WRAP_LABEL,BOX_WRAP_POINTS,BlockAlignmentStrip,FLAT_ACCESS,OPEN_PLACEMENT_POINTS,PHONE_KEY_ACCESS,PlacementGridView,SIDE_PAD_KEYS,Segmented,SliderControl,alignmentField,alignmentFields,blockAlignmentField,blockAlignmentFields,boxAlignField,boxFieldBuilders,boxFieldSet,boxJustifyField,boxWrapField,directionField,gapField,group,iconOf,isNoGlyph,noGlyph,normaliseBoxPlacement,objectAccess,onDesktopWords,phoneObjectAccess,phoneTwinFields,placementField,positionFields,positionPatch,section,segmented,select,sharedStyleKinds,sidesFromObject,sidesPaddingFields,sidesPaddingPatch,sidesToObject,slider,useAccessPatch,useAccessValue}from"../../../chunk-OGG6FMBA.js";import"../../../chunk-BLE3U2GS.js";import"../../../chunk-22I55W37.js";export{FIELD_DESCRIPTION_MARKER,describedAs}from"../../../chunk-LX23TCTP.js";import"../../../chunk-C4TJN6GR.js";import"../../../chunk-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";import"../../../chunk-E52W3M5I.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-3W2O22DZ.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-CLAADE4J.js";import"../../../chunk-2T22IY3J.js";import"../../../chunk-D4TH4QQR.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-MNQDOSAX.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-JACEEVVF.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-MIX7EGRG.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-TOKMFZPB.js";import"../../../chunk-FR7EEKFF.js";import"../../../chunk-7UFKEX72.js";import"../../../chunk-EUFDQ4KL.js";import"../../../chunk-KXM6YRG2.js";import"../../../chunk-BSPCSC45.js";
1
+ export{ANCHOR_LABELS,AlignmentStrip,BOX_ALIGN_POINTS,BOX_DIRECTIONS,BOX_DIRECTION_LABEL,BOX_GAP,BOX_JUSTIFY_POINTS,BOX_NUDGE_LIMIT,BOX_PLACEMENTS,BOX_PLACEMENT_DEFAULT,BOX_WIDTH,BOX_WRAP_LABEL,BOX_WRAP_POINTS,BlockAlignmentStrip,FLAT_ACCESS,OPEN_PLACEMENT_POINTS,PHONE_KEY_ACCESS,PlacementGridView,SIDE_PAD_KEYS,Segmented,SliderControl,VIEW_KEY_ACCESS,alignmentField,alignmentFields,blockAlignmentField,blockAlignmentFields,boxAlignField,boxFieldBuilders,boxFieldSet,boxJustifyField,boxWrapField,directionField,gapField,group,iconOf,isNoGlyph,noGlyph,normaliseBoxPlacement,objectAccess,onDesktopWords,phoneObjectAccess,phoneTwinFields,placementField,positionFields,positionPatch,section,segmented,select,sharedStyleKinds,sidesFromObject,sidesPaddingFields,sidesPaddingPatch,sidesToObject,slider,useAccessPatch,useAccessValue}from"../../../chunk-WL57KM5C.js";import"../../../chunk-XWTQTANN.js";import"../../../chunk-2T22IY3J.js";import"../../../chunk-ZNLODQD4.js";import"../../../chunk-22I55W37.js";export{FIELD_DESCRIPTION_MARKER,describedAs}from"../../../chunk-LX23TCTP.js";import"../../../chunk-G2VZ4DET.js";import"../../../chunk-3OOYGEJY.js";import"../../../chunk-6WY6ZXJG.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-L36E2WCO.js";import"../../../chunk-XT75WETI.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-D4TH4QQR.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-LDHUPZBK.js";import"../../../chunk-TF6NAIV7.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-DIOTWSCO.js";import"../../../chunk-MNQDOSAX.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-C63IB4VW.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-MIX7EGRG.js";import"../../../chunk-UMTUKSE6.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-YDTEYXQW.js";import"../../../chunk-KXM6YRG2.js";import"../../../chunk-6GJEOER4.js";import"../../../chunk-FR7EEKFF.js";import"../../../chunk-7UFKEX72.js";import"../../../chunk-BSPCSC45.js";
@@ -13,7 +13,7 @@ import '../../../blocks/index.js';
13
13
  import '../../../types-BljCVdzR.js';
14
14
  import '../../../data/index.js';
15
15
  import '../../../types-Dq180WRV.js';
16
- import '../../../resolve-Bz4mszpL.js';
16
+ import '../../../phone-order-CRKvsTsz.js';
17
17
  import '../../../plan-D0DgSLnY.js';
18
18
  import '../document-contract.js';
19
19
  import '../document-switch.js';
@@ -1 +1 @@
1
- export{buttonFieldSet}from"../../../chunk-RN5AYO53.js";import"../../../chunk-TXNCWF67.js";import"../../../chunk-OGG6FMBA.js";import"../../../chunk-BLE3U2GS.js";import"../../../chunk-22I55W37.js";import"../../../chunk-LX23TCTP.js";import"../../../chunk-C4TJN6GR.js";import"../../../chunk-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";export{BUTTON_PAD_KEYS,BUTTON_STYLE_KEYS}from"../../../chunk-PLTTPHK5.js";import"../../../chunk-E52W3M5I.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-3W2O22DZ.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-CLAADE4J.js";import"../../../chunk-2T22IY3J.js";import"../../../chunk-D4TH4QQR.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-MNQDOSAX.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-JACEEVVF.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-MIX7EGRG.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-TOKMFZPB.js";import"../../../chunk-FR7EEKFF.js";import"../../../chunk-7UFKEX72.js";import"../../../chunk-EUFDQ4KL.js";import"../../../chunk-KXM6YRG2.js";import"../../../chunk-BSPCSC45.js";
1
+ export{buttonFieldSet}from"../../../chunk-LAJYMOY3.js";import"../../../chunk-XESNAMI3.js";import"../../../chunk-WL57KM5C.js";import"../../../chunk-XWTQTANN.js";import"../../../chunk-2T22IY3J.js";import"../../../chunk-ZNLODQD4.js";import"../../../chunk-22I55W37.js";import"../../../chunk-LX23TCTP.js";import"../../../chunk-G2VZ4DET.js";import"../../../chunk-3OOYGEJY.js";import"../../../chunk-6WY6ZXJG.js";export{BUTTON_PAD_KEYS,BUTTON_STYLE_KEYS}from"../../../chunk-PLTTPHK5.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-L36E2WCO.js";import"../../../chunk-XT75WETI.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-D4TH4QQR.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-LDHUPZBK.js";import"../../../chunk-TF6NAIV7.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-DIOTWSCO.js";import"../../../chunk-MNQDOSAX.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-C63IB4VW.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-MIX7EGRG.js";import"../../../chunk-UMTUKSE6.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-YDTEYXQW.js";import"../../../chunk-KXM6YRG2.js";import"../../../chunk-6GJEOER4.js";import"../../../chunk-FR7EEKFF.js";import"../../../chunk-7UFKEX72.js";import"../../../chunk-BSPCSC45.js";
@@ -1,7 +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
+ import { D as DeviceFieldTier, a as DeviceTier } from '../../../rowMarks-D2cO7UTi.js';
4
+ export { b as DEVICE_FIELD_MARKER, c as DeviceFieldMeta, d as deviceMetaOf } from '../../../rowMarks-D2cO7UTi.js';
5
5
  import '../content/view-tiers.js';
6
6
 
7
7
  /**
@@ -31,11 +31,9 @@ import '../content/view-tiers.js';
31
31
  * desktop size is exactly where it was, because nothing ever wrote to it.
32
32
  * `scripts/test-device-fields.tsx` pins that round trip.
33
33
  *
34
- * TABLET (owner ruling, card 66066). There are no tablet-specific stored values
35
- * today, and inventing them would mean a new stored prop on every section — a
36
- * different card. So tablet shows the DESKTOP values and the panel SAYS SO
37
- * ({@link DEVICE_NOTE}); it never presents desktop values as if they were
38
- * tablet's. {@link shownTier} is the single place that ruling is written down.
34
+ * THREE VIEWS (Lewis 2026-10-09, 2026-10-23, 2026-11-02). Each view owns its
35
+ * values: a tablet row is gated as a phone row is, and a row with no value of
36
+ * the view's own is not drawn there.
39
37
  *
40
38
  * WHY THE HIDDEN FIELD LEAVES NO GAP. The old library wraps every top-level field in its
41
39
  * own padded old library's padded field box before it calls `render`, so a field that
@@ -46,20 +44,15 @@ import '../content/view-tiers.js';
46
44
  * instead of a second DOM pass (so it cannot race the fold's).
47
45
  */
48
46
 
49
- /**
50
- * Which tier's stored values the panel shows for a given preview device.
51
- *
52
- * The owner ruling in one expression: phone shows the phone values, everything
53
- * else — desktop AND tablet — shows the desktop values.
54
- */
47
+ /** Which tier's stored values the panel shows for a given preview device: its own. */
55
48
  declare function shownTier(device: PreviewDevice): DeviceTier;
56
49
  /**
57
50
  * The quiet line the panel puts above a section's settings, so a merchant can
58
51
  * always tell WHICH device's value they are editing without reading the canvas.
59
52
  *
60
53
  * Desktop says nothing: it is the resting state, and a banner that is always
61
- * there is a banner nobody reads. Tablet says the ruling out loud rather than
62
- * letting the desktop values pass for tablet's own.
54
+ * there is a banner nobody reads. Tablet says nothing either: its rows are its
55
+ * own, and the name and the Reset say which hold a value.
63
56
  */
64
57
  declare const DEVICE_NOTE: Readonly<Record<PreviewDevice, string | null>>;
65
58
  /** The attribute the stylesheet looks for to collapse a gated-off field's the old library
@@ -82,8 +75,8 @@ type AnyCustomField = {
82
75
  declare function withoutDeviceGate(field: unknown): unknown;
83
76
  /**
84
77
  * 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`.
78
+ * every view, handing the control the tier it writes there (`tier` prop: the
79
+ * view's own). See `DeviceFieldTier`.
87
80
  *
88
81
  * Everything else about the field is preserved by identity-spread — its `type`,
89
82
  * its manifest markers, its data keys — so the media and neutralization walks,
@@ -1 +1 @@
1
- export{DEVICE_HIDDEN_ATTR,DEVICE_NOTE,deviceField,deviceNote,shownTier,withoutDeviceGate}from"../../../chunk-BLE3U2GS.js";import"../../../chunk-22I55W37.js";import"../../../chunk-C4TJN6GR.js";export{DEVICE_FIELD_MARKER,deviceMetaOf}from"../../../chunk-YCSZAP7T.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-BSPCSC45.js";
1
+ export{DEVICE_HIDDEN_ATTR,DEVICE_NOTE,deviceField,deviceNote,shownTier,withoutDeviceGate}from"../../../chunk-ZNLODQD4.js";import"../../../chunk-22I55W37.js";import"../../../chunk-G2VZ4DET.js";export{DEVICE_FIELD_MARKER,deviceMetaOf}from"../../../chunk-YCSZAP7T.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-BSPCSC45.js";
@@ -12,7 +12,7 @@ import '../../../blocks/index.js';
12
12
  import '../../../types-BljCVdzR.js';
13
13
  import '../../../data/index.js';
14
14
  import '../../../types-Dq180WRV.js';
15
- import '../../../resolve-Bz4mszpL.js';
15
+ import '../../../phone-order-CRKvsTsz.js';
16
16
  import '../../../plan-D0DgSLnY.js';
17
17
  import '../document-contract.js';
18
18
  import '../document-switch.js';
@@ -1,5 +1,5 @@
1
- import{ScreenDocumentContext as e}from"../../../chunk-CPIWSFGR.js";import"../../../chunk-QZJKWKGH.js";import"../../../chunk-ERR437B5.js";import{requestMediaPick as n}from"../../../chunk-JIP5JNRB.js";import"../../../chunk-GR3XRILS.js";import"../../../chunk-RLBXE4EU.js";import"../../../chunk-6ATIYLUL.js";import"../../../chunk-KO47WAWR.js";import"../../../chunk-NQW6XCAY.js";import"../../../chunk-LOMEH6DG.js";import"../../../chunk-KCOBHPN6.js";import"../../../chunk-NCXYC7WI.js";import"../../../chunk-YM4UEGBV.js";import"../../../chunk-SNF5764Q.js";import{useEaselHost as o}from"../../../chunk-LX23TCTP.js";import{DEFAULT_IMAGE_ROW_WORDS as t}from"../../../chunk-C4TJN6GR.js";import{phoneKey as r}from"../../../chunk-E52W3M5I.js";import{MEDIA_FIELD_MARKER as i}from"../../../chunk-ANPOR6EY.js";import{useSelectedHost as c}from"../../../chunk-3W2O22DZ.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import{SettingsDefaultReset as s}from"../../../chunk-2T22IY3J.js";import{DEFAULT_PANEL_WORDS as a}from"../../../chunk-56ID6FKZ.js";import"../../../chunk-NDRZP6YR.js";import"../../../chunk-H6DDIBQ4.js";import"../../../chunk-YYD257TD.js";import"../../../chunk-RE4LP46F.js";import"../../../chunk-MNQDOSAX.js";import"../../../chunk-PMRN5Z3T.js";import{SettingsField as m}from"../../../chunk-MIX7EGRG.js";import{useWords as l}from"../../../chunk-MFIRYGHW.js";import"../../../chunk-TOKMFZPB.js";import"../../../chunk-FR7EEKFF.js";import"../../../chunk-7UFKEX72.js";import"../../../chunk-EUFDQ4KL.js";import"../../../chunk-KXM6YRG2.js";import{usePreviewDevice as u}from"../../../chunk-BSPCSC45.js";import{useContext as p,useState as h}from"react";import{FOCAL_DEFAULT as f}from"efficient-shell/format";import{MediaUploadField as k,Button as d,Input as j}from"efficient-shell/ui";import{jsx as g,jsxs as v}from"react/jsx-runtime";function C(e){return"string"==typeof e?e:e&&"object"==typeof e&&"string"==typeof e.src?e.src:""}function y({src:e,onChange:n,tidy:o,name:t}){const[r,i]=h(null),c=!r||e!==r.text&&e!==r.from?e:r.text;/* @__PURE__ */
2
- return g(j,{size:"md",type:"url",inputMode:"url",autoComplete:"off",spellCheck:!1,value:c,placeholder:"https://…","aria-label":t,onChange:o=>{const t=o.target.value;i(n=>({text:t,from:!n||e!==n.text&&e!==n.from?e:n.from})),n(t)},onBlur:e=>{const t=e.target.value,r=o?o(t):t;r!==t&&n(r),i(null)},onKeyDown:e=>{"Enter"===e.key&&e.currentTarget.blur()}})}function R({label:i,icon:j,hint:R,value:E,onChange:P,name:b,readOnly:K,canPick:B=!0,kind:F="image",accept:M,acceptHint:D,pickOptions:N,maxSizeBytes:L,height:O,placeholder:Y,removeLabel:I,paste:Q,focusKey:S,focusWhen:T,frameKey:W,note:G}){const w=l("imageRow",t),X=l("panel",a),x=o(),H=c(),A=p(e),J="video"===F,Z=function(e,n){const o=c(),t="mobile"===u();if(!e||!o)return null;const i=o.values??{};if(n&&!n(i))return null;const s="string"==typeof i[e]&&i[e]?String(i[e]):f,a=r(e),m="string"==typeof i[a]&&i[a]?String(i[a]):void 0;return{phone:t,desktop:s,own:m,focus:t?m??s:s,set:n=>o.onChange(t?a:e,n),clear:()=>o.onChange(a,void 0)}}(J?void 0:S,T),[U,z]=h(!1),V=!0===K||!0===H?.readOnly,q=B&&!V;if(A&&!A.capabilities.mediaEditing)/* @__PURE__ */
3
- return g(m,{label:i,icon:j,hint:R,children:/* @__PURE__ */g("div",{className:"es-image-row-note",children:J?w.templateVideo:w.template})});const $=W&&b?{video:b,frame:W}:null,_=$?e=>e?P(e):H?.onChangeMany({[$.video]:"",[$.frame]:""}):P,ee=$?e=>H?.onChangeMany({[$.video]:e,[$.frame]:""}):P,ne=C(E),oe=Z?.phone&&ne?/* @__PURE__ */g(s,{words:X,label:w.focus,changed:Boolean(Z.own),detail:w.onDesktop(Z.desktop),onReset:Z.clear,disabled:V}):void 0,te=Q&&!V&&(Q.open||U);/* @__PURE__ */
4
- return g(m,{label:i,icon:j,hint:R,action:oe,children:/* @__PURE__ */v("div",{className:"es-image-row",children:[
5
- /* @__PURE__ */g(k,{value:ne,onChange:_,onPick:e=>{if(q)return $&&!H?Promise.resolve(null):n(x,{accept:M??(J?"video/*":"image/*"),title:i,...e?{file:e}:{},...N?{options:N}:{}}).then(e=>e&&$?(H?.onChangeMany({[$.video]:e.url,[$.frame]:e.posterUrl??""}),null):e?.url??null)},accept:M??(J?"video/*":"image/*"),acceptHint:D,kind:F,maxSizeBytes:L,height:O,placeholder:Y,removeLabel:I,allowReplace:q,allowRemove:!V,disabled:V||!q&&!ne,focusLabel:w.focus,...Z&&!V?{focus:Z.focus,onFocusChange:Z.set}:Z?{focus:Z.focus}:{}}),G?.(ne),Q&&!V?te?/* @__PURE__ */g(y,{src:ne,onChange:ee,tidy:Q.tidy,name:w.pasteName}):/* @__PURE__ */g(d,{variant:"link",size:"sm",onClick:()=>z(!0),children:w.pasteLink}):null]})})}function E(e,n,o={}){return{type:"custom",[i]:!0,render:t=>/* @__PURE__ */g(R,{...o,label:e,icon:n,value:t.value,onChange:e=>t.onChange(e),name:t.name,readOnly:t.readOnly})}}export{R as ImageRow,E as imageField,C as imageValueSrc};
1
+ import{SettingsDefaultReset as e}from"../../../chunk-2T22IY3J.js";import{ScreenDocumentContext as n}from"../../../chunk-OB4KI2AN.js";import"../../../chunk-JUJEVGLY.js";import"../../../chunk-ERR437B5.js";import{requestMediaPick as o}from"../../../chunk-5HYVOOH3.js";import"../../../chunk-A5USZ6Z6.js";import"../../../chunk-RLBXE4EU.js";import"../../../chunk-6V6LC7QV.js";import"../../../chunk-7YXWWMBM.js";import"../../../chunk-NQW6XCAY.js";import"../../../chunk-LOMEH6DG.js";import"../../../chunk-KCOBHPN6.js";import"../../../chunk-NCXYC7WI.js";import"../../../chunk-YM4UEGBV.js";import"../../../chunk-SNF5764Q.js";import{useEaselHost as t}from"../../../chunk-LX23TCTP.js";import{DEFAULT_IMAGE_ROW_WORDS as r}from"../../../chunk-G2VZ4DET.js";import{MEDIA_FIELD_MARKER as i}from"../../../chunk-ANPOR6EY.js";import{useSelectedHost as c}from"../../../chunk-L36E2WCO.js";import"../../../chunk-XT75WETI.js";import"../../../chunk-TBY3DFKS.js";import{DEFAULT_PANEL_WORDS as s}from"../../../chunk-56ID6FKZ.js";import"../../../chunk-LDHUPZBK.js";import"../../../chunk-TF6NAIV7.js";import"../../../chunk-NDRZP6YR.js";import"../../../chunk-H6DDIBQ4.js";import"../../../chunk-G7J6SGMF.js";import"../../../chunk-RE4LP46F.js";import{phoneKey as a}from"../../../chunk-DIOTWSCO.js";import"../../../chunk-MNQDOSAX.js";import"../../../chunk-PMRN5Z3T.js";import{SettingsField as m}from"../../../chunk-MIX7EGRG.js";import{useWords as l}from"../../../chunk-MFIRYGHW.js";import"../../../chunk-YDTEYXQW.js";import"../../../chunk-KXM6YRG2.js";import"../../../chunk-6GJEOER4.js";import"../../../chunk-FR7EEKFF.js";import"../../../chunk-7UFKEX72.js";import{usePreviewDevice as u}from"../../../chunk-BSPCSC45.js";import{useContext as p,useState as h}from"react";import{FOCAL_DEFAULT as f}from"efficient-shell/format";import{MediaUploadField as k,Button as d,Input as j}from"efficient-shell/ui";import{jsx as g,jsxs as v}from"react/jsx-runtime";function C(e){return"string"==typeof e?e:e&&"object"==typeof e&&"string"==typeof e.src?e.src:""}function y({src:e,onChange:n,tidy:o,name:t}){const[r,i]=h(null),c=!r||e!==r.text&&e!==r.from?e:r.text;/* @__PURE__ */
2
+ return g(j,{size:"md",type:"url",inputMode:"url",autoComplete:"off",spellCheck:!1,value:c,placeholder:"https://…","aria-label":t,onChange:o=>{const t=o.target.value;i(n=>({text:t,from:!n||e!==n.text&&e!==n.from?e:n.from})),n(t)},onBlur:e=>{const t=e.target.value,r=o?o(t):t;r!==t&&n(r),i(null)},onKeyDown:e=>{"Enter"===e.key&&e.currentTarget.blur()}})}function E({label:i,icon:j,hint:E,value:R,onChange:O,name:b,readOnly:B,canPick:M=!0,kind:Y="image",accept:D,acceptHint:N,pickOptions:F,maxSizeBytes:L,height:S,placeholder:T,removeLabel:G,paste:K,focusKey:P,focusWhen:X,frameKey:I,note:W}){const w=l("imageRow",r),H=l("panel",s),x=t(),V=c(),U=p(n),Z="video"===Y,A=function(e,n){const o=c(),t="mobile"===u();if(!e||!o)return null;const r=o.values??{};if(n&&!n(r))return null;const i="string"==typeof r[e]&&r[e]?String(r[e]):f,s=a(e),m="string"==typeof r[s]&&r[s]?String(r[s]):void 0;return{phone:t,desktop:i,own:m,focus:t?m??i:i,set:n=>o.onChange(t?s:e,n),clear:()=>o.onChange(s,void 0)}}(Z?void 0:P,X),[Q,J]=h(!1),z=!0===B||!0===V?.readOnly,q=M&&!z;if(U&&!U.capabilities.mediaEditing)/* @__PURE__ */
3
+ return g(m,{label:i,icon:j,hint:E,children:/* @__PURE__ */g("div",{className:"es-image-row-note",children:Z?w.templateVideo:w.template})});const $=I&&b?{video:b,frame:I}:null,_=$?e=>e?O(e):V?.onChangeMany({[$.video]:"",[$.frame]:""}):O,ee=$?e=>V?.onChangeMany({[$.video]:e,[$.frame]:""}):O,ne=C(R),oe=A?.phone&&ne?/* @__PURE__ */g(e,{words:H,label:w.focus,changed:Boolean(A.own),detail:w.onDesktop(A.desktop),onReset:A.clear,disabled:z}):void 0,te=K&&!z&&(K.open||Q);/* @__PURE__ */
4
+ return g(m,{label:i,icon:j,hint:E,action:oe,children:/* @__PURE__ */v("div",{className:"es-image-row",children:[
5
+ /* @__PURE__ */g(k,{value:ne,onChange:_,onPick:e=>{if(q)return $&&!V?Promise.resolve(null):o(x,{accept:D??(Z?"video/*":"image/*"),title:i,...e?{file:e}:{},...F?{options:F}:{}}).then(e=>e&&$?(V?.onChangeMany({[$.video]:e.url,[$.frame]:e.posterUrl??""}),null):e?.url??null)},accept:D??(Z?"video/*":"image/*"),acceptHint:N,kind:Y,maxSizeBytes:L,height:S,placeholder:T,removeLabel:G,allowReplace:q,allowRemove:!z,disabled:z||!q&&!ne,focusLabel:w.focus,...A&&!z?{focus:A.focus,onFocusChange:A.set}:A?{focus:A.focus}:{}}),W?.(ne),K&&!z?te?/* @__PURE__ */g(y,{src:ne,onChange:ee,tidy:K.tidy,name:w.pasteName}):/* @__PURE__ */g(d,{variant:"link",size:"sm",onClick:()=>J(!0),children:w.pasteLink}):null]})})}function R(e,n,o={}){return{type:"custom",[i]:!0,render:t=>/* @__PURE__ */g(E,{...o,label:e,icon:n,value:t.value,onChange:e=>t.onChange(e),name:t.name,readOnly:t.readOnly})}}export{E as ImageRow,R as imageField,C as imageValueSrc};
@@ -4,7 +4,7 @@ import 'react';
4
4
  import '../../../types-BljCVdzR.js';
5
5
  import '../../../data/index.js';
6
6
  import '../../../types-Dq180WRV.js';
7
- import '../../../resolve-Bz4mszpL.js';
7
+ import '../../../phone-order-CRKvsTsz.js';
8
8
  import '../../../plan-D0DgSLnY.js';
9
9
  import '../../../CanvasDragLayer-DXeQGrwJ.js';
10
10
  import '../../../watch-Unf6SfUf.js';
@@ -1,6 +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
+ import { N as NoControlFieldMeta } from '../../../rowMarks-D2cO7UTi.js';
3
+ export { e as NO_CONTROL_FIELD, n as noControlMetaOf } from '../../../rowMarks-D2cO7UTi.js';
4
4
 
5
5
  /**
6
6
  * panel-no-control-mark — what a settings field draws when it draws NO CONTROL
@@ -4,7 +4,7 @@ import 'react';
4
4
  import '../../../types-BljCVdzR.js';
5
5
  import '../../../data/index.js';
6
6
  import '../../../types-Dq180WRV.js';
7
- import '../../../resolve-Bz4mszpL.js';
7
+ import '../../../phone-order-CRKvsTsz.js';
8
8
  import '../../../plan-D0DgSLnY.js';
9
9
 
10
10
  declare function nodeToDoc(node: TreeItem): Data;