efficient-easel 7.2.2 → 8.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 +34 -3
- package/dist/autosave/index.d.ts +5 -5
- package/dist/autosave/index.js +1 -1
- package/dist/chrome/chrome.css +34 -0
- package/dist/chrome/index.d.ts +23 -4
- package/dist/chrome/index.js +1 -1
- package/dist/chunk-246ONJJH.js +58 -0
- package/dist/chunk-3NB2IEXA.js +1 -0
- package/dist/{chunk-QJITGBAT.js → chunk-3QK5R7RR.js} +3 -3
- package/dist/chunk-BHRC3ASL.js +1 -0
- package/dist/{chunk-MVQEEWTE.js → chunk-BRDCD4LK.js} +1 -1
- package/dist/{chunk-COCSEEXP.js → chunk-CVUMGA2T.js} +1 -1
- package/dist/{chunk-6TOYXESC.js → chunk-DPKWJTNX.js} +1 -1
- package/dist/chunk-HDUAODXJ.js +4 -0
- package/dist/{chunk-HS5DWUCH.js → chunk-JO6FBCVR.js} +1 -1
- package/dist/chunk-JTUUIVBZ.js +1 -0
- package/dist/{chunk-E4MAYJX5.js → chunk-NCQSBU3O.js} +1 -1
- package/dist/chunk-NDRZP6YR.js +1 -0
- package/dist/{chunk-6Z5VENIE.js → chunk-OGCROOTI.js} +1 -1
- package/dist/chunk-QVUVDBGA.js +23 -0
- package/dist/{chunk-LC62L4P2.js → chunk-R2G64ZNC.js} +1 -1
- package/dist/chunk-RKTF5XLP.js +1 -0
- package/dist/{chunk-JVTSUA2U.js → chunk-SQMUAXUS.js} +1 -1
- package/dist/chunk-THZ46DC5.js +2 -0
- package/dist/{chunk-PFNIVZPN.js → chunk-XTJCKV6Z.js} +1 -1
- package/dist/chunk-ZPXKNO5L.js +5 -0
- package/dist/{engine-DBxp_v6B.d.ts → engine-CvXpFE86.d.ts} +18 -0
- package/dist/{host-CiuzZJXj.d.ts → host-Ud6rLpph.d.ts} +6 -1
- package/dist/screen/components/AddBlockRow.js +1 -1
- package/dist/screen/components/AddSidePanel.js +1 -1
- package/dist/screen/components/MediaSidePanel.d.ts +2 -2
- package/dist/screen/components/MediaSidePanel.js +1 -1
- package/dist/screen/components/NodeContextMenu.d.ts +3 -3
- package/dist/screen/components/NodeContextMenu.js +1 -1
- package/dist/screen/components/PageEditGuardNotices.js +1 -1
- package/dist/screen/components/SaveControls.d.ts +85 -0
- package/dist/screen/components/SaveControls.js +1 -0
- package/dist/screen/components/ScreenChrome.js +1 -1
- package/dist/screen/components/ScreenDocumentContext.d.ts +2 -2
- package/dist/screen/components/ScreenDocumentContext.js +1 -1
- package/dist/screen/components/ScreenMount.d.ts +3 -3
- package/dist/screen/components/ScreenMount.js +1 -1
- package/dist/screen/components/ScreenStoreProvider.d.ts +3 -3
- package/dist/screen/components/SectionScreenShell.js +16 -16
- package/dist/screen/components/SidePanelHead.js +1 -1
- package/dist/screen/components/panel-widths.js +1 -1
- package/dist/screen/components/usePartBridge.d.ts +3 -3
- package/dist/screen/index.d.ts +4 -4
- package/dist/screen/index.js +1 -1
- package/dist/screen/lib/document-addressing.d.ts +2 -2
- package/dist/screen/lib/document-switch.d.ts +1 -1
- package/dist/screen/lib/host.d.ts +2 -2
- package/dist/screen/lib/key-scope.d.ts +16 -1
- package/dist/screen/lib/key-scope.js +1 -1
- package/dist/screen/lib/media-panel.d.ts +2 -2
- package/dist/screen/lib/media-picker.d.ts +2 -2
- package/dist/screen/lib/puck/device-fields.js +1 -1
- package/dist/screen/lib/puck/slot-child-name.js +1 -1
- package/dist/screen/lib/puck/style-clipboard.d.ts +3 -3
- package/dist/screen/lib/puck/style-clipboard.js +1 -1
- package/dist/screen/lib/save-status.d.ts +75 -0
- package/dist/screen/lib/save-status.js +1 -0
- package/dist/screen/lib/screen-parts.d.ts +63 -17
- package/dist/screen/screen.css +8 -0
- package/dist/screen/words.d.ts +62 -5
- package/dist/screen/words.js +1 -1
- package/dist/strings/catalogue.d.ts +3 -3
- package/dist/strings/catalogue.js +1 -1
- package/dist/strings/index.d.ts +3 -3
- package/dist/strings/index.js +1 -1
- package/dist/{types-Dt1CFR1S.d.ts → types-DGyDHiJV.d.ts} +13 -1
- package/dist/{words-CvFnwGSr.d.ts → words-pgIK0I6g.d.ts} +2 -2
- package/package.json +13 -3
- package/dist/chunk-5F3PKNT7.js +0 -1
- package/dist/chunk-64ZRPAWS.js +0 -2
- package/dist/chunk-BDTITTMW.js +0 -1
- package/dist/chunk-DOHYKMMH.js +0 -1
- package/dist/chunk-G24HQEX4.js +0 -62
- package/dist/chunk-LIH5SH6S.js +0 -5
- package/dist/chunk-TBF5CVPA.js +0 -1
- package/dist/chunk-UB4TLWVJ.js +0 -21
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-3QK5R7RR.js";import"../chunk-GXQCZJOP.js";export{ScreenStoreProvider}from"../chunk-BSZ54Q2T.js";import"../chunk-246ONJJH.js";import"../chunk-2GVCAIPX.js";import"../chunk-26OOWIJJ.js";import"../chunk-BRDCD4LK.js";import"../chunk-FGNR22NY.js";import"../chunk-ZE7I3PLX.js";import"../chunk-OGCROOTI.js";import"../chunk-7F52SZOI.js";import"../chunk-MQNBD6AB.js";import"../chunk-BHRC3ASL.js";import"../chunk-6W7WLPZH.js";import"../chunk-4ES5JGGX.js";import"../chunk-IQ5TA7AM.js";import"../chunk-DUVRZ456.js";import"../chunk-3NB2IEXA.js";import"../chunk-KCBEE2MC.js";import"../chunk-DPKWJTNX.js";import"../chunk-2LBXIYF7.js";import"../chunk-2QUWI67X.js";import"../chunk-IYT6NN2J.js";import"../chunk-R2G64ZNC.js";import"../chunk-NCQSBU3O.js";import"../chunk-BSPCSC45.js";import"../chunk-I54UCYOU.js";import"../chunk-GOTN2KY4.js";import"../chunk-R5L2E7JX.js";import"../chunk-HDUAODXJ.js";import"../chunk-RKTF5XLP.js";import"../chunk-THZ46DC5.js";import"../chunk-GMCZXMOV.js";import"../chunk-CLOS6SSX.js";import"../chunk-S4AWJX4Q.js";import"../chunk-ERR437B5.js";import"../chunk-KG7RJWOK.js";import"../chunk-VPFNZ7TB.js";import"../chunk-LOMEH6DG.js";export{NO_DOCUMENT_ADDRESSING}from"../chunk-RLBXE4EU.js";import"../chunk-HNKB2ZYR.js";import"../chunk-V7U33NF2.js";import"../chunk-5545A3PC.js";import"../chunk-ZPXKNO5L.js";import"../chunk-PA3PNTVV.js";import"../chunk-5ZBY24K7.js";import"../chunk-BVN33R76.js";import"../chunk-XTJCKV6Z.js";import"../chunk-KQMML6JM.js";import"../chunk-KCOBHPN6.js";export{EaselSessionProvider,useEaselSession}from"../chunk-O7Q4DDJT.js";export{EFFICIENT_BACKEND,activateEaselSession,backendOf,createEaselSession,currentEaselSession,deactivateEaselSession,efficientClientOpen,isEfficientBackend,provideDefaultBackend,resetAmbientEaselSession,sessionRegistry,setSessionBridgedSite,setSessionDocumentSite}from"../chunk-RSCMJIWS.js";import"../chunk-HQ4VVRIC.js";import"../chunk-CVUMGA2T.js";export{SELECTION_MODE,ScreenCanvasTargetProvider,ScreenPartsProvider,isPinnedFirst,isPinnedLast,isSlotMode,sameInspectorMode,screenSlotsOf,useScreenAdd,useScreenBlockLook,useScreenBlockRules,useScreenBridges,useScreenCanvasDrag,useScreenCanvasFrame,useScreenCanvasHead,useScreenCanvasTarget,useScreenDevices,useScreenDocumentLabel,useScreenDocumentPass,useScreenInspectorPanel,useScreenLeftView,useScreenNodeKeys,useScreenNotify,useScreenOwnerName,useScreenParts,useScreenPickFollowsSelection,useScreenPinned,useScreenSaveSwitch,useScreenStorageNamespace,useScreenStyleClipboard,useStandaloneScreenBridges}from"../chunk-E3PD66A3.js";import"../chunk-PLVEGYK6.js";import"../chunk-R6WTQWAC.js";export{DETACHED_EASEL_HOST,EaselHostContext,EaselHostProvider,createEaselHost,useEaselHost,useHostEscape}from"../chunk-U3JP4VGF.js";import"../chunk-6WY6ZXJG.js";import"../chunk-JTUUIVBZ.js";import"../chunk-KYG35KKJ.js";import"../chunk-TBY3DFKS.js";import"../chunk-PEDDDWSG.js";import"../chunk-OZ72A6MY.js";import"../chunk-4JSBIW5H.js";import"../chunk-GZH4UVDH.js";import"../chunk-K56YDHYQ.js";import"../chunk-KFV7N2DJ.js";import"../chunk-YRLPFZW3.js";import"../chunk-BXMXTO36.js";import"../chunk-EA2HTX37.js";import"../chunk-OSPUG6S6.js";import"../chunk-WK3AFPXY.js";import"../chunk-SOZUYCQZ.js";import"../chunk-4VJATVVR.js";import"../chunk-NDRZP6YR.js";import"../chunk-H6DDIBQ4.js";import"../chunk-QVUVDBGA.js";import"../chunk-Y2G7CU6A.js";import"../chunk-THWO5YVZ.js";import"../chunk-RE4LP46F.js";import"../chunk-MJM6SFD3.js";import"../chunk-2OAZYSWJ.js";import"../chunk-WQASXLXS.js";import"../chunk-66LWADFP.js";import"../chunk-QLD57GBB.js";import"../chunk-FFYXVAAL.js";import"../chunk-546BBOPE.js";import"../chunk-MFIRYGHW.js";import"../chunk-SSORUDHE.js";import"../chunk-O2NLQBFX.js";import"../chunk-67GNT6PF.js";import"../chunk-AWJUYMX7.js";import"../chunk-P2VEMZH5.js";import"../chunk-KRXQM65X.js";import"../chunk-NKB3KVAB.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as AnyDocumentAddressing, a as DocumentAddressing, N as NO_DOCUMENT_ADDRESSING } from '../../host-
|
|
1
|
+
export { A as AnyDocumentAddressing, a as DocumentAddressing, N as NO_DOCUMENT_ADDRESSING } from '../../host-Ud6rLpph.js';
|
|
2
2
|
import './document-contract.js';
|
|
3
3
|
import './session.js';
|
|
4
4
|
import 'react';
|
|
@@ -9,7 +9,7 @@ import '../../types-41704JE4.js';
|
|
|
9
9
|
import '../../resolve-D68pb3Bx.js';
|
|
10
10
|
import '../../plan-xc48tt77.js';
|
|
11
11
|
import './document-switch.js';
|
|
12
|
-
import '../../engine-
|
|
12
|
+
import '../../engine-CvXpFE86.js';
|
|
13
13
|
import '../../edit-lock/index.js';
|
|
14
14
|
import './admin-bridge.js';
|
|
15
15
|
import './backend-error.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'react';
|
|
2
|
-
export { D as DETACHED_EASEL_HOST, E as EaselHost, b as EaselHostAddress, c as EaselHostContext, d as EaselHostProvider, e as EaselMessageType, f as EaselToHostMessage, H as HostPickedMedia, g as HostToEaselMessage, I as InboundHostMessage, S as SectionScreenTarget, h as SendToHost, i as createEaselHost, u as useEaselHost, j as useHostEscape } from '../../host-
|
|
2
|
+
export { D as DETACHED_EASEL_HOST, E as EaselHost, b as EaselHostAddress, c as EaselHostContext, d as EaselHostProvider, e as EaselMessageType, f as EaselToHostMessage, H as HostPickedMedia, g as HostToEaselMessage, I as InboundHostMessage, S as SectionScreenTarget, h as SendToHost, i as createEaselHost, u as useEaselHost, j as useHostEscape } from '../../host-Ud6rLpph.js';
|
|
3
3
|
import '../../blocks/index.js';
|
|
4
4
|
import '../../types-BbkxBdG9.js';
|
|
5
5
|
import '../../data/index.js';
|
|
@@ -17,5 +17,5 @@ import './document-hooks.js';
|
|
|
17
17
|
import './section-template-types.js';
|
|
18
18
|
import './puck/content-tree.js';
|
|
19
19
|
import './document-switch.js';
|
|
20
|
-
import '../../engine-
|
|
20
|
+
import '../../engine-CvXpFE86.js';
|
|
21
21
|
import './admin-bridge.js';
|
|
@@ -48,5 +48,20 @@ declare function editorRootFocus(host: {
|
|
|
48
48
|
}): {
|
|
49
49
|
tabIndex?: number;
|
|
50
50
|
};
|
|
51
|
+
/**
|
|
52
|
+
* ⌘S / Ctrl+S: "save now and stay" (harness PAT-1; 8.0.0). Not with ⌥ or ⇧,
|
|
53
|
+
* which mean other things in other apps.
|
|
54
|
+
*/
|
|
55
|
+
declare function isSaveShortcut(e: KeyboardEvent): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* ⌘S on the editor's keys (8.0.0): heard where its other page-wide keys are
|
|
58
|
+
* (`useEaselKeyTarget`: the page where the editor owns it, its root inside
|
|
59
|
+
* another app) and in the canvas frame, whose keys never leave its document.
|
|
60
|
+
* A field's ⌘S is the editor's too: there is no field-level save, and the
|
|
61
|
+
* browser's own "Save page as" is never what a person in the editor wants, so
|
|
62
|
+
* the press is always taken (`preventDefault`). `onSave` is read when the key
|
|
63
|
+
* is pressed, so a caller may hand a new one each render.
|
|
64
|
+
*/
|
|
65
|
+
declare function useEaselSaveKey(rootRef: RefObject<HTMLElement | null>, canvas: CanvasTarget | null | undefined, onSave: () => void): void;
|
|
51
66
|
|
|
52
|
-
export { editorRootFocus, useEaselKeyTarget, useEaselUndoKeys };
|
|
67
|
+
export { editorRootFocus, isSaveShortcut, useEaselKeyTarget, useEaselSaveKey, useEaselUndoKeys };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{editorRootFocus,useEaselKeyTarget,useEaselUndoKeys}from"../../chunk-
|
|
1
|
+
export{editorRootFocus,isSaveShortcut,useEaselKeyTarget,useEaselSaveKey,useEaselUndoKeys}from"../../chunk-3NB2IEXA.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-KYG35KKJ.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-SOZUYCQZ.js";import"../../chunk-WQASXLXS.js";import"../../chunk-546BBOPE.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-AWJUYMX7.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ComponentType, ReactNode } from 'react';
|
|
3
|
-
import { H as HostPickedMedia, E as EaselHost } from '../../host-
|
|
3
|
+
import { H as HostPickedMedia, E as EaselHost } from '../../host-Ud6rLpph.js';
|
|
4
4
|
import '../../blocks/index.js';
|
|
5
5
|
import '../../types-BbkxBdG9.js';
|
|
6
6
|
import '../../data/index.js';
|
|
@@ -18,7 +18,7 @@ import './document-hooks.js';
|
|
|
18
18
|
import './section-template-types.js';
|
|
19
19
|
import './puck/content-tree.js';
|
|
20
20
|
import './document-switch.js';
|
|
21
|
-
import '../../engine-
|
|
21
|
+
import '../../engine-CvXpFE86.js';
|
|
22
22
|
import './admin-bridge.js';
|
|
23
23
|
|
|
24
24
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { E as EaselHost } from '../../host-
|
|
1
|
+
import { E as EaselHost } from '../../host-Ud6rLpph.js';
|
|
2
2
|
import 'react';
|
|
3
3
|
import '../../blocks/index.js';
|
|
4
4
|
import '../../types-BbkxBdG9.js';
|
|
@@ -17,7 +17,7 @@ import './document-hooks.js';
|
|
|
17
17
|
import './section-template-types.js';
|
|
18
18
|
import './puck/content-tree.js';
|
|
19
19
|
import './document-switch.js';
|
|
20
|
-
import '../../engine-
|
|
20
|
+
import '../../engine-CvXpFE86.js';
|
|
21
21
|
import './admin-bridge.js';
|
|
22
22
|
|
|
23
23
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{DEVICE_FIELD_MARKER,DEVICE_HIDDEN_ATTR,DEVICE_NOTE,deviceField,deviceMetaOf,deviceNote,shownTier,withoutDeviceGate}from"../../../chunk-
|
|
1
|
+
export{DEVICE_FIELD_MARKER,DEVICE_HIDDEN_ATTR,DEVICE_NOTE,deviceField,deviceMetaOf,deviceNote,shownTier,withoutDeviceGate}from"../../../chunk-OGCROOTI.js";import"../../../chunk-7F52SZOI.js";import"../../../chunk-BSPCSC45.js";import"../../../chunk-JTUUIVBZ.js";import"../../../chunk-MFIRYGHW.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{rootRowName,sectionRenameProp,slotChildName,slotChildRenameProp,slotChildRowName}from"../../../chunk-
|
|
1
|
+
export{rootRowName,sectionRenameProp,slotChildName,slotChildRenameProp,slotChildRowName}from"../../../chunk-BHRC3ASL.js";import"../../../chunk-6W7WLPZH.js";import"../../../chunk-DUVRZ456.js";
|
|
@@ -11,7 +11,7 @@ import '../../../types-41704JE4.js';
|
|
|
11
11
|
import '../../../resolve-D68pb3Bx.js';
|
|
12
12
|
import '../../../plan-xc48tt77.js';
|
|
13
13
|
import '../../../watch-BTYOJpQU.js';
|
|
14
|
-
import '../../../types-
|
|
14
|
+
import '../../../types-DGyDHiJV.js';
|
|
15
15
|
import '../../../types-CsgMwHHa.js';
|
|
16
16
|
import '../../../wordFit-7XpmhcaW.js';
|
|
17
17
|
import '../../../edit-lock/index.js';
|
|
@@ -25,7 +25,7 @@ import '../../components/AddSidePanel.js';
|
|
|
25
25
|
import '../section-template-types.js';
|
|
26
26
|
import './content-tree.js';
|
|
27
27
|
import './block-choice.js';
|
|
28
|
-
import '../../../host-
|
|
28
|
+
import '../../../host-Ud6rLpph.js';
|
|
29
29
|
import '../document-contract.js';
|
|
30
30
|
import '../session.js';
|
|
31
31
|
import '../backend-error.js';
|
|
@@ -34,7 +34,7 @@ import '../links/link-filters.js';
|
|
|
34
34
|
import 'efficient-shell/ui';
|
|
35
35
|
import '../document-hooks.js';
|
|
36
36
|
import '../document-switch.js';
|
|
37
|
-
import '../../../engine-
|
|
37
|
+
import '../../../engine-CvXpFE86.js';
|
|
38
38
|
import '../admin-bridge.js';
|
|
39
39
|
import './add-target-types.js';
|
|
40
40
|
import './slot-section-spec.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{copyNodeStyle,nodeStyleRows,planNodePaste,shopFieldKind,siteStyleScope,styleClipboardOf}from"../../../chunk-
|
|
1
|
+
export{copyNodeStyle,nodeStyleRows,planNodePaste,shopFieldKind,siteStyleScope,styleClipboardOf}from"../../../chunk-BRDCD4LK.js";import"../../../chunk-ZE7I3PLX.js";import"../../../chunk-OGCROOTI.js";import"../../../chunk-7F52SZOI.js";import"../../../chunk-MQNBD6AB.js";import"../../../chunk-DUVRZ456.js";import"../../../chunk-BSPCSC45.js";import"../../../chunk-V7U33NF2.js";import"../../../chunk-6WY6ZXJG.js";import"../../../chunk-JTUUIVBZ.js";import"../../../chunk-MFIRYGHW.js";
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { A as AutosaveSnapshot } from '../../engine-CvXpFE86.js';
|
|
2
|
+
import { a as SaveIconState } from '../../types-DGyDHiJV.js';
|
|
3
|
+
import { ScreenSaveStatusWords } from '../words.js';
|
|
4
|
+
import '../../types-CsgMwHHa.js';
|
|
5
|
+
import '../../wordFit-7XpmhcaW.js';
|
|
6
|
+
import 'react';
|
|
7
|
+
import '../../edit-lock/index.js';
|
|
8
|
+
import '../../panelWidths-D9hTLR25.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* WHAT THE SAVE IS DOING, AS ONE ANSWER (8.0.0, card [DESIGN] A Clearer Save
|
|
12
|
+
* In Both Editors, build plan E1).
|
|
13
|
+
*
|
|
14
|
+
* The B3 bar says the save in three places — the save icon (a glyph and its
|
|
15
|
+
* Tooltip), the save menu's status row, and the main button, which is off
|
|
16
|
+
* while the save stops it — and all three read THIS, so they never disagree.
|
|
17
|
+
* One rule for both editors (Lewis, 2026-10-15: the website editor and the
|
|
18
|
+
* email designer are one editor); a layer differs only by the suffix it hands
|
|
19
|
+
* the status row (`ScreenMainAction.status`).
|
|
20
|
+
*
|
|
21
|
+
* Which state, first match wins:
|
|
22
|
+
*
|
|
23
|
+
* locked the document is frozen (its reason), somebody else holds it
|
|
24
|
+
* (the notice's sentence), or a save was refused (the notice below);
|
|
25
|
+
* paused the operator turned auto-save off — their choice outranks a
|
|
26
|
+
* failure, as `saveIndicator`'s precedence has it;
|
|
27
|
+
* offline the browser says so, or the last save could not reach the server;
|
|
28
|
+
* failed a save failed and the backoff will try again;
|
|
29
|
+
* saving / the edit has been off the server for FIVE SECONDS (the autosave's
|
|
30
|
+
* pending `unsaved`): a write is out, or none yet;
|
|
31
|
+
* saved everything else — typing included, because an edit younger
|
|
32
|
+
* than five seconds changes nothing (the 5-second rule), so the
|
|
33
|
+
* icon never flickers while somebody types.
|
|
34
|
+
*/
|
|
35
|
+
interface SaveStatusInput {
|
|
36
|
+
state: AutosaveSnapshot;
|
|
37
|
+
/** Now, by the same clock as the snapshot's `savedAt` and `retryAt`. */
|
|
38
|
+
now: number;
|
|
39
|
+
/** The browser is offline, or the last failed save could not reach the server. */
|
|
40
|
+
offline: boolean;
|
|
41
|
+
/** Why the document may never be written (frozen), or null. */
|
|
42
|
+
readOnlyReason: string | null;
|
|
43
|
+
/** The notice's sentence while somebody else holds the document
|
|
44
|
+
* ("Jane Doe is editing this page"), or null. */
|
|
45
|
+
editing: string | null;
|
|
46
|
+
/** A save was refused (`saveConflict`). */
|
|
47
|
+
conflict: boolean;
|
|
48
|
+
/** "Not saving — see the notice below" (`screen.bar.notSaving`). */
|
|
49
|
+
notSaving: string;
|
|
50
|
+
}
|
|
51
|
+
interface SaveStatus {
|
|
52
|
+
state: SaveIconState;
|
|
53
|
+
/** The state in words: the icon's Tooltip and name. */
|
|
54
|
+
label: string;
|
|
55
|
+
/** The menu's status row: the words, and the layer's suffix after " · "
|
|
56
|
+
* while the save is calm (saved, saving); trouble is said alone. */
|
|
57
|
+
line: (suffix: string | null | undefined) => string;
|
|
58
|
+
/** Why the main button is off, when it is the save (or the lock) that stops
|
|
59
|
+
* it; null when nothing does. */
|
|
60
|
+
blocked: string | null;
|
|
61
|
+
/** "Save now" says "Retry now": a save failed, or the editor is offline. */
|
|
62
|
+
retry: boolean;
|
|
63
|
+
}
|
|
64
|
+
declare function describeSave(input: SaveStatusInput, words: ScreenSaveStatusWords): SaveStatus;
|
|
65
|
+
/**
|
|
66
|
+
* Now, by the wall clock, moving once a second while `ticking` — so "Saved 2
|
|
67
|
+
* seconds ago" and "trying again in 15 s" stay true while they are on screen.
|
|
68
|
+
* Only the small part that says them re-renders; still otherwise.
|
|
69
|
+
*/
|
|
70
|
+
declare function useNow(ticking: boolean): number;
|
|
71
|
+
/** Whether the browser says it is offline, kept current by its `online` and
|
|
72
|
+
* `offline` events. False where there is no browser. */
|
|
73
|
+
declare function useBrowserOffline(): boolean;
|
|
74
|
+
|
|
75
|
+
export { type SaveStatus, type SaveStatusInput, describeSave, useBrowserOffline, useNow };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{describeSave,useBrowserOffline,useNow}from"../../chunk-RKTF5XLP.js";
|
|
@@ -2,7 +2,7 @@ import * as react from 'react';
|
|
|
2
2
|
import { ReactNode, MouseEvent, ComponentType } from 'react';
|
|
3
3
|
import { Data } from '../../blocks/index.js';
|
|
4
4
|
import { C as CanvasTarget } from '../../watch-BTYOJpQU.js';
|
|
5
|
-
import { D as DeviceOption } from '../../types-
|
|
5
|
+
import { D as DeviceOption } from '../../types-DGyDHiJV.js';
|
|
6
6
|
import { P as Place } from '../../types-41704JE4.js';
|
|
7
7
|
import { M as MeasuredCanvas, C as CanvasDragModel } from '../../CanvasDragLayer-CLb7j-CZ.js';
|
|
8
8
|
import { E as EaselContextMenuItem } from '../../types-BsyPh6EW.js';
|
|
@@ -10,7 +10,7 @@ import { a as EaselRailItem } from '../../types-CsgMwHHa.js';
|
|
|
10
10
|
import { StyleRow } from '../../style-clipboard/index.js';
|
|
11
11
|
import { T as TreeRowMark } from '../../types-BLRK6_JO.js';
|
|
12
12
|
import { AddKey } from '../components/AddSidePanel.js';
|
|
13
|
-
import { k as AnyScreenTarget } from '../../host-
|
|
13
|
+
import { k as AnyScreenTarget } from '../../host-Ud6rLpph.js';
|
|
14
14
|
import { HostProduct } from './host-chrome.js';
|
|
15
15
|
import { EaselSession } from './session.js';
|
|
16
16
|
import { AddTarget } from './puck/add-target-types.js';
|
|
@@ -30,7 +30,7 @@ import './section-template-types.js';
|
|
|
30
30
|
import './puck/block-choice.js';
|
|
31
31
|
import './document-contract.js';
|
|
32
32
|
import './document-switch.js';
|
|
33
|
-
import '../../engine-
|
|
33
|
+
import '../../engine-CvXpFE86.js';
|
|
34
34
|
import './admin-bridge.js';
|
|
35
35
|
import './backend-error.js';
|
|
36
36
|
import './links/link-filters.js';
|
|
@@ -355,6 +355,39 @@ interface ScreenTreeFolds extends ScreenTreeRows {
|
|
|
355
355
|
isCollapsed: (id: string) => boolean;
|
|
356
356
|
toggleCollapse: (id: string) => void;
|
|
357
357
|
}
|
|
358
|
+
/**
|
|
359
|
+
* A layer's main action, as data (`ScreenBridges.mainAction`, 8.0.0). The
|
|
360
|
+
* screen draws it; the layer draws nothing. Words are the layer's, already in
|
|
361
|
+
* its language.
|
|
362
|
+
*/
|
|
363
|
+
interface ScreenMainAction {
|
|
364
|
+
/** The main half's word: "Publish", "Save and close". */
|
|
365
|
+
label: string;
|
|
366
|
+
/** Its Tooltip while it can be pressed ("Saves your changes and goes back to
|
|
367
|
+
* the campaign. Nothing is sent."). */
|
|
368
|
+
tooltip?: string;
|
|
369
|
+
/** What a press does. */
|
|
370
|
+
onPress: () => void;
|
|
371
|
+
/**
|
|
372
|
+
* The quiet form, while there is nothing for the action to do: the main
|
|
373
|
+
* half becomes secondary, with a check glyph, these words, and off with
|
|
374
|
+
* `reason` ("Published" / "Everything is live"). The chevron still opens.
|
|
375
|
+
* Absent or null: never quiet.
|
|
376
|
+
*/
|
|
377
|
+
quiet?: {
|
|
378
|
+
label: string;
|
|
379
|
+
reason: string;
|
|
380
|
+
} | null;
|
|
381
|
+
/** A reason of the layer's own to turn the main half off, besides the
|
|
382
|
+
* screen's (a lock, a refused save, offline, a failed save). */
|
|
383
|
+
disabledReason?: string | null;
|
|
384
|
+
/** What the menu's status row says after the save ("Saved 2 seconds ago ·
|
|
385
|
+
* Changes not live yet"): "Changes not live yet", "Everything is live",
|
|
386
|
+
* "Never published", "Draft, nothing is sent". */
|
|
387
|
+
status?: string | null;
|
|
388
|
+
/** The action is running: the main half shows the shell's spinner. */
|
|
389
|
+
busy?: boolean;
|
|
390
|
+
}
|
|
358
391
|
/** What a layer's bridges give back for the screen to place. */
|
|
359
392
|
interface ScreenBridges {
|
|
360
393
|
/** A row under the Add panel's tiles, for something that is not a block.
|
|
@@ -385,15 +418,17 @@ interface ScreenBridges {
|
|
|
385
418
|
sectionPressed?: (node: ScreenNode | undefined) => void;
|
|
386
419
|
/**
|
|
387
420
|
* The layer's own controls in the top bar's right cluster. The screen draws
|
|
388
|
-
* that cluster as the save
|
|
389
|
-
*
|
|
390
|
-
*
|
|
391
|
-
*
|
|
392
|
-
* nothing to offer just now
|
|
421
|
+
* that cluster as the save icon and the main button (8.0.0; it was the save
|
|
422
|
+
* pill, Refresh and the main button); a layer has two places in it.
|
|
423
|
+
* `barLead` stands FIRST among the actions, right after the save icon:
|
|
424
|
+
* something done with the whole document that only the layer has. What
|
|
425
|
+
* comes back is placed as it is, and a layer with nothing to offer just now
|
|
426
|
+
* returns nothing.
|
|
393
427
|
*/
|
|
394
428
|
barLead?: () => ReactNode;
|
|
395
|
-
/** …and `barTrail` stands
|
|
396
|
-
*
|
|
429
|
+
/** …and `barTrail` stands just before the main button: a way out to where
|
|
430
|
+
* the document is read (the website's Preview, the email designer's "Send
|
|
431
|
+
* a test email"). */
|
|
397
432
|
barTrail?: () => ReactNode;
|
|
398
433
|
/**
|
|
399
434
|
* …and `barMain` IS the main button, in its place at the end of the cluster
|
|
@@ -404,6 +439,18 @@ interface ScreenBridges {
|
|
|
404
439
|
* own button, as it always has.
|
|
405
440
|
*/
|
|
406
441
|
barMain?: () => ReactNode;
|
|
442
|
+
/**
|
|
443
|
+
* THE MAIN ACTION, AS DATA (8.0.0, card [DESIGN] A Clearer Save In Both
|
|
444
|
+
* Editors): what the layer's main button says and does, for the screen to
|
|
445
|
+
* draw as the shell's `SplitButton` with the save menu on its chevron. The
|
|
446
|
+
* website's is Publish (quiet as "Published" while everything is live); the
|
|
447
|
+
* email designer's is Save and close. The screen turns the main half off,
|
|
448
|
+
* with the reason, while the document is locked, frozen, refused, offline or
|
|
449
|
+
* holding a failed save; the chevron always opens. Handed back each render,
|
|
450
|
+
* so it follows the layer's state. Wins over `barMain`; with neither, the
|
|
451
|
+
* screen's own Done (`screen.done`) stands in the same split button.
|
|
452
|
+
*/
|
|
453
|
+
mainAction?: ScreenMainAction | null;
|
|
407
454
|
/**
|
|
408
455
|
* The layer's own buttons in the rail. The screen draws the rail as Add, its
|
|
409
456
|
* own Layers and the host's Media library; a layer has two places in it.
|
|
@@ -1230,12 +1277,11 @@ interface ScreenParts {
|
|
|
1230
1277
|
* plain functions, and handed here for the reason the rules are. */
|
|
1231
1278
|
pinned?: ScreenPinnedNodes;
|
|
1232
1279
|
/**
|
|
1233
|
-
*
|
|
1234
|
-
*
|
|
1235
|
-
* layer whose editor always saves
|
|
1236
|
-
*
|
|
1237
|
-
*
|
|
1238
|
-
* website has it.
|
|
1280
|
+
* May the operator pause the autosave (0.103.0)? Since 8.0.0 the switch is
|
|
1281
|
+
* the save menu's Auto-save check box (the main button's ▾), where it was
|
|
1282
|
+
* the save pill; a layer whose editor always saves says false, and the menu
|
|
1283
|
+
* offers Save now alone. "Retry now" stays after a failed save either way.
|
|
1284
|
+
* Absent, true: the switch, as both editors have it.
|
|
1239
1285
|
*/
|
|
1240
1286
|
saveSwitch?: boolean;
|
|
1241
1287
|
/**
|
|
@@ -1415,4 +1461,4 @@ declare function useScreenCanvasTarget(): CanvasTarget | null;
|
|
|
1415
1461
|
* engine's plain rows for the selection. */
|
|
1416
1462
|
declare function useScreenInspectorPanel(): ComponentType<ScreenInspectorPanelProps>;
|
|
1417
1463
|
|
|
1418
|
-
export { type NodeDefaults, SELECTION_MODE, type ScreenAdd, type ScreenBlockLook, type ScreenBlockRules, type ScreenBridges, type ScreenCanvas, type ScreenCanvasDrag, type ScreenCanvasDragContext, type ScreenCanvasHeadProps, ScreenCanvasTargetProvider, type ScreenDevices, type ScreenDocumentOps, type ScreenDragItem, type ScreenInspector, type ScreenInspectorMode, type ScreenInspectorPanelProps, type ScreenLeftPanel, type ScreenLeftView, type ScreenLeftViewFrame, type ScreenLeftViewRules, type ScreenMenuRows, type ScreenNewNode, type ScreenNode, type ScreenNodeActions, type ScreenNodeLevel, type ScreenNodeMaker, type ScreenPartMode, type ScreenParts, ScreenPartsProvider, type ScreenPinnedBand, type ScreenPinnedNodes, type ScreenRailItem, type ScreenSelection, type ScreenSelector, type ScreenSlot, type ScreenSlotAction, type ScreenSlotMode, type ScreenStyleClipboard, type ScreenStyleDocument, type ScreenStylePastePlan, type ScreenToastExtra, type ScreenTree, type ScreenTreeFolds, type ScreenTreeRows, isPinnedFirst, isPinnedLast, isSlotMode, sameInspectorMode, screenSlotsOf, useScreenAdd, useScreenBlockLook, useScreenBlockRules, useScreenBridges, useScreenCanvasDrag, useScreenCanvasFrame, useScreenCanvasHead, useScreenCanvasTarget, useScreenDevices, useScreenDocumentLabel, useScreenDocumentPass, useScreenInspectorPanel, useScreenLeftView, useScreenNodeKeys, useScreenNotify, useScreenOwnerName, useScreenParts, useScreenPickFollowsSelection, useScreenPinned, useScreenSaveSwitch, useScreenStorageNamespace, useScreenStyleClipboard, useStandaloneScreenBridges };
|
|
1464
|
+
export { type NodeDefaults, SELECTION_MODE, type ScreenAdd, type ScreenBlockLook, type ScreenBlockRules, type ScreenBridges, type ScreenCanvas, type ScreenCanvasDrag, type ScreenCanvasDragContext, type ScreenCanvasHeadProps, ScreenCanvasTargetProvider, type ScreenDevices, type ScreenDocumentOps, type ScreenDragItem, type ScreenInspector, type ScreenInspectorMode, type ScreenInspectorPanelProps, type ScreenLeftPanel, type ScreenLeftView, type ScreenLeftViewFrame, type ScreenLeftViewRules, type ScreenMainAction, type ScreenMenuRows, type ScreenNewNode, type ScreenNode, type ScreenNodeActions, type ScreenNodeLevel, type ScreenNodeMaker, type ScreenPartMode, type ScreenParts, ScreenPartsProvider, type ScreenPinnedBand, type ScreenPinnedNodes, type ScreenRailItem, type ScreenSelection, type ScreenSelector, type ScreenSlot, type ScreenSlotAction, type ScreenSlotMode, type ScreenStyleClipboard, type ScreenStyleDocument, type ScreenStylePastePlan, type ScreenToastExtra, type ScreenTree, type ScreenTreeFolds, type ScreenTreeRows, isPinnedFirst, isPinnedLast, isSlotMode, sameInspectorMode, screenSlotsOf, useScreenAdd, useScreenBlockLook, useScreenBlockRules, useScreenBridges, useScreenCanvasDrag, useScreenCanvasFrame, useScreenCanvasHead, useScreenCanvasTarget, useScreenDevices, useScreenDocumentLabel, useScreenDocumentPass, useScreenInspectorPanel, useScreenLeftView, useScreenNodeKeys, useScreenNotify, useScreenOwnerName, useScreenParts, useScreenPickFollowsSelection, useScreenPinned, useScreenSaveSwitch, useScreenStorageNamespace, useScreenStyleClipboard, useStandaloneScreenBridges };
|
package/dist/screen/screen.css
CHANGED
|
@@ -812,3 +812,11 @@
|
|
|
812
812
|
align-items: center;
|
|
813
813
|
padding-top: 12px;
|
|
814
814
|
}
|
|
815
|
+
|
|
816
|
+
/* The save menu's "Save now ⌘S" row (8.0.0): the word and the shell's Kbd
|
|
817
|
+
badge on one line, apart. Layout only; both are the shell's to draw. */
|
|
818
|
+
.es-savemenu-row {
|
|
819
|
+
display: inline-flex;
|
|
820
|
+
align-items: center;
|
|
821
|
+
gap: 12px;
|
|
822
|
+
}
|
package/dist/screen/words.d.ts
CHANGED
|
@@ -107,19 +107,74 @@ type ScreenLeaveWords = {
|
|
|
107
107
|
type ScreenBarWords = {
|
|
108
108
|
undo: string;
|
|
109
109
|
redo: string;
|
|
110
|
-
/** The button that reloads the canvas alone
|
|
110
|
+
/** The icon button that reloads the canvas alone (its accessible name), and
|
|
111
|
+
* its tooltip (8.0.0: "Reload the preview", where it was the word button
|
|
112
|
+
* "Refresh"). */
|
|
111
113
|
refresh: string;
|
|
112
114
|
refreshTip: string;
|
|
113
|
-
/** The
|
|
115
|
+
/** The save icon's words while a save was refused and the notice under the
|
|
116
|
+
* bar says why. */
|
|
114
117
|
notSaving: string;
|
|
115
|
-
/**
|
|
118
|
+
/** The save menu's "Save now" after a failed save or while offline: try now. */
|
|
116
119
|
retry: string;
|
|
117
|
-
/**
|
|
120
|
+
/** @deprecated Not drawn since 8.0.0: the pill's switch left the bar for
|
|
121
|
+
* the save menu's Auto-save check box (`autoSave`). Kept so a host that
|
|
122
|
+
* still says it compiles. */
|
|
118
123
|
autoSaveOff: string;
|
|
124
|
+
/** @deprecated Not drawn since 8.0.0 (see `autoSaveOff`). */
|
|
119
125
|
autoSaveOn: string;
|
|
120
126
|
/** The rail's accessible name: the left panel's views. */
|
|
121
127
|
views: string;
|
|
128
|
+
/** The main button's chevron, and the menu it opens (8.0.0). */
|
|
129
|
+
saveOptions: string;
|
|
130
|
+
/** The menu's check box: ticked while the autosave runs (8.0.0). */
|
|
131
|
+
autoSave: string;
|
|
132
|
+
/** The menu's "write what is held, now" — also ⌘S (8.0.0). */
|
|
133
|
+
saveNow: string;
|
|
122
134
|
};
|
|
135
|
+
/**
|
|
136
|
+
* WHAT THE SAVE SAYS (8.0.0, card [DESIGN] A Clearer Save In Both Editors):
|
|
137
|
+
* the save icon's tooltip and the first part of the save menu's status row,
|
|
138
|
+
* one sentence per state, the same in both editors; and why the main button is
|
|
139
|
+
* off when it is the save that stops it. No count anywhere: nothing counts
|
|
140
|
+
* held changes.
|
|
141
|
+
*/
|
|
142
|
+
type ScreenSaveStatusWords = {
|
|
143
|
+
/** Saved, with the time since the last save landed, in whole seconds. */
|
|
144
|
+
savedAgo: (v: {
|
|
145
|
+
seconds: number;
|
|
146
|
+
}) => string;
|
|
147
|
+
/** Saved, with no save landed yet: an untouched document. */
|
|
148
|
+
saved: string;
|
|
149
|
+
/** A write is out for an edit five seconds old. */
|
|
150
|
+
saving: string;
|
|
151
|
+
/** An edit five seconds old, with no write out yet. */
|
|
152
|
+
pending: string;
|
|
153
|
+
/** A save failed; the next try is in `seconds`… */
|
|
154
|
+
failedIn: (v: {
|
|
155
|
+
seconds: number;
|
|
156
|
+
}) => string;
|
|
157
|
+
/** …or at a time the screen does not know. */
|
|
158
|
+
failedSoon: string;
|
|
159
|
+
/** The browser is offline, or the server could not be reached. */
|
|
160
|
+
offline: string;
|
|
161
|
+
/** Auto-save is paused and an edit is held… */
|
|
162
|
+
pausedHeld: string;
|
|
163
|
+
/** …and with nothing held. */
|
|
164
|
+
paused: string;
|
|
165
|
+
/** Somebody else holds the document; `editing` is the notice's sentence
|
|
166
|
+
* ("Jane Doe is editing this page"). */
|
|
167
|
+
locked: (v: {
|
|
168
|
+
editing: string;
|
|
169
|
+
}) => string;
|
|
170
|
+
/** The main button is off: offline… */
|
|
171
|
+
blockedOffline: string;
|
|
172
|
+
/** …a save failed and its edit is still held… */
|
|
173
|
+
blockedFailed: string;
|
|
174
|
+
/** …a save was refused. */
|
|
175
|
+
blockedConflict: string;
|
|
176
|
+
};
|
|
177
|
+
declare const DEFAULT_SCREEN_SAVE_STATUS_WORDS: ScreenSaveStatusWords;
|
|
123
178
|
/**
|
|
124
179
|
* THE RIGHT-CLICK MENU'S OWN ROWS BESIDES A NODE'S (3.1.0): the page's (Undo,
|
|
125
180
|
* Redo, Add section, Collapse all layers), a text box's Select all, the line a
|
|
@@ -215,6 +270,8 @@ type ScreenWords = {
|
|
|
215
270
|
leave: ScreenLeaveWords;
|
|
216
271
|
/** The top bar's own words. */
|
|
217
272
|
bar: ScreenBarWords;
|
|
273
|
+
/** What the save says: the save icon and the save menu's status row (8.0.0). */
|
|
274
|
+
saveStatus: ScreenSaveStatusWords;
|
|
218
275
|
/** The right-click menu's rows besides a node's. */
|
|
219
276
|
menu: ScreenMenuWords;
|
|
220
277
|
/** The Layers tree: the rail's item and the panel's title. */
|
|
@@ -283,4 +340,4 @@ type ScreenWords = {
|
|
|
283
340
|
};
|
|
284
341
|
declare const DEFAULT_SCREEN_WORDS: ScreenWords;
|
|
285
342
|
|
|
286
|
-
export { DEFAULT_SCREEN_ADD_WORDS, DEFAULT_SCREEN_WORDS, type ScreenAddWords, type ScreenBarWords, type ScreenLeaveWords, type ScreenMenuWords, type ScreenWords };
|
|
343
|
+
export { DEFAULT_SCREEN_ADD_WORDS, DEFAULT_SCREEN_SAVE_STATUS_WORDS, DEFAULT_SCREEN_WORDS, type ScreenAddWords, type ScreenBarWords, type ScreenLeaveWords, type ScreenMenuWords, type ScreenSaveStatusWords, type ScreenWords };
|
package/dist/screen/words.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{DEFAULT_SCREEN_ADD_WORDS,DEFAULT_SCREEN_WORDS}from"../chunk-
|
|
1
|
+
export{DEFAULT_SCREEN_ADD_WORDS,DEFAULT_SCREEN_SAVE_STATUS_WORDS,DEFAULT_SCREEN_WORDS}from"../chunk-JTUUIVBZ.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as SaveWords } from '../words-
|
|
1
|
+
import { S as SaveWords } from '../words-pgIK0I6g.js';
|
|
2
2
|
import { N as NoticeWords, C as ChromeWords } from '../words-C1U_dLBh.js';
|
|
3
3
|
import { C as CopyWords } from '../words-BAnsDT16.js';
|
|
4
4
|
import { D as DragWords } from '../words-BDignMl_.js';
|
|
@@ -12,12 +12,12 @@ export { ScreenAddWords } from '../screen/words.js';
|
|
|
12
12
|
import { S as StyleClipboardWords } from '../words-CnnHb9jo.js';
|
|
13
13
|
import { T as TextStylesWords } from '../words-CRYvAiHX.js';
|
|
14
14
|
import { T as TreeWords } from '../words-Cl9xMUYY.js';
|
|
15
|
-
import '../types-
|
|
15
|
+
import '../types-DGyDHiJV.js';
|
|
16
16
|
import '../types-CsgMwHHa.js';
|
|
17
17
|
import '../wordFit-7XpmhcaW.js';
|
|
18
18
|
import 'react';
|
|
19
19
|
import '../panelWidths-D9hTLR25.js';
|
|
20
|
-
import '../engine-
|
|
20
|
+
import '../engine-CvXpFE86.js';
|
|
21
21
|
import '../markup/index.js';
|
|
22
22
|
import '../buckets-Tj-nkBpg.js';
|
|
23
23
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{DEFAULT_EASEL_STRINGS,mergeEaselStrings}from"../chunk-
|
|
1
|
+
export{DEFAULT_EASEL_STRINGS,mergeEaselStrings}from"../chunk-SQMUAXUS.js";import"../chunk-M6F6LS3H.js";import"../chunk-ZAOM6PFH.js";import"../chunk-6WY6ZXJG.js";import"../chunk-JTUUIVBZ.js";import"../chunk-TBY3DFKS.js";import"../chunk-K56YDHYQ.js";import"../chunk-KFV7N2DJ.js";import"../chunk-WK3AFPXY.js";import"../chunk-H6DDIBQ4.js";import"../chunk-Y2G7CU6A.js";import"../chunk-RE4LP46F.js";import"../chunk-2OAZYSWJ.js";import"../chunk-AUT242JK.js";import"../chunk-FFYXVAAL.js";import"../chunk-546BBOPE.js";import"../chunk-O2NLQBFX.js";
|
package/dist/strings/index.d.ts
CHANGED
|
@@ -10,18 +10,18 @@ export { LockWords } from '../edit-lock/index.js';
|
|
|
10
10
|
export { N as NodeMenuWords } from '../words-DMG4dYq2.js';
|
|
11
11
|
export { P as PanelWords } from '../words-zH1H0WFw.js';
|
|
12
12
|
export { P as PickWords } from '../words-is_Vy6hn.js';
|
|
13
|
-
export { S as SaveWords } from '../words-
|
|
13
|
+
export { S as SaveWords } from '../words-pgIK0I6g.js';
|
|
14
14
|
export { ScreenAddWords, ScreenWords } from '../screen/words.js';
|
|
15
15
|
export { S as StyleClipboardWords } from '../words-CnnHb9jo.js';
|
|
16
16
|
export { T as TextStylesWords } from '../words-CRYvAiHX.js';
|
|
17
17
|
export { T as TreeWords } from '../words-Cl9xMUYY.js';
|
|
18
18
|
import '../markup/index.js';
|
|
19
19
|
import '../buckets-Tj-nkBpg.js';
|
|
20
|
-
import '../types-
|
|
20
|
+
import '../types-DGyDHiJV.js';
|
|
21
21
|
import '../types-CsgMwHHa.js';
|
|
22
22
|
import '../wordFit-7XpmhcaW.js';
|
|
23
23
|
import '../panelWidths-D9hTLR25.js';
|
|
24
|
-
import '../engine-
|
|
24
|
+
import '../engine-CvXpFE86.js';
|
|
25
25
|
|
|
26
26
|
interface EaselStringsProviderProps {
|
|
27
27
|
/**
|
package/dist/strings/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{DEFAULT_EASEL_STRINGS as r,mergeEaselStrings as n}from"../chunk-
|
|
1
|
+
import{DEFAULT_EASEL_STRINGS as r,mergeEaselStrings as n}from"../chunk-SQMUAXUS.js";export{DEFAULT_EASEL_STRINGS,mergeEaselStrings}from"../chunk-SQMUAXUS.js";import"../chunk-M6F6LS3H.js";import"../chunk-ZAOM6PFH.js";import"../chunk-6WY6ZXJG.js";import"../chunk-JTUUIVBZ.js";import"../chunk-TBY3DFKS.js";import"../chunk-K56YDHYQ.js";import"../chunk-KFV7N2DJ.js";import"../chunk-WK3AFPXY.js";import"../chunk-H6DDIBQ4.js";import"../chunk-Y2G7CU6A.js";import"../chunk-RE4LP46F.js";import"../chunk-2OAZYSWJ.js";import"../chunk-AUT242JK.js";import"../chunk-FFYXVAAL.js";import"../chunk-546BBOPE.js";import{stringsContext as o}from"../chunk-MFIRYGHW.js";import"../chunk-O2NLQBFX.js";import{useContext as t,useMemo as c}from"react";import{jsx as i}from"react/jsx-runtime";function s({value:s,locale:u,children:m}){const e=o(),p=t(e),h=p?.strings??r,j=u??p?.locale??"en",k=c(()=>({strings:n(h,s),locale:j}),[h,s,j]);/* @__PURE__ */
|
|
2
2
|
return i(e.Provider,{value:k,children:m})}function u(){return t(o())?.strings??r}function m(){return t(o())?.locale??"en"}export{s as EaselStringsProvider,m as useEaselLocale,u as useEaselStrings};
|
|
@@ -23,6 +23,9 @@ type TopBarClusterProps = {
|
|
|
23
23
|
type EaselIconButtonProps = {
|
|
24
24
|
/** Tooltip AND accessible name. An icon-only button has no other. */
|
|
25
25
|
label: string;
|
|
26
|
+
/** The tooltip, where it says more than the name ("Reload the preview
|
|
27
|
+
* (keeps your place)", 8.0.0). Absent: the tooltip is `label`. */
|
|
28
|
+
tip?: ReactNode;
|
|
26
29
|
onClick?: () => void;
|
|
27
30
|
disabled?: boolean;
|
|
28
31
|
/**
|
|
@@ -207,5 +210,14 @@ type EditNoticeProps = {
|
|
|
207
210
|
/** Throw this screen away and load what is saved — the only action that discards work. */
|
|
208
211
|
onReload: () => void;
|
|
209
212
|
};
|
|
213
|
+
/** The seven states of the save icon (8.0.0). */
|
|
214
|
+
type SaveIconState = 'saved' | 'saving' | 'pending' | 'failed' | 'offline' | 'paused' | 'locked';
|
|
215
|
+
/** The tone a save state is drawn in: the chrome's tokens, never a colour. */
|
|
216
|
+
type SaveIconTone = 'muted' | 'danger' | 'warning';
|
|
217
|
+
type SaveIconProps = {
|
|
218
|
+
state: SaveIconState;
|
|
219
|
+
/** The state in words: the Tooltip, and the icon's accessible name. */
|
|
220
|
+
label: string;
|
|
221
|
+
};
|
|
210
222
|
|
|
211
|
-
export type { DeviceOption as D, EaselIconButtonProps as E, InspectorHeadProps as I, MediaPanelHeadProps as M, PanelResizeHandleProps as P, RailWordsShown as R, SaveTone as S, TopBarProps as T,
|
|
223
|
+
export type { DeviceOption as D, EaselIconButtonProps as E, InspectorHeadProps as I, MediaPanelHeadProps as M, PanelResizeHandleProps as P, RailWordsShown as R, SaveTone as S, TopBarProps as T, SaveIconState as a, TopBarClusterProps as b, TopBarRailProps as c, DeviceSwitchProps as d, SaveStateProps as e, SaveStateToggleProps as f, SaveIconProps as g, SaveIconTone as h, InspectorIconButtonProps as i, InspectorUpLevelProps as j, MediaPickKind as k, EditNoticeProps as l };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as SaveTone } from './types-
|
|
2
|
-
import { A as AutosaveSnapshot } from './engine-
|
|
1
|
+
import { S as SaveTone } from './types-DGyDHiJV.js';
|
|
2
|
+
import { A as AutosaveSnapshot } from './engine-CvXpFE86.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* What the save pill says, for both editors — ONE copy.
|