@window-splitter/state 0.2.2 → 0.2.3--canary.823a479.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/.tshy/commonjs.json +1 -0
- package/.tshy/esm.json +1 -0
- package/.tshy-build/esm/index.d.ts +327 -0
- package/.tshy-build/esm/index.d.ts.map +1 -0
- package/.tshy-build/esm/index.js +964 -0
- package/.tshy-build/esm/index.js.map +1 -0
- package/.tshy-build/esm/package.json +3 -0
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-lint.log +1 -1
- package/.turbo/turbo-test.log +1023 -129
- package/coverage/clover.xml +358 -345
- package/coverage/coverage-final.json +1 -1
- package/coverage/index.html +18 -18
- package/coverage/index.ts.html +624 -402
- package/dist/commonjs/index.d.ts +22 -9
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +189 -134
- package/dist/commonjs/index.js.map +1 -1
- package/dist/esm/index.d.ts +22 -9
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +188 -114
- package/dist/esm/index.js.map +1 -1
- package/package.json +6 -6
- package/src/index.ts +279 -153
- package/src/machine.test.ts +174 -85
- package/src/package.json +3 -0
- package/src/utils.test.ts +22 -9
- package/dist/commonjs/machine.test.d.ts +0 -5
- package/dist/commonjs/machine.test.d.ts.map +0 -1
- package/dist/commonjs/machine.test.js +0 -1038
- package/dist/commonjs/machine.test.js.map +0 -1
- package/dist/commonjs/utils.test.d.ts +0 -2
- package/dist/commonjs/utils.test.d.ts.map +0 -1
- package/dist/commonjs/utils.test.js +0 -79
- package/dist/commonjs/utils.test.js.map +0 -1
- package/dist/esm/machine.test.d.ts +0 -5
- package/dist/esm/machine.test.d.ts.map +0 -1
- package/dist/esm/machine.test.js +0 -1036
- package/dist/esm/machine.test.js.map +0 -1
- package/dist/esm/utils.test.d.ts +0 -2
- package/dist/esm/utils.test.d.ts.map +0 -1
- package/dist/esm/utils.test.js +0 -77
- package/dist/esm/utils.test.js.map +0 -1
package/.tshy/commonjs.json
CHANGED
package/.tshy/esm.json
CHANGED
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
import { Snapshot } from "xstate";
|
|
2
|
+
import Big from "big.js";
|
|
3
|
+
type PixelUnit = `${number}px`;
|
|
4
|
+
type PercentUnit = `${number}%`;
|
|
5
|
+
export type Unit = PixelUnit | PercentUnit;
|
|
6
|
+
type Orientation = "horizontal" | "vertical";
|
|
7
|
+
interface ParsedPercentUnit {
|
|
8
|
+
type: "percent";
|
|
9
|
+
value: Big.Big;
|
|
10
|
+
}
|
|
11
|
+
interface ParsedPixelUnit {
|
|
12
|
+
type: "pixel";
|
|
13
|
+
value: Big.Big;
|
|
14
|
+
}
|
|
15
|
+
type ParsedUnit = ParsedPercentUnit | ParsedPixelUnit;
|
|
16
|
+
export declare function makePercentUnit(value: number): ParsedPercentUnit;
|
|
17
|
+
export declare function makePixelUnit(value: number): ParsedPixelUnit;
|
|
18
|
+
interface MoveMoveEvent {
|
|
19
|
+
shiftKey: boolean;
|
|
20
|
+
ctrlKey: boolean;
|
|
21
|
+
metaKey: boolean;
|
|
22
|
+
altKey: boolean;
|
|
23
|
+
deltaX: number;
|
|
24
|
+
deltaY: number;
|
|
25
|
+
}
|
|
26
|
+
export interface Constraints<T extends ParsedUnit | Unit = ParsedUnit> {
|
|
27
|
+
/** The minimum size of the panel */
|
|
28
|
+
min?: T;
|
|
29
|
+
/** The maximum size of the panel */
|
|
30
|
+
max?: T;
|
|
31
|
+
/** The default size of the panel */
|
|
32
|
+
default?: T;
|
|
33
|
+
/** Whether the panel is collapsible */
|
|
34
|
+
collapsible?: boolean;
|
|
35
|
+
/** Whether the panel should initially render as collapsed */
|
|
36
|
+
defaultCollapsed?: boolean;
|
|
37
|
+
/** The size of the panel once collapsed */
|
|
38
|
+
collapsedSize?: T;
|
|
39
|
+
}
|
|
40
|
+
interface Order {
|
|
41
|
+
/**
|
|
42
|
+
* When dynamically rendering panels/handles you need to add the order prop.
|
|
43
|
+
* This tells the component what place the items should be in once rendered.
|
|
44
|
+
*/
|
|
45
|
+
order?: number;
|
|
46
|
+
}
|
|
47
|
+
export interface PanelData extends Omit<Constraints, "min" | "max" | "collapsedSize">, Required<Pick<Constraints, "min" | "collapsedSize">>, Order {
|
|
48
|
+
max: ParsedUnit | "1fr";
|
|
49
|
+
type: "panel";
|
|
50
|
+
id: string;
|
|
51
|
+
/** Whether the collapsed state is controlled by the consumer or not */
|
|
52
|
+
collapseIsControlled?: boolean;
|
|
53
|
+
/** A ref to the latest "collapseChange" function provided by the user */
|
|
54
|
+
onCollapseChange?: {
|
|
55
|
+
current: ((isCollapsed: boolean) => void) | null | undefined;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* The current value for the item in the grid
|
|
59
|
+
*/
|
|
60
|
+
currentValue: ParsedUnit;
|
|
61
|
+
/** Whether the panel is currently collapsed */
|
|
62
|
+
collapsed: boolean | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* The size the panel was before being collapsed.
|
|
65
|
+
* This is used to re-open the panel at the same size.
|
|
66
|
+
* If the panel starts out collapsed it will use the `min`.
|
|
67
|
+
*/
|
|
68
|
+
sizeBeforeCollapse: number | undefined;
|
|
69
|
+
/** Animate the collapse/expand */
|
|
70
|
+
collapseAnimation?: CollapseAnimation | {
|
|
71
|
+
duration: number;
|
|
72
|
+
easing: CollapseAnimation | ((t: number) => number);
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/** Copied from https://github.com/d3/d3-ease */
|
|
76
|
+
declare const collapseAnimations: {
|
|
77
|
+
"ease-in-out": (t: number) => number;
|
|
78
|
+
bounce: (t: number) => number;
|
|
79
|
+
linear: (t: number) => number;
|
|
80
|
+
};
|
|
81
|
+
type CollapseAnimation = keyof typeof collapseAnimations;
|
|
82
|
+
export interface PanelHandleData extends Order {
|
|
83
|
+
type: "handle";
|
|
84
|
+
id: string;
|
|
85
|
+
/**
|
|
86
|
+
* The size of the panel handle.
|
|
87
|
+
* Needed to correctly calculate the percentage of modified panels.
|
|
88
|
+
*/
|
|
89
|
+
size: ParsedPixelUnit;
|
|
90
|
+
}
|
|
91
|
+
export type Item = PanelData | PanelHandleData;
|
|
92
|
+
interface RegisterPanelEvent {
|
|
93
|
+
/** Register a new panel with the state machine */
|
|
94
|
+
type: "registerPanel";
|
|
95
|
+
data: Omit<PanelData, "type" | "currentValue" | "defaultCollapsed">;
|
|
96
|
+
}
|
|
97
|
+
interface RegisterDynamicPanelEvent extends Omit<RegisterPanelEvent, "type"> {
|
|
98
|
+
/** Register a new panel with the state machine */
|
|
99
|
+
type: "registerDynamicPanel";
|
|
100
|
+
}
|
|
101
|
+
interface UnregisterPanelEvent {
|
|
102
|
+
/** Remove a panel from the state machine */
|
|
103
|
+
type: "unregisterPanel";
|
|
104
|
+
id: string;
|
|
105
|
+
}
|
|
106
|
+
export type InitializePanelHandleData = Omit<PanelHandleData, "type" | "size"> & {
|
|
107
|
+
size: PixelUnit;
|
|
108
|
+
};
|
|
109
|
+
interface RegisterPanelHandleEvent {
|
|
110
|
+
/** Register a new panel handle with the state machine */
|
|
111
|
+
type: "registerPanelHandle";
|
|
112
|
+
data: InitializePanelHandleData;
|
|
113
|
+
}
|
|
114
|
+
interface UnregisterPanelHandleEvent {
|
|
115
|
+
/** Remove a panel handle from the state machine */
|
|
116
|
+
type: "unregisterPanelHandle";
|
|
117
|
+
id: string;
|
|
118
|
+
}
|
|
119
|
+
interface DragHandleStartEvent {
|
|
120
|
+
/** Start a drag interaction */
|
|
121
|
+
type: "dragHandleStart";
|
|
122
|
+
/** The handle being interacted with */
|
|
123
|
+
handleId: string;
|
|
124
|
+
}
|
|
125
|
+
interface DragHandleEvent {
|
|
126
|
+
/** Update the layout according to how the handle moved */
|
|
127
|
+
type: "dragHandle";
|
|
128
|
+
/** The handle being interacted with */
|
|
129
|
+
handleId: string;
|
|
130
|
+
value: MoveMoveEvent;
|
|
131
|
+
}
|
|
132
|
+
interface DragHandleEndEvent {
|
|
133
|
+
/** End a drag interaction */
|
|
134
|
+
type: "dragHandleEnd";
|
|
135
|
+
/** The handle being interacted with */
|
|
136
|
+
handleId: string;
|
|
137
|
+
}
|
|
138
|
+
export interface Rect {
|
|
139
|
+
width: number;
|
|
140
|
+
height: number;
|
|
141
|
+
}
|
|
142
|
+
interface SetSizeEvent {
|
|
143
|
+
/** Set the size of the whole group */
|
|
144
|
+
type: "setSize";
|
|
145
|
+
size: Rect;
|
|
146
|
+
}
|
|
147
|
+
interface SetActualItemsSizeEvent {
|
|
148
|
+
/** Set the size of the whole group */
|
|
149
|
+
type: "setActualItemsSize";
|
|
150
|
+
childrenSizes: Record<string, Rect>;
|
|
151
|
+
}
|
|
152
|
+
interface ApplyDeltaEvent {
|
|
153
|
+
type: "applyDelta";
|
|
154
|
+
delta: number;
|
|
155
|
+
handleId: string;
|
|
156
|
+
}
|
|
157
|
+
interface SetOrientationEvent {
|
|
158
|
+
/** Set the orientation of the group */
|
|
159
|
+
type: "setOrientation";
|
|
160
|
+
orientation: Orientation;
|
|
161
|
+
}
|
|
162
|
+
interface ControlledCollapseToggle {
|
|
163
|
+
/**
|
|
164
|
+
* This is used to react to the controlled panel "collapse" prop updating.
|
|
165
|
+
* This will force an update to be applied and skip calling the user's `onCollapseChanged`
|
|
166
|
+
*/
|
|
167
|
+
controlled?: boolean;
|
|
168
|
+
}
|
|
169
|
+
interface CollapsePanelEvent extends ControlledCollapseToggle {
|
|
170
|
+
/** Collapse a panel */
|
|
171
|
+
type: "collapsePanel";
|
|
172
|
+
/** The panel to collapse */
|
|
173
|
+
panelId: string;
|
|
174
|
+
}
|
|
175
|
+
interface ExpandPanelEvent extends ControlledCollapseToggle {
|
|
176
|
+
/** Expand a panel */
|
|
177
|
+
type: "expandPanel";
|
|
178
|
+
/** The panel to expand */
|
|
179
|
+
panelId: string;
|
|
180
|
+
}
|
|
181
|
+
interface SetPanelPixelSizeEvent {
|
|
182
|
+
/**
|
|
183
|
+
* This event is used by the imperative panel API.
|
|
184
|
+
* With this the user can set the panel's size to an explicit value.
|
|
185
|
+
* This is done by faking interaction with the handles so min/max will still
|
|
186
|
+
* be respected.
|
|
187
|
+
*/
|
|
188
|
+
type: "setPanelPixelSize";
|
|
189
|
+
/** The panel to apply the size to */
|
|
190
|
+
panelId: string;
|
|
191
|
+
/** The size to apply to the panel */
|
|
192
|
+
size: Unit;
|
|
193
|
+
}
|
|
194
|
+
export interface GroupMachineContextValue {
|
|
195
|
+
/** The items in the group */
|
|
196
|
+
items: Array<Item>;
|
|
197
|
+
/** The available space in the group */
|
|
198
|
+
size: Rect;
|
|
199
|
+
/** The orientation of the grid */
|
|
200
|
+
orientation: Orientation;
|
|
201
|
+
/** How much the drag has overshot the handle */
|
|
202
|
+
dragOvershoot: Big.Big;
|
|
203
|
+
/** An id to use for autosaving the layout */
|
|
204
|
+
autosaveId?: string;
|
|
205
|
+
groupId: string;
|
|
206
|
+
}
|
|
207
|
+
export type GroupMachineEvent = RegisterPanelEvent | RegisterDynamicPanelEvent | UnregisterPanelEvent | RegisterPanelHandleEvent | UnregisterPanelHandleEvent | DragHandleEvent | SetSizeEvent | SetOrientationEvent | DragHandleStartEvent | DragHandleEndEvent | CollapsePanelEvent | ExpandPanelEvent | SetPanelPixelSizeEvent | ApplyDeltaEvent | SetActualItemsSizeEvent;
|
|
208
|
+
export declare function prepareSnapshot(snapshot: Snapshot<unknown>): Snapshot<unknown>;
|
|
209
|
+
/** Determine if an item is a panel */
|
|
210
|
+
export declare function isPanelData(value: unknown): value is PanelData;
|
|
211
|
+
/** Determine if an item is a panel handle */
|
|
212
|
+
export declare function isPanelHandle(value: unknown): value is PanelHandleData;
|
|
213
|
+
interface InitializePanelOptions {
|
|
214
|
+
min?: Unit;
|
|
215
|
+
max?: Unit;
|
|
216
|
+
default?: Unit;
|
|
217
|
+
collapsible?: boolean;
|
|
218
|
+
collapsed?: boolean;
|
|
219
|
+
collapsedSize?: Unit;
|
|
220
|
+
onCollapseChange?: {
|
|
221
|
+
current: ((isCollapsed: boolean) => void) | null | undefined;
|
|
222
|
+
};
|
|
223
|
+
collapseAnimation?: PanelData["collapseAnimation"];
|
|
224
|
+
defaultCollapsed?: boolean;
|
|
225
|
+
id?: string;
|
|
226
|
+
}
|
|
227
|
+
type InitializePanelOptionsWithId = InitializePanelOptions & {
|
|
228
|
+
id: string;
|
|
229
|
+
};
|
|
230
|
+
export declare function initializePanel(item: InitializePanelOptionsWithId): PanelData;
|
|
231
|
+
export declare function initializePanel(item: InitializePanelOptions): Omit<PanelData, "id">;
|
|
232
|
+
export declare function initializePanelHandleData(item: InitializePanelHandleData): {
|
|
233
|
+
size: ParsedPixelUnit;
|
|
234
|
+
id: string;
|
|
235
|
+
order?: number | undefined;
|
|
236
|
+
type: "handle";
|
|
237
|
+
};
|
|
238
|
+
/** Parse a `Unit` string or `clamp` value */
|
|
239
|
+
export declare function parseUnit(unit: Unit | "1fr"): ParsedUnit;
|
|
240
|
+
/** Convert a `Unit` to a percentage of the group size */
|
|
241
|
+
export declare function getUnitPercentageValue(groupsSize: number, unit: ParsedUnit): number;
|
|
242
|
+
export declare function getGroupSize(context: GroupMachineContextValue): number;
|
|
243
|
+
/** Get the size of a panel in pixels */
|
|
244
|
+
export declare function getUnitPixelValue(context: GroupMachineContextValue, unit: ParsedUnit | "1fr"): Big.Big;
|
|
245
|
+
/** Get a panel with a particular ID. */
|
|
246
|
+
export declare function getPanelWithId(context: GroupMachineContextValue, panelId: string): PanelData;
|
|
247
|
+
/**
|
|
248
|
+
* Get the panel that's collapsible next to a resize handle.
|
|
249
|
+
* Will first check the left panel then the right.
|
|
250
|
+
*/
|
|
251
|
+
export declare function getCollapsiblePanelForHandleId(context: GroupMachineContextValue, handleId: string): PanelData;
|
|
252
|
+
/** Build the grid template from the item values. */
|
|
253
|
+
export declare function buildTemplate(context: GroupMachineContextValue): string;
|
|
254
|
+
/**
|
|
255
|
+
* This is the main meat of the layout logic.
|
|
256
|
+
* It's responsible for figuring out how to distribute the space
|
|
257
|
+
* amongst the panels.
|
|
258
|
+
*
|
|
259
|
+
* It's built around applying small deltas to panels relative to their
|
|
260
|
+
* the resize handles.
|
|
261
|
+
*
|
|
262
|
+
* As much as possible we try to rely on the browser to do the layout.
|
|
263
|
+
* During the initial layout we rely on CSS grid and a group might be
|
|
264
|
+
* defined like this:
|
|
265
|
+
*
|
|
266
|
+
* ```css
|
|
267
|
+
* grid-template-columns: minmax(100px, 1fr) 1px minmax(100px, 300px);
|
|
268
|
+
* ```
|
|
269
|
+
*
|
|
270
|
+
* Without any resizing this is nice and simple and the components don't do much.
|
|
271
|
+
*
|
|
272
|
+
* Once the user starts resizing the layout will be more complex.
|
|
273
|
+
*
|
|
274
|
+
* It's broken down into 3 phases:
|
|
275
|
+
*
|
|
276
|
+
* 1. `prepareItems` - The size of the group has been measure and we
|
|
277
|
+
* can convert all the panel sizes into pixels. Converting into pixels
|
|
278
|
+
* makes doing the math for the updates easier.
|
|
279
|
+
*
|
|
280
|
+
* ```css
|
|
281
|
+
* grid-template-columns: 500px 1px 300px;
|
|
282
|
+
* ```
|
|
283
|
+
*
|
|
284
|
+
* 2. `updateLayout` - This is where the actual updates are applied.
|
|
285
|
+
* This is where the user's drag interactions are applied. We also
|
|
286
|
+
* use this to collapse/expand panels by simulating a drag interaction.
|
|
287
|
+
*
|
|
288
|
+
* ```css
|
|
289
|
+
* grid-template-columns: 490px 1px 310px;
|
|
290
|
+
* ```
|
|
291
|
+
*
|
|
292
|
+
* 3. `commitLayout` - Once the updates have been applied we convert the
|
|
293
|
+
* updated sizes back into a format that allows for easy resizing without
|
|
294
|
+
* lots of updates.
|
|
295
|
+
*
|
|
296
|
+
* ```css
|
|
297
|
+
* grid-template-columns: minmax(100px, min(calc(0.06117 * (100% - 1px)), 100%)) 1px minmax(100px, min(calc(0.0387 * (100% - 1px)), 300px));
|
|
298
|
+
* ```
|
|
299
|
+
*
|
|
300
|
+
* When another update loop is triggered the above template will be converted back to pixels.
|
|
301
|
+
*/
|
|
302
|
+
/** Converts the items to pixels */
|
|
303
|
+
export declare function prepareItems(context: GroupMachineContextValue): Item[];
|
|
304
|
+
/** Converts the items to percentages */
|
|
305
|
+
export declare function commitLayout(context: GroupMachineContextValue): Item[];
|
|
306
|
+
export declare function dragHandlePayload({ delta, orientation, shiftKey, }: {
|
|
307
|
+
delta: number;
|
|
308
|
+
orientation: Orientation;
|
|
309
|
+
shiftKey?: boolean;
|
|
310
|
+
}): {
|
|
311
|
+
readonly type: "move";
|
|
312
|
+
readonly pointerType: "keyboard";
|
|
313
|
+
readonly shiftKey: boolean;
|
|
314
|
+
readonly ctrlKey: false;
|
|
315
|
+
readonly altKey: false;
|
|
316
|
+
readonly metaKey: false;
|
|
317
|
+
readonly deltaX: number;
|
|
318
|
+
readonly deltaY: number;
|
|
319
|
+
};
|
|
320
|
+
export declare const groupMachine: import("xstate").StateMachine<GroupMachineContextValue, RegisterPanelEvent | RegisterDynamicPanelEvent | UnregisterPanelEvent | RegisterPanelHandleEvent | UnregisterPanelHandleEvent | DragHandleStartEvent | DragHandleEvent | DragHandleEndEvent | SetSizeEvent | SetActualItemsSizeEvent | ApplyDeltaEvent | SetOrientationEvent | CollapsePanelEvent | ExpandPanelEvent | SetPanelPixelSizeEvent, Record<string, import("xstate").AnyActorRef>, import("xstate").ProvidedActor, import("xstate").ParameterizedObject, import("xstate").ParameterizedObject, string, import("xstate").StateValue, string, {
|
|
321
|
+
autosaveId?: string;
|
|
322
|
+
orientation?: Orientation;
|
|
323
|
+
groupId: string;
|
|
324
|
+
initialItems?: Item[];
|
|
325
|
+
}, import("xstate").NonReducibleUnknown, import("xstate").EventObject, import("xstate").MetaObject, any>;
|
|
326
|
+
export {};
|
|
327
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|