cloudmr-ux 2.0.7 → 3.0.2

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,5 @@
1
+ export declare function ColorPicker(props: {
2
+ title: string;
3
+ colorRGB01: number[];
4
+ onSetColor: Function;
5
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,68 @@
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 { Typography } from "@mui/material";
14
+ import { Input } from "@mui/material";
15
+ import { Box } from "@mui/material";
16
+ import React from "react";
17
+ export function ColorPicker(props) {
18
+ var _a = React.useState("#ff0000"), hexColor = _a[0], setHexColor = _a[1];
19
+ React.useEffect(function () {
20
+ var rgb255 = rgb01Torgb255(props.colorRGB01);
21
+ var hex = rgb2Hex(rgb255);
22
+ console.log(props.title);
23
+ console.log(rgb255);
24
+ console.log(hex);
25
+ console.log("end use effect");
26
+ setHexColor(hex);
27
+ }, []);
28
+ function rgb01Torgb255(rgb01) {
29
+ return [
30
+ Math.round(rgb01[0] * 255),
31
+ Math.round(rgb01[1] * 255),
32
+ Math.round(rgb01[2] * 255),
33
+ ];
34
+ }
35
+ function componentToHex(c) {
36
+ var hex = c.toString(16);
37
+ return hex.length == 1 ? "0" + hex : hex;
38
+ }
39
+ function rgb2Hex(rgb255) {
40
+ return ("#" +
41
+ componentToHex(rgb255[0]) +
42
+ componentToHex(rgb255[1]) +
43
+ componentToHex(rgb255[2]));
44
+ }
45
+ function hex2rgb(h) {
46
+ return [
47
+ parseInt(h.substring(1, 3), 16),
48
+ parseInt(h.substring(3, 5), 16),
49
+ parseInt(h.substring(5), 16),
50
+ ];
51
+ }
52
+ function updateColor(event) {
53
+ var hex = event.target.value;
54
+ console.log(hex);
55
+ setHexColor(hex);
56
+ var rgb = hex2rgb(hex);
57
+ var rgb01 = rgb.map(function (val) { return val / 255; });
58
+ props.onSetColor(rgb01);
59
+ }
60
+ return (_jsxs(Box, __assign({ sx: {
61
+ display: "flex"
62
+ }, m: 1 }, { children: [_jsx(Typography, __assign({ style: {
63
+ marginRight: "auto"
64
+ } }, { children: props.title })), _jsx(Input, { disableUnderline: false, autoFocus: false, type: "color", style: {
65
+ width: "50px",
66
+ height: "20px"
67
+ }, onInput: updateColor, value: hexColor })] })));
68
+ }
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ interface DrawPlatteProps {
3
+ expandDrawOptions: boolean;
4
+ updateDrawPen: (e: any) => void;
5
+ setDrawingEnabled: (enabled: boolean) => void;
6
+ brushSize: number;
7
+ updateBrushSize: (size: number) => void;
8
+ }
9
+ declare const DrawPlatte: React.FC<DrawPlatteProps>;
10
+ export default DrawPlatte;
@@ -0,0 +1,88 @@
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 { Stack, IconButton, Slider, Typography } from "@mui/material";
14
+ import FiberManualRecordIcon from "@mui/icons-material/FiberManualRecord";
15
+ import FiberManualRecordOutlinedIcon from "@mui/icons-material/FiberManualRecordOutlined";
16
+ var DrawPlatte = function (_a) {
17
+ var expandDrawOptions = _a.expandDrawOptions, updateDrawPen = _a.updateDrawPen, setDrawingEnabled = _a.setDrawingEnabled, brushSize = _a.brushSize, updateBrushSize = _a.updateBrushSize;
18
+ var options = [
19
+ _jsx(FiberManualRecordOutlinedIcon, { sx: { color: "red" } }),
20
+ _jsx(FiberManualRecordOutlinedIcon, { sx: { color: "green" } }),
21
+ _jsx(FiberManualRecordOutlinedIcon, { sx: { color: "blue" } }),
22
+ _jsx(FiberManualRecordOutlinedIcon, { sx: { color: "yellow" } }),
23
+ _jsx(FiberManualRecordOutlinedIcon, { sx: { color: "cyan" } }),
24
+ _jsx(FiberManualRecordOutlinedIcon, { sx: { color: "#e81ce8" } }),
25
+ ];
26
+ var filledOptions = [
27
+ _jsx(FiberManualRecordIcon, { sx: { color: "red" } }),
28
+ _jsx(FiberManualRecordIcon, { sx: { color: "green" } }),
29
+ _jsx(FiberManualRecordIcon, { sx: { color: "blue" } }),
30
+ _jsx(FiberManualRecordIcon, { sx: { color: "yellow" } }),
31
+ _jsx(FiberManualRecordIcon, { sx: { color: "cyan" } }),
32
+ _jsx(FiberManualRecordIcon, { sx: { color: "#e81ce8" } }),
33
+ ];
34
+ return (_jsxs(Stack, __assign({ style: {
35
+ position: "absolute",
36
+ top: "100%",
37
+ left: 0,
38
+ zIndex: 10,
39
+ border: "".concat(expandDrawOptions ? "1px" : 0, " solid #bbb"),
40
+ maxWidth: expandDrawOptions ? 300 : 0,
41
+ // transition: 'all 0.5s',
42
+ overflow: "hidden",
43
+ borderRadius: "16px",
44
+ borderTopLeftRadius: "6pt",
45
+ borderTopRightRadius: "6pt",
46
+ background: "#333"
47
+ }, direction: "column" }, { children: [_jsxs(Stack, __assign({ sx: { mb: 1 }, alignItems: "center" }, { children: [_jsx(Typography, __assign({ color: "white", noWrap: true, gutterBottom: true, width: "100%", marginLeft: "10pt", fontSize: "11pt", alignItems: "start" }, { children: "Brush Size: ".concat(brushSize) })), _jsx(Slider, { value: brushSize, sx: {
48
+ width: "80%",
49
+ color: "#fff",
50
+ "& .MuiSlider-track": { backgroundColor: "#fff", border: "none" },
51
+ "& .MuiSlider-rail": { backgroundColor: "rgba(255,255,255,0.3)" },
52
+ "& .MuiSlider-thumb": {
53
+ backgroundColor: "#fff",
54
+ border: "2px solid #fff",
55
+ "&:hover, &.Mui-focusVisible, &.Mui-active": {
56
+ boxShadow: "0 0 0 8px rgba(255,255,255,0.16)"
57
+ }
58
+ },
59
+ "& .MuiSlider-mark": { backgroundColor: "#fff" },
60
+ "& .MuiSlider-markActive": { backgroundColor: "#fff" },
61
+ "& .MuiSlider-valueLabel": {
62
+ backgroundColor: "#fff",
63
+ color: "#000"
64
+ }
65
+ }, step: 2, min: 1, max: 15, marks: true, onChange: function (event, value) {
66
+ updateBrushSize(value);
67
+ } })] })), _jsx(Stack
68
+ // style={{
69
+ // border: `${expandDrawOptions ? '1px' : 0} solid #ccc`,
70
+ // maxWidth: expandDrawOptions ? 300 : 0,
71
+ // transition: 'all 0.5s',
72
+ // overflow: 'hidden',
73
+ // borderRadius: '16px'
74
+ // }}
75
+ , __assign({
76
+ // style={{
77
+ // border: `${expandDrawOptions ? '1px' : 0} solid #ccc`,
78
+ // maxWidth: expandDrawOptions ? 300 : 0,
79
+ // transition: 'all 0.5s',
80
+ // overflow: 'hidden',
81
+ // borderRadius: '16px'
82
+ // }}
83
+ direction: "row" }, { children: filledOptions.map(function (value, index) { return (_jsx(IconButton, __assign({ onClick: function () {
84
+ updateDrawPen({ target: { value: index + 1 } });
85
+ setDrawingEnabled(true);
86
+ } }, { children: value }), index)); }) }))] })));
87
+ };
88
+ export default DrawPlatte;
@@ -0,0 +1,32 @@
1
+ import { CSSProperties } from "react";
2
+ import { ROI } from "../../../../features/rois/roiTypes";
3
+ export interface DrawToolkitProps {
4
+ nv: any;
5
+ volumes: {
6
+ url: string;
7
+ name: string;
8
+ }[];
9
+ selectedVolume: number;
10
+ updateDrawPen: (e: any) => void;
11
+ drawPen: number;
12
+ setDrawingEnabled: (enabled: boolean) => void;
13
+ drawingEnabled: boolean;
14
+ rois?: ROI[];
15
+ selectedROI?: number;
16
+ setSelectedROI?: (selected: number) => void;
17
+ saveROI?: () => void;
18
+ changesMade: boolean;
19
+ drawUndo: () => void;
20
+ style?: CSSProperties;
21
+ brushSize: number;
22
+ updateBrushSize: (size: number) => void;
23
+ resampleImage: () => void;
24
+ roiVisible: boolean;
25
+ toggleROIVisible: () => void;
26
+ drawingOpacity: number;
27
+ setDrawingOpacity: (opacity: number) => void;
28
+ labelsVisible?: boolean;
29
+ toggleLabelsVisible?: () => void;
30
+ setDrawingChanged: (changed: boolean) => void;
31
+ }
32
+ export declare const DrawToolkit: (props: DrawToolkitProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,164 @@
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, FormControl, IconButton, Slider, Stack, Tooltip, Typography, FormLabel, } from "@mui/material";
14
+ import BrushIcon from "@mui/icons-material/Brush";
15
+ import AutoFixNormalOutlinedIcon from "@mui/icons-material/AutoFixNormalOutlined";
16
+ import ReplyIcon from "@mui/icons-material/Reply";
17
+ import CameraAltIcon from "@mui/icons-material/CameraAlt";
18
+ import React, { useState } from "react";
19
+ import SvgIcon from "@mui/material/SvgIcon";
20
+ import FiberManualRecordIcon from "@mui/icons-material/FiberManualRecord";
21
+ import FiberManualRecordOutlinedIcon from "@mui/icons-material/FiberManualRecordOutlined";
22
+ import FormatColorFillIcon from "@mui/icons-material/FormatColorFill";
23
+ import DrawPlatte from "./DrawPlatte"; // Adjust the path as per your folder structure
24
+ import DeleteIcon from "@mui/icons-material/Delete";
25
+ import EraserPlatte from "./EraserPlatte";
26
+ import VisibilityIcon from "@mui/icons-material/Visibility";
27
+ import VisibilityOffIcon from "@mui/icons-material/VisibilityOff";
28
+ import OpacityIcon from "@mui/icons-material/Opacity";
29
+ import MaskPlatte from "./MaskPlatte";
30
+ import ClickAwayListener from "@mui/material/ClickAwayListener";
31
+ export var DrawToolkit = function (props) {
32
+ var _a = useState("n"), expandedOption = _a[0], setExpandedOption = _a[1];
33
+ var _b = React.useState(false), expandOpacityOptions = _b[0], setExpandOpacityOptions = _b[1];
34
+ var penColor = ["red", "green", "blue", "yellow", "cyan", "#e81ce8"][(props.drawPen & 7) - 1];
35
+ var filled = props.drawPen > 7;
36
+ function clickPaintBrush() {
37
+ if (expandedOption == "d") {
38
+ setExpandedOption("n");
39
+ }
40
+ else {
41
+ setExpandedOption("d");
42
+ }
43
+ props.setDrawingEnabled(expandedOption != "d");
44
+ }
45
+ function clickEraser() {
46
+ if (expandedOption == "e") {
47
+ setExpandedOption("n");
48
+ }
49
+ else {
50
+ props.updateDrawPen({ target: { value: 8 } });
51
+ setExpandedOption("e");
52
+ }
53
+ props.setDrawingEnabled(expandedOption != "e");
54
+ }
55
+ var _c = useState(undefined), maskColor = _c[0], setMaskColor = _c[1];
56
+ function clickMask() {
57
+ if (expandedOption == "m") {
58
+ setExpandedOption("n");
59
+ }
60
+ else {
61
+ setExpandedOption("m");
62
+ }
63
+ props.setDrawingEnabled(false);
64
+ }
65
+ var options = [
66
+ _jsx(FiberManualRecordOutlinedIcon, { sx: { color: "red" } }),
67
+ _jsx(FiberManualRecordOutlinedIcon, { sx: { color: "green" } }),
68
+ _jsx(FiberManualRecordOutlinedIcon, { sx: { color: "blue" } }),
69
+ _jsx(FiberManualRecordIcon, { sx: { color: "red" } }),
70
+ _jsx(FiberManualRecordIcon, { sx: { color: "green" } }),
71
+ _jsx(FiberManualRecordIcon, { sx: { color: "blue" } }),
72
+ ];
73
+ var eraseOptions = [
74
+ _jsx(FiberManualRecordIcon, {}),
75
+ _jsx(FiberManualRecordOutlinedIcon, {}),
76
+ ];
77
+ return (_jsx(ClickAwayListener, __assign({ onClickAway: function () {
78
+ // close any open popovers/palettes when clicking outside the ROI Tools
79
+ setExpandedOption("n");
80
+ setExpandOpacityOptions(false);
81
+ // also ensure drawing mode is not unexpectedly left enabled
82
+ props.setDrawingEnabled(false);
83
+ } }, { children: _jsxs(Box, __assign({ sx: {
84
+ display: "flex",
85
+ width: "100%",
86
+ flexDirection: "row",
87
+ justifyItems: "center",
88
+ alignItems: "center",
89
+ borderRadius: "4px",
90
+ height: "20pt",
91
+ backgroundColor: "#333"
92
+ }, style: props.style }, { children: [_jsx(FormControl, { children: _jsx(FormLabel, __assign({ component: "legend", className: "ms-2", style: {
93
+ width: "100%",
94
+ textAlign: "center",
95
+ color: "white",
96
+ fontSize: 16,
97
+ fontWeight: 400
98
+ }, sx: {
99
+ marginBottom: 0,
100
+ marginLeft: 2,
101
+ color: "white",
102
+ fontWeight: 500,
103
+ fontSize: 14
104
+ } }, { children: "ROI Tools:" })) }), _jsx(FormControl, { children: _jsxs(Stack, __assign({ direction: "row" }, { children: [_jsx(IconButton, __assign({ "aria-label": "draw", onClick: clickPaintBrush }, { children: _jsx(BrushIcon, { style: {
105
+ color: expandedOption == "d" && penColor != undefined
106
+ ? penColor
107
+ : "white"
108
+ } }) })), _jsx(DrawPlatte, { expandDrawOptions: expandedOption == "d", updateDrawPen: props.updateDrawPen, setDrawingEnabled: props.setDrawingEnabled, brushSize: props.brushSize, updateBrushSize: props.updateBrushSize })] })) }), _jsx(FormControl, { children: _jsxs(Stack, __assign({ direction: "row" }, { children: [_jsx(IconButton, __assign({ "aria-label": "erase", onClick: clickEraser }, { children: filled || !(expandedOption == "e") ? (_jsx(EraserIcon, { style: { color: "#ddd" } })) : (_jsx(AutoFixNormalOutlinedIcon, { style: { color: "white" } })) })), _jsx(EraserPlatte, { expandEraseOptions: expandedOption == "e", updateDrawPen: props.updateDrawPen, setDrawingEnabled: props.setDrawingEnabled, brushSize: props.brushSize, updateBrushSize: props.updateBrushSize })] })) }), _jsx(FormControl, { children: _jsx(Stack, __assign({ direction: "row" }, { children: _jsx(IconButton, __assign({ "aria-label": "revert", onClick: function () {
109
+ props.drawUndo();
110
+ } }, { children: _jsx(ReplyIcon, { style: { color: "white" } }) })) })) }), _jsx(FormControl, { children: _jsx(IconButton, __assign({ "aria-label": "capture", onClick: function () {
111
+ props.nv.saveScene("".concat(props.volumes[props.selectedVolume].name, "_drawing.png"));
112
+ } }, { children: _jsx(CameraAltIcon, { style: { color: "white" } }) })) }), _jsx(FormControl, { children: _jsx(IconButton, __assign({ "aria-label": "delete", onClick: function () {
113
+ // props.nv.closeDrawing();
114
+ // props.nv.setDrawingEnabled(true);
115
+ props.nv.clearDrawing();
116
+ props.resampleImage();
117
+ } }, { children: _jsx(DeleteIcon, { style: { color: "white" } }) })) }), _jsx(Tooltip, __assign({ title: "Region of interests visibility" }, { children: _jsx(FormControl, { children: _jsx(IconButton, __assign({ "aria-label": "visible", onClick: function () {
118
+ props.toggleROIVisible();
119
+ } }, { children: props.roiVisible ? (_jsx(VisibilityIcon, { style: { color: "white" } })) : (_jsx(VisibilityOffIcon, { style: { color: "white" } })) })) }) })), _jsxs(FormControl, __assign({ style: { flexDirection: "row", alignItems: "center", color: "white" } }, { children: [_jsx(Tooltip, __assign({ title: "Region of interests opacity" }, { children: _jsx(IconButton, __assign({ "aria-label": "opaque", onClick: function () {
120
+ setExpandOpacityOptions(!expandOpacityOptions);
121
+ } }, { children: _jsx(OpacityIcon, { style: { color: "white" } }) })) })), "=", " ".concat(props.drawingOpacity), _jsx(OpacityPlatte, { drawingOpacity: props.drawingOpacity, setDrawingOpacity: props.setDrawingOpacity, expanded: expandOpacityOptions })] })), _jsxs(FormControl, { children: [_jsx(Stack, __assign({ direction: "row" }, { children: _jsx(IconButton, __assign({ "aria-label": "fill", onClick: clickMask }, { children: _jsx(FormatColorFillIcon, { style: {
122
+ color: expandedOption == "m" && maskColor != undefined
123
+ ? maskColor
124
+ : "white"
125
+ } }) })) })), _jsx(MaskPlatte, { resampleImage: function () {
126
+ props.resampleImage();
127
+ props.setDrawingChanged(true);
128
+ }, expanded: expandedOption == "m", nv: props.nv, setMaskColor: setMaskColor, unfocus: function () {
129
+ setExpandedOption("n");
130
+ } })] })] })) })));
131
+ };
132
+ /*
133
+ <option value="0">Erase</option>
134
+ <option value="1">Red</option>
135
+ <option value="2">Green</option>
136
+ <option value="3">Blue</option>
137
+ <option value="8">Filled Erase</option>
138
+ <option value="9">Filled Red</option>
139
+ <option value="10">Filled Green</option>
140
+ <option value="11">Filled Blue</option>
141
+ */
142
+ function EraserIcon(props) {
143
+ return (_jsxs(SvgIcon, __assign({}, props, { viewBox: "0 0 25 25" }, { children: [_jsx("rect", { x: "6", y: "3", width: "12", height: "22", rx: "2", ry: "2", transform: "rotate(230 12 12)", fill: "currentColor" }), _jsx("rect", { x: "7", y: "4", width: "10", height: "8", rx: "2", ry: "2", transform: "rotate(230 12 12)", fill: "#FFFFFF" })] })));
144
+ }
145
+ var OpacityPlatte = function (_a) {
146
+ var drawingOpacity = _a.drawingOpacity, setDrawingOpacity = _a.setDrawingOpacity, expanded = _a.expanded;
147
+ return (_jsx(Stack, __assign({ style: {
148
+ position: "absolute",
149
+ top: "100%",
150
+ left: 0,
151
+ zIndex: 10,
152
+ border: "".concat(expanded ? "1px" : 0, " solid #bbb"),
153
+ maxWidth: expanded ? 300 : 0,
154
+ // transition: 'all 0.5s',
155
+ overflow: "hidden",
156
+ borderRadius: "16px",
157
+ borderTopLeftRadius: "6pt",
158
+ borderTopRightRadius: "6pt",
159
+ background: "#333",
160
+ width: 150
161
+ }, direction: "column" }, { children: _jsxs(Stack, __assign({ sx: { mb: 1 }, alignItems: "center" }, { children: [_jsx(Typography, __assign({ color: "white", noWrap: true, gutterBottom: true, width: "100%", marginLeft: "10pt", fontSize: "11pt", alignItems: "start" }, { children: "Opacity: ".concat(drawingOpacity) })), _jsx(Slider, { sx: { width: "80%" }, value: drawingOpacity, step: 0.01, min: 0, max: 1, onChange: function (event, value) {
162
+ setDrawingOpacity(value);
163
+ } })] })) })));
164
+ };
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ interface EraserPlatteProps {
3
+ expandEraseOptions: boolean;
4
+ updateDrawPen: (e: any) => void;
5
+ setDrawingEnabled: (enabled: boolean) => void;
6
+ brushSize: number;
7
+ updateBrushSize: (size: number) => void;
8
+ }
9
+ declare const DrawPlatte: React.FC<EraserPlatteProps>;
10
+ export default DrawPlatte;
@@ -0,0 +1,43 @@
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 { Stack, IconButton, Slider, Typography } from "@mui/material";
14
+ import FiberManualRecordIcon from "@mui/icons-material/FiberManualRecord";
15
+ import FiberManualRecordOutlinedIcon from "@mui/icons-material/FiberManualRecordOutlined";
16
+ var DrawPlatte = function (_a) {
17
+ var expandEraseOptions = _a.expandEraseOptions, updateDrawPen = _a.updateDrawPen, setDrawingEnabled = _a.setDrawingEnabled, brushSize = _a.brushSize, updateBrushSize = _a.updateBrushSize;
18
+ var eraseOptions = [
19
+ _jsx(FiberManualRecordIcon, { style: { color: "white" } }),
20
+ _jsx(FiberManualRecordOutlinedIcon, { style: { color: "white" } }),
21
+ ];
22
+ return (_jsxs(Stack, __assign({ style: {
23
+ position: "absolute",
24
+ top: "100%",
25
+ left: 0,
26
+ zIndex: 10,
27
+ border: "".concat(expandEraseOptions ? "1px" : 0, " solid #bbb"),
28
+ maxWidth: expandEraseOptions ? 300 : 0,
29
+ // transition: 'all 0.5s',
30
+ overflow: "hidden",
31
+ borderRadius: "16px",
32
+ borderTopLeftRadius: "6pt",
33
+ borderTopRightRadius: "6pt",
34
+ background: "#333",
35
+ width: 150
36
+ }, direction: "column" }, { children: [_jsxs(Stack, __assign({ sx: { mb: 1 }, alignItems: "center" }, { children: [_jsx(Typography, __assign({ color: "white", noWrap: true, gutterBottom: true, width: "100%", marginLeft: "10pt", fontSize: "11pt", alignItems: "start" }, { children: "Eraser Size: ".concat(brushSize) })), _jsx(Slider, { sx: { width: "80%" }, value: brushSize, step: 2, min: 1, max: 15, marks: true, onChange: function (event, value) {
37
+ updateBrushSize(value);
38
+ } })] })), _jsx(Stack, __assign({ direction: "row", style: { justifyContent: "center" } }, { children: eraseOptions.map(function (value, index) { return (_jsx(IconButton, __assign({ onClick: function () {
39
+ updateDrawPen({ target: { value: index == 0 ? 8 : 0 } });
40
+ setDrawingEnabled(true);
41
+ } }, { children: value }), index)); }) }))] })));
42
+ };
43
+ export default DrawPlatte;
@@ -0,0 +1,10 @@
1
+ export default function Layer(props: {
2
+ image: any;
3
+ nii: any;
4
+ nv: any;
5
+ getColorMapValues: Function;
6
+ onOpacityChange: Function;
7
+ onRemoveLayer: Function;
8
+ onColorMapChange: Function;
9
+ colorMapValues: any;
10
+ }): import("react/jsx-runtime").JSX.Element;
@@ -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
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { Box, MenuItem } from "@mui/material";
14
+ import { CmrLabel } from "../../../../../index";
15
+ import { Select } from "@mui/material";
16
+ import { InputLabel } from "@mui/material";
17
+ import { FormControl } from "@mui/material";
18
+ import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp";
19
+ import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown";
20
+ import React from "react";
21
+ function makeColorGradients(colorMapValues) {
22
+ var gradients = "";
23
+ var c = colorMapValues;
24
+ var n = c.R.length;
25
+ gradients += "rgba(".concat(c.R[n - 1], ",").concat(c.G[n - 1], ",").concat(c.B[n - 1], ",").concat(1, ")");
26
+ gradients += "linear-gradient(90deg,";
27
+ for (var j = 0; j < n; j++) {
28
+ gradients += "rgba(".concat(c.R[j], ",").concat(c.G[j], ",").concat(c.B[j], ",").concat(1, ") ").concat((j / (n - 1)) * 100, "%,");
29
+ }
30
+ gradients = gradients.slice(0, -1);
31
+ gradients += ")";
32
+ return gradients;
33
+ }
34
+ export default function Layer(props) {
35
+ var allowedColorMaps = [
36
+ "bone",
37
+ "gray",
38
+ "hot",
39
+ "hsv",
40
+ "jet",
41
+ "plasma",
42
+ "turbo",
43
+ "viridis",
44
+ ];
45
+ var image = props.image;
46
+ var nii = props.nii;
47
+ var _a = React.useState(true), detailsOpen = _a[0], setDetailsOpen = _a[1];
48
+ var _b = React.useState(image.colormap), color = _b[0], setColor = _b[1];
49
+ var _c = React.useState(1.0), opacity = _c[0], setOpacity = _c[1];
50
+ var ArrowIcon = detailsOpen ? (_jsx(KeyboardArrowUpIcon, {})) : (_jsx(KeyboardArrowDownIcon, {}));
51
+ // console.log(props.colorMapValues)
52
+ var allColors = props.nv
53
+ .colormaps()
54
+ .filter(function (colorName) { return allowedColorMaps.includes(colorName); })
55
+ .map(function (colorName) {
56
+ return (_jsx(MenuItem, __assign({ value: colorName }, { children: _jsxs(Box, __assign({ sx: {
57
+ display: "flex",
58
+ flexDirection: "row",
59
+ width: "100%"
60
+ } }, { children: [_jsx(Box, __assign({ sx: {
61
+ display: "flex",
62
+ flexDirection: "row"
63
+ } }, { children: colorName })), _jsx(Box, { sx: {
64
+ display: "flex",
65
+ flexDirection: "row",
66
+ width: "20%",
67
+ ml: "auto"
68
+ }, style: {
69
+ background: makeColorGradients(props.getColorMapValues(colorName))
70
+ } })] })) }), colorName));
71
+ });
72
+ function handleDetails() {
73
+ setDetailsOpen(!detailsOpen);
74
+ }
75
+ function handleColorChange(event) {
76
+ var clr = event.target.value;
77
+ var id = image.id;
78
+ console.log(clr);
79
+ console.log(id);
80
+ props.onColorMapChange(id, clr);
81
+ setColor(clr);
82
+ }
83
+ function handleDelete() {
84
+ props.onRemoveLayer(image);
85
+ }
86
+ function handleOpacityChanged(a) {
87
+ setOpacity(a);
88
+ image.opacity = a;
89
+ props.onOpacityChange(a);
90
+ }
91
+ return (_jsx(Box, __assign({ sx: {
92
+ display: "flex",
93
+ flexDirection: "column"
94
+ } }, { children: _jsxs(Box, __assign({ sx: {
95
+ display: detailsOpen ? "flex" : "none",
96
+ flexDirection: "column"
97
+ } }, { children: [_jsxs(Box, __assign({ sx: {
98
+ display: "flex",
99
+ flexDirection: "column",
100
+ height: "100%",
101
+ width: "100%",
102
+ marginBottom: "10px"
103
+ } }, { children: [_jsxs(CmrLabel, __assign({ marginLeft: 2 }, { children: ["Opacity: ", opacity.toFixed(2)] })), _jsx("input", { type: "range", min: 0, max: 1, step: 0.01, value: opacity, onChange: function (e) {
104
+ var v = Math.max(0, Math.min(1, parseFloat(e.target.value) || 0));
105
+ handleOpacityChanged(v); // updates local state, image.opacity, and notifies parent
106
+ }, style: {
107
+ width: "100%",
108
+ alignSelf: "center",
109
+ margin: "8px 0 16px 0",
110
+ accentColor: "#580f8b"
111
+ } })] })), _jsx(Box, __assign({ sx: {
112
+ display: "flex",
113
+ flexDirection: "row",
114
+ justifyContent: "space-between",
115
+ width: "100%"
116
+ } }, { children: _jsxs(FormControl, { children: [_jsx(InputLabel, { children: "Colormap" }), _jsx(Select, __assign({ style: { width: "200px" }, value: color, label: "Colormap", size: "small", onChange: handleColorChange }, { children: allColors }))] }) }))] })) })));
117
+ }
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ export declare function LayersPanel(props: {
3
+ onAddLayer: Function;
4
+ open: boolean;
5
+ children: React.ReactNode;
6
+ onToggleMenu?: React.MouseEventHandler<HTMLButtonElement>;
7
+ width: number;
8
+ }): import("react/jsx-runtime").JSX.Element;