volview 4.0.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (404) hide show
  1. package/dist/css/app.925b979f.css +1 -0
  2. package/dist/css/chunk-vendors.43a6a19a.css +5 -0
  3. package/{public → dist}/favicon.ico +0 -0
  4. package/{public → dist}/global.css +0 -0
  5. package/{src/assets/KitwareHeadAndNeck.jpg → dist/img/KitwareHeadAndNeck.11db5ffb.jpg} +0 -0
  6. package/dist/index.html +1 -0
  7. package/dist/itk/image-io/BMPImageIOReadImage.js +1 -0
  8. package/dist/itk/image-io/BMPImageIOReadImage.umd.js +1 -0
  9. package/dist/itk/image-io/BMPImageIOReadImage.wasm +0 -0
  10. package/dist/itk/image-io/BMPImageIOWriteImage.js +1 -0
  11. package/dist/itk/image-io/BMPImageIOWriteImage.umd.js +1 -0
  12. package/dist/itk/image-io/BMPImageIOWriteImage.wasm +0 -0
  13. package/dist/itk/image-io/GDCMImageIOReadImage.js +1 -0
  14. package/dist/itk/image-io/GDCMImageIOReadImage.umd.js +1 -0
  15. package/dist/itk/image-io/GDCMImageIOReadImage.wasm +0 -0
  16. package/dist/itk/image-io/GDCMImageIOWriteImage.js +1 -0
  17. package/dist/itk/image-io/GDCMImageIOWriteImage.umd.js +1 -0
  18. package/dist/itk/image-io/GDCMImageIOWriteImage.wasm +0 -0
  19. package/dist/itk/image-io/JPEGImageIOReadImage.js +1 -0
  20. package/dist/itk/image-io/JPEGImageIOReadImage.umd.js +1 -0
  21. package/dist/itk/image-io/JPEGImageIOReadImage.wasm +0 -0
  22. package/dist/itk/image-io/JPEGImageIOWriteImage.js +1 -0
  23. package/dist/itk/image-io/JPEGImageIOWriteImage.umd.js +1 -0
  24. package/dist/itk/image-io/JPEGImageIOWriteImage.wasm +0 -0
  25. package/dist/itk/image-io/MetaImageIOReadImage.js +1 -0
  26. package/dist/itk/image-io/MetaImageIOReadImage.umd.js +1 -0
  27. package/dist/itk/image-io/MetaImageIOReadImage.wasm +0 -0
  28. package/dist/itk/image-io/MetaImageIOWriteImage.js +1 -0
  29. package/dist/itk/image-io/MetaImageIOWriteImage.umd.js +1 -0
  30. package/dist/itk/image-io/MetaImageIOWriteImage.wasm +0 -0
  31. package/dist/itk/image-io/NiftiImageIOReadImage.js +1 -0
  32. package/dist/itk/image-io/NiftiImageIOReadImage.umd.js +1 -0
  33. package/dist/itk/image-io/NiftiImageIOReadImage.wasm +0 -0
  34. package/dist/itk/image-io/NiftiImageIOWriteImage.js +1 -0
  35. package/dist/itk/image-io/NiftiImageIOWriteImage.umd.js +1 -0
  36. package/dist/itk/image-io/NiftiImageIOWriteImage.wasm +0 -0
  37. package/dist/itk/image-io/NrrdImageIOReadImage.js +1 -0
  38. package/dist/itk/image-io/NrrdImageIOReadImage.umd.js +1 -0
  39. package/dist/itk/image-io/NrrdImageIOReadImage.wasm +0 -0
  40. package/dist/itk/image-io/NrrdImageIOWriteImage.js +1 -0
  41. package/dist/itk/image-io/NrrdImageIOWriteImage.umd.js +1 -0
  42. package/dist/itk/image-io/NrrdImageIOWriteImage.wasm +0 -0
  43. package/dist/itk/image-io/PNGImageIOReadImage.js +1 -0
  44. package/dist/itk/image-io/PNGImageIOReadImage.umd.js +1 -0
  45. package/dist/itk/image-io/PNGImageIOReadImage.wasm +0 -0
  46. package/dist/itk/image-io/PNGImageIOWriteImage.js +1 -0
  47. package/dist/itk/image-io/PNGImageIOWriteImage.umd.js +1 -0
  48. package/dist/itk/image-io/PNGImageIOWriteImage.wasm +0 -0
  49. package/dist/itk/image-io/ReadDICOMTags.js +1 -0
  50. package/dist/itk/image-io/ReadDICOMTags.umd.js +1 -0
  51. package/dist/itk/image-io/ReadDICOMTags.wasm +0 -0
  52. package/dist/itk/image-io/ReadImageDICOMFileSeries.js +1 -0
  53. package/dist/itk/image-io/ReadImageDICOMFileSeries.umd.js +1 -0
  54. package/dist/itk/image-io/ReadImageDICOMFileSeries.wasm +0 -0
  55. package/dist/itk/image-io/VTKImageIOReadImage.js +1 -0
  56. package/dist/itk/image-io/VTKImageIOReadImage.umd.js +1 -0
  57. package/dist/itk/image-io/VTKImageIOReadImage.wasm +0 -0
  58. package/dist/itk/image-io/VTKImageIOWriteImage.js +1 -0
  59. package/dist/itk/image-io/VTKImageIOWriteImage.umd.js +1 -0
  60. package/dist/itk/image-io/VTKImageIOWriteImage.wasm +0 -0
  61. package/dist/itk/pipelines/dicom.js +1 -0
  62. package/dist/itk/pipelines/dicom.umd.js +1 -0
  63. package/{src/io/itk-dicom/web-build → dist/itk/pipelines}/dicom.umd.wasm +0 -0
  64. package/{src/io/itk-dicom/web-build → dist/itk/pipelines}/dicom.wasm +0 -0
  65. package/dist/itk/web-workers/IOInput.d.ts +6 -0
  66. package/dist/itk/web-workers/IOInput.js +1 -0
  67. package/dist/itk/web-workers/ITKConfig.d.ts +8 -0
  68. package/dist/itk/web-workers/ITKConfig.js +1 -0
  69. package/dist/itk/web-workers/RunPipelineInput.d.ts +10 -0
  70. package/dist/itk/web-workers/RunPipelineInput.js +1 -0
  71. package/dist/itk/web-workers/WebWorkerInput.d.ts +6 -0
  72. package/dist/itk/web-workers/WebWorkerInput.js +1 -0
  73. package/dist/itk/web-workers/bundles/pipeline.worker.js +1 -0
  74. package/dist/itk/web-workers/loadImageIOPipelineModule.d.ts +4 -0
  75. package/dist/itk/web-workers/loadImageIOPipelineModule.js +1 -0
  76. package/dist/itk/web-workers/loadMeshIOPipelineModule.d.ts +4 -0
  77. package/dist/itk/web-workers/loadMeshIOPipelineModule.js +1 -0
  78. package/dist/itk/web-workers/loadPipelineModule.d.ts +3 -0
  79. package/dist/itk/web-workers/loadPipelineModule.js +1 -0
  80. package/dist/itk/web-workers/min-bundles/pipeline.worker.js +3 -0
  81. package/dist/itk/web-workers/pipeline.worker.d.ts +1 -0
  82. package/dist/itk/web-workers/pipeline.worker.js +1 -0
  83. package/dist/itk/web-workers/runPipeline.d.ts +5 -0
  84. package/dist/itk/web-workers/runPipeline.js +1 -0
  85. package/dist/js/23.be4d694e.js +21 -0
  86. package/dist/js/23.be4d694e.js.map +1 -0
  87. package/dist/js/385.51ca48a2.js +2 -0
  88. package/dist/js/385.51ca48a2.js.map +1 -0
  89. package/dist/js/422.c64a6aa7.js +2 -0
  90. package/dist/js/422.c64a6aa7.js.map +1 -0
  91. package/dist/js/979.c4823352.js +2 -0
  92. package/dist/js/979.c4823352.js.map +1 -0
  93. package/dist/js/app.81e49d9a.js +2 -0
  94. package/dist/js/app.81e49d9a.js.map +1 -0
  95. package/dist/js/chunk-vendors.0ab48f8d.js +33 -0
  96. package/dist/js/chunk-vendors.0ab48f8d.js.map +1 -0
  97. package/{public → dist}/pvm-sample.png +0 -0
  98. package/package.json +3 -2
  99. package/.browserslistrc +0 -4
  100. package/.editorconfig +0 -6
  101. package/.env +0 -6
  102. package/.eslintrc.js +0 -109
  103. package/.gitattributes +0 -1
  104. package/.github/workflows/checks.yml +0 -16
  105. package/.github/workflows/publish.yml +0 -52
  106. package/.prettierignore +0 -5
  107. package/CONTRIBUTING.md +0 -29
  108. package/babel.config.js +0 -3
  109. package/documentation/config.js +0 -15
  110. package/documentation/content/KWVolViewLogo.png +0 -0
  111. package/documentation/content/KWVolViewLogo.svg +0 -35
  112. package/documentation/content/VolViewLogo.png +0 -0
  113. package/documentation/content/VolViewLogo.svg +0 -22
  114. package/documentation/content/doc/index.md +0 -64
  115. package/documentation/content/doc/loading_data.md +0 -30
  116. package/documentation/content/doc/mouse_controls.md +0 -34
  117. package/documentation/content/doc/quick_start_guide.md +0 -75
  118. package/documentation/content/doc/rendering.md +0 -27
  119. package/documentation/content/doc/state_files.md +0 -18
  120. package/documentation/content/doc/toolbar.md +0 -20
  121. package/documentation/content/doc/welcome_screen.md +0 -23
  122. package/documentation/content/gallery/01-volview-welcome-notes.jpg +0 -0
  123. package/documentation/content/gallery/01-volview-welcome.jpg +0 -0
  124. package/documentation/content/gallery/02-volview-about.jpg +0 -0
  125. package/documentation/content/gallery/02-volview-notifications.jpg +0 -0
  126. package/documentation/content/gallery/02-volview-settings.jpg +0 -0
  127. package/documentation/content/gallery/03-volview-sample-datasets.jpg +0 -0
  128. package/documentation/content/gallery/04-volview-active-data.jpg +0 -0
  129. package/documentation/content/gallery/05-volview-select-data-to-delete.jpg +0 -0
  130. package/documentation/content/gallery/06-volview-corner-annotation.jpg +0 -0
  131. package/documentation/content/gallery/07-volview-layout-notes.jpg +0 -0
  132. package/documentation/content/gallery/07-volview-layout.jpg +0 -0
  133. package/documentation/content/gallery/09-volview-layout-3DPrimary.jpg +0 -0
  134. package/documentation/content/gallery/10-volview-wl-pan-zoom-notes.jpg +0 -0
  135. package/documentation/content/gallery/10-volview-wl-pan-zoom.jpg +0 -0
  136. package/documentation/content/gallery/11-volview-paint-notes.jpg +0 -0
  137. package/documentation/content/gallery/11-volview-paint.jpg +0 -0
  138. package/documentation/content/gallery/12-volview-paint-options.jpg +0 -0
  139. package/documentation/content/gallery/13-volview-crop-notes.jpg +0 -0
  140. package/documentation/content/gallery/13-volview-crop.jpg +0 -0
  141. package/documentation/content/gallery/14-volview-ruler.jpg +0 -0
  142. package/documentation/content/gallery/15-volview-crosshairs.jpg +0 -0
  143. package/documentation/content/gallery/16-volview-rendering.jpg +0 -0
  144. package/documentation/content/gallery/17-volview-colormap-notes.jpg +0 -0
  145. package/documentation/content/gallery/17-volview-colormap.jpg +0 -0
  146. package/documentation/content/gallery/17-volview-opacity-notes.jpg +0 -0
  147. package/documentation/content/gallery/17-volview-opacity.jpg +0 -0
  148. package/documentation/content/gallery/17-volview-opacity2.jpg +0 -0
  149. package/documentation/content/gallery/18-volview-presets.jpg +0 -0
  150. package/documentation/content/gallery/19-volview-color.jpg +0 -0
  151. package/documentation/content/gallery/19-volview-color2.jpg +0 -0
  152. package/documentation/content/gallery/20-volview-lightfollowcamera0.jpg +0 -0
  153. package/documentation/content/gallery/20-volview-lightfollowcamera1.jpg +0 -0
  154. package/documentation/content/gallery/20-volview-lightfollowcamera2.jpg +0 -0
  155. package/documentation/content/gallery/20-volview-lightfollowcamera3.jpg +0 -0
  156. package/documentation/content/gallery/21-volview-hybrid-final.jpg +0 -0
  157. package/documentation/content/gallery/21-volview-hybrid0.0.jpg +0 -0
  158. package/documentation/content/gallery/21-volview-hybrid0.5.jpg +0 -0
  159. package/documentation/content/gallery/21-volview-hybrid1.0.jpg +0 -0
  160. package/documentation/content/gallery/LocalAmbientOcclusion.jpg +0 -0
  161. package/documentation/content/gallery/Notes.pptx +0 -0
  162. package/documentation/content/gallery/VolView-Overview.jpg +0 -0
  163. package/documentation/content/gallery/index.md +0 -53
  164. package/documentation/content/icon/favicon-16x16.png +0 -0
  165. package/documentation/content/icon/favicon-196x196.png +0 -0
  166. package/documentation/content/icon/favicon-32x32.png +0 -0
  167. package/documentation/content/icon/favicon-96x96.png +0 -0
  168. package/documentation/content/index.pug +0 -43
  169. package/documentation/content/logo.png +0 -0
  170. package/documentation/content/logo.svg +0 -20
  171. package/documentation/data/menu.yml +0 -3
  172. package/documentation/themes/navy/layout/partial/footer.swig +0 -22
  173. package/documentation/tpl/__en__ +0 -31
  174. package/documentation/tpl/__sidebar__ +0 -11
  175. package/patches/jsdom-global+3.0.2.patch +0 -12
  176. package/patches/vue-toastification+1.7.14.patch +0 -41
  177. package/patches/vuetify+2.6.10.patch +0 -13
  178. package/prettier.config.js +0 -9
  179. package/public/index.html +0 -28
  180. package/server/helper.py +0 -147
  181. package/server/host.js +0 -134
  182. package/server/serialize.js +0 -111
  183. package/server/serialize.py +0 -203
  184. package/server/server.py +0 -84
  185. package/server/test.py +0 -17
  186. package/src/assets/logo.png +0 -0
  187. package/src/assets/logo.svg +0 -20
  188. package/src/assets/samples/3DUS-Fetus.jpg +0 -0
  189. package/src/assets/samples/CTA-Head_and_Neck.jpg +0 -0
  190. package/src/assets/samples/MRA-Head_and_Neck.jpg +0 -0
  191. package/src/assets/samples/MRI-Cardiac.jpg +0 -0
  192. package/src/assets/samples/MRI-PROSTATEx.jpg +0 -0
  193. package/src/components/AboutBox.vue +0 -157
  194. package/src/components/AiModule.vue +0 -60
  195. package/src/components/AnnotationsModule.vue +0 -37
  196. package/src/components/App.vue +0 -539
  197. package/src/components/ColorFunctionSlider.vue +0 -181
  198. package/src/components/DataBrowser.vue +0 -173
  199. package/src/components/DragAndDrop.vue +0 -107
  200. package/src/components/GroupableItem.vue +0 -30
  201. package/src/components/ImageDataBrowser.vue +0 -186
  202. package/src/components/ImageListCard.vue +0 -114
  203. package/src/components/ItemGroup.vue +0 -74
  204. package/src/components/LabelmapList.vue +0 -36
  205. package/src/components/LayoutGrid.vue +0 -96
  206. package/src/components/MeasurementsList.vue +0 -134
  207. package/src/components/MessageCenter.vue +0 -189
  208. package/src/components/MessageItem.vue +0 -83
  209. package/src/components/MessageNotificationContent.vue +0 -20
  210. package/src/components/MessageNotifications.vue +0 -84
  211. package/src/components/ModelBrowser.vue +0 -83
  212. package/src/components/ModulePanel.vue +0 -137
  213. package/src/components/PaintControls.vue +0 -174
  214. package/src/components/PatientBrowser.vue +0 -280
  215. package/src/components/PatientStudyVolumeBrowser.vue +0 -325
  216. package/src/components/RenderingModule.vue +0 -49
  217. package/src/components/ResizableNavDrawer.vue +0 -158
  218. package/src/components/SampleDataBrowser.vue +0 -198
  219. package/src/components/SaveSession.vue +0 -57
  220. package/src/components/Settings.vue +0 -35
  221. package/src/components/SliceSlider.vue +0 -182
  222. package/src/components/SpleenModule.vue +0 -101
  223. package/src/components/ToolButton.vue +0 -58
  224. package/src/components/ToolStrip.vue +0 -186
  225. package/src/components/ViewOverlayGrid.vue +0 -84
  226. package/src/components/VolumePresets.vue +0 -165
  227. package/src/components/VolumeProperties.vue +0 -171
  228. package/src/components/VolumeRendering.vue +0 -365
  229. package/src/components/VtkThreeView.vue +0 -512
  230. package/src/components/VtkTwoView.vue +0 -665
  231. package/src/components/__tests__/ResizableNavDrawer.spec.js +0 -32
  232. package/src/components/__tests__/ToolButton.spec.js +0 -46
  233. package/src/components/icons/KitwareLogoIcon.vue +0 -54
  234. package/src/components/icons/VolViewFullLogo.vue +0 -139
  235. package/src/components/icons/VolViewLogo.vue +0 -78
  236. package/src/components/styles/utils.css +0 -16
  237. package/src/components/styles/vtk-view.css +0 -116
  238. package/src/components/tools/CropTool.vue +0 -61
  239. package/src/components/tools/CrosshairsTool.vue +0 -93
  240. package/src/components/tools/MouseManipulatorTool.vue +0 -108
  241. package/src/components/tools/PaintTool.vue +0 -54
  242. package/src/components/tools/PanTool.vue +0 -35
  243. package/src/components/tools/RulerTool.vue +0 -202
  244. package/src/components/tools/SliceScrollTool.vue +0 -123
  245. package/src/components/tools/WindowLevelTool.vue +0 -191
  246. package/src/components/tools/ZoomTool.vue +0 -35
  247. package/src/components/tools/crop/Crop2D.vue +0 -367
  248. package/src/components/tools/crop/Crop2DLineHandle.vue +0 -103
  249. package/src/components/tools/crop/Crop3D.vue +0 -192
  250. package/src/components/tools/crop/CropControls.vue +0 -38
  251. package/src/components/tools/crop/types.ts +0 -12
  252. package/src/components/tools/crosshairs/CrosshairSVG2D.vue +0 -125
  253. package/src/components/tools/crosshairs/CrosshairsWidget2D.vue +0 -100
  254. package/src/components/tools/paint/PaintWidget2D.vue +0 -192
  255. package/src/components/tools/ruler/RulerSVG2D.vue +0 -181
  256. package/src/components/tools/ruler/RulerWidget2D.vue +0 -154
  257. package/src/composables/__tests__/useDoubleRecord.spec.ts +0 -57
  258. package/src/composables/__tests__/useOrientationLabels.spec.ts +0 -29
  259. package/src/composables/isViewAnimating.ts +0 -25
  260. package/src/composables/manageVTKSubscription.ts +0 -6
  261. package/src/composables/onProxyManagerEvent.ts +0 -50
  262. package/src/composables/proxyManager.ts +0 -13
  263. package/src/composables/sync/__tests__/createPrimitiveSyncContext.spec.ts +0 -41
  264. package/src/composables/sync/__tests__/useWindowingSync.spec.ts +0 -51
  265. package/src/composables/sync/createPrimitiveSyncContext.ts +0 -83
  266. package/src/composables/sync/useWindowingSync.ts +0 -48
  267. package/src/composables/useAppLoadingNotifications.ts +0 -73
  268. package/src/composables/useCameraOrientation.ts +0 -34
  269. package/src/composables/useCurrentImage.ts +0 -74
  270. package/src/composables/useCurrentSlice.ts +0 -43
  271. package/src/composables/useDoubleRecord.ts +0 -77
  272. package/src/composables/useEventListener.ts +0 -26
  273. package/src/composables/useGlobalErrorHook.ts +0 -18
  274. package/src/composables/useMultiSelection.ts +0 -29
  275. package/src/composables/useOrientationLabels.ts +0 -62
  276. package/src/composables/usePanels.ts +0 -42
  277. package/src/composables/usePersistCameraConfig.ts +0 -138
  278. package/src/composables/useResizeObserver.ts +0 -37
  279. package/src/composables/useResizeToFit.ts +0 -50
  280. package/src/composables/useSceneBuilder.ts +0 -96
  281. package/src/composables/useToast.js +0 -11
  282. package/src/composables/useVTKCallback.ts +0 -33
  283. package/src/composables/useVTKWorldToDisplay.ts +0 -141
  284. package/src/composables/useViewProxy.ts +0 -87
  285. package/src/composables/useVolumeThumbnailing.ts +0 -173
  286. package/src/composables/useWebGLWatchdog.ts +0 -32
  287. package/src/composables/useWidgetManager.ts +0 -41
  288. package/src/config.ts +0 -182
  289. package/src/constants.ts +0 -38
  290. package/src/core/id.ts +0 -18
  291. package/src/core/provider.ts +0 -31
  292. package/src/core/proxies.ts +0 -90
  293. package/src/core/thumbnailers/__tests__/vtk-image.spec.ts +0 -58
  294. package/src/core/thumbnailers/index.ts +0 -5
  295. package/src/core/thumbnailers/volume-thumbnailer.ts +0 -130
  296. package/src/core/thumbnailers/vtk-image.ts +0 -142
  297. package/src/core/tools/__tests__/paint.spec.ts +0 -101
  298. package/src/core/tools/__tests__/ruler.spec.ts +0 -73
  299. package/src/core/tools/paint/brush.ts +0 -20
  300. package/src/core/tools/paint/ellipse-brush.ts +0 -96
  301. package/src/core/tools/paint/index.ts +0 -141
  302. package/src/core/tools/ruler.ts +0 -149
  303. package/src/global.d.ts +0 -24
  304. package/src/io/__tests__/io.spec.ts +0 -26
  305. package/src/io/dicom.ts +0 -187
  306. package/src/io/index.ts +0 -11
  307. package/src/io/io.ts +0 -157
  308. package/src/io/itk/itkConfig.js +0 -8
  309. package/src/io/itk-dicom/dicom.cpp +0 -327
  310. package/src/io/itk-dicom/web-build/dicom.js +0 -16
  311. package/src/io/itk-dicom/web-build/dicom.umd.js +0 -21
  312. package/src/io/manifest.ts +0 -30
  313. package/src/io/readers.ts +0 -36
  314. package/src/io/state-file/index.ts +0 -170
  315. package/src/io/state-file/schema.ts +0 -277
  316. package/src/io/state-file/utils.ts +0 -33
  317. package/src/io/types.ts +0 -4
  318. package/src/io/vtk/async.reader.worker.ts +0 -50
  319. package/src/io/vtk/async.ts +0 -58
  320. package/src/io/vtk/async.writer.worker.ts +0 -46
  321. package/src/io/vtk/common.ts +0 -30
  322. package/src/io/zip.ts +0 -31
  323. package/src/main.js +0 -66
  324. package/src/main.ts +0 -1
  325. package/src/plugins/vuetify.js +0 -25
  326. package/src/shims-itk.d.ts +0 -67
  327. package/src/shims-misc.d.ts +0 -4
  328. package/src/shims-tsx.d.ts +0 -13
  329. package/src/shims-vtk.d.ts +0 -1042
  330. package/src/shims-vue.d.ts +0 -5
  331. package/src/store/__tests__/datasets.spec.ts +0 -75
  332. package/src/store/__tests__/messages.spec.ts +0 -74
  333. package/src/store/__tests__/rulers.spec.ts +0 -77
  334. package/src/store/__tests__/view-configs.spec.ts +0 -37
  335. package/src/store/datasets-dicom.ts +0 -398
  336. package/src/store/datasets-files.ts +0 -35
  337. package/src/store/datasets-images.ts +0 -118
  338. package/src/store/datasets-labelmaps.ts +0 -136
  339. package/src/store/datasets-models.ts +0 -25
  340. package/src/store/datasets.ts +0 -341
  341. package/src/store/messages.ts +0 -144
  342. package/src/store/tools/crop.ts +0 -136
  343. package/src/store/tools/crosshairs.ts +0 -131
  344. package/src/store/tools/index.ts +0 -95
  345. package/src/store/tools/paint.ts +0 -191
  346. package/src/store/tools/rulers.ts +0 -305
  347. package/src/store/tools/types.ts +0 -54
  348. package/src/store/view-configs/camera.ts +0 -51
  349. package/src/store/view-configs/common.ts +0 -61
  350. package/src/store/view-configs/slicing.ts +0 -86
  351. package/src/store/view-configs/types.ts +0 -39
  352. package/src/store/view-configs/volume-coloring.ts +0 -193
  353. package/src/store/view-configs/windowing.ts +0 -69
  354. package/src/store/view-configs.ts +0 -78
  355. package/src/store/views.ts +0 -130
  356. package/src/types/index.ts +0 -16
  357. package/src/types/layout.ts +0 -10
  358. package/src/types/lps.ts +0 -40
  359. package/src/types/views.ts +0 -65
  360. package/src/types/vtk-types.ts +0 -29
  361. package/src/utils/__tests__/lps.spec.ts +0 -102
  362. package/src/utils/color.ts +0 -23
  363. package/src/utils/errors.js +0 -3
  364. package/src/utils/fetch.ts +0 -101
  365. package/src/utils/hacks.ts +0 -14
  366. package/src/utils/index.ts +0 -83
  367. package/src/utils/lps.ts +0 -129
  368. package/src/utils/manipulators.ts +0 -35
  369. package/src/utils/promise-worker.ts +0 -45
  370. package/src/utils/vtk-helpers.ts +0 -215
  371. package/src/utils/workerHandler.js +0 -42
  372. package/src/vtk/ColorMaps.ts +0 -72
  373. package/src/vtk/CrosshairsWidget/behavior.ts +0 -112
  374. package/src/vtk/CrosshairsWidget/index.d.ts +0 -22
  375. package/src/vtk/CrosshairsWidget/index.js +0 -73
  376. package/src/vtk/CrosshairsWidget/state.ts +0 -51
  377. package/src/vtk/IJKSliceRepresentationProxy/index.d.ts +0 -9
  378. package/src/vtk/IJKSliceRepresentationProxy/index.js +0 -59
  379. package/src/vtk/LPSView2DProxy/index.d.ts +0 -18
  380. package/src/vtk/LPSView2DProxy/index.js +0 -89
  381. package/src/vtk/LPSView3DProxy/index.d.ts +0 -16
  382. package/src/vtk/LPSView3DProxy/index.js +0 -78
  383. package/src/vtk/LabelMap/index.d.ts +0 -16
  384. package/src/vtk/LabelMap/index.js +0 -49
  385. package/src/vtk/LabelMapSliceRepProxy/index.d.ts +0 -6
  386. package/src/vtk/LabelMapSliceRepProxy/index.js +0 -104
  387. package/src/vtk/MedicalColorPresets.json +0 -1448
  388. package/src/vtk/PaintBrushContextRepresentation/index.js +0 -191
  389. package/src/vtk/PaintWidget/behavior.ts +0 -101
  390. package/src/vtk/PaintWidget/index.d.ts +0 -28
  391. package/src/vtk/PaintWidget/index.js +0 -56
  392. package/src/vtk/PaintWidget/state.ts +0 -41
  393. package/src/vtk/PiecewiseWidget/index.js +0 -203
  394. package/src/vtk/RulerWidget/behavior.ts +0 -185
  395. package/src/vtk/RulerWidget/index.d.ts +0 -25
  396. package/src/vtk/RulerWidget/index.js +0 -79
  397. package/src/vtk/RulerWidget/state.ts +0 -63
  398. package/src/vtk/TreJsonConverter/index.js +0 -150
  399. package/src/vtk/proxy.js +0 -66
  400. package/src/vtk/proxyUtils.js +0 -16
  401. package/src/vtk/webvr-empty.js +0 -1
  402. package/tests/testUtils.js +0 -12
  403. package/tsconfig.json +0 -46
  404. package/vue.config.js +0 -86
@@ -0,0 +1,2 @@
1
+ (function(){var e={4132:function(e,t,n){"use strict";n(153);var i=n(144),a=n(5706),o=n(1151),r=n(7720),s=n(8406),l=n(5779),c=n(9460),u=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("drag-and-drop",{attrs:{enabled:"",id:"app-container"},on:{drop:e.openFiles},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.dragHover;return[n("v-app",[n("v-app-bar",{attrs:{app:"",dense:"","clipped-left":""}},[e.$vuetify.breakpoint.mobile?n("v-btn",{attrs:{icon:""},on:{click:function(t){e.leftSideBar=!e.leftSideBar}}},[n("v-icon",[e._v("mdi-menu")])],1):e._e(),n("v-toolbar-title",{staticClass:"d-flex flex-row align-center mt-1"},[e.$vuetify.breakpoint.mobile?n("vol-view-logo"):n("vol-view-full-logo")],1),n("v-spacer"),n("v-btn",{staticClass:"toolbar-button",attrs:{tile:"",icon:""},on:{click:function(t){e.aboutBoxDialog=!e.aboutBoxDialog}}},[n("v-icon",[e._v("mdi-help-circle-outline")])],1)],1),n("resizable-nav-drawer",{attrs:{id:"left-nav",app:"",clipped:"",touchless:"","min-width":450,"max-width":550,width:450,"handle-size":4},model:{value:e.leftSideBar,callback:function(t){e.leftSideBar=t},expression:"leftSideBar"}},[n("module-panel",{on:{close:function(t){e.leftSideBar=!1}}})],1),n("v-main",{attrs:{id:"content-main"}},[n("div",{staticClass:"fill-height d-flex flex-row flex-grow-1"},[n("div",{staticClass:"grey darken-4 d-flex flex-column align-center",attrs:{id:"tools-strip"}},[n("tool-button",{attrs:{size:"40",icon:"mdi-folder-open",name:"Open files"},on:{click:e.userPromptFiles}}),n("tool-button",{attrs:{size:"40",icon:"mdi-content-save-all",name:"Save session"},on:{click:function(t){e.saveDialog=!0}}}),n("div",{staticClass:"my-1 tool-separator"}),n("v-menu",{attrs:{"offset-x":""},scopedSlots:e._u([{key:"activator",fn:function(t){var i=t.on,a=t.attrs;return[n("div",[n("tool-button",e._g(e._b({attrs:{size:"40",icon:"mdi-view-dashboard",name:"Layouts"}},"tool-button",a,!1),i))],1)]}}],null,!0)},[n("v-card",[n("v-card-text",[n("v-radio-group",{staticClass:"mt-0",attrs:{"hide-details":""},model:{value:e.layoutName,callback:function(t){e.layoutName=t},expression:"layoutName"}},e._l(e.Layouts,(function(e,t){return n("v-radio",{key:t,attrs:{label:e.name,value:t}})})),1)],1)],1)],1),e.hasData?[n("tool-strip")]:e._e(),n("v-spacer"),n("v-badge",{attrs:{overlap:"","offset-x":"20","offset-y":"20",content:e.messageCount,color:e.messageBadgeColor,value:e.messageCount>0}},[n("tool-button",{attrs:{size:"40",icon:"mdi-bell-outline",name:"Notifications"},on:{click:function(t){e.messageDialog=!0}}})],1),n("tool-button",{attrs:{size:"40",icon:"mdi-cog",name:"Settings"},on:{click:function(t){e.settingsDialog=!0}}})],2),n("div",{staticClass:"d-flex flex-column flex-grow-1"},[n("layout-grid",{directives:[{name:"show",rawName:"v-show",value:e.hasData,expression:"hasData"}],attrs:{layout:e.currentLayout}}),n("v-row",{directives:[{name:"show",rawName:"v-show",value:!e.hasData,expression:"!hasData"}],staticClass:"clickable grey darken-3",attrs:{"no-gutters":"",align:"center"},on:{click:e.userPromptFiles}},[n("v-col",[n("v-row",{attrs:{justify:"center"}},[n("v-card",{staticClass:"text-center headline",attrs:{flat:"",dark:"",color:"transparent"}},[n("div",[n("v-icon",{attrs:{size:"64"}},[e._v("mdi-folder-open")])],1),n("div",[e._v("Click to open local files.")]),n("div",{staticClass:"mt-8"},[n("v-icon",{attrs:{size:"64"}},[e._v("mdi-arrow-down-bold")])],1),n("div",[e._v("Drag & drop your DICOM files.")]),n("div",{staticClass:"vertical-offset-margin"},[n("v-icon",{attrs:{size:"64"}},[e._v("mdi-cloud-off-outline")])],1),n("div",[e._v("Secure: Your data never leaves your machine.")])])],1)],1)],1)],1)])]),n("v-dialog",{attrs:{width:"35%"},model:{value:e.aboutBoxDialog,callback:function(t){e.aboutBoxDialog=t},expression:"aboutBoxDialog"}},[n("about-box")],1),n("v-dialog",{attrs:{width:"75%","content-class":"fill-height"},model:{value:e.messageDialog,callback:function(t){e.messageDialog=t},expression:"messageDialog"}},[n("message-center",{on:{close:function(t){e.messageDialog=!1}}})],1),n("message-notifications",{on:{"open-notifications":function(t){e.messageDialog=!0}}}),n("v-dialog",{attrs:{width:"50%"},model:{value:e.settingsDialog,callback:function(t){e.settingsDialog=t},expression:"settingsDialog"}},[n("settings",{on:{close:function(t){e.settingsDialog=!1}}})],1),n("v-dialog",{attrs:{width:"30%"},model:{value:e.saveDialog,callback:function(t){e.saveDialog=t},expression:"saveDialog"}},[n("save-session",{on:{close:function(t){e.saveDialog=!1}}})],1),n("v-overlay",{staticClass:"text-center",attrs:{value:i,color:"#fff","z-index":"100"}},[n("v-icon",{attrs:{color:"black",size:"4.75rem"}},[e._v("mdi-download")]),n("div",{staticClass:"text-h2 font-weight-bold black--text"},[e._v(" Drop your files to open ")])],1)],1)]}}])})},d=[],A=n(7807),p=n(9709);const v="ew-resize";var m,g,f={name:"ResizableNavDrawer",props:{minWidth:Number,maxWidth:Number,width:Number,handleSize:{type:Number,default:4}},data(){return{internalWidth:this.width}},computed:{handleSizeCSS(){return`${this.handleSize}px`}},mounted(){this.oldCursor="",this.oldUserSelect="",this.setResizableStyles(),this.setEvents()},beforeDestroy(){this.clearEvents(),this.stopResize()},render(e){return e(p.Z,{props:{...this.$attrs,width:this.internalWidth},on:this.$listeners,scopedSlots:this.$scopedSlots,ref:"infoPane"},this.$slots.default)},methods:{setResizableStyles(){const e=this.$refs.infoPane.$el.querySelector(".v-navigation-drawer__border");e.style.width=this.handleSizeCSS,e.style.backgroundColor="transparent",e.style.touchAction="none","right"in this.$attrs?e.style.borderLeft="2px solid rgba(0, 0, 0, 0.24)":e.style.borderRight="2px solid rgba(0, 0, 0, 0.24)",e.style.cursor=v},setEvents(){this.drawerBorder=this.$refs.infoPane.$el.querySelector(".v-navigation-drawer__border"),this.drawerBorder.addEventListener("pointerdown",this.startResize),this.drawerBorder.addEventListener("pointermove",this.handleResize),this.drawerBorder.addEventListener("pointerup",this.stopResize)},clearEvents(){this.drawerBorder.removeEventListener("pointerdown",this.startResize),this.drawerBorder.removeEventListener("pointermove",this.handleResize),this.drawerBorder.removeEventListener("pointerup",this.stopResize)},startResize(e){this.drawerBorder.hasPointerCapture(e.pointerId)||(this.drawerBorder.setPointerCapture(e.pointerId),this.$refs.infoPane.$el.style.transition="initial",this.setCursor(v),this.disableSelection())},stopResize(e){if(e){if(!this.drawerBorder.hasPointerCapture(e.pointerId))return;this.drawerBorder.releasePointerCapture(e.pointerId)}this.$refs.infoPane.$el.style.transition="",this.resetCursor(),this.resetSelection()},handleResize(e){if(!this.drawerBorder.hasPointerCapture(e.pointerId))return;const t="right"in this.$attrs?document.body.scrollWidth-e.clientX:e.clientX,n=this.minWidth||this.handleSize,i=this.maxWidth||1/0;this.internalWidth=Math.min(i,Math.max(n,t)),this.$emit("resize",this.internalWidth)},setCursor(e){this.oldCursor=document.body.style.cursor,document.body.style.cursor=e},resetCursor(){document.body.style.cursor=this.oldCursor,this.oldCursor=""},disableSelection(){this.oldUserSelect=document.body.style.userSelect,document.body.style.userSelect="none"},resetSelection(){document.body.style.userSelect=this.oldUserSelect,this.oldUserSelect=""}}},h=f,C=n(1001),y=(0,C.Z)(h,m,g,!1,null,null,null),w=y.exports,b=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("v-tooltip",{attrs:{right:"",transition:"slide-x-transition"},scopedSlots:e._u([{key:"activator",fn:function(t){var i=t.on;return[n("v-btn",e._g(e._b({class:e.classV,attrs:{text:"",tile:"",dark:"",height:e.sizeV,width:e.sizeV,"min-width":e.sizeV,"max-width":e.sizeV}},"v-btn",e.$attrs,!1),Object.assign({},i,e.$listeners)),[n("v-icon",{attrs:{size:e.iconSize}},[e._v(e._s(e.icon))]),e._t("default")],2)]}}],null,!0)},[n("span",[e._v(e._s(e.name))])])},S=[],x={name:"ToolButton",props:{icon:{type:String,required:!0},name:{type:String,required:!0},size:{type:[Number,String],default:40},buttonClass:[String,Array,Object]},computed:{sizeV(){return Number(this.size)},iconSize(){return Math.floor(.6*this.sizeV)},classV(){const e=this.buttonClass;return"string"===typeof e?e:Array.isArray(e)?e.join(" "):e&&Object.keys(e).length?Object.keys(this.buttonClass).filter((e=>this.buttonClass[e])).join(" "):""}}},P=x,I=n(3453),D=n.n(I),V=n(4562),R=n(4324),M=n(2082),E=(0,C.Z)(P,b,S,!1,null,null,null),B=E.exports;D()(E,{VBtn:V.Z,VIcon:R.Z,VTooltip:M.Z});var k=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"layout-container flex-equal",class:e.flexFlow},e._l(e.items,(function(t,i){return n("div",{key:i,staticClass:"d-flex flex-equal"},["layout"===t.type?n("layout-grid",{attrs:{layout:t}}):n("div",{staticClass:"layout-item"},[n(t.component,e._b({key:t.id,tag:"component",attrs:{id:t.id}},"component",t.props,!1))],1)],1)})),0)},Z=[],F=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"vtk-container-wrapper",attrs:{tabindex:"0"},on:{pointerenter:function(t){e.hover=!0},pointerleave:function(t){e.hover=!1},focusin:function(t){e.hover=!0},focusout:function(t){e.hover=!1}}},[n("div",{staticClass:"vtk-gutter"},[n("v-tooltip",{attrs:{right:"",transition:"slide-x-transition"},scopedSlots:e._u([{key:"activator",fn:function(t){var i=t.on,a=t.attrs;return[n("v-btn",e._g(e._b({attrs:{dark:"","x-small":"",icon:""},on:{click:e.enableResizeToFit}},"v-btn",a,!1),i),[n("v-icon",{staticClass:"py-1",attrs:{small:""}},[e._v("mdi-camera-flip-outline")])],1)]}}])},[n("span",[e._v("Reset camera")])]),n("slice-slider",{staticClass:"slice-slider",attrs:{slice:e.slice,min:e.sliceMin,max:e.sliceMax,step:1,"handle-height":20},on:{input:e.setSlice}})],1),n("div",{staticClass:"vtk-container",class:e.active?"active":""},[n("div",{staticClass:"vtk-sub-container"},[n("div",{ref:"vtkContainerRef",staticClass:"vtk-view"})]),n("div",{staticClass:"overlay-no-events tool-layer"},[n("pan-tool",{attrs:{"view-id":e.viewID}}),n("zoom-tool",{attrs:{"view-id":e.viewID}}),n("slice-scroll-tool",{attrs:{"view-id":e.viewID}}),n("window-level-tool",{attrs:{"view-id":e.viewID}}),n("ruler-tool",{attrs:{"view-type":"2D","view-id":e.viewID,"widget-manager":e.widgetManager,"view-direction":e.viewDirection,slice:e.slice}}),n("paint-tool",{attrs:{"view-id":e.viewID,"view-direction":e.viewDirection,"widget-manager":e.widgetManager,slice:e.slice}}),n("crosshairs-tool",{attrs:{"view-id":e.viewID,"view-direction":e.viewDirection,"widget-manager":e.widgetManager,slice:e.slice}}),n("crop-tool",{attrs:{"view-id":e.viewID}})],1),n("view-overlay-grid",{staticClass:"overlay-no-events view-annotations",scopedSlots:e._u([{key:"top-middle",fn:function(){return[n("div",{staticClass:"annotation-cell"},[n("span",[e._v(e._s(e.topLabel))])])]},proxy:!0},{key:"middle-left",fn:function(){return[n("div",{staticClass:"annotation-cell"},[n("span",[e._v(e._s(e.leftLabel))])])]},proxy:!0},{key:"bottom-left",fn:function(){return[n("div",{staticClass:"annotation-cell"},[n("div",[e._v("Slice: "+e._s(e.slice+1)+"/"+e._s(e.sliceMax+1))]),"number"===typeof e.windowWidth&&"number"===typeof e.windowLevel?n("div",[e._v(" W/L: "+e._s(e.windowWidth.toFixed(2))+" / "+e._s(e.windowLevel.toFixed(2))+" ")]):e._e()])]},proxy:!0},{key:"top-right",fn:function(){return[n("div",{staticClass:"annotation-cell"},[null!==e.dicomInfo?n("v-menu",{attrs:{"open-on-hover":"","offset-y":"",left:"","nudge-left":"10",dark:"","max-width":"300px"},scopedSlots:e._u([{key:"activator",fn:function(t){var i=t.on,a=t.attrs;return[n("v-btn",e._g(e._b({staticClass:"pointer-events-all",attrs:{dark:"",small:"",icon:""}},"v-btn",a,!1),i),[n("v-icon",{attrs:{dark:""}},[e._v(" mdi-information ")])],1)]}}],null,!1,2094956767)},[n("v-list",{staticClass:"grey darken-3"},[n("v-list-item",[n("v-list-item-content",[n("v-list-item-title",{staticClass:"font-weight-bold"},[e._v(" PATIENT / CASE ")]),n("v-divider"),n("v-list-item-title",[e._v(" ID: "+e._s(e.dicomInfo.patientID)+" ")])],1)],1),n("v-list-item",[n("v-list-item-content",[n("v-list-item-title",{staticClass:"font-weight-bold"},[e._v(" STUDY ")]),n("v-divider"),n("v-list-item-title",[e._v(" ID: "+e._s(e.dicomInfo.studyID)+" ")]),n("v-list-item-title",[e._v(" "+e._s(e.dicomInfo.studyDescription)+" ")])],1)],1),n("v-list-item",[n("v-list-item-content",[n("v-list-item-title",{staticClass:"font-weight-bold"},[e._v(" SERIES ")]),n("v-divider"),n("v-list-item-title",[e._v(" Series #: "+e._s(e.dicomInfo.seriesNumber)+" ")]),n("v-list-item-title",[e._v(" "+e._s(e.dicomInfo.seriesDescription)+" ")])],1)],1)],1)],1):e._e()],1)]},proxy:!0}])}),n("transition",{attrs:{name:"loading"}},[e.isImageLoading?n("div",{staticClass:"overlay-no-events loading"},[n("div",[e._v("Loading the image")]),n("div",[n("v-progress-circular",{attrs:{indeterminate:"",color:"blue"}})],1)]):e._e()])],1)])},T=[],O=n(6309);function L(e){(0,a.Ah)((()=>e.unsubscribe()))}var z=n(7160);function U(e,t=!1){const n=(0,a.iH)(t);let i=!0;const o={position:[0,0,0],parallelScale:0};function r(e){if(i){i=!1;try{e()}finally{i=!0}}}function s(){o.position=e.getPosition(),o.parallelScale=e.getParallelScale()}return L(e.onModified((()=>{if(i&&n.value){const t=e.getPosition(),i=e.getParallelScale();z.equals(t,o.position)&&i===o.parallelScale||(n.value=!1)}}))),{resizeToFit:n,ignoreResizeToFitTracking:r,resetResizeToFitTracking:s}}var _=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{ref:"handleContainer",staticClass:"slice-slider",on:{pointerdown:e.onDragStart,pointermove:e.onDragMove,pointerup:e.onDragEnd,pointercancel:e.onDragEnd,contextmenu:function(e){return e.preventDefault()}}},[n("div",{staticClass:"slice-slider-track"}),n("div",{ref:"handle",staticClass:"slice-slider-handle",style:{height:e.handleHeight+"px",transform:"translate3d(0, "+e.handlePosition+"px, 0)"}})])},H=[];function W(e){if(!e||"none"===e)return 0;const t=e.match(/matrix(?:3d)?\((.+)\)/)[1].split(",").map((e=>Number(e))),n=e.includes("3d");return n?t[13]:t[5]}var Q={props:{slice:{type:Number,default:0},min:{type:Number,required:!0},max:{type:Number,required:!0},step:{type:Number,required:!0},handleHeight:{type:Number,default:20}},data(){return{maxHandlePos:0,dragging:!1,initialHandlePos:0,initialMousePosY:0,yOffset:0}},computed:{handlePosition(){const e=this.max-this.min<=0?1:this.max-this.min,t=this.maxHandlePos*((this.slice-this.min)/e);return this.dragging?this.draggingHandlePos:t},draggingHandlePos(){return Math.min(Math.max(0,this.initialHandlePos+this.yOffset),this.maxHandlePos)}},mounted(){this.updateMaxHandlePos(),this.resizeObserver=new ResizeObserver((e=>{1===e.length&&this.updateMaxHandlePos()})),this.resizeObserver.observe(this.$refs.handleContainer)},beforeDestroy(){this.resizeObserver.disconnect()},methods:{updateMaxHandlePos(){this.maxHandlePos=this.$refs.handleContainer.clientHeight-this.handleHeight},onDragStart(e){if(e.preventDefault(),this.dragging=!0,this.initialMousePosY=e.pageY,e.target===this.$refs.handle){const e=window.getComputedStyle(this.$refs.handle);this.initialHandlePos=W(e.transform)}else{const{y:t}=this.$refs.handleContainer.getBoundingClientRect();this.initialHandlePos=Math.max(0,Math.min(this.maxHandlePos,e.pageY-t-this.handleHeight/2));const n=this.getNearestSlice(this.initialHandlePos);this.$emit("input",n)}this.yOffset=0,this.$refs.handleContainer.setPointerCapture(e.pointerId)},onDragMove(e){if(!this.$refs.handleContainer.hasPointerCapture(e.pointerId))return;e.preventDefault(),this.yOffset=e.pageY-this.initialMousePosY;const t=this.getNearestSlice(this.handlePosition);this.$emit("input",t)},onDragEnd(e){if(!this.$refs.handleContainer.hasPointerCapture(e.pointerId))return;e.preventDefault(),this.$refs.handleContainer.releasePointerCapture(e.pointerId),this.dragging=!1;const t=this.getNearestSlice(this.handlePosition);this.$emit("input",t)},getNearestSlice(e){const t=e/this.maxHandlePos,n=t*(this.max-this.min)+this.min;return Math.round(n/this.step)*this.step}}},N=Q,j=(0,C.Z)(N,_,H,!1,null,"091a8639",null),G=j.exports,K=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{class:e.$style.gridRoot},[n("div",{class:[e.$style.top,e.$style.row]},[n("div",{class:[e.$style.left,e.$style.cell]},[e._t("top-left")],2),n("div",{class:[e.$style.center,e.$style.cell]},[e._t("top-middle")],2),n("div",{class:[e.$style.right,e.$style.cell]},[e._t("top-right")],2)]),n("div",{class:[e.$style.middle,e.$style.row]},[n("div",{class:[e.$style.left,e.$style.cell]},[e._t("middle-left")],2),n("div",{class:[e.$style.center,e.$style.cell]},[e._t("middle-center")],2),n("div",{class:[e.$style.right,e.$style.cell]},[e._t("middle-right")],2)]),n("div",{class:[e.$style.bottom,e.$style.row]},[n("div",{class:[e.$style.left,e.$style.cell]},[e._t("bottom-left")],2),n("div",{class:[e.$style.center,e.$style.cell]},[e._t("bottom-center")],2),n("div",{class:[e.$style.right,e.$style.cell]},[e._t("bottom-right")],2)])])},J=[],Y={gridRoot:"ViewOverlayGrid_gridRoot_SmXm0",row:"ViewOverlayGrid_row_U9UZW",cell:"ViewOverlayGrid_cell_HBC3F",top:"ViewOverlayGrid_top_wZZpo",left:"ViewOverlayGrid_left_AoBtT",center:"ViewOverlayGrid_center_gCE3z",middle:"ViewOverlayGrid_middle_lMLVm",bottom:"ViewOverlayGrid_bottom_cdPFJ",right:"ViewOverlayGrid_right_q8jVS"},q={};function X(e){this["$style"]=Y.locals||Y}var $=(0,C.Z)(q,K,J,!1,X,null,null),ee=$.exports;function te(e,t){const n=new ResizeObserver((e=>{1===e.length&&t(e[0])}));return(0,a.YP)(e,((e,t)=>{t&&n.unobserve(t),e&&n.observe(e)}),{immediate:!0}),(0,a.Jd)((()=>{const t=(0,a.SU)(e);t&&n.unobserve(t)})),n}const ne=1e-5,ie=Symbol("VTKTwoViewWidgetManager"),ae=Symbol("VTKThreeViewWidgetManager"),oe={WebGLLost:{title:"Viewer Error",details:"Lost the WebGL context! Please reload the webpage. If the problem persists, you may need to restart your web browser."}};function re(e){const t=t=>{let n=null;const i=()=>{null===n||void 0===n||n.unsubscribe(),n=null};(0,a.Ah)(i),(0,a.dq)(e)?(0,a.m0)((()=>{i(),e.value&&(n=e.value(t))})):e&&(n=e(t))};return t}function se(e){return e.map(((e,t)=>({value:e,axis:t}))).filter((({value:e})=>Math.abs(e)>ne)).sort(((e,t)=>Math.abs(t.value)-Math.abs(e.value))).map((({value:e,axis:t})=>(1===Math.sign(e)?"LPS":"RAI")[t])).join("")}function le(e){const t=(0,a.Fl)((()=>e.value.getCamera())),n=(0,a.iH)(""),i=(0,a.iH)(""),o=(0,a.iH)(""),r=(0,a.iH)("");function s(){const e=t.value.getViewUp(),a=t.value.getDirectionOfProjection(),s=[0,0,0];z.cross(s,a,e);const l=e.map((e=>-1*e)),c=s.map((e=>-1*e));n.value=se(e),r.value=se(s),o.value=se(l),i.value=se(c)}const l=re((0,a.Fl)((()=>t.value.onModified)));return l(s),s(),{top:n,right:r,bottom:o,left:i}}const ce=["Sagittal","Coronal","Axial"];function ue(){return{Sagittal:0,Coronal:0,Axial:0}}function de(){return{Sagittal:[0,0],Coronal:[0,0],Axial:[0,0]}}function Ae(e,t,n){const i=2*n[t];return e.slice(i,i+2)}function pe(e){switch(e){case"Superior":case"Inferior":return"Axial";case"Left":case"Right":return"Sagittal";case"Posterior":case"Anterior":return"Coronal";default:throw new Error(`Invalid LPS direction: ${e}`)}}const ve=()=>({Left:z.fromValues(1,0,0),Right:z.fromValues(-1,0,0),Posterior:z.fromValues(0,1,0),Anterior:z.fromValues(0,-1,0),Superior:z.fromValues(0,0,1),Inferior:z.fromValues(0,0,-1),Sagittal:0,Coronal:1,Axial:2});function me(e){const t=[0,1,2],n=[0,1,2],i=ve();for(let a=0;a<3;a++){let a=0,o=[0,0],r=[0,0];t.forEach(((t,i)=>{n.forEach(((n,s)=>{const l=e[3*t+n];Math.abs(l)>Math.abs(a)&&(a=l,o=[t,n],r=[i,s])}))}));const[s,l]=o,c=e.slice(3*s,3*(s+1)),u=Math.sign(a),d=c.map((e=>e*u)),A=c.map((e=>e*-u));0===l?(i.Left=d,i.Right=A,i.Sagittal=s):1===l?(i.Posterior=d,i.Anterior=A,i.Coronal=s):2===l&&(i.Superior=d,i.Inferior=A,i.Axial=s),t.splice(r[0],1),n.splice(r[1],1)}return i}var ge=n(1269);function fe(){let e=null,t=null;const n=t=>{e&&e(t)},i=e=>{t&&t(e)},a=new Promise(((n,i)=>{e=n,t=i}));return{promise:a,resolve:n,reject:i}}function he(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}function Ce(e,t,n){return Math.min(n,Math.max(t,e))}function ye(e,...t){return t.reduce(((t,n)=>({...t,[n]:e[n]})),{})}const we=(e,t,n)=>(e in t||(t[e]=n),t[e]);function be(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function Se(e){return Array.isArray(e)?e:[e]}function xe(e){var t;return null!==(t=new URL(e).pathname.split("/").at(-1))&&void 0!==t?t:""}var Pe,Ie=n(5600),De=n(5975),Ve=n(1604),Re=n(4953);(function(e){e["WindowLevel"]="WindowLevel",e["Pan"]="Pan",e["Zoom"]="Zoom",e["Ruler"]="Ruler",e["Paint"]="Paint",e["Crosshairs"]="Crosshairs",e["Crop"]="Crop"})(Pe||(Pe={}));var Me,Ee,Be,ke=n(7862);function Ze(){return ke.Z.createBuilder().addStateFromMixin({labels:["points"],name:"firstPoint",mixins:["origin","scale1","visible","color"],initialValues:{scale1:20,origin:null,visible:!1}}).addStateFromMixin({labels:["points"],name:"secondPoint",mixins:["origin","scale1","visible","color"],initialValues:{scale1:20,origin:null,visible:!1}}).addField({name:"interactionState",initialValue:Me.PlacingFirst}).addField({name:"ID",initialValue:""}).build()}(function(e){e[e["Settled"]=0]="Settled",e[e["PlacingFirst"]=1]="PlacingFirst",e[e["PlacingSecond"]=2]="PlacingSecond"})(Me||(Me={})),function(e){e["V"]="V",e["H"]="H"}(Ee||(Ee={})),function(e){e["DICOM"]="dicom",e["IMAGE"]="image"}(Be||(Be={}));const Fe=Ve.z.nativeEnum(Be),Te=Ve.z.union([Ve.z.literal("Left"),Ve.z.literal("Right"),Ve.z.literal("Posterior"),Ve.z.literal("Anterior"),Ve.z.literal("Superior"),Ve.z.literal("Inferior")]),Oe=Ve.z.object({id:Ve.z.string(),path:Ve.z.string(),type:Fe}),Le=Ve.z.nativeEnum(Ee),ze=Ve.z.lazy((()=>Ve.z.object({name:Ve.z.string().optional(),direction:Le,items:Ve.z.array(Ve.z.union([ze,Ve.z.string()]))}))),Ue=Ve.z.tuple([Ve.z.number(),Ve.z.number(),Ve.z.number()]),_e=Ve.z.object({width:Ve.z.number(),level:Ve.z.number(),min:Ve.z.number(),max:Ve.z.number()}),He=Ve.z.object({slice:Ve.z.number(),min:Ve.z.number(),max:Ve.z.number(),axisDirection:Te}),We=Ve.z.object({parallelScale:Ve.z.number().optional(),position:Ue.optional(),focalPoint:Ue.optional(),directionOfProjection:Ue.optional(),viewUp:Ue.optional()}),Qe=Ve.z.object({arrayName:Ve.z.string(),location:Ve.z.string()}),Ne=Ve.z.object({position:Ve.z.number(),height:Ve.z.number(),width:Ve.z.number(),xBias:Ve.z.number(),yBias:Ve.z.number()}),je=Ve.z.object({x:Ve.z.number(),y:Ve.z.number(),midpoint:Ve.z.number(),sharpness:Ve.z.number()}),Ge=Ve.z.object({mode:Ve.z.literal(Re.Z.Mode.Gaussians),gaussians:Ne.array(),mappingRange:Ve.z.tuple([Ve.z.number(),Ve.z.number()])}),Ke=Ve.z.object({mode:Ve.z.literal(Re.Z.Mode.Points),preset:Ve.z.string(),shift:Ve.z.number(),mappingRange:Ve.z.tuple([Ve.z.number(),Ve.z.number()])}),Je=Ve.z.object({mode:Ve.z.literal(Re.Z.Mode.Nodes),nodes:je.array(),mappingRange:Ve.z.tuple([Ve.z.number(),Ve.z.number()])}),Ye=Ve.z.union([Ge,Ke,Je]),qe=Ve.z.object({preset:Ve.z.string(),mappingRange:Ve.z.tuple([Ve.z.number(),Ve.z.number()])}),Xe=(Ve.z.object({colorBy:Qe,transferFunction:qe,opacityFunction:Ye}),Ve.z.object({enabled:Ve.z.boolean(),lightFollowsCamera:Ve.z.boolean(),useVolumetricScatteringBlending:Ve.z.boolean(),volumetricScatteringBlending:Ve.z.number(),useLocalAmbientOcclusion:Ve.z.boolean(),laoKernelSize:Ve.z.number(),laoKernelRadius:Ve.z.number(),ambient:Ve.z.number(),diffuse:Ve.z.number(),specular:Ve.z.number()})),$e=Ve.z.object({colorBy:Qe,transferFunction:qe,opacityFunction:Ye,cvr:Xe}),et=Ve.z.object({window:_e.optional(),slice:He.optional(),camera:We.optional(),volumeColorConfig:$e.optional()}),tt=Ve.z.union([Ve.z.literal("2D"),Ve.z.literal("3D")]),nt=Ve.z.object({id:Ve.z.string(),type:tt,props:Ve.z.record(Ve.z.any()),config:Ve.z.record(et)}),it=Ve.z.object({id:Ve.z.string(),parent:Ve.z.string(),path:Ve.z.string()}),at=Ve.z.union([Ve.z.literal("Axial"),Ve.z.literal("Sagittal"),Ve.z.literal("Coronal")]),ot=Ve.z.nativeEnum(Me),rt=Ve.z.object({name:Ve.z.string(),firstPoint:Ue.nullable(),secondPoint:Ue.nullable(),viewAxis:at.nullable(),slice:Ve.z.number().nullable(),imageID:Ve.z.string(),interactionState:ot,color:Ve.z.string()}),st=Ve.z.object({position:Ue}),lt=Ve.z.nativeEnum(Pe),ct=Ve.z.object({activeLabelmapID:Ve.z.string().nullable(),brushSize:Ve.z.number(),brushValue:Ve.z.number(),labelmapOpacity:Ve.z.number()}),ut=Ve.z.object({Sagittal:Ve.z.tuple([Ve.z.number(),Ve.z.number()]),Coronal:Ve.z.tuple([Ve.z.number(),Ve.z.number()]),Axial:Ve.z.tuple([Ve.z.number(),Ve.z.number()])}),dt=Ve.z.record(ut),At=Ve.z.object({rulers:rt.array(),crosshairs:st,paint:ct,crop:dt,current:lt}),pt=Ve.z.object({version:Ve.z.string(),dataSets:Oe.array(),labelMaps:it.array(),tools:At,views:nt.array(),primarySelection:Ve.z.string().optional(),layout:ze}),vt=(0,r.Q_)("files",{state:()=>({byDataID:{}}),getters:{getFiles:e=>t=>t in e.byDataID?e.byDataID[t]:null},actions:{remove(e){e in this.byDataID&&(0,a.IV)(this.byDataID,e)},add(e,t){(0,a.t8)(this.byDataID,e,t)}}});async function mt(e,t,n){const i=vt(),{manifest:a}=e,{zip:o}=e,{dataSets:r}=a;t.forEach((e=>{const t=i.getFiles(e);if(null===t)throw new Error(`No files for dataID: ${e}`);const a=`data/${e}/`;r.push({id:e,path:a,type:n}),t.forEach((t=>{const n=`data/${e}/${t.name}`;o.file(n,t)}))}))}n(7380),n(1118);var gt=n(7643),ft=n(5733),ht=n.n(ft);async function Ct(e){const t=await ht().loadAsync(e),n=[],i=[];return t.forEach(((e,a)=>{if(!a.dir){const e=a.name.split("/"),o=e[e.length-1],r=[...e.slice(0,e.length-1),""].join("/"),s=t.file(a.name);s&&(n.push(s.async("blob").then((e=>new File([e],o)))),i.push(r))}})),Promise.all(n).then((e=>e.map(((e,t)=>({file:e,path:i[t]})))))}const yt=new Set(["zip","application/zip"]),wt=Array.from(new Set(Array.from(gt.Z.keys()).map((e=>e.toLowerCase())))),bt=Array.from(new Set(["vti","vtp","stl","dcm","zip","json",...wt])),St=[{type:"dcm",skip:128,header:Array.from("DICM").map((e=>e.charCodeAt(0)))}],xt=512;function Pt(e,t){if(t.length>e.length)return!1;for(let n=0;n<t.length;n+=1)if(t[n]!==e[n])return!1;return!0}async function It(e){return new Promise((t=>{const n=e.slice(0,xt),i=new FileReader;i.onload=()=>{const e=new Uint8Array(i.result);for(let n=0;n<St.length;n+=1){const{type:i,header:a,skip:o=0}=St[n];if(Pt(e.slice(o),a))return void t(i)}t(null)},i.readAsArrayBuffer(n)}))}async function Dt(e){var t;let n;n=null!==(t=bt.find((t=>e.name.toLowerCase().endsWith(`.${t}`))))&&void 0!==t?t:null,n||(n=await It(e)),n||(n="");const i=new File([e],e.name,{type:n.toLowerCase()});return i}async function Vt(e){const t=await Promise.all(e.map((async e=>yt.has(e.type)?Ct(e):[{file:e,path:""}]))),n=await Promise.all(t.flat().map((async e=>({file:await Dt(e.file),path:e.path})))),i=n.filter((({file:e})=>yt.has(e.type))).map((({file:e})=>e));if(i.length>0){const e=await Vt(i);return[...n,...e]}return n}async function Rt(e,t){return new Promise((n=>{const i=new globalThis.FileReader;if(i.onload=()=>n(i.result),"ArrayBuffer"===t)i.readAsArrayBuffer(e);else{if("Text"!==t)throw new TypeError(`readAs${t} is not a function`);i.readAsText(e)}}))}async function Mt(e){return Rt(e,"ArrayBuffer")}const Et=new Map,Bt=()=>({name:"(none)",orientation:Ie.create(),lpsOrientation:ve(),spacing:z.fromValues(1,1,1),origin:z.create(),dimensions:z.fromValues(1,1,1),worldBounds:[0,1,0,1,0,1],worldToIndex:De.create(),indexToWorld:De.create()}),kt=(0,r.Q_)("images",{state:()=>({idList:[],dataIndex:Object.create(null),metadata:Object.create(null)}),actions:{addVTKImageData(e,t){const n=this.$id.nextID();return this.idList.push(n),(0,a.t8)(this.dataIndex,n,t),this.$proxies.addData(n,t),(0,a.t8)(this.metadata,n,{...Bt(),name:e}),this.updateData(n,t),n},updateData(e,t){if(e in this.metadata){const n={name:this.metadata[e].name,dimensions:t.getDimensions(),spacing:t.getSpacing(),origin:t.getOrigin(),orientation:t.getDirection(),lpsOrientation:me(t.getDirection()),worldBounds:t.getBounds(),worldToIndex:t.getWorldToIndex(),indexToWorld:t.getIndexToWorld()};(0,a.t8)(this.metadata,e,n)}},deleteData(e){e in this.dataIndex&&((0,a.IV)(this.dataIndex,e),(0,a.IV)(this.metadata,e),he(this.idList,e))},async serialize(e){const t=vt(),n=this.idList.filter((e=>e in t.byDataID));await mt(e,n,Be.IMAGE)},async deserialize(e,t){const n=Et.get(t.type);if(n){const e=await n(new File([t],t.name,{type:t.type}));if(e.isA("vtkImageData")){const n=this.addVTKImageData(t.name,e);return n}}throw new Error(`No reader for ${t.name}`)}}}),Zt="Anonymous",Ft="ANONYMOUS";function Tt(e,t){return`${e}!!${t}`}function Ot(e){const t=e.PatientID.trim(),n=e.PatientName.trim(),i=e.PatientBirthDate.trim(),a=e.PatientSex.trim();return[t,n,i,a].map((e=>e.replace("|","_"))).join("|")}const Lt=(0,r.Q_)("dicom",{state:()=>({sliceData:{},volumeToImageID:{},imageIDToVolumeKey:{},patientInfo:{},patientStudies:{},studyInfo:{},studyVolumes:{},volumeInfo:{},volumeStudy:{},studyPatient:{},needsRebuild:{}}),actions:{async importFiles(e){const t=vt(),n=this.$dicomIO;if(!e.length)return[];const i=new Map(e.map((e=>[e.name,e]))),o=await n.categorizeFiles(e),r=[];return await Promise.all(Object.entries(o).map((async([e,o])=>{const s=[];o.forEach((e=>{const t=i.get(e);t&&s.push(t)})),t.add(e,s);const l=s.length;if(!(e in this.volumeInfo)){const t=await n.readTags(s[0],[{name:"PatientName",tag:"0010|0010",strconv:!0},{name:"PatientID",tag:"0010|0020",strconv:!0},{name:"PatientBirthDate",tag:"0010|0030"},{name:"PatientSex",tag:"0010|0040"},{name:"StudyInstanceUID",tag:"0020|000d"},{name:"StudyDate",tag:"0008|0020"},{name:"StudyTime",tag:"0008|0030"},{name:"StudyID",tag:"0020|0010",strconv:!0},{name:"AccessionNumber",tag:"0008|0050"},{name:"StudyDescription",tag:"0008|1030",strconv:!0},{name:"Modality",tag:"0008|0060"},{name:"SeriesInstanceUID",tag:"0020|000e"},{name:"SeriesNumber",tag:"0020|0011"},{name:"SeriesDescription",tag:"0008|103e",strconv:!0}]),i={PatientID:t.PatientID||Ft,PatientName:t.PatientName||Zt,PatientBirthDate:t.PatientBirthDate||"",PatientSex:t.PatientSex||""},a=Ot(i),o=t.StudyInstanceUID,c=ye(t,"StudyID","StudyInstanceUID","StudyDate","StudyTime","AccessionNumber","StudyDescription"),u={...ye(t,"Modality","SeriesInstanceUID","SeriesNumber","SeriesDescription"),NumberOfSlices:l,VolumeID:e};r.push({patientKey:a,studyKey:o,volumeKey:e}),this._updateDatabase(i,c,u)}e in this.volumeToImageID&&(0,a.t8)(this.needsRebuild,e,!0)}))),r},_updateDatabase(e,t,n){const i=e.PatientID,o=t.StudyInstanceUID,r=n.VolumeID;i in this.patientInfo||((0,a.t8)(this.patientInfo,i,e),(0,a.t8)(this.patientStudies,i,[])),o in this.studyInfo||((0,a.t8)(this.studyInfo,o,t),(0,a.t8)(this.studyVolumes,o,[]),(0,a.t8)(this.studyPatient,o,i),this.patientStudies[i].push(o)),r in this.volumeInfo||((0,a.t8)(this.volumeInfo,r,n),(0,a.t8)(this.volumeStudy,r,o),(0,a.t8)(this.sliceData,r,{}),this.studyVolumes[o].push(r))},deleteVolume(e){const t=kt();if(e in this.volumeInfo){const n=this.volumeStudy[e];if((0,a.IV)(this.volumeInfo,e),(0,a.IV)(this.sliceData,e),(0,a.IV)(this.volumeStudy,e),e in this.volumeToImageID){const n=this.volumeToImageID[e];t.deleteData(n),(0,a.IV)(this.volumeToImageID,e),(0,a.IV)(this.imageIDToVolumeKey,n)}he(this.studyVolumes[n],e),0===this.studyVolumes[n].length&&this.deleteStudy(n)}},deleteStudy(e){if(e in this.studyInfo){const t=this.studyPatient[e];(0,a.IV)(this.studyInfo,e),(0,a.IV)(this.studyPatient,e),[...this.studyVolumes[e]].forEach((e=>this.deleteVolume(e))),(0,a.IV)(this.studyVolumes,e),he(this.patientStudies[t],e),0===this.patientStudies[t].length&&this.deletePatient(t)}},deletePatient(e){e in this.patientInfo&&((0,a.IV)(this.patientInfo,e),[...this.patientStudies[e]].forEach((e=>this.deleteStudy(e))),(0,a.IV)(this.patientStudies,e))},async serialize(e){const t=Object.keys(this.volumeInfo);await mt(e,t,Be.DICOM)},async deserialize(e,t){return this.importFiles(t).then((e=>{if(1!==e.length)throw new Error("Invalid state file.");return e[0].volumeKey}))},async getVolumeSlice(e,t,n=!1){const i=this.$dicomIO,o=vt(),r=Tt(t,n);if(e in this.sliceData&&r in this.sliceData[e])return this.sliceData[e][r];if(!(e in this.volumeInfo))throw new Error(`Cannot find given volume key: ${e}`);const s=this.volumeInfo[e],l=s.NumberOfSlices;if(t<1||t>l)throw new Error(`Slice ${t} is out of bounds`);const c=o.getFiles(e);if(!c)throw new Error(`No files found for volume key: ${e}`);const u=c[t-1],d=i.getVolumeSlice(u,n);return(0,a.t8)(this.sliceData[e],r,d),d},async buildVolume(e,t=!1){const n=kt(),i=vt(),o=this.$dicomIO,r=t||this.needsRebuild[e];if(!r&&e in this.volumeToImageID)return n.dataIndex[this.volumeToImageID[e]];if(!(e in this.volumeInfo))throw new Error(`Cannot find given volume key: ${e}`);const s=i.getFiles(e);if(!s)throw new Error(`No files found for volume key: ${e}`);const l=await o.buildVolume(s),c=ge.Z.convertItkToVtkImage(l);if(e in this.volumeToImageID){const t=this.volumeToImageID[e];n.updateData(t,c)}else{const t=this.volumeInfo[e].SeriesInstanceUID,i=n.addVTKImageData(t,c);(0,a.t8)(this.volumeToImageID,e,i),(0,a.t8)(this.imageIDToVolumeKey,i,e)}return(0,a.IV)(this.needsRebuild,e),c}}}),zt=(0,r.Q_)("models",{state:()=>({idList:[],dataIndex:{},metadata:{}}),actions:{addVTKPolyData(e,t){const n=this.$id.nextID();return this.idList.push(n),(0,a.t8)(this.dataIndex,n,t),this.$proxies.addData(n,t),n}}});var Ut;(function(e){e[e["Error"]=0]="Error",e[e["Warning"]=1]="Warning",e[e["Info"]=2]="Info",e[e["Success"]=3]="Success"})(Ut||(Ut={}));const _t=(0,r.Q_)("message",{state:()=>({_nextID:1,byID:{},msgList:[]}),getters:{messages(){return this.msgList.map((e=>this.byID[e]))},importantMessages(){return this.messages.filter((e=>e.type!==Ut.Success))}},actions:{addError(e,t){return t instanceof Error?this._addMessage({type:Ut.Error,title:e},{details:String(t),persist:!1}):this._addMessage({type:Ut.Error,title:e},t)},addWarning(e,t){return this._addMessage({type:Ut.Warning,title:e},t)},addInfo(e,t){return this._addMessage({type:Ut.Info,title:e},t)},addSuccess(e,t){return this._addMessage({type:Ut.Success,title:e},t)},clearOne(e){if(e in this.byID){i.Z["delete"](this.byID,e);const t=this.msgList.indexOf(e);this.msgList.splice(t,1)}},clearAll(){this.byID={},this.msgList=[]},_addMessage(e,t){const n=String(this._nextID++),a={persist:!1,..."string"===typeof t?{details:t}:t};return i.Z.set(this.byID,n,{...e,options:a,id:n}),this.msgList.push(n),n}}}),Ht={testURL:e=>{const{protocol:t}=new URL(e);return"http:"===t||"https:"===t},fetchURL:async(e,t={})=>{var n,i;const{progress:a}=t,o=await fetch(e),r=null!==(n=Number(o.headers.get("content-length")))&&void 0!==n?n:-1;if(!a)return o.blob();if(r<0)return a(1/0),o.blob();const s=null===(i=o.body)||void 0===i?void 0:i.getReader();if(!s)return null;const l=new Uint8Array(r);let c=0,u=!1;do{const e=await s.read();u=e.done,e.value&&!u&&(l.set(e.value,c),c+=e.value.length,a(c/r))}while(!u);return new Blob([l])}},Wt={testURL:e=>"gs:"===new URL(e).protocol,fetchURL:async(e,t={})=>{const n=new URL(e),i=n.pathname.slice(2),a=`https://storage.googleapis.com/${i}`;return Ht.fetchURL(a,t)}},Qt=[Wt,Ht];async function Nt(e,t,n){const i=Qt.find((t=>t.testURL(e)));if(!i)throw new Error(`Cannot find a handler for URL: ${e}`);const a=await i.fetchURL(e,n);if(!a)throw new Error(`Failed to download ${e}`);return new File([a],t)}const jt=Ve.z.object({url:Ve.z.string(),name:Ve.z.optional(Ve.z.string())}),Gt=Ve.z.object({resources:Ve.z.array(jt)});async function Kt(e){return Promise.all(e.resources.map((e=>{var t;return Nt(e.url,null!==(t=e.name)&&void 0!==t?t:xe(e.url))})))}async function Jt(e){const t=new TextDecoder,n=await e.arrayBuffer(),i=t.decode(new Uint8Array(n)),a=Gt.parse(JSON.parse(i));return Kt(a)}const Yt=(e,t,n)=>({type:"file",loaded:!0,filename:e.name,dataID:n,dataType:t}),qt=(e,t)=>({type:"file",loaded:!1,filename:"string"===typeof e?e:e.name,error:new Error(t)}),Xt=e=>({type:"dicom",loaded:!0,dataID:e,dataType:"dicom"}),$t=e=>({type:"dicom",loaded:!1,error:e}),en=e=>({type:"dicom",volumeKey:e}),tn=e=>({type:"image",dataID:e});function nn(e,t){return"dicom"===e.type&&"dicom"===t.type?e.volumeKey===t.volumeKey:"image"===e.type&&"image"===t.type&&e.dataID===t.dataID}function an(e){return"dicom"===e.type?en(e.dataID):"file"===e.type&&"image"===e.dataType?tn(e.dataID):null}const on=(0,r.Q_)("dataset",(()=>{const e=kt(),t=zt(),n=Lt(),i=vt(),o=(0,a.iH)(null),r=(0,a.Fl)((()=>{const t=o.value,{dataIndex:i}=e,{volumeToImageID:a}=n;if("dicom"===(null===t||void 0===t?void 0:t.type)){const e=a[t.volumeKey];return i[e]||null}return"image"===(null===t||void 0===t?void 0:t.type)&&i[t.dataID]||null})),s=(0,a.Fl)((()=>[...e.idList,...t.idList]));function l(e){return this.$proxies.getData(e)}async function c(e){if(o.value=e,null!==e&&"dicom"===e.type)try{await n.buildVolume(e.volumeKey)}catch(t){if(t instanceof Error){const e=_t();e.addError("Failed to build volume(s)",{details:`${t}. More details can be found in the developer's console.`})}}}async function u(a){let o=await Promise.all(a.map((e=>Dt(e))));const r=o.filter((e=>"json"===e.type));o=o.filter((e=>"json"!==e.type));const s=[];r.length&&await Promise.all(r.map((async e=>{try{o.push(...await Jt(e))}catch(t){s.push(qt(e,"Failed to parse or download manifest"))}})));const l=await Vt(o);o=l.map((e=>e.file));const c=o.filter((({type:e})=>"dcm"===e)),u=o.filter((({type:e})=>"dcm"!==e)),d=n.importFiles(c).then((e=>e.map((e=>Xt(e.volumeKey))))).catch((e=>[$t(e)])),A=Promise.all([...u.map((async n=>{const a=Et.get(n.type);if(a)try{const o=await a(n);if(o.isA("vtkImageData")){const t=e.addVTKImageData(n.name,o);return i.add(t,[n]),Yt(n,"image",t)}if(o.isA("vtkPolyData")){const e=t.addVTKPolyData(n.name,o);return i.add(e,[n]),Yt(n,"model",e)}return qt(n,`${n.name} did not result in a valid dataset`)}catch(o){return qt(n,`Reading ${n.name} gave an error: ${o}`)}return qt(n,`No reader for ${n.name}`)}))]),p=[...await d,...await A];return p}async function d(t){if(await n.serialize(t),await e.serialize(t),null!==o.value){let e=null;e="dicom"===o.value.type?o.value.volumeKey:o.value.dataID;const{manifest:n}=t;n.primarySelection=e}}async function A(t,i){if(t.type===Be.DICOM)return n.deserialize(t,i).then((e=>Xt(e))).catch((e=>$t(e)));if(1!==i.length)throw new Error("Invalid state file.");const a=i[0];return e.deserialize(t,a).then((e=>Yt(a,"image",e))).catch((e=>qt(a.name,`Reading ${a.name} gave an error: ${e}`)))}return e.$onAction((({name:e,args:t,after:n})=>{"deleteData"===e&&n((()=>{const[e]=t,n=o.value;"image"===(null===n||void 0===n?void 0:n.type)&&n.dataID===e&&(o.value=null),i.remove(e)}))})),n.$onAction((({name:e,args:t,after:n})=>{"deleteVolume"===e&&n((()=>{const[e]=t,n=o.value;"dicom"===(null===n||void 0===n?void 0:n.type)&&e===n.volumeKey&&(o.value=null),i.remove(e)}))})),{primarySelection:o,primaryDataset:r,allDataIDs:s,getDataProxyByID:l,setPrimarySelection:c,loadFiles:u,serialize:d,deserialize:A}}));function rn(e){const t=kt();if(e&&e in t.metadata){const{lpsOrientation:n}=t.metadata[e],i=t.dataIndex[e];if(i){const e=i.getSpatialExtent();return{Sagittal:Ae(e,"Sagittal",n),Coronal:Ae(e,"Coronal",n),Axial:Ae(e,"Axial",n)}}}return de()}function sn(){const e=on(),t=Lt(),n=kt(),i=(0,a.Fl)((()=>{const{primarySelection:n}=e,{volumeToImageID:i}=t;return"image"===(null===n||void 0===n?void 0:n.type)?n.dataID:"dicom"===(null===n||void 0===n?void 0:n.type)&&i[n.volumeKey]||null})),o=(0,a.Fl)((()=>{const{metadata:e}=n,t=i.value;return t?e[t]:Bt()})),r=(0,a.Fl)((()=>e.primaryDataset)),s=(0,a.Fl)((()=>rn(i.value))),l=(0,a.Fl)((()=>!!e.primarySelection&&!e.primaryDataset));return{currentImageData:r,currentImageID:i,currentImageMetadata:o,currentImageExtent:s,isImageLoading:l}}function ln(e,t,n){const i=(0,a.Fl)((()=>n.value.orientation)),o=(0,a.Fl)((()=>me(i.value))),r=(0,a.Fl)((()=>o.value[(0,a.SU)(e)])),s=(0,a.Fl)((()=>o.value[(0,a.SU)(t)]));return{cameraDirVec:r,cameraUpVec:s}}var cn=n(9355);function un(e,t){return[Math.max(t[0],Math.min(t[1],e[0])),Math.max(t[0],Math.min(t[1],e[1]))]}function dn(e,t,n,i){const{indexToWorld:a,orientation:o,lpsOrientation:r}=t,s=[0,0,0],l=r[n];s[l]=e[n][i],z.transformMat4(s,s,a);const c=-(2*i-1),u=[...o.slice(3*l,3*l+3).map((e=>e*c))];return cn.ZP.newInstance({origin:s,normal:u})}const An=(0,r.Q_)("crop",(()=>{const e=kt(),t=(0,a.qj)({croppingByImageID:{}}),n=n=>(0,a.Fl)((()=>{const i=(0,a.SU)(n);if(i&&i in t.croppingByImageID&&i in e.metadata){const n=t.croppingByImageID[i],a=e.metadata[i];return[dn(n,a,"Sagittal",0),dn(n,a,"Sagittal",1),dn(n,a,"Coronal",0),dn(n,a,"Coronal",1),dn(n,a,"Axial",0),dn(n,a,"Axial",1)]}return null})),i=(e,t)=>{const n=rn(e);return{Sagittal:un(t.Sagittal,n.Sagittal),Coronal:un(t.Coronal,n.Coronal),Axial:un(t.Axial,n.Axial)}},o=(e,n)=>{(0,a.t8)(t.croppingByImageID,e,i(e,n))},r=(e,n,i)=>{e in t.croppingByImageID&&o(e,{...t.croppingByImageID[e],[n]:i})},s=t=>{const n=e.dataIndex[t];if(!n)return;const{lpsOrientation:i}=e.metadata[t],a=n.getSpatialExtent();o(t,{Sagittal:Ae(a,"Sagittal",i),Coronal:Ae(a,"Coronal",i),Axial:Ae(a,"Axial",i)})};function l(e){const{tools:n}=e.manifest;n.crop=t.croppingByImageID}function c(e,t){const n=e.tools.crop;Object.entries(n).forEach((([e,n])=>{const i=t[e];o(i,n)}))}return{croppingByImageID:(0,a.OT)(t.croppingByImageID),getComputedVTKPlanes:n,setCropping:o,setCroppingForAxis:r,resetCropping:s,serialize:l,deserialize:c}}));var pn=n(4543),vn=n(1040),mn=n(8794),gn=n(6532);function fn(){return ke.Z.createBuilder().addField({name:"placed",initialValue:!1}).addField({name:"indexToWorld",initialValue:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}).addField({name:"worldToIndex",initialValue:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}).addStateFromMixin({labels:["handle"],mixins:["origin","bounds"],name:"handle",initialValues:{origin:null}}).build()}function hn(e,t){return t.map(((t,n)=>Math.max(e[2*n],Math.min(e[2*n+1],t))))}function Cn(e,t){t.classHierarchy.push("vtkCrosshairsWidgetProp");let n=!1;function i(e){return e.altKey||e.controlKey||e.shiftKey}pn.ZP.setGet(e,t,["manipulator"]),e.handleLeftButtonPress=a=>!t.pickable||i(a)?pn.ZP.VOID:(t.widgetState.setPlaced(!0),n=!0,t._interactor.requestAnimation(e),t._apiSpecificRenderWindow.setCursor("crosshairs"),e.invokeStartInteractionEvent(),e.handleMouseMove(a),pn.ZP.EVENT_ABORT),e.handleMouseMove=a=>{if((!t.widgetState.getPlaced()||n)&&t.pickable&&t.manipulator&&!i(a)){const n=t.manipulator.handleEvent(a,t._apiSpecificRenderWindow),i=t.widgetState.getHandle(),o=t.widgetState.getWorldToIndex(),r=t.widgetState.getIndexToWorld();if(o.length&&r.length){const t=z.create(),a=z.create(),s=i.getBounds();z.transformMat4(t,n,o);const l=hn(s,t);return z.transformMat4(a,l,r),i.setOrigin(a),e.invokeInteractionEvent(),pn.ZP.EVENT_ABORT}}return pn.ZP.VOID},e.handleLeftButtonRelease=()=>{n&&t.pickable&&(t._interactor.cancelAnimation(e),t._apiSpecificRenderWindow.setCursor("default"),e.invokeEndInteractionEvent()),n=!1},e.grabFocus=()=>{},e.loseFocus=()=>{}}function yn(e,t){t.classHierarchy.push("vtkCrosshairsWidget"),t.behavior=Cn,t.widgetState=fn(),e.getRepresentationsForViewType=e=>{switch(e){case gn.cO.DEFAULT:case gn.cO.GEOMETRY:case gn.cO.SLICE:case gn.cO.VOLUME:default:return[]}},t.widgetState.onBoundsChange((e=>{const n=[.5*(e[0]+e[1]),.5*(e[2]+e[3]),.5*(e[4]+e[5])];t.widgetState.getHandle().setOrigin(n)})),t.manipulator=mn.ZP.newInstance()}const wn={};function bn(e,t,n={}){Object.assign(t,wn,n),vn.ZP.extend(e,t,n),pn.ZP.setGet(e,t,["manipulator"]),yn(e,t)}const Sn=pn.ZP.newInstance(bn,"vtkCrosshairsWidget");var xn={newInstance:Sn,extend:bn},Pn=n(9194);function In(){const e=(0,a.qj)({map:{}}),t=(t,n,i)=>{t in e.map||(0,a.t8)(e.map,t,(0,a.qj)({})),(0,a.t8)(e.map[t],n,i)},n=(t,n)=>{var i,a;return null!==(a=null===(i=e.map[t])||void 0===i?void 0:i[n])&&void 0!==a?a:void 0},i=(t,n)=>(0,a.Fl)((()=>{var i;const o=(0,a.SU)(t),r=(0,a.SU)(n),{map:s}=e;if(o&&r)return null===(i=s[o])||void 0===i?void 0:i[r]})),o=(t,n)=>{const{map:i}=e;return t in i&&n in i[t]},r=(t,n)=>(0,a.Fl)((()=>{const i=(0,a.SU)(t),o=(0,a.SU)(n),{map:r}=e;if(i&&o)return i in r&&o in r[i]})),s=(t,n)=>{t in e.map&&(0,a.IV)(e.map[t],n)},l=t=>{(0,a.IV)(e.map,t)},c=t=>{Object.keys(e.map).forEach((e=>s(e,t)))};return{set:t,get:n,getComputed:i,has:o,hasComputed:r,delete:s,deleteFirstKey:l,deleteSecondKey:c}}const Dn=e=>t=>e.deleteFirstKey(t),Vn=e=>(t,n)=>{n?e.delete(n,t):e.deleteSecondKey(t)},Rn=(e,t,n)=>{const i=e.manifest.dataSets.map((e=>e.id)),{views:a}=e.manifest;a.forEach((e=>{i.forEach((i=>{const{config:a}=e,o=t(e.id,i);if(void 0!==o){const e=we(i,a,{});e[n]=o}}))}))},Mn=()=>({slice:0,min:0,max:1,axisDirection:"Inferior"}),En=()=>{const e=In(),t=(t,n)=>e.get(t,n),n=(t,n)=>e.getComputed(t,n),i=(t,n,i)=>{const a={...Mn(),...e.get(t,n),...i};("min"in i||"max"in i)&&(a.slice=Math.floor((a.min+a.max)/2)),a.slice=Ce(a.slice,a.min,a.max),e.set(t,n,a)},a=(t,n)=>{if(e.has(t,n)){const a=e.get(t,n);i(t,n,{slice:Math.ceil((a.min+a.max)/2)})}},o=e=>{Rn(e,t,"slice")},r=(t,n)=>{Object.entries(n).forEach((([n,i])=>{i.slice&&e.set(t,n,i.slice)}))};return{removeView:Dn(e),removeData:Vn(e),serialize:o,deserialize:r,actions:{getSliceConfig:t,getComputedSliceConfig:n,updateSliceConfig:i,resetSlice:a}}},Bn=()=>({width:1,level:.5,min:0,max:1}),kn=()=>{const e=In(),t=(t,n)=>e.get(t,n),n=(t,n,i)=>{const a={...Bn(),...e.get(t,n),...i};e.set(t,n,a)},i=(t,i)=>{if(e.has(t,i)){const a=e.get(t,i),o=a.max-a.min,r=(a.max+a.min)/2;n(t,i,{width:o,level:r})}},a=e=>{Rn(e,t,"window")},o=(t,n)=>{Object.entries(n).forEach((([n,i])=>{i.window&&e.set(t,n,i.window)}))};return{removeView:Dn(e),removeData:Vn(e),serialize:a,deserialize:o,actions:{getWindowingConfig:t,updateWindowingConfig:n,resetWindowLevel:i}}},Zn=()=>{const e=In(),t=(t,n)=>e.get(t,n),n=(t,n,i)=>{const a={...e.get(t,n),...i};e.set(t,n,a)},i=e=>{Rn(e,t,"camera")},a=(t,n)=>{Object.entries(n).forEach((([n,i])=>{i.camera&&e.set(t,n,i.camera)}))};return{removeView:Dn(e),removeData:Vn(e),serialize:i,deserialize:a,actions:{getCameraConfig:t,updateCameraConfig:n}}};var Fn=n(3803);function Tn(e,t){var n,i;const a=null===(i=null===(n=t.getRenderWindow())||void 0===n?void 0:n.getViews())||void 0===i?void 0:i[0];if(a){const[n,i,o]=e;return a.worldToDisplay(n,i,o,t)}return null}function On(e,t){const n=t.getCanvas();if(!n)return null;const i=n.getBoundingClientRect(),a=n.width/i.width,o=n.height/i.height;return[a*(e.clientX-i.left),o*(i.height-e.clientY+i.top)]}function Ln(e,t,n,i){var a;const o=null===(a=t.getRenderWindow())||void 0===a?void 0:a.getViews()[0];if(!o)return null;const r=On(e,o);return r?(0,mn.f0)(r[0],r[1],n,i,t,o):null}function zn(e,t){var n,i;const a=Tn(e,t),o=null===(i=null===(n=t.getRenderWindow())||void 0===n?void 0:n.getViews())||void 0===i?void 0:i[0];if(a&&o){const[,e]=o.getViewportSize(t);return[a[0]/devicePixelRatio,(e-a[1])/devicePixelRatio]}return null}function Un(e){var t,n,i;const{pokedRenderer:a}=e,o=null===(n=null===(t=null===a||void 0===a?void 0:a.getRenderWindow())||void 0===t?void 0:t.getViews())||void 0===n?void 0:n[0],r=null===(i=null===o||void 0===o?void 0:o.getContainer())||void 0===i?void 0:i.getBoundingClientRect();return"position"in e&&r?[r.left+e.position.x/devicePixelRatio,r.top+r.height-e.position.y/devicePixelRatio]:null}function _n(e,t,n){const i=Fn.Z.getPresetByName(e);if(i.OpacityPoints){const e=i.OpacityPoints,a=[];for(let t=0;t<e.length;t+=2)a.push([e[t],e[t+1]]);const[o,r]=t,s=r-o;return a.map((([e,t])=>[(e-o)/s+n,t]))}return null}function Hn(e){const t=Fn.Z.getPresetByName(e);return t.OpacityPoints?{mode:Re.Z.Mode.Points,preset:e,shift:0}:{mode:Re.Z.Mode.Gaussians,gaussians:JSON.parse(JSON.stringify(Re.Z.Defaults.Gaussians))}}function Wn(e){const t=Fn.Z.getPresetByName(e);if(!t)return null;const{AbsoluteRange:n,RGBPoints:i}=t;if(n&&i){let e=1/0,t=-1/0;for(let n=0;n<i.length;n+=4)e=Math.min(e,i[n]),t=Math.max(t,i[n]);return[e,t]}return null}function Qn(e){const t=Fn.Z.getPresetByName(e);return t.EffectiveRange?[...t.EffectiveRange]:null}var Nn="data:image/jpeg;base64,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",jn="data:image/jpeg;base64,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",Gn="data:image/jpeg;base64,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",Kn="data:image/jpeg;base64,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",Jn="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAEAAAAAAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCACAAIADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+f+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAopQu6koAKKKKACiiigAooAzQRigAooooAKKKKACiiigAoopyDmgBwGBQRmiigBpSm7cVJRQAwLmlC113wi+EmofFnXWt7W1v5ba3UvNJbQGQr6dBgfU19nfAb/glr4X8c+Eoxqq60NYuPmjPmbUA9MAdaAPgUcU1xkV7l+2t+yvB+zL4zWzhmmWGYfuo5eXOOprK/Y4+BN18a/ilD/ovnafpeLifev7tz/Ch9cnt6ZoA8gor2r9uP9l68/Zp+KEGy3kTw/wCJYWvtLl8srGMNiWAHuY2IGOu14yeteK0AFFFFABRRRQAVteDfh/rnxB1KOy0PSr7VLqVgqR28RdiT9K+hf2Af2I7f9oOSbXfEUi22hwyeVbo52i4YH52z/dB+X3O70r7V8V6Z8OPgFolh4d8M6xptrrxcRrDbICQexLigD458A/8ABGf46eNmt2udBsPD0Nwu8Pqd6sbBfXam4/pXtGi/8G/esC2jXV/iRptrduuWW0017iKM/wC8zoT+Qr6o/Z1/4Kkab+zDFd2fjfwrY+LtSjBEUmoTllT/AIDg5zXt2nf8Fcrb49/DK/s4vAnhnTLeVhHbCC1H2kZP8Mgx/KgD8NP2tP2M/E37I3ieG11aa11bSb0sLPVLPPkT7TypB5Rx/dP4E15HHH50gUFV3cZNfsZ8fPhTa/G6G+8J69ZzwaX4iiL2Erx/8e1x/Cyn1zX5bftHfsveKv2XvHr6D4o024s5W+e2uCn7m7jzw6N0I/Ud6AP0e/YY/Zh1r4e/sy6BrFjrGlHTvESB5Le3YNcXLHqTjsDx1zX0faazf/s1+FX1aS4hs5rGF3WSeIbgpB3cEdewr8iP2XP2z9X/AGeYrdWa41LT7ViI7VrhlWLJzlOoHPtXWftj/wDBSfxd+099ls5J49N02MBnjthtM3++e9AHL/td/E/WP2vf2lLibd5kt1L5MC/wQRg//rJ9TX3X+xj8BNJ+DngbS9PspE3T/wCk3ly6/NM5HI/AcAV8dfsT+FZPFXjKO6t7L7dcXziBGKZZT7V+p3hXQNC+HPgTT7M2Lzal5ZDSTfdD99v0oA8L/wCCj3wyt/2mv2YpNF02FTrXh2dtR0KErtkdkUiVAf8ApqmRjOCwQnpX4+spVsEYI4IPav2w8G6ZcfEb4jXt9qWV8PaUxluXQhGSJD0B/wBo8V+dv/BVP9nnT/g9+0K/iDw7ZfYfCvjhW1O1gUlls5y376HJ7EkSAdAJcDhaAPmGiiigArQ8KeHJ/F3iK0023/1l1IE3YyI16sx9gMk/Ss+u4+Hmo23gvwtf6m//ACErwfZ7UZ+5H/EfxOB+HvQB7B4w/aUuPDeiWPgvwvJ/Zmn2sKWnmBuWUDGSfUnJJ7kmuZ1XwX4n8M6208knm3EMYuIZVfKyAc5Bryi1u21HVWmlydxyQK7nU/H2oS+D47NppmjQbF3nO1fQfSgB2o/FjVde1sT6lI0shPLE5OK+0vgn+1V4X+EngjRvsVj9qvmRZp5HAYqRg4C9Me/Wvz40i4Q3zNIzMqnJHrXoscV9qnhw3mnmSR7ZfmjA+YD6elAH6xfsv/8ABWfwt+0f8TIfDfijwPpcOjRyxxfaI8C4gYcCZeMDHUgds07/AIK8/D6w+KX7MXiLTltYr688Nv8AbtMnMWZAnUsrYzhl6ivyP+DPxF1LwP8AEyG4jjmFzIwXZyM5r9if+Cc3jpP2lbe10nxe0NyzKbCSOfpKABhTnrwcUAfh1feHrq00Jrzy/wBwr7Cf7pqno9j/AGxfQw7lVm45r7I/4LKfsaWv7IHx+vrPQoJrXw7qkhuLeEnKRZ5Kj2Ga+SPCGlNqGuwtCrBU5z70Afb/APwTJ/aM8C/sq+J7m71+EXdx5e2HcoZYmPBOPWvqD4w/tj6H8aooV03zlaQl1dePl9BXxN+yR8Kfh14o8Ywt42+3XmAzrBBOYUkYdmI5x9CK+uJ/DvheEQ2PhTR7CxKxhoSp3uvbBLZNAFvSPiPJrGhro+n27Q2bSpJdA8NcEdAx9B1xmq/7cvwD0r9pD4MTeHrGZbrX4Y1u7AwgeTaXag7Yyf8AaUlD6B89RW54C+D2oXupQ28UzXV1cMVkVBnYT6mu7vP2c9W+Fctva280k95dMNifew5/w96APwpvrGbTL2a2uIZILi3dopYpFKvGynBUg8ggjGKir7h/4LYfsF3X7LXxS0PxpDIk2nfECJpb9UGPsmpLzID7SqRID1LCX0FfD1AE1jaNfXSRL/EefYV0lnJDdDybiNpIUARVQ4aP0rndM1GTS7xJo8Er1B6MPSu08BTWev8Ai6Fol8lpDkoeeaAPT/AvwLsrvTNP1CSOT7NcYydnOfesL44aa+mag1na2+LO1XYJAv3s96+7/h14a8O6F8BYbqSOJ2htTyccsR6eua+XPi3rC3Ph64s5oYtzyeZDII/mwegzQB8v2cK2spkf7oODXonh/wCLEnw/t0vtLby7jYYyxCurAjkYNZnjvwRa6NoK3LbleZfu4xg1xebf+x3VvM87Py88YoA+hf2QPD6/Hr486c2qRwtbyN1C7RwM8V9R/s0+P5fA3xA8RaHaSMJNM1d5IJFOCCrYAz+FfFHwO8S3/hq0sZtF1FrfULNmn2D5W/A96+vP2N7db/4S3XiS7vLGTWTqDySxlv37c9T/AJ70AdJ/wWp+Ly/F/wCFGh3eooP7Sg2oXI5YjA6V8LfAbRIXhurmaNm8mEhBjv617V/wUJ+Jf/C29b0/T4vuwMN+37qmpZvhbY+CvAmniP8AcLJahiW4ZzjqfagDwvwX41uvCPxCt7hd21JCQoPHPqK+2f2e9VuPEurabqmpXS6PpDEeewPzSZ9PSviHxAkekawZ45VlmDE7EBNfTf7PCav8U9PsYX3x2sCguo+7/wDroA/T7w98Q/A3h+xtofBNvKyxoGub+ccM2P4e5PvXZ/D6wt7qca1dGa8+zv5+ZO7HoK8q/ZK+EdnPa2c2sTTGyhcLBZxDMk59XPZa9/8AH97DpOis9vHb2VhDny0LYXPvQB8Vf8FWdIt/2gvD2saTrEiRreQ409m/5dpk+aNwOwDcHHVSw71+KOqaZcaLqdxZ3UTQXVrI0UsbdUZTgg/Qiv0o/wCClv7X1n4C8SXVkZoNR8QXQDwW0Z/494z0Z8fdU9h1b6cj82/EWv3XinXLrUr2TzLq8lMsrYxkn2oAp1JZ3s2n3Uc0EjRTRncrKcEGo6KAPWPBv7T+vWm22uNSnhhk4f5iYX9yvY+4rurjxVceONZsoo1juUuQoBXBA+hr5trc8C/EPVPh3rkF/psyrJA4by5F3xPznBX39sGgD6E/a10WDw34E0u0+yrHcTOHMpGGHH3a+bJCoLKo3eteo/Hj9q+6/aD06xj1TS7bT5rCMRr9kP7t/fB5H0yfrXlG9Wk+VuvrQB6R8GrFpbh5lkaGW3iZkJ4xxWr4I+PN98ONTke3mmkdpSxiDYRieDmo/g1bSalod6oX5vKIEin2rP0/4WX/ANujmuIMxySZB65OaAPSPh94V1P4l+LodQlhIjvZASpOcc819V+Nv2frbx62i2MFvJdOqLHK0bfKB0wazv2WvBKw6PHaXFitvM0YIkYfd/Gv0C/Z8+E3hXwn8HZvEWoSW8hhG9pZnCRoRn1NAHxr8f8A/gnbovw9+A1ncr/YOlzo3mybSJLuTjnc3XArn/2bLWys9KttL09hClrlmfbhpD3PvV79tr9vDwDLqN5Y/wDCSaZfxvlPI09/tRQemUyAcepFfKOpf8FIl8DCaPwP4djEzrtW91Y7tvusKHH0y59x2oA/T7wx8a7f4K+Fm1C81Wx0LQ4EzdahqEyxIhJxjcxAyegA5J4HNfEf7dn/AAWkuPG5k8O/CqS6TTo1Mcmu3kRV5Sepghblf9+QZ64QHDV8P/Fj46eLfjjrP27xVrt/q8iHMUcj7YLftiOJcIg452gZ6nJrk6ALGravd6/qc97fXVxe3l05lmnnkMksznkszNksT6mq9FFABRRRQAUUUUAFFFFAE9nql1p4YW9xPAG6iOQrn8q2dG+KviLQAv2XWL6Pa25dz+ZtPtuziufooA7q+/ab+IWoXImbxn4iidV2DyL54Fx9EIHfrjNc34g8e654tiSPVda1bU0jG1Fu7uSYKMk4AYnHJJ/E1k0UAFFFFABRRRQAUUUUAf/Z";const Yn={Coronal:"Coronal",Sagittal:"Sagittal",Axial:"Axial",Three:"3D"},qn={[Yn.Coronal]:{viewType:"2D",props:{viewDirection:"Right",viewUp:"Superior"}},[Yn.Sagittal]:{viewType:"2D",props:{viewDirection:"Posterior",viewUp:"Superior"}},[Yn.Axial]:{viewType:"2D",props:{viewDirection:"Superior",viewUp:"Anterior"}},[Yn.Three]:{viewType:"3D",props:{viewDirection:"Posterior",viewUp:"Superior"}}},Xn=qn[Yn.Axial],$n=[{name:"Axial Primary",direction:Ee.V,items:[Yn.Axial,{direction:Ee.H,items:[Yn.Three,Yn.Coronal,Yn.Sagittal]}]},{name:"3D Primary",direction:Ee.V,items:[Yn.Three,{direction:Ee.H,items:[Yn.Coronal,Yn.Sagittal,Yn.Axial]}]},{name:"Quad View",direction:Ee.H,items:[{direction:Ee.V,items:[Yn.Coronal,Yn.Three]},{direction:Ee.V,items:[Yn.Sagittal,Yn.Axial]}]},{name:"3D Only",direction:Ee.H,items:[Yn.Three]}].reduce(((e,t)=>({...e,[t.name]:t})),{}),ei={0:[0,0,0,0],1:[153,153,0,255],2:[76,76,0,255],3:[255,255,0,255],4:[0,76,0,255],5:[0,153,0,255],6:[0,255,0,255],7:[76,0,0,255],8:[153,0,0,255],9:[255,0,0,255],10:[0,76,76,255],11:[0,153,153,255],12:[0,255,255,255],13:[0,0,76,255],14:[0,0,153,255]},ti=[{name:"CTA Head and Neck",filename:"CTA-Head_and_Neck.zip",description:"CTA head and neck scan of elderly patient with tumor. (80 MB)",url:"https://data.kitware.com/api/v1/item/6347159711dab81428208e24/download",image:Kn},{name:"MRA Head and Neck",filename:"MRA-Head_and_Neck.zip",description:'MRA from Patient Contributed Image Repository. Click application help icon "(?)" for more info. (15 MB)',url:"https://data.kitware.com/api/v1/item/6352a2b311dab8142820a33b/download",image:Gn},{name:"MRI Cardiac 3D and Cine",filename:"MRI-Cardiac-3D_and_Cine.zip",description:"MRI scan with two series: 3D axial non-gated and 2 chamber cine. (4 MB)",url:"https://data.kitware.com/api/v1/item/6350b28f11dab8142820949d/download",image:Nn},{name:"MRI PROSTATEx",filename:"MRI-PROSTATEx-0004.zip",description:'MRI from the SPIE-AAPM-NCI PROSTATEx challenge. Click application help "(?)" icon for more info. (3 MB)',url:"https://data.kitware.com/api/v1/item/63527c7311dab8142820a338/download",image:jn},{name:"3D US Fetus",filename:"3DUS-Fetus.mha",description:"3D ultrasound of a baby. Downloaded from tomovision.com.(8 MB)",url:"https://data.kitware.com/api/v1/item/635679c311dab8142820a4f4/download",image:Jn}],ni=["#8de4d3","#f0a4b1","#58f24c","#a3c9fe","#c8f251","#fea53b"],ii={CT:"CT-AAA",MR:"CT-Coronary-Arteries-2",US:"US-Fetal"};var ai=JSON.parse('[{"Name":"CT-AAA","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-3024,0,143.556,0,166.222,0.686275,214.389,0.696078,419.736,0.833333,3071,0.803922],"RGBPoints":[-3024,0,0,0,143.556,0.615686,0.356863,0.184314,166.222,0.882353,0.603922,0.290196,214.389,1,1,1,419.736,1,0.937033,0.954531,3071,0.827451,0.658824,1],"EffectiveRange":[143.556,419.736]},{"Name":"CT-AAA2","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-3024,0,129.542,0,145.244,0.166667,157.02,0.5,169.918,0.627451,395.575,0.8125,1578.73,0.8125,3071,0.8125],"RGBPoints":[-3024,0,0,0,129.542,0.54902,0.25098,0.14902,145.244,0.6,0.627451,0.843137,157.02,0.890196,0.47451,0.6,169.918,0.992157,0.870588,0.392157,395.575,1,0.886275,0.658824,1578.73,1,0.829256,0.957922,3071,0.827451,0.658824,1],"EffectiveRange":[0,1600]},{"Name":"CT-Bone","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-3024,0,-16.4458,0,641.385,0.715686,3071,0.705882],"RGBPoints":[-3024,0,0,0,-16.4458,0.729412,0.254902,0.301961,641.385,0.905882,0.815686,0.552941,3071,1,1,1],"EffectiveRange":[-16.4458,641.385]},{"Name":"CT-Bones","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-1000,0,152.19,0,278.93,0.190476,952,0.2],"RGBPoints":[-1000,0.3,0.3,1,-488,0.3,1,0.3,463.28,1,0,0,659.15,1,0.912535,0.0374849,953,1,0.3,0.3],"EffectiveRange":[152.19,952]},{"Name":"CT-Cardiac","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-3024,0,-77.6875,0,94.9518,0.285714,179.052,0.553571,260.439,0.848214,3071,0.875],"RGBPoints":[-3024,0,0,0,-77.6875,0.54902,0.25098,0.14902,94.9518,0.882353,0.603922,0.290196,179.052,1,0.937033,0.954531,260.439,0.615686,0,0,3071,0.827451,0.658824,1],"EffectiveRange":[-77.6875,260.439]},{"Name":"CT-Cardiac2","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-3024,0,42.8964,0,163.488,0.428571,277.642,0.776786,1587,0.754902,3071,0.754902],"RGBPoints":[-3024,0,0,0,42.8964,0.54902,0.25098,0.14902,163.488,0.917647,0.639216,0.0588235,277.642,1,0.878431,0.623529,1587,1,1,1,3071,0.827451,0.658824,1],"EffectiveRange":[42.8964,1587]},{"Name":"CT-Cardiac3","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-3024,0,-86.9767,0,45.3791,0.169643,139.919,0.589286,347.907,0.607143,1224.16,0.607143,3071,0.616071],"RGBPoints":[-3024,0,0,0,-86.9767,0,0.25098,1,45.3791,1,0,0,139.919,1,0.894893,0.894893,347.907,1,1,0.25098,1224.16,1,1,1,3071,0.827451,0.658824,1],"EffectiveRange":[-86.9767,1224.16]},{"Name":"CT-Chest-Contrast-Enhanced","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-3024,0,67.0106,0,251.105,0.446429,439.291,0.625,3071,0.616071],"RGBPoints":[-3024,0,0,0,67.0106,0.54902,0.25098,0.14902,251.105,0.882353,0.603922,0.290196,439.291,1,0.937033,0.954531,3071,0.827451,0.658824,1],"EffectiveRange":[67.0106,439.291]},{"Name":"CT-Chest-Vessels","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-3024,0,-1278.35,0,22.8277,0.428571,439.291,0.625,3071,0.616071],"RGBPoints":[-3024,0,0,0,-1278.35,0.54902,0.25098,0.14902,22.8277,0.882353,0.603922,0.290196,439.291,1,0.937033,0.954531,3071,0.827451,0.658824,1],"EffectiveRange":[-1278.35,439.291]},{"Name":"CT-Coronary-Arteries","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-2048,0,136.47,0,159.215,0.258929,318.43,0.571429,478.693,0.776786,3661,1],"RGBPoints":[-2048,0,0,0,136.47,0,0,0,159.215,0.159804,0.159804,0.159804,318.43,0.764706,0.764706,0.764706,478.693,1,1,1,3661,1,1,1],"EffectiveRange":[136.47,478.693]},{"Name":"CT-Coronary-Arteries-2","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-2048,0,142.677,0,145.016,0.116071,192.174,0.5625,217.24,0.776786,384.347,0.830357,3661,0.830357],"RGBPoints":[-2048,0,0,0,142.677,0,0,0,145.016,0.615686,0,0.0156863,192.174,0.909804,0.454902,0,217.24,0.972549,0.807843,0.611765,384.347,0.909804,0.909804,1,3661,1,1,1],"EffectiveRange":[142.677,384.347]},{"Name":"CT-Coronary-Arteries-3","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-2048,0,128.643,0,129.982,0.0982143,173.636,0.669643,255.884,0.857143,584.878,0.866071,3661,1],"RGBPoints":[-2048,0,0,0,128.643,0,0,0,129.982,0.615686,0,0.0156863,173.636,0.909804,0.454902,0,255.884,0.886275,0.886275,0.886275,584.878,0.968627,0.968627,0.968627,3661,1,1,1],"EffectiveRange":[128.643,584.878]},{"Name":"CT-Cropped-Volume-Bone","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-2048,0,-451,0,-450,1,1050,1,3661,1],"RGBPoints":[-2048,0,0,0,-451,0,0,0,-450,0.0556356,0.0556356,0.0556356,1050,1,1,1,3661,1,1,1],"EffectiveRange":[-451,1050]},{"Name":"CT-Fat","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-1000,0,-100,0,-99,0.15,-60,0.15,-59,0,101.2,0,952,0],"RGBPoints":[-1000,0.3,0.3,1,-497.5,0.3,1,0.3,-99,0,0,1,-76.946,0,1,0,-65.481,0.835431,0.888889,0.0165387,83.89,1,0,0,463.28,1,0,0,659.15,1,0.912535,0.0374849,2952,1,0.300267,0.299886],"EffectiveRange":[-100,101.2]},{"Name":"CT-Liver-Vasculature","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-2048,0,149.113,0,157.884,0.482143,339.96,0.660714,388.526,0.830357,1197.95,0.839286,3661,0.848214],"RGBPoints":[-2048,0,0,0,149.113,0,0,0,157.884,0.501961,0.25098,0,339.96,0.695386,0.59603,0.36886,388.526,0.854902,0.85098,0.827451,1197.95,1,1,1,3661,1,1,1],"EffectiveRange":[149.113,1197.95]},{"Name":"CT-Lung","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-1000,0,-600,0,-599,0.15,-400,0.15,-399,0,2952,0],"RGBPoints":[-1000,0.3,0.3,1,-600,0,0,1,-530,0.134704,0.781726,0.0724558,-460,0.929244,1,0.109473,-400,0.888889,0.254949,0.0240258,2952,1,0.3,0.3],"EffectiveRange":[-600,-399]},{"Name":"CT-MIP","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-3024,0,-637.62,0,700,1,3071,1],"RGBPoints":[-3024,0,0,0,-637.62,1,1,1,700,1,1,1,3071,1,1,1],"EffectiveRange":[-637.62,700]},{"Name":"CT-Muscle","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-3024,0,-155.407,0,217.641,0.676471,419.736,0.833333,3071,0.803922],"RGBPoints":[-3024,0,0,0,-155.407,0.54902,0.25098,0.14902,217.641,0.882353,0.603922,0.290196,419.736,1,0.937033,0.954531,3071,0.827451,0.658824,1],"EffectiveRange":[-155.407,419.736]},{"Name":"CT-Pulmonary-Arteries","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-2048,0,-568.625,0,-364.081,0.0714286,-244.813,0.401786,18.2775,0.607143,447.798,0.830357,3592.73,0.839286],"RGBPoints":[-2048,0,0,0,-568.625,0,0,0,-364.081,0.396078,0.301961,0.180392,-244.813,0.611765,0.352941,0.0705882,18.2775,0.843137,0.0156863,0.156863,447.798,0.752941,0.752941,0.752941,3592.73,1,1,1],"EffectiveRange":[-568.625,447.798]},{"Name":"CT-Soft-Tissue","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-2048,0,-167.01,0,-160,1,240,1,3661,1],"RGBPoints":[-2048,0,0,0,-167.01,0,0,0,-160,0.0556356,0.0556356,0.0556356,240,1,1,1,3661,1,1,1],"EffectiveRange":[-167.01,240]},{"Name":"CT-Air","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-3024,0.705882,-900,0.715686,-500,0,3071,0],"RGBPoints":[-3024,1,1,1,-900,0.2,1,1,-500,0.3,0.3,1,3071,0,0,0],"EffectiveRange":[-1200,-200]},{"Name":"CT-X-ray","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-3024,0,-200,0,1500,0.05,3071,0.05],"RGBPoints":[-3024,1,1,1,3071,1,1,1],"EffectiveRange":[-250,1550]},{"Name":"MR-Angio","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-2048,0,151.354,0,158.279,0.4375,190.112,0.580357,200.873,0.732143,3661,0.741071],"RGBPoints":[-2048,0,0,0,151.354,0,0,0,158.279,0.74902,0.376471,0,190.112,1,0.866667,0.733333,200.873,0.937255,0.937255,0.937255,3661,1,1,1],"EffectiveRange":[151.354,200.873]},{"Name":"MR-Default","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[0,0,20,0,40,0.15,120,0.3,220,0.375,1024,0.5],"RGBPoints":[0,0,0,0,20,0.168627,0,0,40,0.403922,0.145098,0.0784314,120,0.780392,0.607843,0.380392,220,0.847059,0.835294,0.788235,1024,1,1,1],"EffectiveRange":[0,220]},{"Name":"MR-MIP","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[0,0,98.3725,0,416.637,1,2800,1],"RGBPoints":[0,1,1,1,98.3725,1,1,1,416.637,1,1,1,2800,1,1,1],"EffectiveRange":[0,416.637]},{"Name":"MR-T2-Brain","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[0,0,36.05,0,218.302,0.171429,412.406,1,641,1],"RGBPoints":[0,0,0,0,98.7223,0.956863,0.839216,0.192157,412.406,0,0.592157,0.807843,641,1,1,1],"EffectiveRange":[0,412.406]},{"Name":"DTI-FA-Brain","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[0,0,0,0,0.3501,0.0158,0.49379,0.7619,0.6419,1,0.992,1,0.995,0,0.995,0],"RGBPoints":[0,1,0,0,0,1,0,0,0.24974,0.4941,1,0,0.49949,0,0.9882,1,0.7492,0.51764,0,1,0.995,1,0,0,0.995,1,0,0],"EffectiveRange":[0,1]},{"Name":"US-Fetal","NanColor":[1,1,0],"ColorSpace":"RGB","AbsoluteRange":true,"OpacityPoints":[-10,0,0,0,270,0.8],"RGBPoints":[-10,0.325,0.153,0.153,74,0.474,0.392,0.302,136,0.718,0.51,0.443,270,0.76,0.44,0.53],"EffectiveRange":[-10,270]}]');function oi(e){for(let t=0;t<e.length;t+=1)Fn.Z.addPreset(e[t])}oi(ai);const ri=[{group:"Other",presets:["Cool to Warm"]},{group:"CT",presets:["CT-AAA","CT-AAA2","CT-Bone","CT-Bones","CT-Cardiac","CT-Cardiac2","CT-Cardiac3","CT-Chest-Contrast-Enhanced","CT-Chest-Vessels","CT-Coronary-Arteries","CT-Coronary-Arteries-2","CT-Coronary-Arteries-3","CT-Cropped-Volume-Bone","CT-Fat","CT-Liver-Vasculature","CT-Lung","CT-MIP","CT-Muscle","CT-Pulmonary-Arteries","CT-Soft-Tissue","CT-Air","CT-X-ray"]},{group:"MR",presets:["MR-Default","MR-Angio","MR-MIP","MR-T2-Brain"]},{group:"DTI",presets:["DTI-FA-Brain"]},{group:"US",presets:["US-Fetal"]}],si="Cool to Warm",li=ri.flatMap((e=>e.presets));const ci=.2,ui=.7,di=.3;function Ai(e){const t=Lt();if(e in t.imageIDToVolumeKey){const n=t.imageIDToVolumeKey[e],{Modality:i}=t.volumeInfo[n];if(i in ii)return ii[i]}return si}const pi=()=>({colorBy:{arrayName:"",location:"pointData"},transferFunction:{preset:"",mappingRange:[0,1]},opacityFunction:{mode:Re.Z.Mode.Gaussians,gaussians:[],mappingRange:[0,1]},cvr:{enabled:!0,lightFollowsCamera:!0,useVolumetricScatteringBlending:!1,volumetricScatteringBlending:.5,useLocalAmbientOcclusion:!0,laoKernelRadius:6,laoKernelSize:3,ambient:ci,diffuse:ui,specular:di}}),vi=()=>{const e=In(),t=(t,n)=>e.get(t,n),n=(t,n)=>e.getComputed(t,n),i=(t,n,i)=>{const a={...pi(),...e.get(t,n),...i};e.set(t,n,a)},a=(t,n=(e=>e))=>(a,o,r)=>{var s;const l=null!==(s=e.get(a,o))&&void 0!==s?s:pi(),c=n({...l[t],...r});i(a,o,{[t]:c})},o=a("colorBy"),r=a("transferFunction"),s=a("opacityFunction"),l=a("cvr",(e=>({...e,laoKernelRadius:Math.max(2*e.laoKernelSize,Math.min(2*e.laoKernelSize+10,e.laoKernelRadius))}))),c=(e,t,n)=>{const i=kt(),a=i.dataIndex[t];if(!a)return;const o=a.getPointData().getScalars().getRange(),l=Wn(n),c={preset:n,mappingRange:l||o};r(e,t,c);const u=Hn(n),d=Qn(n);u.mappingRange=d||o,s(e,t,u)},u=(e,t,n)=>{const i=n.getPointData().getScalars();o(e,t,{arrayName:i.getName(),location:"pointData"}),c(e,t,Ai(t))},d=e=>{Rn(e,t,"volumeColorConfig")},A=(t,n)=>{Object.entries(n).forEach((([n,i])=>{i.volumeColorConfig&&e.set(t,n,i.volumeColorConfig)}))};return{removeView:Dn(e),removeData:Vn(e),serialize:d,deserialize:A,actions:{getVolumeColorConfig:t,getComputedVolumeColorConfig:n,updateVolumeColorConfig:i,updateVolumeColorBy:o,updateVolumeColorTransferFunction:r,updateVolumeOpacityFunction:s,updateVolumeCVRParameters:l,resetToDefaultColoring:u,setVolumeColorPreset:c}}},mi=(0,r.Q_)("viewConfig",(()=>{const e=En(),t=kn(),n=Zn(),i=vi(),a=a=>{e.removeView(a),t.removeView(a),n.removeView(a),i.removeView(a)},o=(a,o)=>{e.removeData(a,o),t.removeData(a,o),n.removeData(a,o),i.removeData(a,o)},r=a=>{e.serialize(a),t.serialize(a),n.serialize(a),i.serialize(a)},s=(a,o,r)=>{const s={};Object.entries(o).forEach((([e,t])=>{const n=r[e];s[n]=t})),e.deserialize(a,s),t.deserialize(a,s),n.deserialize(a,s),i.deserialize(a,s)},l=kt();return l.$onAction((({name:e,args:t})=>{if("deleteData"===e){const[e]=t;o(e)}})),{removeView:a,removeData:o,serialize:r,deserialize:s,...e.actions,...t.actions,...n.actions,...i.actions}}));n(2801),n(1295);const gi=(0,r.Q_)("view",{state:()=>({layout:{direction:Ee.V,items:[]},viewSpecs:structuredClone(qn)}),getters:{viewIDs(e){return Object.keys(e.viewSpecs)},getViewProxy(){return e=>this.$proxies.getView(e)},getDataRepresentationForView(){return(e,t)=>this.$proxies.getDataRepresentationForView(e,t)}},actions:{createOrGetViewProxy(e,t){var n;return null!==(n=this.$proxies.getView(e))&&void 0!==n?n:this.$proxies.createView(e,t)},addView(e){e in this.viewSpecs||(0,a.t8)(this.viewSpecs,e,structuredClone(Xn))},removeView(e){e in this.viewSpecs&&((0,a.IV)(this.viewSpecs,e),this.$proxies.removeView(e))},setLayout(e){this.layout=e;const t=[e];while(t.length){const e=t.shift();e.items.forEach((e=>{"string"===typeof e?this.addView(e):t.push(e)}))}},serialize(e){const t=mi(),{manifest:n}=e,{views:i}=n;n.layout=this.layout,Object.entries(this.viewSpecs).forEach((([e,t])=>{const n=t.viewType,{props:a}=t,o={},r={id:e,type:n,props:a,config:o};i.push(r)})),t.serialize(e)},deserialize(e,t){const n=mi();e.forEach((e=>{const i=e.id,a={viewType:e.type,props:e.props};this.viewSpecs[i]=a;const{config:o}=e;n.deserialize(i,o,t)}))}}}),fi=(0,r.Q_)("crosshairs",(()=>{const e=xn.newInstance(),t=e.getWidgetState(),n=t.getHandle(),i=(0,a.iH)(!1),{currentImageID:o,currentImageMetadata:r}=sn(),s=(0,a.iH)([0,0,0]),l=(0,a.Fl)((()=>{const e=z.create();return z.transformMat4(e,s.value,r.value.worldToIndex),e})),c=mi(),u=gi(),d=(0,a.Fl)((()=>{const e=(0,a.SU)(o);return e?u.viewIDs.filter((t=>!!c.getSliceConfig(t,e))):[]}));function A(){return e}function p(e){s.value=e}function v(){return t.setPlaced(!1),i.value=!0,!0}function m(){i.value=!1}function g(e){const{crosshairs:t}=e.manifest.tools;t.position=s.value}function f(e){const{crosshairs:t}=e.tools;s.value=t.position}return(0,a.YP)(l,(e=>{if(i.value){const t=(0,a.SU)(o),{lpsOrientation:n}=(0,a.SU)(r);if(!t)return;d.value.forEach((i=>{const a=c.getSliceConfig(i,t),o=pe(a.axisDirection),r=n[o],s=Math.round(e[r]);c.updateSliceConfig(i,t,{slice:s})}))}})),(0,a.YP)(r,(e=>{t.setIndexToWorld(e.indexToWorld),t.setWorldToIndex(e.worldToIndex);const[i,a,o]=e.dimensions,r=[0,i-1,0,a-1,0,o-1];n.setBounds((0,Pn.rr)(r,.5))}),{immediate:!0}),n.onModified((()=>{const e=n.getOrigin();e&&(s.value=e)})),{getWidgetFactory:A,setPosition:p,position:s,imagePosition:l,activateTool:v,deactivateTool:m,serialize:g,deserialize:f}}));var hi=n(7241),Ci=n(3457);function yi(e,t){t.classHierarchy.push("vtkLabelMap"),null===t.colorMap&&(t.colorMap={0:[0,0,0,0],1:[0,0,0,255]})}const wi={colorMap:null};function bi(e,t,n={}){Object.assign(t,wi,n),Ci.ZP.extend(e,t,n),pn.ZP.setGet(e,t,["colorMap"]),yi(e,t)}const Si=pn.ZP.newInstance(bi,"vtkLabelMap");var xi={newInstance:Si,extend:bi},Pi=n(8087);class Ii{constructor(e){this.msgID=0,this.worker=e,this.waiting={},this.worker.onmessage=this.handleMessage.bind(this)}postMessage(e,t=[]){const n={id:this.msgID,message:e},i=fe();return this.waiting[n.id]=i,this.worker.postMessage(n,t),this.msgID+=1,i.promise}handleMessage(e){const{id:t,error:n,message:i}=e.data;if(t in this.waiting){const e=this.waiting[t];delete this.waiting[t],n?e.reject(new Error(n)):e.resolve(i)}}}const Di=e=>async t=>{const i=new Ii(new Worker(new URL(n.p+n.u(385),n.b))),a=await i.postMessage({file:t,readerName:e});if("success"===a.status)return(0,Pi.Z)(a.obj);throw a.error},Vi=e=>async t=>{const i=new Ii(new Worker(new URL(n.p+n.u(422),n.b))),a=await i.postMessage({obj:t.getState(),writerName:e});if("success"===a.status)return a.data;throw a.error},Ri=Di("stl"),Mi=Di("vti"),Ei=Di("vtp"),Bi=Vi("vti"),ki=Uint8Array;function Zi(e){const t=new ki(e.getNumberOfPoints()),n=xi.newInstance(e.get("spacing","origin","direction"));return n.getPointData().setScalars(hi.ZP.newInstance({numberOfComponents:1,values:t})),n.setDimensions(e.getDimensions()),n.computeTransforms(),n.setColorMap(ei),n}function Fi(e){const t=xi.newInstance(e.get("spacing","origin","direction","indexToWorld","worldToIndex","dataDescription","pointData"));return t.setDimensions(e.getDimensions()),t.computeTransforms(),t.setColorMap(ei),t}const Ti=(0,r.Q_)("labelmap",{state:()=>({idList:[],labelmaps:Object.create(null),parentImage:Object.create(null)}),actions:{newLabelmapFromImage(e){const t=kt(),n=t.dataIndex[e];if(!n)return null;const i=this.$id.nextID(),o=Zi(n);return this.idList.push(i),(0,a.t8)(this.parentImage,i,e),(0,a.t8)(this.labelmaps,i,o),this.$proxies.addData(i,o),i},async serialize(e){const{labelMaps:t}=e.manifest,{zip:n}=e;await Promise.all(Object.entries(this.labelmaps).map((async([e,i])=>{const a=`labels/${e}.vti`,o=this.parentImage[e];t.push({id:e,parent:o,path:a});const r=await Bi(i);n.file(a,r)})))},async deserialize(e,t,n){const{labelMaps:i}=e,o={};return i.forEach((async e=>{const[i]=t.filter((t=>`${t.path}${t.file.name}`===e.path)).map((e=>e.file));e.parent=n[e.parent];const{parent:r}=e,s=this.$id.nextID();o[e.id]=s;const l=await Mi(i),c=Fi(l);this.idList.push(s),(0,a.t8)(this.parentImage,s,r),(0,a.t8)(this.labelmaps,s,c),this.$proxies.addData(s,c)})),o}}}),Oi=4,Li=1,zi=(0,r.Q_)("paint",(()=>{const e=(0,a.iH)(null),t=(0,a.iH)(Oi),n=(0,a.iH)(Li),i=(0,a.iH)([]),o=(0,a.iH)(1),r=(0,a.iH)(!1),{currentImageID:s}=sn();function l(){return this.$paint.factory}const c=(0,a.Fl)((()=>{var t;if(!e.value)return null;const n=Ti();return null!==(t=n.labelmaps[e.value])&&void 0!==t?t:null}));function u(t){if(!t)return void(e.value=null);const n=Ti(),i=Object.entries(n.parentImage).find((([,e])=>t===e));i?[e.value]=i:e.value=n.newLabelmapFromImage(t)}function d(e){t.value=Math.round(e),this.$paint.setBrushSize(e)}function A(e){n.value=e,this.$paint.setBrushValue(e)}function p(e){o.value=Math.min(1,Math.max(0,e))}function v(e){if(!c.value)return;const t=i.value.length-1;if(t>=0){const n=i.value[t],a=t>=1?i.value[t-1]:void 0;this.$paint.paintLabelmap(c.value,e,n,a)}}function m(e){if(!c.value)return;const t=c.value.getSpacing();t.splice(e,1);const n=[1/t[0],1/t[1]];this.$paint.setBrushScale(n)}function g(e,t){i.value=[z.clone(e)],v.call(this,t)}function f(e,t){i.value.push(e),v.call(this,t)}function h(e,t){i.value.push(e),v.call(this,t)}function C(){const e=s.value;return!!e&&(u(e),this.$paint.setBrushSize(this.brushSize),r.value=!0,!0)}function y(){e.value=null,r.value=!1}function w(i){const{paint:a}=i.manifest.tools;a.activeLabelmapID=e.value,a.brushSize=t.value,a.brushValue=n.value,a.labelmapOpacity=o.value}function b(t,n){const{paint:i}=t.tools;this.setBrushSize(i.brushSize),this.setBrushValue(i.brushValue),this.setLabelmapOpacity(i.labelmapOpacity),r.value=t.tools.current===Pe.Paint,null!==i.activeLabelmapID&&(e.value=n[i.activeLabelmapID])}return(0,a.YP)(s,(e=>{r.value&&u(e)})),{activeLabelmapID:e,brushSize:t,brushValue:n,strokePoints:i,labelmapOpacity:o,isActive:r,getWidgetFactory:l,activateTool:C,deactivateTool:y,selectOrCreateLabelmap:u,setBrushSize:d,setBrushValue:A,setLabelmapOpacity:p,setSliceAxis:m,startStroke:g,placeStrokePoint:f,endStroke:h,serialize:w,deserialize:b}}));var Ui=n(2067);function _i(e,t,n,i){const{lpsOrientation:a}=i,o=a[pe(t)],r=a[t],s=[0,0,0];s[o]=n,z.transformMat4(s,s,i.indexToWorld),e.setUserNormal(r),e.setUserOrigin(s)}function Hi(e,t,n){const i=mn.ZP.newInstance();return _i(i,e,t,n),i}const Wi=()=>({name:"",firstPoint:null,secondPoint:null,viewAxis:null,slice:null,imageID:"",interactionState:Me.PlacingFirst,color:ni[0]}),Qi=(0,r.Q_)("ruler",(()=>{const e=(0,a.iH)([]),t=(0,a.iH)(Object.create(null)),n=(0,a.iH)(null);let i=0;const o=(0,a.Fl)((()=>{const n=t.value;return e.value.reduce(((e,t)=>{const{firstPoint:i,secondPoint:a}=n[t];return Object.assign(e,{[t]:i&&a?Math.sqrt((0,Ui.aI)(i,a)):0})}),{})}));function r(e){return this.$rulers.getFactory(e)}function s(e){e in t.value&&(n.value=null)}function l(e){n.value&&s(n.value),e in t.value&&(n.value=e)}function c(e,i){if(e in t.value){const a=t.value[e];Object.assign(a,i),e===n.value&&a.interactionState===Me.Settled&&s(e)}}function u(e,n){if(c.call(this,e,n),e in t.value){const n=t.value[e],i={firstPoint:n.firstPoint,secondPoint:n.secondPoint,interactionState:n.interactionState};this.$rulers.updateRuler(e,i)}}function d(n){const o=this.$id.nextID();(0,a.t8)(t.value,o,Wi()),e.value.push(o),this.$rulers.createRuler(o);const r={...n};return"color"in r||(r.color=ni[i],i=(i+1)%ni.length),u.call(this,o,r),o}function A(n){s(n),he(e.value,n),(0,a.IV)(t.value,n),this.$rulers.removeRuler(n)}function p(){n.value&&A.call(this,n.value)}function v(e,t){if(n.value)return;const i=mi(),a=sn(),o=a.currentImageID.value,r=a.currentImageMetadata.value;if(!o)return;const s=i.getSliceConfig(t,o);if(!s)return;const{slice:c,axisDirection:A}=s,p=pe(A),v=this.$proxies.getView(t);if(!v)return;const m=d.call(this,{name:"Ruler",imageID:o}),g=Hi(A,c,r),f=g.handleEvent(e,v.getOpenglRenderWindow());f.length&&u.call(this,m,{firstPoint:f,slice:c,imageID:o,viewAxis:p,interactionState:Me.PlacingSecond}),l(m)}function m(e){const n=t.value[e];if(!(null===n||void 0===n?void 0:n.viewAxis)||null==(null===n||void 0===n?void 0:n.slice))return;const{currentImageID:i}=sn(),a=i.value;if(!a||n.imageID!==a)return;const o=gi(),r=o.viewIDs.filter((e=>{const t=o.viewSpecs[e],i=t.props.viewDirection;return i&&pe(i)===n.viewAxis})),s=mi();r.forEach((e=>{s.updateSliceConfig(e,a,{slice:n.slice})}))}function g(e){const{id:t,update:n}=e,i={};"firstPoint"in n&&(i.firstPoint=n.firstPoint),"secondPoint"in n&&(i.secondPoint=n.secondPoint),"interactionState"in n&&(i.interactionState=n.interactionState),c.call(this,t,i)}let f;function h(){const e=g.bind(this);this.$rulers.events.on("widgetUpdate",e),f=()=>this.$rulers.events.off("widgetUpdate",e)}function C(){f()}function y(){return!0}function w(){p.call(this)}function b(n){const i=n.manifest.tools.rulers;e.value.forEach((e=>{const n=t.value[e];i.push(n)}))}function S(e){const t=e.tools.rulers;t.forEach((e=>{d.call(this,e)}))}return{rulerIDs:e,rulers:t,activeRulerID:n,lengthByID:o,getVTKFactory:r,initialize:h,uninitialize:C,activateTool:y,deactivateTool:w,addNewRuler:d,addNewRulerFromViewEvent:v,removeActiveRuler:p,removeRuler:A,updateRuler:u,serialize:b,deserialize:S,jumpToRuler:m}}));function Ni(e){return e===Pe.Ruler?Qi():e===Pe.Paint?zi():e===Pe.Crosshairs?fi():null}function ji(e){const t=Ni(e);return!t||t.activateTool()}function Gi(e){const t=Ni(e);t&&t.deactivateTool()}const Ki=(0,r.Q_)("tool",{state:()=>({currentTool:Pe.WindowLevel}),actions:{setCurrentTool(e){ji(e)&&(Gi(this.currentTool),this.currentTool=e)},serialize(e){const{tools:t}=e.manifest,n=Qi(),i=fi(),a=zi(),o=An();n.serialize(e),i.serialize(e),a.serialize(e),o.serialize(e),t.current=this.currentTool},deserialize(e,t,n){const{tools:i}=e,a=Qi(),o=fi(),r=zi(),s=An();a.deserialize(e),o.deserialize(e),r.deserialize(e,t),s.deserialize(e,n),this.currentTool=i.current}}});var Ji=n(2733);function Yi(e,t){return Math.min(t-e,1)/256}const qi={viewId:{type:String,required:!0}},Xi=(0,a.aZ)({name:"WindowLevelTool",props:qi,setup(e){const{viewId:t}=(0,a.BK)(e),n=mi(),i=gi(),{currentImageID:o}=sn(),r=(0,a.Fl)((()=>i.getViewProxy(t.value))),s=Bn(),l=(0,a.Fl)((()=>null!==o.value?n.getWindowingConfig(t.value,o.value):null)),c=(0,a.Fl)((()=>({min:1e-12,max:null!==l.value?l.value.max-l.value.min:s.max,step:null!==l.value?Yi(l.value.min,l.value.max):Yi(s.min,s.max),default:null!==l.value?l.value.width:s.width}))),u=(0,a.Fl)((()=>({min:null!==l.value?l.value.min:s.min,max:null!==l.value?l.value.max:s.max,step:null!==l.value?Yi(l.value.min,l.value.max):Yi(s.min,s.max),default:null!==l.value?l.value.level:s.level}))),d=(0,a.iH)(0),A=(0,a.iH)(0);(0,a.YP)(d,(e=>{null!==o.value&&n.updateWindowingConfig(t.value,o.value,{width:e})})),(0,a.YP)(A,(e=>{null!==o.value&&n.updateWindowingConfig(t.value,o.value,{level:e})}));const p=Ji.ZP.newInstance({button:1,scrollEnabled:!1});function v(){p.removeAllListeners();const e=c.value,t=u.value;p.setVerticalListener(e.min,e.max,e.step,(()=>d.value),(e=>{d.value=e})),p.setHorizontalListener(t.min,t.max,t.step,(()=>A.value),(e=>{A.value=e}))}return(0,a.YP)(r,((e,t)=>{if(t){const e=t.getInteractorStyle2D();e.removeMouseManipulator(p)}if(e){const e=r.value.getInteractorStyle2D();e.addMouseManipulator(p)}}),{immediate:!0}),(0,a.Jd)((()=>{if(!r.value.isDeleted()){const e=r.value.getInteractorStyle2D();e.removeMouseManipulator(p)}})),(0,a.YP)((()=>[c.value,u.value]),(([e,t])=>{d.value=e.default,A.value=t.default,v()}),{immediate:!0}),()=>null}});var $i,ea,ta,na,ia,aa,oa,ra,sa,la,ca,ua,da={functional:!0,render(e,t){const n=Ki(),i=(0,a.Fl)((()=>n.currentTool===Pe.WindowLevel));return i.value?e(Xi,{props:t.props}):[]}},Aa=da,pa=(0,C.Z)(Aa,$i,ea,!1,null,null,null),va=pa.exports,ma=(0,a.aZ)({name:"SliceScrollTool",props:{viewId:{type:String,required:!0}},setup(e){const{viewId:t}=(0,a.BK)(e),n=mi(),i=gi(),{currentImageID:o}=sn(),r=(0,a.Fl)((()=>i.getViewProxy(t.value))),s=Mn(),l=(0,a.Fl)((()=>null!==o.value?n.getSliceConfig(t.value,o.value):null)),c=(0,a.Fl)((()=>({min:null!==l.value?l.value.min:s.min,max:null!==l.value?l.value.max:s.max,step:1,default:null!==l.value?l.value.slice:s.slice}))),u=(0,a.iH)(0),d=Ji.ZP.newInstance({button:-1,scrollEnabled:!0});function A(){d.removeAllListeners();const e=c.value;d.setScrollListener(e.min,e.max,e.step,(()=>u.value),(e=>{null!==o.value&&n.updateSliceConfig(t.value,o.value,{slice:e})}))}return(0,a.YP)(r,((e,t)=>{if(t){const e=t.getInteractorStyle2D();e.removeMouseManipulator(d)}if(e){const e=r.value.getInteractorStyle2D();e.addMouseManipulator(d)}}),{immediate:!0}),(0,a.Jd)((()=>{if(!r.value.isDeleted()){const e=r.value.getInteractorStyle2D();e.removeMouseManipulator(d)}})),(0,a.YP)(c,(e=>{u.value=e.default,A()}),{immediate:!0}),()=>null}}),ga=ma,fa=(0,C.Z)(ga,ta,na,!1,null,null,null),ha=fa.exports,Ca=n(4684),ya=(0,a.aZ)({name:"MouseManipulatorTool",props:{name:String,viewId:{type:String,required:!0},manipulatorClass:{type:Object,required:!0},options:{type:Array,default:()=>[]}},setup(e){const{viewId:t,options:n}=(0,a.BK)(e),i=gi(),o=(0,a.Fl)((()=>i.getViewProxy(t.value))),r=(0,a.Fl)((()=>o.value.isA("vtkView2DProxy")?o.value.getInteractorStyle2D():o.value.getInteractorStyle3D())),s=[];function l(e,t,n){null!==e&&(n.forEach((t=>e.removeMouseManipulator(t))),t.forEach((t=>e.addMouseManipulator(t))))}return(0,a.YP)(n,(t=>{while(s.length>t.length){const e=s.pop();r.value.removeMouseManipulator(e),e.delete()}const n=Array.from(s);for(let i=s.length;i<t.length;++i)s.push(e.manipulatorClass.newInstance(t[i]));t.forEach(((e,t)=>{"button"in e&&s[t].setButton(e.button),s[t].setShift(!!e.shift),s[t].setControl(!!e.control)})),l(r.value,s,n)}),{immediate:!0}),(0,a.YP)(r,((e,t)=>{s.forEach((n=>{t&&t.removeMouseManipulator(n),e&&e.addMouseManipulator(n)}))}),{immediate:!0}),(0,a.Jd)((()=>{o.value.isDeleted()||s.forEach((e=>r.value.removeMouseManipulator(e)))})),()=>null}}),wa=ya,ba=(0,C.Z)(wa,ia,aa,!1,null,null,null),Sa=ba.exports,xa={functional:!0,render(e,t){const n=Ki(),i=[];return i.push({button:2}),i.push({button:1,shift:!0}),n.currentTool===Pe.Pan&&i.push({button:1}),e(Sa,{props:{...t.props,name:"PanTool",manipulatorClass:Ca.ZP,options:i}})}},Pa=xa,Ia=(0,C.Z)(Pa,oa,ra,!1,null,null,null),Da=Ia.exports,Va=n(3221),Ra={functional:!0,render(e,t){const n=Ki(),i=[];return i.push({button:3,flipDirection:!0}),i.push({button:1,control:!0,flipDirection:!0}),n.currentTool===Pe.Zoom&&i.push({button:1,flipDirection:!0}),e(Sa,{props:{...t.props,name:"ZoomTool",manipulatorClass:Va.ZP,options:i}})}},Ma=Ra,Ea=(0,C.Z)(Ma,sa,la,!1,null,null,null),Ba=Ea.exports,ka=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"overlay-no-events"},[n("svg",{staticClass:"overlay-no-events"},e._l(e.rulers,(function(t){return n("RulerSVG2D",{directives:[{name:"show",rawName:"v-show",value:e.slice===t.slice,expression:"slice === ruler.slice"}],key:t.id,attrs:{"view-id":e.viewId,point1:t.firstPoint,point2:t.secondPoint,color:t.color,length:t.length}})})),1),n("div",e._l(e.rulers,(function(t){return n("RulerWidget2D",{key:t.id,attrs:{"ruler-id":t.id,slice:e.slice,"view-id":e.viewId,"view-direction":e.viewDirection,focused:t.focused,"widget-manager":e.widgetManager},on:{contextmenu:function(n){return e.openContextMenu(t.id,n)}}})})),1),n("v-menu",{attrs:{"position-x":e.contextMenu.x,"position-y":e.contextMenu.y,absolute:"","offset-y":"","close-on-click":"","close-on-content-click":""},model:{value:e.contextMenu.show,callback:function(t){e.$set(e.contextMenu,"show",t)},expression:"contextMenu.show"}},[n("v-list",{attrs:{dense:""}},[n("v-list-item",{on:{click:e.deleteRulerFromContextMenu}},[n("v-list-item-title",[e._v("Delete")])],1)],1)],1)],1)},Za=[],Fa=(0,a.aZ)({name:"RulerWidget2D",props:{rulerId:{type:String,required:!0},widgetManager:{type:Object,required:!0},viewId:{type:String,required:!0},viewDirection:{type:String,required:!0},slice:{type:Number,required:!0},focused:Boolean},setup(e,{emit:t}){const{rulerId:n,widgetManager:i,viewDirection:o,focused:r,slice:s}=(0,a.BK)(e),l=Qi(),c=(0,a.Fl)((()=>l.getVTKFactory(n.value))),u=(0,a.iH)(null),d=(0,a.Fl)((()=>l.rulers[n.value]));(0,a.bv)((()=>{if(!c.value)throw new Error(`No widget exists for ruler with ID ${n.value}`);const e=i.value,t=c.value;u.value=e.addWidget(t)}));let A=null;(0,a.bv)((()=>{A=u.value.onRightClickEvent((e=>{const n=Un(e);n&&t("contextmenu",n)}))})),(0,a.Jd)((()=>{A&&(A.unsubscribe(),A=null)}));const p=mn.ZP.newInstance();(0,a.bv)((()=>{u.value.setManipulator(p)}));const{currentImageMetadata:v}=sn();return(0,a.m0)((()=>{var e;_i(p,o.value,null!==(e=d.value.slice)&&void 0!==e?e:s.value,v.value)})),(0,a.m0)((()=>{const e=i.value,t=u.value;r.value&&e.grabFocus(t)})),(0,a.Jd)((()=>{const e=i.value,t=u.value;e.removeWidget(t)})),(0,a.YP)((()=>{const e=d.value.slice,t=s.value;return!Number.isInteger(e)||e===t}),(e=>{u.value.setVisibility(e)})),(0,a.bv)((()=>{u.value.setHandleVisibility(!1),i.value.renderWidgets()})),()=>null}}),Ta=Fa,Oa=(0,C.Z)(Ta,ca,ua,!1,null,null,null),La=Oa.exports,za=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("g",{ref:"containerEl"},[e.first&&e.second?n("line",{attrs:{x1:e.first.x,y1:e.first.y,x2:e.second.x,y2:e.second.y,stroke:e.color,"stroke-width":"1"}}):e._e(),e.first?n("circle",{attrs:{cx:e.first.x,cy:e.first.y,stroke:e.color,"stroke-width":"1",fill:"transparent",r:10/e.devicePixelRatio}}):e._e(),e.second?n("circle",{staticClass:"handle",attrs:{cx:e.second.x,cy:e.second.y,stroke:e.color,"stroke-width":"1",fill:"transparent",r:10/e.devicePixelRatio}}):e._e(),e.second?n("text",{attrs:{x:e.second.x,y:e.second.y,dx:e.textdx,dy:e.textdy,"text-anchor":e.anchor,"stroke-width":"0.75",stroke:"black",fill:e.color,"font-size":e.textSize+"px","font-weight":"bold"}},[e._v(" "+e._s(e.rulerLength)+" ")]):e._e()])},Ua=[],_a=(0,a.aZ)({props:{point1:Array,point2:Array,color:String,length:Number,viewId:{type:String,required:!0},textOffset:{type:Number,default:8},textSize:{type:Number,default:14}},setup(e){const{viewId:t,point1:n,point2:i,textOffset:o,length:r}=(0,a.BK)(e),s=(0,a.iH)(),l=(0,a.iH)(),c=gi(),u=(0,a.Fl)((()=>c.getViewProxy(t.value))),d=()=>{const e=u.value.getRenderer(),t=(0,a.SU)(n),o=(0,a.SU)(i);if(t){const n=zn(t,e);n&&(s.value={x:n[0],y:n[1]})}if(o){const t=zn(o,e);t&&(l.value={x:t[0],y:t[1]})}},A=re((0,a.Fl)((()=>u.value.getCamera().onModified)));A(d),(0,a.YP)([u,n,i],d,{deep:!0,immediate:!0});const p=(0,a.Fl)((()=>{const e=(0,a.SU)(s),t=(0,a.SU)(l),n=o.value;return e&&t?t.x>e.x?{dx:n,dy:-n,anchor:"start"}:{dx:-n,dy:-n,anchor:"end"}:null})),v=(0,a.iH)(null);return te(v,(()=>{d()})),{devicePixelRatio:devicePixelRatio,textdx:(0,a.Fl)((()=>{var e,t;return null!==(t=null===(e=p.value)||void 0===e?void 0:e.dx)&&void 0!==t?t:0})),textdy:(0,a.Fl)((()=>{var e,t;return null!==(t=null===(e=p.value)||void 0===e?void 0:e.dy)&&void 0!==t?t:0})),anchor:(0,a.Fl)((()=>{var e,t;return null!==(t=null===(e=p.value)||void 0===e?void 0:e.anchor)&&void 0!==t?t:"start"})),first:s,second:l,rulerLength:(0,a.Fl)((()=>{var e,t;return null!==(t=null===(e=null===r||void 0===r?void 0:r.value)||void 0===e?void 0:e.toFixed(2))&&void 0!==t?t:""})),containerEl:v}}}),Ha=_a,Wa=(0,C.Z)(Ha,za,Ua,!1,null,"2f8db33c",null),Qa=Wa.exports,Na=n(8473),ja=n(857);function Ga(e){return e.altKey||e.controlKey||e.shiftKey}function Ka(e,t){t.classHierarchy.push("vtkRulerWidgetProp");const n={...e},i=[];let a=null;pn.ZP.setGet(e,t,["manipulator"]),pn.ZP.event(e,t,"RightClickEvent"),e.setFirstPoint=e=>{const n=t.widgetState.getFirstPoint();n.setOrigin(e)},e.setSecondPoint=e=>{const n=t.widgetState.getSecondPoint();n.setOrigin(e)},e.handleLeftButtonPress=n=>{var i;if(!t.manipulator||Ga(n))return pn.ZP.VOID;const o=t.widgetState.getInteractionState();if(t.hasFocus&&o!==Me.Settled){const i=t.manipulator.handleEvent(n,t._apiSpecificRenderWindow);if(i.length)return o===Me.PlacingFirst?(e.setFirstPoint(i),t.widgetState.setInteractionState(Me.PlacingSecond)):o===Me.PlacingSecond&&(e.setSecondPoint(i),t.widgetState.setInteractionState(Me.Settled)),e.invokeInteractionEvent(),pn.ZP.EVENT_ABORT}return(null===(i=t.activeState)||void 0===i?void 0:i.getActive())&&t.pickable?(a=t.activeState,t._apiSpecificRenderWindow.setCursor("grabbing"),t._interactor.requestAnimation(e),e.invokeStartInteractionEvent(),pn.ZP.EVENT_ABORT):pn.ZP.VOID},e.handleMouseMove=n=>{const i=t.widgetState.getInteractionState();if(t.hasFocus&&i===Me.Settled)return e.loseFocus(),pn.ZP.VOID;if(a||i!==Me.Settled){const o=t.manipulator.handleEvent(n,t._apiSpecificRenderWindow);return o.length&&(a?a.setOrigin(o):i===Me.PlacingFirst?(t.widgetState.getFirstPoint().setVisible(!0),e.setFirstPoint(o)):i===Me.PlacingSecond&&(t.widgetState.getSecondPoint().setVisible(!0),e.setSecondPoint(o)),e.invokeInteractionEvent()),pn.ZP.EVENT_ABORT}return pn.ZP.VOID},e.handleLeftButtonRelease=n=>{if(a){const i=t.manipulator.handleEvent(n,t._apiSpecificRenderWindow);i.length&&a.setOrigin(i),a=null,t._apiSpecificRenderWindow.setCursor("pointer"),t.widgetState.deactivate(),t._interactor.cancelAnimation(e),e.invokeEndInteractionEvent()}},e.handleRightButtonPress=n=>{var i;return Ga(n)||t.widgetState.getInteractionState()!==Me.Settled||!(null===(i=t.activeState)||void 0===i?void 0:i.getActive())||t.hasFocus||a?pn.ZP.VOID:(e.invokeRightClickEvent(n),pn.ZP.EVENT_ABORT)},e.grabFocus=()=>{t.hasFocus||t.widgetState.getInteractionState()===Me.Settled||(t.hasFocus=!0,t._interactor.requestAnimation(e),e.invokeStartInteractionEvent())},e.loseFocus=()=>{t.hasFocus&&(t._interactor.cancelAnimation(e),e.invokeEndInteractionEvent()),t.hasFocus=!1},e.delete=()=>{n.delete();while(i.length)i.pop().unsubscribe()}}function Ja(e,t){t.classHierarchy.push("vtkRulerWidget"),e.getRepresentationsForViewType=()=>[{builder:ja.ZP,labels:["points"],initialValues:{scaleInPixels:!0}}],e.getLength=()=>{const e=t.widgetState.getFirstPoint().getOrigin(),n=t.widgetState.getSecondPoint().getOrigin();return e&&n?Math.sqrt((0,Ui.aI)(e,n)):0},t.manipulator=mn.ZP.newInstance()}const Ya={};function qa(e,t,n={}){Object.assign(t,Ya,n),vn.ZP.extend(e,t,{...n,behavior:Ka,widgetState:Ze()}),pn.ZP.get(e,t,["manipulator"]),Ja(e,t)}const Xa=pn.ZP.newInstance(qa,"vtkRulerWidget");var $a={newInstance:Xa,extend:qa},eo=(0,a.aZ)({name:"RulerTool",props:{viewId:{type:String,required:!0},slice:{type:Number,required:!0},viewDirection:{type:String,required:!0},widgetManager:{type:Object,required:!0}},components:{RulerWidget2D:La,RulerSVG2D:Qa},setup(e){const{viewId:t,viewDirection:n}=(0,a.BK)(e),i=gi(),o=Ki(),r=Qi(),s=(0,a.Fl)((()=>i.getViewProxy(t.value))),{currentImageID:l}=sn(),c=(0,a.Fl)((()=>o.currentTool===Pe.Ruler)),u=(0,a.Fl)((()=>r.activeRulerID)),d=(0,a.Fl)((()=>pe(n.value))),A=(0,a.qj)({show:!1,x:0,y:0,forRulerID:""}),p=(e,t)=>{[A.x,A.y]=t,A.show=!0,A.forRulerID=e},v=()=>{r.removeRuler(A.forRulerID)},m=()=>{r.removeActiveRuler()},g=e=>!c.value||A.show||Ga(e)?Na.Zn:(r.addNewRulerFromViewEvent(e,t.value),Na.al),f=re((0,a.Fl)((()=>s.value.getInteractor().onLeftButtonPress)));f(g),(0,a.YP)((()=>e.slice),(()=>{m()}));const h=(0,a.Fl)((()=>{const{rulers:e,lengthByID:t}=r,n=l.value,i=c.value,a=d.value,o=u.value;return r.rulerIDs.map((t=>({id:t,ruler:e[t]}))).filter((({ruler:e})=>e.imageID===n&&(!e.viewAxis||e.viewAxis===a))).map((({id:e,ruler:n})=>({id:e,firstPoint:n.firstPoint,secondPoint:n.secondPoint,color:n.color,slice:n.slice,length:t[e],focused:i&&o===e})))}));return{rulers:h,contextMenu:A,openContextMenu:p,deleteRulerFromContextMenu:v}}}),to=eo,no=n(5808),io=n(4525),ao=n(9636),oo=n(4568),ro=(0,C.Z)(to,ka,Za,!1,null,"6654b00b",null),so=ro.exports;D()(ro,{VList:no.Z,VListItem:io.Z,VListItemTitle:ao.V9,VMenu:oo.Z});var lo,co,uo=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"overlay-no-events"},[e.active?n("PaintWidget2D",{attrs:{slice:e.slice,"view-id":e.viewId,"view-direction":e.viewDirection,"widget-manager":e.widgetManager}}):e._e()],1)},Ao=[],po=(0,a.aZ)({name:"PaintWidget2D",props:{widgetManager:{type:Object,required:!0},viewId:{type:String,required:!0},viewDirection:{type:String,required:!0},slice:{type:Number,required:!0}},setup(e){const{widgetManager:t,viewDirection:n,slice:i,viewId:o}=(0,a.BK)(e),r=zi(),s=r.getWidgetFactory(),l=gi(),c=(0,a.Fl)((()=>l.getViewProxy(o.value))),u=(0,a.iH)(),{currentImageMetadata:d}=sn(),A=(0,a.Fl)((()=>pe(n.value))),p=(0,a.Fl)((()=>d.value.lpsOrientation[A.value])),v=e=>{const{worldToIndex:t}=d.value,n=z.create();return z.transformMat4(n,e,t),n};(0,a.bv)((()=>{const e=t.value;if(u.value=e.addWidget(s),!u.value)throw new Error("[PaintWidget2D] failed to create view widget")})),(0,a.m0)((()=>{const e=u.value,t=d.value,n=t.lpsOrientation[A.value];e&&(e.setSlicingIndex(n),e.setIndexToWorld(t.indexToWorld),e.setWorldToIndex(t.worldToIndex))}));const m=[];(0,a.bv)((()=>{const e=u.value;m.push(e.onStartInteractionEvent((()=>{const t=e.getWidgetState(),n=v(t.getBrush().getOrigin());r.startStroke(n,p.value)})),e.onInteractionEvent((()=>{const t=e.getWidgetState(),n=v(t.getBrush().getOrigin());r.placeStrokePoint(n,p.value)})),e.onEndInteractionEvent((()=>{const t=e.getWidgetState(),n=v(t.getBrush().getOrigin());r.endStroke(n,p.value)})))})),(0,a.Ah)((()=>{while(m.length)m.pop().unsubscribe()}));const g=mn.ZP.newInstance();return(0,a.bv)((()=>{u.value.setManipulator(g)})),(0,a.m0)((()=>{_i(g,n.value,i.value,d.value)})),(0,a.bv)((()=>{u.value.setVisibility(!1)})),L(c.value.getInteractor().onMouseEnter((()=>{const e=u.value;e&&(r.setSliceAxis(p.value),e.setVisibility(!0))}))),L(c.value.getInteractor().onMouseLeave((()=>{const e=u.value;e&&e.setVisibility(!1)}))),(0,a.bv)((()=>{const e=t.value;e.renderWidgets(),e.grabFocus(u.value)})),(0,a.Jd)((()=>{t.value.removeWidget(u.value),t.value.releaseFocus()})),()=>null}}),vo=po,mo=(0,C.Z)(vo,lo,co,!1,null,null,null),go=mo.exports,fo=(0,a.aZ)({name:"PaintTool",props:{viewId:{type:String,required:!0},slice:{type:Number,required:!0},viewDirection:{type:String,required:!0},widgetManager:{type:Object,required:!0}},components:{PaintWidget2D:go},setup(){const e=zi(),t=(0,a.Fl)((()=>e.isActive));return{active:t}}}),ho=fo,Co=(0,C.Z)(ho,uo,Ao,!1,null,"0c176b9e",null),yo=Co.exports;function wo(e,t){const n=gi(),i=(0,a.Fl)((()=>n.getViewProxy(e.value))),o=(0,a.Fl)((()=>{const i=e.value;if(t.baseImage){const e=t.baseImage.value;if(e)return n.getDataRepresentationForView(e,i)}return null})),r=(0,a.Fl)((()=>{const i=e.value;if(t.labelmaps){const e=t.labelmaps.value;if(e)return e.map((e=>n.getDataRepresentationForView(e,i))).filter(Boolean)}return[]})),s=(0,a.Fl)((()=>{const i=e.value;if(t.models){const e=t.models.value;if(e)return e.map((e=>n.getDataRepresentationForView(e,i))).filter(Boolean)}return[]}));return(0,a.YP)([i,o,r,s],(([e,t,n,i])=>{if(!e)throw new Error("[useSceneBuilder] No view available");e.removeAllRepresentations(),t&&(t.setRescaleOnColorBy(!1),e.addRepresentation(t)),n.forEach((t=>e.addRepresentation(t))),i.forEach((t=>e.addRepresentation(t))),e.getRenderer().computeVisiblePropBounds(),e.render()}),{deep:!0,immediate:!0}),{baseImageRep:o,labelmapReps:r,modelReps:s}}function bo(e,t,n,...i){const a=mi();let o=!0;const r=[];function s(e){o=!1;try{e()}finally{o=!0}}function l(e){s((()=>{i.forEach((t=>{if("parallelScale"===t&&e.parallelScale)n.value.getCamera().setParallelScale(e.parallelScale);else if("position"===t&&e.position){const{position:t}=e;n.value.getCamera().setPosition(t[0],t[1],t[2])}else if("focalPoint"===t&&e.focalPoint){const{focalPoint:t}=e;n.value.getCamera().setFocalPoint(t[0],t[1],t[2]),n.value.getInteractorStyle2D().setCenterOfRotation([...t]),n.value.getInteractorStyle3D().setCenterOfRotation([...t])}else if("directionOfProjection"===t&&e.directionOfProjection){const{directionOfProjection:t}=e;n.value.getCamera().setDirectionOfProjection(t[0],t[1],t[2])}else if("viewUp"===t&&e.viewUp){const{viewUp:t}=e;n.value.getCamera().setViewUp(t[0],t[1],t[2])}}))}))}return i.indexOf("position")>-1&&r.push((()=>{null!==t.value&&o&&a.updateCameraConfig(e.value,t.value,{position:n.value.getCamera().getPosition()})})),i.indexOf("viewUp")>-1&&r.push((()=>{null!==t.value&&o&&a.updateCameraConfig(e.value,t.value,{viewUp:n.value.getCamera().getViewUp()})})),i.indexOf("focalPoint")>-1&&r.push((()=>{null!==t.value&&o&&a.updateCameraConfig(e.value,t.value,{focalPoint:n.value.getCamera().getFocalPoint()})})),i.indexOf("directionOfProjection")>-1&&r.push((()=>{null!==t.value&&o&&a.updateCameraConfig(e.value,t.value,{directionOfProjection:n.value.getCamera().getDirectionOfProjection()})})),i.indexOf("parallelScale")>-1&&r.push((()=>{null!==t.value&&o&&a.updateCameraConfig(e.value,t.value,{parallelScale:n.value.getCamera().getParallelScale()})})),L(n.value.getCamera().onModified((()=>{r.forEach((e=>e()))}))),{restoreCameraConfig:l}}var So,xo,Po,Io=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.active?n("div",{staticClass:"overlay-no-events"},[n("svg",{staticClass:"overlay-no-events"},[n("CrosshairSVG2D",{directives:[{name:"show",rawName:"v-show",value:e.isVisible,expression:"isVisible"}],attrs:{"view-id":e.viewId,position:e.position}})],1),n("CrosshairsWidget2D",{attrs:{slice:e.slice,"view-id":e.viewId,"view-direction":e.viewDirection,"widget-manager":e.widgetManager}})],1):e._e()},Do=[],Vo=(0,a.aZ)({name:"CrosshairsWidget2D",props:{widgetManager:{type:Object,required:!0},viewId:{type:String,required:!0},viewDirection:{type:String,required:!0},slice:{type:Number,required:!0}},setup(e){const{widgetManager:t,viewDirection:n,slice:i}=(0,a.BK)(e),o=fi(),r=o.getWidgetFactory(),s=(0,a.iH)(),{currentImageMetadata:l}=sn();(0,a.bv)((()=>{const e=t.value;if(s.value=e.addWidget(r),!s.value)throw new Error("[PaintWidget2D] failed to create view widget")}));const c=mn.ZP.newInstance();return(0,a.bv)((()=>{s.value.setManipulator(c)})),(0,a.m0)((()=>{_i(c,n.value,i.value,l.value)})),(0,a.bv)((()=>{s.value.setVisibility(!0)})),(0,a.bv)((()=>{const e=t.value;e.renderWidgets()})),(0,a.Jd)((()=>{t.value.removeWidget(s.value)})),()=>null}}),Ro=Vo,Mo=(0,C.Z)(Ro,So,xo,!1,null,null,null),Eo=Mo.exports,Bo=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("g",{ref:"containerEl"},[null!=e.x&&null!=e.y?n("line",{attrs:{x1:e.x,y1:"0%",x2:e.x,y2:e.y-8,stroke:"yellow","stroke-width":"1"}}):e._e(),null!=e.x&&null!=e.y?n("line",{attrs:{x1:e.x,y1:e.y+8,x2:e.x,y2:"100%",stroke:"yellow","stroke-width":"1"}}):e._e(),null!=e.x&&null!=e.y?n("line",{attrs:{x1:"0%",y1:e.y,x2:e.x-8,y2:e.y,stroke:"yellow","stroke-width":"1"}}):e._e(),null!=e.x&&null!=e.y?n("line",{attrs:{x1:e.x+8,y1:e.y,x2:"100%",y2:e.y,stroke:"yellow","stroke-width":"1"}}):e._e()])},ko=[],Zo=(0,a.aZ)({props:{position:Array,viewId:{type:String,required:!0}},setup(e){const{viewId:t,position:n}=(0,a.BK)(e),i=(0,a.iH)(),o=gi(),r=(0,a.Fl)((()=>o.getViewProxy(t.value))),s=()=>{const e=r.value.getRenderer(),t=(0,a.SU)(n);if(t){const n=zn(t,e);n&&(i.value={x:n[0],y:n[1]})}},l=re((0,a.Fl)((()=>r.value.getCamera().onModified)));l(s),(0,a.m0)(s);const c=(0,a.iH)(null);return te(c,(()=>{s()})),{devicePixelRatio:devicePixelRatio,x:(0,a.Fl)((()=>{var e;return null===(e=i.value)||void 0===e?void 0:e.x})),y:(0,a.Fl)((()=>{var e;return null===(e=i.value)||void 0===e?void 0:e.y})),containerEl:c}}}),Fo=Zo,To=(0,C.Z)(Fo,Bo,ko,!1,null,"4a5c02a8",null),Oo=To.exports,Lo=(0,a.aZ)({name:"CrosshairsTool",props:{viewId:{type:String,required:!0},slice:{type:Number,required:!0},viewDirection:{type:String,required:!0},widgetManager:{type:Object,required:!0}},components:{CrosshairsWidget2D:Eo,CrosshairSVG2D:Oo},setup(e){const{viewDirection:t,slice:n}=(0,a.BK)(e),i=Ki(),{position:o,imagePosition:s}=(0,r.Jk)(fi()),{currentImageMetadata:l}=sn(),c=(0,a.Fl)((()=>i.currentTool===Pe.Crosshairs)),u=(0,a.Fl)((()=>{const{lpsOrientation:e,dimensions:i}=l.value,a=pe(t.value),o=e[a],r=Ce(s.value[o],0,i[o]-1);return Math.round(r)===n.value}));return{active:c,position:o,isVisible:u}}}),zo=Lo,Uo=(0,C.Z)(zo,Io,Do,!1,null,"146cad60",null),_o=Uo.exports;(function(e){e["Volume"]="View3D",e["Slice"]="View2D"})(Po||(Po={}));class Ho{constructor(e){this.viewProxies=new Map,this.dataProxies=new Map,this.proxyManager=e}delete(){const e=e=>this.proxyManager.deleteProxy(e);this.viewProxies.forEach(e),this.dataProxies.forEach(e)}createView(e,t){if(this.viewProxies.has(e))throw new Error("Cannot create a view with the same ID");const n=this.proxyManager.createProxy("Views",t,{name:t});return this.viewProxies.set(e,n),n}getView(e){return this.viewProxies.get(e)}removeView(e){const t=this.viewProxies.get(e);t&&(this.proxyManager.deleteProxy(t),this.viewProxies.delete(e))}addData(e,t){if(this.dataProxies.has(e))return;const n=this.proxyManager.createProxy("Sources","TrivialProducer");n.setInputData(t),this.dataProxies.set(e,n)}getData(e){var t;return null!==(t=this.dataProxies.get(e))&&void 0!==t?t:null}getDataRepresentationForView(e,t){const n=this.dataProxies.get(e),i=this.viewProxies.get(t);return n&&i?this.proxyManager.getRepresentation(n,i):null}}function Wo(e,t){const n=gi(),i=(0,a.iH)(null),o=e=>{i.value=null!==e&&void 0!==e?e:null},r=(0,a.Fl)((()=>n.createOrGetViewProxy((0,a.SU)(e),(0,a.SU)(t))));return(0,a.YP)(r,((e,t)=>{t.setContainer(null),e.setContainer(i.value)})),(0,a.YP)(i,(e=>{r.value.setContainer(e),r.value.modified()})),{viewProxy:r,setContainer:o}}function Qo(e,t){const n=re((0,a.Fl)((()=>(0,a.SU)(e).onModified)));n(t)}function No(e,t){const n=(0,a.iH)(!1);Qo(e,(()=>{n.value=!!(0,a.SU)(e).getContainer()})),(0,a.YP)(n,(e=>{e&&t()}),{immediate:!0})}function jo(e,t){const n=(0,a.iH)(!1);Qo(e,(()=>{n.value=!!(0,a.SU)(e).getContainer()})),(0,a.YP)(n,((e,n)=>{n&&!e&&t()}),{immediate:!0})}var Go=n(9838);function Ko(e){const t=(0,a.Fl)((()=>{const e=Go.ZP.newInstance({pickingEnabled:!1,useSvgLayer:!1,captureOn:gn.iN.MOUSE_MOVE});return e}));return No(e,(()=>{t.value.setRenderer(e.value.getRenderer()),t.value.enablePicking()})),jo(e,(()=>{t.value.disablePicking()})),(0,a.YP)(t,((t,n)=>{t&&(t.setRenderer(e.value.getRenderer()),t.enablePicking()),n&&n.delete()})),(0,a.Ah)((()=>{t.value.delete()})),{widgetManager:t}}function Jo(e){const t=new Map,n=new Map,i=(i,o,r)=>{var s;t.has(i)||t.set(i,(0,a.iH)(e));const l=t.get(i);n.set(i,1+(null!==(s=n.get(i))&&void 0!==s?s:0));const c=(0,a.YP)(o,(e=>{e!==l.value&&(l.value=e)}),{flush:"sync",immediate:!0,...null===r||void 0===r?void 0:r.watchOptions}),u=(0,a.YP)(l,(e=>{e!==o.value&&(o.value=e)}),{flush:"sync",immediate:!0,...null===r||void 0===r?void 0:r.watchOptions});return()=>{c(),u(),n.set(i,n.get(i)-1),0===n.get(i)&&(n.delete(i),t.delete(i))}},o=(e,t,n)=>{let o=null;(0,a.YP)(e,(e=>{o&&o(),o=i(e,t,n)}),{flush:"sync",immediate:!0})};return o}function Yo(e,t){return(0,a.Fl)({get:()=>{var n;return(null===(n=e.value)||void 0===n?void 0:n[t])||null},set:n=>{e.value&&null!=n&&(e.value={...e.value,[t]:n})}})}const qo=Jo(0),Xo=Jo(0);function $o(e,t){const n=Yo(t,"level"),i=Yo(t,"width");(0,a.oR)(n),(0,a.oR)(i),qo(e,n),Xo(e,i)}var er=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("svg",{staticClass:"overlay-no-events"},[e.active&&"2D"===e.viewType?n("crop-2D",{attrs:{"view-id":e.viewId}}):e._e(),e.active&&"3D"===e.viewType?n("crop-3D",{attrs:{"view-id":e.viewId}}):e._e()],1)},tr=[],nr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("g",[null!=e.ax1.lines?[n("crop-2D-line-handle",{attrs:{line:e.ax1.lines.lowerLine,"out-of-bounds":e.ax1.lines.outOfBounds},on:{pointerdown:function(t){return e.onPointerDown(e.ax1.name,0,t)},pointermove:e.onPointerMove,pointerup:e.onPointerUp}}),n("crop-2D-line-handle",{attrs:{line:e.ax1.lines.upperLine,"out-of-bounds":e.ax1.lines.outOfBounds},on:{pointerdown:function(t){return e.onPointerDown(e.ax1.name,1,t)},pointermove:e.onPointerMove,pointerup:e.onPointerUp}})]:e._e(),null!=e.ax2.lines?[n("crop-2D-line-handle",{attrs:{line:e.ax2.lines.lowerLine,"out-of-bounds":e.ax2.lines.outOfBounds},on:{pointerdown:function(t){return e.onPointerDown(e.ax2.name,0,t)},pointermove:e.onPointerMove,pointerup:e.onPointerUp}}),n("crop-2D-line-handle",{attrs:{line:e.ax2.lines.upperLine,"out-of-bounds":e.ax2.lines.outOfBounds},on:{pointerdown:function(t){return e.onPointerDown(e.ax2.name,1,t)},pointermove:e.onPointerMove,pointerup:e.onPointerUp}})]:e._e()],2)},ir=[];function ar(e){const t=mi(),n=sn(),{currentImageMetadata:i}=n,o=t.getComputedSliceConfig(e,n.currentImageID);return(0,a.Fl)((()=>{const e=o.value,{lpsOrientation:t}=i.value;if(e){const n=pe(e.axisDirection),i=[0,0,0];return i[t[n]]=e.slice,{axisName:n,axisIndex:t[n],number:e.slice,planeNormal:t[e.axisDirection],planeOrigin:i}}return null}))}function or(e){const t=(0,a.iH)(null),n=()=>{var n,i;t.value=null!==(i=null===(n=(0,a.SU)(e))||void 0===n?void 0:n.getContainer())&&void 0!==i?i:null},i=re((0,a.Fl)((()=>{var t;return null===(t=(0,a.SU)(e))||void 0===t?void 0:t.onModified})));return i(n),n(),t}function rr(e,t){const n=(0,a.iH)([]),i=(0,a.Fl)((()=>{var e,n,i;return null===(i=null===(n=null===(e=(0,a.SU)(t))||void 0===e?void 0:e.getRenderWindow())||void 0===n?void 0:n.getViews())||void 0===i?void 0:i[0]})),o=or(i),r=()=>{const i=(0,a.SU)(e),o=(0,a.SU)(t);null!=i&&o&&(n.value=i.map((e=>{const t=Tn(e,o);return[t[0]/devicePixelRatio,t[1]/devicePixelRatio]})))},s=re((0,a.Fl)((()=>{var e;return null===(e=(0,a.SU)(t))||void 0===e?void 0:e.getActiveCamera().onModified})));return(0,O.yU7)(o,r),(0,a.m0)(r),s(r),r(),n}function sr(e,t){const n=rr(e,t),i=(0,a.Fl)((()=>{var e,i;const o=n.value,r=(0,a.SU)(t),s=null===(i=null===(e=null===r||void 0===r?void 0:r.getRenderWindow())||void 0===e?void 0:e.getViews())||void 0===i?void 0:i[0];if(r&&s){const[,e]=s.getViewportSize(r);return o.map((t=>[t[0],e/devicePixelRatio-t[1]]))}return null}));return i}var lr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("g",[n("line",{attrs:{x1:e.line.startEdge[0],y1:e.line.startEdge[1],x2:e.line.startCrop[0],y2:e.line.startCrop[1],"stroke-width":2+e.focusWidth,"stroke-dasharray":"6","stroke-linecap":"square",stroke:"rgba(200, 255, 0, 0.5)"}}),n("line",{attrs:{x1:e.line.startCrop[0],y1:e.line.startCrop[1],x2:e.line.endCrop[0],y2:e.line.endCrop[1],"stroke-width":2+e.focusWidth,"stroke-dasharray":e.outOfBounds?6:"none","stroke-linecap":"butt",stroke:"rgb(200, 255, 0)"}}),n("line",{attrs:{x1:e.line.endCrop[0],y1:e.line.endCrop[1],x2:e.line.endEdge[0],y2:e.line.endEdge[1],"stroke-width":2+e.focusWidth,"stroke-dasharray":"6","stroke-linecap":"square",stroke:"rgba(200, 255, 0, 0.5)"}}),n("line",e._g({ref:"grabLineEl",staticClass:"pointer-events-all",style:{cursor:e.cursor},attrs:{x1:e.line.startEdge[0],y1:e.line.startEdge[1],x2:e.line.endEdge[0],y2:e.line.endEdge[1],fill:"none","stroke-opacity":"0","stroke-dasharray":"none","stroke-width":Number(e.$attrs["stroke-width"]||0)+e.clickWidth||0},on:{pointerenter:function(t){return e.onHover(!0)},pointerleave:function(t){return e.onHover(!1)},pointerdown:function(t){return e.onPointer(!0,t)},pointerup:function(t){return e.onPointer(!1,t)}}},e.$listeners))])},cr=[],ur=(0,a.aZ)({props:{line:{required:!0,type:Object},clickWidth:{default:20,type:Number},outOfBounds:{default:!1,type:Boolean}},setup(){const e=(0,a.iH)("grab"),t=(0,a.iH)(null),n=(0,a.iH)(0),i=(n,i)=>{var a,o;n?null===(a=t.value)||void 0===a||a.setPointerCapture(i.pointerId):null===(o=t.value)||void 0===o||o.releasePointerCapture(i.pointerId),e.value=n?"grabbing":"grab"},o=e=>{n.value=e?2:0};return{onPointer:i,onHover:o,cursor:e,grabLineEl:t,focusWidth:n}}}),dr=ur,Ar=(0,C.Z)(dr,lr,cr,!1,null,"5b82f04e",null),pr=Ar.exports;function vr(e,t,n,i){const o=ar(e);return(0,a.Fl)((()=>{const a=e.value,r=t.value,s=n.value,l=i.value,c=o.value;if(!a||!r||!c)return null;const u=c.axisName,[d]=ce.filter((e=>e!==r&&e!==u)),A=s[r],p=s[d],v=l[d],m=s[u],g=c.number,f=g<m[0]||m[1]<g,h=e=>{const t=ue(),n=ue(),i=ue(),a=ue();return t[r]=A[e],n[r]=A[e],i[r]=A[e],a[r]=A[e],[t[d],a[d]]=v,[n[d],i[d]]=p,{startEdge:t,startCrop:n,endCrop:i,endEdge:a}};return{lowerLine:h(0),upperLine:h(1),outOfBounds:f}}))}function mr(e,t,n){const i=(0,a.Fl)((()=>{const n=e.value,{lpsOrientation:i,indexToWorld:a}=t.value;return n?[n.lowerLine.startEdge,n.lowerLine.startCrop,n.lowerLine.endCrop,n.lowerLine.endEdge,n.upperLine.startEdge,n.upperLine.startCrop,n.upperLine.endCrop,n.upperLine.endEdge].map((e=>{const t=[0,0,0];t[i.Sagittal]=e.Sagittal,t[i.Coronal]=e.Coronal,t[i.Axial]=e.Axial;const n=[0,0,0];return z.transformMat4(n,t,a),n})):null})),o=sr(i,n);return(0,a.Fl)((()=>{const t=e.value,n=o.value;return t&&(null===n||void 0===n?void 0:n.length)?{lowerLine:{startEdge:n[0],startCrop:n[1],endCrop:n[2],endEdge:n[3]},upperLine:{startEdge:n[4],startCrop:n[5],endCrop:n[6],endEdge:n[7]},outOfBounds:t.outOfBounds}:null}))}function gr({mouseEventToLPSPoint:e,getCropEdgePos:t,setCropEdgePos:n}){const i=(0,a.iH)(),o=(0,a.iH)(),r=(0,a.iH)(ue()),s=(0,a.iH)(0),l=(n,a,l)=>{const c=e(l);c&&(r.value=c,s.value=t(n,a),i.value=n,o.value=a)},c=t=>{if(null==i.value||null==o.value)return;const a=i.value,l=e(t);if(!l)return;const c=l[a]-r.value[a];n(a,o.value,s.value+c)},u=()=>{i.value=null,o.value=null};return{onPointerDown:l,onPointerMove:c,onPointerUp:u}}var fr=(0,a.aZ)({props:{viewId:{required:!0,type:String}},components:{Crop2DLineHandle:pr},setup(e){const{viewId:t}=(0,a.BK)(e),n=gi(),i=(0,a.Fl)((()=>n.getViewProxy(t.value))),o=(0,a.Fl)((()=>{var e;return null===(e=i.value)||void 0===e?void 0:e.getRenderer()})),{currentImageExtent:r,currentImageID:s,currentImageMetadata:l}=sn(),c=ar(t),u=(0,a.Fl)((()=>{var e,t;return null!==(t=null===(e=c.value)||void 0===e?void 0:e.axisName)&&void 0!==t?t:null})),d=An(),A=(0,a.Fl)((()=>{const e=s.value;return e&&e in d.croppingByImageID?d.croppingByImageID[e]:de()})),p=(0,a.Fl)((()=>ce.filter((e=>u.value&&e!==u.value)))),v=(0,a.Fl)((()=>{var e;return null!==(e=p.value[0])&&void 0!==e?e:null})),m=(0,a.Fl)((()=>{var e;return null!==(e=p.value[1])&&void 0!==e?e:null})),g=vr(t,v,A,r),f=vr(t,m,A,r),h=mr(g,l,o),C=mr(f,l,o),{onPointerDown:y,onPointerMove:w,onPointerUp:b}=gr({mouseEventToLPSPoint(e){const t=o.value;if(!t)return null;const n=c.value;if(!n)return null;const{lpsOrientation:i,worldToIndex:a}=l.value,r=Ln(e,t,n.planeOrigin,n.planeNormal);if(!r)return null;z.transformMat4(r,r,a);const s=ue();return s.Sagittal=r[i.Sagittal],s.Coronal=r[i.Coronal],s.Axial=r[i.Axial],s},getCropEdgePos(e,t){return A.value[e][t]},setCropEdgePos(e,t,n){if(!s.value)return;const i=A.value,[a,o]=i[e],[l,c]=r.value[e],u=[a,o];0===t?u[0]=Math.max(l,Math.min(n,o)):1===t&&(u[1]=Math.max(a,Math.min(n,c))),d.setCroppingForAxis(s.value,e,u)}});return{ax1:(0,a.Fl)((()=>({name:v.value,lines:h.value}))),ax2:(0,a.Fl)((()=>({name:m.value,lines:C.value}))),onPointerDown:y,onPointerMove:w,onPointerUp:b}}}),hr=fr,Cr=(0,C.Z)(hr,nr,ir,!1,null,"305c9c1c",null),yr=Cr.exports,wr=n(3625);function br(e){return e.Sagittal[0]<=e.Sagittal[1]&&e.Coronal[0]<=e.Coronal[1]&&e.Axial[0]<=e.Axial[1]}function Sr(e,t){return e.Axial[0]===t.Axial[0]&&e.Axial[1]===t.Axial[1]&&e.Sagittal[0]===t.Sagittal[0]&&e.Sagittal[1]===t.Sagittal[1]&&e.Coronal[0]===t.Coronal[0]&&e.Coronal[1]===t.Coronal[1]}var xr,Pr,Ir=(0,a.aZ)({props:{viewId:{type:String,required:!0}},setup(e){const{viewId:t}=(0,a.BK)(e),n=(0,a.f3)(ae);if(!n)throw new Error("Crop3D component cannot access the 2D widget manager.");const i=gi(),o=(0,a.Fl)((()=>i.getViewProxy(t.value))),r=An(),{currentImageID:s,currentImageMetadata:l}=sn(),c=(0,a.Fl)((()=>{const e=s.value;return e&&e in r.croppingByImageID?r.croppingByImageID[e]:null})),u=wr.ZP.newInstance(),d=u.getWidgetState();u.setEdgeHandlesEnabled(!1),u.setFaceHandlesEnabled(!0),u.setCornerHandlesEnabled(!0);const A=(0,a.iH)();(0,a.YP)(n,((e,t)=>{t&&t.removeWidget(u),e&&(A.value=e.addWidget(u))})),(0,a.bv)((()=>{n.value&&(A.value=n.value.addWidget(u),A.value.getRepresentations().forEach((e=>{e.getActors().forEach((e=>{e.getProperty().setAmbient(1)}))})),o.value.render())})),(0,a.Jd)((()=>{n.value&&n.value.removeWidget(u)})),(0,a.YP)(l,(e=>{d.setWorldToIndexT(e.worldToIndex),d.setIndexToWorldT(e.indexToWorld),d.placeWidget(e.worldBounds)}),{immediate:!0});const p=e=>{const{lpsOrientation:t}=l.value,n=[0,0,0,0,0,0];ce.forEach((i=>{[n[2*t[i]],n[2*t[i]+1]]=e[i]})),be(n,d.getCroppingPlanes().getPlanes())||d.getCroppingPlanes().setPlanes(n),o.value.render()};(0,a.YP)(c,(e=>{e&&p(e)}),{immediate:!0});const v=re(d.getCroppingPlanes().onModified);return v((()=>{const e=s.value;if(!e)return;const t=d.getCroppingPlanes().getPlanes(),{lpsOrientation:n}=l.value,i={Sagittal:Ae(t,"Sagittal",n),Coronal:Ae(t,"Coronal",n),Axial:Ae(t,"Axial",n)},a=c.value;a&&Sr(i,a)||(br(i)?r.setCropping(e,i):a&&p(a))})),()=>null}}),Dr=Ir,Vr=(0,C.Z)(Dr,xr,Pr,!1,null,null,null),Rr=Vr.exports,Mr=(0,a.aZ)({props:{viewId:{type:String,required:!0}},components:{Crop2D:yr,Crop3D:Rr},setup(e){const{viewId:t}=(0,a.BK)(e),{currentImageID:n}=sn(),i=An(),o=Ki(),r=(0,a.Fl)((()=>o.currentTool===Pe.Crop));(0,a.YP)(n,(e=>{e&&!(e in i.croppingByImageID)&&i.resetCropping(e)}),{immediate:!0});const s=(0,a.Fl)((()=>{const e=gi();return e.viewSpecs[t.value].viewType}));return{active:r,viewType:s}}}),Er=Mr,Br=(0,C.Z)(Er,er,tr,!1,null,"1e99b971",null),kr=Br.exports;const Zr={ArrowLeft:-1,ArrowRight:1,ArrowUp:-1,ArrowDown:1};var Fr=(0,a.aZ)({name:"VtkTwoView",props:{id:{type:String,required:!0},viewDirection:{type:String,required:!0},viewUp:{type:String,required:!0}},components:{SliceSlider:G,ViewOverlayGrid:ee,WindowLevelTool:va,SliceScrollTool:ha,PanTool:Da,ZoomTool:Ba,RulerTool:so,PaintTool:yo,CrosshairsTool:_o,CropTool:kr},setup(e){const t=mi(),n=zi(),{id:i,viewDirection:o,viewUp:r}=(0,a.BK)(e),s=(0,a.iH)(),l=(0,a.Fl)((()=>pe(o.value))),{currentImageData:c,currentImageID:u,currentImageMetadata:d,isImageLoading:A}=sn(),p=Lt(),v=Mn(),m=(0,a.Fl)((()=>null!==u.value?t.getSliceConfig(i.value,u.value):null)),g=(0,a.Fl)((()=>null!==m.value?m.value.slice:v.slice)),f=(0,a.Fl)((()=>null!==m.value?m.value.min:v.min)),h=(0,a.Fl)((()=>null!==m.value?m.value.max:v.max)),C=(0,a.Fl)({get:()=>{var e;const n=i.value,a=u.value;return null!==a&&null!==(e=t.getWindowingConfig(n,a))&&void 0!==e?e:null},set:e=>{const n=u.value;null!==n&&null!=e&&t.updateWindowingConfig(i.value,n,e)}}),y=(0,a.Fl)((()=>{var e;return null===(e=C.value)||void 0===e?void 0:e.width})),w=(0,a.Fl)((()=>{var e;return null===(e=C.value)||void 0===e?void 0:e.level})),b=(0,a.Fl)((()=>{if(null!==u.value&&u.value in p.imageIDToVolumeKey){const e=p.imageIDToVolumeKey[u.value],t=p.volumeInfo[e],n=p.volumeStudy[e],i=p.studyInfo[n],a=p.studyPatient[n],o=p.patientInfo[a],r=o.PatientID,s=i.StudyID,l=i.StudyDescription,c=t.SeriesNumber,d=t.SeriesDescription;return{patientID:r,studyID:s,studyDescription:l,seriesNumber:c,seriesDescription:d}}return null})),S=(0,a.Fl)((()=>{const{lpsOrientation:e,dimensions:t}=d.value,n=e[l.value],i=t[n];return{min:0,max:i-1}})),x=e=>{null!==u.value&&t.updateSliceConfig(i.value,u.value,{slice:e})},{viewProxy:P,setContainer:I}=Wo(i,Po.Slice);(0,a.wF)((()=>{P.value.getInteractorStyle2D().removeAllManipulators()})),(0,a.bv)((()=>{I(s.value),P.value.setOrientationAxesVisibility(!1)})),(0,a.Jd)((()=>{I(null)})),(0,a.m0)((()=>{const e=d.value.lpsOrientation[l.value];P.value.setSlicingMode("IJK"[e])})),(0,a.YP)([i,u,o],(()=>{u.value&&!t.getSliceConfig(i.value,u.value)&&(t.updateSliceConfig(i.value,u.value,{...S.value,axisDirection:o.value}),t.resetSlice(i.value,u.value))}),{immediate:!0,deep:!0});const{currentImageID:D}=sn(),V=(0,a.iH)(!1),R=e=>{var n;if(!D.value||!V.value)return;const a=null!==(n=Zr[e.key])&&void 0!==n?n:0;a&&(t.updateSliceConfig(i.value,D.value,{slice:g.value+a}),e.stopPropagation())};(0,O.JLS)(Object.keys(Zr),R),te(s,(()=>P.value.resize()));const{widgetManager:M}=Ko(P);(0,a.JJ)(ie,M),(0,a.YP)(c,((e,n)=>{if(e&&e!==n){const n=e.getPointData().getScalars().getRange();null===u.value||t.getWindowingConfig(i.value,u.value)||(t.updateWindowingConfig(i.value,u.value,{min:n[0],max:n[1]}),t.resetWindowLevel(i.value,u.value))}}),{immediate:!0}),$o(u,C);const E=Ti(),B=(0,a.Fl)((()=>E.idList.filter((e=>E.parentImage[e]===u.value)))),{baseImageRep:k,labelmapReps:Z}=wo(i,{baseImage:u,labelmaps:B}),{cameraDirVec:F,cameraUpVec:T}=ln(o,r,d),{resizeToFit:z,ignoreResizeToFitTracking:_,resetResizeToFitTracking:H}=U(P.value.getCamera(),!1),W=()=>_((()=>{const e=d.value.lpsOrientation[pe(o.value)],t=d.value.lpsOrientation[pe(r.value)],n=d.value.dimensions.map(((e,t)=>e*d.value.spacing[t]));P.value.resizeToFit(e,t,n),H()})),Q=()=>{const e=d.value.worldBounds,t=[(e[0]+e[1])/2,(e[2]+e[3])/2,(e[4]+e[5])/2];_((()=>{P.value.updateCamera(F.value,T.value,t),P.value.resetCamera(e)})),W(),P.value.render()};L(P.value.onResize((()=>{z.value&&W()}))),(0,a.YP)(z,(()=>{z.value&&Q()}));const{restoreCameraConfig:N}=bo(i,u,P,"parallelScale","position","focalPoint","viewUp");(0,a.YP)([u,F,T],(()=>{let e;null!==u.value&&(e=t.getCameraConfig(i.value,u.value)),e?(N(e),P.value.getRenderer().resetCameraClippingRange(),P.value.render(),z.value=!1):z.value?Q():z.value=!0}),{immediate:!0,deep:!0});const{top:j,left:G}=le(P);return(0,a.m0)((()=>{if(null===m.value||null===C.value)return;const{slice:e}=m.value,{width:t,level:n}=C.value,i=k.value;i&&(i.setSlice(e),i.setWindowWidth(t),i.setWindowLevel(n)),Z.value.forEach((t=>{t.setSlice(e)})),P.value.render()})),(0,a.m0)((()=>{const{labelmapOpacity:e}=n;Z.value.forEach((t=>{t.setOpacity(e)}))})),{vtkContainerRef:s,viewID:i,viewProxy:P,viewAxis:l,active:!0,slice:g,sliceMin:f,sliceMax:h,windowWidth:y,windowLevel:w,topLabel:j,leftLabel:G,isImageLoading:A,setSlice:x,widgetManager:M,dicomInfo:b,enableResizeToFit(){z.value=!0},hover:V}}}),Tr=Fr,Or=n(9223),Lr=n(3305),zr=(0,C.Z)(Tr,F,T,!1,null,"69a77c16",null),Ur=zr.exports;D()(zr,{VBtn:V.Z,VDivider:Or.Z,VIcon:R.Z,VList:no.Z,VListItem:io.Z,VListItemContent:ao.km,VListItemTitle:ao.V9,VMenu:oo.Z,VProgressCircular:Lr.Z,VTooltip:M.Z});var _r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"vtk-container-wrapper vtk-three-container"},[n("div",{staticClass:"vtk-container",class:e.active?"active":""},[n("div",{staticClass:"vtk-sub-container"},[n("div",{ref:"vtkContainerRef",staticClass:"vtk-view"})]),n("div",{staticClass:"overlay-no-events tool-layer"},[n("crop-tool",{attrs:{"view-id":e.viewID}}),n("pan-tool",{attrs:{"view-id":e.viewID}})],1),n("view-overlay-grid",{staticClass:"overlay-no-events view-annotations",scopedSlots:e._u([{key:"top-left",fn:function(){return[n("div",{staticClass:"annotation-cell"},[n("v-tooltip",{attrs:{bottom:"",transition:"slide-x-transition"},scopedSlots:e._u([{key:"activator",fn:function(t){var i=t.on,a=t.attrs;return[n("v-btn",e._g(e._b({staticClass:"pointer-events-all",attrs:{dark:"","x-small":"",icon:""},on:{click:e.resetCamera}},"v-btn",a,!1),i),[n("v-icon",{staticClass:"py-1",attrs:{small:""}},[e._v("mdi-camera-flip-outline")])],1)]}}])},[n("span",[e._v("Reset camera")])]),n("span",{staticClass:"ml-3"},[e._v(e._s(e.topLeftLabel))])],1)]},proxy:!0}])}),n("transition",{attrs:{name:"loading"}},[e.isImageLoading?n("div",{staticClass:"overlay-no-events loading"},[n("div",[e._v("Loading the image")]),n("div",[n("v-progress-circular",{attrs:{indeterminate:"",color:"blue"}})],1)]):e._e()])],1)])},Hr=[],Wr=n(6134);const Qr="ProxyManager";function Nr(e){const t=(0,a.f3)("ProxyManager");return t?e(t):null}function jr(e=Qr){return(0,a.f3)(null!==e&&void 0!==e?e:Qr)}function Gr(e){const t=(0,a.iH)(!1),n=re((0,a.Fl)((()=>(0,a.SU)(e).getInteractor().onStartAnimation))),i=re((0,a.Fl)((()=>(0,a.SU)(e).getInteractor().onEndAnimation)));return n((()=>{t.value=!0})),i((()=>{t.value=!1})),t}var Kr=(0,a.aZ)({props:{id:{type:String,required:!0},viewDirection:{type:String,required:!0},viewUp:{type:String,required:!0}},components:{ViewOverlayGrid:ee,CropTool:kr,PanTool:Da},setup(e){const t=zt(),n=jr(),i=mi(),{id:o,viewDirection:r,viewUp:s}=(0,a.BK)(e),l=(0,a.iH)(),{currentImageID:c,currentImageMetadata:u,currentImageData:d,isImageLoading:A}=sn(),{viewProxy:p,setContainer:v}=Wo(o,Po.Volume);(0,a.bv)((()=>{p.value.setOrientationAxesVisibility(!0),p.value.setOrientationAxesType("cube"),p.value.setBackground([0,0,0,0]),v(l.value)})),(0,a.Jd)((()=>{v(null),p.value.setContainer(null)})),te(l,(()=>p.value.resize()));const{baseImageRep:m}=wo(o,{baseImage:c,models:(0,a.Fl)((()=>t.idList))});(0,a.YP)(m,(e=>{e&&e.getVolumes().forEach((e=>e.setPickable(!1)))}),{immediate:!0});const{widgetManager:g}=Ko(p);(0,a.JJ)(ae,g);const{cameraUpVec:f,cameraDirVec:h}=ln(r,s,u),C=()=>{const e=u.value.worldBounds,t=[(e[0]+e[1])/2,(e[2]+e[3])/2,(e[4]+e[5])/2];p.value.updateCamera(h.value,f.value,t),p.value.resetCamera(),p.value.render()};(0,a.YP)([m,h,f],(()=>{let e;null!==c.value&&(e=i.getCameraConfig(o.value,c.value)),e||C()}),{immediate:!0,deep:!0});const{restoreCameraConfig:y}=bo(o,c,p,"position","focalPoint","directionOfProjection","viewUp");(0,a.YP)(c,(()=>{let e=null;null!==c.value&&(e=i.getCameraConfig(o.value,c.value)),e&&(y(e),p.value.getRenderer().resetCameraClippingRange(),p.value.render())}));const w=i.getComputedVolumeColorConfig(o,c);(0,a.YP)([o,c],(()=>{c.value&&d.value&&!w.value&&i.resetToDefaultColoring(o.value,c.value,d.value)}),{immediate:!0});const b=(0,a.Fl)((()=>{var e;return null===(e=w.value)||void 0===e?void 0:e.cvr})),S=Gr(p);(0,a.YP)([b,m,S],(([e,t,n])=>{const i=null===t||void 0===t?void 0:t.getInputDataSet();if(!t||!i||!e)return;const a=e.enabled&&!n,o=p.value.getRenderer(),r=t.getMapper(),s=t.getVolumes()[0],l=s.getProperty(),c=s.getBounds(),u=[(c[0]+c[1])/2,(c[2]+c[3])/2,(c[4]+c[5])/2];0===o.getLights().length&&o.createLight();const d=o.getLights()[0];a?(d.setFocalPoint(...u),d.setColor(1,1,1),d.setIntensity(1),d.setConeAngle(90),d.setPositional(!0),o.setTwoSidedLighting(!1),e.lightFollowsCamera?(d.setLightTypeToHeadLight(),o.updateLightsGeometryToFollowCamera()):d.setLightTypeToSceneLight()):d.setPositional(!1),r.setMaximumSamplesPerRay(2e3);const A=i.getDimensions(),v=i.getSpacing(),m=z.length(z.fromValues(A[0]*v[0],A[1]*v[1],A[2]*v[2]));let g=1.5*z.length(v)/10;m/g>r.getMaximumSamplesPerRay()&&(g=m/(r.getMaximumSamplesPerRay()-1)),r.setSampleDistance(n?.75:g),r.setGlobalIlluminationReach(a?.5:0),l.setShade(!0),l.setScalarOpacityUnitDistance(0,(0,Pn.g8)(i.getBounds())/Math.max(...i.getDimensions())),l.setUseGradientOpacity(0,!a),l.setGradientOpacityMinimumValue(0,0);const f=i.getPointData().getScalars().getRange();l.setGradientOpacityMaximumValue(0,.01*(f[1]-f[0])),l.setGradientOpacityMinimumOpacity(0,0),l.setGradientOpacityMinimumOpacity(0,1),a&&e.useVolumetricScatteringBlending?r.setVolumetricScatteringBlending(e.volumetricScatteringBlending):r.setVolumetricScatteringBlending(0),a&&e.useLocalAmbientOcclusion?(r.setLocalAmbientOcclusion(!0),r.setLAOKernelSize(e.laoKernelSize),r.setLAOKernelRadius(e.laoKernelRadius)):(r.setLocalAmbientOcclusion(!1),r.setLAOKernelSize(0),r.setLAOKernelRadius(0)),l.setAmbient(e.enabled?e.ambient:ci),l.setDiffuse(e.enabled?e.diffuse:ui),l.setSpecular(e.enabled?e.specular:di),n||p.value.render()}),{deep:!0,immediate:!0});const x=(0,a.Fl)((()=>{var e;return null===(e=w.value)||void 0===e?void 0:e.colorBy})),P=(0,a.Fl)((()=>{var e;return null===(e=w.value)||void 0===e?void 0:e.transferFunction})),I=(0,a.Fl)((()=>{var e;return null===(e=w.value)||void 0===e?void 0:e.opacityFunction}));(0,a.YP)([m,x,P,I],(()=>{if(!m.value||!x.value||!P.value||!I.value)return;const e=m.value,{arrayName:t,location:i}=x.value,a=P.value,o=I.value,r=n.getLookupTable(t);r.setMode(Wr.Z.Mode.Preset),r.setPresetName(a.preset),r.setDataRange(...a.mappingRange);const s=n.getPiecewiseFunction(t);switch(s.setMode(o.mode),s.setDataRange(...o.mappingRange),o.mode){case Re.Z.Mode.Gaussians:s.setGaussians(o.gaussians);break;case Re.Z.Mode.Points:{const e=_n(o.preset,o.mappingRange,o.shift);e&&s.setPoints(e);break}case Re.Z.Mode.Nodes:s.setNodes(o.nodes);break;default:}e&&e.setColorBy(t,i),p.value.render()}),{immediate:!0,deep:!0});const D=An(),V=D.getComputedVTKPlanes(c);return(0,a.YP)(V,(e=>{var t;const n=null===(t=m.value)||void 0===t?void 0:t.getMapper();e&&n&&(n.removeAllClippingPlanes(),e.forEach((e=>n.addClippingPlane(e))),n.modified(),p.value.render())}),{immediate:!0}),{vtkContainerRef:l,viewID:o,active:!1,topLeftLabel:(0,a.Fl)((()=>{var e,t;return null!==(t=null===(e=P.value)||void 0===e?void 0:e.preset.replace(/-/g," "))&&void 0!==t?t:""})),isImageLoading:A,resetCamera:C}}}),Jr=Kr,Yr=(0,C.Z)(Jr,_r,Hr,!1,null,"34f948e5",null),qr=Yr.exports;D()(Yr,{VBtn:V.Z,VIcon:R.Z,VProgressCircular:Lr.Z,VTooltip:M.Z});const Xr={"2D":Ur,"3D":qr};var $r,es=(0,a.aZ)({name:"LayoutGrid",props:{layout:{type:Object,required:!0}},setup(e){const{layout:t}=(0,a.BK)(e),n=gi(),{viewSpecs:i}=(0,r.Jk)(n),o=(0,a.Fl)((()=>t.value.direction===Ee.H?"flex-column":"flex-row")),s=(0,a.Fl)((()=>{const e=i.value;return t.value.items.map((t=>{if("string"===typeof t){const n=e[t];return{type:"view",id:t,component:Xr[n.viewType],props:n.props}}return{type:"layout",...t}}))}));return{items:s,flexFlow:o}}}),ts=es,ns=(0,C.Z)(ts,k,Z,!1,null,"6d50c96d",null),is=ns.exports,as=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"fill-height d-flex flex-column"},[n("div",{attrs:{id:"module-switcher"}},[e.$vuetify.breakpoint.mobile?n("v-btn",{attrs:{icon:"",id:"close-btn"},on:{click:function(t){return e.$emit("close")}}},[n("v-icon",[e._v("mdi-arrow-left")])],1):e._e(),n("v-tabs",{attrs:{id:"module-switcher-tabs","icons-and-text":"","show-arrows":!0},model:{value:e.selectedModuleIndex,callback:function(t){e.selectedModuleIndex=t},expression:"selectedModuleIndex"}},e._l(e.Modules,(function(t){return n("v-tab",{key:t.name,staticClass:"pl-1 pr-1"},[n("div",{staticClass:"tab-content"},[n("span",{staticClass:"mb-0 mt-1 module-text"},[e._v(e._s(t.name))]),n("v-icon",[e._v("mdi-"+e._s(t.icon))])],1)])})),1)],1),n("div",{attrs:{id:"module-container"}},[n("v-tabs-items",{staticClass:"fill-height",attrs:{touchless:""},model:{value:e.selectedModuleIndex,callback:function(t){e.selectedModuleIndex=t},expression:"selectedModuleIndex"}},e._l(e.Modules,(function(t){return n("v-tab-item",{key:t.name,staticClass:"fill-height"},[n(t.component,{directives:[{name:"show",rawName:"v-show",value:e.Modules[e.selectedModuleIndex]===t,expression:"Modules[selectedModuleIndex] === mod"}],key:t.name,tag:"component"})],1)})),1)],1)])},os=[],rs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"mx-2 fill-height",attrs:{id:"data-module"}},[n("div",{attrs:{id:"data-panels"}},[n("v-expansion-panels",{attrs:{multiple:"",accordion:"",value:e.openPanels}},[e.hasAnonymousImages?n("v-expansion-panel",{key:"anonymousImages",on:{change:function(t){return e.handlePanelChange(e.ANONYMOUS_DATA_KEY)}}},[n("v-expansion-panel-header",[n("v-icon",{staticClass:"collection-header-icon"},[e._v("mdi-image")]),n("span",[e._v("Anonymous")])],1),n("v-expansion-panel-content",[n("image-data-browser")],1)],1):e._e(),e._l(e.patients,(function(t){return n("v-expansion-panel",{key:t.key,on:{change:function(n){return e.handlePanelChange(t.key)}}},[n("v-expansion-panel-header",[n("div",{staticClass:"patient-header"},[n("v-icon",{staticClass:"collection-header-icon"},[e._v("mdi-account")]),n("span",{staticClass:"patient-header-name",attrs:{title:t.name}},[e._v(" "+e._s(t.name)+" ")]),n("v-spacer"),n("v-menu",{attrs:{"offset-x":""},scopedSlots:e._u([{key:"activator",fn:function(t){var i=t.on,a=t.attrs;return[n("v-btn",e._g(e._b({staticClass:"mr-3",attrs:{icon:"",small:""},on:{click:function(e){e.stopPropagation()}}},"v-btn",a,!1),i),[n("v-icon",{attrs:{small:""}},[e._v("mdi-dots-vertical")])],1)]}}],null,!0)},[n("v-list",{attrs:{dense:""}},[n("v-list-item",{on:{click:function(n){return n.stopPropagation(),e.deletePatient(t.key)}}},[n("v-list-item-title",[e._v("Delete Patient")])],1)],1)],1)],1)]),n("v-expansion-panel-content",[n("patient-browser",{attrs:{"patient-key":t.key}})],1)],1)})),n("v-expansion-panel",{key:"sampleData",on:{change:function(t){return e.handlePanelChange(e.SAMPLE_DATA_KEY)}}},[n("v-expansion-panel-header",[n("v-icon",{staticClass:"collection-header-icon"},[e._v("mdi-card-bulleted")]),n("span",[e._v("Sample Data")])],1),n("v-expansion-panel-content",[n("sample-data-browser")],1)],1)],2)],1)])},ss=[],ls=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",e._l(e.samples,(function(t){return n("image-list-card",{key:t.name,attrs:{disabled:t.isDownloading||t.isLoaded,title:t.name,"image-url":t.image,"image-size":100},on:{click:function(n){return e.downloadSample(t)}},scopedSlots:e._u([t.isDownloading||t.isLoaded?{key:"image-overlay",fn:function(){return[n("v-row",{staticClass:"fill-height ma-0",attrs:{align:"center",justify:"center"}},[n("v-progress-circular",{attrs:{color:"white",indeterminate:t.indeterminate&&!t.isDone,value:t.progress}},[t.isDone||t.isLoaded?n("v-icon",{attrs:{small:"",color:"white"}},[e._v("mdi-check")]):t.isError?n("v-icon",{attrs:{small:"",color:"white"}},[e._v(" mdi-alert-circle ")]):t.indeterminate?e._e():n("span",{staticClass:"caption text--white"},[e._v(" "+e._s(t.progress)+" ")])],1)],1)]},proxy:!0}:null],null,!0)},[n("div",{staticClass:"body-2 font-weight-bold text-no-wrap text-truncate"},[e._v(" "+e._s(t.name)+" ")]),n("div",{staticClass:"body-2 mt-2"},[e._v(e._s(t.description))])])})),1)},cs=[],us=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("v-hover",{scopedSlots:e._u([{key:"default",fn:function(t){var i=t.hover;return[n("v-card",e._g({class:{"image-list-card-hover":!e.disabled&&i,"image-list-card-active":!e.disabled&&e.active},attrs:{disabled:e.disabled,outlined:"",ripple:!e.disabled}},e.disabled?{}:e.$listeners),[n("v-container",[n("v-row",{staticClass:"flex-nowrap",attrs:{"no-gutters":""}},[e.selectable?n("v-col",{staticClass:"d-flex align-center",attrs:{cols:"1"}},[n("v-checkbox",{key:e.id,attrs:{value:e.inputValue,"input-value":e.value,disabled:e.disabled},on:{click:function(e){e.stopPropagation()},change:e.onChange}})],1):e._e(),n("v-col",{staticClass:"image-container flex-grow-0",style:{maxWidth:e.imageSize+"px"},attrs:{cols:"4"}},[n("v-img",{attrs:{contain:"",height:e.imageSize+"px",width:e.imageSize+"px",src:e.imageUrl}}),n("v-overlay",{attrs:{absolute:"",value:e.$slots["image-overlay"]}},[e._t("image-overlay")],2)],1),n("v-col",{attrs:{cols:7}},[n("div",{staticClass:"ml-2"},[e._t("default")],2)])],1)],1)],1)]}}],null,!0)})},ds=[],As=(0,a.aZ)({name:"ImageListCard",props:{active:Boolean,imageSize:{type:Number,default:80},imageUrl:{type:String},selectable:{type:Boolean,default:!1},id:String,value:Array,inputValue:String,disabled:Boolean},setup(e,{emit:t}){const n=e=>{t("input",e)};return{onChange:n}}}),ps=As,vs=n(9582),ms=n(3486),gs=n(266),fs=n(2118),hs=n(8224),Cs=n(5495),ys=n(2933),ws=n(1713),bs=(0,C.Z)(ps,us,ds,!1,null,"b20fde34",null),Ss=bs.exports;D()(bs,{VCard:vs.Z,VCheckbox:ms.Z,VCol:gs.Z,VContainer:fs.Z,VHover:hs.Z,VImg:Cs.Z,VOverlay:ys.Z,VRow:ws.Z}),function(e){e[e["Pending"]=0]="Pending",e[e["Error"]=1]="Error",e[e["Done"]=2]="Done"}($r||($r={}));var xs=(0,a.aZ)({components:{ImageListCard:Ss},setup(){const e=on(),t=(0,a.qj)({progress:{}}),n=(0,a.qj)({urlToID:{},idToURL:{}}),i=e=>{const t=n.idToURL[e];t&&((0,a.IV)(n.idToURL,e),(0,a.IV)(n.urlToID,t))},o=kt();o.$onAction((({name:e,args:t,after:n})=>{"deleteData"===e&&n((()=>{const[e]=t;i(e)}))}));const r=Lt();async function s(i){const o=e=>{(0,a.t8)(t.progress,i.name,{state:$r.Pending,progress:100*e})};try{o(1/0);const r=await Nt(i.url,i.filename,{progress:o});if(t.progress[i.name].state=$r.Done,r){const[t]=await e.loadFiles([r]);if(null===t||void 0===t?void 0:t.loaded){const o=an(t);if(o){const e="image"===o.type?o.dataID:o.volumeKey;(0,a.t8)(n.idToURL,e,i.url),(0,a.t8)(n.urlToID,i.url,e)}e.setPrimarySelection(o)}}}catch(r){t.progress[i.name].state=$r.Error;const e=_t();e.addError("Failed to load sample data",r)}finally{(0,a.IV)(t.progress,i.name)}}r.$onAction((({name:e,args:t,after:n})=>{"deleteVolume"===e&&n((()=>{const[e]=t;i(e)}))}));const l=(0,a.Fl)((()=>ti.map((e=>{var i,a,o;const r=(null===(i=t.progress[e.name])||void 0===i?void 0:i.state)===$r.Done,s=(null===(a=t.progress[e.name])||void 0===a?void 0:a.state)===$r.Error,l=!!n.urlToID[e.url],c=r||l?100:Math.floor(null===(o=t.progress[e.name])||void 0===o?void 0:o.progress);return{...e,isDownloading:e.name in t.progress,isDone:r,isError:s,isLoaded:l,indeterminate:c===1/0,progress:c}}))));return{samples:l,downloadSample:s}}}),Ps=xs,Is=(0,C.Z)(Ps,ls,cs,!1,null,null,null),Ds=Is.exports;D()(Is,{VIcon:R.Z,VProgressCircular:Lr.Z,VRow:ws.Z});var Vs,Rs,Ms,Es,Bs,ks=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[0===e.images.length?n("div",{staticClass:"text-center"},[e._v("No images loaded")]):e._e(),n("v-container",{directives:[{name:"show",rawName:"v-show",value:e.images.length,expression:"images.length"}],staticClass:"pa-0"},[n("v-row",{attrs:{"no-gutters":"",justify:"space-between"}},[n("v-col",{attrs:{cols:"6","align-self":"center"}},[n("v-checkbox",{staticClass:"ml-3 align-center justify-center",attrs:{indeterminate:e.selectedSome&&!e.selectedAll,label:"Select All"},model:{value:e.selectedAll,callback:function(t){e.selectedAll=t},expression:"selectedAll"}})],1),n("v-col",{staticClass:"d-flex justify-end",attrs:{cols:"6","align-self":"center"}},[n("v-tooltip",{attrs:{left:""},scopedSlots:e._u([{key:"activator",fn:function(t){var i=t.on,a=t.attrs;return[n("v-btn",e._g(e._b({attrs:{icon:"",disabled:!e.selectedSome},on:{click:function(t){return t.stopPropagation(),e.removeSelection.apply(null,arguments)}}},"v-btn",a,!1),i),[n("v-icon",[e._v("mdi-delete")])],1)]}}])},[e._v(" Delete selected ")])],1)],1)],1),n("item-group",{attrs:{value:e.primarySelection,testFunction:e.selectionEquals},on:{change:e.setPrimarySelection}},e._l(e.images,(function(t){return n("groupable-item",{key:t.id,attrs:{value:t.selectionKey},scopedSlots:e._u([{key:"default",fn:function(i){var a=i.active,o=i.select;return[n("image-list-card",{attrs:{selectable:"",active:a,title:t.name,"image-url":(e.thumbnails[t.cacheKey]||{}).imageURI||"","image-size":100,id:t.id,inputValue:t.id},on:{click:o},model:{value:e.selected,callback:function(t){e.selected=t},expression:"selected"}},[n("div",{staticClass:"text-body-2 font-weight-bold text-no-wrap text-truncate"},[e._v(" "+e._s(t.name)+" ")]),n("div",{staticClass:"caption"},[e._v("Dims: ("+e._s(t.dimensions.join(", "))+")")]),n("div",{staticClass:"caption"},[e._v("Spacing: ("+e._s(t.spacing.join(", "))+")")])])]}}],null,!0)})})),1)],1)},Zs=[],Fs={name:"ItemGroup",provide(){return{group:{selectItem:this.selectItem,isSelected:this.isSelected}}},props:{value:{type:null,required:!1},mandatory:{type:Boolean,default:!1},testFunction:{type:Function,required:!1}},model:{prop:"value",event:"change"},data(){return{internalValue:null}},watch:{value(e){e!==this.internalValue&&(this.internalValue=e)}},mounted(){this.internalValue=this.value},render(e){return e("div",{props:this.$attrs,on:this.$listeners},this.$slots.default)},methods:{selectItem(e){this.mandatory&&!e||(this.internalValue=e,this.$emit("change",this.internalValue))},isSelected(e){return null!==this.internalValue&&void 0!==this.internalValue&&(this.testFunction?this.testFunction(e,this.internalValue):e===this.internalValue)}}},Ts=Fs,Os=(0,C.Z)(Ts,Vs,Rs,!1,null,null,null),Ls=Os.exports,zs={name:"GroupableItem",inject:["group"],props:{value:{required:!0}},render(){const e=this.$scopedSlots.default({active:this.group.isSelected(this.value),select:this.select,toggle:this.toggle});return e[0]},methods:{select(){this.group.selectItem(this.value)},toggle(){this.group.isSelected(this.value)?this.group.selectItem(null):this.group.selectItem(this.value)}}},Us=zs,_s=(0,C.Z)(Us,Ms,Es,!1,null,null,null),Hs=_s.exports;function Ws(e,t,n,i,a){const o=new ImageData(t,n),r=new Uint32Array(o.data.buffer),s=255/(a-i);for(let l=0;l<e.length;l+=1){const t=Math.floor((e[l]-i)*s);r[l]=255<<24|t<<16|t<<8|t}return o}function Qs(e,t=2,n=Bs.Middle){const i=e.getPointData().getScalars(),a=i.getData(),o=i.getRange(),r=e.getDimensions();let s,l,c,u=0;if(n===Bs.Middle?u=Math.floor(r[t]/2):n===Bs.Last&&(u=r[t]-1),0===t){s=new a.constructor(r[1]*r[2]),[,l,c]=r;for(let e=0;e<r[2];e++)for(let t=0;t<r[1];t++){const n=u+t*r[0]+e*r[0]*r[1],i=e*r[1]+t;s[i]=a[n]}}else if(1===t){s=new a.constructor(r[0]*r[2]),[l,,c]=r;for(let e=0;e<r[2];e++)for(let t=0;t<r[0];t++){const n=t+u*r[0]+e*r[0]*r[1],i=e*r[0]+t;s[i]=a[n]}}else if(2===t){[l,c]=r;const e=r[0]*r[1],t=u*e;s=Array.isArray(a)?a.slice(t,t+e):a.subarray(t,t+e)}return Ws(s,l,c,o[0],o[1])}function Ns(){const e=document.createElement("canvas"),t=e.getContext("2d"),n=document.createElement("canvas"),i=n.getContext("2d");if(!t||!i)throw new Error("[thumbnailer] Failed to create a 2D context");return{generate(e,t=2,n=Bs.Middle){return Qs(e,t,n)},imageDataToDataURI(a,o,r){e.width=a.width,e.height=a.height,t.putImageData(a,0,0);let{width:s,height:l}=a;return a.width>a.height?(s=o,l*=o/a.width):(l=r,s*=r/a.height),n.width=s,n.height=l,i.clearRect(0,0,s,l),i.scale(s/a.width,l/a.height),i.drawImage(e,0,0),n.toDataURL("image/jpeg")}}}function js(e){const t=(0,a.iH)([]),n=(0,a.iH)(!1),i=(0,a.Fl)((()=>t.value.length>0));return(0,a.YP)(t,(()=>{n.value=t.value.length>0&&t.value.length===e.value.length})),(0,a.YP)(n,(n=>{t.value=n?e.value:[]})),{selected:t,selectedAll:n,selectedSome:i}}function Gs(e){return`image-${e}`}(function(e){e[e["First"]=0]="First",e[e["Middle"]=1]="Middle",e[e["Last"]=2]="Last"})(Bs||(Bs={}));var Ks=(0,a.aZ)({components:{ItemGroup:Ls,GroupableItem:Hs,ImageListCard:Ss},setup(){const e=kt(),t=Lt(),n=on(),i=(0,a.Fl)((()=>n.primarySelection)),o=(0,a.Fl)((()=>e.idList.filter((e=>!(e in t.imageIDToVolumeKey))))),r=(0,a.Fl)((()=>{const{metadata:t}=e;return o.value.map((e=>({id:e,cacheKey:Gs(e),selectionKey:{type:"image",dataID:e},name:t[e].name,dimensions:t[e].dimensions,spacing:[...t[e].spacing].map((e=>e.toFixed(2)))})))})),s=(0,a.qj)({}),l=Ns();(0,a.YP)(o,(t=>{t.forEach((async t=>{const n=Gs(t);if(!(n in s)){const i=e.dataIndex[t],o=l.generate(i),r=l.imageDataToDataURI(o,100,100),c=i.getDimensions(),u=c[0]/c[1];(0,a.t8)(s,n,{imageURI:r,aspectRatio:u})}}));const n=new Set(t.map((e=>Gs(e))));Object.keys(s).forEach((e=>{n.has(e)||(0,a.IV)(s,e)}))}),{immediate:!0,deep:!0});const{selected:c,selectedAll:u,selectedSome:d}=js(o);function A(){c.value.forEach((t=>{e.deleteData(t)})),c.value=[]}return{selected:c,selectedAll:u,selectedSome:d,removeSelection:A,images:r,thumbnails:s,primarySelection:i,selectionEquals:nn,setPrimarySelection:e=>{n.setPrimarySelection(e)}}}}),Js=Ks,Ys=(0,C.Z)(Js,ks,Zs,!1,null,null,null),qs=Ys.exports;D()(Ys,{VBtn:V.Z,VCheckbox:ms.Z,VCol:gs.Z,VContainer:fs.Z,VIcon:R.Z,VRow:ws.Z,VTooltip:M.Z});var Xs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("item-group",{attrs:{value:e.primarySelection,testFunction:e.selectionEquals},on:{change:e.setPrimarySelection}},[n("v-container",{staticClass:"pa-0"},[n("v-row",{staticClass:"mb-2",attrs:{"no-gutters":"",justify:"space-between"}},[n("v-col",{attrs:{cols:"6","align-self":"center"}},[n("v-checkbox",{staticClass:"ml-3 align-center justify-center",attrs:{indeterminate:e.selectedSome&&!e.selectedAll,label:"Select All Studies",dense:"","hide-details":""},model:{value:e.selectedAll,callback:function(t){e.selectedAll=t},expression:"selectedAll"}})],1),n("v-col",{staticClass:"d-flex justify-end mt-2",attrs:{cols:"6","align-self":"center"}},[n("v-tooltip",{attrs:{left:""},scopedSlots:e._u([{key:"activator",fn:function(t){var i=t.on,a=t.attrs;return[n("v-btn",e._g(e._b({attrs:{icon:"",small:"",disabled:!e.selectedSome},on:{click:function(t){return t.stopPropagation(),e.removeSelectedStudies.apply(null,arguments)}}},"v-btn",a,!1),i),[n("v-icon",[e._v("mdi-delete")])],1)]}}])},[e._v(" Delete selected ")])],1)],1)],1),n("v-expansion-panels",{attrs:{id:"patient-data-studies",accordion:"",multiple:"",value:e.openPanels}},e._l(e.studies,(function(t){return n("v-expansion-panel",{key:t.StudyInstanceUID,staticClass:"patient-data-study-panel",on:{change:function(n){return e.handlePanelChange(t.StudyInstanceUID)}}},[n("v-expansion-panel-header",{staticClass:"pl-3 no-select",attrs:{color:"#1976fa0a",title:t.StudyDate}},[n("div",{staticClass:"study-header"},[n("div",{staticClass:"study-header-title"},[n("v-checkbox",{key:t.StudyInstanceUID,attrs:{dense:"",value:t.StudyInstanceUID},on:{click:function(e){e.stopPropagation()}},model:{value:e.selected,callback:function(t){e.selected=t},expression:"selected"}}),n("v-icon",{staticClass:"mb-2"},[e._v("mdi-folder-table")]),n("div",{staticClass:"ml-2 overflow-hidden text-no-wrap"},[n("div",{staticClass:"text-subtitle-2 text-truncate",attrs:{title:t.title}},[e._v(" "+e._s(t.title)+" ")]),t.StudyDescription?n("div",{staticClass:"text-caption text-truncate"},[e._v(" "+e._s(t.StudyDate)+" ")]):e._e()])],1),n("div",{staticClass:"d-flex flex-column align-center justify-end mx-2"},[n("v-tooltip",{attrs:{bottom:""},scopedSlots:e._u([{key:"activator",fn:function(i){var a=i.on;return[n("div",e._g({staticClass:"d-flex flex-row align-center mr-2"},a),[n("v-icon",{attrs:{small:""}},[e._v("mdi-folder-open")]),n("span",{staticClass:"text-caption text--secondary text-no-wrap"},[e._v(" : "+e._s(t.volumeKeys.length)+" ")])],1)]}}],null,!0)},[e._v(" Total series in study ")])],1)])]),n("v-expansion-panel-content",[n("patient-study-volume-browser",{attrs:{"volume-keys":t.volumeKeys}})],1)],1)})),1)],1)},$s=[],el=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("v-container",{staticClass:"pa-0"},[n("v-row",{attrs:{"no-gutters":"",justify:"space-between"}},[n("v-col",{attrs:{cols:"6","align-self":"center"}},[n("v-checkbox",{staticClass:"ml-3 align-center justify-center",attrs:{indeterminate:e.selectedSome&&!e.selectedAll,label:"Select All",dense:"","hide-details":""},model:{value:e.selectedAll,callback:function(t){e.selectedAll=t},expression:"selectedAll"}})],1),n("v-col",{staticClass:"d-flex justify-end mt-2",attrs:{cols:"6","align-self":"center"}},[n("v-tooltip",{attrs:{left:""},scopedSlots:e._u([{key:"activator",fn:function(t){var i=t.on,a=t.attrs;return[n("v-btn",e._g(e._b({attrs:{icon:"",small:"",disabled:!e.selectedSome},on:{click:function(t){return t.stopPropagation(),e.removeSelectedDICOMVolumes.apply(null,arguments)}}},"v-btn",a,!1),i),[n("v-icon",[e._v("mdi-delete")])],1)]}}])},[e._v(" Delete selected ")])],1)],1),n("v-row",{attrs:{"no-gutters":""}},[n("v-col",[n("div",{staticClass:"my-2 volume-list"},e._l(e.volumes,(function(t){return n("groupable-item",{key:t.info.VolumeID,attrs:{value:t.selectionKey},scopedSlots:e._u([{key:"default",fn:function(i){var a=i.active,o=i.select;return[n("v-card",{class:{"volume-card":!0,"volume-card-active":a},attrs:{outlined:"",ripple:"","min-height":"180px","min-width":"180px",title:t.info.SeriesDescription},on:{click:o}},[n("v-row",{staticClass:"pa-0",attrs:{"no-gutters":"",justify:"center"}},[n("div",[n("v-img",{attrs:{contain:"","max-height":"150px","max-width":"150px",src:(e.thumbnailCache||{})[t.cacheKey]||""},scopedSlots:e._u([{key:"placeholder",fn:function(){return[n("v-row",{staticClass:"fill-height ma-0",attrs:{align:"center",justify:"center"}},[n("v-progress-circular",{attrs:{indeterminate:"",color:"grey lighten-5"}})],1)]},proxy:!0}],null,!0)},[n("v-overlay",{staticClass:"thumbnail-overlay",attrs:{absolute:"",value:!0,opacity:"0"}},[n("div",{staticClass:"d-flex flex-column fill-height"},[n("v-row",{attrs:{"no-gutters":"",justify:"end","align-content":"start"}},[n("v-checkbox",{key:t.info.VolumeID,attrs:{value:t.key,dense:""},on:{click:function(e){e.stopPropagation()}},model:{value:e.selected,callback:function(t){e.selected=t},expression:"selected"}})],1),n("v-spacer"),n("v-row",{attrs:{"no-gutters":"",justify:"start",align:"end"}},[n("div",{staticClass:"mb-1 ml-1 text-caption"},[e._v(" ["+e._s(t.info.NumberOfSlices)+"] ")])])],1)])],1)],1)]),n("v-card-text",{staticClass:"text--primary text-caption text-center series-desc mt-n3"},[n("div",{staticClass:"text-ellipsis"},[e._v(" "+e._s(t.info.SeriesDescription||"(no description)")+" ")])])],1)]}}],null,!0)})})),1)])],1)],1)},tl=[];const nl=document.createElement("canvas");function il(e){return`dicom-${e}`}function al(e){const[t,n]=e.size,i=new ImageData(t,n),a=new Uint32Array(i.data.buffer),o=e.data;if(!o)return"";for(let s=0;s<o.length;s+=1){const e=o[s];a[s]=255<<24|e<<16|e<<8|e}nl.width=t,nl.height=n;const r=nl.getContext("2d");return r?(r.putImageData(i,0,0),nl.toDataURL("image/png")):""}async function ol(e,t){if(t in e.volumeInfo){const n=e.volumeInfo[t],i=Math.ceil(Number(n.NumberOfSlices)/2),a=await e.getVolumeSlice(t,i,!0);return a}return null}var rl=(0,a.aZ)({name:"PatientBrowser",props:{volumeKeys:{type:Array,required:!0}},components:{GroupableItem:Hs},setup(e){const{volumeKeys:t}=(0,a.BK)(e),n=Lt(),i=on(),o=(0,a.Fl)((()=>{const{volumeInfo:e}=n;return t.value.map((t=>({key:t,cacheKey:il(t),info:e[t],selectionKey:{type:"dicom",volumeKey:t}})))})),r=(0,a.qj)({});(0,a.YP)(t,(e=>{e.forEach((async e=>{const t=il(e);if(!(t in r))try{const i=await ol(n,e);if(null!==i){const e=al(i);(0,a.t8)(r,t,e)}}catch(i){if(i instanceof Error){const e=_t();e.addError("Failed to generate thumbnails",{details:`${i}. More details can be found in the developer's console.`})}}}));const t=new Set(e.map((e=>il(e))));Object.keys(r).forEach((e=>{t.has(e)||(0,a.IV)(r,e)}))}),{immediate:!0,deep:!0});const{selected:s,selectedAll:l,selectedSome:c}=js(t),u=()=>{s.value.forEach((async e=>{n.deleteVolume(e)})),s.value=[]};return{selected:s,selectedAll:l,selectedSome:c,thumbnailCache:r,volumes:o,removeSelectedDICOMVolumes:u,selectionEquals:nn,setPrimarySelection:e=>{i.setPrimarySelection(e)}}}}),sl=rl,ll=n(4886),cl=n(7162),ul=(0,C.Z)(sl,el,tl,!1,null,"35919dbc",null),dl=ul.exports;function Al(e){const t=(0,a.iH)([]);(0,a.YP)(e,((e,n)=>{t.value=t.value.filter((({key:t})=>e.has(t)));const i=[...e].filter((e=>!(null===n||void 0===n?void 0:n.has(e))));t.value=[...t.value,...i.map((e=>({key:e,isOpen:!0})))]}),{flush:"post",immediate:!0});const n=e=>{const n=t.value.find((({key:t})=>t===e));n.isOpen=!n.isOpen},i=(0,a.Fl)((()=>t.value.map((({isOpen:e},t)=>({isOpen:e,idx:t}))).filter((({isOpen:e})=>e)).map((({idx:e})=>e))));return{handlePanelChange:n,openPanels:i}}D()(ul,{VBtn:V.Z,VCard:vs.Z,VCardText:ll.ZB,VCheckbox:ms.Z,VCol:gs.Z,VContainer:fs.Z,VIcon:R.Z,VImg:Cs.Z,VOverlay:ys.Z,VProgressCircular:Lr.Z,VRow:ws.Z,VSpacer:cl.Z,VTooltip:M.Z});var pl=(0,a.aZ)({name:"PatientBrowser",props:{patientKey:{type:String,required:!0}},components:{ItemGroup:Ls,PatientStudyVolumeBrowser:dl},setup(e){const{patientKey:t}=(0,a.BK)(e),n=(0,a.iH)([]),i=Lt(),o=on(),r=(0,a.Fl)((()=>o.primarySelection)),s=(0,a.Fl)((()=>{const e=t.value,{patientStudies:n,studyInfo:a,studyVolumes:o}=i;return n[e].map((e=>{const t=a[e];return{...t,key:e,title:t.StudyDescription||t.StudyDate||t.StudyInstanceUID,volumeKeys:o[e].sort()}}))})),l=(0,a.Fl)((()=>s.value.map((e=>e.key)))),c=(0,a.Fl)((()=>new Set(l.value))),{handlePanelChange:u,openPanels:d}=Al(c),{selected:A,selectedAll:p,selectedSome:v}=js(l),m=()=>{A.value.forEach((async e=>{i.deleteStudy(e)})),A.value=[]};return{selected:A,selectedAll:p,selectedSome:v,selectedSeries:n,primarySelection:r,removeSelectedStudies:m,studies:s,selectionEquals:nn,setPrimarySelection:e=>{o.setPrimarySelection(e)},openPanels:d,handlePanelChange:u}}}),vl=pl,ml=n(255),gl=n(2348),fl=n(400),hl=n(1214),Cl=(0,C.Z)(vl,Xs,$s,!1,null,"552e9e25",null),yl=Cl.exports;D()(Cl,{VBtn:V.Z,VCheckbox:ms.Z,VCol:gs.Z,VContainer:fs.Z,VExpansionPanel:ml.Z,VExpansionPanelContent:gl.Z,VExpansionPanelHeader:fl.Z,VExpansionPanels:hl.Z,VIcon:R.Z,VRow:ws.Z,VTooltip:M.Z});const wl="sampleData",bl="anonymousData";var Sl=(0,a.aZ)({name:"DataBrowser",components:{SampleDataBrowser:Ds,ImageDataBrowser:qs,PatientBrowser:yl},setup(){const e=Lt(),t=kt(),n=(0,a.Fl)((()=>Object.entries(e.patientInfo).map((([e,t])=>({key:e,name:t.PatientName,info:t}))).sort(((e,t)=>e.name<t.name?-1:1)))),i=(0,a.Fl)((()=>t.idList.filter((t=>!(t in e.imageIDToVolumeKey))).length>0)),o=(0,a.Fl)((()=>new Set([wl,...i.value?[bl]:[],...n.value.map((e=>e.key))]))),{handlePanelChange:r,openPanels:s}=Al(o);return(0,a.YP)(o,((e,t)=>{e.size>t.size&&s.value.includes(0)&&r(wl)})),{openPanels:s,patients:n,deletePatient:e.deletePatient,hasAnonymousImages:i,handlePanelChange:r,SAMPLE_DATA_KEY:wl,ANONYMOUS_DATA_KEY:bl}}}),xl=Sl,Pl=(0,C.Z)(xl,rs,ss,!1,null,"b1dc2080",null),Il=Pl.exports;D()(Pl,{VBtn:V.Z,VExpansionPanel:ml.Z,VExpansionPanelContent:gl.Z,VExpansionPanelHeader:fl.Z,VExpansionPanels:hl.Z,VIcon:R.Z,VList:no.Z,VListItem:io.Z,VListItemTitle:ao.V9,VMenu:oo.Z,VSpacer:cl.Z});var Dl=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"overflow-y-auto mx-2 fill-height"},[e.hasCurrentImage?[n("volume-rendering"),n("v-expansion-panels",{attrs:{multiple:"",accordion:"",value:[1]}},[n("v-expansion-panel",[n("v-expansion-panel-header",[n("v-icon",{staticClass:"flex-grow-0 mr-4"},[e._v("mdi-palette")]),e._v(" Color Presets ")],1),n("v-expansion-panel-content",[n("volume-presets")],1)],1),n("v-expansion-panel",[n("v-expansion-panel-header",[n("v-icon",{staticClass:"flex-grow-0 mr-4"},[e._v("mdi-cube-scan")]),e._v(" Cinematic Rendering ")],1),n("v-expansion-panel-content",[n("volume-properties")],1)],1)],1)]:[n("div",{staticClass:"text-center pt-12 text-subtitle-1"},[e._v("No image selected")])]],2)},Vl=[],Rl=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"mx-2"},[n("div",{ref:"editorContainerRef",staticClass:"mt-4"},[n("div",{ref:"pwfEditorRef"})]),e.cvrParams?n("div",[n("v-slider",{attrs:{label:"Ambient",min:"0",max:"1",step:"0.1",dense:"","hide-details":"","thumb-label":"",value:e.cvrParams.ambient},on:{change:function(t){return e.setCVRParam("ambient",t)}}}),n("v-slider",{attrs:{label:"Diffuse",min:"0",max:"2",step:"0.1",dense:"","hide-details":"","thumb-label":"",value:e.cvrParams.diffuse},on:{change:function(t){return e.setCVRParam("diffuse",t)}}}),n("v-switch",{attrs:{label:"Light follows camera",dense:"","hide-details":"","input-value":e.cvrParams.lightFollowsCamera},on:{change:function(t){return e.setCVRParam("lightFollowsCamera",!!t)}}}),n("v-divider",{staticClass:"my-8"}),n("v-row",{staticClass:"my-4"},[n("v-btn-toggle",{attrs:{mandatory:""},on:{change:e.selectLightingMode},model:{value:e.lightingModel,callback:function(t){e.lightingModel=t},expression:"lightingModel"}},e._l(Object.values(e.LIGHTING_MODELS),(function(t){return n("v-btn",{key:t},[e._v(" "+e._s(t)+" ")])})),1)],1),e.vsbEnabled?n("v-slider",{attrs:{label:"Scatter Blending",min:"0",max:"1",step:"0.05",dense:"","hide-details":"","thumb-label":"",value:e.cvrParams.volumetricScatteringBlending},on:{change:function(t){return e.setCVRParam("volumetricScatteringBlending",t)}}}):e._e(),e.laoEnabled?n("v-slider",{attrs:{label:"LAO Kernel Size",min:"2",max:"10",step:"1",dense:"","hide-details":"","thumb-label":"",value:e.cvrParams.laoKernelSize},on:{change:function(t){return e.setCVRParam("laoKernelSize",t)}}}):e._e(),e.laoEnabled?n("v-slider",{attrs:{label:"LAO Kernel Radius",min:2*e.cvrParams.laoKernelSize,max:2*e.cvrParams.laoKernelSize+10,step:"1",dense:"","hide-details":"","thumb-label":"",value:e.cvrParams.laoKernelRadius},on:{change:function(t){return e.setCVRParam("laoKernelRadius",t)}}}):e._e()],1):e._e()])},Ml=[];const El="3D",Bl={standard:"Standard",hybrid:"Hybrid",lao:"Ambient Occlusion"};var kl=(0,a.aZ)({name:"VolumeRendering",setup(){const e=mi(),{currentImageID:t}=sn(),n=e.getComputedVolumeColorConfig(El,t);(0,a.YP)(n,(()=>{const i=t.value;i&&!n.value&&e.updateVolumeColorConfig(El,i,{})}));const i=(0,a.Fl)((()=>{var e;return null===(e=n.value)||void 0===e?void 0:e.cvr})),o=(n,i)=>{t.value&&e.updateVolumeCVRParameters(El,t.value,{[n]:i})},r=(0,a.Fl)((()=>{var e;return!!(null===(e=i.value)||void 0===e?void 0:e.useLocalAmbientOcclusion)})),s=(0,a.Fl)((()=>{var e;return!!(null===(e=i.value)||void 0===e?void 0:e.useVolumetricScatteringBlending)})),l=(0,a.iH)(2),c=e=>{0===e?(o("useVolumetricScatteringBlending",!1),o("useLocalAmbientOcclusion",!1)):1===e?(o("useVolumetricScatteringBlending",!0),o("useLocalAmbientOcclusion",!1)):2===e&&(o("useVolumetricScatteringBlending",!1),o("useLocalAmbientOcclusion",!0))};return{cvrParams:i,laoEnabled:r,vsbEnabled:s,setCVRParam:o,LIGHTING_MODELS:Bl,selectLightingMode:c,lightingModel:l}}}),Zl=kl,Fl=n(2016),Tl=n(7414),Ol=n(9884),Ll=(0,C.Z)(Zl,Rl,Ml,!1,null,null,null),zl=Ll.exports;D()(Ll,{VBtn:V.Z,VBtnToggle:Fl.Z,VDivider:Or.Z,VRow:ws.Z,VSlider:Tl.Z,VSwitch:Ol.Z});var Ul=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"overflow-hidden"},[n("div",{ref:"editorContainerRef",staticClass:"mt-4 pwf-editor"},[n("div",{ref:"pwfEditorRef"})]),n("div",[n("color-function-slider",{attrs:{dense:"","hide-details":"",min:e.fullMappingRange[0],max:e.fullMappingRange[1],step:e.colorSliderStep,"rgb-points":e.rgbPoints,value:e.mappingRange},on:{input:e.onColorMappingUpdate,change:e.onColorMappingFinalize}})],1)])},_l=[],Hl=n(3999);const Wl={Gaussians:1,Points:2},Ql="-webkit-grab";function Nl(e,t=0,n=256){const i=[...e];i.push([e[0][0],0]),i.push([e[e.length-1][0],0]);const a=[];let o=0,r=i[0],s=i[1],l=(s[1]-r[1])/(s[0]-r[0]);for(let c=0;c<n;c+=1){const e=c/(n-1)-t;if(c<n-1){while(e>s[0]&&o<i.length-2)o+=1,r=i[o],s=i[o+1],l=Math.abs(s[0]-r[0])<1e-8?1/0*Math.sign(s[1]-r[1]):(s[1]-r[1])/(s[0]-r[0]);l===1/0?a.push(1):l===-1/0?a.push(0):a.push(l*(e-r[0])+r[1])}}return a}function jl(e,t){t.classHierarchy.push("vtkPiecewiseWidget");const n={...e};t.pwMode=Wl.Gaussians,t.opacityPoints=[],t.opacityPointShift=0,e.setGaussiansMode=()=>{t.pwMode=Wl.Gaussians},e.setPointsMode=()=>{t.gaussians=[],t.pwMode=Wl.Points},e.isModeGaussians=()=>t.pwMode===Wl.Gaussians,e.isModePoints=()=>t.pwMode===Wl.Points,e.getMode=()=>t.pwMode,e.shiftPosition=(e,n)=>(t.opacityPointShift=n.originalOpacityPointShift+e[0]-n.originalXY[0],!0),e.onHover=(i,a)=>e.isModeGaussians()?n.onHover(i,a):(t.canvas.style.cursor=Ql,!0),e.onClick=(t,i)=>{if(e.isModeGaussians())return n.onClick(t,i)},e.onDown=(i,a)=>{if(e.isModeGaussians())return n.onDown(i,a);t.mouseIsDown||e.invokeAnimation(!0);const o=Hl.ZP.normalizeCoordinates(i,a,t.graphArea);return t.mouseIsDown=!0,t.activeGaussian=-1,t.dragAction={originalXY:o,originalOpacityPointShift:t.opacityPointShift},!0},e.onDrag=(i,a)=>{if(e.isModeGaussians())return n.onDrag(i,a);const o=Hl.ZP.normalizeCoordinates(i,a,t.graphArea);return e.shiftPosition(o,t.dragAction)&&(t.opacities=Nl(t.opacityPoints,t.opacityPointShift),e.invokeOpacityChange(e,!0)),e.modified(),!0},e.setOpacityPoints=(n,i=0)=>{e.isModePoints()&&(t.opacityPoints=n.map((e=>[e[0],e[1]])),t.opacityPointShift=i,t.opacities=Nl(t.opacityPoints,t.opacityPointShift),e.modified())},e.getEffectiveOpacityPoints=()=>t.opacityPoints.map((e=>[e[0]+t.opacityPointShift,e[1]])),e.render=()=>{e.isModePoints()&&(t.activeGaussian=-1,t.selectedGaussian=-1),n.render()}}const Gl={};function Kl(e,t,n={}){Object.assign(t,Gl,n),Hl.ZP.extend(e,t,n),pn.ZP.setGet(e,t,["opacityPoints","opacityPointShift"]),jl(e,t)}const Jl=pn.ZP.newInstance(Kl,"vtkPiecewiseWidget");var Yl={newInstance:Jl,extend:Kl},ql=n(1126),Xl=n(2199);const $l="rgba(128, 128, 128, 0.2)",ec="volview__color-function",tc=`${ec}_middle`;var nc,ic,ac=Xl.Z.extend({name:"color-function-slider",props:{rgbPoints:Array,range:Array},computed:{startBackgroundColor(){if(!this.rgbPoints)return $l;const[e,t,n]=this.rgbPoints.slice(1,4).map((e=>255*e));return`rgb(${e}, ${t}, ${n})`},filledBackgroundColor(){if(!this.rgbPoints)return $l;const e=this.rgbPoints[this.rgbPoints.length-4],t=this.rgbPoints[0],n=e-t,i=[];for(let a=0;a<this.rgbPoints.length;a+=4){const[e,o,r]=[255*this.rgbPoints[a+1],255*this.rgbPoints[a+2],255*this.rgbPoints[a+3]],s=(this.rgbPoints[a]-t)/n*100;i.push(`rgba(${e}, ${o}, ${r}) ${s.toFixed(2)}%`)}return`linear-gradient(to right, ${i.join(", ")})`},endBackgroundColor(){if(!this.rgbPoints)return $l;const e=this.rgbPoints.length,[t,n,i]=this.rgbPoints.slice(e-3).map((e=>255*e));return`rgb(${t}, ${n}, ${i})`}},methods:{onSliderMouseDown(e){e.target.classList.contains(tc)?this._middleDragStart=this.parseMouseMove(e):this._middleDragStart=null,Xl.Z.options.methods.onSliderMouseDown.call(this,e)},onSliderClick(){},onMouseMove(e){const t=this.parseMouseMove(e);if("mousemove"===e.type&&(this.thumbPressed=!0),null!=this._middleDragStart){const e=t-this._middleDragStart;this.applyRangeDelta(e)}else null===this.activeThumb&&(this.activeThumb=this.getIndexOfClosestValue(this.internalValue,t)),this.setInternalValue(t)},genTrackContainer(){const e=[],t=this.isDisabled?10:0,n=[{class:`v-slider__track-background ${ec}`,styles:[0,this.inputWidth[0],0,-t],extraStyles:{background:this.startBackgroundColor}},{class:`v-slider__track-background ${ec} ${tc}`,styles:[this.inputWidth[0],Math.abs(this.inputWidth[1]-this.inputWidth[0]),t,-2*t],extraStyles:{background:this.filledBackgroundColor}},{class:`v-slider__track-background ${ec}`,styles:[this.inputWidth[1],Math.abs(100-this.inputWidth[1]),t,-t],extraStyles:{background:this.endBackgroundColor}}];return this.$vuetify.rtl&&n.reverse(),e.push(...n.map((e=>this.$createElement("div",{...this.setBackgroundColor(e.color,{staticClass:e.class,style:{...this.getTrackStyle(...e.styles),...e.extraStyles}}),on:e.events})))),this.$createElement("div",{staticClass:"v-slider__track-container",ref:"track"},e)},applyRangeDelta(e){let[t,n]=this.oldValue;t+e<this.min?(n-=t-this.min,t=this.min):n+e>this.max?(t+=this.max-n,n=this.max):(t+=e,n+=e),this.internalValue=[t,n]}}}),oc=ac,rc=(0,C.Z)(oc,nc,ic,!1,null,"1ab874a0",null),sc=rc.exports,lc=n(6818),cc=n(8740),uc=n(4790),dc=n(7433);function Ac(){const e=cc.ZP.newInstance(),t=uc.ZP.newInstance(),n=e.getProperty(),i=ql.ZP.newInstance(),a=dc.ZP.newInstance();return n.setRGBTransferFunction(0,i),n.setScalarOpacity(0,a),e.setMapper(t),{actor:e,mapper:t,property:n,cfun:i,ofun:a}}function pc(e,t,n){const i=n.getPointData().getScalars(),a=i.getRange(),o=.7*Math.sqrt(n.getSpacing().map((e=>e*e)).reduce(((e,t)=>e+t),0));t.setSampleDistance(o*2**(.4*3-1.5)),e.setScalarOpacityUnitDistance(0,(0,Pn.g8)(n.getBounds())/Math.max(...n.getDimensions())),e.setGradientOpacityMinimumValue(0,0),e.setGradientOpacityMaximumValue(0,.05*(a[1]-a[0])),e.setShade(!0),e.setUseGradientOpacity(0,!0),e.setGradientOpacityMinimumOpacity(0,0),e.setGradientOpacityMaximumOpacity(0,1),e.setAmbient(.2),e.setDiffuse(.7),e.setSpecular(.3),e.setSpecularPower(8)}function vc(e){const t=document.createElement("div");t.style.width=`${e}px`,t.style.height=`${e}px`;const n=lc.ZP.newInstance({listenWindowResize:!1,background:[.2,.3,.4]});n.setContainer(t);const i=Ac(),{actor:a,mapper:o}=i,r=n.getRenderer(),s=Re.Z.newInstance({piecewiseFunction:i.ofun}),l=Wr.Z.newInstance({lookupTable:i.cfun});return{scene:n,pipeline:i,opacityFuncProxy:s,colorTransferFuncProxy:l,setInputImage(e){e?(o.setInputData(e),pc(a.getProperty(),o,e),r.hasViewProp(a)||r.addVolume(a)):r.removeVolume(a)},resetCameraWithOrientation(e,t){const n=o.getInputData();if(n){const i=r.getActiveCamera(),a=n.getBounds(),o=[(a[0]+a[1])/2,(a[2]+a[3])/2,(a[4]+a[5])/2],s=z.clone(o);z.sub(s,s,e),i.setFocalPoint(...o),i.setPosition(...s),i.setDirectionOfProjection(...e),i.setViewUp(...t),r.resetCamera(),r.updateLightsGeometryToFollowCamera()}}}}function mc(e,t,n){e.setDataRange(...t);const i=Fn.Z.getPresetByName(n);if(i.OpacityPoints){const n=i.OpacityPoints,a=[];for(let e=0;e<n.length;e+=2)a.push([n[e],n[e+1]]);const[o,r]=t,s=r-o,l=a.map((([e,t])=>[(e-o)/s,t]));e.setMode(Re.Z.Mode.Points),e.setPoints(l)}else e.setMode(Re.Z.Mode.Gaussians),e.setGaussians(Re.Z.Defaults.Gaussians)}function gc(e){const t=(0,a.qj)({}),n=vc(e),i=(0,a.iH)({}),{currentImageMetadata:o,currentImageID:r,currentImageData:s}=sn(),{cameraDirVec:l,cameraUpVec:c}=ln(qn[Yn.Three].props.viewDirection,qn[Yn.Three].props.viewUp,o);let u=Symbol("interrupt");async function d(e,i){const o=Symbol("interrupt");u=o,n.setInputImage(i);const s=i.getPointData().getScalars().getRange();async function d(i){if(u!==o)return;if(e!==r.value)return;if(e in t||(0,a.t8)(t,e,{}),i in t[e])return;const d=Qn(i);mc(n.opacityFuncProxy,d||s,i),n.colorTransferFuncProxy.setMode(Wr.Z.Mode.Preset),n.colorTransferFuncProxy.setPresetName(i);const A=Wn(i);n.colorTransferFuncProxy.setDataRange(...A||s),n.resetCameraWithOrientation(l.value,c.value);const p=n.scene.getRenderWindow();p.render();const v=await p.captureImages()[0];v&&(0,a.t8)(t[e],i,v)}li.reduce(((e,t)=>e.then((()=>d(t)))),Promise.resolve())}(0,a.YP)(t,(()=>{r.value&&(i.value=t[r.value])}),{deep:!0}),(0,a.Jd)((()=>{u=Symbol("unmount")})),(0,a.YP)(r,(e=>{e&&d(e,s.value)}),{immediate:!0});const A=kt();return A.$onAction((({name:e,args:n,after:i})=>{if("deleteData"===e){const[e]=n;e in t&&i((()=>(0,a.IV)(t,e)))}})),{currentThumbnails:i}}const fc=250,hc=150,Cc=80,yc="3D";var wc=(0,a.aZ)({name:"VolumeRendering",components:{ColorFunctionSlider:sc},setup(){const e=mi(),t=(0,a.iH)(null),n=(0,a.iH)(null);let i=!1;const{currentImageID:o,currentImageData:r}=sn(),s=e.getComputedVolumeColorConfig(yc,o);(0,a.YP)(s,(()=>{const t=o.value;t&&!s.value&&e.updateVolumeColorConfig(yc,t,{})}));const l=(0,a.Fl)((()=>{var e;return null===(e=s.value)||void 0===e?void 0:e.transferFunction})),c=(0,a.Fl)((()=>{var e;return null===(e=s.value)||void 0===e?void 0:e.opacityFunction})),u=Yl.newInstance({numberOfBins:256,size:[fc,hc]});u.updateStyle({backgroundColor:"rgba(255, 255, 255, 0.6)",histogramColor:"rgba(100, 100, 100, 0.5)",strokeColor:"rgb(0, 0, 0)",activeColor:"rgb(255, 255, 255)",handleColor:"rgb(50, 150, 50)",buttonDisableFillColor:"rgba(255, 255, 255, 0.5)",buttonDisableStrokeColor:"rgba(0, 0, 0, 0.5)",buttonStrokeColor:"rgba(0, 0, 0, 1)",buttonFillColor:"rgba(255, 255, 255, 1)",strokeWidth:2,activeStrokeWidth:3,buttonStrokeWidth:1.5,handleWidth:3,iconSize:0,padding:10});const d=ql.ZP.newInstance();u.setColorTransferFunction(d);const A=[];function p(){var t;if(i||!o.value)return;i=!0;const{mode:n}=null!==(t=c.value)&&void 0!==t?t:{};n===Re.Z.Mode.Gaussians?e.updateVolumeOpacityFunction(yc,o.value,{mode:n,gaussians:u.getGaussians()}):n===Re.Z.Mode.Points&&e.updateVolumeOpacityFunction(yc,o.value,{mode:n,shift:u.getOpacityPointShift()}),u.render(),i=!1}(0,a.Jd)((()=>{while(A.length)A.pop().unsubscribe()}));const v=re(u.onOpacityChange);v(p);const{viewProxy:m}=Wo(yc,Po.Volume);let g=!1;const f=()=>{g||(g=!0,m.value.getInteractor().requestAnimation(u))},h=()=>{g=!1,m.value.getInteractor().cancelAnimation(u,!0)},C=re(u.onAnimation);C((e=>{e?f():h()})),(0,a.Jd)((()=>{h()})),te(t,(e=>{const{width:t}=e.contentRect;t>0&&u.setSize(t,hc),u.render()})),(0,a.m0)((()=>{n.value&&(u.setContainer(n.value),u.bindMouseListeners())})),(0,a.Jd)((()=>{u.unbindMouseListeners(),u.setContainer(null)})),(0,a.YP)(r,(e=>{if(e){const t=e.getPointData().getScalars();u.setDataArray(t.getData()),u.render()}}),{immediate:!0}),(0,a.YP)(l,(e=>{if(e){const{preset:t,mappingRange:n}=e,i=Fn.Z.getPresetByName(t);d.applyColorMap(i),d.setMappingRange(...n),d.modified()}}),{immediate:!0});const y=re(d.onModified);y((()=>u.render())),(0,a.YP)(c,(e=>{if(e)if(e.mode===Re.Z.Mode.Gaussians)u.setGaussiansMode(),u.setGaussians(e.gaussians);else if(e.mode===Re.Z.Mode.Points){u.setPointsMode();const t=_n(e.preset,e.mappingRange,0);u.setOpacityPoints(t,e.shift)}}),{immediate:!0});const{currentThumbnails:w}=gc(Cc),b=(0,a.Fl)((()=>{var e;return(null===(e=l.value)||void 0===e?void 0:e.preset)||null})),S=(0,a.Fl)((()=>!!r.value)),x=(0,a.Fl)((()=>{const e=r.value;return e?e.getPointData().getScalars().getRange():[0,1]})),P=(0,a.Fl)((()=>Wn(b.value||"")||x.value)),I=t=>{o.value&&e.setVolumeColorPreset(yc,o.value,t)},D=(0,a.Fl)((()=>{var e;return null===(e=Fn.Z.getPresetByName(l.value.preset))||void 0===e?void 0:e.RGBPoints})),V=t=>{var n;const{mappingRange:i}=null!==(n=l.value)&&void 0!==n?n:{};o.value&&i&&(Math.abs(t[0]-i[0])>1e-6||Math.abs(t[1]-i[1])>1e-6)&&e.updateVolumeColorTransferFunction(yc,o.value,{mappingRange:t})},R=e=>{f(),V(e)},M=()=>{h()};return{editorContainerRef:t,pwfEditorRef:n,thumbnails:w,hasCurrentImage:S,preset:b,fullMappingRange:P,mappingRange:(0,a.Fl)((()=>l.value.mappingRange)),colorSliderStep:(0,a.Fl)((()=>{const[e,t]=x.value,n=t-e,i=Math.min(1,n/256);return i>1?Math.round(i):i})),presetList:li,size:Cc,rgbPoints:D,selectPreset:I,onColorMappingUpdate:R,onColorMappingFinalize:M}}}),bc=wc,Sc=(0,C.Z)(bc,Ul,_l,!1,null,"195bbede",null),xc=Sc.exports,Pc=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"overflow-x-visible mx-2"},[n("item-group",{staticClass:"container",attrs:{value:e.preset},on:{change:e.selectPreset}},[n("v-row",{attrs:{"no-gutters":"",justify:"center"}},e._l(e.presetList,(function(t){return n("groupable-item",{key:t,attrs:{value:t},scopedSlots:e._u([{key:"default",fn:function(i){var a=i.active,o=i.select;return[n("v-col",{class:{"thumbnail-container":!0,blue:a},attrs:{cols:"4"},on:{click:o}},[n("v-img",{attrs:{src:e.thumbnails[t]||"",contain:"","aspect-ratio":"1"}},[n("v-overlay",{staticClass:"thumbnail-overlay",attrs:{absolute:"",value:!0,opacity:"0.3"}},[e._v(" "+e._s(t.replace(/-/g," "))+" ")])],1)],1)]}}],null,!0)})})),1)],1)],1)},Ic=[];const Dc=80,Vc="3D";var Rc=(0,a.aZ)({name:"VolumePresets",components:{ItemGroup:Ls,GroupableItem:Hs},setup(){const e=mi(),{currentImageID:t,currentImageData:n}=sn(),i=e.getComputedVolumeColorConfig(Vc,t);(0,a.YP)(i,(()=>{const n=t.value;n&&!i.value&&e.updateVolumeColorConfig(Vc,n,{})}));const o=(0,a.Fl)((()=>{var e;return null===(e=i.value)||void 0===e?void 0:e.transferFunction})),{currentThumbnails:r}=gc(Dc),s=(0,a.Fl)((()=>{var e;return(null===(e=o.value)||void 0===e?void 0:e.preset)||null})),l=(0,a.Fl)((()=>!!n.value)),c=(0,a.Fl)((()=>{const e=n.value;return e?e.getPointData().getScalars().getRange():[0,1]})),u=(0,a.Fl)((()=>Wn(s.value||"")||c.value)),d=n=>{t.value&&e.setVolumeColorPreset(Vc,t.value,n)},A=(0,a.Fl)((()=>{var e;return null===(e=Fn.Z.getPresetByName(o.value.preset))||void 0===e?void 0:e.RGBPoints})),p=n=>{var i;const{mappingRange:a}=null!==(i=o.value)&&void 0!==i?i:{};t.value&&a&&(Math.abs(n[0]-a[0])>1e-6||Math.abs(n[1]-a[1])>1e-6)&&e.updateVolumeColorTransferFunction(Vc,t.value,{mappingRange:n})};return{thumbnails:r,hasCurrentImage:l,preset:s,fullMappingRange:u,mappingRange:(0,a.Fl)((()=>o.value.mappingRange)),presetList:li,size:Dc,rgbPoints:A,selectPreset:d,updateColorMappingRange:p}}}),Mc=Rc,Ec=(0,C.Z)(Mc,Pc,Ic,!1,null,"199b2ff4",null),Bc=Ec.exports;D()(Ec,{VCol:gs.Z,VImg:Cs.Z,VOverlay:ys.Z,VRow:ws.Z});var kc=(0,a.aZ)({components:{VolumeRendering:xc,VolumePresets:Bc,VolumeProperties:zl},setup(){const{currentImageData:e}=sn(),t=(0,a.Fl)((()=>!!e.value));return{hasCurrentImage:t}}}),Zc=kc,Fc=(0,C.Z)(Zc,Dl,Vl,!1,null,null,null),Tc=Fc.exports;D()(Fc,{VExpansionPanel:ml.Z,VExpansionPanelContent:gl.Z,VExpansionPanelHeader:fl.Z,VExpansionPanels:hl.Z,VIcon:R.Z});var Oc=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"overflow-y-auto mx-2 fill-height"},[n("v-list",{attrs:{dense:""}},[n("v-subheader",{staticClass:"annot-subheader"},[e._v("Measurements")]),n("measurements-list"),n("v-subheader",{staticClass:"annot-subheader"},[e._v("Labelmaps")]),n("labelmap-list")],1)],1)},Lc=[],zc=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.measurements.length?n("v-list",{attrs:{dense:""}},e._l(e.measurements,(function(t){return n("v-list-item",{key:t.id,attrs:{"two-line":""}},["ruler"===t.type?[n("v-menu",{attrs:{"offset-x":"","close-on-content-click":!1},scopedSlots:e._u([{key:"activator",fn:function(i){var a=i.on,o=i.attrs;return[n("div",e._g(e._b({staticClass:"color-dot clickable mr-3",style:{backgroundColor:t.data.color}},"div",o,!1),a))]}}],null,!0)},[n("v-color-picker",{attrs:{value:t.data.color,"hide-inputs":""},on:{input:function(n){return e.updateColor(t.type,t.id,n)}}})],1),n("v-list-item-content",[n("v-list-item-title",[e._v("Ruler (ID = "+e._s(t.id)+")")]),n("v-list-item-subtitle",[e._v(" Length: "+e._s(t.data.length.toFixed(2))+"mm ")])],1),n("v-list-item-action",[n("v-row",{attrs:{"no-gutters":""}},[n("v-tooltip",{attrs:{top:""},scopedSlots:e._u([{key:"activator",fn:function(i){var a=i.on;return[n("v-btn",e._g({staticClass:"mr-2",attrs:{icon:""},on:{click:function(n){return e.jumpTo(t.type,t.id)}}},a),[n("v-icon",[e._v("mdi-target")])],1)]}}],null,!0)},[e._v(" Reveal slice ")]),n("v-tooltip",{attrs:{top:""},scopedSlots:e._u([{key:"activator",fn:function(i){var a=i.on;return[n("v-btn",e._g({attrs:{icon:""},on:{click:function(n){return e.remove(t.type,t.id)}}},a),[n("v-icon",[e._v("mdi-delete")])],1)]}}],null,!0)},[e._v(" Delete ")])],1)],1)]:e._e()],2)})),1):n("div",{staticClass:"caption empty-state"},[e._v("No measurements yet")])},Uc=[],_c=(0,a.aZ)({name:"MeasurementsList",setup(){const e=Qi(),{currentImageID:t}=sn(),n=(0,a.Fl)((()=>{const n=t.value;return e.rulerIDs.map((t=>{const n=e.rulers[t];return{id:t,type:"ruler",imageID:n.imageID,data:{length:e.lengthByID[t],color:n.color}}})).filter((e=>e.imageID===n))}));function i(t,n){"ruler"===t&&e.removeRuler(n)}function o(t,n){"ruler"===t&&e.jumpToRuler(n)}function r(t,n,i){"ruler"===t&&e.updateRuler(n,{color:i})}return{measurements:n,remove:i,jumpTo:o,updateColor:r}}}),Hc=_c,Wc=n(3422),Qc=n(5187),Nc=(0,C.Z)(Hc,zc,Uc,!1,null,"503d9874",null),jc=Nc.exports;D()(Nc,{VBtn:V.Z,VColorPicker:Wc.Z,VIcon:R.Z,VList:no.Z,VListItem:io.Z,VListItemAction:Qc.Z,VListItemContent:ao.km,VListItemSubtitle:ao.oZ,VListItemTitle:ao.V9,VMenu:oo.Z,VRow:ws.Z,VTooltip:M.Z});var Gc=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.labelmaps.length?n("v-list",{attrs:{dense:""}},e._l(e.labelmaps,(function(t){return n("v-list-item",{key:t.id,attrs:{"two-line":""}},[n("v-list-item-content",[n("v-list-item-title",[e._v("Labelmap (ID = "+e._s(t.id)+")")])],1)],1)})),1):n("div",{staticClass:"caption empty-state"},[e._v("No labelmaps yet")])},Kc=[],Jc=(0,a.aZ)({name:"LabelmapList",setup(){const e=Ti(),t=(0,a.Fl)((()=>e.idList.map((e=>({id:e})))));return{labelmaps:t}}}),Yc=Jc,qc=(0,C.Z)(Yc,Gc,Kc,!1,null,"cf8d15aa",null),Xc=qc.exports;D()(qc,{VList:no.Z,VListItem:io.Z,VListItemContent:ao.km,VListItemTitle:ao.V9});var $c=(0,a.aZ)({components:{MeasurementsList:jc,LabelmapList:Xc},setup(){}}),eu=$c,tu=n(2540),nu=(0,C.Z)(eu,Oc,Lc,!1,null,"7729a320",null),iu=nu.exports;D()(nu,{VList:no.Z,VSubheader:tu.Z});const au=[{name:"Data",icon:"database",component:Il},{name:"Annotations",icon:"pencil",component:iu},{name:"Rendering",icon:"cube",component:Tc}];var ou=(0,a.aZ)({name:"ModulePanel",setup(){const e=(0,a.iH)(0);return{selectedModuleIndex:e,Modules:au}}}),ru=ou,su=n(626),lu=n(2165),cu=n(7771),uu=n(5085),du=(0,C.Z)(ru,as,os,!1,null,"0f9521c0",null),Au=du.exports;D()(du,{VBtn:V.Z,VIcon:R.Z,VTab:su.Z,VTabItem:lu.Z,VTabs:cu.Z,VTabsItems:uu.Z});var pu=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",e._g(e._b({on:{dragover:function(t){return t.preventDefault(),e.onDragOver.apply(null,arguments)},dragleave:e.onDragLeave,drop:function(t){return t.preventDefault(),e.onDrop.apply(null,arguments)}}},"div",e.$attrs,!1),e.$listeners),[e._t("default",null,{dragHover:e.dragHover})],2)},vu=[];async function mu(e){const t=e.createReader(),n=[];let i=[];do{i=await new Promise(((e,n)=>{t.readEntries(e,n)})),n.push(...i)}while(i.length);return n}async function gu(e){return new Promise(((t,n)=>{e.file(t,n)}))}async function fu(e){const t=[...e],n=[];while(t.length){const e=t.shift();e.isFile?n.push(e):t.push(...await mu(e))}return Promise.all(n.map(gu))}var hu={name:"DragAndDrop",props:{enabled:Boolean},data(){return{dragHover:!1}},methods:{onDragOver(e){if(this.enabled){e.preventDefault();const{types:t}=e.dataTransfer;(t&&t instanceof Array?-1!==t.indexOf("Files"):"Files"in t)&&(this.dragHover=!0,null!==this.dragTimeout&&(window.clearTimeout(this.dragTimeout),this.dragTimeout=null))}},onDragLeave(){this.enabled&&(this.dragTimeout=window.setTimeout((()=>{this.dragHover=!1,this.dragTimeout=null}),50))},async onDrop(e){if(this.enabled)if(this.dragHover=!1,e.dataTransfer.items){const t=[...e.dataTransfer.items].map((e=>{const t=e.webkitGetAsEntry||e.getAsEntry;return t.call(e)})),n=await fu(t);this.$emit("drop",n)}else this.$emit("drop",Array.from(e.dataTransfer.files))}},created(){this.dragTimeout=null}},Cu=hu,yu=(0,C.Z)(Cu,pu,vu,!1,null,null,null),wu=yu.exports,bu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("v-card",[i("v-card-title",{staticClass:"d-flex flex-row justify-center"},[i("vol-view-full-logo")],1),i("v-card-text",[i("p",{attrs:{align:"center"}},[i("img",{staticStyle:{width:"200px"},attrs:{src:n(6882),alt:"Head and neck CT rendering",align:"center"}}),i("br")]),i("p",[i("a",{attrs:{rel:"noopener noreferrer",target:"_blank",href:"https://volview.kitware.com/"}},[e._v(" VolView ")]),e._v(" is an open-source web application developed at "),i("a",{attrs:{rel:"noopener noreferrer",target:"_blank",href:"https://kitware.com/"}},[e._v(" Kitware ")]),e._v(" for visualizing and annotating medical images. It key features include: ")]),i("ul",[i("li",[e._v("Fast: Drag-and-drop DICOM files for quick viewing")]),i("li",[e._v(" Beautiful: Cinematic volume rendering to generate high-quality 3D visualizations ")]),i("li",[e._v(" Friendly: Familiar radiological image visualization and annotation tools ")]),i("li",[e._v(" Secure: Your data stays on your machine. No cloud services or data servers are used. ")])]),i("br"),e._v(" VolView is freely available for research, educational, and commercial applications. It is built using a variety of open-source toolks created by Kitware, such as "),i("a",{attrs:{rel:"noopener noreferrer",target:"_blank",href:"https://github.com/InsightSoftwareConsortium/itk-wasm/"}},[e._v(" itk-wasm ")]),e._v(" for DICOM I/O and image processing, and "),i("a",{attrs:{rel:"noopener noreferrer",target:"_blank",href:"https://github.com/Kitware/vtk-js"}},[e._v(" vtk.js ")]),e._v(" for in-browser scientific visualization. "),i("br"),i("br"),e._v(" Want help customizing VolView or creating a new web-based visualization application? "),i("a",{attrs:{"rel-":"noopener noreferrer",target:"_blank",href:"https://www.kitware.com/contact/project/"}},[e._v("Contact Kitware!")]),i("br"),i("br"),e._v(" VolView source code: "),i("ul",[i("li",[i("a",{attrs:{rel:"noopener noreferrer",target:"_blank",href:"https://github.com/Kitware/VolView"}},[e._v(" https://github.com/Kitware/VolView ")])])]),i("br"),e._v(" VolView bug reports and feature requests: "),i("ul",[i("li",[i("a",{attrs:{rel:"noopener noreferrer",target:"_blank",href:"https://github.com/Kitware/VolView/issues"}},[e._v(" https://github.com/Kitware/VolView/issues ")])])]),i("br"),e._v(" This work was funded, in part, by the NIH via NIBIB and NIGMS R01EB021396, NIBIB R01EB014955, NCI R01CA220681, and NINDS R42NS086295 "),i("br"),i("br"),e._v(" Sample data provided by the following sources: "),i("ul",[i("li",[e._v(' PROSTATEx Challenge Data: Geert Litjens, Oscar Debats, Jelle Barentsz, Nico Karssemeijer, and Henkjan Huisman. "ProstateX Challenge data", The Cancer Imaging Archive (2017). DOI: 10.7937/K9TCIA.2017.MURS5CL ('),i("a",{attrs:{rel:"noopener noreferrer",target:"_blank",href:"https://wiki.cancerimagingarchive.net/pages/viewpage.action?pageId=23691656"}},[e._v("TCIA")]),e._v(") ")]),i("li",[e._v(' MRA Head and Neck: Test case 98890234 from the "Patient Contributed Image Repository" ('),i("a",{attrs:{rel:"noopener noreferrer",target:"_blank",href:"http://www.pcir.org/researchers/98890234_20030505_MR.html"}},[e._v("PCIR.org")]),e._v(") ")]),i("li",[e._v(" 3D ultrasound of a fetus: Sample data from "),i("a",{attrs:{rel:"noopener noreferrer",target:"_blank",href:"http://tomovision.comi"}},[e._v("tomovision.com")])])])])],1)},Su=[],xu=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("svg",{attrs:{width:"362",height:"46",viewBox:"0 0 362 46",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[n("g",{attrs:{"clip-path":"url(#clip0_137_135)"}},[n("path",{attrs:{d:"M217.55 26.6132C217.498 26.6912 217.447 26.7951 217.37 26.8731C216.06 28.64 213.364 29.3676 210 28.8999C209.846 28.8739 209.692 28.8479 209.537 28.8219C207.509 28.4841 205.3 27.7306 203.092 26.6132C201.782 25.9377 200.472 25.1062 199.214 24.1447C197.853 23.1054 196.621 21.988 195.568 20.7928C193.898 18.9479 192.666 16.9991 191.87 15.1282C190.56 12.0361 190.56 9.28175 191.844 7.48883C193.154 5.7219 195.722 5.04631 198.932 5.54001C200.524 5.77387 202.27 6.31954 204.068 7.12505C205.84 7.93057 207.663 8.99592 209.435 10.3471C212.979 13.0235 215.649 16.2715 217.087 19.3377C218.474 22.2479 218.654 24.8463 217.55 26.6132Z",fill:"#3EAE2B"}}),n("path",{attrs:{d:"M217.55 26.6132C217.498 26.6912 217.447 26.7951 217.37 26.8731C216.06 28.64 213.364 29.3676 210 28.8998C209.846 28.8739 209.692 28.8479 209.537 28.8219C207.663 28.4321 205.506 27.7306 203.092 26.6132C201.782 25.9376 200.473 25.1061 199.214 24.1447C197.853 23.1054 196.621 21.988 195.568 20.7928C193 16.5054 193.539 11.1786 195.08 9.48961C196.954 7.41087 201.243 6.94315 207.945 11.4904C213.852 15.492 218.089 23.2613 217.55 26.6132Z",fill:"black","fill-opacity":"0.15"}}),n("path",{attrs:{d:"M214.442 22.2479C214.442 22.7416 214.34 23.1833 214.16 23.5731C214.108 23.703 214.031 23.8329 213.929 23.9628C213.518 24.5345 212.85 24.8983 211.951 25.0801C211.053 25.262 209.974 25.2101 208.767 24.9762C206.353 24.5085 203.58 23.2353 201.14 21.4164C201.115 21.3904 201.063 21.3644 201.037 21.3384C198.675 19.5195 196.877 17.3109 195.876 15.2581C194.849 13.1534 194.772 11.3085 195.619 10.1652C196.441 9.02188 198.213 8.68409 200.498 9.1518C202.784 9.61952 205.429 10.8927 207.843 12.7376C210.257 14.5825 212.26 16.8172 213.415 18.9219C214.108 20.1431 214.442 21.2864 214.442 22.2479Z",fill:"#3EAE2B"}}),n("path",{attrs:{d:"M214.16 23.5731C214.108 23.7031 214.031 23.833 213.929 23.9629C213.518 24.5346 212.85 24.8983 211.951 25.0802C211.053 25.2621 209.974 25.2102 208.767 24.9763C206.353 24.5086 203.58 23.2353 201.14 21.4165C201.114 21.3905 201.063 21.3645 201.037 21.3385C198.187 18.4542 198.059 13.855 199.214 12.5558C200.524 11.3865 202.835 11.4125 207.072 14.2708C210.616 16.6873 213.877 21.1826 214.16 23.5731Z",fill:"black","fill-opacity":"0.15"}}),n("path",{attrs:{d:"M210.616 21.4944C210.436 21.7282 210.128 21.8841 209.666 21.9621C209.204 22.0141 208.613 21.9881 207.92 21.8062C206.559 21.4684 204.915 20.6889 203.374 19.5196C201.834 18.3503 200.652 17.0251 199.985 15.8038C199.651 15.2062 199.471 14.6605 199.394 14.1928C199.343 13.7251 199.42 13.4133 199.599 13.1794C199.779 12.9456 200.062 12.7637 200.524 12.7117C200.96 12.6597 201.525 12.6857 202.193 12.8416C202.835 12.9975 203.58 13.2834 204.324 13.6731C205.069 14.0629 205.865 14.5566 206.61 15.1542C208.151 16.3235 209.383 17.6487 210.102 18.844C210.462 19.4416 210.667 19.9873 210.744 20.455C210.847 20.9487 210.77 21.2865 210.616 21.4944Z",fill:"#3EAE2B"}}),n("path",{attrs:{d:"M211.309 21.8061C211.078 22.4038 210.847 22.8455 210.462 23.3912C208.151 26.5093 203.323 26.951 199.933 24.3786C196.543 21.8061 195.67 16.999 197.956 13.8809C198.418 13.3093 198.752 12.9195 199.291 12.4778C199.188 12.5557 199.111 12.6337 199.034 12.7376C198.701 13.1794 198.624 13.725 198.701 14.2967C198.778 14.8683 199.009 15.5179 199.368 16.1675C200.087 17.4668 201.346 18.8959 202.963 20.1172C204.581 21.3384 206.302 22.1699 207.791 22.5077C208.536 22.6896 209.229 22.7416 209.794 22.6636C210.385 22.5857 210.898 22.3518 211.232 21.9101C211.258 21.9101 211.284 21.8581 211.309 21.8061Z",fill:"#0068C7"}}),n("path",{attrs:{d:"M214.879 24.0148C214.571 24.9502 213.441 26.6652 212.747 27.4447C209.101 32.3558 201.448 33.2132 195.953 29.0558C190.483 24.9762 189.482 16.6873 193.128 11.7502C193.693 10.9967 194.643 9.80143 195.465 9.09985C195.285 9.25576 195.105 9.43765 194.951 9.64552C193.821 11.1786 194.078 13.4132 195.131 15.6219C196.21 17.8565 198.136 20.1951 200.627 22.092C201.885 23.0534 203.22 23.8589 204.581 24.4825C205.942 25.1062 207.303 25.5739 208.562 25.8077C209.846 26.0676 211.027 26.1195 212.054 25.9117C213.081 25.7038 213.954 25.2621 214.545 24.4825C214.699 24.3266 214.802 24.1707 214.879 24.0148Z",fill:"#0068C7"}}),n("path",{attrs:{d:"M218.577 26.4054C218.012 27.9385 216.959 29.8353 215.495 31.5503C209.589 38.3582 199.368 39.6314 192.024 34.0448C184.705 28.5101 182.985 18.3503 187.787 10.633C188.865 8.89203 190.945 6.83928 192.178 5.95581C192.152 5.98179 191.459 6.6314 191.176 7.02116C189.61 9.15187 189.738 12.296 191.099 15.466C192.46 18.6881 195.08 22.066 198.701 24.8204C200.524 26.1975 202.424 27.2889 204.324 28.1204C206.225 28.9519 208.125 29.4716 209.871 29.7314C213.364 30.1991 216.445 29.5235 218.012 27.3928C218.243 27.081 218.448 26.7432 218.577 26.4054Z",fill:"#0068C7"}}),n("path",{attrs:{d:"M217.832 18.9739C216.317 15.7779 213.544 12.4259 209.923 9.67158C206.328 6.91725 202.424 5.22828 199.06 4.70859C197.853 4.5267 196.672 4.50072 195.619 4.63064C195.568 4.63064 195.516 4.63064 195.491 4.65662C195.337 4.68261 195.157 4.70859 195.003 4.73458C194.977 4.73458 194.951 4.73458 194.9 4.76056C194.797 4.78654 194.695 4.81253 194.618 4.83851C194.515 4.8645 194.438 4.89048 194.361 4.91647C194.284 4.94245 194.207 4.96843 194.13 4.99442C193.385 5.22828 192.717 5.59206 192.127 6.05977C191.767 6.31962 191.459 6.63143 191.176 7.02119C189.61 9.1519 189.738 12.296 191.099 15.4661C192.46 18.6881 195.08 22.0661 198.701 24.8204C200.524 26.1976 202.424 27.2889 204.324 28.1204C206.225 28.9519 208.125 29.4716 209.871 29.7314C213.364 30.1991 216.445 29.5236 218.012 27.3928C218.243 27.107 218.423 26.7692 218.577 26.4314C219.527 24.3527 219.116 21.6763 217.832 18.9739ZM217.55 26.6133C217.498 26.6913 217.447 26.7952 217.37 26.8732C216.06 28.6401 213.364 29.3676 210 28.8999C209.846 28.8739 209.692 28.848 209.537 28.822C207.509 28.4842 205.3 27.7306 203.092 26.6133C201.782 25.9377 200.473 25.1062 199.214 24.1448C197.853 23.1054 196.621 21.9881 195.568 20.7928C193.899 18.948 192.666 16.9991 191.87 15.1283C190.56 12.0362 190.56 9.28182 191.844 7.48891C193.154 5.72198 195.722 5.04639 198.932 5.54009C200.524 5.77395 202.27 6.31962 204.068 7.12513C205.84 7.93064 207.663 8.99599 209.435 10.3472C212.979 13.0236 215.649 16.2716 217.087 19.3377C218.474 22.248 218.654 24.8464 217.55 26.6133Z",fill:"white"}}),n("path",{attrs:{d:"M214.16 18.5061C212.953 16.2975 210.873 13.9589 208.382 12.062C205.891 10.1652 203.143 8.84 200.704 8.3463C198.88 7.95654 197.16 8.03449 195.927 8.78803C195.901 8.78803 195.876 8.81402 195.876 8.81402C195.876 8.81402 195.85 8.81402 195.85 8.84C195.799 8.86599 195.747 8.89197 195.722 8.94394C195.645 8.99591 195.568 9.07386 195.491 9.12583C195.311 9.28173 195.131 9.46362 194.977 9.6715C193.847 11.2046 194.104 13.4392 195.157 15.6479C196.235 17.8825 198.161 20.2211 200.652 22.118C201.911 23.0794 203.246 23.8849 204.607 24.5085C205.968 25.1321 207.329 25.5998 208.587 25.8337C209.871 26.0935 211.053 26.1455 212.08 25.9376C213.107 25.7298 213.98 25.288 214.571 24.5085C214.673 24.3786 214.776 24.2227 214.853 24.0668C215.675 22.5077 215.238 20.4809 214.16 18.5061ZM213.929 23.9628C213.518 24.5345 212.85 24.8983 211.951 25.0802C211.053 25.262 209.974 25.2101 208.767 24.9762C206.353 24.5085 203.58 23.2353 201.14 21.4164C198.726 19.5975 196.877 17.3369 195.876 15.2581C194.849 13.1534 194.772 11.3085 195.619 10.1652C196.441 9.02189 198.213 8.6841 200.498 9.15181C202.784 9.61953 205.429 10.8928 207.843 12.7376C210.256 14.5825 212.259 16.8172 213.415 18.9219C214.108 20.1691 214.442 21.3124 214.442 22.2739C214.442 22.9235 214.288 23.4951 213.929 23.9628Z",fill:"white"}}),n("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M211.515 20.351C211.412 19.7793 211.155 19.1297 210.77 18.4801C210 17.1809 208.716 15.7778 207.098 14.5565C205.506 13.3352 203.837 12.4778 202.398 12.14C201.679 11.9581 201.012 11.9061 200.447 11.9841C200.01 12.036 199.599 12.2179 199.291 12.4778C199.189 12.5557 199.111 12.6337 199.034 12.7376C198.701 13.1793 198.624 13.725 198.701 14.2967C198.778 14.8683 199.009 15.5179 199.368 16.1675C200.087 17.4667 201.346 18.8959 202.963 20.1171C204.581 21.3384 206.302 22.1699 207.791 22.5077C208.536 22.6896 209.229 22.7415 209.794 22.6636C210.385 22.5856 210.899 22.3518 211.232 21.91C211.258 21.8581 211.284 21.8321 211.309 21.7801C211.54 21.3904 211.592 20.8707 211.515 20.351ZM210.616 21.4943C210.436 21.7281 210.128 21.8841 209.666 21.962C209.204 22.014 208.613 21.988 207.92 21.8061C206.559 21.4683 204.915 20.6888 203.374 19.5195C201.834 18.3502 200.652 17.025 199.985 15.8037C199.651 15.2061 199.471 14.6604 199.394 14.1927C199.343 13.725 199.42 13.4132 199.599 13.1793C199.779 12.9455 200.062 12.7636 200.524 12.7116C200.96 12.6596 201.525 12.6856 202.193 12.8415C202.835 12.9974 203.58 13.2833 204.324 13.673C205.069 14.0628 205.865 14.5565 206.61 15.1541C208.151 16.3234 209.383 17.6486 210.102 18.8439C210.462 19.4415 210.667 19.9872 210.744 20.4549C210.847 20.9486 210.77 21.2864 210.616 21.4943Z",fill:"white"}})]),n("path",{attrs:{d:"M246.292 9.76333H243.172L235.252 31.1633L227.372 9.76333H224.252L233.692 35.0433H236.852L246.292 9.76333ZM261.251 25.4033C261.251 29.8033 260.131 32.6033 255.691 32.6033C251.251 32.6033 250.091 29.8033 250.091 25.4033C250.091 21.0033 251.251 18.2033 255.691 18.2033C260.131 18.2033 261.251 21.0033 261.251 25.4033ZM255.691 35.3633C261.771 35.3633 264.171 31.2833 264.171 25.4033C264.171 19.4033 261.891 15.4433 255.691 15.4433C249.571 15.4433 247.171 19.5233 247.171 25.4033C247.171 31.4033 249.451 35.3633 255.691 35.3633ZM268.747 29.6833C268.747 33.8433 270.827 35.2833 273.587 35.2833C274.627 35.2833 275.427 35.1233 275.947 34.8833L275.547 32.2433C275.107 32.4433 274.507 32.5233 273.827 32.5233C272.467 32.5233 271.667 31.8833 271.667 29.2433V7.76333H268.747V29.6833Z",fill:"#3EAE2B"}}),n("path",{attrs:{d:"M299.261 9.76333H296.141L288.221 31.1633L280.341 9.76333H277.221L286.661 35.0433H289.821L299.261 9.76333ZM302.505 35.0433H305.425V15.7633H302.505V35.0433ZM302.065 9.16333C302.065 10.2033 302.905 11.0433 303.985 11.0433C305.025 11.0433 305.865 10.2033 305.865 9.16333C305.865 8.12333 305.025 7.24333 303.985 7.24333C302.905 7.24333 302.065 8.08333 302.065 9.16333ZM326.615 23.8833C326.615 18.2833 323.615 15.4433 318.535 15.4433C312.215 15.4433 310.175 19.8833 310.175 25.4433C310.175 32.2833 313.295 35.3633 319.455 35.3633C321.815 35.3633 324.095 34.8833 325.975 34.0433L325.535 31.2833C324.095 32.0433 321.735 32.6033 319.495 32.6033C315.495 32.6033 313.135 30.8033 313.135 26.7233V26.5633H326.295C326.535 25.7233 326.615 24.6833 326.615 23.8833ZM313.135 23.8433C313.135 19.6833 315.215 18.0433 318.455 18.0433C321.735 18.0433 323.815 19.7233 323.815 23.8433V24.0833H313.135V23.8433ZM332.648 15.7633H329.648L336.368 35.0433H339.368L344.608 20.2833L349.848 35.0433H352.848L359.568 15.7633H356.568L351.328 31.0833L346.088 15.7633H343.128L337.888 31.0833L332.648 15.7633Z",fill:"#0068C7"}}),n("path",{attrs:{d:"M8.87229 5.59206L0.781128 14.7137L2.74742 16.9885L13.3699 5.00647H10.1831C9.68593 5.00647 9.2113 5.20917 8.87229 5.59206Z",fill:"#3EAE2B"}}),n("path",{attrs:{d:"M15.0876 5.59206L3.85486 18.2497L5.82115 20.5245L19.5852 5.00647H16.3984C15.9012 5.00647 15.404 5.20917 15.0876 5.59206Z",fill:"#3EAE2B"}}),n("path",{attrs:{d:"M25.7778 5.00647H22.6137C22.1165 5.00647 21.6193 5.23169 21.2802 5.59206L6.90601 21.8083L19.879 36.8308C20.218 37.2137 20.6926 37.4389 21.2124 37.4389H24.3314L10.8386 21.8308L25.7778 5.00647Z",fill:"#3EAE2B"}}),n("path",{attrs:{d:"M12.059 37.4389L0.781128 24.3983V28.9479L7.60663 36.8307C7.94565 37.2136 8.42027 37.4389 8.94009 37.4389H12.059Z",fill:"#0068C7"}}),n("path",{attrs:{d:"M18.2065 37.4389L0.781128 17.2812V21.8308L13.7541 36.8308C14.0931 37.2137 14.5677 37.4389 15.0876 37.4389H18.2065Z",fill:"#0068C7"}}),n("path",{attrs:{d:"M31.2925 7.37134H34.2532V35.029H31.2925V7.37134ZM43.2936 15.4794H47.068L38.9316 24.7137L47.8816 35.0065H44.1073L35.1573 24.7137L43.2936 15.4794Z",fill:"#0068C7"}}),n("path",{attrs:{d:"M51.6786 6.85327C52.7408 6.85327 53.5996 7.75417 53.5996 8.79021C53.5996 9.84877 52.7408 10.7046 51.6786 10.7046C50.5711 10.7046 49.7349 9.84877 49.7349 8.79021C49.7349 7.70913 50.5937 6.85327 51.6786 6.85327ZM50.1869 15.4794H53.1476V35.0289H50.1869V15.4794Z",fill:"#0068C7"}}),n("path",{attrs:{d:"M57.6453 10.2091H60.606V15.4794H68.4486V18.2722H60.606V28.1596C60.606 31.5154 62.1203 32.5289 64.3804 32.5289C66.0077 32.5289 67.7253 32.1235 68.8554 31.6055L69.3074 34.3983C67.9965 34.9614 66.2111 35.3217 64.3804 35.3217C60.4252 35.3217 57.6227 33.4974 57.6227 28.137V10.2091H57.6453Z",fill:"#0068C7"}}),n("path",{attrs:{d:"M79.0032 31.0199L84.337 15.4794H87.343L92.6768 30.9974L97.988 15.4794H101.039L94.2137 35.0289H91.1625L85.8287 20.074L80.4949 35.0289H77.4437L70.6182 15.4794H73.6694L79.0032 31.0199Z",fill:"#0068C7"}}),n("path",{attrs:{d:"M117.109 34.2182C115.278 34.8713 112.385 35.3443 109.673 35.3443C104.949 35.3443 101.83 33.7677 101.83 29.3533C101.83 24.9839 104.972 23.3173 110.283 23.3173H114.148V21.4029C114.148 18.7227 112.272 17.8668 109.176 17.8668C106.893 17.8668 105.017 18.2722 103.797 18.7227L103.345 15.9975C104.927 15.547 106.915 15.1416 109.289 15.1416C113.764 15.1416 117.109 16.7632 117.109 21.6281V34.2182ZM114.148 25.6596H110.328C106.712 25.6596 104.791 26.5605 104.791 29.3083C104.791 32.056 106.712 32.7993 109.582 32.7993C111.006 32.7993 112.882 32.6416 114.148 32.2362V25.6596Z",fill:"#0068C7"}}),n("path",{attrs:{d:"M121.651 16.2902C122.962 15.6821 125.403 15.1866 127.799 15.1866C129.336 15.1866 130.647 15.3443 131.709 15.6821L131.144 18.4299C130.534 18.1821 129.313 17.9794 127.889 17.9794C126.217 17.9794 125.335 18.1821 124.635 18.4975V35.0065H121.674V16.2902H121.651Z",fill:"#0068C7"}}),n("path",{attrs:{d:"M148.931 26.4253H135.528V26.583C135.528 30.7271 137.924 32.5515 141.992 32.5515C144.275 32.5515 146.671 31.9884 148.14 31.2226L148.592 34.0154C146.671 34.8713 144.365 35.3442 141.97 35.3442C135.709 35.3442 132.522 32.2136 132.522 25.2992C132.522 19.6686 134.602 15.1641 141.02 15.1641C146.196 15.1641 149.247 18.0469 149.247 23.7226C149.247 24.5334 149.157 25.5695 148.931 26.4253ZM135.528 23.9253H146.399V23.6776C146.399 19.5109 144.275 17.7992 140.953 17.7992C137.653 17.7992 135.551 19.4659 135.551 23.6776V23.9253H135.528Z",fill:"#0068C7"}}),n("line",{attrs:{x1:"170.559",y1:"0.935669",x2:"170.559",y2:"42.4279",stroke:"#CACACA"}}),n("defs",[n("clipPath",{attrs:{id:"clip0_137_135"}},[n("rect",{attrs:{width:"34",height:"33",fill:"white",transform:"translate(185.09 4.55261)"}})])])])},Pu=[],Iu={name:"volview-full-logo"},Du=Iu,Vu=(0,C.Z)(Du,xu,Pu,!1,null,null,null),Ru=Vu.exports,Mu=(0,a.aZ)({name:"AboutBox",components:{VolViewFullLogo:Ru}}),Eu=Mu,Bu=(0,C.Z)(Eu,bu,Su,!1,null,null,null),ku=Bu.exports;D()(Bu,{VCard:vs.Z,VCardText:ll.ZB,VCardTitle:ll.EB});var Zu=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("item-group",{staticClass:"d-flex flex-column align-center",attrs:{mandatory:"",value:e.currentTool},on:{change:function(t){return e.setCurrentTool(t)}}},[n("div",{staticClass:"my-1 tool-separator"}),n("groupable-item",{attrs:{value:e.Tools.WindowLevel},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.active,a=t.toggle;return[n("tool-button",{attrs:{size:"40",icon:"mdi-circle-half-full",name:"Window & Level",buttonClass:["tool-btn",i?"tool-btn-selected":""],disabled:e.noCurrentImage},on:{click:a}})]}}])}),n("groupable-item",{attrs:{value:e.Tools.Pan},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.active,a=t.toggle;return[n("tool-button",{attrs:{size:"40",icon:"mdi-cursor-move",name:"Pan",buttonClass:["tool-btn",i?"tool-btn-selected":""],disabled:e.noCurrentImage},on:{click:a}})]}}])}),n("groupable-item",{attrs:{value:e.Tools.Zoom},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.active,a=t.toggle;return[n("tool-button",{attrs:{size:"40",icon:"mdi-magnify-plus-outline",name:"Zoom",buttonClass:["tool-btn",i?"tool-btn-selected":""],disabled:e.noCurrentImage},on:{click:a}})]}}])}),n("groupable-item",{attrs:{value:e.Tools.Crosshairs},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.active,a=t.toggle;return[n("tool-button",{attrs:{size:"40",icon:"mdi-crosshairs",name:"Crosshairs",buttonClass:["tool-btn",i?"tool-btn-selected":""],disabled:e.noCurrentImage},on:{click:a}})]}}])}),n("div",{staticClass:"my-1 tool-separator"}),n("groupable-item",{attrs:{value:e.Tools.Paint},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.active,a=t.toggle;return[n("v-menu",{attrs:{"offset-x":"","close-on-content-click":!1,disabled:!i},scopedSlots:e._u([{key:"activator",fn:function(t){var o=t.attrs,r=t.on;return[n("div",[n("tool-button",e._g(e._b({attrs:{size:"40",icon:"mdi-brush",name:"Paint",buttonClass:["tool-btn",i?"tool-btn-selected":""],disabled:e.noCurrentImage},on:{click:function(e){return e.stopPropagation(),a.apply(null,arguments)}}},"tool-button",o,!1),r),[i?n("v-icon",{staticClass:"menu-more",attrs:{size:"18"}},[e._v(" mdi-menu-right ")]):e._e()],1)],1)]}}],null,!0),model:{value:e.paintMenu,callback:function(t){e.paintMenu=t},expression:"paintMenu"}},[n("paint-controls")],1)]}}])}),n("groupable-item",{attrs:{value:e.Tools.Ruler},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.active,a=t.toggle;return[n("tool-button",{attrs:{size:"40",icon:"mdi-ruler",name:"Ruler",buttonClass:["tool-btn",i?"tool-btn-selected":""],disabled:e.noCurrentImage},on:{click:a}})]}}])}),n("div",{staticClass:"my-1 tool-separator"}),n("groupable-item",{attrs:{value:e.Tools.Crop},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.active,a=t.toggle;return[n("v-menu",{attrs:{"offset-x":"","open-on-hover":"","close-on-content-click":""},scopedSlots:e._u([{key:"activator",fn:function(t){var o=t.attrs,r=t.on;return[n("div",[n("tool-button",e._g(e._b({attrs:{size:"40",icon:"mdi-crop",name:"Crop",buttonClass:["tool-btn",i?"tool-btn-selected":""],disabled:e.noCurrentImage},on:{click:function(e){return e.stopPropagation(),a.apply(null,arguments)}}},"tool-button",o,!1),r),[i?n("v-icon",{staticClass:"menu-more",attrs:{size:"18"}},[e._v(" mdi-menu-right ")]):e._e()],1)],1)]}}],null,!0),model:{value:e.cropMenu,callback:function(t){e.cropMenu=t},expression:"cropMenu"}},[n("crop-controls")],1)]}}])})],1)},Fu=[],Tu=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("v-card",{attrs:{width:"350px"}},[n("v-container",[n("v-row",{attrs:{"no-gutters":"",align:"center"}},[n("v-col",[n("v-slider",{attrs:{value:e.brushSize,dense:"","hide-details":"",label:"Size",min:"1",max:"50"},on:{input:e.setBrushSize},scopedSlots:e._u([{key:"append",fn:function(){return[n("v-text-field",{staticClass:"mt-n1 pt-0",staticStyle:{width:"40px"},attrs:{value:e.brushSize,"hide-details":"",type:"number",min:"1",max:"50"},on:{input:e.setBrushSize}})]},proxy:!0}])})],1)],1),n("v-row",{attrs:{"no-gutters":"",align:"center"}},[n("v-col",[n("v-slider",{attrs:{value:e.opacity,dense:"","hide-details":"",label:"Opacity",min:"0",max:"1",step:"0.01"},on:{input:e.setOpacity},scopedSlots:e._u([{key:"append",fn:function(){return[n("v-text-field",{staticClass:"mt-n1 pt-0",staticStyle:{width:"40px"},attrs:{value:e.opacity,"hide-details":"",type:"number",min:"0",max:"1",step:"0.1"},on:{input:e.setOpacity}})]},proxy:!0}])})],1)],1),n("v-row",{attrs:{"no-gutters":"",align:"center"}},[n("v-col",[n("v-color-picker",{attrs:{"hide-canvas":"","hide-inputs":"","hide-mode-switch":"","hide-sliders":"","show-swatches":"",swatches:e.swatches,value:e.brushColor},on:{input:e.setBrushColor}})],1)],1)],1)],1)},Ou=[];function Lu(e){const t=e.map((e=>`0${e.toString(16)}`.slice(-2)));return`#${t.join("")}`}function zu(e,t=5){const n={},i=[],a=Object.entries(e);while(a.length){const[e,o]=a.shift(),r=Lu(o).toUpperCase();n[r]=Number(e);let s=i[i.length-1];s&&s.length!==t||(s=[],i.push(s)),s.push(r)}return{hexToValue:n,swatches:i}}var Uu=(0,a.aZ)({name:"PaintControls",setup(){const e=zi(),{hexToValue:t,swatches:n}=zu(ei,3),i=(0,a.Fl)((()=>{const t=e.brushValue;return t in ei?Lu(ei[t]):null})),o=n=>{const i=n.toUpperCase();i in t&&e.setBrushValue(t[i])},r=(0,a.Fl)((()=>e.brushSize)),s=t=>{e.setBrushSize(Number(t))},l=(0,a.Fl)((()=>e.labelmapOpacity)),c=t=>{e.setLabelmapOpacity(Number(t))};return{brushSize:r,setBrushSize:s,swatches:n,brushColor:i,setBrushColor:o,opacity:l,setOpacity:c}}}),_u=Uu,Hu=n(1357),Wu=(0,C.Z)(_u,Tu,Ou,!1,null,"45995f9c",null),Qu=Wu.exports;D()(Wu,{VCard:vs.Z,VCol:gs.Z,VColorPicker:Wc.Z,VContainer:fs.Z,VRow:ws.Z,VSlider:Tl.Z,VTextField:Hu.Z});var Nu=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("v-card",{attrs:{dark:""}},[n("tool-button",{attrs:{size:"40",icon:"mdi-restore",name:"Reset Crop"},on:{click:e.resetCrop}})],1)},ju=[],Gu=(0,a.aZ)({components:{ToolButton:B},setup(){const{currentImageID:e}=sn(),t=An(),n=()=>{const n=e.value;n&&t.resetCropping(n)};return{resetCrop:n}}}),Ku=Gu,Ju=(0,C.Z)(Ku,Nu,ju,!1,null,null,null),Yu=Ju.exports;D()(Ju,{VCard:vs.Z});var qu=(0,a.aZ)({components:{ToolButton:B,ItemGroup:Ls,GroupableItem:Hs,PaintControls:Qu,CropControls:Yu},setup(){const e=on(),t=Ki(),n=(0,a.Fl)((()=>!e.primaryDataset)),i=(0,a.Fl)((()=>t.currentTool)),o=(0,a.iH)(!1),r=(0,a.iH)(!1);return(0,O.f5c)("Escape",(()=>{o.value=!1,r.value=!1})),{currentTool:i,setCurrentTool:t.setCurrentTool,noCurrentImage:n,Tools:Pe,paintMenu:o,cropMenu:r}}}),Xu=qu,$u=(0,C.Z)(Xu,Zu,Fu,!1,null,"1dd60f2c",null),ed=$u.exports;D()($u,{VIcon:R.Z,VMenu:oo.Z});var td=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("v-card",{staticClass:"fill-height message-center"},[n("v-card-title",[n("span",[e._v("Notifications")]),n("v-spacer"),n("v-btn",{attrs:{icon:""},on:{click:function(t){return e.$emit("close")}}},[n("v-icon",[e._v("mdi-close")])],1)],1),n("v-card-text",{staticClass:"content-container pt-4"},[n("div",{staticClass:"action-bar ma-2"},[n("div",{staticClass:"filter-bar"},[n("v-checkbox",{staticClass:"px-2",attrs:{"hide-details":"",label:"Error"},model:{value:e.showErrors,callback:function(t){e.showErrors=t},expression:"showErrors"}}),n("v-checkbox",{staticClass:"px-2",attrs:{"hide-details":"",label:"Warning"},model:{value:e.showWarnings,callback:function(t){e.showWarnings=t},expression:"showWarnings"}}),n("v-checkbox",{staticClass:"px-2",attrs:{"hide-details":"",label:"Info"},model:{value:e.showInfo,callback:function(t){e.showInfo=t},expression:"showInfo"}})],1),n("v-btn",{attrs:{color:"secondary"},on:{click:e.clearAll}},[n("v-icon",{staticClass:"mr-2"},[e._v("mdi-delete")]),n("span",[e._v("Clear All")])],1)],1),n("div",{ref:"messageListEl",staticClass:"message-list ma-2"},[n("v-expansion-panels",{attrs:{accordion:"",multiple:"",hover:"",value:e.filteredMessages.map((function(e,t){return t}))},on:{change:e.scrollIfLast}},e._l(e.filteredMessages,(function(t){return n("message-item",{key:t.id,attrs:{message:t},on:{delete:function(n){return e.deleteItem(t.id)}}})})),1),0===e.filteredMessages.length?[n("div",{staticClass:"empty"},[e._v("No notifications to display")])]:e._e()],2)])],1)},nd=[],id=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("v-expansion-panel",[n("v-expansion-panel-header",{class:e.headerClass},[n("div",{staticClass:"header"},[n("span",[e._v(e._s(e.message.title))]),n("v-btn",{staticClass:"mr-3",attrs:{icon:"",small:""},on:{click:function(t){return t.stopPropagation(),e.$emit("delete")}}},[n("v-icon",{attrs:{small:""}},[e._v("mdi-delete")])],1)],1)]),e.message.options.details?n("v-expansion-panel-content",[n("div",{staticClass:"mt-4"},[n("pre",{staticClass:"details"},[e._v(e._s(e.message.options.details))])])]):e._e()],1)},ad=[];const od={[Ut.Error]:"error",[Ut.Warning]:"warn",[Ut.Info]:"info",[Ut.Success]:""};var rd=(0,a.aZ)({props:{message:{type:Object,required:!0}},setup(e){const{message:t}=(0,a.BK)(e),n=(0,a.Fl)((()=>{const e=od[t.value.type];return(null===e||void 0===e?void 0:e.length)?`${e}-message`:""}));return{headerClass:n}}}),sd=rd,ld=(0,C.Z)(sd,id,ad,!1,null,"233f9698",null),cd=ld.exports;function ud(e,t,n=10){let i,a=-1;const o=e=>{clearTimeout(a),a=setTimeout(e,n)},r=()=>{i.disconnect()};i=new ResizeObserver((()=>{o(r),t(e)})),i.observe(e)}D()(ld,{VBtn:V.Z,VExpansionPanel:ml.Z,VExpansionPanelContent:gl.Z,VExpansionPanelHeader:fl.Z,VIcon:R.Z});var dd=(0,a.aZ)({components:{MessageItem:cd},setup(){const e=_t(),{messages:t}=(0,r.Jk)(e),n=(0,a.iH)(!0),i=(0,a.iH)(!0),o=(0,a.iH)(!0),s=(0,a.Fl)((()=>{const e={errors:n.value,warnings:i.value,info:o.value};return t.value.filter((t=>t.type===Ut.Error&&e.errors||t.type===Ut.Warning&&e.warnings||t.type===Ut.Info&&e.info))}));function l(t){e.clearOne(t)}const c=(0,a.iH)();let u=-1/0;function d(e){const n=Math.max(...e),i=c.value;n===t.value.length-1&&n!==u&&(null===i||void 0===i?void 0:i.firstElementChild)&&ud(i.firstElementChild,(()=>{const e=i.scrollHeight;i.scroll(0,e)})),u=n}return{deleteItem:l,clearAll:e.clearAll,scrollIfLast:d,messageListEl:c,showErrors:n,showWarnings:i,showInfo:o,filteredMessages:s}}}),Ad=dd,pd=(0,C.Z)(Ad,td,nd,!1,null,"6f404126",null),vd=pd.exports;D()(pd,{VBtn:V.Z,VCard:vs.Z,VCardText:ll.ZB,VCardTitle:ll.EB,VCheckbox:ms.Z,VExpansionPanels:hl.Z,VIcon:R.Z,VSpacer:cl.Z});const md=(0,o.NO)({position:"bottom-left",timeout:3e3,hideProgressBar:!0,maxToasts:3,transition:"Vue-Toastification__fade"}),gd=()=>md;var fd=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("span",[e._v(e._s(e.message))]),e._v("   "),e.detailsButton?n("v-btn",{attrs:{dark:"",depressed:"",small:"",color:"#00000022"}},[e._v(" details ")]):e._e()],1)},hd=[],Cd=(0,a.aZ)({props:{message:String,detailsButton:Boolean}}),yd=Cd,wd=(0,C.Z)(yd,fd,hd,!1,null,null,null),bd=wd.exports;D()(wd,{VBtn:V.Z});const Sd=5e3;var xd,Pd,Id=(0,a.aZ)({setup(e,{emit:t}){const n=_t(),{byID:i}=(0,r.Jk)(n),o={},s=gd(),l=e=>({timeout:!i.value[e].options.persist&&Sd,closeOnClick:!i.value[e].options.persist,onClick:()=>t("open-notifications"),onClose:()=>{(0,a.IV)(o,e)}});return(0,a.YP)(i,(e=>{Object.keys(o).forEach((t=>{t in e||(s.dismiss(o[t]),(0,a.IV)(o,t))}))})),n.$onAction((({name:e,args:t,after:n})=>{if("_addMessage"===e){const e=t[0];n((t=>{if(!t)return;let n=s.info,i=!1;e.type===Ut.Error?(n=s.error,i=!0):e.type===Ut.Warning?(n=s.warning,i=!0):e.type===Ut.Info?n=s.info:e.type===Ut.Success&&(n=s.success),o[t]=n({component:bd,props:{message:e.title,detailsButton:i}},l(t))}))}})),()=>null}}),Dd=Id,Vd=(0,C.Z)(Dd,xd,Pd,!1,null,null,null),Rd=Vd.exports,Md=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("v-card",[n("v-card-title",[e._v(" Settings "),n("v-spacer"),n("v-btn",{attrs:{icon:""},on:{click:function(t){return e.$emit("close")}}},[n("v-icon",[e._v("mdi-close")])],1)],1),n("v-card-text",[n("v-switch",{attrs:{label:"Enable Dark Theme"},model:{value:e.dark,callback:function(t){e.dark=t},expression:"dark"}})],1)],1)},Ed=[],Bd=n(1858),kd=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("svg",{staticStyle:{"enable-background":"new 0 0 200 200"},attrs:{version:"1.1",id:"Layer_3",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 200 200","xml:space":"preserve"}},[n("g",[n("g",[n("path",{staticClass:"st0",attrs:{d:"M82.1,29.9L46.4,70.4L55,80.5l47-53.2H88C85.7,27.3,83.6,28.3,82.1,29.9z"}}),n("path",{staticClass:"st0",attrs:{d:"M109.6,29.9L59.9,86.1l8.7,10.1l60.9-68.9h-14.1C113.2,27.3,111.1,28.3,109.6,29.9z"}}),n("path",{staticClass:"st0",attrs:{d:"M157,27.3h-14c-2.2,0-4.4,1-5.9,2.6l-63.6,72l0,0l0,0l57.4,66.7c1.5,1.7,3.6,2.7,5.9,2.7h13.8L91,102\n\t\t\tL157,27.3z"}}),n("path",{staticClass:"st1",attrs:{d:"M96.3,171.3l-49.9-57.9v20.2l30.2,35c1.5,1.7,3.6,2.7,5.9,2.7H96.3z"}}),n("path",{staticClass:"st1",attrs:{d:"M123.5,171.3L46.4,81.8v20.2l57.4,66.6c1.5,1.7,3.6,2.7,5.9,2.7H123.5z"}})])])])},Zd=[],Fd={name:"kitware-logo"},Td=Fd,Od=(0,C.Z)(Td,kd,Zd,!1,null,"5c130a7c",null),Ld=Od.exports;i.Z.use(Bd.Z);const zd=(0,O._aR)("dark",!0);var Ud=new Bd.Z({icons:{values:{kitwareMark:{component:Ld}}},theme:{dark:zd.value},breakpoint:{mobileBreakpoint:"sm"}}),_d=(0,a.aZ)({setup(){var e;const t=(0,O._aR)("dark",null===(e=Ud.framework.theme.dark)||void 0===e||e);return(0,a.m0)((()=>{Ud.framework.theme.dark=t.value})),{dark:t}}}),Hd=_d,Wd=(0,C.Z)(Hd,Md,Ed,!1,null,null,null),Qd=Wd.exports;D()(Wd,{VBtn:V.Z,VCard:vs.Z,VCardText:ll.ZB,VCardTitle:ll.EB,VIcon:R.Z,VSpacer:cl.Z,VSwitch:Ol.Z});var Nd=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("svg",{attrs:{width:"178",height:"41",viewBox:"0 0 178 41",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[n("g",{attrs:{"clip-path":"url(#clip0_137_151)"}},[n("path",{attrs:{d:"M33.2403 22.3722C33.189 22.4501 33.1376 22.554 33.0606 22.632C31.7509 24.3989 29.0545 25.1265 25.6905 24.6588C25.5364 24.6328 25.3823 24.6068 25.2282 24.5808C23.1995 24.243 20.9911 23.4895 18.7826 22.3722C17.4729 21.6966 16.1633 20.8651 14.905 19.9037C13.5439 18.8643 12.3113 17.747 11.2584 16.5517C9.58926 14.7068 8.35663 12.758 7.56056 10.8871C6.25089 7.79499 6.25089 5.04066 7.53488 3.24774C8.84455 1.48082 11.4125 0.805225 14.6225 1.29893C16.2146 1.53278 17.9609 2.07845 19.7584 2.88396C21.5303 3.68948 23.3536 4.75483 25.1255 6.10601C28.6693 8.78239 31.34 12.0304 32.7781 15.0966C34.1648 18.0068 34.3445 20.6052 33.2403 22.3722Z",fill:"#3EAE2B"}}),n("path",{attrs:{d:"M33.2404 22.3721C33.189 22.4501 33.1377 22.554 33.0606 22.632C31.7509 24.3989 29.0546 25.1265 25.6905 24.6588C25.5364 24.6328 25.3824 24.6068 25.2283 24.5808C23.3537 24.191 21.1966 23.4895 18.7827 22.3721C17.473 21.6966 16.1633 20.8651 14.905 19.9036C13.544 18.8643 12.3114 17.7469 11.2585 16.5517C8.69052 12.2643 9.2298 6.9375 10.7706 5.24852C12.6452 3.16978 16.9337 2.70206 23.6361 7.24931C29.5425 11.2509 33.7796 19.0202 33.2404 22.3721Z",fill:"black","fill-opacity":"0.15"}}),n("path",{attrs:{d:"M30.1331 18.0068C30.1331 18.5005 30.0304 18.9422 29.8506 19.332C29.7993 19.4619 29.7222 19.5918 29.6195 19.7217C29.2086 20.2934 28.541 20.6572 27.6422 20.8391C26.7434 21.021 25.6648 20.969 24.4579 20.7351C22.044 20.2674 19.2706 18.9942 16.831 17.1753C16.8053 17.1493 16.7539 17.1233 16.7283 17.0973C14.3657 15.2784 12.5681 13.0698 11.5666 11.017C10.5394 8.91229 10.4624 7.06741 11.3098 5.9241C12.1316 4.78079 13.9035 4.443 16.189 4.91071C18.4745 5.37843 21.1195 6.65166 23.5334 8.49654C25.9473 10.3414 27.9503 12.5761 29.1059 14.6808C29.7993 15.9021 30.1331 17.0454 30.1331 18.0068Z",fill:"#3EAE2B"}}),n("path",{attrs:{d:"M29.8506 19.3321C29.7992 19.462 29.7222 19.5919 29.6195 19.7218C29.2086 20.2935 28.5409 20.6573 27.6421 20.8391C26.7433 21.021 25.6648 20.9691 24.4578 20.7352C22.0439 20.2675 19.2705 18.9943 16.831 17.1754C16.8053 17.1494 16.7539 17.1234 16.7282 17.0974C13.8778 14.2132 13.7494 9.61394 14.905 8.31473C16.2146 7.14544 18.5258 7.17142 22.763 10.0297C26.3068 12.4462 29.5681 16.9415 29.8506 19.3321Z",fill:"black","fill-opacity":"0.15"}}),n("path",{attrs:{d:"M26.3068 17.2533C26.1271 17.4871 25.8189 17.6431 25.3567 17.721C24.8944 17.773 24.3038 17.747 23.6105 17.5651C22.2494 17.2273 20.6059 16.4478 19.0651 15.2785C17.5243 14.1092 16.3431 12.784 15.6754 11.5627C15.3416 10.9651 15.1618 10.4194 15.0848 9.95171C15.0334 9.484 15.1105 9.17219 15.2902 8.93833C15.47 8.70447 15.7524 8.52258 16.2147 8.47061C16.6512 8.41864 17.2162 8.44463 17.8839 8.60053C18.5259 8.75644 19.2706 9.04227 20.0153 9.43203C20.76 9.82179 21.5561 10.3155 22.3008 10.9131C23.8416 12.0824 25.0742 13.4076 25.7932 14.6029C26.1528 15.2005 26.3582 15.7462 26.4352 16.2139C26.5379 16.7076 26.4609 17.0454 26.3068 17.2533Z",fill:"#3EAE2B"}}),n("path",{attrs:{d:"M27.0001 17.565C26.769 18.1627 26.5379 18.6044 26.1527 19.1501C23.8415 22.2682 19.0137 22.7099 15.624 20.1375C12.2343 17.565 11.3612 12.758 13.6467 9.63984C14.1089 9.06819 14.4427 8.67843 14.982 8.23669C14.8793 8.31465 14.8022 8.3926 14.7252 8.49654C14.3914 8.93827 14.3143 9.48394 14.3914 10.0556C14.4684 10.6272 14.6995 11.2769 15.059 11.9265C15.7781 13.2257 17.0364 14.6548 18.6542 15.8761C20.272 17.0973 21.9926 17.9288 23.482 18.2666C24.2267 18.4485 24.9201 18.5005 25.485 18.4225C26.0757 18.3446 26.5893 18.1107 26.9231 17.669C26.9488 17.669 26.9745 17.617 27.0001 17.565Z",fill:"#0068C7"}}),n("path",{attrs:{d:"M30.5696 19.7737C30.2615 20.7092 29.1316 22.4241 28.4382 23.2036C24.7917 28.1147 17.1391 28.9722 11.6436 24.8147C6.17386 20.7351 5.17235 12.4462 8.81888 7.50916C9.38383 6.75562 10.334 5.56034 11.1557 4.85876C10.976 5.01467 10.7962 5.19656 10.6421 5.40443C9.51223 6.93751 9.76903 9.17215 10.8219 11.3808C11.9004 13.6155 13.8264 15.954 16.3174 17.8509C17.5757 18.8123 18.911 19.6178 20.272 20.2414C21.6331 20.8651 22.9941 21.3328 24.2524 21.5666C25.5364 21.8265 26.7177 21.8784 27.7449 21.6706C28.7721 21.4627 29.6452 21.021 30.2358 20.2414C30.3899 20.0855 30.4926 19.9296 30.5696 19.7737Z",fill:"#0068C7"}}),n("path",{attrs:{d:"M34.2675 22.1643C33.7025 23.6974 32.6497 25.5942 31.1859 27.3092C25.2796 34.1171 15.059 35.3903 7.71463 29.8037C0.395901 24.2691 -1.32464 14.1092 3.47747 6.39189C4.55602 4.65094 6.63608 2.59819 7.86871 1.71472C7.84303 1.74071 7.14968 2.39031 6.8672 2.78008C5.30074 4.91078 5.42913 8.05488 6.79016 11.225C8.15119 14.447 10.7705 17.825 14.3914 20.5793C16.2146 21.9565 18.1149 23.0478 20.0152 23.8793C21.9155 24.7108 23.8158 25.2305 25.5621 25.4903C29.0545 25.958 32.1361 25.2824 33.7026 23.1517C33.9337 22.8399 34.1391 22.5021 34.2675 22.1643Z",fill:"#0068C7"}}),n("path",{attrs:{d:"M33.5228 14.7329C32.0077 11.5368 29.2343 8.18483 25.6135 5.4305C22.0183 2.67616 18.115 0.987188 14.7509 0.467503C13.544 0.285613 12.3627 0.259629 11.3098 0.38955C11.2585 0.38955 11.2071 0.38955 11.1814 0.415535C11.0274 0.441519 10.8476 0.467503 10.6935 0.493487C10.6679 0.493487 10.6422 0.493487 10.5908 0.519472C10.4881 0.545456 10.3854 0.57144 10.3083 0.597424C10.2056 0.623409 10.1286 0.649393 10.0515 0.675377C9.9745 0.701361 9.89746 0.727346 9.82042 0.75333C9.07571 0.987188 8.40803 1.35097 7.8174 1.81868C7.45788 2.07853 7.14973 2.39034 6.86725 2.7801C5.30078 4.91081 5.42918 8.0549 6.79021 11.225C8.15124 14.447 10.7706 17.825 14.3914 20.5793C16.2147 21.9565 18.115 23.0478 20.0153 23.8793C21.9156 24.7108 23.8159 25.2305 25.5621 25.4903C29.0546 25.9581 32.1361 25.2825 33.7026 23.1518C33.9337 22.8659 34.1135 22.5281 34.2675 22.1903C35.2177 20.1116 34.8068 17.4352 33.5228 14.7329ZM33.2404 22.3722C33.189 22.4502 33.1376 22.5541 33.0606 22.6321C31.7509 24.399 29.0546 25.1266 25.6905 24.6588C25.5364 24.6329 25.3824 24.6069 25.2283 24.5809C23.1996 24.2431 20.9911 23.4895 18.7827 22.3722C17.473 21.6966 16.1633 20.8651 14.905 19.9037C13.544 18.8644 12.3114 17.747 11.2585 16.5518C9.5893 14.7069 8.35667 12.7581 7.5606 10.8872C6.25093 7.79506 6.25093 5.04073 7.53492 3.24782C8.84459 1.48089 11.4126 0.805298 14.6225 1.299C16.2147 1.53286 17.9609 2.07853 19.7585 2.88404C21.5304 3.68955 23.3537 4.7549 25.1256 6.10609C28.6694 8.78246 31.3401 12.0305 32.7781 15.0966C34.1648 18.0069 34.3446 20.6053 33.2404 22.3722Z",fill:"white"}}),n("path",{attrs:{d:"M29.8506 14.2651C28.6436 12.0564 26.5636 9.71781 24.0726 7.82096C21.5817 5.92411 18.834 4.59891 16.3944 4.10521C14.5711 3.71545 12.8506 3.7934 11.618 4.54694C11.5923 4.54694 11.5666 4.57293 11.5666 4.57293C11.5666 4.57293 11.5409 4.57293 11.5409 4.59891C11.4896 4.6249 11.4382 4.65088 11.4125 4.70285C11.3355 4.75482 11.2584 4.83277 11.1814 4.88474C11.0016 5.04065 10.8219 5.22254 10.6678 5.43041C9.5379 6.96348 9.79469 9.19813 10.8476 11.4068C11.9261 13.6414 13.8521 15.98 16.343 17.8769C17.6013 18.8383 18.9367 19.6438 20.2977 20.2674C21.6587 20.891 23.0198 21.3588 24.2781 21.5926C25.5621 21.8525 26.7433 21.9044 27.7705 21.6966C28.7977 21.4887 29.6708 21.0469 30.2615 20.2674C30.3642 20.1375 30.4669 19.9816 30.5439 19.8257C31.3657 18.2666 30.9291 16.2399 29.8506 14.2651ZM29.6195 19.7217C29.2086 20.2934 28.5409 20.6572 27.6421 20.8391C26.7433 21.021 25.6648 20.969 24.4578 20.7351C22.0439 20.2674 19.2705 18.9942 16.8309 17.1753C14.4171 15.3564 12.5681 13.0958 11.5666 11.017C10.5394 8.9123 10.4624 7.06742 11.3098 5.92411C12.1316 4.7808 13.9035 4.44301 16.189 4.91072C18.4745 5.37844 21.1195 6.65167 23.5334 8.49655C25.9473 10.3414 27.9503 12.5761 29.1059 14.6808C29.7992 15.928 30.1331 17.0714 30.1331 18.0328C30.1331 18.6824 29.979 19.254 29.6195 19.7217Z",fill:"white"}}),n("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M27.2056 16.1099C27.1029 15.5382 26.8461 14.8886 26.4609 14.239C25.6905 12.9398 24.4065 11.5367 22.7887 10.3154C21.1965 9.09415 19.5274 8.23667 18.0893 7.89887C17.3703 7.71698 16.7026 7.66501 16.1376 7.74296C15.7011 7.79493 15.2902 7.97682 14.982 8.23667C14.8793 8.31462 14.8023 8.39257 14.7252 8.49651C14.3914 8.93824 14.3144 9.48391 14.3914 10.0556C14.4684 10.6272 14.6996 11.2768 15.0591 11.9264C15.7781 13.2256 17.0364 14.6548 18.6542 15.876C20.2721 17.0973 21.9926 17.9288 23.482 18.2666C24.2268 18.4485 24.9201 18.5004 25.4851 18.4225C26.0757 18.3445 26.5893 18.1107 26.9231 17.6689C26.9488 17.617 26.9745 17.591 27.0002 17.539C27.2313 17.1493 27.2826 16.6296 27.2056 16.1099ZM26.3068 17.2532C26.1271 17.4871 25.8189 17.643 25.3567 17.7209C24.8944 17.7729 24.3038 17.7469 23.6104 17.565C22.2494 17.2272 20.6059 16.4477 19.0651 15.2784C17.5243 14.1091 16.3431 12.7839 15.6754 11.5626C15.3416 10.965 15.1618 10.4193 15.0848 9.95163C15.0334 9.48391 15.1104 9.1721 15.2902 8.93824C15.47 8.70438 15.7524 8.52249 16.2147 8.47052C16.6512 8.41855 17.2162 8.44454 17.8839 8.60044C18.5259 8.75635 19.2706 9.04218 20.0153 9.43194C20.76 9.8217 21.5561 10.3154 22.3008 10.913C23.8416 12.0823 25.0742 13.4075 25.7932 14.6028C26.1527 15.2004 26.3582 15.7461 26.4352 16.2138C26.5379 16.7075 26.4609 17.0453 26.3068 17.2532Z",fill:"white"}})]),n("path",{attrs:{d:"M61.9829 5.52224H58.8629L50.9429 26.9222L43.0629 5.52224H39.9429L49.3829 30.8022H52.5429L61.9829 5.52224ZM76.9417 21.1622C76.9417 25.5622 75.8217 28.3622 71.3817 28.3622C66.9417 28.3622 65.7817 25.5622 65.7817 21.1622C65.7817 16.7622 66.9417 13.9622 71.3817 13.9622C75.8217 13.9622 76.9417 16.7622 76.9417 21.1622ZM71.3817 31.1222C77.4617 31.1222 79.8617 27.0422 79.8617 21.1622C79.8617 15.1622 77.5817 11.2022 71.3817 11.2022C65.2617 11.2022 62.8617 15.2822 62.8617 21.1622C62.8617 27.1622 65.1417 31.1222 71.3817 31.1222ZM84.4373 25.4422C84.4373 29.6022 86.5173 31.0422 89.2773 31.0422C90.3173 31.0422 91.1173 30.8822 91.6373 30.6422L91.2373 28.0022C90.7973 28.2022 90.1973 28.2822 89.5173 28.2822C88.1573 28.2822 87.3573 27.6422 87.3573 25.0022V3.52224H84.4373V25.4422Z",fill:"#3EAE2B"}}),n("path",{attrs:{d:"M114.952 5.52224H111.832L103.912 26.9222L96.0317 5.52224H92.9117L102.352 30.8022H105.512L114.952 5.52224ZM118.196 30.8022H121.116V11.5222H118.196V30.8022ZM117.756 4.92225C117.756 5.96224 118.596 6.80225 119.676 6.80225C120.716 6.80225 121.556 5.96224 121.556 4.92225C121.556 3.88224 120.716 3.00224 119.676 3.00224C118.596 3.00224 117.756 3.84225 117.756 4.92225ZM142.306 19.6422C142.306 14.0422 139.306 11.2022 134.226 11.2022C127.906 11.2022 125.866 15.6422 125.866 21.2022C125.866 28.0422 128.986 31.1222 135.146 31.1222C137.506 31.1222 139.786 30.6422 141.666 29.8022L141.226 27.0422C139.786 27.8022 137.426 28.3622 135.186 28.3622C131.186 28.3622 128.826 26.5622 128.826 22.4822V22.3222H141.986C142.226 21.4822 142.306 20.4422 142.306 19.6422ZM128.826 19.6022C128.826 15.4422 130.906 13.8022 134.146 13.8022C137.426 13.8022 139.506 15.4822 139.506 19.6022V19.8422H128.826V19.6022ZM148.339 11.5222H145.339L152.059 30.8022H155.059L160.299 16.0422L165.539 30.8022H168.539L175.259 11.5222H172.259L167.019 26.8422L161.779 11.5222H158.819L153.579 26.8422L148.339 11.5222Z",fill:"#0068C7"}}),n("defs",[n("clipPath",{attrs:{id:"clip0_137_151"}},[n("rect",{attrs:{width:"34",height:"33",fill:"white",transform:"translate(0.781128 0.311523)"}})])])])},jd=[],Gd={},Kd=(0,C.Z)(Gd,Nd,jd,!1,null,null,null),Jd=Kd.exports,Yd=n(3162);const qd="manifest.json",Xd="0.0.1";async function $d(e){const t=on(),n=gi(),i=Ti(),a=Ki(),o=new(ht()),r={version:Xd,dataSets:[],labelMaps:[],tools:{rulers:[],crosshairs:{position:[0,0,0]},paint:{activeLabelmapID:null,brushSize:8,brushValue:1,labelmapOpacity:1},crop:{},current:Pe.WindowLevel},layout:{direction:Ee.H,items:[]},views:[]},s={zip:o,manifest:r};await t.serialize(s),n.serialize(s),await i.serialize(s),a.serialize(s),o.file(qd,JSON.stringify(r));const l=await o.generateAsync({type:"blob"});(0,Yd.saveAs)(l,e)}async function eA(e){const t=on(),n=Lt(),i=vt(),a=gi(),o=Ti(),r=Ki(),s=e.filter((e=>e.file.name===qd));if(0===s.length)return[qt(qd,"State file is missing manifest")];const l=await s[0].file.text(),c=pt.parse(JSON.parse(l)),{dataSets:u}=c;a.setLayout(c.layout);const d={},A=[];for(const v of u){const n=e.filter((e=>e.path===v.path)).map((e=>e.file)),a=await t.deserialize(v,n).then((e=>(e.loaded&&(d[v.id]=e.dataID,i.add(e.dataID,n)),e)));A.push(a)}if(void 0!==c.primarySelection){const e=d[c.primarySelection];let i;i=e in n.volumeInfo?en(e):tn(e),t.setPrimarySelection(i)}a.deserialize(c.views,d);const p=await o.deserialize(c,e,d);return r.deserialize(c,p,d),new Promise((e=>{e(A)}))}async function tA(e){const t=await Dt(e),n=await Vt([t]);return eA(n)}async function nA(e){if(yt.has(e.type)){const t=await ht().loadAsync(e);return null!==t.file(qd)}return!1}var iA=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("v-card",[n("v-card-title",[e._v(" Saving Session State "),n("v-spacer"),n("v-btn",{attrs:{icon:""},on:{click:function(t){return e.$emit("close")}}},[n("v-icon",[e._v("mdi-close")])],1)],1),n("v-card-text",[n("v-form",{model:{value:e.valid,callback:function(t){e.valid=t},expression:"valid"}},[n("v-text-field",{attrs:{hint:"The filename to use for the session state file.",label:"Session State Filename",rules:[e.validFileName]},on:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.saveSession.apply(null,arguments)}},model:{value:e.fileName,callback:function(t){e.fileName=t},expression:"fileName"}})],1)],1),n("v-card-actions",[n("v-spacer"),n("v-btn",{attrs:{color:"secondary",disabled:!e.valid},on:{click:e.saveSession}},[n("v-icon",{staticClass:"mr-2"},[e._v("mdi-content-save-all")]),n("span",[e._v("Save")])],1)],1)],1)},aA=[];const oA="session.volview.zip";var rA=(0,a.aZ)({setup(e,{emit:t}){const n=(0,a.iH)(oA),i=(0,a.iH)(!0);async function o(){await $d(n.value),t("close")}function r(e){return e.trim().length>0||"Required"}return{saveSession:o,fileName:n,validFileName:r,valid:i}}}),sA=rA,lA=n(5125),cA=(0,C.Z)(sA,iA,aA,!1,null,null,null),uA=cA.exports;function dA(){const e=_t(),t=t=>{e.addError("Application error (click for details)",t.error)};(0,a.bv)((()=>{window.addEventListener("error",t)})),(0,a.Jd)((()=>{window.removeEventListener("error",t)}))}D()(cA,{VBtn:V.Z,VCard:vs.Z,VCardActions:ll.h7,VCardText:ll.ZB,VCardTitle:ll.EB,VForm:lA.Z,VIcon:R.Z,VSpacer:cl.Z,VTextField:Hu.Z});var AA,pA=n(2083);function vA(e,t){const n=[];Nr((i=>{const a=Object.create(null);n.push(i.onProxyRegistrationChange((n=>{const{action:i,proxyId:o,proxy:r}=n;"register"===i?(e===AA.ProxyCreated&&t(o,r),e===AA.ProxyModified&&(a[o]=r.onModified((()=>t(o,r))))):"unregister"===i&&(o in a&&(a[o].unsubscribe(),delete a[o]),e===AA.ProxyDeleted&&t(o,null))})))})),(0,a.Jd)((()=>{while(n.length)n.pop().unsubscribe()}))}function mA(){const e=new Map,t=(0,pA.vA)((()=>{const e=_t();e.addError(oe.WebGLLost.title,oe.WebGLLost.details)}),100);vA(AA.ProxyCreated,((n,i)=>{if(!i||!i.isA("vtkViewProxy"))return;const a=i,o=a.getOpenglRenderWindow(),r=o.getCanvas(),s=(0,O.ORN)(r,"webglcontextlost",t);e.set(n,s)})),vA(AA.ProxyDeleted,(t=>{e.has(t)&&(e.get(t)(),e.delete(t))}))}function gA(){const e=gd(),t=_t();let n=0,i=null,a=null;const r=()=>{n=0,i=null,a=null},s=e=>{a=e},l=()=>{n++,null===i&&(i=e.info("Loading datasets...",{timeout:!1,closeButton:!1,closeOnClick:!1}))},c=()=>{n--,0===n&&null!==i&&(a?(e.dismiss(i),t.addError("Some files failed to load",a)):e.update(i,{content:"Datasets loaded!",options:{type:o.wD.SUCCESS,timeout:3e3,closeButton:"button",closeOnClick:!0}}),r())},u=async e=>{l();try{return await e(s)}finally{c()}};return{runAsLoading:u}}async function fA(e,t){const n=on(),i=!n.primarySelection;let a=[],o=!1;try{o=1===e.length&&await nA(e[0]),a=o?await tA(e[0]):await n.loadFiles(Array.from(e))}catch(l){return void t(l)}const r=a.filter((e=>e.loaded)),s=a.filter((e=>!e.loaded));if(r.length&&!o&&(i||1===r.length)){const e=an(r[0]);e&&n.setPrimarySelection(e)}if(s.length){const e=s.map((e=>"file"===e.type?e.filename:"DICOM files")),n=new Error(`These files failed to load:\n${e.join("\n")}`);t(n)}}async function hA(e,t){var n;const i=on(),a=Se(e.urls),o=Se(null!==(n=e.names)&&void 0!==n?n:[]),r=await Promise.allSettled(a.map((async(e,t)=>{const{pathname:n}=new URL(e),i=o[t]||n.split("/").at(-1)||"";return Nt(e,i)}))),s=await Promise.allSettled(r.map((async e=>{if("fulfilled"===e.status){const t=await i.loadFiles([e.value]),n=t.find((e=>!e.loaded));if(n)throw new Error;return t[0]}throw e.reason}))),l=[];let c=null;s.forEach(((e,t)=>{"fulfilled"===e.status&&e.value.loaded&&!c?c=an(e.value):"rejected"===e.status&&l.push(a[t])})),c&&i.setPrimarySelection(c),l.length&&t(new Error(`These URLs failed to load:\n${l.join("\n")}`))}(function(e){e[e["ProxyCreated"]=0]="ProxyCreated",e[e["ProxyModified"]=1]="ProxyModified",e[e["ProxyDeleted"]=2]="ProxyDeleted",e[e["ProxyRegistrationChange"]=3]="ProxyRegistrationChange"})(AA||(AA={}));var CA=(0,a.aZ)({name:"App",components:{ResizableNavDrawer:w,ToolButton:B,LayoutGrid:is,DragAndDrop:wu,AboutBox:ku,ToolStrip:ed,ModulePanel:Au,MessageCenter:vd,MessageNotifications:Rd,VolViewFullLogo:Ru,VolViewLogo:Jd,Settings:Qd,SaveSession:uA},setup(e,{root:t}){const n=kt(),i=_t(),o=gi();dA(),mA();const{runAsLoading:s}=gA(),l=(0,a.iH)("Quad View"),{layout:c}=(0,r.Jk)(o);async function u(e){e&&s((t=>fA(e,t)))}(0,a.YP)(l,(()=>{const e=$n[l.value]||[];o.setLayout(e)}),{immediate:!0}),(0,a.YP)(c,(()=>{var e;(null===(e=c.value)||void 0===e?void 0:e.name)&&c.value.name!==l.value&&(l.value=c.value.name)}));const d=document.createElement("input");function p(){d.value="",d.click()}d.setAttribute("type","file"),d.setAttribute("multiple","multiple"),d.setAttribute("accept","*"),d.addEventListener("change",(()=>u(d.files)));const v=A.Z.extractURLParameters();(0,a.bv)((()=>{v.urls&&s((e=>hA(v,e)))}));const m=Qi();m.initialize(),(0,a.Jd)((()=>m.uninitialize()));const g=(0,a.Fl)((()=>n.idList.length>0)),f=(0,a.Fl)((()=>i.importantMessages.length)),h=(0,a.Fl)((()=>i.importantMessages.find((e=>e.type===Ut.Error))?"error":i.importantMessages.find((e=>e.type===Ut.Warning))?"warning":"primary"));return{aboutBoxDialog:(0,a.iH)(!1),messageDialog:(0,a.iH)(!1),settingsDialog:(0,a.iH)(!1),saveDialog:(0,a.iH)(!1),leftSideBar:(0,a.iH)(!t.$vuetify.breakpoint.mobile),messageCount:f,messageBadgeColor:h,layoutName:l,currentLayout:c,Layouts:$n,userPromptFiles:p,openFiles:u,hasData:g}}}),yA=CA,wA=n(998),bA=n(6232),SA=n(1154),xA=n(4061),PA=n(3059),IA=n(9214),DA=n(6379),VA=n(7953),RA=(0,C.Z)(yA,u,d,!1,null,"3c12b0de",null),MA=RA.exports;D()(RA,{VApp:wA.Z,VAppBar:bA.Z,VBadge:SA.Z,VBtn:V.Z,VCard:vs.Z,VCardText:ll.ZB,VCol:gs.Z,VDialog:xA.Z,VIcon:R.Z,VMain:PA.Z,VMenu:oo.Z,VOverlay:ys.Z,VRadio:IA.Z,VRadioGroup:DA.Z,VRow:ws.Z,VSpacer:cl.Z,VToolbarTitle:VA.qW});var EA=n(2299),BA=n(2814),kA=n(3129),ZA=n(347);class FA{constructor(){this.webWorker=null,this.initializeCheck=null}async runTask(e,t,n,i){return(0,EA.Z)(this.webWorker,e,t,i,n)}async initialize(){return this.initializeCheck||(this.initializeCheck=new Promise(((e,t)=>{this.runTask("dicom",[],[],[]).then((n=>{n.webWorker?(this.webWorker=n.webWorker,e()):t(new Error("Could not initialize webworker"))})).catch(t)}))),this.initializeCheck}async categorizeFiles(e){await this.initialize();const t=await Promise.all(e.map((async e=>{const t=await e.arrayBuffer();return{type:BA.Z.BinaryFile,data:{path:e.name,data:new Uint8Array(t)}}}))),n=["--action","categorize","--memory-io","0","--files",...t.map((e=>e.data.path))],i=[{type:BA.Z.TextStream}],a=await this.runTask("dicom",n,t,i);return JSON.parse(a.outputs[0].data.data)}async readTags(e,t){const n=t.map((e=>e.tag)),i=await(0,kA.Z)(this.webWorker,e,n),a=i.tags;return t.reduce(((e,t)=>{const{tag:n,name:i}=t;return a.has(n)?{...e,[i]:a.get(n)}:e}),{})}async getVolumeSlice(e,t=!1){await this.initialize();const n=await e.arrayBuffer(),i=[{type:BA.Z.BinaryFile,data:{path:e.name,data:new Uint8Array(n)}}],a=["--action","getSliceImage","--thumbnail",t.toString(),"--file",e.name,"--memory-io","0"],o=[{type:BA.Z.Image}],r=await this.runTask("dicom",a,i,o);return r.outputs[0].data}async buildVolume(e){await this.initialize();const t=await(0,ZA.Z)(e);return t.image}}var TA=n(5602),OA=n(222);async function LA(e){const t=await Mt(e),n=TA.ZP.newInstance();n.setFileName(e.name);try{await n.parseAsArrayBuffer(t)}catch(i){throw new Error("Failed to parse file")}return n.getOutputData()}function zA(e){e.set("vti",Mi),e.set("vtp",Ei),e.set("stl",Ri),wt.forEach((t=>{e.set(t,LA)}))}TA.ZP.setReadImageArrayBufferFromITK(OA.Z);var UA=n(4456),_A=n(6129),HA=n(1347),WA=n(4549);function QA(e,t){const n=pn.ZP.debounce(t.renderWindow.render,5);e.resize=()=>{if(t.container){const n=t.container.getBoundingClientRect();if(n.width===n.height&&0===n.width)return;const i=window.devicePixelRatio||1,a=Math.max(10,Math.floor(i*n.width)),o=Math.max(10,Math.floor(i*n.height));t.openglRenderWindow.setSize(a,o),e.invokeResize({width:a,height:o}),e.render(!0)}},e.render=(e=!0)=>{t.orientationWidget.updateMarkerOrientation(),e?t.renderWindow.render():n()},e.removeAllRepresentations=()=>{t.representations.forEach((e=>t.renderer.removeViewProp(e))),t.representations.length=0},e.updateCamera=(e,n,i)=>{const a=z.clone(i);z.sub(a,a,e),t.camera.setFocalPoint(...i),t.camera.setPosition(...a),t.camera.setDirectionOfProjection(...e),t.camera.setViewUp(...n)};const{setContainer:i}=e;e.setContainer=e=>{i(e),t.cornerAnnotation.setContainer(null)};const{resetCamera:a}=e;e.resetCamera=(...e)=>{a(e),t.renderer.updateLightsGeometryToFollowCamera()}}function NA(e,t){t.classHierarchy.push("vtkLPSView3DProxy"),QA(e,t)}function jA(e,t,n={}){Object.assign(t,n),WA.Z.extend(e,t,n),NA(e,t)}const GA=pn.ZP.newInstance(jA,"vtkLPSView3DProxy");var KA={newInstance:GA,extend:jA},JA=n(6698);function YA(e,t){t.classHierarchy.push("vtkLPSView2DProxy");const n={...e};QA(e,t),e.bindRepresentationToManipulator=()=>{},e.resetCamera=(e=null)=>{t.renderer.resetCamera(e)},e.addRepresentation=e=>{n.addRepresentation(e),e.setSlicingMode&&t.slicingMode&&e.setSlicingMode(t.slicingMode)},e.setSlicingMode=e=>{if(n.setSlicingMode(e)&&e){let n=t.representations.length;while(n--){const i=t.representations[n];i.setSlicingMode&&i.setSlicingMode(e)}}},e.resizeToFit=(e,n,i)=>{const[a,o]=t.openglRenderWindow.getSize();let r,s;0===e&&1===n?[,s,r]=i:0===e&&2===n?[,r,s]=i:1===e&&0===n?[s,,r]=i:1===e&&2===n?[r,,s]=i:2===e&&0===n?[s,r]=i:2===e&&1===n&&([r,s]=i);const l=a/o,c=r/s;let u=0;u=l>=c?s/2:r/2/l,t.camera.setParallelScale(u)}}const qA={slicingMode:null};function XA(e,t,n={}){Object.assign(t,n,qA),pn.ZP.setGet(e,t,["slicingMode"]),JA.ZP.extend(e,t,n),YA(e,t)}const $A=pn.ZP.newInstance(XA,"vtkLPSView2DProxy");var ep={newInstance:$A,extend:XA},tp=n(8316);const np={X:"I",Y:"J",Z:"K",I:"I",J:"J",K:"K"};function ip(e,t){t.classHierarchy.push("vtkIJKSliceRepresentationProxy");const n={...e};e.setColorBy=()=>{},e.setSlicingMode=e=>n.setSlicingMode(np[e])}const ap={};function op(e,t,n={}){Object.assign(t,ap,n),tp.ZP.extend(e,t),pn.ZP.proxyPropertyMapping(e,t,{opacity:{modelKey:"property",property:"opacity"}}),ip(e,t)}const rp=pn.ZP.newInstance(op,"vtkIJKSliceRepresentationProxy");var sp={newInstance:rp,extend:op},lp=n(1493);const{InterpolationType:cp}=lp.C;function up(e,t){t.classHierarchy.push("vtkLabelMapSliceRepProxy");let n=null;t.property.setUseLookupTableScalarRange(!0),t.property.setInterpolationType(cp.NEAREST),t.mapper.setRelativeCoincidentTopologyPolygonOffsetParameters(-2,-2);let i=null;function a(e){const n=e.getColorMap();if(n===i)return;i=n;const a=ql.ZP.newInstance(),o=dc.ZP.newInstance();Object.keys(n).forEach((e=>{const t=Number(e);a.addRGBPoint(t,...n[e].slice(0,3).map((e=>e/255))),o.addPoint(t,n[e][3]/255)})),t.property.setRGBTransferFunction(a),t.property.setScalarOpacity(o)}function o(e){n&&(n.unsubscribe(),n=null),e&&(n=e.onModified((()=>a(e))),a(e))}e.setColorBy=()=>{},e.delete=pn.ZP.chain(e.delete,(()=>{n&&(n.unsubscribe(),n=null)})),t.sourceDependencies.push({setInputData:o})}const dp={};function Ap(e,t,n={}){Object.assign(t,dp,n),sp.extend(e,t),up(e,t)}const pp=pn.ZP.newInstance(Ap,"vtkLabelMapSliceRepProxy");var vp={newInstance:pp,extend:Ap};function mp(e,t=[],n=[],i={},a={}){return{class:e,options:{links:n,ui:t,...i},props:a}}function gp(e,t=[],n={}){return mp(e,[],[],t,n)}var fp={definitions:{Proxy:{LookupTable:mp(Wr.Z,[],[],{presetName:"Default (Cool to Warm)"}),PiecewiseFunction:mp(Re.Z)},Sources:{TrivialProducer:mp(UA.ZP)},Representations:{ImageSlice:mp(sp),LabelMapSlice:mp(vp),Volume:mp(_A.ZP),Geometry:mp(HA.ZP)},Views:{View3D:gp(KA),View2D:gp(ep)}},representations:{View3D:{vtkImageData:{name:"Volume"},vtkPolyData:{name:"Geometry"}},View2D:{vtkImageData:{name:"ImageSlice"},vtkLabelMap:{name:"LabelMapSlice"}}}};const hp=0;class Cp{constructor(){this.id=hp}nextID(){return this.id+=1,String(this.id)}reset(){this.id=hp}}var yp=n(353),wp=n(3962),bp=n(1440),Sp=n(2666),xp=n(7708),Pp=n(7917),Ip=n(9794),Dp=n(2988),Vp=n(7420);function Rp({stencil:e,location:t,slicingIndex:n,indexToWorld:i}){const[a,o]=e.size,r=Math.floor((a-1)/2),s=Math.floor((o-1)/2),l=a+1,c=o+1,u=[],d=[],A={},p=(e,a)=>{const o=`${e},${a}`;if(o in A)return A[o];const l=[...t].map((e=>Math.round(e)));0===n?(l[1]+=e-r-.5,l[2]+=a-s-.5):1===n?(l[0]+=e-r-.5,l[2]+=a-s-.5):2===n&&(l[0]+=e-r-.5,l[1]+=a-s-.5);const c=[];z.transformMat4(c,l,i),u.push(c);const d=u.length-1;return A[o]=d,d},v=(t,n)=>t<0||t>=a||n<0||n>=o?0:e.pixels[n*a+t]||0;for(let m=0;m<c;m++)for(let e=0;e<l;e++){const t=v(e,m)+v(e-1,m)+v(e,m-1)+v(e-1,m-1);if(t>0&&t<4){const t=p(e,m);if(v(e,m)!==v(e,m-1)){const n=p(e+1,m);d.push([t,n])}if(v(e,m)!==v(e-1,m)){const n=p(e,m+1);d.push([t,n])}}}return{points:new Float32Array(u.flat()),lines:new Uint16Array(d.map((([e,t])=>[2,e,t])).flat())}}function Mp(e,t){t.classHierarchy.push("vtkPaintBrushContextRepresentation"),t.internalPolyData=yp.ZP.newInstance({mtime:0}),t.internalArrays={points:t.internalPolyData.getPoints(),lines:t.internalPolyData.getLines()},t.pipelines={brush:{source:e,mapper:xp.ZP.newInstance({transformCoordinate:Pp.ZP.newInstance({coordinateSystem:Ip.c.WORLD})}),actor:wp.ZP.newInstance({pickable:!1,parentProp:e})}};const n=t.pipelines.brush.actor.getProperty();n.setLineWidth(2),n.setColor([1,0,0]),n.setDisplayLocation(Vp.q.FOREGROUND),n.setRepresentation(Dp.hX.SURFACE),Sp.ZP.connectPipeline(t.pipelines.brush),e.addActor(t.pipelines.brush.actor),e.requestData=(e,n)=>{const i=e[0],a=i.getStencil(),o=i.getBrush(),{indexToWorld:r,worldToIndex:s}=t;if(a&&o.getOrigin()){const e=[];z.transformMat4(e,o.getOrigin(),s);const n=Rp({stencil:a,location:e,slicingIndex:t.slicingIndex,indexToWorld:r}),{points:i,lines:l}=t.internalArrays;i.setData(n.points),l.setData(n.lines),t.internalPolyData.modified()}n[0]=t.internalPolyData}}const Ep={defaultScale:1,drawBorder:!1,drawFace:!0,worldToIndex:null,indexToWorld:null,slicingIndex:0};function Bp(e,t,n={}){Object.assign(t,Ep,n),bp.Z.extend(e,t,n),Na.ZP.setGet(e,t,["slicingIndex","indexToWorld","worldToIndex"]),Na.ZP.get(e,t,["mapper","actor"]),Mp(e,t)}const kp=Na.ZP.newInstance(Bp,"vtkPaintBrushContextRepresentation");var Zp={newInstance:kp,extend:Bp};function Fp(e){return e.altKey||e.controlKey||e.shiftKey}function Tp(e,t){t.classHierarchy.push("vtkPaintWidgetProp"),pn.ZP.setGet(e,t,["manipulator"]);let n=!1;e.handleLeftButtonPress=i=>{if(!t.manipulator||Fp(i))return pn.ZP.VOID;const a=t.manipulator.handleEvent(i,t._apiSpecificRenderWindow);if(!a)return pn.ZP.VOID;const o=t.widgetState.getBrush();return o.setOrigin(...a),n=!0,e.invokeStartInteractionEvent(),pn.ZP.EVENT_ABORT},e.handleMouseMove=i=>{if(Fp(i))return pn.ZP.VOID;const a=t.manipulator.handleEvent(i,t._apiSpecificRenderWindow);if(!a)return pn.ZP.VOID;const o=t.widgetState.getBrush();return o.setOrigin(...a),n&&e.invokeInteractionEvent(),pn.ZP.EVENT_ABORT},e.handleLeftButtonRelease=t=>!n||Fp(t)?pn.ZP.VOID:(n=!1,e.invokeEndInteractionEvent(),pn.ZP.EVENT_ABORT),e.handleMouseWheel=()=>n?pn.ZP.EVENT_ABORT:pn.ZP.VOID,e.grabFocus=()=>{t.hasFocus||(t.hasFocus=!0,t._interactor.requestAnimation(e))},e.loseFocus=()=>{t.hasFocus&&t._interactor.cancelAnimation(e),t.hasFocus=!1}}function Op(){return ke.Z.createBuilder().addStateFromMixin({labels:["brush"],name:"brush",mixins:["origin","scale1","visible","color"],initialValues:{scale1:1,origin:null,visible:!0}}).addField({name:"stencil",initialValue:null}).build()}function Lp(e,t){t.classHierarchy.push("vtkPaintWidget"),t.methodsToLink=["slicingIndex","indexToWorld","worldToIndex"],e.getRepresentationsForViewType=()=>[{builder:Zp,labels:["brush"]}],t.manipulator=mn.ZP.newInstance()}const zp={};function Up(e,t,n={}){Object.assign(t,zp,n),vn.ZP.extend(e,t,{...n,behavior:Tp,widgetState:Op()}),pn.ZP.get(e,t,["manipulator"]),Lp(e,t)}const _p=pn.ZP.newInstance(Up,"vtkPaintWidget");var Hp={newInstance:_p,extend:Up};function Wp(e,t){const n=new Uint8Array(e*t),i=(t,i)=>{n[t+i*e]=1},a=(t,i,a)=>{const o=a*e+t,r=o+(i-t+1);n.fill(1,o,r)};let o=0,r=0,s=e-1,l=t-1,c=s,u=l;const d=1&u;let A=4*(1-c)*u*u,p=4*(d+1)*c*c,v=A+p+d*c*c,m=0;r+=Math.floor((u+1)/2),l=r-d,c*=8*c,u*=8*u;do{a(o,s,r),a(o,s,l),m=2*v,m<=p&&(r++,l--,p+=c,v+=p),(m>=A||2*v>p)&&(o++,s--,A+=u,v+=A)}while(o<=s);while(r-l<t)i(o-1,r),i(s+1,r++),i(o-1,l),i(s+1,l--);return n}class Qp{constructor(){this.size=1,this.scale=[1,1],this.recomputeStencil()}setSize(e){this.size=Math.max(0,e),this.recomputeStencil()}setScale(e){this.scale=e,this.recomputeStencil()}recomputeStencil(){const e=[Math.ceil(this.size*this.scale[0]),Math.ceil(this.size*this.scale[1])];this.cachedStencil={size:e,pixels:Wp(e[0],e[1])}}getStencil(){return this.cachedStencil}}class Np{constructor(){this.factory=Hp.newInstance(),this.brush=new Qp,this.brushValue=1}updateWidgetStencil(){const e=this.brush.getStencil(),t=this.factory.getWidgetState();t.setStencil(e)}setBrushSize(e){this.brush.setSize(e),this.updateWidgetStencil()}setBrushScale(e){this.brush.setScale(e),this.updateWidgetStencil()}setBrushValue(e){this.brushValue=e}paintLabelmap(e,t,n,i){const a=this.brush.getStencil(),o=[...n.map((e=>Math.round(e)))],r=o[t];o.splice(t,1);let s=[...o];i&&(s=[...i.map((e=>Math.round(e)))],s.splice(t,1));const l=e.getPointData().getScalars().getData(),c=e.getDimensions(),u=c[0],d=c[0]*c[1],A=e=>e[0]>=0&&e[1]>=0&&e[2]>=0&&e[0]<c[0]&&e[1]<c[1]&&e[2]<c[2],{pixels:p,size:v}=a,m=Math.floor((v[0]-1)/2),g=Math.floor((v[1]-1)/2),f=[...o],h=[...s],C=[0,0,0],y=[0,0];for(let w=0;w<v[1];w++){const e=w-g,n=w*v[0];for(let i=0;i<v[0];i++){const a=i-m,c=n+i;if(p[c]){f[0]=o[0]+a,f[1]=o[1]+e,h[0]=s[0]+a,h[1]=s[1]+e;const n=h[0]-f[0],i=h[1]-f[1];let c=Math.abs(Math.abs(n)>Math.abs(i)?n:i);const p=n/c,v=i/c;[y[0],y[1]]=f;while(c-- >=0){if(y.splice(t,0,r),C[0]=Math.round(y[0]),C[1]=Math.round(y[1]),C[2]=Math.round(y[2]),A(C)){const e=C[0]+C[1]*u+C[2]*d;l[e]=this.brushValue}y.splice(t,1),y[0]+=p,y[1]+=v}}}}e.modified()}}var jp=n(9391);class Gp{constructor(){this.recurseGuard=!1,this.listeners=new Map,this.factories=new Map,this.events=(0,jp.Z)()}teardown(){this.events.all.clear(),this.listeners.forEach((e=>e())),this.factories.forEach((e=>e.delete())),this.listeners.clear(),this.factories.clear()}getFactory(e){var t;return null!==(t=this.factories.get(e))&&void 0!==t?t:null}createRuler(e){if(this.factories.has(e))return this.factories.get(e);const t=$a.newInstance();return this.listeners.set(e,this.createStoreUpdater(e,t.getWidgetState())),this.factories.set(e,t),t}removeRuler(e){const t=this.factories.get(e);t&&(t.delete(),this.factories.delete(e));const n=this.listeners.get(e);n&&(n(),this.listeners.delete(e))}createStoreUpdater(e,t){const n=t.onModified((()=>{if(this.recurseGuard)return;const n={firstPoint:t.getFirstPoint().getOrigin(),secondPoint:t.getSecondPoint().getOrigin(),interactionState:t.getInteractionState()};this.events.emit("widgetUpdate",{id:e,update:n})}));return()=>{n.unsubscribe()}}updateRuler(e,t){const n=this.factories.get(e);if(n){this.recurseGuard=!0;const e=n.getWidgetState(),i=e.getFirstPoint(),a=e.getSecondPoint();t.firstPoint&&(i.setOrigin(t.firstPoint),i.setVisible(!0)),t.secondPoint&&(a.setOrigin(t.secondPoint),a.setVisible(!0)),Number.isInteger(t.interactionState)&&e.setInteractionState(t.interactionState),this.recurseGuard=!1}}}function Kp({rulers:e,paint:t,proxies:n,id:i,dicomIO:a}={}){const o={$rulers:null!==e&&void 0!==e?e:new Gp,$paint:null!==t&&void 0!==t?t:new Np,$proxies:n,$id:null!==i&&void 0!==i?i:new Cp,$dicomIO:null!==a&&void 0!==a?a:new FA};return()=>o}function Jp(){const{exitPointerLock:e}=document;document.exitPointerLock=()=>{try{null===e||void 0===e||e.call(document)}catch(t){}}}i.Z.config.productionTip=!1,i.Z.use(a.ZP),i.Z.use(o.ZP),i.Z.use(r.og),Jp(),l.ZP.setResolveCoincidentTopologyToPolygonOffset(),l.ZP.setResolveCoincidentTopologyPolygonOffsetParameters(-3,-3),l.ZP.setResolveCoincidentTopologyLineOffsetParameters(-3,-3),c.ZP.setResolveCoincidentTopologyToPolygonOffset(),c.ZP.setResolveCoincidentTopologyPolygonOffsetParameters(1,1),zA(Et);const Yp=s.ZP.newInstance({proxyConfiguration:fp}),qp=new FA;qp.initialize();const Xp=(0,r.WB)();Xp.use(Kp({proxies:new Ho(Yp),dicomIO:qp}));const $p=new i.Z({vuetify:Ud,proxyManager:Yp,pinia:Xp,provide:{ProxyManager:Yp},render:e=>e(MA)});$p.$mount("#app")},9257:function(e,t){"use strict";const n={pipelineWorkerUrl:"/itk/web-workers/min-bundles/pipeline.worker.js",imageIOUrl:"/itk/image-io",meshIOUrl:"/itk/mesh-io",pipelinesUrl:"/itk/pipelines"};t["Z"]=n},6882:function(e,t,n){"use strict";e.exports=n.p+"img/KitwareHeadAndNeck.11db5ffb.jpg"},5042:function(){}},t={};function n(i){var a=t[i];if(void 0!==a)return a.exports;var o=t[i]={id:i,loaded:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}n.m=e,function(){n.amdD=function(){throw new Error("define cannot be used indirect")}}(),function(){n.amdO={}}(),function(){var e=[];n.O=function(t,i,a,o){if(!i){var r=1/0;for(u=0;u<e.length;u++){i=e[u][0],a=e[u][1],o=e[u][2];for(var s=!0,l=0;l<i.length;l++)(!1&o||r>=o)&&Object.keys(n.O).every((function(e){return n.O[e](i[l])}))?i.splice(l--,1):(s=!1,o<r&&(r=o));if(s){e.splice(u--,1);var c=a();void 0!==c&&(t=c)}}return t}o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[i,a,o]}}(),function(){n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,{a:t}),t}}(),function(){n.d=function(e,t){for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})}}(),function(){n.u=function(e){return"js/"+e+"."+{385:"51ca48a2",422:"c64a6aa7",979:"c4823352"}[e]+".js"}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}}(),function(){n.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e}}(),function(){n.p="/"}(),function(){n.b=document.baseURI||self.location.href;var e={143:0};n.O.j=function(t){return 0===e[t]};var t=function(t,i){var a,o,r=i[0],s=i[1],l=i[2],c=0;if(r.some((function(t){return 0!==e[t]}))){for(a in s)n.o(s,a)&&(n.m[a]=s[a]);if(l)var u=l(n)}for(t&&t(i);c<r.length;c++)o=r[c],n.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return n.O(u)},i=self["webpackChunkVolView"]=self["webpackChunkVolView"]||[];i.forEach(t.bind(null,0)),i.push=t.bind(null,i.push.bind(i))}();var i=n.O(void 0,[998],(function(){return n(4132)}));i=n.O(i)})();
2
+ //# sourceMappingURL=app.81e49d9a.js.map