react-panel-layout 0.6.1 → 0.7.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.
Files changed (115) hide show
  1. package/dist/FloatingWindow-Bw2djgpz.js +1542 -0
  2. package/dist/FloatingWindow-Bw2djgpz.js.map +1 -0
  3. package/dist/FloatingWindow-Cvyokf0m.cjs +2 -0
  4. package/dist/FloatingWindow-Cvyokf0m.cjs.map +1 -0
  5. package/dist/GridLayout-B4aCqSyd.js +947 -0
  6. package/dist/{GridLayout-UWNxXw77.js.map → GridLayout-B4aCqSyd.js.map} +1 -1
  7. package/dist/GridLayout-DNOClFzz.cjs +2 -0
  8. package/dist/{GridLayout-DKTg_N61.cjs.map → GridLayout-DNOClFzz.cjs.map} +1 -1
  9. package/dist/PanelSystem-B8Igvnb2.cjs +3 -0
  10. package/dist/PanelSystem-B8Igvnb2.cjs.map +1 -0
  11. package/dist/{PanelSystem-BqUzNtf2.js → PanelSystem-DDUSFjXD.js} +208 -247
  12. package/dist/PanelSystem-DDUSFjXD.js.map +1 -0
  13. package/dist/components/window/Drawer.d.ts +1 -0
  14. package/dist/components/window/DrawerRevealContext.d.ts +61 -0
  15. package/dist/components/window/drawerRevealAnimationUtils.d.ts +212 -0
  16. package/dist/components/window/drawerStyles.d.ts +5 -0
  17. package/dist/components/window/useDrawerSwipeTransform.d.ts +8 -2
  18. package/dist/components/window/useDrawerTransform.d.ts +68 -0
  19. package/dist/components/window/useRevealDrawerTransform.d.ts +56 -0
  20. package/dist/config.cjs +1 -1
  21. package/dist/config.cjs.map +1 -1
  22. package/dist/config.js +8 -7
  23. package/dist/config.js.map +1 -1
  24. package/dist/grid.cjs +1 -1
  25. package/dist/grid.js +2 -2
  26. package/dist/index.cjs +1 -1
  27. package/dist/index.js +4 -4
  28. package/dist/modules/drawer/drawerStateMachine.d.ts +168 -0
  29. package/dist/modules/drawer/revealDrawerConstants.d.ts +33 -0
  30. package/dist/modules/drawer/revealDrawerStateMachine.d.ts +146 -0
  31. package/dist/modules/drawer/strategies/index.d.ts +8 -0
  32. package/dist/modules/drawer/strategies/overlayStrategy.d.ts +12 -0
  33. package/dist/modules/drawer/strategies/revealStrategy.d.ts +12 -0
  34. package/dist/modules/drawer/strategies/types.d.ts +116 -0
  35. package/dist/panels.cjs +1 -1
  36. package/dist/panels.js +1 -1
  37. package/dist/stack.cjs +1 -1
  38. package/dist/stack.cjs.map +1 -1
  39. package/dist/stack.js +306 -347
  40. package/dist/stack.js.map +1 -1
  41. package/dist/types.d.ts +14 -0
  42. package/dist/useAnimationFrame-BZ6D2lMq.cjs +2 -0
  43. package/dist/useAnimationFrame-BZ6D2lMq.cjs.map +1 -0
  44. package/dist/useAnimationFrame-Bg4e-H8O.js +394 -0
  45. package/dist/useAnimationFrame-Bg4e-H8O.js.map +1 -0
  46. package/dist/window.cjs +1 -1
  47. package/dist/window.js +1 -1
  48. package/package.json +1 -1
  49. package/src/components/gesture/SwipeSafeZone.tsx +1 -0
  50. package/src/components/grid/GridLayout.tsx +110 -38
  51. package/src/components/window/Drawer.tsx +114 -10
  52. package/src/components/window/DrawerLayers.tsx +48 -15
  53. package/src/components/window/DrawerRevealContext.spec.ts +20 -0
  54. package/src/components/window/DrawerRevealContext.tsx +99 -0
  55. package/src/components/window/drawerRevealAnimationUtils.spec.ts +375 -0
  56. package/src/components/window/drawerRevealAnimationUtils.ts +415 -0
  57. package/src/components/window/drawerStyles.spec.ts +39 -0
  58. package/src/components/window/drawerStyles.ts +24 -0
  59. package/src/components/window/useDrawerSwipeTransform.ts +28 -90
  60. package/src/components/window/useDrawerTransform.ts +505 -0
  61. package/src/components/window/useRevealDrawerTransform.spec.ts +1936 -0
  62. package/src/components/window/useRevealDrawerTransform.ts +105 -0
  63. package/src/demo/components/FullscreenDemoPage.tsx +47 -0
  64. package/src/demo/fullscreenRoutes.tsx +32 -0
  65. package/src/demo/index.tsx +5 -0
  66. package/src/demo/pages/Dialog/components/CardExpandDemo.tsx +23 -8
  67. package/src/demo/pages/Drawer/components/DrawerBasics.module.css +6 -1
  68. package/src/demo/pages/Drawer/components/DrawerBasics.tsx +14 -4
  69. package/src/demo/pages/Drawer/components/DrawerReveal.module.css +157 -0
  70. package/src/demo/pages/Drawer/components/DrawerReveal.tsx +128 -0
  71. package/src/demo/pages/Drawer/reveal/index.tsx +17 -0
  72. package/src/demo/pages/Drawer/reveal-fullscreen/index.tsx +135 -0
  73. package/src/demo/pages/Drawer/reveal-fullscreen/styles.module.css +233 -0
  74. package/src/demo/pages/Stack/components/StackBasics.spec.tsx +56 -52
  75. package/src/demo/pages/Stack/components/StackTablet.spec.tsx +39 -49
  76. package/src/demo/routes.tsx +2 -0
  77. package/src/hooks/gesture/testing/createGestureSimulator.ts +1 -0
  78. package/src/hooks/gesture/useNativeGestureGuard.spec.ts +10 -2
  79. package/src/hooks/gesture/utils.ts +15 -4
  80. package/src/hooks/useAnimatedVisibility.spec.ts +3 -3
  81. package/src/hooks/useOperationContinuity.spec.ts +17 -10
  82. package/src/hooks/useOperationContinuity.ts +5 -5
  83. package/src/hooks/useSharedElementTransition.ts +28 -7
  84. package/src/modules/dialog/dialogAnimationUtils.spec.ts +0 -1
  85. package/src/modules/dialog/useDialogContainer.spec.ts +11 -3
  86. package/src/modules/dialog/useDialogSwipeInput.spec.ts +49 -28
  87. package/src/modules/dialog/useDialogSwipeInput.ts +37 -6
  88. package/src/modules/dialog/useDialogTransform.spec.ts +63 -30
  89. package/src/modules/drawer/drawerStateMachine.ts +500 -0
  90. package/src/modules/drawer/revealDrawerConstants.ts +38 -0
  91. package/src/modules/drawer/revealDrawerStateMachine.spec.ts +558 -0
  92. package/src/modules/drawer/revealDrawerStateMachine.ts +197 -0
  93. package/src/modules/drawer/strategies/index.ts +9 -0
  94. package/src/modules/drawer/strategies/overlayStrategy.ts +133 -0
  95. package/src/modules/drawer/strategies/revealStrategy.ts +111 -0
  96. package/src/modules/drawer/strategies/types.ts +160 -0
  97. package/src/modules/drawer/useDrawerSwipeInput.ts +7 -4
  98. package/src/modules/pivot/SwipePivotContent.spec.tsx +48 -37
  99. package/src/modules/pivot/usePivotSwipeInput.spec.ts +8 -8
  100. package/src/modules/stack/swipeTransitionContinuity.spec.tsx +1 -1
  101. package/src/types.ts +15 -0
  102. package/dist/FloatingWindow-CUXnEtrb.js +0 -827
  103. package/dist/FloatingWindow-CUXnEtrb.js.map +0 -1
  104. package/dist/FloatingWindow-DMwyK0eK.cjs +0 -2
  105. package/dist/FloatingWindow-DMwyK0eK.cjs.map +0 -1
  106. package/dist/GridLayout-DKTg_N61.cjs +0 -2
  107. package/dist/GridLayout-UWNxXw77.js +0 -926
  108. package/dist/PanelSystem-BqUzNtf2.js.map +0 -1
  109. package/dist/PanelSystem-D603LKKv.cjs +0 -3
  110. package/dist/PanelSystem-D603LKKv.cjs.map +0 -1
  111. package/dist/useNativeGestureGuard-C7TSqEkr.cjs +0 -2
  112. package/dist/useNativeGestureGuard-C7TSqEkr.cjs.map +0 -1
  113. package/dist/useNativeGestureGuard-CGYo6O0r.js +0 -347
  114. package/dist/useNativeGestureGuard-CGYo6O0r.js.map +0 -1
  115. package/src/components/window/useDrawerSwipeTransform.spec.ts +0 -234
