react-resizable-panels 0.0.63 → 1.0.0-rc.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/.eslintrc.cjs +1 -0
- package/CHANGELOG.md +5 -0
- package/dist/declarations/src/Panel.d.ts +19 -34
- package/dist/declarations/src/PanelGroup.d.ts +9 -13
- package/dist/declarations/src/PanelResizeHandle.d.ts +5 -7
- package/dist/declarations/src/index.d.ts +2 -2
- package/dist/declarations/src/types.d.ts +0 -7
- package/dist/declarations/src/utils/assert.d.ts +1 -0
- package/dist/declarations/src/vendor/react.d.ts +2 -2
- package/dist/react-resizable-panels.browser.cjs.js +253 -518
- package/dist/react-resizable-panels.browser.cjs.mjs +2 -1
- package/dist/react-resizable-panels.browser.development.cjs.js +279 -574
- package/dist/react-resizable-panels.browser.development.cjs.mjs +2 -1
- package/dist/react-resizable-panels.browser.development.esm.js +279 -575
- package/dist/react-resizable-panels.browser.esm.js +253 -519
- package/dist/react-resizable-panels.cjs.d.ts +88 -1
- package/dist/react-resizable-panels.cjs.d.ts.map +1 -1
- package/dist/react-resizable-panels.cjs.js +1481 -1983
- package/dist/react-resizable-panels.cjs.js.map +1 -1
- package/dist/react-resizable-panels.cjs.mjs +2 -1
- package/dist/react-resizable-panels.development.cjs.js +281 -576
- package/dist/react-resizable-panels.development.cjs.mjs +2 -1
- package/dist/react-resizable-panels.development.esm.js +281 -577
- package/dist/react-resizable-panels.development.node.cjs.js +267 -502
- package/dist/react-resizable-panels.development.node.cjs.mjs +2 -1
- package/dist/react-resizable-panels.development.node.esm.js +267 -503
- package/dist/react-resizable-panels.esm.js +1476 -1959
- package/dist/react-resizable-panels.esm.js.map +1 -1
- package/dist/react-resizable-panels.node.cjs.js +239 -444
- package/dist/react-resizable-panels.node.cjs.mjs +2 -1
- package/dist/react-resizable-panels.node.esm.js +239 -445
- package/package.json +1 -1
- package/src/Panel.test.tsx +74 -73
- package/src/Panel.ts +44 -68
- package/src/PanelGroup.test.tsx +43 -42
- package/src/PanelGroup.ts +221 -411
- package/src/PanelGroupContext.ts +2 -3
- package/src/PanelResizeHandle.test.tsx +68 -0
- package/src/PanelResizeHandle.ts +31 -22
- package/src/hooks/useWindowSplitterBehavior.ts +2 -1
- package/src/hooks/useWindowSplitterPanelGroupBehavior.ts +22 -33
- package/src/index.ts +4 -3
- package/src/types.ts +0 -9
- package/src/utils/adjustLayoutByDelta.test.ts +206 -336
- package/src/utils/adjustLayoutByDelta.ts +59 -51
- package/src/utils/assert.ts +1 -1
- package/src/utils/calculateAriaValues.test.ts +6 -11
- package/src/utils/calculateAriaValues.ts +7 -29
- package/src/utils/calculateDeltaPercentage.ts +8 -15
- package/src/utils/calculateDragOffsetPercentage.ts +11 -5
- package/src/utils/calculateUnsafeDefaultLayout.test.ts +4 -9
- package/src/utils/calculateUnsafeDefaultLayout.ts +13 -18
- package/src/utils/callPanelCallbacks.ts +11 -46
- package/src/utils/getResizeEventCursorPosition.ts +2 -0
- package/src/utils/resizePanel.test.ts +6 -52
- package/src/utils/resizePanel.ts +24 -46
- package/src/utils/test-utils.ts +6 -7
- package/src/utils/validatePanelConstraints.test.ts +12 -65
- package/src/utils/validatePanelConstraints.ts +26 -67
- package/src/utils/validatePanelGroupLayout.test.ts +27 -142
- package/src/utils/validatePanelGroupLayout.ts +17 -13
- package/src/vendor/react.ts +2 -0
- package/src/utils/computePercentagePanelConstraints.test.ts +0 -98
- package/src/utils/computePercentagePanelConstraints.ts +0 -56
- package/src/utils/convertPercentageToPixels.test.ts +0 -9
- package/src/utils/convertPercentageToPixels.ts +0 -6
- package/src/utils/convertPixelConstraintsToPercentages.test.ts +0 -47
- package/src/utils/convertPixelConstraintsToPercentages.ts +0 -72
- package/src/utils/convertPixelsToPercentage.test.ts +0 -9
- package/src/utils/convertPixelsToPercentage.ts +0 -6
- package/src/utils/getPercentageSizeFromMixedSizes.test.ts +0 -47
- package/src/utils/getPercentageSizeFromMixedSizes.ts +0 -15
- package/src/utils/shouldMonitorPixelBasedConstraints.test.ts +0 -23
- package/src/utils/shouldMonitorPixelBasedConstraints.ts +0 -13
|
@@ -4,12 +4,11 @@ describe("resizePanel", () => {
|
|
|
4
4
|
it("should not collapse (or expand) until a panel size dips below the halfway point between min size and collapsed size", () => {
|
|
5
5
|
expect(
|
|
6
6
|
resizePanel({
|
|
7
|
-
groupSizePixels: 100,
|
|
8
7
|
panelConstraints: [
|
|
9
8
|
{
|
|
10
9
|
collapsible: true,
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
collapsedSize: 10,
|
|
11
|
+
minSize: 20,
|
|
13
12
|
},
|
|
14
13
|
],
|
|
15
14
|
panelIndex: 0,
|
|
@@ -19,12 +18,11 @@ describe("resizePanel", () => {
|
|
|
19
18
|
|
|
20
19
|
expect(
|
|
21
20
|
resizePanel({
|
|
22
|
-
groupSizePixels: 100,
|
|
23
21
|
panelConstraints: [
|
|
24
22
|
{
|
|
25
23
|
collapsible: true,
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
collapsedSize: 10,
|
|
25
|
+
minSize: 20,
|
|
28
26
|
},
|
|
29
27
|
],
|
|
30
28
|
panelIndex: 0,
|
|
@@ -34,11 +32,10 @@ describe("resizePanel", () => {
|
|
|
34
32
|
|
|
35
33
|
expect(
|
|
36
34
|
resizePanel({
|
|
37
|
-
groupSizePixels: 100,
|
|
38
35
|
panelConstraints: [
|
|
39
36
|
{
|
|
40
37
|
collapsible: true,
|
|
41
|
-
|
|
38
|
+
minSize: 20,
|
|
42
39
|
},
|
|
43
40
|
],
|
|
44
41
|
panelIndex: 0,
|
|
@@ -48,11 +45,10 @@ describe("resizePanel", () => {
|
|
|
48
45
|
|
|
49
46
|
expect(
|
|
50
47
|
resizePanel({
|
|
51
|
-
groupSizePixels: 100,
|
|
52
48
|
panelConstraints: [
|
|
53
49
|
{
|
|
54
50
|
collapsible: true,
|
|
55
|
-
|
|
51
|
+
minSize: 20,
|
|
56
52
|
},
|
|
57
53
|
],
|
|
58
54
|
panelIndex: 0,
|
|
@@ -60,46 +56,4 @@ describe("resizePanel", () => {
|
|
|
60
56
|
})
|
|
61
57
|
).toBe(0);
|
|
62
58
|
});
|
|
63
|
-
|
|
64
|
-
// Edge case test (issues/206)
|
|
65
|
-
it("should respect percentage panel constraints if group size is negative", () => {
|
|
66
|
-
jest.spyOn(console, "warn").mockImplementation(() => {});
|
|
67
|
-
|
|
68
|
-
expect(
|
|
69
|
-
resizePanel({
|
|
70
|
-
groupSizePixels: -100,
|
|
71
|
-
panelConstraints: [
|
|
72
|
-
{
|
|
73
|
-
minSizePercentage: 25,
|
|
74
|
-
maxSizePercentage: 75,
|
|
75
|
-
},
|
|
76
|
-
],
|
|
77
|
-
panelIndex: 0,
|
|
78
|
-
size: 50,
|
|
79
|
-
})
|
|
80
|
-
).toBe(50);
|
|
81
|
-
|
|
82
|
-
expect(console.warn).toHaveBeenCalledTimes(0);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
// Edge case test (issues/206)
|
|
86
|
-
it("should handle pixel panel constraints if group size is negative", () => {
|
|
87
|
-
jest.spyOn(console, "warn").mockImplementation(() => {});
|
|
88
|
-
|
|
89
|
-
expect(
|
|
90
|
-
resizePanel({
|
|
91
|
-
groupSizePixels: -100,
|
|
92
|
-
panelConstraints: [
|
|
93
|
-
{
|
|
94
|
-
minSizePixels: 25,
|
|
95
|
-
maxSizePixels: 75,
|
|
96
|
-
},
|
|
97
|
-
],
|
|
98
|
-
panelIndex: 0,
|
|
99
|
-
size: 50,
|
|
100
|
-
})
|
|
101
|
-
).toBe(0);
|
|
102
|
-
|
|
103
|
-
expect(console.warn).toHaveBeenCalledTimes(1);
|
|
104
|
-
});
|
|
105
59
|
});
|
package/src/utils/resizePanel.ts
CHANGED
|
@@ -1,66 +1,44 @@
|
|
|
1
1
|
import { PanelConstraints } from "../Panel";
|
|
2
|
-
import {
|
|
2
|
+
import { PRECISION } from "../constants";
|
|
3
|
+
import { assert } from "./assert";
|
|
3
4
|
import { fuzzyCompareNumbers } from "./numbers/fuzzyCompareNumbers";
|
|
4
5
|
|
|
5
6
|
// Panel size must be in percentages; pixel values should be pre-converted
|
|
6
7
|
export function resizePanel({
|
|
7
|
-
|
|
8
|
-
panelConstraints,
|
|
8
|
+
panelConstraints: panelConstraintsArray,
|
|
9
9
|
panelIndex,
|
|
10
10
|
size,
|
|
11
11
|
}: {
|
|
12
|
-
groupSizePixels: number;
|
|
13
12
|
panelConstraints: PanelConstraints[];
|
|
14
13
|
panelIndex: number;
|
|
15
14
|
size: number;
|
|
16
15
|
}) {
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return 0;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
let { collapsible } = panelConstraints[panelIndex]!;
|
|
37
|
-
|
|
38
|
-
const { collapsedSizePercentage, maxSizePercentage, minSizePercentage } =
|
|
39
|
-
computePercentagePanelConstraints(
|
|
40
|
-
panelConstraints,
|
|
41
|
-
panelIndex,
|
|
42
|
-
groupSizePixels
|
|
43
|
-
);
|
|
44
|
-
|
|
45
|
-
if (minSizePercentage != null) {
|
|
46
|
-
if (fuzzyCompareNumbers(size, minSizePercentage) < 0) {
|
|
47
|
-
if (collapsible) {
|
|
48
|
-
// Collapsible panels should snap closed or open only once they cross the halfway point between collapsed and min size.
|
|
49
|
-
const halfwayPoint = (collapsedSizePercentage + minSizePercentage) / 2;
|
|
50
|
-
if (fuzzyCompareNumbers(size, halfwayPoint) < 0) {
|
|
51
|
-
size = collapsedSizePercentage;
|
|
52
|
-
} else {
|
|
53
|
-
size = minSizePercentage;
|
|
54
|
-
}
|
|
16
|
+
const panelConstraints = panelConstraintsArray[panelIndex];
|
|
17
|
+
assert(panelConstraints != null);
|
|
18
|
+
|
|
19
|
+
let {
|
|
20
|
+
collapsedSize = 0,
|
|
21
|
+
collapsible,
|
|
22
|
+
maxSize = 100,
|
|
23
|
+
minSize = 0,
|
|
24
|
+
} = panelConstraints;
|
|
25
|
+
|
|
26
|
+
if (fuzzyCompareNumbers(size, minSize) < 0) {
|
|
27
|
+
if (collapsible) {
|
|
28
|
+
// Collapsible panels should snap closed or open only once they cross the halfway point between collapsed and min size.
|
|
29
|
+
const halfwayPoint = (collapsedSize + minSize) / 2;
|
|
30
|
+
if (fuzzyCompareNumbers(size, halfwayPoint) < 0) {
|
|
31
|
+
size = collapsedSize;
|
|
55
32
|
} else {
|
|
56
|
-
size =
|
|
33
|
+
size = minSize;
|
|
57
34
|
}
|
|
35
|
+
} else {
|
|
36
|
+
size = minSize;
|
|
58
37
|
}
|
|
59
38
|
}
|
|
60
39
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
40
|
+
size = Math.min(maxSize, size);
|
|
41
|
+
size = parseFloat(size.toFixed(PRECISION));
|
|
64
42
|
|
|
65
43
|
return size;
|
|
66
44
|
}
|
package/src/utils/test-utils.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { assert } from "./assert";
|
|
2
2
|
|
|
3
3
|
const util = require("util");
|
|
4
4
|
|
|
@@ -11,6 +11,8 @@ export function expectToBeCloseToArray(
|
|
|
11
11
|
try {
|
|
12
12
|
actualNumbers.forEach((actualNumber, index) => {
|
|
13
13
|
const expectedNumber = expectedNumbers[index];
|
|
14
|
+
assert(expectedNumber != null);
|
|
15
|
+
|
|
14
16
|
expect(actualNumber).toBeCloseTo(expectedNumber, 1);
|
|
15
17
|
});
|
|
16
18
|
} catch (error) {
|
|
@@ -74,13 +76,10 @@ export function mockPanelGroupOffsetWidthAndHeight(
|
|
|
74
76
|
}
|
|
75
77
|
|
|
76
78
|
export function verifyExpandedPanelGroupLayout(
|
|
77
|
-
actualLayout:
|
|
78
|
-
|
|
79
|
+
actualLayout: number[],
|
|
80
|
+
expectedLayout: number[]
|
|
79
81
|
) {
|
|
80
|
-
expect(actualLayout).
|
|
81
|
-
expect(actualLayout.map(({ sizePercentage }) => sizePercentage)).toEqual(
|
|
82
|
-
expectedPercentages
|
|
83
|
-
);
|
|
82
|
+
expect(actualLayout).toEqual(expectedLayout);
|
|
84
83
|
}
|
|
85
84
|
|
|
86
85
|
export function verifyExpectedWarnings(
|
|
@@ -5,7 +5,6 @@ describe("validatePanelConstraints", () => {
|
|
|
5
5
|
it("should not warn if there are no validation errors", () => {
|
|
6
6
|
verifyExpectedWarnings(() => {
|
|
7
7
|
validatePanelConstraints({
|
|
8
|
-
groupSizePixels: 100_000,
|
|
9
8
|
panelConstraints: [{}],
|
|
10
9
|
panelIndex: 0,
|
|
11
10
|
panelId: "test",
|
|
@@ -13,60 +12,13 @@ describe("validatePanelConstraints", () => {
|
|
|
13
12
|
});
|
|
14
13
|
});
|
|
15
14
|
|
|
16
|
-
it("should warn about conflicting percentages and pixels", () => {
|
|
17
|
-
verifyExpectedWarnings(() => {
|
|
18
|
-
validatePanelConstraints({
|
|
19
|
-
groupSizePixels: 100_000,
|
|
20
|
-
panelConstraints: [
|
|
21
|
-
{
|
|
22
|
-
collapsedSizePercentage: 5,
|
|
23
|
-
collapsedSizePixels: 10,
|
|
24
|
-
},
|
|
25
|
-
],
|
|
26
|
-
panelIndex: 0,
|
|
27
|
-
panelId: "test",
|
|
28
|
-
});
|
|
29
|
-
}, "should not specify both percentage and pixel units for: collapsed size");
|
|
30
|
-
|
|
31
|
-
verifyExpectedWarnings(() => {
|
|
32
|
-
validatePanelConstraints({
|
|
33
|
-
groupSizePixels: 100_000,
|
|
34
|
-
panelConstraints: [
|
|
35
|
-
{
|
|
36
|
-
maxSizePercentage: 5,
|
|
37
|
-
maxSizePixels: 10,
|
|
38
|
-
minSizePercentage: 5,
|
|
39
|
-
minSizePixels: 10,
|
|
40
|
-
},
|
|
41
|
-
],
|
|
42
|
-
panelIndex: 0,
|
|
43
|
-
panelId: "test",
|
|
44
|
-
});
|
|
45
|
-
}, "should not specify both percentage and pixel units for: max size, min size");
|
|
46
|
-
|
|
47
|
-
verifyExpectedWarnings(() => {
|
|
48
|
-
validatePanelConstraints({
|
|
49
|
-
groupSizePixels: 100_000,
|
|
50
|
-
panelConstraints: [
|
|
51
|
-
{
|
|
52
|
-
defaultSizePercentage: 5,
|
|
53
|
-
defaultSizePixels: 10,
|
|
54
|
-
},
|
|
55
|
-
],
|
|
56
|
-
panelIndex: 0,
|
|
57
|
-
panelId: "test",
|
|
58
|
-
});
|
|
59
|
-
}, "should not specify both percentage and pixel units for: default size");
|
|
60
|
-
});
|
|
61
|
-
|
|
62
15
|
it("should warn about conflicting min/max sizes", () => {
|
|
63
16
|
verifyExpectedWarnings(() => {
|
|
64
17
|
validatePanelConstraints({
|
|
65
|
-
groupSizePixels: 100_000,
|
|
66
18
|
panelConstraints: [
|
|
67
19
|
{
|
|
68
|
-
|
|
69
|
-
|
|
20
|
+
maxSize: 5,
|
|
21
|
+
minSize: 10,
|
|
70
22
|
},
|
|
71
23
|
],
|
|
72
24
|
panelIndex: 0,
|
|
@@ -78,11 +30,10 @@ describe("validatePanelConstraints", () => {
|
|
|
78
30
|
it("should warn about conflicting collapsed and min sizes", () => {
|
|
79
31
|
verifyExpectedWarnings(() => {
|
|
80
32
|
validatePanelConstraints({
|
|
81
|
-
groupSizePixels: 100_000,
|
|
82
33
|
panelConstraints: [
|
|
83
34
|
{
|
|
84
|
-
|
|
85
|
-
|
|
35
|
+
collapsedSize: 15,
|
|
36
|
+
minSize: 10,
|
|
86
37
|
},
|
|
87
38
|
],
|
|
88
39
|
panelIndex: 0,
|
|
@@ -94,11 +45,10 @@ describe("validatePanelConstraints", () => {
|
|
|
94
45
|
it("should warn about conflicting default and min/max sizes", () => {
|
|
95
46
|
verifyExpectedWarnings(() => {
|
|
96
47
|
validatePanelConstraints({
|
|
97
|
-
groupSizePixels: 100_000,
|
|
98
48
|
panelConstraints: [
|
|
99
49
|
{
|
|
100
|
-
|
|
101
|
-
|
|
50
|
+
defaultSize: -1,
|
|
51
|
+
minSize: 10,
|
|
102
52
|
},
|
|
103
53
|
],
|
|
104
54
|
panelIndex: 0,
|
|
@@ -108,11 +58,10 @@ describe("validatePanelConstraints", () => {
|
|
|
108
58
|
|
|
109
59
|
verifyExpectedWarnings(() => {
|
|
110
60
|
validatePanelConstraints({
|
|
111
|
-
groupSizePixels: 100_000,
|
|
112
61
|
panelConstraints: [
|
|
113
62
|
{
|
|
114
|
-
|
|
115
|
-
|
|
63
|
+
defaultSize: 5,
|
|
64
|
+
minSize: 10,
|
|
116
65
|
},
|
|
117
66
|
],
|
|
118
67
|
panelIndex: 0,
|
|
@@ -122,11 +71,10 @@ describe("validatePanelConstraints", () => {
|
|
|
122
71
|
|
|
123
72
|
verifyExpectedWarnings(() => {
|
|
124
73
|
validatePanelConstraints({
|
|
125
|
-
groupSizePixels: 100_000,
|
|
126
74
|
panelConstraints: [
|
|
127
75
|
{
|
|
128
|
-
|
|
129
|
-
|
|
76
|
+
defaultSize: 101,
|
|
77
|
+
maxSize: 10,
|
|
130
78
|
},
|
|
131
79
|
],
|
|
132
80
|
panelIndex: 0,
|
|
@@ -136,11 +84,10 @@ describe("validatePanelConstraints", () => {
|
|
|
136
84
|
|
|
137
85
|
verifyExpectedWarnings(() => {
|
|
138
86
|
validatePanelConstraints({
|
|
139
|
-
groupSizePixels: 100_000,
|
|
140
87
|
panelConstraints: [
|
|
141
88
|
{
|
|
142
|
-
|
|
143
|
-
|
|
89
|
+
defaultSize: 15,
|
|
90
|
+
maxSize: 10,
|
|
144
91
|
},
|
|
145
92
|
],
|
|
146
93
|
panelIndex: 0,
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { isDevelopment } from "#is-development";
|
|
2
2
|
import { PanelConstraints } from "../Panel";
|
|
3
|
-
import {
|
|
3
|
+
import { assert } from "./assert";
|
|
4
4
|
|
|
5
5
|
export function validatePanelConstraints({
|
|
6
|
-
|
|
7
|
-
panelConstraints,
|
|
6
|
+
panelConstraints: panelConstraintsArray,
|
|
8
7
|
panelId,
|
|
9
8
|
panelIndex,
|
|
10
9
|
}: {
|
|
11
|
-
groupSizePixels: number;
|
|
12
10
|
panelConstraints: PanelConstraints[];
|
|
13
11
|
panelId: string | undefined;
|
|
14
12
|
panelIndex: number;
|
|
@@ -16,77 +14,38 @@ export function validatePanelConstraints({
|
|
|
16
14
|
if (isDevelopment) {
|
|
17
15
|
const warnings = [];
|
|
18
16
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
collapsedSizePercentage,
|
|
22
|
-
collapsedSizePixels,
|
|
23
|
-
defaultSizePercentage,
|
|
24
|
-
defaultSizePixels,
|
|
25
|
-
maxSizePercentage,
|
|
26
|
-
maxSizePixels,
|
|
27
|
-
minSizePercentage,
|
|
28
|
-
minSizePixels,
|
|
29
|
-
} = panelConstraints[panelIndex]!;
|
|
17
|
+
const panelConstraints = panelConstraintsArray[panelIndex];
|
|
18
|
+
assert(panelConstraints);
|
|
30
19
|
|
|
31
|
-
|
|
20
|
+
const {
|
|
21
|
+
collapsedSize = 0,
|
|
22
|
+
defaultSize,
|
|
23
|
+
maxSize = 100,
|
|
24
|
+
minSize = 0,
|
|
25
|
+
} = panelConstraints;
|
|
32
26
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (defaultSizePercentage != null && defaultSizePixels != null) {
|
|
37
|
-
conflictingUnits.push("default size");
|
|
38
|
-
}
|
|
39
|
-
if (maxSizePercentage != null && maxSizePixels != null) {
|
|
40
|
-
conflictingUnits.push("max size");
|
|
41
|
-
}
|
|
42
|
-
if (minSizePercentage != null && minSizePixels != null) {
|
|
43
|
-
conflictingUnits.push("min size");
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (conflictingUnits.length > 0) {
|
|
47
|
-
warnings.push(
|
|
48
|
-
`should not specify both percentage and pixel units for: ${conflictingUnits.join(
|
|
49
|
-
", "
|
|
50
|
-
)}`
|
|
51
|
-
);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
{
|
|
56
|
-
const {
|
|
57
|
-
collapsedSizePercentage,
|
|
58
|
-
defaultSizePercentage,
|
|
59
|
-
maxSizePercentage,
|
|
60
|
-
minSizePercentage,
|
|
61
|
-
} = computePercentagePanelConstraints(
|
|
62
|
-
panelConstraints,
|
|
63
|
-
panelIndex,
|
|
64
|
-
groupSizePixels
|
|
27
|
+
if (minSize > maxSize) {
|
|
28
|
+
warnings.push(
|
|
29
|
+
`min size (${minSize}%) should not be greater than max size (${maxSize}%)`
|
|
65
30
|
);
|
|
31
|
+
}
|
|
66
32
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
33
|
+
if (defaultSize != null) {
|
|
34
|
+
if (defaultSize < 0) {
|
|
35
|
+
warnings.push("default size should not be less than 0");
|
|
36
|
+
} else if (defaultSize < minSize) {
|
|
37
|
+
warnings.push("default size should not be less than min size");
|
|
71
38
|
}
|
|
72
39
|
|
|
73
|
-
if (
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
warnings.push("default size should not be less than min size");
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
if (defaultSizePercentage > 100) {
|
|
81
|
-
warnings.push("default size should not be greater than 100");
|
|
82
|
-
} else if (defaultSizePercentage > maxSizePercentage) {
|
|
83
|
-
warnings.push("default size should not be greater than max size");
|
|
84
|
-
}
|
|
40
|
+
if (defaultSize > 100) {
|
|
41
|
+
warnings.push("default size should not be greater than 100");
|
|
42
|
+
} else if (defaultSize > maxSize) {
|
|
43
|
+
warnings.push("default size should not be greater than max size");
|
|
85
44
|
}
|
|
45
|
+
}
|
|
86
46
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
47
|
+
if (collapsedSize > minSize) {
|
|
48
|
+
warnings.push("collapsed size should not be greater than min size");
|
|
90
49
|
}
|
|
91
50
|
|
|
92
51
|
if (warnings.length > 0) {
|