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,6 @@
1
+ import type { TabInfo } from "../../../CmrTabs/tab.model";
2
+ interface MainProps {
3
+ tabData: TabInfo[];
4
+ }
5
+ declare const Main: ({ tabData }: MainProps) => import("react/jsx-runtime").JSX.Element;
6
+ export default Main;
@@ -0,0 +1,18 @@
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 } from "react/jsx-runtime";
13
+ import { CmrTabs } from "../../../index";
14
+ var Main = function (_a) {
15
+ var tabData = _a.tabData;
16
+ return (_jsx("div", __assign({ className: "container-fluid mt-4", style: { transition: "all 0.3s" } }, { children: _jsx(CmrTabs, { tabList: tabData }) })));
17
+ };
18
+ export default Main;
@@ -0,0 +1 @@
1
+ export declare const Logs: () => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,33 @@
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 } from "react/jsx-runtime";
13
+ import { useAppSelector } from "../../store/hooks";
14
+ import Box from "@mui/material/Box";
15
+ export var Logs = function () {
16
+ var logs = useAppSelector(function (state) { var _a; return (_a = state.result.activeJob) === null || _a === void 0 ? void 0 : _a.logs; });
17
+ if (logs != undefined) {
18
+ return (_jsx(Box, __assign({ style: {
19
+ width: "100%",
20
+ height: "250pt",
21
+ background: "black",
22
+ borderRadius: "5pt",
23
+ marginTop: "30pt",
24
+ overflow: "auto",
25
+ fontFamily: "consolas",
26
+ padding: "10pt"
27
+ } }, { children: logs.map(function (value) {
28
+ return (_jsx(Box, __assign({ style: { color: "white" } }, { children: "".concat(value.when, ": ").concat(value.what) })));
29
+ }) })));
30
+ }
31
+ else
32
+ return null;
33
+ };
@@ -0,0 +1 @@
1
+ export declare function processJobZip(file: File, fileAlias: string): Promise<File | undefined>;
@@ -0,0 +1,100 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ 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;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import JSZip from "jszip";
38
+ export function processJobZip(file, fileAlias) {
39
+ return __awaiter(this, void 0, void 0, function () {
40
+ var jszip, outputZip, zip, infoFound, _i, _a, _b, filename, zipEntry, fileContent, infoJSON, blobContent, content, error_1;
41
+ return __generator(this, function (_c) {
42
+ switch (_c.label) {
43
+ case 0:
44
+ jszip = new JSZip();
45
+ outputZip = new JSZip();
46
+ _c.label = 1;
47
+ case 1:
48
+ _c.trys.push([1, 10, , 11]);
49
+ return [4 /*yield*/, jszip.loadAsync(file instanceof Blob ? file : new Blob([file]))];
50
+ case 2:
51
+ zip = _c.sent();
52
+ infoFound = false;
53
+ _i = 0, _a = Object.entries(zip.files);
54
+ _c.label = 3;
55
+ case 3:
56
+ if (!(_i < _a.length)) return [3 /*break*/, 8];
57
+ _b = _a[_i], filename = _b[0], zipEntry = _b[1];
58
+ console.log(filename);
59
+ if (!(filename === "info.json")) return [3 /*break*/, 5];
60
+ return [4 /*yield*/, zipEntry.async("string")];
61
+ case 4:
62
+ fileContent = _c.sent();
63
+ infoJSON = JSON.parse(fileContent);
64
+ if (!infoJSON.headers)
65
+ return [2 /*return*/, undefined];
66
+ infoJSON.headers.options.pipelineid = null;
67
+ infoJSON.headers.options.alias = fileAlias;
68
+ console.log(infoJSON);
69
+ // Add modified info.json to outputZip
70
+ outputZip.file(filename, JSON.stringify(infoJSON, null, 2));
71
+ infoFound = true;
72
+ return [3 /*break*/, 7];
73
+ case 5: return [4 /*yield*/, zipEntry.async("blob")];
74
+ case 6:
75
+ blobContent = _c.sent();
76
+ outputZip.file(filename, blobContent);
77
+ _c.label = 7;
78
+ case 7:
79
+ _i++;
80
+ return [3 /*break*/, 3];
81
+ case 8:
82
+ if (!infoFound)
83
+ return [2 /*return*/, undefined];
84
+ return [4 /*yield*/, outputZip.generateAsync({ type: "blob" })];
85
+ case 9:
86
+ content = _c.sent();
87
+ console.log(content.type);
88
+ return [2 /*return*/, new File([content], file.name, {
89
+ type: content.type,
90
+ lastModified: Date.now()
91
+ })]; // This Blob can be used for downloading or further processing
92
+ case 10:
93
+ error_1 = _c.sent();
94
+ console.error("There was an error processing the zip file:", error_1);
95
+ return [2 /*return*/, undefined];
96
+ case 11: return [2 /*return*/];
97
+ }
98
+ });
99
+ });
100
+ }
@@ -0,0 +1,15 @@
1
+ /// <reference types="react" />
2
+ import "./Results.scss";
3
+ export interface NiiFile {
4
+ filename: string;
5
+ id: number;
6
+ dim: number;
7
+ name: string;
8
+ type: string;
9
+ link: string;
10
+ }
11
+ declare const Results: ({ visible, children, }: {
12
+ visible?: boolean | undefined;
13
+ children?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
14
+ }) => import("react/jsx-runtime").JSX.Element;
15
+ export default Results;
@@ -0,0 +1,372 @@
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 { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
49
+ import { Fragment, useEffect, useState } from "react";
50
+ import "./Results.scss";
51
+ import { CmrTable, CmrCollapse, CmrPanel, CmrCheckbox, CmrEditConfirmation, CmrConfirmation, CMRUpload, } from "../../../index";
52
+ import { useAppDispatch, useAppSelector } from "../../store/hooks";
53
+ import IconButton from "@mui/material/IconButton";
54
+ import GetAppIcon from "@mui/icons-material/GetApp";
55
+ import PlayArrowIcon from "@mui/icons-material/PlayArrow";
56
+ import NiiVue, { nv } from "../../common/components/NiivueTools/Niivue";
57
+ import { getUpstreamJobs } from "../../features/jobs/jobActionCreation";
58
+ import { uploadData, getUploadedData, } from "../../features/data/dataActionCreation";
59
+ import { getPipelineROI, loadResult, } from "../../features/rois/resultActionCreation";
60
+ import resultActions from "../../features/rois/resultSlice";
61
+ import { Alert, Button, CircularProgress, Slide, Snackbar, } from "@mui/material";
62
+ import { Row } from "antd";
63
+ import Box from "@mui/material/Box";
64
+ // import { SetupInspection } from "./SetupInspection";
65
+ import { Logs } from "./Logs";
66
+ import { processJobZip } from "./PreprocessJob";
67
+ import { deleteUpstreamJob } from "../../features/jobs/jobActionCreation";
68
+ import { uploadHandlerFactory } from "../../common/utilities/SystemUtilities";
69
+ import DeleteIcon from "@mui/icons-material/Delete";
70
+ import Tooltip from "@mui/material/Tooltip";
71
+ var Results = function (_a) {
72
+ var visible = _a.visible, children = _a.children;
73
+ var dispatch = useAppDispatch();
74
+ var queueToken = useAppSelector(function (state) { return state.authenticate; }).queueToken;
75
+ var results = useAppSelector(function (state) { return state.jobs.jobs; });
76
+ var jobsLoading = useAppSelector(function (state) { return state.jobs.loading; });
77
+ // const [rois, setROIS] = useState<ROI[]>([]);
78
+ var activeJob = useAppSelector(function (state) { return state.result.activeJob; });
79
+ var activeJobAlias = useAppSelector(function (state) { var _a; return (_a = state.result.activeJob) === null || _a === void 0 ? void 0 : _a.alias; });
80
+ var pipelineID = useAppSelector(function (state) { var _a; return (_a = state.result.activeJob) === null || _a === void 0 ? void 0 : _a.pipeline_id; });
81
+ var niis = useAppSelector(function (state) {
82
+ return pipelineID ? state.result.niis[pipelineID] : undefined;
83
+ });
84
+ var rois = useAppSelector(function (state) {
85
+ return pipelineID === undefined ||
86
+ state.result.rois[pipelineID] === undefined
87
+ ? undefined
88
+ : state.result.rois[pipelineID];
89
+ }) || [];
90
+ var selectedVolume = useAppSelector(function (state) { return state.result.selectedVolume; });
91
+ var resultLoading = useAppSelector(function (state) { return state.result.resultLoading; });
92
+ var _b = useState(true), autoRefresh = _b[0], setAutoRefresh = _b[1];
93
+ var openPanel = useAppSelector(function (state) { return state.result.openPanel; });
94
+ var _c = useState(""), warning = _c[0], setWarning = _c[1];
95
+ var _d = useState(false), warningOpen = _d[0], setWarningOpen = _d[1];
96
+ var _e = useState(false), showingLogs = _e[0], setShowingLogs = _e[1];
97
+ var _f = useState(undefined), name = _f[0], setName = _f[1];
98
+ var _g = useState(undefined), message = _g[0], setMessage = _g[1];
99
+ var _h = useState(undefined), color = _h[0], setColor = _h[1];
100
+ var _j = useState(false), open = _j[0], setOpen = _j[1];
101
+ var _k = useState(function () { }), confirmCallbackjob = _k[0], setConfirmCallbackjob = _k[1];
102
+ var _l = useState(function () { }), cancelCallbackjob = _l[0], setCancelCallbackjob = _l[1];
103
+ // eslint-disable-next-line react-hooks/exhaustive-deps
104
+ useEffect(function () {
105
+ //@ts-ignore
106
+ dispatch(getUploadedData());
107
+ //@ts-ignore
108
+ dispatch(getUpstreamJobs());
109
+ var interval = setInterval(function () {
110
+ if (visible && autoRefresh && openPanel.indexOf(0) >= 0) {
111
+ //@ts-ignore
112
+ dispatch(getUpstreamJobs());
113
+ }
114
+ }, 15000);
115
+ return function () {
116
+ clearInterval(interval);
117
+ };
118
+ }, [visible]);
119
+ var _m = useState(Date.now()), lastUpdated = _m[0], setLastUpdated = _m[1];
120
+ var warn = function (message) {
121
+ setWarning(message);
122
+ setWarningOpen(true);
123
+ setTimeout(function () {
124
+ setWarningOpen(false);
125
+ setWarning("");
126
+ }, 5000);
127
+ };
128
+ var getAlias = function (alias) { return __awaiter(void 0, void 0, void 0, function () {
129
+ return __generator(this, function (_a) {
130
+ setOriginalName(alias);
131
+ setNameDialogOpen(true);
132
+ return [2 /*return*/, new Promise(function (resolve, reject) {
133
+ var callback = function (value) { return __awaiter(void 0, void 0, void 0, function () {
134
+ return __generator(this, function (_a) {
135
+ resolve(value);
136
+ return [2 /*return*/, true];
137
+ });
138
+ }); };
139
+ var cancelCallback = function (_) { return __awaiter(void 0, void 0, void 0, function () {
140
+ return __generator(this, function (_a) {
141
+ reject(alias);
142
+ return [2 /*return*/, true];
143
+ });
144
+ }); };
145
+ setRenamingCallback(function () { return callback; });
146
+ setCancelCallback(function () { return cancelCallback; });
147
+ })];
148
+ });
149
+ }); };
150
+ var completedJobsColumns = [
151
+ {
152
+ headerName: "Job ID",
153
+ dataIndex: "id",
154
+ field: "id",
155
+ flex: 1
156
+ },
157
+ {
158
+ headerName: "Alias",
159
+ dataIndex: "alias",
160
+ field: "alias",
161
+ flex: 2
162
+ },
163
+ {
164
+ headerName: "Date Submitted",
165
+ dataIndex: "createdAt",
166
+ field: "createdAt",
167
+ flex: 2
168
+ },
169
+ {
170
+ headerName: "Status",
171
+ dataIndex: "status",
172
+ field: "status",
173
+ flex: 1
174
+ },
175
+ {
176
+ field: "action",
177
+ headerName: "Actions",
178
+ sortable: false,
179
+ width: 256,
180
+ disableClickEventBubbling: true,
181
+ renderCell: function (params) {
182
+ return (_jsxs("div", { children: [params.row.status !== "failed" && (_jsx(Tooltip, __assign({ title: "View job ".concat(params.row.alias) }, { children: _jsx(IconButton, __assign({ disabled: params.row.status === "pending", onClick: function (event) {
183
+ event.stopPropagation();
184
+ if (params.row.pipeline_id === (activeJob === null || activeJob === void 0 ? void 0 : activeJob.pipeline_id)) {
185
+ dispatch(resultActions.setOpenPanel([1, 2]));
186
+ return;
187
+ }
188
+ dispatch(loadResult({
189
+ job: params.row
190
+ })).then(function (value) { return __awaiter(void 0, void 0, void 0, function () {
191
+ var volumes, niis_1, i, nii;
192
+ return __generator(this, function (_a) {
193
+ try {
194
+ volumes = value.payload.volumes;
195
+ niis_1 = value.payload.niis || [];
196
+ for (i = 0; i < niis_1.length; i++) {
197
+ nii = niis_1[i];
198
+ if (nii.id === 0) {
199
+ dispatch(resultActions.selectVolume(i));
200
+ nv.loadVolumes([volumes[i]]);
201
+ dispatch(resultActions.setOpenPanel([1, 2]));
202
+ nv.closeDrawing();
203
+ break;
204
+ }
205
+ }
206
+ }
207
+ catch (e) {
208
+ warn("Error loading results, please check internet connectivity");
209
+ }
210
+ setTimeout(function () { return nv.resizeListener(); }, 700);
211
+ //@ts-ignore
212
+ dispatch(getPipelineROI({
213
+ pipeline: params.row.pipeline_id
214
+ }));
215
+ return [2 /*return*/];
216
+ });
217
+ }); });
218
+ } }, { children: resultLoading === params.row.id ||
219
+ params.row.status === "pending" ? (_jsx("div", { className: "spinner-border spinner-border-sm", style: { aspectRatio: "1 / 1" }, role: "status" })) : (_jsx(PlayArrowIcon, { sx: {
220
+ color: params.row.status !== "completed"
221
+ ? "#8a6fae"
222
+ : "#580f8b",
223
+ "&:hover": {
224
+ color: "#390063"
225
+ }
226
+ } })) })) }))), params.row.status === "completed" && (_jsx(Tooltip, __assign({ title: "Download job ".concat(params.row.alias) }, { children: _jsx(IconButton, __assign({ onClick: function (e) {
227
+ e.stopPropagation();
228
+ params.row.files.forEach(function (file) {
229
+ var url = file.link;
230
+ if (url === "unknown")
231
+ return;
232
+ // Create an anchor element
233
+ var a = document.createElement("a");
234
+ // Extract the file name from the URL, if possible
235
+ a.download = "".concat(file.fileName, ".").concat(url.split(".").pop());
236
+ a.href = url;
237
+ // Append the anchor to the body (this is necessary to programmatically trigger the click event)
238
+ document.body.appendChild(a);
239
+ // Trigger a click event to start the download
240
+ a.click();
241
+ // Remove the anchor from the body
242
+ document.body.removeChild(a);
243
+ });
244
+ } }, { children: _jsx(GetAppIcon, {}) })) }))), _jsx(Tooltip, __assign({ title: "Delete job ".concat(params.row.alias) }, { children: _jsx(IconButton, __assign({ onClick: function () {
245
+ setName("Deleting job");
246
+ setMessage("Please confirm that you are deleting job ".concat(params.row.id.toString(), "."));
247
+ setColor("error");
248
+ setConfirmCallbackjob(function () { return function () { return __awaiter(void 0, void 0, void 0, function () {
249
+ var error_1;
250
+ return __generator(this, function (_a) {
251
+ switch (_a.label) {
252
+ case 0:
253
+ _a.trys.push([0, 3, , 4]);
254
+ // First, delete the upstream job
255
+ return [4 /*yield*/, dispatch(deleteUpstreamJob({
256
+ jobId: params.row.id.toString()
257
+ }))];
258
+ case 1:
259
+ // First, delete the upstream job
260
+ _a.sent();
261
+ // Then, fetch the updated upstream jobs
262
+ return [4 /*yield*/, dispatch(getUpstreamJobs())];
263
+ case 2:
264
+ // Then, fetch the updated upstream jobs
265
+ _a.sent();
266
+ return [3 /*break*/, 4];
267
+ case 3:
268
+ error_1 = _a.sent();
269
+ console.error("Error deleting job or fetching updated jobs:", error_1);
270
+ return [3 /*break*/, 4];
271
+ case 4: return [2 /*return*/];
272
+ }
273
+ });
274
+ }); }; });
275
+ setCancelCallbackjob(function () {
276
+ // console.log("Cancel action was triggered.");
277
+ });
278
+ setOpen(true);
279
+ } }, { children: _jsx(DeleteIcon, {}) })) })), _jsx(CmrConfirmation, { name: name, message: message, color: color, open: open, setOpen: setOpen, confirmCallback: function () { return confirmCallbackjob(); }, cancelCallback: function () {
280
+ if (cancelCallbackjob) {
281
+ cancelCallbackjob();
282
+ }
283
+ else {
284
+ setOpen(false); // Close the dialog if no cancel callback is set
285
+ }
286
+ }, cancellable: true, width: 450 })] }));
287
+ }
288
+ },
289
+ ];
290
+ var _o = useState(0), uploaderKey = _o[0], setUploaderKey = _o[1];
291
+ var _p = useState(false), nameDialogOpen = _p[0], setNameDialogOpen = _p[1];
292
+ var _q = useState(""), originalName = _q[0], setOriginalName = _q[1];
293
+ var _r = useState(function () { return function (val) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
294
+ return [2 /*return*/, true];
295
+ }); }); }; }), renamingCallback = _r[0], setRenamingCallback = _r[1];
296
+ var _s = useState(function () { return function (val) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
297
+ return [2 /*return*/, true];
298
+ }); }); }; }), cancelCallback = _s[0], setCancelCallback = _s[1];
299
+ return (_jsxs(Fragment, { children: [_jsx(Snackbar, __assign({ anchorOrigin: { vertical: "top", horizontal: "left" }, TransitionComponent: function (props) { return _jsx(Slide, __assign({}, props, { direction: "right" })); }, open: warningOpen, autoHideDuration: 7000, onClose: function () { return setWarningOpen(false); } }, { children: _jsx(Alert, __assign({ onClose: function () { return setWarningOpen(false); }, severity: "error", sx: { width: "100%" } }, { children: warning })) })), _jsx(CmrEditConfirmation, { open: nameDialogOpen, setOpen: setNameDialogOpen, cancelCallback: cancelCallback, cancellable: true, defaultText: originalName, message: "Provide the alias associated with the result file.", name: "Job Alias", confirmCallback: renamingCallback }), _jsxs(CmrCollapse, __assign({ accordion: false, expandIconPosition: "right", activeKey: openPanel, onChange: function (key) {
300
+ if (openPanel.indexOf(0) < 0 && key.indexOf(0) >= 0) {
301
+ dispatch(getUpstreamJobs());
302
+ }
303
+ dispatch(resultActions.setOpenPanel(key));
304
+ } }, { children: [_jsxs(CmrPanel, __assign({ header: "Job Results", className: "mb-2" }, { children: [_jsxs(Row, __assign({ style: {
305
+ alignItems: "center",
306
+ justifyContent: "space-between",
307
+ marginBottom: "20px"
308
+ } }, { children: [_jsx(CMRUpload, __assign({ style: { marginTop: "auto", marginBottom: "auto" }, uploadButtonName: "Upload Results", maxCount: 1, fileExtension: ".zip", preprocess: function (file) { return __awaiter(void 0, void 0, void 0, function () {
309
+ var alias, _a;
310
+ return __generator(this, function (_b) {
311
+ switch (_b.label) {
312
+ case 0:
313
+ _b.trys.push([0, 2, , 3]);
314
+ return [4 /*yield*/, getAlias(file.name)];
315
+ case 1:
316
+ alias = _b.sent();
317
+ return [2 /*return*/, processJobZip(file, alias)];
318
+ case 2:
319
+ _a = _b.sent();
320
+ return [2 /*return*/, 400];
321
+ case 3: return [2 /*return*/];
322
+ }
323
+ });
324
+ }); }, uploadFailed: function () {
325
+ warn("There was a problem with the result file provided.");
326
+ setUploaderKey(uploaderKey + 1);
327
+ }, onUploaded: function () {
328
+ //Refresh job list after successful upload
329
+ dispatch(getUpstreamJobs());
330
+ // console.log(uploaderKey);
331
+ setUploaderKey(uploaderKey + 1);
332
+ }, uploadHandler: uploadHandlerFactory(queueToken, dispatch, uploadData) }, { children: "Upload Results" }), uploaderKey), _jsx(CmrCheckbox, __assign({ defaultChecked: true, onChange: function (e) {
333
+ //@ts-ignore
334
+ setAutoRefresh(e.target.value);
335
+ } }, { children: "Auto Refreshing" }))] })), _jsx(CmrTable, { dataSource: results, columns: completedJobsColumns, showCheckbox: false }), _jsxs(Button, __assign({ className: "mt-3", fullWidth: true, variant: "contained", onClick: function () {
336
+ dispatch(getUpstreamJobs());
337
+ } }, { children: ["Refresh", " ", jobsLoading && (_jsx(CircularProgress, { size: 18, style: { color: "white", position: "relative", left: "5pt" } }))] })), showingLogs && _jsx(Logs, {})] }), "0"), _jsxs(CmrPanel, __assign({ className: "mb-2", header: activeJobAlias !== undefined
338
+ ? "Viewing ".concat(activeJobAlias)
339
+ : "View Results" }, { children: [activeJob !== undefined && (_jsx(NiiVue, { niis: niis || [], warn: warn, setWarning: setWarning, setWarningOpen: setWarningOpen, setSelectedVolume: function (index) {
340
+ dispatch(resultActions.selectVolume(index));
341
+ }, selectedVolume: selectedVolume,
342
+ // key={pipelineID}
343
+ rois: rois || [], pipelineID: pipelineID, saveROICallback: function () {
344
+ if (pipelineID) {
345
+ dispatch(getPipelineROI({
346
+ pipeline: pipelineID
347
+ }));
348
+ }
349
+ } })), activeJob === undefined && (_jsx(Box, __assign({ sx: {
350
+ display: "flex",
351
+ justifyContent: "center",
352
+ color: "rgba(0,0,0,0.4)"
353
+ } }, { children: "Please Select a Job Result" })))] }), "1"), children || _jsx("div", {})] })), _jsx("div", { style: { height: "69px" } })] }));
354
+ };
355
+ /*<CmrPanel header={"Current Job Settings"} key={"2"}>
356
+ {activeJob?.status === "completed" ? (
357
+ <SetupInspection />
358
+ ) : (
359
+ <Box
360
+ sx={{
361
+ display: "flex",
362
+ justifyContent: "center",
363
+ color: "rgba(0,0,0,0.4)",
364
+ }}
365
+ >
366
+ {!activeJob
367
+ ? "Please Select a Job Result"
368
+ : "Job is not completed"}
369
+ </Box>
370
+ )}
371
+ </CmrPanel>*/
372
+ export default Results;
@@ -0,0 +1,92 @@
1
+ .canvas-control-button {
2
+ border: none;
3
+ }
4
+
5
+ .roi-button {
6
+ border: none;
7
+ }
8
+
9
+ .roi-information {
10
+ display: flex;
11
+ align-items: center;
12
+ }
13
+
14
+ .ant-space {
15
+ display: flex;
16
+ }
17
+
18
+ .action-button {
19
+ border: none;
20
+ background: transparent;
21
+ background-color: transparent;
22
+ }
23
+
24
+
25
+ @keyframes spinner-border {
26
+ to {
27
+ transform: rotate(360deg);
28
+ }
29
+ }
30
+
31
+ .spinner-border {
32
+ display: inline-block;
33
+ width: 2rem;
34
+ height: 2rem;
35
+ vertical-align: text-bottom;
36
+ border: 0.25em solid currentColor;
37
+ border-right-color: transparent;
38
+ border-radius: 50%;
39
+ -webkit-animation: spinner-border 0.75s linear infinite;
40
+ animation: spinner-border 0.75s linear infinite;
41
+ }
42
+
43
+ .spinner-border-sm {
44
+ width: 1rem;
45
+ height: 1rem;
46
+ border-width: 0.2em;
47
+ margin: 4px;
48
+ }
49
+
50
+ @-webkit-keyframes spinner-grow {
51
+ 0% {
52
+ transform: scale(0);
53
+ }
54
+
55
+ 50% {
56
+ opacity: 1;
57
+ transform: none;
58
+ }
59
+ }
60
+
61
+ @keyframes spinner-grow {
62
+ 0% {
63
+ transform: scale(0);
64
+ }
65
+
66
+ 50% {
67
+ opacity: 1;
68
+ transform: none;
69
+ }
70
+ }
71
+
72
+ .spinner-grow {
73
+ display: inline-block;
74
+ width: 2rem;
75
+ height: 2rem;
76
+ vertical-align: text-bottom;
77
+ background-color: currentColor;
78
+ border-radius: 50%;
79
+ opacity: 0;
80
+ -webkit-animation: spinner-grow 0.75s linear infinite;
81
+ animation: spinner-grow 0.75s linear infinite;
82
+ }
83
+
84
+ .spinner-grow-sm {
85
+ width: 1rem;
86
+ height: 1rem;
87
+ }
88
+
89
+ .setting-box{
90
+ width:100%;
91
+ margin-bottom: 10pt;
92
+ }
@@ -0,0 +1,11 @@
1
+ import { CSSProperties } from "react";
2
+ export declare const ROITable: (props: {
3
+ pipelineID: string;
4
+ rois: any[];
5
+ resampleImage: () => void;
6
+ zipAndSendROI: (url: string, filename: string, blob: Blob) => Promise<void>;
7
+ unpackROI: (url: string) => Promise<void>;
8
+ setLabelAlias: (label: number | string, alias: string) => void;
9
+ style?: CSSProperties | undefined;
10
+ nv: any;
11
+ }) => import("react/jsx-runtime").JSX.Element;