efficient-easel 0.103.0 → 0.105.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 +92 -7
- package/dist/CanvasDragLayer-zgYT1xwY.d.ts +168 -0
- package/dist/chrome/index.js +1 -1
- package/dist/chunk-3P6AMTOS.js +1 -0
- package/dist/chunk-4XQUWGIV.js +65 -0
- package/dist/{chunk-6UJ3Y6FC.js → chunk-53G47SWO.js} +1 -1
- package/dist/{chunk-IWAPPEL4.js → chunk-5ZBBXZPV.js} +1 -1
- package/dist/chunk-7FBDZTUD.js +2 -0
- package/dist/chunk-7V5WZ46F.js +2 -0
- package/dist/chunk-BVN33R76.js +1 -0
- package/dist/chunk-CLOS6SSX.js +1 -0
- package/dist/chunk-ERR437B5.js +1 -0
- package/dist/chunk-GMCZXMOV.js +1 -0
- package/dist/{chunk-OYX47SL7.js → chunk-HNKB2ZYR.js} +1 -1
- package/dist/{chunk-AKFJK65Z.js → chunk-IE4GFYKO.js} +1 -1
- package/dist/{chunk-KDYIMJTZ.js → chunk-KCOBHPN6.js} +1 -1
- package/dist/chunk-KG7RJWOK.js +1 -0
- package/dist/chunk-N7VRF7PR.js +5 -0
- package/dist/chunk-NYKIQJT2.js +4 -0
- package/dist/{chunk-6TZTKAB5.js → chunk-O7Q4DDJT.js} +1 -1
- package/dist/chunk-PA3PNTVV.js +1 -0
- package/dist/chunk-PLVEGYK6.js +1 -0
- package/dist/chunk-PQXIFBDY.js +1 -0
- package/dist/{chunk-66ICOE3I.js → chunk-QH6LCNOX.js} +1 -1
- package/dist/chunk-R6WTQWAC.js +2 -0
- package/dist/{chunk-Z3KBLIEH.js → chunk-RQHC4TD6.js} +3 -3
- package/dist/chunk-RSCMJIWS.js +1 -0
- package/dist/{chunk-7MU3RJ6S.js → chunk-S4AWJX4Q.js} +1 -1
- package/dist/{chunk-MSBF7IW3.js → chunk-SARZN4M7.js} +2 -2
- package/dist/chunk-SQTY6CJD.js +1 -0
- package/dist/chunk-TBF5CVPA.js +1 -0
- package/dist/chunk-THWO5YVZ.js +1 -0
- package/dist/chunk-TLZG2FCF.js +1 -0
- package/dist/chunk-U3JP4VGF.js +2 -0
- package/dist/{chunk-LG436UTD.js → chunk-V4LF7D4F.js} +1 -1
- package/dist/chunk-VSHV6KJQ.js +5 -0
- package/dist/{chunk-OM67AJQC.js → chunk-VSOP4GUM.js} +1 -1
- package/dist/{chunk-6DJHRLCU.js → chunk-YC4TB3CJ.js} +9 -9
- package/dist/{chunk-GXN65JMA.js → chunk-YN4KND5F.js} +1 -1
- package/dist/chunk-ZTTWFAAC.js +1 -0
- package/dist/drag/index.d.ts +4 -164
- package/dist/edit-lock/index.d.ts +55 -1
- package/dist/edit-lock/index.js +1 -1
- package/dist/{host-DJ8Gzsx7.d.ts → host-BQ_b9Qzk.d.ts} +27 -1
- package/dist/screen/components/AddBlockRow.js +1 -1
- package/dist/screen/components/AddSidePanel.js +1 -1
- package/dist/screen/components/MediaSidePanel.d.ts +3 -2
- package/dist/screen/components/MediaSidePanel.js +1 -1
- package/dist/screen/components/NodeContextMenu.d.ts +208 -5
- package/dist/screen/components/NodeContextMenu.js +1 -1
- package/dist/screen/components/PageEditGuardNotices.js +1 -1
- package/dist/screen/components/ScreenChrome.js +1 -1
- package/dist/screen/components/ScreenDocumentContext.d.ts +2 -1
- package/dist/screen/components/ScreenDocumentContext.js +1 -1
- package/dist/screen/components/ScreenMount.d.ts +14 -3
- package/dist/screen/components/ScreenMount.js +1 -1
- package/dist/screen/components/ScreenStoreProvider.d.ts +20 -5
- package/dist/screen/components/ScreenStoreProvider.js +1 -1
- package/dist/screen/components/SectionScreenShell.js +16 -16
- package/dist/screen/components/SidePanelHead.js +1 -1
- package/dist/screen/components/panel-widths.js +1 -1
- package/dist/screen/components/usePartBridge.d.ts +20 -5
- package/dist/screen/components/usePartBridge.js +1 -1
- package/dist/screen/index.d.ts +17 -6
- package/dist/screen/index.js +1 -1
- package/dist/screen/lib/admin-bridge.d.ts +2 -0
- package/dist/screen/lib/admin-bridge.js +1 -1
- package/dist/screen/lib/backend-error.d.ts +20 -5
- package/dist/screen/lib/backend-error.js +1 -1
- package/dist/screen/lib/document-addressing.d.ts +2 -1
- package/dist/screen/lib/document-switch.js +1 -1
- package/dist/screen/lib/failure.d.ts +6 -2
- package/dist/screen/lib/failure.js +1 -1
- package/dist/screen/lib/host-inbound.js +1 -1
- package/dist/screen/lib/host.d.ts +3 -2
- package/dist/screen/lib/host.js +1 -1
- package/dist/screen/lib/key-scope.js +1 -1
- package/dist/screen/lib/load-error.d.ts +9 -3
- package/dist/screen/lib/load-error.js +1 -1
- package/dist/screen/lib/media-panel.d.ts +81 -17
- package/dist/screen/lib/media-panel.js +1 -1
- package/dist/screen/lib/media-picker.d.ts +14 -2
- package/dist/screen/lib/media-picker.js +1 -1
- package/dist/screen/lib/page-lock.d.ts +45 -1
- package/dist/screen/lib/page-lock.js +1 -1
- package/dist/screen/lib/puck/content-tree.d.ts +27 -1
- package/dist/screen/lib/puck/content-tree.js +1 -1
- package/dist/screen/lib/puck/palette-sections.d.ts +7 -0
- package/dist/screen/lib/puck/palette-sections.js +1 -1
- package/dist/screen/lib/puck/section-doc.js +1 -1
- package/dist/screen/lib/puck/slot-child-name.d.ts +42 -3
- package/dist/screen/lib/puck/slot-child-name.js +1 -1
- package/dist/screen/lib/puck/style-clipboard.d.ts +53 -1
- package/dist/screen/lib/puck/style-clipboard.js +1 -1
- package/dist/screen/lib/puck/use-section-ops.d.ts +6 -0
- package/dist/screen/lib/puck/use-section-ops.js +1 -1
- package/dist/screen/lib/screen-parts.d.ts +619 -10
- package/dist/screen/lib/screen-parts.js +1 -1
- package/dist/screen/lib/section-templates.d.ts +25 -1
- package/dist/screen/lib/section-templates.js +1 -1
- package/dist/screen/lib/session-context.d.ts +5 -1
- package/dist/screen/lib/session-context.js +1 -1
- package/dist/screen/lib/session.d.ts +58 -5
- package/dist/screen/lib/session.js +1 -1
- package/dist/screen/screen.css +18 -0
- package/dist/screen/words.d.ts +96 -2
- package/dist/screen/words.js +1 -1
- package/dist/strings/catalogue.d.ts +4 -2
- package/dist/strings/catalogue.js +1 -1
- package/dist/strings/index.d.ts +1 -1
- package/dist/strings/index.js +1 -1
- package/dist/tree/index.d.ts +4 -142
- package/dist/types-DJDBtdB2.d.ts +143 -0
- package/package.json +1 -1
- package/dist/chunk-3M3A3DN2.js +0 -4
- package/dist/chunk-4MXFKJUY.js +0 -1
- package/dist/chunk-6FY3PZS3.js +0 -1
- package/dist/chunk-A7ZJII7O.js +0 -1
- package/dist/chunk-AJBJ74ME.js +0 -1
- package/dist/chunk-AKZWUV5Z.js +0 -1
- package/dist/chunk-F6CCTEIX.js +0 -1
- package/dist/chunk-FUDHI5I4.js +0 -1
- package/dist/chunk-GENAF3P6.js +0 -1
- package/dist/chunk-HDKTR5TZ.js +0 -62
- package/dist/chunk-HMX55DYT.js +0 -1
- package/dist/chunk-HWW4XJOH.js +0 -1
- package/dist/chunk-JUQ6YJCG.js +0 -1
- package/dist/chunk-NBJ2YY6Y.js +0 -4
- package/dist/chunk-OORDMLL4.js +0 -5
- package/dist/chunk-Q2HPBMG5.js +0 -1
- package/dist/chunk-Q3SQBNJB.js +0 -1
- package/dist/chunk-R5ZVNJLJ.js +0 -2
- package/dist/chunk-SERF2FAU.js +0 -1
- package/dist/chunk-VV5ADNBR.js +0 -1
- package/dist/chunk-YJXEHK6I.js +0 -2
- package/dist/chunk-ZWK3CBRU.js +0 -1
- package/dist/chunk-ZZ7VLIHQ.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
export{SELECTION_MODE,ScreenPartsProvider,sameInspectorMode,useScreenBlockLook,useScreenBlockRules,useScreenBridges,useScreenCanvasFrame,useScreenDevices,useScreenDocumentPass,useScreenInspectorPanel,useScreenLeftView,useScreenOwnerName,useScreenParts,useScreenPinned,useScreenSaveSwitch,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,useScreenStyleClipboard,useStandaloneScreenBridges}from"../../chunk-VSHV6KJQ.js";import"../../chunk-PLVEGYK6.js";import"../../chunk-R6WTQWAC.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-P67FP7PG.js";import"../../chunk-AELNNAFM.js";import"../../chunk-BXZ6WLHC.js";import"../../chunk-EOJNJCMJ.js";import"../../chunk-ZFDCDJNZ.js";import"../../chunk-ZNS7727Y.js";import"../../chunk-3EDSDPIP.js";import"../../chunk-QTLAVDJE.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-KTVH2ZRL.js";import"../../chunk-D2BCHTQR.js";import"../../chunk-EWVJSRRY.js";import"../../chunk-P6O363EE.js";import"../../chunk-FPOKPNO4.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-BZ5ASXOL.js";import"../../chunk-67GNT6PF.js";import"../../chunk-ZNCEOSXO.js";import"../../chunk-L5KW4HG5.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import { SectionTemplateStore } from './section-template-types.js';
|
|
2
|
+
import { EaselSession } from './session.js';
|
|
2
3
|
import './puck/content-tree.js';
|
|
4
|
+
import '../../blocks/index.js';
|
|
5
|
+
import 'react';
|
|
6
|
+
import '../../types-E3HrTPg2.js';
|
|
7
|
+
import '../../data/index.js';
|
|
8
|
+
import '../../types-41704JE4.js';
|
|
9
|
+
import '../../resolve-D68pb3Bx.js';
|
|
10
|
+
import '../../plan-DChbUXdS.js';
|
|
11
|
+
import './backend-error.js';
|
|
12
|
+
import '../../edit-lock/index.js';
|
|
13
|
+
import './host-chrome.js';
|
|
14
|
+
import './links/link-filters.js';
|
|
15
|
+
import '../../LinkPicker-W2Rtxetz.js';
|
|
16
|
+
import './document-contract.js';
|
|
17
|
+
import './document-hooks.js';
|
|
3
18
|
|
|
4
19
|
/**
|
|
5
20
|
* The section templates of the editor on this page — whichever store its
|
|
@@ -18,6 +33,15 @@ import './puck/content-tree.js';
|
|
|
18
33
|
* website's sections into the other's.
|
|
19
34
|
*/
|
|
20
35
|
|
|
36
|
+
/** The section templates of the editor on this page (`currentEaselSession`). */
|
|
21
37
|
declare const sectionTemplates: SectionTemplateStore;
|
|
38
|
+
/**
|
|
39
|
+
* The section templates of ONE editor's session (0.103.0): what the screen's
|
|
40
|
+
* own Add panel lists, so an editor mounted beside the page's (a session made
|
|
41
|
+
* with `claimsPage: false`) lists its own backend's templates, never the page
|
|
42
|
+
* editor's. For the page's own editor it is the same store as
|
|
43
|
+
* {@link sectionTemplates}.
|
|
44
|
+
*/
|
|
45
|
+
declare function sectionTemplatesOf(session: EaselSession): SectionTemplateStore;
|
|
22
46
|
|
|
23
|
-
export { sectionTemplates };
|
|
47
|
+
export { sectionTemplates, sectionTemplatesOf };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{sectionTemplates}from"../../chunk-
|
|
1
|
+
export{sectionTemplates,sectionTemplatesOf}from"../../chunk-BVN33R76.js";import"../../chunk-KCOBHPN6.js";import"../../chunk-RSCMJIWS.js";
|
|
@@ -7,6 +7,8 @@ import '../../data/index.js';
|
|
|
7
7
|
import '../../types-41704JE4.js';
|
|
8
8
|
import '../../resolve-D68pb3Bx.js';
|
|
9
9
|
import '../../plan-DChbUXdS.js';
|
|
10
|
+
import './backend-error.js';
|
|
11
|
+
import '../../edit-lock/index.js';
|
|
10
12
|
import './host-chrome.js';
|
|
11
13
|
import './links/link-filters.js';
|
|
12
14
|
import '../../LinkPicker-W2Rtxetz.js';
|
|
@@ -18,7 +20,9 @@ import './puck/content-tree.js';
|
|
|
18
20
|
/**
|
|
19
21
|
* Hand `session` to the editor below, and make it the page's current one for
|
|
20
22
|
* as long as this is mounted (see `activateEaselSession` for why it happens in
|
|
21
|
-
* render AND in an effect)
|
|
23
|
+
* render AND in an effect) — unless it was made not to claim the page
|
|
24
|
+
* (`claimsPage: false`, 0.103.0): an editor mounted beside the page's is
|
|
25
|
+
* handed its session here and nowhere else.
|
|
22
26
|
*/
|
|
23
27
|
declare function EaselSessionProvider({ session, children }: {
|
|
24
28
|
session: EaselSession;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{EaselSessionProvider,useEaselSession}from"../../chunk-
|
|
1
|
+
export{EaselSessionProvider,useEaselSession}from"../../chunk-O7Q4DDJT.js";import"../../chunk-RSCMJIWS.js";
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Config } from '../../blocks/index.js';
|
|
2
|
+
import { HostFailures } from './backend-error.js';
|
|
2
3
|
import { EaselChrome } from './host-chrome.js';
|
|
3
4
|
import { WebsiteEditLock } from './document-contract.js';
|
|
4
5
|
import { EaselDocumentHooks } from './document-hooks.js';
|
|
@@ -9,6 +10,7 @@ import '../../data/index.js';
|
|
|
9
10
|
import '../../types-41704JE4.js';
|
|
10
11
|
import '../../resolve-D68pb3Bx.js';
|
|
11
12
|
import '../../plan-DChbUXdS.js';
|
|
13
|
+
import '../../edit-lock/index.js';
|
|
12
14
|
import './links/link-filters.js';
|
|
13
15
|
import '../../LinkPicker-W2Rtxetz.js';
|
|
14
16
|
import './puck/content-tree.js';
|
|
@@ -38,6 +40,17 @@ import './puck/content-tree.js';
|
|
|
38
40
|
* editor's last writes — the autosave's flush on unmount, the lock's release —
|
|
39
41
|
* on its own backend and token while the next editor is already mounting.
|
|
40
42
|
*
|
|
43
|
+
* AN EDITOR BESIDE IT (0.103.0). The admin portal mounts the campaign designer
|
|
44
|
+
* in one window while the website editor is open in another, in one page. The
|
|
45
|
+
* designer's session is made with `claimsPage: false`: it never becomes "the
|
|
46
|
+
* editor on this page", so the website's loaders and HTTP client go on reading
|
|
47
|
+
* the website's session (its token, its site, its backend), and the designer
|
|
48
|
+
* reads its own only through its provider and what it is handed to. What used
|
|
49
|
+
* to be one per page and is a host's own — the backend a session falls back on,
|
|
50
|
+
* how a host's client errors read — a session may carry for itself
|
|
51
|
+
* (`defaultBackend`, `hostFailures`), so the second host never has to replace
|
|
52
|
+
* the first host's page-wide registration to bring its own.
|
|
53
|
+
*
|
|
41
54
|
* WHERE NO EDITOR IS MOUNTED — the shop's own pages, a dev harness, a guard —
|
|
42
55
|
* there is the AMBIENT session: the EFFICIENT client, no token until somebody
|
|
43
56
|
* sets one. That is exactly what the old singletons were.
|
|
@@ -141,6 +154,28 @@ interface EaselSession {
|
|
|
141
154
|
* blocks — or null when it does nothing. Read once, with the backend.
|
|
142
155
|
*/
|
|
143
156
|
readonly documentHooks: EaselDocumentHooks | null;
|
|
157
|
+
/**
|
|
158
|
+
* Whether this session is THE EDITOR ON THIS PAGE while it is mounted
|
|
159
|
+
* (0.103.0): the one {@link currentEaselSession} answers, which code outside
|
|
160
|
+
* the editor's React tree reads — a host's loaders, its HTTP client — and
|
|
161
|
+
* the holder of what the page has one of (the tab's block clipboard,
|
|
162
|
+
* components/NodeContextMenu). True, as every session was before.
|
|
163
|
+
*
|
|
164
|
+
* False for an editor mounted BESIDE the page's (the campaign designer in
|
|
165
|
+
* the admin, beside the website editor): mounting it leaves the page's
|
|
166
|
+
* current session as it was, it is read only through its provider
|
|
167
|
+
* (`useEaselSession`) and what it is handed to, and it keeps a block
|
|
168
|
+
* clipboard of its own registry's.
|
|
169
|
+
*/
|
|
170
|
+
readonly claimsPage: boolean;
|
|
171
|
+
/**
|
|
172
|
+
* How the host's own client errors read, for this session's editor alone
|
|
173
|
+
* (lib/backend-error `HostFailures`, 0.103.0) — or null, and it reads them
|
|
174
|
+
* as the page's host said (`provideHostFailures`), as before. A host
|
|
175
|
+
* mounted beside another brings its own here rather than replacing the
|
|
176
|
+
* page's: the two are told apart by whose editor a failure happened in.
|
|
177
|
+
*/
|
|
178
|
+
readonly hostFailures: HostFailures | null;
|
|
144
179
|
/** The console's sign-in: the admin JWT and the legacy brand scope. */
|
|
145
180
|
readonly auth: {
|
|
146
181
|
token: string | null;
|
|
@@ -172,13 +207,16 @@ type DefaultBackend = (session: EaselSession) => SessionBackend;
|
|
|
172
207
|
* A registration rather than an import, because the direction matters: the
|
|
173
208
|
* editor is the builder's and a host's client is the host's (doc/adr/0002).
|
|
174
209
|
* It is one default for the app, not a choice per editor — an embedder that
|
|
175
|
-
* wants another backend for one editor passes `backend`, as before
|
|
210
|
+
* wants another backend for one editor passes `backend`, as before, or a
|
|
211
|
+
* default of that session's own (`createEaselSession({ defaultBackend })`,
|
|
212
|
+
* 0.103.0), which this one never replaces and is never replaced by.
|
|
176
213
|
*/
|
|
177
214
|
declare function provideDefaultBackend(make: DefaultBackend): void;
|
|
178
215
|
/**
|
|
179
216
|
* The backend one editor session talks to: the embedder's own when it supplied
|
|
180
|
-
* one, else the
|
|
181
|
-
*
|
|
217
|
+
* one, else the session's own default when it was made with one, else the
|
|
218
|
+
* host's page-wide default — one client per session, built the first time it
|
|
219
|
+
* is asked for and bound to THAT session's token and website.
|
|
182
220
|
*
|
|
183
221
|
* Throws when there is neither: an editor with no backend can load and save
|
|
184
222
|
* nothing, and falling back to "no pages" would look like an empty website.
|
|
@@ -200,18 +238,33 @@ declare function createEaselSession(options?: {
|
|
|
200
238
|
registry?: Config | null;
|
|
201
239
|
chrome?: EaselChrome | null;
|
|
202
240
|
documentHooks?: EaselDocumentHooks | null;
|
|
241
|
+
/** Is this the editor on this page while it is mounted? Default true; see
|
|
242
|
+
* {@link EaselSession.claimsPage}. */
|
|
243
|
+
claimsPage?: boolean;
|
|
244
|
+
/** What makes this session's backend when `backend` is not given, in
|
|
245
|
+
* place of the page's (`provideDefaultBackend`), bound to this session.
|
|
246
|
+
* Default: the page's. A backend it makes waits for the console's token
|
|
247
|
+
* only when it is the EFFICIENT client (`EFFICIENT_BACKEND`). */
|
|
248
|
+
defaultBackend?: DefaultBackend | null;
|
|
249
|
+
/** How this session's host client errors read; default the page's. See
|
|
250
|
+
* {@link EaselSession.hostFailures}. */
|
|
251
|
+
hostFailures?: HostFailures | null;
|
|
203
252
|
}): EaselSession;
|
|
204
253
|
/** Record the website a session's open document belongs to. */
|
|
205
254
|
declare function setSessionDocumentSite(session: EaselSession, siteId: string | null | undefined): void;
|
|
206
255
|
/** Record the website the host bridged in with an auth grant. */
|
|
207
256
|
declare function setSessionBridgedSite(session: EaselSession, siteId: string | null | undefined): void;
|
|
208
|
-
/** The session of the editor mounted on this page — the ambient one when none is.
|
|
257
|
+
/** The session of the editor mounted on this page — the ambient one when none is.
|
|
258
|
+
* Never a session made with `claimsPage: false`, mounted or not. */
|
|
209
259
|
declare function currentEaselSession(): EaselSession;
|
|
210
260
|
/**
|
|
211
261
|
* Make `session` the page's current one. IDEMPOTENT, and called from two places
|
|
212
262
|
* on purpose: while the editor RENDERS (so a child's effect — which runs before
|
|
213
263
|
* its parent's — already reads the right session) and from the editor's own
|
|
214
264
|
* effect (which is what survives React StrictMode's mount, unmount, mount).
|
|
265
|
+
*
|
|
266
|
+
* A session that does not claim the page (`claimsPage: false`) is left out,
|
|
267
|
+
* whoever asks: the editor beside the page's never takes its place.
|
|
215
268
|
*/
|
|
216
269
|
declare function activateEaselSession(session: EaselSession): void;
|
|
217
270
|
/**
|
|
@@ -252,4 +305,4 @@ declare function efficientClientOpen(): boolean;
|
|
|
252
305
|
/** Start the ambient session again from nothing (tests; a guard between cases). */
|
|
253
306
|
declare function resetAmbientEaselSession(): void;
|
|
254
307
|
|
|
255
|
-
export { EFFICIENT_BACKEND, type EaselSession, type SessionBackend, type SessionBlocks, activateEaselSession, backendOf, createEaselSession, currentEaselSession, deactivateEaselSession, efficientClientOpen, isEfficientBackend, provideDefaultBackend, resetAmbientEaselSession, sessionRegistry, setSessionBridgedSite, setSessionDocumentSite };
|
|
308
|
+
export { type DefaultBackend, EFFICIENT_BACKEND, type EaselSession, type SessionBackend, type SessionBlocks, activateEaselSession, backendOf, createEaselSession, currentEaselSession, deactivateEaselSession, efficientClientOpen, isEfficientBackend, provideDefaultBackend, resetAmbientEaselSession, sessionRegistry, setSessionBridgedSite, setSessionDocumentSite };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{EFFICIENT_BACKEND,activateEaselSession,backendOf,createEaselSession,currentEaselSession,deactivateEaselSession,efficientClientOpen,isEfficientBackend,provideDefaultBackend,resetAmbientEaselSession,sessionRegistry,setSessionBridgedSite,setSessionDocumentSite}from"../../chunk-
|
|
1
|
+
export{EFFICIENT_BACKEND,activateEaselSession,backendOf,createEaselSession,currentEaselSession,deactivateEaselSession,efficientClientOpen,isEfficientBackend,provideDefaultBackend,resetAmbientEaselSession,sessionRegistry,setSessionBridgedSite,setSessionDocumentSite}from"../../chunk-RSCMJIWS.js";
|
package/dist/screen/screen.css
CHANGED
|
@@ -634,6 +634,24 @@
|
|
|
634
634
|
padding: 0;
|
|
635
635
|
}
|
|
636
636
|
|
|
637
|
+
/* A layer's HEAD OVER THE CANVAS (ScreenParts.CanvasHead, 0.105.0): the
|
|
638
|
+
campaign designer's Subject line and its dark mail app's bar, above the
|
|
639
|
+
email the way an inbox shows them. The well stacks the head over the device
|
|
640
|
+
sizer — the sizer still centred across it, as in a row — and the chrome
|
|
641
|
+
fits the frame to the height the head leaves (ScreenChrome `paneHeight`).
|
|
642
|
+
The head spans the well and is never scaled; what it draws in it is the
|
|
643
|
+
layer's. Only a well with a head wears the marker, so the website's well
|
|
644
|
+
keeps its row. */
|
|
645
|
+
.sf-center[data-sf-canvas-head] {
|
|
646
|
+
flex-direction: column;
|
|
647
|
+
justify-content: flex-start;
|
|
648
|
+
}
|
|
649
|
+
.sf-canvas-head {
|
|
650
|
+
flex: none;
|
|
651
|
+
align-self: stretch;
|
|
652
|
+
min-width: 0;
|
|
653
|
+
}
|
|
654
|
+
|
|
637
655
|
/* ── Center: device-framed preview (wraps Puck.Preview) ──────────────── */
|
|
638
656
|
.sf-frame {
|
|
639
657
|
width: 100%;
|
package/dist/screen/words.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The assembled screen's own words (`efficient-easel/strings`, group
|
|
3
3
|
* `screen`): what it says while a document opens, what it says when one will
|
|
4
|
-
* not,
|
|
4
|
+
* not, the word it calls the document in the edit notice, and the words of
|
|
5
|
+
* the Layers tree's frame round the document's nodes (0.103.0): its first
|
|
6
|
+
* row, the pinned groups, the band of sections and the band's "+". And
|
|
7
|
+
* (0.105.0) the Add panel's words (`add`), the main button's, and what the
|
|
8
|
+
* block keys say when a block is copied or will not paste.
|
|
5
9
|
*
|
|
6
10
|
* They came with the screen from the website editor, written into the
|
|
7
11
|
* provider, the mount and the notice; a second host (the campaign designer)
|
|
@@ -17,6 +21,57 @@
|
|
|
17
21
|
* that is the layer's to say (`DocumentAddressing.describeMissing`): these are
|
|
18
22
|
* the words the screen says when the layer says none.
|
|
19
23
|
*/
|
|
24
|
+
/**
|
|
25
|
+
* THE ADD PANEL'S WORDS (0.105.0, seam E9): its head, its groups, the line
|
|
26
|
+
* under its search and where the next thing goes. They were written into
|
|
27
|
+
* components/AddSidePanel and the chrome's `addAtLabel` in a website's words
|
|
28
|
+
* ("Drag onto the page", "Adding at the end of the page"); the campaign
|
|
29
|
+
* designer adds blocks to an email. The defaults are those words, word for
|
|
30
|
+
* word.
|
|
31
|
+
*/
|
|
32
|
+
type ScreenAddWords = {
|
|
33
|
+
/** The panel head's title. */
|
|
34
|
+
title: string;
|
|
35
|
+
/** …its context line where only a place's blocks are offered… */
|
|
36
|
+
contextBlocks: string;
|
|
37
|
+
/** …and everywhere else. */
|
|
38
|
+
contextAll: string;
|
|
39
|
+
/** The head's way out, back to the view underneath, and what it does. */
|
|
40
|
+
done: string;
|
|
41
|
+
doneDescription: string;
|
|
42
|
+
/** The group of the section offered first (`blockLook.firstSection`). */
|
|
43
|
+
startBlank: string;
|
|
44
|
+
/** The group of the saved sections. */
|
|
45
|
+
templates: string;
|
|
46
|
+
/** The first heading over a container's blocks, naming it. */
|
|
47
|
+
inside: (v: {
|
|
48
|
+
name: string;
|
|
49
|
+
}) => string;
|
|
50
|
+
/** A tile's title, naming what it adds. */
|
|
51
|
+
tile: (v: {
|
|
52
|
+
name: string;
|
|
53
|
+
}) => string;
|
|
54
|
+
/** The line under the search where only a place's blocks are offered… */
|
|
55
|
+
hintBlocks: string;
|
|
56
|
+
/** …and everywhere else. */
|
|
57
|
+
hint: string;
|
|
58
|
+
/** The search box's name where only blocks are offered, and elsewhere. */
|
|
59
|
+
searchBlocks: string;
|
|
60
|
+
searchSections: string;
|
|
61
|
+
/** Where the next thing goes: into a container… */
|
|
62
|
+
addingTo: (v: {
|
|
63
|
+
name: string;
|
|
64
|
+
}) => string;
|
|
65
|
+
/** …before a section… */
|
|
66
|
+
addingBefore: (v: {
|
|
67
|
+
name: string;
|
|
68
|
+
}) => string;
|
|
69
|
+
/** …after the last one… */
|
|
70
|
+
addingAtEnd: string;
|
|
71
|
+
/** …and anywhere the screen cannot name. */
|
|
72
|
+
addingHere: string;
|
|
73
|
+
};
|
|
74
|
+
declare const DEFAULT_SCREEN_ADD_WORDS: ScreenAddWords;
|
|
20
75
|
type ScreenWords = {
|
|
21
76
|
/** While the document is on its way, and while an entry may still bounce. */
|
|
22
77
|
loading: string;
|
|
@@ -36,7 +91,46 @@ type ScreenWords = {
|
|
|
36
91
|
}) => string;
|
|
37
92
|
/** What the document is called in the edit notice's sentences ("this page"). */
|
|
38
93
|
noun: string;
|
|
94
|
+
/** The Layers tree's first row: the document's own settings, with nothing
|
|
95
|
+
* selected. */
|
|
96
|
+
pageSettings: string;
|
|
97
|
+
/** The group label over the node pinned first, and the name of its row
|
|
98
|
+
* where the layer names it none. */
|
|
99
|
+
header: string;
|
|
100
|
+
/** …and over the node pinned last. */
|
|
101
|
+
footer: string;
|
|
102
|
+
/** The label over the band of sections on a document with the edit guard
|
|
103
|
+
* (a website's page), where the layer gives the band none of its own. */
|
|
104
|
+
pageSections: string;
|
|
105
|
+
/** …and on a document without it (a website's template). */
|
|
106
|
+
templateSections: string;
|
|
107
|
+
/** The row that ends a band which offers one (`band.addAtEnd`). */
|
|
108
|
+
addSection: string;
|
|
109
|
+
/** The "+" in the gap above a section, named by the section it lands before. */
|
|
110
|
+
addSectionBefore: (v: {
|
|
111
|
+
name: string;
|
|
112
|
+
}) => string;
|
|
113
|
+
/** …and in a gap with no section after it. */
|
|
114
|
+
addSectionHere: string;
|
|
115
|
+
/**
|
|
116
|
+
* The top bar's main button (0.105.0). Owner ruling R3 (Victor Mau,
|
|
117
|
+
* 2026-10-09): BOTH editors' main button says Done. It still publishes a
|
|
118
|
+
* document that publishes and saves one that does not; only its word is
|
|
119
|
+
* one, where it said "Publish" or "Save".
|
|
120
|
+
*/
|
|
121
|
+
done: string;
|
|
122
|
+
/** ⌘C on the selected block (0.105.0): the one of the block keys with
|
|
123
|
+
* nothing to see on the page, so it says so. */
|
|
124
|
+
copied: (v: {
|
|
125
|
+
name: string;
|
|
126
|
+
}) => string;
|
|
127
|
+
/** ⌘V where the held block has nowhere to go (0.105.0). */
|
|
128
|
+
pasteRefused: (v: {
|
|
129
|
+
name: string;
|
|
130
|
+
}) => string;
|
|
131
|
+
/** The Add panel's words (0.105.0). */
|
|
132
|
+
add: ScreenAddWords;
|
|
39
133
|
};
|
|
40
134
|
declare const DEFAULT_SCREEN_WORDS: ScreenWords;
|
|
41
135
|
|
|
42
|
-
export { DEFAULT_SCREEN_WORDS, type ScreenWords };
|
|
136
|
+
export { DEFAULT_SCREEN_ADD_WORDS, DEFAULT_SCREEN_WORDS, type ScreenAddWords, type ScreenWords };
|
package/dist/screen/words.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{DEFAULT_SCREEN_WORDS}from"../chunk-
|
|
1
|
+
export{DEFAULT_SCREEN_ADD_WORDS,DEFAULT_SCREEN_WORDS}from"../chunk-PQXIFBDY.js";
|
|
@@ -8,6 +8,7 @@ import { N as NodeMenuWords } from '../words-DMG4dYq2.js';
|
|
|
8
8
|
import { P as PanelWords } from '../words-BGrHZAJJ.js';
|
|
9
9
|
import { P as PickWords } from '../words-is_Vy6hn.js';
|
|
10
10
|
import { ScreenWords } from '../screen/words.js';
|
|
11
|
+
export { ScreenAddWords } from '../screen/words.js';
|
|
11
12
|
import { S as StyleClipboardWords } from '../words-CnnHb9jo.js';
|
|
12
13
|
import { T as TextStylesWords } from '../words-CRYvAiHX.js';
|
|
13
14
|
import { T as TreeWords } from '../words-DgHcY5qB.js';
|
|
@@ -110,8 +111,9 @@ interface EaselStrings {
|
|
|
110
111
|
canvas: CanvasWords;
|
|
111
112
|
/** `efficient-easel/text-styles` — the Email styles / Site styles list (E6). */
|
|
112
113
|
textStyles: TextStylesWords;
|
|
113
|
-
/** `efficient-easel/screen` — a document opening, one that will not,
|
|
114
|
-
* notice's word for the document
|
|
114
|
+
/** `efficient-easel/screen` — a document opening, one that will not, the
|
|
115
|
+
* notice's word for the document, the Layers tree's frame, the Add panel,
|
|
116
|
+
* the main button and the block keys. */
|
|
115
117
|
screen: ScreenWords;
|
|
116
118
|
}
|
|
117
119
|
/** Today's English, word for word. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{DEFAULT_EASEL_STRINGS,mergeEaselStrings}from"../chunk-
|
|
1
|
+
export{DEFAULT_EASEL_STRINGS,mergeEaselStrings}from"../chunk-53G47SWO.js";import"../chunk-M6F6LS3H.js";import"../chunk-6WY6ZXJG.js";import"../chunk-PQXIFBDY.js";import"../chunk-AELNNAFM.js";import"../chunk-3EDSDPIP.js";import"../chunk-QTLAVDJE.js";import"../chunk-WK3AFPXY.js";import"../chunk-H6DDIBQ4.js";import"../chunk-ZJEBF4NB.js";import"../chunk-RE4LP46F.js";import"../chunk-2OAZYSWJ.js";import"../chunk-UH7IGZKF.js";import"../chunk-ZAOM6PFH.js";import"../chunk-FPOKPNO4.js";import"../chunk-546BBOPE.js";import"../chunk-O2NLQBFX.js";
|
package/dist/strings/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export { N as NodeMenuWords } from '../words-DMG4dYq2.js';
|
|
|
11
11
|
export { P as PanelWords } from '../words-BGrHZAJJ.js';
|
|
12
12
|
export { P as PickWords } from '../words-is_Vy6hn.js';
|
|
13
13
|
export { S as SaveWords } from '../words-D_Lnw1Gr.js';
|
|
14
|
-
export { ScreenWords } from '../screen/words.js';
|
|
14
|
+
export { ScreenAddWords, ScreenWords } from '../screen/words.js';
|
|
15
15
|
export { S as StyleClipboardWords } from '../words-CnnHb9jo.js';
|
|
16
16
|
export { T as TextStylesWords } from '../words-CRYvAiHX.js';
|
|
17
17
|
export { T as TreeWords } from '../words-DgHcY5qB.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-53G47SWO.js";export{DEFAULT_EASEL_STRINGS,mergeEaselStrings}from"../chunk-53G47SWO.js";import"../chunk-M6F6LS3H.js";import"../chunk-6WY6ZXJG.js";import"../chunk-PQXIFBDY.js";import"../chunk-AELNNAFM.js";import"../chunk-3EDSDPIP.js";import"../chunk-QTLAVDJE.js";import"../chunk-WK3AFPXY.js";import"../chunk-H6DDIBQ4.js";import"../chunk-ZJEBF4NB.js";import"../chunk-RE4LP46F.js";import"../chunk-2OAZYSWJ.js";import"../chunk-UH7IGZKF.js";import"../chunk-ZAOM6PFH.js";import"../chunk-FPOKPNO4.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,145 +1,7 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
type LayersTreeProps = {
|
|
6
|
-
/** Extra classes — a host's scroll-bar class, for instance. */
|
|
7
|
-
className?: string;
|
|
8
|
-
children?: ReactNode;
|
|
9
|
-
/** Attributes for the tree's root — `efficient-easel/drag`'s `rootProps()`. */
|
|
10
|
-
rootProps?: HTMLAttributes<HTMLDivElement>;
|
|
11
|
-
};
|
|
12
|
-
type TreeGroupLabelProps = {
|
|
13
|
-
children: ReactNode;
|
|
14
|
-
};
|
|
15
|
-
type SubtreeProps = {
|
|
16
|
-
children?: ReactNode;
|
|
17
|
-
};
|
|
18
|
-
type TreeRowFold = {
|
|
19
|
-
/** Whether the row's subtree is showing. */
|
|
20
|
-
open: boolean;
|
|
21
|
-
/** What folds, in lower case — "section", "column". The caret reads "Collapse section". */
|
|
22
|
-
label: string;
|
|
23
|
-
onToggle: () => void;
|
|
24
|
-
};
|
|
25
|
-
type TreeRowProps = {
|
|
26
|
-
/** A 13px glyph for the row's type. */
|
|
27
|
-
icon: ReactNode;
|
|
28
|
-
/** The row's name — the type's label, or a name the person gave it. */
|
|
29
|
-
name: ReactNode;
|
|
30
|
-
/**
|
|
31
|
-
* The thing's own first words, drawn quieter after the name — "Text BACK IN
|
|
32
|
-
* STOCK NOW". NEW in 0.42.0: a tree of fifteen rows called "Section" cannot be
|
|
33
|
-
* searched by eye. The host decides the words and shortens them.
|
|
34
|
-
*/
|
|
35
|
-
preview?: ReactNode;
|
|
36
|
-
selected?: boolean;
|
|
37
|
-
/** Hidden from the page: the name is struck through and the eye stays showing. */
|
|
38
|
-
hidden?: boolean;
|
|
39
|
-
/**
|
|
40
|
-
* The row can be picked up — whole, by `efficient-easel/drag` (0.74.0). It says
|
|
41
|
-
* so four ways: a faint ⋮ at its left on hover, the grab cursor, a hint after
|
|
42
|
-
* 0.7 s ("Drag to move · ⌥↑ ⌥↓"), and the row lifted with a shadow while it
|
|
43
|
-
* moves. A draggable row draws no `handle`: the row IS the handle.
|
|
44
|
-
*/
|
|
45
|
-
draggable?: boolean;
|
|
46
|
-
/** The hint a draggable row shows after 0.7 s. Default `words.dragHint`: "Drag to move · ⌥↑ ⌥↓". */
|
|
47
|
-
dragHint?: string;
|
|
48
|
-
/** This row is being dragged. */
|
|
49
|
-
dragging?: boolean;
|
|
50
|
-
/** Where a drop would land relative to this row, while a drag is over it. */
|
|
51
|
-
drop?: 'before' | 'after' | 'into';
|
|
52
|
-
/** Present when the row folds; the row leads with its caret. Absent: the caret column is held open. */
|
|
53
|
-
fold?: TreeRowFold;
|
|
54
|
-
/**
|
|
55
|
-
* Props for the drag handle button (the host's drag-and-drop wiring). Absent:
|
|
56
|
-
* no handle. The handle is the ONLY drag source, so it is hidden with opacity
|
|
57
|
-
* and never made unreachable.
|
|
58
|
-
*
|
|
59
|
-
* @deprecated since 0.74.0 — a row driven by `efficient-easel/drag` is picked
|
|
60
|
-
* up whole (`draggable`), and a draggable row draws no handle. Kept until both
|
|
61
|
-
* editors have moved (blueprint 3.3 / 3.4).
|
|
62
|
-
*/
|
|
63
|
-
handle?: ButtonHTMLAttributes<HTMLButtonElement>;
|
|
64
|
-
/** `TreeRowAction`s — laid over the END of the name, shown on hover and focus. */
|
|
65
|
-
actions?: ReactNode;
|
|
66
|
-
/** Stands in for the name — a rename box. It must not move the row by a pixel. */
|
|
67
|
-
nameSlot?: ReactNode;
|
|
68
|
-
/**
|
|
69
|
-
* Selects the row. Present: the name box becomes a real <button> — Enter and
|
|
70
|
-
* Space select from the keyboard — and a selected row says `aria-current`.
|
|
71
|
-
* Absent: the row selects through `rowProps.onClick`, as 0.42.0 did.
|
|
72
|
-
*/
|
|
73
|
-
onSelect?: () => void;
|
|
74
|
-
/** Named state glyphs drawn right after the name — "Hidden on phones". */
|
|
75
|
-
marks?: ReadonlyArray<TreeRowMark>;
|
|
76
|
-
/** A count or position pill after the name — "1 of 2". */
|
|
77
|
-
badge?: ReactNode;
|
|
78
|
-
/** A non-interactive mark at the row's end — the Lock on a pinned section. */
|
|
79
|
-
trailing?: {
|
|
80
|
-
label: string;
|
|
81
|
-
icon: ReactNode;
|
|
82
|
-
};
|
|
83
|
-
/** Drawn inside the row after everything else: overlays such as a drop line. */
|
|
84
|
-
children?: ReactNode;
|
|
85
|
-
/** Attributes for the row itself: onClick, drag-over handlers, data-*. */
|
|
86
|
-
rowProps?: HTMLAttributes<HTMLDivElement> & Record<`data-${string}`, string | number | undefined>;
|
|
87
|
-
/**
|
|
88
|
-
* The row's own words — the drag hint and the caret's — in the host's
|
|
89
|
-
* language: `useEaselStrings().tree` (0.95.0). Left out, English. `dragHint`
|
|
90
|
-
* above still wins for its one line.
|
|
91
|
-
*/
|
|
92
|
-
words?: TreeWords;
|
|
93
|
-
};
|
|
94
|
-
type TreeRowMark = {
|
|
95
|
-
key: string;
|
|
96
|
-
/** Tooltip and accessible name — the mark is a picture of a state. */
|
|
97
|
-
label: string;
|
|
98
|
-
icon: ReactNode;
|
|
99
|
-
};
|
|
100
|
-
type TreeRowActionProps = {
|
|
101
|
-
/**
|
|
102
|
-
* `delete` is the red trash; `eye` shows or hides; `plain` is any other action
|
|
103
|
-
* (a phone toggle, "Duplicate column") in the neutral colour.
|
|
104
|
-
*/
|
|
105
|
-
kind: 'delete' | 'eye' | 'plain';
|
|
106
|
-
/** For a toggle: whether it is on. Adds aria-pressed and keeps it visible at rest. */
|
|
107
|
-
pressed?: boolean;
|
|
108
|
-
disabled?: boolean;
|
|
109
|
-
/** Tooltip and accessible name — "Delete Text", "Show Section". */
|
|
110
|
-
label: string;
|
|
111
|
-
onClick: () => void;
|
|
112
|
-
children: ReactNode;
|
|
113
|
-
};
|
|
114
|
-
type TreeEmptySlotProps = {
|
|
115
|
-
/** A drag is over the slot and may land in it: it lights up and says "Drop here". */
|
|
116
|
-
drop?: boolean;
|
|
117
|
-
/** Present: the box is a button that adds here (it opens the Add panel at this place). */
|
|
118
|
-
onAdd?: () => void;
|
|
119
|
-
/**
|
|
120
|
-
* What the box says at rest. Default `words.addBlock` ("Add a block") with
|
|
121
|
-
* `onAdd`, `words.emptySlot` ("No blocks yet") without.
|
|
122
|
-
*/
|
|
123
|
-
label?: string;
|
|
124
|
-
/**
|
|
125
|
-
* The drag handlers — `efficient-easel/drag`'s
|
|
126
|
-
* `seam({ place: { ...list, index: 0 } }).seamProps`: an empty list has one
|
|
127
|
-
* place, its start.
|
|
128
|
-
*/
|
|
129
|
-
seamProps?: HTMLAttributes<HTMLDivElement>;
|
|
130
|
-
/** The box's own words in the host's language: `useEaselStrings().tree`. Left out, English. */
|
|
131
|
-
words?: TreeWords;
|
|
132
|
-
};
|
|
133
|
-
type TreeSeamProps = {
|
|
134
|
-
/** A drag is over this gap and may land in it: draw the drop line. */
|
|
135
|
-
drop?: boolean;
|
|
136
|
-
/** Present: the gap offers a "+" that adds here (it opens the Add panel at this place). */
|
|
137
|
-
onAdd?: () => void;
|
|
138
|
-
/** The "+"'s accessible name and tooltip — "Add block here". Required with `onAdd`. */
|
|
139
|
-
label?: string;
|
|
140
|
-
/** The drag handlers — `efficient-easel/drag`'s `seam(…).seamProps`. */
|
|
141
|
-
seamProps?: HTMLAttributes<HTMLDivElement>;
|
|
142
|
-
};
|
|
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-DJDBtdB2.js';
|
|
3
|
+
export { f as TreeRowFold, T as TreeRowMark } from '../types-DJDBtdB2.js';
|
|
4
|
+
export { T as TreeWords } from '../words-DgHcY5qB.js';
|
|
143
5
|
|
|
144
6
|
/**
|
|
145
7
|
* The Layers tree's container. It declares the TREE's own rhythm — 10px above a
|
|
@@ -211,4 +73,4 @@ declare function TreeSeam({ drop, onAdd, label, seamProps }: TreeSeamProps): rea
|
|
|
211
73
|
*/
|
|
212
74
|
declare function TreeEmptySlot({ drop, onAdd, label, seamProps, words }: TreeEmptySlotProps): react.JSX.Element;
|
|
213
75
|
|
|
214
|
-
export { LayersTree,
|
|
76
|
+
export { LayersTree, LayersTreeProps, Subtree, SubtreeProps, TREE_DRAG_HINT, TreeEmptySlot, TreeEmptySlotProps, TreeGroupLabel, TreeGroupLabelProps, TreeRow, TreeRowAction, TreeRowActionProps, TreeRowProps, TreeSeam, TreeSeamProps };
|