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.
Files changed (34) hide show
  1. package/lib/app/hooks/file-loading.js +7 -1
  2. package/lib/app-data/loaders/loadMeasurements.js +1 -2
  3. package/lib/components/fullscreen/FullscreenContext.js +3 -1
  4. package/lib/components/modal/ConfirmModal.js +13 -10
  5. package/lib/components/modal/Modal.js +11 -8
  6. package/lib/components/split-pane/SplitPane.js +23 -8
  7. package/lib-esm/app/hooks/file-loading.d.ts.map +1 -1
  8. package/lib-esm/app/hooks/file-loading.js +8 -2
  9. package/lib-esm/app/hooks/file-loading.js.map +1 -1
  10. package/lib-esm/app-data/loaders/loadMeasurements.js +1 -2
  11. package/lib-esm/app-data/loaders/loadMeasurements.js.map +1 -1
  12. package/lib-esm/app-data/loaders/utility/getMeasurementInfoFromFile.d.ts +2 -2
  13. package/lib-esm/components/fullscreen/FullscreenContext.d.ts.map +1 -1
  14. package/lib-esm/components/fullscreen/FullscreenContext.js +3 -1
  15. package/lib-esm/components/fullscreen/FullscreenContext.js.map +1 -1
  16. package/lib-esm/components/modal/ConfirmModal.d.ts +1 -1
  17. package/lib-esm/components/modal/ConfirmModal.d.ts.map +1 -1
  18. package/lib-esm/components/modal/ConfirmModal.js +13 -10
  19. package/lib-esm/components/modal/ConfirmModal.js.map +1 -1
  20. package/lib-esm/components/modal/Modal.d.ts +1 -1
  21. package/lib-esm/components/modal/Modal.d.ts.map +1 -1
  22. package/lib-esm/components/modal/Modal.js +11 -8
  23. package/lib-esm/components/modal/Modal.js.map +1 -1
  24. package/lib-esm/components/split-pane/SplitPane.d.ts +3 -3
  25. package/lib-esm/components/split-pane/SplitPane.d.ts.map +1 -1
  26. package/lib-esm/components/split-pane/SplitPane.js +24 -9
  27. package/lib-esm/components/split-pane/SplitPane.js.map +1 -1
  28. package/package.json +34 -34
  29. package/src/app/hooks/file-loading.ts +8 -2
  30. package/src/app-data/loaders/loadMeasurements.ts +1 -4
  31. package/src/components/fullscreen/FullscreenContext.tsx +3 -1
  32. package/src/components/modal/ConfirmModal.tsx +13 -9
  33. package/src/components/modal/Modal.tsx +14 -9
  34. 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 fileCollection = await (0, filelist_utils_1.fileCollectionFromWebservice)(filelistUrl);
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 (typeof variable.min === 'undefined' ||
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 ConfirmModalOpened = styled_1.default.div `
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 8px 16px rgba(0, 0, 0, 0.3);
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
- return ((0, jsx_runtime_1.jsx)(ConfirmModalDialog, { ref: ref, onClick: onClick, children: isOpen ? ((0, jsx_runtime_1.jsxs)(ConfirmModalOpened, { 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: {
54
- basic: 'hsla(243deg, 75%, 58%, 1)',
55
- hover: 'hsla(245deg, 58%, 50%, 1)',
56
- }, color: { basic: 'white' }, children: saveText }), (0, jsx_runtime_1.jsx)(__1.Button, { onClick: onCancel, backgroundColor: {
57
- basic: 'hsla(0deg, 72%, 50%, 1)',
58
- hover: 'hsla(0deg, 73%, 42%, 1)',
59
- }, color: { basic: 'white' }, children: cancelText })] })] })) : null }));
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 DialogOpened = styled_1.default.div `
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 8px 16px rgba(0, 0, 0, 0.3);
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
- return ((0, jsx_runtime_1.jsx)(DialogRoot, { ref: ref, onClick: onClick, children: isOpen ? ((0, jsx_runtime_1.jsxs)(DialogOpened, { style: {
56
- maxWidth,
57
- height: height || 'max-content',
58
- width: width || '100%',
59
- }, children: [children, hasCloseButton && (0, jsx_runtime_1.jsx)(ModalCloseButton_1.default, { onClick: onRequestClose })] })) : null }));
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', initialSize = '50%', initialClosed = false, onResize, onToggle, children, } = props;
21
- const minimumSize = typeof initialClosed === 'number' ? initialClosed : null;
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 initialClosed === 'boolean' ? initialClosed : false);
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 [[size, sizeType], setSize] = (0, react_2.useState)(() => parseSize(initialSize));
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, size, sizeType);
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(initialSize) {
89
- const [, value, type] = /(?<value>^\d+)(?<type>.+)$/.exec(initialSize);
90
- return [Number(value), type];
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,EAAgC,MAAM,gBAAgB,CAAC;AAG9E,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,wEAgB3D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,WAG/B,IAAI,EAAE,UAMjB"}
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 { fileCollectionFromWebservice } from 'filelist-utils';
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 fileCollection = await fileCollectionFromWebservice(filelistUrl);
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,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAC9E,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,cAAc,GAAG,MAAM,4BAA4B,CAAC,WAAW,CAAC,CAAC;YACvE,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"}
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 (typeof variable.min === 'undefined' ||
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,IACE,OAAO,QAAQ,CAAC,GAAG,KAAK,WAAW;gBACnC,OAAO,QAAQ,CAAC,GAAG,KAAK,WAAW,EACnC;gBACA,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
+ {"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"}
@@ -11,8 +11,8 @@ export declare function getMeasurementInfoFromFile({ name, relativePath, lastMod
11
11
  file: {
12
12
  name: string;
13
13
  path: string;
14
- lastModified: number;
15
- size: number;
14
+ lastModified: number | undefined;
15
+ size: number | undefined;
16
16
  };
17
17
  };
18
18
  };
@@ -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;AAOD,wBAAgB,aAAa,gBAE5B;AACD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,eAYxD"}
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":"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"}
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;AAMvC,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;AA0CD,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,eAwDpD"}
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 ConfirmModalOpened = styled.div `
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 8px 16px rgba(0, 0, 0, 0.3);
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
- return (_jsx(ConfirmModalDialog, { ref: ref, onClick: onClick, children: isOpen ? (_jsxs(ConfirmModalOpened, { headerColor: headerColor, style: { maxWidth }, children: [_jsx(ConfirmModalChildrenRoot, { headerColor: headerColor, children: children }), _jsxs(ConfirmModalFooter, { children: [_jsx(Button, { onClick: onConfirm, backgroundColor: {
48
- basic: 'hsla(243deg, 75%, 58%, 1)',
49
- hover: 'hsla(245deg, 58%, 50%, 1)',
50
- }, color: { basic: 'white' }, children: saveText }), _jsx(Button, { onClick: onCancel, backgroundColor: {
51
- basic: 'hsla(0deg, 72%, 50%, 1)',
52
- hover: 'hsla(0deg, 73%, 42%, 1)',
53
- }, color: { basic: 'white' }, children: cancelText })] })] })) : null }));
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;AAE5B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAgBxC,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAA;;;;;;;;CAQvC,CAAC;AAEF,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAEnC;;;;;;;;;;;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,OAAO,CACL,KAAC,kBAAkB,IAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,YAC3C,MAAM,CAAC,CAAC,CAAC,CACR,MAAC,kBAAkB,IAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,aAC/D,KAAC,wBAAwB,IAAC,WAAW,EAAE,WAAW,YAC/C,QAAQ,GACgB,EAE3B,MAAC,kBAAkB,eACjB,KAAC,MAAM,IACL,OAAO,EAAE,SAAS,EAClB,eAAe,EAAE;gCACf,KAAK,EAAE,2BAA2B;gCAClC,KAAK,EAAE,2BAA2B;6BACnC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,YAExB,QAAQ,GACF,EACT,KAAC,MAAM,IACL,OAAO,EAAE,QAAQ,EACjB,eAAe,EAAE;gCACf,KAAK,EAAE,yBAAyB;gCAChC,KAAK,EAAE,yBAAyB;6BACjC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,YAExB,UAAU,GACJ,IACU,IACF,CACtB,CAAC,CAAC,CAAC,IAAI,GACW,CACtB,CAAC;AACJ,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;AAKrD,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;AA2CD,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,eAoCtC;yBApCe,KAAK"}
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 DialogOpened = styled.div `
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 8px 16px rgba(0, 0, 0, 0.3);
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
- return (_jsx(DialogRoot, { ref: ref, onClick: onClick, children: isOpen ? (_jsxs(DialogOpened, { style: {
50
- maxWidth,
51
- height: height || 'max-content',
52
- width: width || '100%',
53
- }, children: [children, hasCloseButton && _jsx(ModalCloseButton, { onClick: onRequestClose })] })) : null }));
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;;;;;;;;CAQ/B,CAAC;AAEF,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;CAU9B,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,OAAO,CACL,KAAC,UAAU,IAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,YACnC,MAAM,CAAC,CAAC,CAAC,CACR,MAAC,YAAY,IACX,KAAK,EAAE;gBACL,QAAQ;gBACR,MAAM,EAAE,MAAM,IAAI,aAAa;gBAC/B,KAAK,EAAE,KAAK,IAAI,MAAM;aACvB,aAEA,QAAQ,EACR,cAAc,IAAI,KAAC,gBAAgB,IAAC,OAAO,EAAE,cAAc,GAAI,IACnD,CAChB,CAAC,CAAC,CAAC,IAAI,GACG,CACd,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"}
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
- * Initial size of the controlled side. Unit can be either '%' or 'px'.
21
+ * size of the controlled side. Unit can be either '%' or 'px'.
22
22
  * @default '50%'
23
23
  */
24
- initialSize?: SplitPaneSize;
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
- initialClosed?: boolean | number;
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,EAMV,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,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACjC;;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,oDAsG9C"}
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', initialSize = '50%', initialClosed = false, onResize, onToggle, children, } = props;
14
- const minimumSize = typeof initialClosed === 'number' ? initialClosed : null;
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 initialClosed === 'boolean' ? initialClosed : false);
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 [[size, sizeType], setSize] = useState(() => parseSize(initialSize));
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, size, sizeType);
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(initialSize) {
81
- const [, value, type] = /(?<value>^\d+)(?<type>.+)$/.exec(initialSize);
82
- return [Number(value), type];
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":"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"}
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.20.1",
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": "16.18.1"
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.5",
65
- "@emotion/styled": "^11.10.5",
66
- "@headlessui/react": "^1.7.4",
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.19.1",
70
- "@tanstack/react-table": "^8.7.0",
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.4.0",
75
- "immer": "^9.0.16",
76
- "jcampconverter": "^9.0.5",
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": "^11.14.0",
82
- "ms-spectrum": "^2.0.0",
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": "^3.1.4",
87
- "react-icons": "^4.7.1",
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.0",
89
+ "react-kbs": "^2.1.1",
90
90
  "react-plot": "^1.4.2",
91
91
  "react-popper": "^2.3.0",
92
- "react-shadow": "^19.0.3",
92
+ "react-shadow": "^20.0.0",
93
93
  "spc-parser": "^0.7.1",
94
- "tinycolor2": "^1.4.2",
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.20.5",
100
- "@babel/eslint-parser": "^7.19.1",
101
- "@ladle/react": "^2.4.5",
102
- "@playwright/experimental-ct-react": "^1.28.1",
103
- "@playwright/test": "^1.28.1",
104
- "@types/babel__core": "^7.1.20",
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.26",
108
- "@types/react-dom": "^18.0.9",
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": "^2.2.0",
111
- "@vitest/coverage-c8": "^0.25.5",
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.29.0",
115
- "eslint-config-zakodium": "^7.0.0",
116
- "prettier": "^2.8.0",
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": "^3.0.2",
121
- "typescript": "^4.9.3",
122
- "vite": "^3.2.5",
123
- "vitest": "^0.25.5"
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, fileCollectionFromWebservice } from 'filelist-utils';
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 fileCollection = await fileCollectionFromWebservice(filelistUrl);
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 ConfirmModalOpened = styled.div<{
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 8px 16px rgba(0, 0, 0, 0.3);
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
- <ConfirmModalDialog ref={ref} onClick={onClick}>
86
- {isOpen ? (
87
- <ConfirmModalOpened headerColor={headerColor} style={{ maxWidth }}>
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
- </ConfirmModalOpened>
115
- ) : null}
116
- </ConfirmModalDialog>
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 DialogOpened = styled.div`
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 8px 16px rgba(0, 0, 0, 0.3);
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
- <DialogRoot ref={ref} onClick={onClick}>
82
- {isOpen ? (
83
- <DialogOpened
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
- </DialogOpened>
93
- ) : null}
94
- </DialogRoot>
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
- * Initial size of the controlled side. Unit can be either '%' or 'px'.
41
+ * size of the controlled side. Unit can be either '%' or 'px'.
41
42
  * @default '50%'
42
43
  */
43
- initialSize?: SplitPaneSize;
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
- initialClosed?: boolean | number;
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
- initialSize = '50%',
82
- initialClosed = false,
82
+ size = '50%',
83
+ closed = false,
83
84
  onResize,
84
85
  onToggle,
85
86
  children,
86
87
  } = props;
87
88
 
88
- const minimumSize = typeof initialClosed === 'number' ? initialClosed : null;
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 initialClosed === 'boolean' ? initialClosed : false,
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 [[size, sizeType], setSize] = useState(() => parseSize(initialSize));
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
- size,
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(initialSize: string): [number, SplitPaneType] {
218
- const [, value, type] = /(?<value>^\d+)(?<type>.+)$/.exec(
219
- initialSize,
220
- ) as unknown as [string, string, SplitPaneType];
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 [Number(value), type];
237
+ return [value, type];
223
238
  }
224
239
 
225
240
  const flexBase = 100;