@window-splitter/react 0.8.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 (81) hide show
  1. package/.storybook/main.ts +17 -0
  2. package/.storybook/preview.ts +14 -0
  3. package/.tshy/build.json +8 -0
  4. package/.tshy/commonjs.json +19 -0
  5. package/.tshy/esm.json +18 -0
  6. package/.turbo/turbo-build.log +5 -0
  7. package/.turbo/turbo-lint.log +5 -0
  8. package/CHANGELOG.md +606 -0
  9. package/README.md +53 -0
  10. package/dist/commonjs/ReactWindowSplitter.d.ts +19 -0
  11. package/dist/commonjs/ReactWindowSplitter.d.ts.map +1 -0
  12. package/dist/commonjs/ReactWindowSplitter.js +558 -0
  13. package/dist/commonjs/ReactWindowSplitter.js.map +1 -0
  14. package/dist/commonjs/ReactWindowSplitter.stories.d.ts +47 -0
  15. package/dist/commonjs/ReactWindowSplitter.stories.d.ts.map +1 -0
  16. package/dist/commonjs/ReactWindowSplitter.stories.js +330 -0
  17. package/dist/commonjs/ReactWindowSplitter.stories.js.map +1 -0
  18. package/dist/commonjs/ReactWindowSplitter.test.d.ts +2 -0
  19. package/dist/commonjs/ReactWindowSplitter.test.d.ts.map +1 -0
  20. package/dist/commonjs/ReactWindowSplitter.test.js +219 -0
  21. package/dist/commonjs/ReactWindowSplitter.test.js.map +1 -0
  22. package/dist/commonjs/bundle.size.d.ts +2 -0
  23. package/dist/commonjs/bundle.size.d.ts.map +1 -0
  24. package/dist/commonjs/bundle.size.js +29 -0
  25. package/dist/commonjs/bundle.size.js.map +1 -0
  26. package/dist/commonjs/index.d.ts +3 -0
  27. package/dist/commonjs/index.d.ts.map +1 -0
  28. package/dist/commonjs/index.js +18 -0
  29. package/dist/commonjs/index.js.map +1 -0
  30. package/dist/commonjs/package.json +3 -0
  31. package/dist/commonjs/useIndexedChildren.d.ts +8 -0
  32. package/dist/commonjs/useIndexedChildren.d.ts.map +1 -0
  33. package/dist/commonjs/useIndexedChildren.js +81 -0
  34. package/dist/commonjs/useIndexedChildren.js.map +1 -0
  35. package/dist/commonjs/useMove.d.ts +8 -0
  36. package/dist/commonjs/useMove.d.ts.map +1 -0
  37. package/dist/commonjs/useMove.js +19 -0
  38. package/dist/commonjs/useMove.js.map +1 -0
  39. package/dist/esm/ReactWindowSplitter.d.ts +19 -0
  40. package/dist/esm/ReactWindowSplitter.d.ts.map +1 -0
  41. package/dist/esm/ReactWindowSplitter.js +532 -0
  42. package/dist/esm/ReactWindowSplitter.js.map +1 -0
  43. package/dist/esm/ReactWindowSplitter.stories.d.ts +47 -0
  44. package/dist/esm/ReactWindowSplitter.stories.d.ts.map +1 -0
  45. package/dist/esm/ReactWindowSplitter.stories.js +286 -0
  46. package/dist/esm/ReactWindowSplitter.stories.js.map +1 -0
  47. package/dist/esm/ReactWindowSplitter.test.d.ts +2 -0
  48. package/dist/esm/ReactWindowSplitter.test.d.ts.map +1 -0
  49. package/dist/esm/ReactWindowSplitter.test.js +191 -0
  50. package/dist/esm/ReactWindowSplitter.test.js.map +1 -0
  51. package/dist/esm/bundle.size.d.ts +2 -0
  52. package/dist/esm/bundle.size.d.ts.map +1 -0
  53. package/dist/esm/bundle.size.js +4 -0
  54. package/dist/esm/bundle.size.js.map +1 -0
  55. package/dist/esm/index.d.ts +3 -0
  56. package/dist/esm/index.d.ts.map +1 -0
  57. package/dist/esm/index.js +2 -0
  58. package/dist/esm/index.js.map +1 -0
  59. package/dist/esm/package.json +3 -0
  60. package/dist/esm/useIndexedChildren.d.ts +8 -0
  61. package/dist/esm/useIndexedChildren.d.ts.map +1 -0
  62. package/dist/esm/useIndexedChildren.js +54 -0
  63. package/dist/esm/useIndexedChildren.js.map +1 -0
  64. package/dist/esm/useMove.d.ts +8 -0
  65. package/dist/esm/useMove.d.ts.map +1 -0
  66. package/dist/esm/useMove.js +16 -0
  67. package/dist/esm/useMove.js.map +1 -0
  68. package/eslint.config.js +3 -0
  69. package/package.json +108 -0
  70. package/rsbuild.config.js +25 -0
  71. package/src/ReactWindowSplitter.stories.tsx +705 -0
  72. package/src/ReactWindowSplitter.test.tsx +384 -0
  73. package/src/ReactWindowSplitter.tsx +884 -0
  74. package/src/__snapshots__/ReactWindowSplitter.test.tsx.snap +58 -0
  75. package/src/bundle.size.ts +4 -0
  76. package/src/index.ts +2 -0
  77. package/src/useIndexedChildren.tsx +79 -0
  78. package/src/useMove.ts +22 -0
  79. package/tsconfig.json +6 -0
  80. package/vitest.config.ts +20 -0
  81. package/vitest.setup.ts +7 -0
