efficient-easel 3.7.0 → 5.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 +13 -0
- package/dist/buckets-Tj-nkBpg.d.ts +28 -0
- package/dist/chrome/chrome.css +30 -2
- package/dist/chrome/index.js +1 -1
- package/dist/chunk-37DMJPHL.js +14 -0
- package/dist/chunk-3GX7XBAF.js +5 -0
- package/dist/chunk-3ZJSLHHI.js +8 -0
- package/dist/chunk-4JSBIW5H.js +9 -0
- package/dist/{chunk-42TMLDSQ.js → chunk-6TOYXESC.js} +1 -1
- package/dist/chunk-BXQBCW3P.js +1 -0
- package/dist/{chunk-CRG625FM.js → chunk-C7ERK4DF.js} +3 -3
- package/dist/chunk-CRWFB7MU.js +21 -0
- package/dist/{chunk-RKSKUGWC.js → chunk-ETDRAF3O.js} +65 -65
- package/dist/{chunk-LZ6EGT4Y.js → chunk-G5JILVHG.js} +1 -1
- package/dist/{chunk-2I7MAA2U.js → chunk-HQWQLDCB.js} +1 -1
- package/dist/{chunk-XBNOEQMR.js → chunk-I7ER3P4U.js} +1 -1
- package/dist/chunk-KFV7N2DJ.js +1 -0
- package/dist/{chunk-SCPCXNTB.js → chunk-KJ2RODGT.js} +1 -1
- package/dist/chunk-KSTX646X.js +5 -0
- package/dist/chunk-MQNBD6AB.js +1 -0
- package/dist/{chunk-5SOSVTVI.js → chunk-PFNIVZPN.js} +1 -1
- package/dist/{chunk-6N64PNWF.js → chunk-RQWJOPRB.js} +1 -1
- package/dist/{chunk-GTDLBUOC.js → chunk-UB4TLWVJ.js} +6 -6
- package/dist/{chunk-MUZNA23W.js → chunk-UQ6CD3K2.js} +1 -1
- package/dist/{chunk-WSNVBUPL.js → chunk-Y324X4U4.js} +1 -1
- package/dist/drag/drag.css +5 -56
- package/dist/drag/index.js +1 -1
- package/dist/easel/index.d.ts +2 -2
- package/dist/fields/fields.css +4 -0
- package/dist/fields/index.d.ts +103 -51
- package/dist/fields/index.js +1 -1
- package/dist/panel/index.d.ts +8 -2
- package/dist/panel/index.js +19 -12
- package/dist/panel/panel.css +19 -0
- 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 +1 -1
- package/dist/screen/components/PageEditGuardNotices.js +1 -1
- package/dist/screen/components/ScreenChrome.js +1 -1
- package/dist/screen/components/ScreenMount.d.ts +1 -1
- package/dist/screen/components/ScreenMount.js +1 -1
- package/dist/screen/components/ScreenStoreProvider.d.ts +1 -1
- package/dist/screen/components/ScreenStoreProvider.js +1 -1
- package/dist/screen/components/SectionScreenShell.js +15 -15
- package/dist/screen/components/SidePanelHead.js +1 -1
- package/dist/screen/components/panel-widths.js +1 -1
- package/dist/screen/components/usePartBridge.d.ts +1 -1
- package/dist/screen/components/usePartBridge.js +1 -1
- package/dist/screen/index.d.ts +1 -1
- package/dist/screen/index.js +1 -1
- package/dist/screen/lib/puck/field-buckets.d.ts +20 -6
- package/dist/screen/lib/puck/field-buckets.js +1 -1
- package/dist/screen/lib/puck/style-clipboard.d.ts +15 -6
- package/dist/screen/lib/puck/style-clipboard.js +1 -1
- package/dist/screen/lib/puck/use-section-ops.js +1 -1
- package/dist/screen/lib/screen-parts.d.ts +1 -1
- package/dist/screen/lib/screen-parts.js +1 -1
- package/dist/screen/screen.css +9 -42
- 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/tree/index.d.ts +8 -4
- package/dist/tree/index.js +1 -1
- package/dist/tree/tree.css +6 -3
- package/dist/{types-BqGnUVX5.d.ts → types-BLRK6_JO.d.ts} +7 -0
- package/dist/{types-CWxUxPGO.d.ts → types-OUl0mK1k.d.ts} +5 -2
- package/dist/{words-BGrHZAJJ.d.ts → words-zH1H0WFw.d.ts} +8 -3
- package/package.json +3 -3
- package/dist/buckets-CuLM47h9.d.ts +0 -13
- package/dist/chunk-2GLQRNYT.js +0 -16
- package/dist/chunk-7P6IFCR4.js +0 -1
- package/dist/chunk-CRPJGCSO.js +0 -20
- package/dist/chunk-LUSM3QTY.js +0 -5
- package/dist/chunk-QTLAVDJE.js +0 -1
- package/dist/chunk-R2HLPNQF.js +0 -1
- package/dist/chunk-UFY6RNMT.js +0 -9
- package/dist/chunk-YIKMVF24.js +0 -5
- package/dist/chunk-YNOZ5NXW.js +0 -14
|
@@ -18,7 +18,7 @@ import '../../words-BDignMl_.js';
|
|
|
18
18
|
import '../../types-BsyPh6EW.js';
|
|
19
19
|
import '../../style-clipboard/index.js';
|
|
20
20
|
import '../../words-CnnHb9jo.js';
|
|
21
|
-
import '../../types-
|
|
21
|
+
import '../../types-BLRK6_JO.js';
|
|
22
22
|
import '../../words-Cl9xMUYY.js';
|
|
23
23
|
import './AddSidePanel.js';
|
|
24
24
|
import '../lib/section-template-types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{usePartBridge}from"../../chunk-
|
|
1
|
+
export{usePartBridge}from"../../chunk-RQWJOPRB.js";import"../../chunk-I7ER3P4U.js";import"../../chunk-IYT6NN2J.js";import"../../chunk-I54UCYOU.js";import"../../chunk-GOTN2KY4.js";import"../../chunk-R5L2E7JX.js";import"../../chunk-KSTX646X.js";import"../../chunk-PLVEGYK6.js";import"../../chunk-R6WTQWAC.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-XW4AV5N4.js";import"../../chunk-AELNNAFM.js";import"../../chunk-CRWFB7MU.js";import"../../chunk-OZ72A6MY.js";import"../../chunk-4JSBIW5H.js";import"../../chunk-3ZJSLHHI.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-EA2HTX37.js";import"../../chunk-UK2FQOUT.js";import"../../chunk-66LWADFP.js";import"../../chunk-QLD57GBB.js";import"../../chunk-FFYXVAAL.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-67GNT6PF.js";import"../../chunk-ZNCEOSXO.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
|
package/dist/screen/index.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ import '../words-BDignMl_.js';
|
|
|
24
24
|
import '../types-BsyPh6EW.js';
|
|
25
25
|
import '../style-clipboard/index.js';
|
|
26
26
|
import '../words-CnnHb9jo.js';
|
|
27
|
-
import '../types-
|
|
27
|
+
import '../types-BLRK6_JO.js';
|
|
28
28
|
import '../words-Cl9xMUYY.js';
|
|
29
29
|
import './components/AddSidePanel.js';
|
|
30
30
|
import './lib/section-template-types.js';
|
package/dist/screen/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../chunk-GZO72N3Q.js";export{DocumentScreen,ScreenMount}from"../chunk-
|
|
1
|
+
import"../chunk-GZO72N3Q.js";export{DocumentScreen,ScreenMount}from"../chunk-C7ERK4DF.js";import"../chunk-GXQCZJOP.js";export{ScreenStoreProvider}from"../chunk-G5JILVHG.js";import"../chunk-ETDRAF3O.js";import"../chunk-26OOWIJJ.js";import"../chunk-BXQBCW3P.js";import"../chunk-FGNR22NY.js";import"../chunk-ZE7I3PLX.js";import"../chunk-2GVCAIPX.js";import"../chunk-PAM3NLFL.js";import"../chunk-7F52SZOI.js";import"../chunk-MQNBD6AB.js";import"../chunk-TBF5CVPA.js";import"../chunk-4ES5JGGX.js";import"../chunk-IQ5TA7AM.js";import"../chunk-DUVRZ456.js";import"../chunk-6W7WLPZH.js";import"../chunk-VZGLBEAE.js";import"../chunk-KCBEE2MC.js";import"../chunk-6TOYXESC.js";import"../chunk-RQWJOPRB.js";import"../chunk-I7ER3P4U.js";import"../chunk-IYT6NN2J.js";import"../chunk-MTRFMGBO.js";import"../chunk-HQWQLDCB.js";import"../chunk-BSPCSC45.js";import"../chunk-I54UCYOU.js";import"../chunk-GOTN2KY4.js";import"../chunk-R5L2E7JX.js";import"../chunk-WZMU646D.js";import"../chunk-S4AWJX4Q.js";import"../chunk-ERR437B5.js";import"../chunk-KG7RJWOK.js";import"../chunk-GMCZXMOV.js";export{NO_DOCUMENT_ADDRESSING}from"../chunk-RLBXE4EU.js";import"../chunk-HNKB2ZYR.js";import"../chunk-CLOS6SSX.js";import"../chunk-VPFNZ7TB.js";import"../chunk-LOMEH6DG.js";import"../chunk-V7U33NF2.js";import"../chunk-5545A3PC.js";import"../chunk-3GX7XBAF.js";import"../chunk-5ZBY24K7.js";import"../chunk-PA3PNTVV.js";import"../chunk-BVN33R76.js";import"../chunk-PFNIVZPN.js";import"../chunk-KQMML6JM.js";import"../chunk-KCOBHPN6.js";export{EaselSessionProvider,useEaselSession}from"../chunk-O7Q4DDJT.js";export{EFFICIENT_BACKEND,activateEaselSession,backendOf,createEaselSession,currentEaselSession,deactivateEaselSession,efficientClientOpen,isEfficientBackend,provideDefaultBackend,resetAmbientEaselSession,sessionRegistry,setSessionBridgedSite,setSessionDocumentSite}from"../chunk-RSCMJIWS.js";import"../chunk-HQ4VVRIC.js";import"../chunk-KJ2RODGT.js";export{SELECTION_MODE,ScreenCanvasTargetProvider,ScreenPartsProvider,isPinnedFirst,isPinnedLast,isSlotMode,sameInspectorMode,screenSlotsOf,useScreenAdd,useScreenBlockLook,useScreenBlockRules,useScreenBridges,useScreenCanvasDrag,useScreenCanvasFrame,useScreenCanvasHead,useScreenCanvasTarget,useScreenDevices,useScreenDocumentLabel,useScreenDocumentPass,useScreenInspectorPanel,useScreenLeftView,useScreenNodeKeys,useScreenNotify,useScreenOwnerName,useScreenParts,useScreenPickFollowsSelection,useScreenPinned,useScreenSaveSwitch,useScreenStorageNamespace,useScreenStyleClipboard,useStandaloneScreenBridges}from"../chunk-KSTX646X.js";import"../chunk-PLVEGYK6.js";import"../chunk-R6WTQWAC.js";export{DETACHED_EASEL_HOST,EaselHostContext,EaselHostProvider,createEaselHost,useEaselHost,useHostEscape}from"../chunk-U3JP4VGF.js";import"../chunk-6WY6ZXJG.js";import"../chunk-MCHMF32I.js";import"../chunk-XW4AV5N4.js";import"../chunk-AELNNAFM.js";import"../chunk-CRWFB7MU.js";import"../chunk-OZ72A6MY.js";import"../chunk-4JSBIW5H.js";import"../chunk-3ZJSLHHI.js";import"../chunk-K56YDHYQ.js";import"../chunk-KFV7N2DJ.js";import"../chunk-YRLPFZW3.js";import"../chunk-BXMXTO36.js";import"../chunk-EA2HTX37.js";import"../chunk-OSPUG6S6.js";import"../chunk-WK3AFPXY.js";import"../chunk-UK2FQOUT.js";import"../chunk-4VJATVVR.js";import"../chunk-BDTITTMW.js";import"../chunk-H6DDIBQ4.js";import"../chunk-UB4TLWVJ.js";import"../chunk-Y2G7CU6A.js";import"../chunk-THWO5YVZ.js";import"../chunk-RE4LP46F.js";import"../chunk-MJM6SFD3.js";import"../chunk-2OAZYSWJ.js";import"../chunk-66LWADFP.js";import"../chunk-QLD57GBB.js";import"../chunk-FFYXVAAL.js";import"../chunk-MFIRYGHW.js";import"../chunk-37DMJPHL.js";import"../chunk-O2NLQBFX.js";import"../chunk-67GNT6PF.js";import"../chunk-PAELDYYS.js";import"../chunk-ZNCEOSXO.js";import"../chunk-P2VEMZH5.js";import"../chunk-KRXQM65X.js";import"../chunk-NKB3KVAB.js";
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { S as SettingsBucket } from '../../../buckets-
|
|
1
|
+
import { S as SettingsBucket, D as DesignGroup } from '../../../buckets-Tj-nkBpg.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* lib/puck/field-buckets.ts — the
|
|
5
|
-
* sorted into,
|
|
4
|
+
* lib/puck/field-buckets.ts — the two settings buckets a section's fields are
|
|
5
|
+
* sorted into (Design, Animation: owner 2026-10-08, final 2026-10-10), the
|
|
6
|
+
* field key each bucket's header is emitted under, and the field key of each
|
|
7
|
+
* Design group's heading.
|
|
6
8
|
*
|
|
7
9
|
* Moved out of lib/puck/field-groups (which re-exports both) so the editor's
|
|
8
|
-
* screen can read a
|
|
9
|
-
*
|
|
10
|
+
* screen can read a header's key — the style clipboard copies a look by the
|
|
11
|
+
* groups it sits in — without importing the field builders that sort a
|
|
10
12
|
* section's fields (doc/adr/0004). The reasoning behind the buckets themselves
|
|
11
13
|
* stays in field-groups, beside the pass that applies them.
|
|
12
14
|
*/
|
|
@@ -18,5 +20,17 @@ type Bucket = SettingsBucket;
|
|
|
18
20
|
* already carry level-1 headers use (`_sText`, `_sImage`, `_sSetup`, …).
|
|
19
21
|
*/
|
|
20
22
|
declare const BUCKET_KEY: Record<Bucket, string>;
|
|
23
|
+
/**
|
|
24
|
+
* The field key of each Design group's heading, inside the Design bucket. The
|
|
25
|
+
* HOST emits them, in `DESIGN_GROUPS` order, one for each group it has; a row
|
|
26
|
+
* belongs to the heading above it. `_dContent` is a marker that draws no
|
|
27
|
+
* heading (the Content part has none), and the rows before the first group
|
|
28
|
+
* heading of Design are Content too. `_d*` for Design's own headings, apart
|
|
29
|
+
* from the `_s*` bucket headers and the `_g*` group headers a section draws.
|
|
30
|
+
* Only these six keys are group headings: `_dDevice` (the device note,
|
|
31
|
+
* ./device-fields) shares the prefix and is not one, so never read a group off
|
|
32
|
+
* the prefix.
|
|
33
|
+
*/
|
|
34
|
+
declare const DESIGN_GROUP_KEY: Record<DesignGroup, string>;
|
|
21
35
|
|
|
22
|
-
export { BUCKET_KEY, type Bucket };
|
|
36
|
+
export { BUCKET_KEY, type Bucket, DESIGN_GROUP_KEY };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{BUCKET_KEY}from"../../../chunk-
|
|
1
|
+
export{BUCKET_KEY,DESIGN_GROUP_KEY}from"../../../chunk-MQNBD6AB.js";
|
|
@@ -19,7 +19,7 @@ import '../../../panelWidths-D9hTLR25.js';
|
|
|
19
19
|
import '../../../CanvasDragLayer-DVJGgA-g.js';
|
|
20
20
|
import '../../../session-DSQFmIvx.js';
|
|
21
21
|
import '../../../words-BDignMl_.js';
|
|
22
|
-
import '../../../types-
|
|
22
|
+
import '../../../types-BLRK6_JO.js';
|
|
23
23
|
import '../../../words-Cl9xMUYY.js';
|
|
24
24
|
import '../../components/AddSidePanel.js';
|
|
25
25
|
import '../section-template-types.js';
|
|
@@ -52,12 +52,21 @@ import './slot-section-spec.js';
|
|
|
52
52
|
* 2. WHAT KIND each row is — {@link shopFieldKind}.
|
|
53
53
|
*
|
|
54
54
|
* ── WHICH ROWS ──────────────────────────────────────────────────────────────
|
|
55
|
-
* Owner's rule 3
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
55
|
+
* Owner's rule 3 was "the Style and Layout tabs, never Content". Since 4.0.0
|
|
56
|
+
* the panel has two tabs, Design and Animation (owner, final 2026-10-10), and
|
|
57
|
+
* what was the Content tab sits at the top of Design — so the rule is read off
|
|
58
|
+
* the Design GROUPS instead of the tabs: the rows under Size, Design, Layout or
|
|
59
|
+
* Position are a look and are copied. Never the Content group (its
|
|
60
|
+
* `_dContent` marker, and every row of Design before the first group heading),
|
|
61
|
+
* never Anchor, never Animation.
|
|
59
62
|
*
|
|
60
|
-
*
|
|
63
|
+
* The panel after `assignSectionGroups` is a flat list in which each bucket
|
|
64
|
+
* header (`BUCKET_KEY`) opens its run — the same reading the tab strip hides
|
|
65
|
+
* rows by — and inside Design each group heading (`DESIGN_GROUP_KEY`) opens
|
|
66
|
+
* its own; a row belongs to the headers above it. A group heading counts only
|
|
67
|
+
* inside Design.
|
|
68
|
+
*
|
|
69
|
+
* Left out even in those groups (the list GG approved on 2026-09-19):
|
|
61
70
|
* · every picture (`__media`) — Media folded into Style on 2026-09-14, and a
|
|
62
71
|
* picture is Content;
|
|
63
72
|
* · words and links (`__text`, `__link`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{copyNodeStyle,nodeStyleRows,planNodePaste,shopFieldKind,siteStyleScope,styleClipboardOf}from"../../../chunk-
|
|
1
|
+
export{copyNodeStyle,nodeStyleRows,planNodePaste,shopFieldKind,siteStyleScope,styleClipboardOf}from"../../../chunk-BXQBCW3P.js";import"../../../chunk-ZE7I3PLX.js";import"../../../chunk-PAM3NLFL.js";import"../../../chunk-7F52SZOI.js";import"../../../chunk-MQNBD6AB.js";import"../../../chunk-DUVRZ456.js";import"../../../chunk-BSPCSC45.js";import"../../../chunk-V7U33NF2.js";import"../../../chunk-6WY6ZXJG.js";import"../../../chunk-MCHMF32I.js";import"../../../chunk-MFIRYGHW.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{useSectionOps}from"../../../chunk-
|
|
1
|
+
export{useSectionOps}from"../../../chunk-I7ER3P4U.js";import"../../../chunk-KSTX646X.js";import"../../../chunk-PLVEGYK6.js";import"../../../chunk-R6WTQWAC.js";import"../../../chunk-U3JP4VGF.js";import"../../../chunk-XW4AV5N4.js";import"../../../chunk-AELNNAFM.js";import"../../../chunk-CRWFB7MU.js";import"../../../chunk-OZ72A6MY.js";import"../../../chunk-4JSBIW5H.js";import"../../../chunk-3ZJSLHHI.js";import"../../../chunk-K56YDHYQ.js";import"../../../chunk-KFV7N2DJ.js";import"../../../chunk-YRLPFZW3.js";import"../../../chunk-EA2HTX37.js";import"../../../chunk-UK2FQOUT.js";import"../../../chunk-66LWADFP.js";import"../../../chunk-QLD57GBB.js";import"../../../chunk-FFYXVAAL.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-67GNT6PF.js";import"../../../chunk-ZNCEOSXO.js";import"../../../chunk-P2VEMZH5.js";import"../../../chunk-KRXQM65X.js";import"../../../chunk-NKB3KVAB.js";
|
|
@@ -8,7 +8,7 @@ import { M as MeasuredCanvas, C as CanvasDragModel } from '../../CanvasDragLayer
|
|
|
8
8
|
import { E as EaselContextMenuItem } from '../../types-BsyPh6EW.js';
|
|
9
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-BLRK6_JO.js';
|
|
12
12
|
import { AddKey } from '../components/AddSidePanel.js';
|
|
13
13
|
import { k as AnyScreenTarget } from '../../host-CiuzZJXj.js';
|
|
14
14
|
import { HostProduct } from './host-chrome.js';
|
|
@@ -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,useScreenStorageNamespace,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-KSTX646X.js";import"../../chunk-PLVEGYK6.js";import"../../chunk-R6WTQWAC.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-XW4AV5N4.js";import"../../chunk-AELNNAFM.js";import"../../chunk-CRWFB7MU.js";import"../../chunk-OZ72A6MY.js";import"../../chunk-4JSBIW5H.js";import"../../chunk-3ZJSLHHI.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-EA2HTX37.js";import"../../chunk-UK2FQOUT.js";import"../../chunk-66LWADFP.js";import"../../chunk-QLD57GBB.js";import"../../chunk-FFYXVAAL.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-67GNT6PF.js";import"../../chunk-ZNCEOSXO.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
|
package/dist/screen/screen.css
CHANGED
|
@@ -337,51 +337,18 @@
|
|
|
337
337
|
box-shadow: inset 2px 0 0 var(--sf-accent);
|
|
338
338
|
}
|
|
339
339
|
|
|
340
|
-
/* ── Left panel: section tree
|
|
340
|
+
/* ── Left panel: section tree ─────────────────────────────────────────────
|
|
341
|
+
The Layers tree is the left panel's scroll box (`lib/puck/tree-reveal`
|
|
342
|
+
scrolls it to the selected row). Nothing more: its ONE inset, 12 a side, is
|
|
343
|
+
`.es-tree`'s (`efficient-easel/tree.css`). This rule used to pad the same
|
|
344
|
+
element a second time (8 / 11 / 10 over `.es-tree`'s 8 / 12 / 12) and to
|
|
345
|
+
re-declare `--es-rhythm-group` 10 and `--es-rhythm-between` 6 for rows that
|
|
346
|
+
stopped reading them when they became the shell's `TreeRow` — their gaps
|
|
347
|
+
are the shell tree's, 4 (Lewis on the Pages panel, 2026-10-13: "packed too
|
|
348
|
+
tight"). */
|
|
341
349
|
.sf-tree {
|
|
342
350
|
flex: 1;
|
|
343
351
|
overflow-y: auto;
|
|
344
|
-
/* THE TWO SIDES PAY FOR DIFFERENT THINGS, and they always did.
|
|
345
|
-
LEFT 8 — the inset a rounded row needs. The reason WAS "a rounded bar
|
|
346
|
-
cannot bleed to a panel edge"; the bars are gone (One Ladder, 2026-09-04)
|
|
347
|
-
and the reason survives them unchanged, because every row in the tree is
|
|
348
|
-
still a rounded control and an inset control is simply a control.
|
|
349
|
-
RIGHT 11 — this element also carries `.sf-scroll`, and
|
|
350
|
-
`.sf-scroll::-webkit-scrollbar` is `width: 11px` of REAL, space-taking
|
|
351
|
-
gutter, not an overlay. This tree scrolls on almost every page. What used
|
|
352
|
-
to live at the row's right end was the caret; it is the count pill now,
|
|
353
|
-
and a count sitting under a scrollbar thumb is the same defect wearing a
|
|
354
|
-
different glyph.
|
|
355
|
-
Everything inside still starts on the same 11px text column, which is what
|
|
356
|
-
keeps the words aligned down the panel. */
|
|
357
|
-
padding: 0 11px 10px 8px;
|
|
358
|
-
|
|
359
|
-
/* ── THE TREE'S RHYTHM — the shell's names, the tree's own density ─────────
|
|
360
|
-
`efficient-easel` 0.19.0 stopped hiding its spacing inside literals and gave
|
|
361
|
-
each rhythm a name (card 66228, `efficient-easel/panel.css`). The tree reads
|
|
362
|
-
those names. It does NOT read the panel's VALUES and does not compute them:
|
|
363
|
-
|
|
364
|
-
· Copying 28/7 in would be a second source of truth for numbers the shell
|
|
365
|
-
is already the source of — the one rule that sits above a green suite.
|
|
366
|
-
· A scale FACTOR off them would be a lie. Lewis picked the tree's two
|
|
367
|
-
numbers by eye on 2026-08-31 (`mockups/layers-panel-v9-left-only-and-drag.html`
|
|
368
|
-
and `editor-add-and-context-v1.html`): 10 between bars, 6 between rows.
|
|
369
|
-
Against the panel that is 10/36 = 0.28 and 6/28 = 0.21 — TWO factors,
|
|
370
|
-
not one, so there is no single number to scale by. `panel.css` already
|
|
371
|
-
refuses this shape for the same reason, in its own words: 28 was
|
|
372
|
-
measured, it is not "10 plus 18".
|
|
373
|
-
|
|
374
|
-
So what is shared is the VOCABULARY and the RULE, not the values: `-group`
|
|
375
|
-
means "a heading, from what is above it" in both panels and `-between`
|
|
376
|
-
means "one row, from the next" in both, each stated once at its own
|
|
377
|
-
density. A tree at the panel's 28px a row would scroll forever.
|
|
378
|
-
|
|
379
|
-
Declared HERE rather than on `.sf-editor` deliberately — the settings panel
|
|
380
|
-
is a sibling reading the same names from the shell, and an override at the
|
|
381
|
-
editor root would re-rhythm IT too. `scripts/test-tree-rhythm-tokens.ts` is
|
|
382
|
-
the gate. */
|
|
383
|
-
--es-rhythm-group: 10px;
|
|
384
|
-
--es-rhythm-between: 6px;
|
|
385
352
|
}
|
|
386
353
|
|
|
387
354
|
.sf-chip {
|
|
@@ -5,7 +5,7 @@ import { D as DragWords } from '../words-BDignMl_.js';
|
|
|
5
5
|
import { LockWords } from '../edit-lock/index.js';
|
|
6
6
|
import { F as FieldsWords } from '../words-vhnV8sM7.js';
|
|
7
7
|
import { N as NodeMenuWords } from '../words-DMG4dYq2.js';
|
|
8
|
-
import { P as PanelWords } from '../words-
|
|
8
|
+
import { P as PanelWords } from '../words-zH1H0WFw.js';
|
|
9
9
|
import { P as PickWords } from '../words-is_Vy6hn.js';
|
|
10
10
|
import { ScreenWords } from '../screen/words.js';
|
|
11
11
|
export { ScreenAddWords } from '../screen/words.js';
|
|
@@ -19,7 +19,7 @@ import 'react';
|
|
|
19
19
|
import '../panelWidths-D9hTLR25.js';
|
|
20
20
|
import '../engine-DBxp_v6B.js';
|
|
21
21
|
import '../markup/index.js';
|
|
22
|
-
import '../buckets-
|
|
22
|
+
import '../buckets-Tj-nkBpg.js';
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* The easel canvas's own words (`efficient-easel/strings`, 0.95.0). There is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{DEFAULT_EASEL_STRINGS,mergeEaselStrings}from"../chunk-
|
|
1
|
+
export{DEFAULT_EASEL_STRINGS,mergeEaselStrings}from"../chunk-Y324X4U4.js";import"../chunk-M6F6LS3H.js";import"../chunk-ZAOM6PFH.js";import"../chunk-6WY6ZXJG.js";import"../chunk-MCHMF32I.js";import"../chunk-AELNNAFM.js";import"../chunk-K56YDHYQ.js";import"../chunk-KFV7N2DJ.js";import"../chunk-WK3AFPXY.js";import"../chunk-H6DDIBQ4.js";import"../chunk-Y2G7CU6A.js";import"../chunk-RE4LP46F.js";import"../chunk-2OAZYSWJ.js";import"../chunk-JZDEIRH4.js";import"../chunk-FFYXVAAL.js";import"../chunk-546BBOPE.js";import"../chunk-O2NLQBFX.js";
|
package/dist/strings/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export { D as DragWords } from '../words-BDignMl_.js';
|
|
|
8
8
|
export { F as FieldsWords } from '../words-vhnV8sM7.js';
|
|
9
9
|
export { LockWords } from '../edit-lock/index.js';
|
|
10
10
|
export { N as NodeMenuWords } from '../words-DMG4dYq2.js';
|
|
11
|
-
export { P as PanelWords } from '../words-
|
|
11
|
+
export { P as PanelWords } from '../words-zH1H0WFw.js';
|
|
12
12
|
export { P as PickWords } from '../words-is_Vy6hn.js';
|
|
13
13
|
export { S as SaveWords } from '../words-CvFnwGSr.js';
|
|
14
14
|
export { ScreenAddWords, ScreenWords } from '../screen/words.js';
|
|
@@ -16,7 +16,7 @@ export { S as StyleClipboardWords } from '../words-CnnHb9jo.js';
|
|
|
16
16
|
export { T as TextStylesWords } from '../words-CRYvAiHX.js';
|
|
17
17
|
export { T as TreeWords } from '../words-Cl9xMUYY.js';
|
|
18
18
|
import '../markup/index.js';
|
|
19
|
-
import '../buckets-
|
|
19
|
+
import '../buckets-Tj-nkBpg.js';
|
|
20
20
|
import '../types-Dt1CFR1S.js';
|
|
21
21
|
import '../types-CsgMwHHa.js';
|
|
22
22
|
import '../wordFit-7XpmhcaW.js';
|
package/dist/strings/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{DEFAULT_EASEL_STRINGS as r,mergeEaselStrings as n}from"../chunk-
|
|
1
|
+
import{DEFAULT_EASEL_STRINGS as r,mergeEaselStrings as n}from"../chunk-Y324X4U4.js";export{DEFAULT_EASEL_STRINGS,mergeEaselStrings}from"../chunk-Y324X4U4.js";import"../chunk-M6F6LS3H.js";import"../chunk-ZAOM6PFH.js";import"../chunk-6WY6ZXJG.js";import"../chunk-MCHMF32I.js";import"../chunk-AELNNAFM.js";import"../chunk-K56YDHYQ.js";import"../chunk-KFV7N2DJ.js";import"../chunk-WK3AFPXY.js";import"../chunk-H6DDIBQ4.js";import"../chunk-Y2G7CU6A.js";import"../chunk-RE4LP46F.js";import"../chunk-2OAZYSWJ.js";import"../chunk-JZDEIRH4.js";import"../chunk-FFYXVAAL.js";import"../chunk-546BBOPE.js";import{stringsContext as o}from"../chunk-MFIRYGHW.js";import"../chunk-O2NLQBFX.js";import{useContext as t,useMemo as c}from"react";import{jsx as i}from"react/jsx-runtime";function s({value:s,locale:u,children:m}){const e=o(),p=t(e),h=p?.strings??r,j=u??p?.locale??"en",k=c(()=>({strings:n(h,s),locale:j}),[h,s,j]);/* @__PURE__ */
|
|
2
2
|
return i(e.Provider,{value:k,children:m})}function u(){return t(o())?.strings??r}function m(){return t(o())?.locale??"en"}export{s as EaselStringsProvider,m as useEaselLocale,u as useEaselStrings};
|
package/dist/tree/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { L as LayersTreeProps, S as SubtreeProps, a as TreeGroupLabelProps, b as TreeEmptySlotProps, c as TreeRowProps, d as TreeRowActionProps, e as TreeSeamProps } from '../types-
|
|
3
|
-
export { f as TreeRowFold, T as TreeRowMark } from '../types-
|
|
2
|
+
import { L as LayersTreeProps, S as SubtreeProps, a as TreeGroupLabelProps, b as TreeEmptySlotProps, c as TreeRowProps, d as TreeRowActionProps, e as TreeSeamProps } from '../types-BLRK6_JO.js';
|
|
3
|
+
export { f as TreeRowFold, T as TreeRowMark } from '../types-BLRK6_JO.js';
|
|
4
4
|
export { T as TreeWords } from '../words-Cl9xMUYY.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -9,8 +9,12 @@ export { T as TreeWords } from '../words-Cl9xMUYY.js';
|
|
|
9
9
|
* `screen/lib/puck/tree-reveal` scrolls, and the scroll box `tree.css` keeps.
|
|
10
10
|
*/
|
|
11
11
|
declare function LayersTree({ className, children, rootProps, ariaLabel, words }: LayersTreeProps): react.JSX.Element;
|
|
12
|
-
/**
|
|
13
|
-
|
|
12
|
+
/**
|
|
13
|
+
* A quiet uppercase label over a run of rows — the shell's `TreeGroupLabel`,
|
|
14
|
+
* with its count and its fold (efficient-shell, "TreeGroupLabel takes a count
|
|
15
|
+
* and folds"): the Pages panel's headings and the Layers panel's are one.
|
|
16
|
+
*/
|
|
17
|
+
declare function TreeGroupLabel({ children, count, expanded, onToggle }: TreeGroupLabelProps): react.JSX.Element;
|
|
14
18
|
/**
|
|
15
19
|
* The rows one level down: the shell's `TreeGroup` (`role="group"`, the indent
|
|
16
20
|
* and the hairline — the only thing in the tree that says depth), and one more
|
package/dist/tree/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{LayersTree,Subtree,TREE_DRAG_HINT,TreeEmptySlot,TreeGroupLabel,TreeRow,TreeRowAction,TreeSeam}from"../chunk-
|
|
1
|
+
export{LayersTree,Subtree,TREE_DRAG_HINT,TreeEmptySlot,TreeGroupLabel,TreeRow,TreeRowAction,TreeSeam}from"../chunk-4JSBIW5H.js";import"../chunk-K56YDHYQ.js";
|
package/dist/tree/tree.css
CHANGED
|
@@ -22,9 +22,12 @@
|
|
|
22
22
|
.es-tree {
|
|
23
23
|
flex: 1;
|
|
24
24
|
overflow-y: auto;
|
|
25
|
-
/*
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
/* ONE INSET, 12 A SIDE — the editor panel's search field's (Lewis on the
|
|
26
|
+
Pages panel, 2026-10-13: "packed too tight"). It was 8 left and 12 right,
|
|
27
|
+
and the screen's `.sf-tree` said 8 and 11 over the top of it on the same
|
|
28
|
+
element; a row's fill ran nearly to the panel's edge. A scrollbar, when
|
|
29
|
+
the tree scrolls, takes its own room outside this padding. */
|
|
30
|
+
padding: 0 var(--es-space-12) var(--es-space-12);
|
|
28
31
|
/* The row actions lie over the end of the name on a scrim of the row's own
|
|
29
32
|
tone over the PANEL's ground (efficient-shell 4.166.0). The shell assumes
|
|
30
33
|
`--surface`; the tree sits on easel's panel, so it says which. */
|
|
@@ -14,6 +14,13 @@ type LayersTreeProps = {
|
|
|
14
14
|
};
|
|
15
15
|
type TreeGroupLabelProps = {
|
|
16
16
|
children: ReactNode;
|
|
17
|
+
/** How many rows it heads, in the shell's count pill at its end — "MAIN PAGES 3". */
|
|
18
|
+
count?: ReactNode;
|
|
19
|
+
/** Present when the heading folds the rows under it: whether they show. The
|
|
20
|
+
* heading is then the shell's button, with `aria-expanded` and the row's caret. */
|
|
21
|
+
expanded?: boolean;
|
|
22
|
+
/** Fold or unfold. The rows under it are the host's to render or leave out. */
|
|
23
|
+
onToggle?: () => void;
|
|
17
24
|
};
|
|
18
25
|
type SubtreeProps = {
|
|
19
26
|
children?: ReactNode;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import { S as SettingsBucket } from './buckets-
|
|
2
|
+
import { S as SettingsBucket } from './buckets-Tj-nkBpg.js';
|
|
3
3
|
|
|
4
4
|
/** What every control shares: an id for its label, a name for screen readers, and a read-only switch. */
|
|
5
5
|
interface ControlBase {
|
|
@@ -158,8 +158,11 @@ interface FieldMeta {
|
|
|
158
158
|
label?: string;
|
|
159
159
|
/** The tab this field opens; inherited by the fields after it (see above). */
|
|
160
160
|
bucket?: SettingsBucket;
|
|
161
|
-
/** Only says where a bucket starts. Draws nothing. */
|
|
161
|
+
/** Only says where a bucket (or, with `fold`, a band) starts. Draws nothing. */
|
|
162
162
|
marker?: boolean;
|
|
163
|
+
/** On a marker: the title of the folding band that starts here (see above);
|
|
164
|
+
* `false`: the band above ends here and the rows after it stand alone. */
|
|
165
|
+
fold?: string | false;
|
|
163
166
|
visible?: boolean;
|
|
164
167
|
/** Drawn before the label. */
|
|
165
168
|
icon?: ReactNode;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { S as SettingsBucket } from './buckets-
|
|
1
|
+
import { S as SettingsBucket, D as DesignGroup } from './buckets-Tj-nkBpg.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* The settings panel's own words (`efficient-easel/strings`, 0.95.0): what
|
|
5
5
|
* the tab strip is called, what each tab SAYS, and the Default / Reset part.
|
|
6
6
|
*
|
|
7
|
-
* A bucket's key (`'
|
|
7
|
+
* A bucket's key (`'Design'`, `'Animation'`) is an identifier — fields name
|
|
8
8
|
* their tab with it and `SETTINGS_BUCKETS` orders them — so it never changes
|
|
9
|
-
* with the language. `buckets` is the word drawn for each key.
|
|
9
|
+
* with the language. `buckets` is the word drawn for each key. A Design
|
|
10
|
+
* group's key (`DESIGN_GROUPS`) is the same: `designGroups` is its word.
|
|
10
11
|
*
|
|
11
12
|
* The panel is hook-free, so nothing here is read from the strings provider:
|
|
12
13
|
* `SettingsTabs` takes its name as `ariaLabel` and each tab's word as the
|
|
@@ -20,6 +21,10 @@ type PanelWords = {
|
|
|
20
21
|
settings: string;
|
|
21
22
|
/** The word each tab shows, by its key. */
|
|
22
23
|
buckets: Record<SettingsBucket, string>;
|
|
24
|
+
/** The word each Design group's heading says, by its key (4.0.0). The
|
|
25
|
+
* host draws the headings; Content's draws none, and still has a word for
|
|
26
|
+
* a host that names it elsewhere. */
|
|
27
|
+
designGroups: Record<DesignGroup, string>;
|
|
23
28
|
/** @deprecated Not drawn since option E (2026-10-07): an unchanged setting
|
|
24
29
|
* shows nothing. Kept so a host's catalogue still type-checks. */
|
|
25
30
|
followsDefault: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "efficient-easel",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Efficient Easel: the EFFICIENT editors' shared engine and chrome: the saved document as pure functions, the published renderer, and the editor frame, panels, Layers tree, text grammar and type-in-place box. Published as editor-shell up to 0.66.0 and as efficient-editor up to 0.95.0.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"author": "Efficient Pty Ltd",
|
|
@@ -517,7 +517,7 @@
|
|
|
517
517
|
"dist"
|
|
518
518
|
],
|
|
519
519
|
"peerDependencies": {
|
|
520
|
-
"efficient-shell": "^
|
|
520
|
+
"efficient-shell": "^7.21.0",
|
|
521
521
|
"react": ">=18",
|
|
522
522
|
"react-dom": ">=18"
|
|
523
523
|
},
|
|
@@ -527,7 +527,7 @@
|
|
|
527
527
|
"@types/node": "^22.0.0",
|
|
528
528
|
"@types/react": "^18.2.0",
|
|
529
529
|
"@types/react-dom": "^18.2.0",
|
|
530
|
-
"efficient-shell": "^7.
|
|
530
|
+
"efficient-shell": "^7.21.0",
|
|
531
531
|
"esbuild": "^0.27.0",
|
|
532
532
|
"jsdom": "^26.1.0",
|
|
533
533
|
"react": "^18.2.0",
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The settings tab words, in the owner's order (2026-09-11): Content, Style,
|
|
3
|
-
* Layout, Animation. A panel shows only the tabs that hold a setting — an empty
|
|
4
|
-
* tab is hidden, never drawn (same day).
|
|
5
|
-
*
|
|
6
|
-
* The website editor wrote this list in `efficient-storefront/lib/puck/field-groups.ts`
|
|
7
|
-
* (`BUCKETS`). From 0.43.0 it lives here, so the campaign editor spells its panel
|
|
8
|
-
* the same four words in the same order instead of keeping a second list.
|
|
9
|
-
*/
|
|
10
|
-
declare const SETTINGS_BUCKETS: readonly ["Content", "Style", "Layout", "Animation"];
|
|
11
|
-
type SettingsBucket = (typeof SETTINGS_BUCKETS)[number];
|
|
12
|
-
|
|
13
|
-
export { type SettingsBucket as S, SETTINGS_BUCKETS as a };
|
package/dist/chunk-2GLQRNYT.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import{DEFAULT_DRAG_WORDS as e}from"./chunk-O2NLQBFX.js";import{dropEffectFor as t,scrollBoxOf as n,frameScrollBox as l,startAutoScroll as r,isNoOpDrop as a}from"./chunk-67GNT6PF.js";import{useCanvasLayout as o,useCanvasEvent as s}from"./chunk-PAELDYYS.js";import{framePointToHost as i,elementScale as c,frameRectToLayer as d,clientPointToLayer as u}from"./chunk-ZNCEOSXO.js";import{withTip as h}from"./chunk-P2VEMZH5.js";import{parseZoneKey as f}from"./chunk-KRXQM65X.js";import{useRef as p,useEffect as m,useState as g,useCallback as b,useMemo as y,useSyncExternalStore as v,useId as x,useLayoutEffect as k}from"react";import{Tooltip as w}from"efficient-shell/ui";import{jsxs as N,jsx as A}from"react/jsx-runtime";import{CloseIcon as D,SearchIcon as z}from"efficient-shell/icons/efficient";var T=(e,t,n)=>t>=e.left&&t<=e.left+e.width&&n>=e.top&&n<=e.top+e.height,C=e=>e.width*e.height;function S(e,t,n){return e.map((e,t)=>({s:e,at:t})).filter(({s:e})=>T(e.box,t,n)).sort((e,t)=>C(t.s.box)-C(e.s.box)||e.at-t.at).map(({s:e})=>e)}function E(e,t,n){return S(e,t,n).at(-1)??null}function $(e,t,n){const l="x"===e.axis?t:n;let r=0;for(const t of e.children){l>("x"===e.axis?t.left+t.width/2:t.top+t.height/2)&&(r+=1)}return r}function L(e,t){const n=e.children;if("x"===e.axis){const l=n[t-1],r=n[t],a=l&&r?(l.left+l.width+r.left)/2:l?l.left+l.width:r?r.left:e.box.left,o=r??l??e.box;return{left:a-1,top:o.top,width:2,height:o.height}}const l=n[t-1],r=n[t],a=l&&r?(l.top+l.height+r.top)/2:l?l.top+l.height:r?r.top:e.box.top;return{left:e.box.left,top:a-1,width:e.box.width,height:2}}function j(e,t,n,l,r=()=>!1,a=()=>!0){const o=e.filter(e=>T(e.box,t,n)).sort((e,t)=>C(e.box)-C(t.box));for(const e of o){const o=$(e,t,n),s={...e.list,index:o};if(r(s))return null;if(l(s))return{zone:e,to:s,line:L(e,o)};if(!a(s))return null}return null}function M(e,t=e.key){const n=[];for(let l=1;l<e.children.length;l++){const r=e.children[l-1],a=e.children[l],o=r.top+r.height;n.push({key:`${t}:${l}`,place:{...e.list,index:l},box:{left:e.box.left,top:o,width:e.box.width,height:Math.max(a.top-o,0)}})}return n}var B={nodes:[],zones:[]},O="data-puck-dropzone",K="data-puck-component";function X(e,t){if(e.length>=2){const[t,n]=e;return Math.abs(n.top-t.top)<Math.min(t.height,n.height)/2&&n.left>t.left?"x":"y"}const n=t.ownerDocument.defaultView?.getComputedStyle(t);return n&&n.display.includes("flex")&&n.flexDirection.startsWith("row")?"x":"y"}function q(e,t){const{frame:n,document:l}=e,r=e=>d(n,function(e){const t=e.getBoundingClientRect();return{left:t.left,top:t.top,width:t.width,height:t.height}}(e),t),a=[],o=[];for(const e of l.querySelectorAll(`[${O}]`)){const t=e.getAttribute(O)??"";let n;try{n=f(t)}catch{continue}const l=[...e.querySelectorAll(`[${K}]`)].filter(t=>t.parentElement?.closest(`[${O}]`)===e),s=l.map(r);o.push({key:t,list:n,box:r(e),axis:X(s,e),children:s}),l.forEach((e,t)=>{const l=e.getAttribute(K);l&&a.push({id:l,place:{...n,index:t},box:s[t]})})}return{nodes:a,zones:o}}var P="data-es-empty-cell",Y="data-puck-dropzone",Z=140;var F=e=>({left:e.left,top:e.top,width:e.width,height:e.height});function R(d){const{canvas:h,session:f,readOnly:x,words:D=e.canvas}=d,z=p(d);m(()=>{z.current=d});const T=p(null),C=o(h),[E,$]=g(0),L=b(()=>$(e=>e+1),[]),[M,O]=g(B);m(()=>{const e=T.current;h&&e&&O((z.current.measure??q)(h,e))},[h,C,d.revision,E]);const K=d.model,X=y(()=>K(M),[K,M]),Z=v(f.subscribe,f.shown,f.shown),R=d.choose,Q=(e,t)=>{const n=S(X.sources,e,t);return 0===n.length?null:R?R(n):n[n.length-1]},[V,G]=g(null),[H,I]=g(null),W=p(null),J=()=>{W.current&&clearTimeout(W.current),W.current=null},U=()=>{J(),W.current=setTimeout(()=>{f.get()||G(null)},140)};m(()=>J,[]);const _=p(null);s(h,"mousemove",e=>{const t=T.current;if(!h||!t)return;const n=i(h.frame,e.clientX,e.clientY,t),l=c(t),r={x:n.x/l,y:n.y/l};if(_.current=r,z.current.readOnly||f.get())return;J();const a=Q(r.x,r.y);G(e=>e?.key===a?.key&&e?.box===a?.box?e:a)}),s(h,"mouseout",e=>{e.relatedTarget||(_.current=null,U())}),s(h,"mouseover",e=>{e.relatedTarget||L()});const ee=p(null),te=b(()=>{ee.current?.(),ee.current=null,I(null)},[]);m(()=>f.subscribe(()=>{f.get()?L():te()}),[f,te,L]),m(()=>te,[te]),("undefined"==typeof document?m:k)(()=>{if(f.get())return;const e=_.current;G(t=>x?null:e?Q(e.x,e.y):t?X.sources.find(e=>e.key===t.key)??null:null)},[X,Z,f,x,R]);const ne=e=>{const t=f.get(),n=T.current;if(!t||!n)return null;const l=u(n,e.clientX,e.clientY);_.current=l;const r=j(X.zones,l.x,l.y,e=>z.current.canDrop(t.item,e),e=>!!t.from&&a(t.from,e),e=>z.current.fallThrough?.(t.item,e,t.from)??!0);return r?{h:t,t:r}:null},le={onDragEnter:e=>{if(ee.current)return;const t=n(e.currentTarget.parentElement?.parentElement??null),a=h?l(h.document):null,o=[];t&&o.push(r(t)),a&&h&&o.push(r(a,h.frame)),ee.current=o.length?()=>o.forEach(e=>e()):null},onDragOver:e=>{const n=ne(e);if(!n)return void I(null);e.preventDefault(),e.dataTransfer.dropEffect=t(e.dataTransfer.effectAllowed);const l={zoneKey:n.t.zone.key,line:n.t.line,axis:n.t.zone.axis};I(e=>e&&e.zoneKey===l.zoneKey&&e.line.left===l.line.left&&e.line.top===l.line.top?e:l)},onDragLeave:e=>{const t=e.relatedTarget;t&&e.currentTarget.contains(t)||(_.current=null,I(null))},onDrop:e=>{const t=ne(e);t&&(e.preventDefault(),f.end(),te(),z.current.onDrop(t.h.item,t.t.to))}},re={draggable:!x&&!!V,onMouseEnter:J,onMouseLeave:()=>!f.get()&&U(),onDragStart:e=>{if(V&&!x){f.start({key:V.key,item:V.item,from:V.from}),e.dataTransfer.effectAllowed="move";try{e.dataTransfer.setData("text/plain",V.key)}catch{}}else e.preventDefault()},onDragEnd:()=>{f.end(),te()},onClick:()=>{V&&!x&&z.current.onPick?.(V.item)}},{seams:ae=[]}=X,oe=X.zones.filter(e=>0===e.children.length),se=d.onZoneAdd&&!x?oe:[],ie=se.map(e=>e.key).join("\n");return m(()=>{const e=h?.document;if(!e)return;const t=new Set(ie?ie.split("\n"):[]);for(const n of e.querySelectorAll(`[${Y}]`))n.toggleAttribute(P,t.has(n.getAttribute(Y)??""));return()=>{for(const t of e.querySelectorAll(`[${P}]`))t.removeAttribute(P)}},[h,ie,M,C,E]),/* @__PURE__ */N("div",{ref:T,className:"es-canvas-layer",children:[Z||!d.onSeamAdd||x?null:ae.map(e=>/* @__PURE__ */A("div",{className:"es-canvas-seam",style:{left:e.box.left,top:e.box.top+e.box.height/2-8,width:e.box.width,height:16},children:/* @__PURE__ */A("button",{type:"button",className:"es-canvas-seam-add",onClick:()=>d.onSeamAdd?.(e.place),children:D.addButton({label:d.seamLabel??D.addSection})})},e.key)),se.length?se.map(e=>/* @__PURE__ */A("button",{type:"button",className:H?.zoneKey===e.key?"es-canvas-empty is-over":"es-canvas-empty",style:F(e.box),onClick:()=>d.onZoneAdd?.({...e.list,index:0}),children:/* @__PURE__ */A("span",{className:"es-canvas-empty-add",children:D.addButton({label:d.zoneAddLabel??D.addBlock})})},e.key)):null,Z?/* @__PURE__ */A("div",{className:"es-canvas-catch",...le}):null,H&&!oe.some(e=>e.key===H.zoneKey)?/* @__PURE__ */A("div",{className:`es-canvas-line is-${H.axis}`,style:F(H.line)}):null,
|
|
2
|
-
/* @__PURE__ */A("div",{className:"es-canvas-handle-spot",style:V?{"--es-handle-x":`${V.box.left+2}px`,"--es-handle-y":`${Math.max(V.box.top-11,0)}px`}:void 0,children:/* @__PURE__ */A(w,{className:"es-canvas-handle-tip",side:"top",content:!V||x||Z?null:V.title??D.handle({label:V.label}),children:/* @__PURE__ */N("div",{className:["es-canvas-handle",V&&!x?"is-shown":"",Z?"is-dragging":""].filter(Boolean).join(" "),...re,children:[
|
|
3
|
-
/* @__PURE__ */A("span",{className:"es-canvas-grip","aria-hidden":"true",children:"⋮⋮"}),V?.label]})})})]})}var Q=e=>e.tiles.length>0&&e.tiles.every(e=>null!=e.cover);function V({groups:t,session:n,itemFor:l,onInsert:r,at:a,hint:o,searchLabel:s,readOnly:i,words:c=e.add}){const d=o??c.hint,u=s??c.search,[f,p]=g(""),m=x(),b=f.trim().toLowerCase(),y=function(e){const t=/* @__PURE__ */new Map;return e.map(e=>{const n=e.key??e.title,l=t.get(n)??0;return t.set(n,l+1),0===l?n:`${n}\0${l}`})}(t),v=t.map((e,t)=>({...e,key:y[t],tiles:b?e.tiles.filter(e=>((e,t)=>e.label.toLowerCase().includes(t)||(e.keywords??[]).some(e=>e.toLowerCase().includes(t)))(e,b)):e.tiles})).filter(e=>e.tiles.length>0),k=(e,t)=>r=>{if(t)r.preventDefault();else{n.start({key:`new:${e}`,item:l(e)}),r.dataTransfer.effectAllowed="copy";try{r.dataTransfer.setData("text/plain",e)}catch{}}};/* @__PURE__ */
|
|
4
|
-
return N("div",{className:"es-add",children:[a?/* @__PURE__ */N("div",{className:"es-add-at",role:"status",children:[
|
|
5
|
-
/* @__PURE__ */A("span",{children:a.label}),h(c.stop,/* @__PURE__ */A("button",{type:"button",className:"es-add-at-clear","aria-label":c.stop,onClick:a.onClear,children:/* @__PURE__ */A(D,{size:12,"aria-hidden":"true"})}))]}):null,
|
|
6
|
-
/* @__PURE__ */A("p",{className:"es-add-hint",children:d}),
|
|
7
|
-
/* @__PURE__ */N("div",{className:"es-add-search",children:[
|
|
8
|
-
/* @__PURE__ */A(z,{size:16,"aria-hidden":"true"}),
|
|
9
|
-
/* @__PURE__ */A("input",{id:m,type:"search","aria-label":u,placeholder:c.searchPlaceholder({label:u}),value:f,onChange:e=>p(e.target.value)}),f?/* @__PURE__ */A("button",{type:"button",className:"es-add-search-clear","aria-label":c.clearSearch,onClick:()=>p(""),children:/* @__PURE__ */A(D,{size:12,"aria-hidden":"true"})}):null]}),0===v.length?/* @__PURE__ */N("div",{className:"es-add-empty",role:"status",children:[
|
|
10
|
-
/* @__PURE__ */A("div",{className:"es-add-empty-title",children:c.nothing({query:f.trim()})}),
|
|
11
|
-
/* @__PURE__ */A("div",{className:"es-add-empty-sub",children:c.tryAnother})]}):v.map(e=>/* @__PURE__ */N("section",{className:"es-add-group","aria-label":e.title,children:[
|
|
12
|
-
/* @__PURE__ */N("div",{className:"es-add-group-head",children:[
|
|
13
|
-
/* @__PURE__ */A("span",{className:"es-add-group-title",children:e.title}),
|
|
14
|
-
/* @__PURE__ */A("span",{className:"es-add-group-count",children:e.tiles.length})]}),
|
|
15
|
-
/* @__PURE__ */A("div",{className:Q(e)?"es-add-grid is-cards":"es-add-grid",children:e.tiles.map(e=>{const t=Boolean(i||e.disabled),l=i?void 0:e.disabled?e.disabledReason:e.title??c.tile({label:e.label});return h(l,/* @__PURE__ */N("button",{type:"button",className:null!=e.cover?"es-add-tile has-cover":"es-add-tile",draggable:!t,"aria-disabled":t||void 0,"aria-label":c.tile({label:e.label}),onDragStart:k(e.type,t),onDragEnd:()=>n.end(),onClick:()=>!t&&r(e.type),children:[null!=e.cover?/* @__PURE__ */A("span",{className:"es-add-tile-cover","aria-hidden":"true",children:e.cover}):e.icon?/* @__PURE__ */A("span",{className:"es-add-tile-glyph","aria-hidden":"true",children:e.icon}):null,
|
|
16
|
-
/* @__PURE__ */A("span",{className:"es-add-tile-label",children:e.label})]},e.type))})})]},e.key))]})}export{V as AddPanel,R as CanvasDragLayer,B as EMPTY_MEASURE,Z as HANDLE_GRACE_MS,j as canvasTarget,T as contains,$ as gapInZone,L as gapLine,q as measureCanvas,E as pickSource,M as seamsBetween,S as sourcesAt};
|
package/dist/chunk-7P6IFCR4.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{panelFieldsOf as t}from"./chunk-ZE7I3PLX.js";import{withoutDeviceGate as o,deviceMetaOf as n}from"./chunk-PAM3NLFL.js";import{BUCKET_KEY as r}from"./chunk-R2HLPNQF.js";import{ANCHOR_FIELD_KEYS as e,foldMetaOf as s,MEDIA_FIELD_MARKER as c,TEXT_FIELD_MARKER as p,LINK_FIELD_MARKER as i}from"./chunk-DUVRZ456.js";import{STYLE_KIND as u,fieldKind as f,copyStyle as a,heldStyle as l,planPaste as m,pasteMessage as y}from"./chunk-V7U33NF2.js";var h=/* @__PURE__ */new Set([r.Style,r.Layout]),j=new Set(Object.values(r)),w=new Set(e),b=/* @__PURE__ */new Set(["focal","imageFocal"]),k=[c,p,i];function L(t){return`site:${t??""}`}function S(t){if(!t||"object"!=typeof t)return null;const n=t,r=o(t)??t,e=n[u]??r[u];if("string"==typeof e)return e;const s=n.options??r.options;if(Array.isArray(s)){return`choice:${s.map(t=>String(t?.value)).sort().join("|")}`}return f(r)}function g(t){const n=t,r=o(t);return k.some(t=>t in n||r&&t in r)}function v(o,r){const e=t(o,r)??{},c=[];let p=!1;for(const[t,o]of Object.entries(e))j.has(t)?p=h.has(t):p&&o&&"object"==typeof o&&!t.startsWith("_")&&(s(o)||w.has(t)||b.has(t)||g(o)||"slot"!==o.type&&c.push({path:[t],kind:S(o),counted:"mobile"!==n(o)?.tier}));return c}function F(t,o,n,r,e){a({scope:n,type:r.type,label:e,rows:t(o,r),props:r.props})}function d(t,o,n,r,e,s){const c=l(n);if(!c)return null;const p=m(c,{type:r.type,rows:t(o,r),props:r.props});return{...p,message:y(p,c.sourceLabel,e,s)}}function A(t,o,n,r){F(v,t,o,n,r)}function N(t,o,n,r,e){return d(v,t,o,n,r,e)}var P={scope:t=>L(t.siteId),rows:(t,o)=>v(t,o),copy:(t,o,n,r)=>A(r,t,o,n),plan:(t,o,n,r)=>N(r,t,o,n)};function I(t,o){if(!t&&!o)return P;const n=t?.rows,r=n?(t,o)=>n(t,o):v;return{scope:t?.scope??P.scope,rows:(t,o)=>r(t,o),copy:t?.copy??((t,o,n,e)=>F(r,e,t,o,n)),plan:t?.plan??((t,n,e,s)=>d(r,s,t,n,e,o))}}export{A as copyNodeStyle,v as nodeStyleRows,N as planNodePaste,S as shopFieldKind,L as siteStyleScope,I as styleClipboardOf};
|
package/dist/chunk-CRPJGCSO.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import{FieldSelect as e}from"./chunk-OZ72A6MY.js";import{TreeSeam as n}from"./chunk-UFY6RNMT.js";import{SettingsField as t,SETTINGS_BUCKETS as l,SettingsTabs as a,SettingsGroup as r}from"./chunk-YNOZ5NXW.js";import{DEFAULT_TREE_WORDS as i}from"./chunk-K56YDHYQ.js";import{DEFAULT_PANEL_WORDS as o}from"./chunk-QTLAVDJE.js";import{EaselMenuItems as s}from"./chunk-EA2HTX37.js";import{FieldNumber as c}from"./chunk-66LWADFP.js";import{SettingsSegmented as d}from"./chunk-QLD57GBB.js";import{DEFAULT_FIELDS_WORDS as u}from"./chunk-FFYXVAAL.js";import{useWords as m}from"./chunk-MFIRYGHW.js";import{useTreeDrag as p,gapToMoveIndex as h}from"./chunk-67GNT6PF.js";import{withTip as b}from"./chunk-P2VEMZH5.js";import{Textarea as f,Input as g,SortableList as v,ListRow as y,ContextMenu as x,tabPanelId as k,tabButtonId as w}from"efficient-shell/ui";export{LinkPicker}from"efficient-shell/ui";import{useRef as N,useState as O,useLayoutEffect as C,useId as j}from"react";import{jsx as D,jsxs as I}from"react/jsx-runtime";import{ChevronIcon as $,LockIcon as S,MoveUpIcon as P,MoveDownIcon as L,DuplicateIcon as F,TrashIcon as M}from"efficient-shell/icons/efficient";function T({id:e,value:n,onChange:t,placeholder:l,multiline:a=!1,rows:r=3,readOnly:i=!1,ariaLabel:o,ariaLabelledBy:s}){const c=n??"";return a?/* @__PURE__ */D(f,{id:e,size:"sm",className:"es-fin",value:c,rows:r,placeholder:l,readOnly:i,"aria-label":o,"aria-labelledby":s,onChange:e=>t(e.target.value)}):/* @__PURE__ */D(g,{id:e,size:"sm",className:"es-fin",type:"text",value:c,placeholder:l,readOnly:i,"aria-label":o,"aria-labelledby":s,onChange:e=>t(e.target.value)})}function A(e,n,t){const l=e.slice();return l.splice(Math.max(0,Math.min(n,l.length)),0,t),l}function E(e,n,t){const l=e.slice(),[a]=l.splice(n,1);return l.splice(Math.max(0,Math.min(t,l.length)),0,a),l}function R(e,n){return e.filter((e,t)=>t!==n)}function z(e){return null===e||"object"!=typeof e?e:JSON.parse(JSON.stringify(e))}var Y='input, textarea, select, button, [contenteditable]:not([contenteditable="false"]), [tabindex]',H={parentId:"list",slot:"items"};function B({label:e,icon:t,noun:l,items:a,onChange:r,newItem:o,summary:c,itemName:d,thumb:f,min:g=0,max:k,readOnly:w=!1,open:j,onOpen:T,renderItem:B,renderRow:K,canRemove:V,lockedReason:X,fixed:G=!1,removeOnRow:J=!0,canDuplicate:Q,above:W,head:Z=!0}){const q=m("fields",u).list,U=m("tree",i),_=l??q.item,ee=!w&&!G&&("number"!=typeof k||a.length<k),ne=a.length<=g,te=e=>!!V&&!V(a[e],e),le=e=>!w&&!G&&J&&!ne&&!te(e),ae=e=>ee&&(!Q||Q(a[e],e)),re=(e,n)=>d?d(e,n):q.itemName({noun:_,n:n+1}),ie=N([]),oe=N(null),[se,ce]=O(null),de=N(null),[ue,me]=O(null),[pe,he]=O("");C(()=>{const e=oe.current;if(!e)return;oe.current=null;const n=ie.current[e.index]?.querySelectorAll(Y)[e.nth]??ie.current[e.index];if(n?.focus(),n&&null!==e.start&&"setSelectionRange"in n)try{n.setSelectionRange(e.start,e.end)}catch{}});const be=(e,n)=>{if(n<0||n>=a.length||n===e)return;const t=ie.current[e],l=t?.ownerDocument.activeElement;if(t&&l&&t.contains(l)){const e=[...t.querySelectorAll(Y)].indexOf(l),a=l;oe.current={index:n,nth:e,start:"number"==typeof a.selectionStart?a.selectionStart:null,end:"number"==typeof a.selectionEnd?a.selectionEnd:null}}r(E(a,e,n));const i=function(e,n,t){return null===e?null:e===n?t:n<e&&t>=e?e-1:n>e&&t<=e?e+1:e}(j,e,n);i!==j&&T(i),he(q.moved({n:n+1,total:a.length}))},fe=e=>{ee&&(r(A(a,e,o())),K?(oe.current={index:e,nth:0,start:null,end:null},null!==j&&j>=e&&T(j+1)):T(e))},ge=e=>{le(e)&&(r(R(a,e)),j===e?T(null):null!==j&&j>e&&T(j-1))},ve=p({keyOf:e=>String(e),canDrop:(e,n)=>n.parentId===H.parentId&&n.slot===H.slot,onDrop:(e,n)=>{const t=h({...H,index:e},n);t!==e&&be(e,t)},onStep:(e,n)=>be(e,e+n),canStep:(e,n)=>e+n>=0&&e+n<a.length,readOnly:w}),ye=e=>{const n=[];return e>0&&n.push({label:q.moveUp,icon:/* @__PURE__ */D(P,{size:14}),shortcut:"⌥↑",onClick:()=>be(e,e-1)}),e<a.length-1&&n.push({label:q.moveDown,icon:/* @__PURE__ */D(L,{size:14}),shortcut:"⌥↓",onClick:()=>be(e,e+1)}),ae(e)&&n.push({label:q.duplicate,icon:/* @__PURE__ */D(F,{size:14}),onClick:()=>(e=>{ae(e)&&(r(A(a,e+1,z(a[e]))),null!==j&&j>e&&T(j+1))})(e)}),le(e)&&n.push({label:q.delete,icon:/* @__PURE__ */D(M,{size:14}),danger:!0,onClick:()=>ge(e)}),n},xe=(e,n,t,l)=>{w||0===ye(e).length||me({index:e,x:n,y:t,owner:l})},ke=e=>n=>{const t=a.slice();t[e]=n,r(t)};/* @__PURE__ */
|
|
2
|
-
return I("div",{className:"es-list",children:[Z?/* @__PURE__ */I("div",{className:"es-list-head",children:[
|
|
3
|
-
/* @__PURE__ */I("span",{className:"es-list-label",children:[t?/* @__PURE__ */D("span",{className:"es-field-icon","aria-hidden":"true",children:t}):null,e]}),
|
|
4
|
-
/* @__PURE__ */D("span",{className:"es-list-count",children:a.length})]}):null,W?/* @__PURE__ */D("div",{className:"es-list-above",children:W}):null,a.length?/* @__PURE__ */I(v,{"aria-label":e,spacing:"comfortable",className:"es-list-rows",rootProps:ve.rootProps(),children:[a.map((e,t)=>{const l=ve.row({item:t,place:{...H,index:t}}),a=l.draggable&&se!==t,r=!K&&j===t,i=!w&&!G&&J&&te(t),o=["es-list-row",K?"is-inline":"is-item",r?"is-open":"",a?"is-draggable":"",l.dragging?"is-dragging":"",l.drop?`is-drop-${l.drop}`:""].filter(Boolean).join(" ");return[t>0?/* @__PURE__ */D(n,{...ve.seam({place:{...H,index:t}}),onAdd:ee?()=>fe(t):void 0,label:q.addHere({noun:_})},`seam-${t}`):null,
|
|
5
|
-
/* @__PURE__ */D(y,{className:o,flat:!!K,active:r,draggable:l.draggable,dragHint:U.dragHint,dragging:l.dragging,drop:"before"===l.drop||"after"===l.drop?l.drop:void 0,onMove:l.draggable?e=>be(t,"up"===e?t-1:t+1):void 0,rowRef:e=>{ie.current[t]=e},rowProps:{...l.rowProps,draggable:a||void 0,onPointerDown:e=>{const n=e.target.closest?.('input, textarea, select, [contenteditable]:not([contenteditable="false"])'),a=!!n&&n===n.ownerDocument.activeElement;e.currentTarget.draggable=l.draggable&&!a,de.current=n&&!a?n:null,ce(a?t:null)},onDragStart:e=>{const n=de.current;de.current=null,n&&n.ownerDocument.activeElement===n&&n.blur(),l.rowProps.onDragStart?.(e)},onContextMenu:e=>{w||(e.preventDefault(),e.stopPropagation(),xe(t,e.clientX,e.clientY,e.currentTarget))},onKeyDown:e=>{if("ContextMenu"===e.key||e.shiftKey&&"F10"===e.key){e.preventDefault();const n=e.currentTarget.ownerDocument,l=e=>e.preventDefault();n.addEventListener("contextmenu",l,{capture:!0,once:!0}),n.defaultView?.setTimeout(()=>n.removeEventListener("contextmenu",l,{capture:!0}),500);const a=e.currentTarget.getBoundingClientRect();return void xe(t,a.left+24,a.bottom,e.currentTarget)}l.rowProps.onKeyDown?.(e)}},actions:w||G||!J?void 0:i?b(X?X(e,t):q.locked,/* @__PURE__ */D("span",{className:"es-list-lock",role:"img","aria-label":X?X(e,t):q.locked,children:/* @__PURE__ */D(S,{size:13})})):b(q.deleteItem({noun:_}),/* @__PURE__ */D("button",{type:"button",className:"es-list-x","aria-label":q.deleteItem({noun:_}),disabled:!le(t),onClick:()=>ge(t),children:"×"})),below:r?/* @__PURE__ */D("div",{className:"es-list-item",children:B(e,t,ke(t))}):void 0,children:K?/* @__PURE__ */D("div",{className:"es-list-row-main",children:K(e,t,ke(t))}):/* @__PURE__ */I("button",{type:"button",className:"es-list-open","aria-expanded":r,onClick:()=>T(r?null:t),children:[f?/* @__PURE__ */D("span",{className:"es-list-thumb","aria-hidden":"true",children:f(e,t)}):null,
|
|
6
|
-
/* @__PURE__ */D("span",{className:"es-list-row-name",children:re(e,t)}),/* @__PURE__ */D("span",c?{className:"es-list-row-summary",children:c(e,t)}:{className:"es-list-row-summary"}),
|
|
7
|
-
/* @__PURE__ */D($,{size:14,className:"es-list-chev","aria-hidden":"true"})]})},t)]}),
|
|
8
|
-
/* @__PURE__ */D(n,{...ve.seam({place:{...H,index:a.length}})})]}):null,w||G?null:/* @__PURE__ */D("button",{type:"button",className:"es-list-add",disabled:!ee,onClick:()=>fe(a.length),children:q.add({noun:_})}),
|
|
9
|
-
/* @__PURE__ */D("span",{className:"es-list-said","aria-live":"polite",children:pe}),ue&&ue.index<a.length?
|
|
10
|
-
/* @__PURE__ */D(x,{at:{x:ue.x,y:ue.y},owner:ue.owner,onClose:()=>me(null),children:/* @__PURE__ */D(s,{items:ye(ue.index),onClose:()=>me(null)})}):null]})}var K=(e,n)=>"string"==typeof e.label&&e.label?e.label:n;function V({field:e,name:n,id:t,value:l,onChange:a,readOnly:i,context:o,renderers:s}){const[c,d]=O(!0),u=l&&"object"==typeof l?l:{};/* @__PURE__ */
|
|
11
|
-
return D(r,{id:`${t}-group`,title:K(e,n),open:c,onToggle:d,children:Object.entries(e.objectFields).map(([e,l])=>/* @__PURE__ */D(G,{field:l,name:`${n}.${e}`,id:`${t}-${e}`,value:u[e],onChange:n=>a({...u,[e]:n}),readOnly:i,context:o,renderers:s},e))})}function X({field:e,name:n,id:t,value:l,onChange:a,readOnly:r,context:i,renderers:o,openItem:s,onOpenItem:c}){const[d,u]=O(null),m=c?s??null:d,p=c??u,h=Array.isArray(l)?l:[],b=e.getItemSummary;/* @__PURE__ */
|
|
12
|
-
return D(B,{label:K(e,n),icon:e.icon,noun:"string"==typeof e.noun?e.noun:void 0,items:h,onChange:a,newItem:()=>z({...e.defaultItemProps??{}}),summary:b?(e,n)=>b(e,n):void 0,min:e.min,max:e.max,readOnly:r,open:m,onOpen:p,renderItem:(l,a,s)=>Object.entries(e.arrayFields).map(([e,c])=>/* @__PURE__ */D(G,{field:c,name:`${n}[${a}].${e}`,id:`${t}-${a}-${e}`,value:l?.[e],onChange:n=>s({...l,[e]:n}),readOnly:r,context:i,renderers:o},e))})}function G(n){const{field:l,name:a,id:r,value:i,onChange:o,readOnly:s,context:u,renderers:m}=n;if(!l||l.marker||!1===l.visible)return null;const p=m?.[l.type];if(p)return p({field:l,name:a,id:r,value:i,onChange:o,readOnly:s});switch(l.type){case"custom":{const e={...u,field:l,name:a,id:r,value:i,onChange:o,readOnly:s};return l.render(e)}case"text":case"textarea":/* @__PURE__ */
|
|
13
|
-
return D(t,{label:K(l,a),htmlFor:r,icon:l.icon,hint:l.hint,children:/* @__PURE__ */D(T,{id:r,value:"string"==typeof i?i:null==i?"":String(i),onChange:o,placeholder:l.placeholder,multiline:"textarea"===l.type,readOnly:s})});case"number":/* @__PURE__ */
|
|
14
|
-
return D(t,{label:K(l,a),htmlFor:r,icon:l.icon,hint:l.hint,children:/* @__PURE__ */D(c,{id:r,value:"number"==typeof i?i:void 0,onChange:o,min:l.min,max:l.max,step:l.step,placeholder:l.placeholder,readOnly:s})});case"select":{const n=`${r}-label`;/* @__PURE__ */
|
|
15
|
-
return D(t,{label:K(l,a),labelId:n,htmlFor:r,icon:l.icon,hint:l.hint,children:/* @__PURE__ */D(e,{id:r,value:i,options:l.options,onChange:o,readOnly:s,ariaLabelledBy:n})})}case"radio":/* @__PURE__ */
|
|
16
|
-
return D(t,{label:K(l,a),icon:l.icon,hint:l.hint,children:/* @__PURE__ */D(d,{ariaLabel:K(l,a),value:i,options:l.options.map(e=>({id:e.value,label:e.label,icon:e.icon,disabled:e.disabled||s})),onChange:e=>{s||o(e)}})});case"object":/* @__PURE__ */
|
|
17
|
-
return D(V,{...n,field:l});case"array":/* @__PURE__ */
|
|
18
|
-
return D(X,{...n,field:l});case"slot":return null}}var J=e=>l.includes(e);function Q(e){let n=l[0];const t=[],a=/* @__PURE__ */new Set;for(const[l,r]of Object.entries(e))r&&(J(r.bucket)&&(n=r.bucket),r.marker||!1===r.visible||(t.push({name:l,field:r,bucket:n}),"slot"!==r.type&&a.add(n)));return{rows:t,buckets:l.filter(e=>a.has(e))}}function W(e){return new Map(Q(e).rows.map(e=>[e.name,e.bucket]))}function Z({fields:e,values:n,onChange:t,readOnly:l=!1,context:r,tab:i,onTab:s,tabs:c=!0,tabIcons:d,renderers:u,idPrefix:p,ariaLabel:h,children:b}){const f=m("panel",o),g=j(),v=p??`es-insp${g.replace(/:/g,"")}`,y=Q(e),[x,N]=O(void 0),C=i??x,$=C&&y.buckets.includes(C)?C:y.buckets[0],[S,P]=O(null),L=S&&S.panel===v&&y.rows.some(e=>e.name===S.name)?S:null,F=c&&y.buckets.length>1,M=F&&$?k(v,$):`${v}-rows`;/* @__PURE__ */
|
|
19
|
-
return I("div",{className:"es-insp",children:[F?/* @__PURE__ */D("div",{className:"es-insp-tabs",children:/* @__PURE__ */D(a,{ariaLabel:h??f.settings,activeId:$,onSelect:e=>{const n=e;void 0===i&&N(n),s?.(n)},items:y.buckets.map(e=>({id:e,label:f.buckets[e],icon:d?.[e]})),idPrefix:v})}):null,
|
|
20
|
-
/* @__PURE__ */I("div",{className:"es-insp-rows",id:M,role:F?"tabpanel":void 0,"aria-labelledby":F&&$?w(v,$):void 0,children:[y.rows.map(({name:e,field:a,bucket:i})=>/* @__PURE__ */D("div",{className:"es-insp-row","data-field":e,"data-bucket":i,hidden:!(!F||i===$)||void 0,children:/* @__PURE__ */D(G,{field:a,name:e,id:`${v}-${e}`,value:n[e],onChange:n=>t(e,n),readOnly:l,context:r,renderers:u,openItem:L&&L.name===e?L.index:null,onOpenItem:n=>P(null===n?null:{panel:v,name:e,index:n})})},e)),b]})]})}export{T as FieldText,Z as Inspector,G as InspectorField,B as ListField,W as bucketsOf,z as copyItem,A as insertAt,K as labelOf,E as moveTo,Q as planFields,R as removeAt};
|
package/dist/chunk-LUSM3QTY.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{blockTypesIn as e}from"./chunk-5ZBY24K7.js";import{buildPaletteSections as t,pinnedSection as o,paletteWithoutPinned as n,categoryLabel as i}from"./chunk-PA3PNTVV.js";import{sectionTemplatesOf as s}from"./chunk-BVN33R76.js";import{SidePanelHead as r,PanelModeExit as c}from"./chunk-5SOSVTVI.js";import{useEaselSession as l}from"./chunk-O7Q4DDJT.js";import{blockRuns as a}from"./chunk-HQ4VVRIC.js";import{useScreenBlockLook as p,useScreenBlockRules as m}from"./chunk-YIKMVF24.js";import{DEFAULT_SCREEN_WORDS as d}from"./chunk-MCHMF32I.js";import{useEasel as f}from"./chunk-XW4AV5N4.js";import{useWords as u}from"./chunk-MFIRYGHW.js";import{AddPanel as k}from"./chunk-2GLQRNYT.js";import{DEFAULT_DRAG_WORDS as h}from"./chunk-O2NLQBFX.js";import{useState as y,useEffect as b,useMemo as j}from"react";import{AddIcon as g}from"efficient-shell/icons/efficient";import{jsx as $,jsxs as O,Fragment as V}from"react/jsx-runtime";var B=e=>`section:${e}`,I=e=>`block:${e}`,v=e=>`template:${e}`;function N({blocks:N,blocksOnly:x,at:F,onAdd:L,itemFor:A,session:H,siteWide:T,onClose:C,onHide:M,readOnly:Q}){const R=f(e=>e.config),S=p(),{labelAtLevel:Y,categoryLabel:w,firstSection:D,Icon:W,Thumbnail:z}=S,{blockIsOffered:G}=m(),K=u("screen",d).add,P=u("drag",h).add,X=l(),[E,J]=y([]);b(()=>{let t=!1;const o=e=>G(e,X);return s(X).list().then(n=>{if(t)return;const i=R.components;J(n.filter(t=>t.node?.type&&i[t.node.type]&&e(t.node).every(o)))}).catch(()=>{}),()=>{t=!0}},[R,X]);const Z=j(()=>t(R,S),[R]),q=e=>({type:B(e.type),label:e.name,cover:/* @__PURE__ */$(z,{type:e.type}),title:e.desc?`${e.name} — ${e.desc}`:K.tile({name:e.name}),keywords:[e.alias??"",e.desc,e.type,e.catLabel].filter(Boolean)}),U=j(()=>{const e=[];if(N&&N.choices.length>0&&a(N.choices).forEach((t,o)=>{e.push({key:`blocks:${o}`,title:0===o?`${K.inside({name:N.parentName})}${t.group?` · ${t.group}`:""}`:t.group??"",tiles:t.items.map(e=>({type:I(e.type),label:e.label,icon:/* @__PURE__ */$(W,{type:e.type,size:18}),title:K.tile({name:e.label})}))})}),x)return e;const t=o(Z,D);t&&e.push({key:"start",title:K.startBlank,tiles:[q(t)]}),E.length>0&&e.push({key:"templates",title:K.templates,tiles:E.map(e=>{return{type:v(e.id),label:e.name,cover:/* @__PURE__ */$(z,{type:e.node.type}),keywords:[(t=e.node.type,Y(t,"section",R.components[t]?.label??t)),e.node.type]};var t})});const s=n(Z,D);for(const t of Object.keys(R.categories??{})){const o=s.filter(e=>e.cat===t);0!==o.length&&e.push({key:`category:${t}`,title:i(R,t,w),tiles:o.map(q)})}return e},[N,x,E,Z,R,K]),_=e=>{const t=e.indexOf(":"),o=e.slice(0,t),n=e.slice(t+1);if("section"===o)return{kind:"section",type:n};if("block"===o)return{kind:"block",type:n};if("template"===o){const e=E.find(e=>e.id===n);return e?{kind:"template",template:e}:null}return null};/* @__PURE__ */
|
|
2
|
-
return O(V,{children:[
|
|
3
|
-
/* @__PURE__ */$(r,{icon:/* @__PURE__ */$(g,{size:15}),title:K.title,context:x?K.contextBlocks:K.contextAll,actions:/* @__PURE__ */$(c,{label:K.done,description:K.doneDescription,onClick:C}),onHide:M}),
|
|
4
|
-
/* @__PURE__ */O("div",{className:"sf-addside sf-scroll",children:[
|
|
5
|
-
/* @__PURE__ */$(k,{groups:U,session:H,itemFor:e=>A(_(e)??{kind:"section",type:e}),onInsert:e=>{const t=_(e);t&&L(t)},at:F,hint:x?K.hintBlocks:K.hint,searchLabel:x?K.searchBlocks:K.searchSections,readOnly:Q,words:P}),T&&!x?T:null]})]})}export{N as AddSidePanel,I as blockKey,B as sectionKey,v as templateKey};
|
package/dist/chunk-QTLAVDJE.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var t={settings:"Settings",buckets:{Content:"Content",Style:"Style",Layout:"Layout",Animation:"Animation"},followsDefault:"Default",reset:"Reset",resetName:({label:t})=>`Reset ${t}`,backToDefault:({detail:t})=>`Back to default: ${t}`,resetTitle:({label:t,detail:e})=>`Reset ${t} (back to ${e})`};export{t as DEFAULT_PANEL_WORDS};
|
package/dist/chunk-R2HLPNQF.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var t={Content:"_sContent",Style:"_sStyle",Layout:"_sLayout",Animation:"_sAnimation"};export{t as BUCKET_KEY};
|
package/dist/chunk-UFY6RNMT.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import{DEFAULT_TREE_WORDS as e}from"./chunk-K56YDHYQ.js";import{useContext as r,createContext as a,isValidElement as l}from"react";import{Tree as o,TreeGroupLabel as n,TreeGroup as i,Tooltip as s,TreeRow as t,IconButton as d,TreeSeam as c,TreeEmptySlot as m}from"efficient-shell/ui";import{jsx as p,jsxs as g,Fragment as h}from"react/jsx-runtime";var u,b=()=>u??=a(1),f=()=>r(b());function k({className:r,children:a,rootProps:l,ariaLabel:n,words:i=e}){/* @__PURE__ */
|
|
2
|
-
return p(o,{"aria-label":n??i.name??e.name,className:r?`es-tree ${r}`:"es-tree",rootProps:l,children:a})}function v({children:e}){/* @__PURE__ */
|
|
3
|
-
return p(n,{children:e})}function w({children:e}){const r=f(),a=b();/* @__PURE__ */
|
|
4
|
-
return p(a.Provider,{value:r+1,children:/* @__PURE__ */p(i,{children:e})})}var N=e.dragHint,P=e=>[e].flat(1/0).some(e=>l(e)&&!0===e.props.pressed);function y({icon:r,name:a,preview:l,selected:o,hidden:n,draggable:i,dragHint:d,dragging:c,drop:m,fold:u,actions:b,nameSlot:k,onSelect:v,marks:w,badge:N,trailing:y,children:A,rowProps:S,level:T,words:H=e}){const j=f(),B=["es-tree-row",o?"is-selected":"",n?"is-hidden":"",i?"is-draggable":"",c?"is-dragging":"",m?`is-drop-${m}`:""].filter(Boolean).join(" "),C=/* @__PURE__ */g(h,{children:[
|
|
5
|
-
/* @__PURE__ */p("span",{className:"es-tree-name",children:a}),w?.map(e=>/* @__PURE__ */p(s,{content:e.label,children:/* @__PURE__ */p("span",{className:"es-tree-mark","aria-label":e.label,role:"img",children:e.icon})},e.key)),y?/* @__PURE__ */p(s,{content:y.label,children:/* @__PURE__ */p("span",{className:"es-tree-trailing","aria-label":y.label,role:"img",children:y.icon})}):null,A]}),x=S?.onClick,$={click:!1},D=x?e=>{x(e),$.click=!0,queueMicrotask(()=>{$.click=!1})}:void 0,L=v?()=>{$.click||v()}:void 0;/* @__PURE__ */
|
|
6
|
-
return p(t,{label:C,level:T??j,icon:r,preview:l,selected:!!o,expanded:u?u.open:void 0,onToggle:u?.onToggle,onSelect:L,muted:!!n,badge:N,actions:b,actionsPinned:P(b),rename:k,drop:m,dragging:!!c,draggable:!!i,dragHint:d??H.dragHint,className:B,rowProps:{...S,onClick:D,...i?{"aria-keyshortcuts":"Alt+ArrowUp Alt+ArrowDown"}:{}}})}function A({kind:e,label:r,onClick:a,pressed:l,disabled:o,children:n}){/* @__PURE__ */
|
|
7
|
-
return p(s,{content:r,children:/* @__PURE__ */p(d,{"aria-label":r,"aria-pressed":l,"aria-disabled":o||void 0,variant:"delete"===e?"ghost-danger":"ghost",size:"sm","data-kind":e,className:o?"es-tree-act-off":void 0,onClick:e=>{e.stopPropagation(),a()},children:n})})}function S({drop:e,onAdd:r,label:a,seamProps:l}){const o=["es-tree-seam",e?"is-drop":"",r?"has-add":"",l?.className??""].filter(Boolean).join(" "),n={...l,className:o};/* @__PURE__ */
|
|
8
|
-
return p(c,{drop:!!e,onInsert:r,label:a,seamProps:n})}function T({drop:r,onAdd:a,label:l,seamProps:o,words:n=e}){const i=l??(a?n.addBlock??e.addBlock:n.emptySlot??e.emptySlot),s={...o,className:o?.className?`es-tree-empty ${o.className}`:"es-tree-empty"};/* @__PURE__ */
|
|
9
|
-
return p(m,{drop:!!r,onAdd:a,label:i,slotProps:s})}export{k as LayersTree,w as Subtree,N as TREE_DRAG_HINT,T as TreeEmptySlot,v as TreeGroupLabel,y as TreeRow,A as TreeRowAction,S as TreeSeam};
|