react-science 0.20.1 → 0.21.1
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/lib/app/hooks/file-loading.js +7 -1
- package/lib/app-data/loaders/loadMeasurements.js +1 -2
- package/lib/components/fullscreen/FullscreenContext.js +3 -1
- package/lib/components/modal/ConfirmModal.js +13 -10
- package/lib/components/modal/Modal.js +11 -8
- package/lib/components/split-pane/SplitPane.js +23 -8
- package/lib-esm/app/hooks/file-loading.d.ts.map +1 -1
- package/lib-esm/app/hooks/file-loading.js +8 -2
- package/lib-esm/app/hooks/file-loading.js.map +1 -1
- package/lib-esm/app-data/loaders/loadMeasurements.js +1 -2
- package/lib-esm/app-data/loaders/loadMeasurements.js.map +1 -1
- package/lib-esm/app-data/loaders/utility/getMeasurementInfoFromFile.d.ts +2 -2
- package/lib-esm/components/fullscreen/FullscreenContext.d.ts.map +1 -1
- package/lib-esm/components/fullscreen/FullscreenContext.js +3 -1
- package/lib-esm/components/fullscreen/FullscreenContext.js.map +1 -1
- package/lib-esm/components/modal/ConfirmModal.d.ts +1 -1
- package/lib-esm/components/modal/ConfirmModal.d.ts.map +1 -1
- package/lib-esm/components/modal/ConfirmModal.js +13 -10
- package/lib-esm/components/modal/ConfirmModal.js.map +1 -1
- package/lib-esm/components/modal/Modal.d.ts +1 -1
- package/lib-esm/components/modal/Modal.d.ts.map +1 -1
- package/lib-esm/components/modal/Modal.js +11 -8
- package/lib-esm/components/modal/Modal.js.map +1 -1
- package/lib-esm/components/split-pane/SplitPane.d.ts +3 -3
- package/lib-esm/components/split-pane/SplitPane.d.ts.map +1 -1
- package/lib-esm/components/split-pane/SplitPane.js +24 -9
- package/lib-esm/components/split-pane/SplitPane.js.map +1 -1
- package/package.json +34 -34
- package/src/app/hooks/file-loading.ts +8 -2
- package/src/app-data/loaders/loadMeasurements.ts +1 -4
- package/src/components/fullscreen/FullscreenContext.tsx +3 -1
- package/src/components/modal/ConfirmModal.tsx +13 -9
- package/src/components/modal/Modal.tsx +14 -9
- package/src/components/split-pane/SplitPane.tsx +29 -14
|
@@ -16,7 +16,13 @@ function useLoadFileCollectionFromHash(onLoad) {
|
|
|
16
16
|
if (!filelistUrl) {
|
|
17
17
|
return null;
|
|
18
18
|
}
|
|
19
|
-
const
|
|
19
|
+
const request = await fetch(filelistUrl);
|
|
20
|
+
const data = await request.json();
|
|
21
|
+
let baseURL = filelistUrl.replace(/\/[^/]*$/, '/');
|
|
22
|
+
const fileCollection = await (0, filelist_utils_1.fileCollectionFromWebSource)({
|
|
23
|
+
entries: data,
|
|
24
|
+
baseURL,
|
|
25
|
+
});
|
|
20
26
|
void onLoad(fileCollection, appDispatch);
|
|
21
27
|
return true;
|
|
22
28
|
},
|
|
@@ -28,8 +28,7 @@ function computeMinMax(measurement) {
|
|
|
28
28
|
// TODO: should we accept empty data?
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
|
-
if (
|
|
32
|
-
typeof variable.max === 'undefined') {
|
|
31
|
+
if (variable.min === undefined || variable.max === undefined) {
|
|
33
32
|
const { min, max } = (0, ml_spectra_processing_1.xMinMaxValues)(variable.data);
|
|
34
33
|
variable.min = min;
|
|
35
34
|
variable.max = max;
|
|
@@ -6,7 +6,9 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
6
6
|
const react_1 = require("react");
|
|
7
7
|
const fullscreenContextInit = {
|
|
8
8
|
isFullScreen: false,
|
|
9
|
-
toggle: () => {
|
|
9
|
+
toggle: () => {
|
|
10
|
+
// empty
|
|
11
|
+
},
|
|
10
12
|
};
|
|
11
13
|
const FullscreenContext = (0, react_1.createContext)(fullscreenContextInit);
|
|
12
14
|
function useFullscreen() {
|
|
@@ -7,9 +7,9 @@ exports.ConfirmModal = void 0;
|
|
|
7
7
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
8
|
const styled_1 = __importDefault(require("@emotion/styled"));
|
|
9
9
|
const __1 = require("..");
|
|
10
|
+
const Portal_1 = require("../root-layout/Portal");
|
|
10
11
|
const useDialog_1 = require("./useDialog");
|
|
11
12
|
const ConfirmModalDialog = styled_1.default.dialog `
|
|
12
|
-
display: flex;
|
|
13
13
|
position: fixed;
|
|
14
14
|
background-color: transparent;
|
|
15
15
|
|
|
@@ -17,7 +17,7 @@ const ConfirmModalDialog = styled_1.default.dialog `
|
|
|
17
17
|
background-color: rgba(113, 113, 122, 0.75);
|
|
18
18
|
}
|
|
19
19
|
`;
|
|
20
|
-
const
|
|
20
|
+
const ConfirmModalContents = styled_1.default.div `
|
|
21
21
|
position: relative;
|
|
22
22
|
display: flex;
|
|
23
23
|
flex-direction: column;
|
|
@@ -27,7 +27,7 @@ const ConfirmModalOpened = styled_1.default.div `
|
|
|
27
27
|
border-width: 1px;
|
|
28
28
|
border-color: transparent;
|
|
29
29
|
border-radius: 0.5rem;
|
|
30
|
-
box-shadow: 0 0 0 0, 0
|
|
30
|
+
box-shadow: 0 0 0 0, 0 0px 16px rgba(0, 0, 0, 0.3);
|
|
31
31
|
border-top: 10px solid ${({ headerColor }) => headerColor};
|
|
32
32
|
`;
|
|
33
33
|
const ConfirmModalChildrenRoot = styled_1.default.div `
|
|
@@ -50,12 +50,15 @@ function ConfirmModal(props) {
|
|
|
50
50
|
requestCloseOnBackdrop,
|
|
51
51
|
onRequestClose,
|
|
52
52
|
});
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
53
|
+
if (!isOpen) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
return ((0, jsx_runtime_1.jsx)(Portal_1.Portal, { children: (0, jsx_runtime_1.jsx)(ConfirmModalDialog, { ref: ref, onClick: onClick, children: (0, jsx_runtime_1.jsxs)(ConfirmModalContents, { headerColor: headerColor, style: { maxWidth }, children: [(0, jsx_runtime_1.jsx)(ConfirmModalChildrenRoot, { headerColor: headerColor, children: children }), (0, jsx_runtime_1.jsxs)(ConfirmModalFooter, { children: [(0, jsx_runtime_1.jsx)(__1.Button, { onClick: onConfirm, backgroundColor: {
|
|
57
|
+
basic: 'hsla(243deg, 75%, 58%, 1)',
|
|
58
|
+
hover: 'hsla(245deg, 58%, 50%, 1)',
|
|
59
|
+
}, color: { basic: 'white' }, children: saveText }), (0, jsx_runtime_1.jsx)(__1.Button, { onClick: onCancel, backgroundColor: {
|
|
60
|
+
basic: 'hsla(0deg, 72%, 50%, 1)',
|
|
61
|
+
hover: 'hsla(0deg, 73%, 42%, 1)',
|
|
62
|
+
}, color: { basic: 'white' }, children: cancelText })] })] }) }) }));
|
|
60
63
|
}
|
|
61
64
|
exports.ConfirmModal = ConfirmModal;
|
|
@@ -6,10 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.Modal = void 0;
|
|
7
7
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
8
|
const styled_1 = __importDefault(require("@emotion/styled"));
|
|
9
|
+
const Portal_1 = require("../root-layout/Portal");
|
|
9
10
|
const ModalCloseButton_1 = __importDefault(require("./ModalCloseButton"));
|
|
10
11
|
const useDialog_1 = require("./useDialog");
|
|
11
12
|
const DialogRoot = styled_1.default.dialog `
|
|
12
|
-
display: flex;
|
|
13
13
|
position: fixed;
|
|
14
14
|
background-color: transparent;
|
|
15
15
|
|
|
@@ -17,7 +17,7 @@ const DialogRoot = styled_1.default.dialog `
|
|
|
17
17
|
background-color: rgba(113, 113, 122, 0.75);
|
|
18
18
|
}
|
|
19
19
|
`;
|
|
20
|
-
const
|
|
20
|
+
const DialogContents = styled_1.default.div `
|
|
21
21
|
position: relative;
|
|
22
22
|
display: flex;
|
|
23
23
|
flex-direction: column;
|
|
@@ -26,7 +26,7 @@ const DialogOpened = styled_1.default.div `
|
|
|
26
26
|
border-width: 1px;
|
|
27
27
|
border-color: transparent;
|
|
28
28
|
border-radius: 0.5rem;
|
|
29
|
-
box-shadow: 0 0 0 0, 0
|
|
29
|
+
box-shadow: 0 0 0 0, 0 0px 16px rgba(0, 0, 0, 0.3);
|
|
30
30
|
`;
|
|
31
31
|
const ModalHeaderStyled = styled_1.default.div `
|
|
32
32
|
display: flex;
|
|
@@ -52,11 +52,14 @@ function Modal(props) {
|
|
|
52
52
|
requestCloseOnBackdrop,
|
|
53
53
|
onRequestClose,
|
|
54
54
|
});
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
55
|
+
if (!isOpen) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
return ((0, jsx_runtime_1.jsx)(Portal_1.Portal, { children: (0, jsx_runtime_1.jsx)(DialogRoot, { ref: ref, onClick: onClick, children: (0, jsx_runtime_1.jsxs)(DialogContents, { style: {
|
|
59
|
+
maxWidth,
|
|
60
|
+
height: height || 'max-content',
|
|
61
|
+
width: width || '100%',
|
|
62
|
+
}, children: [children, hasCloseButton && (0, jsx_runtime_1.jsx)(ModalCloseButton_1.default, { onClick: onRequestClose })] }) }) }));
|
|
60
63
|
}
|
|
61
64
|
exports.Modal = Modal;
|
|
62
65
|
Modal.Header = function ModalHeader(props) {
|
|
@@ -17,14 +17,27 @@ function useSplitPaneContext() {
|
|
|
17
17
|
}
|
|
18
18
|
exports.useSplitPaneContext = useSplitPaneContext;
|
|
19
19
|
function SplitPane(props) {
|
|
20
|
-
const { direction = 'horizontal', controlledSide = 'start',
|
|
21
|
-
const minimumSize = typeof
|
|
20
|
+
const { direction = 'horizontal', controlledSide = 'start', size = '50%', closed = false, onResize, onToggle, children, } = props;
|
|
21
|
+
const minimumSize = typeof closed === 'number' ? closed : null;
|
|
22
22
|
// Whether the pane is explicitly closed. If the value is `false`, the pane
|
|
23
23
|
// may still be currently closed because it is smaller than the minimum size.
|
|
24
|
-
const [isPaneClosed, closePane, openPane] = (0, useOnOff_1.useOnOff)(typeof
|
|
24
|
+
const [isPaneClosed, closePane, openPane] = (0, useOnOff_1.useOnOff)(typeof closed === 'boolean' ? closed : false);
|
|
25
25
|
// Whether the user has already interacted with the pane.
|
|
26
26
|
const [hasTouched, touch] = (0, react_2.useReducer)(() => true, false);
|
|
27
|
-
const [[
|
|
27
|
+
const [[splitSize, sizeType], setSize] = (0, react_2.useState)(() => parseSize(size));
|
|
28
|
+
(0, react_2.useEffect)(() => {
|
|
29
|
+
setSize(parseSize(size));
|
|
30
|
+
}, [size]);
|
|
31
|
+
(0, react_2.useEffect)(() => {
|
|
32
|
+
if (typeof closed === 'boolean') {
|
|
33
|
+
if (closed) {
|
|
34
|
+
closePane();
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
openPane();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}, [closePane, closed, openPane]);
|
|
28
41
|
const splitterRef = (0, react_2.useRef)(null);
|
|
29
42
|
const { onMouseDown } = (0, useSplitPaneSize_1.useSplitPaneSize)({
|
|
30
43
|
controlledSide,
|
|
@@ -67,7 +80,7 @@ function SplitPane(props) {
|
|
|
67
80
|
}
|
|
68
81
|
}
|
|
69
82
|
function getSplitSideStyle(side) {
|
|
70
|
-
return getItemStyle(isFinalClosed, controlledSide === side, direction,
|
|
83
|
+
return getItemStyle(isFinalClosed, controlledSide === side, direction, splitSize, sizeType);
|
|
71
84
|
}
|
|
72
85
|
return ((0, jsx_runtime_1.jsxs)("div", { ref: rootSize.ref, style: {
|
|
73
86
|
display: 'flex',
|
|
@@ -85,9 +98,11 @@ function SplitSide(props) {
|
|
|
85
98
|
const { style, children } = props;
|
|
86
99
|
return (0, jsx_runtime_1.jsx)("div", { style: style, children: children });
|
|
87
100
|
}
|
|
88
|
-
function parseSize(
|
|
89
|
-
const
|
|
90
|
-
|
|
101
|
+
function parseSize(size) {
|
|
102
|
+
const value = Number.parseFloat(size);
|
|
103
|
+
// remove numbers and dots from the string
|
|
104
|
+
const type = size.replace(/[\d .]/g, '');
|
|
105
|
+
return [value, type];
|
|
91
106
|
}
|
|
92
107
|
const flexBase = 100;
|
|
93
108
|
function percentToFlex(percent) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-loading.d.ts","sourceRoot":"","sources":["../../../src/app/hooks/file-loading.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"file-loading.d.ts","sourceRoot":"","sources":["../../../src/app/hooks/file-loading.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAA+B,MAAM,gBAAgB,CAAC;AAG7E,OAAO,EAAE,WAAW,EAAkB,MAAM,sBAAsB,CAAC;AAGnE,KAAK,MAAM,GAAG,CACZ,KAAK,EAAE,IAAI,EAAE,GAAG,cAAc,EAC9B,QAAQ,EAAE,WAAW,KAClB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,MAAM,wEAsB3D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,WAG/B,IAAI,EAAE,UAMjB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useQuery } from '@tanstack/react-query';
|
|
2
|
-
import {
|
|
2
|
+
import { fileCollectionFromWebSource } from 'filelist-utils';
|
|
3
3
|
import { useCallback } from 'react';
|
|
4
4
|
import { useAppDispatch } from '../../app-data/index';
|
|
5
5
|
import { useHashSearchParams } from '../../components/index';
|
|
@@ -13,7 +13,13 @@ export function useLoadFileCollectionFromHash(onLoad) {
|
|
|
13
13
|
if (!filelistUrl) {
|
|
14
14
|
return null;
|
|
15
15
|
}
|
|
16
|
-
const
|
|
16
|
+
const request = await fetch(filelistUrl);
|
|
17
|
+
const data = await request.json();
|
|
18
|
+
let baseURL = filelistUrl.replace(/\/[^/]*$/, '/');
|
|
19
|
+
const fileCollection = await fileCollectionFromWebSource({
|
|
20
|
+
entries: data,
|
|
21
|
+
baseURL,
|
|
22
|
+
});
|
|
17
23
|
void onLoad(fileCollection, appDispatch);
|
|
18
24
|
return true;
|
|
19
25
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-loading.js","sourceRoot":"","sources":["../../../src/app/hooks/file-loading.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAkB,
|
|
1
|
+
{"version":3,"file":"file-loading.js","sourceRoot":"","sources":["../../../src/app/hooks/file-loading.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAkB,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAe,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAO7D,MAAM,UAAU,6BAA6B,CAAC,MAAc;IAC1D,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC;QACrB,QAAQ,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;QACnC,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,WAAW,EAAE;gBAChB,OAAO,IAAI,CAAC;aACb;YACD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YACnD,MAAM,cAAc,GAAG,MAAM,2BAA2B,CAAC;gBACvD,OAAO,EAAE,IAAI;gBACb,OAAO;aACR,CAAC,CAAC;YACH,KAAK,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,WAAW,CACxB,CAAC,KAAa,EAAE,EAAE;QAChB,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC/B,CAAC,EACD,CAAC,QAAQ,EAAE,MAAM,CAAC,CACnB,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -24,8 +24,7 @@ function computeMinMax(measurement) {
|
|
|
24
24
|
// TODO: should we accept empty data?
|
|
25
25
|
return;
|
|
26
26
|
}
|
|
27
|
-
if (
|
|
28
|
-
typeof variable.max === 'undefined') {
|
|
27
|
+
if (variable.min === undefined || variable.max === undefined) {
|
|
29
28
|
const { min, max } = xMinMaxValues(variable.data);
|
|
30
29
|
variable.min = min;
|
|
31
30
|
variable.max = max;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadMeasurements.js","sourceRoot":"","sources":["../../../src/app-data/loaders/loadMeasurements.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAgB,OAAO,EAA8B,MAAM,UAAU,CAAC;AAE7E,OAAO,EAEL,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AASrC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,cAA8B,EAC9B,UAAuB,EAAE;IAEzB,MAAM,YAAY,GAA0B,EAAE,CAAC;IAC/C,IAAI,IAAI,GAAgB,EAAE,CAAC;IAC3B,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAChE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3E,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;YACnD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;gBAC3B,aAAa,CAAC,KAAK,CAAC,CAAC;aACtB;SACF;QACD,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC/B,iBAAiB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;KAC7C;IACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,aAAa,CAAC,WAA4B;IACjD,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,IAAI,EAAE;QACpC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YACrD,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9B,qCAAqC;gBACrC,OAAO;aACR;YACD,
|
|
1
|
+
{"version":3,"file":"loadMeasurements.js","sourceRoot":"","sources":["../../../src/app-data/loaders/loadMeasurements.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAgB,OAAO,EAA8B,MAAM,UAAU,CAAC;AAE7E,OAAO,EAEL,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AASrC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,cAA8B,EAC9B,UAAuB,EAAE;IAEzB,MAAM,YAAY,GAA0B,EAAE,CAAC;IAC/C,IAAI,IAAI,GAAgB,EAAE,CAAC;IAC3B,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAChE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3E,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;YACnD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;gBAC3B,aAAa,CAAC,KAAK,CAAC,CAAC;aACtB;SACF;QACD,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC/B,iBAAiB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;KAC7C;IACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,aAAa,CAAC,WAA4B;IACjD,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,IAAI,EAAE;QACpC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YACrD,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9B,qCAAqC;gBACrC,OAAO;aACR;YACD,IAAI,QAAQ,CAAC,GAAG,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,KAAK,SAAS,EAAE;gBAC5D,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAClD,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;gBACnB,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;aACpB;SACF;KACF;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FullscreenContext.d.ts","sourceRoot":"","sources":["../../../src/components/fullscreen/FullscreenContext.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,SAAS,EAMV,MAAM,OAAO,CAAC;AAUf,UAAU,eAAe;IACvB,QAAQ,EAAE,SAAS,CAAC;CACrB;AACD,UAAU,eAAe;IACvB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,WAAY,SAAQ,eAAe;IAC3C,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"FullscreenContext.d.ts","sourceRoot":"","sources":["../../../src/components/fullscreen/FullscreenContext.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,SAAS,EAMV,MAAM,OAAO,CAAC;AAUf,UAAU,eAAe;IACvB,QAAQ,EAAE,SAAS,CAAC;CACrB;AACD,UAAU,eAAe;IACvB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,WAAY,SAAQ,eAAe;IAC3C,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AASD,wBAAgB,aAAa,gBAE5B;AACD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,eAYxD"}
|
|
@@ -3,7 +3,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
import { createContext, useContext, useEffect, useMemo, useReducer, useRef, } from 'react';
|
|
4
4
|
const fullscreenContextInit = {
|
|
5
5
|
isFullScreen: false,
|
|
6
|
-
toggle: () => {
|
|
6
|
+
toggle: () => {
|
|
7
|
+
// empty
|
|
8
|
+
},
|
|
7
9
|
};
|
|
8
10
|
const FullscreenContext = createContext(fullscreenContextInit);
|
|
9
11
|
export function useFullscreen() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FullscreenContext.js","sourceRoot":"","sources":["../../../src/components/fullscreen/FullscreenContext.tsx"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,OAAO,EACL,aAAa,EAEb,UAAU,EACV,SAAS,EACT,OAAO,EACP,UAAU,EACV,MAAM,GACP,MAAM,OAAO,CAAC;AAoBf,MAAM,qBAAqB,GAAG;IAC5B,YAAY,EAAE,KAAK;IACnB,MAAM,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"FullscreenContext.js","sourceRoot":"","sources":["../../../src/components/fullscreen/FullscreenContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,6 @@ interface ConfirmModalProps {
|
|
|
12
12
|
headerColor: string;
|
|
13
13
|
maxWidth?: number;
|
|
14
14
|
}
|
|
15
|
-
export declare function ConfirmModal(props: ConfirmModalProps): JSX.Element;
|
|
15
|
+
export declare function ConfirmModal(props: ConfirmModalProps): JSX.Element | null;
|
|
16
16
|
export {};
|
|
17
17
|
//# sourceMappingURL=ConfirmModal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmModal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/ConfirmModal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ConfirmModal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/ConfirmModal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOvC,UAAU,iBAAiB;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAyCD,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,sBA4DpD"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import styled from '@emotion/styled';
|
|
3
3
|
import { Button } from '..';
|
|
4
|
+
import { Portal } from '../root-layout/Portal';
|
|
4
5
|
import { useDialog } from './useDialog';
|
|
5
6
|
const ConfirmModalDialog = styled.dialog `
|
|
6
|
-
display: flex;
|
|
7
7
|
position: fixed;
|
|
8
8
|
background-color: transparent;
|
|
9
9
|
|
|
@@ -11,7 +11,7 @@ const ConfirmModalDialog = styled.dialog `
|
|
|
11
11
|
background-color: rgba(113, 113, 122, 0.75);
|
|
12
12
|
}
|
|
13
13
|
`;
|
|
14
|
-
const
|
|
14
|
+
const ConfirmModalContents = styled.div `
|
|
15
15
|
position: relative;
|
|
16
16
|
display: flex;
|
|
17
17
|
flex-direction: column;
|
|
@@ -21,7 +21,7 @@ const ConfirmModalOpened = styled.div `
|
|
|
21
21
|
border-width: 1px;
|
|
22
22
|
border-color: transparent;
|
|
23
23
|
border-radius: 0.5rem;
|
|
24
|
-
box-shadow: 0 0 0 0, 0
|
|
24
|
+
box-shadow: 0 0 0 0, 0 0px 16px rgba(0, 0, 0, 0.3);
|
|
25
25
|
border-top: 10px solid ${({ headerColor }) => headerColor};
|
|
26
26
|
`;
|
|
27
27
|
const ConfirmModalChildrenRoot = styled.div `
|
|
@@ -44,12 +44,15 @@ export function ConfirmModal(props) {
|
|
|
44
44
|
requestCloseOnBackdrop,
|
|
45
45
|
onRequestClose,
|
|
46
46
|
});
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
if (!isOpen) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
return (_jsx(Portal, { children: _jsx(ConfirmModalDialog, { ref: ref, onClick: onClick, children: _jsxs(ConfirmModalContents, { headerColor: headerColor, style: { maxWidth }, children: [_jsx(ConfirmModalChildrenRoot, { headerColor: headerColor, children: children }), _jsxs(ConfirmModalFooter, { children: [_jsx(Button, { onClick: onConfirm, backgroundColor: {
|
|
51
|
+
basic: 'hsla(243deg, 75%, 58%, 1)',
|
|
52
|
+
hover: 'hsla(245deg, 58%, 50%, 1)',
|
|
53
|
+
}, color: { basic: 'white' }, children: saveText }), _jsx(Button, { onClick: onCancel, backgroundColor: {
|
|
54
|
+
basic: 'hsla(0deg, 72%, 50%, 1)',
|
|
55
|
+
hover: 'hsla(0deg, 73%, 42%, 1)',
|
|
56
|
+
}, color: { basic: 'white' }, children: cancelText })] })] }) }) }));
|
|
54
57
|
}
|
|
55
58
|
//# sourceMappingURL=ConfirmModal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmModal.js","sourceRoot":"","sources":["../../../src/components/modal/ConfirmModal.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ConfirmModal.js","sourceRoot":"","sources":["../../../src/components/modal/ConfirmModal.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAgBxC,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAA;;;;;;;CAOvC,CAAC;AAEF,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAErC;;;;;;;;;;;2BAWyB,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW;CAC1D,CAAC;AAEF,MAAM,wBAAwB,GAAG,MAAM,CAAC,GAAG,CAAyB;WACzD,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW;;;CAG1C,CAAC;AAEF,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;CAMpC,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EACJ,MAAM,EACN,QAAQ,GAAG,MAAM,EACjB,UAAU,GAAG,QAAQ,EACrB,WAAW,EACX,QAAQ,EACR,cAAc,EACd,QAAQ,GAAG,cAAc,EACzB,SAAS,EACT,sBAAsB,GAAG,IAAI,EAC7B,iBAAiB,GAAG,IAAI,EACxB,QAAQ,GACT,GAAG,KAAK,CAAC;IAEV,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;QACjC,MAAM;QACN,iBAAiB;QACjB,sBAAsB;QACtB,cAAc;KACf,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,KAAC,MAAM,cACL,KAAC,kBAAkB,IAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,YAC5C,MAAC,oBAAoB,IAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,aACjE,KAAC,wBAAwB,IAAC,WAAW,EAAE,WAAW,YAC/C,QAAQ,GACgB,EAE3B,MAAC,kBAAkB,eACjB,KAAC,MAAM,IACL,OAAO,EAAE,SAAS,EAClB,eAAe,EAAE;oCACf,KAAK,EAAE,2BAA2B;oCAClC,KAAK,EAAE,2BAA2B;iCACnC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,YAExB,QAAQ,GACF,EACT,KAAC,MAAM,IACL,OAAO,EAAE,QAAQ,EACjB,eAAe,EAAE;oCACf,KAAK,EAAE,yBAAyB;oCAChC,KAAK,EAAE,yBAAyB;iCACjC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,YAExB,UAAU,GACJ,IACU,IACA,GACJ,GACd,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -10,7 +10,7 @@ export interface ModalProps {
|
|
|
10
10
|
width?: number;
|
|
11
11
|
height?: number;
|
|
12
12
|
}
|
|
13
|
-
export declare function Modal(props: ModalProps): JSX.Element;
|
|
13
|
+
export declare function Modal(props: ModalProps): JSX.Element | null;
|
|
14
14
|
export declare namespace Modal {
|
|
15
15
|
var Header: (props: {
|
|
16
16
|
children: ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/Modal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/Modal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOrD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA0CD,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,sBAwCtC;yBAxCe,KAAK"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import styled from '@emotion/styled';
|
|
3
|
+
import { Portal } from '../root-layout/Portal';
|
|
3
4
|
import ModalCloseButton from './ModalCloseButton';
|
|
4
5
|
import { useDialog } from './useDialog';
|
|
5
6
|
const DialogRoot = styled.dialog `
|
|
6
|
-
display: flex;
|
|
7
7
|
position: fixed;
|
|
8
8
|
background-color: transparent;
|
|
9
9
|
|
|
@@ -11,7 +11,7 @@ const DialogRoot = styled.dialog `
|
|
|
11
11
|
background-color: rgba(113, 113, 122, 0.75);
|
|
12
12
|
}
|
|
13
13
|
`;
|
|
14
|
-
const
|
|
14
|
+
const DialogContents = styled.div `
|
|
15
15
|
position: relative;
|
|
16
16
|
display: flex;
|
|
17
17
|
flex-direction: column;
|
|
@@ -20,7 +20,7 @@ const DialogOpened = styled.div `
|
|
|
20
20
|
border-width: 1px;
|
|
21
21
|
border-color: transparent;
|
|
22
22
|
border-radius: 0.5rem;
|
|
23
|
-
box-shadow: 0 0 0 0, 0
|
|
23
|
+
box-shadow: 0 0 0 0, 0 0px 16px rgba(0, 0, 0, 0.3);
|
|
24
24
|
`;
|
|
25
25
|
const ModalHeaderStyled = styled.div `
|
|
26
26
|
display: flex;
|
|
@@ -46,11 +46,14 @@ export function Modal(props) {
|
|
|
46
46
|
requestCloseOnBackdrop,
|
|
47
47
|
onRequestClose,
|
|
48
48
|
});
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
if (!isOpen) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
return (_jsx(Portal, { children: _jsx(DialogRoot, { ref: ref, onClick: onClick, children: _jsxs(DialogContents, { style: {
|
|
53
|
+
maxWidth,
|
|
54
|
+
height: height || 'max-content',
|
|
55
|
+
width: width || '100%',
|
|
56
|
+
}, children: [children, hasCloseButton && _jsx(ModalCloseButton, { onClick: onRequestClose })] }) }) }));
|
|
54
57
|
}
|
|
55
58
|
Modal.Header = function ModalHeader(props) {
|
|
56
59
|
return _jsx(ModalHeaderStyled, { children: props.children });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../src/components/modal/Modal.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAGrC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAcxC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAA
|
|
1
|
+
{"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../src/components/modal/Modal.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAcxC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAA;;;;;;;CAO/B,CAAC;AAEF,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;CAUhC,CAAC;AAEF,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;CAMnC,CAAC;AAEF,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA;;;;CAIjC,CAAC;AAEF,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAA;;;CAGnC,CAAC;AAEF,MAAM,UAAU,KAAK,CAAC,KAAiB;IACrC,MAAM,EACJ,MAAM,EACN,cAAc,EACd,cAAc,GAAG,IAAI,EACrB,sBAAsB,GAAG,IAAI,EAC7B,iBAAiB,GAAG,IAAI,EACxB,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,MAAM,GACP,GAAG,KAAK,CAAC;IAEV,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;QACjC,MAAM;QACN,iBAAiB;QACjB,sBAAsB;QACtB,cAAc;KACf,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,KAAC,MAAM,cACL,KAAC,UAAU,IAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,YACpC,MAAC,cAAc,IACb,KAAK,EAAE;oBACL,QAAQ;oBACR,MAAM,EAAE,MAAM,IAAI,aAAa;oBAC/B,KAAK,EAAE,KAAK,IAAI,MAAM;iBACvB,aAEA,QAAQ,EACR,cAAc,IAAI,KAAC,gBAAgB,IAAC,OAAO,EAAE,cAAc,GAAI,IACjD,GACN,GACN,CACV,CAAC;AACJ,CAAC;AAED,KAAK,CAAC,MAAM,GAAG,SAAS,WAAW,CAAC,KAA8B;IAChE,OAAO,KAAC,iBAAiB,cAAE,KAAK,CAAC,QAAQ,GAAqB,CAAC;AACjE,CAAC,CAAC;AAEF,KAAK,CAAC,IAAI,GAAG,SAAS,SAAS,CAAC,KAA8B;IAC5D,OAAO,KAAC,eAAe,cAAE,KAAK,CAAC,QAAQ,GAAmB,CAAC;AAC7D,CAAC,CAAC;AAEF,KAAK,CAAC,MAAM,GAAG,SAAS,WAAW,CAAC,KAA8B;IAChE,OAAO,KAAC,iBAAiB,cAAE,KAAK,CAAC,QAAQ,GAAqB,CAAC;AACjE,CAAC,CAAC"}
|
|
@@ -18,10 +18,10 @@ export interface SplitPaneProps {
|
|
|
18
18
|
*/
|
|
19
19
|
controlledSide?: SplitPaneSide;
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
21
|
+
* size of the controlled side. Unit can be either '%' or 'px'.
|
|
22
22
|
* @default '50%'
|
|
23
23
|
*/
|
|
24
|
-
|
|
24
|
+
size?: SplitPaneSize;
|
|
25
25
|
/**
|
|
26
26
|
* Defines whether the pane is initially closed.
|
|
27
27
|
* A value of `true` means the pane is always initially closed.
|
|
@@ -33,7 +33,7 @@ export interface SplitPaneProps {
|
|
|
33
33
|
* no longer open or close automatically.
|
|
34
34
|
* @default false
|
|
35
35
|
*/
|
|
36
|
-
|
|
36
|
+
closed?: boolean | number;
|
|
37
37
|
/**
|
|
38
38
|
* Called whenever the user finishes resizing the pane.
|
|
39
39
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SplitPane.d.ts","sourceRoot":"","sources":["../../../src/components/split-pane/SplitPane.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,SAAS,
|
|
1
|
+
{"version":3,"file":"SplitPane.d.ts","sourceRoot":"","sources":["../../../src/components/split-pane/SplitPane.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,SAAS,EAOV,MAAM,OAAO,CAAC;AAOf,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,YAAY,CAAC;AAC3D,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,KAAK,CAAC;AAC5C,MAAM,MAAM,aAAa,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,CAAC;AACzD,MAAM,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC;AAEvC,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;OAEG;IACH,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;CAClC;AAID,wBAAgB,mBAAmB,YAElC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,oDAoH9C"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
2
2
|
/** @jsxImportSource @emotion/react */
|
|
3
3
|
import { css } from '@emotion/react';
|
|
4
|
-
import { createContext, useContext, useRef, useState, useReducer, } from 'react';
|
|
4
|
+
import { createContext, useContext, useRef, useState, useReducer, useEffect, } from 'react';
|
|
5
5
|
import useResizeObserver from 'use-resize-observer';
|
|
6
6
|
import { useOnOff } from '../hooks/useOnOff';
|
|
7
7
|
import { useSplitPaneSize } from './useSplitPaneSize';
|
|
@@ -10,14 +10,27 @@ export function useSplitPaneContext() {
|
|
|
10
10
|
return useContext(splitPaneContext);
|
|
11
11
|
}
|
|
12
12
|
export function SplitPane(props) {
|
|
13
|
-
const { direction = 'horizontal', controlledSide = 'start',
|
|
14
|
-
const minimumSize = typeof
|
|
13
|
+
const { direction = 'horizontal', controlledSide = 'start', size = '50%', closed = false, onResize, onToggle, children, } = props;
|
|
14
|
+
const minimumSize = typeof closed === 'number' ? closed : null;
|
|
15
15
|
// Whether the pane is explicitly closed. If the value is `false`, the pane
|
|
16
16
|
// may still be currently closed because it is smaller than the minimum size.
|
|
17
|
-
const [isPaneClosed, closePane, openPane] = useOnOff(typeof
|
|
17
|
+
const [isPaneClosed, closePane, openPane] = useOnOff(typeof closed === 'boolean' ? closed : false);
|
|
18
18
|
// Whether the user has already interacted with the pane.
|
|
19
19
|
const [hasTouched, touch] = useReducer(() => true, false);
|
|
20
|
-
const [[
|
|
20
|
+
const [[splitSize, sizeType], setSize] = useState(() => parseSize(size));
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
setSize(parseSize(size));
|
|
23
|
+
}, [size]);
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (typeof closed === 'boolean') {
|
|
26
|
+
if (closed) {
|
|
27
|
+
closePane();
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
openPane();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}, [closePane, closed, openPane]);
|
|
21
34
|
const splitterRef = useRef(null);
|
|
22
35
|
const { onMouseDown } = useSplitPaneSize({
|
|
23
36
|
controlledSide,
|
|
@@ -60,7 +73,7 @@ export function SplitPane(props) {
|
|
|
60
73
|
}
|
|
61
74
|
}
|
|
62
75
|
function getSplitSideStyle(side) {
|
|
63
|
-
return getItemStyle(isFinalClosed, controlledSide === side, direction,
|
|
76
|
+
return getItemStyle(isFinalClosed, controlledSide === side, direction, splitSize, sizeType);
|
|
64
77
|
}
|
|
65
78
|
return (_jsxs("div", { ref: rootSize.ref, style: {
|
|
66
79
|
display: 'flex',
|
|
@@ -77,9 +90,11 @@ function SplitSide(props) {
|
|
|
77
90
|
const { style, children } = props;
|
|
78
91
|
return _jsx("div", { style: style, children: children });
|
|
79
92
|
}
|
|
80
|
-
function parseSize(
|
|
81
|
-
const
|
|
82
|
-
|
|
93
|
+
function parseSize(size) {
|
|
94
|
+
const value = Number.parseFloat(size);
|
|
95
|
+
// remove numbers and dots from the string
|
|
96
|
+
const type = size.replace(/[\d .]/g, '');
|
|
97
|
+
return [value, type];
|
|
83
98
|
}
|
|
84
99
|
const flexBase = 100;
|
|
85
100
|
function percentToFlex(percent) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SplitPane.js","sourceRoot":"","sources":["../../../src/components/split-pane/SplitPane.tsx"],"names":[],"mappings":";AAAA,sCAAsC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAEL,aAAa,EAGb,UAAU,EACV,MAAM,EACN,QAAQ,EAER,UAAU,
|
|
1
|
+
{"version":3,"file":"SplitPane.js","sourceRoot":"","sources":["../../../src/components/split-pane/SplitPane.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-science",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.1",
|
|
4
4
|
"description": "React components to build analysis UI",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./app": {
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"test-only": "vitest run --coverage "
|
|
51
51
|
},
|
|
52
52
|
"volta": {
|
|
53
|
-
"node": "
|
|
53
|
+
"node": "18.15.0"
|
|
54
54
|
},
|
|
55
55
|
"overrides": {
|
|
56
56
|
"react": "^18.2.0",
|
|
@@ -61,66 +61,66 @@
|
|
|
61
61
|
"react-dom": ">=18.0.0"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@emotion/react": "^11.10.
|
|
65
|
-
"@emotion/styled": "^11.10.
|
|
66
|
-
"@headlessui/react": "^1.7.
|
|
64
|
+
"@emotion/react": "^11.10.6",
|
|
65
|
+
"@emotion/styled": "^11.10.6",
|
|
66
|
+
"@headlessui/react": "^1.7.13",
|
|
67
67
|
"@lukeed/uuid": "^2.0.0",
|
|
68
68
|
"@popperjs/core": "^2.11.6",
|
|
69
|
-
"@tanstack/react-query": "^4.
|
|
70
|
-
"@tanstack/react-table": "^8.7.
|
|
69
|
+
"@tanstack/react-query": "^4.28.0",
|
|
70
|
+
"@tanstack/react-table": "^8.7.9",
|
|
71
71
|
"biologic-converter": "^0.6.0",
|
|
72
72
|
"cheminfo-types": "^1.4.0",
|
|
73
73
|
"d3-scale-chromatic": "^3.0.0",
|
|
74
|
-
"filelist-utils": "^1.
|
|
75
|
-
"immer": "^9.0.
|
|
76
|
-
"jcampconverter": "^9.0
|
|
74
|
+
"filelist-utils": "^1.8.0",
|
|
75
|
+
"immer": "^9.0.19",
|
|
76
|
+
"jcampconverter": "^9.1.0",
|
|
77
77
|
"lodash": "^4.17.21",
|
|
78
78
|
"ml-gsd": "^12.1.2",
|
|
79
79
|
"ml-peak-shape-generator": "^4.1.2",
|
|
80
80
|
"ml-signal-processing": "^1.0.2",
|
|
81
|
-
"ml-spectra-processing": "^
|
|
82
|
-
"ms-spectrum": "^2.
|
|
81
|
+
"ml-spectra-processing": "^12.0.0",
|
|
82
|
+
"ms-spectrum": "^2.3.0",
|
|
83
83
|
"netcdfjs": "^2.0.2",
|
|
84
84
|
"react-d3-utils": "^1.0.0",
|
|
85
85
|
"react-dropzone": "^14.2.3",
|
|
86
|
-
"react-error-boundary": "^
|
|
87
|
-
"react-icons": "^4.
|
|
86
|
+
"react-error-boundary": "^4.0.2",
|
|
87
|
+
"react-icons": "^4.8.0",
|
|
88
88
|
"react-inspector": "^6.0.1",
|
|
89
|
-
"react-kbs": "^2.1.
|
|
89
|
+
"react-kbs": "^2.1.1",
|
|
90
90
|
"react-plot": "^1.4.2",
|
|
91
91
|
"react-popper": "^2.3.0",
|
|
92
|
-
"react-shadow": "^
|
|
92
|
+
"react-shadow": "^20.0.0",
|
|
93
93
|
"spc-parser": "^0.7.1",
|
|
94
|
-
"tinycolor2": "^1.
|
|
94
|
+
"tinycolor2": "^1.6.0",
|
|
95
95
|
"use-resize-observer": "^9.1.0",
|
|
96
96
|
"wdf-parser": "^0.3.0"
|
|
97
97
|
},
|
|
98
98
|
"devDependencies": {
|
|
99
|
-
"@babel/core": "^7.
|
|
100
|
-
"@babel/eslint-parser": "^7.
|
|
101
|
-
"@ladle/react": "^2.
|
|
102
|
-
"@playwright/experimental-ct-react": "^1.
|
|
103
|
-
"@playwright/test": "^1.
|
|
104
|
-
"@types/babel__core": "^7.
|
|
99
|
+
"@babel/core": "^7.21.3",
|
|
100
|
+
"@babel/eslint-parser": "^7.21.3",
|
|
101
|
+
"@ladle/react": "^2.10.2",
|
|
102
|
+
"@playwright/experimental-ct-react": "^1.32.0",
|
|
103
|
+
"@playwright/test": "^1.32.0",
|
|
104
|
+
"@types/babel__core": "^7.20.0",
|
|
105
105
|
"@types/d3-scale-chromatic": "^3.0.0",
|
|
106
106
|
"@types/lodash": "^4.14.191",
|
|
107
|
-
"@types/react": "^18.0.
|
|
108
|
-
"@types/react-dom": "^18.0.
|
|
107
|
+
"@types/react": "^18.0.28",
|
|
108
|
+
"@types/react-dom": "^18.0.11",
|
|
109
109
|
"@types/react-inspector": "^4.0.2",
|
|
110
|
-
"@vitejs/plugin-react": "^
|
|
111
|
-
"@vitest/coverage-c8": "^0.
|
|
110
|
+
"@vitejs/plugin-react": "^3.1.0",
|
|
111
|
+
"@vitest/coverage-c8": "^0.29.7",
|
|
112
112
|
"cheminfo-font": "^1.9.0",
|
|
113
113
|
"cross-env": "^7.0.3",
|
|
114
|
-
"eslint": "^8.
|
|
115
|
-
"eslint-config-zakodium": "^7.
|
|
116
|
-
"prettier": "^2.8.
|
|
114
|
+
"eslint": "^8.36.0",
|
|
115
|
+
"eslint-config-zakodium": "^7.1.0",
|
|
116
|
+
"prettier": "^2.8.6",
|
|
117
117
|
"react": "^18.2.0",
|
|
118
118
|
"react-dom": "^18.2.0",
|
|
119
119
|
"react-ocl": "^5.0.0",
|
|
120
|
-
"rimraf": "^
|
|
121
|
-
"typescript": "^
|
|
122
|
-
"vite": "^
|
|
123
|
-
"vitest": "^0.
|
|
120
|
+
"rimraf": "^4.4.1",
|
|
121
|
+
"typescript": "^5.0.2",
|
|
122
|
+
"vite": "^4.2.1",
|
|
123
|
+
"vitest": "^0.29.7"
|
|
124
124
|
},
|
|
125
125
|
"repository": {
|
|
126
126
|
"type": "git",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useQuery } from '@tanstack/react-query';
|
|
2
|
-
import { FileCollection,
|
|
2
|
+
import { FileCollection, fileCollectionFromWebSource } from 'filelist-utils';
|
|
3
3
|
import { useCallback } from 'react';
|
|
4
4
|
|
|
5
5
|
import { AppDispatch, useAppDispatch } from '../../app-data/index';
|
|
@@ -20,7 +20,13 @@ export function useLoadFileCollectionFromHash(onLoad: LoadFn) {
|
|
|
20
20
|
if (!filelistUrl) {
|
|
21
21
|
return null;
|
|
22
22
|
}
|
|
23
|
-
const
|
|
23
|
+
const request = await fetch(filelistUrl);
|
|
24
|
+
const data = await request.json();
|
|
25
|
+
let baseURL = filelistUrl.replace(/\/[^/]*$/, '/');
|
|
26
|
+
const fileCollection = await fileCollectionFromWebSource({
|
|
27
|
+
entries: data,
|
|
28
|
+
baseURL,
|
|
29
|
+
});
|
|
24
30
|
void onLoad(fileCollection, appDispatch);
|
|
25
31
|
return true;
|
|
26
32
|
},
|
|
@@ -42,10 +42,7 @@ function computeMinMax(measurement: MeasurementBase) {
|
|
|
42
42
|
// TODO: should we accept empty data?
|
|
43
43
|
return;
|
|
44
44
|
}
|
|
45
|
-
if (
|
|
46
|
-
typeof variable.min === 'undefined' ||
|
|
47
|
-
typeof variable.max === 'undefined'
|
|
48
|
-
) {
|
|
45
|
+
if (variable.min === undefined || variable.max === undefined) {
|
|
49
46
|
const { min, max } = xMinMaxValues(variable.data);
|
|
50
47
|
variable.min = min;
|
|
51
48
|
variable.max = max;
|
|
@@ -29,7 +29,9 @@ interface ContextType extends FullscreenState {
|
|
|
29
29
|
}
|
|
30
30
|
const fullscreenContextInit = {
|
|
31
31
|
isFullScreen: false,
|
|
32
|
-
toggle: () => {
|
|
32
|
+
toggle: () => {
|
|
33
|
+
// empty
|
|
34
|
+
},
|
|
33
35
|
};
|
|
34
36
|
const FullscreenContext = createContext<ContextType>(fullscreenContextInit);
|
|
35
37
|
|
|
@@ -2,6 +2,7 @@ import styled from '@emotion/styled';
|
|
|
2
2
|
import type { ReactNode } from 'react';
|
|
3
3
|
|
|
4
4
|
import { Button } from '..';
|
|
5
|
+
import { Portal } from '../root-layout/Portal';
|
|
5
6
|
|
|
6
7
|
import { useDialog } from './useDialog';
|
|
7
8
|
|
|
@@ -20,7 +21,6 @@ interface ConfirmModalProps {
|
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
const ConfirmModalDialog = styled.dialog`
|
|
23
|
-
display: flex;
|
|
24
24
|
position: fixed;
|
|
25
25
|
background-color: transparent;
|
|
26
26
|
|
|
@@ -29,7 +29,7 @@ const ConfirmModalDialog = styled.dialog`
|
|
|
29
29
|
}
|
|
30
30
|
`;
|
|
31
31
|
|
|
32
|
-
const
|
|
32
|
+
const ConfirmModalContents = styled.div<{
|
|
33
33
|
headerColor: string;
|
|
34
34
|
}>`
|
|
35
35
|
position: relative;
|
|
@@ -41,7 +41,7 @@ const ConfirmModalOpened = styled.div<{
|
|
|
41
41
|
border-width: 1px;
|
|
42
42
|
border-color: transparent;
|
|
43
43
|
border-radius: 0.5rem;
|
|
44
|
-
box-shadow: 0 0 0 0, 0
|
|
44
|
+
box-shadow: 0 0 0 0, 0 0px 16px rgba(0, 0, 0, 0.3);
|
|
45
45
|
border-top: 10px solid ${({ headerColor }) => headerColor};
|
|
46
46
|
`;
|
|
47
47
|
|
|
@@ -81,10 +81,14 @@ export function ConfirmModal(props: ConfirmModalProps) {
|
|
|
81
81
|
onRequestClose,
|
|
82
82
|
});
|
|
83
83
|
|
|
84
|
+
if (!isOpen) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
|
|
84
88
|
return (
|
|
85
|
-
<
|
|
86
|
-
{
|
|
87
|
-
<
|
|
89
|
+
<Portal>
|
|
90
|
+
<ConfirmModalDialog ref={ref} onClick={onClick}>
|
|
91
|
+
<ConfirmModalContents headerColor={headerColor} style={{ maxWidth }}>
|
|
88
92
|
<ConfirmModalChildrenRoot headerColor={headerColor}>
|
|
89
93
|
{children}
|
|
90
94
|
</ConfirmModalChildrenRoot>
|
|
@@ -111,8 +115,8 @@ export function ConfirmModal(props: ConfirmModalProps) {
|
|
|
111
115
|
{cancelText}
|
|
112
116
|
</Button>
|
|
113
117
|
</ConfirmModalFooter>
|
|
114
|
-
</
|
|
115
|
-
|
|
116
|
-
</
|
|
118
|
+
</ConfirmModalContents>
|
|
119
|
+
</ConfirmModalDialog>
|
|
120
|
+
</Portal>
|
|
117
121
|
);
|
|
118
122
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import styled from '@emotion/styled';
|
|
2
2
|
import type { ReactElement, ReactNode } from 'react';
|
|
3
3
|
|
|
4
|
+
import { Portal } from '../root-layout/Portal';
|
|
5
|
+
|
|
4
6
|
import ModalCloseButton from './ModalCloseButton';
|
|
5
7
|
import { useDialog } from './useDialog';
|
|
6
8
|
|
|
@@ -17,7 +19,6 @@ export interface ModalProps {
|
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
const DialogRoot = styled.dialog`
|
|
20
|
-
display: flex;
|
|
21
22
|
position: fixed;
|
|
22
23
|
background-color: transparent;
|
|
23
24
|
|
|
@@ -26,7 +27,7 @@ const DialogRoot = styled.dialog`
|
|
|
26
27
|
}
|
|
27
28
|
`;
|
|
28
29
|
|
|
29
|
-
const
|
|
30
|
+
const DialogContents = styled.div`
|
|
30
31
|
position: relative;
|
|
31
32
|
display: flex;
|
|
32
33
|
flex-direction: column;
|
|
@@ -35,7 +36,7 @@ const DialogOpened = styled.div`
|
|
|
35
36
|
border-width: 1px;
|
|
36
37
|
border-color: transparent;
|
|
37
38
|
border-radius: 0.5rem;
|
|
38
|
-
box-shadow: 0 0 0 0, 0
|
|
39
|
+
box-shadow: 0 0 0 0, 0 0px 16px rgba(0, 0, 0, 0.3);
|
|
39
40
|
`;
|
|
40
41
|
|
|
41
42
|
const ModalHeaderStyled = styled.div`
|
|
@@ -77,10 +78,14 @@ export function Modal(props: ModalProps) {
|
|
|
77
78
|
onRequestClose,
|
|
78
79
|
});
|
|
79
80
|
|
|
81
|
+
if (!isOpen) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
|
|
80
85
|
return (
|
|
81
|
-
<
|
|
82
|
-
{
|
|
83
|
-
<
|
|
86
|
+
<Portal>
|
|
87
|
+
<DialogRoot ref={ref} onClick={onClick}>
|
|
88
|
+
<DialogContents
|
|
84
89
|
style={{
|
|
85
90
|
maxWidth,
|
|
86
91
|
height: height || 'max-content',
|
|
@@ -89,9 +94,9 @@ export function Modal(props: ModalProps) {
|
|
|
89
94
|
>
|
|
90
95
|
{children}
|
|
91
96
|
{hasCloseButton && <ModalCloseButton onClick={onRequestClose} />}
|
|
92
|
-
</
|
|
93
|
-
|
|
94
|
-
</
|
|
97
|
+
</DialogContents>
|
|
98
|
+
</DialogRoot>
|
|
99
|
+
</Portal>
|
|
95
100
|
);
|
|
96
101
|
}
|
|
97
102
|
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
useState,
|
|
11
11
|
RefObject,
|
|
12
12
|
useReducer,
|
|
13
|
+
useEffect,
|
|
13
14
|
} from 'react';
|
|
14
15
|
import useResizeObserver from 'use-resize-observer';
|
|
15
16
|
|
|
@@ -37,10 +38,10 @@ export interface SplitPaneProps {
|
|
|
37
38
|
*/
|
|
38
39
|
controlledSide?: SplitPaneSide;
|
|
39
40
|
/**
|
|
40
|
-
*
|
|
41
|
+
* size of the controlled side. Unit can be either '%' or 'px'.
|
|
41
42
|
* @default '50%'
|
|
42
43
|
*/
|
|
43
|
-
|
|
44
|
+
size?: SplitPaneSize;
|
|
44
45
|
/**
|
|
45
46
|
* Defines whether the pane is initially closed.
|
|
46
47
|
* A value of `true` means the pane is always initially closed.
|
|
@@ -52,7 +53,7 @@ export interface SplitPaneProps {
|
|
|
52
53
|
* no longer open or close automatically.
|
|
53
54
|
* @default false
|
|
54
55
|
*/
|
|
55
|
-
|
|
56
|
+
closed?: boolean | number;
|
|
56
57
|
/**
|
|
57
58
|
* Called whenever the user finishes resizing the pane.
|
|
58
59
|
*/
|
|
@@ -78,25 +79,39 @@ export function SplitPane(props: SplitPaneProps) {
|
|
|
78
79
|
const {
|
|
79
80
|
direction = 'horizontal',
|
|
80
81
|
controlledSide = 'start',
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
size = '50%',
|
|
83
|
+
closed = false,
|
|
83
84
|
onResize,
|
|
84
85
|
onToggle,
|
|
85
86
|
children,
|
|
86
87
|
} = props;
|
|
87
88
|
|
|
88
|
-
const minimumSize = typeof
|
|
89
|
+
const minimumSize = typeof closed === 'number' ? closed : null;
|
|
89
90
|
|
|
90
91
|
// Whether the pane is explicitly closed. If the value is `false`, the pane
|
|
91
92
|
// may still be currently closed because it is smaller than the minimum size.
|
|
92
93
|
const [isPaneClosed, closePane, openPane] = useOnOff(
|
|
93
|
-
typeof
|
|
94
|
+
typeof closed === 'boolean' ? closed : false,
|
|
94
95
|
);
|
|
95
96
|
|
|
96
97
|
// Whether the user has already interacted with the pane.
|
|
97
98
|
const [hasTouched, touch] = useReducer(() => true, false);
|
|
98
99
|
|
|
99
|
-
const [[
|
|
100
|
+
const [[splitSize, sizeType], setSize] = useState(() => parseSize(size));
|
|
101
|
+
|
|
102
|
+
useEffect(() => {
|
|
103
|
+
setSize(parseSize(size));
|
|
104
|
+
}, [size]);
|
|
105
|
+
|
|
106
|
+
useEffect(() => {
|
|
107
|
+
if (typeof closed === 'boolean') {
|
|
108
|
+
if (closed) {
|
|
109
|
+
closePane();
|
|
110
|
+
} else {
|
|
111
|
+
openPane();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}, [closePane, closed, openPane]);
|
|
100
115
|
|
|
101
116
|
const splitterRef = useRef<HTMLDivElement>(null);
|
|
102
117
|
const { onMouseDown } = useSplitPaneSize({
|
|
@@ -148,7 +163,7 @@ export function SplitPane(props: SplitPaneProps) {
|
|
|
148
163
|
isFinalClosed,
|
|
149
164
|
controlledSide === side,
|
|
150
165
|
direction,
|
|
151
|
-
|
|
166
|
+
splitSize,
|
|
152
167
|
sizeType,
|
|
153
168
|
);
|
|
154
169
|
}
|
|
@@ -214,12 +229,12 @@ function SplitSide(props: SplitSideProps) {
|
|
|
214
229
|
return <div style={style}>{children}</div>;
|
|
215
230
|
}
|
|
216
231
|
|
|
217
|
-
function parseSize(
|
|
218
|
-
const
|
|
219
|
-
|
|
220
|
-
|
|
232
|
+
function parseSize(size: string): [number, SplitPaneType] {
|
|
233
|
+
const value = Number.parseFloat(size);
|
|
234
|
+
// remove numbers and dots from the string
|
|
235
|
+
const type = size.replace(/[\d .]/g, '') as SplitPaneType;
|
|
221
236
|
|
|
222
|
-
return [
|
|
237
|
+
return [value, type];
|
|
223
238
|
}
|
|
224
239
|
|
|
225
240
|
const flexBase = 100;
|