efficient-easel 0.105.1 → 1.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 +103 -29
- package/dist/{LinkPicker-W2Rtxetz.d.ts → LinkPicker-hPEr1MJx.d.ts} +6 -4
- package/dist/autosave/index.d.ts +5 -5
- package/dist/chrome/chrome.css +50 -273
- package/dist/chrome/index.d.ts +61 -56
- package/dist/chrome/index.js +1 -1
- package/dist/chunk-2GVCAIPX.js +1 -0
- package/dist/chunk-4GNPKHV4.js +64 -0
- package/dist/chunk-5545A3PC.js +4 -0
- package/dist/chunk-7SQF6LZL.js +1 -0
- package/dist/chunk-BXMXTO36.js +1 -0
- package/dist/{chunk-NYKIQJT2.js → chunk-CKEPQNSQ.js} +1 -1
- package/dist/chunk-DJMMTWFP.js +1 -0
- package/dist/{chunk-PQXIFBDY.js → chunk-E2O2MRZR.js} +1 -1
- package/dist/chunk-EA2HTX37.js +5 -0
- package/dist/{chunk-SARZN4M7.js → chunk-FEK3S6HN.js} +1 -1
- package/dist/chunk-FPAVNX3Y.js +6 -0
- package/dist/chunk-HMJS344F.js +1 -0
- package/dist/chunk-JLTZQ4US.js +1 -0
- package/dist/chunk-JMGPPXNQ.js +24 -0
- package/dist/chunk-K56YDHYQ.js +1 -0
- package/dist/chunk-LOMEH6DG.js +1 -0
- package/dist/{chunk-V4LF7D4F.js → chunk-MAEXP3KE.js} +1 -1
- package/dist/chunk-MJM6SFD3.js +3 -0
- package/dist/chunk-NLRW4BGG.js +8 -0
- package/dist/chunk-OJAJVH7S.js +5 -0
- package/dist/chunk-ONRYLR2D.js +2 -0
- package/dist/chunk-ORR3Q4WV.js +1 -0
- package/dist/chunk-OTEXGJDU.js +5 -0
- package/dist/chunk-P2VEMZH5.js +1 -0
- package/dist/chunk-PT6V53OO.js +1 -0
- package/dist/chunk-PYCLHOSA.js +9 -0
- package/dist/chunk-Q27BB5ZC.js +14 -0
- package/dist/chunk-QLD57GBB.js +6 -0
- package/dist/{chunk-NWIW7AWH.js → chunk-QMNML7XH.js} +1 -1
- package/dist/chunk-QR4DLZ3P.js +5 -0
- package/dist/chunk-TJ7YIRWQ.js +21 -0
- package/dist/{chunk-3P6AMTOS.js → chunk-VPFNZ7TB.js} +1 -1
- package/dist/chunk-W3XX2CNW.js +16 -0
- package/dist/chunk-X6DQWK2C.js +1 -0
- package/dist/chunk-XWR5YVA7.js +9 -0
- package/dist/chunk-YABL4EWX.js +7 -0
- package/dist/chunk-ZNNATBDC.js +1 -0
- package/dist/chunk-ZP4G3X44.js +4 -0
- package/dist/copy/copy.css +66 -177
- package/dist/copy/index.d.ts +0 -2
- package/dist/copy/index.js +31 -32
- package/dist/drag/drag.css +31 -11
- package/dist/drag/index.d.ts +10 -0
- package/dist/drag/index.js +1 -1
- package/dist/easel/index.d.ts +10 -1
- package/dist/easel/index.js +1 -1
- package/dist/fields/fields.css +35 -304
- package/dist/fields/index.d.ts +87 -95
- package/dist/fields/index.js +1 -1
- package/dist/gold/gold.css +3 -3
- package/dist/gold/index.d.ts +6 -5
- package/dist/gold/index.js +1 -1
- package/dist/{host-BQ_b9Qzk.d.ts → host-CiuzZJXj.d.ts} +11 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/menu/index.d.ts +49 -93
- package/dist/menu/index.js +1 -1
- package/dist/menu/menu.css +37 -246
- package/dist/node-ops/index.d.ts +1 -1
- package/dist/panel/index.d.ts +46 -72
- package/dist/panel/index.js +17 -18
- package/dist/panel/panel.css +143 -372
- package/dist/pick/index.d.ts +52 -33
- package/dist/pick/index.js +7 -7
- package/dist/pick/pick.css +19 -150
- package/dist/rail/index.d.ts +48 -90
- package/dist/rail/index.js +1 -1
- package/dist/rail/rail.css +21 -108
- package/dist/screen/components/AddBlockRow.d.ts +8 -2
- package/dist/screen/components/AddBlockRow.js +1 -1
- package/dist/screen/components/AddChildRow.d.ts +4 -3
- package/dist/screen/components/AddChildRow.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 +31 -9
- 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.d.ts +2 -2
- package/dist/screen/components/ScreenDocumentContext.js +1 -1
- package/dist/screen/components/ScreenMount.d.ts +8 -8
- package/dist/screen/components/ScreenMount.js +1 -1
- package/dist/screen/components/ScreenStoreProvider.d.ts +8 -8
- package/dist/screen/components/ScreenStoreProvider.js +1 -1
- package/dist/screen/components/SectionScreenShell.js +16 -16
- package/dist/screen/components/SidePanelHead.d.ts +4 -2
- package/dist/screen/components/SidePanelHead.js +1 -1
- package/dist/screen/components/UiIcon.d.ts +10 -26
- package/dist/screen/components/UiIcon.js +2 -1
- package/dist/screen/components/panel-widths.d.ts +15 -1
- package/dist/screen/components/panel-widths.js +1 -1
- package/dist/screen/components/usePartBridge.d.ts +8 -8
- package/dist/screen/components/usePartBridge.js +1 -1
- package/dist/screen/index.d.ts +9 -9
- package/dist/screen/index.js +1 -1
- package/dist/screen/lib/admin-bridge.d.ts +1 -1
- package/dist/screen/lib/admin-bridge.js +1 -1
- package/dist/screen/lib/chrome-theme.d.ts +20 -12
- package/dist/screen/lib/chrome-theme.js +1 -1
- package/dist/screen/lib/document-addressing.d.ts +2 -2
- package/dist/screen/lib/host-chrome.d.ts +1 -1
- package/dist/screen/lib/host.d.ts +2 -2
- package/dist/screen/lib/key-scope.d.ts +31 -2
- package/dist/screen/lib/key-scope.js +1 -1
- package/dist/screen/lib/links/link-filters.d.ts +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/page-lock.d.ts +1 -1
- package/dist/screen/lib/puck/section-doc.d.ts +5 -1
- package/dist/screen/lib/puck/section-doc.js +1 -1
- package/dist/screen/lib/puck/style-clipboard.d.ts +8 -8
- package/dist/screen/lib/puck/use-section-ops.js +1 -1
- package/dist/screen/lib/screen-parts.d.ts +47 -10
- package/dist/screen/lib/screen-parts.js +1 -1
- package/dist/screen/lib/section-templates.d.ts +1 -1
- package/dist/screen/lib/session-context.d.ts +1 -1
- package/dist/screen/lib/session.d.ts +1 -1
- package/dist/screen/screen.css +54 -206
- package/dist/screen/words.d.ts +17 -1
- package/dist/screen/words.js +1 -1
- package/dist/shell/index.d.ts +134 -118
- package/dist/shell/index.js +1 -1
- package/dist/shell/shell.css +130 -88
- package/dist/strings/catalogue.d.ts +5 -5
- package/dist/strings/catalogue.js +1 -1
- package/dist/strings/index.d.ts +5 -5
- package/dist/strings/index.js +1 -1
- package/dist/style-clipboard/index.d.ts +1 -1
- package/dist/text-styles/index.d.ts +12 -3
- package/dist/text-styles/index.js +33 -38
- package/dist/text-styles/text-styles.css +39 -71
- package/dist/tree/index.d.ts +49 -44
- package/dist/tree/index.js +1 -1
- package/dist/tree/tree.css +31 -653
- package/dist/{types-DJDBtdB2.d.ts → types-BqGnUVX5.d.ts} +32 -32
- package/dist/types-BsyPh6EW.d.ts +99 -0
- package/dist/{types-DWS-s9z-.d.ts → types-CsgMwHHa.d.ts} +14 -11
- package/dist/{types-CqY85foL.d.ts → types-Dt1CFR1S.d.ts} +4 -2
- package/dist/{wordFit-D4S36PvB.d.ts → wordFit-7XpmhcaW.d.ts} +3 -5
- package/dist/words-Cl9xMUYY.d.ts +41 -0
- package/dist/{words-D_Lnw1Gr.d.ts → words-CvFnwGSr.d.ts} +1 -1
- package/package.json +5 -1
- package/dist/chunk-2UX75JDP.js +0 -1
- package/dist/chunk-3EDSDPIP.js +0 -1
- package/dist/chunk-3QVB4AG2.js +0 -3
- package/dist/chunk-3WSPDAK2.js +0 -1
- package/dist/chunk-53G47SWO.js +0 -1
- package/dist/chunk-5MZ3RNQQ.js +0 -13
- package/dist/chunk-5ZBBXZPV.js +0 -6
- package/dist/chunk-7FBDZTUD.js +0 -2
- package/dist/chunk-7V5WZ46F.js +0 -2
- package/dist/chunk-BXZ6WLHC.js +0 -22
- package/dist/chunk-BZ5ASXOL.js +0 -1
- package/dist/chunk-EOJNJCMJ.js +0 -16
- package/dist/chunk-EWVJSRRY.js +0 -6
- package/dist/chunk-FMGFZNPW.js +0 -1
- package/dist/chunk-H24N5TMZ.js +0 -11
- package/dist/chunk-HLEET6NV.js +0 -65
- package/dist/chunk-IE4GFYKO.js +0 -1
- package/dist/chunk-KTVH2ZRL.js +0 -15
- package/dist/chunk-N7VRF7PR.js +0 -5
- package/dist/chunk-OWBO4WKA.js +0 -0
- package/dist/chunk-P67FP7PG.js +0 -9
- package/dist/chunk-P6O363EE.js +0 -6
- package/dist/chunk-Q4N7C6CT.js +0 -10
- package/dist/chunk-QH6LCNOX.js +0 -8
- package/dist/chunk-RW4XBUUW.js +0 -1
- package/dist/chunk-TTJ54QGG.js +0 -18
- package/dist/chunk-VSHV6KJQ.js +0 -5
- package/dist/chunk-VSOP4GUM.js +0 -1
- package/dist/chunk-WZ7TGAAT.js +0 -3
- package/dist/chunk-YC4TB3CJ.js +0 -25
- package/dist/chunk-ZFDCDJNZ.js +0 -16
- package/dist/chunk-ZNS7727Y.js +0 -12
- package/dist/chunk-ZTTWFAAC.js +0 -1
- package/dist/types-Djdq6Xkd.d.ts +0 -138
- package/dist/words-DgHcY5qB.d.ts +0 -33
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { StyleRow } from '../../../style-clipboard/index.js';
|
|
2
2
|
import { ScreenStyleDocument, ScreenNode, ScreenStylePastePlan, ScreenStyleClipboard } from '../screen-parts.js';
|
|
3
3
|
import { panelFieldsOf } from './panel-fields.js';
|
|
4
|
-
import '../../../types-
|
|
4
|
+
import '../../../types-BsyPh6EW.js';
|
|
5
5
|
import 'react';
|
|
6
6
|
import '../../../words-CnnHb9jo.js';
|
|
7
7
|
import '../../../blocks/index.js';
|
|
@@ -11,27 +11,27 @@ import '../../../types-41704JE4.js';
|
|
|
11
11
|
import '../../../resolve-D68pb3Bx.js';
|
|
12
12
|
import '../../../plan-DChbUXdS.js';
|
|
13
13
|
import '../../../watch-BTYOJpQU.js';
|
|
14
|
-
import '../../../types-
|
|
15
|
-
import '../../../types-
|
|
16
|
-
import '../../../wordFit-
|
|
14
|
+
import '../../../types-Dt1CFR1S.js';
|
|
15
|
+
import '../../../types-CsgMwHHa.js';
|
|
16
|
+
import '../../../wordFit-7XpmhcaW.js';
|
|
17
17
|
import '../../../edit-lock/index.js';
|
|
18
18
|
import '../../../panelWidths-D9hTLR25.js';
|
|
19
19
|
import '../../../CanvasDragLayer-zgYT1xwY.js';
|
|
20
20
|
import '../../../session-DSQFmIvx.js';
|
|
21
21
|
import '../../../words-BDignMl_.js';
|
|
22
|
-
import '../../../types-
|
|
23
|
-
import '../../../words-
|
|
22
|
+
import '../../../types-BqGnUVX5.js';
|
|
23
|
+
import '../../../words-Cl9xMUYY.js';
|
|
24
24
|
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-CiuzZJXj.js';
|
|
29
29
|
import '../document-contract.js';
|
|
30
30
|
import '../session.js';
|
|
31
31
|
import '../backend-error.js';
|
|
32
32
|
import '../host-chrome.js';
|
|
33
33
|
import '../links/link-filters.js';
|
|
34
|
-
import '../../../LinkPicker-
|
|
34
|
+
import '../../../LinkPicker-hPEr1MJx.js';
|
|
35
35
|
import '../document-hooks.js';
|
|
36
36
|
import '../document-switch.js';
|
|
37
37
|
import '../../../engine-DBxp_v6B.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{useSectionOps}from"../../../chunk-
|
|
1
|
+
export{useSectionOps}from"../../../chunk-QMNML7XH.js";import"../../../chunk-OJAJVH7S.js";import"../../../chunk-PLVEGYK6.js";import"../../../chunk-R6WTQWAC.js";import"../../../chunk-U3JP4VGF.js";import"../../../chunk-PYCLHOSA.js";import"../../../chunk-AELNNAFM.js";import"../../../chunk-JMGPPXNQ.js";import"../../../chunk-NLRW4BGG.js";import"../../../chunk-XWR5YVA7.js";import"../../../chunk-Q27BB5ZC.js";import"../../../chunk-K56YDHYQ.js";import"../../../chunk-QTLAVDJE.js";import"../../../chunk-YRLPFZW3.js";import"../../../chunk-EA2HTX37.js";import"../../../chunk-D2BCHTQR.js";import"../../../chunk-7SQF6LZL.js";import"../../../chunk-QLD57GBB.js";import"../../../chunk-FPOKPNO4.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-67GNT6PF.js";import"../../../chunk-ZNCEOSXO.js";import"../../../chunk-P2VEMZH5.js";import"../../../chunk-L5KW4HG5.js";import"../../../chunk-KRXQM65X.js";import"../../../chunk-NKB3KVAB.js";
|
|
@@ -2,15 +2,15 @@ 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-Dt1CFR1S.js';
|
|
6
6
|
import { P as Place } from '../../types-41704JE4.js';
|
|
7
7
|
import { M as MeasuredCanvas, C as CanvasDragModel } from '../../CanvasDragLayer-zgYT1xwY.js';
|
|
8
|
-
import { E as EaselContextMenuItem } from '../../types-
|
|
9
|
-
import { a as EaselRailItem } from '../../types-
|
|
8
|
+
import { E as EaselContextMenuItem } from '../../types-BsyPh6EW.js';
|
|
9
|
+
import { a as EaselRailItem } from '../../types-CsgMwHHa.js';
|
|
10
10
|
import { StyleRow } from '../../style-clipboard/index.js';
|
|
11
|
-
import { T as TreeRowMark } from '../../types-
|
|
11
|
+
import { T as TreeRowMark } from '../../types-BqGnUVX5.js';
|
|
12
12
|
import { AddKey } from '../components/AddSidePanel.js';
|
|
13
|
-
import { k as AnyScreenTarget } from '../../host-
|
|
13
|
+
import { k as AnyScreenTarget } from '../../host-CiuzZJXj.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';
|
|
@@ -23,9 +23,9 @@ import '../../edit-lock/index.js';
|
|
|
23
23
|
import '../../panelWidths-D9hTLR25.js';
|
|
24
24
|
import '../../session-DSQFmIvx.js';
|
|
25
25
|
import '../../words-BDignMl_.js';
|
|
26
|
-
import '../../wordFit-
|
|
26
|
+
import '../../wordFit-7XpmhcaW.js';
|
|
27
27
|
import '../../words-CnnHb9jo.js';
|
|
28
|
-
import '../../words-
|
|
28
|
+
import '../../words-Cl9xMUYY.js';
|
|
29
29
|
import './section-template-types.js';
|
|
30
30
|
import './puck/block-choice.js';
|
|
31
31
|
import './document-contract.js';
|
|
@@ -34,7 +34,7 @@ import '../../engine-DBxp_v6B.js';
|
|
|
34
34
|
import './admin-bridge.js';
|
|
35
35
|
import './backend-error.js';
|
|
36
36
|
import './links/link-filters.js';
|
|
37
|
-
import '../../LinkPicker-
|
|
37
|
+
import '../../LinkPicker-hPEr1MJx.js';
|
|
38
38
|
import './document-hooks.js';
|
|
39
39
|
import './puck/slot-section-spec.js';
|
|
40
40
|
|
|
@@ -585,6 +585,19 @@ interface ScreenBlockRules {
|
|
|
585
585
|
* the website's never has.
|
|
586
586
|
*/
|
|
587
587
|
resolveOnInsert?: boolean;
|
|
588
|
+
/**
|
|
589
|
+
* CLEAN A COPY (0.106.0): handed every node the screen COPIES into the
|
|
590
|
+
* document — the menu's Duplicate and Paste, ⌘V (a cut block pasted back
|
|
591
|
+
* too), a saved section put in from Add — one node at a time, a copied
|
|
592
|
+
* section's blocks each as well, and it answers the node as the copy should
|
|
593
|
+
* hold it: what only the original may hold taken out. The campaign
|
|
594
|
+
* designer's image block releases the hosted picture it baked (`bakedId`):
|
|
595
|
+
* the next bake deletes the asset that id names, so two blocks holding one
|
|
596
|
+
* would destroy each other's picture. It must keep the node's id (the copy's
|
|
597
|
+
* own, already fresh) and its type. Absent: a copy is its original, prop for
|
|
598
|
+
* prop, but its ids, as before.
|
|
599
|
+
*/
|
|
600
|
+
stripCopy?: (node: ScreenNode) => ScreenNode;
|
|
588
601
|
}
|
|
589
602
|
/**
|
|
590
603
|
* ONE SLOT OF A NODE, as the screen draws it (`ScreenBlockRules.slotsOf`,
|
|
@@ -947,6 +960,16 @@ interface ScreenPinnedNodes {
|
|
|
947
960
|
isFirst?: (node: ScreenNode) => boolean;
|
|
948
961
|
/** …and the one pinned last (the Footer). Absent: a node of type `last`. */
|
|
949
962
|
isLast?: (node: ScreenNode) => boolean;
|
|
963
|
+
/**
|
|
964
|
+
* May a block cross into and out of the node pinned LAST (0.106.0) — dragged
|
|
965
|
+
* in the Layers tree or on the canvas, or pasted? Absent or false, the
|
|
966
|
+
* website's Footer: its blocks reorder within their own slot and nothing
|
|
967
|
+
* from the page's sections lands in it, nor leaves it. True, the campaign
|
|
968
|
+
* designer's Footer, a section whose columns hold any block: its slots are
|
|
969
|
+
* lists like every other's, asked what they take (the slot's own list, the
|
|
970
|
+
* depth, never into itself). The node itself stays pinned either way.
|
|
971
|
+
*/
|
|
972
|
+
lastIsOpen?: boolean;
|
|
950
973
|
/**
|
|
951
974
|
* How the Layers tree draws the node pinned first (0.103.0). `"panel"`: a
|
|
952
975
|
* row of its own that opens the layer's panel for it (`panelOf`), drawn
|
|
@@ -1203,6 +1226,16 @@ interface ScreenParts {
|
|
|
1203
1226
|
/** Where Add puts what it adds, and whether it is a picker of blocks first
|
|
1204
1227
|
* (0.105.0; `ScreenAdd`). Absent: the screen's Add, as it always was. */
|
|
1205
1228
|
add?: ScreenAdd;
|
|
1229
|
+
/**
|
|
1230
|
+
* WHERE A PERSON'S PANEL WIDTHS AND TREE FOLDS ARE KEPT (0.106.0): the
|
|
1231
|
+
* first part of the two `localStorage` keys, `<namespace>-panel-widths` and
|
|
1232
|
+
* `<namespace>-collapsed-sections`, so an editor beside the website's keeps
|
|
1233
|
+
* its own — the campaign designer's panels and folds are not the website
|
|
1234
|
+
* editor's. Read once, as the screen mounts. Absent (or empty): the website
|
|
1235
|
+
* editor's keys, `sf-editor-panel-widths` and
|
|
1236
|
+
* `sf-editor-collapsed-sections`, so a website's layout is what it was.
|
|
1237
|
+
*/
|
|
1238
|
+
storageNamespace?: string;
|
|
1206
1239
|
/** Copy style / Paste style's scope and a node's look, where they are the
|
|
1207
1240
|
* layer's (0.105.0; `ScreenStyleClipboard`). Absent: the website's. */
|
|
1208
1241
|
styleClipboard?: ScreenStyleClipboard;
|
|
@@ -1229,7 +1262,8 @@ interface ScreenParts {
|
|
|
1229
1262
|
* rest; and the screen draws no toast of its own. The campaign designer
|
|
1230
1263
|
* hands the admin portal's toast, so the designer's lines stand where every
|
|
1231
1264
|
* other window's do. Called as each line is said, so it may change between
|
|
1232
|
-
* renders. Absent: the
|
|
1265
|
+
* renders. Absent: the shell's `toast` (efficient-shell/ui, harness UI-24;
|
|
1266
|
+
* up to 0.106.0 the screen drew a toast of its own, `.sf-toast`).
|
|
1233
1267
|
*/
|
|
1234
1268
|
notify?: (message: string, tone: "info" | "error") => void;
|
|
1235
1269
|
/**
|
|
@@ -1323,6 +1357,9 @@ declare function useScreenPickFollowsSelection(selection: unknown): void;
|
|
|
1323
1357
|
/** Where Add puts what it adds (`add`). With no layer's, nothing: the
|
|
1324
1358
|
* screen's own Add. */
|
|
1325
1359
|
declare function useScreenAdd(): ScreenAdd;
|
|
1360
|
+
/** Where widths and folds are kept (`storageNamespace`), or undefined: the
|
|
1361
|
+
* website editor's keys. */
|
|
1362
|
+
declare function useScreenStorageNamespace(): string | undefined;
|
|
1326
1363
|
/** The layer's style clipboard (`styleClipboard`), or null: the website's. */
|
|
1327
1364
|
declare function useScreenStyleClipboard(): ScreenStyleClipboard | null;
|
|
1328
1365
|
/** Whether ⌘C / ⌘X / ⌘V reach the selected block (`nodeKeys`). They do
|
|
@@ -1354,4 +1391,4 @@ declare function useScreenCanvasTarget(): CanvasTarget | null;
|
|
|
1354
1391
|
* engine's plain rows for the selection. */
|
|
1355
1392
|
declare function useScreenInspectorPanel(): ComponentType<ScreenInspectorPanelProps>;
|
|
1356
1393
|
|
|
1357
|
-
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 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, useScreenStyleClipboard, useStandaloneScreenBridges };
|
|
1394
|
+
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 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 };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
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,useScreenStyleClipboard,useStandaloneScreenBridges}from"../../chunk-
|
|
1
|
+
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-OJAJVH7S.js";import"../../chunk-PLVEGYK6.js";import"../../chunk-R6WTQWAC.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-PYCLHOSA.js";import"../../chunk-AELNNAFM.js";import"../../chunk-JMGPPXNQ.js";import"../../chunk-NLRW4BGG.js";import"../../chunk-XWR5YVA7.js";import"../../chunk-Q27BB5ZC.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-QTLAVDJE.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-EA2HTX37.js";import"../../chunk-D2BCHTQR.js";import"../../chunk-7SQF6LZL.js";import"../../chunk-QLD57GBB.js";import"../../chunk-FPOKPNO4.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-67GNT6PF.js";import"../../chunk-ZNCEOSXO.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-L5KW4HG5.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
|
|
@@ -12,7 +12,7 @@ import './backend-error.js';
|
|
|
12
12
|
import '../../edit-lock/index.js';
|
|
13
13
|
import './host-chrome.js';
|
|
14
14
|
import './links/link-filters.js';
|
|
15
|
-
import '../../LinkPicker-
|
|
15
|
+
import '../../LinkPicker-hPEr1MJx.js';
|
|
16
16
|
import './document-contract.js';
|
|
17
17
|
import './document-hooks.js';
|
|
18
18
|
|
|
@@ -11,7 +11,7 @@ import './backend-error.js';
|
|
|
11
11
|
import '../../edit-lock/index.js';
|
|
12
12
|
import './host-chrome.js';
|
|
13
13
|
import './links/link-filters.js';
|
|
14
|
-
import '../../LinkPicker-
|
|
14
|
+
import '../../LinkPicker-hPEr1MJx.js';
|
|
15
15
|
import './document-contract.js';
|
|
16
16
|
import './document-hooks.js';
|
|
17
17
|
import './section-template-types.js';
|
|
@@ -12,7 +12,7 @@ import '../../resolve-D68pb3Bx.js';
|
|
|
12
12
|
import '../../plan-DChbUXdS.js';
|
|
13
13
|
import '../../edit-lock/index.js';
|
|
14
14
|
import './links/link-filters.js';
|
|
15
|
-
import '../../LinkPicker-
|
|
15
|
+
import '../../LinkPicker-hPEr1MJx.js';
|
|
16
16
|
import './puck/content-tree.js';
|
|
17
17
|
|
|
18
18
|
/**
|
package/dist/screen/screen.css
CHANGED
|
@@ -15,13 +15,19 @@
|
|
|
15
15
|
* draws to a rule in them.
|
|
16
16
|
* The `sf-` names are kept: the hosts' sheets and their guards address them.
|
|
17
17
|
*
|
|
18
|
+
* The `--sf-*` aliases below stay (hosts read them), but they resolve through
|
|
19
|
+
* `--es-*` to efficient-shell's tokens since UI-24 (efficient-harness#117):
|
|
20
|
+
* a host that loads the shell's CSS first gets the shell's theme, dark
|
|
21
|
+
* included, in every `--sf-*` name too. `--sf-frame-bg` is the canvas's
|
|
22
|
+
* paper — output, not chrome — and stays the page's white.
|
|
23
|
+
*
|
|
18
24
|
* Load it after the other easel sheets and before a host's own sheet, which is
|
|
19
25
|
* where these rules sat in the builder's; that order is the one the cascade
|
|
20
26
|
* was measured in.
|
|
21
27
|
*/
|
|
22
28
|
|
|
23
29
|
.sf-editor {
|
|
24
|
-
/* ── Accent (efficient-shell
|
|
30
|
+
/* ── Accent (efficient-shell's) ──────────────────────────────────────── */
|
|
25
31
|
--sf-accent: var(--es-accent);
|
|
26
32
|
--sf-accent-tint: var(--es-accent-tint);
|
|
27
33
|
--sf-accent-tint-strong: var(--es-accent-tint-strong);
|
|
@@ -30,7 +36,7 @@
|
|
|
30
36
|
--sf-accent-shadow: var(--es-accent-shadow);
|
|
31
37
|
--sf-on-accent: var(--es-on-accent);
|
|
32
38
|
|
|
33
|
-
/* ── Surfaces (
|
|
39
|
+
/* ── Surfaces (shell ramp) ──────────────────────────────────────────── */
|
|
34
40
|
--sf-app-bg: var(--es-app-bg);
|
|
35
41
|
--sf-preview-bg: var(--es-preview-bg);
|
|
36
42
|
--sf-panel: var(--es-panel);
|
|
@@ -70,7 +76,7 @@
|
|
|
70
76
|
--sf-scrollbar: var(--es-scrollbar);
|
|
71
77
|
--sf-scrollbar-hover: var(--es-scrollbar-hover);
|
|
72
78
|
|
|
73
|
-
/* ── Danger / warning / success (shell
|
|
79
|
+
/* ── Danger / warning / success (shell status tiers) ───────────────── */
|
|
74
80
|
--sf-danger: var(--es-danger);
|
|
75
81
|
--sf-danger-strong: var(--es-danger-strong);
|
|
76
82
|
--sf-danger-tint: var(--es-danger-tint);
|
|
@@ -206,6 +212,14 @@
|
|
|
206
212
|
box-sizing: border-box;
|
|
207
213
|
}
|
|
208
214
|
|
|
215
|
+
/* The root takes focus without a tab stop inside another app's page (0.106.0,
|
|
216
|
+
lib/key-scope `editorRootFocus`), so a click on its ground keeps its keys in
|
|
217
|
+
hearing. It is never a place a person tabs to, so it draws no ring of its own:
|
|
218
|
+
the ring belongs to the control focus lands on. */
|
|
219
|
+
.sf-editor[tabindex="-1"]:focus {
|
|
220
|
+
outline: none;
|
|
221
|
+
}
|
|
222
|
+
|
|
209
223
|
/* Scrollbars inside the editor panels */
|
|
210
224
|
.sf-scroll::-webkit-scrollbar {
|
|
211
225
|
width: 11px;
|
|
@@ -214,7 +228,7 @@
|
|
|
214
228
|
|
|
215
229
|
.sf-scroll::-webkit-scrollbar-thumb {
|
|
216
230
|
background: var(--sf-scrollbar);
|
|
217
|
-
border-radius:
|
|
231
|
+
border-radius: var(--radius-lg);
|
|
218
232
|
border: 3px solid transparent;
|
|
219
233
|
background-clip: content-box;
|
|
220
234
|
}
|
|
@@ -269,9 +283,9 @@
|
|
|
269
283
|
/* THE SIDE PANELS AND THEIR GRIPS ARE editor-shell's (efficient-easel/chrome.css):
|
|
270
284
|
`.es-sidepanel` — flush, a hairline on the SEAM side only (card 66161: draw the
|
|
271
285
|
seams, leave the outer edges alone), the size-container context every
|
|
272
|
-
`@container` rule in this sheet asks (card 66212) — and `.es-resizer
|
|
273
|
-
|
|
274
|
-
`
|
|
286
|
+
`@container` rule in this sheet asks (card 66212) — and `.es-resizer` (the
|
|
287
|
+
shell's `ResizeHandle` since 1.0.0), pinned over each seam from
|
|
288
|
+
`--es-left-w` / `--es-right-w`. Lifted from this sheet (redesign 2a). The panels keep
|
|
275
289
|
`.sf-panel` / `.sf-panel--left|right` as well, which is what this sheet's own
|
|
276
290
|
descendant rules (`.sf-panel--right .sf-insp-body`, …) hang on. */
|
|
277
291
|
.sf-panel-head {
|
|
@@ -373,7 +387,7 @@
|
|
|
373
387
|
.sf-chip {
|
|
374
388
|
width: 18px;
|
|
375
389
|
height: 18px;
|
|
376
|
-
border-radius:
|
|
390
|
+
border-radius: var(--radius-md);
|
|
377
391
|
display: flex;
|
|
378
392
|
align-items: center;
|
|
379
393
|
justify-content: center;
|
|
@@ -426,21 +440,28 @@
|
|
|
426
440
|
padding: 6px 9px;
|
|
427
441
|
border: none;
|
|
428
442
|
background: transparent;
|
|
429
|
-
border-radius:
|
|
443
|
+
border-radius: var(--radius-lg);
|
|
430
444
|
cursor: pointer;
|
|
431
445
|
color: var(--sf-accent);
|
|
432
446
|
font-size: 12px;
|
|
433
447
|
font-weight: 500;
|
|
434
448
|
}
|
|
435
449
|
|
|
436
|
-
.sf-add-card:hover {
|
|
450
|
+
.sf-add-card:hover:not([aria-disabled='true']) {
|
|
437
451
|
background: var(--sf-accent-tint);
|
|
438
452
|
}
|
|
439
453
|
|
|
454
|
+
/* Off with a reason (`aria-disabled`, so the keyboard reaches it and hears
|
|
455
|
+
why): the shell's own disabled fade, which only `:disabled` would draw. */
|
|
456
|
+
.sf-add-card[aria-disabled='true'] {
|
|
457
|
+
opacity: 0.6;
|
|
458
|
+
cursor: not-allowed;
|
|
459
|
+
}
|
|
460
|
+
|
|
440
461
|
.sf-add-card .sf-plus {
|
|
441
462
|
width: 18px;
|
|
442
463
|
height: 18px;
|
|
443
|
-
border-radius:
|
|
464
|
+
border-radius: var(--radius-md);
|
|
444
465
|
display: flex;
|
|
445
466
|
align-items: center;
|
|
446
467
|
justify-content: center;
|
|
@@ -449,81 +470,10 @@
|
|
|
449
470
|
background: var(--sf-accent-tint);
|
|
450
471
|
}
|
|
451
472
|
|
|
452
|
-
/* ── Footer "Add block" menu —
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
gap: 1px;
|
|
457
|
-
margin: 2px 0 4px;
|
|
458
|
-
padding: 4px;
|
|
459
|
-
border: 1px solid var(--sf-line);
|
|
460
|
-
border-radius: 8px;
|
|
461
|
-
background: var(--sf-panel);
|
|
462
|
-
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.08);
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
/* ── Footer "Add block" menu — heterogeneous block-type picker ──────────── */
|
|
466
|
-
.sf-blockmenu-item {
|
|
467
|
-
display: flex;
|
|
468
|
-
align-items: center;
|
|
469
|
-
gap: 8px;
|
|
470
|
-
width: 100%;
|
|
471
|
-
padding: 7px 9px;
|
|
472
|
-
border: none;
|
|
473
|
-
background: transparent;
|
|
474
|
-
border-radius: 6px;
|
|
475
|
-
cursor: pointer;
|
|
476
|
-
color: var(--sf-text, var(--sf-text));
|
|
477
|
-
font-size: 12.5px;
|
|
478
|
-
text-align: left;
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
/* ── Footer "Add block" menu — heterogeneous block-type picker ──────────── */
|
|
482
|
-
.sf-blockmenu-item:hover {
|
|
483
|
-
background: var(--sf-accent-tint);
|
|
484
|
-
color: var(--sf-accent);
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
/* ── Footer "Add block" menu — heterogeneous block-type picker ──────────── */
|
|
488
|
-
/* A group heading inside that menu — drawn only where a choice list carries
|
|
489
|
-
groups (a Box's does; the Footer's and the Slide box's do not, and render
|
|
490
|
-
exactly as before).
|
|
491
|
-
|
|
492
|
-
⚠️ THE SAME TYPE AS `.sf-addgroup-title` BELOW, and deliberately not a second
|
|
493
|
-
look: that is the heading the Add-section panel puts over every one of its
|
|
494
|
-
categories, and this menu is the OTHER door a merchant adds something
|
|
495
|
-
through. One grammar for "these belong together" (rule zero). It is not the
|
|
496
|
-
same CLASS because the two live in different boxes — a 4px-padded floating
|
|
497
|
-
menu and a 20px panel column — so only the spacing differs, and it differs
|
|
498
|
-
because the container does.
|
|
499
|
-
|
|
500
|
-
`role="presentation"` on the row: it is a label, not a menuitem, and a
|
|
501
|
-
keyboard user arrowing through the menu must not land on it. */
|
|
502
|
-
.sf-menugroup-head {
|
|
503
|
-
display: flex;
|
|
504
|
-
align-items: baseline;
|
|
505
|
-
gap: 8px;
|
|
506
|
-
padding: 9px 9px 5px;
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
/* ── Footer "Add block" menu — heterogeneous block-type picker ──────────── */
|
|
510
|
-
/* No top padding on the first heading — the menu's own 4px inset already sets
|
|
511
|
-
it in, and a second inset would leave the first group sitting lower than the
|
|
512
|
-
rows it names. */
|
|
513
|
-
.sf-menugroup-head:first-child {
|
|
514
|
-
padding-top: 4px;
|
|
515
|
-
}
|
|
516
|
-
|
|
517
|
-
/* ── Footer "Add block" menu — heterogeneous block-type picker ──────────── */
|
|
518
|
-
.sf-menugroup-title {
|
|
519
|
-
font-size: 11px;
|
|
520
|
-
font-weight: 700;
|
|
521
|
-
letter-spacing: 0.07em;
|
|
522
|
-
text-transform: uppercase;
|
|
523
|
-
color: var(--sf-muted);
|
|
524
|
-
}
|
|
525
|
-
|
|
526
|
-
/* ── Footer "Add block" menu — heterogeneous block-type picker ──────────── */
|
|
473
|
+
/* ── Footer "Add block" menu — the shell's DropdownMenu (easel issue 199, step 4) ────── */
|
|
474
|
+
/* The menu, its rows and its group headings are efficient-shell's; the row
|
|
475
|
+
that opens it is the add card (`.sf-add-card`, the trigger's own look). What
|
|
476
|
+
stays is a heading's count, quieter than its word. */
|
|
527
477
|
.sf-menugroup-count {
|
|
528
478
|
font-size: 11px;
|
|
529
479
|
color: var(--sf-field-placeholder);
|
|
@@ -555,7 +505,7 @@
|
|
|
555
505
|
the engine itself since efficient-easel 0.80.1: a scene drawn to fill it
|
|
556
506
|
painted over the whole panel before. */
|
|
557
507
|
.sf-addside .es-add-tile-cover {
|
|
558
|
-
border: 1px solid
|
|
508
|
+
border: 1px solid var(--sf-line);
|
|
559
509
|
}
|
|
560
510
|
|
|
561
511
|
/* ── Footer "Add block" menu — heterogeneous block-type picker ──────────── */
|
|
@@ -576,42 +526,6 @@
|
|
|
576
526
|
overflow: hidden;
|
|
577
527
|
}
|
|
578
528
|
|
|
579
|
-
/* Toast — transient confirmation (e.g. after adding a section) */
|
|
580
|
-
.sf-toast {
|
|
581
|
-
position: absolute;
|
|
582
|
-
left: 50%;
|
|
583
|
-
bottom: 34px;
|
|
584
|
-
transform: translateX(-50%);
|
|
585
|
-
z-index: 60;
|
|
586
|
-
display: flex;
|
|
587
|
-
align-items: center;
|
|
588
|
-
gap: 10px;
|
|
589
|
-
padding: 11px 17px;
|
|
590
|
-
border-radius: 11px;
|
|
591
|
-
background: var(--sf-toast-bg);
|
|
592
|
-
color: #fff;
|
|
593
|
-
font-size: 13px;
|
|
594
|
-
box-shadow: 0 12px 30px rgba(15, 23, 42, 0.3);
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
.sf-toast-check {
|
|
598
|
-
display: inline-flex;
|
|
599
|
-
align-items: center;
|
|
600
|
-
justify-content: center;
|
|
601
|
-
width: 18px;
|
|
602
|
-
height: 18px;
|
|
603
|
-
border-radius: 50%;
|
|
604
|
-
background: var(--sf-accent);
|
|
605
|
-
color: #fff;
|
|
606
|
-
font-size: 11px;
|
|
607
|
-
flex: none;
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
/* Error variant — same dark pill, red mark instead of the green check. */
|
|
611
|
-
.sf-toast--error .sf-toast-check {
|
|
612
|
-
background: var(--sf-danger);
|
|
613
|
-
}
|
|
614
|
-
|
|
615
529
|
/* ── Center: device-framed preview (wraps Puck.Preview) ──────────────── */
|
|
616
530
|
.sf-center {
|
|
617
531
|
flex: 1;
|
|
@@ -766,6 +680,19 @@
|
|
|
766
680
|
pointer-events: none;
|
|
767
681
|
}
|
|
768
682
|
|
|
683
|
+
/* A band CUT TO THE ROOM between two blocks (0.106.0): where the gap two
|
|
684
|
+
sections leave is narrower than the pill, the chrome sizes the band to it
|
|
685
|
+
(ScreenChrome `previewGapAt`), and the band clips the pill at rest — so the
|
|
686
|
+
pill, hidden but still taking the pointer, never lies over a block. Hovered,
|
|
687
|
+
it is drawn whole. */
|
|
688
|
+
.sf-preview-gap--tight {
|
|
689
|
+
overflow: hidden;
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
.sf-preview-gap--tight:hover {
|
|
693
|
+
overflow: visible;
|
|
694
|
+
}
|
|
695
|
+
|
|
769
696
|
/* ── Canvas "Add section" seams (overlay between preview sections) ──────────
|
|
770
697
|
Absolutely positioned over .sf-preview-host (the iframe's box), one band per
|
|
771
698
|
seam between top-level sections, placed at the boundary Y measured from the
|
|
@@ -805,7 +732,7 @@
|
|
|
805
732
|
padding: 4px;
|
|
806
733
|
border-radius: 999px;
|
|
807
734
|
background: var(--sf-toast-bg);
|
|
808
|
-
color:
|
|
735
|
+
color: var(--sf-on-accent);
|
|
809
736
|
font-family: var(--sf-font);
|
|
810
737
|
font-size: 12px;
|
|
811
738
|
font-weight: 500;
|
|
@@ -844,7 +771,7 @@
|
|
|
844
771
|
height: 18px;
|
|
845
772
|
border-radius: 50%;
|
|
846
773
|
background: var(--sf-accent);
|
|
847
|
-
color:
|
|
774
|
+
color: var(--sf-on-accent);
|
|
848
775
|
font-size: 13px;
|
|
849
776
|
line-height: 1;
|
|
850
777
|
flex: none;
|
|
@@ -900,64 +827,6 @@
|
|
|
900
827
|
color: var(--sf-danger);
|
|
901
828
|
}
|
|
902
829
|
|
|
903
|
-
/* ── The icon rail: the shared editor-shell EaselRail (`.es-rail`) ───────────
|
|
904
|
-
The rail markup + base styles live in the `efficient-easel` package (imported via
|
|
905
|
-
`efficient-easel/rail.css`); the storefront no longer hand-rolls `.sf-rail`.
|
|
906
|
-
editor-shell ships its own defaults, so we remap the themeable `--es-rail-*`
|
|
907
|
-
custom properties onto the storefront's own `--sf-*` tokens, which is what
|
|
908
|
-
keeps the shared rail reading as this editor's chrome rather than as the
|
|
909
|
-
package's. (One mode only — the editor is deliberately light-only; see the
|
|
910
|
-
note at the top of this file.)
|
|
911
|
-
Scoped `.sf-editor .es-rail` (specificity 0,2,0) so it always beats rail.css's
|
|
912
|
-
base `.es-rail` (0,1,0) whatever order the two stylesheets load in.
|
|
913
|
-
|
|
914
|
-
THREE TOKENS ARE DELIBERATELY NOT REMAPPED HERE, and each absence is load-
|
|
915
|
-
bearing since card 66198 laid the rail into the top bar as a row:
|
|
916
|
-
|
|
917
|
-
--es-rail-w only the COLUMN reads it (`.es-rail { width:
|
|
918
|
-
var(--es-rail-w) }`); the row is `width: auto` and sizes
|
|
919
|
-
to its buttons, so a remap would be config nothing reads.
|
|
920
|
-
--es-rail-bg the row variant re-points these to transparent / none / 0
|
|
921
|
-
--es-rail-shadow ON PURPOSE: the bar already has its own surface, and a
|
|
922
|
-
--es-rail-radius second white card floating inside it is the bug. This
|
|
923
|
-
rule ties with `.es-rail.es-rail-row` on specificity
|
|
924
|
-
(0,2,0 both), so setting them here would silently WIN
|
|
925
|
-
and put that card back. The rail's surface is the bar's.
|
|
926
|
-
|
|
927
|
-
Everything left below is colour the row variant does not touch. */
|
|
928
|
-
.sf-editor .es-rail {
|
|
929
|
-
--es-rail-fg: var(--sf-muted);
|
|
930
|
-
--es-rail-hover-bg: var(--sf-hover);
|
|
931
|
-
--es-rail-hover-fg: var(--sf-text);
|
|
932
|
-
--es-rail-accent: var(--sf-accent);
|
|
933
|
-
--es-rail-accent-tint: var(--sf-accent-tint);
|
|
934
|
-
}
|
|
935
|
-
|
|
936
|
-
/* ── The icon rail: the shared editor-shell EaselRail (`.es-rail`) ───────────
|
|
937
|
-
The rail markup + base styles live in the `efficient-easel` package (imported via
|
|
938
|
-
`efficient-easel/rail.css`); the storefront no longer hand-rolls `.sf-rail`.
|
|
939
|
-
editor-shell ships its own defaults, so we remap the themeable `--es-rail-*`
|
|
940
|
-
custom properties onto the storefront's own `--sf-*` tokens, which is what
|
|
941
|
-
keeps the shared rail reading as this editor's chrome rather than as the
|
|
942
|
-
package's. (One mode only — the editor is deliberately light-only; see the
|
|
943
|
-
note at the top of this file.)
|
|
944
|
-
Scoped `.sf-editor .es-rail` (specificity 0,2,0) so it always beats rail.css's
|
|
945
|
-
base `.es-rail` (0,1,0) whatever order the two stylesheets load in.
|
|
946
|
-
|
|
947
|
-
THREE TOKENS ARE DELIBERATELY NOT REMAPPED HERE, and each absence is load-
|
|
948
|
-
bearing since card 66198 laid the rail into the top bar as a row:
|
|
949
|
-
|
|
950
|
-
--es-rail-w only the COLUMN reads it (`.es-rail { width:
|
|
951
|
-
var(--es-rail-w) }`); the row is `width: auto` and sizes
|
|
952
|
-
to its buttons, so a remap would be config nothing reads.
|
|
953
|
-
--es-rail-bg the row variant re-points these to transparent / none / 0
|
|
954
|
-
--es-rail-shadow ON PURPOSE: the bar already has its own surface, and a
|
|
955
|
-
--es-rail-radius second white card floating inside it is the bug. This
|
|
956
|
-
rule ties with `.es-rail.es-rail-row` on specificity
|
|
957
|
-
(0,2,0 both), so setting them here would silently WIN
|
|
958
|
-
and put that card back. The rail's surface is the bar's.
|
|
959
|
-
|
|
960
|
-
Everything left below is colour the row variant does not touch. */
|
|
961
830
|
/* THE RAIL COLUMN (owner, 2026-09-04: "the top control panel and the panel
|
|
962
831
|
below it" must read as one) — the cluster exactly the left panel's width,
|
|
963
832
|
carrying its hairline up through the bar, the buttons spread across it (his
|
|
@@ -1029,7 +898,7 @@
|
|
|
1029
898
|
.sf-device-scope {
|
|
1030
899
|
margin: 8px 0 2px;
|
|
1031
900
|
padding: 7px 10px;
|
|
1032
|
-
border-radius:
|
|
901
|
+
border-radius: var(--radius-md);
|
|
1033
902
|
background: var(--sf-chip-bg);
|
|
1034
903
|
font-size: 11.5px;
|
|
1035
904
|
line-height: 1.35;
|
|
@@ -1078,8 +947,7 @@
|
|
|
1078
947
|
Every side panel's head is efficient-easel's `InspectorHead`; these two
|
|
1079
948
|
are the pieces the website editor adds to it. The hairline parts a panel's
|
|
1080
949
|
own tools from the hide button that ends every head, and a mode's way out
|
|
1081
|
-
is a word ("Done", "Cancel") on the
|
|
1082
|
-
28px of the head's icon buttons so the row keeps one height. */
|
|
950
|
+
is a word ("Done", "Cancel") on the shell's small Button. */
|
|
1083
951
|
.sf-head-divider {
|
|
1084
952
|
width: 1px;
|
|
1085
953
|
height: 16px;
|
|
@@ -1088,26 +956,6 @@
|
|
|
1088
956
|
flex: none;
|
|
1089
957
|
}
|
|
1090
958
|
|
|
1091
|
-
/* ── Side panel heads (components/SidePanelHead) ─────────────────────────
|
|
1092
|
-
Every side panel's head is efficient-easel's `InspectorHead`; these two
|
|
1093
|
-
are the pieces the website editor adds to it. The hairline parts a panel's
|
|
1094
|
-
own tools from the hide button that ends every head, and a mode's way out
|
|
1095
|
-
is a word ("Done", "Cancel") on the engine's ghost button, drawn to the
|
|
1096
|
-
28px of the head's icon buttons so the row keeps one height. */
|
|
1097
|
-
.es-btn-ghost.sf-head-textbtn {
|
|
1098
|
-
height: 28px;
|
|
1099
|
-
padding: 0 10px;
|
|
1100
|
-
font-size: 12.5px;
|
|
1101
|
-
border-radius: 7px;
|
|
1102
|
-
white-space: nowrap;
|
|
1103
|
-
}
|
|
1104
|
-
|
|
1105
|
-
/* ── Side panel heads (components/SidePanelHead) ─────────────────────────
|
|
1106
|
-
Every side panel's head is efficient-easel's `InspectorHead`; these two
|
|
1107
|
-
are the pieces the website editor adds to it. The hairline parts a panel's
|
|
1108
|
-
own tools from the hide button that ends every head, and a mode's way out
|
|
1109
|
-
is a word ("Done", "Cancel") on the engine's ghost button, drawn to the
|
|
1110
|
-
28px of the head's icon buttons so the row keeps one height. */
|
|
1111
959
|
/* A hidden side panel's strip (components/SidePanelHead `PanelShowStrip`):
|
|
1112
960
|
one Show panel button where the panel was. It IS a side panel — the
|
|
1113
961
|
engine's `.es-sidepanel--left|right` gives it the panels' ground and the
|
package/dist/screen/words.d.ts
CHANGED
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
* the Layers tree's frame round the document's nodes (0.103.0): its first
|
|
6
6
|
* row, the pinned groups, the band of sections and the band's "+". And
|
|
7
7
|
* (0.105.0) the Add panel's words (`add`), the main button's, and what the
|
|
8
|
-
* block keys say when a block is copied or will not paste.
|
|
8
|
+
* block keys say when a block is copied or will not paste. And (0.106.0) the
|
|
9
|
+
* canvas's empty-slot cell, the rail's Media button, and the left panel's
|
|
10
|
+
* accessible name and its grip's.
|
|
9
11
|
*
|
|
10
12
|
* They came with the screen from the website editor, written into the
|
|
11
13
|
* provider, the mount and the notice; a second host (the campaign designer)
|
|
@@ -130,6 +132,20 @@ type ScreenWords = {
|
|
|
130
132
|
}) => string;
|
|
131
133
|
/** The Add panel's words (0.105.0). */
|
|
132
134
|
add: ScreenAddWords;
|
|
135
|
+
/** The cell over an EMPTY slot on the canvas, after its "+" (0.106.0): the
|
|
136
|
+
* campaign designer's "Add a block". */
|
|
137
|
+
canvasAddBlock: string;
|
|
138
|
+
/** The rail's button to the media library (0.106.0). Owner ruling R21
|
|
139
|
+
* (Victor Mau, 2026-10-09): the campaign designer's rail reads Add,
|
|
140
|
+
* Layers, Email styles, Media. The panel's own head keeps its word
|
|
141
|
+
* (`EaselStrings.chrome.mediaLibrary`). */
|
|
142
|
+
railMedia: string;
|
|
143
|
+
/** The left panel's accessible name (0.106.0): the panel is a labelled
|
|
144
|
+
* `<aside>`, whichever view it shows. */
|
|
145
|
+
leftPanel: string;
|
|
146
|
+
/** The left panel's resize grip's accessible name (0.106.0). It said
|
|
147
|
+
* "Resize Sections panel", from when the tree was the panel's one view. */
|
|
148
|
+
resizeLeftPanel: string;
|
|
133
149
|
};
|
|
134
150
|
declare const DEFAULT_SCREEN_WORDS: ScreenWords;
|
|
135
151
|
|
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_WORDS}from"../chunk-E2O2MRZR.js";
|