cloudmr-ux 2.0.6 → 3.0.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 (206) hide show
  1. package/README.md +24 -24
  2. package/dist/CmrComponents/CmrButton/CmrButton.css +0 -0
  3. package/dist/CmrComponents/CmrButton/CmrButton.d.ts +4 -0
  4. package/dist/CmrComponents/CmrButton/CmrButton.js +30 -0
  5. package/dist/CmrComponents/CmrButton/index.d.ts +1 -0
  6. package/dist/CmrComponents/CmrButton/index.js +1 -0
  7. package/dist/CmrComponents/CmrCheckbox/CmrCheckbox.css +29 -0
  8. package/dist/CmrComponents/CmrCheckbox/CmrCheckbox.d.ts +14 -0
  9. package/dist/CmrComponents/CmrCheckbox/CmrCheckbox.js +30 -0
  10. package/dist/CmrComponents/CmrCheckbox/index.d.ts +1 -0
  11. package/dist/CmrComponents/CmrCheckbox/index.js +1 -0
  12. package/dist/CmrComponents/CmrColorPicker/CmrColorPicker.d.ts +8 -0
  13. package/dist/CmrComponents/CmrColorPicker/CmrColorPicker.js +29 -0
  14. package/dist/CmrComponents/CmrColorPicker/CmrColorPicker.scss +27 -0
  15. package/dist/CmrComponents/CmrInput/CmrInput.css +27 -0
  16. package/dist/CmrComponents/CmrInput/CmrInput.d.ts +17 -0
  17. package/dist/CmrComponents/CmrInput/CmrInput.js +29 -0
  18. package/dist/CmrComponents/CmrInput/index.d.ts +1 -0
  19. package/dist/CmrComponents/CmrInput/index.js +1 -0
  20. package/dist/CmrComponents/CmrRadioGroup/CmrRadioGroup.css +25 -0
  21. package/dist/CmrComponents/CmrRadioGroup/CmrRadioGroup.d.ts +15 -0
  22. package/dist/CmrComponents/CmrRadioGroup/CmrRadioGroup.js +37 -0
  23. package/dist/CmrComponents/CmrRadioGroup/index.d.ts +1 -0
  24. package/dist/CmrComponents/CmrRadioGroup/index.js +1 -0
  25. package/dist/CmrComponents/CmrSelect/CmrSelect.css +1 -0
  26. package/dist/CmrComponents/CmrSelect/CmrSelect.d.ts +24 -0
  27. package/dist/CmrComponents/CmrSelect/CmrSelect.js +46 -0
  28. package/dist/CmrComponents/CmrSelect/index.d.ts +1 -0
  29. package/dist/CmrComponents/CmrSelect/index.js +1 -0
  30. package/dist/CmrComponents/checkbox/Checkbox.css +8 -0
  31. package/dist/CmrComponents/checkbox/Checkbox.d.ts +15 -0
  32. package/dist/CmrComponents/checkbox/Checkbox.js +25 -0
  33. package/dist/CmrComponents/collapse/Collapse.css +3 -0
  34. package/dist/CmrComponents/collapse/Collapse.d.ts +18 -0
  35. package/dist/CmrComponents/collapse/Collapse.js +87 -0
  36. package/dist/CmrComponents/dialogue/Confirmation.d.ts +20 -0
  37. package/dist/CmrComponents/dialogue/Confirmation.js +36 -0
  38. package/dist/CmrComponents/dialogue/DeletionDialog.d.ts +4 -0
  39. package/dist/CmrComponents/dialogue/DeletionDialog.js +39 -0
  40. package/dist/CmrComponents/dialogue/EditConfirmation.d.ts +13 -0
  41. package/dist/CmrComponents/dialogue/EditConfirmation.js +45 -0
  42. package/dist/CmrComponents/double-slider/DualSlider.d.ts +21 -0
  43. package/dist/CmrComponents/double-slider/DualSlider.js +152 -0
  44. package/dist/CmrComponents/double-slider/InvertibleDualSlider.d.ts +24 -0
  45. package/dist/CmrComponents/double-slider/InvertibleDualSlider.js +174 -0
  46. package/dist/CmrComponents/gui-slider/ControlledSlider.d.ts +9 -0
  47. package/dist/CmrComponents/gui-slider/ControlledSlider.js +96 -0
  48. package/dist/CmrComponents/gui-slider/Slider.d.ts +20 -0
  49. package/dist/CmrComponents/gui-slider/Slider.js +127 -0
  50. package/dist/CmrComponents/header/Header.d.ts +17 -0
  51. package/dist/CmrComponents/header/Header.js +90 -0
  52. package/dist/CmrComponents/header/Header.scss +32 -0
  53. package/dist/CmrComponents/input-number/InputNumber.css +0 -0
  54. package/dist/CmrComponents/input-number/InputNumber.d.ts +17 -0
  55. package/dist/CmrComponents/input-number/InputNumber.js +30 -0
  56. package/dist/CmrComponents/label/Label.css +13 -0
  57. package/dist/CmrComponents/label/Label.d.ts +9 -0
  58. package/dist/CmrComponents/label/Label.js +18 -0
  59. package/dist/CmrComponents/panel/Panel.css +5 -0
  60. package/dist/CmrComponents/panel/Panel.d.ts +12 -0
  61. package/dist/CmrComponents/panel/Panel.js +42 -0
  62. package/dist/CmrComponents/rename/edit.d.ts +7 -0
  63. package/dist/CmrComponents/rename/edit.js +117 -0
  64. package/dist/CmrComponents/select-upload/SelectUpload.css +26 -0
  65. package/dist/CmrComponents/select-upload/SelectUpload.d.ts +33 -0
  66. package/dist/CmrComponents/select-upload/SelectUpload.js +90 -0
  67. package/dist/CmrComponents/tk-dualrange/TKDualRange.d.ts +17 -0
  68. package/dist/CmrComponents/tk-dualrange/TKDualRange.js +65 -0
  69. package/dist/CmrComponents/tk-dualrange/tk-dual-range.css +140 -0
  70. package/dist/CmrComponents/tooltip/Tooltip.css +0 -0
  71. package/dist/CmrComponents/tooltip/Tooltip.d.ts +18 -0
  72. package/dist/CmrComponents/tooltip/Tooltip.js +30 -0
  73. package/dist/CmrComponents/upload/Upload.css +5 -0
  74. package/dist/CmrComponents/upload/Upload.d.ts +80 -0
  75. package/dist/CmrComponents/upload/Upload.js +185 -0
  76. package/dist/CmrComponents/upload/UploadWindow.d.ts +15 -0
  77. package/dist/CmrComponents/upload/UploadWindow.js +286 -0
  78. package/dist/CmrTable/CmrTable.css +26 -0
  79. package/dist/CmrTable/CmrTable.d.ts +13 -0
  80. package/dist/CmrTable/CmrTable.js +47 -0
  81. package/dist/CmrTabs/CmrTabs.d.ts +7 -0
  82. package/dist/CmrTabs/CmrTabs.js +64 -0
  83. package/dist/CmrTabs/tab.model.d.ts +12 -0
  84. package/dist/CmrTabs/tab.model.js +1 -0
  85. package/dist/core/app/main/Main.d.ts +6 -0
  86. package/dist/core/app/main/Main.js +18 -0
  87. package/dist/core/app/results/Logs.d.ts +1 -0
  88. package/dist/core/app/results/Logs.js +33 -0
  89. package/dist/core/app/results/PreprocessJob.d.ts +1 -0
  90. package/dist/core/app/results/PreprocessJob.js +100 -0
  91. package/dist/core/app/results/Results.d.ts +15 -0
  92. package/dist/core/app/results/Results.js +372 -0
  93. package/dist/core/app/results/Results.scss +92 -0
  94. package/dist/core/app/results/Rois.d.ts +11 -0
  95. package/dist/core/app/results/Rois.js +269 -0
  96. package/dist/core/app/settings/Settings.d.ts +1 -0
  97. package/dist/core/app/settings/Settings.js +109 -0
  98. package/dist/core/app/signin/ForgotPassword.d.ts +3 -0
  99. package/dist/core/app/signin/ForgotPassword.js +142 -0
  100. package/dist/core/app/signin/Register.d.ts +3 -0
  101. package/dist/core/app/signin/Register.js +126 -0
  102. package/dist/core/app/signin/Signin.d.ts +5 -0
  103. package/dist/core/app/signin/Signin.js +84 -0
  104. package/dist/core/app/signin/Signin.scss +86 -0
  105. package/dist/core/app/upload/Upload.d.ts +3 -0
  106. package/dist/core/app/upload/Upload.js +261 -0
  107. package/dist/core/app/upload/Upload.scss +0 -0
  108. package/dist/core/common/components/CmrColorPicker/CmrColorPicker.d.ts +8 -0
  109. package/dist/core/common/components/CmrColorPicker/CmrColorPicker.js +29 -0
  110. package/dist/core/common/components/CmrColorPicker/CmrColorPicker.scss +27 -0
  111. package/dist/core/common/components/NiivueTools/Niivue.css +8 -0
  112. package/dist/core/common/components/NiivueTools/Niivue.d.ts +14 -0
  113. package/dist/core/common/components/NiivueTools/Niivue.js +1270 -0
  114. package/dist/core/common/components/NiivueTools/NiivuePatcher.js +1875 -0
  115. package/dist/core/common/components/NiivueTools/components/ColorPicker.d.ts +5 -0
  116. package/dist/core/common/components/NiivueTools/components/ColorPicker.js +68 -0
  117. package/dist/core/common/components/NiivueTools/components/DrawPlatte.d.ts +10 -0
  118. package/dist/core/common/components/NiivueTools/components/DrawPlatte.js +88 -0
  119. package/dist/core/common/components/NiivueTools/components/DrawToolKit.d.ts +32 -0
  120. package/dist/core/common/components/NiivueTools/components/DrawToolKit.js +164 -0
  121. package/dist/core/common/components/NiivueTools/components/EraserPlatte.d.ts +10 -0
  122. package/dist/core/common/components/NiivueTools/components/EraserPlatte.js +43 -0
  123. package/dist/core/common/components/NiivueTools/components/Layer.d.ts +10 -0
  124. package/dist/core/common/components/NiivueTools/components/Layer.js +117 -0
  125. package/dist/core/common/components/NiivueTools/components/LayersPanel.d.ts +8 -0
  126. package/dist/core/common/components/NiivueTools/components/LayersPanel.js +108 -0
  127. package/dist/core/common/components/NiivueTools/components/LocationTable.d.ts +9 -0
  128. package/dist/core/common/components/NiivueTools/components/LocationTable.js +42 -0
  129. package/dist/core/common/components/NiivueTools/components/MaskPlatte.d.ts +10 -0
  130. package/dist/core/common/components/NiivueTools/components/MaskPlatte.js +123 -0
  131. package/dist/core/common/components/NiivueTools/components/NiivuePanel.d.ts +34 -0
  132. package/dist/core/common/components/NiivueTools/components/NiivuePanel.js +305 -0
  133. package/dist/core/common/components/NiivueTools/components/NumberPicker.d.ts +8 -0
  134. package/dist/core/common/components/NiivueTools/components/NumberPicker.js +40 -0
  135. package/dist/core/common/components/NiivueTools/components/SettingsPanel.d.ts +7 -0
  136. package/dist/core/common/components/NiivueTools/components/SettingsPanel.js +30 -0
  137. package/dist/core/common/components/NiivueTools/components/Switch.d.ts +5 -0
  138. package/dist/core/common/components/NiivueTools/components/Switch.js +26 -0
  139. package/dist/core/common/components/NiivueTools/components/Toolbar.d.ts +40 -0
  140. package/dist/core/common/components/NiivueTools/components/Toolbar.js +184 -0
  141. package/dist/core/common/components/NiivueTools/components/Toolbar.scss +39 -0
  142. package/dist/core/common/components/NiivueTools/components/stats.d.ts +2 -0
  143. package/dist/core/common/components/NiivueTools/components/stats.js +13 -0
  144. package/dist/core/common/components/NiivueTools/index.css +14 -0
  145. package/dist/core/common/components/NiivueTools/util.js +309 -0
  146. package/dist/core/common/components/footer/Footer.d.ts +3 -0
  147. package/dist/core/common/components/footer/Footer.js +20 -0
  148. package/dist/core/common/components/footer/Footer.scss +5 -0
  149. package/dist/core/common/utilities/AuthenticatedRequests.d.ts +16 -0
  150. package/dist/core/common/utilities/AuthenticatedRequests.js +158 -0
  151. package/dist/core/common/utilities/CalendarHelper.d.ts +5 -0
  152. package/dist/core/common/utilities/CalendarHelper.js +27 -0
  153. package/dist/core/common/utilities/DownloadFromText.d.ts +3 -0
  154. package/dist/core/common/utilities/DownloadFromText.js +20 -0
  155. package/dist/core/common/utilities/StoreToRequest.d.ts +1 -0
  156. package/dist/core/common/utilities/StoreToRequest.js +4 -0
  157. package/dist/core/common/utilities/SystemUtilities.d.ts +4 -0
  158. package/dist/core/common/utilities/SystemUtilities.js +79 -0
  159. package/dist/core/common/utilities/file-transformation/anonymize.d.ts +1 -0
  160. package/dist/core/common/utilities/file-transformation/anonymize.js +114 -0
  161. package/dist/core/common/utilities/file-transformation/utilities.d.ts +2 -0
  162. package/dist/core/common/utilities/file-transformation/utilities.js +23 -0
  163. package/dist/core/common/utilities/index.d.ts +25 -0
  164. package/dist/core/common/utilities/index.js +118 -0
  165. package/dist/core/common/utilities/parse-jwt.d.ts +1 -0
  166. package/dist/core/common/utilities/parse-jwt.js +14 -0
  167. package/dist/core/components/PasswordRequirements.d.ts +7 -0
  168. package/dist/core/components/PasswordRequirements.js +30 -0
  169. package/dist/core/config/AppConfig.d.ts +5 -0
  170. package/dist/core/config/AppConfig.js +42 -0
  171. package/dist/core/config/types.d.ts +40 -0
  172. package/dist/core/config/types.js +1 -0
  173. package/dist/core/features/authenticate/authenticateActionCreation.d.ts +46 -0
  174. package/dist/core/features/authenticate/authenticateActionCreation.js +326 -0
  175. package/dist/core/features/authenticate/authenticateSlice.d.ts +45 -0
  176. package/dist/core/features/authenticate/authenticateSlice.js +203 -0
  177. package/dist/core/features/data/dataActionCreation.d.ts +40 -0
  178. package/dist/core/features/data/dataActionCreation.js +340 -0
  179. package/dist/core/features/data/dataSlice.d.ts +37 -0
  180. package/dist/core/features/data/dataSlice.js +87 -0
  181. package/dist/core/features/jobs/jobActionCreation.d.ts +35 -0
  182. package/dist/core/features/jobs/jobActionCreation.js +242 -0
  183. package/dist/core/features/jobs/jobsSlice.d.ts +57 -0
  184. package/dist/core/features/jobs/jobsSlice.js +54 -0
  185. package/dist/core/features/rois/resultActionCreation.d.ts +21 -0
  186. package/dist/core/features/rois/resultActionCreation.js +114 -0
  187. package/dist/core/features/rois/resultSlice.d.ts +24 -0
  188. package/dist/core/features/rois/resultSlice.js +68 -0
  189. package/dist/core/features/rois/roiTypes.d.ts +44 -0
  190. package/dist/core/features/rois/roiTypes.js +1 -0
  191. package/dist/core/features/setup/setupActionCreation.d.ts +7 -0
  192. package/dist/core/features/setup/setupActionCreation.js +100 -0
  193. package/dist/core/index.d.ts +22 -0
  194. package/dist/core/index.js +27 -0
  195. package/dist/core/store/configureStore.d.ts +13 -0
  196. package/dist/core/store/configureStore.js +38 -0
  197. package/dist/core/store/hooks.d.ts +11 -0
  198. package/dist/core/store/hooks.js +5 -0
  199. package/dist/core/utils/passwordValidation.d.ts +25 -0
  200. package/dist/core/utils/passwordValidation.js +19 -0
  201. package/dist/index.d.ts +29 -329
  202. package/dist/index.js +26 -1402
  203. package/dist/style.css +47 -0
  204. package/package.json +309 -41
  205. package/dist/index.css +0 -170
  206. package/dist/index.mjs +0 -1354