@@ -0,0 +1,47 @@
1
+ import React from "react";
2
+ import { PanelGroupHandle, PanelHandle } from "@window-splitter/interface";
3
+ declare const _default: {
4
+ title: string;
5
+ };
6
+ export default _default;
7
+ export declare function Simple({ handle }: {
8
+ handle?: React.Ref<PanelGroupHandle>;
9
+ }): React.JSX.Element;
10
+ export declare function Autosave({ handle }: {
11
+ handle?: React.Ref<PanelGroupHandle>;
12
+ }): React.JSX.Element;
13
+ export declare function AutosaveCollapsible({ handle, onCollapseChange, }: {
14
+ handle?: React.Ref<PanelGroupHandle>;
15
+ onCollapseChange?: (c: boolean) => void;
16
+ }): React.JSX.Element;
17
+ export declare function DynamicConstraints({ handle, }: {
18
+ handle?: React.Ref<PanelGroupHandle>;
19
+ }): React.JSX.Element;
20
+ export declare function SimpleMin(): React.JSX.Element;
21
+ export declare function SimpleMinMax(): React.JSX.Element;
22
+ export declare function SimpleConstraints(): React.JSX.Element;
23
+ export declare function HorizontalLayout(): React.JSX.Element;
24
+ export declare function VerticalLayout({ handle, }: {
25
+ handle?: React.Ref<PanelGroupHandle>;
26
+ }): React.JSX.Element;
27
+ export declare function VerticalLayout2({ handle, }: {
28
+ handle?: React.Ref<PanelGroupHandle>;
29
+ }): React.JSX.Element;
30
+ export declare function NestedGroups(): React.JSX.Element;
31
+ export declare function WithOverflow(): React.JSX.Element;
32
+ export declare function Collapsible({ leftPanelHandle, rightPanelHandle, handle, }: {
33
+ leftPanelHandle?: React.Ref<PanelHandle>;
34
+ handle?: React.Ref<PanelGroupHandle>;
35
+ rightPanelHandle?: React.Ref<PanelHandle>;
36
+ }): React.JSX.Element;
37
+ export declare function CustomCollapseAnimation(): React.JSX.Element;
38
+ export declare function ImperativePanel(): React.JSX.Element;
39
+ export declare function ConditionalPanel({ handle, }: {
40
+ handle?: React.Ref<PanelGroupHandle>;
41
+ }): React.JSX.Element;
42
+ export declare function ConditionalPanelComplex(): React.JSX.Element;
43
+ export declare function WithDefaultWidth(): React.JSX.Element;
44
+ export declare function StaticAtRest({ handle, }: {
45
+ handle?: React.Ref<PanelGroupHandle>;
46
+ }): React.JSX.Element;
47
+ //# sourceMappingURL=ReactWindowSplitter.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReactWindowSplitter.stories.d.ts","sourceRoot":"","sources":["../../src/ReactWindowSplitter.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAUvC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;;;;AAE3E,wBAEE;AA+CF,wBAAgB,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,qBAQ1E;AAED,wBAAgB,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,qBAQ5E;AAED,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,gBAA8B,GAC/B,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACrC,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACzC,qBAgBA;AAED,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,GACP,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC,qBA6BA;AAED,wBAAgB,SAAS,sBAgBxB;AAED,wBAAgB,YAAY,sBAgB3B;AAED,wBAAgB,iBAAiB,sBAYhC;AAED,wBAAgB,gBAAgB,sBAc/B;AAED,wBAAgB,cAAc,CAAC,EAC7B,MAAM,GACP,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC,qBAkBA;AAED,wBAAgB,eAAe,CAAC,EAC9B,MAAM,GACP,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC,qBAqBA;AAED,wBAAgB,YAAY,sBA6B3B;AAED,wBAAgB,YAAY,sBAoG3B;AAED,wBAAgB,WAAW,CAAC,EAC1B,eAAe,EACf,gBAAgB,EAChB,MAAM,GACP,EAAE;IACD,eAAe,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACrC,gBAAgB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CAC3C,qBAwCA;AAED,wBAAgB,uBAAuB,sBAuCtC;AAED,wBAAgB,eAAe,sBA2G9B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,GACP,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC,qBA8BA;AAED,wBAAgB,uBAAuB,sBA4CtC;AAED,wBAAgB,gBAAgB,sBAc/B;AAED,wBAAgB,YAAY,CAAC,EAC3B,MAAM,GACP,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC,qBAYA"}
@@ -0,0 +1,330 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.Simple = Simple;
27
+ exports.Autosave = Autosave;
28
+ exports.AutosaveCollapsible = AutosaveCollapsible;
29
+ exports.DynamicConstraints = DynamicConstraints;
30
+ exports.SimpleMin = SimpleMin;
31
+ exports.SimpleMinMax = SimpleMinMax;
32
+ exports.SimpleConstraints = SimpleConstraints;
33
+ exports.HorizontalLayout = HorizontalLayout;
34
+ exports.VerticalLayout = VerticalLayout;
35
+ exports.VerticalLayout2 = VerticalLayout2;
36
+ exports.NestedGroups = NestedGroups;
37
+ exports.WithOverflow = WithOverflow;
38
+ exports.Collapsible = Collapsible;
39
+ exports.CustomCollapseAnimation = CustomCollapseAnimation;
40
+ exports.ImperativePanel = ImperativePanel;
41
+ exports.ConditionalPanel = ConditionalPanel;
42
+ exports.ConditionalPanelComplex = ConditionalPanelComplex;
43
+ exports.WithDefaultWidth = WithDefaultWidth;
44
+ exports.StaticAtRest = StaticAtRest;
45
+ const react_1 = __importStar(require("react"));
46
+ const framer_motion_1 = require("framer-motion");
47
+ const ReactWindowSplitter_js_1 = require("./ReactWindowSplitter.js");
48
+ exports.default = {
49
+ title: "Components/React",
50
+ };
51
+ function StyledPanelGroup(props) {
52
+ return (react_1.default.createElement(ReactWindowSplitter_js_1.PanelGroup, { ...props, style: {
53
+ border: "1px solid rgba(0, 0, 0, 0.3)",
54
+ background: "rgba(0, 0, 0, 0.1)",
55
+ borderRadius: 12,
56
+ boxSizing: "border-box",
57
+ ...props.style,
58
+ } }));
59
+ }
60
+ function StyledPanel({ children, ...props }) {
61
+ return (react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { style: {
62
+ overflow: "hidden",
63
+ }, ...props },
64
+ react_1.default.createElement("div", { style: {
65
+ height: "100%",
66
+ width: "100%",
67
+ padding: 20,
68
+ display: "flex",
69
+ alignItems: "center",
70
+ justifyContent: "center",
71
+ overflow: "hidden",
72
+ boxSizing: "border-box",
73
+ } }, children)));
74
+ }
75
+ function StyledResizer(props) {
76
+ return react_1.default.createElement(ReactWindowSplitter_js_1.PanelResizer, { size: "10px", style: { background: "red" }, ...props });
77
+ }
78
+ function Simple({ handle }) {
79
+ return (react_1.default.createElement(StyledPanelGroup, { handle: handle, style: { height: 200 } },
80
+ react_1.default.createElement(StyledPanel, null, "Panel 1"),
81
+ react_1.default.createElement(StyledResizer, null),
82
+ react_1.default.createElement(StyledPanel, { min: "100px" }, "Panel 2")));
83
+ }
84
+ function Autosave({ handle }) {
85
+ return (react_1.default.createElement(StyledPanelGroup, { handle: handle, autosaveId: "autosave-example" },
86
+ react_1.default.createElement(StyledPanel, { id: "1" }, "Panel 1"),
87
+ react_1.default.createElement(StyledResizer, { id: "resizer" }),
88
+ react_1.default.createElement(StyledPanel, { id: "2" }, "Panel 2")));
89
+ }
90
+ function AutosaveCollapsible({ handle, onCollapseChange = console.log, }) {
91
+ return (react_1.default.createElement(StyledPanelGroup, { handle: handle, autosaveId: "autosave-example-2" },
92
+ react_1.default.createElement(StyledPanel, { id: "1", collapsible: true, collapsedSize: "100px", min: "140px", onCollapseChange: onCollapseChange }, "Collapsible"),
93
+ react_1.default.createElement(StyledResizer, { id: "resizer" }),
94
+ react_1.default.createElement(StyledPanel, { id: "2" }, "Panel 2")));
95
+ }
96
+ function DynamicConstraints({ handle, }) {
97
+ const [customOn, setCustomOn] = react_1.default.useState(false);
98
+ return (react_1.default.createElement(react_1.default.Fragment, null,
99
+ react_1.default.createElement(StyledPanelGroup, { handle: handle },
100
+ react_1.default.createElement(StyledPanel, { default: "100px", ...(customOn ? { min: "200px" } : { min: "100px" }) },
101
+ react_1.default.createElement("div", null, "Panel 1")),
102
+ react_1.default.createElement(StyledResizer, null),
103
+ react_1.default.createElement(StyledPanel, { min: "100px" },
104
+ react_1.default.createElement("div", null, "Panel 2")),
105
+ react_1.default.createElement(StyledResizer, null),
106
+ react_1.default.createElement(StyledPanel, { ...(customOn ? { min: "100px" } : { min: "400px" }), ...(customOn ? { max: "300px" } : { max: "700px" }) },
107
+ react_1.default.createElement("div", null, "Panel 3"))),
108
+ react_1.default.createElement("button", { type: "button", onClick: () => setCustomOn(!customOn) }, "Toggle Custom")));
109
+ }
110
+ function SimpleMin() {
111
+ return (react_1.default.createElement(StyledPanelGroup, null,
112
+ react_1.default.createElement(StyledPanel, { min: "100px" },
113
+ react_1.default.createElement("div", null, "Panel 1")),
114
+ react_1.default.createElement(StyledResizer, null),
115
+ react_1.default.createElement(StyledPanel, { min: "100px" },
116
+ react_1.default.createElement("div", null, "Panel 2")),
117
+ react_1.default.createElement(StyledResizer, null),
118
+ react_1.default.createElement(StyledPanel, { min: "100px" },
119
+ react_1.default.createElement("div", null, "Panel 3"))));
120
+ }
121
+ function SimpleMinMax() {
122
+ return (react_1.default.createElement(StyledPanelGroup, null,
123
+ react_1.default.createElement(StyledPanel, { min: "100px", max: "200px" },
124
+ react_1.default.createElement("div", null, "Panel 1")),
125
+ react_1.default.createElement(StyledResizer, null),
126
+ react_1.default.createElement(StyledPanel, { min: "100px" },
127
+ react_1.default.createElement("div", null, "Panel 2")),
128
+ react_1.default.createElement(StyledResizer, { size: "20px" }),
129
+ react_1.default.createElement(StyledPanel, { min: "100px" },
130
+ react_1.default.createElement("div", null, "Panel 3"))));
131
+ }
132
+ function SimpleConstraints() {
133
+ return (react_1.default.createElement(StyledPanelGroup, null,
134
+ react_1.default.createElement(StyledPanel, { min: "100px", max: "50%" },
135
+ react_1.default.createElement("div", null, "Panel 1")),
136
+ react_1.default.createElement(StyledResizer, null),
137
+ react_1.default.createElement(StyledPanel, null,
138
+ react_1.default.createElement("div", null, "Panel 2"))));
139
+ }
140
+ function HorizontalLayout() {
141
+ return (react_1.default.createElement(StyledPanelGroup, { orientation: "horizontal" },
142
+ react_1.default.createElement(StyledPanel, { default: "30%", min: "20%" }, "left"),
143
+ react_1.default.createElement(StyledResizer, null),
144
+ react_1.default.createElement(StyledPanel, { min: "20%" }, "middle"),
145
+ react_1.default.createElement(StyledResizer, null),
146
+ react_1.default.createElement(StyledPanel, { default: "30%", min: "20%" }, "right")));
147
+ }
148
+ function VerticalLayout({ handle, }) {
149
+ return (react_1.default.createElement(StyledPanelGroup, { handle: handle, orientation: "vertical", style: { height: 322 } },
150
+ react_1.default.createElement(StyledPanel, { default: "30%", min: "20%" }, "top"),
151
+ react_1.default.createElement(StyledResizer, null),
152
+ react_1.default.createElement(StyledPanel, { min: "20%" }, "middle"),
153
+ react_1.default.createElement(StyledResizer, null),
154
+ react_1.default.createElement(StyledPanel, { default: "30%", min: "20%" }, "bottom")));
155
+ }
156
+ function VerticalLayout2({ handle, }) {
157
+ return (react_1.default.createElement(StyledPanelGroup, { handle: handle, orientation: "vertical", style: { height: "calc(100vh - 100px)" } },
158
+ react_1.default.createElement(StyledPanel, { default: "200px", min: "200px" }, "top"),
159
+ react_1.default.createElement(StyledResizer, null),
160
+ react_1.default.createElement(StyledPanel, { min: "200px", collapsedSize: "60px", defaultCollapsed: true, collapsible: true }, "middle")));
161
+ }
162
+ function NestedGroups() {
163
+ return (react_1.default.createElement(ReactWindowSplitter_js_1.PanelGroup, { orientation: "horizontal", style: {
164
+ border: "1px solid rgba(0, 0, 0, 0.3)",
165
+ borderRadius: 12,
166
+ height: 400,
167
+ } },
168
+ react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { min: "10%" }, "left"),
169
+ react_1.default.createElement(StyledResizer, null),
170
+ react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { min: "10%" },
171
+ react_1.default.createElement(ReactWindowSplitter_js_1.PanelGroup, { orientation: "vertical" },
172
+ react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { min: "10%" }, "top"),
173
+ react_1.default.createElement(StyledResizer, null),
174
+ react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { min: "10%" },
175
+ react_1.default.createElement(ReactWindowSplitter_js_1.PanelGroup, { orientation: "horizontal" },
176
+ react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { min: "20%" }, "left"),
177
+ react_1.default.createElement(StyledResizer, null),
178
+ react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { min: "20%" }, "right"))))),
179
+ react_1.default.createElement(StyledResizer, null),
180
+ react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { min: "10%" }, "right")));
181
+ }
182
+ function WithOverflow() {
183
+ return (react_1.default.createElement(StyledPanelGroup, { style: { height: 400 } },
184
+ react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { min: "200px" },
185
+ react_1.default.createElement("div", { style: {
186
+ overflow: "auto",
187
+ padding: 40,
188
+ height: "100%",
189
+ boxSizing: "border-box",
190
+ } },
191
+ react_1.default.createElement("p", null, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl."),
192
+ react_1.default.createElement("p", null, "Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl."),
193
+ react_1.default.createElement("p", null, "Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl."),
194
+ react_1.default.createElement("p", null, "Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl."),
195
+ react_1.default.createElement("p", null, "Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl."))),
196
+ react_1.default.createElement(StyledResizer, null),
197
+ react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { min: "200px" },
198
+ react_1.default.createElement("div", { style: {
199
+ overflow: "auto",
200
+ padding: 40,
201
+ height: "100%",
202
+ boxSizing: "border-box",
203
+ } },
204
+ react_1.default.createElement("p", null, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl."),
205
+ react_1.default.createElement("p", null, "Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl."),
206
+ react_1.default.createElement("p", null, "Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl."),
207
+ react_1.default.createElement("p", null, "Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl."),
208
+ react_1.default.createElement("p", null, "Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.")))));
209
+ }
210
+ function Collapsible({ leftPanelHandle, rightPanelHandle, handle, }) {
211
+ const [collapsed, setCollapsed] = react_1.default.useState(true);
212
+ return (react_1.default.createElement(StyledPanelGroup, { handle: handle },
213
+ react_1.default.createElement(StyledPanel, { handle: leftPanelHandle, min: "100px", collapsible: true, collapsedSize: "60px", style: { border: "10px solid green", boxSizing: "border-box" }, onCollapseChange: (isCollapsed) => {
214
+ console.log("COLLAPSE PASSIVE", isCollapsed);
215
+ } },
216
+ react_1.default.createElement("div", null, "1")),
217
+ react_1.default.createElement(StyledResizer, null),
218
+ react_1.default.createElement(StyledPanel, { min: "100px" },
219
+ react_1.default.createElement("div", null, "2")),
220
+ react_1.default.createElement(StyledResizer, { id: "resizer-2" }),
221
+ react_1.default.createElement(StyledPanel, { handle: rightPanelHandle, min: "100px", collapsible: true, collapsedSize: "60px", defaultCollapsed: true, collapseAnimation: { easing: "bounce", duration: 1000 }, style: { border: "10px solid blue", boxSizing: "border-box" }, collapsed: collapsed, onCollapseChange: (isCollapsed) => {
222
+ console.log("COLLAPSE CONTROLLED", isCollapsed);
223
+ setCollapsed(isCollapsed);
224
+ } },
225
+ react_1.default.createElement("div", null, "3"))));
226
+ }
227
+ function CustomCollapseAnimation() {
228
+ const springFn = (0, react_1.useMemo)(() => {
229
+ return (0, framer_motion_1.spring)({
230
+ keyframes: [0, 1],
231
+ velocity: 1,
232
+ stiffness: 100,
233
+ damping: 10,
234
+ mass: 1.0,
235
+ });
236
+ }, []);
237
+ return (react_1.default.createElement(StyledPanelGroup, null,
238
+ react_1.default.createElement(StyledPanel, { min: "100px", collapsible: true, collapsedSize: "60px", style: { border: "10px solid green", boxSizing: "border-box" } }, "1"),
239
+ react_1.default.createElement(StyledResizer, null),
240
+ react_1.default.createElement(StyledPanel, { min: "100px" }, "2"),
241
+ react_1.default.createElement(StyledResizer, null),
242
+ react_1.default.createElement(StyledPanel, { style: { border: "10px solid blue", boxSizing: "border-box" }, min: "100px", collapsible: true, collapsedSize: "60px", defaultCollapsed: true, collapseAnimation: {
243
+ easing: (t) => springFn.next(t * 1000).value,
244
+ duration: 1000,
245
+ } }, "3")));
246
+ }
247
+ function ImperativePanel() {
248
+ const groupRef = react_1.default.useRef(null);
249
+ const panelRef = react_1.default.useRef(null);
250
+ return (react_1.default.createElement(react_1.default.Fragment, null,
251
+ react_1.default.createElement(StyledPanelGroup, { handle: groupRef },
252
+ react_1.default.createElement(StyledPanel, { handle: panelRef, min: "100px", collapsible: true, collapsedSize: "60px" }, "1"),
253
+ react_1.default.createElement(StyledResizer, null),
254
+ react_1.default.createElement(StyledPanel, { min: "100px" }, "2"),
255
+ react_1.default.createElement(StyledResizer, null),
256
+ react_1.default.createElement(StyledPanel, { min: "100px", collapsible: true, collapsedSize: "60px", defaultCollapsed: true }, "3")),
257
+ react_1.default.createElement("div", null,
258
+ react_1.default.createElement("button", { type: "button", onClick: () => alert(`Sizes: ${groupRef.current?.getPixelSizes()}`) }, "Get pixel sizes"),
259
+ react_1.default.createElement("button", { type: "button", onClick: () => alert(`Sizes: ${groupRef.current?.getPercentageSizes()}`) }, "Get percent sizes"),
260
+ react_1.default.createElement("button", { type: "button", onClick: () => groupRef.current?.setSizes([
261
+ "200px",
262
+ "10px",
263
+ "50%",
264
+ "10px",
265
+ "150px",
266
+ ]) }, "Override sizes")),
267
+ react_1.default.createElement("div", null,
268
+ react_1.default.createElement("button", { type: "button", onClick: () => panelRef.current?.collapse() }, "Collapse"),
269
+ react_1.default.createElement("button", { type: "button", onClick: () => alert(`Collapsed: ${panelRef.current?.isCollapsed()}`) }, "Is Collapsed?"),
270
+ react_1.default.createElement("button", { type: "button", onClick: () => panelRef.current?.expand() }, "Expand"),
271
+ react_1.default.createElement("button", { type: "button", onClick: () => alert(`Expanded: ${panelRef.current?.isExpanded()}`) }, "Is Expanded?"),
272
+ react_1.default.createElement("button", { type: "button", onClick: () => alert(`Id: ${panelRef.current?.getId()}`) }, "Get Id"),
273
+ react_1.default.createElement("button", { type: "button", onClick: () => alert(`Size: ${panelRef.current?.getPixelSize()}`) }, "Get Pixel Size"),
274
+ react_1.default.createElement("button", { type: "button", onClick: () => alert(`Percentage: ${panelRef.current?.getPercentageSize()}`) }, "Get Percentage Size"),
275
+ react_1.default.createElement("button", { type: "button", onClick: () => panelRef.current?.setSize("30px") }, "Set size to 100px"),
276
+ react_1.default.createElement("button", { type: "button", onClick: () => panelRef.current?.setSize("50%") }, "Set size to 50%"))));
277
+ }
278
+ function ConditionalPanel({ handle, }) {
279
+ const [isExpanded, setIsExpanded] = react_1.default.useState(false);
280
+ return (react_1.default.createElement(react_1.default.StrictMode, null,
281
+ react_1.default.createElement(StyledPanelGroup, { handle: handle },
282
+ react_1.default.createElement(StyledPanel, { id: "panel-1", min: "100px", collapsible: true, collapsedSize: "60px" },
283
+ react_1.default.createElement("div", null, "1")),
284
+ react_1.default.createElement(StyledResizer, { id: "handle-1" }),
285
+ react_1.default.createElement(StyledPanel, { id: "panel-2", min: "100px" },
286
+ react_1.default.createElement("div", null, "2")),
287
+ isExpanded && (react_1.default.createElement(react_1.default.Fragment, null,
288
+ react_1.default.createElement(StyledResizer, { id: "handle-2" }),
289
+ react_1.default.createElement(StyledPanel, { id: "panel-3", min: "100px" },
290
+ "3",
291
+ react_1.default.createElement("button", { type: "button", onClick: () => setIsExpanded(false) }, "Close"))))),
292
+ react_1.default.createElement("button", { type: "button", onClick: () => setIsExpanded(true) }, "Expand")));
293
+ }
294
+ function ConditionalPanelComplex() {
295
+ const [isExpanded, setIsExpanded] = react_1.default.useState(false);
296
+ return (react_1.default.createElement(react_1.default.StrictMode, null,
297
+ react_1.default.createElement(StyledPanelGroup, null,
298
+ react_1.default.createElement(StyledPanel, { id: "panel-1", min: "100px", collapsible: true, collapsedSize: "60px" },
299
+ react_1.default.createElement("div", null, "1")),
300
+ react_1.default.createElement(StyledResizer, { id: "handle-1" }),
301
+ react_1.default.createElement(StyledPanel, { id: "panel-2", min: "100px" },
302
+ react_1.default.createElement("div", null, "2")),
303
+ react_1.default.createElement(StyledResizer, { id: "handle-2" }),
304
+ react_1.default.createElement(StyledPanel, { id: "panel-3", min: "100px" },
305
+ react_1.default.createElement("div", null, "3")),
306
+ isExpanded && (react_1.default.createElement(react_1.default.Fragment, null,
307
+ react_1.default.createElement(StyledResizer, { id: "handle-3" }),
308
+ react_1.default.createElement(StyledPanel, { id: "panel-4", min: "100px" },
309
+ "expanded",
310
+ react_1.default.createElement("button", { type: "button", onClick: () => setIsExpanded(false) }, "Close")))),
311
+ react_1.default.createElement(StyledResizer, { id: "handle-4" }),
312
+ react_1.default.createElement(StyledPanel, { min: "200px", collapsible: true, collapsedSize: "60px", defaultCollapsed: true, id: "panel-5" },
313
+ react_1.default.createElement("div", null, "4"))),
314
+ react_1.default.createElement("button", { type: "button", onClick: () => setIsExpanded(true) }, "Expand")));
315
+ }
316
+ function WithDefaultWidth() {
317
+ return (react_1.default.createElement(ReactWindowSplitter_js_1.PanelGroup, { style: { height: "400px" } },
318
+ react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { style: { backgroundColor: "#333366" } }),
319
+ react_1.default.createElement(ReactWindowSplitter_js_1.PanelResizer, { size: "3px" }),
320
+ react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { default: "100px", min: "100px", max: "400px", style: { backgroundColor: "#ff3366" } })));
321
+ }
322
+ function StaticAtRest({ handle, }) {
323
+ return (react_1.default.createElement(StyledPanelGroup, { handle: handle, style: { height: 200 } },
324
+ react_1.default.createElement(StyledPanel, { min: "100px", max: "300px", isStaticAtRest: true }, "Panel 1"),
325
+ react_1.default.createElement(StyledResizer, null),
326
+ react_1.default.createElement(StyledPanel, { min: "100px" }, "Panel 2"),
327
+ react_1.default.createElement(StyledResizer, null),
328
+ react_1.default.createElement(StyledPanel, { min: "100px" }, "Panel 3")));
329
+ }
330
+ //# sourceMappingURL=ReactWindowSplitter.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReactWindowSplitter.stories.js","sourceRoot":"","sources":["../../src/ReactWindowSplitter.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useMemo } from \"react\";\nimport { spring } from \"framer-motion\";\nimport {\n PanelGroup,\n PanelGroupProps,\n Panel,\n PanelProps,\n PanelResizer,\n PanelResizerProps,\n} from \"./ReactWindowSplitter.js\";\nimport { PanelGroupHandle, PanelHandle } from \"@window-splitter/interface\";\n\nexport default {\n title: \"Components/React\",\n};\n\nfunction StyledPanelGroup(props: PanelGroupProps) {\n return (\n <PanelGroup\n {...props}\n style={{\n border: \"1px solid rgba(0, 0, 0, 0.3)\",\n background: \"rgba(0, 0, 0, 0.1)\",\n borderRadius: 12,\n boxSizing: \"border-box\",\n ...props.style,\n }}\n />\n );\n}\n\nfunction StyledPanel({ children, ...props }: PanelProps) {\n return (\n <Panel\n style={{\n overflow: \"hidden\",\n }}\n {...props}\n >\n <div\n style={{\n height: \"100%\",\n width: \"100%\",\n padding: 20,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n boxSizing: \"border-box\",\n }}\n >\n {children}\n </div>\n </Panel>\n );\n}\n\nfunction StyledResizer(props: PanelResizerProps) {\n return <PanelResizer size=\"10px\" style={{ background: \"red\" }} {...props} />;\n}\n\nexport function Simple({ handle }: { handle?: React.Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup handle={handle} style={{ height: 200 }}>\n <StyledPanel>Panel 1</StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function Autosave({ handle }: { handle?: React.Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup handle={handle} autosaveId=\"autosave-example\">\n <StyledPanel id=\"1\">Panel 1</StyledPanel>\n <StyledResizer id=\"resizer\" />\n <StyledPanel id=\"2\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function AutosaveCollapsible({\n handle,\n onCollapseChange = console.log,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n onCollapseChange?: (c: boolean) => void;\n}) {\n return (\n <StyledPanelGroup handle={handle} autosaveId=\"autosave-example-2\">\n <StyledPanel\n id=\"1\"\n collapsible\n collapsedSize=\"100px\"\n min=\"140px\"\n onCollapseChange={onCollapseChange}\n >\n Collapsible\n </StyledPanel>\n <StyledResizer id=\"resizer\" />\n <StyledPanel id=\"2\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function DynamicConstraints({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n const [customOn, setCustomOn] = React.useState(false);\n\n return (\n <>\n <StyledPanelGroup handle={handle}>\n <StyledPanel\n default=\"100px\"\n {...(customOn ? { min: \"200px\" } : { min: \"100px\" })}\n >\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 2</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel\n {...(customOn ? { min: \"100px\" } : { min: \"400px\" })}\n {...(customOn ? { max: \"300px\" } : { max: \"700px\" })}\n >\n <div>Panel 3</div>\n </StyledPanel>\n </StyledPanelGroup>\n <button type=\"button\" onClick={() => setCustomOn(!customOn)}>\n Toggle Custom\n </button>\n </>\n );\n}\n\nexport function SimpleMin() {\n return (\n <StyledPanelGroup>\n <StyledPanel min=\"100px\">\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 2</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function SimpleMinMax() {\n return (\n <StyledPanelGroup>\n <StyledPanel min=\"100px\" max=\"200px\">\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 2</div>\n </StyledPanel>\n <StyledResizer size=\"20px\" />\n <StyledPanel min=\"100px\">\n <div>Panel 3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function SimpleConstraints() {\n return (\n <StyledPanelGroup>\n <StyledPanel min=\"100px\" max=\"50%\">\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel>\n <div>Panel 2</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function HorizontalLayout() {\n return (\n <StyledPanelGroup orientation=\"horizontal\">\n <StyledPanel default=\"30%\" min=\"20%\">\n left\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"20%\">middle</StyledPanel>\n <StyledResizer />\n <StyledPanel default=\"30%\" min=\"20%\">\n right\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function VerticalLayout({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup\n handle={handle}\n orientation=\"vertical\"\n style={{ height: 322 }}\n >\n <StyledPanel default=\"30%\" min=\"20%\">\n top\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"20%\">middle</StyledPanel>\n <StyledResizer />\n <StyledPanel default=\"30%\" min=\"20%\">\n bottom\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function VerticalLayout2({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup\n handle={handle}\n orientation=\"vertical\"\n style={{ height: \"calc(100vh - 100px)\" }}\n >\n <StyledPanel default=\"200px\" min=\"200px\">\n top\n </StyledPanel>\n <StyledResizer />\n <StyledPanel\n min=\"200px\"\n collapsedSize=\"60px\"\n defaultCollapsed\n collapsible\n >\n middle\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function NestedGroups() {\n return (\n <PanelGroup\n orientation=\"horizontal\"\n style={{\n border: \"1px solid rgba(0, 0, 0, 0.3)\",\n borderRadius: 12,\n height: 400,\n }}\n >\n <Panel min=\"10%\">left</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"vertical\">\n <Panel min=\"10%\">top</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"horizontal\">\n <Panel min=\"20%\">left</Panel>\n <StyledResizer />\n <Panel min=\"20%\">right</Panel>\n </PanelGroup>\n </Panel>\n </PanelGroup>\n </Panel>\n <StyledResizer />\n <Panel min=\"10%\">right</Panel>\n </PanelGroup>\n );\n}\n\nexport function WithOverflow() {\n return (\n <StyledPanelGroup style={{ height: 400 }}>\n <Panel min=\"200px\">\n <div\n style={{\n overflow: \"auto\",\n padding: 40,\n height: \"100%\",\n boxSizing: \"border-box\",\n }}\n >\n <p>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec\n euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu\n tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n </div>\n </Panel>\n <StyledResizer />\n <Panel min=\"200px\">\n <div\n style={{\n overflow: \"auto\",\n padding: 40,\n height: \"100%\",\n boxSizing: \"border-box\",\n }}\n >\n <p>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec\n euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu\n tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n </div>\n </Panel>\n </StyledPanelGroup>\n );\n}\n\nexport function Collapsible({\n leftPanelHandle,\n rightPanelHandle,\n handle,\n}: {\n leftPanelHandle?: React.Ref<PanelHandle>;\n handle?: React.Ref<PanelGroupHandle>;\n rightPanelHandle?: React.Ref<PanelHandle>;\n}) {\n const [collapsed, setCollapsed] = React.useState(true);\n\n return (\n <StyledPanelGroup handle={handle}>\n <StyledPanel\n handle={leftPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", boxSizing: \"border-box\" }}\n onCollapseChange={(isCollapsed) => {\n console.log(\"COLLAPSE PASSIVE\", isCollapsed);\n }}\n >\n <div>1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>2</div>\n </StyledPanel>\n <StyledResizer id=\"resizer-2\" />\n <StyledPanel\n handle={rightPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n collapseAnimation={{ easing: \"bounce\", duration: 1000 }}\n style={{ border: \"10px solid blue\", boxSizing: \"border-box\" }}\n collapsed={collapsed}\n onCollapseChange={(isCollapsed) => {\n console.log(\"COLLAPSE CONTROLLED\", isCollapsed);\n setCollapsed(isCollapsed);\n }}\n >\n <div>3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function CustomCollapseAnimation() {\n const springFn = useMemo(() => {\n return spring({\n keyframes: [0, 1],\n velocity: 1,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n });\n }, []);\n\n return (\n <StyledPanelGroup>\n <StyledPanel\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", boxSizing: \"border-box\" }}\n >\n 1\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">2</StyledPanel>\n <StyledResizer />\n <StyledPanel\n style={{ border: \"10px solid blue\", boxSizing: \"border-box\" }}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n collapseAnimation={{\n easing: (t) => springFn.next(t * 1000).value,\n duration: 1000,\n }}\n >\n 3\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function ImperativePanel() {\n const groupRef = React.useRef<PanelGroupHandle>(null);\n const panelRef = React.useRef<PanelHandle>(null);\n\n return (\n <>\n <StyledPanelGroup handle={groupRef}>\n <StyledPanel\n handle={panelRef}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n >\n 1\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">2</StyledPanel>\n <StyledResizer />\n <StyledPanel\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n >\n 3\n </StyledPanel>\n </StyledPanelGroup>\n\n <div>\n <button\n type=\"button\"\n onClick={() => alert(`Sizes: ${groupRef.current?.getPixelSizes()}`)}\n >\n Get pixel sizes\n </button>\n <button\n type=\"button\"\n onClick={() =>\n alert(`Sizes: ${groupRef.current?.getPercentageSizes()}`)\n }\n >\n Get percent sizes\n </button>\n <button\n type=\"button\"\n onClick={() =>\n groupRef.current?.setSizes([\n \"200px\",\n \"10px\",\n \"50%\",\n \"10px\",\n \"150px\",\n ])\n }\n >\n Override sizes\n </button>\n </div>\n\n <div>\n <button type=\"button\" onClick={() => panelRef.current?.collapse()}>\n Collapse\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Collapsed: ${panelRef.current?.isCollapsed()}`)}\n >\n Is Collapsed?\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.expand()}>\n Expand\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Expanded: ${panelRef.current?.isExpanded()}`)}\n >\n Is Expanded?\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Id: ${panelRef.current?.getId()}`)}\n >\n Get Id\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Size: ${panelRef.current?.getPixelSize()}`)}\n >\n Get Pixel Size\n </button>\n <button\n type=\"button\"\n onClick={() =>\n alert(`Percentage: ${panelRef.current?.getPercentageSize()}`)\n }\n >\n Get Percentage Size\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.setSize(\"30px\")}>\n Set size to 100px\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.setSize(\"50%\")}>\n Set size to 50%\n </button>\n </div>\n </>\n );\n}\n\nexport function ConditionalPanel({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n const [isExpanded, setIsExpanded] = React.useState(false);\n\n return (\n <React.StrictMode>\n <StyledPanelGroup handle={handle}>\n <StyledPanel id=\"panel-1\" min=\"100px\" collapsible collapsedSize=\"60px\">\n <div>1</div>\n </StyledPanel>\n <StyledResizer id=\"handle-1\" />\n <StyledPanel id=\"panel-2\" min=\"100px\">\n <div>2</div>\n </StyledPanel>\n {isExpanded && (\n <>\n <StyledResizer id=\"handle-2\" />\n <StyledPanel id=\"panel-3\" min=\"100px\">\n 3\n <button type=\"button\" onClick={() => setIsExpanded(false)}>\n Close\n </button>\n </StyledPanel>\n </>\n )}\n </StyledPanelGroup>\n <button type=\"button\" onClick={() => setIsExpanded(true)}>\n Expand\n </button>\n </React.StrictMode>\n );\n}\n\nexport function ConditionalPanelComplex() {\n const [isExpanded, setIsExpanded] = React.useState(false);\n\n return (\n <React.StrictMode>\n <StyledPanelGroup>\n <StyledPanel id=\"panel-1\" min=\"100px\" collapsible collapsedSize=\"60px\">\n <div>1</div>\n </StyledPanel>\n <StyledResizer id=\"handle-1\" />\n <StyledPanel id=\"panel-2\" min=\"100px\">\n <div>2</div>\n </StyledPanel>\n <StyledResizer id=\"handle-2\" />\n <StyledPanel id=\"panel-3\" min=\"100px\">\n <div>3</div>\n </StyledPanel>\n {isExpanded && (\n <>\n <StyledResizer id=\"handle-3\" />\n <StyledPanel id=\"panel-4\" min=\"100px\">\n expanded\n <button type=\"button\" onClick={() => setIsExpanded(false)}>\n Close\n </button>\n </StyledPanel>\n </>\n )}\n <StyledResizer id=\"handle-4\" />\n <StyledPanel\n min=\"200px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n id=\"panel-5\"\n >\n <div>4</div>\n </StyledPanel>\n </StyledPanelGroup>\n <button type=\"button\" onClick={() => setIsExpanded(true)}>\n Expand\n </button>\n </React.StrictMode>\n );\n}\n\nexport function WithDefaultWidth() {\n return (\n <PanelGroup style={{ height: \"400px\" }}>\n <Panel style={{ backgroundColor: \"#333366\" }} />\n <PanelResizer size=\"3px\" />\n {/* I expected the right panel to be 100px wide */}\n <Panel\n default=\"100px\"\n min=\"100px\"\n max=\"400px\"\n style={{ backgroundColor: \"#ff3366\" }}\n />\n </PanelGroup>\n );\n}\n\nexport function StaticAtRest({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup handle={handle} style={{ height: 200 }}>\n <StyledPanel min=\"100px\" max=\"300px\" isStaticAtRest>\n Panel 1\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 2</StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 3</StyledPanel>\n </StyledPanelGroup>\n );\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ReactWindowSplitter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReactWindowSplitter.test.d.ts","sourceRoot":"","sources":["../../src/ReactWindowSplitter.test.tsx"],"names":[],"mappings":""}