@3cr/viewer-browser 0.0.247 → 0.0.292

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 (519) hide show
  1. package/.circleci/config.yml +53 -0
  2. package/README.md +79 -74
  3. package/components.d.ts +94 -36
  4. package/dist/Viewer3CR.js +663 -47
  5. package/dist/Viewer3CR.mjs +108285 -37154
  6. package/dist/Viewer3CR.umd.js +663 -47
  7. package/index.html +35 -33
  8. package/package.json +27 -8
  9. package/playground/img.png +0 -0
  10. package/playground/index.html +6 -2
  11. package/src/App.vue +41 -97
  12. package/src/__tests__/app.spec.ts +2 -1
  13. package/src/__tests__/main.spec.ts +14 -14
  14. package/src/assets/_palette.scss +112 -0
  15. package/src/assets/_settings.scss +64 -0
  16. package/src/assets/_typography.scss +187 -0
  17. package/src/assets/images/cloud-storage.svg +22 -0
  18. package/src/assets/images/courtney.png +0 -0
  19. package/src/assets/images/dark/magic-wand.svg +32 -0
  20. package/src/assets/images/dark-theme.svg +33 -0
  21. package/src/assets/images/dot.svg +5 -0
  22. package/src/assets/images/dr-miles.png +0 -0
  23. package/src/assets/images/illustration.svg +118 -0
  24. package/src/assets/images/intro.svg +30 -0
  25. package/src/assets/{magic_wand.svg → images/light/magic-wand.svg} +22 -14
  26. package/src/assets/images/light-theme.svg +33 -0
  27. package/src/assets/images/system-theme.svg +51 -0
  28. package/src/assets/images/totalSegmentator.png +0 -0
  29. package/src/assets/logos/3dicom/black/black.svg +30 -0
  30. package/src/assets/logos/3dicom/colour/colour.svg +18 -0
  31. package/src/assets/logos/3dicom/colour/colour_single.svg +18 -0
  32. package/src/assets/logos/3dicom/wordmark/patients/patients.svg +29 -0
  33. package/src/assets/logos/3dicom/wordmark/powered-by/powered-by.svg +41 -0
  34. package/src/assets/logos/3dicom/wordmark/practitioners/practitioner.svg +34 -0
  35. package/src/assets/logos/3dicom/wordmark/research/research.svg +29 -0
  36. package/src/assets/logos/license/black/black.svg +22 -0
  37. package/src/assets/logos/license/white/white.svg +22 -0
  38. package/src/assets/styles.scss +435 -12
  39. package/src/components/ShFlatIconBtn.vue +36 -0
  40. package/src/components/ShPlainIconBtn.vue +42 -0
  41. package/src/components/ShSelect.vue +48 -0
  42. package/src/components/ShTextField.vue +39 -0
  43. package/src/components/ShTextarea.vue +39 -0
  44. package/src/components/__tests__/ShFlatIconBtn.spec.ts +32 -0
  45. package/src/components/__tests__/ShPlainIconBtn.spec.ts +37 -0
  46. package/src/components/__tests__/ShSelect.spec.ts +30 -0
  47. package/src/components/__tests__/ShTextField.spec.ts +30 -0
  48. package/src/components/__tests__/ShTextarea.spec.ts +30 -0
  49. package/src/components/demo/CloudDropZone.vue +105 -0
  50. package/src/components/demo/DemoAvatarDropdownMenu.vue +343 -0
  51. package/src/components/demo/DemoInfoModal.vue +60 -0
  52. package/src/components/demo/DemoNotificationNavigationDrawer.vue +118 -0
  53. package/src/components/demo/DemoPurchaseCreditsModal.vue +141 -0
  54. package/src/components/demo/DemoUpgradeCloudStorageModal.vue +74 -0
  55. package/src/components/demo/DemoUpgradePlanModal.vue +17 -0
  56. package/src/components/demo/UploadDicomToCloudModal.vue +225 -0
  57. package/src/components/demo/__tests__/CloudDropZone.spec.ts +132 -0
  58. package/src/components/demo/__tests__/DemoAvatarDropdownMenu.spec.ts +16 -0
  59. package/src/components/demo/{licence/__tests__/DemoLicenceEnableCloudStorageModal.spec.ts → __tests__/DemoEnableCloudStorageModal.spec.ts} +11 -11
  60. package/src/components/demo/{licence/__tests__/DemoLicenceInfoModal.spec.ts → __tests__/DemoInfoModal.spec.ts} +11 -8
  61. package/src/components/demo/__tests__/DemoNotificationNavigationDrawer.spec.ts +56 -0
  62. package/src/components/demo/__tests__/UploadDicomToCloudModal.spec.ts +320 -0
  63. package/src/components/demo/__tests__/demo-payload.spec.ts +10 -0
  64. package/src/components/demo/demo-notifications.ts +45 -0
  65. package/src/components/demo/demo-payload.ts +9 -0
  66. package/src/components/demo/fileReader.ts +47 -0
  67. package/src/{composables/useViewerOptions.ts → components/demo/mockDemoViewerStlDecimator.ts} +8 -12
  68. package/src/components/intro/ViewerIntro.vue +56 -0
  69. package/src/components/intro/ViewerTour.vue +53 -0
  70. package/src/components/intro/tour/Tour.vue +205 -0
  71. package/src/components/intro/tour/step.ts +6 -0
  72. package/src/components/modal/ActionRail.vue +4 -0
  73. package/src/components/modal/Viewer3cr.vue +224 -0
  74. package/src/components/modal/Viewer3crWebGL.vue +65 -0
  75. package/src/components/modal/ViewerActionRail.vue +10 -27
  76. package/src/components/modal/ViewerMain.vue +83 -0
  77. package/src/components/modal/ViewerNavigationDrawer.vue +269 -68
  78. package/src/components/modal/ViewerScanView.vue +223 -67
  79. package/src/components/modal/__tests__/{MftpWebGL3DRModal.spec.ts → Viewer3cr.spec.ts} +154 -53
  80. package/src/components/modal/__tests__/{WebGL3DR.spec.ts → Viewer3crWebGL.spec.ts} +11 -11
  81. package/src/components/modal/__tests__/ViewerNavigationDrawer.spec.ts +271 -11
  82. package/src/components/modal/__tests__/ViewerScanView.spec.ts +15 -7
  83. package/src/components/modal/actions/Action.vue +3 -8
  84. package/src/components/modal/actions/Flip3dAction.vue +31 -16
  85. package/src/components/modal/actions/FlipHorizontalAction.vue +14 -5
  86. package/src/components/modal/actions/FlipVerticalAction.vue +14 -5
  87. package/src/components/modal/actions/FullscreenAction.vue +9 -5
  88. package/src/components/modal/actions/PanAction.vue +11 -51
  89. package/src/components/modal/actions/ResetViewAction.vue +10 -8
  90. package/src/components/modal/actions/Rotate2dAction.vue +25 -15
  91. package/src/components/modal/actions/Slice3dAction.vue +22 -10
  92. package/src/components/modal/actions/ZoomAction.vue +21 -13
  93. package/src/components/modal/actions/__tests__/Action.spec.ts +2 -2
  94. package/src/components/modal/actions/__tests__/Flip3dAction.spec.ts +58 -14
  95. package/src/components/modal/actions/__tests__/FlipHorizontalAction.spec.ts +15 -5
  96. package/src/components/modal/actions/__tests__/FlipVerticalAction.spec.ts +15 -5
  97. package/src/components/modal/actions/__tests__/FullscreenAction.spec.ts +7 -5
  98. package/src/components/modal/actions/__tests__/PanAction.spec.ts +13 -32
  99. package/src/components/modal/actions/__tests__/ResetViewAction.spec.ts +5 -3
  100. package/src/components/modal/actions/__tests__/Rotate2dAction.spec.ts +13 -6
  101. package/src/components/modal/actions/__tests__/Slice3dAction.spec.ts +1 -1
  102. package/src/components/modal/actions/__tests__/ZoomAction.spec.ts +25 -11
  103. package/src/components/modal/app-bars/ViewerActionBar.vue +224 -0
  104. package/src/components/modal/app-bars/ViewerAppBar.vue +126 -0
  105. package/src/components/modal/app-bars/__tests__/ViewerActionBar.spec.ts +176 -0
  106. package/src/components/modal/app-bars/__tests__/ViewerAppBar.spec.ts +99 -0
  107. package/src/components/modal/layouts/Layout1x3ClipPath.vue +35 -0
  108. package/src/components/modal/layouts/Layout2x2ClipPath.vue +35 -0
  109. package/src/components/modal/layouts/LayoutFullscreenClipPath.vue +29 -0
  110. package/src/components/modal/layouts/__tests__/Layout1x3ClipPath.spec.ts +15 -0
  111. package/src/components/modal/layouts/__tests__/Layout2x2ClipPath.spec.ts +15 -0
  112. package/src/components/modal/layouts/__tests__/LayoutFullscreenClipPath.spec.ts +15 -0
  113. package/src/components/modal/layouts/composables/__tests__/useLayout1x3.spec.ts +40 -0
  114. package/src/components/modal/layouts/composables/__tests__/useLayout2x2.spec.ts +40 -0
  115. package/src/components/modal/layouts/composables/__tests__/useLayoutFullscreen.spec.ts +40 -0
  116. package/src/components/modal/layouts/composables/useLayout1x3.ts +46 -0
  117. package/src/components/modal/layouts/composables/useLayout2x2.ts +46 -0
  118. package/src/components/modal/layouts/composables/useLayoutFullscreen.ts +24 -0
  119. package/src/components/modal/menus/AutoAnnotateMenu.vue +67 -0
  120. package/src/components/modal/menus/AvatarDropdownMenu.vue +66 -0
  121. package/src/components/modal/menus/HelpMenu.vue +47 -0
  122. package/src/components/modal/menus/SettingsMenu.vue +242 -92
  123. package/src/components/modal/menus/ShareMenu.vue +58 -0
  124. package/src/components/modal/menus/__tests__/AutoAnnotateMenu.spec.ts +80 -0
  125. package/src/components/modal/menus/__tests__/AvatarDropdownMenu.spec.ts +49 -0
  126. package/src/components/modal/menus/__tests__/HelpMenu.spec.ts +12 -0
  127. package/src/components/modal/menus/__tests__/SettingsMenu.spec.ts +163 -57
  128. package/src/components/modal/modal/AboutModal.vue +61 -0
  129. package/src/components/modal/modal/AiModelList.vue +70 -0
  130. package/src/components/modal/{AskAI.vue → modal/AskAiModal.vue} +26 -34
  131. package/src/components/modal/modal/AutoAnnotateModal.vue +136 -0
  132. package/src/components/modal/modal/CloseViewerModal.vue +108 -0
  133. package/src/components/modal/modal/DataOverlayGeneralModal.vue +122 -0
  134. package/src/components/modal/modal/DataOverlayMeasurementModal.vue +59 -0
  135. package/src/components/modal/modal/DataOverlayModal.vue +121 -0
  136. package/src/components/modal/modal/ShareModal.vue +201 -0
  137. package/src/components/modal/modal/UploadsDrawer.vue +165 -0
  138. package/src/components/modal/modal/WhatsNewModal.vue +45 -0
  139. package/src/components/modal/modal/__tests__/AboutModal.spec.ts +60 -0
  140. package/src/components/modal/modal/__tests__/AiModelList.spec.ts +50 -0
  141. package/src/components/modal/{__tests__ → modal/__tests__}/AskAI.spec.ts +8 -7
  142. package/src/components/modal/modal/__tests__/AutoAnnotateModal.spec.ts +29 -0
  143. package/src/components/modal/modal/__tests__/CloseViewerModal.spec.ts +60 -0
  144. package/src/components/modal/modal/__tests__/DataOverlayGeneralModal.spec.ts +55 -0
  145. package/src/components/modal/modal/__tests__/DataOverlayMeasurementModal.spec.ts +82 -0
  146. package/src/components/modal/modal/__tests__/DataOverlayModal.spec.ts +94 -0
  147. package/src/components/modal/modal/__tests__/ShareModal.spec.ts +262 -0
  148. package/src/components/modal/modal/__tests__/UploadsDrawer.spec.ts +174 -0
  149. package/src/components/modal/modal/__tests__/WhatsNewModal.spec.ts +29 -0
  150. package/src/components/modal/snackbars/AnnotationGeneratedSnackbar.vue +34 -0
  151. package/src/components/modal/snackbars/ImagesSharedSnackbar.vue +26 -0
  152. package/src/components/modal/snackbars/LinkCopiedSnackbar.vue +26 -0
  153. package/src/components/modal/snackbars/__tests__/AnnotationGeneratedSnackbar.spec.ts +43 -0
  154. package/src/components/modal/snackbars/__tests__/ImagesSharedSnackbar.spec.ts +22 -0
  155. package/src/components/modal/snackbars/__tests__/LinkCopiedSnackbar.spec.ts +21 -0
  156. package/src/components/navigation/annotation/AnnotationCreateModal.vue +114 -0
  157. package/src/components/navigation/annotation/AnnotationCreateSnackbar.vue +20 -0
  158. package/src/components/navigation/annotation/AnnotationDataTable.vue +157 -0
  159. package/src/components/navigation/annotation/AnnotationDeleteModal.vue +48 -0
  160. package/src/components/navigation/annotation/AnnotationDeleteSnackbar.vue +25 -0
  161. package/src/components/navigation/annotation/AnnotationForm.vue +277 -0
  162. package/src/components/navigation/annotation/AnnotationIcon.vue +45 -0
  163. package/src/components/navigation/annotation/AnnotationInfo.vue +141 -0
  164. package/src/components/navigation/annotation/AnnotationMenu.vue +99 -0
  165. package/src/components/navigation/annotation/AnnotationPanel.vue +30 -0
  166. package/src/components/navigation/annotation/AnnotationTools.vue +104 -0
  167. package/src/components/navigation/annotation/AnnotationUpdateModal.vue +78 -0
  168. package/src/components/navigation/annotation/AnnotationVisibilityBtn.vue +52 -0
  169. package/src/components/navigation/annotation/DrawerTitle.vue +25 -0
  170. package/src/components/navigation/annotation/__tests__/AnnotationCreateModal.spec.ts +178 -0
  171. package/src/components/navigation/annotation/__tests__/AnnotationCreateSnackbar.spec.ts +31 -0
  172. package/src/components/navigation/annotation/__tests__/AnnotationDataTable.spec.ts +79 -0
  173. package/src/components/navigation/annotation/__tests__/AnnotationDeleteSnackbar.spec.ts +66 -0
  174. package/src/components/navigation/annotation/__tests__/AnnotationForm.spec.ts +261 -0
  175. package/src/components/navigation/annotation/__tests__/AnnotationIcon.spec.ts +13 -0
  176. package/src/components/navigation/annotation/__tests__/AnnotationTools.spec.ts +116 -0
  177. package/src/components/navigation/display/DisplayPanel.vue +156 -0
  178. package/src/components/{views/__tests__/DisplaySettings.spec.ts → navigation/display/__tests__/DisplayPanel.spec.ts} +14 -3
  179. package/src/components/navigation/history/HistoryModal.vue +140 -0
  180. package/src/components/navigation/mcad/McadAddObjectBtn.vue +41 -0
  181. package/src/components/navigation/mcad/McadDataTable.vue +78 -0
  182. package/src/components/navigation/mcad/McadDataTableItems.vue +382 -0
  183. package/src/components/navigation/mcad/McadDeleteModal.vue +44 -0
  184. package/src/components/navigation/mcad/McadDropZone.vue +148 -0
  185. package/src/components/navigation/mcad/McadFloating.vue +193 -0
  186. package/src/components/navigation/mcad/McadIcon.vue +34 -0
  187. package/src/components/navigation/mcad/McadInvert.vue +91 -0
  188. package/src/components/navigation/mcad/McadLockBtn.vue +62 -0
  189. package/src/components/navigation/mcad/McadMenu.vue +248 -0
  190. package/src/components/navigation/mcad/McadOpacity.vue +79 -0
  191. package/src/components/navigation/mcad/McadPanel.vue +31 -0
  192. package/src/components/navigation/mcad/McadToggleSortBtn.vue +18 -0
  193. package/src/components/navigation/mcad/McadToggleVisibilityBtn.vue +46 -0
  194. package/src/components/navigation/mcad/McadUpdateModal.vue +108 -0
  195. package/src/components/navigation/mcad/McadVisibilityBtn.vue +46 -0
  196. package/src/components/navigation/mcad/__tests__/McadAddObjectBtn.spec.ts +73 -0
  197. package/src/components/navigation/mcad/__tests__/McadDataTable.spec.ts +27 -0
  198. package/src/components/navigation/mcad/__tests__/McadDataTableItems.spec.ts +621 -0
  199. package/src/components/navigation/mcad/__tests__/McadDeleteModal.spec.ts +67 -0
  200. package/src/components/navigation/mcad/__tests__/McadDropZone.spec.ts +109 -0
  201. package/src/components/navigation/mcad/__tests__/McadIcon.spec.ts +13 -0
  202. package/src/components/navigation/mcad/__tests__/McadInvert.spec.ts +45 -0
  203. package/src/components/navigation/mcad/__tests__/McadLockBtn.spec.ts +38 -0
  204. package/src/components/navigation/mcad/__tests__/McadMenu.spec.ts +258 -0
  205. package/src/components/navigation/mcad/__tests__/McadOpacity.spec.ts +68 -0
  206. package/src/components/navigation/mcad/__tests__/McadToggleSortBtn.spec.ts +36 -0
  207. package/src/components/navigation/mcad/__tests__/McadToggleVisibilityBtn.spec.ts +53 -0
  208. package/src/components/navigation/mcad/__tests__/McadUpdateModal.spec.ts +122 -0
  209. package/src/components/navigation/mcad/__tests__/McadVisibilityBtn.spec.ts +45 -0
  210. package/src/components/navigation/measurement/MeasurementAngleSnackbar.vue +18 -0
  211. package/src/components/navigation/measurement/MeasurementDataTable.vue +162 -0
  212. package/src/components/navigation/measurement/MeasurementDeleteModal.vue +49 -0
  213. package/src/components/navigation/measurement/MeasurementDeleteSnackbar.vue +40 -0
  214. package/src/components/navigation/measurement/MeasurementIcon.vue +41 -0
  215. package/src/components/navigation/measurement/MeasurementInfo.vue +25 -0
  216. package/src/components/navigation/measurement/MeasurementInfoAngle.vue +36 -0
  217. package/src/components/navigation/measurement/MeasurementInfoLength.vue +37 -0
  218. package/src/components/navigation/measurement/MeasurementInfoPolygon.vue +58 -0
  219. package/src/components/navigation/measurement/MeasurementLengthSnackbar.vue +18 -0
  220. package/src/components/navigation/measurement/MeasurementMenu.vue +97 -0
  221. package/src/components/navigation/measurement/MeasurementPanel.vue +30 -0
  222. package/src/components/navigation/measurement/MeasurementPolygonSnackbar.vue +18 -0
  223. package/src/components/navigation/measurement/MeasurementTools.vue +101 -0
  224. package/src/components/navigation/measurement/MeasurementVisibilityBtn.vue +53 -0
  225. package/src/components/navigation/measurement/__tests__/MeasurementAngleSnackbar.spec.ts +34 -0
  226. package/src/components/navigation/measurement/__tests__/MeasurementDataTable.spec.ts +79 -0
  227. package/src/components/navigation/measurement/__tests__/MeasurementDeleteSnackbar.spec.ts +51 -0
  228. package/src/components/navigation/measurement/__tests__/MeasurementInfo.spec.ts +77 -0
  229. package/src/components/navigation/measurement/__tests__/MeasurementLengthSnackbar.spec.ts +35 -0
  230. package/src/components/navigation/measurement/__tests__/MeasurementPolygonSnackbar.spec.ts +35 -0
  231. package/src/components/navigation/measurement/__tests__/MeasurementTools.spec.ts +87 -0
  232. package/src/components/shared/ColourPalette.vue +72 -0
  233. package/src/components/shared/DoubleSliderSelector.vue +66 -28
  234. package/src/components/shared/HorizontalSliderSelector.vue +80 -0
  235. package/src/components/shared/KeyboardShortcuts.vue +184 -0
  236. package/src/components/shared/LoadingSpinner.vue +508 -144
  237. package/src/components/shared/MultiLoginError.vue +98 -0
  238. package/src/components/shared/NotificationToaster.vue +112 -0
  239. package/src/components/shared/UpdateSnackbar.vue +22 -9
  240. package/src/components/shared/ValueSelector.vue +10 -10
  241. package/src/components/shared/VerticalSliderSelector.vue +45 -44
  242. package/src/components/shared/__tests__/ColourPalette.spec.ts +21 -0
  243. package/src/components/shared/__tests__/DoubleSliderSelector.spec.ts +58 -46
  244. package/src/components/shared/__tests__/HorizontalSliderSelector.spec.ts +35 -0
  245. package/src/components/shared/__tests__/KeyboardShortcuts.spec.ts +50 -0
  246. package/src/components/shared/__tests__/MultiLoginError.spec.ts +50 -0
  247. package/src/components/shared/__tests__/NotificationToaster.spec.ts +65 -0
  248. package/src/components/shared/__tests__/UpdateSnackbar.spec.ts +7 -7
  249. package/src/components/shared/__tests__/ValueSelector.spec.ts +6 -0
  250. package/src/composables/__tests__/useDebounce.spec.ts +17 -0
  251. package/src/composables/__tests__/useMovingAverage.spec.ts +40 -0
  252. package/src/composables/__tests__/useNavigationCube.spec.ts +79 -0
  253. package/src/{functions/__tests__/notification.spec.ts → composables/__tests__/useNotificationHandler.spec.ts} +74 -17
  254. package/src/composables/__tests__/useToolGroup.spec.ts +41 -0
  255. package/src/composables/__tests__/useViewName.spec.ts +29 -0
  256. package/src/composables/useBoundingBox.ts +32 -0
  257. package/src/composables/useEventListener.ts +7 -9
  258. package/src/composables/useMedia.ts +27 -0
  259. package/src/composables/useNavigationCube.ts +80 -0
  260. package/src/composables/useNotificationHandler.ts +82 -0
  261. package/src/composables/useResizeObserver.ts +31 -0
  262. package/src/composables/useToolGroup.ts +36 -0
  263. package/src/composables/useViewName.ts +34 -0
  264. package/src/composables/useViewer3cr.ts +3 -2
  265. package/src/config.ts +1 -1
  266. package/src/constants.ts +8 -0
  267. package/src/functions/HotkeyScope.ts +87 -0
  268. package/src/functions/__tests__/HotkeyScope.spec.ts +49 -0
  269. package/src/functions/__tests__/colours.spec.ts +42 -0
  270. package/src/functions/__tests__/fileReader.spec.ts +130 -0
  271. package/src/functions/__tests__/modelHelper.spec.ts +1 -0
  272. package/src/functions/__tests__/tsHelper.spec.ts +7 -0
  273. package/src/functions/chunker.ts +21 -0
  274. package/src/functions/colours.ts +45 -0
  275. package/src/functions/fileReader.ts +48 -0
  276. package/src/functions/guards/__tests__/isDataOverlayAngle.spec.ts +21 -0
  277. package/src/functions/guards/__tests__/isDataOverlayLength.spec.ts +21 -0
  278. package/src/functions/guards/__tests__/isDataOverlayPolygon.spec.ts +21 -0
  279. package/src/functions/guards/isDataOverlayAngle.ts +3 -4
  280. package/src/functions/guards/isDataOverlayLength.ts +3 -4
  281. package/src/functions/guards/isDataOverlayPolygon.ts +3 -4
  282. package/src/functions/openUrl.ts +3 -0
  283. package/src/functions/{__tests__ → parsers/__tests__}/parseAction.spec.ts +1 -1
  284. package/src/functions/{__tests__ → parsers/__tests__}/parseCallToAction.spec.ts +1 -1
  285. package/src/functions/{__tests__ → parsers/__tests__}/parseDataOverlay.spec.ts +1 -1
  286. package/src/functions/{__tests__ → parsers/__tests__}/parseDataOverlayData.spec.ts +1 -1
  287. package/src/functions/{__tests__ → parsers/__tests__}/parseDataOverlayEvent.spec.ts +3 -3
  288. package/src/functions/{__tests__ → parsers/__tests__}/parseMcadEvent.spec.ts +3 -3
  289. package/src/functions/{parseAction.ts → parsers/parseAction.ts} +1 -2
  290. package/src/functions/{parseCallToAction.ts → parsers/parseCallToAction.ts} +2 -2
  291. package/src/functions/{parseDataOverlay.ts → parsers/parseDataOverlay.ts} +3 -3
  292. package/src/functions/parsers/parseDataOverlayData.ts +9 -0
  293. package/src/functions/parsers/parseDataOverlayEvent.ts +19 -0
  294. package/src/functions/parsers/parseMcadEvent.ts +9 -0
  295. package/src/functions/platform.ts +7 -0
  296. package/src/functions/translateTooltipShortcut.ts +35 -0
  297. package/src/functions/tsHelper.ts +3 -0
  298. package/src/main.ts +68 -43
  299. package/src/models/__tests__/iso-languages.spec.ts +23 -0
  300. package/src/models/__tests__/scanState.spec.ts +14 -38
  301. package/src/models/iso-languages.ts +1609 -0
  302. package/src/models/progress.ts +23 -0
  303. package/src/models/scanState.ts +56 -100
  304. package/src/plugins/__tests__/pinia.spec.ts +7 -0
  305. package/src/plugins/__tests__/vue-i18n.spec.ts +7 -0
  306. package/src/plugins/__tests__/vuetify.spec.ts +3 -3
  307. package/src/plugins/locales/en.json +442 -0
  308. package/src/plugins/material-symbols/aliases.ts +43 -0
  309. package/src/plugins/material-symbols/material-symbols-filled.ts +11 -0
  310. package/src/plugins/material-symbols/material-symbols-outlined.ts +9 -0
  311. package/src/plugins/pinia.ts +3 -0
  312. package/src/plugins/vue-i18n.ts +9 -0
  313. package/src/plugins/vuetify.ts +157 -25
  314. package/src/services/__tests__/features.service.spec.ts +14 -0
  315. package/src/services/__tests__/gpt.service.spec.ts +64 -3
  316. package/src/services/__tests__/viewer-3cr.service.spec.ts +616 -192
  317. package/src/services/features.service.ts +32 -0
  318. package/src/services/gpt.service.ts +5 -2
  319. package/src/services/viewer-3cr.service.ts +374 -307
  320. package/src/stores/__tests__/data-overlay.store.spec.ts +92 -0
  321. package/src/stores/__tests__/demo.store.spec.ts +196 -0
  322. package/src/stores/__tests__/drawer.store.spec.ts +27 -0
  323. package/src/stores/__tests__/intro.store.spec.ts +102 -0
  324. package/src/stores/__tests__/language.store.spec.ts +83 -0
  325. package/src/stores/__tests__/mcad-floating.store.spec.ts +339 -0
  326. package/src/stores/__tests__/mcad.store.spec.ts +88 -0
  327. package/src/stores/__tests__/save.store.spec.ts +51 -0
  328. package/src/stores/__tests__/theme.store.spec.ts +18 -0
  329. package/src/stores/__tests__/tool.store.spec.ts +53 -0
  330. package/src/stores/__tests__/upload.store.spec.ts +19 -0
  331. package/src/stores/__tests__/viewer.store.spec.ts +20 -0
  332. package/src/stores/data-overlay.store.ts +93 -0
  333. package/src/stores/demo.store.ts +284 -0
  334. package/src/stores/drawer.store.ts +23 -0
  335. package/src/stores/intro.store.ts +35 -0
  336. package/src/stores/language.store.ts +59 -0
  337. package/src/stores/mcad-floating.store.ts +141 -0
  338. package/src/stores/mcad.store.ts +53 -0
  339. package/src/stores/save.store.ts +59 -0
  340. package/src/stores/theme.store.ts +45 -0
  341. package/src/stores/tool.store.ts +41 -0
  342. package/src/stores/upload.store.ts +19 -0
  343. package/src/stores/viewer.store.ts +34 -0
  344. package/src/tools/__tests__/annotation-create.tool.spec.ts +90 -0
  345. package/src/tools/__tests__/annotation-move.tool.spec.ts +107 -0
  346. package/src/tools/__tests__/data-overlay.tool.spec.ts +127 -0
  347. package/src/tools/__tests__/mcad-move.tool.spec.ts +106 -0
  348. package/src/tools/__tests__/mcad-rotate.tool.spec.ts +103 -0
  349. package/src/tools/__tests__/mcad-scale.tool.spec.ts +8 -0
  350. package/src/tools/__tests__/mcad-select.tool.spec.ts +63 -0
  351. package/src/tools/__tests__/measurement-angle.tool.spec.ts +26 -0
  352. package/src/tools/__tests__/measurement-length.tool.spec.ts +26 -0
  353. package/src/tools/__tests__/measurement-polygon.tool.spec.ts +26 -0
  354. package/src/tools/annotation-create.tool.ts +48 -0
  355. package/src/tools/annotation-move.tool.ts +48 -0
  356. package/src/tools/data-overlay.tool.ts +45 -48
  357. package/src/tools/mcad-move.tool.ts +47 -0
  358. package/src/tools/mcad-rotate.tool.ts +47 -0
  359. package/src/tools/mcad-scale-tool.ts +10 -0
  360. package/src/tools/mcad-select-tool.ts +32 -0
  361. package/src/tools/measurement-angle.tool.ts +20 -0
  362. package/src/tools/measurement-length.tool.ts +20 -0
  363. package/src/tools/measurement-polygon.tool.ts +20 -0
  364. package/src/types/feature.ts +6 -0
  365. package/src/types/viewer-tool.ts +5 -0
  366. package/test/MockImportOriginal.ts +7 -0
  367. package/test/assertions/beTypeOrNull.ts +24 -0
  368. package/test/fakers/action-data.faker.ts +1 -1
  369. package/test/fakers/action.faker.ts +1 -1
  370. package/test/fakers/call-to-action.faker.ts +1 -1
  371. package/test/fakers/data-overlay-angle.faker.ts +1 -1
  372. package/test/fakers/data-overlay-annotation.faker.ts +1 -1
  373. package/test/fakers/data-overlay-data.faker.ts +18 -15
  374. package/test/fakers/data-overlay-interaction.faker.ts +25 -17
  375. package/test/fakers/data-overlay-length.faker.ts +1 -1
  376. package/test/fakers/data-overlay-mcad.faker.ts +4 -3
  377. package/test/fakers/data-overlay-polygon.faker.ts +1 -1
  378. package/test/fakers/feature.faker.ts +13 -0
  379. package/test/fakers/file.faker.ts +11 -0
  380. package/test/fakers/gpt-question.faker.ts +1 -1
  381. package/test/fakers/gpt-response.faker.ts +1 -1
  382. package/test/fakers/mcad-object-interaction.faker.ts +4 -4
  383. package/test/fakers/orientation.faker.ts +1 -1
  384. package/test/fakers/segment-angle.faker.ts +1 -1
  385. package/test/fakers/upload.faker.ts +14 -0
  386. package/test/getAnimationFrame.ts +3 -0
  387. package/test/plugins/findByTestId.ts +13 -6
  388. package/test/plugins/pinia.ts +20 -0
  389. package/test/plugins/vitest.d.ts +8 -0
  390. package/test/plugins/vue-i18n.ts +22 -0
  391. package/test/plugins/vuetify.ts +10 -0
  392. package/test/setup.ts +37 -12
  393. package/tsconfig.json +1 -1
  394. package/vite.config.mts +48 -18
  395. package/vitest.config.mts +12 -3
  396. package/src/assets/images/MainBackdrop.svg +0 -48
  397. package/src/assets/images/dark/Singular-Health-Disc-Mono.svg +0 -9
  398. package/src/assets/images/dark/demo-icon-small.png +0 -0
  399. package/src/assets/images/dark/demo-logo-small.svg +0 -27
  400. package/src/assets/images/dark/demo-logo.svg +0 -1
  401. package/src/assets/images/light/Singular-Health-Disc-Mono.svg +0 -9
  402. package/src/assets/logos/3dicom/white-mini.svg +0 -20
  403. package/src/components/demo/DemoModal.vue +0 -44
  404. package/src/components/demo/DemoPatientModal.vue +0 -52
  405. package/src/components/demo/__tests__/DemoModal.spec.ts +0 -26
  406. package/src/components/demo/__tests__/DemoPatientModal.spec.ts +0 -38
  407. package/src/components/demo/__tests__/options.spec.ts +0 -25
  408. package/src/components/demo/licence/DemoLicenceEnableCloudStorageModal.vue +0 -64
  409. package/src/components/demo/licence/DemoLicenceInfoModal.vue +0 -49
  410. package/src/components/demo/licence/DemoLicenceSendToPartyModal.vue +0 -178
  411. package/src/components/demo/licence/DemoLicenceShareToMobileModal.vue +0 -102
  412. package/src/components/demo/licence/__tests__/DemoLicenceSendToPartyModal.spec.ts +0 -36
  413. package/src/components/demo/licence/__tests__/DemoLicenceShareToMobileModal.spec.ts +0 -52
  414. package/src/components/demo/options.ts +0 -170
  415. package/src/components/demo/patient/DemoPatientEnableCloudStorageModal.vue +0 -64
  416. package/src/components/demo/patient/DemoPatientInfoModal.vue +0 -49
  417. package/src/components/demo/patient/DemoPatientSendToPartyModal.vue +0 -177
  418. package/src/components/demo/patient/DemoPatientShareToMobileModal.vue +0 -102
  419. package/src/components/demo/patient/__tests__/DemoPatientEnableCloudStorageModal.spec.ts +0 -38
  420. package/src/components/demo/patient/__tests__/DemoPatientInfoModal.spec.ts +0 -38
  421. package/src/components/demo/patient/__tests__/DemoPatientSendToPartyModal.spec.ts +0 -36
  422. package/src/components/demo/patient/__tests__/DemoPatientShareToMobileModal.spec.ts +0 -52
  423. package/src/components/modal/CloseViewerModal.vue +0 -69
  424. package/src/components/modal/MftpWebGL3DRModal.vue +0 -336
  425. package/src/components/modal/ViewerNavigationDrawerContent.vue +0 -168
  426. package/src/components/modal/ViewerNavigationDrawerFooter.vue +0 -131
  427. package/src/components/modal/ViewerNavigationDrawerHeader.vue +0 -33
  428. package/src/components/modal/WebGL3DR.vue +0 -91
  429. package/src/components/modal/__tests__/CloseViewerModal.spec.ts +0 -70
  430. package/src/components/modal/__tests__/ViewerNavigationDrawerContent.spec.ts +0 -11
  431. package/src/components/modal/__tests__/ViewerNavigationDrawerFooter.spec.ts +0 -46
  432. package/src/components/modal/__tests__/ViewerNavigationDrawerHeader.spec.ts +0 -40
  433. package/src/components/modal/actions/NavigationCubeAction.vue +0 -26
  434. package/src/components/modal/actions/__tests__/NavigationCubeAction.spec.ts +0 -25
  435. package/src/components/modal/buttons/AutoAnnotateBtn.vue +0 -197
  436. package/src/components/modal/buttons/__tests__/AutoAnnotateBtn.spec.ts +0 -28
  437. package/src/components/modal/menus/FileMenu.vue +0 -73
  438. package/src/components/modal/menus/__tests__/FileMenu.spec.ts +0 -110
  439. package/src/components/navigation/mcad/McadGlobalActions.vue +0 -20
  440. package/src/components/navigation/mcad/McadGlobalOpacitySlider.vue +0 -103
  441. package/src/components/navigation/mcad/McadGlobalScanViewBtn.vue +0 -28
  442. package/src/components/navigation/mcad/McadGlobalVisibilityBtn.vue +0 -38
  443. package/src/components/views/AnnotationTreeView.vue +0 -236
  444. package/src/components/views/DisplaySettings.vue +0 -94
  445. package/src/components/views/MarkupTreeView.vue +0 -201
  446. package/src/components/views/McadObjectTreeView.vue +0 -129
  447. package/src/components/views/__tests__/AnnotationTreeView.spec.ts +0 -62
  448. package/src/components/views/__tests__/MarkupTreeView.spec.ts +0 -41
  449. package/src/components/views/__tests__/McadObjectTreeView.spec.ts +0 -47
  450. package/src/components/views/modals/DataOverlayGeneralModal.vue +0 -71
  451. package/src/components/views/modals/DataOverlayMarkupModal.vue +0 -60
  452. package/src/components/views/modals/DataOverlayModal.vue +0 -88
  453. package/src/components/views/shared/MaskIcon.vue +0 -44
  454. package/src/components/views/shared/ObjectColor.vue +0 -31
  455. package/src/components/views/shared/ObjectLabel.vue +0 -30
  456. package/src/components/views/shared/Opacity.vue +0 -65
  457. package/src/components/views/shared/VisibilityBtn.vue +0 -25
  458. package/src/components/views/shared/__tests__/MaskIcon.spec.ts +0 -10
  459. package/src/components/views/shared/__tests__/ObjectColor.spec.ts +0 -10
  460. package/src/components/views/shared/__tests__/ObjectLabel.spec.ts +0 -10
  461. package/src/components/views/shared/__tests__/Opacity.spec.ts +0 -24
  462. package/src/components/views/shared/__tests__/VisibilityBtn.spec.ts +0 -11
  463. package/src/components/views/types/annotation-tree-view-item-child-action.ts +0 -6
  464. package/src/components/views/types/annotation-tree-view-item-child.ts +0 -9
  465. package/src/components/views/types/annotation-tree-view-item.ts +0 -13
  466. package/src/components/views/types/markup-tree-view-item-child.ts +0 -6
  467. package/src/components/views/types/markup-tree-view-item.ts +0 -14
  468. package/src/components/views/types/mcad-object-tree-view-item.ts +0 -13
  469. package/src/composables/__tests__/useAnnotations.spec.ts +0 -35
  470. package/src/composables/__tests__/useIntroJs.spec.ts +0 -51
  471. package/src/composables/__tests__/useMarkups.spec.ts +0 -39
  472. package/src/composables/__tests__/useMcadObjects.spec.ts +0 -36
  473. package/src/composables/__tests__/useNavigationCubeObserver.spec.ts +0 -61
  474. package/src/composables/useAnnotations.ts +0 -37
  475. package/src/composables/useIntroJs.ts +0 -142
  476. package/src/composables/useMarkups.ts +0 -41
  477. package/src/composables/useMcadObjects.ts +0 -32
  478. package/src/composables/useNavigationCubeObserver.ts +0 -114
  479. package/src/composables/useVersion3cr.ts +0 -7
  480. package/src/functions/__tests__/layoutOverlayStyle.spec.ts +0 -325
  481. package/src/functions/layoutOverlayStyle.ts +0 -84
  482. package/src/functions/notification.ts +0 -82
  483. package/src/functions/parseDataOverlayData.ts +0 -10
  484. package/src/functions/parseDataOverlayEvent.ts +0 -17
  485. package/src/functions/parseMcadEvent.ts +0 -10
  486. package/src/functions/rgbaToCss.ts +0 -13
  487. package/src/models/__tests__/loadViewerOptions.spec.ts +0 -72
  488. package/src/models/__tests__/loadViewerPayload.spec.ts +0 -10
  489. package/src/models/callbacks.ts +0 -4
  490. package/src/models/loadViewerOptions.ts +0 -79
  491. package/src/models/loadViewerPayload.ts +0 -17
  492. package/src/plugins/__tests__/usePlugins.spec.ts +0 -12
  493. package/src/plugins/usePlugins.ts +0 -8
  494. package/src/types/action-data.ts +0 -4
  495. package/src/types/action.ts +0 -13
  496. package/src/types/call-to-action.ts +0 -9
  497. package/src/types/colour.ts +0 -6
  498. package/src/types/data-overlay-angle.ts +0 -16
  499. package/src/types/data-overlay-annotation.ts +0 -18
  500. package/src/types/data-overlay-data.ts +0 -15
  501. package/src/types/data-overlay-event.ts +0 -5
  502. package/src/types/data-overlay-info.ts +0 -18
  503. package/src/types/data-overlay-interaction.ts +0 -15
  504. package/src/types/data-overlay-length.ts +0 -16
  505. package/src/types/data-overlay-markup.ts +0 -7
  506. package/src/types/data-overlay-mcad.ts +0 -20
  507. package/src/types/data-overlay-polygon.ts +0 -18
  508. package/src/types/data-overlay.ts +0 -16
  509. package/src/types/demo-type.ts +0 -4
  510. package/src/types/gpt-question.ts +0 -4
  511. package/src/types/gpt-response-payload.ts +0 -6
  512. package/src/types/mcad-object-interaction.ts +0 -15
  513. package/src/types/segment-angle.ts +0 -5
  514. package/src/types/vector2.ts +0 -4
  515. package/src/types/vector3.ts +0 -5
  516. package/test/fakers/data-overlay-info.faker.ts +0 -29
  517. /package/src/assets/logos/3dicom/{white.svg → white/white.svg} +0 -0
  518. /package/src/assets/{images/light/Singular-Health-Trademark-mono.svg → logos/singular-health/black/black.svg} +0 -0
  519. /package/src/assets/{images/dark/Singular-Health-Trademark-mono.svg → logos/singular-health/white/white.svg} +0 -0
