efficient-easel 26.2.0 → 26.4.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 (62) hide show
  1. package/README.md +17 -3
  2. package/dist/{chunk-I3KB7LH7.js → chunk-2C2IUWBH.js} +4 -4
  3. package/dist/chunk-4O4FSRJL.js +1 -0
  4. package/dist/chunk-BTQ3FJKT.js +1 -0
  5. package/dist/{chunk-R76XMEKT.js → chunk-C7IFWSUA.js} +6 -6
  6. package/dist/chunk-FWPKYUGM.js +5 -0
  7. package/dist/chunk-JQQFB7EZ.js +1 -0
  8. package/dist/{chunk-2S7PJZWH.js → chunk-LKP5V3GT.js} +1 -1
  9. package/dist/{chunk-FYV6GZXP.js → chunk-OKJ6KH24.js} +1 -1
  10. package/dist/{chunk-YDJZX2XS.js → chunk-R76RCEEC.js} +1 -1
  11. package/dist/{chunk-MBEUSPIN.js → chunk-SQTVXE5D.js} +4 -4
  12. package/dist/chunk-SS2NY7PP.js +4 -0
  13. package/dist/{chunk-CP6KQP5A.js → chunk-STQDOTHF.js} +1 -1
  14. package/dist/chunk-UJU42JM4.js +14 -0
  15. package/dist/{chunk-LDXYMHYW.js → chunk-UQAN4BIP.js} +1 -1
  16. package/dist/{chunk-ZIEINXSZ.js → chunk-XC4PINYS.js} +7 -7
  17. package/dist/{chunk-IHXQZDDW.js → chunk-XVQNVPIK.js} +39 -39
  18. package/dist/{chunk-WQXAAVCE.js → chunk-Y5M64LEB.js} +1 -1
  19. package/dist/chunk-YAFMYW4J.js +16 -0
  20. package/dist/drag/index.js +1 -1
  21. package/dist/draw/index.d.ts +1 -0
  22. package/dist/draw/index.js +1 -1
  23. package/dist/easel/index.d.ts +16 -1
  24. package/dist/easel/index.js +1 -1
  25. package/dist/fields/index.d.ts +5 -1
  26. package/dist/fields/index.js +1 -1
  27. package/dist/page-copy/index.js +5 -5
  28. package/dist/panel/index.d.ts +5 -527
  29. package/dist/screen/components/AddBlockRow.js +1 -1
  30. package/dist/screen/components/AddSidePanel.js +1 -1
  31. package/dist/screen/components/NodeContextMenu.js +1 -1
  32. package/dist/screen/components/ScreenChrome.js +1 -1
  33. package/dist/screen/components/ScreenMount.js +1 -1
  34. package/dist/screen/components/ScreenStoreProvider.js +1 -1
  35. package/dist/screen/components/SectionScreenShell.js +15 -15
  36. package/dist/screen/components/usePartBridge.js +1 -1
  37. package/dist/screen/index.js +1 -1
  38. package/dist/screen/lib/content/style-keys.d.ts +35 -0
  39. package/dist/screen/lib/content/style-keys.js +1 -0
  40. package/dist/screen/lib/document/block-set-host.js +1 -1
  41. package/dist/screen/lib/document/block-size-fields.d.ts +4 -0
  42. package/dist/screen/lib/document/block-size-fields.js +1 -1
  43. package/dist/screen/lib/document/box-fields.d.ts +140 -3
  44. package/dist/screen/lib/document/box-fields.js +1 -1
  45. package/dist/screen/lib/document/button-fields.d.ts +10 -18
  46. package/dist/screen/lib/document/button-fields.js +1 -1
  47. package/dist/screen/lib/document/image-fields.d.ts +4 -0
  48. package/dist/screen/lib/document/image-fields.js +4 -4
  49. package/dist/screen/lib/document/style-fields.d.ts +7 -3
  50. package/dist/screen/lib/document/style-fields.js +1 -1
  51. package/dist/screen/lib/document/use-section-ops.js +1 -1
  52. package/dist/screen/lib/key-scope.js +1 -1
  53. package/dist/screen/lib/screen-parts.js +1 -1
  54. package/dist/strings/index.js +1 -1
  55. package/dist/types-BusXrvDU.d.ts +529 -0
  56. package/package.json +7 -1
  57. package/dist/chunk-53ME3GAI.js +0 -16
  58. package/dist/chunk-FIH23CB7.js +0 -1
  59. package/dist/chunk-FT3O7X6U.js +0 -5
  60. package/dist/chunk-LUG22U5L.js +0 -1
  61. package/dist/chunk-M5IKANJ5.js +0 -13
  62. package/dist/chunk-ZJRMB5KN.js +0 -4
