@window-splitter/state 1.1.1--canary.9d2f98a.0 → 1.1.2

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/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@window-splitter/state",
4
4
  "sideEffects": false,
5
- "version": "1.1.1--canary.9d2f98a.0",
5
+ "version": "1.1.2",
6
6
  "description": "A state machine for a WAI-ARIA compliant window splitter",
7
7
  "homepage": "https://react-window-splitter-six.vercel.app",
8
8
  "repository": {
@@ -29,7 +29,7 @@
29
29
  },
30
30
  "license": "MIT",
31
31
  "devDependencies": {
32
- "@internal/eslint-config": "1.1.1--canary.9d2f98a.0",
32
+ "@internal/eslint-config": "1.1.2",
33
33
  "@testing-library/react": "^16.0.0",
34
34
  "@types/big.js": "^6.2.2",
35
35
  "@vitest/browser": "catalog:",
@@ -77,5 +77,5 @@
77
77
  "window"
78
78
  ],
79
79
  "types": "./dist/commonjs/index.d.ts",
80
- "gitHead": "9d2f98a3d6226018c598018cea829d6412b60cd0"
80
+ "gitHead": "d9d2440aa94cb486fa4334f69a7e4717926f3192"
81
81
  }
package/src/index.ts CHANGED
@@ -290,6 +290,15 @@ interface ExpandPanelEvent extends ControlledCollapseToggle {
290
290
  resolve?: () => void;
291
291
  }
292
292
 
293
+ interface UpdateItemIndexEvent {
294
+ /** Update the index of a panel */
295
+ type: "updateItemIndex";
296
+ /** The panel to update */
297
+ itemId: string;
298
+ /** The new index of the panel */
299
+ index: number;
300
+ }
301
+
293
302
  interface SetPanelPixelSizeEvent {
294
303
  /**
295
304
  * This event is used by the imperative panel API.
@@ -354,7 +363,8 @@ export type GroupMachineEvent =
354
363
  | RebindPanelCallbacksEvent
355
364
  | UpdateConstraintsEvent
356
365
  | LockGroupEvent
357
- | UnlockGroupEvent;
366
+ | UnlockGroupEvent
367
+ | UpdateItemIndexEvent;
358
368
 
359
369
  type EventForType<T extends GroupMachineEvent["type"]> = Extract<
360
370
  GroupMachineEvent,
@@ -405,6 +415,10 @@ export function prepareSnapshot(snapshot: GroupMachineContextValue) {
405
415
  item.collapsedSize.value = new Big(item.collapsedSize.value);
406
416
  item.min.value = new Big(item.min.value);
407
417
 
418
+ if (item.default) {
419
+ item.default.value = new Big(item.default.value);
420
+ }
421
+
408
422
  if (item.max && item.max !== "1fr") {
409
423
  item.max.value = new Big(item.max.value);
410
424
  }
@@ -2038,6 +2052,13 @@ export function groupMachine(
2038
2052
  }
2039
2053
 
2040
2054
  switch (event.type) {
2055
+ case "updateItemIndex":
2056
+ context.items = sortWithOrder(
2057
+ context.items.map((item) =>
2058
+ item.id === event.itemId ? { ...item, order: event.index } : item
2059
+ )
2060
+ );
2061
+ break;
2041
2062
  case "registerPanel":
2042
2063
  context.items = addDeDuplicatedItems(context.items, {
2043
2064
  type: "panel",
@@ -2075,11 +2096,20 @@ export function groupMachine(
2075
2096
  event.data.collapsed &&
2076
2097
  event.data.collapsedSize
2077
2098
  ) {
2078
- currentValue = event.data.collapsedSize;
2099
+ currentValue = {
2100
+ type: "pixel",
2101
+ value: getUnitPixelValue(context, event.data.collapsedSize),
2102
+ };
2079
2103
  } else if (event.data.default) {
2080
- currentValue = event.data.default;
2104
+ currentValue = {
2105
+ type: "pixel",
2106
+ value: getUnitPixelValue(context, event.data.default),
2107
+ };
2081
2108
  } else {
2082
- currentValue = event.data.min;
2109
+ currentValue = {
2110
+ type: "pixel",
2111
+ value: getUnitPixelValue(context, event.data.min),
2112
+ };
2083
2113
  }
2084
2114
 
2085
2115
  const newItems = addDeDuplicatedItems(context.items, {
package/src/utils.test.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { expect, test, describe } from "vitest";
1
+ import { expect, test, describe, assert } from "vitest";
2
2
 
3
3
  import {
4
4
  getUnitPercentageValue,
@@ -6,6 +6,8 @@ import {
6
6
  initializePanel,
7
7
  getCursor,
8
8
  initializePanelHandleData,
9
+ prepareSnapshot,
10
+ type Item,
9
11
  } from "./index.js";
10
12
  import Big from "big.js";
11
13
  import { createActor } from "./test-utils.js";
@@ -190,3 +192,28 @@ describe("initializePanelHandleData", () => {
190
192
  `);
191
193
  });
192
194
  });
195
+
196
+ describe('prepareSnapshot', () => {
197
+ test('converts sizes to Big', () => {
198
+ const item: Item = initializePanel({ id: 'panel-1', min: '100px', max: '300px', default: '200px' });
199
+
200
+ prepareSnapshot({
201
+ size: { width: 500, height: 300 },
202
+ items: [item, initializePanel({ id: 'panel-2', min: '100px' })],
203
+ groupId: 'group-1',
204
+ orientation: 'horizontal',
205
+ dragOvershoot: new Big(0),
206
+ });
207
+
208
+ expect(item.currentValue.value).toBeInstanceOf(Big);
209
+ expect(item.collapsedSize.value).toBeInstanceOf(Big);
210
+
211
+ expect(item.min.value).toBeInstanceOf(Big);
212
+
213
+ assert(typeof item.max === 'object');
214
+ expect(item.max.value).toBeInstanceOf(Big);
215
+
216
+ assert(typeof item.default === 'object');
217
+ expect(item.default.value).toBeInstanceOf(Big);
218
+ });
219
+ });