@@ -26,6 +26,12 @@ commands: # a reusable command with parameters
26
26
  sed -i -e "s:@3cr/viewer\\-browser:@3cr/viewer\\-browser\\-development:g" ./package.json
27
27
  sed -i -e "s:@3cr/viewer\\-browser:@3cr/viewer\\-browser\\-development:g" ./README.md
28
28
 
29
+ fi
30
+ if [[ "<< parameters.ENV >>" == "next" ]] ; then
31
+
32
+ sed -i -e "s:@3cr/viewer\\-browser:@3cr/viewer\\-browser\\-next:g" ./package.json
33
+ sed -i -e "s:@3cr/viewer\\-browser:@3cr/viewer\\-browser\\-next:g" ./README.md
34
+
29
35
  fi
30
36
 
31
37
  npm set //registry.npmjs.org/:_authToken=$NPM_TOKEN
@@ -36,8 +42,30 @@ commands: # a reusable command with parameters
36
42
  cat playground/sw.js
37
43
 
38
44
  npm run deploy:playground
45
+ build-test:
46
+ steps:
47
+ - run:
48
+ name: 'Build Attempt'
49
+ command: |
50
+ npm install
51
+
52
+ npm run build
39
53
 
40
54
  jobs:
55
+ build-test:
56
+ docker:
57
+ - image: cimg/node:21.5.0
58
+ resource_class: medium+
59
+ steps:
60
+ - checkout
61
+ - run:
62
+ name: 'Build Attempt'
63
+ command: |
64
+ npm install
65
+
66
+ npm run build
67
+
68
+
41
69
  deploy-production:
