efficient-easel 26.15.0 → 27.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -8
- package/dist/{canvas-typing--FlIZwbT.d.ts → canvas-typing-CD1aeYnk.d.ts} +7 -0
- package/dist/chunk-2262JGFV.js +5 -0
- package/dist/{chunk-NUJEHA6A.js → chunk-3W2O22DZ.js} +10 -10
- package/dist/chunk-53QUHEHK.js +1 -0
- package/dist/{chunk-7U4HEUZM.js → chunk-5JNVMCCB.js} +1 -1
- package/dist/{chunk-5OYP3C2K.js → chunk-5OWAV3MH.js} +1 -1
- package/dist/chunk-76MUJIZE.js +17 -0
- package/dist/{chunk-YMK3MZJK.js → chunk-AAZIMKLQ.js} +1 -1
- package/dist/{chunk-PG7G7ELT.js → chunk-BFJAEQZ6.js} +1 -1
- package/dist/chunk-DAKKPW2Z.js +1 -0
- package/dist/chunk-DIOTWSCO.js +1 -0
- package/dist/chunk-FW35PCK7.js +1 -0
- package/dist/{chunk-C4TJN6GR.js → chunk-G2VZ4DET.js} +1 -1
- package/dist/{chunk-WMC6FE3G.js → chunk-HG65R6IN.js} +14 -14
- package/dist/chunk-L2WK5JYB.js +2 -0
- package/dist/chunk-L7PSERQH.js +8 -0
- package/dist/{chunk-3BQT7FC7.js → chunk-MNQDOSAX.js} +2 -2
- package/dist/{chunk-H4TUOPI7.js → chunk-NTG5ODKZ.js} +1 -1
- package/dist/{chunk-2EDOL4IW.js → chunk-O4OWODU2.js} +35 -35
- package/dist/chunk-TDEBPOWV.js +3 -0
- package/dist/{chunk-3ZGOVNVH.js → chunk-TYTMUHUK.js} +1 -1
- package/dist/chunk-W3UZNKGS.js +7 -0
- package/dist/{chunk-CLAADE4J.js → chunk-XWTQTANN.js} +5 -5
- package/dist/{chunk-MGEXTIZH.js → chunk-YES5F7OS.js} +1 -1
- package/dist/chunk-ZFEAWEFS.js +4 -0
- package/dist/chunk-ZNLODQD4.js +3 -0
- package/dist/copy/index.d.ts +3 -3
- package/dist/copy/index.js +12 -12
- package/dist/draw/index.js +1 -1
- package/dist/easel/index.d.ts +2 -2
- package/dist/easel/index.js +1 -1
- package/dist/fields/index.d.ts +43 -16
- package/dist/fields/index.js +1 -1
- package/dist/panel/index.js +1 -1
- package/dist/{rowMarks-CO5TpfLY.d.ts → rowMarks-D2cO7UTi.d.ts} +5 -5
- package/dist/screen/components/AddBlockRow.js +1 -1
- package/dist/screen/components/AddSidePanel.js +1 -1
- package/dist/screen/components/NodeContextMenu.js +1 -1
- package/dist/screen/components/PageEditGuardNotices.js +1 -1
- package/dist/screen/components/ScreenChrome.js +1 -1
- package/dist/screen/components/ScreenDocumentContext.js +1 -1
- package/dist/screen/components/ScreenMount.js +1 -1
- package/dist/screen/components/ScreenStoreProvider.js +1 -1
- package/dist/screen/components/SectionScreenShell.js +17 -17
- package/dist/screen/components/usePartBridge.js +1 -1
- package/dist/screen/index.js +1 -1
- package/dist/screen/lib/content/view-tiers.d.ts +11 -1
- package/dist/screen/lib/content/view-tiers.js +1 -1
- package/dist/screen/lib/document/block-set-host.js +1 -1
- package/dist/screen/lib/document/block-size-fields.js +1 -1
- package/dist/screen/lib/document/box-fields.d.ts +41 -13
- package/dist/screen/lib/document/box-fields.js +1 -1
- package/dist/screen/lib/document/button-fields.js +1 -1
- package/dist/screen/lib/document/device-fields.d.ts +10 -17
- package/dist/screen/lib/document/device-fields.js +1 -1
- package/dist/screen/lib/document/image-fields.js +5 -5
- package/dist/screen/lib/document/panel-no-control-mark.d.ts +2 -2
- package/dist/screen/lib/document/shadow-fields.js +2 -2
- package/dist/screen/lib/document/style-clipboard.js +1 -1
- package/dist/screen/lib/document/style-fields.js +1 -1
- package/dist/screen/lib/document/use-section-ops.js +1 -1
- package/dist/screen/lib/key-scope.js +1 -1
- package/dist/screen/lib/screen-parts.d.ts +0 -10
- package/dist/screen/lib/screen-parts.js +1 -1
- package/dist/screen/screen.css +0 -6
- package/dist/screen/words.d.ts +1 -3
- package/dist/screen/words.js +1 -1
- package/dist/strings/index.js +2 -2
- package/dist/text-styles/index.d.ts +6 -5
- package/dist/text-styles/index.js +37 -37
- package/dist/text-styles/model.d.ts +24 -14
- package/dist/text-styles/model.js +1 -1
- package/dist/{types-CVHwspYM.d.ts → types-DcyH17ij.d.ts} +2 -0
- package/package.json +1 -1
- package/dist/chunk-BLE3U2GS.js +0 -2
- package/dist/chunk-CPIWSFGR.js +0 -2
- package/dist/chunk-E52W3M5I.js +0 -1
- package/dist/chunk-IHOTVWDE.js +0 -7
- package/dist/chunk-K6TDOXHR.js +0 -17
- package/dist/chunk-L4DFCNDQ.js +0 -5
- package/dist/chunk-M4SOZEZR.js +0 -4
- package/dist/chunk-RWGOCHH7.js +0 -1
- package/dist/chunk-U4TG43PD.js +0 -1
- package/dist/chunk-VVHDUTAE.js +0 -8
- package/dist/chunk-YHZSBL2N.js +0 -1
- package/dist/chunk-ZEH6QLBH.js +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
export{usePartBridge}from"../../chunk-
|
|
1
|
+
export{usePartBridge}from"../../chunk-5OWAV3MH.js";import"../../chunk-TYTMUHUK.js";import"../../chunk-2262JGFV.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-HG65R6IN.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-K53PQAMP.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-QTHQPJWA.js";import"../../chunk-MNQDOSAX.js";import"../../chunk-PMRN5Z3T.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-DX3VILZ3.js";import"../../chunk-MIX7EGRG.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";
|
package/dist/screen/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../chunk-GZO72N3Q.js";export{DocumentScreen,ScreenMount}from"../chunk-
|
|
1
|
+
import"../chunk-GZO72N3Q.js";export{DocumentScreen,ScreenMount}from"../chunk-W3UZNKGS.js";import"../chunk-GXQCZJOP.js";export{ScreenStoreProvider}from"../chunk-AAZIMKLQ.js";import"../chunk-O4OWODU2.js";import"../chunk-UMBNBCL4.js";import"../chunk-OXZDSOZV.js";import"../chunk-7OCEPOEJ.js";import"../chunk-FW35PCK7.js";import"../chunk-5XL2RXFU.js";import"../chunk-3QB2ZQXK.js";import"../chunk-ZNLODQD4.js";import"../chunk-22I55W37.js";import"../chunk-LUOY3A3Q.js";import"../chunk-BFJAEQZ6.js";import"../chunk-KCBEE2MC.js";import"../chunk-6EDVZBUO.js";import"../chunk-5OWAV3MH.js";import"../chunk-TYTMUHUK.js";import"../chunk-YES5F7OS.js";import"../chunk-PVBDKBJB.js";import"../chunk-RKTF5XLP.js";import"../chunk-L2WK5JYB.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-L7PSERQH.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-2262JGFV.js";import"../chunk-T2RINM7R.js";import"../chunk-NCXYC7WI.js";import"../chunk-NTG5ODKZ.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-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-HG65R6IN.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-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-MNQDOSAX.js";import"../chunk-PMRN5Z3T.js";import"../chunk-Y2T3JX7K.js";import"../chunk-KFWNGPW3.js";import"../chunk-DX3VILZ3.js";import"../chunk-MIX7EGRG.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";
|
|
@@ -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-
|
|
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-
|
|
1
|
+
import{buttonFieldSet as e}from"../../../chunk-DAKKPW2Z.js";import"../../../chunk-ZFEAWEFS.js";import{boxFieldSet as o}from"../../../chunk-76MUJIZE.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-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";import"../../../chunk-PLTTPHK5.js";import{foldMetaOf as t}from"../../../chunk-ANPOR6EY.js";import"../../../chunk-3W2O22DZ.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-D4TH4QQR.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-OECWLNKJ.js";import{phoneKey as n}from"../../../chunk-DIOTWSCO.js";import"../../../chunk-MNQDOSAX.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-MIX7EGRG.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 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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{noGlyph as t,boxFieldBuilders as i,PHONE_KEY_ACCESS as n,group as o,phoneTwinFields as r}from"../../../chunk-
|
|
1
|
+
import{noGlyph as t,boxFieldBuilders as i,PHONE_KEY_ACCESS as n,group as o,phoneTwinFields as r}from"../../../chunk-76MUJIZE.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-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-ANPOR6EY.js";import"../../../chunk-3W2O22DZ.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-D4TH4QQR.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-DIOTWSCO.js";import"../../../chunk-MNQDOSAX.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-MIX7EGRG.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 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),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};
|
|
@@ -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
|
|
34
|
-
*
|
|
35
|
-
*
|
|
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
|
|
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
|
|
303
|
-
* the same row", Lewis 2026-10-27): the row under `key` (Desktop view only)
|
|
304
|
-
*
|
|
305
|
-
*
|
|
306
|
-
*
|
|
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
|
|
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-
|
|
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-76MUJIZE.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-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-3W2O22DZ.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-D4TH4QQR.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-DIOTWSCO.js";import"../../../chunk-MNQDOSAX.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-MIX7EGRG.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 +1 @@
|
|
|
1
|
-
export{buttonFieldSet}from"../../../chunk-
|
|
1
|
+
export{buttonFieldSet}from"../../../chunk-DAKKPW2Z.js";import"../../../chunk-ZFEAWEFS.js";import"../../../chunk-76MUJIZE.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-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";export{BUTTON_PAD_KEYS,BUTTON_STYLE_KEYS}from"../../../chunk-PLTTPHK5.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-3W2O22DZ.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-D4TH4QQR.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-DIOTWSCO.js";import"../../../chunk-MNQDOSAX.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-MIX7EGRG.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,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-
|
|
4
|
-
export { b as DEVICE_FIELD_MARKER, c as DeviceFieldMeta, d as deviceMetaOf } from '../../../rowMarks-
|
|
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
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
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
|
|
62
|
-
*
|
|
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
|
-
*
|
|
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-
|
|
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";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{SettingsDefaultReset as e}from"../../../chunk-2T22IY3J.js";import{ScreenDocumentContext as n}from"../../../chunk-
|
|
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:
|
|
3
|
-
return g(m,{label:
|
|
4
|
-
return g(m,{label:
|
|
5
|
-
/* @__PURE__ */g(k,{value:ne,onChange:_,onPick:e=>{if(q)return $&&!
|
|
1
|
+
import{SettingsDefaultReset as e}from"../../../chunk-2T22IY3J.js";import{ScreenDocumentContext as n}from"../../../chunk-L2WK5JYB.js";import"../../../chunk-QZJKWKGH.js";import"../../../chunk-ERR437B5.js";import{requestMediaPick as o}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 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-3W2O22DZ.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import{DEFAULT_PANEL_WORDS as s}from"../../../chunk-56ID6FKZ.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-NDRZP6YR.js";import"../../../chunk-H6DDIBQ4.js";import"../../../chunk-YYD257TD.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-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:K,name:b,readOnly:B,canPick:D=!0,kind:P="image",accept:O,acceptHint:F,pickOptions:L,maxSizeBytes:M,height:Y,placeholder:N,removeLabel:T,paste:Q,focusKey:S,focusWhen:W,frameKey:I,note:w}){const G=l("imageRow",r),X=l("panel",s),x=t(),H=c(),Z=p(n),A="video"===P,J=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)}}(A?void 0:S,W),[U,z]=h(!1),V=!0===B||!0===H?.readOnly,q=D&&!V;if(Z&&!Z.capabilities.mediaEditing)/* @__PURE__ */
|
|
3
|
+
return g(m,{label:i,icon:j,hint:R,children:/* @__PURE__ */g("div",{className:"es-image-row-note",children:A?G.templateVideo:G.template})});const $=I&&b?{video:b,frame:I}:null,_=$?e=>e?K(e):H?.onChangeMany({[$.video]:"",[$.frame]:""}):K,ee=$?e=>H?.onChangeMany({[$.video]:e,[$.frame]:""}):K,ne=C(E),oe=J?.phone&&ne?/* @__PURE__ */g(e,{words:X,label:G.focus,changed:Boolean(J.own),detail:G.onDesktop(J.desktop),onReset:J.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):o(x,{accept:O??(A?"video/*":"image/*"),title:i,...e?{file:e}:{},...L?{options:L}:{}}).then(e=>e&&$?(H?.onChangeMany({[$.video]:e.url,[$.frame]:e.posterUrl??""}),null):e?.url??null)},accept:O??(A?"video/*":"image/*"),acceptHint:F,kind:P,maxSizeBytes:M,height:Y,placeholder:N,removeLabel:T,allowReplace:q,allowRemove:!V,disabled:V||!q&&!ne,focusLabel:G.focus,...J&&!V?{focus:J.focus,onFocusChange:J.set}:J?{focus:J.focus}:{}}),w?.(ne),Q&&!V?te?/* @__PURE__ */g(y,{src:ne,onChange:ee,tidy:Q.tidy,name:G.pasteName}):/* @__PURE__ */g(d,{variant:"link",size:"sm",onClick:()=>z(!0),children:G.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,6 +1,6 @@
|
|
|
1
1
|
import { ReactElement } from 'react';
|
|
2
|
-
import { N as NoControlFieldMeta } from '../../../rowMarks-
|
|
3
|
-
export { e as NO_CONTROL_FIELD, n as noControlMetaOf } from '../../../rowMarks-
|
|
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
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{DEFAULT_SHADOW_COLOR as o,DEFAULT_SHADOW as n,shadowValue as r,SHADOWS as i}from"../../../chunk-CRITA6CA.js";export{DEFAULT_SHADOW,DEFAULT_SHADOW_COLOR,SHADOWS,shadowValue}from"../../../chunk-CRITA6CA.js";import{styleFieldBuilders as t}from"../../../chunk-
|
|
2
|
-
return l(p,{label:
|
|
1
|
+
import{DEFAULT_SHADOW_COLOR as o,DEFAULT_SHADOW as n,shadowValue as r,SHADOWS as i}from"../../../chunk-CRITA6CA.js";export{DEFAULT_SHADOW,DEFAULT_SHADOW_COLOR,SHADOWS,shadowValue}from"../../../chunk-CRITA6CA.js";import{styleFieldBuilders as t}from"../../../chunk-ZFEAWEFS.js";import"../../../chunk-76MUJIZE.js";import"../../../chunk-XWTQTANN.js";import{SettingsDefaultReset as s}from"../../../chunk-2T22IY3J.js";import"../../../chunk-ZNLODQD4.js";import"../../../chunk-22I55W37.js";import"../../../chunk-LX23TCTP.js";import"../../../chunk-G2VZ4DET.js";import"../../../chunk-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";import"../../../chunk-PLTTPHK5.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-3W2O22DZ.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-D4TH4QQR.js";import{DEFAULT_PANEL_WORDS as e}from"../../../chunk-56ID6FKZ.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-DIOTWSCO.js";import"../../../chunk-MNQDOSAX.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-DX3VILZ3.js";import{SettingsField as p}from"../../../chunk-MIX7EGRG.js";import"../../../chunk-JACEEVVF.js";import{useWords as c}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"../../../chunk-BSPCSC45.js";import{ShadowIcon as h}from"efficient-shell/icons/efficient";import{IconPicker as u}from"efficient-shell/ui";import{jsx as l}from"react/jsx-runtime";var m={none:"None",soft:"Soft",lifted:"Lifted"},a={none:"none",soft:"0 1px 1px rgba(20, 20, 22, 0.10), 0 2px 4px -1px rgba(20, 20, 22, 0.14)",lifted:"0 1px 2px rgba(20, 20, 22, 0.10), 0 4px 7px -2px rgba(20, 20, 22, 0.30)"},k={display:"block",flex:"none",boxSizing:"border-box",width:16,height:11};function j({o:o,say:t,props:j}){const d=c("panel",e),f=o.builtIn??n,b=r(j.value),F=b??f,C=t(o.label);/* @__PURE__ */
|
|
2
|
+
return l(p,{label:C,icon:o.icon??/* @__PURE__ */l(h,{}),value:t(m[F]),changed:null!==b,hint:o.hint,action:/* @__PURE__ */l(s,{words:d,label:C,changed:null!==b,detail:t(m[f]),onReset:()=>j.onChange(void 0),disabled:j.readOnly}),children:/* @__PURE__ */l(u,{label:C,value:F,options:i.map(o=>({value:o,label:t(m[o]),icon:/* @__PURE__ */l("span",{"data-shadow-chip":"",className:"border border-line bg-surface",style:{...k,boxShadow:a[o]}})})),onChange:o=>j.onChange(o),disabled:j.readOnly})})}function d(n=o=>o){const{colourField:r}=t(n);return{shadowField:o=>({type:"custom",render:r=>/* @__PURE__ */l(j,{o:o,say:n,props:r})}),shadowColourField:n=>{const i=n.follows??o;return r({key:n.key??"shadowColor",label:n.label,icon:/* @__PURE__ */l(h,{}),hint:n.hint,useFollows:()=>i})}}}var{shadowField:f,shadowColourField:b}=d();export{b as shadowColourField,f as shadowField,d as shadowFieldBuilders};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{copyNodeStyle,nodeStyleRows,planNodePaste,shopFieldKind,siteStyleScope,styleClipboardOf}from"../../../chunk-
|
|
1
|
+
export{copyNodeStyle,nodeStyleRows,planNodePaste,shopFieldKind,siteStyleScope,styleClipboardOf}from"../../../chunk-FW35PCK7.js";import"../../../chunk-5XL2RXFU.js";import"../../../chunk-3QB2ZQXK.js";import"../../../chunk-ZNLODQD4.js";import"../../../chunk-22I55W37.js";import"../../../chunk-G2VZ4DET.js";import"../../../chunk-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-BPXEFVSQ.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-EUFDQ4KL.js";import"../../../chunk-KXM6YRG2.js";import"../../../chunk-BSPCSC45.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{BORDER_WIDTH_MAX,CORNER_RADIUS_MAX,borderField,colourField,cornersField,keptByRow,styleFieldBuilders}from"../../../chunk-
|
|
1
|
+
export{BORDER_WIDTH_MAX,CORNER_RADIUS_MAX,borderField,colourField,cornersField,keptByRow,styleFieldBuilders}from"../../../chunk-ZFEAWEFS.js";import"../../../chunk-76MUJIZE.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-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";export{CORNER_SIDES}from"../../../chunk-PLTTPHK5.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-3W2O22DZ.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-D4TH4QQR.js";import"../../../chunk-56ID6FKZ.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-DIOTWSCO.js";import"../../../chunk-MNQDOSAX.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-MIX7EGRG.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 +1 @@
|
|
|
1
|
-
export{useSectionOps}from"../../../chunk-
|
|
1
|
+
export{useSectionOps}from"../../../chunk-TYTMUHUK.js";import"../../../chunk-2262JGFV.js";import"../../../chunk-NCXYC7WI.js";import"../../../chunk-LX23TCTP.js";import"../../../chunk-TCAAOYQY.js";import"../../../chunk-3W2O22DZ.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-HG65R6IN.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-K53PQAMP.js";import"../../../chunk-FIVU2COQ.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-MNQDOSAX.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-Y2T3JX7K.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-MIX7EGRG.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 +1 @@
|
|
|
1
|
-
export{editorRootFocus,isSaveShortcut,useEaselKeyTarget,useEaselSaveKey,useEaselUndoKeys}from"../../chunk-
|
|
1
|
+
export{editorRootFocus,isSaveShortcut,useEaselKeyTarget,useEaselSaveKey,useEaselUndoKeys}from"../../chunk-BFJAEQZ6.js";import"../../chunk-LX23TCTP.js";import"../../chunk-3W2O22DZ.js";import"../../chunk-JQQFB7EZ.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-K53PQAMP.js";import"../../chunk-QTHQPJWA.js";import"../../chunk-MNQDOSAX.js";import"../../chunk-PMRN5Z3T.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";
|
|
@@ -971,16 +971,6 @@ interface ScreenBlockLook {
|
|
|
971
971
|
* Absent: the screen's two, as it drew them.
|
|
972
972
|
*/
|
|
973
973
|
rowActions?: (node: ScreenNode, zone: string, index: number) => ReactNode;
|
|
974
|
-
/**
|
|
975
|
-
* THE WORDS OF A BLOCK'S CANVAS TAB (Stats design B, Lewis 2026-10-29,
|
|
976
|
-
* canvas look Y): where a block's value comes from — "Designs shown" for a
|
|
977
|
-
* number filled from a live count — or null for a block that has no tab.
|
|
978
|
-
* Asked of the selected block and of the block under the pointer. The
|
|
979
|
-
* screen draws the tab the pinned bands wear (the shell's solid badge)
|
|
980
|
-
* above the block's top edge; a click on it selects the block. Absent: no
|
|
981
|
-
* block has a tab.
|
|
982
|
-
*/
|
|
983
|
-
canvasTab?: (node: ScreenNode) => string | null;
|
|
984
974
|
}
|
|
985
975
|
/**
|
|
986
976
|
* THE DEVICES the canvas can be looked at on. That the top bar has a switch,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{SELECTION_MODE,ScreenCanvasTargetProvider,ScreenPartsProvider,isPinnedFirst,isPinnedLast,isSelectionMode,isSlotMode,sameInspectorMode,screenSlotsOf,shownChildSlotsOf,shownSlotFieldsOf,useScreenBlockLook,useScreenBlockRules,useScreenBridges,useScreenCanvasDrag,useScreenCanvasFrame,useScreenCanvasHead,useScreenCanvasTarget,useScreenDevices,useScreenDocumentLabel,useScreenDocumentPass,useScreenInspectorPanel,useScreenLeftView,useScreenNodeKeys,useScreenNotify,useScreenOwnerName,useScreenParts,useScreenPickFollowsSelection,useScreenPinned,useScreenSaveSwitch,useScreenStorageNamespace,useScreenStyleClipboard,useStandaloneScreenBridges}from"../../chunk-
|
|
1
|
+
export{SELECTION_MODE,ScreenCanvasTargetProvider,ScreenPartsProvider,isPinnedFirst,isPinnedLast,isSelectionMode,isSlotMode,sameInspectorMode,screenSlotsOf,shownChildSlotsOf,shownSlotFieldsOf,useScreenBlockLook,useScreenBlockRules,useScreenBridges,useScreenCanvasDrag,useScreenCanvasFrame,useScreenCanvasHead,useScreenCanvasTarget,useScreenDevices,useScreenDocumentLabel,useScreenDocumentPass,useScreenInspectorPanel,useScreenLeftView,useScreenNodeKeys,useScreenNotify,useScreenOwnerName,useScreenParts,useScreenPickFollowsSelection,useScreenPinned,useScreenSaveSwitch,useScreenStorageNamespace,useScreenStyleClipboard,useStandaloneScreenBridges}from"../../chunk-2262JGFV.js";import"../../chunk-NCXYC7WI.js";import"../../chunk-LX23TCTP.js";import"../../chunk-TCAAOYQY.js";import"../../chunk-3W2O22DZ.js";import"../../chunk-JQQFB7EZ.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-HG65R6IN.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-K53PQAMP.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-QTHQPJWA.js";import"../../chunk-MNQDOSAX.js";import"../../chunk-PMRN5Z3T.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-DX3VILZ3.js";import"../../chunk-MIX7EGRG.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";
|
package/dist/screen/screen.css
CHANGED
|
@@ -831,12 +831,6 @@
|
|
|
831
831
|
pointer-events: auto;
|
|
832
832
|
cursor: pointer;
|
|
833
833
|
}
|
|
834
|
-
/* A block's own tab (`blockLook.canvasTab`, Stats design B, Lewis
|
|
835
|
-
2026-10-29): it rides above the block's top edge, lifted by its own
|
|
836
|
-
height, so it never covers the number it names. */
|
|
837
|
-
.es-band-tab.is-above {
|
|
838
|
-
transform: translateY(-100%);
|
|
839
|
-
}
|
|
840
834
|
/* A SHARED node's tab (Shared section design v4, Lewis 2026-10-21): the
|
|
841
835
|
shell's `shared` mark before the name, inside the badge's line. */
|
|
842
836
|
.es-band-tab-mark {
|
package/dist/screen/words.d.ts
CHANGED
|
@@ -389,10 +389,8 @@ type ScreenWords = {
|
|
|
389
389
|
headerSettings: string;
|
|
390
390
|
/** The section screen's menu of blocks to add (`AddBlockRow`). */
|
|
391
391
|
addBlockMenu: string;
|
|
392
|
-
/** The quiet line over a section's settings
|
|
393
|
-
* desktop: the tablet's, then the phone's. */
|
|
392
|
+
/** The quiet line over a section's settings in the phone view. */
|
|
394
393
|
deviceNote: {
|
|
395
|
-
tablet: string;
|
|
396
394
|
mobile: string;
|
|
397
395
|
};
|
|
398
396
|
};
|
package/dist/screen/words.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{DEFAULT_IMAGE_ROW_WORDS,DEFAULT_SCREEN_ADD_WORDS,DEFAULT_SCREEN_SAVE_STATUS_WORDS,DEFAULT_SCREEN_SHARED_WORDS,DEFAULT_SCREEN_WORDS}from"../chunk-
|
|
1
|
+
export{DEFAULT_IMAGE_ROW_WORDS,DEFAULT_SCREEN_ADD_WORDS,DEFAULT_SCREEN_SAVE_STATUS_WORDS,DEFAULT_SCREEN_SHARED_WORDS,DEFAULT_SCREEN_WORDS}from"../chunk-G2VZ4DET.js";
|
package/dist/strings/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{DEFAULT_TEXT_STYLES_WORDS as o}from"../chunk-OGH6CC3E.js";import{DEFAULT_SCREEN_WORDS as r,DEFAULT_IMAGE_ROW_WORDS as n}from"../chunk-
|
|
2
|
-
return
|
|
1
|
+
import{DEFAULT_TEXT_STYLES_WORDS as o}from"../chunk-OGH6CC3E.js";import{DEFAULT_SCREEN_WORDS as r,DEFAULT_IMAGE_ROW_WORDS as n}from"../chunk-G2VZ4DET.js";import{DEFAULT_STYLE_CLIPBOARD_WORDS as t}from"../chunk-6WY6ZXJG.js";import{DEFAULT_CANVAS_WORDS as c}from"../chunk-TBY3DFKS.js";import{DEFAULT_TREE_WORDS as e}from"../chunk-K56YDHYQ.js";import{DEFAULT_COLOUR_ROW_WORDS as m,DEFAULT_PANEL_WORDS as i}from"../chunk-56ID6FKZ.js";import{DEFAULT_NODE_MENU_WORDS as s}from"../chunk-WK3AFPXY.js";import{DEFAULT_PAGE_COPY_WORDS as u}from"../chunk-CEC5XLN4.js";import{DEFAULT_SAVE_WORDS as f}from"../chunk-H6DDIBQ4.js";import{DEFAULT_CHROME_WORDS as p,DEFAULT_NOTICE_WORDS as l}from"../chunk-AJSDWWJW.js";import{DEFAULT_RAIL_WORDS as h}from"../chunk-2OAZYSWJ.js";import{DEFAULT_LOCK_WORDS as j}from"../chunk-RE4LP46F.js";import{DEFAULT_COPY_WORDS as a}from"../chunk-PMRN5Z3T.js";import{DEFAULT_FIELDS_WORDS as k}from"../chunk-JACEEVVF.js";import{stringsContext as y}from"../chunk-MFIRYGHW.js";import{DEFAULT_DRAG_WORDS as Y}from"../chunk-TQ5Y6S2X.js";import{useContext as C,useMemo as D}from"react";import{jsx as W}from"react/jsx-runtime";var d={notice:l,lock:j,save:f,chrome:p,rail:h,tree:e,panel:i,fields:k,colourRow:m,imageRow:n,drag:Y,menu:s,styleClipboard:t,copy:a,canvas:c,textStyles:o,screen:r,pageCopy:u},g=o=>"object"==typeof o&&null!==o;function v(o,r){const n={};for(const t of Object.keys(o)){const c=o[t],e=r[t];null==e?n[t]=c:g(c)?n[t]=g(e)?v(c,e):c:n[t]=typeof e==typeof c?e:c}return n}function E(o,r){return r?v(o,r):o}function F({value:o,locale:r,children:n}){const t=y(),c=C(t),e=c?.strings??d,m=r??c?.locale??"en",i=D(()=>({strings:E(e,o),locale:m}),[e,o,m]);/* @__PURE__ */
|
|
2
|
+
return W(t.Provider,{value:i,children:n})}function J(){return C(y())?.strings??d}function R(){return C(y())?.locale??"en"}export{d as DEFAULT_EASEL_STRINGS,F as EaselStringsProvider,E as mergeEaselStrings,R as useEaselLocale,J as useEaselStrings};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
import { TextStyle, TextStyleFont, TextStyleColour, TextStyleSetting, TextStyleAuto, TextStyleValues, TextStyleDevice, TextStyleKind } from './model.js';
|
|
4
|
-
export { CAMPAIGN_TEXT_STYLE_SETTINGS, TEXT_STYLE_CASES, TEXT_STYLE_CASE_CSS, TEXT_STYLE_DEFAULT_COUNT, TEXT_STYLE_KINDS, TEXT_STYLE_MAX, TEXT_STYLE_RANGES, TEXT_STYLE_SETTINGS, TextStyleCase, TextStyleCaseCss, TextStyleNumber, TextStyleRange, addTextStyle, canAddTextStyle, defaultTextStyles, describeTextStyle, isDefaultTextStyle, isTextStyleCase, removeTextStyle, resolveTextStyle, textStyleCaseCss, textStyleCaseOfCss, textStyleRowSize, updateTextStyle, weightWord } from './model.js';
|
|
4
|
+
export { CAMPAIGN_TEXT_STYLE_SETTINGS, TEXT_STYLE_CASES, TEXT_STYLE_CASE_CSS, TEXT_STYLE_DEFAULT_COUNT, TEXT_STYLE_KINDS, TEXT_STYLE_MAX, TEXT_STYLE_RANGES, TEXT_STYLE_SETTINGS, TEXT_STYLE_VIEW_NUMBERS, TextStyleCase, TextStyleCaseCss, TextStyleNumber, TextStyleRange, TextStyleViewNumber, addTextStyle, canAddTextStyle, defaultTextStyles, describeTextStyle, isDefaultTextStyle, isTextStyleCase, removeTextStyle, resolveTextStyle, textStyleCaseCss, textStyleCaseOfCss, textStyleRowSize, textStyleViewKey, textStyleViewValues, updateTextStyle, weightWord } from './model.js';
|
|
5
5
|
export { D as DEFAULT_TEXT_STYLES_WORDS, T as TextStylesWords } from '../words-B5Gb7KFq.js';
|
|
6
6
|
|
|
7
7
|
interface TextStylesListProps {
|
|
@@ -49,9 +49,10 @@ interface TextStylesListProps {
|
|
|
49
49
|
/** At most this many of each kind. */
|
|
50
50
|
max?: number;
|
|
51
51
|
/**
|
|
52
|
-
* The view the host's editor is in. In `phone`,
|
|
53
|
-
*
|
|
54
|
-
*
|
|
52
|
+
* The view the host's editor is in. In `tablet` and `phone`, only Size, Line
|
|
53
|
+
* spacing, Letter spacing, Paragraph spacing and Largest size are drawn, and
|
|
54
|
+
* each edits that view's value: the next wider view's number shows grey behind
|
|
55
|
+
* it, and an emptied box goes back to it. Left out: `desktop`, as before.
|
|
55
56
|
*/
|
|
56
57
|
device?: TextStyleDevice;
|
|
57
58
|
readOnly?: boolean;
|
|
@@ -99,7 +100,7 @@ interface TextStyleItemProps {
|
|
|
99
100
|
onChange: (next: TextStyle) => void;
|
|
100
101
|
/** Buttons at the end of the row, outside the button that opens it. */
|
|
101
102
|
actions?: ReactNode;
|
|
102
|
-
/** The editor's view: `phone`
|
|
103
|
+
/** The editor's view: `tablet` and `phone` draw and edit that view's values. */
|
|
103
104
|
device?: TextStyleDevice;
|
|
104
105
|
readOnly?: boolean;
|
|
105
106
|
}
|