cloudmr-ux 2.0.7 → 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,117 @@
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
49
+ import * as React from 'react';
50
+ import { Typography, FormControlLabel, Checkbox } from '@mui/material';
51
+ import TextField from '@mui/material/TextField';
52
+ import Dialog from '@mui/material/Dialog';
53
+ import DialogActions from '@mui/material/DialogActions';
54
+ import DialogContent from '@mui/material/DialogContent';
55
+ import DialogTitle from '@mui/material/DialogTitle';
56
+ import CmrButton from '../CmrButton/CmrButton';
57
+ import { useEffect } from "react";
58
+ export default function CmrNameDialog(props) {
59
+ var _this = this;
60
+ var originalName = props.originalName, open = props.open, setOpen = props.setOpen, isDemoData = props.isDemoData;
61
+ var _a = React.useState(''), helperText = _a[0], setHelperText = _a[1];
62
+ var _b = React.useState(originalName), text = _b[0], setText = _b[1];
63
+ var _c = React.useState(false), error = _c[0], setError = _c[1];
64
+ var _d = React.useState(isDemoData !== null && isDemoData !== void 0 ? isDemoData : false), demoDataChecked = _d[0], setDemoDataChecked = _d[1];
65
+ var renamingCallback = props.renamingCallback;
66
+ var handleClose = function () {
67
+ setOpen(false);
68
+ };
69
+ useEffect(function () {
70
+ setText(originalName);
71
+ checkError(originalName);
72
+ setDemoDataChecked(isDemoData !== null && isDemoData !== void 0 ? isDemoData : false);
73
+ }, [originalName, isDemoData]);
74
+ var handleConfirm = function () { return __awaiter(_this, void 0, void 0, function () {
75
+ return __generator(this, function (_a) {
76
+ switch (_a.label) {
77
+ case 0: return [4 /*yield*/, renamingCallback(text, isDemoData !== undefined ? demoDataChecked : undefined)];
78
+ case 1:
79
+ // if(!error)
80
+ if (_a.sent())
81
+ handleClose();
82
+ return [2 /*return*/];
83
+ }
84
+ });
85
+ }); };
86
+ var handleTextFieldChange = function (e) {
87
+ setText(e.target.value);
88
+ checkError(e.target.value);
89
+ };
90
+ var checkError = function (text) {
91
+ var fileNameRegex = /^[a-zA-Z0-9_\-]+\.[a-zA-Z]{1,5}$/;
92
+ var newExtension = text.split('.').pop();
93
+ var orgExtension = (originalName.indexOf('.') >= 0) ? originalName.split('.').pop() : '?';
94
+ if (!fileNameRegex.test(text)) {
95
+ setError(true);
96
+ if (text.indexOf('.') < 0) {
97
+ setHelperText('Invalid file name, needs a valid extension.');
98
+ }
99
+ else {
100
+ setHelperText('Invalid file name, please check.');
101
+ }
102
+ }
103
+ else if (newExtension !== orgExtension) {
104
+ setHelperText("You are modifying your file extension from .".concat(orgExtension, " to .").concat(newExtension, "."));
105
+ setError(false);
106
+ }
107
+ else {
108
+ setError(false);
109
+ setHelperText('');
110
+ }
111
+ };
112
+ return (_jsx("div", { children: _jsxs(Dialog, __assign({ open: open, onClose: handleClose, fullWidth: true, maxWidth: "xs" }, { children: [_jsx(DialogTitle, { children: _jsxs(Typography, { children: [" Rename the file ", originalName, " as:"] }) }), _jsxs(DialogContent, { children: [_jsx(TextField, { autoFocus: true, margin: "dense", id: "name",
113
+ // type="file"
114
+ value: text, onFocus: function (event) {
115
+ event.target.select();
116
+ }, fullWidth: true, inputProps: { style: { fontSize: "16px" } }, variant: "standard", onChange: handleTextFieldChange, error: error, helperText: helperText }), isDemoData !== undefined && (_jsx(FormControlLabel, { control: _jsx(Checkbox, { checked: demoDataChecked, onChange: function (e) { return setDemoDataChecked(e.target.checked); } }), label: "Demo Data", style: { marginTop: '16px' } }))] }), _jsxs(DialogActions, { children: [_jsx(CmrButton, __assign({ variant: "outlined", onClick: handleClose }, { children: "Cancel" })), _jsx(CmrButton, __assign({ variant: "contained", color: 'primary', onClick: handleConfirm }, { children: "Confirm" }))] })] })) }));
117
+ }
@@ -0,0 +1,26 @@
1
+ .cmr-select__control {
2
+ border-color: #ccc;
3
+ font-family: Inter, Roboto, Helvetica, Arial, sans-serif;
4
+ font-weight: 400;
5
+ }
6
+
7
+ .cmr-select__option {
8
+ font-family: Inter, Roboto, Helvetica, Arial, sans-serif;
9
+ font-weight: 400;
10
+ /* color: #000;
11
+ background-color: white; */
12
+ }
13
+
14
+ .cmr-select__single-value {
15
+ /* color: #580F8B; */
16
+ font-weight: 400;
17
+ font-family: Inter, Roboto, Helvetica, Arial, sans-serif;
18
+ }
19
+
20
+ .cmr-select__menu {
21
+ z-index: 9999 !important;
22
+ }
23
+
24
+ .cmr-select__menu-portal {
25
+ z-index: 2000 !important;
26
+ }
@@ -0,0 +1,33 @@
1
+ import { CMRUploadProps } from '../upload/Upload';
2
+ import './SelectUpload.css';
3
+ interface CMRSelectUploadProps extends CMRUploadProps {
4
+ /**
5
+ * A selection of currently uploaded files
6
+ */
7
+ fileSelection: UploadedFile[];
8
+ onSelected: (file?: UploadedFile) => void;
9
+ chosenFile?: string;
10
+ buttonText?: string;
11
+ selectStyles?: any;
12
+ /**
13
+ * Enforces the extension of selected files
14
+ */
15
+ fileExtension?: string | string[];
16
+ }
17
+ interface UploadedFile {
18
+ id: number;
19
+ fileName: string;
20
+ link: string;
21
+ md5?: string;
22
+ size: string;
23
+ status: string;
24
+ createdAt: string;
25
+ updatedAt: string;
26
+ database: string;
27
+ location: string;
28
+ }
29
+ /**
30
+ * Select from a set of uploaded files or upload new
31
+ */
32
+ declare const CMRSelectUpload: (props: CMRSelectUploadProps) => import("react/jsx-runtime").JSX.Element;
33
+ export default CMRSelectUpload;
@@ -0,0 +1,90 @@
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 React, { Fragment } from "react";
14
+ import CMRUpload from '../upload/Upload';
15
+ import { Button } from "@mui/material";
16
+ import Select from 'react-select';
17
+ import Dialog from "@mui/material/Dialog";
18
+ import DialogTitle from "@mui/material/DialogTitle";
19
+ import DialogContent from "@mui/material/DialogContent";
20
+ import DialogContentText from "@mui/material/DialogContentText";
21
+ import Box from "@mui/material/Box";
22
+ import './SelectUpload.css';
23
+ /**
24
+ * Check if there is file extension limit is set
25
+ */
26
+ function checkExtension(filename, allowed) {
27
+ if (!filename || !allowed)
28
+ return true;
29
+ var name = filename.toLowerCase();
30
+ if (Array.isArray(allowed)) {
31
+ return allowed.some(function (ext) { return name.endsWith(ext.startsWith('.') ? ext : '.' + ext); });
32
+ }
33
+ else {
34
+ return name.endsWith(allowed.startsWith('.') ? allowed : '.' + allowed);
35
+ }
36
+ }
37
+ /**
38
+ * Select from a set of uploaded files or upload new
39
+ */
40
+ var CMRSelectUpload = function (props) {
41
+ var _a = React.useState(false), open = _a[0], setOpen = _a[1];
42
+ var _b = React.useState(-1), fileIndex = _b[0], selectFileIndex = _b[1];
43
+ var _c = React.useState(false), uploading = _c[0], setUploading = _c[1];
44
+ var _d = React.useState(0), progress = _d[0], setProgress = _d[1];
45
+ var handleClickOpen = function () {
46
+ selectFileIndex(-1);
47
+ setOpen(true);
48
+ };
49
+ var handleClose = function () {
50
+ setOpen(false);
51
+ };
52
+ // const handleChange = (event: SelectChangeEvent<number>) => {
53
+ // //@ts-ignore
54
+ // selectFileIndex(event.target.value);
55
+ // };
56
+ var onSet = function () {
57
+ props.onSelected(props.fileSelection[fileIndex]);
58
+ setOpen(false);
59
+ };
60
+ var selectionDialog = _jsxs(Dialog, __assign({ open: open, onClose: handleClose }, { children: [_jsx(DialogTitle, { children: "Select or Upload" }), _jsxs(DialogContent, __assign({ sx: { width: 520 } }, { children: [_jsx(DialogContentText, __assign({ sx: { pl: 1, pr: 1, pb: 0 } }, { children: (uploading) ? "Please wait for the upload to finish." : "" })), _jsx(Box, __assign({ sx: { p: 1 } }, { children: _jsx(Select, { classNamePrefix: "cmr-select", isDisabled: uploading, options: props.fileSelection
61
+ .filter(function (file) { return checkExtension(file.fileName, props.fileExtension); })
62
+ .map(function (file) { return ({
63
+ value: file.id,
64
+ label: file.fileName
65
+ }); }), placeholder: "Select a Stored File", onChange: function (selected) {
66
+ if (selected) {
67
+ var index = props.fileSelection.findIndex(function (file) { return file.id === selected.value; });
68
+ selectFileIndex(index);
69
+ }
70
+ else {
71
+ selectFileIndex(-1);
72
+ }
73
+ }, menuPortalTarget: document.body, menuPosition: "fixed", styles: props.selectStyles }) })), _jsxs(Box, __assign({ sx: { pt: 2, justifyContent: 'center', display: 'flex', padding: '8px' } }, { children: [_jsx(Button, __assign({ fullWidth: true, sx: { marginRight: '8px' }, variant: "outlined", onClick: handleClose }, { children: " Cancel" })), (fileIndex !== -1 && !uploading) && _jsx(Button, __assign({ fullWidth: true, variant: "contained", onClick: onSet }, { children: "OK" })), fileIndex == -1 && _jsx(CMRUpload, __assign({}, props, { color: "info", fullWidth: true, onUploaded: function (res, file) {
74
+ console.log("calling Setup level on uploaded");
75
+ console.log(props.onUploaded);
76
+ selectFileIndex(props.fileSelection.length);
77
+ props.onUploaded(res, file);
78
+ setOpen(false);
79
+ }, fileExtension: props.fileExtension, uploadHandler: props.uploadHandler, uploadStarted: function () {
80
+ setUploading(true);
81
+ props.onSelected(undefined);
82
+ }, uploadProgressed: function (progress) {
83
+ setOpen(false);
84
+ setProgress(progress);
85
+ }, uploadEnded: function () { return setUploading(false); } }))] }))] }))] }));
86
+ return _jsxs(Fragment, { children: [uploading ? _jsxs(Button, __assign({ variant: "contained", style: __assign(__assign({}, props.style), { textTransform: 'none' }), sx: { overflowWrap: 'inherit' }, color: 'primary', disabled: uploading }, { children: ["Uploading ", progress, "%"] })) : _jsx(Button, __assign({ variant: (props.chosenFile == undefined) ? "contained" : "outlined", color: "info", onClick: handleClickOpen, sx: { marginRight: '10pt' }, style: __assign(__assign({}, props.style), { textTransform: 'none' }) }, { children: (props.chosenFile == undefined) ?
87
+ (props.buttonText ? props.buttonText : "Choose")
88
+ : props.chosenFile })), selectionDialog] });
89
+ };
90
+ export default CMRSelectUpload;
@@ -0,0 +1,17 @@
1
+ import "./tk-dual-range.css";
2
+ type Props = {
3
+ name?: string;
4
+ minDomain: number;
5
+ maxDomain: number;
6
+ valueLow: number;
7
+ valueHigh: number;
8
+ onChangeLow: (v: number) => void;
9
+ onChangeHigh: (v: number) => void;
10
+ transform?: (x: number) => number;
11
+ inverse?: (y: number) => number;
12
+ step?: number;
13
+ precision?: number;
14
+ accentColor?: string;
15
+ };
16
+ export default function TKDualRange({ name, minDomain, maxDomain, valueLow, valueHigh, onChangeLow, onChangeHigh, transform, inverse, step, precision, accentColor, }: Props): import("react/jsx-runtime").JSX.Element;
17
+ export {};
@@ -0,0 +1,65 @@
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 "./tk-dual-range.css";
14
+ var clamp = function (v, lo, hi) { return Math.max(lo, Math.min(hi, v)); };
15
+ export default function TKDualRange(_a) {
16
+ var _b;
17
+ var _c = _a.name, name = _c === void 0 ? "Values" : _c, minDomain = _a.minDomain, maxDomain = _a.maxDomain, valueLow = _a.valueLow, valueHigh = _a.valueHigh, onChangeLow = _a.onChangeLow, onChangeHigh = _a.onChangeHigh, _d = _a.transform, transform = _d === void 0 ? function (x) { return x; } : _d, _e = _a.inverse, inverse = _e === void 0 ? function (y) { return y; } : _e, step = _a.step, _f = _a.precision, precision = _f === void 0 ? 3 : _f, _g = _a.accentColor, accentColor = _g === void 0 ? "#580f8b" : _g;
18
+ // Map domain & current values into RENDER space (like TestKarts)
19
+ var tMin = transform(minDomain);
20
+ var tMax = transform(maxDomain);
21
+ var tLow = transform(valueLow);
22
+ var tHigh = transform(valueHigh);
23
+ var span = Math.max(1e-12, tMax - tMin);
24
+ var pct = function (t) { return ((t - tMin) / span) * 100; };
25
+ var s = step !== null && step !== void 0 ? step : Math.max(span * 0.001, Number.EPSILON);
26
+ // Keep ends from crossing; clamp in REAL space against the other end
27
+ var handleLowRender = function (nextRender) {
28
+ var nextReal = clamp(inverse(nextRender), minDomain, valueHigh);
29
+ onChangeLow(nextReal);
30
+ };
31
+ var handleHighRender = function (nextRender) {
32
+ var nextReal = clamp(inverse(nextRender), valueLow, maxDomain);
33
+ onChangeHigh(nextReal);
34
+ };
35
+ // Editable inputs show RENDER values (like the article)
36
+ var fmt = function (v) { return (Number.isFinite(v) ? v.toFixed(precision) : ""); };
37
+ var parse = function (s) {
38
+ var n = Number(s);
39
+ return Number.isFinite(n) ? n : NaN;
40
+ };
41
+ return (_jsxs("div", __assign({ className: "tkdr" }, { children: [_jsxs("div", __assign({ className: "tkdr__row tkdr__row--ends" }, { children: [_jsxs("div", __assign({ className: "tkdr__group" }, { children: [_jsx("span", __assign({ className: "tkdr__hint" }, { children: "Min" })), _jsx("input", { className: "tkdr__num", type: "number", step: s, value: fmt(tLow), onChange: function (e) {
42
+ var n = parse(e.target.value);
43
+ if (!Number.isFinite(n))
44
+ return;
45
+ handleLowRender(n);
46
+ }, onBlur: function (e) {
47
+ var n = parse(e.target.value);
48
+ if (!Number.isFinite(n))
49
+ return;
50
+ handleLowRender(n);
51
+ } })] })), _jsxs("div", __assign({ className: "tkdr__group" }, { children: [_jsx("span", __assign({ className: "tkdr__hint" }, { children: "Max" })), _jsx("input", { className: "tkdr__num", type: "number", step: s, value: fmt(tHigh), onChange: function (e) {
52
+ var n = parse(e.target.value);
53
+ if (!Number.isFinite(n))
54
+ return;
55
+ handleHighRender(n);
56
+ }, onBlur: function (e) {
57
+ var n = parse(e.target.value);
58
+ if (!Number.isFinite(n))
59
+ return;
60
+ handleHighRender(n);
61
+ } })] }))] })), _jsxs("div", __assign({ className: "tkdr__track", style: (_b = {}, _b["--tkdr-accent"] = accentColor, _b) }, { children: [_jsx("div", { className: "tkdr__range-fill", style: {
62
+ left: "".concat(pct(Math.min(tLow, tHigh)), "%"),
63
+ width: "".concat(Math.abs(pct(tHigh) - pct(tLow)), "%")
64
+ }, "aria-hidden": true }), _jsx("input", { className: "tkdr__range", type: "range", min: tMin, max: tMax, step: s, value: tLow, onChange: function (e) { return handleLowRender(Number(e.target.value)); } }), _jsx("input", { className: "tkdr__range tkdr__range--top", type: "range", min: tMin, max: tMax, step: s, value: tHigh, onChange: function (e) { return handleHighRender(Number(e.target.value)); } })] }))] })));
65
+ }
@@ -0,0 +1,140 @@
1
+ /* tk-dual-range.css — native-looking, TestKarts-style */
2
+
3
+ .tkdr {
4
+ margin-top: 12px;
5
+ width: 100%;
6
+ user-select: none;
7
+ }
8
+
9
+ .tkdr__row {
10
+ display: flex;
11
+ align-items: center;
12
+ justify-content: space-between;
13
+ gap: 12px;
14
+ margin-bottom: 6px;
15
+ }
16
+
17
+ /* .tkdr__label {
18
+ font-weight: 300;
19
+ } */
20
+
21
+ .tkdr__inputs {
22
+ display: flex;
23
+ align-items: center;
24
+ gap: 6px;
25
+ }
26
+
27
+ .tkdr__num {
28
+ width: 100px;
29
+ padding: 4px 6px;
30
+ border-radius: 6px;
31
+ border: 1px solid #ccc;
32
+ font-size: 0.9rem;
33
+ }
34
+
35
+ .tkdr__dash {
36
+ opacity: 0.75;
37
+ }
38
+
39
+ .tkdr__track {
40
+ position: relative;
41
+ width: 100%;
42
+ height: 28px;
43
+ display: block;
44
+ }
45
+
46
+ .tkdr__range {
47
+ -webkit-appearance: none;
48
+ appearance: none;
49
+ position: absolute;
50
+ inset: 0;
51
+ width: 100%;
52
+ background: transparent;
53
+ margin: 0;
54
+ pointer-events: auto;
55
+ accent-color: var(--tkdr-accent, #580f8b);
56
+ }
57
+
58
+ /* Put the top thumb above the low thumb for easier grabbing */
59
+ .tkdr__range--top {
60
+ z-index: 2;
61
+ }
62
+
63
+ /* Base track */
64
+ .tkdr__track::before {
65
+ content: "";
66
+ position: absolute;
67
+ left: 0;
68
+ right: 0;
69
+ top: 50%;
70
+ height: 8px;
71
+ transform: translateY(-50%);
72
+ background: #e5e5e5; /* light gray base */
73
+ border: 1px solid #b5b5b5; /* subtle native-like border */
74
+ border-radius: 5px; /* same rounded edge as default */
75
+ border-radius: 4px;
76
+ z-index: 0;
77
+ }
78
+
79
+ /* Filled selection */
80
+ .tkdr__range-fill {
81
+ position: absolute;
82
+ top: 50%;
83
+ height: 8px;
84
+ transform: translateY(-50%);
85
+ background: var(--tkdr-accent, #580f8b);
86
+ opacity: 1;
87
+ border-radius: 5px;
88
+ z-index: 1;
89
+ pointer-events: none;
90
+ }
91
+
92
+ /* Thumb styling (keep simple/native-ish) */
93
+ .tkdr__range::-webkit-slider-thumb {
94
+ -webkit-appearance: none;
95
+ appearance: none;
96
+ width: 14px;
97
+ height: 14px;
98
+ background: var(--tkdr-accent, #580f8b);
99
+ border-radius: 50%;
100
+ cursor: pointer;
101
+ }
102
+
103
+ .tkdr__range::-moz-range-thumb {
104
+ width: 14px;
105
+ height: 14px;
106
+ background: var(--tkdr-accent, #580f8b);
107
+ border-radius: 50%;
108
+ cursor: pointer;
109
+ }
110
+
111
+ /* Top (high) slider should NOT intercept clicks except on its thumb */
112
+ .tkdr__range--top {
113
+ pointer-events: none; /* let events fall through to the low slider */
114
+ }
115
+
116
+ /* Re-enable events on the high thumb so it’s still draggable */
117
+ .tkdr__range--top::-webkit-slider-thumb {
118
+ pointer-events: auto;
119
+ }
120
+ .tkdr__range--top::-moz-range-thumb {
121
+ pointer-events: auto;
122
+ }
123
+
124
+
125
+ /* spread the two input groups to the ends */
126
+ .tkdr__row--ends {
127
+ justify-content: space-between;
128
+ }
129
+
130
+ /* group wrapper for caption + input */
131
+ .tkdr__group {
132
+ display: inline-flex;
133
+ align-items: center;
134
+ gap: 6px;
135
+ }
136
+
137
+ /* small, subtle caption */
138
+ .tkdr__hint {
139
+ font-size: 0.85rem;
140
+ }
File without changes
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import './Tooltip.css';
3
+ import { TooltipPlacement } from 'antd/lib/tooltip';
4
+ interface CmrTooltipProps {
5
+ arrowPointAtCenter?: boolean;
6
+ autoAdjustOverflow?: boolean;
7
+ color?: string;
8
+ defaultVisible?: boolean;
9
+ mouseEnterDelay?: number;
10
+ mouseLeaveDelay?: number;
11
+ overlayClassName?: string;
12
+ placement?: TooltipPlacement;
13
+ visible?: boolean;
14
+ title: React.ReactNode;
15
+ overlay?: React.ReactNode;
16
+ }
17
+ declare const CmrTooltip: (props: CmrTooltipProps) => import("react/jsx-runtime").JSX.Element;
18
+ export default CmrTooltip;
@@ -0,0 +1,30 @@
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 __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ import { jsx as _jsx } from "react/jsx-runtime";
24
+ import './Tooltip.css';
25
+ import { Tooltip } from 'antd';
26
+ var CmrTooltip = function (props) {
27
+ var arrowPointAtCenter = props.arrowPointAtCenter, autoAdjustOverflow = props.autoAdjustOverflow, color = props.color, defaultVisible = props.defaultVisible, mouseEnterDelay = props.mouseEnterDelay, mouseLeaveDelay = props.mouseLeaveDelay, overlayClassName = props.overlayClassName, placement = props.placement, visible = props.visible, rest = __rest(props, ["arrowPointAtCenter", "autoAdjustOverflow", "color", "defaultVisible", "mouseEnterDelay", "mouseLeaveDelay", "overlayClassName", "placement", "visible"]);
28
+ return (_jsx(Tooltip, __assign({ arrowPointAtCenter: arrowPointAtCenter, autoAdjustOverflow: autoAdjustOverflow, color: color, defaultVisible: defaultVisible, mouseEnterDelay: mouseEnterDelay, mouseLeaveDelay: mouseLeaveDelay, overlayClassName: overlayClassName, placement: placement, visible: visible }, rest)));
29
+ };
30
+ export default CmrTooltip;
@@ -0,0 +1,5 @@
1
+ .btn-info {
2
+ color: #ffffff; /* Change it to your preferred color */
3
+ --bs-btn-hover-color: #ffffff;
4
+ --bs-btn-color: #ffffff;
5
+ }
@@ -0,0 +1,80 @@
1
+ import React from 'react';
2
+ import './Upload.css';
3
+ import { SxProps, Theme } from '@mui/material';
4
+ import { AxiosRequestConfig, AxiosResponse } from "axios";
5
+ export interface LambdaFile {
6
+ "filename": string;
7
+ "filetype": string;
8
+ "filesize": string;
9
+ "filemd5": string;
10
+ "file": File;
11
+ }
12
+ /**
13
+ * Consists of general settings for upload component
14
+ * functionalities and call back methods evoked
15
+ * for specific interactions
16
+ */
17
+ interface CMRUploadProps extends React.HTMLAttributes<HTMLDivElement> {
18
+ retains?: boolean;
19
+ maxCount: number;
20
+ changeNameAfterUpload?: boolean;
21
+ onRemove?: (removedFile: File) => void;
22
+ /**
23
+ * Allows access to file content prior to uploading.
24
+ * If returned value from the method is false,
25
+ * prevents the file upload process. Called before
26
+ * create payload.
27
+ * @param file
28
+ */
29
+ beforeUpload?: (file: File) => Promise<boolean>;
30
+ /**
31
+ * This or uploadHandler must be specified
32
+ * @param file
33
+ * @param fileAlias
34
+ * @param fileDatabase
35
+ */
36
+ createPayload?: (file: File, fileAlias: string, fileDatabase: string) => (Promise<{
37
+ destination: string;
38
+ lambdaFile: LambdaFile;
39
+ file: File;
40
+ config: AxiosRequestConfig;
41
+ } | undefined>);
42
+ onUploadProgressUpdate?: (loaded: number, total: number) => void | undefined;
43
+ onUploaded: (res: AxiosResponse, file: File) => Promise<void> | void;
44
+ sx?: SxProps<Theme> | undefined;
45
+ rest?: any;
46
+ fileExtension?: string | string[];
47
+ uploadStarted?: () => void;
48
+ uploadEnded?: () => void;
49
+ uploadFailed?: () => void;
50
+ uploadProgressed?: (progress: number) => void;
51
+ /**
52
+ * Override this to replace the default behavior of uploading
53
+ * @param file
54
+ * @param fileAlias
55
+ * @param fileDatabase
56
+ * @param onProgress
57
+ * @param onUploaded
58
+ */
59
+ uploadHandler?: (file: File, fileAlias: string, fileDatabase: string, onProgress?: (progress: number) => void, onUploaded?: (res: AxiosResponse, file: File) => void) => Promise<number>;
60
+ fullWidth?: boolean;
61
+ style?: any;
62
+ /**
63
+ * Displays upload button instead of uploaded file after upload
64
+ * if set to reusable
65
+ */
66
+ reusable?: boolean;
67
+ uploadButtonName?: string;
68
+ /**
69
+ * Processes the uploaded file before performing the upload;
70
+ * @return file/undefined/statuscode undefined to fail the upload, return File
71
+ * to pass the processed file, return number to indicate error code
72
+ * and return to upload window.
73
+ * @param file
74
+ */
75
+ preprocess?: (file: File) => Promise<File | undefined | number>;
76
+ color?: "inherit" | "primary" | "secondary" | "success" | "error" | "info" | "warning";
77
+ }
78
+ declare const CmrUpload: ({ changeNameAfterUpload, ...props }: CMRUploadProps) => import("react/jsx-runtime").JSX.Element;
79
+ export type { CMRUploadProps };
80
+ export default CmrUpload;