react-resizable-panels 1.0.7 → 1.0.9

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 (60) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +16 -15
  3. package/dist/declarations/src/Panel.d.ts +3 -3
  4. package/dist/declarations/src/PanelGroup.d.ts +2 -2
  5. package/dist/declarations/src/PanelResizeHandle.d.ts +2 -2
  6. package/dist/declarations/src/index.d.ts +1 -3
  7. package/dist/declarations/src/utils/dom/getPanelElement.d.ts +1 -1
  8. package/dist/declarations/src/utils/dom/getPanelElementsForGroup.d.ts +1 -1
  9. package/dist/declarations/src/utils/dom/getPanelGroupElement.d.ts +1 -1
  10. package/dist/declarations/src/utils/dom/getResizeHandleElement.d.ts +1 -1
  11. package/dist/declarations/src/utils/dom/getResizeHandleElementIndex.d.ts +1 -1
  12. package/dist/declarations/src/utils/dom/getResizeHandleElementsForGroup.d.ts +1 -1
  13. package/dist/declarations/src/utils/dom/getResizeHandlePanelIds.d.ts +1 -1
  14. package/dist/declarations/src/vendor/react.d.ts +2 -2
  15. package/dist/react-resizable-panels.browser.cjs.js +114 -84
  16. package/dist/react-resizable-panels.browser.cjs.mjs +0 -2
  17. package/dist/react-resizable-panels.browser.development.cjs.js +116 -85
  18. package/dist/react-resizable-panels.browser.development.cjs.mjs +0 -2
  19. package/dist/react-resizable-panels.browser.development.esm.js +117 -84
  20. package/dist/react-resizable-panels.browser.esm.js +115 -83
  21. package/dist/react-resizable-panels.cjs.js +114 -84
  22. package/dist/react-resizable-panels.cjs.mjs +0 -2
  23. package/dist/react-resizable-panels.development.cjs.js +116 -85
  24. package/dist/react-resizable-panels.development.cjs.mjs +0 -2
  25. package/dist/react-resizable-panels.development.esm.js +117 -84
  26. package/dist/react-resizable-panels.development.node.cjs.js +102 -83
  27. package/dist/react-resizable-panels.development.node.cjs.mjs +0 -2
  28. package/dist/react-resizable-panels.development.node.esm.js +103 -82
  29. package/dist/react-resizable-panels.esm.js +115 -83
  30. package/dist/react-resizable-panels.node.cjs.js +100 -82
  31. package/dist/react-resizable-panels.node.cjs.mjs +0 -2
  32. package/dist/react-resizable-panels.node.esm.js +101 -81
  33. package/package.json +1 -1
  34. package/src/Panel.test.tsx +137 -2
  35. package/src/Panel.ts +16 -2
  36. package/src/PanelGroup.test.tsx +3 -2
  37. package/src/PanelGroup.ts +95 -35
  38. package/src/PanelGroupContext.ts +9 -3
  39. package/src/PanelResizeHandle.test.tsx +3 -3
  40. package/src/PanelResizeHandle.ts +4 -2
  41. package/src/hooks/useWindowSplitterBehavior.ts +14 -5
  42. package/src/hooks/useWindowSplitterPanelGroupBehavior.ts +23 -7
  43. package/src/index.ts +0 -4
  44. package/src/utils/calculateDeltaPercentage.ts +4 -2
  45. package/src/utils/calculateDragOffsetPercentage.ts +4 -3
  46. package/src/utils/determinePivotIndices.ts +7 -2
  47. package/src/utils/dom/getPanelElement.ts +5 -2
  48. package/src/utils/dom/getPanelElementsForGroup.ts +5 -2
  49. package/src/utils/dom/getPanelGroupElement.ts +14 -2
  50. package/src/utils/dom/getResizeHandleElement.ts +5 -4
  51. package/src/utils/dom/getResizeHandleElementIndex.ts +3 -2
  52. package/src/utils/dom/getResizeHandleElementsForGroup.ts +3 -2
  53. package/src/utils/dom/getResizeHandlePanelIds.ts +4 -3
  54. package/src/utils/validatePanelConstraints.test.ts +45 -0
  55. package/src/utils/validatePanelConstraints.ts +5 -1
  56. package/src/vendor/react.ts +2 -0
  57. package/dist/declarations/src/utils/dom/calculateAvailablePanelSizeInPixels.d.ts +0 -1
  58. package/dist/declarations/src/utils/dom/getAvailableGroupSizePixels.d.ts +0 -1
  59. package/src/utils/dom/calculateAvailablePanelSizeInPixels.ts +0 -29
  60. package/src/utils/dom/getAvailableGroupSizePixels.ts +0 -29
@@ -69,6 +69,51 @@ describe("validatePanelConstraints", () => {
69
69
  });
70
70
  }, "default size should not be less than min size");
71
71
 