@@ -1 +1 @@
1
- export{DocumentScreen,ScreenMount as default}from"../../chunk-I3KB7LH7.js";import"../../chunk-GXQCZJOP.js";import"../../chunk-YDJZX2XS.js";import"../../chunk-IHXQZDDW.js";import"../../chunk-7OCEPOEJ.js";import"../../chunk-JYVQ62TL.js";import"../../chunk-UMBNBCL4.js";import"../../chunk-5XL2RXFU.js";import"../../chunk-OXZDSOZV.js";import"../../chunk-3QB2ZQXK.js";import"../../chunk-7GGNFLHT.js";import"../../chunk-22I55W37.js";import"../../chunk-LUOY3A3Q.js";import"../../chunk-FYV6GZXP.js";import"../../chunk-KCBEE2MC.js";import"../../chunk-6EDVZBUO.js";import"../../chunk-2S7PJZWH.js";import"../../chunk-LDXYMHYW.js";import"../../chunk-TOEJCZUO.js";import"../../chunk-PVBDKBJB.js";import"../../chunk-RKTF5XLP.js";import"../../chunk-BYONFJVQ.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-5545A3PC.js";import"../../chunk-ZIEINXSZ.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";import"../../chunk-FT3O7X6U.js";import"../../chunk-T2RINM7R.js";import"../../chunk-NCXYC7WI.js";import"../../chunk-CP6KQP5A.js";import"../../chunk-YM4UEGBV.js";import"../../chunk-SNF5764Q.js";import"../../chunk-LX23TCTP.js";import"../../chunk-XFYFKITX.js";import"../../chunk-Q3VAJMXS.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-53ME3GAI.js";import"../../chunk-LUG22U5L.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-R76XMEKT.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-YCSZAP7T.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-WHS6Y55E.js";import"../../chunk-FM6JO4WF.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-56ID6FKZ.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-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-HZSZT3BE.js";import"../../chunk-PMRN5Z3T.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-MIX7EGRG.js";import"../../chunk-DX3VILZ3.js";import"../../chunk-JACEEVVF.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-MBEUSPIN.js";import"../../chunk-TQ5Y6S2X.js";import"../../chunk-3XECMGXX.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-EUFDQ4KL.js";import"../../chunk-KXM6YRG2.js";import"../../chunk-TOKMFZPB.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";
1
+ export{DocumentScreen,ScreenMount as default}from"../../chunk-2C2IUWBH.js";import"../../chunk-GXQCZJOP.js";import"../../chunk-R76RCEEC.js";import"../../chunk-XVQNVPIK.js";import"../../chunk-OXZDSOZV.js";import"../../chunk-7OCEPOEJ.js";import"../../chunk-JYVQ62TL.js";import"../../chunk-UMBNBCL4.js";import"../../chunk-5XL2RXFU.js";import"../../chunk-3QB2ZQXK.js";import"../../chunk-7GGNFLHT.js";import"../../chunk-22I55W37.js";import"../../chunk-LUOY3A3Q.js";import"../../chunk-OKJ6KH24.js";import"../../chunk-KCBEE2MC.js";import"../../chunk-6EDVZBUO.js";import"../../chunk-LKP5V3GT.js";import"../../chunk-UQAN4BIP.js";import"../../chunk-TOEJCZUO.js";import"../../chunk-PVBDKBJB.js";import"../../chunk-RKTF5XLP.js";import"../../chunk-BYONFJVQ.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-5545A3PC.js";import"../../chunk-XC4PINYS.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";import"../../chunk-FWPKYUGM.js";import"../../chunk-T2RINM7R.js";import"../../chunk-NCXYC7WI.js";import"../../chunk-STQDOTHF.js";import"../../chunk-YM4UEGBV.js";import"../../chunk-SNF5764Q.js";import"../../chunk-LX23TCTP.js";import"../../chunk-XFYFKITX.js";import"../../chunk-Q3VAJMXS.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-YAFMYW4J.js";import"../../chunk-JQQFB7EZ.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-C7IFWSUA.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-YCSZAP7T.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-WHS6Y55E.js";import"../../chunk-FM6JO4WF.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-56ID6FKZ.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-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-HZSZT3BE.js";import"../../chunk-PMRN5Z3T.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-MIX7EGRG.js";import"../../chunk-DX3VILZ3.js";import"../../chunk-JACEEVVF.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 +1 @@
1
- export{ScreenStoreProvider as default}from"../../chunk-YDJZX2XS.js";import"../../chunk-FT3O7X6U.js";import"../../chunk-NCXYC7WI.js";import"../../chunk-LX23TCTP.js";import"../../chunk-TCAAOYQY.js";import"../../chunk-53ME3GAI.js";import"../../chunk-LUG22U5L.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-R76XMEKT.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-YCSZAP7T.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-WHS6Y55E.js";import"../../chunk-FM6JO4WF.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-56ID6FKZ.js";import"../../chunk-K53PQAMP.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-QTHQPJWA.js";import"../../chunk-HZSZT3BE.js";import"../../chunk-PMRN5Z3T.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-MIX7EGRG.js";import"../../chunk-DX3VILZ3.js";import"../../chunk-JACEEVVF.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-3XECMGXX.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-EUFDQ4KL.js";import"../../chunk-KXM6YRG2.js";import"../../chunk-TOKMFZPB.js";import"../../chunk-FR7EEKFF.js";import"../../chunk-7UFKEX72.js";
1
+ export{ScreenStoreProvider as default}from"../../chunk-R76RCEEC.js";import"../../chunk-FWPKYUGM.js";import"../../chunk-NCXYC7WI.js";import"../../chunk-LX23TCTP.js";import"../../chunk-TCAAOYQY.js";import"../../chunk-YAFMYW4J.js";import"../../chunk-JQQFB7EZ.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-C7IFWSUA.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-YCSZAP7T.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-WHS6Y55E.js";import"../../chunk-FM6JO4WF.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-56ID6FKZ.js";import"../../chunk-K53PQAMP.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-QTHQPJWA.js";import"../../chunk-HZSZT3BE.js";import"../../chunk-PMRN5Z3T.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-MIX7EGRG.js";import"../../chunk-DX3VILZ3.js";import"../../chunk-JACEEVVF.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";
@@ -1,17 +1,17 @@
1
- import{AddBlockRow as e}from"../../chunk-WQXAAVCE.js";import{scrollPreviewToSection as n,gotoPreviewSlide as o}from"../../chunk-LUOY3A3Q.js";import{useEaselUndoKeys as r}from"../../chunk-FYV6GZXP.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-2S7PJZWH.js";import{useSectionOps as c}from"../../chunk-LDXYMHYW.js";import{useScreenDocument as p}from"../../chunk-BYONFJVQ.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 A}from"../../chunk-FT3O7X6U.js";import{MediaPopup as N}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-Q3VAJMXS.js";import{slotChildRowName as E}from"../../chunk-5NHQ452C.js";import"../../chunk-AJ2SUSET.js";import"../../chunk-6UAEFOJ4.js";import"../../chunk-ANPOR6EY.js";import"../../chunk-R4AUZVA3.js";import{slotFieldsOf as C,nestsInTree as P}from"../../chunk-TCAAOYQY.js";import{useEasel as x}from"../../chunk-53ME3GAI.js";import"../../chunk-LUG22U5L.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-R76XMEKT.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-YCSZAP7T.js";import"../../chunk-ZEH6QLBH.js";import{LayersTree as R,Subtree as Y,TreeRow as F,TreeRowAction as M,TreeSeam as O}from"../../chunk-WHS6Y55E.js";import"../../chunk-FM6JO4WF.js";import{DEFAULT_TREE_WORDS as W}from"../../chunk-K56YDHYQ.js";import"../../chunk-56ID6FKZ.js";import"../../chunk-K53PQAMP.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-QTHQPJWA.js";import"../../chunk-NDRZP6YR.js";import{DEFAULT_SAVE_WORDS as g,saveIndicator as I}from"../../chunk-H6DDIBQ4.js";import{SaveState as Q,panelWidthVars as T}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-HZSZT3BE.js";import"../../chunk-PMRN5Z3T.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-MIX7EGRG.js";import"../../chunk-DX3VILZ3.js";import"../../chunk-JACEEVVF.js";import{useWords as v}from"../../chunk-MFIRYGHW.js";import"../../chunk-MBEUSPIN.js";import"../../chunk-TQ5Y6S2X.js";import{useTreeDrag as B}from"../../chunk-3XECMGXX.js";import"../../chunk-P2VEMZH5.js";import{zoneKey as X,parseZoneKey as b}from"../../chunk-EUFDQ4KL.js";import"../../chunk-KXM6YRG2.js";import"../../chunk-TOKMFZPB.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 V,useEffect as w,useCallback as D,Fragment as Z}from"react";import{Tooltip as K}from"efficient-shell/ui";import{TrashIcon as H}from"efficient-shell/icons/efficient";import{jsxs as J,jsx as L,Fragment as U}from"react/jsx-runtime";var G=e=>n=>{n.target.closest("button, input")||e()},$={rowClick:G};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,Ae=je?.type===de,Ne=V(null),ye=V(null);r(ye),a(re?.props.id),w(()=>{fe&&Ne.current!==fe&&(Ne.current=fe,Se?ie(ae??l):re||ne.select({index:0}))},[fe,re,ne,Se]);const Ee=D(e=>ie(n=>h(n,e)?n:e),[]),Ce=k({kind:se.kind,mode:se,open:Ee,show:e=>ie(e),reveal:()=>{},select:(e,n)=>{ie(e=>h(e,n)?e:n),ne.select(e)}}),{selectNode:Pe}=i({mode:se,setMode:ie,onOpenPart:n}),xe=j(),{labelAtLevel:Re,Icon:Ye}=xe,{canAddTo:Fe}=f(),Me=e=>Re(e,"block",te.components[e]?.label??e),Oe=e=>Re(e,"section",Me(e)),We=!Se&&S(se)&&re?.props.id===fe,ge=je?Fe(je.type)?.spec??null:null,Ie=je&&ge?`${je.props.id}:${ge.slot}`:null,Qe=je&&ge&&Array.isArray(je.props[ge.slot])?je.props[ge.slot]:[],Te=e=>E(e,Me,xe.plainText),ve=(e,r)=>{je&&ge&&Ie&&(ie(l),ge.slider?(o(String(je.props.id),e),ne.select({index:e,zone:Ie}),n(String(je.props.id))):(ne.select({index:e,zone:Ie}),n(r)))},Be=()=>{if(!je||!ge||!Ie)return;const e=Qe.length;ne.insertComponent(Ie,ge.childType,e),ie(l),ge.slider?requestAnimationFrame(()=>{o(String(je.props.id),e),ne.select({index:e,zone:Ie})}):ne.select({index:e,zone:Ie})},Xe=e=>C(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 Xe(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}))},Ve=B({keyOf:e=>e.id,readOnly:Boolean(_),canDrop:(e,n)=>X(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__ */L(O,{..._?{}:Ve.seam({place:{...b(e),index:n}})},`seam:${e}:${n}`),De=e=>xe.blockRowName(e,Me),Ze=(e,o,r)=>{ie(l),ne.select({index:o,zone:e}),n(r)},Ke=(e,n,o)=>{ne.insertComponent(e,n,o),ie(l),ne.select({index:o,zone:e})},He=(n,o,r)=>/* @__PURE__ */L(e,{choices:r,onPick:e=>Ke(n,e,o)}),Je=(e,n)=>{const o=A(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?De:Te;/* @__PURE__ */
2
- return J(U,{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),p=String(e.props.id),m=()=>Ze(o,r,p),{rowProps:d,...u}=Ve.row({item:{id:p,zone:o,index:r},place:{...b(o),index:r}},{onClick:G(m)});/* @__PURE__ */
3
- return J(Z,{children:[0===r&&we(o,0),
4
- /* @__PURE__ */L(F,{words:pe,icon:/* @__PURE__ */L(Ye,{type:e.type,size:13}),name:c,selected:t,onSelect:m,...u,actions:/* @__PURE__ */L(M,{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__ */L(H,{size:13})}),rowProps:d}),i&&/* @__PURE__ */L(Y,{children:Je(e,n+1)}),we(o,r+1)]},String(e.props.id??`${o}-${r}`))}),r&&t?He(`${e.props.id}:${r.slot}`,o.length,t):null]})},Le="HeroSingle"===je?.type,Ue=Boolean(je)&&(Boolean(Fe(je.type))||Xe(je.type).length>0),Ge=Boolean(je)&&(Boolean(ge)||Ae||Se||Le||Ue);/* @__PURE__ */
5
- return J("div",{ref:ye,className:"sf-editor es-editor",style:T(s),children:[
6
- /* @__PURE__ */L("div",{className:"sf-section-bar",children:/* @__PURE__ */L(Q,null!==ee?{tone:"off",label:ee,role:"status"}:{...I(q,le),role:"status"})}),
7
- /* @__PURE__ */J("div",{className:"sf-body",children:[Ge&&je&&/* @__PURE__ */J("aside",{className:"es-sidepanel es-sidepanel--left sf-panel sf-panel--left",children:[
8
- /* @__PURE__ */L("div",{className:"sf-panel-head",children:/* @__PURE__ */L(K,{content:Se?ce.headerSettings:ce.sectionSettings({name:Oe(je.type)}),side:"bottom",children:/* @__PURE__ */L("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:Oe(je.type)})})}),
9
- /* @__PURE__ */L(R,{className:"sf-tree sf-scroll",rootProps:Ve.rootProps(),words:pe,children:/* @__PURE__ */L(Y,{children:Se?
10
- /* @__PURE__ */L(F,{words:pe,icon:/* @__PURE__ */L(Ye,{type:"header",size:13}),name:ce.headerSettings,selected:se.kind===ae?.kind,onSelect:()=>ie(ae??l),rowProps:{onClick:G(()=>ie(ae??l))}}):ge?/* @__PURE__ */J(U,{children:[Qe.map((e,n)=>{const o=re?.props.id===e.props.id,r=Te(e),t=String(e.props.id),s=()=>ve(n,t),{rowProps:i,...c}=Ve.row({item:{id:t,zone:Ie,index:n},place:{...b(Ie),index:n}},{onClick:G(s)});/* @__PURE__ */
11
- return J(Z,{children:[0===n&&we(Ie,0),
12
- /* @__PURE__ */L(F,{words:pe,icon:/* @__PURE__ */L(Ye,{type:e.type,size:13}),name:r,selected:o,onSelect:s,...c,actions:/* @__PURE__ */L(M,{kind:"delete",label:ce.deleteNamed({name:r}),onClick:()=>{return e=n,void(Ie&&(ne.removeComponent(Ie,e),ie(l),ne.select(null)));var e},children:/* @__PURE__ */L(H,{size:13})}),rowProps:i}),we(Ie,n+1)]},String(e.props.id??n))}),
13
- /* @__PURE__ */J("button",{type:"button",className:"sf-add-card",onClick:Be,children:[
14
- /* @__PURE__ */L("span",{className:"sf-plus sf-plus--sm",children:"+"}),ge.addLabel]}),fe?Ce.partRows?.(je,$):null]}):Je(je,1)})})]}),
1
+ import{AddBlockRow as e}from"../../chunk-Y5M64LEB.js";import{scrollPreviewToSection as n,gotoPreviewSlide as o}from"../../chunk-LUOY3A3Q.js";import{useEaselUndoKeys as r}from"../../chunk-OKJ6KH24.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-LKP5V3GT.js";import{useSectionOps as c}from"../../chunk-UQAN4BIP.js";import{useScreenDocument as p}from"../../chunk-BYONFJVQ.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 A}from"../../chunk-FWPKYUGM.js";import{MediaPopup as N}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-Q3VAJMXS.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 P}from"../../chunk-TCAAOYQY.js";import{useEasel as x}from"../../chunk-YAFMYW4J.js";import"../../chunk-JQQFB7EZ.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-C7IFWSUA.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-YCSZAP7T.js";import"../../chunk-ZEH6QLBH.js";import{LayersTree as F,Subtree as Y,TreeRow as Q,TreeRowAction as R,TreeSeam as B}from"../../chunk-WHS6Y55E.js";import"../../chunk-FM6JO4WF.js";import{DEFAULT_TREE_WORDS as M}from"../../chunk-K56YDHYQ.js";import"../../chunk-56ID6FKZ.js";import"../../chunk-K53PQAMP.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-QTHQPJWA.js";import"../../chunk-NDRZP6YR.js";import{DEFAULT_SAVE_WORDS as O,saveIndicator as W}from"../../chunk-H6DDIBQ4.js";import{SaveState as g,panelWidthVars as I}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-HZSZT3BE.js";import"../../chunk-PMRN5Z3T.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-MIX7EGRG.js";import"../../chunk-DX3VILZ3.js";import"../../chunk-JACEEVVF.js";import{useWords as T}from"../../chunk-MFIRYGHW.js";import"../../chunk-SQTVXE5D.js";import"../../chunk-TQ5Y6S2X.js";import{useTreeDrag as v}from"../../chunk-3XECMGXX.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-TOKMFZPB.js";import"../../chunk-FR7EEKFF.js";import"../../chunk-7UFKEX72.js";import{zoneKey as K,parseZoneKey as b}from"../../chunk-EUFDQ4KL.js";import"../../chunk-KXM6YRG2.js";import"../../chunk-467WWV4I.js";import"../../chunk-TIAWIOGD.js";import"../../chunk-MGVI67QV.js";import{useState as z,useRef as V,useEffect as w,useCallback as D,Fragment as J}from"react";import{Tooltip as X}from"efficient-shell/ui";import{TrashIcon as Z}from"efficient-shell/icons/efficient";import{jsxs as H,jsx as L,Fragment as U}from"react/jsx-runtime";var G=e=>n=>{n.target.closest("button, input")||e()},$={rowClick:G};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=T("screen",y),pe=T("tree",M),le=T("save",O),{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,Ae=je?.type===de,Ne=V(null),ye=V(null);r(ye),a(re?.props.id),w(()=>{fe&&Ne.current!==fe&&(Ne.current=fe,Se?ie(ae??l):re||ne.select({index:0}))},[fe,re,ne,Se]);const Ce=D(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:Pe}=i({mode:se,setMode:ie,onOpenPart:n}),xe=j(),{labelAtLevel:Fe,Icon:Ye}=xe,{canAddTo:Qe}=f(),Re=e=>Fe(e,"block",te.components[e]?.label??e),Be=e=>Fe(e,"section",Re(e)),Me=!Se&&S(se)&&re?.props.id===fe,Oe=je?Qe(je.type)?.spec??null:null,We=je&&Oe?`${je.props.id}:${Oe.slot}`:null,ge=je&&Oe&&Array.isArray(je.props[Oe.slot])?je.props[Oe.slot]:[],Ie=e=>C(e,Re,xe.plainText),Te=(e,r)=>{je&&Oe&&We&&(ie(l),Oe.slider?(o(String(je.props.id),e),ne.select({index:e,zone:We}),n(String(je.props.id))):(ne.select({index:e,zone:We}),n(r)))},ve=()=>{if(!je||!Oe||!We)return;const e=ge.length;ne.insertComponent(We,Oe.childType,e),ie(l),Oe.slider?requestAnimationFrame(()=>{o(String(je.props.id),e),ne.select({index:e,zone:We})}):ne.select({index:e,zone:We})},Ke=e=>E(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 Ke(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}))},Ve=v({keyOf:e=>e.id,readOnly:Boolean(_),canDrop:(e,n)=>K(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__ */L(B,{..._?{}:Ve.seam({place:{...b(e),index:n}})},`seam:${e}:${n}`),De=e=>xe.blockRowName(e,Re),Je=(e,o,r)=>{ie(l),ne.select({index:o,zone:e}),n(r)},Xe=(e,n,o)=>{ne.insertComponent(e,n,o),ie(l),ne.select({index:o,zone:e})},Ze=(n,o,r)=>/* @__PURE__ */L(e,{choices:r,onPick:e=>Xe(n,e,o)}),He=(e,n)=>{const o=A(te,e);const r=Qe(e.type,void 0,void 0,{id:String(e.props.id??""),data:oe.data}),t=r?.choices??null,s="footer"===r?.source?De:Ie;/* @__PURE__ */
2
+ return H(U,{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),p=String(e.props.id),m=()=>Je(o,r,p),{rowProps:d,...u}=Ve.row({item:{id:p,zone:o,index:r},place:{...b(o),index:r}},{onClick:G(m)});/* @__PURE__ */
3
+ return H(J,{children:[0===r&&we(o,0),
4
+ /* @__PURE__ */L(Q,{words:pe,icon:/* @__PURE__ */L(Ye,{type:e.type,size:13}),name:c,selected:t,onSelect:m,...u,actions:/* @__PURE__ */L(R,{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__ */L(Z,{size:13})}),rowProps:d}),i&&/* @__PURE__ */L(Y,{children:He(e,n+1)}),we(o,r+1)]},String(e.props.id??`${o}-${r}`))}),r&&t?Ze(`${e.props.id}:${r.slot}`,o.length,t):null]})},Le="HeroSingle"===je?.type,Ue=Boolean(je)&&(Boolean(Qe(je.type))||Ke(je.type).length>0),Ge=Boolean(je)&&(Boolean(Oe)||Ae||Se||Le||Ue);/* @__PURE__ */
5
+ return H("div",{ref:ye,className:"sf-editor es-editor",style:I(s),children:[
6
+ /* @__PURE__ */L("div",{className:"sf-section-bar",children:/* @__PURE__ */L(g,null!==ee?{tone:"off",label:ee,role:"status"}:{...W(q,le),role:"status"})}),
7
+ /* @__PURE__ */H("div",{className:"sf-body",children:[Ge&&je&&/* @__PURE__ */H("aside",{className:"es-sidepanel es-sidepanel--left sf-panel sf-panel--left",children:[
8
+ /* @__PURE__ */L("div",{className:"sf-panel-head",children:/* @__PURE__ */L(X,{content:Se?ce.headerSettings:ce.sectionSettings({name:Be(je.type)}),side:"bottom",children:/* @__PURE__ */L("button",{type:"button",className:"sf-panel-title sf-panel-title--btn "+(Me?"is-selected":""),"aria-pressed":Me,onClick:()=>{Se?ie(ae??l):(ie(l),ne.select({index:0}))},children:Be(je.type)})})}),
9
+ /* @__PURE__ */L(F,{className:"sf-tree sf-scroll",rootProps:Ve.rootProps(),words:pe,children:/* @__PURE__ */L(Y,{children:Se?
10
+ /* @__PURE__ */L(Q,{words:pe,icon:/* @__PURE__ */L(Ye,{type:"header",size:13}),name:ce.headerSettings,selected:se.kind===ae?.kind,onSelect:()=>ie(ae??l),rowProps:{onClick:G(()=>ie(ae??l))}}):Oe?/* @__PURE__ */H(U,{children:[ge.map((e,n)=>{const o=re?.props.id===e.props.id,r=Ie(e),t=String(e.props.id),s=()=>Te(n,t),{rowProps:i,...c}=Ve.row({item:{id:t,zone:We,index:n},place:{...b(We),index:n}},{onClick:G(s)});/* @__PURE__ */
11
+ return H(J,{children:[0===n&&we(We,0),
12
+ /* @__PURE__ */L(Q,{words:pe,icon:/* @__PURE__ */L(Ye,{type:e.type,size:13}),name:r,selected:o,onSelect:s,...c,actions:/* @__PURE__ */L(R,{kind:"delete",label:ce.deleteNamed({name:r}),onClick:()=>{return e=n,void(We&&(ne.removeComponent(We,e),ie(l),ne.select(null)));var e},children:/* @__PURE__ */L(Z,{size:13})}),rowProps:i}),we(We,n+1)]},String(e.props.id??n))}),
13
+ /* @__PURE__ */H("button",{type:"button",className:"sf-add-card",onClick:ve,children:[
14
+ /* @__PURE__ */L("span",{className:"sf-plus sf-plus--sm",children:"+"}),Oe.addLabel]}),fe?Ee.partRows?.(je,$):null]}):He(je,1)})})]}),
15
15
  /* @__PURE__ */L("div",{className:"sf-center",children:/* @__PURE__ */L("div",{className:"sf-preview-host",children:/* @__PURE__ */L(he,{})})}),
16
- /* @__PURE__ */L(t,{value:{selectChild:(e,n,o,r)=>"section"===Fe(r)?.source?ve(n,o):Ze(e,n,o),addChild:(e,n,o,r,t)=>"section"===Fe(t)?.source?Be():Ke(`${e}:${n}`,o,r),childRowName:Te,blockRowName:De},children:/* @__PURE__ */L(ke,{mode:se,onOpenWebsiteSettings:Ce.openSettings??(()=>{}),onSelectNode:Pe,hideNodeActions:!0})})]}),
16
+ /* @__PURE__ */L(t,{value:{selectChild:(e,n,o,r)=>"section"===Qe(r)?.source?Te(n,o):Je(e,n,o),addChild:(e,n,o,r,t)=>"section"===Qe(t)?.source?ve():Xe(`${e}:${n}`,o,r),childRowName:Ie,blockRowName:De},children:/* @__PURE__ */L(ke,{mode:se,onOpenWebsiteSettings:Ee.openSettings??(()=>{}),onSelectNode:Pe,hideNodeActions:!0})})]}),
17
17
  /* @__PURE__ */L(N,{})]})}export{q as default};
@@ -1 +1 @@
1
- export{usePartBridge}from"../../chunk-2S7PJZWH.js";import"../../chunk-LDXYMHYW.js";import"../../chunk-FT3O7X6U.js";import"../../chunk-NCXYC7WI.js";import"../../chunk-LX23TCTP.js";import"../../chunk-R4AUZVA3.js";import"../../chunk-TCAAOYQY.js";import"../../chunk-53ME3GAI.js";import"../../chunk-LUG22U5L.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-R76XMEKT.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-YCSZAP7T.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-WHS6Y55E.js";import"../../chunk-FM6JO4WF.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-56ID6FKZ.js";import"../../chunk-K53PQAMP.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-QTHQPJWA.js";import"../../chunk-HZSZT3BE.js";import"../../chunk-PMRN5Z3T.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-MIX7EGRG.js";import"../../chunk-DX3VILZ3.js";import"../../chunk-JACEEVVF.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-3XECMGXX.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-EUFDQ4KL.js";import"../../chunk-KXM6YRG2.js";import"../../chunk-TOKMFZPB.js";import"../../chunk-FR7EEKFF.js";import"../../chunk-7UFKEX72.js";import"../../chunk-467WWV4I.js";import"../../chunk-TIAWIOGD.js";import"../../chunk-MGVI67QV.js";
1
+ export{usePartBridge}from"../../chunk-LKP5V3GT.js";import"../../chunk-UQAN4BIP.js";import"../../chunk-FWPKYUGM.js";import"../../chunk-NCXYC7WI.js";import"../../chunk-LX23TCTP.js";import"../../chunk-R4AUZVA3.js";import"../../chunk-TCAAOYQY.js";import"../../chunk-YAFMYW4J.js";import"../../chunk-JQQFB7EZ.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-C7IFWSUA.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-YCSZAP7T.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-WHS6Y55E.js";import"../../chunk-FM6JO4WF.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-56ID6FKZ.js";import"../../chunk-K53PQAMP.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-QTHQPJWA.js";import"../../chunk-HZSZT3BE.js";import"../../chunk-PMRN5Z3T.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-MIX7EGRG.js";import"../../chunk-DX3VILZ3.js";import"../../chunk-JACEEVVF.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 +1 @@
1
- import"../chunk-GZO72N3Q.js";export{DocumentScreen,ScreenMount}from"../chunk-I3KB7LH7.js";import"../chunk-GXQCZJOP.js";export{ScreenStoreProvider}from"../chunk-YDJZX2XS.js";import"../chunk-IHXQZDDW.js";import"../chunk-7OCEPOEJ.js";import"../chunk-JYVQ62TL.js";import"../chunk-UMBNBCL4.js";import"../chunk-5XL2RXFU.js";import"../chunk-OXZDSOZV.js";import"../chunk-3QB2ZQXK.js";import"../chunk-7GGNFLHT.js";import"../chunk-22I55W37.js";import"../chunk-LUOY3A3Q.js";import"../chunk-FYV6GZXP.js";import"../chunk-KCBEE2MC.js";import"../chunk-6EDVZBUO.js";import"../chunk-2S7PJZWH.js";import"../chunk-LDXYMHYW.js";import"../chunk-TOEJCZUO.js";import"../chunk-PVBDKBJB.js";import"../chunk-RKTF5XLP.js";import"../chunk-BYONFJVQ.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-ZIEINXSZ.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-FT3O7X6U.js";import"../chunk-T2RINM7R.js";import"../chunk-NCXYC7WI.js";import"../chunk-CP6KQP5A.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-Q3VAJMXS.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-53ME3GAI.js";import"../chunk-LUG22U5L.js";import"../chunk-TBY3DFKS.js";import"../chunk-R76XMEKT.js";import"../chunk-BPXEFVSQ.js";import"../chunk-YCSZAP7T.js";import"../chunk-ZEH6QLBH.js";import"../chunk-WHS6Y55E.js";import"../chunk-FM6JO4WF.js";import"../chunk-K56YDHYQ.js";import"../chunk-56ID6FKZ.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-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-HZSZT3BE.js";import"../chunk-PMRN5Z3T.js";import"../chunk-Y2T3JX7K.js";import"../chunk-KFWNGPW3.js";import"../chunk-MIX7EGRG.js";import"../chunk-DX3VILZ3.js";import"../chunk-JACEEVVF.js";import"../chunk-MFIRYGHW.js";import"../chunk-MBEUSPIN.js";import"../chunk-TQ5Y6S2X.js";import"../chunk-3XECMGXX.js";import"../chunk-P2VEMZH5.js";import"../chunk-EUFDQ4KL.js";import"../chunk-KXM6YRG2.js";import"../chunk-TOKMFZPB.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";
1
+ import"../chunk-GZO72N3Q.js";export{DocumentScreen,ScreenMount}from"../chunk-2C2IUWBH.js";import"../chunk-GXQCZJOP.js";export{ScreenStoreProvider}from"../chunk-R76RCEEC.js";import"../chunk-XVQNVPIK.js";import"../chunk-OXZDSOZV.js";import"../chunk-7OCEPOEJ.js";import"../chunk-JYVQ62TL.js";import"../chunk-UMBNBCL4.js";import"../chunk-5XL2RXFU.js";import"../chunk-3QB2ZQXK.js";import"../chunk-7GGNFLHT.js";import"../chunk-22I55W37.js";import"../chunk-LUOY3A3Q.js";import"../chunk-OKJ6KH24.js";import"../chunk-KCBEE2MC.js";import"../chunk-6EDVZBUO.js";import"../chunk-LKP5V3GT.js";import"../chunk-UQAN4BIP.js";import"../chunk-TOEJCZUO.js";import"../chunk-PVBDKBJB.js";import"../chunk-RKTF5XLP.js";import"../chunk-BYONFJVQ.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-XC4PINYS.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-FWPKYUGM.js";import"../chunk-T2RINM7R.js";import"../chunk-NCXYC7WI.js";import"../chunk-STQDOTHF.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-Q3VAJMXS.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-YAFMYW4J.js";import"../chunk-JQQFB7EZ.js";import"../chunk-TBY3DFKS.js";import"../chunk-C7IFWSUA.js";import"../chunk-BPXEFVSQ.js";import"../chunk-YCSZAP7T.js";import"../chunk-ZEH6QLBH.js";import"../chunk-WHS6Y55E.js";import"../chunk-FM6JO4WF.js";import"../chunk-K56YDHYQ.js";import"../chunk-56ID6FKZ.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-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-HZSZT3BE.js";import"../chunk-PMRN5Z3T.js";import"../chunk-Y2T3JX7K.js";import"../chunk-KFWNGPW3.js";import"../chunk-MIX7EGRG.js";import"../chunk-DX3VILZ3.js";import"../chunk-JACEEVVF.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";
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Style keys — the stored keys of the Button's style rows and the corners a
3
+ * Corners row keeps, ONE copy for both editors and for the page that draws
4
+ * them (plan [PLAN] Fill Editor Gaps Both Ways, step E-R).
5
+ *
6
+ * The rows are `screen/lib/document/button-fields` (`buttonFieldSet`) and
7
+ * `screen/lib/document/style-fields` (`cornersField`); they import these
8
+ * objects and re-export them under the names hosts already import. A host's
9
+ * published render code reads the same objects through `efficient-easel/draw`,
10
+ * so it keeps no copy of its own.
11
+ *
12
+ * PURE: no React, no import. What each value DRAWS stays the host's.
13
+ */
14
+ /** The keys the Button's style rows store, as the website stores them. */
15
+ declare const BUTTON_STYLE_KEYS: {
16
+ readonly fill: "buttonColor";
17
+ readonly fillOpacity: "buttonFillOpacity";
18
+ readonly border: "buttonBorder";
19
+ readonly text: "buttonTextColor";
20
+ readonly corners: "buttonCorners";
21
+ readonly cornerSides: "buttonCornerSides";
22
+ };
23
+ /** The Button's own padding keys, as the website stores them. */
24
+ declare const BUTTON_PAD_KEYS: {
25
+ readonly top: "buttonPaddingTop";
26
+ readonly right: "buttonPaddingRight";
27
+ readonly bottom: "buttonPaddingBottom";
28
+ readonly left: "buttonPaddingLeft";
29
+ };
30
+ /** The corners in the order they are stored. Absence means all four. */
31
+ declare const CORNER_SIDES: readonly ["tl", "tr", "br", "bl"];
32
+ /** One corner. */
33
+ type CornerSide = (typeof CORNER_SIDES)[number];
34
+
35
+ export { BUTTON_PAD_KEYS, BUTTON_STYLE_KEYS, CORNER_SIDES, type CornerSide };
@@ -0,0 +1 @@
1
+ export{BUTTON_PAD_KEYS,BUTTON_STYLE_KEYS,CORNER_SIDES}from"../../../chunk-BTQ3FJKT.js";
@@ -1 +1 @@
1
- import{buttonFieldSet as e}from"../../../chunk-FIH23CB7.js";import"../../../chunk-ZJRMB5KN.js";import{boxFieldSet as o}from"../../../chunk-M5IKANJ5.js";import"../../../chunk-CLAADE4J.js";import"../../../chunk-2T22IY3J.js";import"../../../chunk-7GGNFLHT.js";import"../../../chunk-22I55W37.js";import"../../../chunk-LX23TCTP.js";import"../../../chunk-Q3VAJMXS.js";import"../../../chunk-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";import{phoneKey as t}from"../../../chunk-E52W3M5I.js";import{foldMetaOf as n}from"../../../chunk-ANPOR6EY.js";import"../../../chunk-53ME3GAI.js";import"../../../chunk-LUG22U5L.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-FM6JO4WF.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-HZSZT3BE.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-MIX7EGRG.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-JACEEVVF.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-EUFDQ4KL.js";import"../../../chunk-KXM6YRG2.js";import"../../../chunk-TOKMFZPB.js";import"../../../chunk-FR7EEKFF.js";import"../../../chunk-7UFKEX72.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-4O4FSRJL.js";import"../../../chunk-SS2NY7PP.js";import{boxFieldSet as o}from"../../../chunk-UJU42JM4.js";import"../../../chunk-CLAADE4J.js";import"../../../chunk-2T22IY3J.js";import"../../../chunk-7GGNFLHT.js";import"../../../chunk-22I55W37.js";import"../../../chunk-LX23TCTP.js";import"../../../chunk-Q3VAJMXS.js";import"../../../chunk-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";import"../../../chunk-BTQ3FJKT.js";import{phoneKey as t}from"../../../chunk-E52W3M5I.js";import{foldMetaOf as n}from"../../../chunk-ANPOR6EY.js";import"../../../chunk-YAFMYW4J.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-FM6JO4WF.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-HZSZT3BE.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-MIX7EGRG.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-JACEEVVF.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};
@@ -3,6 +3,10 @@ import { PhoneValueAccess, BoxFieldSay, BoxField } from './box-fields.js';
3
3
  import 'react';
4
4
  import 'efficient-shell/format';
5
5
  import 'efficient-shell/ui';
6
+ import '../../../types-BusXrvDU.js';
7
+ import '../../../wordFit-7XpmhcaW.js';
8
+ import '../../../words-BrN08Fup.js';
9
+ import '../../../buckets-_MGDYJlb.js';
6
10
  import '../../../ScreenDocumentContext-DPW_6gOC.js';
7
11
  import '../../../blocks/index.js';
8
12
  import '../../../types-BljCVdzR.js';
@@ -1 +1 @@
1
- import{noGlyph as t,boxFieldBuilders as i,PHONE_KEY_ACCESS as n,group as o,phoneTwinFields as r}from"../../../chunk-M5IKANJ5.js";import"../../../chunk-CLAADE4J.js";import"../../../chunk-2T22IY3J.js";import"../../../chunk-7GGNFLHT.js";import"../../../chunk-22I55W37.js";import"../../../chunk-LX23TCTP.js";import"../../../chunk-Q3VAJMXS.js";import"../../../chunk-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";import{BLOCK_WIDTH_LIMIT as m,BLOCK_FIXED_WIDTH as h,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-X3EMJ2EX.js";import"../../../chunk-E52W3M5I.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-53ME3GAI.js";import"../../../chunk-LUG22U5L.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-FM6JO4WF.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-HZSZT3BE.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-MIX7EGRG.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-JACEEVVF.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-EUFDQ4KL.js";import"../../../chunk-KXM6YRG2.js";import"../../../chunk-TOKMFZPB.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),F=t.phone??n,x=(t,i)=>r(t,i,F),E=(t,i,n,o,r)=>x(t,a.slider(i,d,n.min,n.max,n.step,o,"px",r?{clear:{hint:o,emptyLabel:r}}:void 0));return{size:{_gBlockSize:o("Size"),...x("widthFit",a.segmented("Width",/* @__PURE__ */j(u,{}),[...e],s)),...E("width","Fixed width",h,h.fallback),...E("minWidth","Min width",m,m.min,"None"),...E("maxWidth","Content width",m,m.min,"None")},text:t.textFit?{_gText:o("Text"),...x("textFit",a.segmented("When the text does not fit",/* @__PURE__ */j(k,{}),[...p],t.textFit)),...E("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-UJU42JM4.js";import"../../../chunk-CLAADE4J.js";import"../../../chunk-2T22IY3J.js";import"../../../chunk-7GGNFLHT.js";import"../../../chunk-22I55W37.js";import"../../../chunk-LX23TCTP.js";import"../../../chunk-Q3VAJMXS.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-X3EMJ2EX.js";import"../../../chunk-E52W3M5I.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-YAFMYW4J.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-FM6JO4WF.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-HZSZT3BE.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-MIX7EGRG.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-JACEEVVF.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 F=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 d(t={}){const d=i(t.say),a=t.phone??n,x=(t,i)=>r(t,i,a),E=(t,i,n,o,r)=>x(t,d.slider(i,F,n.min,n.max,n.step,o,"px",{clear:r?{hint:o,emptyLabel:r}:{hint:o}}));return{size:{_gBlockSize:o("Size"),...x("widthFit",d.segmented("Width",/* @__PURE__ */j(u,{}),[...e],s)),...E("width","Fixed width",m,m.fallback),...E("minWidth","Min width",h,h.min,"None"),...E("maxWidth","Content width",h,h.min,"None")},text:t.textFit?{_gText:o("Text"),...x("textFit",d.segmented("When the text does not fit",/* @__PURE__ */j(k,{}),[...p],t.textFit)),...E("minFont","Min font size",c,c.fallback)}:{}}}export{d as blockSizeFieldSet};
@@ -2,7 +2,11 @@ import * as react from 'react';
2
2
  import { ReactElement, ReactNode } from 'react';
3
3
  import { ShowWhenRule } from 'efficient-shell/format';
4
4
  import { TextAlign, PositionValue, SidesValue } from 'efficient-shell/ui';
5
+ import { S as SettingsDefaultResetProps } from '../../../types-BusXrvDU.js';
5
6
  export { F as FIELD_DESCRIPTION_MARKER, o as describedAs } from '../../../ScreenDocumentContext-DPW_6gOC.js';
7
+ import '../../../wordFit-7XpmhcaW.js';
8
+ import '../../../words-BrN08Fup.js';
9
+ import '../../../buckets-_MGDYJlb.js';
6
10
  import '../../../blocks/index.js';
7
11
  import '../../../types-BljCVdzR.js';
8
12
  import '../../../data/index.js';
@@ -25,6 +29,12 @@ import '../shared-section-types.js';
25
29
 
26
30
  /** A host's word for an English word or row label a builder draws. */
27
31
  type BoxFieldSay = (english: string) => string;
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.
36
+ */
37
+ declare function onDesktopWords(say: BoxFieldSay, shown: string): string;
28
38
  /** A choice's option, as a builder is given it and as it rides the field. */
29
39
  interface SelectOption {
30
40
  value: string;
@@ -66,9 +76,23 @@ type BoxFieldRenderProps<V> = {
66
76
  * that stores nothing passes `undefined`.
67
77
  */
68
78
  follows?: unknown;
79
+ /**
80
+ * Where a phone twin's values are kept ({@link phoneTwinFields} passes its
81
+ * access). A row that reads or writes a SIBLING key too (a colour's
82
+ * opacity) goes through this, so the twin never touches a desktop key.
83
+ */
84
+ twinAccess?: PhoneValueAccess;
69
85
  id?: string;
70
86
  name?: string;
71
87
  };
88
+ /**
89
+ * A LIVE READ a row makes (twins plan E2b): called ONCE per render, inside the
90
+ * row's own component, so it may call React hooks — a host's live styles, the
91
+ * open document. Every live option of a builder is one of these and is named
92
+ * `use…` (`useHint`, `useMax`, `useFallback`). A row given none draws as it
93
+ * always did, with no component of its own.
94
+ */
95
+ type RowRead<T> = (props: BoxFieldRenderProps<unknown>) => T;
72
96
  /** One row of the set: a custom field, drawn by its own render. */
73
97
  type BoxField<V> = {
74
98
  type: 'custom';
@@ -262,6 +286,18 @@ declare const PHONE_KEY_ACCESS: PhoneValueAccess;
262
286
  * `_<objectKey>_<key>`, a key nothing stores.
263
287
  */
264
288
  declare function phoneObjectAccess(objectKey: string): PhoneValueAccess;
289
+ /** What {@link phoneTwinFields} is told past the row and where the phone value
290
+ * is kept. */
291
+ interface PhoneTwinOptions<V> {
292
+ /**
293
+ * The row the phone view draws, when it is not the desktop's row: a phone
294
+ * that takes a different range or unit (a divider's length is a % of the
295
+ * column on a phone, px or % on the desktop). It is still given `follows`;
296
+ * a row that must not rest on the desktop value says so itself
297
+ * (`slider`'s `clear.phoneFollows: false`). Left out: the desktop's row.
298
+ */
299
+ phoneRow?: BoxField<V>;
300
+ }
265
301
  /**
266
302
  * A row WITH its phone value (twins plan E2: "phone values in phone view, on
267
303
  * the same row", Lewis 2026-10-27): the row under `key` (Desktop view only)
@@ -269,7 +305,7 @@ declare function phoneObjectAccess(objectKey: string): PhoneValueAccess;
269
305
  * same row given `follows`, the desktop value: empty, it rests on that and
270
306
  * says so. A clear writes nothing — never a copy of the desktop value.
271
307
  */
272
- declare function phoneTwinFields<V>(key: string, row: BoxField<V>, access?: PhoneValueAccess): Record<string, BoxField<V>>;
308
+ declare function phoneTwinFields<V>(key: string, row: BoxField<V>, access?: PhoneValueAccess, more?: PhoneTwinOptions<V>): Record<string, BoxField<V>>;
273
309
  /** A slider's label-line mark, as a function of the STORED value. */
274
310
  type SliderAction = (value: unknown, onChange: (v: unknown) => void) => ReactNode;
275
311
  /**
@@ -284,10 +320,23 @@ interface SliderClear {
284
320
  /** The number an empty value follows. A function is given the render's
285
321
  * props, for a hint that is live: it rides the field object (the way
286
322
  * `currentValue` does), so it stays a pure read. */
287
- hint: number | ((props: BoxFieldRenderProps<unknown>) => number);
323
+ hint?: number | ((props: BoxFieldRenderProps<unknown>) => number);
324
+ /**
325
+ * The number an empty value follows, read LIVE through a hook
326
+ * ({@link RowRead}): the campaign's own style size, a section's gap. Wins
327
+ * over `hint`. Neither given: the slider's `fallback`.
328
+ */
329
+ useHint?: RowRead<number>;
288
330
  /** The word the empty box shows instead of the number, when what it
289
331
  * follows is not one ("Auto": a picture's own height). */
290
332
  emptyLabel?: string;
333
+ /**
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`,
336
+ * `useHint`, `emptyLabel`), whatever the desktop stores — a picture whose
337
+ * phone height is its natural height ("Auto"), not the desktop's band.
338
+ */
339
+ phoneFollows?: boolean;
291
340
  }
292
341
  /** What {@link boxFieldBuilders}' `slider` is told past its numbers. */
293
342
  interface SliderOptions {
@@ -296,6 +345,53 @@ interface SliderOptions {
296
345
  clear?: SliderClear;
297
346
  /** The typed box's ceiling, when a typed number may go past the track. */
298
347
  inputMax?: number;
348
+ /**
349
+ * The track's ceiling, read LIVE through a hook ({@link RowRead}): an
350
+ * Image's width stops at the content width the page has now. Wins over
351
+ * `max`; the typed box takes `inputMax` when that is higher.
352
+ */
353
+ useMax?: RowRead<number>;
354
+ /**
355
+ * The row's description line, under its name: English, which the row
356
+ * says through the host's `say`, as it does its label.
357
+ * A function is a pure read of the render's props: a line for the phone
358
+ * twin only (`'follows' in props`), or for one state of it.
359
+ */
360
+ hint?: string | ((props: BoxFieldRenderProps<unknown>) => string | undefined);
361
+ }
362
+ /** What {@link SliderControl} draws: a slider and its typed box, for a row
363
+ * that holds more than one (a border's width, one line of several). */
364
+ interface SliderControlProps {
365
+ /** The number, or nothing stored (`undefined` / `null`): the control is
366
+ * empty and follows `hint`. */
367
+ value: number | null | undefined;
368
+ /** A number, or `undefined` for a clear (the box emptied, or Reset). A
369
+ * number already held is never written again. */
370
+ onChange: (next: number | undefined) => void;
371
+ min: number;
372
+ max: number;
373
+ /** Default 1. */
374
+ step?: number;
375
+ /** The unit after the number: `px`, `%`, `×`. */
376
+ unit?: string;
377
+ /** The number an empty control follows, shown in grey; the track rests on
378
+ * it. With `hint` or `emptyLabel` the control may be emptied. */
379
+ hint?: number;
380
+ /** The word the empty box shows instead of a number ("Auto"). */
381
+ emptyLabel?: string;
382
+ /** The typed box's ceiling, when a typed number may go past the track. */
383
+ inputMax?: number;
384
+ readOnly?: boolean;
385
+ /** The control's accessible name, in the host's words. */
386
+ label: string;
387
+ /** The word on the control's own line, which carries Default / Reset at
388
+ * its end ("Width", "Top and bottom"). Left out: `label`. */
389
+ caption?: string;
390
+ /** What Reset's tooltip says it goes back to. Default: the hint and unit,
391
+ * or `emptyLabel`. */
392
+ detail?: string;
393
+ /** The ↺'s words (`useEaselStrings().panel`). English when left out. */
394
+ resetWords?: SettingsDefaultResetProps['words'];
299
395
  }
300
396
  /** What {@link boxFieldBuilders}' `segmented` is told past its options. */
301
397
  interface SegmentedOptions<V> {
@@ -306,6 +402,14 @@ interface SegmentedOptions<V> {
306
402
  * phone rests on the desktop value itself. Display only: it never writes.
307
403
  */
308
404
  phoneRest?: (desktop: unknown) => V | undefined;
405
+ /**
406
+ * OPT-IN, for a phone twin whose strip HAS a "no choice" answer of its own
407
+ * (Match desktop): the word (English, said through the host's `say`) for
408
+ * the answer the desktop gives, from the desktop value. Given, the label
409
+ * line carries Default / Reset and names it ("Center on desktop"); left
410
+ * out, the row draws exactly as it did before (no ↺).
411
+ */
412
+ followsLabel?: (desktop: unknown) => string | undefined;
309
413
  }
310
414
  /** What {@link directionField} is told: the directions this container offers,
311
415
  * in the order the strip draws them, and the one an absent value means. */
@@ -377,6 +481,20 @@ type SidesPaddingOptions = {
377
481
  phone?: boolean;
378
482
  /** What an EMPTY side draws, per side, shown in grey (default 0). */
379
483
  fallback?: Partial<Record<PadSide, number>>;
484
+ /**
485
+ * What an empty side draws, read LIVE through a hook ({@link RowRead}): the
486
+ * campaign's Button padding, a button's built-in inset, a section's own
487
+ * band. A side it names wins over `fallback`; a side it leaves out (or
488
+ * `undefined`) rests on `fallback`. It is a React hook, called by the row
489
+ * once per render: give it ALWAYS or NEVER for one field set. A read that
490
+ * needs no props (`() => live`) fits as it is.
491
+ */
492
+ useFallback?: RowRead<Partial<Record<PadSide, number>> | undefined>;
493
+ /** The row's word (default `Padding`): `Button padding`. English, which the
494
+ * row says through the host's `say`, as every builder's label. */
495
+ label?: string;
496
+ /** The row's glyph (default the all-sides padding glyph). */
497
+ icon?: ReactElement;
380
498
  /** The `Padding` group head before the row (default true). */
381
499
  group?: boolean;
382
500
  min?: number;
@@ -427,6 +545,14 @@ interface AlignmentOptions {
427
545
  * desktop glyph (a word does not fit a 288px strip beside the other glyphs)
428
546
  * and named by the word. It takes the place of `inherit` when both are set. */
429
547
  phone?: boolean;
548
+ /**
549
+ * Where the pair keeps the PHONE value ({@link PhoneValueAccess}): the
550
+ * email designer's `mobile.<key>` ({@link phoneObjectAccess}). Given, the
551
+ * phone row is a {@link phoneTwinFields} twin: it reads the desktop answer
552
+ * and names it on its Default / Reset line. Left out: today's pair, the
553
+ * phone row on `phoneKey(key)`, drawn straight.
554
+ */
555
+ access?: PhoneValueAccess;
430
556
  }
431
557
  /** What a host says about a Block alignment row: where the block sits in its
432
558
  * parent. Always Left / Center / Right (the three places a block can stand). */
@@ -440,6 +566,8 @@ interface BlockAlignmentOptions {
440
566
  inherit?: string;
441
567
  /** This is the phone's row: its first answer is Match desktop, as a glyph. */
442
568
  phone?: boolean;
569
+ /** Where the pair keeps the phone value, as {@link AlignmentOptions.access}. */
570
+ access?: PhoneValueAccess;
443
571
  }
444
572
  /**
445
573
  * The segmented strip: easel's `SettingsSegmented`, with an option's `value`
@@ -473,6 +601,15 @@ declare function placementGridView(say: BoxFieldSay, { label, value, onChange, p
473
601
  onChange: (next: string) => void;
474
602
  points: readonly PlacementPoint[];
475
603
  }): react.JSX.Element;
604
+ /**
605
+ * THE SLIDER CONTROL, BARE (twins plan E2b): what `slider()` draws, for a
606
+ * row that holds more than one control — a border's width under its caption,
607
+ * one of a coupon's lines, a column's look. Its line carries the caption (or
608
+ * `label`) and Default / Reset; the slider and its typed box sit under it.
609
+ * Hook-free: a host may call it as a function inside a field's render. It is
610
+ * `slider()`'s own drawing ({@link sliderParts}), never a second slider.
611
+ */
612
+ declare function SliderControl({ caption, label, value, hint, emptyLabel, ...rest }: SliderControlProps): ReactElement;
476
613
  /**
477
614
  * Every builder, speaking the host's words: `say` answers the host's word for
478
615
  * each English word a row draws. Bind it ONCE, where the host's controls are
@@ -589,4 +726,4 @@ declare const boxFieldSet: (opts?: BoxFieldSetOptions) => {
589
726
  _gNudge: BoxField<undefined>;
590
727
  };
591
728
 
592
- 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 PhoneValueAccess, type PlacementFieldOptions, PlacementGridView, type PlacementPoint, type PositionOptions, SIDE_PAD_KEYS, Segmented, type SegmentedOptions, type SelectField, type SelectOption, type SidesPaddingOptions, type SliderAction, type SliderClear, type SliderOptions, type ValueAccess, alignmentField, alignmentFields, blockAlignmentField, blockAlignmentFields, boxAlignField, boxFieldBuilders, boxFieldSet, boxJustifyField, boxWrapField, directionField, gapField, group, iconOf, isNoGlyph, noGlyph, normaliseBoxPlacement, objectAccess, phoneObjectAccess, phoneTwinFields, placementField, positionFields, positionPatch, section, segmented, select, sharedStyleKinds, sidesFromObject, sidesPaddingFields, sidesPaddingPatch, sidesToObject, slider, useAccessPatch, useAccessValue };
729
+ 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 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 };
@@ -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,alignmentField,alignmentFields,blockAlignmentField,blockAlignmentFields,boxAlignField,boxFieldBuilders,boxFieldSet,boxJustifyField,boxWrapField,directionField,gapField,group,iconOf,isNoGlyph,noGlyph,normaliseBoxPlacement,objectAccess,phoneObjectAccess,phoneTwinFields,placementField,positionFields,positionPatch,section,segmented,select,sharedStyleKinds,sidesFromObject,sidesPaddingFields,sidesPaddingPatch,sidesToObject,slider,useAccessPatch,useAccessValue}from"../../../chunk-M5IKANJ5.js";import"../../../chunk-CLAADE4J.js";import"../../../chunk-2T22IY3J.js";import"../../../chunk-7GGNFLHT.js";import"../../../chunk-22I55W37.js";export{FIELD_DESCRIPTION_MARKER,describedAs}from"../../../chunk-LX23TCTP.js";import"../../../chunk-Q3VAJMXS.js";import"../../../chunk-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";import"../../../chunk-E52W3M5I.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-53ME3GAI.js";import"../../../chunk-LUG22U5L.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-FM6JO4WF.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-HZSZT3BE.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-MIX7EGRG.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-JACEEVVF.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-EUFDQ4KL.js";import"../../../chunk-KXM6YRG2.js";import"../../../chunk-TOKMFZPB.js";import"../../../chunk-FR7EEKFF.js";import"../../../chunk-7UFKEX72.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,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-UJU42JM4.js";import"../../../chunk-CLAADE4J.js";import"../../../chunk-2T22IY3J.js";import"../../../chunk-7GGNFLHT.js";import"../../../chunk-22I55W37.js";export{FIELD_DESCRIPTION_MARKER,describedAs}from"../../../chunk-LX23TCTP.js";import"../../../chunk-Q3VAJMXS.js";import"../../../chunk-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";import"../../../chunk-E52W3M5I.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-YAFMYW4J.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-FM6JO4WF.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-HZSZT3BE.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-MIX7EGRG.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-JACEEVVF.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,7 +1,12 @@
1
1
  import { ValueAccess, SidesPaddingOptions, PhoneValueAccess, BoxFieldSay, BoxField } from './box-fields.js';
2
2
  import { ColorPreset } from 'efficient-shell/ui';
3
+ export { BUTTON_PAD_KEYS, BUTTON_STYLE_KEYS } from '../content/style-keys.js';
3
4
  import 'react';
4
5
  import 'efficient-shell/format';
6
+ import '../../../types-BusXrvDU.js';
7
+ import '../../../wordFit-7XpmhcaW.js';
8
+ import '../../../words-BrN08Fup.js';
9
+ import '../../../buckets-_MGDYJlb.js';
5
10
  import '../../../ScreenDocumentContext-DPW_6gOC.js';
6
11
  import '../../../blocks/index.js';
7
12
  import '../../../types-BljCVdzR.js';
@@ -23,22 +28,6 @@ import '../section-template-types.js';
23
28
  import './content-tree.js';
24
29
  import '../shared-section-types.js';
25
30
 
26
- /** The keys the Button's style rows store, as the website stores them. */
27
- declare const BUTTON_STYLE_KEYS: {
28
- readonly fill: "buttonColor";
29
- readonly fillOpacity: "buttonFillOpacity";
30
- readonly border: "buttonBorder";
31
- readonly text: "buttonTextColor";
32
- readonly corners: "buttonCorners";
33
- readonly cornerSides: "buttonCornerSides";
34
- };
35
- /** The Button's own padding keys, as the website stores them. */
36
- declare const BUTTON_PAD_KEYS: {
37
- readonly top: "buttonPaddingTop";
38
- readonly right: "buttonPaddingRight";
39
- readonly bottom: "buttonPaddingBottom";
40
- readonly left: "buttonPaddingLeft";
41
- };
42
31
  /** What a host tells {@link buttonFieldSet}. Values only: every host gets
43
32
  * every row. */
44
33
  interface ButtonFieldSetOptions {
@@ -63,7 +52,10 @@ interface ButtonFieldSetOptions {
63
52
  style?: ValueAccess;
64
53
  /** The Padding row. `fallback` is the HOST's: what an empty side draws
65
54
  * (the website's Btn classes, the campaign's Button padding). The set keeps
66
- * no number of its own. `object` is the email designer's storage. */
55
+ * no number of its own. `useFallback` is the same as a hook, for a number
56
+ * the host holds live (the campaign's Button padding in Styles); a side it
57
+ * leaves out rests on `fallback`. A hook: give it always or never for one
58
+ * field set (the row's hook count). `object` is the email designer's storage. */
67
59
  padding: SidesPaddingOptions & {
68
60
  fallback: NonNullable<SidesPaddingOptions['fallback']>;
69
61
  };
@@ -94,4 +86,4 @@ declare function buttonFieldSet(opts: ButtonFieldSetOptions): {
94
86
  _dSize: BoxField<undefined>;
95
87
  };
96
88
 
97
- export { BUTTON_PAD_KEYS, BUTTON_STYLE_KEYS, type ButtonFieldSetOptions, buttonFieldSet };
89
+ export { type ButtonFieldSetOptions, buttonFieldSet };
@@ -1 +1 @@
1
- export{BUTTON_PAD_KEYS,BUTTON_STYLE_KEYS,buttonFieldSet}from"../../../chunk-FIH23CB7.js";import"../../../chunk-ZJRMB5KN.js";import"../../../chunk-M5IKANJ5.js";import"../../../chunk-CLAADE4J.js";import"../../../chunk-2T22IY3J.js";import"../../../chunk-7GGNFLHT.js";import"../../../chunk-22I55W37.js";import"../../../chunk-LX23TCTP.js";import"../../../chunk-Q3VAJMXS.js";import"../../../chunk-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";import"../../../chunk-E52W3M5I.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-53ME3GAI.js";import"../../../chunk-LUG22U5L.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-FM6JO4WF.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-HZSZT3BE.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-MIX7EGRG.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-JACEEVVF.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-EUFDQ4KL.js";import"../../../chunk-KXM6YRG2.js";import"../../../chunk-TOKMFZPB.js";import"../../../chunk-FR7EEKFF.js";import"../../../chunk-7UFKEX72.js";import"../../../chunk-BSPCSC45.js";
1
+ export{buttonFieldSet}from"../../../chunk-4O4FSRJL.js";import"../../../chunk-SS2NY7PP.js";import"../../../chunk-UJU42JM4.js";import"../../../chunk-CLAADE4J.js";import"../../../chunk-2T22IY3J.js";import"../../../chunk-7GGNFLHT.js";import"../../../chunk-22I55W37.js";import"../../../chunk-LX23TCTP.js";import"../../../chunk-Q3VAJMXS.js";import"../../../chunk-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";export{BUTTON_PAD_KEYS,BUTTON_STYLE_KEYS}from"../../../chunk-BTQ3FJKT.js";import"../../../chunk-E52W3M5I.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-YAFMYW4J.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-FM6JO4WF.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-HZSZT3BE.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-MIX7EGRG.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-JACEEVVF.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";
@@ -3,6 +3,10 @@ import { BoxField } from './box-fields.js';
3
3
  import { MEDIA_FIELD_MARKER } from './field-markers.js';
4
4
  import 'efficient-shell/format';
5
5
  import 'efficient-shell/ui';
6
+ import '../../../types-BusXrvDU.js';
7
+ import '../../../wordFit-7XpmhcaW.js';
8
+ import '../../../words-BrN08Fup.js';
9
+ import '../../../buckets-_MGDYJlb.js';
6
10
  import '../../../ScreenDocumentContext-DPW_6gOC.js';
7
11
  import '../../../blocks/index.js';
8
12
  import '../../../types-BljCVdzR.js';