@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/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: ContainerLayoutConfig | null;
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: ContainerLayoutConfig | 'free' | 'split' | 'grid' | 'flex' | 'none' | null): void;
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?: ContainerLayoutConfig;
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?: ContainerLayoutMode | ContainerLayoutConfig;
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;