efficient-easel 22.0.0 → 23.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 +38 -23
- package/dist/{CanvasDragLayer-B6Yn9S8T.d.ts → CanvasDragLayer-NZpaX6aq.d.ts} +15 -4
- package/dist/{ScreenDocumentContext-BIK3uWtF.d.ts → ScreenDocumentContext-BDLUYzlM.d.ts} +4 -4
- package/dist/blocks/index.d.ts +11 -11
- package/dist/canvas/index.d.ts +21 -9
- package/dist/canvas/index.js +1 -1
- package/dist/{canvas-typing-Be4FO4q7.d.ts → canvas-typing-DOBx8dD3.d.ts} +12 -2
- package/dist/{chunk-XWKQP6AE.js → chunk-3P735WOM.js} +4 -4
- package/dist/{chunk-KWLHKKZO.js → chunk-4YUC7B7E.js} +1 -1
- package/dist/chunk-6F5GO337.js +1 -0
- package/dist/{chunk-3S5N4HLJ.js → chunk-6NJHYXJM.js} +1 -1
- package/dist/{chunk-BTDI7JAA.js → chunk-A6ZP5II4.js} +2 -2
- package/dist/{chunk-IWCKVZHS.js → chunk-AGWKB77Q.js} +1 -1
- package/dist/chunk-AT4DDMJS.js +1 -0
- package/dist/chunk-FF54HWSE.js +8 -0
- package/dist/{chunk-IROEWITG.js → chunk-FOOK54T2.js} +1 -1
- package/dist/{chunk-SWBADIQT.js → chunk-G3HAKQUF.js} +1 -1
- package/dist/{chunk-ZOSEBPAI.js → chunk-GKG3M5QK.js} +1 -1
- package/dist/chunk-GXRS52JD.js +5 -0
- package/dist/{chunk-YC6KLSW3.js → chunk-HLMQ34GP.js} +1 -1
- package/dist/chunk-HZSZT3BE.js +7 -0
- package/dist/{chunk-EB6NI2VK.js → chunk-IYHO4XQX.js} +1 -1
- package/dist/chunk-IZGFJWH4.js +1 -0
- package/dist/chunk-KXM6YRG2.js +1 -0
- package/dist/chunk-KXTXYINN.js +16 -0
- package/dist/chunk-LN43DP2A.js +18 -0
- package/dist/{chunk-YHFKWV7H.js → chunk-MXECWHRJ.js} +10 -10
- package/dist/chunk-OXZDSOZV.js +1 -0
- package/dist/{chunk-BSHIQIZC.js → chunk-RPMSET77.js} +1 -1
- package/dist/{chunk-K7BTCBWD.js → chunk-TGZCD6IP.js} +1 -1
- package/dist/chunk-VZUXOZGP.js +64 -0
- package/dist/{chunk-RY5AWQ63.js → chunk-XJ23ULBP.js} +1 -1
- package/dist/{chunk-TLN5ZT76.js → chunk-YHEYJKQL.js} +1 -1
- package/dist/chunk-YU3WHLGI.js +1 -0
- package/dist/copy/index.d.ts +20 -6
- package/dist/copy/index.js +29 -29
- package/dist/data/index.d.ts +30 -22
- package/dist/data/index.js +1 -1
- package/dist/drag/drag.css +10 -1
- package/dist/drag/index.d.ts +5 -5
- package/dist/drag/index.js +1 -1
- package/dist/draw/index.d.ts +1 -1
- package/dist/easel/easel.css +12 -5
- package/dist/easel/index.d.ts +90 -53
- package/dist/easel/index.js +1 -1
- package/dist/edit-lock/index.d.ts +5 -5
- package/dist/fields/fields.css +1 -1
- package/dist/fields/index.d.ts +15 -15
- package/dist/fields/index.js +1 -1
- package/dist/node-ops/index.d.ts +3 -3
- package/dist/node-ops/index.js +1 -1
- package/dist/panel/index.d.ts +1 -1
- package/dist/panel/panel.css +6 -1
- package/dist/pick/index.d.ts +5 -5
- package/dist/{plan-CRUh2kVK.d.ts → plan-D0DgSLnY.d.ts} +5 -5
- package/dist/render/index.d.ts +13 -13
- package/dist/render/index.js +1 -1
- package/dist/{resolve-AJ6WF4EL.d.ts → resolve-Bz4mszpL.d.ts} +5 -5
- package/dist/screen/components/AddBlockRow.js +1 -1
- package/dist/screen/components/AddSidePanel.d.ts +2 -2
- package/dist/screen/components/AddSidePanel.js +1 -1
- package/dist/screen/components/NodeContextMenu.d.ts +17 -20
- package/dist/screen/components/NodeContextMenu.js +1 -1
- package/dist/screen/components/PageEditGuardNotices.js +1 -1
- package/dist/screen/components/PreviewDeviceContext.d.ts +1 -1
- package/dist/screen/components/PreviewPartsContext.d.ts +2 -2
- package/dist/screen/components/SaveControls.d.ts +8 -8
- package/dist/screen/components/ScreenChrome.js +1 -1
- package/dist/screen/components/ScreenDocumentContext.d.ts +5 -5
- package/dist/screen/components/ScreenDocumentContext.js +1 -1
- package/dist/screen/components/ScreenMount.d.ts +8 -8
- package/dist/screen/components/ScreenMount.js +1 -1
- package/dist/screen/components/ScreenStoreProvider.d.ts +12 -12
- package/dist/screen/components/ScreenStoreProvider.js +1 -1
- package/dist/screen/components/SectionScreenShell.js +17 -17
- package/dist/screen/components/usePartBridge.d.ts +10 -10
- package/dist/screen/components/usePartBridge.js +1 -1
- package/dist/screen/index.d.ts +8 -8
- package/dist/screen/index.js +1 -1
- package/dist/screen/lib/admin-bridge.d.ts +4 -4
- package/dist/screen/lib/document/block-types-in.d.ts +2 -1
- package/dist/screen/lib/document/block-types-in.js +1 -1
- package/dist/screen/lib/document/content-tree.d.ts +8 -8
- package/dist/screen/lib/document/device-fields.d.ts +7 -7
- package/dist/screen/lib/document/device-fields.js +1 -1
- package/dist/screen/lib/document/field-markers.d.ts +4 -4
- package/dist/screen/lib/document/palette-sections.d.ts +5 -5
- package/dist/screen/lib/document/panel-fields.d.ts +5 -5
- package/dist/screen/lib/document/panel-no-control-mark.d.ts +3 -3
- package/dist/screen/lib/document/part-id.d.ts +1 -1
- package/dist/screen/lib/document/preview-events.d.ts +2 -2
- package/dist/screen/lib/document/preview-selection-context.d.ts +2 -2
- package/dist/screen/lib/document/section-doc.d.ts +5 -5
- package/dist/screen/lib/document/section-doc.js +1 -1
- package/dist/screen/lib/document/slot-child-name.d.ts +1 -1
- package/dist/screen/lib/document/slot-section-spec.d.ts +1 -1
- package/dist/screen/lib/document/style-clipboard.d.ts +8 -8
- package/dist/screen/lib/document/style-clipboard.js +1 -1
- package/dist/screen/lib/document/tree-reveal.d.ts +4 -4
- package/dist/screen/lib/document/use-section-ops.d.ts +6 -6
- package/dist/screen/lib/document/use-section-ops.js +1 -1
- package/dist/screen/lib/document-addressing.d.ts +5 -5
- package/dist/screen/lib/document-hooks.d.ts +4 -4
- package/dist/screen/lib/host.d.ts +5 -5
- package/dist/screen/lib/key-scope.d.ts +1 -1
- package/dist/screen/lib/key-scope.js +1 -1
- package/dist/screen/lib/media-panel.d.ts +5 -5
- package/dist/screen/lib/media-picker.d.ts +6 -6
- package/dist/screen/lib/page-lock.d.ts +4 -4
- package/dist/screen/lib/screen-parts.d.ts +22 -10
- package/dist/screen/lib/screen-parts.js +1 -1
- package/dist/screen/lib/section-templates.d.ts +4 -4
- package/dist/screen/lib/session-context.d.ts +4 -4
- package/dist/screen/lib/session.d.ts +5 -5
- package/dist/screen/lib/shared-sections.d.ts +4 -4
- package/dist/screen/screen.css +14 -14
- package/dist/screen/words.d.ts +4 -3
- package/dist/screen/words.js +1 -1
- package/dist/{session-CrWwDt7Z.d.ts → session-EsjORLQ0.d.ts} +1 -1
- package/dist/shell/shell.css +2 -2
- package/dist/strings/index.d.ts +2 -2
- package/dist/strings/index.js +2 -2
- package/dist/style-clipboard/index.d.ts +2 -2
- package/dist/text-styles/index.d.ts +3 -3
- package/dist/text-styles/model.d.ts +1 -1
- package/dist/{types-BFd8FqQw.d.ts → types-BIytwvvH.d.ts} +2 -2
- package/dist/{types-DFxBChE3.d.ts → types-BljCVdzR.d.ts} +17 -17
- package/dist/{types-DlQIM1YO.d.ts → types-Dq180WRV.d.ts} +8 -8
- package/dist/{useNodeOps-C_nisDHh.d.ts → useNodeOps-igxrnEhq.d.ts} +2 -2
- package/dist/{watch-D0bNZRtU.d.ts → watch-Unf6SfUf.d.ts} +3 -3
- package/dist/{words-gIDCeRv3.d.ts → words-B5Gb7KFq.d.ts} +1 -1
- package/dist/{words-BpTjCfqO.d.ts → words-Cf5VT2Ic.d.ts} +2 -2
- package/package.json +1 -1
- package/dist/chunk-4LGROS5L.js +0 -1
- package/dist/chunk-BDSLF5BR.js +0 -1
- package/dist/chunk-CPL43ZLJ.js +0 -1
- package/dist/chunk-CUZQ2HMA.js +0 -18
- package/dist/chunk-GHBK7BKL.js +0 -1
- package/dist/chunk-IYYE7VJN.js +0 -65
- package/dist/chunk-KN2TIXUT.js +0 -1
- package/dist/chunk-L55YIXDC.js +0 -1
- package/dist/chunk-MZ5GSSZ3.js +0 -7
- package/dist/chunk-SJMS247S.js +0 -5
- package/dist/chunk-TXR7GC5A.js +0 -8
- package/dist/chunk-WJSEWAWK.js +0 -15
|
@@ -142,7 +142,7 @@ declare function accessForNewDocument(hasEditLock: boolean): EditAccess;
|
|
|
142
142
|
declare const holderOf: (access: EditAccess) => LockHolder | null;
|
|
143
143
|
/** Read the `edit-lock` body — from a 200 or from a 409's error payload. */
|
|
144
144
|
declare function readLockHolder(data: unknown): LockHolder | null;
|
|
145
|
-
/** The five capabilities the old
|
|
145
|
+
/** The five capabilities the old library's `permissions` prop carries for the canvas. */
|
|
146
146
|
type DocumentPermissions = {
|
|
147
147
|
edit: boolean;
|
|
148
148
|
insert: boolean;
|
|
@@ -151,13 +151,13 @@ type DocumentPermissions = {
|
|
|
151
151
|
drag: boolean;
|
|
152
152
|
};
|
|
153
153
|
/**
|
|
154
|
-
* The canvas's the old
|
|
154
|
+
* The canvas's the old library `permissions`, derived from the write gate.
|
|
155
155
|
*
|
|
156
156
|
* BOTH branches name ALL FIVE keys — and that completeness is the whole point,
|
|
157
|
-
* not tidiness. The old
|
|
157
|
+
* not tidiness. The old library does not replace this prop when it changes; it MERGES it
|
|
158
158
|
* over the permissions it already holds (store/slices/permissions.ts,
|
|
159
159
|
* `useRegisterPermissionsSlice`: `{ ...existingGlobalPermissions, ...prop }`),
|
|
160
|
-
* and a field's editability is the live `getPermissions().edit`. The old
|
|
160
|
+
* and a field's editability is the live `getPermissions().edit`. The old library mounts
|
|
161
161
|
* while the lock claim is still `checking`, so `canEdit` is false and the store
|
|
162
162
|
* latches every key false. A PARTIAL writable value (say `{ drag: false }`)
|
|
163
163
|
* would then merge WITHOUT an `edit` key and leave `edit:false` stuck — every
|
|
@@ -166,7 +166,7 @@ type DocumentPermissions = {
|
|
|
166
166
|
* resets them, so the panel comes back the instant `canEdit` flips true.
|
|
167
167
|
*
|
|
168
168
|
* `drag` stays false in EITHER state: both editors move blocks with native DnD
|
|
169
|
-
* rails of their own, so the old
|
|
169
|
+
* rails of their own, so the old library's flaky cross-iframe canvas drag is always off.
|
|
170
170
|
*
|
|
171
171
|
* Write safety is unchanged: the `checking` window is still non-editable here,
|
|
172
172
|
* and the host's own write gate still drops any edit attempted before the claim
|
package/dist/fields/fields.css
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* The rows and the groups are `panel.css`'s (SettingsField, SettingsGroup),
|
|
5
5
|
* and the tabs are the shell's `Tabs`. The panel's rhythm is defined in
|
|
6
6
|
* `panel.css` ONCE (`--es-row-gap`, `--es-rhythm-*`), so this file adds no spacing between rows
|
|
7
|
-
* and no spacing between groups. What it adds is what a row HOLDS where the old
|
|
7
|
+
* and no spacing between groups. What it adds is what a row HOLDS where the old library
|
|
8
8
|
* used to put the browser's own: a text box, a number box, a dropdown.
|
|
9
9
|
*
|
|
10
10
|
* Every colour is a shell token (`shell.css`), so the dark editor is the same
|
package/dist/fields/index.d.ts
CHANGED
|
@@ -4,12 +4,12 @@ import { S as SettingsBucket } from '../buckets-_MGDYJlb.js';
|
|
|
4
4
|
export { D as DesignGroup } from '../buckets-_MGDYJlb.js';
|
|
5
5
|
import { ShowWhenContext } from 'efficient-shell/format';
|
|
6
6
|
export { ShowWhenContext, ShowWhenRule, showWhenOf, withShowWhen } from 'efficient-shell/format';
|
|
7
|
-
import { a as InspectorFieldDef, b as FieldRenderer, I as InspectorFields, c as FieldTextProps, d as FieldNumberProps, e as FieldSliderProps, f as FieldSelectManyProps, g as FieldSelectOneProps, F as FieldOption } from '../types-
|
|
8
|
-
export { A as ArrayFieldDef, C as CustomFieldDef, h as CustomFieldRenderProps, i as FieldSelectProps, N as NumberFieldDef, O as ObjectFieldDef, R as RadioFieldDef, S as SelectFieldDef, j as SlotFieldDef, T as TextFieldDef, k as TextareaFieldDef } from '../types-
|
|
9
|
-
import { R as ResolvableItem } from '../resolve-
|
|
7
|
+
import { a as InspectorFieldDef, b as FieldRenderer, I as InspectorFields, c as FieldTextProps, d as FieldNumberProps, e as FieldSliderProps, f as FieldSelectManyProps, g as FieldSelectOneProps, F as FieldOption } from '../types-BIytwvvH.js';
|
|
8
|
+
export { A as ArrayFieldDef, C as CustomFieldDef, h as CustomFieldRenderProps, i as FieldSelectProps, N as NumberFieldDef, O as ObjectFieldDef, R as RadioFieldDef, S as SelectFieldDef, j as SlotFieldDef, T as TextFieldDef, k as TextareaFieldDef } from '../types-BIytwvvH.js';
|
|
9
|
+
import { R as ResolvableItem } from '../resolve-Bz4mszpL.js';
|
|
10
10
|
export { F as FieldsWords } from '../words-CFkb8XtN.js';
|
|
11
11
|
export { LinkFilter, LinkFilterField, LinkKindChoice, LinkOption, LinkOptionGroup, LinkPicker, LinkPickerProps, LinkRules, LinkTarget } from 'efficient-shell/ui';
|
|
12
|
-
import '../types-
|
|
12
|
+
import '../types-Dq180WRV.js';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* A SETTINGS ROW'S SHOW-WHEN, read by the panel (SSOT batch 1, Lewis
|
|
@@ -81,12 +81,12 @@ interface InspectorFieldProps {
|
|
|
81
81
|
}
|
|
82
82
|
/** A heading level a settings group may draw at. */
|
|
83
83
|
type HeadingLevel = 2 | 3 | 4 | 5 | 6;
|
|
84
|
-
/** The label a row shows: the field's own, else its key, as the old
|
|
84
|
+
/** The label a row shows: the field's own, else its key, as the old library did. */
|
|
85
85
|
declare const labelOf: (field: InspectorFieldDef, name: string) => string;
|
|
86
86
|
/**
|
|
87
|
-
* ONE FIELD, drawn by its type — what the old
|
|
87
|
+
* ONE FIELD, drawn by its type — what the old library's `AutoField` was (blueprint 4.1).
|
|
88
88
|
*
|
|
89
|
-
* custom the field's own render, called with the old
|
|
89
|
+
* custom the field's own render, called with the old library's props plus `context`;
|
|
90
90
|
* text, textarea, number, select
|
|
91
91
|
* a SettingsField row (quiet label, control under it) holding the
|
|
92
92
|
* shell's own control, never the browser's;
|
|
@@ -221,7 +221,7 @@ interface InspectorProps {
|
|
|
221
221
|
headingLevel?: HeadingLevel;
|
|
222
222
|
}
|
|
223
223
|
/**
|
|
224
|
-
* THE SETTINGS PANEL'S BODY (blueprint step 4.1) — what `the old
|
|
224
|
+
* THE SETTINGS PANEL'S BODY (blueprint step 4.1) — what `the old library's fields panel` was in
|
|
225
225
|
* both editors, without the hashed class names both had to hunt.
|
|
226
226
|
*
|
|
227
227
|
* - THE TABS ARE THE FIELDS' OWN. Which tab a field opens is said on the field
|
|
@@ -238,7 +238,7 @@ interface InspectorProps {
|
|
|
238
238
|
* re-bakes its colours from a field on a tab you are not looking at; taking
|
|
239
239
|
* the row out of the tree would stop that.
|
|
240
240
|
* - EVERY ROW IS ONE `.es-insp-row` WITH ITS NAME ON IT (`data-field`), a
|
|
241
|
-
* public class an app may style, where the old
|
|
241
|
+
* public class an app may style, where the old library's wrapper had a hashed one. A row
|
|
242
242
|
* that draws nothing takes no space (`:empty`).
|
|
243
243
|
* - THE SPACING IS THE PANEL'S (panel.css `--es-rhythm-*`): a row adds none of
|
|
244
244
|
* its own, so the rhythm is defined once for both editors.
|
|
@@ -279,11 +279,11 @@ interface ResolvedFieldsInput {
|
|
|
279
279
|
block: FieldsBlock | undefined;
|
|
280
280
|
/** The node that holds it, or null at the top. */
|
|
281
281
|
parent?: ResolvableItem | null;
|
|
282
|
-
/** What a resolver is told about the editor (the old
|
|
282
|
+
/** What a resolver is told about the editor (the old library's public `{ data, ui }`). */
|
|
283
283
|
appState?: unknown;
|
|
284
284
|
}
|
|
285
285
|
/**
|
|
286
|
-
* A NODE'S FIELDS, RESOLVED AS THE OLD
|
|
286
|
+
* A NODE'S FIELDS, RESOLVED AS THE OLD LIBRARY RESOLVED THEM — `useRegisterFieldsSlice`
|
|
287
287
|
* in Puck 0.20, which both editors' `resolveFields` were written against.
|
|
288
288
|
*
|
|
289
289
|
* - A new selection starts from the block's DECLARED fields (`lastFields` is
|
|
@@ -296,7 +296,7 @@ interface ResolvedFieldsInput {
|
|
|
296
296
|
* - `loading` turns on only when an answer takes longer than 50 ms.
|
|
297
297
|
*
|
|
298
298
|
* `appState` and `parent` are read when a resolution starts, never watched:
|
|
299
|
-
* The old
|
|
299
|
+
* The old library re-resolved on the node's change alone.
|
|
300
300
|
*/
|
|
301
301
|
declare function useResolvedFields({ id, node, block, parent, appState }: ResolvedFieldsInput): {
|
|
302
302
|
fields: InspectorFields;
|
|
@@ -350,9 +350,9 @@ interface ListFieldProps<T> {
|
|
|
350
350
|
noun?: string;
|
|
351
351
|
items: readonly T[];
|
|
352
352
|
onChange: (next: T[]) => void;
|
|
353
|
-
/** A fresh item for "+" (the old
|
|
353
|
+
/** A fresh item for "+" (the old library's `defaultItemProps`, copied). */
|
|
354
354
|
newItem: () => T;
|
|
355
|
-
/** The words after an item's name in its row (the old
|
|
355
|
+
/** The words after an item's name in its row (the old library's `getItemSummary`). */
|
|
356
356
|
summary?: (item: T, index: number) => ReactNode;
|
|
357
357
|
/** An item's own name; default "<Noun> <n>". */
|
|
358
358
|
itemName?: (item: T, index: number) => string;
|
|
@@ -401,7 +401,7 @@ declare function moveTo<T>(items: readonly T[], from: number, to: number): T[];
|
|
|
401
401
|
declare function removeAt<T>(items: readonly T[], index: number): T[];
|
|
402
402
|
/**
|
|
403
403
|
* A copy of an item: a deep copy of plain data, so editing the copy never
|
|
404
|
-
* writes through to the original (a list item is JSON — the old
|
|
404
|
+
* writes through to the original (a list item is JSON — the old library stored it so).
|
|
405
405
|
*/
|
|
406
406
|
declare function copyItem<T>(item: T): T;
|
|
407
407
|
declare function ListField<T>({ label, icon, noun: ownNoun, items, onChange, newItem, summary, itemName, thumb, min, max, readOnly, open, onOpen, renderItem, renderRow, canRemove: removable, lockedReason, fixed, removeOnRow, canDuplicate, above, head, }: ListFieldProps<T>): react.JSX.Element;
|
package/dist/fields/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{FieldText,Inspector,InspectorField,LinkPicker,ListField,bucketsOf,copyItem,insertAt,labelOf,moveTo,planFields,removeAt}from"../chunk-
|
|
1
|
+
export{FieldText,Inspector,InspectorField,LinkPicker,ListField,bucketsOf,copyItem,insertAt,labelOf,moveTo,planFields,removeAt}from"../chunk-MXECWHRJ.js";export{fieldIsShown,showWhenOf,shownFields,withShowWhen}from"../chunk-BPXEFVSQ.js";import"../chunk-WHS6Y55E.js";import"../chunk-K56YDHYQ.js";export{FieldSlider}from"../chunk-ZEH6QLBH.js";export{useResolvedFields}from"../chunk-AGWKB77Q.js";import"../chunk-FIVU2COQ.js";import"../chunk-FM6JO4WF.js";import"../chunk-KFV7N2DJ.js";export{FieldNumber}from"../chunk-Y2T3JX7K.js";export{FieldSelect,optionFor}from"../chunk-KFWNGPW3.js";import"../chunk-JACEEVVF.js";import"../chunk-S3DUFDQ6.js";import"../chunk-MFIRYGHW.js";import"../chunk-6NJHYXJM.js";import"../chunk-P2VEMZH5.js";import"../chunk-TGZCD6IP.js";import"../chunk-KXM6YRG2.js";
|
package/dist/node-ops/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { A as AfterRemove, I as ItemSelector, N as NodeSelection, P as PassThrough, a as Planned, S as StepBounds, c as canStep, b as clickPick, d as clickPickPart, f as fromItemSelector, n as nextInChain, e as nodeChain, p as parentStep, g as planDuplicate, h as planMove, i as planPaste, j as planRemove, k as planRestore, l as planSetProps, m as planStep, o as planSwap, t as toItemSelector } from '../plan-
|
|
2
|
-
export { C as ClipboardEntry, N as NodeClipboard, a as NodeOps, b as NodeOpsHost, c as createNodeClipboard, u as useNodeOps } from '../useNodeOps-
|
|
1
|
+
export { A as AfterRemove, I as ItemSelector, N as NodeSelection, P as PassThrough, a as Planned, S as StepBounds, c as canStep, b as clickPick, d as clickPickPart, f as fromItemSelector, n as nextInChain, e as nodeChain, p as parentStep, g as planDuplicate, h as planMove, i as planPaste, j as planRemove, k as planRestore, l as planSetProps, m as planStep, o as planSwap, t as toItemSelector } from '../plan-D0DgSLnY.js';
|
|
2
|
+
export { C as ClipboardEntry, N as NodeClipboard, a as NodeOps, b as NodeOpsHost, c as createNodeClipboard, u as useNodeOps } from '../useNodeOps-igxrnEhq.js';
|
|
3
3
|
import { ReactNode } from 'react';
|
|
4
4
|
import { E as EaselContextMenuItem } from '../types-BbOBWXMP.js';
|
|
5
5
|
import { N as NodeMenuWords } from '../words-DMG4dYq2.js';
|
|
6
|
-
import '../types-
|
|
6
|
+
import '../types-Dq180WRV.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* nodeMenuItems — the right-click rows for a block, ONE list for both editors.
|
package/dist/node-ops/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{createNodeClipboard,nodeMenuItems}from"../chunk-P5VYGWYO.js";import"../chunk-WK3AFPXY.js";export{canStep,clickPick,clickPickPart,fromItemSelector,nextInChain,nodeChain,parentStep,planDuplicate,planMove,planPaste,planRemove,planRestore,planSetProps,planStep,planSwap,toItemSelector,useNodeOps}from"../chunk-
|
|
1
|
+
export{createNodeClipboard,nodeMenuItems}from"../chunk-P5VYGWYO.js";import"../chunk-WK3AFPXY.js";export{canStep,clickPick,clickPickPart,fromItemSelector,nextInChain,nodeChain,parentStep,planDuplicate,planMove,planPaste,planRemove,planRestore,planSetProps,planStep,planSwap,toItemSelector,useNodeOps}from"../chunk-RPMSET77.js";import"../chunk-TGZCD6IP.js";import"../chunk-KXM6YRG2.js";
|
package/dist/panel/index.d.ts
CHANGED
|
@@ -621,7 +621,7 @@ declare function SettingsSegmented<V = string>({ options, value, onChange, ariaL
|
|
|
621
621
|
declare function SettingsGroup({ title, open, onToggle, count, level, id, children, className, }: SettingsGroupProps): react.JSX.Element;
|
|
622
622
|
|
|
623
623
|
/**
|
|
624
|
-
* A group heading with NO group under it — the band on its own, for the old
|
|
624
|
+
* A group heading with NO group under it — the band on its own, for the old library's
|
|
625
625
|
* flat inspector list, where a heading cannot wrap the rows that follow it. A
|
|
626
626
|
* HEADING, not a control: no button, no sign, no count. THE SHELL'S
|
|
627
627
|
* `AccordionHeading` (B2 plan C, Lewis 2026-10-26); this name stays because
|
package/dist/panel/panel.css
CHANGED
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
token behind any of them: there was nowhere to change it once, and no floor
|
|
33
33
|
under any of it.
|
|
34
34
|
|
|
35
|
-
ON `.es-editor`, because the panel HAS no root of its own. The old
|
|
35
|
+
ON `.es-editor`, because the panel HAS no root of its own. The old library lays the
|
|
36
36
|
inspector out as a flat sibling list, so the primitives render no wrapper —
|
|
37
37
|
and `.es-editor` is the chrome root both editors already put on their own
|
|
38
38
|
chrome and the root every colour in this sheet is already read from. A host
|
|
@@ -503,6 +503,11 @@
|
|
|
503
503
|
because it is the only thing saying which name owns which control. Floored
|
|
504
504
|
on `--es-row-gap`, not replaced, and not `calc()`. */
|
|
505
505
|
.es-field { margin-top: max(var(--es-row-gap), var(--es-rhythm-between)); }
|
|
506
|
+
/* An Inspector inside a group body (a host's group of rows under a heading, e.g.
|
|
507
|
+
the website's "This page" in Styles > Basics): `.es-insp` is a flex column, so
|
|
508
|
+
the body's 32px and the first row's 32px do not fold into one. The body
|
|
509
|
+
carries the band's gap; the first row adds none. */
|
|
510
|
+
.es-group-body > .es-insp > .es-insp-rows > .es-insp-row:first-child > .es-field:first-child { margin-top: 0; }
|
|
506
511
|
.es-field-head { margin-bottom: var(--es-rhythm-within); }
|
|
507
512
|
|
|
508
513
|
/* A one-line row (a switch on the name line) has no control line, so no gap
|
package/dist/pick/index.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ type ColourPickerProps = {
|
|
|
21
21
|
* A WORD the row prints in place of the hex. While `value` is `''` it names
|
|
22
22
|
* the empty state ("Not set" by default). Given WITH a colour, it names the
|
|
23
23
|
* state that colour is in — "Auto" for an ink that follows its fill, "Accent"
|
|
24
|
-
* for a button on
|
|
24
|
+
* for a button on theme's colour: the swatch shows the colour the page
|
|
25
25
|
* really has, the row prints the word, and the hex is in the window. A
|
|
26
26
|
* caption that IS the value's hex is no word, and the row's hex box stays.
|
|
27
27
|
*/
|
|
@@ -60,7 +60,7 @@ type ColourPickerProps = {
|
|
|
60
60
|
};
|
|
61
61
|
/**
|
|
62
62
|
* ONE COLOUR ROW (blueprint step 4.6): a swatch and its hex, and — pressing
|
|
63
|
-
* the swatch — the shell's colour picker with
|
|
63
|
+
* the swatch — the shell's colour picker with theme's colours, a
|
|
64
64
|
* saturation-and-brightness square, a hue strip and the hex again.
|
|
65
65
|
*
|
|
66
66
|
* ⚠️ NEVER THE SYSTEM COLOUR DIALOG. `<input type="color">` opens a different
|
|
@@ -111,7 +111,7 @@ type ColourWindowProps = {
|
|
|
111
111
|
onChange: (next: string) => void;
|
|
112
112
|
/** The colour's name: it names the panel's hex box ("<label> hex code"). */
|
|
113
113
|
label: string;
|
|
114
|
-
/** The theme's colours, offered first — the shell panel's `presets`, each named by
|
|
114
|
+
/** The theme's colours, offered first — the shell panel's `presets`, each named by theme. */
|
|
115
115
|
theme?: readonly ThemeColour[];
|
|
116
116
|
/** Escape in the window. The opener closes it and takes the focus back. */
|
|
117
117
|
onClose?: () => void;
|
|
@@ -143,13 +143,13 @@ type ColourWindowProps = {
|
|
|
143
143
|
};
|
|
144
144
|
/**
|
|
145
145
|
* THE COLOUR WINDOW on its own: the shell's `ColorPickerPanel` (easel#199
|
|
146
|
-
* step 4, harness UI-24) —
|
|
146
|
+
* step 4, harness UI-24) — theme's colours as its presets, named by the
|
|
147
147
|
* theme, the saturation and brightness square, the hue strip and the hex.
|
|
148
148
|
* `ColourPicker` opens it in the shell's Popover; a row that draws its own
|
|
149
149
|
* swatches (the text-styles list's Any color, plan step E6) opens the same one
|
|
150
150
|
* in its own flow, so there is one window, not two.
|
|
151
151
|
*
|
|
152
|
-
* What it maps: `theme` → `presets` (`label` =
|
|
152
|
+
* What it maps: `theme` → `presets` (`label` = theme colour's name),
|
|
153
153
|
* `inherited` → `fallback` (the panel starts from it, its hex a placeholder,
|
|
154
154
|
* and nothing is written until something moves), `readOnly` → `disabled`.
|
|
155
155
|
* A pick EQUAL to the inherited colour still writes — it pins it — because the
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { N as Node, P as Place, D as Data, a as DataConfig } from './types-
|
|
1
|
+
import { N as Node, P as Place, D as Data, a as DataConfig } from './types-Dq180WRV.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Every node operation the two editors offer, as ONE pure step: a document in,
|
|
5
5
|
* the next document and what to select out.
|
|
6
6
|
*
|
|
7
|
-
* Why one step. On the old
|
|
7
|
+
* Why one step. On the old library, the editors built these out of several dispatches —
|
|
8
8
|
* the storefront's delete was three (remove, reset the inspector, clear the
|
|
9
|
-
* selection), its cross-slot move three undo steps, its paste two — and the old
|
|
9
|
+
* selection), its cross-slot move three undo steps, its paste two — and the old library's
|
|
10
10
|
* selection is a POSITION, so after a delete it quietly pointed at whatever slid
|
|
11
11
|
* into the gap. Here each operation is computed whole, on `efficient-easel/data`,
|
|
12
12
|
* and the host commits it in one write (see ./useNodeOps). One action, one undo.
|
|
@@ -145,9 +145,9 @@ interface ItemSelector {
|
|
|
145
145
|
zone?: string;
|
|
146
146
|
index: number;
|
|
147
147
|
}
|
|
148
|
-
/** A node selection as the old
|
|
148
|
+
/** A node selection as the old library's `itemSelector`; `null` for nothing or a slot. */
|
|
149
149
|
declare function toItemSelector(data: Data, config: DataConfig, selection: NodeSelection): ItemSelector | null;
|
|
150
|
-
/** The old
|
|
150
|
+
/** The old library's `itemSelector` as a node selection; `null` when it points at nothing. */
|
|
151
151
|
declare function fromItemSelector(data: Data, config: DataConfig, selector: ItemSelector | null | undefined): NodeSelection;
|
|
152
152
|
|
|
153
153
|
export { type AfterRemove as A, type ItemSelector as I, type NodeSelection as N, type PassThrough as P, type StepBounds as S, type Planned as a, clickPick as b, canStep as c, clickPickPart as d, nodeChain as e, fromItemSelector as f, planDuplicate as g, planMove as h, planPaste as i, planRemove as j, planRestore as k, planSetProps as l, planStep as m, nextInChain as n, planSwap as o, parentStep as p, toItemSelector as t };
|
package/dist/render/index.d.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { CSSProperties, ReactNode, ReactElement } from 'react';
|
|
2
|
-
import { B as BlockShape, D as Data } from '../types-
|
|
2
|
+
import { B as BlockShape, D as Data } from '../types-Dq180WRV.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* efficient-easel/render — draw a saved document, the published way.
|
|
6
6
|
*
|
|
7
|
-
* Step 1.2 of the engine that replaces the old
|
|
7
|
+
* Step 1.2 of the engine that replaces the old library (blueprint "From The Ground
|
|
8
8
|
* Up For Efficient Editor", 2026-09-29). The published storefront draws every
|
|
9
|
-
* page through the old
|
|
9
|
+
* page through the old library's `<Render>` today (efficient-storefront `lib/document/render-client.tsx`
|
|
10
10
|
* and `components/PublishedFooter.tsx`); this is the drop-in for it: the same
|
|
11
11
|
* config, the same document, THE SAME HTML — `tests/render-document-parity.test.tsx`
|
|
12
12
|
* renders both and compares the markup byte for byte.
|
|
13
13
|
*
|
|
14
|
-
* WHAT IS DIFFERENT IS WHAT IT IS MADE OF. The old
|
|
14
|
+
* WHAT IS DIFFERENT IS WHAT IT IS MADE OF. The old library's `<Render>` reaches the
|
|
15
15
|
* document through a React context and builds each block's props in hooks, so
|
|
16
16
|
* it can only run as a client component. This is a plain function: no hook, no
|
|
17
17
|
* context, no state, no browser global. It runs in a server component, in a
|
|
@@ -20,12 +20,12 @@ import { B as BlockShape, D as Data } from '../types-DlQIM1YO.js';
|
|
|
20
20
|
* the blocks (the storefront's are client components today; blueprint default
|
|
21
21
|
* #4 keeps that wrapper until they are moved one by one).
|
|
22
22
|
*
|
|
23
|
-
* THE BLOCK AUTHORING SHAPE IS THE OLD
|
|
23
|
+
* THE BLOCK AUTHORING SHAPE IS THE OLD LIBRARY'S (blueprint default #3), so an app hands
|
|
24
24
|
* in the config it has:
|
|
25
25
|
*
|
|
26
26
|
* - a block's `render` receives its props, plus `editor`, plus each SLOT as a
|
|
27
27
|
* component: `render: ({ content: Content }) => <Content className="…" />`.
|
|
28
|
-
* A slot draws `<div className style>` around its blocks, as the old
|
|
28
|
+
* A slot draws `<div className style>` around its blocks, as the old library's does,
|
|
29
29
|
* and says how many it draws in `Content.blockCount` (the editor's
|
|
30
30
|
* canvas gives the same number);
|
|
31
31
|
* - the root's `render` receives the root props, `editor`, `title` (`''` when
|
|
@@ -36,10 +36,10 @@ import { B as BlockShape, D as Data } from '../types-DlQIM1YO.js';
|
|
|
36
36
|
* because they are good design:
|
|
37
37
|
*
|
|
38
38
|
* 1. The top-level list is wrapped in one plain `<div>`, root render or not.
|
|
39
|
-
* (the old
|
|
39
|
+
* (the old library's own SERVER `<Render>` uses a fragment there instead, so the old library's
|
|
40
40
|
* two renderers disagree; the client one is what is published.) A host
|
|
41
41
|
* that needs to reach that wrapper from its stylesheet passes `className`
|
|
42
|
-
* (0.95.0); left out, the `<div>` is as bare as the old
|
|
42
|
+
* (0.95.0); left out, the `<div>` is as bare as the old library's.
|
|
43
43
|
* 2. `editor` differs by level. The root gets
|
|
44
44
|
* `{ renderDropZone, isEditing: false, dragRef: null, metadata }`; a
|
|
45
45
|
* top-level block gets `{ renderDropZone, metadata: { ...metadata,
|
|
@@ -49,7 +49,7 @@ import { B as BlockShape, D as Data } from '../types-DlQIM1YO.js';
|
|
|
49
49
|
*
|
|
50
50
|
* `renderDropZone` draws a legacy `zones` entry. Neither editor writes zones,
|
|
51
51
|
* so it draws an empty `<div>` in practice; it exists so a block that still
|
|
52
|
-
* calls it gets what the old
|
|
52
|
+
* calls it gets what the old library gave it.
|
|
53
53
|
*
|
|
54
54
|
* LEAF DISCIPLINE: imports React's JSX runtime and this package's own data
|
|
55
55
|
* layer, nothing else (`tests/render-leaf-safety.test.ts`).
|
|
@@ -97,10 +97,10 @@ interface RenderConfig {
|
|
|
97
97
|
}
|
|
98
98
|
/**
|
|
99
99
|
* What `Render` draws: a saved document, as loosely as the renderer reads it.
|
|
100
|
-
* `root.props` is OPTIONAL here, as it is in the old
|
|
101
|
-
* that holds its props directly (the older format) is drawn the way the old
|
|
100
|
+
* `root.props` is OPTIONAL here, as it is in the old library's own `Data` type — a root
|
|
101
|
+
* that holds its props directly (the older format) is drawn the way the old library draws
|
|
102
102
|
* it, and a document with no root or no content draws an empty page. So a
|
|
103
|
-
* old-
|
|
103
|
+
* old-library-typed document is passed as it is, with no cast.
|
|
104
104
|
*/
|
|
105
105
|
interface RenderData {
|
|
106
106
|
root?: {
|
|
@@ -117,7 +117,7 @@ interface RenderProps {
|
|
|
117
117
|
/**
|
|
118
118
|
* A class for the `<div>` around the top-level list — that wrapper, and
|
|
119
119
|
* nothing else. OPT-IN: left out (or empty) the wrapper carries no attribute
|
|
120
|
-
* at all, and the markup is the old
|
|
120
|
+
* at all, and the markup is the old library's, byte for byte.
|
|
121
121
|
*/
|
|
122
122
|
className?: string;
|
|
123
123
|
}
|
package/dist/render/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{isRecord as t,fieldsFrom as n,slotLocations as e,setIn as o,drawnBlockCount as r,isNode as a}from"../chunk-
|
|
1
|
+
import{isRecord as t,fieldsFrom as n,slotLocations as e,setIn as o,drawnBlockCount as r,isNode as a}from"../chunk-KXM6YRG2.js";import{jsx as i}from"react/jsx-runtime";function c({config:e,data:o,metadata:r={},className:a}){const c=Array.isArray(o?.content)?o.content:[],d=t(o?.root)?o.root:{},m="props"in d?d.props:d,f={config:e,content:c,zones:t(o?.zones)?o.zones:{},metadata:r},p={renderDropZone:u(f,"root"),isEditing:!1,dragRef:null,metadata:r},g={...m,editor:p,title:m?.title||"",editMode:!1,id:"page-root"},y=s(f,n(e.root),g),h=c.map(t=>l(f,t)),z=/* @__PURE__ */i("div",a?{className:a,children:h}:{children:h}),N=e.root?.render;return N?/* @__PURE__ */i(N,{...y,children:z}):z}function s(t,n,r){let a=r;for(const i of e(r,n))a=o(a,i.segments,d(t,i.content));return a}function d(t,e){return Object.assign(function(o={}){/* @__PURE__ */
|
|
2
2
|
return i("div",{className:o.className,style:o.style,children:e.map(e=>function(t,e){if(!a(e))return null;const o=t.config.components[e.type];if(!o)return null;const r=s(t,n(o),e.props),c=o.render,d={...r.editor,metadata:t.metadata||{}};/* @__PURE__ */
|
|
3
3
|
return i(c,{...r,editor:d},r.id)}(t,e))})},{blockCount:r(e,t.config.components)})}function l(t,e){if(!a(e))return null;const o=t.config.components[e.type];if(!o)return null;const r=s(t,n(o),e.props),c=o.render,d={...r.editor,renderDropZone:u(t,r.id),metadata:{...t.metadata,...o.metadata}};/* @__PURE__ */
|
|
4
4
|
return i(c,{...r,editor:d},r.id)}function u(t,n){return function({zone:e,className:o,style:r}){const a=`${n}:${e}`,c="root:default-zone"===a?t.content:t.zones[a],s=Array.isArray(c)?c:[];/* @__PURE__ */
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { a as DataConfig } from './types-
|
|
1
|
+
import { a as DataConfig } from './types-Dq180WRV.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* A BLOCK'S `resolveData`, RUN AS THE OLD
|
|
4
|
+
* A BLOCK'S `resolveData`, RUN AS THE OLD LIBRARY RAN IT — `resolveComponentData` in the old library
|
|
5
5
|
* 0.20 (`lib/resolve-component-data.ts`), because the documents both editors
|
|
6
6
|
* hold were resolved by it and must go on resolving the same way.
|
|
7
7
|
*
|
|
8
8
|
* - It runs only when the item differs from the last one resolved for that id
|
|
9
9
|
* (deep-equal), unless the trigger is "force"; the last answer is reused.
|
|
10
10
|
* - `changed` names every prop of the new item with whether it differs from
|
|
11
|
-
* the last one resolved (`changedProps`, the old
|
|
11
|
+
* the last one resolved (`changedProps`, the old library's `getChanged`).
|
|
12
12
|
* - The block's own `metadata` is spread over the host's.
|
|
13
13
|
* - The answer's `props` are spread OVER the item's, and its `readOnly` kept
|
|
14
14
|
* when it has any key.
|
|
15
15
|
* - Then every slot's children are resolved the same way, in order.
|
|
16
16
|
*
|
|
17
|
-
* What differs from the old
|
|
17
|
+
* What differs from the old library is only where the memory lives: the old library kept the last
|
|
18
18
|
* change per id in a module-level object shared by every editor on the page;
|
|
19
19
|
* here the host hands in its own (`createResolveCache`), one per editor.
|
|
20
20
|
*
|
|
@@ -43,7 +43,7 @@ interface ResolveOptions {
|
|
|
43
43
|
}
|
|
44
44
|
/** Deep equality of JSON-shaped values, as `fast-deep-equal` answers it for them. */
|
|
45
45
|
declare function deepEqual(a: unknown, b: unknown): boolean;
|
|
46
|
-
/** Every prop of `next`, and whether it differs from `last` (the old
|
|
46
|
+
/** Every prop of `next`, and whether it differs from `last` (the old library's `getChanged`). */
|
|
47
47
|
declare function changedProps(next: ResolvableItem | null | undefined, last: ResolvableItem | null | undefined): Record<string, boolean>;
|
|
48
48
|
/**
|
|
49
49
|
* Resolve one item and everything in its slots. `didChange` says whether the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{AddBlockRow as default}from"../../chunk-
|
|
1
|
+
export{AddBlockRow as default}from"../../chunk-HLMQ34GP.js";import"../../chunk-RUQOIQWI.js";import"../../chunk-GXRS52JD.js";import"../../chunk-FHCKFOCD.js";import"../../chunk-MQA7OFRA.js";import"../../chunk-IYHO4XQX.js";import"../../chunk-TCAAOYQY.js";import"../../chunk-KXTXYINN.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-MXECWHRJ.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-WHS6Y55E.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-AGWKB77Q.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-RPMSET77.js";import"../../chunk-FM6JO4WF.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-HZSZT3BE.js";import"../../chunk-KRL3IUV3.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-JACEEVVF.js";import"../../chunk-S3DUFDQ6.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-6NJHYXJM.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-YU3WHLGI.js";import"../../chunk-LF3FUSCQ.js";import"../../chunk-TGZCD6IP.js";import"../../chunk-KXM6YRG2.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
-
import { D as DragSession } from '../../session-
|
|
3
|
+
import { D as DragSession } from '../../session-EsjORLQ0.js';
|
|
4
4
|
import { SectionTemplate } from '../lib/section-template-types.js';
|
|
5
5
|
import { SharedSection } from '../lib/shared-section-types.js';
|
|
6
6
|
import { BlockChoice } from '../lib/document/block-choice.js';
|
|
7
|
-
import '../../types-
|
|
7
|
+
import '../../types-Dq180WRV.js';
|
|
8
8
|
import '../lib/document/content-tree.js';
|
|
9
9
|
|
|
10
10
|
/** What a tile adds, parsed back out of its key. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{blockKey,AddSidePanel as default,sectionKey,sharedKey,templateKey}from"../../chunk-
|
|
1
|
+
export{blockKey,AddSidePanel as default,sectionKey,sharedKey,templateKey}from"../../chunk-FF54HWSE.js";import"../../chunk-VKPOH6MK.js";import"../../chunk-IZGFJWH4.js";import"../../chunk-N7E6264U.js";import"../../chunk-N3MJOHAG.js";import"../../chunk-SINAM2IT.js";import"../../chunk-UMDQ6CLQ.js";import"../../chunk-RUQOIQWI.js";import"../../chunk-GXRS52JD.js";import"../../chunk-KCOBHPN6.js";import"../../chunk-FHCKFOCD.js";import"../../chunk-YM4UEGBV.js";import"../../chunk-SNF5764Q.js";import"../../chunk-MQA7OFRA.js";import"../../chunk-IYHO4XQX.js";import"../../chunk-TCAAOYQY.js";import"../../chunk-KXTXYINN.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-MXECWHRJ.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-WHS6Y55E.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-AGWKB77Q.js";import"../../chunk-ZKY45F5G.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-RPMSET77.js";import"../../chunk-FM6JO4WF.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-ZG6PVMC3.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-AJSDWWJW.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-HZSZT3BE.js";import"../../chunk-KRL3IUV3.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-JACEEVVF.js";import"../../chunk-S3DUFDQ6.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-LN43DP2A.js";import"../../chunk-TQ5Y6S2X.js";import"../../chunk-6NJHYXJM.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-YU3WHLGI.js";import"../../chunk-LF3FUSCQ.js";import"../../chunk-TGZCD6IP.js";import"../../chunk-KXM6YRG2.js";
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { E as EaselContextMenuItem } from '../../types-BbOBWXMP.js';
|
|
3
|
-
import { P as Place } from '../../types-
|
|
4
|
-
import { N as NodeClipboard, C as ClipboardEntry, a as NodeOps } from '../../useNodeOps-
|
|
3
|
+
import { P as Place } from '../../types-Dq180WRV.js';
|
|
4
|
+
import { N as NodeClipboard, C as ClipboardEntry, a as NodeOps } from '../../useNodeOps-igxrnEhq.js';
|
|
5
5
|
import { N as NodeMenuWords } from '../../words-DMG4dYq2.js';
|
|
6
6
|
import { StyleSnapshot } from '../../style-clipboard/index.js';
|
|
7
7
|
import { S as StyleClipboardWords } from '../../words-CnnHb9jo.js';
|
|
8
8
|
import { ScreenMenuWords } from '../words.js';
|
|
9
|
-
import { C as CanvasTarget } from '../../watch-
|
|
9
|
+
import { C as CanvasTarget } from '../../watch-Unf6SfUf.js';
|
|
10
10
|
import { ScreenMenuRows } from '../lib/screen-parts.js';
|
|
11
11
|
import { EaselSession } from '../lib/session.js';
|
|
12
|
-
import '../../plan-
|
|
12
|
+
import '../../plan-D0DgSLnY.js';
|
|
13
13
|
import '../../blocks/index.js';
|
|
14
|
-
import '../../types-
|
|
14
|
+
import '../../types-BljCVdzR.js';
|
|
15
15
|
import '../../data/index.js';
|
|
16
|
-
import '../../resolve-
|
|
16
|
+
import '../../resolve-Bz4mszpL.js';
|
|
17
17
|
import '../../types-B3iSHX-w.js';
|
|
18
18
|
import '../../types-Cy7rdmXt.js';
|
|
19
19
|
import '../../wordFit-7XpmhcaW.js';
|
|
20
20
|
import '../../edit-lock/index.js';
|
|
21
21
|
import '../../panelWidths-DgQXiPXU.js';
|
|
22
|
-
import '../../CanvasDragLayer-
|
|
23
|
-
import '../../session-
|
|
22
|
+
import '../../CanvasDragLayer-NZpaX6aq.js';
|
|
23
|
+
import '../../session-EsjORLQ0.js';
|
|
24
24
|
import '../../words-SD4neL0n.js';
|
|
25
25
|
import '../../types-DBy3L69b.js';
|
|
26
26
|
import 'efficient-shell/ui';
|
|
@@ -30,7 +30,7 @@ import '../lib/section-template-types.js';
|
|
|
30
30
|
import '../lib/document/content-tree.js';
|
|
31
31
|
import '../lib/shared-section-types.js';
|
|
32
32
|
import '../lib/document/block-choice.js';
|
|
33
|
-
import '../../ScreenDocumentContext-
|
|
33
|
+
import '../../ScreenDocumentContext-BDLUYzlM.js';
|
|
34
34
|
import '../lib/document-contract.js';
|
|
35
35
|
import '../lib/document-switch.js';
|
|
36
36
|
import '../../engine-CvXpFE86.js';
|
|
@@ -158,15 +158,12 @@ type NodeMenuHost = {
|
|
|
158
158
|
back: () => void;
|
|
159
159
|
forward: () => void;
|
|
160
160
|
};
|
|
161
|
-
/**
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
*
|
|
166
|
-
|
|
167
|
-
* Absent: "Page settings", as the row always said.
|
|
168
|
-
*/
|
|
169
|
-
pageSettingsLabel?: string;
|
|
161
|
+
/** Take the merchant to THIS document's own styles (the layer's
|
|
162
|
+
* `ScreenBridges.openPageStyles`). Absent: the menu has no such row. */
|
|
163
|
+
openPageStyles?: () => void;
|
|
164
|
+
/** What the page's menu calls that row: `EaselStrings.screen.pageStyles`.
|
|
165
|
+
* Absent: "This page". */
|
|
166
|
+
pageStylesLabel?: string;
|
|
170
167
|
/**
|
|
171
168
|
* THE MENU'S WORDS in the host's language (3.1.0): a node's rows
|
|
172
169
|
* (`EaselStrings.menu`), Copy style and Paste style (`styleClipboard`), and
|
|
@@ -316,7 +313,7 @@ type NodeMenuHost = {
|
|
|
316
313
|
* A top-level node goes through `selectIndex` (inspector mode, the Locations
|
|
317
314
|
* focus reset, scroll the preview to it); a slot child goes through
|
|
318
315
|
* `selectChild`, which for a SLIDER parent must move the carousel to that
|
|
319
|
-
* slide BEFORE selecting, or the old
|
|
316
|
+
* slide BEFORE selecting, or the old library measures its overlay on an off-screen slide
|
|
320
317
|
* and the canvas grows a horizontal scrollbar. Neither is restated here. The
|
|
321
318
|
* `parentType` is what the slider question is asked of, so the chain hands it
|
|
322
319
|
* down rather than the chrome looking it up a second time.
|
|
@@ -569,7 +566,7 @@ declare function textMenuItems(host: NodeMenuHost, el: TextEl): EaselContextMenu
|
|
|
569
566
|
* render. Per-row handlers are deliberately gone — see {@link onTreeContextMenu}.
|
|
570
567
|
*
|
|
571
568
|
* `canvas` is the editor's canvas frame (`efficient-easel/canvas`
|
|
572
|
-
* `useCanvasFrame`, found once by the chrome) — null until the old
|
|
569
|
+
* `useCanvasFrame`, found once by the chrome) — null until the old library has drawn into
|
|
573
570
|
* it. The canvas half below listens on it.
|
|
574
571
|
*/
|
|
575
572
|
declare function useNodeContextMenu(host: NodeMenuHost, canvas: CanvasTarget | null): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{EASEL_NODE_CLIPBOARD,ancestorChain,nodeClipboardOf,nodeClipboardRules,nodeMenuItems,nodeShortcut,pageMenuItems,pastePlace,runNodeShortcut,textMenuItems,useNodeClipboard,useNodeContextMenu}from"../../chunk-
|
|
1
|
+
export{EASEL_NODE_CLIPBOARD,ancestorChain,nodeClipboardOf,nodeClipboardRules,nodeMenuItems,nodeShortcut,pageMenuItems,pastePlace,runNodeShortcut,textMenuItems,useNodeClipboard,useNodeContextMenu}from"../../chunk-AT4DDMJS.js";import"../../chunk-YM4UEGBV.js";import"../../chunk-SNF5764Q.js";import"../../chunk-MQA7OFRA.js";import"../../chunk-IYHO4XQX.js";import"../../chunk-V7U33NF2.js";import"../../chunk-6WY6ZXJG.js";import"../../chunk-TCAAOYQY.js";import"../../chunk-ZKY45F5G.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-P5VYGWYO.js";import"../../chunk-WK3AFPXY.js";import"../../chunk-RPMSET77.js";import"../../chunk-YU3WHLGI.js";import"../../chunk-LF3FUSCQ.js";import"../../chunk-TGZCD6IP.js";import"../../chunk-KXM6YRG2.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{PageEditGuardNotices as default}from"../../chunk-
|
|
1
|
+
export{PageEditGuardNotices as default}from"../../chunk-GKG3M5QK.js";import"../../chunk-A6ZP5II4.js";import"../../chunk-77IWWW6X.js";import"../../chunk-ERR437B5.js";import"../../chunk-UNVKPVZW.js";import"../../chunk-GMCZXMOV.js";import"../../chunk-RLBXE4EU.js";import"../../chunk-HNKB2ZYR.js";import"../../chunk-CLOS6SSX.js";import"../../chunk-BIK3AO2V.js";import"../../chunk-LOMEH6DG.js";import"../../chunk-KCOBHPN6.js";import"../../chunk-FHCKFOCD.js";import"../../chunk-YM4UEGBV.js";import"../../chunk-SNF5764Q.js";import"../../chunk-MQA7OFRA.js";import"../../chunk-IYHO4XQX.js";import"../../chunk-NDRZP6YR.js";import"../../chunk-H6DDIBQ4.js";import"../../chunk-ZG6PVMC3.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-AJSDWWJW.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MFIRYGHW.js";
|
|
@@ -6,7 +6,7 @@ import { ViewTier } from '../lib/content/view-tiers.js';
|
|
|
6
6
|
*
|
|
7
7
|
* The storefront editor chrome (ScreenChrome) owns a Desktop / Tablet
|
|
8
8
|
* / Mobile switcher in its top bar (local `device` state, rendered at logical
|
|
9
|
-
* widths 2000 / 800 / 390). That switcher — NOT the old
|
|
9
|
+
* widths 2000 / 800 / 390). That switcher — NOT the old library's built-in viewports — is
|
|
10
10
|
* what resizes the preview iframe, so viewport-aware inspector fields must read
|
|
11
11
|
* IT to know which view the merchant is editing. The chrome lends its live
|
|
12
12
|
* `device` to the website layer, which provides it here
|
|
@@ -13,7 +13,7 @@ import * as react from 'react';
|
|
|
13
13
|
* than listed.
|
|
14
14
|
*
|
|
15
15
|
* That is also why it is a fourth context and not a rewrite of the three: their
|
|
16
|
-
* regions carry NO
|
|
16
|
+
* regions carry NO old-library fields at all (a HeroSingle's copy and a Hero's ticker
|
|
17
17
|
* items are props with bespoke panels and no field declarations), so a
|
|
18
18
|
* field-derived bridge cannot see them and the two mechanisms provably never
|
|
19
19
|
* claim the same element. See the card report for why retiring them is its own
|
|
@@ -22,7 +22,7 @@ import * as react from 'react';
|
|
|
22
22
|
* The payload is ONE string — `"<nodeId>::<propKey>"`, or `"<nodeId>::"` for the
|
|
23
23
|
* whole section — so the shared {@link createPreviewSelectionContext} factory
|
|
24
24
|
* fits unchanged; `encodePartId`/`decodePartId` own that spelling. Provider sits
|
|
25
|
-
* ABOVE the old
|
|
25
|
+
* ABOVE the old library's root so its value reaches BOTH the chrome (which registers the select
|
|
26
26
|
* handler and mirrors the open panel back) AND the portaled preview iframe.
|
|
27
27
|
*/
|
|
28
28
|
declare const PreviewPartsProvider: ({ children }: {
|
|
@@ -9,14 +9,14 @@ import '../../wordFit-7XpmhcaW.js';
|
|
|
9
9
|
import '../../edit-lock/index.js';
|
|
10
10
|
import '../../panelWidths-DgQXiPXU.js';
|
|
11
11
|
import '../../blocks/index.js';
|
|
12
|
-
import '../../types-
|
|
12
|
+
import '../../types-BljCVdzR.js';
|
|
13
13
|
import '../../data/index.js';
|
|
14
|
-
import '../../types-
|
|
15
|
-
import '../../resolve-
|
|
16
|
-
import '../../plan-
|
|
17
|
-
import '../../watch-
|
|
18
|
-
import '../../CanvasDragLayer-
|
|
19
|
-
import '../../session-
|
|
14
|
+
import '../../types-Dq180WRV.js';
|
|
15
|
+
import '../../resolve-Bz4mszpL.js';
|
|
16
|
+
import '../../plan-D0DgSLnY.js';
|
|
17
|
+
import '../../watch-Unf6SfUf.js';
|
|
18
|
+
import '../../CanvasDragLayer-NZpaX6aq.js';
|
|
19
|
+
import '../../session-EsjORLQ0.js';
|
|
20
20
|
import '../../words-SD4neL0n.js';
|
|
21
21
|
import '../../types-BbOBWXMP.js';
|
|
22
22
|
import '../../style-clipboard/index.js';
|
|
@@ -29,7 +29,7 @@ import '../lib/section-template-types.js';
|
|
|
29
29
|
import '../lib/document/content-tree.js';
|
|
30
30
|
import '../lib/shared-section-types.js';
|
|
31
31
|
import '../lib/document/block-choice.js';
|
|
32
|
-
import '../../ScreenDocumentContext-
|
|
32
|
+
import '../../ScreenDocumentContext-BDLUYzlM.js';
|
|
33
33
|
import '../lib/document-contract.js';
|
|
34
34
|
import '../lib/document-switch.js';
|
|
35
35
|
import '../lib/admin-bridge.js';
|