@@ -1,234 +0,0 @@
1
- /**
2
- * @file Tests for useDrawerSwipeTransform hook.
3
- */
4
- import { renderHook } from "@testing-library/react";
5
- import * as React from "react";
6
- import { useDrawerSwipeTransform } from "./useDrawerSwipeTransform.js";
7
- import type { ContinuousOperationState } from "../../hooks/gesture/types.js";
8
-
9
- describe("useDrawerSwipeTransform", () => {
10
- const createDivRef = (width = 300, height = 500): React.RefObject<HTMLDivElement> => {
11
- const element = document.createElement("div");
12
- Object.defineProperty(element, "clientWidth", { value: width });
13
- Object.defineProperty(element, "clientHeight", { value: height });
14
- return { current: element };
15
- };
16
-
17
- const idleState: ContinuousOperationState = {
18
- phase: "idle",
19
- displacement: { x: 0, y: 0 },
20
- velocity: { x: 0, y: 0 },
21
- };
22
-
23
- const operatingState: ContinuousOperationState = {
24
- phase: "operating",
25
- displacement: { x: 50, y: 0 },
26
- velocity: { x: 1, y: 0 },
27
- };
28
-
29
- const endedState: ContinuousOperationState = {
30
- phase: "ended",
31
- displacement: { x: 0, y: 0 },
32
- velocity: { x: 0, y: 0 },
33
- };
34
-
35
- describe("when disabled", () => {
36
- it("does not apply transforms", () => {
37
- const drawerRef = createDivRef();
38
- const backdropRef = createDivRef();
39
-
40
- renderHook(() =>
41
- useDrawerSwipeTransform({
42
- drawerRef,
43
- backdropRef,
44
- placement: "left",
45
- swipeState: operatingState,
46
- displacement: 50,
47
- isOpening: true,
48
- isClosing: false,
49
- enabled: false,
50
- }),
51
- );
52
-
53
- expect(drawerRef.current?.style.transform).toBe("");
54
- });
55
- });
56
-
57
- describe("when closing", () => {
58
- it("applies translateX for left drawer", () => {
59
- const drawerRef = createDivRef();
60
- const backdropRef = createDivRef();
61
-
62
- renderHook(() =>
63
- useDrawerSwipeTransform({
64
- drawerRef,
65
- backdropRef,
66
- placement: "left",
67
- swipeState: operatingState,
68
- displacement: 50,
69
- isOpening: false,
70
- isClosing: true,
71
- enabled: true,
72
- }),
73
- );
74
-
75
- // Left drawer closes with negative translateX
76
- expect(drawerRef.current?.style.transform).toBe("translateX(-50px)");
77
- });
78
-
79
- it("applies translateX for right drawer", () => {
80
- const drawerRef = createDivRef();
81
- const backdropRef = createDivRef();
82
-
83
- renderHook(() =>
84
- useDrawerSwipeTransform({
85
- drawerRef,
86
- backdropRef,
87
- placement: "right",
88
- swipeState: operatingState,
89
- displacement: 50,
90
- isOpening: false,
91
- isClosing: true,
92
- enabled: true,
93
- }),
94
- );
95
-
96
- // Right drawer closes with positive translateX
97
- expect(drawerRef.current?.style.transform).toBe("translateX(50px)");
98
- });
99
-
100
- it("applies translateY for bottom drawer", () => {
101
- const drawerRef = createDivRef();
102
- const backdropRef = createDivRef();
103
-
104
- renderHook(() =>
105
- useDrawerSwipeTransform({
106
- drawerRef,
107
- backdropRef,
108
- placement: "bottom",
109
- swipeState: operatingState,
110
- displacement: 50,
111
- isOpening: false,
112
- isClosing: true,
113
- enabled: true,
114
- }),
115
- );
116
-
117
- // Bottom drawer closes with positive translateY
118
- expect(drawerRef.current?.style.transform).toBe("translateY(50px)");
119
- });
120
-
121
- it("updates backdrop opacity based on progress", () => {
122
- const drawerRef = createDivRef();
123
- const backdropRef = createDivRef();
124
-
125
- renderHook(() =>
126
- useDrawerSwipeTransform({
127
- drawerRef,
128
- backdropRef,
129
- placement: "left",
130
- swipeState: operatingState,
131
- displacement: 150, // 50% of 300px width
132
- isOpening: false,
133
- isClosing: true,
134
- enabled: true,
135
- }),
136
- );
137
-
138
- // 150px / 300px = 50% progress, so opacity = 1 - 0.5 = 0.5
139
- expect(backdropRef.current?.style.opacity).toBe("0.5");
140
- });
141
- });
142
-
143
- describe("when opening", () => {
144
- it("applies opening transform for left drawer", () => {
145
- const drawerRef = createDivRef();
146
- const backdropRef = createDivRef();
147
-
148
- renderHook(() =>
149
- useDrawerSwipeTransform({
150
- drawerRef,
151
- backdropRef,
152
- placement: "left",
153
- swipeState: operatingState,
154
- displacement: 100,
155
- isOpening: true,
156
- isClosing: false,
157
- enabled: true,
158
- }),
159
- );
160
-
161
- // Left drawer starts at -300px (width), opening 100px means -200px
162
- expect(drawerRef.current?.style.transform).toBe("translateX(-200px)");
163
- });
164
-
165
- it("updates backdrop opacity during opening", () => {
166
- const drawerRef = createDivRef();
167
- const backdropRef = createDivRef();
168
-
169
- renderHook(() =>
170
- useDrawerSwipeTransform({
171
- drawerRef,
172
- backdropRef,
173
- placement: "left",
174
- swipeState: operatingState,
175
- displacement: 150,
176
- isOpening: true,
177
- isClosing: false,
178
- enabled: true,
179
- }),
180
- );
181
-
182
- expect(backdropRef.current?.style.opacity).toBe("0.5");
183
- });
184
- });
185
-
186
- describe("reset on swipe end", () => {
187
- it("clears transform when swipe ends", () => {
188
- const drawerRef = createDivRef();
189
- const backdropRef = createDivRef();
190
-
191
- // First apply a transform
192
- drawerRef.current!.style.transform = "translateX(-50px)";
193
- backdropRef.current!.style.opacity = "0.5";
194
-
195
- renderHook(() =>
196
- useDrawerSwipeTransform({
197
- drawerRef,
198
- backdropRef,
199
- placement: "left",
200
- swipeState: endedState,
201
- displacement: 0,
202
- isOpening: false,
203
- isClosing: false,
204
- enabled: true,
205
- }),
206
- );
207
-
208
- expect(drawerRef.current?.style.transform).toBe("");
209
- expect(backdropRef.current?.style.opacity).toBe("");
210
- });
211
- });
212
-
213
- describe("idle state", () => {
214
- it("does not apply transforms in idle state", () => {
215
- const drawerRef = createDivRef();
216
- const backdropRef = createDivRef();
217
-
218
- renderHook(() =>
219
- useDrawerSwipeTransform({
220
- drawerRef,
221
- backdropRef,
222
- placement: "left",
223
- swipeState: idleState,
224
- displacement: 0,
225
- isOpening: false,
226
- isClosing: false,
227
- enabled: true,
228
- }),
229
- );
230
-
231
- expect(drawerRef.current?.style.transform).toBe("");
232
- });
233
- });
234
- });