@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.
- package/.circleci/config.yml +53 -0
- package/README.md +79 -74
- package/components.d.ts +94 -36
- package/dist/Viewer3CR.js +663 -47
- package/dist/Viewer3CR.mjs +108285 -37154
- package/dist/Viewer3CR.umd.js +663 -47
- package/index.html +35 -33
- package/package.json +27 -8
- package/playground/img.png +0 -0
- package/playground/index.html +6 -2
- package/src/App.vue +41 -97
- package/src/__tests__/app.spec.ts +2 -1
- package/src/__tests__/main.spec.ts +14 -14
- package/src/assets/_palette.scss +112 -0
- package/src/assets/_settings.scss +64 -0
- package/src/assets/_typography.scss +187 -0
- package/src/assets/images/cloud-storage.svg +22 -0
- package/src/assets/images/courtney.png +0 -0
- package/src/assets/images/dark/magic-wand.svg +32 -0
- package/src/assets/images/dark-theme.svg +33 -0
- package/src/assets/images/dot.svg +5 -0
- package/src/assets/images/dr-miles.png +0 -0
- package/src/assets/images/illustration.svg +118 -0
- package/src/assets/images/intro.svg +30 -0
- package/src/assets/{magic_wand.svg → images/light/magic-wand.svg} +22 -14
- package/src/assets/images/light-theme.svg +33 -0
- package/src/assets/images/system-theme.svg +51 -0
- package/src/assets/images/totalSegmentator.png +0 -0
- package/src/assets/logos/3dicom/black/black.svg +30 -0
- package/src/assets/logos/3dicom/colour/colour.svg +18 -0
- package/src/assets/logos/3dicom/colour/colour_single.svg +18 -0
- package/src/assets/logos/3dicom/wordmark/patients/patients.svg +29 -0
- package/src/assets/logos/3dicom/wordmark/powered-by/powered-by.svg +41 -0
- package/src/assets/logos/3dicom/wordmark/practitioners/practitioner.svg +34 -0
- package/src/assets/logos/3dicom/wordmark/research/research.svg +29 -0
- package/src/assets/logos/license/black/black.svg +22 -0
- package/src/assets/logos/license/white/white.svg +22 -0
- package/src/assets/styles.scss +435 -12
- package/src/components/ShFlatIconBtn.vue +36 -0
- package/src/components/ShPlainIconBtn.vue +42 -0
- package/src/components/ShSelect.vue +48 -0
- package/src/components/ShTextField.vue +39 -0
- package/src/components/ShTextarea.vue +39 -0
- package/src/components/__tests__/ShFlatIconBtn.spec.ts +32 -0
- package/src/components/__tests__/ShPlainIconBtn.spec.ts +37 -0
- package/src/components/__tests__/ShSelect.spec.ts +30 -0
- package/src/components/__tests__/ShTextField.spec.ts +30 -0
- package/src/components/__tests__/ShTextarea.spec.ts +30 -0
- package/src/components/demo/CloudDropZone.vue +105 -0
- package/src/components/demo/DemoAvatarDropdownMenu.vue +343 -0
- package/src/components/demo/DemoInfoModal.vue +60 -0
- package/src/components/demo/DemoNotificationNavigationDrawer.vue +118 -0
- package/src/components/demo/DemoPurchaseCreditsModal.vue +141 -0
- package/src/components/demo/DemoUpgradeCloudStorageModal.vue +74 -0
- package/src/components/demo/DemoUpgradePlanModal.vue +17 -0
- package/src/components/demo/UploadDicomToCloudModal.vue +225 -0
- package/src/components/demo/__tests__/CloudDropZone.spec.ts +132 -0
- package/src/components/demo/__tests__/DemoAvatarDropdownMenu.spec.ts +16 -0
- package/src/components/demo/{licence/__tests__/DemoLicenceEnableCloudStorageModal.spec.ts → __tests__/DemoEnableCloudStorageModal.spec.ts} +11 -11
- package/src/components/demo/{licence/__tests__/DemoLicenceInfoModal.spec.ts → __tests__/DemoInfoModal.spec.ts} +11 -8
- package/src/components/demo/__tests__/DemoNotificationNavigationDrawer.spec.ts +56 -0
- package/src/components/demo/__tests__/UploadDicomToCloudModal.spec.ts +320 -0
- package/src/components/demo/__tests__/demo-payload.spec.ts +10 -0
- package/src/components/demo/demo-notifications.ts +45 -0
- package/src/components/demo/demo-payload.ts +9 -0
- package/src/components/demo/fileReader.ts +47 -0
- package/src/{composables/useViewerOptions.ts → components/demo/mockDemoViewerStlDecimator.ts} +8 -12
- package/src/components/intro/ViewerIntro.vue +56 -0
- package/src/components/intro/ViewerTour.vue +53 -0
- package/src/components/intro/tour/Tour.vue +205 -0
- package/src/components/intro/tour/step.ts +6 -0
- package/src/components/modal/ActionRail.vue +4 -0
- package/src/components/modal/Viewer3cr.vue +224 -0
- package/src/components/modal/Viewer3crWebGL.vue +65 -0
- package/src/components/modal/ViewerActionRail.vue +10 -27
- package/src/components/modal/ViewerMain.vue +83 -0
- package/src/components/modal/ViewerNavigationDrawer.vue +269 -68
- package/src/components/modal/ViewerScanView.vue +223 -67
- package/src/components/modal/__tests__/{MftpWebGL3DRModal.spec.ts → Viewer3cr.spec.ts} +154 -53
- package/src/components/modal/__tests__/{WebGL3DR.spec.ts → Viewer3crWebGL.spec.ts} +11 -11
- package/src/components/modal/__tests__/ViewerNavigationDrawer.spec.ts +271 -11
- package/src/components/modal/__tests__/ViewerScanView.spec.ts +15 -7
- package/src/components/modal/actions/Action.vue +3 -8
- package/src/components/modal/actions/Flip3dAction.vue +31 -16
- package/src/components/modal/actions/FlipHorizontalAction.vue +14 -5
- package/src/components/modal/actions/FlipVerticalAction.vue +14 -5
- package/src/components/modal/actions/FullscreenAction.vue +9 -5
- package/src/components/modal/actions/PanAction.vue +11 -51
- package/src/components/modal/actions/ResetViewAction.vue +10 -8
- package/src/components/modal/actions/Rotate2dAction.vue +25 -15
- package/src/components/modal/actions/Slice3dAction.vue +22 -10
- package/src/components/modal/actions/ZoomAction.vue +21 -13
- package/src/components/modal/actions/__tests__/Action.spec.ts +2 -2
- package/src/components/modal/actions/__tests__/Flip3dAction.spec.ts +58 -14
- package/src/components/modal/actions/__tests__/FlipHorizontalAction.spec.ts +15 -5
- package/src/components/modal/actions/__tests__/FlipVerticalAction.spec.ts +15 -5
- package/src/components/modal/actions/__tests__/FullscreenAction.spec.ts +7 -5
- package/src/components/modal/actions/__tests__/PanAction.spec.ts +13 -32
- package/src/components/modal/actions/__tests__/ResetViewAction.spec.ts +5 -3
- package/src/components/modal/actions/__tests__/Rotate2dAction.spec.ts +13 -6
- package/src/components/modal/actions/__tests__/Slice3dAction.spec.ts +1 -1
- package/src/components/modal/actions/__tests__/ZoomAction.spec.ts +25 -11
- package/src/components/modal/app-bars/ViewerActionBar.vue +224 -0
- package/src/components/modal/app-bars/ViewerAppBar.vue +126 -0
- package/src/components/modal/app-bars/__tests__/ViewerActionBar.spec.ts +176 -0
- package/src/components/modal/app-bars/__tests__/ViewerAppBar.spec.ts +99 -0
- package/src/components/modal/layouts/Layout1x3ClipPath.vue +35 -0
- package/src/components/modal/layouts/Layout2x2ClipPath.vue +35 -0
- package/src/components/modal/layouts/LayoutFullscreenClipPath.vue +29 -0
- package/src/components/modal/layouts/__tests__/Layout1x3ClipPath.spec.ts +15 -0
- package/src/components/modal/layouts/__tests__/Layout2x2ClipPath.spec.ts +15 -0
- package/src/components/modal/layouts/__tests__/LayoutFullscreenClipPath.spec.ts +15 -0
- package/src/components/modal/layouts/composables/__tests__/useLayout1x3.spec.ts +40 -0
- package/src/components/modal/layouts/composables/__tests__/useLayout2x2.spec.ts +40 -0
- package/src/components/modal/layouts/composables/__tests__/useLayoutFullscreen.spec.ts +40 -0
- package/src/components/modal/layouts/composables/useLayout1x3.ts +46 -0
- package/src/components/modal/layouts/composables/useLayout2x2.ts +46 -0
- package/src/components/modal/layouts/composables/useLayoutFullscreen.ts +24 -0
- package/src/components/modal/menus/AutoAnnotateMenu.vue +67 -0
- package/src/components/modal/menus/AvatarDropdownMenu.vue +66 -0
- package/src/components/modal/menus/HelpMenu.vue +47 -0
- package/src/components/modal/menus/SettingsMenu.vue +242 -92
- package/src/components/modal/menus/ShareMenu.vue +58 -0
- package/src/components/modal/menus/__tests__/AutoAnnotateMenu.spec.ts +80 -0
- package/src/components/modal/menus/__tests__/AvatarDropdownMenu.spec.ts +49 -0
- package/src/components/modal/menus/__tests__/HelpMenu.spec.ts +12 -0
- package/src/components/modal/menus/__tests__/SettingsMenu.spec.ts +163 -57
- package/src/components/modal/modal/AboutModal.vue +61 -0
- package/src/components/modal/modal/AiModelList.vue +70 -0
- package/src/components/modal/{AskAI.vue → modal/AskAiModal.vue} +26 -34
- package/src/components/modal/modal/AutoAnnotateModal.vue +136 -0
- package/src/components/modal/modal/CloseViewerModal.vue +108 -0
- package/src/components/modal/modal/DataOverlayGeneralModal.vue +122 -0
- package/src/components/modal/modal/DataOverlayMeasurementModal.vue +59 -0
- package/src/components/modal/modal/DataOverlayModal.vue +121 -0
- package/src/components/modal/modal/ShareModal.vue +201 -0
- package/src/components/modal/modal/UploadsDrawer.vue +165 -0
- package/src/components/modal/modal/WhatsNewModal.vue +45 -0
- package/src/components/modal/modal/__tests__/AboutModal.spec.ts +60 -0
- package/src/components/modal/modal/__tests__/AiModelList.spec.ts +50 -0
- package/src/components/modal/{__tests__ → modal/__tests__}/AskAI.spec.ts +8 -7
- package/src/components/modal/modal/__tests__/AutoAnnotateModal.spec.ts +29 -0
- package/src/components/modal/modal/__tests__/CloseViewerModal.spec.ts +60 -0
- package/src/components/modal/modal/__tests__/DataOverlayGeneralModal.spec.ts +55 -0
- package/src/components/modal/modal/__tests__/DataOverlayMeasurementModal.spec.ts +82 -0
- package/src/components/modal/modal/__tests__/DataOverlayModal.spec.ts +94 -0
- package/src/components/modal/modal/__tests__/ShareModal.spec.ts +262 -0
- package/src/components/modal/modal/__tests__/UploadsDrawer.spec.ts +174 -0
- package/src/components/modal/modal/__tests__/WhatsNewModal.spec.ts +29 -0
- package/src/components/modal/snackbars/AnnotationGeneratedSnackbar.vue +34 -0
- package/src/components/modal/snackbars/ImagesSharedSnackbar.vue +26 -0
- package/src/components/modal/snackbars/LinkCopiedSnackbar.vue +26 -0
- package/src/components/modal/snackbars/__tests__/AnnotationGeneratedSnackbar.spec.ts +43 -0
- package/src/components/modal/snackbars/__tests__/ImagesSharedSnackbar.spec.ts +22 -0
- package/src/components/modal/snackbars/__tests__/LinkCopiedSnackbar.spec.ts +21 -0
- package/src/components/navigation/annotation/AnnotationCreateModal.vue +114 -0
- package/src/components/navigation/annotation/AnnotationCreateSnackbar.vue +20 -0
- package/src/components/navigation/annotation/AnnotationDataTable.vue +157 -0
- package/src/components/navigation/annotation/AnnotationDeleteModal.vue +48 -0
- package/src/components/navigation/annotation/AnnotationDeleteSnackbar.vue +25 -0
- package/src/components/navigation/annotation/AnnotationForm.vue +277 -0
- package/src/components/navigation/annotation/AnnotationIcon.vue +45 -0
- package/src/components/navigation/annotation/AnnotationInfo.vue +141 -0
- package/src/components/navigation/annotation/AnnotationMenu.vue +99 -0
- package/src/components/navigation/annotation/AnnotationPanel.vue +30 -0
- package/src/components/navigation/annotation/AnnotationTools.vue +104 -0
- package/src/components/navigation/annotation/AnnotationUpdateModal.vue +78 -0
- package/src/components/navigation/annotation/AnnotationVisibilityBtn.vue +52 -0
- package/src/components/navigation/annotation/DrawerTitle.vue +25 -0
- package/src/components/navigation/annotation/__tests__/AnnotationCreateModal.spec.ts +178 -0
- package/src/components/navigation/annotation/__tests__/AnnotationCreateSnackbar.spec.ts +31 -0
- package/src/components/navigation/annotation/__tests__/AnnotationDataTable.spec.ts +79 -0
- package/src/components/navigation/annotation/__tests__/AnnotationDeleteSnackbar.spec.ts +66 -0
- package/src/components/navigation/annotation/__tests__/AnnotationForm.spec.ts +261 -0
- package/src/components/navigation/annotation/__tests__/AnnotationIcon.spec.ts +13 -0
- package/src/components/navigation/annotation/__tests__/AnnotationTools.spec.ts +116 -0
- package/src/components/navigation/display/DisplayPanel.vue +156 -0
- package/src/components/{views/__tests__/DisplaySettings.spec.ts → navigation/display/__tests__/DisplayPanel.spec.ts} +14 -3
- package/src/components/navigation/history/HistoryModal.vue +140 -0
- package/src/components/navigation/mcad/McadAddObjectBtn.vue +41 -0
- package/src/components/navigation/mcad/McadDataTable.vue +78 -0
- package/src/components/navigation/mcad/McadDataTableItems.vue +382 -0
- package/src/components/navigation/mcad/McadDeleteModal.vue +44 -0
- package/src/components/navigation/mcad/McadDropZone.vue +148 -0
- package/src/components/navigation/mcad/McadFloating.vue +193 -0
- package/src/components/navigation/mcad/McadIcon.vue +34 -0
- package/src/components/navigation/mcad/McadInvert.vue +91 -0
- package/src/components/navigation/mcad/McadLockBtn.vue +62 -0
- package/src/components/navigation/mcad/McadMenu.vue +248 -0
- package/src/components/navigation/mcad/McadOpacity.vue +79 -0
- package/src/components/navigation/mcad/McadPanel.vue +31 -0
- package/src/components/navigation/mcad/McadToggleSortBtn.vue +18 -0
- package/src/components/navigation/mcad/McadToggleVisibilityBtn.vue +46 -0
- package/src/components/navigation/mcad/McadUpdateModal.vue +108 -0
- package/src/components/navigation/mcad/McadVisibilityBtn.vue +46 -0
- package/src/components/navigation/mcad/__tests__/McadAddObjectBtn.spec.ts +73 -0
- package/src/components/navigation/mcad/__tests__/McadDataTable.spec.ts +27 -0
- package/src/components/navigation/mcad/__tests__/McadDataTableItems.spec.ts +621 -0
- package/src/components/navigation/mcad/__tests__/McadDeleteModal.spec.ts +67 -0
- package/src/components/navigation/mcad/__tests__/McadDropZone.spec.ts +109 -0
- package/src/components/navigation/mcad/__tests__/McadIcon.spec.ts +13 -0
- package/src/components/navigation/mcad/__tests__/McadInvert.spec.ts +45 -0
- package/src/components/navigation/mcad/__tests__/McadLockBtn.spec.ts +38 -0
- package/src/components/navigation/mcad/__tests__/McadMenu.spec.ts +258 -0
- package/src/components/navigation/mcad/__tests__/McadOpacity.spec.ts +68 -0
- package/src/components/navigation/mcad/__tests__/McadToggleSortBtn.spec.ts +36 -0
- package/src/components/navigation/mcad/__tests__/McadToggleVisibilityBtn.spec.ts +53 -0
- package/src/components/navigation/mcad/__tests__/McadUpdateModal.spec.ts +122 -0
- package/src/components/navigation/mcad/__tests__/McadVisibilityBtn.spec.ts +45 -0
- package/src/components/navigation/measurement/MeasurementAngleSnackbar.vue +18 -0
- package/src/components/navigation/measurement/MeasurementDataTable.vue +162 -0
- package/src/components/navigation/measurement/MeasurementDeleteModal.vue +49 -0
- package/src/components/navigation/measurement/MeasurementDeleteSnackbar.vue +40 -0
- package/src/components/navigation/measurement/MeasurementIcon.vue +41 -0
- package/src/components/navigation/measurement/MeasurementInfo.vue +25 -0
- package/src/components/navigation/measurement/MeasurementInfoAngle.vue +36 -0
- package/src/components/navigation/measurement/MeasurementInfoLength.vue +37 -0
- package/src/components/navigation/measurement/MeasurementInfoPolygon.vue +58 -0
- package/src/components/navigation/measurement/MeasurementLengthSnackbar.vue +18 -0
- package/src/components/navigation/measurement/MeasurementMenu.vue +97 -0
- package/src/components/navigation/measurement/MeasurementPanel.vue +30 -0
- package/src/components/navigation/measurement/MeasurementPolygonSnackbar.vue +18 -0
- package/src/components/navigation/measurement/MeasurementTools.vue +101 -0
- package/src/components/navigation/measurement/MeasurementVisibilityBtn.vue +53 -0
- package/src/components/navigation/measurement/__tests__/MeasurementAngleSnackbar.spec.ts +34 -0
- package/src/components/navigation/measurement/__tests__/MeasurementDataTable.spec.ts +79 -0
- package/src/components/navigation/measurement/__tests__/MeasurementDeleteSnackbar.spec.ts +51 -0
- package/src/components/navigation/measurement/__tests__/MeasurementInfo.spec.ts +77 -0
- package/src/components/navigation/measurement/__tests__/MeasurementLengthSnackbar.spec.ts +35 -0
- package/src/components/navigation/measurement/__tests__/MeasurementPolygonSnackbar.spec.ts +35 -0
- package/src/components/navigation/measurement/__tests__/MeasurementTools.spec.ts +87 -0
- package/src/components/shared/ColourPalette.vue +72 -0
- package/src/components/shared/DoubleSliderSelector.vue +66 -28
- package/src/components/shared/HorizontalSliderSelector.vue +80 -0
- package/src/components/shared/KeyboardShortcuts.vue +184 -0
- package/src/components/shared/LoadingSpinner.vue +508 -144
- package/src/components/shared/MultiLoginError.vue +98 -0
- package/src/components/shared/NotificationToaster.vue +112 -0
- package/src/components/shared/UpdateSnackbar.vue +22 -9
- package/src/components/shared/ValueSelector.vue +10 -10
- package/src/components/shared/VerticalSliderSelector.vue +45 -44
- package/src/components/shared/__tests__/ColourPalette.spec.ts +21 -0
- package/src/components/shared/__tests__/DoubleSliderSelector.spec.ts +58 -46
- package/src/components/shared/__tests__/HorizontalSliderSelector.spec.ts +35 -0
- package/src/components/shared/__tests__/KeyboardShortcuts.spec.ts +50 -0
- package/src/components/shared/__tests__/MultiLoginError.spec.ts +50 -0
- package/src/components/shared/__tests__/NotificationToaster.spec.ts +65 -0
- package/src/components/shared/__tests__/UpdateSnackbar.spec.ts +7 -7
- package/src/components/shared/__tests__/ValueSelector.spec.ts +6 -0
- package/src/composables/__tests__/useDebounce.spec.ts +17 -0
- package/src/composables/__tests__/useMovingAverage.spec.ts +40 -0
- package/src/composables/__tests__/useNavigationCube.spec.ts +79 -0
- package/src/{functions/__tests__/notification.spec.ts → composables/__tests__/useNotificationHandler.spec.ts} +74 -17
- package/src/composables/__tests__/useToolGroup.spec.ts +41 -0
- package/src/composables/__tests__/useViewName.spec.ts +29 -0
- package/src/composables/useBoundingBox.ts +32 -0
- package/src/composables/useEventListener.ts +7 -9
- package/src/composables/useMedia.ts +27 -0
- package/src/composables/useNavigationCube.ts +80 -0
- package/src/composables/useNotificationHandler.ts +82 -0
- package/src/composables/useResizeObserver.ts +31 -0
- package/src/composables/useToolGroup.ts +36 -0
- package/src/composables/useViewName.ts +34 -0
- package/src/composables/useViewer3cr.ts +3 -2
- package/src/config.ts +1 -1
- package/src/constants.ts +8 -0
- package/src/functions/HotkeyScope.ts +87 -0
- package/src/functions/__tests__/HotkeyScope.spec.ts +49 -0
- package/src/functions/__tests__/colours.spec.ts +42 -0
- package/src/functions/__tests__/fileReader.spec.ts +130 -0
- package/src/functions/__tests__/modelHelper.spec.ts +1 -0
- package/src/functions/__tests__/tsHelper.spec.ts +7 -0
- package/src/functions/chunker.ts +21 -0
- package/src/functions/colours.ts +45 -0
- package/src/functions/fileReader.ts +48 -0
- package/src/functions/guards/__tests__/isDataOverlayAngle.spec.ts +21 -0
- package/src/functions/guards/__tests__/isDataOverlayLength.spec.ts +21 -0
- package/src/functions/guards/__tests__/isDataOverlayPolygon.spec.ts +21 -0
- package/src/functions/guards/isDataOverlayAngle.ts +3 -4
- package/src/functions/guards/isDataOverlayLength.ts +3 -4
- package/src/functions/guards/isDataOverlayPolygon.ts +3 -4
- package/src/functions/openUrl.ts +3 -0
- package/src/functions/{__tests__ → parsers/__tests__}/parseAction.spec.ts +1 -1
- package/src/functions/{__tests__ → parsers/__tests__}/parseCallToAction.spec.ts +1 -1
- package/src/functions/{__tests__ → parsers/__tests__}/parseDataOverlay.spec.ts +1 -1
- package/src/functions/{__tests__ → parsers/__tests__}/parseDataOverlayData.spec.ts +1 -1
- package/src/functions/{__tests__ → parsers/__tests__}/parseDataOverlayEvent.spec.ts +3 -3
- package/src/functions/{__tests__ → parsers/__tests__}/parseMcadEvent.spec.ts +3 -3
- package/src/functions/{parseAction.ts → parsers/parseAction.ts} +1 -2
- package/src/functions/{parseCallToAction.ts → parsers/parseCallToAction.ts} +2 -2
- package/src/functions/{parseDataOverlay.ts → parsers/parseDataOverlay.ts} +3 -3
- package/src/functions/parsers/parseDataOverlayData.ts +9 -0
- package/src/functions/parsers/parseDataOverlayEvent.ts +19 -0
- package/src/functions/parsers/parseMcadEvent.ts +9 -0
- package/src/functions/platform.ts +7 -0
- package/src/functions/translateTooltipShortcut.ts +35 -0
- package/src/functions/tsHelper.ts +3 -0
- package/src/main.ts +68 -43
- package/src/models/__tests__/iso-languages.spec.ts +23 -0
- package/src/models/__tests__/scanState.spec.ts +14 -38
- package/src/models/iso-languages.ts +1609 -0
- package/src/models/progress.ts +23 -0
- package/src/models/scanState.ts +56 -100
- package/src/plugins/__tests__/pinia.spec.ts +7 -0
- package/src/plugins/__tests__/vue-i18n.spec.ts +7 -0
- package/src/plugins/__tests__/vuetify.spec.ts +3 -3
- package/src/plugins/locales/en.json +442 -0
- package/src/plugins/material-symbols/aliases.ts +43 -0
- package/src/plugins/material-symbols/material-symbols-filled.ts +11 -0
- package/src/plugins/material-symbols/material-symbols-outlined.ts +9 -0
- package/src/plugins/pinia.ts +3 -0
- package/src/plugins/vue-i18n.ts +9 -0
- package/src/plugins/vuetify.ts +157 -25
- package/src/services/__tests__/features.service.spec.ts +14 -0
- package/src/services/__tests__/gpt.service.spec.ts +64 -3
- package/src/services/__tests__/viewer-3cr.service.spec.ts +616 -192
- package/src/services/features.service.ts +32 -0
- package/src/services/gpt.service.ts +5 -2
- package/src/services/viewer-3cr.service.ts +374 -307
- package/src/stores/__tests__/data-overlay.store.spec.ts +92 -0
- package/src/stores/__tests__/demo.store.spec.ts +196 -0
- package/src/stores/__tests__/drawer.store.spec.ts +27 -0
- package/src/stores/__tests__/intro.store.spec.ts +102 -0
- package/src/stores/__tests__/language.store.spec.ts +83 -0
- package/src/stores/__tests__/mcad-floating.store.spec.ts +339 -0
- package/src/stores/__tests__/mcad.store.spec.ts +88 -0
- package/src/stores/__tests__/save.store.spec.ts +51 -0
- package/src/stores/__tests__/theme.store.spec.ts +18 -0
- package/src/stores/__tests__/tool.store.spec.ts +53 -0
- package/src/stores/__tests__/upload.store.spec.ts +19 -0
- package/src/stores/__tests__/viewer.store.spec.ts +20 -0
- package/src/stores/data-overlay.store.ts +93 -0
- package/src/stores/demo.store.ts +284 -0
- package/src/stores/drawer.store.ts +23 -0
- package/src/stores/intro.store.ts +35 -0
- package/src/stores/language.store.ts +59 -0
- package/src/stores/mcad-floating.store.ts +141 -0
- package/src/stores/mcad.store.ts +53 -0
- package/src/stores/save.store.ts +59 -0
- package/src/stores/theme.store.ts +45 -0
- package/src/stores/tool.store.ts +41 -0
- package/src/stores/upload.store.ts +19 -0
- package/src/stores/viewer.store.ts +34 -0
- package/src/tools/__tests__/annotation-create.tool.spec.ts +90 -0
- package/src/tools/__tests__/annotation-move.tool.spec.ts +107 -0
- package/src/tools/__tests__/data-overlay.tool.spec.ts +127 -0
- package/src/tools/__tests__/mcad-move.tool.spec.ts +106 -0
- package/src/tools/__tests__/mcad-rotate.tool.spec.ts +103 -0
- package/src/tools/__tests__/mcad-scale.tool.spec.ts +8 -0
- package/src/tools/__tests__/mcad-select.tool.spec.ts +63 -0
- package/src/tools/__tests__/measurement-angle.tool.spec.ts +26 -0
- package/src/tools/__tests__/measurement-length.tool.spec.ts +26 -0
- package/src/tools/__tests__/measurement-polygon.tool.spec.ts +26 -0
- package/src/tools/annotation-create.tool.ts +48 -0
- package/src/tools/annotation-move.tool.ts +48 -0
- package/src/tools/data-overlay.tool.ts +45 -48
- package/src/tools/mcad-move.tool.ts +47 -0
- package/src/tools/mcad-rotate.tool.ts +47 -0
- package/src/tools/mcad-scale-tool.ts +10 -0
- package/src/tools/mcad-select-tool.ts +32 -0
- package/src/tools/measurement-angle.tool.ts +20 -0
- package/src/tools/measurement-length.tool.ts +20 -0
- package/src/tools/measurement-polygon.tool.ts +20 -0
- package/src/types/feature.ts +6 -0
- package/src/types/viewer-tool.ts +5 -0
- package/test/MockImportOriginal.ts +7 -0
- package/test/assertions/beTypeOrNull.ts +24 -0
- package/test/fakers/action-data.faker.ts +1 -1
- package/test/fakers/action.faker.ts +1 -1
- package/test/fakers/call-to-action.faker.ts +1 -1
- package/test/fakers/data-overlay-angle.faker.ts +1 -1
- package/test/fakers/data-overlay-annotation.faker.ts +1 -1
- package/test/fakers/data-overlay-data.faker.ts +18 -15
- package/test/fakers/data-overlay-interaction.faker.ts +25 -17
- package/test/fakers/data-overlay-length.faker.ts +1 -1
- package/test/fakers/data-overlay-mcad.faker.ts +4 -3
- package/test/fakers/data-overlay-polygon.faker.ts +1 -1
- package/test/fakers/feature.faker.ts +13 -0
- package/test/fakers/file.faker.ts +11 -0
- package/test/fakers/gpt-question.faker.ts +1 -1
- package/test/fakers/gpt-response.faker.ts +1 -1
- package/test/fakers/mcad-object-interaction.faker.ts +4 -4
- package/test/fakers/orientation.faker.ts +1 -1
- package/test/fakers/segment-angle.faker.ts +1 -1
- package/test/fakers/upload.faker.ts +14 -0
- package/test/getAnimationFrame.ts +3 -0
- package/test/plugins/findByTestId.ts +13 -6
- package/test/plugins/pinia.ts +20 -0
- package/test/plugins/vitest.d.ts +8 -0
- package/test/plugins/vue-i18n.ts +22 -0
- package/test/plugins/vuetify.ts +10 -0
- package/test/setup.ts +37 -12
- package/tsconfig.json +1 -1
- package/vite.config.mts +48 -18
- package/vitest.config.mts +12 -3
- package/src/assets/images/MainBackdrop.svg +0 -48
- package/src/assets/images/dark/Singular-Health-Disc-Mono.svg +0 -9
- package/src/assets/images/dark/demo-icon-small.png +0 -0
- package/src/assets/images/dark/demo-logo-small.svg +0 -27
- package/src/assets/images/dark/demo-logo.svg +0 -1
- package/src/assets/images/light/Singular-Health-Disc-Mono.svg +0 -9
- package/src/assets/logos/3dicom/white-mini.svg +0 -20
- package/src/components/demo/DemoModal.vue +0 -44
- package/src/components/demo/DemoPatientModal.vue +0 -52
- package/src/components/demo/__tests__/DemoModal.spec.ts +0 -26
- package/src/components/demo/__tests__/DemoPatientModal.spec.ts +0 -38
- package/src/components/demo/__tests__/options.spec.ts +0 -25
- package/src/components/demo/licence/DemoLicenceEnableCloudStorageModal.vue +0 -64
- package/src/components/demo/licence/DemoLicenceInfoModal.vue +0 -49
- package/src/components/demo/licence/DemoLicenceSendToPartyModal.vue +0 -178
- package/src/components/demo/licence/DemoLicenceShareToMobileModal.vue +0 -102
- package/src/components/demo/licence/__tests__/DemoLicenceSendToPartyModal.spec.ts +0 -36
- package/src/components/demo/licence/__tests__/DemoLicenceShareToMobileModal.spec.ts +0 -52
- package/src/components/demo/options.ts +0 -170
- package/src/components/demo/patient/DemoPatientEnableCloudStorageModal.vue +0 -64
- package/src/components/demo/patient/DemoPatientInfoModal.vue +0 -49
- package/src/components/demo/patient/DemoPatientSendToPartyModal.vue +0 -177
- package/src/components/demo/patient/DemoPatientShareToMobileModal.vue +0 -102
- package/src/components/demo/patient/__tests__/DemoPatientEnableCloudStorageModal.spec.ts +0 -38
- package/src/components/demo/patient/__tests__/DemoPatientInfoModal.spec.ts +0 -38
- package/src/components/demo/patient/__tests__/DemoPatientSendToPartyModal.spec.ts +0 -36
- package/src/components/demo/patient/__tests__/DemoPatientShareToMobileModal.spec.ts +0 -52
- package/src/components/modal/CloseViewerModal.vue +0 -69
- package/src/components/modal/MftpWebGL3DRModal.vue +0 -336
- package/src/components/modal/ViewerNavigationDrawerContent.vue +0 -168
- package/src/components/modal/ViewerNavigationDrawerFooter.vue +0 -131
- package/src/components/modal/ViewerNavigationDrawerHeader.vue +0 -33
- package/src/components/modal/WebGL3DR.vue +0 -91
- package/src/components/modal/__tests__/CloseViewerModal.spec.ts +0 -70
- package/src/components/modal/__tests__/ViewerNavigationDrawerContent.spec.ts +0 -11
- package/src/components/modal/__tests__/ViewerNavigationDrawerFooter.spec.ts +0 -46
- package/src/components/modal/__tests__/ViewerNavigationDrawerHeader.spec.ts +0 -40
- package/src/components/modal/actions/NavigationCubeAction.vue +0 -26
- package/src/components/modal/actions/__tests__/NavigationCubeAction.spec.ts +0 -25
- package/src/components/modal/buttons/AutoAnnotateBtn.vue +0 -197
- package/src/components/modal/buttons/__tests__/AutoAnnotateBtn.spec.ts +0 -28
- package/src/components/modal/menus/FileMenu.vue +0 -73
- package/src/components/modal/menus/__tests__/FileMenu.spec.ts +0 -110
- package/src/components/navigation/mcad/McadGlobalActions.vue +0 -20
- package/src/components/navigation/mcad/McadGlobalOpacitySlider.vue +0 -103
- package/src/components/navigation/mcad/McadGlobalScanViewBtn.vue +0 -28
- package/src/components/navigation/mcad/McadGlobalVisibilityBtn.vue +0 -38
- package/src/components/views/AnnotationTreeView.vue +0 -236
- package/src/components/views/DisplaySettings.vue +0 -94
- package/src/components/views/MarkupTreeView.vue +0 -201
- package/src/components/views/McadObjectTreeView.vue +0 -129
- package/src/components/views/__tests__/AnnotationTreeView.spec.ts +0 -62
- package/src/components/views/__tests__/MarkupTreeView.spec.ts +0 -41
- package/src/components/views/__tests__/McadObjectTreeView.spec.ts +0 -47
- package/src/components/views/modals/DataOverlayGeneralModal.vue +0 -71
- package/src/components/views/modals/DataOverlayMarkupModal.vue +0 -60
- package/src/components/views/modals/DataOverlayModal.vue +0 -88
- package/src/components/views/shared/MaskIcon.vue +0 -44
- package/src/components/views/shared/ObjectColor.vue +0 -31
- package/src/components/views/shared/ObjectLabel.vue +0 -30
- package/src/components/views/shared/Opacity.vue +0 -65
- package/src/components/views/shared/VisibilityBtn.vue +0 -25
- package/src/components/views/shared/__tests__/MaskIcon.spec.ts +0 -10
- package/src/components/views/shared/__tests__/ObjectColor.spec.ts +0 -10
- package/src/components/views/shared/__tests__/ObjectLabel.spec.ts +0 -10
- package/src/components/views/shared/__tests__/Opacity.spec.ts +0 -24
- package/src/components/views/shared/__tests__/VisibilityBtn.spec.ts +0 -11
- package/src/components/views/types/annotation-tree-view-item-child-action.ts +0 -6
- package/src/components/views/types/annotation-tree-view-item-child.ts +0 -9
- package/src/components/views/types/annotation-tree-view-item.ts +0 -13
- package/src/components/views/types/markup-tree-view-item-child.ts +0 -6
- package/src/components/views/types/markup-tree-view-item.ts +0 -14
- package/src/components/views/types/mcad-object-tree-view-item.ts +0 -13
- package/src/composables/__tests__/useAnnotations.spec.ts +0 -35
- package/src/composables/__tests__/useIntroJs.spec.ts +0 -51
- package/src/composables/__tests__/useMarkups.spec.ts +0 -39
- package/src/composables/__tests__/useMcadObjects.spec.ts +0 -36
- package/src/composables/__tests__/useNavigationCubeObserver.spec.ts +0 -61
- package/src/composables/useAnnotations.ts +0 -37
- package/src/composables/useIntroJs.ts +0 -142
- package/src/composables/useMarkups.ts +0 -41
- package/src/composables/useMcadObjects.ts +0 -32
- package/src/composables/useNavigationCubeObserver.ts +0 -114
- package/src/composables/useVersion3cr.ts +0 -7
- package/src/functions/__tests__/layoutOverlayStyle.spec.ts +0 -325
- package/src/functions/layoutOverlayStyle.ts +0 -84
- package/src/functions/notification.ts +0 -82
- package/src/functions/parseDataOverlayData.ts +0 -10
- package/src/functions/parseDataOverlayEvent.ts +0 -17
- package/src/functions/parseMcadEvent.ts +0 -10
- package/src/functions/rgbaToCss.ts +0 -13
- package/src/models/__tests__/loadViewerOptions.spec.ts +0 -72
- package/src/models/__tests__/loadViewerPayload.spec.ts +0 -10
- package/src/models/callbacks.ts +0 -4
- package/src/models/loadViewerOptions.ts +0 -79
- package/src/models/loadViewerPayload.ts +0 -17
- package/src/plugins/__tests__/usePlugins.spec.ts +0 -12
- package/src/plugins/usePlugins.ts +0 -8
- package/src/types/action-data.ts +0 -4
- package/src/types/action.ts +0 -13
- package/src/types/call-to-action.ts +0 -9
- package/src/types/colour.ts +0 -6
- package/src/types/data-overlay-angle.ts +0 -16
- package/src/types/data-overlay-annotation.ts +0 -18
- package/src/types/data-overlay-data.ts +0 -15
- package/src/types/data-overlay-event.ts +0 -5
- package/src/types/data-overlay-info.ts +0 -18
- package/src/types/data-overlay-interaction.ts +0 -15
- package/src/types/data-overlay-length.ts +0 -16
- package/src/types/data-overlay-markup.ts +0 -7
- package/src/types/data-overlay-mcad.ts +0 -20
- package/src/types/data-overlay-polygon.ts +0 -18
- package/src/types/data-overlay.ts +0 -16
- package/src/types/demo-type.ts +0 -4
- package/src/types/gpt-question.ts +0 -4
- package/src/types/gpt-response-payload.ts +0 -6
- package/src/types/mcad-object-interaction.ts +0 -15
- package/src/types/segment-angle.ts +0 -5
- package/src/types/vector2.ts +0 -4
- package/src/types/vector3.ts +0 -5
- package/test/fakers/data-overlay-info.faker.ts +0 -29
- /package/src/assets/logos/3dicom/{white.svg → white/white.svg} +0 -0
- /package/src/assets/{images/light/Singular-Health-Trademark-mono.svg → logos/singular-health/black/black.svg} +0 -0
- /package/src/assets/{images/dark/Singular-Health-Trademark-mono.svg → logos/singular-health/white/white.svg} +0 -0
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": {
|
|
3
|
+
"profiles": [
|
|
4
|
+
{
|
|
5
|
+
"name": "Courtney Henry",
|
|
6
|
+
"licence": "Patient"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"name": "Jane Doe",
|
|
10
|
+
"licence": "R&D"
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
"enums": {
|
|
15
|
+
"demoType": {
|
|
16
|
+
"licence": "Licence",
|
|
17
|
+
"patient": "Patient"
|
|
18
|
+
},
|
|
19
|
+
"notificationType": {
|
|
20
|
+
"success": "Success",
|
|
21
|
+
"error": "Error",
|
|
22
|
+
"warning": "Warning",
|
|
23
|
+
"info": "Information"
|
|
24
|
+
},
|
|
25
|
+
"saveState": {
|
|
26
|
+
"saving": "Saving...",
|
|
27
|
+
"savedCloud": "Saved to Cloud Storage",
|
|
28
|
+
"savedTemporary": "Saved to Temporary Storage",
|
|
29
|
+
"unsaved": "Unsaved Changes",
|
|
30
|
+
"error": "Error, please try again"
|
|
31
|
+
},
|
|
32
|
+
"scanView": {
|
|
33
|
+
"volume": "3D Volume",
|
|
34
|
+
"transverse": "Transverse",
|
|
35
|
+
"sagittal": "Sagittal",
|
|
36
|
+
"coronal": "Coronal"
|
|
37
|
+
},
|
|
38
|
+
"sharePermission": {
|
|
39
|
+
"noAccess": "No Access",
|
|
40
|
+
"viewer": "Viewer",
|
|
41
|
+
"editor": "Editor",
|
|
42
|
+
"owner": "Owner"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"fields": {
|
|
46
|
+
"colour": {
|
|
47
|
+
"label": "Colour Preset",
|
|
48
|
+
"placeholder": "Select a Colour Preset"
|
|
49
|
+
},
|
|
50
|
+
"description": {
|
|
51
|
+
"label": "Description",
|
|
52
|
+
"placeholder": "Start typing here..."
|
|
53
|
+
},
|
|
54
|
+
"density": {
|
|
55
|
+
"label": "Density Preset",
|
|
56
|
+
"placeholder": "Select a Density Preset"
|
|
57
|
+
},
|
|
58
|
+
"search": {
|
|
59
|
+
"label": "Search",
|
|
60
|
+
"placeholder": "Start typing to filter..."
|
|
61
|
+
},
|
|
62
|
+
"title": {
|
|
63
|
+
"label": "Title",
|
|
64
|
+
"placeholder": "Start typing here..."
|
|
65
|
+
},
|
|
66
|
+
"url": {
|
|
67
|
+
"label": "URL",
|
|
68
|
+
"placeholder": "www."
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"labels": {
|
|
72
|
+
"accept": "Accept",
|
|
73
|
+
"actions": "Actions",
|
|
74
|
+
"addAccount": "Add Account",
|
|
75
|
+
"addAction": "Add Resources",
|
|
76
|
+
"addMoreCredits": "Add More Credits",
|
|
77
|
+
"addObject": "Add Object",
|
|
78
|
+
"addToStorage": "Add to Storage",
|
|
79
|
+
"android": "DICOM Viewer for Android",
|
|
80
|
+
"angle": "Angle",
|
|
81
|
+
"annotation": "Annotation",
|
|
82
|
+
"annotationCreate": "Create Annotation",
|
|
83
|
+
"annotationDelete": "Delete Annotation",
|
|
84
|
+
"annotationTools": "Annotation Tools",
|
|
85
|
+
"annotationUpdate": "Update Annotation",
|
|
86
|
+
"annotations": "Annotations",
|
|
87
|
+
"annotivaAi": "Annotiva AI",
|
|
88
|
+
"arVrAddon": "AR/VR Add-on",
|
|
89
|
+
"area": "Area",
|
|
90
|
+
"assistedNavigation": "Assisted Navigation",
|
|
91
|
+
"autoAnnotate": "Auto-Annotate",
|
|
92
|
+
"averageHu": "Average HU",
|
|
93
|
+
"backToPortal": "Back to Portal",
|
|
94
|
+
"billingSettings": "Billing Settings",
|
|
95
|
+
"blackAndWhite": "Black & White",
|
|
96
|
+
"bone": "Bone",
|
|
97
|
+
"brain": "Brain",
|
|
98
|
+
"brightness": "Brightness",
|
|
99
|
+
"cameraRotate": "Camera Rotate",
|
|
100
|
+
"cancel": "Cancel",
|
|
101
|
+
"chooseTheme": "Choose Your Theme",
|
|
102
|
+
"close": "Close",
|
|
103
|
+
"closeViewer": "Close Viewer",
|
|
104
|
+
"closeWithoutSaving": "Close Without Saving",
|
|
105
|
+
"cloudStorage": "Cloud Storage",
|
|
106
|
+
"colour": "Colour",
|
|
107
|
+
"confirm": "Confirm",
|
|
108
|
+
"continueWithDemo": "Continue with Demo",
|
|
109
|
+
"contrast": "Contrast",
|
|
110
|
+
"copyLink": "Copy Link",
|
|
111
|
+
"create": "Create",
|
|
112
|
+
"credits": "Credits",
|
|
113
|
+
"ctColour": "CT Colour",
|
|
114
|
+
"cubeNavigation": "3D Cube Navigation",
|
|
115
|
+
"customColour": "Custom Colour",
|
|
116
|
+
"dark": "Dark",
|
|
117
|
+
"decline": "Decline",
|
|
118
|
+
"delete": "Delete",
|
|
119
|
+
"demoType": "Demo Type",
|
|
120
|
+
"density": "Density",
|
|
121
|
+
"description": "Description",
|
|
122
|
+
"design": "Design",
|
|
123
|
+
"dicomAccess": "DICOM Access",
|
|
124
|
+
"dismiss": "Dismiss",
|
|
125
|
+
"display": "Display",
|
|
126
|
+
"done": "Done",
|
|
127
|
+
"download": "Download",
|
|
128
|
+
"edit": "Edit",
|
|
129
|
+
"editProfile": "Edit Profile",
|
|
130
|
+
"email": "Email",
|
|
131
|
+
"enableCloudStorage": "Enable Cloud Storage",
|
|
132
|
+
"fileName": "File Name",
|
|
133
|
+
"filter": "Filter",
|
|
134
|
+
"findOutMore": "Find Out More",
|
|
135
|
+
"fineAdjustment": "Fine Adjustment",
|
|
136
|
+
"finish": "Finish",
|
|
137
|
+
"flip": "Flip",
|
|
138
|
+
"flipHorizontally": "Flip Horizontally",
|
|
139
|
+
"flipVertically": "Flip Vertically",
|
|
140
|
+
"flipView": "Flip {view}",
|
|
141
|
+
"focus": "Focus",
|
|
142
|
+
"fullscreenEnter": "Make {view} Full-screen",
|
|
143
|
+
"fullscreenExit": "Exit Full-screen",
|
|
144
|
+
"generate": "Generate",
|
|
145
|
+
"group": "Group",
|
|
146
|
+
"help": "Help",
|
|
147
|
+
"helpDesk": "Help Desk",
|
|
148
|
+
"hide": "Hide",
|
|
149
|
+
"hideAll": "Hide All",
|
|
150
|
+
"highDensity": "High Density",
|
|
151
|
+
"highestHu": "Highest HU",
|
|
152
|
+
"history": "History",
|
|
153
|
+
"home": "Home",
|
|
154
|
+
"installing": "Installing",
|
|
155
|
+
"inverse": "Inverse",
|
|
156
|
+
"invite": "Invite",
|
|
157
|
+
"ios": "DICOM Viewer for iOS",
|
|
158
|
+
"keyboardShortcuts": "Keyboard Shortcuts",
|
|
159
|
+
"language": "Language",
|
|
160
|
+
"lastUpdated": "Last Updated",
|
|
161
|
+
"layout1x3": "Change Layout to 1:3",
|
|
162
|
+
"layout2x2": "Change Layout to 2:2",
|
|
163
|
+
"length": "Length",
|
|
164
|
+
"letsGo": "Let's Go!",
|
|
165
|
+
"light": "Light",
|
|
166
|
+
"liver": "Liver",
|
|
167
|
+
"loadSeries": "Load Series",
|
|
168
|
+
"lock": "Lock",
|
|
169
|
+
"lowDensity": "Low Density",
|
|
170
|
+
"lowestHu": "Lowest HU",
|
|
171
|
+
"lungs": "Lungs",
|
|
172
|
+
"manageSubscription": "Manage Subscription",
|
|
173
|
+
"measurementDelete": "Delete Measurement",
|
|
174
|
+
"mcad": "MCAD",
|
|
175
|
+
"mcadDelete": "Delete MCAD Object",
|
|
176
|
+
"mcadEdit": "Edit Object",
|
|
177
|
+
"mcadInvert": "Invert Object",
|
|
178
|
+
"mcadMove": "Move Object",
|
|
179
|
+
"mcadRotate": "Rotate Object",
|
|
180
|
+
"mcadScale": "Scale Object",
|
|
181
|
+
"mcadTools": "MCAD Tools",
|
|
182
|
+
"measure": "Measure",
|
|
183
|
+
"measurementTools": " Measurement Tools",
|
|
184
|
+
"medicalImageTooling": "Medical Image Tooling",
|
|
185
|
+
"mobile": "Mobile",
|
|
186
|
+
"moreActions": "More Actions",
|
|
187
|
+
"move": "Move",
|
|
188
|
+
"muscle": "Muscle",
|
|
189
|
+
"next": "Next",
|
|
190
|
+
"noInvites": "No Invites",
|
|
191
|
+
"noResources": "No Resources",
|
|
192
|
+
"none": "None",
|
|
193
|
+
"notifications": "Notifications",
|
|
194
|
+
"opacity": "Opacity",
|
|
195
|
+
"or": "or",
|
|
196
|
+
"pan": "Pan",
|
|
197
|
+
"perMonth": "{price} per month",
|
|
198
|
+
"perimeter": "Perimeter",
|
|
199
|
+
"polygon": "Polygon",
|
|
200
|
+
"previous": "Previous",
|
|
201
|
+
"purchase3dicom": "Purchase 3DICOM Patient",
|
|
202
|
+
"quality": "Quality",
|
|
203
|
+
"rainbow": "Rainbow",
|
|
204
|
+
"recentDicomImages": "Recent DICOM Images",
|
|
205
|
+
"removeAction": "Remove Action",
|
|
206
|
+
"reset": "Reset",
|
|
207
|
+
"resetView": "Reset Views to Default",
|
|
208
|
+
"resolution": "Resolution",
|
|
209
|
+
"resources": "Resources",
|
|
210
|
+
"role": "Role",
|
|
211
|
+
"rotate": "Rotate",
|
|
212
|
+
"rotateView": "Rotate {view}",
|
|
213
|
+
"runAiModels": "Run AI Models",
|
|
214
|
+
"save": "Save",
|
|
215
|
+
"saveSession": "Save Session",
|
|
216
|
+
"saveToCloud": "Save to Cloud",
|
|
217
|
+
"scale": "Scale",
|
|
218
|
+
"securitySettings": "Security Settings",
|
|
219
|
+
"segment": "Segment",
|
|
220
|
+
"sensitivity": "Sensitivity",
|
|
221
|
+
"settings": "Settings",
|
|
222
|
+
"share": "Share",
|
|
223
|
+
"shareThisImage": "Share This Image",
|
|
224
|
+
"sharedWith": "Shared With",
|
|
225
|
+
"show": "Show",
|
|
226
|
+
"showAll": "Show All",
|
|
227
|
+
"showTutorial": "Show Tutorial",
|
|
228
|
+
"skin": "Skin",
|
|
229
|
+
"slice": "Slice the 3D Volume",
|
|
230
|
+
"smartDescription": "Smart Description",
|
|
231
|
+
"softTissue": "Soft Tissue",
|
|
232
|
+
"sort": "Sort",
|
|
233
|
+
"space": "Space",
|
|
234
|
+
"stlResolution": "STL Resolution",
|
|
235
|
+
"switchAccounts": "Switch Accounts",
|
|
236
|
+
"systemDefault": "System Default",
|
|
237
|
+
"temporalBones": "Temporal Bones",
|
|
238
|
+
"theme": "Theme",
|
|
239
|
+
"toggleVisibility": "Toggle Visibility",
|
|
240
|
+
"tools": "Tools",
|
|
241
|
+
"totalLength": "Total Length",
|
|
242
|
+
"tutorial": "Tutorial",
|
|
243
|
+
"undo": "Undo",
|
|
244
|
+
"ungroup": "Ungroup",
|
|
245
|
+
"unlock": "Unlock",
|
|
246
|
+
"update": "Update",
|
|
247
|
+
"upgrade": "Upgrade",
|
|
248
|
+
"version": "Version",
|
|
249
|
+
"whatsNew": "What's New?",
|
|
250
|
+
"zoom": "Zoom",
|
|
251
|
+
"zoomIn": "Zoom In",
|
|
252
|
+
"zoomOut": "Zoom Out"
|
|
253
|
+
},
|
|
254
|
+
"texts": {
|
|
255
|
+
"aiDisclaimer": "3DICOM's Annotiva AI is powered by AI Large Language Models (LLMs) which generate general health information for improved patient comprehension.",
|
|
256
|
+
"angleToolHelp": "Click on three points within a 2D view to create an angle annotation.",
|
|
257
|
+
"annotationCreateHelp": "Add your title, description and links to external resources.",
|
|
258
|
+
"annotationCreateSnackbar": "Click on any scan view to create an annotation.",
|
|
259
|
+
"annotationCreateSuccess": "Annotation created successfully!",
|
|
260
|
+
"annotationDeleteConfirm": "Are you sure you want to delete this annotation?",
|
|
261
|
+
"annotationDeleted": "Annotation deleted successfully!",
|
|
262
|
+
"annotationGeneratedSuccess": "Annotations generated successfully!",
|
|
263
|
+
"annotationMoveHelp": "Click and place an annotation as you'd like.",
|
|
264
|
+
"autoAnnotateLoading": [
|
|
265
|
+
"AI: Analyzing X-rays faster than you can say 'supercalifragilisticexpialidocious'!",
|
|
266
|
+
"Just a moment, our AI is putting on its lab coat.",
|
|
267
|
+
"Scanning pixels like Sherlock scans clues.",
|
|
268
|
+
"Our AI is channeling its inner doctor.",
|
|
269
|
+
"Hang tight, our AI is donning its stethoscope.",
|
|
270
|
+
"Analyzing with AI precision – because guessing isn't an option!",
|
|
271
|
+
"Our AI is checking the scan like a detective at a crime scene.",
|
|
272
|
+
"Crunching data like a pro! Results on the way.",
|
|
273
|
+
"AI is on it, decoding your scan like a mystery novel.",
|
|
274
|
+
"Our AI is in deep thought... about your health!",
|
|
275
|
+
"Letting our AI take a close look at those pixels.",
|
|
276
|
+
"Your scan is getting the AI treatment.",
|
|
277
|
+
"Analyzing like a champ! Our AI is almost there.",
|
|
278
|
+
"Hold tight! Our AI is putting on its thinking cap.",
|
|
279
|
+
"AI is hard at work, diagnosing like a pro!",
|
|
280
|
+
"Our AI is busy solving the puzzle of your scan.",
|
|
281
|
+
"AI is processing... and sipping virtual coffee.",
|
|
282
|
+
"Your scan is in good hands – AI's hands.",
|
|
283
|
+
"Just a sec, our AI is perfecting the diagnosis.",
|
|
284
|
+
"Scanning... AI style.",
|
|
285
|
+
"AI is reading your scan like an open book.",
|
|
286
|
+
"Give us a moment, our AI is analyzing every detail.",
|
|
287
|
+
"Our AI is double-checking for good measure.",
|
|
288
|
+
"AI: Making sense of pixels and patterns.",
|
|
289
|
+
"AI is decoding your scan, Sherlock style.",
|
|
290
|
+
"Processing with precision – AI is on it.",
|
|
291
|
+
"Our AI is diving deep into the data.",
|
|
292
|
+
"AI is dissecting the details for an accurate diagnosis.",
|
|
293
|
+
"Hold on, our AI is piecing together the puzzle.",
|
|
294
|
+
"AI is at the helm, navigating your scan results.",
|
|
295
|
+
"Analyzing with AI magic – results coming up!",
|
|
296
|
+
"Our AI is untangling the mysteries of your scan.",
|
|
297
|
+
"Processing... AI's putting its brain to work.",
|
|
298
|
+
"Your scan + our AI = accurate results.",
|
|
299
|
+
"AI is fine-tuning the analysis for perfection.",
|
|
300
|
+
"Letting our AI do the heavy lifting – almost done!",
|
|
301
|
+
"AI is reading the scan like a pro.",
|
|
302
|
+
"Our AI is on a mission – accurate results ahead.",
|
|
303
|
+
"Analyzing with AI expertise – hang tight!",
|
|
304
|
+
"AI is taking a closer look – results are on the way."
|
|
305
|
+
],
|
|
306
|
+
"callToActionHelp": "Add external resources",
|
|
307
|
+
"closeViewer": "Are you sure you want to close the online viewer?",
|
|
308
|
+
"cloudStorageBenefits": [
|
|
309
|
+
"Secure storage.",
|
|
310
|
+
"Access your scan from any device.",
|
|
311
|
+
"Keep your medical imaging records at your fingertips."
|
|
312
|
+
],
|
|
313
|
+
"cubeNavigation": "Assist how you navigate and orientate your view.",
|
|
314
|
+
"demo": {
|
|
315
|
+
"licence": {
|
|
316
|
+
"downloadMcad": {
|
|
317
|
+
"title": "Download your designs",
|
|
318
|
+
"subtitles": [
|
|
319
|
+
"3DICOM's white-labelled online 2D / 3D DICOM viewer allows you to download your designs"
|
|
320
|
+
]
|
|
321
|
+
},
|
|
322
|
+
"downloadScan": {
|
|
323
|
+
"title": "Improve interoperability with local download of DICOM series",
|
|
324
|
+
"subtitles": [
|
|
325
|
+
"Integrate 3DICOM's white-labelled online 2D/3D viewer into your PACS and/or medical records' database to pull DICOM series and allow for local download direct from the viewer. This feature can be hidden upon request."
|
|
326
|
+
]
|
|
327
|
+
},
|
|
328
|
+
"exit": {
|
|
329
|
+
"title": "Thank you for trying the 3DICOM Licensing Demo.",
|
|
330
|
+
"subtitles": [
|
|
331
|
+
"Should you have any further questions or enquiries, please get in touch by emailing support@singular.health."
|
|
332
|
+
]
|
|
333
|
+
},
|
|
334
|
+
"loadScan": {
|
|
335
|
+
"title": "Support multiple medical imaging file types",
|
|
336
|
+
"subtitles": [
|
|
337
|
+
"3DICOM's white-labelled online 2D / 3D DICOM viewer allows the loading of X-Ray (XR), Ultrasound (US), Computed Tomography (CT), Magnetic Resonance Imaging (MRI), and Positron Emitting Tomography (PET) using the global DICOM file format."
|
|
338
|
+
]
|
|
339
|
+
},
|
|
340
|
+
"loadSession": {
|
|
341
|
+
"title": "Save previous progress and share particular sessions",
|
|
342
|
+
"subtitles": [
|
|
343
|
+
"3DICOM's viewer enables session-saving to record any changes made during the viewing of medical scans including orientation of views, editing of labels, visualisation settings, and density settings. Changes made during sessions preserve the integrity of the DICOM file and are overlaid in future sessions."
|
|
344
|
+
]
|
|
345
|
+
},
|
|
346
|
+
"saveSession": {
|
|
347
|
+
"title": "Thank you for trying the 3DICOM Licensing Demo",
|
|
348
|
+
"subtitles": [
|
|
349
|
+
"Each 3DICOM viewer session can be saved with your changes made for future viewing."
|
|
350
|
+
]
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
"patient": {
|
|
354
|
+
"downloadMcad": {
|
|
355
|
+
"title": "Download your designs",
|
|
356
|
+
"subtitles": [
|
|
357
|
+
"3DICOM's white-labelled online 2D / 3D DICOM viewer allows you to download your designs"
|
|
358
|
+
]
|
|
359
|
+
},
|
|
360
|
+
"downloadScan": {
|
|
361
|
+
"title": "3DICOM Patient enables on-demand download of DICOM series",
|
|
362
|
+
"subtitles": [
|
|
363
|
+
"3DICOM Patient enables you to store your medical imaging and related files / reports online or share them temporarily between devices.",
|
|
364
|
+
"DICOM files can be downloaded to your device for local storage and providing to 3rd parties via CD/USB.",
|
|
365
|
+
"Purchase 3DICOM Patient to gain control over your DICOM file storage."
|
|
366
|
+
]
|
|
367
|
+
},
|
|
368
|
+
"exit": {
|
|
369
|
+
"title": "Thank you for trying the 3DICOM Patient Demo.",
|
|
370
|
+
"subtitles": [
|
|
371
|
+
"Should you have any further questions or enquiries, please get in touch by emailing support@singular.health."
|
|
372
|
+
]
|
|
373
|
+
},
|
|
374
|
+
"loadScan": {
|
|
375
|
+
"title": "3DICOM Patient supports multiple Medical Imaging Formats",
|
|
376
|
+
"subtitles": [
|
|
377
|
+
"3DICOM Patient enables you to load of X-Ray (XR), Ultrasound (US), Computed Tomography (CT), Magnetic Resonance Imaging (MRI), and Positron Emitting Tomography (PET), using the global DICOM file format.",
|
|
378
|
+
"Purchase 3DICOM Patient to load your own medical images and view in 2D / 3D."
|
|
379
|
+
]
|
|
380
|
+
},
|
|
381
|
+
"loadSession": {
|
|
382
|
+
"title": "3DICOM Patient allows you to load previous sessions",
|
|
383
|
+
"subtitles": [
|
|
384
|
+
"3DICOM Patient gives you to option to save any changes made during the viewing of your scan including orientation of views, editing of labels, visualisation settings, and density settings to easily view your scans the same way in the future. Session data can also be shared to 3rd parties so they see your scan the same way that you do."
|
|
385
|
+
]
|
|
386
|
+
},
|
|
387
|
+
"saveSession": {
|
|
388
|
+
"title": "Thank you for trying the 3DICOM Patient Demo.",
|
|
389
|
+
"subtitles": [
|
|
390
|
+
"Each 3DICOM viewer session can be saved with your changes made for future viewing."
|
|
391
|
+
]
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
},
|
|
395
|
+
"diagnosticDisclaimer": "Not for diagnostic purposes.",
|
|
396
|
+
"dontShowAgain": "Don't show me this again.",
|
|
397
|
+
"enableForCredits": "Enable annual storage for just {credits} credits!",
|
|
398
|
+
"enterCodeManually": "Enter the code manually.",
|
|
399
|
+
"flippedHorizontally": "This view has been flipped horizontally.",
|
|
400
|
+
"flippedVertically": "This view has been flipped vertically.",
|
|
401
|
+
"gettingThingsReady": "Getting things ready for you...",
|
|
402
|
+
"imagesShared": "Images shared successfully!",
|
|
403
|
+
"lengthToolHelp": "Click on two points within a 2D view to create a length annotation.",
|
|
404
|
+
"linkCopied": "This link has been copied!",
|
|
405
|
+
"measurementDeleteConfirm": "Are you sure you want to delete this measurement?",
|
|
406
|
+
"measurementDeleted": "Measurement deleted successfully!",
|
|
407
|
+
"mcadDeleteConfirm": "Are you sure you want to delete this MCAD object?",
|
|
408
|
+
"mcadFloating": "Click and drag this icon to move the panel around the screen",
|
|
409
|
+
"pleaseUpdateAsap": "Please click update as soon as possible.",
|
|
410
|
+
"polygonToolHelp": "Click on multiple points and create a closed loop within a 2D view to create a polygon annotation.",
|
|
411
|
+
"renderingImages": "Rendering your medical images",
|
|
412
|
+
"scanToOpen": "Scan to open in our Mobile App.",
|
|
413
|
+
"showTutorialText": "Assist on touring through the online viewer to maximise your experience.",
|
|
414
|
+
"stillCurious": "Still curious?",
|
|
415
|
+
"takeTour": "Take the short interactive tour to better visualize your medical images in 2D and 3D.",
|
|
416
|
+
"tutorial": {
|
|
417
|
+
"density": {
|
|
418
|
+
"title": "Density Slider",
|
|
419
|
+
"text": "Move the lower density slider to the right to hide softer tissue like skin and view internal organs."
|
|
420
|
+
},
|
|
421
|
+
"controls3d": {
|
|
422
|
+
"title": "3D Viewing Controls",
|
|
423
|
+
"text": "With your cursor placed in the 3D view, scroll to zoom & click and drag to rotate. You can also view the 3D view in full screen, reset the view, and cut into the 3D model from each side using the 3D slicing tool."
|
|
424
|
+
},
|
|
425
|
+
"controls2d": {
|
|
426
|
+
"title": "2D Viewing Controls",
|
|
427
|
+
"text": "With your mouse in the 2D views, scroll to navigate through the 2D images, and use Shift + Arrows to Pan and Zoom."
|
|
428
|
+
},
|
|
429
|
+
"settings": {
|
|
430
|
+
"title": "Global Settings",
|
|
431
|
+
"text": "Accurately change the brightness, contrast, and opacity to enhance the appearance of your medical images."
|
|
432
|
+
},
|
|
433
|
+
"updates": {
|
|
434
|
+
"title": "Stay Tuned for Updates",
|
|
435
|
+
"text": "We're working hard on new features!"
|
|
436
|
+
}
|
|
437
|
+
},
|
|
438
|
+
"updateDetected": "We have detected an update for you!",
|
|
439
|
+
"viewerAbout": "3DICOM Online Viewer developed by Singular Health Pty Ltd.",
|
|
440
|
+
"welcome": "Welcome to the Client Viewer!"
|
|
441
|
+
}
|
|
442
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { IconAliases } from 'vuetify';
|
|
2
|
+
|
|
3
|
+
export const aliases: Partial<IconAliases> = {
|
|
4
|
+
collapse: 'keyboard_arrow_up',
|
|
5
|
+
complete: 'check',
|
|
6
|
+
cancel: 'cancel',
|
|
7
|
+
close: 'close',
|
|
8
|
+
delete: 'cancel',
|
|
9
|
+
clear: 'cancel',
|
|
10
|
+
success: 'check_circle',
|
|
11
|
+
info: 'info',
|
|
12
|
+
warning: 'error',
|
|
13
|
+
error: 'cancel',
|
|
14
|
+
prev: 'chevron_left',
|
|
15
|
+
next: 'chevron_right',
|
|
16
|
+
checkboxOn: 'check_box',
|
|
17
|
+
checkboxOff: 'check_box_outline_blank',
|
|
18
|
+
checkboxIndeterminate: 'indeterminate_check_box',
|
|
19
|
+
delimiter: 'circle',
|
|
20
|
+
sortAsc: 'arrow_upward',
|
|
21
|
+
sortDesc: 'arrow_downward',
|
|
22
|
+
expand: 'keyboard_arrow_down',
|
|
23
|
+
menu: 'menu',
|
|
24
|
+
subgroup: 'arrow_drop_down',
|
|
25
|
+
dropdown: 'arrow_drop_down',
|
|
26
|
+
radioOn: 'radio_button_checked',
|
|
27
|
+
radioOff: 'radio_button_unchecked',
|
|
28
|
+
edit: 'edit',
|
|
29
|
+
ratingEmpty: 'star_rate',
|
|
30
|
+
ratingFull: 'filled:star_rate',
|
|
31
|
+
ratingHalf: 'star_rate_half',
|
|
32
|
+
loading: 'cached',
|
|
33
|
+
first: 'first_page',
|
|
34
|
+
last: 'last_page',
|
|
35
|
+
unfold: 'unfold_more',
|
|
36
|
+
file: 'attach_file',
|
|
37
|
+
plus: 'add',
|
|
38
|
+
minus: 'remove',
|
|
39
|
+
calendar: 'calendar_month',
|
|
40
|
+
treeviewCollapse: 'arrow_drop_down',
|
|
41
|
+
treeviewExpand: 'arrow_right',
|
|
42
|
+
eyeDropper: 'colorize'
|
|
43
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { h } from 'vue';
|
|
2
|
+
import { IconProps, IconSet } from 'vuetify';
|
|
3
|
+
import { VLigatureIcon } from 'vuetify/components';
|
|
4
|
+
|
|
5
|
+
export const filled: IconSet = {
|
|
6
|
+
/* v8 ignore start -- @preserve */
|
|
7
|
+
component: (props: IconProps) => {
|
|
8
|
+
return h(VLigatureIcon, { ...props, class: 'material-symbols-outlined material-symbols-filled' });
|
|
9
|
+
}
|
|
10
|
+
/* v8 ignore stop -- @preserve */
|
|
11
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { h } from 'vue';
|
|
2
|
+
import { IconProps, IconSet } from 'vuetify';
|
|
3
|
+
import { VLigatureIcon } from 'vuetify/components';
|
|
4
|
+
|
|
5
|
+
export const outlined: IconSet = {
|
|
6
|
+
component: (props: IconProps) => {
|
|
7
|
+
return h(VLigatureIcon, { ...props, class: 'material-symbols-outlined' });
|
|
8
|
+
}
|
|
9
|
+
};
|