efficient-easel 14.2.0 → 16.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 +5 -4
- package/dist/{CanvasDragLayer-CLb7j-CZ.d.ts → CanvasDragLayer-dZCPbQCP.d.ts} +1 -1
- package/dist/canvas/index.d.ts +21 -1
- package/dist/canvas/index.js +1 -1
- package/dist/{chunk-NY7HHUGB.js → chunk-23VM4PMV.js} +2 -2
- package/dist/{chunk-44QA42OJ.js → chunk-63ZDVAVE.js} +1 -1
- package/dist/chunk-BALFHI3G.js +2 -0
- package/dist/{chunk-CMXK3JT3.js → chunk-GGC72GS4.js} +1 -1
- package/dist/{chunk-CY52PUMZ.js → chunk-HM7S7H5H.js} +1 -1
- package/dist/{chunk-XGW6NWLC.js → chunk-JD5HXBEX.js} +1 -1
- package/dist/{chunk-AYWN5NRH.js → chunk-KAML3KQH.js} +1 -1
- package/dist/{chunk-YKJ3RIMT.js → chunk-KFPCMMRK.js} +1 -1
- package/dist/chunk-N2B32EZB.js +5 -0
- package/dist/{chunk-TR4APEJZ.js → chunk-N2BVA6TS.js} +1 -1
- package/dist/chunk-N3LYD2LK.js +21 -0
- package/dist/chunk-OFBZOI6W.js +1 -0
- package/dist/{chunk-F3A7SXSV.js → chunk-OK7OH2ZN.js} +1 -1
- package/dist/{chunk-35VMTYPH.js → chunk-P3XVBLZ6.js} +4 -4
- package/dist/chunk-POSLNRTO.js +18 -0
- package/dist/chunk-PQRYAW2G.js +5 -0
- package/dist/chunk-RQBIFINA.js +57 -0
- package/dist/chunk-SMM3ST7A.js +13 -0
- package/dist/chunk-U6LJ5UKD.js +6 -0
- package/dist/chunk-UVQR7W6I.js +1 -0
- package/dist/chunk-WXFZD7WC.js +1 -0
- package/dist/chunk-X4T6JT3M.js +1 -0
- package/dist/copy/copy.css +9 -9
- package/dist/copy/index.d.ts +2 -29
- package/dist/copy/index.js +12 -13
- package/dist/drag/drag.css +22 -0
- package/dist/drag/index.d.ts +2 -2
- package/dist/drag/index.js +1 -1
- package/dist/easel/easel.css +26 -0
- package/dist/easel/index.js +1 -1
- package/dist/fields/index.js +1 -1
- package/dist/menu/index.d.ts +22 -27
- package/dist/menu/index.js +1 -1
- package/dist/menu/menu.css +7 -6
- package/dist/pick/index.d.ts +5 -70
- package/dist/pick/index.js +1 -3
- package/dist/pick/pick.css +1 -21
- package/dist/screen/components/AddBlockRow.js +1 -1
- package/dist/screen/components/AddSidePanel.js +1 -1
- 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/SaveControls.d.ts +2 -2
- package/dist/screen/components/ScreenChrome.js +1 -1
- package/dist/screen/components/ScreenMount.d.ts +2 -2
- package/dist/screen/components/ScreenMount.js +1 -1
- package/dist/screen/components/ScreenStoreProvider.d.ts +2 -2
- package/dist/screen/components/ScreenStoreProvider.js +1 -1
- package/dist/screen/components/SectionScreenShell.js +15 -15
- package/dist/screen/components/usePartBridge.d.ts +2 -2
- package/dist/screen/components/usePartBridge.js +1 -1
- package/dist/screen/index.d.ts +2 -2
- package/dist/screen/index.js +1 -1
- package/dist/screen/lib/key-scope.js +1 -1
- package/dist/screen/lib/puck/style-clipboard.d.ts +2 -2
- package/dist/screen/lib/puck/use-section-ops.js +1 -1
- package/dist/screen/lib/screen-parts.d.ts +2 -2
- package/dist/screen/lib/screen-parts.js +1 -1
- package/dist/strings/catalogue.d.ts +2 -2
- package/dist/strings/catalogue.js +1 -1
- package/dist/strings/index.d.ts +2 -2
- package/dist/strings/index.js +1 -1
- package/dist/text-styles/index.js +36 -36
- package/dist/{words-BDignMl_.d.ts → words-CvwYvkJm.d.ts} +2 -0
- package/dist/{words-is_Vy6hn.d.ts → words-DWvCJXwR.d.ts} +2 -37
- package/package.json +3 -3
- package/dist/chunk-5XUMLKQF.js +0 -6
- package/dist/chunk-643PVCEG.js +0 -1
- package/dist/chunk-BXMXTO36.js +0 -1
- package/dist/chunk-CSGTPJTY.js +0 -5
- package/dist/chunk-D46OYLJR.js +0 -5
- package/dist/chunk-EA2HTX37.js +0 -5
- package/dist/chunk-ILXP5VX5.js +0 -1
- package/dist/chunk-LPM2SCM4.js +0 -13
- package/dist/chunk-NW4LJ4G4.js +0 -1
- package/dist/chunk-QFVRMARS.js +0 -18
- package/dist/chunk-SO5OLDH7.js +0 -21
- package/dist/chunk-XUAKHY4T.js +0 -57
package/dist/drag/drag.css
CHANGED
|
@@ -84,6 +84,28 @@
|
|
|
84
84
|
pointer-events: none;
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
+
/* "DOUBLE-CLICK TO EDIT" (Lewis 2026-10-20, mockup v4 decision a): on the
|
|
88
|
+
selection's top-right corner, across its line (the layer hands it the
|
|
89
|
+
corner; it hangs left of it and is centred on the line); `.is-below` hangs
|
|
90
|
+
it under the bottom-right corner instead. Its surface is the shell's
|
|
91
|
+
(`solidSurfaceStyle`, inline); the size and words are the tooltip
|
|
92
|
+
bubble's. It takes no pointer: a click there is the block's. */
|
|
93
|
+
.es-canvas-hint {
|
|
94
|
+
position: absolute;
|
|
95
|
+
transform: translate(calc(-100% - var(--es-space-8, 8px)), -50%);
|
|
96
|
+
box-sizing: border-box;
|
|
97
|
+
padding: var(--es-space-4, 4px) var(--es-space-8, 8px);
|
|
98
|
+
border-radius: var(--radius-md);
|
|
99
|
+
font: 400 var(--text-xs, 12px) / 1.4 var(--es-font);
|
|
100
|
+
color: var(--es-text);
|
|
101
|
+
white-space: nowrap;
|
|
102
|
+
pointer-events: none;
|
|
103
|
+
z-index: 1;
|
|
104
|
+
}
|
|
105
|
+
.es-canvas-hint.is-below {
|
|
106
|
+
transform: translate(calc(-100% - var(--es-space-8, 8px)), var(--es-space-4, 4px));
|
|
107
|
+
}
|
|
108
|
+
|
|
87
109
|
/* A ➕ INSERT POINT (./CanvasInsert, owner 2026-10-14): one look wherever the
|
|
88
110
|
canvas offers to add — between sections and between, before and after the
|
|
89
111
|
blocks of a box. The band only positions the chip and lets every other
|
package/dist/drag/index.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ import { HTMLAttributes, CSSProperties, ReactNode } from 'react';
|
|
|
3
3
|
import { P as Place } from '../types-41704JE4.js';
|
|
4
4
|
import { D as DragSession } from '../session-DSQFmIvx.js';
|
|
5
5
|
export { a as DragHeld, c as createDragSession } from '../session-DSQFmIvx.js';
|
|
6
|
-
export { B as Box, a as CanvasDragLayer, b as CanvasDragLayerProps, C as CanvasDragModel, c as CanvasDropTarget, d as CanvasSeam, e as CanvasSource, f as CanvasZone, E as EMPTY_MEASURE, H as HANDLE_GRACE_MS, M as MeasuredCanvas, g as MeasuredNode, h as canvasTarget, i as contains, j as gapInZone, k as gapLine, l as insertSeams, m as measureCanvas, p as pickSource, s as seamsBetween, n as sourcesAt } from '../CanvasDragLayer-
|
|
7
|
-
import { D as DragWords } from '../words-
|
|
6
|
+
export { B as Box, a as CanvasDragLayer, b as CanvasDragLayerProps, C as CanvasDragModel, c as CanvasDropTarget, d as CanvasSeam, e as CanvasSource, f as CanvasZone, E as EMPTY_MEASURE, H as HANDLE_GRACE_MS, M as MeasuredCanvas, g as MeasuredNode, h as canvasTarget, i as contains, j as gapInZone, k as gapLine, l as insertSeams, m as measureCanvas, p as pickSource, s as seamsBetween, n as sourcesAt } from '../CanvasDragLayer-dZCPbQCP.js';
|
|
7
|
+
import { D as DragWords } from '../words-CvwYvkJm.js';
|
|
8
8
|
import '../watch-BTYOJpQU.js';
|
|
9
9
|
|
|
10
10
|
/**
|
package/dist/drag/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{AddPanel,CanvasDragLayer,CanvasInsert,EMPTY_MEASURE,HANDLE_GRACE_MS,canvasTarget,contains,gapInZone,gapLine,insertSeams,measureCanvas,pickSource,seamsBetween,sourcesAt}from"../chunk-
|
|
1
|
+
export{AddPanel,CanvasDragLayer,CanvasInsert,EMPTY_MEASURE,HANDLE_GRACE_MS,canvasTarget,contains,gapInZone,gapLine,insertSeams,measureCanvas,pickSource,seamsBetween,sourcesAt}from"../chunk-POSLNRTO.js";import"../chunk-KAML3KQH.js";export{AUTO_SCROLL_EDGE,AUTO_SCROLL_MAX_SPEED,autoScrollDelta,autoScrollSpeed,createDragSession,dropEffectFor,dropOnRow,frameScrollBox,gapToMoveIndex,isNoOpDrop,scrollBoxOf,scrollParent,startAutoScroll,stepGap,useTreeDrag}from"../chunk-67GNT6PF.js";import"../chunk-P2VEMZH5.js";import"../chunk-X4T6JT3M.js";import"../chunk-KRXQM65X.js";import"../chunk-NKB3KVAB.js";
|
package/dist/easel/easel.css
CHANGED
|
@@ -122,6 +122,32 @@
|
|
|
122
122
|
outline: 2px solid var(--es-canvas-outline-colour);
|
|
123
123
|
outline-offset: 4px;
|
|
124
124
|
}
|
|
125
|
+
/* THE POINTER (Lewis 2026-10-20, mockup v4 decision c): on the canvas it is
|
|
126
|
+
the arrow — over words, and over the links and buttons the page drew, which
|
|
127
|
+
the canvas never follows — and the I-beam only inside the words being
|
|
128
|
+
typed. The grab hand is the handle's, in the layer over the canvas.
|
|
129
|
+
`!important`: the canvas holds the PAGE's own sheet, and its
|
|
130
|
+
`a { cursor: pointer }` and button rules would otherwise win. */
|
|
131
|
+
.es-canvas-content,
|
|
132
|
+
.es-canvas-content * {
|
|
133
|
+
cursor: default !important;
|
|
134
|
+
}
|
|
135
|
+
.es-canvas-content [data-es-typing],
|
|
136
|
+
.es-canvas-content [data-es-typing] * {
|
|
137
|
+
cursor: text !important;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/* A PLACEHOLDER FOR EMPTY WORDS (Lewis 2026-10-20, decision h): words the
|
|
141
|
+
page draws empty and marks `data-es-placeholder` (an Eyebrow switched on
|
|
142
|
+
before it has words) show that word, greyed, on the canvas only — drawn by
|
|
143
|
+
the canvas beside the words, never into them, so nothing is typed over it.
|
|
144
|
+
It goes with the first typed letter (`:empty`). */
|
|
145
|
+
.es-canvas-content [data-es-placeholder]:empty::before {
|
|
146
|
+
content: attr(data-es-placeholder);
|
|
147
|
+
opacity: 0.45;
|
|
148
|
+
pointer-events: none;
|
|
149
|
+
}
|
|
150
|
+
|
|
125
151
|
/* …and the words themselves draw no focus ring: a contenteditable gets the
|
|
126
152
|
browser's (`outline: auto`), which drew a second line inside the box on a
|
|
127
153
|
page whose own sheet does not remove it (an email). */
|
package/dist/easel/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{CanvasFrame,CanvasPassThroughContext,DEFAULT_UI,EaselCanvas,EaselProvider,EditDocument,bindUndoKeys,createEasel,createUseEasel,recordsByDefault,reduce,uiView,useEasel,useEaselApi,useEaselNodeOps,useSelectedFields,validSelection}from"../chunk-
|
|
1
|
+
export{CanvasFrame,CanvasPassThroughContext,DEFAULT_UI,EaselCanvas,EaselProvider,EditDocument,bindUndoKeys,createEasel,createUseEasel,recordsByDefault,reduce,uiView,useEasel,useEaselApi,useEaselNodeOps,useSelectedFields,validSelection}from"../chunk-SMM3ST7A.js";import"../chunk-TBY3DFKS.js";import"../chunk-ECM5F6JJ.js";import"../chunk-YRLPFZW3.js";import"../chunk-23VM4PMV.js";import"../chunk-B4JN227A.js";import"../chunk-MFIRYGHW.js";import"../chunk-X4T6JT3M.js";import"../chunk-KRXQM65X.js";import"../chunk-NKB3KVAB.js";
|
package/dist/fields/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{FieldText,Inspector,InspectorField,LinkPicker,ListField,bucketsOf,copyItem,insertAt,labelOf,moveTo,planFields,removeAt}from"../chunk-
|
|
1
|
+
export{FieldText,Inspector,InspectorField,LinkPicker,ListField,bucketsOf,copyItem,insertAt,labelOf,moveTo,planFields,removeAt}from"../chunk-N3LYD2LK.js";export{fieldIsShown,showWhenOf,shownFields,withShowWhen}from"../chunk-BPXEFVSQ.js";export{FieldSlider}from"../chunk-XWFH2NHZ.js";import"../chunk-4JSBIW5H.js";import"../chunk-K56YDHYQ.js";import"../chunk-BALFHI3G.js";import"../chunk-RC25EGHD.js";import"../chunk-KFV7N2DJ.js";export{useResolvedFields}from"../chunk-YRLPFZW3.js";export{FieldNumber}from"../chunk-2XMHLXMA.js";export{FieldSelect,optionFor}from"../chunk-G3GWAP5R.js";import"../chunk-WRFD4EXD.js";import"../chunk-36LVP5WD.js";import"../chunk-MFIRYGHW.js";import"../chunk-67GNT6PF.js";import"../chunk-P2VEMZH5.js";import"../chunk-KRXQM65X.js";import"../chunk-NKB3KVAB.js";
|
package/dist/menu/index.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { a as EaselContextMenuProps, E as EaselContextMenuItem } from '../types-BsyPh6EW.js';
|
|
3
3
|
export { b as EaselContextMenuSkin } from '../types-BsyPh6EW.js';
|
|
4
|
+
import { DropdownMenuEntry } from 'efficient-shell/ui';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* The editors' right-click menu: the shell's `ContextMenu` with an
|
|
7
|
-
* {@link
|
|
8
|
+
* {@link easelMenuEntries} list as its `items` (harness UI-16, UI-24;
|
|
9
|
+
* efficient-easel#199, efficient-shell#580): the shell draws the rows.
|
|
8
10
|
*
|
|
9
11
|
* Up to 0.106.0 this drew a box of its own — moved here from the admin
|
|
10
12
|
* portal's `RowContextMenu` (card 66400.d) with a skin, an edge flip, a
|
|
@@ -22,39 +24,32 @@ export { b as EaselContextMenuSkin } from '../types-BsyPh6EW.js';
|
|
|
22
24
|
declare function EaselContextMenu({ x, y, items, onClose, owner, portalTo }: EaselContextMenuProps): react.JSX.Element | null;
|
|
23
25
|
|
|
24
26
|
/**
|
|
25
|
-
* The editors' item list
|
|
26
|
-
*
|
|
27
|
+
* The editors' item list as the shell's menu entries (harness UI-16, UI-24;
|
|
28
|
+
* efficient-shell#580).
|
|
27
29
|
*
|
|
28
30
|
* What a menu OFFERS stays a list of {@link EaselContextMenuItem}s — the node
|
|
29
31
|
* menu, the Layers rows, the canvas block and the list field build theirs from
|
|
30
|
-
* registries, and so do the hosts
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* does that for you):
|
|
32
|
+
* registries, and so do the hosts. This turns one into the `DropdownMenuEntry`
|
|
33
|
+
* list that the shell's `ContextMenu` and `DropdownMenu` both take as `items`,
|
|
34
|
+
* and the shell draws every row with its one renderer:
|
|
34
35
|
*
|
|
35
|
-
* <ContextMenu {...menu.props}
|
|
36
|
-
* <EaselMenuItems items={items} onClose={menu.close} />
|
|
37
|
-
* </ContextMenu>
|
|
36
|
+
* <ContextMenu {...menu.props} items={easelMenuEntries(items)} />
|
|
38
37
|
*
|
|
39
|
-
* `'—'` a `
|
|
40
|
-
* `header` a `
|
|
41
|
-
* `children` a `
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* otherwise
|
|
38
|
+
* `'—'` a `divider`;
|
|
39
|
+
* `header` a `label` (the first names the menu: `menuLabel`);
|
|
40
|
+
* `children` a `submenu`. One level, as before: a child's own `children`
|
|
41
|
+
* are not offered. A flyout whose entries carry `checked` is a
|
|
42
|
+
* set of states (the layer a "Select layer" ladder is on), so
|
|
43
|
+
* its entries are `radio`s;
|
|
44
|
+
* otherwise an `item`, `danger` kept.
|
|
46
45
|
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* `menu
|
|
51
|
-
* does not scan this package); a flyout's tick is the shell's (`checked`).
|
|
46
|
+
* Choosing an entry closes the menu, then runs its `onClick` (the shell's
|
|
47
|
+
* order). Easel draws no row: only the glyph and the shortcut, which the
|
|
48
|
+
* shell's entries have no slot for, are laid out by `menu.css`
|
|
49
|
+
* (`es-menu-icon`, `es-menu-label`, `es-menu-shortcut`), and only when given.
|
|
52
50
|
*/
|
|
53
|
-
declare function
|
|
54
|
-
items: readonly EaselContextMenuItem[];
|
|
55
|
-
onClose: () => void;
|
|
56
|
-
}): react.JSX.Element;
|
|
51
|
+
declare function easelMenuEntries(items: readonly EaselContextMenuItem[]): DropdownMenuEntry[];
|
|
57
52
|
/** The menu's accessible name: its first caption, as it has always been. */
|
|
58
53
|
declare function menuLabel(items: readonly EaselContextMenuItem[]): string | undefined;
|
|
59
54
|
|
|
60
|
-
export { EaselContextMenu, EaselContextMenuItem, EaselContextMenuProps,
|
|
55
|
+
export { EaselContextMenu, EaselContextMenuItem, EaselContextMenuProps, easelMenuEntries, menuLabel };
|
package/dist/menu/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{EaselContextMenu}from"../chunk-
|
|
1
|
+
export{EaselContextMenu}from"../chunk-WXFZD7WC.js";export{easelMenuEntries,menuLabel}from"../chunk-BALFHI3G.js";
|
package/dist/menu/menu.css
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* efficient-easel/menu.css — the columns of an editor menu row.
|
|
3
3
|
*
|
|
4
|
-
* The box and the rows are efficient-shell's `ContextMenu`
|
|
5
|
-
*
|
|
6
|
-
* by `efficient-shell/ui.css`.
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* The box and the rows are efficient-shell's: `ContextMenu` since 1.0.0
|
|
5
|
+
* (efficient-easel#199, harness UI-16 and UI-24), and its one entries renderer
|
|
6
|
+
* since efficient-shell#580, dressed by `efficient-shell/ui.css`. An entry
|
|
7
|
+
* from `easelMenuEntries` may carry a glyph and a shortcut the shell's entry
|
|
8
|
+
* has no slot of its own for, and this sheet lays them out with the shell's
|
|
9
|
+
* tokens and nothing else:
|
|
9
10
|
*
|
|
10
11
|
* .es-menu-icon the glyph before the label;
|
|
11
12
|
* .es-menu-label the label, which takes the room between them;
|
|
12
13
|
* .es-menu-shortcut the keyboard shortcut, right-aligned and quieter.
|
|
13
14
|
*
|
|
14
|
-
* A flyout's "you are here" tick is the shell's (`
|
|
15
|
+
* A flyout's "you are here" tick is the shell's (a `radio` entry,
|
|
15
16
|
* efficient-shell 4.165.0), not a column of this sheet's.
|
|
16
17
|
*
|
|
17
18
|
* Import once, after the shell's sheet:
|
package/dist/pick/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
-
import { P as PickWords } from '../words-
|
|
3
|
+
import { P as PickWords } from '../words-DWvCJXwR.js';
|
|
4
4
|
export { Hsv, hexToHsv, hsvToHex } from 'efficient-shell/ui';
|
|
5
5
|
|
|
6
6
|
/** One colour the site's theme names — offered first, by name. */
|
|
@@ -157,68 +157,6 @@ type ColourWindowProps = {
|
|
|
157
157
|
*/
|
|
158
158
|
declare function ColourWindow({ value, onChange, label, theme, onClose, id, inherited, readOnly, words: _words, swatch: _swatch, dragWrites, }: ColourWindowProps): react.JSX.Element;
|
|
159
159
|
|
|
160
|
-
type ImageBoxProps = {
|
|
161
|
-
/** The file's URL, or `''` while the setting has none. */
|
|
162
|
-
value: string;
|
|
163
|
-
onChange: (url: string) => void;
|
|
164
|
-
/** The setting's name — "Background image", "Logo image". */
|
|
165
|
-
label: string;
|
|
166
|
-
/**
|
|
167
|
-
* How THIS APP opens its media library: resolves to the URL chosen, or
|
|
168
|
-
* `null` when the person closes it without choosing. The admin opens its
|
|
169
|
-
* media window, the shop asks the admin to, a test resolves a string — the
|
|
170
|
-
* box does not know or care. Absent: the box shows the picture but offers no
|
|
171
|
-
* way to change it.
|
|
172
|
-
*
|
|
173
|
-
* A file DROPPED on the box comes as `file`, already held to the box's kind
|
|
174
|
-
* and to `maxSizeBytes` by the shell's intake: the app uploads it however it
|
|
175
|
-
* uploads everything else, and resolves to its URL.
|
|
176
|
-
*/
|
|
177
|
-
openLibrary?: (file?: File) => Promise<string | null>;
|
|
178
|
-
kind?: 'image' | 'video';
|
|
179
|
-
/** What the empty box says. Default "Choose an image" / "Choose a video". */
|
|
180
|
-
placeholder?: string;
|
|
181
|
-
readOnly?: boolean;
|
|
182
|
-
/**
|
|
183
|
-
* The picture's focus point, a CSS `object-position` string ("38% 64%").
|
|
184
|
-
* Given with `onFocusChange`, the dot sits ON the picture (the shell's
|
|
185
|
-
* `ImageFocusPoint`): one picture, never a second copy in a row of its own.
|
|
186
|
-
* Ignored for a video.
|
|
187
|
-
*/
|
|
188
|
-
focus?: string;
|
|
189
|
-
onFocusChange?: (focus: string) => void;
|
|
190
|
-
/** A dropped file larger than this is refused, with the reason announced. */
|
|
191
|
-
maxSizeBytes?: number;
|
|
192
|
-
/** Height of the filled picture in px. Default the shell's. */
|
|
193
|
-
height?: number;
|
|
194
|
-
/**
|
|
195
|
-
* The box's own words in the host's language:
|
|
196
|
-
* `useEaselStrings().pick.image` (0.95.0). Left out, English. A prop, not
|
|
197
|
-
* the strings provider: the pickers import nothing outside their folder.
|
|
198
|
-
*/
|
|
199
|
-
words?: PickWords['image'];
|
|
200
|
-
};
|
|
201
|
-
/**
|
|
202
|
-
* ONE IMAGE BOX (blueprint step 4.6), and since 2026-10-19 ONE PICTURE FIELD:
|
|
203
|
-
* the shell's `MediaUploadField` (efficient-shell #528, first published in
|
|
204
|
-
* 7.61.0), not a box drawn here. Both editors draw their picture rows through
|
|
205
|
-
* this — the website's `upload()` rows and the email designer's image field —
|
|
206
|
-
* so both get the shell's look: the picture with its Change image bar and the
|
|
207
|
-
* bin on hover (always shown on a screen with no hover), the drop zone, and,
|
|
208
|
-
* given `focus` + `onFocusChange`, the focus dot on the picture itself
|
|
209
|
-
* (Lewis 2026-10-19: "one picture, one dot").
|
|
210
|
-
*
|
|
211
|
-
* The library is the APP's. Every editor opens a different one — the admin's
|
|
212
|
-
* media window with its product and storefront tabs, the shop's ask to the
|
|
213
|
-
* admin, a future host's own — so the box is handed `openLibrary` and opens
|
|
214
|
-
* nothing itself, never a native file dialog: the shell field's `onPick` is
|
|
215
|
-
* always given, which is what keeps its own file dialog shut.
|
|
216
|
-
*
|
|
217
|
-
* What stays here is the box's own state: "Choosing" while the library is
|
|
218
|
-
* open (the shell's busy cover), and the line that says a library failed.
|
|
219
|
-
*/
|
|
220
|
-
declare function ImageBox({ value, onChange, label, openLibrary, kind, placeholder, readOnly, focus, onFocusChange, maxSizeBytes, height, words, }: ImageBoxProps): react.JSX.Element;
|
|
221
|
-
|
|
222
160
|
/**
|
|
223
161
|
* The colour maths the picker runs on — pure, no React, no DOM.
|
|
224
162
|
*
|
|
@@ -234,8 +172,9 @@ declare function ImageBox({ value, onChange, label, openLibrary, kind, placehold
|
|
|
234
172
|
*
|
|
235
173
|
* What is still easel's own: the readout (`hexReadout`), the box's length, the
|
|
236
174
|
* point maths the shell keeps private (`svFromPoint`), `hueFromPoint` (which
|
|
237
|
-
* reaches 360 at the strip's end, where the shell's stops at 359)
|
|
238
|
-
*
|
|
175
|
+
* reaches 360 at the strip's end, where the shell's stops at 359) — exported
|
|
176
|
+
* names hosts already import. A media file's name is the shell's
|
|
177
|
+
* `mediaFileName`; easel's `mediaName`, which nothing read, went in 15.0.0.
|
|
239
178
|
*/
|
|
240
179
|
|
|
241
180
|
declare const typedHex: (text: string) => string | null;
|
|
@@ -262,9 +201,5 @@ declare function hueFromPoint(x: number, box: {
|
|
|
262
201
|
left: number;
|
|
263
202
|
width: number;
|
|
264
203
|
}): number;
|
|
265
|
-
/** The last segment of a media URL, decoded and without its query — what a
|
|
266
|
-
* merchant recognises a file by. An inline `data:` or `blob:` URL has no file
|
|
267
|
-
* name, so it reads as none rather than as its own bytes. */
|
|
268
|
-
declare function mediaName(url: string): string;
|
|
269
204
|
|
|
270
|
-
export { ColourPicker, type ColourPickerProps, ColourWindow, type ColourWindowProps, HEX_MAX_LENGTH,
|
|
205
|
+
export { ColourPicker, type ColourPickerProps, ColourWindow, type ColourWindowProps, HEX_MAX_LENGTH, PickWords, type ThemeColour, hexReadout, hueFromPoint, svFromPoint, typedHex };
|
package/dist/pick/index.js
CHANGED
|
@@ -1,3 +1 @@
|
|
|
1
|
-
export{ColourPicker,ColourWindow,HEX_MAX_LENGTH,hexReadout,hexToHsv,hsvToHex,hueFromPoint,
|
|
2
|
-
return i("div",{className:"es-pick-image",children:[
|
|
3
|
-
/* @__PURE__ */r(a,{value:l,onChange:n,onPick:e=>{(async e=>{if(s&&!f&&!d){y(!0),b(!1);try{const o=await s(e);o&&n(o)}catch{b(!0)}finally{y(!1)}}})(e)},accept:"video"===t?"video/*":"image/*",kind:t,placeholder:m??("video"===t?v.chooseVideo:v.chooseImage),cta:k?v.hint:void 0,maxSizeBytes:g,height:p,allowReplace:k,allowRemove:!d,removeLabel:v.removeNamed({label:c}),focus:"image"===t?h:void 0,onFocusChange:"image"!==t||d?void 0:u,busy:f,busyLabel:v.choosing,disabled:d||!k&&!l}),x?/* @__PURE__ */r("p",{className:"es-pick-image-status is-error",role:"alert",children:v.failed}):null]})}export{l as ImageBox};
|
|
1
|
+
export{ColourPicker,ColourWindow,HEX_MAX_LENGTH,hexReadout,hexToHsv,hsvToHex,hueFromPoint,svFromPoint,typedHex}from"../chunk-U6LJ5UKD.js";import"../chunk-OFBZOI6W.js";
|
package/dist/pick/pick.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* efficient-easel/pick — the colour row
|
|
1
|
+
/* efficient-easel/pick — the colour row (blueprint step
|
|
2
2
|
4.6). Drawn on the panel's own tokens, so both editors' panels get the same
|
|
3
3
|
picker without a line of their own CSS. The swatch and the window it opens
|
|
4
4
|
are efficient-shell's (`Popover`, `ColorPickerPanel`, `colorSwatchClasses`;
|
|
@@ -195,23 +195,3 @@
|
|
|
195
195
|
-webkit-mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent);
|
|
196
196
|
mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent);
|
|
197
197
|
}
|
|
198
|
-
/* ── The image box ──────────────────────────────────────────────────────── */
|
|
199
|
-
/* The box itself is the shell's MediaUploadField (efficient-shell #528); only
|
|
200
|
-
the column and the failed-library line are drawn here. */
|
|
201
|
-
.es-pick-image {
|
|
202
|
-
display: flex;
|
|
203
|
-
flex-direction: column;
|
|
204
|
-
gap: 8px;
|
|
205
|
-
/* A host's field puts its control in a flex ROW (`.es-field-ctl`), where a
|
|
206
|
-
plain block shrinks to its content: the box takes the row instead. */
|
|
207
|
-
flex: 1 1 auto;
|
|
208
|
-
min-width: 0;
|
|
209
|
-
}
|
|
210
|
-
.es-pick-image-status {
|
|
211
|
-
margin: 0;
|
|
212
|
-
font-size: var(--text-xs, 12px);
|
|
213
|
-
color: var(--es-muted);
|
|
214
|
-
}
|
|
215
|
-
.es-pick-image-status.is-error {
|
|
216
|
-
color: var(--es-danger);
|
|
217
|
-
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{AddBlockRow as default}from"../../chunk-
|
|
1
|
+
export{AddBlockRow as default}from"../../chunk-OK7OH2ZN.js";import"../../chunk-HQ4VVRIC.js";import"../../chunk-PQRYAW2G.js";import"../../chunk-R6WTQWAC.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-VVPZMWJE.js";import"../../chunk-PLVEGYK6.js";import"../../chunk-SMM3ST7A.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-ECM5F6JJ.js";import"../../chunk-N3LYD2LK.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-XWFH2NHZ.js";import"../../chunk-4JSBIW5H.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-BALFHI3G.js";import"../../chunk-RC25EGHD.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-23VM4PMV.js";import"../../chunk-B4JN227A.js";import"../../chunk-2XMHLXMA.js";import"../../chunk-G3GWAP5R.js";import"../../chunk-WRFD4EXD.js";import"../../chunk-36LVP5WD.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-67GNT6PF.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-X4T6JT3M.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{blockKey,AddSidePanel as default,sectionKey,templateKey}from"../../chunk-
|
|
1
|
+
export{blockKey,AddSidePanel as default,sectionKey,templateKey}from"../../chunk-N2B32EZB.js";import"../../chunk-PA3PNTVV.js";import"../../chunk-BVN33R76.js";import"../../chunk-5ZBY24K7.js";import"../../chunk-62VPYC7F.js";import"../../chunk-HQ4VVRIC.js";import"../../chunk-PQRYAW2G.js";import"../../chunk-KCOBHPN6.js";import"../../chunk-R6WTQWAC.js";import"../../chunk-O7Q4DDJT.js";import"../../chunk-RSCMJIWS.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-UMDQ6CLQ.js";import"../../chunk-VVPZMWJE.js";import"../../chunk-PLVEGYK6.js";import"../../chunk-SMM3ST7A.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-ECM5F6JJ.js";import"../../chunk-N3LYD2LK.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-XWFH2NHZ.js";import"../../chunk-4JSBIW5H.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-BALFHI3G.js";import"../../chunk-RC25EGHD.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-IE55HNMA.js";import"../../chunk-Z6PVRXVY.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-23VM4PMV.js";import"../../chunk-B4JN227A.js";import"../../chunk-2XMHLXMA.js";import"../../chunk-G3GWAP5R.js";import"../../chunk-WRFD4EXD.js";import"../../chunk-36LVP5WD.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-POSLNRTO.js";import"../../chunk-KAML3KQH.js";import"../../chunk-67GNT6PF.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-X4T6JT3M.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{MediaSidePanel as default}from"../../chunk-
|
|
1
|
+
export{MediaSidePanel as default}from"../../chunk-63ZDVAVE.js";import"../../chunk-PQRYAW2G.js";import"../../chunk-R6WTQWAC.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-PLVEGYK6.js";import"../../chunk-SMM3ST7A.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-ECM5F6JJ.js";import"../../chunk-N3LYD2LK.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-XWFH2NHZ.js";import"../../chunk-4JSBIW5H.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-BALFHI3G.js";import"../../chunk-RC25EGHD.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-IE55HNMA.js";import"../../chunk-Z6PVRXVY.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-23VM4PMV.js";import"../../chunk-B4JN227A.js";import"../../chunk-2XMHLXMA.js";import"../../chunk-G3GWAP5R.js";import"../../chunk-WRFD4EXD.js";import"../../chunk-36LVP5WD.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-67GNT6PF.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-X4T6JT3M.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
|
|
@@ -19,9 +19,9 @@ import '../../types-CsgMwHHa.js';
|
|
|
19
19
|
import '../../wordFit-7XpmhcaW.js';
|
|
20
20
|
import '../../edit-lock/index.js';
|
|
21
21
|
import '../../panelWidths-D9hTLR25.js';
|
|
22
|
-
import '../../CanvasDragLayer-
|
|
22
|
+
import '../../CanvasDragLayer-dZCPbQCP.js';
|
|
23
23
|
import '../../session-DSQFmIvx.js';
|
|
24
|
-
import '../../words-
|
|
24
|
+
import '../../words-CvwYvkJm.js';
|
|
25
25
|
import '../../types-D8P9q-BG.js';
|
|
26
26
|
import 'efficient-shell/ui';
|
|
27
27
|
import '../../words-Cl9xMUYY.js';
|
|
@@ -487,7 +487,7 @@ declare function pastePlace(host: NodeMenuHost, held: ClipboardEntry, target: {
|
|
|
487
487
|
/** The three block keys. */
|
|
488
488
|
type NodeShortcut = "copy" | "cut" | "paste" | "delete";
|
|
489
489
|
/**
|
|
490
|
-
* ⌘C / ⌘X / ⌘V (Ctrl on Windows) — Copy, Cut and Paste of the SELECTED block — and Delete
|
|
490
|
+
* ⌘C / ⌘X / ⌘V (Ctrl on Windows) — Copy, Cut and Paste of the SELECTED block — and Delete, which deletes it (2026-10-14; never Backspace, 2026-10-20),
|
|
491
491
|
* the keyboard door to the menu's three rows, which print these keys beside
|
|
492
492
|
* them (0.105.0, `ScreenParts.nodeKeys`). The campaign designer's own test
|
|
493
493
|
* (admin-portal nodeShortcut), moved here with the keys.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{EASEL_NODE_CLIPBOARD,ancestorChain,nodeClipboardOf,nodeClipboardRules,nodeMenuItems,nodeShortcut,pageMenuItems,pastePlace,runNodeShortcut,textMenuItems,useNodeClipboard,useNodeContextMenu}from"../../chunk-
|
|
1
|
+
export{EASEL_NODE_CLIPBOARD,ancestorChain,nodeClipboardOf,nodeClipboardRules,nodeMenuItems,nodeShortcut,pageMenuItems,pastePlace,runNodeShortcut,textMenuItems,useNodeClipboard,useNodeContextMenu}from"../../chunk-UVQR7W6I.js";import"../../chunk-O7Q4DDJT.js";import"../../chunk-RSCMJIWS.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-VVPZMWJE.js";import"../../chunk-V7U33NF2.js";import"../../chunk-6WY6ZXJG.js";import"../../chunk-WXFZD7WC.js";import"../../chunk-OSPUG6S6.js";import"../../chunk-WK3AFPXY.js";import"../../chunk-PLVEGYK6.js";import"../../chunk-ECM5F6JJ.js";import"../../chunk-BALFHI3G.js";import"../../chunk-X4T6JT3M.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
|
|
@@ -15,9 +15,9 @@ import '../../types-41704JE4.js';
|
|
|
15
15
|
import '../../resolve-D68pb3Bx.js';
|
|
16
16
|
import '../../plan-CGREINRO.js';
|
|
17
17
|
import '../../watch-BTYOJpQU.js';
|
|
18
|
-
import '../../CanvasDragLayer-
|
|
18
|
+
import '../../CanvasDragLayer-dZCPbQCP.js';
|
|
19
19
|
import '../../session-DSQFmIvx.js';
|
|
20
|
-
import '../../words-
|
|
20
|
+
import '../../words-CvwYvkJm.js';
|
|
21
21
|
import '../../types-BsyPh6EW.js';
|
|
22
22
|
import '../../style-clipboard/index.js';
|
|
23
23
|
import '../../words-CnnHb9jo.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{ScreenChrome as default}from"../../chunk-
|
|
1
|
+
export{ScreenChrome as default}from"../../chunk-RQBIFINA.js";import"../../chunk-XT6DOSHO.js";import"../../chunk-FGNR22NY.js";import"../../chunk-2GVCAIPX.js";import"../../chunk-26OOWIJJ.js";import"../../chunk-NBDMTIU2.js";import"../../chunk-MQNBD6AB.js";import"../../chunk-LER7RKTO.js";import"../../chunk-7F52SZOI.js";import"../../chunk-RSKHAHPJ.js";import"../../chunk-RKTF5XLP.js";import"../../chunk-3Z2MVLCD.js";import"../../chunk-HM7S7H5H.js";import"../../chunk-KCBEE2MC.js";import"../../chunk-TZIIRGVY.js";import"../../chunk-GGC72GS4.js";import"../../chunk-N2BVA6TS.js";import"../../chunk-5545A3PC.js";import"../../chunk-N2B32EZB.js";import"../../chunk-PA3PNTVV.js";import"../../chunk-BVN33R76.js";import"../../chunk-5ZBY24K7.js";import"../../chunk-62VPYC7F.js";import"../../chunk-HQ4VVRIC.js";import"../../chunk-63ZDVAVE.js";import"../../chunk-PQRYAW2G.js";import"../../chunk-UVQR7W6I.js";import"../../chunk-2H3W5OLQ.js";import"../../chunk-ZZ64CEC2.js";import"../../chunk-ERR437B5.js";import"../../chunk-GMCZXMOV.js";import"../../chunk-RLBXE4EU.js";import"../../chunk-HNKB2ZYR.js";import"../../chunk-CLOS6SSX.js";import"../../chunk-S4AWJX4Q.js";import"../../chunk-KG7RJWOK.js";import"../../chunk-VPFNZ7TB.js";import"../../chunk-LOMEH6DG.js";import"../../chunk-KCOBHPN6.js";import"../../chunk-R6WTQWAC.js";import"../../chunk-O7Q4DDJT.js";import"../../chunk-RSCMJIWS.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-UMDQ6CLQ.js";import"../../chunk-VVPZMWJE.js";import"../../chunk-V7U33NF2.js";import"../../chunk-6WY6ZXJG.js";import"../../chunk-WXFZD7WC.js";import"../../chunk-OSPUG6S6.js";import"../../chunk-WK3AFPXY.js";import"../../chunk-I54UCYOU.js";import"../../chunk-GOTN2KY4.js";import"../../chunk-R5L2E7JX.js";import"../../chunk-BSPCSC45.js";import"../../chunk-IQ5TA7AM.js";import"../../chunk-TBF5CVPA.js";import"../../chunk-DUVRZ456.js";import"../../chunk-6W7WLPZH.js";import"../../chunk-IYT6NN2J.js";import"../../chunk-PLVEGYK6.js";import"../../chunk-SMM3ST7A.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-ECM5F6JJ.js";import"../../chunk-N3LYD2LK.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-XWFH2NHZ.js";import"../../chunk-4JSBIW5H.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-BALFHI3G.js";import"../../chunk-RC25EGHD.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-4VJATVVR.js";import"../../chunk-NDRZP6YR.js";import"../../chunk-H6DDIBQ4.js";import"../../chunk-IE55HNMA.js";import"../../chunk-Z6PVRXVY.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-23VM4PMV.js";import"../../chunk-B4JN227A.js";import"../../chunk-2XMHLXMA.js";import"../../chunk-G3GWAP5R.js";import"../../chunk-WRFD4EXD.js";import"../../chunk-36LVP5WD.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-POSLNRTO.js";import"../../chunk-KAML3KQH.js";import"../../chunk-67GNT6PF.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-X4T6JT3M.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
|
|
@@ -26,9 +26,9 @@ import '../../types-DGyDHiJV.js';
|
|
|
26
26
|
import '../../types-CsgMwHHa.js';
|
|
27
27
|
import '../../wordFit-7XpmhcaW.js';
|
|
28
28
|
import '../../panelWidths-D9hTLR25.js';
|
|
29
|
-
import '../../CanvasDragLayer-
|
|
29
|
+
import '../../CanvasDragLayer-dZCPbQCP.js';
|
|
30
30
|
import '../../session-DSQFmIvx.js';
|
|
31
|
-
import '../../words-
|
|
31
|
+
import '../../words-CvwYvkJm.js';
|
|
32
32
|
import '../../types-BsyPh6EW.js';
|
|
33
33
|
import '../../style-clipboard/index.js';
|
|
34
34
|
import '../../words-CnnHb9jo.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{DocumentScreen,ScreenMount as default}from"../../chunk-
|
|
1
|
+
export{DocumentScreen,ScreenMount as default}from"../../chunk-P3XVBLZ6.js";import"../../chunk-GXQCZJOP.js";import"../../chunk-RQBIFINA.js";import"../../chunk-XT6DOSHO.js";import"../../chunk-FGNR22NY.js";import"../../chunk-2GVCAIPX.js";import"../../chunk-26OOWIJJ.js";import"../../chunk-NBDMTIU2.js";import"../../chunk-MQNBD6AB.js";import"../../chunk-LER7RKTO.js";import"../../chunk-7F52SZOI.js";import"../../chunk-RSKHAHPJ.js";import"../../chunk-RKTF5XLP.js";import"../../chunk-KFPCMMRK.js";import"../../chunk-3Z2MVLCD.js";import"../../chunk-HM7S7H5H.js";import"../../chunk-KCBEE2MC.js";import"../../chunk-TZIIRGVY.js";import"../../chunk-GGC72GS4.js";import"../../chunk-N2BVA6TS.js";import"../../chunk-5545A3PC.js";import"../../chunk-N2B32EZB.js";import"../../chunk-PA3PNTVV.js";import"../../chunk-BVN33R76.js";import"../../chunk-5ZBY24K7.js";import"../../chunk-62VPYC7F.js";import"../../chunk-HQ4VVRIC.js";import"../../chunk-63ZDVAVE.js";import"../../chunk-PQRYAW2G.js";import"../../chunk-UVQR7W6I.js";import"../../chunk-2H3W5OLQ.js";import"../../chunk-ZZ64CEC2.js";import"../../chunk-ERR437B5.js";import"../../chunk-GMCZXMOV.js";import"../../chunk-RLBXE4EU.js";import"../../chunk-HNKB2ZYR.js";import"../../chunk-CLOS6SSX.js";import"../../chunk-S4AWJX4Q.js";import"../../chunk-KG7RJWOK.js";import"../../chunk-VPFNZ7TB.js";import"../../chunk-LOMEH6DG.js";import"../../chunk-KCOBHPN6.js";import"../../chunk-R6WTQWAC.js";import"../../chunk-O7Q4DDJT.js";import"../../chunk-RSCMJIWS.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-UMDQ6CLQ.js";import"../../chunk-VVPZMWJE.js";import"../../chunk-V7U33NF2.js";import"../../chunk-6WY6ZXJG.js";import"../../chunk-WXFZD7WC.js";import"../../chunk-OSPUG6S6.js";import"../../chunk-WK3AFPXY.js";import"../../chunk-I54UCYOU.js";import"../../chunk-GOTN2KY4.js";import"../../chunk-R5L2E7JX.js";import"../../chunk-BSPCSC45.js";import"../../chunk-IQ5TA7AM.js";import"../../chunk-TBF5CVPA.js";import"../../chunk-DUVRZ456.js";import"../../chunk-6W7WLPZH.js";import"../../chunk-IYT6NN2J.js";import"../../chunk-PLVEGYK6.js";import"../../chunk-SMM3ST7A.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-ECM5F6JJ.js";import"../../chunk-N3LYD2LK.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-XWFH2NHZ.js";import"../../chunk-4JSBIW5H.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-BALFHI3G.js";import"../../chunk-RC25EGHD.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-4VJATVVR.js";import"../../chunk-NDRZP6YR.js";import"../../chunk-H6DDIBQ4.js";import"../../chunk-IE55HNMA.js";import"../../chunk-Z6PVRXVY.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-23VM4PMV.js";import"../../chunk-B4JN227A.js";import"../../chunk-2XMHLXMA.js";import"../../chunk-G3GWAP5R.js";import"../../chunk-WRFD4EXD.js";import"../../chunk-36LVP5WD.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-POSLNRTO.js";import"../../chunk-KAML3KQH.js";import"../../chunk-67GNT6PF.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-X4T6JT3M.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
|
|
@@ -13,9 +13,9 @@ import '../../types-CsgMwHHa.js';
|
|
|
13
13
|
import '../../wordFit-7XpmhcaW.js';
|
|
14
14
|
import '../../edit-lock/index.js';
|
|
15
15
|
import '../../panelWidths-D9hTLR25.js';
|
|
16
|
-
import '../../CanvasDragLayer-
|
|
16
|
+
import '../../CanvasDragLayer-dZCPbQCP.js';
|
|
17
17
|
import '../../session-DSQFmIvx.js';
|
|
18
|
-
import '../../words-
|
|
18
|
+
import '../../words-CvwYvkJm.js';
|
|
19
19
|
import '../../types-BsyPh6EW.js';
|
|
20
20
|
import '../../style-clipboard/index.js';
|
|
21
21
|
import '../../words-CnnHb9jo.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{ScreenStoreProvider as default}from"../../chunk-
|
|
1
|
+
export{ScreenStoreProvider as default}from"../../chunk-KFPCMMRK.js";import"../../chunk-PQRYAW2G.js";import"../../chunk-R6WTQWAC.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-PLVEGYK6.js";import"../../chunk-SMM3ST7A.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-ECM5F6JJ.js";import"../../chunk-N3LYD2LK.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-XWFH2NHZ.js";import"../../chunk-4JSBIW5H.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-BALFHI3G.js";import"../../chunk-RC25EGHD.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-23VM4PMV.js";import"../../chunk-B4JN227A.js";import"../../chunk-2XMHLXMA.js";import"../../chunk-G3GWAP5R.js";import"../../chunk-WRFD4EXD.js";import"../../chunk-36LVP5WD.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-67GNT6PF.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-X4T6JT3M.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import{AddBlockRow as e}from"../../chunk-
|
|
2
|
-
return $(U,{children:[o.map(({child:e,zone:o,index:r})=>{const t=se?.props.id===e.props.id,s=
|
|
3
|
-
return $(
|
|
4
|
-
/* @__PURE__ */Q(
|
|
5
|
-
return $("div",{ref:
|
|
6
|
-
/* @__PURE__ */Q("div",{className:"sf-section-bar",children:/* @__PURE__ */Q(
|
|
7
|
-
/* @__PURE__ */$("div",{className:"sf-body",children:[
|
|
8
|
-
/* @__PURE__ */Q("div",{className:"sf-panel-head",children:/* @__PURE__ */Q(
|
|
9
|
-
/* @__PURE__ */Q(
|
|
10
|
-
/* @__PURE__ */Q(
|
|
11
|
-
return $(
|
|
12
|
-
/* @__PURE__ */Q(
|
|
13
|
-
/* @__PURE__ */$("button",{type:"button",className:"sf-add-card",onClick:
|
|
14
|
-
/* @__PURE__ */Q("span",{className:"sf-plus sf-plus--sm",children:"+"}),
|
|
1
|
+
import{AddBlockRow as e}from"../../chunk-OK7OH2ZN.js";import{scrollPreviewToSection as n,gotoPreviewSlide as o}from"../../chunk-3Z2MVLCD.js";import{useEaselUndoKeys as r}from"../../chunk-HM7S7H5H.js";import{SlotChildActionsProvider as t}from"../../chunk-KCBEE2MC.js";import{DEFAULT_PANEL_W as s}from"../../chunk-TZIIRGVY.js";import{usePartBridge as i}from"../../chunk-GGC72GS4.js";import{useSectionOps as c}from"../../chunk-N2BVA6TS.js";import"../../chunk-HQ4VVRIC.js";import{MediaSidePanel as p}from"../../chunk-63ZDVAVE.js";import{SELECTION_MODE as l,useScreenPinned as m,useScreenCanvasFrame as d,useScreenInspectorPanel as a,useScreenPickFollowsSelection as u,sameInspectorMode as h,useStandaloneScreenBridges as k,useScreenBlockLook as f,useScreenBlockRules as j}from"../../chunk-PQRYAW2G.js";import{useScreenDocument as S}from"../../chunk-ZZ64CEC2.js";import"../../chunk-ERR437B5.js";import"../../chunk-GMCZXMOV.js";import"../../chunk-RLBXE4EU.js";import"../../chunk-HNKB2ZYR.js";import"../../chunk-CLOS6SSX.js";import"../../chunk-S4AWJX4Q.js";import"../../chunk-KG7RJWOK.js";import"../../chunk-VPFNZ7TB.js";import"../../chunk-LOMEH6DG.js";import"../../chunk-KCOBHPN6.js";import{useMediaPanel as y,usePanelPick as N,useCancelPanelPick as C}from"../../chunk-R6WTQWAC.js";import"../../chunk-O7Q4DDJT.js";import"../../chunk-RSCMJIWS.js";import{useHostEscape as A}from"../../chunk-U3JP4VGF.js";import{DEFAULT_SCREEN_WORDS as M}from"../../chunk-VVPZMWJE.js";import"../../chunk-I54UCYOU.js";import"../../chunk-GOTN2KY4.js";import"../../chunk-R5L2E7JX.js";import"../../chunk-IQ5TA7AM.js";import{slotChildRowName as P}from"../../chunk-TBF5CVPA.js";import"../../chunk-DUVRZ456.js";import"../../chunk-6W7WLPZH.js";import"../../chunk-IYT6NN2J.js";import{slotFieldsOf as R,nestsInTree as x}from"../../chunk-PLVEGYK6.js";import{useEasel as V}from"../../chunk-SMM3ST7A.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-ECM5F6JJ.js";import"../../chunk-N3LYD2LK.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-XWFH2NHZ.js";import{LayersTree as v,Subtree as H,TreeRow as g,TreeRowAction as B,TreeSeam as E}from"../../chunk-4JSBIW5H.js";import{DEFAULT_TREE_WORDS as O}from"../../chunk-K56YDHYQ.js";import"../../chunk-BALFHI3G.js";import"../../chunk-RC25EGHD.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-NDRZP6YR.js";import{DEFAULT_SAVE_WORDS as w,saveIndicator as z}from"../../chunk-H6DDIBQ4.js";import{SaveState as D,panelWidthVars as L}from"../../chunk-IE55HNMA.js";import"../../chunk-Z6PVRXVY.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-23VM4PMV.js";import"../../chunk-B4JN227A.js";import"../../chunk-2XMHLXMA.js";import"../../chunk-G3GWAP5R.js";import"../../chunk-WRFD4EXD.js";import"../../chunk-36LVP5WD.js";import{useWords as b}from"../../chunk-MFIRYGHW.js";import"../../chunk-POSLNRTO.js";import"../../chunk-KAML3KQH.js";import{useTreeDrag as T}from"../../chunk-67GNT6PF.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-X4T6JT3M.js";import{zoneKey as W,parseZoneKey as Z}from"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";import{useState as F,useRef as G,useEffect as K,useCallback as Y,Fragment as J}from"react";import{Tooltip as I}from"efficient-shell/ui";import{TrashIcon as X}from"efficient-shell/icons/efficient";import{jsxs as $,jsx as Q,Fragment as U}from"react/jsx-runtime";var q=e=>n=>{n.target.closest("button, input")||e()},_={rowClick:q};function ee(){const{saveState:ee,readOnly:ne,readOnlyReason:oe=null}=S(),re=c(),{appState:te,selectedItem:se,config:ie}=V(e=>e),[ce,pe]=F(l),le=b("screen",M),me=b("tree",O),de=b("save",w),{first:ae,last:ue,panelOf:he}=m(),ke=he(ae),fe=d(),je=a(),Se=te.data.content?.[0]??null,ye=Se?.props.id??null,Ne=Se?.type===ae,Ce=Se?.type===ue,Ae=G(null),Me=G(null);r(Me);const Pe=y(),Re=N(),xe=C();u(se?.props.id),K(()=>{const e=Me.current;if(!Re||!e)return;const n=e=>{"Escape"===e.key&&xe()};return e.addEventListener("keydown",n),()=>e.removeEventListener("keydown",n)},[Re]),A(null!==Re,()=>xe()),K(()=>{ye&&Ae.current!==ye&&(Ae.current=ye,Ne?pe(ke??l):se||re.select({index:0}))},[ye,se,re,Ne]);const Ve=Y(e=>pe(n=>h(n,e)?n:e),[]),ve=k({kind:ce.kind,mode:ce,open:Ve,show:e=>pe(e),reveal:()=>{},select:(e,n)=>{pe(e=>h(e,n)?e:n),re.select(e)}}),{selectNode:He}=i({mode:ce,setMode:pe,onOpenPart:n}),ge=f(),{labelAtLevel:Be,Icon:Ee}=ge,{canAddTo:Oe}=j(),we=e=>Be(e,"block",ie.components[e]?.label??e),ze=e=>Be(e,"section",we(e)),De=!Ne&&"puck"===ce.kind&&se?.props.id===ye,Le=Se?Oe(Se.type)?.spec??null:null,be=Se&&Le?`${Se.props.id}:${Le.slot}`:null,Te=Se&&Le&&Array.isArray(Se.props[Le.slot])?Se.props[Le.slot]:[],We=e=>P(e,we,ge.plainText),Ze=(e,r)=>{Se&&Le&&be&&(pe(l),Le.slider?(o(String(Se.props.id),e),re.select({index:e,zone:be}),n(String(Se.props.id))):(re.select({index:e,zone:be}),n(r)))},Fe=()=>{if(!Se||!Le||!be)return;const e=Te.length;re.insertComponent(be,Le.childType,e),pe(l),Le.slider?requestAnimationFrame(()=>{o(String(Se.props.id),e),re.select({index:e,zone:be})}):re.select({index:e,zone:be})},Ge=e=>R(ie,e),Ke=e=>{const{parentId:n,slot:o}=Z(e),r=e=>{if(!e)return null;if(String(e.props.id)===n)return e;for(const n of Ge(e.type)){const o=Array.isArray(e.props[n])?e.props[n]:[];for(const e of o){const n=r(e);if(n)return n}}return null},t=r(Se)?.props[o];return Array.isArray(t)?t.length:0},Ye=(e,n,o)=>{const r=Math.min(Math.max(o,0),Ke(e)),t=n<r?r-1:r;t!==n&&(re.reorderComponent(e,n,t),pe(l),re.select({index:t,zone:e}))},Je=T({keyOf:e=>e.id,readOnly:Boolean(ne),canDrop:(e,n)=>W(n)===e.zone&&n.index>=0&&n.index<=Ke(e.zone),onDrop:(e,n)=>Ye(e.zone,e.index,n.index),onStep:(e,n)=>Ye(e.zone,e.index,n<0?e.index-1:e.index+2)}),Ie=(e,n)=>/* @__PURE__ */Q(E,{...ne?{}:Je.seam({place:{...Z(e),index:n}})},`seam:${e}:${n}`),Xe=e=>ge.blockRowName(e,we),$e=(e,o,r)=>{pe(l),re.select({index:o,zone:e}),n(r)},Qe=(e,n,o)=>{re.insertComponent(e,n,o),pe(l),re.select({index:o,zone:e})},Ue=(n,o,r)=>/* @__PURE__ */Q(e,{choices:r,onPick:e=>Qe(n,e,o)}),qe=(e,n)=>{const o=Ge((r=e).type).flatMap(e=>(Array.isArray(r.props[e])?r.props[e]:[]).map((n,o)=>({child:n,zone:`${r.props.id}:${e}`,index:o})));var r;const t=Oe(e.type),s=t?.choices??null,i="footer"===t?.source?Xe:We;/* @__PURE__ */
|
|
2
|
+
return $(U,{children:[o.map(({child:e,zone:o,index:r})=>{const t=se?.props.id===e.props.id,s=x(ie,e.type,n),c=i(e),p=String(e.props.id),m=()=>$e(o,r,p),{rowProps:d,...a}=Je.row({item:{id:p,zone:o,index:r},place:{...Z(o),index:r}},{onClick:q(m)});/* @__PURE__ */
|
|
3
|
+
return $(J,{children:[0===r&&Ie(o,0),
|
|
4
|
+
/* @__PURE__ */Q(g,{words:me,icon:/* @__PURE__ */Q(Ee,{type:e.type,size:13}),name:c,selected:t,onSelect:m,...a,actions:/* @__PURE__ */Q(B,{kind:"delete",label:le.deleteNamed({name:c}),onClick:()=>{return e=o,n=r,re.removeComponent(e,n),pe(l),void re.select(null);var e,n},children:/* @__PURE__ */Q(X,{size:13})}),rowProps:d}),s&&/* @__PURE__ */Q(H,{children:qe(e,n+1)}),Ie(o,r+1)]},String(e.props.id??`${o}-${r}`))}),t&&s?Ue(`${e.props.id}:${t.slot}`,o.length,s):null]})},_e="HeroSingle"===Se?.type,en=Boolean(Se)&&(Boolean(Oe(Se.type))||Ge(Se.type).length>0),nn=Boolean(Se)&&(Boolean(Le)||Ce||Ne||_e||en);/* @__PURE__ */
|
|
5
|
+
return $("div",{ref:Me,className:"sf-editor es-editor",style:L(s),children:[
|
|
6
|
+
/* @__PURE__ */Q("div",{className:"sf-section-bar",children:/* @__PURE__ */Q(D,null!==oe?{tone:"off",label:oe,role:"status"}:{...z(ee,de),role:"status"})}),
|
|
7
|
+
/* @__PURE__ */$("div",{className:"sf-body",children:[Re&&Pe?/* @__PURE__ */Q("aside",{className:"es-sidepanel es-sidepanel--left sf-panel sf-panel--left",children:/* @__PURE__ */Q(p,{panel:Pe,pick:Re})}):nn&&Se&&/* @__PURE__ */$("aside",{className:"es-sidepanel es-sidepanel--left sf-panel sf-panel--left",children:[
|
|
8
|
+
/* @__PURE__ */Q("div",{className:"sf-panel-head",children:/* @__PURE__ */Q(I,{content:Ne?le.headerSettings:le.sectionSettings({name:ze(Se.type)}),side:"bottom",children:/* @__PURE__ */Q("button",{type:"button",className:"sf-panel-title sf-panel-title--btn "+(De?"is-selected":""),"aria-pressed":De,onClick:()=>{Ne?pe(ke??l):(pe(l),re.select({index:0}))},children:ze(Se.type)})})}),
|
|
9
|
+
/* @__PURE__ */Q(v,{className:"sf-tree sf-scroll",rootProps:Je.rootProps(),words:me,children:/* @__PURE__ */Q(H,{children:Ne?
|
|
10
|
+
/* @__PURE__ */Q(g,{words:me,icon:/* @__PURE__ */Q(Ee,{type:"header",size:13}),name:le.headerSettings,selected:ce.kind===ke?.kind,onSelect:()=>pe(ke??l),rowProps:{onClick:q(()=>pe(ke??l))}}):Le?/* @__PURE__ */$(U,{children:[Te.map((e,n)=>{const o=se?.props.id===e.props.id,r=We(e),t=String(e.props.id),s=()=>Ze(n,t),{rowProps:i,...c}=Je.row({item:{id:t,zone:be,index:n},place:{...Z(be),index:n}},{onClick:q(s)});/* @__PURE__ */
|
|
11
|
+
return $(J,{children:[0===n&&Ie(be,0),
|
|
12
|
+
/* @__PURE__ */Q(g,{words:me,icon:/* @__PURE__ */Q(Ee,{type:e.type,size:13}),name:r,selected:o,onSelect:s,...c,actions:/* @__PURE__ */Q(B,{kind:"delete",label:le.deleteNamed({name:r}),onClick:()=>{return e=n,void(be&&(re.removeComponent(be,e),pe(l),re.select(null)));var e},children:/* @__PURE__ */Q(X,{size:13})}),rowProps:i}),Ie(be,n+1)]},String(e.props.id??n))}),
|
|
13
|
+
/* @__PURE__ */$("button",{type:"button",className:"sf-add-card",onClick:Fe,children:[
|
|
14
|
+
/* @__PURE__ */Q("span",{className:"sf-plus sf-plus--sm",children:"+"}),Le.addLabel]}),ye?ve.partRows?.(Se,_):null]}):qe(Se,1)})})]}),
|
|
15
15
|
/* @__PURE__ */Q("div",{className:"sf-center",children:/* @__PURE__ */Q("div",{className:"sf-preview-host",children:/* @__PURE__ */Q(fe,{})})}),
|
|
16
|
-
/* @__PURE__ */Q(t,{value:{selectChild:(e,n,o,r)=>"section"===
|
|
16
|
+
/* @__PURE__ */Q(t,{value:{selectChild:(e,n,o,r)=>"section"===Oe(r)?.source?Ze(n,o):$e(e,n,o),addChild:(e,n,o,r,t)=>"section"===Oe(t)?.source?Fe():Qe(`${e}:${n}`,o,r),childRowName:We,blockRowName:Xe},children:/* @__PURE__ */Q(je,{mode:ce,onOpenWebsiteSettings:ve.openSettings??(()=>{}),onSelectNode:He,hideNodeActions:!0})})]})]})}export{ee as default};
|