42
70
  docker:
43
71
  - image: cimg/node:21.5.0
@@ -60,9 +88,28 @@ jobs:
60
88
  BUCKET_NAME: "3cr-playground-development"
61
89
  DIST_NAME: "EO7C7NEHS1T35"
62
90
 
91
+ deploy-next:
92
+ docker:
93
+ - image: cimg/node:21.5.0
94
+ resource_class: medium+
95
+ steps:
96
+ - checkout
97
+ - deploy:
98
+ ENV: 'next'
99
+ BUCKET_NAME: "3cr-playground-next"
100
+ DIST_NAME: "E1MCN1EZSM8T1O"
101
+
63
102
  workflows:
64
103
  deploy-playground:
65
104
  jobs:
105
+ - build-test:
106
+ filters:
107
+ branches:
108
+ ignore:
109
+ - main
110
+ - development
111
+ - next
112
+ name: 'Attempt Build'
66
113
  - deploy-production:
67
114
  filters:
68
115
  branches:
@@ -75,3 +122,9 @@ workflows:
75
122
  only:
76
123
  - development
77
124
  name: 'Deploy to NPM Development'
125
+ - deploy-next:
126
+ filters:
127
+ branches:
128
+ only:
129
+ - next
130
+ name: 'Deploy to NPM next'
package/README.md CHANGED
@@ -3,7 +3,6 @@
3
3
  ![](https://img.shields.io/badge/tests-successful-green)
4
4
  ![](https://img.shields.io/circleci/build/bitbucket/medvr/3cr-sdk-browser/main)
5
5
 
6
-
7
6
  Ecosystem integration for installing and running [3DICOM Online Viewer (3CR-OV)](https://docs.3cr.singular.health/) within the Browser (client-side)
8
7
 
9
8
  [3DICOM Online Viewer (3CR-OV) Playground](https://playground.3cr.singular.health/)
@@ -11,101 +10,107 @@ Ecosystem integration for installing and running [3DICOM Online Viewer (3CR-OV)]
11
10
  ## Include `@3cr/viewer-browser` script
12
11
 
13
12
  Choose one of the following ways
13
+
14
14
  - ### HTML Script Tag
15
15
 
16
- Insert this line into your `index.html`
17
-
18
- ```html
19
- <script src="https://cdn.jsdelivr.net/npm/@3cr/viewer-browser@{{version}}/dist/Viewer3CR.umd.js"> </script>
20
- ```
21
- Note: Please ensure you replace the `{{version}}` with the version of the viewer you want.
16
+ Insert this line into your `index.html`
17
+
18
+ ```html
19
+ <script src="https://cdn.jsdelivr.net/npm/@3cr/viewer-browser@{{version}}/dist/Viewer3CR.umd.js"></script>
20
+ ```
21
+
22
+ Note: Please ensure you replace the `{{version}}` with the version of the viewer you want.
22
23
 
23
24
  - ### JS/TS way
24
25
 
25
- You can also include it dynamically within your code.
26
-
27
- `Typescript (.ts)`
28
- ```ts
29
- export async function loadViewerScript(version: string): Promise<void> {
30
- return new Promise<void>((resolve) => {
31
- const s = document.createElement('script');
32
- s.onload = () => {
33
- resolve()
34
- }
35
- s.src = `https://cdn.jsdelivr.net/npm/@3cr/viewer-browser@${version}/dist/Viewer3CR.umd.js`;
36
- document.head.appendChild(s);
37
- })
38
- }
39
-
40
- // ...
41
-
42
- await loadViewerScript("1.0.0");
43
- ```
44
- `Javascript (.js)`
45
- ```js
46
- export async function loadViewerScript(version) {
47
- return new Promise((resolve) => {
48
- const s = document.createElement('script');
49
- s.onload = () => {
50
- resolve()
51
- }
52
- s.src = `https://cdn.jsdelivr.net/npm/@3cr/viewer-browser@${version}/dist/Viewer3CR.umd.js`;
53
- document.head.appendChild(s);
54
- })
55
- }
56
-
57
- // ...
58
-
59
- await loadViewerScript("1.0.0");
60
- ```
26
+ You can also include it dynamically within your code.
27
+
28
+ `Typescript (.ts)`
29
+
30
+ ```ts
31
+ export async function loadViewerScript(version: string): Promise<void> {
32
+ return new Promise<void>((resolve) => {
33
+ const s = document.createElement('script');
34
+ s.onload = () => {
35
+ resolve();
36
+ };
37
+ s.src = `https://cdn.jsdelivr.net/npm/@3cr/viewer-browser@${version}/dist/Viewer3CR.umd.js`;
38
+ document.head.appendChild(s);
39
+ });
40
+ }
41
+
42
+ // ...
43
+
44
+ await loadViewerScript('1.0.0');
45
+ ```
46
+
47
+ `Javascript (.js)`
48
+
49
+ ```js
50
+ export async function loadViewerScript(version) {
51
+ return new Promise((resolve) => {
52
+ const s = document.createElement('script');
53
+ s.onload = () => {
54
+ resolve();
55
+ };
56
+ s.src = `https://cdn.jsdelivr.net/npm/@3cr/viewer-browser@${version}/dist/Viewer3CR.umd.js`;
57
+ document.head.appendChild(s);
58
+ });
59
+ }
61
60
 
61
+ // ...
62
+
63
+ await loadViewerScript('1.0.0');
64
+ ```
62
65
 
63
66
  ## Using the Package
64
67
 
65
68
  1. #### Register 3DICOM Online Viewer version
66
69
 
67
- Call the `registerViewer` function with the version of 3CR you would like to view. This will generate a new container to load the viewer within and register the 3CR Instance.
70
+ Call the `mountViewer` function with the version of 3CR you would like to view. This will generate a new container to load the viewer within and register the 3CR Instance.
71
+
72
+ `Typescript (.ts) / Javascript (.js)`
68
73
 
69
- `Typescript (.ts) / Javascript (.js)`
70
- ```ts
71
- const VERSION_3CR: string = '1.0.0';
72
-
73
- await window.registerViewer(VERSION_3CR)
74
- ```
74
+ ```ts
75
+ const VERSION_3CR: string = '1.0.0';
76
+
77
+ await window.mountViewer(VERSION_3CR);
78
+ ```
75
79
 
76
80
  2. #### Load in the 3VXL file
77
81
 
78
- Generate the 3VXL file and Decryption Key/Iv and supply that to the `loadViewer` function
82
+ Generate the 3VXL file and Decryption Key/Iv and supply that to the `loadViewer` function
79
83
 
80
- Note: You can supply undefined/nothing to the loadViewer() function to display a default scan for testing purposes.
84
+ Note: You can supply undefined/nothing to the loadViewer() function to display a default scan for testing purposes.
81
85
 
82
86
  `Typescript (.ts) / Javascript (.js)`
83
- ```ts
84
- const payload = {
85
- Url: "<Some presigned URL to a 3VXL file.>",
86
- DecryptionKey: {
87
- Iv: "<Initialisation Vector of the Key>",
88
- Key: "<Decryption Key>"
89
- }
90
- }
91
- await window.loadViewer(payload)
92
-
93
- // OR
94
-
95
- await window.loadViewer()
96
- ```
87
+
88
+ ```ts
89
+ const payload = {
90
+ Url: '<Some presigned URL to a 3VXL file.>',
91
+ DecryptionKey: {
92
+ Iv: '<Initialisation Vector of the Key>',
93
+ Key: '<Decryption Key>'
94
+ }
95
+ };
96
+ await window.loadViewer(payload);
97
+
98
+ // OR
99
+
100
+ await window.loadViewer();
101
+ ```
97
102
 
98
103
  3. #### (Optional) Clean up
99
104
 
100
- In order to ensure the css namespace and data from the viewer is cleaned up and removed after execution, call `ejectViewer`
101
-
102
- Note: You may also want to clean up the initial script you loaded on your site, by removing the nodes of the script you created in `Include @3cr/viewer-browser script`
103
-
105
+ In order to ensure the css namespace and data from the viewer is cleaned up and removed after execution, call `unmountViewer`
106
+
107
+ Note: You may also want to clean up the initial script you loaded on your site, by removing the nodes of the script you created in `Include @3cr/viewer-browser script`
108
+
104
109
  `Typescript (.ts) / Javascript (.js)`
105
- ```ts
106
- await window.ejectViewer()
107
- ```
108
110
 
111
+ ```ts
112
+ await window.unmountViewer();
113
+ ```
109
114
 
110
115
  ## Contributing
111
116
 
@@ -116,4 +121,4 @@ Please make sure to update tests as appropriate.
116
121
 
117
122
  ## License
118
123
 
119
- [MIT](https://choosealicense.com/licenses/mit/)
124
+ [MIT](https://choosealicense.com/licenses/mit/)
package/components.d.ts CHANGED
@@ -7,61 +7,119 @@ export {}
7
7
  /* prettier-ignore */
8
8
  declare module 'vue' {
9
9
  export interface GlobalComponents {
10
+ AboutModal: typeof import('./src/components/modal/modal/AboutModal.vue')['default']
10
11
  Action: typeof import('./src/components/modal/actions/Action.vue')['default']
11
12
  ActionRail: typeof import('./src/components/modal/ActionRail.vue')['default']
12
- AnnotationTreeView: typeof import('./src/components/views/AnnotationTreeView.vue')['default']
13
- AskAI: typeof import('./src/components/modal/AskAI.vue')['default']
14
- AutoAnnotateBtn: typeof import('./src/components/modal/buttons/AutoAnnotateBtn.vue')['default']
15
- CloseViewerModal: typeof import('./src/components/modal/CloseViewerModal.vue')['default']
16
- DataOverlayGeneralModal: typeof import('./src/components/views/modals/DataOverlayGeneralModal.vue')['default']
17
- DataOverlayMarkupModal: typeof import('./src/components/views/modals/DataOverlayMarkupModal.vue')['default']
18
- DataOverlayModal: typeof import('./src/components/views/modals/DataOverlayModal.vue')['default']
19
- DemoLicenceEnableCloudStorageModal: typeof import('./src/components/demo/licence/DemoLicenceEnableCloudStorageModal.vue')['default']
20
- DemoLicenceInfoModal: typeof import('./src/components/demo/licence/DemoLicenceInfoModal.vue')['default']
21
- DemoLicenceSendToPartyModal: typeof import('./src/components/demo/licence/DemoLicenceSendToPartyModal.vue')['default']
22
- DemoLicenceShareToMobileModal: typeof import('./src/components/demo/licence/DemoLicenceShareToMobileModal.vue')['default']
23
- DemoModal: typeof import('./src/components/demo/DemoModal.vue')['default']
24
- DemoPatientEnableCloudStorageModal: typeof import('./src/components/demo/patient/DemoPatientEnableCloudStorageModal.vue')['default']
25
- DemoPatientInfoModal: typeof import('./src/components/demo/patient/DemoPatientInfoModal.vue')['default']
26
- DemoPatientModal: typeof import('./src/components/demo/DemoPatientModal.vue')['default']
27
- DemoPatientSendToPartyModal: typeof import('./src/components/demo/patient/DemoPatientSendToPartyModal.vue')['default']
28
- DemoPatientShareToMobileModal: typeof import('./src/components/demo/patient/DemoPatientShareToMobileModal.vue')['default']
29
- DisplaySettings: typeof import('./src/components/views/DisplaySettings.vue')['default']
13
+ AiModelList: typeof import('./src/components/modal/modal/AiModelList.vue')['default']
14
+ AnnotationCreateModal: typeof import('./src/components/navigation/annotation/AnnotationCreateModal.vue')['default']
15
+ AnnotationCreateSnackbar: typeof import('./src/components/navigation/annotation/AnnotationCreateSnackbar.vue')['default']
16
+ AnnotationDataTable: typeof import('./src/components/navigation/annotation/AnnotationDataTable.vue')['default']
17
+ AnnotationDeleteModal: typeof import('./src/components/navigation/annotation/AnnotationDeleteModal.vue')['default']
18
+ AnnotationDeleteSnackbar: typeof import('./src/components/navigation/annotation/AnnotationDeleteSnackbar.vue')['default']
19
+ AnnotationForm: typeof import('./src/components/navigation/annotation/AnnotationForm.vue')['default']
20
+ AnnotationGeneratedSnackbar: typeof import('./src/components/modal/snackbars/AnnotationGeneratedSnackbar.vue')['default']
21
+ AnnotationIcon: typeof import('./src/components/navigation/annotation/AnnotationIcon.vue')['default']
22
+ AnnotationInfo: typeof import('./src/components/navigation/annotation/AnnotationInfo.vue')['default']
23
+ AnnotationMenu: typeof import('./src/components/navigation/annotation/AnnotationMenu.vue')['default']
24
+ AnnotationPanel: typeof import('./src/components/navigation/annotation/AnnotationPanel.vue')['default']
25
+ AnnotationTools: typeof import('./src/components/navigation/annotation/AnnotationTools.vue')['default']
26
+ AnnotationUpdateModal: typeof import('./src/components/navigation/annotation/AnnotationUpdateModal.vue')['default']
27
+ AnnotationVisibilityBtn: typeof import('./src/components/navigation/annotation/AnnotationVisibilityBtn.vue')['default']
28
+ AskAiModal: typeof import('./src/components/modal/modal/AskAiModal.vue')['default']
29
+ AutoAnnotateMenu: typeof import('./src/components/modal/menus/AutoAnnotateMenu.vue')['default']
30
+ AutoAnnotateModal: typeof import('./src/components/modal/modal/AutoAnnotateModal.vue')['default']
31
+ AvatarDropdownMenu: typeof import('./src/components/modal/menus/AvatarDropdownMenu.vue')['default']
32
+ CloseViewerModal: typeof import('./src/components/modal/modal/CloseViewerModal.vue')['default']
33
+ CloudDropZone: typeof import('./src/components/demo/CloudDropZone.vue')['default']
34
+ ColourPalette: typeof import('./src/components/shared/ColourPalette.vue')['default']
35
+ DataOverlayGeneralModal: typeof import('./src/components/modal/modal/DataOverlayGeneralModal.vue')['default']
36
+ DataOverlayMeasurementModal: typeof import('./src/components/modal/modal/DataOverlayMeasurementModal.vue')['default']
37
+ DataOverlayModal: typeof import('./src/components/modal/modal/DataOverlayModal.vue')['default']
38
+ DemoAvatarDropdownMenu: typeof import('./src/components/demo/DemoAvatarDropdownMenu.vue')['default']
39
+ DemoInfoModal: typeof import('./src/components/demo/DemoInfoModal.vue')['default']
40
+ DemoNotificationNavigationDrawer: typeof import('./src/components/demo/DemoNotificationNavigationDrawer.vue')['default']
41
+ DemoPurchaseCreditsModal: typeof import('./src/components/demo/DemoPurchaseCreditsModal.vue')['default']
42
+ DemoUpgradeCloudStorageModal: typeof import('./src/components/demo/DemoUpgradeCloudStorageModal.vue')['default']
43
+ DemoUpgradePlanModal: typeof import('./src/components/demo/DemoUpgradePlanModal.vue')['default']
44
+ DisplayPanel: typeof import('./src/components/navigation/display/DisplayPanel.vue')['default']
30
45
  DoubleSliderSelector: typeof import('./src/components/shared/DoubleSliderSelector.vue')['default']
31
- FileMenu: typeof import('./src/components/modal/menus/FileMenu.vue')['default']
46
+ DrawerTitle: typeof import('./src/components/navigation/annotation/DrawerTitle.vue')['default']
32
47
  Flip3dAction: typeof import('./src/components/modal/actions/Flip3dAction.vue')['default']
33
48
  FlipHorizontalAction: typeof import('./src/components/modal/actions/FlipHorizontalAction.vue')['default']
34
49
  FlipVerticalAction: typeof import('./src/components/modal/actions/FlipVerticalAction.vue')['default']
35
50
  FullscreenAction: typeof import('./src/components/modal/actions/FullscreenAction.vue')['default']
51
+ HelpMenu: typeof import('./src/components/modal/menus/HelpMenu.vue')['default']
52
+ HistoryModal: typeof import('./src/components/navigation/history/HistoryModal.vue')['default']
53
+ HorizontalSliderSelector: typeof import('./src/components/shared/HorizontalSliderSelector.vue')['default']
54
+ ImagesSharedSnackbar: typeof import('./src/components/modal/snackbars/ImagesSharedSnackbar.vue')['default']
55
+ KeyboardShortcuts: typeof import('./src/components/shared/KeyboardShortcuts.vue')['default']
56
+ Layout1x3ClipPath: typeof import('./src/components/modal/layouts/Layout1x3ClipPath.vue')['default']
57
+ Layout2x2ClipPath: typeof import('./src/components/modal/layouts/Layout2x2ClipPath.vue')['default']
58
+ LayoutFullscreenClipPath: typeof import('./src/components/modal/layouts/LayoutFullscreenClipPath.vue')['default']
59
+ LinkCopiedSnackbar: typeof import('./src/components/modal/snackbars/LinkCopiedSnackbar.vue')['default']
36
60
  LoadingSpinner: typeof import('./src/components/shared/LoadingSpinner.vue')['default']
37
- MarkupTreeView: typeof import('./src/components/views/MarkupTreeView.vue')['default']
38
- MaskIcon: typeof import('./src/components/views/shared/MaskIcon.vue')['default']
39
- McadGlobalActions: typeof import('./src/components/navigation/mcad/McadGlobalActions.vue')['default']
40
- McadGlobalOpacitySlider: typeof import('./src/components/navigation/mcad/McadGlobalOpacitySlider.vue')['default']
41
- McadGlobalScanViewBtn: typeof import('./src/components/navigation/mcad/McadGlobalScanViewBtn.vue')['default']
42
- McadGlobalVisibilityBtn: typeof import('./src/components/navigation/mcad/McadGlobalVisibilityBtn.vue')['default']
43
- McadObjectTreeView: typeof import('./src/components/views/McadObjectTreeView.vue')['default']
44
- MftpWebGL3DRModal: typeof import('./src/components/modal/MftpWebGL3DRModal.vue')['default']
45
- NavigationCubeAction: typeof import('./src/components/modal/actions/NavigationCubeAction.vue')['default']
46
- ObjectColor: typeof import('./src/components/views/shared/ObjectColor.vue')['default']
47
- ObjectLabel: typeof import('./src/components/views/shared/ObjectLabel.vue')['default']
48
- Opacity: typeof import('./src/components/views/shared/Opacity.vue')['default']
61
+ McadAddObjectBtn: typeof import('./src/components/navigation/mcad/McadAddObjectBtn.vue')['default']
62
+ McadDataTable: typeof import('./src/components/navigation/mcad/McadDataTable.vue')['default']
63
+ McadDataTableItems: typeof import('./src/components/navigation/mcad/McadDataTableItems.vue')['default']
64
+ McadDeleteModal: typeof import('./src/components/navigation/mcad/McadDeleteModal.vue')['default']
65
+ McadDropZone: typeof import('./src/components/navigation/mcad/McadDropZone.vue')['default']
66
+ McadFloating: typeof import('./src/components/navigation/mcad/McadFloating.vue')['default']
67
+ McadIcon: typeof import('./src/components/navigation/mcad/McadIcon.vue')['default']
68
+ McadInvert: typeof import('./src/components/navigation/mcad/McadInvert.vue')['default']
69
+ McadLockBtn: typeof import('./src/components/navigation/mcad/McadLockBtn.vue')['default']
70
+ McadMenu: typeof import('./src/components/navigation/mcad/McadMenu.vue')['default']
71
+ McadOpacity: typeof import('./src/components/navigation/mcad/McadOpacity.vue')['default']
72
+ McadPanel: typeof import('./src/components/navigation/mcad/McadPanel.vue')['default']
73
+ McadToggleSortBtn: typeof import('./src/components/navigation/mcad/McadToggleSortBtn.vue')['default']
74
+ McadToggleVisibilityBtn: typeof import('./src/components/navigation/mcad/McadToggleVisibilityBtn.vue')['default']
75
+ McadUpdateModal: typeof import('./src/components/navigation/mcad/McadUpdateModal.vue')['default']
76
+ McadVisibilityBtn: typeof import('./src/components/navigation/mcad/McadVisibilityBtn.vue')['default']
77
+ MeasurementAngleSnackbar: typeof import('./src/components/navigation/measurement/MeasurementAngleSnackbar.vue')['default']
78
+ MeasurementDataTable: typeof import('./src/components/navigation/measurement/MeasurementDataTable.vue')['default']
79
+ MeasurementDeleteModal: typeof import('./src/components/navigation/measurement/MeasurementDeleteModal.vue')['default']
80
+ MeasurementDeleteSnackbar: typeof import('./src/components/navigation/measurement/MeasurementDeleteSnackbar.vue')['default']
81
+ MeasurementIcon: typeof import('./src/components/navigation/measurement/MeasurementIcon.vue')['default']
82
+ MeasurementInfo: typeof import('./src/components/navigation/measurement/MeasurementInfo.vue')['default']
83
+ MeasurementInfoAngle: typeof import('./src/components/navigation/measurement/MeasurementInfoAngle.vue')['default']
84
+ MeasurementInfoLength: typeof import('./src/components/navigation/measurement/MeasurementInfoLength.vue')['default']
85
+ MeasurementInfoPolygon: typeof import('./src/components/navigation/measurement/MeasurementInfoPolygon.vue')['default']
86
+ MeasurementLengthSnackbar: typeof import('./src/components/navigation/measurement/MeasurementLengthSnackbar.vue')['default']
87
+ MeasurementMenu: typeof import('./src/components/navigation/measurement/MeasurementMenu.vue')['default']
88
+ MeasurementPanel: typeof import('./src/components/navigation/measurement/MeasurementPanel.vue')['default']
89
+ MeasurementPolygonSnackbar: typeof import('./src/components/navigation/measurement/MeasurementPolygonSnackbar.vue')['default']
90
+ MeasurementTools: typeof import('./src/components/navigation/measurement/MeasurementTools.vue')['default']
91
+ MeasurementVisibilityBtn: typeof import('./src/components/navigation/measurement/MeasurementVisibilityBtn.vue')['default']
92
+ MultiLoginError: typeof import('./src/components/shared/MultiLoginError.vue')['default']
93
+ NotificationToaster: typeof import('./src/components/shared/NotificationToaster.vue')['default']
49
94
  PanAction: typeof import('./src/components/modal/actions/PanAction.vue')['default']
50
95
  ResetViewAction: typeof import('./src/components/modal/actions/ResetViewAction.vue')['default']
51
96
  Rotate2dAction: typeof import('./src/components/modal/actions/Rotate2dAction.vue')['default']
52
97
  SettingsMenu: typeof import('./src/components/modal/menus/SettingsMenu.vue')['default']
98
+ ShareMenu: typeof import('./src/components/modal/menus/ShareMenu.vue')['default']
99
+ ShareModal: typeof import('./src/components/modal/modal/ShareModal.vue')['default']
100
+ ShFlatIconBtn: typeof import('./src/components/ShFlatIconBtn.vue')['default']
101
+ ShPlainIconBtn: typeof import('./src/components/ShPlainIconBtn.vue')['default']
102
+ ShSelect: typeof import('./src/components/ShSelect.vue')['default']
103
+ ShTextarea: typeof import('./src/components/ShTextarea.vue')['default']
104
+ ShTextField: typeof import('./src/components/ShTextField.vue')['default']
53
105
  Slice3dAction: typeof import('./src/components/modal/actions/Slice3dAction.vue')['default']
106
+ Tour: typeof import('./src/components/intro/tour/Tour.vue')['default']
54
107
  UpdateSnackbar: typeof import('./src/components/shared/UpdateSnackbar.vue')['default']
108
+ UploadDicomToCloudModal: typeof import('./src/components/demo/UploadDicomToCloudModal.vue')['default']
109
+ UploadsDrawer: typeof import('./src/components/modal/modal/UploadsDrawer.vue')['default']
55
110
  ValueSelector: typeof import('./src/components/shared/ValueSelector.vue')['default']
56
111
  VerticalSliderSelector: typeof import('./src/components/shared/VerticalSliderSelector.vue')['default']
112
+ Viewer3cr: typeof import('./src/components/modal/Viewer3cr.vue')['default']
113
+ Viewer3crWebGL: typeof import('./src/components/modal/Viewer3crWebGL.vue')['default']
114
+ ViewerActionBar: typeof import('./src/components/modal/app-bars/ViewerActionBar.vue')['default']
57
115
  ViewerActionRail: typeof import('./src/components/modal/ViewerActionRail.vue')['default']
116
+ ViewerAppBar: typeof import('./src/components/modal/app-bars/ViewerAppBar.vue')['default']
117
+ ViewerIntro: typeof import('./src/components/intro/ViewerIntro.vue')['default']
118
+ ViewerMain: typeof import('./src/components/modal/ViewerMain.vue')['default']
58
119
  ViewerNavigationDrawer: typeof import('./src/components/modal/ViewerNavigationDrawer.vue')['default']
59
- ViewerNavigationDrawerContent: typeof import('./src/components/modal/ViewerNavigationDrawerContent.vue')['default']
60
- ViewerNavigationDrawerFooter: typeof import('./src/components/modal/ViewerNavigationDrawerFooter.vue')['default']
61
- ViewerNavigationDrawerHeader: typeof import('./src/components/modal/ViewerNavigationDrawerHeader.vue')['default']
62
120
  ViewerScanView: typeof import('./src/components/modal/ViewerScanView.vue')['default']
63
- VisibilityBtn: typeof import('./src/components/views/shared/VisibilityBtn.vue')['default']
64
- WebGL3DR: typeof import('./src/components/modal/WebGL3DR.vue')['default']
121
+ ViewerTour: typeof import('./src/components/intro/ViewerTour.vue')['default']
122
+ WhatsNewModal: typeof import('./src/components/modal/modal/WhatsNewModal.vue')['default']
65
123
  ZoomAction: typeof import('./src/components/modal/actions/ZoomAction.vue')['default']
66
124
  }
67
125
  }