@@ -0,0 +1,87 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ import { jsx as _jsx } from "react/jsx-runtime";
22
+ import React, { cloneElement } from "react";
23
+ import "./Collapse.css";
24
+ var CmrCollapse = function (props) {
25
+ var activeKey = props.activeKey, defaultActiveKey = props.defaultActiveKey, onChange = props.onChange, children = props.children;
26
+ defaultActiveKey = defaultActiveKey || [];
27
+ var _a = React.useState(defaultActiveKey), activeKeys = _a[0], setActiveKeys = _a[1];
28
+ // Sync activeKey prop with state
29
+ React.useEffect(function () {
30
+ if (activeKey !== undefined && activeKey !== activeKeys) {
31
+ if (Array.isArray(activeKey)) {
32
+ setActiveKeys(activeKey);
33
+ }
34
+ else {
35
+ setActiveKeys([activeKey]);
36
+ }
37
+ }
38
+ }, [activeKey]);
39
+ // Handle toggling panels
40
+ var onToggle = function (key) {
41
+ var newKeys = __spreadArray([], activeKeys, true);
42
+ var keyIndex = newKeys.indexOf(key);
43
+ if (keyIndex === -1) {
44
+ newKeys.push(key);
45
+ }
46
+ else {
47
+ newKeys.splice(keyIndex, 1);
48
+ }
49
+ setActiveKeys(newKeys);
50
+ if (onChange)
51
+ onChange(newKeys);
52
+ };
53
+ // Render children
54
+ var renderChildren = function () {
55
+ if (!children)
56
+ return null;
57
+ if (Array.isArray(children)) {
58
+ return children.map(function (child, index) {
59
+ var panelKey = index;
60
+ var expanded = activeKeys.includes(panelKey).toString();
61
+ // Make header clickable
62
+ var header = (_jsx("div", __assign({ onClick: function () { return onToggle(panelKey); }, style: { cursor: "pointer" } }, { children: child.props.header })));
63
+ return (_jsx(React.Fragment, { children: cloneElement(child, {
64
+ expanded: expanded,
65
+ // panelKey,
66
+ onToggle: onToggle,
67
+ header: header
68
+ }) }, panelKey));
69
+ });
70
+ }
71
+ else {
72
+ // Handle single child case
73
+ var panelKey_1 = 0;
74
+ var expanded = activeKeys.includes(panelKey_1);
75
+ // Make header clickable
76
+ var header = (_jsx("div", __assign({ onClick: function () { return onToggle(panelKey_1); }, style: { cursor: "pointer" } }, { children: children.props.header })));
77
+ return cloneElement(children, {
78
+ expanded: expanded,
79
+ // panelKey,
80
+ onToggle: onToggle,
81
+ header: header
82
+ });
83
+ }
84
+ };
85
+ return (_jsx("div", __assign({ className: "cmr-collapse" }, { children: _jsx("div", { children: renderChildren() }) })));
86
+ };
87
+ export default CmrCollapse;
@@ -0,0 +1,20 @@
1
+ type ExtraButton = {
2
+ text: string;
3
+ color?: "inherit" | "primary" | "secondary" | "success" | "error" | "info" | "warning";
4
+ onClick: () => void;
5
+ };
6
+ export default function CmrConfirmation({ name, message, cancelText, confirmText, color, open, setOpen, confirmCallback, cancelCallback, cancellable, width, extraButtons, }: {
7
+ name: string | undefined;
8
+ message: string | undefined;
9
+ cancelText?: string;
10
+ confirmText?: string;
11
+ color?: "inherit" | "primary" | "secondary" | "success" | "error" | "info" | "warning";
12
+ open: boolean;
13
+ setOpen: (open: boolean) => void;
14
+ confirmCallback?: () => void;
15
+ cancelCallback?: () => void;
16
+ cancellable?: boolean;
17
+ width?: number;
18
+ extraButtons?: ExtraButton[];
19
+ }): import("react/jsx-runtime").JSX.Element;
20
+ export {};
@@ -0,0 +1,36 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import Dialog from '@mui/material/Dialog';
14
+ import DialogActions from '@mui/material/DialogActions';
15
+ import DialogContent from '@mui/material/DialogContent';
16
+ import DialogContentText from '@mui/material/DialogContentText';
17
+ import DialogTitle from '@mui/material/DialogTitle';
18
+ import CmrButton from '../CmrButton/CmrButton';
19
+ export default function CmrConfirmation(_a) {
20
+ var name = _a.name, message = _a.message, _b = _a.cancelText, cancelText = _b === void 0 ? 'Cancel' : _b, _c = _a.confirmText, confirmText = _c === void 0 ? 'Confirm' : _c, color = _a.color, open = _a.open, setOpen = _a.setOpen, _d = _a.confirmCallback, confirmCallback = _d === void 0 ? function () { } : _d, _e = _a.cancelCallback, cancelCallback = _e === void 0 ? function () { } : _e, _f = _a.cancellable, cancellable = _f === void 0 ? false : _f, width = _a.width, _g = _a.extraButtons, extraButtons = _g === void 0 ? [] : _g;
21
+ var handleClose = function () {
22
+ setOpen(false);
23
+ };
24
+ var handleConfirm = function () {
25
+ confirmCallback();
26
+ handleClose();
27
+ };
28
+ var handleCancel = function () {
29
+ cancelCallback();
30
+ handleClose();
31
+ };
32
+ return (_jsxs(Dialog, __assign({ open: open, onClose: handleClose }, { children: [_jsx(DialogTitle, { children: name ? name : 'Confirmation' }), _jsxs(DialogContent, __assign({ sx: { width: width } }, { children: [_jsx(DialogContentText, __assign({ alignContent: 'center' }, { children: message })), _jsxs(DialogActions, __assign({ className: 'mt-4' }, { children: [cancellable && (_jsx(CmrButton, __assign({ variant: "outlined", onClick: handleCancel }, { children: cancelText }))), extraButtons.map(function (btn, idx) { return (_jsx(CmrButton, __assign({ variant: "outlined", color: btn.color || 'success', onClick: function () {
33
+ btn.onClick();
34
+ handleClose();
35
+ } }, { children: btn.text }), idx)); }), _jsx(CmrButton, __assign({ variant: "contained", color: color, onClick: handleConfirm }, { children: confirmText }))] }))] }))] })));
36
+ }
@@ -0,0 +1,4 @@
1
+ export default function CmrDeletionDialog(props: {
2
+ name: string | undefined;
3
+ deletionCallback: () => void;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,39 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import * as React from 'react';
14
+ import TextField from '@mui/material/TextField';
15
+ import Dialog from '@mui/material/Dialog';
16
+ import DialogActions from '@mui/material/DialogActions';
17
+ import DialogContent from '@mui/material/DialogContent';
18
+ import DialogContentText from '@mui/material/DialogContentText';
19
+ import DialogTitle from '@mui/material/DialogTitle';
20
+ export default function CmrDeletionDialog(props) {
21
+ var _a = React.useState(true), open = _a[0], setOpen = _a[1];
22
+ var _b = React.useState(''), text = _b[0], setText = _b[1];
23
+ var handleClickOpen = function () {
24
+ setOpen(true);
25
+ };
26
+ var handleClose = function () {
27
+ setOpen(false);
28
+ };
29
+ var handleConfirm = function () {
30
+ if (text === props.name) {
31
+ props.deletionCallback();
32
+ setOpen(false);
33
+ }
34
+ };
35
+ var handleTextFieldChange = function (e) {
36
+ setText(e.target.value);
37
+ };
38
+ return (_jsx("div", { children: _jsxs(Dialog, __assign({ open: open, onClose: handleClose }, { children: [_jsx(DialogTitle, { children: "Confirmation" }), _jsxs(DialogContent, { children: [_jsx(DialogContentText, { children: "To delete the files, please type your full name below and confirm." }), _jsx(TextField, { autoFocus: true, margin: "dense", id: "name", type: "email", placeholder: props.name, fullWidth: true, inputProps: { style: { fontSize: "16pt" } }, variant: "standard", onChange: handleTextFieldChange })] }), _jsxs(DialogActions, { children: [_jsx("button", __assign({ className: 'btn btn-secondary', onClick: handleClose }, { children: "Cancel" })), _jsx("button", __assign({ className: 'btn btn-danger', onClick: handleConfirm }, { children: "Confirm" }))] })] })) }));
39
+ }
@@ -0,0 +1,13 @@
1
+ export interface EditConfirmationProps {
2
+ name?: string;
3
+ defaultText?: string;
4
+ message?: string;
5
+ color?: "inherit" | "primary" | "secondary" | "success" | "error" | "info" | "warning";
6
+ open: boolean;
7
+ setOpen: (open: boolean) => void;
8
+ confirmCallback?: (text: string) => void;
9
+ cancellable?: boolean;
10
+ cancelCallback?: (edit: string) => void;
11
+ suffix?: string;
12
+ }
13
+ export default function CmrEditConfirmation({ name, message, defaultText, color, open, setOpen, confirmCallback, cancellable, cancelCallback, suffix }: EditConfirmationProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,45 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import * as React from 'react';
14
+ import TextField from '@mui/material/TextField';
15
+ import Dialog from '@mui/material/Dialog';
16
+ import DialogActions from '@mui/material/DialogActions';
17
+ import DialogContent from '@mui/material/DialogContent';
18
+ import DialogContentText from '@mui/material/DialogContentText';
19
+ import DialogTitle from '@mui/material/DialogTitle';
20
+ import CmrButton from '../CmrButton/CmrButton';
21
+ import { InputAdornment } from '@mui/material';
22
+ import { useEffect } from "react";
23
+ export default function CmrEditConfirmation(_a) {
24
+ var name = _a.name, message = _a.message, _b = _a.defaultText, defaultText = _b === void 0 ? '' : _b, color = _a.color, open = _a.open, setOpen = _a.setOpen, _c = _a.confirmCallback, confirmCallback = _c === void 0 ? function () { } : _c, _d = _a.cancellable, cancellable = _d === void 0 ? false : _d, _e = _a.cancelCallback, cancelCallback = _e === void 0 ? function () { } : _e, _f = _a.suffix, suffix = _f === void 0 ? '' : _f;
25
+ var _g = React.useState(defaultText), text = _g[0], setText = _g[1];
26
+ useEffect(function () {
27
+ if (open)
28
+ setText(defaultText);
29
+ }, [open]);
30
+ var handleClose = function () {
31
+ setOpen(false);
32
+ };
33
+ var handleConfirm = function () {
34
+ confirmCallback(text + suffix);
35
+ handleClose();
36
+ };
37
+ var handleCancel = function () {
38
+ cancelCallback(text + suffix);
39
+ handleClose();
40
+ };
41
+ return (_jsxs(Dialog, __assign({ maxWidth: "xs", fullWidth: true, open: open, onClose: handleCancel }, { children: [_jsx(DialogTitle, { children: name ? name : 'Confirmation' }), _jsxs(DialogContent, { children: [_jsx(DialogContentText, __assign({ alignContent: 'center' }, { children: message })), _jsx(DialogActions, { children: _jsx(TextField, { fullWidth: true, variant: 'standard', InputProps: {
42
+ endAdornment: (_jsx(InputAdornment, __assign({ position: "end", sx: { whiteSpace: 'nowrap' } }, { children: suffix })))
43
+ }, defaultValue: text, onChange: function (e) { return setText(e.target.value); } }) }), _jsxs(DialogActions, { children: [cancellable &&
44
+ _jsx(CmrButton, __assign({ variant: "outlined", onClick: handleCancel }, { children: "Cancel" })), _jsx(CmrButton, __assign({ variant: "contained", color: color, onClick: handleConfirm }, { children: "Confirm" }))] })] })] })));
45
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * This dual slider (lil-gui styled) allows users to control the max and min of an interval simultaneously.
3
+ * The rendered interval (and number control) can be masked by a transformation - inverse pair.
4
+ * @param name
5
+ * @param min
6
+ * @param max
7
+ * @param setMin
8
+ * @param setMax
9
+ * @param transform transform and inverse are a pair that masks the rendered values and rendered inputs by a transformation
10
+ * @param inverse transform and inverse are a pair that masks the rendered values and rendered inputs by a transformation
11
+ * @constructor
12
+ */
13
+ export declare const DualSlider: ({ name, min, max, setMin, setMax, transform, inverse }: {
14
+ name: string;
15
+ min: number;
16
+ max: number;
17
+ setMin?: ((min: number) => void) | undefined;
18
+ setMax?: ((max: number) => void) | undefined;
19
+ transform?: ((x: number) => number) | undefined;
20
+ inverse?: ((x: number) => number) | undefined;
21
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,152 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { Box } from "@mui/material";
14
+ import { useRef, useState } from "react";
15
+ /**
16
+ * This dual slider (lil-gui styled) allows users to control the max and min of an interval simultaneously.
17
+ * The rendered interval (and number control) can be masked by a transformation - inverse pair.
18
+ * @param name
19
+ * @param min
20
+ * @param max
21
+ * @param setMin
22
+ * @param setMax
23
+ * @param transform transform and inverse are a pair that masks the rendered values and rendered inputs by a transformation
24
+ * @param inverse transform and inverse are a pair that masks the rendered values and rendered inputs by a transformation
25
+ * @constructor
26
+ */
27
+ export var DualSlider = function (_a) {
28
+ var name = _a.name, min = _a.min, max = _a.max, setMin = _a.setMin, setMax = _a.setMax, _b = _a.transform, transform = _b === void 0 ? function (x) { return x; } : _b, _c = _a.inverse, inverse = _c === void 0 ? function (x) { return x; } : _c;
29
+ var _d = useState(0), leftSliderPosition = _d[0], setLeftSliderPosition = _d[1]; // Initial percentage for the left slider
30
+ var _e = useState(100), rightSliderPosition = _e[0], setRightSliderPosition = _e[1]; // Initial percentage for the right slider
31
+ var _f = useState(false), isHovering = _f[0], setIsHovering = _f[1];
32
+ var _g = useState(false), leftEditing = _g[0], setLeftEditing = _g[1];
33
+ var _h = useState(undefined), minOverride = _h[0], setMinOverride = _h[1];
34
+ var _j = useState(undefined), maxOverride = _j[0], setMaxOverride = _j[1];
35
+ if (minOverride)
36
+ min = minOverride;
37
+ if (maxOverride)
38
+ max = maxOverride;
39
+ var a = transform((max - min) * leftSliderPosition / 100 + min);
40
+ var b = transform((max - min) * rightSliderPosition / 100 + min);
41
+ var left = Math.min(a, b);
42
+ var right = Math.max(a, b);
43
+ var sliderRef = useRef(null); // Ref for the parent box
44
+ var handleDragStart = function (e, slider) {
45
+ // Prevent default behavior
46
+ e.preventDefault();
47
+ setLeftEditing(false);
48
+ setLeftIsNaN(false);
49
+ leftRef.current.blur();
50
+ setRightEditing(false);
51
+ setRightIsNaN(false);
52
+ rightRef.current.blur();
53
+ // Calculate initial positions
54
+ var startX = e.clientX;
55
+ // @ts-ignore
56
+ var sliderWidth = sliderRef.current.offsetWidth;
57
+ var handleMouseMove = function (e) {
58
+ var moveX = e.clientX - startX;
59
+ var newPosition = ((moveX / sliderWidth) * 100) + (slider === 'left' ? leftSliderPosition : rightSliderPosition);
60
+ // Prevent the slider from going outside the parent box
61
+ var clampedPosition = Math.min(100, Math.max(0, newPosition));
62
+ // Update the position of the slider
63
+ if (slider === 'left') {
64
+ setLeftSliderPosition(clampedPosition);
65
+ var a_1 = (max - min) * clampedPosition / 100 + min;
66
+ var b_1 = (max - min) * rightSliderPosition / 100 + min;
67
+ setMin && setMin(Math.min(a_1, b_1));
68
+ setMax && setMax(Math.max(a_1, b_1));
69
+ }
70
+ else if (slider === 'right') {
71
+ setRightSliderPosition(clampedPosition);
72
+ var a_2 = (max - min) * leftSliderPosition / 100 + min;
73
+ var b_2 = (max - min) * clampedPosition / 100 + min;
74
+ setMin && setMin(Math.min(a_2, b_2));
75
+ setMax && setMax(Math.max(a_2, b_2));
76
+ }
77
+ };
78
+ var handleMouseUp = function () {
79
+ // Remove event listeners once dragging is complete
80
+ document.removeEventListener('mousemove', handleMouseMove);
81
+ document.removeEventListener('mouseup', handleMouseUp);
82
+ };
83
+ // Add mouse move and mouse up listeners to document to handle drag
84
+ document.addEventListener('mousemove', handleMouseMove);
85
+ document.addEventListener('mouseup', handleMouseUp);
86
+ };
87
+ var leftText = Math.abs(left) < 0.01 && left != 0 ? Number(left).toExponential(3).toUpperCase() : Number(left).toFixed(3);
88
+ var _k = useState(''), leftEditedText = _k[0], setLeftEditedText = _k[1];
89
+ var _l = useState(false), leftIsNaN = _l[0], setLeftIsNaN = _l[1];
90
+ var leftRef = useRef(null);
91
+ var _m = useState(false), rightEditing = _m[0], setRightEditing = _m[1];
92
+ var _o = useState(''), rightEditedText = _o[0], setRightEditedText = _o[1];
93
+ var _p = useState(false), rightIsNaN = _p[0], setRightIsNaN = _p[1];
94
+ var rightRef = useRef(null);
95
+ // Logic to handle right value box editing...
96
+ var rightText = Math.abs(right) < 0.01 && right != 0 ? Number(right).toExponential(3).toUpperCase() : Number(right).toFixed(3);
97
+ return _jsxs(Box, __assign({ sx: { display: 'flex', flexDirection: 'row', paddingLeft: '4px', paddingRight: '4px' }, height: 20 }, { children: [_jsx(Box, __assign({ flex: 0.322, fontSize: 16, color: '#3D3D3D', alignItems: 'center', display: 'flex', marginBottom: '1pt', fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif' }, { children: name })), _jsxs(Box, __assign({ sx: { display: 'flex', flexDirection: 'row' }, flex: 1 }, { children: [_jsx("input", { ref: leftRef, style: { backgroundColor: '#f0f0f0', width: '45px', borderRadius: '2px', outline: "none", borderStyle: 'none', paddingLeft: '3px', paddingRight: '3px', lineHeight: '20px',
98
+ whiteSpace: 'nowrap', fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif', fontSize: '11px', color: leftIsNaN ? 'red' : 'black' }, value: (leftEditing) ? leftEditedText : leftText, onKeyDown: function (e) {
99
+ if (e.key === 'Enter' && !leftIsNaN) {
100
+ //@ts-ignore
101
+ e.target.blur(); // This will cause the input to lose focus
102
+ }
103
+ }, onFocus: function (e) {
104
+ setLeftEditedText(e.target.value);
105
+ setLeftEditing(true);
106
+ }, onChange: function (event) {
107
+ setLeftIsNaN(isNaN(Number(event.target.value)));
108
+ setLeftEditedText(event.target.value);
109
+ }, onBlur: function (e) {
110
+ var val = inverse(Number(leftEditedText));
111
+ if (isNaN(val)) {
112
+ return e.preventDefault();
113
+ }
114
+ setLeftEditing(false);
115
+ setMin && setMin(val);
116
+ var newMin = min;
117
+ if (val < min) {
118
+ setMinOverride(val);
119
+ newMin = val;
120
+ }
121
+ var leftPosition = (val - newMin) / (max - newMin) * 100;
122
+ setLeftSliderPosition(leftPosition);
123
+ } }), _jsxs(Box, __assign({ sx: { backgroundColor: '#f0f0f0', flex: 1, marginLeft: '4px', marginRight: '4px', borderRadius: '2px', position: 'relative',
124
+ overflow: 'hidden', opacity: isHovering ? 0.75 : 1
125
+ }, ref: sliderRef, onMouseEnter: function () { return setIsHovering(true); }, onMouseLeave: function () { return setIsHovering(false); } }, { children: [_jsx(Box, __assign({ sx: { position: 'absolute', left: "calc(".concat(leftSliderPosition * 0.97, "% - 10px)"), width: '20px', height: '100%', cursor: 'ew-resize', zIndex: 1 }, onMouseDown: function (e) { return handleDragStart(e, 'left'); } }, { children: _jsx(Box, { sx: { position: 'absolute', left: '10px', width: '2px', height: '100%', backgroundColor: 'black' } }) })), _jsx(Box, __assign({ sx: { position: 'absolute', right: "calc(".concat((100 - rightSliderPosition) * 0.97, "% - 10px)"), width: '20px', height: '100%', cursor: 'ew-resize', zIndex: 1 }, onMouseDown: function (e) { return handleDragStart(e, 'right'); } }, { children: _jsx(Box, { sx: { position: 'absolute', right: '10px', width: '2px', height: '100%', backgroundColor: 'black' } }) }))] })), _jsx("input", { style: { backgroundColor: '#f0f0f0', width: '45px', borderRadius: '2px', outline: "none", borderStyle: 'none', paddingLeft: '3px', paddingRight: '3px', lineHeight: '20px',
126
+ whiteSpace: 'nowrap', fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif', fontSize: '11px', color: rightIsNaN ? 'red' : 'black' }, value: (rightEditing) ? rightEditedText : rightText, ref: rightRef, onKeyDown: function (e) {
127
+ if (e.key === 'Enter' && !rightIsNaN) {
128
+ //@ts-ignore
129
+ e.target.blur(); // This will cause the input to lose focus
130
+ }
131
+ }, onFocus: function (e) {
132
+ setRightEditedText(e.target.value);
133
+ setRightEditing(true);
134
+ }, onChange: function (event) {
135
+ setRightIsNaN(isNaN(Number(event.target.value)));
136
+ setRightEditedText(event.target.value);
137
+ }, onBlur: function (e) {
138
+ var val = inverse(Number(rightEditedText));
139
+ if (isNaN(val)) {
140
+ return e.preventDefault();
141
+ }
142
+ setRightEditing(false);
143
+ setMax && setMax(val);
144
+ var newMax = max;
145
+ if (val > max) {
146
+ setMaxOverride(val);
147
+ newMax = val;
148
+ }
149
+ var rightPosition = (val - min) / (newMax - min) * 100;
150
+ setRightSliderPosition(rightPosition);
151
+ } })] }))] }));
152
+ };
@@ -0,0 +1,24 @@
1
+ /**
2
+ * This dual slider (lil-gui styled) allows users to control the max and min of an interval simultaneously.
3
+ * The rendered interval (and number control) can be masked by a transformation - inverse pair.
4
+ * @param name
5
+ * @param min
6
+ * @param max
7
+ * @param setMin
8
+ * @param setMax
9
+ * @param reverse
10
+ * @param transform transform and inverse are a pair that masks the rendered values and rendered inputs by a transformation
11
+ * @param inverse transform and inverse are a pair that masks the rendered values and rendered inputs by a transformation
12
+ * @constructor
13
+ */
14
+ export declare const InvertibleDualSlider: ({ name, min, max, setMin, setMax, reverse, transform, inverse, onFinalize }: {
15
+ name: string;
16
+ min: number;
17
+ max: number;
18
+ setMin?: ((min: number) => void) | undefined;
19
+ setMax?: ((max: number) => void) | undefined;
20
+ reverse?: boolean | undefined;
21
+ transform?: ((x: number) => number) | undefined;
22
+ inverse?: ((x: number) => number) | undefined;
23
+ onFinalize?: (() => void) | undefined;
24
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,174 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { Box } from "@mui/material";
14
+ import { useEffect, useRef, useState } from "react";
15
+ /**
16
+ * This dual slider (lil-gui styled) allows users to control the max and min of an interval simultaneously.
17
+ * The rendered interval (and number control) can be masked by a transformation - inverse pair.
18
+ * @param name
19
+ * @param min
20
+ * @param max
21
+ * @param setMin
22
+ * @param setMax
23
+ * @param reverse
24
+ * @param transform transform and inverse are a pair that masks the rendered values and rendered inputs by a transformation
25
+ * @param inverse transform and inverse are a pair that masks the rendered values and rendered inputs by a transformation
26
+ * @constructor
27
+ */
28
+ export var InvertibleDualSlider = function (_a) {
29
+ var name = _a.name, min = _a.min, max = _a.max, setMin = _a.setMin, setMax = _a.setMax, _b = _a.reverse, reverse = _b === void 0 ? false : _b, _c = _a.transform, transform = _c === void 0 ? function (x) { return x; } : _c, _d = _a.inverse, inverse = _d === void 0 ? function (x) { return x; } : _d, onFinalize = _a.onFinalize;
30
+ var _e = useState(0), leftSliderPosition = _e[0], setLeftSliderPosition = _e[1]; // Initial percentage for the left slider
31
+ var _f = useState(100), rightSliderPosition = _f[0], setRightSliderPosition = _f[1]; // Initial percentage for the right slider
32
+ useEffect(function () {
33
+ setMin && setMin(min);
34
+ setMax && setMax(max);
35
+ setLeftSliderPosition(0);
36
+ setRightSliderPosition(100);
37
+ }, [min, max]);
38
+ var _g = useState(false), isHovering = _g[0], setIsHovering = _g[1];
39
+ var _h = useState(false), leftEditing = _h[0], setLeftEditing = _h[1];
40
+ var _j = useState(undefined), minOverride = _j[0], setMinOverride = _j[1];
41
+ var _k = useState(undefined), maxOverride = _k[0], setMaxOverride = _k[1];
42
+ if (minOverride)
43
+ min = minOverride;
44
+ if (maxOverride)
45
+ max = maxOverride;
46
+ var a = transform((max - min) * leftSliderPosition / 100 + min);
47
+ var b = transform((max - min) * rightSliderPosition / 100 + min);
48
+ var left = Math.min(a, b);
49
+ var right = Math.max(a, b);
50
+ var sliderRef = useRef(null); // Ref for the parent box
51
+ var handleDragStart = function (e, slider) {
52
+ // Prevent default behavior
53
+ e.preventDefault();
54
+ setLeftEditing(false);
55
+ setLeftIsNaN(false);
56
+ leftRef.current.blur();
57
+ setRightEditing(false);
58
+ setRightIsNaN(false);
59
+ rightRef.current.blur();
60
+ // Calculate initial positions
61
+ var startX = e.clientX;
62
+ // @ts-ignore
63
+ var sliderWidth = sliderRef.current.offsetWidth;
64
+ var handleMouseMove = function (e) {
65
+ var moveX = e.clientX - startX;
66
+ var newPosition = ((moveX / sliderWidth) * 100) + (slider === 'left' ? leftSliderPosition : rightSliderPosition);
67
+ // Prevent the slider from going outside the parent box
68
+ var clampedPosition = Math.min(100, Math.max(0, newPosition));
69
+ // Update the position of the slider
70
+ if (slider === 'left') {
71
+ setLeftSliderPosition(clampedPosition);
72
+ var a_1 = (max - min) * clampedPosition / 100 + min;
73
+ var b_1 = (max - min) * rightSliderPosition / 100 + min;
74
+ setMin && setMin(Math.min(a_1, b_1));
75
+ setMax && setMax(Math.max(a_1, b_1));
76
+ }
77
+ else if (slider === 'right') {
78
+ setRightSliderPosition(clampedPosition);
79
+ var a_2 = (max - min) * leftSliderPosition / 100 + min;
80
+ var b_2 = (max - min) * clampedPosition / 100 + min;
81
+ setMin && setMin(Math.min(a_2, b_2));
82
+ setMax && setMax(Math.max(a_2, b_2));
83
+ }
84
+ };
85
+ var handleMouseUp = function () {
86
+ // Remove event listeners once dragging is complete
87
+ document.removeEventListener('mousemove', handleMouseMove);
88
+ document.removeEventListener('mouseup', handleMouseUp);
89
+ onFinalize && onFinalize();
90
+ };
91
+ // Add mouse move and mouse up listeners to document to handle drag
92
+ document.addEventListener('mousemove', handleMouseMove);
93
+ document.addEventListener('mouseup', handleMouseUp);
94
+ };
95
+ var leftText = Math.abs(left) < 0.01 && left != 0 ? Number(left).toExponential(3).toUpperCase() : Number(left).toFixed(3);
96
+ var _l = useState(''), leftEditedText = _l[0], setLeftEditedText = _l[1];
97
+ var _m = useState(false), leftIsNaN = _m[0], setLeftIsNaN = _m[1];
98
+ var leftRef = useRef(null);
99
+ var _o = useState(false), rightEditing = _o[0], setRightEditing = _o[1];
100
+ var _p = useState(''), rightEditedText = _p[0], setRightEditedText = _p[1];
101
+ var _q = useState(false), rightIsNaN = _q[0], setRightIsNaN = _q[1];
102
+ var rightRef = useRef(null);
103
+ // Logic to handle right value box editing...
104
+ var rightText = Math.abs(right) < 0.01 && right != 0 ? Number(right).toExponential(3).toUpperCase() : Number(right).toFixed(3);
105
+ return _jsxs(Box, __assign({ sx: { display: 'flex', flexDirection: 'row', paddingLeft: '4px', paddingRight: '4px' }, height: 27 }, { children: [name != '' && _jsx(Box, __assign({ fontSize: 16, marginRight: '5pt', color: 'white', alignItems: 'center', display: 'flex', marginBottom: '1pt', fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif' }, { children: name })), _jsxs(Box, __assign({ sx: { display: 'flex', flexDirection: 'row' }, flex: 1 }, { children: [_jsx("input", { ref: leftRef, style: { backgroundColor: '#ffffff', width: '45px', borderRadius: '2px', outline: "none", borderStyle: 'none', paddingLeft: '3px', paddingRight: '3px', lineHeight: '20px',
106
+ whiteSpace: 'nowrap', fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif', fontSize: '11px', color: leftIsNaN ? 'red' : 'black' }, value: (leftEditing) ? leftEditedText : leftText, onKeyDown: function (e) {
107
+ if (e.key === 'Enter' && !leftIsNaN) {
108
+ //@ts-ignore
109
+ e.target.blur(); // This will cause the input to lose focus
110
+ }
111
+ }, onFocus: function (e) {
112
+ setLeftEditedText(e.target.value);
113
+ setLeftEditing(true);
114
+ }, onChange: function (event) {
115
+ setLeftIsNaN(isNaN(Number(event.target.value)));
116
+ setLeftEditedText(event.target.value);
117
+ }, onBlur: function (e) {
118
+ var val = inverse(Number(leftEditedText));
119
+ if (isNaN(val)) {
120
+ return e.preventDefault();
121
+ }
122
+ setLeftEditing(false);
123
+ setMin && setMin(val);
124
+ var newMin = min;
125
+ if (val < min) {
126
+ setMinOverride(val);
127
+ newMin = val;
128
+ }
129
+ var leftPosition = (val - newMin) / (max - newMin) * 100;
130
+ setLeftSliderPosition(leftPosition);
131
+ onFinalize && onFinalize();
132
+ } }), _jsxs(Box, __assign({ sx: { backgroundColor: '#ffffff', flex: 1, marginLeft: '4px', marginRight: '4px', borderRadius: '2px', position: 'relative',
133
+ overflow: 'hidden'
134
+ }, ref: sliderRef, onMouseEnter: function () { return setIsHovering(true); }, onMouseLeave: function () { return setIsHovering(false); } }, { children: [!reverse && _jsx(Box, { sx: { backgroundColor: isHovering ? '#b9deff' : '#8ec7ff',
135
+ height: '100%', position: 'absolute',
136
+ left: "calc(".concat(Math.min(leftSliderPosition, rightSliderPosition + 3) * 0.97, "%)"),
137
+ right: "calc(".concat((100 - Math.max(leftSliderPosition - 3, rightSliderPosition)) * 0.97, "%)"),
138
+ zIndex: 1 } }), reverse && _jsx(Box, { sx: { backgroundColor: isHovering ? '#b9deff' : '#8ec7ff',
139
+ height: '100%', position: 'absolute',
140
+ left: "calc(".concat(Math.max(leftSliderPosition, rightSliderPosition + 3) * 0.97, "%)"),
141
+ right: "0",
142
+ zIndex: 1 } }), reverse && _jsx(Box, { sx: { backgroundColor: isHovering ? '#b9deff' : '#8ec7ff',
143
+ height: '100%', position: 'absolute',
144
+ left: "0",
145
+ right: "calc(".concat((100 - Math.min(leftSliderPosition - 3, rightSliderPosition)) * 0.97, "%)"),
146
+ zIndex: 1 } }), _jsx(Box, __assign({ sx: { position: 'absolute', left: "calc(".concat(leftSliderPosition * 0.97, "% - 10px)"), width: '20px', height: '100%', cursor: 'ew-resize', zIndex: 1 }, onMouseDown: function (e) { return handleDragStart(e, 'left'); } }, { children: _jsx(Box, { sx: { position: 'absolute', left: '10px', width: '2px', height: '100%', backgroundColor: '#2e9eff' } }) })), _jsx(Box, __assign({ sx: { position: 'absolute', right: "calc(".concat((100 - rightSliderPosition) * 0.97, "% - 10px)"), width: '20px', height: '100%', cursor: 'ew-resize', zIndex: 1 }, onMouseDown: function (e) { return handleDragStart(e, 'right'); } }, { children: _jsx(Box, { sx: { position: 'absolute', right: '10px', width: '2px', height: '100%', backgroundColor: '#2e9eff' } }) }))] })), _jsx("input", { style: { backgroundColor: '#ffffff', width: '45px', borderRadius: '2px', outline: "none", borderStyle: 'none', paddingLeft: '3px', paddingRight: '3px', lineHeight: '20px',
147
+ whiteSpace: 'nowrap', fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif', fontSize: '11px', color: rightIsNaN ? 'red' : 'black' }, value: (rightEditing) ? rightEditedText : rightText, ref: rightRef, onKeyDown: function (e) {
148
+ if (e.key === 'Enter' && !rightIsNaN) {
149
+ //@ts-ignore
150
+ e.target.blur(); // This will cause the input to lose focus
151
+ }
152
+ }, onFocus: function (e) {
153
+ setRightEditedText(e.target.value);
154
+ setRightEditing(true);
155
+ }, onChange: function (event) {
156
+ setRightIsNaN(isNaN(Number(event.target.value)));
157
+ setRightEditedText(event.target.value);
158
+ }, onBlur: function (e) {
159
+ var val = inverse(Number(rightEditedText));
160
+ if (isNaN(val)) {
161
+ return e.preventDefault();
162
+ }
163
+ setRightEditing(false);
164
+ setMax && setMax(val);
165
+ var newMax = max;
166
+ if (val > max) {
167
+ setMaxOverride(val);
168
+ newMax = val;
169
+ }
170
+ var rightPosition = (val - min) / (newMax - min) * 100;
171
+ setRightSliderPosition(rightPosition);
172
+ onFinalize && onFinalize();
173
+ } })] }))] }));
174
+ };
@@ -0,0 +1,9 @@
1
+ export declare const ControlledSlider: ({ name, min, max, setValue, transform, inverse, value }: {
2
+ name: string;
3
+ min: number;
4
+ max: number;
5
+ setValue?: ((value: number) => void) | undefined;
6
+ transform?: ((x: number) => number) | undefined;
7
+ inverse?: ((x: number) => number) | undefined;
8
+ value: number;
9
+ }) => import("react/jsx-runtime").JSX.Element;