72
+ verifyExpectedWarnings(() => {
73
+ validatePanelConstraints({
74
+ panelConstraints: [
75
+ {
76
+ collapsedSize: 5,
77
+ collapsible: true,
78
+ defaultSize: 5,
79
+ minSize: 10,
80
+ },
81
+ ],
82
+ panelIndex: 0,
83
+ panelId: "test",
84
+ });
85
+ });
86
+
87
+ verifyExpectedWarnings(() => {
88
+ validatePanelConstraints({
89
+ panelConstraints: [
90
+ {
91
+ collapsedSize: 7,
92
+ collapsible: true,
93
+ defaultSize: 5,
94
+ minSize: 10,
95
+ },
96
+ ],
97
+ panelIndex: 0,
98
+ panelId: "test",
99
+ });
100
+ }, "default size should not be less than min size");
101
+
102
+ verifyExpectedWarnings(() => {
103
+ validatePanelConstraints({
104
+ panelConstraints: [
105
+ {
106
+ collapsedSize: 5,
107
+ collapsible: false,
108
+ defaultSize: 5,
109
+ minSize: 10,
110
+ },
111
+ ],
112
+ panelIndex: 0,
113
+ panelId: "test",
114
+ });
115
+ }, "default size should not be less than min size");
116
+
72
117
  verifyExpectedWarnings(() => {
73
118
  validatePanelConstraints({
74
119
  panelConstraints: [
@@ -19,6 +19,7 @@ export function validatePanelConstraints({
19
19
 
20
20
  const {
21
21
  collapsedSize = 0,
22
+ collapsible = false,
22
23
  defaultSize,
23
24
  maxSize = 100,
24
25
  minSize = 0,
@@ -33,7 +34,10 @@ export function validatePanelConstraints({
33
34
  if (defaultSize != null) {
34
35
  if (defaultSize < 0) {
35
36
  warnings.push("default size should not be less than 0");
36
- } else if (defaultSize < minSize) {
37
+ } else if (
38
+ defaultSize < minSize &&
39
+ (!collapsible || defaultSize !== collapsedSize)
40
+ ) {
37
41
  warnings.push("default size should not be less than min size");
38
42
  }
39
43
 
@@ -15,6 +15,7 @@ import type {
15
15
  HTMLAttributes,
16
16
  MouseEvent,
17
17
  PropsWithChildren,
18
+ ReactElement,
18
19
  ReactNode,
19
20
  RefObject,
20
21
  TouchEvent,
@@ -61,6 +62,7 @@ export type {
61
62
  HTMLAttributes,
62
63
  MouseEvent,
63
64
  PropsWithChildren,
65
+ ReactElement,
64
66
  ReactNode,
65
67
  RefObject,
66
68
  TouchEvent,
@@ -1 +0,0 @@
1
- export declare function calculateAvailablePanelSizeInPixels(groupId: string): number;
@@ -1 +0,0 @@
1
- export declare function getAvailableGroupSizePixels(groupId: string): number;
@@ -1,29 +0,0 @@
1
- import { getPanelGroupElement } from "./getPanelGroupElement";
2
- import { getResizeHandleElementsForGroup } from "./getResizeHandleElementsForGroup";
3
-
4
- export function calculateAvailablePanelSizeInPixels(groupId: string): number {
5
- const panelGroupElement = getPanelGroupElement(groupId);
6
- if (panelGroupElement == null) {
7
- return NaN;
8
- }
9
-
10
- const direction = panelGroupElement.getAttribute(
11
- "data-panel-group-direction"
12
- );
13
- const resizeHandles = getResizeHandleElementsForGroup(groupId);
14
- if (direction === "horizontal") {
15
- return (
16
- panelGroupElement.offsetWidth -
17
- resizeHandles.reduce((accumulated, handle) => {
18
- return accumulated + handle.offsetWidth;
19
- }, 0)
20
- );
21
- } else {
22
- return (
23
- panelGroupElement.offsetHeight -
24
- resizeHandles.reduce((accumulated, handle) => {
25
- return accumulated + handle.offsetHeight;
26
- }, 0)
27
- );
28
- }
29
- }
@@ -1,29 +0,0 @@
1
- import { getPanelGroupElement } from "./getPanelGroupElement";
2
- import { getResizeHandleElementsForGroup } from "./getResizeHandleElementsForGroup";
3
-
4
- export function getAvailableGroupSizePixels(groupId: string): number {
5
- const panelGroupElement = getPanelGroupElement(groupId);
6
- if (panelGroupElement == null) {
7
- return NaN;
8
- }
9
-
10
- const direction = panelGroupElement.getAttribute(
11
- "data-panel-group-direction"
12
- );
13
- const resizeHandles = getResizeHandleElementsForGroup(groupId);
14
- if (direction === "horizontal") {
15
- return (
16
- panelGroupElement.offsetWidth -
17
- resizeHandles.reduce((accumulated, handle) => {
18
- return accumulated + handle.offsetWidth;
19
- }, 0)
20
- );
21
- } else {
22
- return (
23
- panelGroupElement.offsetHeight -
24
- resizeHandles.reduce((accumulated, handle) => {
25
- return accumulated + handle.offsetHeight;
26
- }, 0)
27
- );
28
- }
29
- }