@hy-bricks/canvas 0.4.2 → 0.5.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/CHANGELOG.md +42 -11
- package/dist/index.cjs +2 -2
- package/dist/index.d.ts +266 -8
- package/dist/index.mjs +2 -2
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -46,6 +46,7 @@ parentLayoutMode: ContainerLayoutConfig["mode"];
|
|
|
46
46
|
"onHandle-ready"?: ((handle: CanvasHandle) => any) | undefined;
|
|
47
47
|
}>, {
|
|
48
48
|
mode: CanvasMode;
|
|
49
|
+
freeSplitEnabled: boolean | (() => boolean);
|
|
49
50
|
}, {}, {}, {}, string, ComponentProvideOptions, false, {
|
|
50
51
|
stageContainerEl: HTMLDivElement;
|
|
51
52
|
}, any>;
|
|
@@ -96,6 +97,7 @@ declare type __VLS_Props_2 = {
|
|
|
96
97
|
schedulerOptions?: RenderSchedulerOptions;
|
|
97
98
|
adapters?: CanvasAdapters;
|
|
98
99
|
canvasId?: string;
|
|
100
|
+
freeSplitEnabled?: boolean | (() => boolean);
|
|
99
101
|
};
|
|
100
102
|
|
|
101
103
|
declare type __VLS_Props_3 = {
|
|
@@ -133,6 +135,16 @@ declare function __VLS_template(): {
|
|
|
133
135
|
isDragging: boolean;
|
|
134
136
|
};
|
|
135
137
|
}) => VNode[];
|
|
138
|
+
'free-split-divider'?: (props: {
|
|
139
|
+
state: {
|
|
140
|
+
containerId: string;
|
|
141
|
+
nodeId: string;
|
|
142
|
+
dividerIndex: number;
|
|
143
|
+
direction: "horizontal" | "vertical";
|
|
144
|
+
rect: Rect;
|
|
145
|
+
isDragging: boolean;
|
|
146
|
+
};
|
|
147
|
+
}) => VNode[];
|
|
136
148
|
}> & {
|
|
137
149
|
default?: () => VNode[];
|
|
138
150
|
'canvas-overlay'?: (props: {
|
|
@@ -155,6 +167,16 @@ declare function __VLS_template(): {
|
|
|
155
167
|
isDragging: boolean;
|
|
156
168
|
};
|
|
157
169
|
}) => VNode[];
|
|
170
|
+
'free-split-divider'?: (props: {
|
|
171
|
+
state: {
|
|
172
|
+
containerId: string;
|
|
173
|
+
nodeId: string;
|
|
174
|
+
dividerIndex: number;
|
|
175
|
+
direction: "horizontal" | "vertical";
|
|
176
|
+
rect: Rect;
|
|
177
|
+
isDragging: boolean;
|
|
178
|
+
};
|
|
179
|
+
}) => VNode[];
|
|
158
180
|
};
|
|
159
181
|
refs: {
|
|
160
182
|
stageContainerEl: HTMLDivElement;
|
|
@@ -192,6 +214,16 @@ declare function __VLS_template_3(): {
|
|
|
192
214
|
isDragging: boolean;
|
|
193
215
|
};
|
|
194
216
|
}) => unknown;
|
|
217
|
+
'free-split-divider'?: (props: {
|
|
218
|
+
state: {
|
|
219
|
+
containerId: string;
|
|
220
|
+
nodeId: string;
|
|
221
|
+
dividerIndex: number;
|
|
222
|
+
direction: "horizontal" | "vertical";
|
|
223
|
+
rect: Rect;
|
|
224
|
+
isDragging: boolean;
|
|
225
|
+
};
|
|
226
|
+
}) => unknown;
|
|
195
227
|
}> & {
|
|
196
228
|
'reparent-ghost'?: (props: {
|
|
197
229
|
state: {
|
|
@@ -209,6 +241,16 @@ declare function __VLS_template_3(): {
|
|
|
209
241
|
isDragging: boolean;
|
|
210
242
|
};
|
|
211
243
|
}) => unknown;
|
|
244
|
+
'free-split-divider'?: (props: {
|
|
245
|
+
state: {
|
|
246
|
+
containerId: string;
|
|
247
|
+
nodeId: string;
|
|
248
|
+
dividerIndex: number;
|
|
249
|
+
direction: "horizontal" | "vertical";
|
|
250
|
+
rect: Rect;
|
|
251
|
+
isDragging: boolean;
|
|
252
|
+
};
|
|
253
|
+
}) => unknown;
|
|
212
254
|
};
|
|
213
255
|
refs: {
|
|
214
256
|
layerEl: HTMLDivElement;
|
|
@@ -242,6 +284,8 @@ declare type __VLS_WithTemplateSlots_3<T, S> = T & {
|
|
|
242
284
|
|
|
243
285
|
export declare function applyEffectiveSplitRatiosToDocument(doc: PageDocument): PageDocument;
|
|
244
286
|
|
|
287
|
+
export declare function applyFreeSplitResizeDrag(startSizes: readonly NodeSize[], dividerIndex: number, deltaPx: number, branchAxisPx: number, opts?: FreeSplitResizeOpts): NodeSize[];
|
|
288
|
+
|
|
245
289
|
export declare function applySplitDividerDrag(startRatios: readonly number[], dividerIndex: number, deltaPx: number, parentAxisPx: number, gap?: number): number[];
|
|
246
290
|
|
|
247
291
|
export declare function assertNeverBindingSource(s: never): never;
|
|
@@ -451,7 +495,7 @@ export declare const CANVAS_CONTEXT_KEY: InjectionKey<CanvasContext>;
|
|
|
451
495
|
|
|
452
496
|
export declare const CANVAS_REPARENT_BRIDGE_KEY: InjectionKey<ReparentBridge>;
|
|
453
497
|
|
|
454
|
-
export declare type CanvasAction = CanvasDocumentAction | CanvasSelectionAction;
|
|
498
|
+
export declare type CanvasAction = CanvasDocumentAction | CanvasSelectionAction | CanvasFreeSplitAction;
|
|
455
499
|
|
|
456
500
|
export declare interface CanvasActionHooks {
|
|
457
501
|
onBeforeAction?: (action: CanvasAction) => boolean | void;
|
|
@@ -502,6 +546,7 @@ export declare interface CanvasContext {
|
|
|
502
546
|
endBatch(batchType?: string): void;
|
|
503
547
|
registerHooks(hooks: CanvasActionHooks): () => void;
|
|
504
548
|
readonly isRecordingSuppressed: ComputedRef<boolean>;
|
|
549
|
+
readonly freeSplitEnabled: ComputedRef<boolean>;
|
|
505
550
|
suppressRecording<T>(fn: () => T): T;
|
|
506
551
|
readonly effectiveBehavior: ComputedRef<CanvasBehaviorConfig>;
|
|
507
552
|
readonly interactionOptions: ComputedRef<Readonly<Partial<InteractionOptions>>>;
|
|
@@ -535,6 +580,7 @@ export declare interface CanvasContextOptions {
|
|
|
535
580
|
adapters?: CanvasAdapters;
|
|
536
581
|
hooks?: CanvasActionHooks;
|
|
537
582
|
getMode?: () => CanvasMode;
|
|
583
|
+
freeSplitEnabled?: boolean | (() => boolean | undefined);
|
|
538
584
|
}
|
|
539
585
|
|
|
540
586
|
export declare type CanvasDocumentAction = {
|
|
@@ -598,7 +644,7 @@ export declare type CanvasDocumentAction = {
|
|
|
598
644
|
} | {
|
|
599
645
|
type: 'setRootLayout';
|
|
600
646
|
payload: {
|
|
601
|
-
rootLayout:
|
|
647
|
+
rootLayout: RootContainerLayoutConfig | null;
|
|
602
648
|
};
|
|
603
649
|
} | {
|
|
604
650
|
type: 'replaceDocument';
|
|
@@ -665,6 +711,8 @@ export declare interface CanvasFeatures {
|
|
|
665
711
|
enablePublish?: boolean;
|
|
666
712
|
}
|
|
667
713
|
|
|
714
|
+
declare type CanvasFreeSplitAction = FreeSplitMutateAction;
|
|
715
|
+
|
|
668
716
|
export declare interface CanvasGridConfig {
|
|
669
717
|
visible?: boolean;
|
|
670
718
|
size?: number;
|
|
@@ -689,12 +737,17 @@ export declare interface CanvasHandle {
|
|
|
689
737
|
getSnapshot(): PageDocument;
|
|
690
738
|
readonly selectedIds: Readonly<Ref<readonly string[]>>;
|
|
691
739
|
readonly selectedInstances: ComputedRef<readonly PageInstance[]>;
|
|
740
|
+
readonly freeSplitSelection: Readonly<Ref<FreeSplitSelection | null>>;
|
|
741
|
+
selectFreeSplitLeaf(containerId: string, leafId: string): void;
|
|
742
|
+
selectFreeSplitDivider(containerId: string, nodeId: string, dividerIndex: number): void;
|
|
743
|
+
clearFreeSplitSelection(): void;
|
|
692
744
|
readonly viewport: ViewportStore;
|
|
693
745
|
clientToCanvasPoint(point: Point): Point;
|
|
694
746
|
getInstanceAtClientPoint(point: Point): PageInstance | null;
|
|
695
747
|
getDropTarget(point: Point, root?: ParentNode | null, options?: {
|
|
696
748
|
excludeInstanceId?: string;
|
|
697
749
|
}): DropTarget | null;
|
|
750
|
+
getFreeSplitDropTarget(point: Point, root?: ParentNode | null): FreeSplitDropTarget | null;
|
|
698
751
|
duplicateInstance(instanceId: string, options?: DuplicateInstanceOptions): string | null;
|
|
699
752
|
undo(): void;
|
|
700
753
|
redo(): void;
|
|
@@ -708,7 +761,7 @@ export declare interface CanvasHandle {
|
|
|
708
761
|
updateCanvasBackground(bg: Partial<CanvasBackgroundConfig> | null): void;
|
|
709
762
|
updateBehavior(behavior: Partial<CanvasBehaviorConfig>): void;
|
|
710
763
|
setInteractionOptions(options: Partial<InteractionOptions>): void;
|
|
711
|
-
setRootLayout(mode:
|
|
764
|
+
setRootLayout(mode: RootContainerLayoutConfig | 'free' | 'split' | 'grid' | 'flex' | 'none' | null): void;
|
|
712
765
|
getEffectiveBehavior(): CanvasBehaviorConfig;
|
|
713
766
|
getInstanceTree(): PageInstanceTreeNode[];
|
|
714
767
|
getInstanceList(): PageInstance[];
|
|
@@ -796,6 +849,7 @@ export declare interface CanvasHandle {
|
|
|
796
849
|
status: DataSourceStatus;
|
|
797
850
|
} | undefined;
|
|
798
851
|
attachBindingDelegate(delegate: WirePageBindingsHandle | null, dataStore?: DataSourceStore | null): void;
|
|
852
|
+
readonly freeSplit: FreeSplitHandleApi;
|
|
799
853
|
}
|
|
800
854
|
|
|
801
855
|
export declare interface CanvasHandleOptions {
|
|
@@ -834,7 +888,7 @@ export declare interface CanvasLayoutConfig {
|
|
|
834
888
|
canvas: CanvasViewportConfig;
|
|
835
889
|
background?: CanvasBackgroundConfig;
|
|
836
890
|
behavior?: CanvasBehaviorConfig;
|
|
837
|
-
rootLayout?:
|
|
891
|
+
rootLayout?: RootContainerLayoutConfig;
|
|
838
892
|
guides?: {
|
|
839
893
|
grid?: CanvasGridConfig;
|
|
840
894
|
ruler?: CanvasRulerConfig;
|
|
@@ -850,6 +904,11 @@ export declare interface CanvasRulerConfig {
|
|
|
850
904
|
size?: number;
|
|
851
905
|
}
|
|
852
906
|
|
|
907
|
+
export declare type CanvasSelection = {
|
|
908
|
+
kind: 'instance';
|
|
909
|
+
instanceId: string;
|
|
910
|
+
} | FreeSplitSelection;
|
|
911
|
+
|
|
853
912
|
export declare type CanvasSelectionAction = {
|
|
854
913
|
type: 'select';
|
|
855
914
|
payload: {
|
|
@@ -1021,6 +1080,12 @@ export declare function computeFit(rect: Rect_2, container: {
|
|
|
1021
1080
|
h: number;
|
|
1022
1081
|
}, options?: FitOptions): FitResult;
|
|
1023
1082
|
|
|
1083
|
+
export declare function computeFreeSplitDividers(root: SplitNode, getLeafRect: (leafId: string) => Rect | null, opts?: {
|
|
1084
|
+
thickness?: number;
|
|
1085
|
+
}): FreeSplitDivider[];
|
|
1086
|
+
|
|
1087
|
+
export declare function computeFreeSplitNodeRect(node: SplitNode, getLeafRect: (leafId: string) => Rect | null): Rect | null;
|
|
1088
|
+
|
|
1024
1089
|
export declare function computeInverse(action: CanvasAction, ctx: CanvasContext): CanvasAction[] | null;
|
|
1025
1090
|
|
|
1026
1091
|
export declare function computeNextAxisSize(startAxis: InstanceSizeAxis | undefined, newPxCanvas: number, outletPxCanvas: number | null): InstanceSizeAxis;
|
|
@@ -1040,6 +1105,8 @@ export declare function computeSnap(input: SnapInput): SnapResult;
|
|
|
1040
1105
|
|
|
1041
1106
|
export declare function computeSplitDividers(parentRect: Rect, ratios: readonly number[], direction: 'horizontal' | 'vertical', gap?: number): SplitDivider[];
|
|
1042
1107
|
|
|
1108
|
+
export declare function computeSplitShare(leafRect: Rect, edge: Edge, pt: Point): number;
|
|
1109
|
+
|
|
1043
1110
|
export declare function computeVisibleBounds(viewport: {
|
|
1044
1111
|
scale: number;
|
|
1045
1112
|
panX: number;
|
|
@@ -1051,9 +1118,9 @@ export declare function computeVisibleBounds(viewport: {
|
|
|
1051
1118
|
|
|
1052
1119
|
export declare type ContainerLayoutConfig = {
|
|
1053
1120
|
mode: 'none';
|
|
1054
|
-
} | FreeContainerLayout | FlexContainerLayout | SplitContainerLayout | GridContainerLayout;
|
|
1121
|
+
} | FreeContainerLayout | FlexContainerLayout | SplitContainerLayout | GridContainerLayout | FreeSplitContainerLayout;
|
|
1055
1122
|
|
|
1056
|
-
export declare type ContainerLayoutMode = 'none' | 'free' | 'flex' | 'split' | 'grid';
|
|
1123
|
+
export declare type ContainerLayoutMode = 'none' | 'free' | 'flex' | 'split' | 'grid' | 'free-split';
|
|
1057
1124
|
|
|
1058
1125
|
export declare function containerLayoutToCss(cfg: ContainerLayoutConfig | undefined): Record<string, string> | null;
|
|
1059
1126
|
|
|
@@ -1080,12 +1147,14 @@ export declare function createDocumentStore(initial?: PageDocumentInput): Docume
|
|
|
1080
1147
|
|
|
1081
1148
|
export declare function createFreePageDocument(opts?: Omit<CreatePageDocumentOptions, 'rootLayout'>): PageDocument;
|
|
1082
1149
|
|
|
1150
|
+
export declare function createFreeSplitInteraction(ctx: CanvasContext): FreeSplitInteraction;
|
|
1151
|
+
|
|
1083
1152
|
export declare function createMinimalPageDocument(opts?: CreatePageDocumentOptions): PageDocument;
|
|
1084
1153
|
|
|
1085
1154
|
export declare interface CreatePageDocumentOptions {
|
|
1086
1155
|
canvasWidth?: number;
|
|
1087
1156
|
canvasHeight?: number;
|
|
1088
|
-
rootLayout?:
|
|
1157
|
+
rootLayout?: RootContainerLayoutMode | RootContainerLayoutConfig;
|
|
1089
1158
|
instances?: PageInstance[];
|
|
1090
1159
|
bindings?: NormalizedPageBinding[];
|
|
1091
1160
|
}
|
|
@@ -1275,6 +1344,8 @@ export declare interface DuplicateInstanceOptions {
|
|
|
1275
1344
|
};
|
|
1276
1345
|
}
|
|
1277
1346
|
|
|
1347
|
+
declare type Edge = 'left' | 'right' | 'top' | 'bottom';
|
|
1348
|
+
|
|
1278
1349
|
export declare const EFFECTIVE_DEFAULT_SLOT = "default";
|
|
1279
1350
|
|
|
1280
1351
|
export declare function effectiveSlot(inst: PageInstance): string;
|
|
@@ -1324,6 +1395,145 @@ export declare interface FreeContainerLayout {
|
|
|
1324
1395
|
mode: 'free';
|
|
1325
1396
|
}
|
|
1326
1397
|
|
|
1398
|
+
export declare interface FreeSplitContainerLayout {
|
|
1399
|
+
mode: 'free-split';
|
|
1400
|
+
root: SplitNode;
|
|
1401
|
+
structureLocked?: boolean;
|
|
1402
|
+
gap?: number;
|
|
1403
|
+
}
|
|
1404
|
+
|
|
1405
|
+
export declare interface FreeSplitDivider {
|
|
1406
|
+
nodeId: string;
|
|
1407
|
+
dividerIndex: number;
|
|
1408
|
+
rect: Rect;
|
|
1409
|
+
direction: 'horizontal' | 'vertical';
|
|
1410
|
+
}
|
|
1411
|
+
|
|
1412
|
+
export declare interface FreeSplitDropTarget {
|
|
1413
|
+
containerId: string;
|
|
1414
|
+
leafId: string;
|
|
1415
|
+
leafEl: HTMLElement;
|
|
1416
|
+
}
|
|
1417
|
+
|
|
1418
|
+
declare type FreeSplitEdge = 'left' | 'right' | 'top' | 'bottom';
|
|
1419
|
+
|
|
1420
|
+
declare interface FreeSplitHandleApi {
|
|
1421
|
+
fill(containerId: string, leafId: string, instance: PageInstance): void;
|
|
1422
|
+
clear(containerId: string, leafId: string): void;
|
|
1423
|
+
swap(containerId: string, leafIdA: string, leafIdB: string): void;
|
|
1424
|
+
resize(containerId: string, nodeId: string, sizes: NodeSize[]): void;
|
|
1425
|
+
split(containerId: string, leafId: string, edge: FreeSplitEdge, newLeafShare: number): {
|
|
1426
|
+
leafId: string;
|
|
1427
|
+
nodeId: string;
|
|
1428
|
+
};
|
|
1429
|
+
merge(containerId: string, leafId: string): void;
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1432
|
+
export declare interface FreeSplitInteraction {
|
|
1433
|
+
resizeDrag: Readonly<FreeSplitResizeDragState>;
|
|
1434
|
+
isResizing: Readonly<Ref<boolean>>;
|
|
1435
|
+
handleResizeStart(args: FreeSplitResizeStartArgs): {
|
|
1436
|
+
startTracking: boolean;
|
|
1437
|
+
};
|
|
1438
|
+
handleResizeMove(canvasPt: Point): void;
|
|
1439
|
+
handleResizeEnd(): void;
|
|
1440
|
+
cancelResize(): void;
|
|
1441
|
+
requestSplit(containerId: string, leafId: string, edge: Edge, newLeafShare: number): {
|
|
1442
|
+
leafId: string;
|
|
1443
|
+
nodeId: string;
|
|
1444
|
+
} | null;
|
|
1445
|
+
requestMerge(containerId: string, leafId: string): void;
|
|
1446
|
+
requestDelete(containerId: string, leafId: string): void;
|
|
1447
|
+
requestSwap(containerId: string, leafIdA: string, leafIdB: string): void;
|
|
1448
|
+
}
|
|
1449
|
+
|
|
1450
|
+
declare type FreeSplitMutateAction = {
|
|
1451
|
+
type: 'freeSplitFill';
|
|
1452
|
+
payload: {
|
|
1453
|
+
containerId: string;
|
|
1454
|
+
leafId: string;
|
|
1455
|
+
instance: PageInstance;
|
|
1456
|
+
};
|
|
1457
|
+
} | {
|
|
1458
|
+
type: 'freeSplitClear';
|
|
1459
|
+
payload: {
|
|
1460
|
+
containerId: string;
|
|
1461
|
+
leafId: string;
|
|
1462
|
+
};
|
|
1463
|
+
} | {
|
|
1464
|
+
type: 'freeSplitSwap';
|
|
1465
|
+
payload: {
|
|
1466
|
+
containerId: string;
|
|
1467
|
+
leafIdA: string;
|
|
1468
|
+
leafIdB: string;
|
|
1469
|
+
};
|
|
1470
|
+
} | {
|
|
1471
|
+
type: 'freeSplitResize';
|
|
1472
|
+
payload: {
|
|
1473
|
+
containerId: string;
|
|
1474
|
+
nodeId: string;
|
|
1475
|
+
sizes: NodeSize[];
|
|
1476
|
+
};
|
|
1477
|
+
} | {
|
|
1478
|
+
type: 'freeSplitSplit';
|
|
1479
|
+
payload: {
|
|
1480
|
+
containerId: string;
|
|
1481
|
+
leafId: string;
|
|
1482
|
+
edge: 'left' | 'right' | 'top' | 'bottom';
|
|
1483
|
+
newLeafShare: number;
|
|
1484
|
+
newLeafId: string;
|
|
1485
|
+
newNodeId: string;
|
|
1486
|
+
};
|
|
1487
|
+
} | {
|
|
1488
|
+
type: 'freeSplitMerge';
|
|
1489
|
+
payload: {
|
|
1490
|
+
containerId: string;
|
|
1491
|
+
leafId: string;
|
|
1492
|
+
};
|
|
1493
|
+
};
|
|
1494
|
+
|
|
1495
|
+
export declare interface FreeSplitResizeDragState {
|
|
1496
|
+
status: 'idle' | 'active';
|
|
1497
|
+
containerId: string | null;
|
|
1498
|
+
nodeId: string | null;
|
|
1499
|
+
dividerIndex: number | null;
|
|
1500
|
+
startSizes: NodeSize[] | null;
|
|
1501
|
+
branchAxisPx: number;
|
|
1502
|
+
startPt: Point | null;
|
|
1503
|
+
direction: 'horizontal' | 'vertical' | null;
|
|
1504
|
+
snap: boolean;
|
|
1505
|
+
}
|
|
1506
|
+
|
|
1507
|
+
export declare interface FreeSplitResizeOpts {
|
|
1508
|
+
snap?: boolean;
|
|
1509
|
+
snapFractions?: number[];
|
|
1510
|
+
snapThreshold?: number;
|
|
1511
|
+
minRatioFraction?: number;
|
|
1512
|
+
minPx?: number;
|
|
1513
|
+
}
|
|
1514
|
+
|
|
1515
|
+
export declare interface FreeSplitResizeStartArgs {
|
|
1516
|
+
containerId: string;
|
|
1517
|
+
nodeId: string;
|
|
1518
|
+
dividerIndex: number;
|
|
1519
|
+
startSizes: NodeSize[];
|
|
1520
|
+
branchAxisPx: number;
|
|
1521
|
+
direction: 'horizontal' | 'vertical';
|
|
1522
|
+
canvasPt: Point;
|
|
1523
|
+
snap?: boolean;
|
|
1524
|
+
}
|
|
1525
|
+
|
|
1526
|
+
export declare type FreeSplitSelection = {
|
|
1527
|
+
kind: 'freeSplitLeaf';
|
|
1528
|
+
containerId: string;
|
|
1529
|
+
leafId: string;
|
|
1530
|
+
} | {
|
|
1531
|
+
kind: 'freeSplitDivider';
|
|
1532
|
+
containerId: string;
|
|
1533
|
+
nodeId: string;
|
|
1534
|
+
dividerIndex: number;
|
|
1535
|
+
};
|
|
1536
|
+
|
|
1327
1537
|
export declare function getBindingInstanceRefs(binding: NormalizedPageBinding): BindingInstanceRef[];
|
|
1328
1538
|
|
|
1329
1539
|
export declare function getDefaultShortcuts(): CanvasShortcutBinding[];
|
|
@@ -1432,6 +1642,8 @@ export declare function isEditingText(target: EventTarget | null): boolean;
|
|
|
1432
1642
|
|
|
1433
1643
|
export declare function isFreePositionLayoutMode(mode: ContainerLayoutConfig['mode'] | undefined): boolean;
|
|
1434
1644
|
|
|
1645
|
+
export declare function isFreeSplitEnabled(): boolean;
|
|
1646
|
+
|
|
1435
1647
|
export declare function isInstanceEffectivelyLocked(inst: LockedSubset): boolean;
|
|
1436
1648
|
|
|
1437
1649
|
export declare function isInstancePositionLocked(inst: LockedSubset): boolean;
|
|
@@ -1460,7 +1672,7 @@ export declare interface LayoutIssue {
|
|
|
1460
1672
|
detail: string;
|
|
1461
1673
|
}
|
|
1462
1674
|
|
|
1463
|
-
export declare type LayoutIssueKind = 'cycle' | 'missing-parent' | 'cross-page-parent' | 'orphan-slot' | 'invalid-slot' | 'parent-not-layout' | 'slot-not-allowed-component' | 'slot-multiple-violated' | 'absolute-child-rejected' | 'depth-exceeded';
|
|
1675
|
+
export declare type LayoutIssueKind = 'cycle' | 'missing-parent' | 'cross-page-parent' | 'orphan-slot' | 'invalid-slot' | 'parent-not-layout' | 'slot-not-allowed-component' | 'slot-multiple-violated' | 'absolute-child-rejected' | 'depth-exceeded' | 'free-split-duplicate-id' | 'free-split-duplicate-instance' | 'free-split-depth-exceeded' | 'free-split-invalid-size';
|
|
1464
1676
|
|
|
1465
1677
|
export declare interface LayoutItem {
|
|
1466
1678
|
order?: number;
|
|
@@ -1519,6 +1731,8 @@ export declare function matchBinding(binding: CanvasShortcutBinding, ev: Keyboar
|
|
|
1519
1731
|
|
|
1520
1732
|
export declare const MAX_INSTANCE_TREE_DEPTH = 8;
|
|
1521
1733
|
|
|
1734
|
+
export declare const MAX_SPLIT_TREE_DEPTH = 8;
|
|
1735
|
+
|
|
1522
1736
|
declare interface MeasuredStageSize {
|
|
1523
1737
|
w: number;
|
|
1524
1738
|
h: number;
|
|
@@ -1564,6 +1778,13 @@ export declare interface ModifierKeys {
|
|
|
1564
1778
|
|
|
1565
1779
|
export declare type MountState = 'idle' | 'pending' | 'mounting' | 'mounted' | 'disposing';
|
|
1566
1780
|
|
|
1781
|
+
export declare interface NodeSize {
|
|
1782
|
+
mode: 'ratio' | 'px';
|
|
1783
|
+
value: number;
|
|
1784
|
+
min?: number;
|
|
1785
|
+
max?: number;
|
|
1786
|
+
}
|
|
1787
|
+
|
|
1567
1788
|
export declare function normalizeComponentOverrides(raw: PageDocument['componentOverrides'], instances: readonly PageInstance[]): Record<string, PageComponentOverride>;
|
|
1568
1789
|
|
|
1569
1790
|
export declare type NormalizedPageBinding = (PageBindingBase & {
|
|
@@ -1574,6 +1795,10 @@ export declare type NormalizedPageBinding = (PageBindingBase & {
|
|
|
1574
1795
|
type: 'data';
|
|
1575
1796
|
});
|
|
1576
1797
|
|
|
1798
|
+
export declare function normalizeFreeSplitContainersInDocument(instances: PageInstance[]): PageInstance[];
|
|
1799
|
+
|
|
1800
|
+
export declare function normalizeFreeSplitTreeShape(node: unknown): SplitNode;
|
|
1801
|
+
|
|
1577
1802
|
export declare function normalizeGridCells0Based(cells: NonNullable<GridContainerLayout['cells']>): NonNullable<GridContainerLayout['cells']>;
|
|
1578
1803
|
|
|
1579
1804
|
export declare function normalizeInstanceSlotFields(inst: PageInstance): PageInstance;
|
|
@@ -1857,8 +2082,20 @@ export declare interface ResizeState {
|
|
|
1857
2082
|
|
|
1858
2083
|
export declare function resolveCanvasSizePx(size: CanvasSizeValue, fallback?: number): number;
|
|
1859
2084
|
|
|
2085
|
+
export declare function resolveFreeSplitMergeTarget(root: SplitNode, nodeId: string, dividerIndex: number): string | null;
|
|
2086
|
+
|
|
1860
2087
|
export declare function resolveMeasuredCanvasSizePx(size: CanvasSizeValue, axisSize: number, fallback?: number): number;
|
|
1861
2088
|
|
|
2089
|
+
export declare function resolveSplitEdge(leafRect: Rect, pt: Point, opts?: {
|
|
2090
|
+
edgeZonePx?: number;
|
|
2091
|
+
}): {
|
|
2092
|
+
edge: Edge;
|
|
2093
|
+
} | null;
|
|
2094
|
+
|
|
2095
|
+
export declare type RootContainerLayoutConfig = Exclude<ContainerLayoutConfig, FreeSplitContainerLayout>;
|
|
2096
|
+
|
|
2097
|
+
export declare type RootContainerLayoutMode = Exclude<ContainerLayoutMode, 'free-split'>;
|
|
2098
|
+
|
|
1862
2099
|
export declare interface RuntimeInstanceSnapshot {
|
|
1863
2100
|
instanceId: string;
|
|
1864
2101
|
componentId: string;
|
|
@@ -1875,6 +2112,7 @@ export declare interface SelectionStore {
|
|
|
1875
2112
|
readonly selectedIds: ComputedRef<string[]>;
|
|
1876
2113
|
readonly size: ComputedRef<number>;
|
|
1877
2114
|
readonly primaryId: ComputedRef<string | undefined>;
|
|
2115
|
+
readonly freeSplitSelection: ComputedRef<FreeSplitSelection | null>;
|
|
1878
2116
|
select(instanceId: string): void;
|
|
1879
2117
|
toggleSelect(instanceId: string): void;
|
|
1880
2118
|
addToSelection(instanceId: string): void;
|
|
@@ -1883,6 +2121,9 @@ export declare interface SelectionStore {
|
|
|
1883
2121
|
selectAll(instanceIds: string[]): void;
|
|
1884
2122
|
purgeOrphans(validIds: string[]): void;
|
|
1885
2123
|
isSelected(instanceId: string): boolean;
|
|
2124
|
+
selectFreeSplitLeaf(containerId: string, leafId: string): void;
|
|
2125
|
+
selectFreeSplitDivider(containerId: string, nodeId: string, dividerIndex: number): void;
|
|
2126
|
+
clearFreeSplitSelection(): void;
|
|
1886
2127
|
}
|
|
1887
2128
|
|
|
1888
2129
|
export declare const SLOT_CHILD_RESIZE_HANDLES: readonly ["e", "s", "se"];
|
|
@@ -1934,6 +2175,14 @@ export declare interface Source {
|
|
|
1934
2175
|
css: string;
|
|
1935
2176
|
}
|
|
1936
2177
|
|
|
2178
|
+
export declare interface SplitBranch {
|
|
2179
|
+
type: 'split';
|
|
2180
|
+
nodeId: string;
|
|
2181
|
+
dir: 'row' | 'col';
|
|
2182
|
+
children: SplitNode[];
|
|
2183
|
+
sizes: NodeSize[];
|
|
2184
|
+
}
|
|
2185
|
+
|
|
1937
2186
|
export declare interface SplitContainerLayout {
|
|
1938
2187
|
mode: 'split';
|
|
1939
2188
|
direction: 'horizontal' | 'vertical';
|
|
@@ -1979,6 +2228,15 @@ export declare interface SplitDividerInteraction {
|
|
|
1979
2228
|
cancelSplitDividerDrag(): void;
|
|
1980
2229
|
}
|
|
1981
2230
|
|
|
2231
|
+
export declare interface SplitLeaf {
|
|
2232
|
+
type: 'leaf';
|
|
2233
|
+
leafId: string;
|
|
2234
|
+
instanceId: string | null;
|
|
2235
|
+
locked?: boolean;
|
|
2236
|
+
}
|
|
2237
|
+
|
|
2238
|
+
export declare type SplitNode = SplitBranch | SplitLeaf;
|
|
2239
|
+
|
|
1982
2240
|
export declare interface StaleComponentOverride {
|
|
1983
2241
|
instanceId: string;
|
|
1984
2242
|
baseVersionKey: ComponentVersionKey;
|