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.
- package/README.md +24 -24
- package/dist/CmrComponents/CmrButton/CmrButton.css +0 -0
- package/dist/CmrComponents/CmrButton/CmrButton.d.ts +4 -0
- package/dist/CmrComponents/CmrButton/CmrButton.js +30 -0
- package/dist/CmrComponents/CmrButton/index.d.ts +1 -0
- package/dist/CmrComponents/CmrButton/index.js +1 -0
- package/dist/CmrComponents/CmrCheckbox/CmrCheckbox.css +29 -0
- package/dist/CmrComponents/CmrCheckbox/CmrCheckbox.d.ts +14 -0
- package/dist/CmrComponents/CmrCheckbox/CmrCheckbox.js +30 -0
- package/dist/CmrComponents/CmrCheckbox/index.d.ts +1 -0
- package/dist/CmrComponents/CmrCheckbox/index.js +1 -0
- package/dist/CmrComponents/CmrColorPicker/CmrColorPicker.d.ts +8 -0
- package/dist/CmrComponents/CmrColorPicker/CmrColorPicker.js +29 -0
- package/dist/CmrComponents/CmrColorPicker/CmrColorPicker.scss +27 -0
- package/dist/CmrComponents/CmrInput/CmrInput.css +27 -0
- package/dist/CmrComponents/CmrInput/CmrInput.d.ts +17 -0
- package/dist/CmrComponents/CmrInput/CmrInput.js +29 -0
- package/dist/CmrComponents/CmrInput/index.d.ts +1 -0
- package/dist/CmrComponents/CmrInput/index.js +1 -0
- package/dist/CmrComponents/CmrRadioGroup/CmrRadioGroup.css +25 -0
- package/dist/CmrComponents/CmrRadioGroup/CmrRadioGroup.d.ts +15 -0
- package/dist/CmrComponents/CmrRadioGroup/CmrRadioGroup.js +37 -0
- package/dist/CmrComponents/CmrRadioGroup/index.d.ts +1 -0
- package/dist/CmrComponents/CmrRadioGroup/index.js +1 -0
- package/dist/CmrComponents/CmrSelect/CmrSelect.css +1 -0
- package/dist/CmrComponents/CmrSelect/CmrSelect.d.ts +24 -0
- package/dist/CmrComponents/CmrSelect/CmrSelect.js +46 -0
- package/dist/CmrComponents/CmrSelect/index.d.ts +1 -0
- package/dist/CmrComponents/CmrSelect/index.js +1 -0
- package/dist/CmrComponents/checkbox/Checkbox.css +8 -0
- package/dist/CmrComponents/checkbox/Checkbox.d.ts +15 -0
- package/dist/CmrComponents/checkbox/Checkbox.js +25 -0
- package/dist/CmrComponents/collapse/Collapse.css +3 -0
- package/dist/CmrComponents/collapse/Collapse.d.ts +18 -0
- package/dist/CmrComponents/collapse/Collapse.js +87 -0
- package/dist/CmrComponents/dialogue/Confirmation.d.ts +20 -0
- package/dist/CmrComponents/dialogue/Confirmation.js +36 -0
- package/dist/CmrComponents/dialogue/DeletionDialog.d.ts +4 -0
- package/dist/CmrComponents/dialogue/DeletionDialog.js +39 -0
- package/dist/CmrComponents/dialogue/EditConfirmation.d.ts +13 -0
- package/dist/CmrComponents/dialogue/EditConfirmation.js +45 -0
- package/dist/CmrComponents/double-slider/DualSlider.d.ts +21 -0
- package/dist/CmrComponents/double-slider/DualSlider.js +152 -0
- package/dist/CmrComponents/double-slider/InvertibleDualSlider.d.ts +24 -0
- package/dist/CmrComponents/double-slider/InvertibleDualSlider.js +174 -0
- package/dist/CmrComponents/gui-slider/ControlledSlider.d.ts +9 -0
- package/dist/CmrComponents/gui-slider/ControlledSlider.js +96 -0
- package/dist/CmrComponents/gui-slider/Slider.d.ts +20 -0
- package/dist/CmrComponents/gui-slider/Slider.js +127 -0
- package/dist/CmrComponents/header/Header.d.ts +17 -0
- package/dist/CmrComponents/header/Header.js +90 -0
- package/dist/CmrComponents/header/Header.scss +32 -0
- package/dist/CmrComponents/input-number/InputNumber.css +0 -0
- package/dist/CmrComponents/input-number/InputNumber.d.ts +17 -0
- package/dist/CmrComponents/input-number/InputNumber.js +30 -0
- package/dist/CmrComponents/label/Label.css +13 -0
- package/dist/CmrComponents/label/Label.d.ts +9 -0
- package/dist/CmrComponents/label/Label.js +18 -0
- package/dist/CmrComponents/panel/Panel.css +5 -0
- package/dist/CmrComponents/panel/Panel.d.ts +12 -0
- package/dist/CmrComponents/panel/Panel.js +42 -0
- package/dist/CmrComponents/rename/edit.d.ts +7 -0
- package/dist/CmrComponents/rename/edit.js +117 -0
- package/dist/CmrComponents/select-upload/SelectUpload.css +26 -0
- package/dist/CmrComponents/select-upload/SelectUpload.d.ts +33 -0
- package/dist/CmrComponents/select-upload/SelectUpload.js +90 -0
- package/dist/CmrComponents/tk-dualrange/TKDualRange.d.ts +17 -0
- package/dist/CmrComponents/tk-dualrange/TKDualRange.js +65 -0
- package/dist/CmrComponents/tk-dualrange/tk-dual-range.css +140 -0
- package/dist/CmrComponents/tooltip/Tooltip.css +0 -0
- package/dist/CmrComponents/tooltip/Tooltip.d.ts +18 -0
- package/dist/CmrComponents/tooltip/Tooltip.js +30 -0
- package/dist/CmrComponents/upload/Upload.css +5 -0
- package/dist/CmrComponents/upload/Upload.d.ts +80 -0
- package/dist/CmrComponents/upload/Upload.js +185 -0
- package/dist/CmrComponents/upload/UploadWindow.d.ts +15 -0
- package/dist/CmrComponents/upload/UploadWindow.js +286 -0
- package/dist/CmrTable/CmrTable.css +26 -0
- package/dist/CmrTable/CmrTable.d.ts +13 -0
- package/dist/CmrTable/CmrTable.js +47 -0
- package/dist/CmrTabs/CmrTabs.d.ts +7 -0
- package/dist/CmrTabs/CmrTabs.js +64 -0
- package/dist/CmrTabs/tab.model.d.ts +12 -0
- package/dist/CmrTabs/tab.model.js +1 -0
- package/dist/core/app/main/Main.d.ts +6 -0
- package/dist/core/app/main/Main.js +18 -0
- package/dist/core/app/results/Logs.d.ts +1 -0
- package/dist/core/app/results/Logs.js +33 -0
- package/dist/core/app/results/PreprocessJob.d.ts +1 -0
- package/dist/core/app/results/PreprocessJob.js +100 -0
- package/dist/core/app/results/Results.d.ts +15 -0
- package/dist/core/app/results/Results.js +372 -0
- package/dist/core/app/results/Results.scss +92 -0
- package/dist/core/app/results/Rois.d.ts +11 -0
- package/dist/core/app/results/Rois.js +269 -0
- package/dist/core/app/settings/Settings.d.ts +1 -0
- package/dist/core/app/settings/Settings.js +109 -0
- package/dist/core/app/signin/ForgotPassword.d.ts +3 -0
- package/dist/core/app/signin/ForgotPassword.js +142 -0
- package/dist/core/app/signin/Register.d.ts +3 -0
- package/dist/core/app/signin/Register.js +126 -0
- package/dist/core/app/signin/Signin.d.ts +5 -0
- package/dist/core/app/signin/Signin.js +84 -0
- package/dist/core/app/signin/Signin.scss +86 -0
- package/dist/core/app/upload/Upload.d.ts +3 -0
- package/dist/core/app/upload/Upload.js +261 -0
- package/dist/core/app/upload/Upload.scss +0 -0
- package/dist/core/common/components/CmrColorPicker/CmrColorPicker.d.ts +8 -0
- package/dist/core/common/components/CmrColorPicker/CmrColorPicker.js +29 -0
- package/dist/core/common/components/CmrColorPicker/CmrColorPicker.scss +27 -0
- package/dist/core/common/components/NiivueTools/Niivue.css +8 -0
- package/dist/core/common/components/NiivueTools/Niivue.d.ts +14 -0
- package/dist/core/common/components/NiivueTools/Niivue.js +1270 -0
- package/dist/core/common/components/NiivueTools/NiivuePatcher.js +1875 -0
- package/dist/core/common/components/NiivueTools/components/ColorPicker.d.ts +5 -0
- package/dist/core/common/components/NiivueTools/components/ColorPicker.js +68 -0
- package/dist/core/common/components/NiivueTools/components/DrawPlatte.d.ts +10 -0
- package/dist/core/common/components/NiivueTools/components/DrawPlatte.js +88 -0
- package/dist/core/common/components/NiivueTools/components/DrawToolKit.d.ts +32 -0
- package/dist/core/common/components/NiivueTools/components/DrawToolKit.js +164 -0
- package/dist/core/common/components/NiivueTools/components/EraserPlatte.d.ts +10 -0
- package/dist/core/common/components/NiivueTools/components/EraserPlatte.js +43 -0
- package/dist/core/common/components/NiivueTools/components/Layer.d.ts +10 -0
- package/dist/core/common/components/NiivueTools/components/Layer.js +117 -0
- package/dist/core/common/components/NiivueTools/components/LayersPanel.d.ts +8 -0
- package/dist/core/common/components/NiivueTools/components/LayersPanel.js +108 -0
- package/dist/core/common/components/NiivueTools/components/LocationTable.d.ts +9 -0
- package/dist/core/common/components/NiivueTools/components/LocationTable.js +42 -0
- package/dist/core/common/components/NiivueTools/components/MaskPlatte.d.ts +10 -0
- package/dist/core/common/components/NiivueTools/components/MaskPlatte.js +123 -0
- package/dist/core/common/components/NiivueTools/components/NiivuePanel.d.ts +34 -0
- package/dist/core/common/components/NiivueTools/components/NiivuePanel.js +305 -0
- package/dist/core/common/components/NiivueTools/components/NumberPicker.d.ts +8 -0
- package/dist/core/common/components/NiivueTools/components/NumberPicker.js +40 -0
- package/dist/core/common/components/NiivueTools/components/SettingsPanel.d.ts +7 -0
- package/dist/core/common/components/NiivueTools/components/SettingsPanel.js +30 -0
- package/dist/core/common/components/NiivueTools/components/Switch.d.ts +5 -0
- package/dist/core/common/components/NiivueTools/components/Switch.js +26 -0
- package/dist/core/common/components/NiivueTools/components/Toolbar.d.ts +40 -0
- package/dist/core/common/components/NiivueTools/components/Toolbar.js +184 -0
- package/dist/core/common/components/NiivueTools/components/Toolbar.scss +39 -0
- package/dist/core/common/components/NiivueTools/components/stats.d.ts +2 -0
- package/dist/core/common/components/NiivueTools/components/stats.js +13 -0
- package/dist/core/common/components/NiivueTools/index.css +14 -0
- package/dist/core/common/components/NiivueTools/util.js +309 -0
- package/dist/core/common/components/footer/Footer.d.ts +3 -0
- package/dist/core/common/components/footer/Footer.js +20 -0
- package/dist/core/common/components/footer/Footer.scss +5 -0
- package/dist/core/common/utilities/AuthenticatedRequests.d.ts +16 -0
- package/dist/core/common/utilities/AuthenticatedRequests.js +158 -0
- package/dist/core/common/utilities/CalendarHelper.d.ts +5 -0
- package/dist/core/common/utilities/CalendarHelper.js +27 -0
- package/dist/core/common/utilities/DownloadFromText.d.ts +3 -0
- package/dist/core/common/utilities/DownloadFromText.js +20 -0
- package/dist/core/common/utilities/StoreToRequest.d.ts +1 -0
- package/dist/core/common/utilities/StoreToRequest.js +4 -0
- package/dist/core/common/utilities/SystemUtilities.d.ts +4 -0
- package/dist/core/common/utilities/SystemUtilities.js +79 -0
- package/dist/core/common/utilities/file-transformation/anonymize.d.ts +1 -0
- package/dist/core/common/utilities/file-transformation/anonymize.js +114 -0
- package/dist/core/common/utilities/file-transformation/utilities.d.ts +2 -0
- package/dist/core/common/utilities/file-transformation/utilities.js +23 -0
- package/dist/core/common/utilities/index.d.ts +25 -0
- package/dist/core/common/utilities/index.js +118 -0
- package/dist/core/common/utilities/parse-jwt.d.ts +1 -0
- package/dist/core/common/utilities/parse-jwt.js +14 -0
- package/dist/core/components/PasswordRequirements.d.ts +7 -0
- package/dist/core/components/PasswordRequirements.js +30 -0
- package/dist/core/config/AppConfig.d.ts +5 -0
- package/dist/core/config/AppConfig.js +42 -0
- package/dist/core/config/types.d.ts +40 -0
- package/dist/core/config/types.js +1 -0
- package/dist/core/features/authenticate/authenticateActionCreation.d.ts +46 -0
- package/dist/core/features/authenticate/authenticateActionCreation.js +326 -0
- package/dist/core/features/authenticate/authenticateSlice.d.ts +45 -0
- package/dist/core/features/authenticate/authenticateSlice.js +203 -0
- package/dist/core/features/data/dataActionCreation.d.ts +40 -0
- package/dist/core/features/data/dataActionCreation.js +340 -0
- package/dist/core/features/data/dataSlice.d.ts +37 -0
- package/dist/core/features/data/dataSlice.js +87 -0
- package/dist/core/features/jobs/jobActionCreation.d.ts +35 -0
- package/dist/core/features/jobs/jobActionCreation.js +242 -0
- package/dist/core/features/jobs/jobsSlice.d.ts +57 -0
- package/dist/core/features/jobs/jobsSlice.js +54 -0
- package/dist/core/features/rois/resultActionCreation.d.ts +21 -0
- package/dist/core/features/rois/resultActionCreation.js +114 -0
- package/dist/core/features/rois/resultSlice.d.ts +24 -0
- package/dist/core/features/rois/resultSlice.js +68 -0
- package/dist/core/features/rois/roiTypes.d.ts +44 -0
- package/dist/core/features/rois/roiTypes.js +1 -0
- package/dist/core/features/setup/setupActionCreation.d.ts +7 -0
- package/dist/core/features/setup/setupActionCreation.js +100 -0
- package/dist/core/index.d.ts +22 -0
- package/dist/core/index.js +27 -0
- package/dist/core/store/configureStore.d.ts +13 -0
- package/dist/core/store/configureStore.js +38 -0
- package/dist/core/store/hooks.d.ts +11 -0
- package/dist/core/store/hooks.js +5 -0
- package/dist/core/utils/passwordValidation.d.ts +25 -0
- package/dist/core/utils/passwordValidation.js +19 -0
- package/dist/index.d.ts +29 -329
- package/dist/index.js +26 -1402
- package/dist/style.css +47 -0
- package/package.json +309 -41
- package/dist/index.css +0 -170
- package/dist/index.mjs +0 -1354
|
@@ -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;
|