efficient-easel 24.2.0 → 25.1.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 +43 -2
- package/dist/{CanvasDragLayer-NZpaX6aq.d.ts → CanvasDragLayer-DXeQGrwJ.d.ts} +42 -3
- package/dist/canvas/index.d.ts +2 -139
- package/dist/canvas/index.js +1 -1
- package/dist/chrome/index.js +1 -1
- package/dist/{chunk-6NJHYXJM.js → chunk-3XECMGXX.js} +1 -1
- package/dist/{chunk-FRAIEWRC.js → chunk-62UGN7VM.js} +1 -1
- package/dist/{chunk-HNKB2ZYR.js → chunk-6ATIYLUL.js} +1 -1
- package/dist/{chunk-Y53EKN35.js → chunk-6EDVZBUO.js} +1 -1
- package/dist/{chunk-JMAOCKB2.js → chunk-6WTWYHC2.js} +3 -3
- package/dist/chunk-7UFKEX72.js +1 -0
- package/dist/chunk-BBD3FLU3.js +16 -0
- package/dist/chunk-CEC5XLN4.js +1 -0
- package/dist/chunk-CWELHADJ.js +1 -0
- package/dist/chunk-DX3VILZ3.js +6 -0
- package/dist/chunk-ERB6FAZT.js +2 -0
- package/dist/{chunk-TGZCD6IP.js → chunk-EUFDQ4KL.js} +1 -1
- package/dist/chunk-FEP6XMNX.js +1 -0
- package/dist/chunk-FR7EEKFF.js +1 -0
- package/dist/chunk-GDO4QJ4G.js +1 -0
- package/dist/{chunk-GMCZXMOV.js → chunk-GR3XRILS.js} +1 -1
- package/dist/chunk-H6BER2EU.js +1 -0
- package/dist/{chunk-G67G63O5.js → chunk-ITIVCER6.js} +1 -1
- package/dist/chunk-IW5QXREH.js +64 -0
- package/dist/chunk-JIP5JNRB.js +1 -0
- package/dist/chunk-JQQFB7EZ.js +1 -0
- package/dist/{chunk-AGWKB77Q.js → chunk-K53PQAMP.js} +1 -1
- package/dist/{chunk-4ESG53BH.js → chunk-KF3LT7J2.js} +1 -1
- package/dist/{chunk-CLOS6SSX.js → chunk-KO47WAWR.js} +1 -1
- package/dist/chunk-KVIEUWTX.js +11 -0
- package/dist/{chunk-QORC32JO.js → chunk-LUHGBFOD.js} +3 -3
- package/dist/{chunk-DDH2DYQP.js → chunk-LUOY3A3Q.js} +1 -1
- package/dist/chunk-MIX7EGRG.js +2 -0
- package/dist/{chunk-2FYFAAAK.js → chunk-OXOUGEAT.js} +1 -1
- package/dist/chunk-PMRN5Z3T.js +1 -0
- package/dist/{chunk-55KKGABA.js → chunk-PVBDKBJB.js} +1 -1
- package/dist/{chunk-RPMSET77.js → chunk-QTHQPJWA.js} +1 -1
- package/dist/{chunk-ISS72IKO.js → chunk-QZJKWKGH.js} +1 -1
- package/dist/{chunk-IYHO4XQX.js → chunk-S6YOIRXQ.js} +1 -1
- package/dist/{chunk-5PXVT7JY.js → chunk-SBVIW3KJ.js} +1 -1
- package/dist/chunk-SC6E3UUS.js +13 -0
- package/dist/{chunk-LN43DP2A.js → chunk-SQTVXE5D.js} +13 -13
- package/dist/chunk-TOKMFZPB.js +1 -0
- package/dist/chunk-U3LTJSBU.js +20 -0
- package/dist/{chunk-75C6WFNF.js → chunk-UCZQWQNS.js} +1 -1
- package/dist/chunk-UDWXBS46.js +1 -0
- package/dist/{chunk-WYTPBF3Q.js → chunk-VBEVZZTV.js} +11 -11
- package/dist/{chunk-OITNWE52.js → chunk-XLC7HWW3.js} +1 -1
- package/dist/chunk-XTDOSL2M.js +8 -0
- package/dist/chunk-YYD257TD.js +1 -0
- package/dist/copy/index.js +13 -13
- package/dist/copy-place-CQIemdtU.d.ts +25 -0
- package/dist/data/index.d.ts +4 -1
- package/dist/data/index.js +1 -1
- package/dist/dom-BpxMcHFP.d.ts +200 -0
- package/dist/drag/index.d.ts +2 -3
- package/dist/drag/index.js +1 -1
- package/dist/draw/index.d.ts +1 -1
- package/dist/draw/index.js +1 -1
- package/dist/easel/index.d.ts +67 -1
- package/dist/easel/index.js +1 -1
- package/dist/edit-lock/index.d.ts +0 -46
- package/dist/edit-lock/index.js +1 -1
- package/dist/fields/fields.css +6 -40
- package/dist/fields/index.d.ts +1 -6
- package/dist/fields/index.js +1 -1
- package/dist/node-ops/index.js +1 -1
- package/dist/page-copy/index.d.ts +110 -0
- package/dist/page-copy/index.js +5 -0
- package/dist/panel/index.d.ts +29 -34
- package/dist/panel/index.js +1 -1
- package/dist/panel/panel.css +0 -78
- package/dist/screen/components/AddBlockRow.js +1 -1
- package/dist/screen/components/AddSidePanel.d.ts +37 -57
- package/dist/screen/components/AddSidePanel.js +1 -1
- package/dist/screen/components/NodeContextMenu.d.ts +19 -11
- package/dist/screen/components/NodeContextMenu.js +1 -1
- package/dist/screen/components/PageEditGuardNotices.js +1 -1
- package/dist/screen/components/SaveControls.d.ts +10 -11
- package/dist/screen/components/SaveControls.js +1 -1
- package/dist/screen/components/ScreenChrome.js +1 -1
- package/dist/screen/components/ScreenDocumentContext.js +1 -1
- package/dist/screen/components/ScreenMount.d.ts +5 -6
- package/dist/screen/components/ScreenMount.js +1 -1
- package/dist/screen/components/ScreenStoreProvider.d.ts +8 -9
- package/dist/screen/components/ScreenStoreProvider.js +1 -1
- package/dist/screen/components/SectionScreenShell.js +17 -17
- package/dist/screen/components/SidePanelHead.js +1 -1
- package/dist/screen/components/panel-widths.js +1 -1
- package/dist/screen/components/usePartBridge.d.ts +10 -11
- package/dist/screen/components/usePartBridge.js +1 -1
- package/dist/screen/index.d.ts +9 -10
- package/dist/screen/index.js +1 -1
- package/dist/screen/lib/document/block-set-host.d.ts +55 -0
- package/dist/screen/lib/document/block-set-host.js +1 -0
- package/dist/screen/lib/document/block-types-in.js +1 -1
- package/dist/screen/lib/document/box-fields.d.ts +160 -5
- package/dist/screen/lib/document/box-fields.js +1 -9
- package/dist/screen/lib/document/device-fields.js +1 -1
- package/dist/screen/lib/document/palette-sections.d.ts +33 -97
- package/dist/screen/lib/document/palette-sections.js +1 -1
- package/dist/screen/lib/document/preview-dom.js +1 -1
- package/dist/screen/lib/document/section-doc.js +1 -1
- package/dist/screen/lib/document/style-clipboard.d.ts +10 -11
- package/dist/screen/lib/document/style-clipboard.js +1 -1
- package/dist/screen/lib/document/use-section-ops.js +1 -1
- package/dist/screen/lib/document-switch.js +1 -1
- package/dist/screen/lib/failure.js +1 -1
- package/dist/screen/lib/host-inbound.js +1 -1
- package/dist/screen/lib/key-scope.js +1 -1
- package/dist/screen/lib/media-picker.js +1 -1
- package/dist/screen/lib/page-lock.js +1 -1
- package/dist/screen/lib/screen-parts.d.ts +251 -12
- package/dist/screen/lib/screen-parts.js +1 -1
- package/dist/screen/screen.css +6 -0
- package/dist/screen/words.d.ts +9 -0
- package/dist/screen/words.js +1 -1
- package/dist/strings/index.d.ts +4 -1
- package/dist/strings/index.js +2 -2
- package/dist/style-clipboard/index.d.ts +0 -32
- package/dist/style-clipboard/index.js +1 -1
- package/dist/text-styles/index.d.ts +7 -6
- package/dist/text-styles/index.js +37 -36
- package/dist/text-styles/text-styles.css +5 -53
- package/dist/tree/index.d.ts +2 -2
- package/dist/{types-DBy3L69b.d.ts → types-CoUTWUwB.d.ts} +1 -1
- package/dist/words-Dl8Qja4K.d.ts +32 -0
- package/package.json +15 -3
- package/dist/chunk-3FIS2FRS.js +0 -1
- package/dist/chunk-7RSE6KKY.js +0 -1
- package/dist/chunk-CMPFUJ26.js +0 -8
- package/dist/chunk-CZAAGBVL.js +0 -7
- package/dist/chunk-DSKNJXB4.js +0 -1
- package/dist/chunk-FJTCSQWK.js +0 -16
- package/dist/chunk-G7ISR6DI.js +0 -1
- package/dist/chunk-H4Z2V56N.js +0 -21
- package/dist/chunk-K7MMLCTT.js +0 -2
- package/dist/chunk-KRL3IUV3.js +0 -1
- package/dist/chunk-LF3FUSCQ.js +0 -1
- package/dist/chunk-THWO5YVZ.js +0 -1
- package/dist/chunk-TOHOGVAE.js +0 -15
- package/dist/chunk-UKPZ2YWE.js +0 -64
- package/dist/chunk-V7U33NF2.js +0 -1
- package/dist/chunk-VKPOH6MK.js +0 -1
- package/dist/chunk-YU3WHLGI.js +0 -1
- package/dist/repeat-D65bJS8d.d.ts +0 -49
- package/dist/session-EsjORLQ0.d.ts +0 -43
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactElement, ReactNode } from 'react';
|
|
3
3
|
import { ShowWhenRule } from 'efficient-shell/format';
|
|
4
|
-
import { PositionValue, SidesValue } from 'efficient-shell/ui';
|
|
4
|
+
import { TextAlign, PositionValue, SidesValue } from 'efficient-shell/ui';
|
|
5
5
|
export { F as FIELD_DESCRIPTION_MARKER, o as describedAs } from '../../../ScreenDocumentContext-DPW_6gOC.js';
|
|
6
6
|
import '../../../blocks/index.js';
|
|
7
7
|
import '../../../types-BljCVdzR.js';
|
|
@@ -57,6 +57,15 @@ type BoxFieldRenderProps<V> = {
|
|
|
57
57
|
* by value: a node that stores nothing holds `undefined`.
|
|
58
58
|
*/
|
|
59
59
|
storedValue?: unknown;
|
|
60
|
+
/** The editor is read-only (a sent campaign opens so): the row draws its
|
|
61
|
+
* controls disabled. */
|
|
62
|
+
readOnly?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* The value this row's EMPTY state follows, when it is a phone twin
|
|
65
|
+
* ({@link phoneTwinFields}): the desktop value. Tested by KEY: a desktop
|
|
66
|
+
* that stores nothing passes `undefined`.
|
|
67
|
+
*/
|
|
68
|
+
follows?: unknown;
|
|
60
69
|
id?: string;
|
|
61
70
|
name?: string;
|
|
62
71
|
};
|
|
@@ -152,7 +161,7 @@ type BoxPlacement = (typeof BOX_PLACEMENTS)[number];
|
|
|
152
161
|
/** Where an absent stored value puts a Box: where the copy already sits. */
|
|
153
162
|
declare const BOX_PLACEMENT_DEFAULT: BoxPlacement;
|
|
154
163
|
/** What each anchor is CALLED in the panel. */
|
|
155
|
-
declare const
|
|
164
|
+
declare const ANCHOR_LABELS: Readonly<Record<BoxPlacement, string>>;
|
|
156
165
|
/** One square of the grid: shut, with the reason, when it cannot be picked. */
|
|
157
166
|
type PlacementPoint = {
|
|
158
167
|
value: string;
|
|
@@ -180,6 +189,76 @@ declare const SIDE_PAD_KEYS: Record<PadSide, string>;
|
|
|
180
189
|
/** The props one edit of the row writes: only the sides that changed, each to
|
|
181
190
|
* its number or to `undefined` (cleared: the side follows again). */
|
|
182
191
|
declare function sidesPaddingPatch(keys: Record<PadSide, string>, before: SidesValue, next: SidesValue): Record<string, number | undefined>;
|
|
192
|
+
/** A padding stored as ONE object (the email designer's `padding`), as the
|
|
193
|
+
* row's four sides. A bare number is every side (an old Group's shape); a
|
|
194
|
+
* side that is not a number is empty — it follows. */
|
|
195
|
+
declare function sidesFromObject(stored: unknown): SidesValue;
|
|
196
|
+
/** What the row writes to a padding object: only the sides that hold a
|
|
197
|
+
* number (0 is a number), and `undefined` — nothing stored, the padding
|
|
198
|
+
* follows — when none does. */
|
|
199
|
+
declare function sidesToObject(sides: SidesValue): Partial<Record<PadSide, number>> | undefined;
|
|
200
|
+
/**
|
|
201
|
+
* Where a host keeps a row's PHONE value (twins plan E2). The website keeps
|
|
202
|
+
* it beside the desktop key (`gapPhone`, {@link PHONE_KEY_ACCESS}); the email
|
|
203
|
+
* designer keeps every phone value in one object (`mobile.gap`,
|
|
204
|
+
* {@link phoneObjectAccess}). The row is the same; only this differs, and no
|
|
205
|
+
* stored key moves.
|
|
206
|
+
*/
|
|
207
|
+
interface PhoneValueAccess {
|
|
208
|
+
/** The key the phone row is declared under in the host's fields. */
|
|
209
|
+
fieldKey: (key: string) => string;
|
|
210
|
+
/** The phone value is stored under `fieldKey` itself, so the row reads and
|
|
211
|
+
* writes through its own field (`value` / `onChange`), as any row does. */
|
|
212
|
+
ownField?: boolean;
|
|
213
|
+
/** The phone value stored for `key` on a node. */
|
|
214
|
+
read: (values: Record<string, unknown>, key: string) => unknown;
|
|
215
|
+
/** The props one write of the phone value makes (`undefined`: a clear). */
|
|
216
|
+
write: (values: Record<string, unknown>, key: string, next: unknown) => Record<string, unknown>;
|
|
217
|
+
}
|
|
218
|
+
/** The website's phone values: `phoneKey(key)`, beside the desktop key. */
|
|
219
|
+
declare const PHONE_KEY_ACCESS: PhoneValueAccess;
|
|
220
|
+
/**
|
|
221
|
+
* Phone values kept in ONE object prop (the email designer's `mobile`). A
|
|
222
|
+
* write keeps the object's other keys; a clear removes only its own, and an
|
|
223
|
+
* object left empty is removed too. The phone row is declared under
|
|
224
|
+
* `_<objectKey>_<key>`, a key nothing stores.
|
|
225
|
+
*/
|
|
226
|
+
declare function phoneObjectAccess(objectKey: string): PhoneValueAccess;
|
|
227
|
+
/**
|
|
228
|
+
* A row WITH its phone value (twins plan E2: "phone values in phone view, on
|
|
229
|
+
* the same row", Lewis 2026-10-27): the row under `key` (Desktop view only)
|
|
230
|
+
* and its twin (Phone view only) under `access.fieldKey(key)`. The twin is the
|
|
231
|
+
* same row given `follows`, the desktop value: empty, it rests on that and
|
|
232
|
+
* says so. A clear writes nothing — never a copy of the desktop value.
|
|
233
|
+
*/
|
|
234
|
+
declare function phoneTwinFields<V>(key: string, row: BoxField<V>, access?: PhoneValueAccess): Record<string, BoxField<V>>;
|
|
235
|
+
/** A slider's label-line mark, as a function of the STORED value. */
|
|
236
|
+
type SliderAction = (value: unknown, onChange: (v: unknown) => void) => ReactNode;
|
|
237
|
+
/**
|
|
238
|
+
* A slider whose value may be EMPTY, and what empty means (twins plan E2,
|
|
239
|
+
* 2026-10-30: the email designer's number rows). An empty value follows a
|
|
240
|
+
* number from above — the style's, the campaign's — so the box shows that
|
|
241
|
+
* number in grey, the track rests on it, and the label line names the state
|
|
242
|
+
* (`SettingsDefaultReset`: Default while it follows, Reset once it does not).
|
|
243
|
+
* Emptying the box and Reset both write `undefined`, never the hint.
|
|
244
|
+
*/
|
|
245
|
+
interface SliderClear {
|
|
246
|
+
/** The number an empty value follows. A function is given the render's
|
|
247
|
+
* props, for a hint that is live: it rides the field object (the way
|
|
248
|
+
* `currentValue` does), so it stays a pure read. */
|
|
249
|
+
hint: number | ((props: BoxFieldRenderProps<unknown>) => number);
|
|
250
|
+
/** The word the empty box shows instead of the number, when what it
|
|
251
|
+
* follows is not one ("Auto": a picture's own height). */
|
|
252
|
+
emptyLabel?: string;
|
|
253
|
+
}
|
|
254
|
+
/** What {@link boxFieldBuilders}' `slider` is told past its numbers. */
|
|
255
|
+
interface SliderOptions {
|
|
256
|
+
/** The label line's mark ({@link SliderAction}). A clear draws its own. */
|
|
257
|
+
action?: SliderAction;
|
|
258
|
+
clear?: SliderClear;
|
|
259
|
+
/** The typed box's ceiling, when a typed number may go past the track. */
|
|
260
|
+
inputMax?: number;
|
|
261
|
+
}
|
|
183
262
|
/** What {@link directionField} is told: the directions this container offers,
|
|
184
263
|
* in the order the strip draws them, and the one an absent value means. */
|
|
185
264
|
interface DirectionFieldOptions<V extends string = string> {
|
|
@@ -237,6 +316,15 @@ type PositionOptions = {
|
|
|
237
316
|
type SidesPaddingOptions = {
|
|
238
317
|
/** The four stored keys (default {@link SIDE_PAD_KEYS}). The phone twins are `phoneKey(key)`. */
|
|
239
318
|
keys?: Partial<Record<PadSide, string>>;
|
|
319
|
+
/**
|
|
320
|
+
* The padding is stored as ONE object under `key` (`{ top, right, bottom,
|
|
321
|
+
* left }`, the email designer's shape) instead of four keys. Its phone
|
|
322
|
+
* value is kept where `phone` says (default {@link PHONE_KEY_ACCESS}).
|
|
323
|
+
*/
|
|
324
|
+
object?: {
|
|
325
|
+
key: string;
|
|
326
|
+
phone?: PhoneValueAccess;
|
|
327
|
+
};
|
|
240
328
|
/** Give the row a phone twin (shown in phone view only). Default true. */
|
|
241
329
|
phone?: boolean;
|
|
242
330
|
/** What an EMPTY side draws, per side, shown in grey (default 0). */
|
|
@@ -274,6 +362,37 @@ interface BoxFieldSetOptions {
|
|
|
274
362
|
};
|
|
275
363
|
padding?: SidesPaddingOptions;
|
|
276
364
|
}
|
|
365
|
+
/** What a host says about an Alignment row: which answers it can honour (the
|
|
366
|
+
* shell's closed list; Justify only when named) and, rarely, its own label. */
|
|
367
|
+
interface AlignmentOptions {
|
|
368
|
+
allow?: readonly TextAlign[];
|
|
369
|
+
label?: string;
|
|
370
|
+
/** What the desktop row rests on when nothing is stored. Left, unless the
|
|
371
|
+
* block has always drawn another (the Title with buttons' buttons: right). */
|
|
372
|
+
fallback?: TextAlign;
|
|
373
|
+
/** The word of a first answer that means "no choice of my own" (value
|
|
374
|
+
* empty), for a block that follows its parent: `Inherit`. It is a word, not
|
|
375
|
+
* a direction, so it draws no glyph; the shell's list has none (`inherit` is
|
|
376
|
+
* the absence of an answer). */
|
|
377
|
+
inherit?: string;
|
|
378
|
+
/** This is the phone's row: its first answer is Match desktop, drawn as the
|
|
379
|
+
* desktop glyph (a word does not fit a 288px strip beside the other glyphs)
|
|
380
|
+
* and named by the word. It takes the place of `inherit` when both are set. */
|
|
381
|
+
phone?: boolean;
|
|
382
|
+
}
|
|
383
|
+
/** What a host says about a Block alignment row: where the block sits in its
|
|
384
|
+
* parent. Always Left / Center / Right (the three places a block can stand). */
|
|
385
|
+
interface BlockAlignmentOptions {
|
|
386
|
+
/** The places the host can honour; Left, Center and Right unless it names fewer. */
|
|
387
|
+
allow?: readonly TextAlign[];
|
|
388
|
+
label?: string;
|
|
389
|
+
/** What the desktop row rests on when nothing is stored. */
|
|
390
|
+
fallback?: TextAlign;
|
|
391
|
+
/** The word of a first answer that means "no choice of my own" (value empty). */
|
|
392
|
+
inherit?: string;
|
|
393
|
+
/** This is the phone's row: its first answer is Match desktop, as a glyph. */
|
|
394
|
+
phone?: boolean;
|
|
395
|
+
}
|
|
277
396
|
/**
|
|
278
397
|
* The segmented strip: easel's `SettingsSegmented`, with an option's `value`
|
|
279
398
|
* as the strip's `id`. An option that IS a shape passes its `picture`, and the
|
|
@@ -313,7 +432,7 @@ declare function placementGridView(say: BoxFieldSay, { label, value, onChange, p
|
|
|
313
432
|
* builders exported below are this with no `say`, in English.
|
|
314
433
|
*/
|
|
315
434
|
declare function boxFieldBuilders(say?: BoxFieldSay): {
|
|
316
|
-
slider: (label: string, icon: ReactElement, min: number, max: number, step: number, fallback: number, suffix?: string,
|
|
435
|
+
slider: (label: string, icon: ReactElement, min: number, max: number, step: number, fallback: number, suffix?: string, actionOrOptions?: SliderAction | SliderOptions) => BoxField<number>;
|
|
317
436
|
select: (label: string, icon: ReactElement, options: readonly SelectOption[], fallback: string, note?: string) => SelectField;
|
|
318
437
|
Segmented: <V = string>(props: Parameters<typeof segmentedStrip<V>>[1]) => react.JSX.Element;
|
|
319
438
|
segmented: {
|
|
@@ -337,6 +456,24 @@ declare function boxFieldBuilders(say?: BoxFieldSay): {
|
|
|
337
456
|
PlacementGridView: (props: Parameters<typeof placementGridView>[1]) => react.JSX.Element;
|
|
338
457
|
positionFields: (o: PositionOptions) => Record<string, BoxField<number>>;
|
|
339
458
|
sidesPaddingFields: (opts?: SidesPaddingOptions) => Record<string, BoxField<undefined> | BoxField<number>>;
|
|
459
|
+
alignmentField: (opts?: AlignmentOptions, fallback?: string) => BoxField<string>;
|
|
460
|
+
alignmentFields: (key?: string, opts?: AlignmentOptions) => Record<string, BoxField<string>>;
|
|
461
|
+
AlignmentStrip: ({ opts, value, onChange, ariaLabel, disabled, }: {
|
|
462
|
+
opts?: AlignmentOptions;
|
|
463
|
+
value: string;
|
|
464
|
+
onChange: (next: string) => void;
|
|
465
|
+
ariaLabel: string;
|
|
466
|
+
disabled?: boolean;
|
|
467
|
+
}) => react.JSX.Element;
|
|
468
|
+
blockAlignmentField: (opts?: BlockAlignmentOptions, fallback?: string) => BoxField<string>;
|
|
469
|
+
blockAlignmentFields: (key?: string, opts?: BlockAlignmentOptions) => Record<string, BoxField<string>>;
|
|
470
|
+
BlockAlignmentStrip: ({ opts, value, onChange, ariaLabel, disabled, }: {
|
|
471
|
+
opts?: BlockAlignmentOptions;
|
|
472
|
+
value: string;
|
|
473
|
+
onChange: (next: string) => void;
|
|
474
|
+
ariaLabel: string;
|
|
475
|
+
disabled?: boolean;
|
|
476
|
+
}) => react.JSX.Element;
|
|
340
477
|
boxFieldSet: (opts?: BoxFieldSetOptions) => {
|
|
341
478
|
_gLayout: BoxField<undefined>;
|
|
342
479
|
placement: BoxField<string>;
|
|
@@ -350,7 +487,7 @@ declare function boxFieldBuilders(say?: BoxFieldSay): {
|
|
|
350
487
|
};
|
|
351
488
|
};
|
|
352
489
|
/** The builders in English (no host's `say`). */
|
|
353
|
-
declare const slider: (label: string, icon: ReactElement, min: number, max: number, step: number, fallback: number, suffix?: string,
|
|
490
|
+
declare const slider: (label: string, icon: ReactElement, min: number, max: number, step: number, fallback: number, suffix?: string, actionOrOptions?: SliderAction | SliderOptions) => BoxField<number>;
|
|
354
491
|
declare const select: (label: string, icon: ReactElement, options: readonly SelectOption[], fallback: string, note?: string) => SelectField;
|
|
355
492
|
declare const Segmented: <V = string>(props: Parameters<typeof segmentedStrip<V>>[1]) => react.JSX.Element;
|
|
356
493
|
declare const segmented: {
|
|
@@ -374,6 +511,24 @@ declare const placementField: (label: string, { fallback, pointsFor }?: Placemen
|
|
|
374
511
|
declare const PlacementGridView: (props: Parameters<typeof placementGridView>[1]) => react.JSX.Element;
|
|
375
512
|
declare const positionFields: (o: PositionOptions) => Record<string, BoxField<number>>;
|
|
376
513
|
declare const sidesPaddingFields: (opts?: SidesPaddingOptions) => Record<string, BoxField<undefined> | BoxField<number>>;
|
|
514
|
+
declare const alignmentField: (opts?: AlignmentOptions, fallback?: string) => BoxField<string>;
|
|
515
|
+
declare const alignmentFields: (key?: string, opts?: AlignmentOptions) => Record<string, BoxField<string>>;
|
|
516
|
+
declare const AlignmentStrip: ({ opts, value, onChange, ariaLabel, disabled, }: {
|
|
517
|
+
opts?: AlignmentOptions;
|
|
518
|
+
value: string;
|
|
519
|
+
onChange: (next: string) => void;
|
|
520
|
+
ariaLabel: string;
|
|
521
|
+
disabled?: boolean;
|
|
522
|
+
}) => react.JSX.Element;
|
|
523
|
+
declare const blockAlignmentField: (opts?: BlockAlignmentOptions, fallback?: string) => BoxField<string>;
|
|
524
|
+
declare const blockAlignmentFields: (key?: string, opts?: BlockAlignmentOptions) => Record<string, BoxField<string>>;
|
|
525
|
+
declare const BlockAlignmentStrip: ({ opts, value, onChange, ariaLabel, disabled, }: {
|
|
526
|
+
opts?: BlockAlignmentOptions;
|
|
527
|
+
value: string;
|
|
528
|
+
onChange: (next: string) => void;
|
|
529
|
+
ariaLabel: string;
|
|
530
|
+
disabled?: boolean;
|
|
531
|
+
}) => react.JSX.Element;
|
|
377
532
|
declare const boxFieldSet: (opts?: BoxFieldSetOptions) => {
|
|
378
533
|
_gLayout: BoxField<undefined>;
|
|
379
534
|
placement: BoxField<string>;
|
|
@@ -386,4 +541,4 @@ declare const boxFieldSet: (opts?: BoxFieldSetOptions) => {
|
|
|
386
541
|
_gNudge: BoxField<undefined>;
|
|
387
542
|
};
|
|
388
543
|
|
|
389
|
-
export { BOX_ALIGN_POINTS, BOX_DIRECTIONS, BOX_DIRECTION_LABEL, BOX_GAP, BOX_JUSTIFY_POINTS, BOX_NUDGE_LIMIT, BOX_PLACEMENTS, BOX_PLACEMENT_DEFAULT,
|
|
544
|
+
export { ANCHOR_LABELS, type AlignmentOptions, AlignmentStrip, BOX_ALIGN_POINTS, BOX_DIRECTIONS, BOX_DIRECTION_LABEL, BOX_GAP, BOX_JUSTIFY_POINTS, BOX_NUDGE_LIMIT, BOX_PLACEMENTS, BOX_PLACEMENT_DEFAULT, BOX_WIDTH, BOX_WRAP_LABEL, BOX_WRAP_POINTS, type BlockAlignmentOptions, BlockAlignmentStrip, type BoxAlign, type BoxField, type BoxFieldRenderProps, type BoxFieldSay, type BoxFieldSetOptions, type BoxFlexRowOptions, type BoxJustify, type BoxPlacement, type BoxWrap, type DirectionFieldOptions, type GapFieldOptions, OPEN_PLACEMENT_POINTS, PHONE_KEY_ACCESS, type PhoneValueAccess, type PlacementFieldOptions, PlacementGridView, type PlacementPoint, type PositionOptions, SIDE_PAD_KEYS, Segmented, type SelectField, type SelectOption, type SidesPaddingOptions, type SliderAction, type SliderClear, type SliderOptions, alignmentField, alignmentFields, blockAlignmentField, blockAlignmentFields, boxAlignField, boxFieldBuilders, boxFieldSet, boxJustifyField, boxWrapField, directionField, gapField, group, iconOf, isNoGlyph, noGlyph, normaliseBoxPlacement, phoneObjectAccess, phoneTwinFields, placementField, positionFields, positionPatch, section, segmented, select, sharedStyleKinds, sidesFromObject, sidesPaddingFields, sidesPaddingPatch, sidesToObject, slider };
|
|
@@ -1,9 +1 @@
|
|
|
1
|
-
|
|
2
|
-
return J(Z,{},e)}function U(e){return e.type===Z}function _(e){return U(e)?void 0:e}function Q(e){for(const[t,n]of Object.entries(e))n&&"object"==typeof n&&!i(n)&&l(n,`section:${t}`);return e}function z(e,t){return{type:"custom",[r]:{label:e,level:t},marker:!0,fold:e,render:()=>/* @__PURE__ */J(M,{})}}function $(e){return z(e,2)}function q(e){return z(e,1)}var ee=[{label:"Start",value:"start"},{label:"Center",value:"center"},{label:"Space between",value:"between"},{label:"End",value:"end"}],te=[{label:"Start",value:"start"},{label:"Center",value:"center"},{label:"End",value:"end"},{label:"Stretch",value:"stretch"}],ne="Wrap",oe=[{label:"Wrap",value:"wrap"},{label:"No wrap",value:"nowrap"}],le="Direction",ae=[{label:"Stacked",value:"column"},{label:"One row",value:"row"}],ie={min:-32,max:64,step:2,builtIn:0},re={min:30,max:100,step:5,fallback:60},se=["top-left","top-center","top-right","left","center","right","bottom-left","bottom-center","bottom-right"],ue="bottom-left",ce={"top-left":"Top left","top-center":"Top center","top-right":"Top right",left:"Left",center:"Center",right:"Right","bottom-left":"Bottom left","bottom-center":"Bottom center","bottom-right":"Bottom right"},de=se.map(e=>({value:e,label:ce[e]}));function pe(e,t=ue){return se.includes(e)?e:t}var me=40,be=e=>"number"==typeof e?e:null;function fe(e,t,n){const o={};for(const l of["x","y"])n[l]!==t[l]&&(o[e[l]]=n[l]??void 0);return o}var he=["top","right","bottom","left"],ge={top:"sectionPaddingTop",right:"sectionPaddingRight",bottom:"sectionPaddingBottom",left:"sectionPaddingLeft"},ve=e=>"number"==typeof e?e:null;function ye(e,t,n){const o={};for(const l of he)n[l]!==t[l]&&(o[e[l]]=n[l]??void 0);return o}function ke(e,{options:t,value:n,onChange:o,ariaLabel:l,disabled:a=!1}){/* @__PURE__ */
|
|
3
|
-
return J(v,{options:t.map(t=>t.picture?{id:t.value,label:t.picture,title:e(t.title??t.label)}:{id:t.value,label:e(t.label),title:void 0===t.title?void 0:e(t.title)}),value:n,onChange:o,ariaLabel:e(l),disabled:a})}function Ce(e,{label:t,value:n,onChange:o,points:l}){const a=l.find(e=>e.disabled),i=l.map(t=>({...t,label:e(t.label),...t.title?{title:e(t.title)}:null}));/* @__PURE__ */
|
|
4
|
-
return J(g,{label:e(t),icon:/* @__PURE__ */J(w,{}),hint:a?.title?e(a.title):void 0,children:/* @__PURE__ */J(V,{label:e(t),value:n,points:i,onChange:o})})}function je({say:e,label:t,value:n,onChange:o,pointsFor:l}){const{appState:a,selectedItem:i}=s(e=>e),r=i?.props?.id?String(i.props.id):void 0;return Ce(e,{label:t,value:n,onChange:o,points:l(a?.data,r)})}function xe(){try{return u()}catch{return null}}function Fe({say:e,o:t}){const n=xe(),o=y("panel",b),l=n?.values??{},a={x:be(l[t.keys.x]),y:be(l[t.keys.y])},i=e(t.label??"Position"),r=Boolean(a.x||a.y),s=e=>{const o=fe(t.keys,a,e);Object.keys(o).length&&n?.onChangeMany(o)},u=/* @__PURE__ */J(Y,{label:i,value:a,onChange:s,words:{x:e("Left and right"),y:e("Up and down"),unit:"px"},placeholder:{x:"0",y:"0"},min:t.min,max:t.max,step:t.step??1}),d=/* @__PURE__ */J(c,{words:o,label:i,changed:r,detail:"0 px, 0 px",onReset:()=>s({x:null,y:null})});return null===t.label?/* @__PURE__ */D("div",{className:"sf-position-line",children:[u,d]}):/* @__PURE__ */J(g,{label:i,icon:/* @__PURE__ */J(P,{}),changed:r,action:d,children:u})}var we={x:{start:/* @__PURE__ */J(R,{}),center:/* @__PURE__ */J(G,{}),end:/* @__PURE__ */J(A,{}),stretch:/* @__PURE__ */J(K,{}),between:/* @__PURE__ */J(W,{})},y:{start:/* @__PURE__ */J(T,{}),center:/* @__PURE__ */J(O,{}),end:/* @__PURE__ */J(I,{}),stretch:/* @__PURE__ */J(L,{}),between:/* @__PURE__ */J(E,{})}},Pe=e=>"row"===e?"row":"column";function Se({say:e,kind:t,label:n,options:o,value:l,onChange:a,o:i}){const r=xe(),s="justify"===t==("row"===(i.runs??Pe)(r?.values?.[i.directionKey??"direction"]))?"x":"y";return ke(e,{options:o.map(e=>({label:e.label,value:e.value,picture:we[s][e.value]})),value:l,onChange:a,ariaLabel:n})}function Ee({say:e,tier:t,o:n}){const o=xe(),l=o?.values??{},a="mobile"===t?n.phoneKeys:n.keys,i=Object.fromEntries(he.map(e=>[e,ve(l[a[e]])])),r=Object.fromEntries(he.map(e=>[e,String("mobile"===t?ve(l[n.keys[e]])??n.fallback[e]:n.fallback[e])])),[s,u]=k(()=>d(i,r));/* @__PURE__ */
|
|
5
|
-
return J(g,{label:e("Padding"),icon:/* @__PURE__ */J(S,{}),action:/* @__PURE__ */J(m,{each:s,label:e("Each side"),onChange:u}),children:/* @__PURE__ */J(p,{label:e("Padding"),each:s,value:i,placeholder:r,min:n.min,max:n.max,step:n.step,onChange:e=>{const t=ye(a,i,e);Object.keys(t).length&&o?.onChangeMany(t)},words:{sides:{top:e("Padding top"),right:e("Padding right"),bottom:e("Padding bottom"),left:e("Padding left")},vertical:e("Top and bottom"),horizontal:e("Left and right"),unit:"px"}})})}function Le(l=X){function i(e,t,n,a,i,r,s="",u){return{type:"custom",...o({},{type:"number",label:e}),render:o=>{const c="number"==typeof o.value?o.value:r;/* @__PURE__ */
|
|
6
|
-
return J(g,{label:l(e),icon:_(t),action:u?u("storedValue"in o?o.storedValue:o.value,o.onChange):void 0,children:/* @__PURE__ */J("div",{className:"sf-slider",children:/* @__PURE__ */J(N,{min:n,max:a,step:i,value:c,suffix:s||void 0,showInput:!0,label:l(e),disabled:!1,size:"sm",boxSize:"md",className:"sf-slider-track",onChange:e=>{null!==e&&e!==c&&o.onChange(e)}})})})}}}function r(e){return ke(l,e)}function s(e,t,n,a){const i=n.map(e=>"string"==typeof e?{label:e,value:e}:e);return{type:"custom",...o({},{type:"radio",label:e,options:i.map(e=>({value:e.value,label:e.label}))}),render:({value:n,onChange:o,field:s})=>/* @__PURE__ */J(g,{label:l(e),icon:_(t),children:r({options:i,value:i.some(e=>e.value===n)?n:n||s?.currentValue||a,onChange:o,ariaLabel:e})})}}function u(e,t,n,a,i,r){return{type:"custom",options:a,fallback:i,...o({},{type:"radio",label:t,options:a.map(e=>({value:e.value,label:e.label}))}),render:({value:o,onChange:s,field:u})=>{const c=u.options??a,d=u.fallback??i,p=c.some(e=>e.value===o)?o:d;/* @__PURE__ */
|
|
7
|
-
return J(g,{label:l(t),icon:_(n),children:/* @__PURE__ */J(Se,{say:l,kind:e,label:t,options:c,value:p,onChange:s,o:r})})}}}function c(e={}){return u("justify","Justify",/* @__PURE__ */J(C,{}),ee,ee[0].value,e)}function d(e={}){return u("align","Item alignment",/* @__PURE__ */J(B,{}),te,"stretch",e)}function p(){const e=ne;return{type:"custom",options:oe,fallback:oe[1].value,...o({},{type:"radio",label:e,options:oe.map(e=>({value:e.value,label:e.label}))}),render:({value:t,onChange:n,id:o,name:a})=>{const i=`${o??a??e}-label`;/* @__PURE__ */
|
|
8
|
-
return J(g,{label:l(e),labelId:i,icon:/* @__PURE__ */J(j,{}),action:/* @__PURE__ */J(h,{checked:(r=t,!0===r||"wrap"===r),onChange:e=>n(e?oe[0].value:oe[1].value),ariaLabelledBy:i})});var r}}}function m({offered:e,fallback:t,resolve:n}){const o=n??(n=>e.some(e=>e.value===n)?n:t),l=s(le,H("`Direction` names how a container’s children run — a MODIFIER, not a thing. doc/naming.md N10.1 gives the idea a dash in its Glyph column; the shell’s own `direction` meaning says the bare row is CORRECT and not an omission (SS seat, 2026-09-11)."),e.map(e=>({label:e.label,value:e.value})),o(void 0));return{type:"custom",render:e=>l.render({...e,value:o(e.value),onChange:t=>e.onChange(t)})}}function b({min:e,max:t,step:n,builtIn:o,resolve:l,action:a,mark:r}){const s=i("Gap",/* @__PURE__ */J(x,{}),e,t,n,o,"px",a),u=l??(e=>"number"==typeof e?e:o);return{...r,type:"custom",render:e=>s.render({...e,value:u(e.value,e.field),storedValue:e.value,onChange:t=>e.onChange(t)})}}function v(e,{fallback:t=ue,pointsFor:n}={}){return{type:"custom",render:({value:o,onChange:a})=>{const i=pe(o,t);return n?/* @__PURE__ */J(je,{say:l,label:e,value:i,onChange:a,pointsFor:n}):Ce(l,{label:e,value:i,onChange:a,points:de})}}}function y(e){return{[e.keys.x]:{type:"custom",render:()=>/* @__PURE__ */J(Fe,{say:l,o:e})},[e.keys.y]:{...t({type:"custom",render:()=>/* @__PURE__ */J(n,{})},"always"),reachedBy:e.keys.x}}}function k(o={}){const i={...ge,...o.keys},r={keys:i,phoneKeys:Object.fromEntries(he.map(e=>[e,a(i[e])])),fallback:{top:0,right:0,bottom:0,left:0,...o.fallback},min:o.min??0,max:o.max??200,step:o.step??4},s=!1!==o.phone,u=t=>{const n={type:"custom",render:()=>/* @__PURE__ */J(Ee,{say:l,tier:t,o:r})};return s?e(t,n):n},c=()=>t({type:"custom",render:()=>/* @__PURE__ */J(n,{})},"always"),d=he.filter(e=>"top"!==e);return Q({...!1===o.group?{}:{_gSpacing:$("Padding")},[r.keys.top]:u("desktop"),...s?{[r.phoneKeys.top]:u("mobile")}:{},...Object.fromEntries(d.map(e=>[r.keys[e],{...c(),reachedBy:r.keys.top}])),...s?Object.fromEntries(d.map(t=>[r.phoneKeys[t],e("mobile",c())])):{}})}return{slider:i,select:function(e,t,n,a,i){return{type:"custom",options:n,fallback:a,...i?{note:i}:{},...o({},{type:"select",label:e}),render:({value:o,onChange:r,field:s})=>{const u=s.options??n,c=s.fallback??a,d=u.some(e=>e.value===o)?o:c;/* @__PURE__ */
|
|
9
|
-
return J(g,{label:l(e),icon:_(t),children:/* @__PURE__ */J(f,{value:d,ariaLabel:l(e),onChange:r,options:[...i?[{label:l(i),value:"\0note",disabled:!0}]:[],...u.map(e=>({label:l(e.label),value:e.value}))]})})}}},Segmented:r,segmented:s,boxJustifyField:c,boxAlignField:d,boxWrapField:p,directionField:m,gapField:b,placementField:v,PlacementGridView:function(e){return Ce(l,e)},positionFields:y,sidesPaddingFields:k,boxFieldSet:function(e={}){const t=e.width??re,n=e.nudge?.limit??40,o=e.direction??{offered:ae,fallback:"column"},l=o.resolve??(e=>o.offered.some(t=>t.value===e)?e:o.fallback),a={runs:e=>"row"===l(e)?"row":"column"};return{_gLayout:$("Layout"),placement:v("Placement",e.placement),width:i("Width",/* @__PURE__ */J(F,{}),t.min,t.max,t.step,t.fallback,"%"),direction:m(o),gap:b(e.gap??ie),justify:c(a),align:d(a),wrap:p(),_gNudge:$("Nudge"),...y({keys:e.nudge?.keys??{x:"nudgeX",y:"nudgeY"},min:-n,max:n,label:null}),...k(e.padding)}}}}var{slider:Ie,select:Oe,Segmented:Te,segmented:We,boxJustifyField:Ke,boxAlignField:Ae,boxWrapField:Ge,directionField:Re,gapField:Be,placementField:Ne,PlacementGridView:Ve,positionFields:Ye,sidesPaddingFields:Je,boxFieldSet:Me}=Le();export{te as BOX_ALIGN_POINTS,ae as BOX_DIRECTIONS,le as BOX_DIRECTION_LABEL,ie as BOX_GAP,ee as BOX_JUSTIFY_POINTS,me as BOX_NUDGE_LIMIT,se as BOX_PLACEMENTS,ue as BOX_PLACEMENT_DEFAULT,ce as BOX_PLACEMENT_LABELS,re as BOX_WIDTH,ne as BOX_WRAP_LABEL,oe as BOX_WRAP_POINTS,de as OPEN_PLACEMENT_POINTS,Ve as PlacementGridView,ge as SIDE_PAD_KEYS,Te as Segmented,Ae as boxAlignField,Le as boxFieldBuilders,Me as boxFieldSet,Ke as boxJustifyField,Ge as boxWrapField,Re as directionField,Be as gapField,$ as group,_ as iconOf,U as isNoGlyph,H as noGlyph,pe as normaliseBoxPlacement,Ne as placementField,Ye as positionFields,fe as positionPatch,q as section,We as segmented,Oe as select,Q as sharedStyleKinds,Je as sidesPaddingFields,ye as sidesPaddingPatch,Ie as slider};
|
|
1
|
+
export{ANCHOR_LABELS,AlignmentStrip,BOX_ALIGN_POINTS,BOX_DIRECTIONS,BOX_DIRECTION_LABEL,BOX_GAP,BOX_JUSTIFY_POINTS,BOX_NUDGE_LIMIT,BOX_PLACEMENTS,BOX_PLACEMENT_DEFAULT,BOX_WIDTH,BOX_WRAP_LABEL,BOX_WRAP_POINTS,BlockAlignmentStrip,OPEN_PLACEMENT_POINTS,PHONE_KEY_ACCESS,PlacementGridView,SIDE_PAD_KEYS,Segmented,alignmentField,alignmentFields,blockAlignmentField,blockAlignmentFields,boxAlignField,boxFieldBuilders,boxFieldSet,boxJustifyField,boxWrapField,directionField,gapField,group,iconOf,isNoGlyph,noGlyph,normaliseBoxPlacement,phoneObjectAccess,phoneTwinFields,placementField,positionFields,positionPatch,section,segmented,select,sharedStyleKinds,sidesFromObject,sidesPaddingFields,sidesPaddingPatch,sidesToObject,slider}from"../../../chunk-KVIEUWTX.js";import"../../../chunk-SC6E3UUS.js";import"../../../chunk-OXOUGEAT.js";import"../../../chunk-22I55W37.js";export{FIELD_DESCRIPTION_MARKER,describedAs}from"../../../chunk-LX23TCTP.js";import"../../../chunk-S6YOIRXQ.js";import"../../../chunk-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";import"../../../chunk-E52W3M5I.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-BBD3FLU3.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-FM6JO4WF.js";import"../../../chunk-KFV7N2DJ.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-OECWLNKJ.js";import"../../../chunk-HZSZT3BE.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-MIX7EGRG.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-JACEEVVF.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-TOKMFZPB.js";import"../../../chunk-FR7EEKFF.js";import"../../../chunk-7UFKEX72.js";import"../../../chunk-EUFDQ4KL.js";import"../../../chunk-KXM6YRG2.js";import"../../../chunk-BSPCSC45.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{DEVICE_HIDDEN_ATTR,DEVICE_NOTE,deviceField,deviceNote,shownTier,withoutDeviceGate}from"../../../chunk-
|
|
1
|
+
export{DEVICE_HIDDEN_ATTR,DEVICE_NOTE,deviceField,deviceNote,shownTier,withoutDeviceGate}from"../../../chunk-OXOUGEAT.js";import"../../../chunk-22I55W37.js";import"../../../chunk-S6YOIRXQ.js";export{DEVICE_FIELD_MARKER,deviceMetaOf}from"../../../chunk-YCSZAP7T.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-BSPCSC45.js";
|
|
@@ -1,103 +1,39 @@
|
|
|
1
|
-
import
|
|
1
|
+
import '../../../blocks/index.js';
|
|
2
|
+
export { P as PaletteLook, a as PalettePreset, b as PaletteSection, c as buildPaletteSections, d as categoryLabel, m as matchesQuery, p as paletteWithoutPinned, e as pinnedSection } from '../screen-parts.js';
|
|
2
3
|
import 'react';
|
|
3
4
|
import '../../../types-BljCVdzR.js';
|
|
4
5
|
import '../../../data/index.js';
|
|
5
6
|
import '../../../types-Dq180WRV.js';
|
|
6
7
|
import '../../../resolve-Bz4mszpL.js';
|
|
7
8
|
import '../../../plan-D0DgSLnY.js';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
*/
|
|
40
|
-
alias?: string;
|
|
41
|
-
};
|
|
42
|
-
/**
|
|
43
|
-
* What the layer says of its sections for the palette: the word for a type at
|
|
44
|
-
* a level, a group's short heading where it has one, and the blurbs. The
|
|
45
|
-
* screen's `blockLook` is one (lib/screen-parts); so is the website's own
|
|
46
|
-
* (lib/document/add-palette).
|
|
47
|
-
*/
|
|
48
|
-
interface PaletteLook {
|
|
49
|
-
/** What a node of `type` is called at a level, given the label the config
|
|
50
|
-
* holds for it. */
|
|
51
|
-
labelAtLevel: (type: string, level: "section" | "block", base: string) => string;
|
|
52
|
-
/** A group's short heading, by its key, where the layer has one; undefined,
|
|
53
|
-
* and the config's own title is the heading. */
|
|
54
|
-
categoryLabel: (id: string) => string | undefined;
|
|
55
|
-
/** The one-line blurb for a section, by type. */
|
|
56
|
-
descriptions: Record<string, string>;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Flatten `config.categories` into an ordered section list.
|
|
60
|
-
*
|
|
61
|
-
* Grouping and order ARE the category order in the config — which is the
|
|
62
|
-
* catalog's order — so this adds no opinion of its own. A component listed in a
|
|
63
|
-
* category but absent from `components` is skipped: a stale catalog row cannot
|
|
64
|
-
* render and certainly cannot insert, so offering it would be a card that fails
|
|
65
|
-
* on click.
|
|
66
|
-
*
|
|
67
|
-
* Child-only blocks (HeroSlide / CollectionCard / ProductRef) and the four
|
|
68
|
-
* generic primitives (Heading / Text / ImageBlock / ButtonBlock) sit in NO
|
|
69
|
-
* category on purpose, so they never appear here — they are added from their
|
|
70
|
-
* parent's slot instead. See the note above `categories:` in lib/document/config.tsx.
|
|
71
|
-
*
|
|
72
|
-
* A category the config marks `visible: false` is NOT offered (0.105.0, seam
|
|
73
|
-
* E9): it is a registry's way of keeping blocks it has out of the picker — the
|
|
74
|
-
* campaign designer's Product parts, its retired blocks, its Sections — and a
|
|
75
|
-
* palette that listed them would offer things that may not be put on a page.
|
|
76
|
-
* The old library's own palette read the flag the same way. No website category carries
|
|
77
|
-
* it, so the website's palette is the list it was.
|
|
78
|
-
*/
|
|
79
|
-
declare function buildPaletteSections(config: Config, look: PaletteLook): PaletteSection[];
|
|
80
|
-
/** A category's display label — the layer's short one where there is one, else the config's title. */
|
|
81
|
-
declare function categoryLabel(config: Config, id: string, shortLabel: (id: string) => string | undefined): string;
|
|
82
|
-
/**
|
|
83
|
-
* Does a section match a search query?
|
|
84
|
-
*
|
|
85
|
-
* The query is matched against the NAME, any ALIAS, the blurb, the component
|
|
86
|
-
* TYPE and the CATEGORY HEADING — the type because a merchant who knows the
|
|
87
|
-
* section by the word they saw in a handoff should still find it, the alias
|
|
88
|
-
* because one node is called something else everywhere it is nested (see
|
|
89
|
-
* `PaletteSection.alias`), and the category because it is PRINTED IN THE NAV
|
|
90
|
-
* BESIDE THE RESULTS: seven of thirteen headings used to match nothing at all
|
|
91
|
-
* (see `PaletteSection.catLabel`). A word a merchant can read off this screen
|
|
92
|
-
* must find what it is labelling.
|
|
93
|
-
*
|
|
94
|
-
* `q` is expected already lower-cased and trimmed; an empty query matches
|
|
95
|
-
* everything.
|
|
96
|
-
*/
|
|
97
|
-
declare function matchesQuery(s: PaletteSection, q: string): boolean;
|
|
98
|
-
/** The pinned section, or `null` if the layer pins none or the config does not offer it. */
|
|
99
|
-
declare function pinnedSection(sections: PaletteSection[], pinned: string | null): PaletteSection | null;
|
|
100
|
-
/** Every OTHER section — what the grouped grid below the pinned card draws. */
|
|
101
|
-
declare function paletteWithoutPinned(sections: PaletteSection[], pinned: string | null): PaletteSection[];
|
|
102
|
-
|
|
103
|
-
export { type PaletteLook, type PaletteSection, buildPaletteSections, categoryLabel, matchesQuery, paletteWithoutPinned, pinnedSection };
|
|
9
|
+
import '../../../CanvasDragLayer-DXeQGrwJ.js';
|
|
10
|
+
import '../../../watch-Unf6SfUf.js';
|
|
11
|
+
import '../../../words-SD4neL0n.js';
|
|
12
|
+
import '../section-template-types.js';
|
|
13
|
+
import './content-tree.js';
|
|
14
|
+
import '../shared-section-types.js';
|
|
15
|
+
import './block-choice.js';
|
|
16
|
+
import '../../../types-SrGNzYeO.js';
|
|
17
|
+
import '../../../types-Cy7rdmXt.js';
|
|
18
|
+
import '../../../wordFit-7XpmhcaW.js';
|
|
19
|
+
import '../../../edit-lock/index.js';
|
|
20
|
+
import '../../../panelWidths-DgQXiPXU.js';
|
|
21
|
+
import '../../../copy-place-CQIemdtU.js';
|
|
22
|
+
import '../../../types-BbOBWXMP.js';
|
|
23
|
+
import '../../../style-clipboard/index.js';
|
|
24
|
+
import '../../../words-CnnHb9jo.js';
|
|
25
|
+
import '../../../types-CoUTWUwB.js';
|
|
26
|
+
import 'efficient-shell/ui';
|
|
27
|
+
import '../../../words-Cl9xMUYY.js';
|
|
28
|
+
import '../../../ScreenDocumentContext-DPW_6gOC.js';
|
|
29
|
+
import '../document-contract.js';
|
|
30
|
+
import '../document-switch.js';
|
|
31
|
+
import '../../../engine-CvXpFE86.js';
|
|
32
|
+
import '../admin-bridge.js';
|
|
33
|
+
import '../session.js';
|
|
34
|
+
import '../backend-error.js';
|
|
35
|
+
import '../host-chrome.js';
|
|
36
|
+
import '../links/link-filters.js';
|
|
37
|
+
import '../document-hooks.js';
|
|
38
|
+
import './add-target-types.js';
|
|
39
|
+
import './slot-section-spec.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{buildPaletteSections,categoryLabel,matchesQuery,paletteWithoutPinned,pinnedSection}from"../../../chunk-
|
|
1
|
+
export{buildPaletteSections,categoryLabel,matchesQuery,paletteWithoutPinned,pinnedSection}from"../../../chunk-GDO4QJ4G.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{gotoPreviewSlide,pinPreviewToBottom,pinPreviewToSection,previewFrame,scrollPreviewToSection,scrollPreviewToTop}from"../../../chunk-
|
|
1
|
+
export{gotoPreviewSlide,pinPreviewToBottom,pinPreviewToSection,previewFrame,scrollPreviewToSection,scrollPreviewToTop}from"../../../chunk-LUOY3A3Q.js";import"../../../chunk-AJ2SUSET.js";import"../../../chunk-7UFKEX72.js";import"../../../chunk-MGVI67QV.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{cloneNodeWithFreshIds,docToNode,nodeToDoc}from"../../../chunk-OXZDSOZV.js";import"../../../chunk-TCAAOYQY.js";import"../../../chunk-
|
|
1
|
+
export{cloneNodeWithFreshIds,docToNode,nodeToDoc}from"../../../chunk-OXZDSOZV.js";import"../../../chunk-TCAAOYQY.js";import"../../../chunk-EUFDQ4KL.js";import"../../../chunk-KXM6YRG2.js";
|
|
@@ -4,29 +4,28 @@ import { ScreenStyleDocument, ScreenNode, ScreenStylePastePlan, ScreenStyleClipb
|
|
|
4
4
|
import { panelFieldsOf } from './panel-fields.js';
|
|
5
5
|
import '../../../types-BbOBWXMP.js';
|
|
6
6
|
import 'react';
|
|
7
|
+
import '../../../CanvasDragLayer-DXeQGrwJ.js';
|
|
8
|
+
import '../../../watch-Unf6SfUf.js';
|
|
9
|
+
import '../../../types-Dq180WRV.js';
|
|
10
|
+
import '../../../words-SD4neL0n.js';
|
|
11
|
+
import '../section-template-types.js';
|
|
12
|
+
import './content-tree.js';
|
|
13
|
+
import '../shared-section-types.js';
|
|
14
|
+
import './block-choice.js';
|
|
7
15
|
import '../../../blocks/index.js';
|
|
8
16
|
import '../../../types-BljCVdzR.js';
|
|
9
17
|
import '../../../data/index.js';
|
|
10
|
-
import '../../../types-Dq180WRV.js';
|
|
11
18
|
import '../../../resolve-Bz4mszpL.js';
|
|
12
19
|
import '../../../plan-D0DgSLnY.js';
|
|
13
|
-
import '../../../watch-Unf6SfUf.js';
|
|
14
20
|
import '../../../types-SrGNzYeO.js';
|
|
15
21
|
import '../../../types-Cy7rdmXt.js';
|
|
16
22
|
import '../../../wordFit-7XpmhcaW.js';
|
|
17
23
|
import '../../../edit-lock/index.js';
|
|
18
24
|
import '../../../panelWidths-DgQXiPXU.js';
|
|
19
|
-
import '../../../
|
|
20
|
-
import '../../../
|
|
21
|
-
import '../../../words-SD4neL0n.js';
|
|
22
|
-
import '../../../types-DBy3L69b.js';
|
|
25
|
+
import '../../../copy-place-CQIemdtU.js';
|
|
26
|
+
import '../../../types-CoUTWUwB.js';
|
|
23
27
|
import 'efficient-shell/ui';
|
|
24
28
|
import '../../../words-Cl9xMUYY.js';
|
|
25
|
-
import '../../components/AddSidePanel.js';
|
|
26
|
-
import '../section-template-types.js';
|
|
27
|
-
import './content-tree.js';
|
|
28
|
-
import '../shared-section-types.js';
|
|
29
|
-
import './block-choice.js';
|
|
30
29
|
import '../../../ScreenDocumentContext-DPW_6gOC.js';
|
|
31
30
|
import '../document-contract.js';
|
|
32
31
|
import '../document-switch.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{copyNodeStyle,nodeStyleRows,planNodePaste,shopFieldKind,siteStyleScope,styleClipboardOf}from"../../../chunk-
|
|
1
|
+
export{copyNodeStyle,nodeStyleRows,planNodePaste,shopFieldKind,siteStyleScope,styleClipboardOf}from"../../../chunk-H6BER2EU.js";import"../../../chunk-3QB2ZQXK.js";import"../../../chunk-5XL2RXFU.js";import"../../../chunk-OXOUGEAT.js";import"../../../chunk-22I55W37.js";import"../../../chunk-S6YOIRXQ.js";import"../../../chunk-CWELHADJ.js";import"../../../chunk-6WY6ZXJG.js";import"../../../chunk-ANPOR6EY.js";import"../../../chunk-BPXEFVSQ.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-EUFDQ4KL.js";import"../../../chunk-KXM6YRG2.js";import"../../../chunk-BSPCSC45.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{useSectionOps}from"../../../chunk-
|
|
1
|
+
export{useSectionOps}from"../../../chunk-XLC7HWW3.js";import"../../../chunk-LUHGBFOD.js";import"../../../chunk-NCXYC7WI.js";import"../../../chunk-LX23TCTP.js";import"../../../chunk-TCAAOYQY.js";import"../../../chunk-BBD3FLU3.js";import"../../../chunk-JQQFB7EZ.js";import"../../../chunk-TBY3DFKS.js";import"../../../chunk-U3LTJSBU.js";import"../../../chunk-BPXEFVSQ.js";import"../../../chunk-YCSZAP7T.js";import"../../../chunk-ZEH6QLBH.js";import"../../../chunk-WHS6Y55E.js";import"../../../chunk-FM6JO4WF.js";import"../../../chunk-K56YDHYQ.js";import"../../../chunk-KFV7N2DJ.js";import"../../../chunk-K53PQAMP.js";import"../../../chunk-FIVU2COQ.js";import"../../../chunk-QTHQPJWA.js";import"../../../chunk-HZSZT3BE.js";import"../../../chunk-PMRN5Z3T.js";import"../../../chunk-Y2T3JX7K.js";import"../../../chunk-KFWNGPW3.js";import"../../../chunk-MIX7EGRG.js";import"../../../chunk-DX3VILZ3.js";import"../../../chunk-JACEEVVF.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-3XECMGXX.js";import"../../../chunk-P2VEMZH5.js";import"../../../chunk-TOKMFZPB.js";import"../../../chunk-FR7EEKFF.js";import"../../../chunk-7UFKEX72.js";import"../../../chunk-EUFDQ4KL.js";import"../../../chunk-KXM6YRG2.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{resetForDocumentSwitch,saveStatusForNewDocument,saveStatusOf}from"../../chunk-
|
|
1
|
+
export{resetForDocumentSwitch,saveStatusForNewDocument,saveStatusOf}from"../../chunk-6ATIYLUL.js";import"../../chunk-YYD257TD.js";import"../../chunk-RE4LP46F.js";import"../../chunk-EUFDQ4KL.js";import"../../chunk-KXM6YRG2.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{PAGE_CONFLICT_CODE,isExpiredSession,readEaselFailure}from"../../chunk-
|
|
1
|
+
export{PAGE_CONFLICT_CODE,isExpiredSession,readEaselFailure}from"../../chunk-KO47WAWR.js";import"../../chunk-KCOBHPN6.js";import"../../chunk-YYD257TD.js";import"../../chunk-RE4LP46F.js";import"../../chunk-EUFDQ4KL.js";import"../../chunk-KXM6YRG2.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{routeSharedHostMessage}from"../../chunk-
|
|
1
|
+
export{routeSharedHostMessage}from"../../chunk-QZJKWKGH.js";import"../../chunk-JIP5JNRB.js";import"../../chunk-NCXYC7WI.js";import"../../chunk-LX23TCTP.js";import"../../chunk-EUFDQ4KL.js";import"../../chunk-KXM6YRG2.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{editorRootFocus,isSaveShortcut,useEaselKeyTarget,useEaselSaveKey,useEaselUndoKeys}from"../../chunk-
|
|
1
|
+
export{editorRootFocus,isSaveShortcut,useEaselKeyTarget,useEaselSaveKey,useEaselUndoKeys}from"../../chunk-UCZQWQNS.js";import"../../chunk-LX23TCTP.js";import"../../chunk-BBD3FLU3.js";import"../../chunk-JQQFB7EZ.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-K53PQAMP.js";import"../../chunk-QTHQPJWA.js";import"../../chunk-HZSZT3BE.js";import"../../chunk-PMRN5Z3T.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-TOKMFZPB.js";import"../../chunk-FR7EEKFF.js";import"../../chunk-7UFKEX72.js";import"../../chunk-EUFDQ4KL.js";import"../../chunk-KXM6YRG2.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{requestMediaPick,resolveMediaPick}from"../../chunk-
|
|
1
|
+
export{requestMediaPick,resolveMediaPick}from"../../chunk-JIP5JNRB.js";import"../../chunk-NCXYC7WI.js";import"../../chunk-LX23TCTP.js";import"../../chunk-EUFDQ4KL.js";import"../../chunk-KXM6YRG2.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{editLockOf,pageEditLock}from"../../chunk-
|
|
1
|
+
export{editLockOf,pageEditLock}from"../../chunk-GR3XRILS.js";import"../../chunk-KO47WAWR.js";import"../../chunk-KCOBHPN6.js";import"../../chunk-YYD257TD.js";import"../../chunk-RE4LP46F.js";import"../../chunk-EUFDQ4KL.js";import"../../chunk-KXM6YRG2.js";
|