diff --git a/bun.lock b/bun.lock index 3bf9468eb..22d42d7dd 100644 --- a/bun.lock +++ b/bun.lock @@ -40,7 +40,7 @@ }, "addOns/externals/devDependencies": { "name": "@externals/devDependencies", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", "@kitware/vtk.js": "32.12.0", @@ -127,22 +127,22 @@ }, "addOns/externals/dicom-microscopy-viewer": { "name": "@externals/dicom-microscopy-viewer", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "dicom-microscopy-viewer": "^0.46.1", }, }, "extensions/cornerstone": { "name": "@ohif/extension-cornerstone", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^3.12.1", - "@cornerstonejs/ai": "^3.12.1", - "@cornerstonejs/core": "^3.12.1", - "@cornerstonejs/labelmap-interpolation": "^3.12.1", - "@cornerstonejs/polymorphic-segmentation": "^3.12.1", - "@cornerstonejs/tools": "^3.12.1", + "@cornerstonejs/adapters": "^3.12.2", + "@cornerstonejs/ai": "^3.12.2", + "@cornerstonejs/core": "^3.12.2", + "@cornerstonejs/labelmap-interpolation": "^3.12.2", + "@cornerstonejs/polymorphic-segmentation": "^3.12.2", + "@cornerstonejs/tools": "^3.12.2", "@itk-wasm/morphological-contour-interpolation": "1.1.0", "@kitware/vtk.js": "32.12.0", "html2canvas": "^1.4.1", @@ -159,9 +159,9 @@ "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.4", "@cornerstonejs/codec-openjph": "^2.4.5", - "@cornerstonejs/dicom-image-loader": "^3.12.1", - "@ohif/core": "3.11.0-beta.24", - "@ohif/ui": "3.11.0-beta.24", + "@cornerstonejs/dicom-image-loader": "^3.12.2", + "@ohif/core": "3.11.0-beta.27", + "@ohif/ui": "3.11.0-beta.27", "dcmjs": "*", "dicom-parser": "^1.8.21", "hammerjs": "^2.0.8", @@ -173,19 +173,19 @@ }, "extensions/cornerstone-dicom-pmap": { "name": "@ohif/extension-cornerstone-dicom-pmap", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^3.12.1", - "@cornerstonejs/core": "^3.12.1", + "@cornerstonejs/adapters": "^3.12.2", + "@cornerstonejs/core": "^3.12.2", "@kitware/vtk.js": "32.12.0", "react-color": "^2.19.3", }, "peerDependencies": { - "@ohif/core": "3.11.0-beta.24", - "@ohif/extension-cornerstone": "3.11.0-beta.24", - "@ohif/extension-default": "3.11.0-beta.24", - "@ohif/i18n": "3.11.0-beta.24", + "@ohif/core": "3.11.0-beta.27", + "@ohif/extension-cornerstone": "3.11.0-beta.27", + "@ohif/extension-default": "3.11.0-beta.27", + "@ohif/i18n": "3.11.0-beta.27", "prop-types": "^15.6.2", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -196,16 +196,16 @@ }, "extensions/cornerstone-dicom-rt": { "name": "@ohif/extension-cornerstone-dicom-rt", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", "react-color": "^2.19.3", }, "peerDependencies": { - "@ohif/core": "3.11.0-beta.24", - "@ohif/extension-cornerstone": "3.11.0-beta.24", - "@ohif/extension-default": "3.11.0-beta.24", - "@ohif/i18n": "3.11.0-beta.24", + "@ohif/core": "3.11.0-beta.27", + "@ohif/extension-cornerstone": "3.11.0-beta.27", + "@ohif/extension-default": "3.11.0-beta.27", + "@ohif/i18n": "3.11.0-beta.27", "prop-types": "^15.6.2", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -216,19 +216,19 @@ }, "extensions/cornerstone-dicom-seg": { "name": "@ohif/extension-cornerstone-dicom-seg", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^3.12.1", - "@cornerstonejs/core": "^3.12.1", + "@cornerstonejs/adapters": "^3.12.2", + "@cornerstonejs/core": "^3.12.2", "@kitware/vtk.js": "32.12.0", "react-color": "^2.19.3", }, "peerDependencies": { - "@ohif/core": "3.11.0-beta.24", - "@ohif/extension-cornerstone": "3.11.0-beta.24", - "@ohif/extension-default": "3.11.0-beta.24", - "@ohif/i18n": "3.11.0-beta.24", + "@ohif/core": "3.11.0-beta.27", + "@ohif/extension-cornerstone": "3.11.0-beta.27", + "@ohif/extension-default": "3.11.0-beta.27", + "@ohif/i18n": "3.11.0-beta.27", "prop-types": "^15.6.2", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -239,19 +239,19 @@ }, "extensions/cornerstone-dicom-sr": { "name": "@ohif/extension-cornerstone-dicom-sr", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^3.12.1", - "@cornerstonejs/core": "^3.12.1", - "@cornerstonejs/tools": "^3.12.1", + "@cornerstonejs/adapters": "^3.12.2", + "@cornerstonejs/core": "^3.12.2", + "@cornerstonejs/tools": "^3.12.2", "classnames": "^2.3.2", }, "peerDependencies": { - "@ohif/core": "3.11.0-beta.24", - "@ohif/extension-cornerstone": "3.11.0-beta.24", - "@ohif/extension-measurement-tracking": "3.11.0-beta.24", - "@ohif/ui": "3.11.0-beta.24", + "@ohif/core": "3.11.0-beta.27", + "@ohif/extension-cornerstone": "3.11.0-beta.27", + "@ohif/extension-measurement-tracking": "3.11.0-beta.27", + "@ohif/ui": "3.11.0-beta.27", "dcmjs": "*", "dicom-parser": "^1.8.9", "hammerjs": "^2.0.8", @@ -261,19 +261,19 @@ }, "extensions/cornerstone-dynamic-volume": { "name": "@ohif/extension-cornerstone-dynamic-volume", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/core": "^3.12.1", - "@cornerstonejs/tools": "^3.12.1", + "@cornerstonejs/core": "^3.12.2", + "@cornerstonejs/tools": "^3.12.2", "classnames": "^2.3.2", }, "peerDependencies": { - "@ohif/core": "3.11.0-beta.24", - "@ohif/extension-cornerstone": "3.11.0-beta.24", - "@ohif/extension-default": "3.11.0-beta.24", - "@ohif/i18n": "3.11.0-beta.24", - "@ohif/ui": "3.11.0-beta.24", + "@ohif/core": "3.11.0-beta.27", + "@ohif/extension-cornerstone": "3.11.0-beta.27", + "@ohif/extension-default": "3.11.0-beta.27", + "@ohif/i18n": "3.11.0-beta.27", + "@ohif/ui": "3.11.0-beta.27", "dcmjs": "*", "dicom-parser": "^1.8.21", "hammerjs": "^2.0.8", @@ -283,7 +283,7 @@ }, "extensions/default": { "name": "@ohif/extension-default", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", "@cornerstonejs/calculate-suv": "^1.1.0", @@ -291,8 +291,8 @@ "lodash.uniqby": "^4.7.0", }, "peerDependencies": { - "@ohif/core": "3.11.0-beta.24", - "@ohif/i18n": "3.11.0-beta.24", + "@ohif/core": "3.11.0-beta.27", + "@ohif/i18n": "3.11.0-beta.27", "dcmjs": "*", "dicomweb-client": "^0.10.4", "prop-types": "^15.6.2", @@ -306,7 +306,7 @@ }, "extensions/dicom-microscopy": { "name": "@ohif/extension-dicom-microscopy", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", "@cornerstonejs/codec-charls": "^1.2.3", @@ -317,10 +317,10 @@ "mathjs": "^12.4.2", }, "peerDependencies": { - "@ohif/core": "3.11.0-beta.24", - "@ohif/extension-default": "3.11.0-beta.24", - "@ohif/i18n": "3.11.0-beta.24", - "@ohif/ui": "3.11.0-beta.24", + "@ohif/core": "3.11.0-beta.27", + "@ohif/extension-default": "3.11.0-beta.27", + "@ohif/i18n": "3.11.0-beta.27", + "@ohif/ui": "3.11.0-beta.27", "prop-types": "^15.6.2", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -331,14 +331,14 @@ }, "extensions/dicom-pdf": { "name": "@ohif/extension-dicom-pdf", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", "classnames": "^2.3.2", }, "peerDependencies": { - "@ohif/core": "3.11.0-beta.24", - "@ohif/ui": "3.11.0-beta.24", + "@ohif/core": "3.11.0-beta.27", + "@ohif/ui": "3.11.0-beta.27", "dcmjs": "*", "dicom-parser": "^1.8.9", "hammerjs": "^2.0.8", @@ -348,14 +348,14 @@ }, "extensions/dicom-video": { "name": "@ohif/extension-dicom-video", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", "classnames": "^2.3.2", }, "peerDependencies": { - "@ohif/core": "3.11.0-beta.24", - "@ohif/ui": "3.11.0-beta.24", + "@ohif/core": "3.11.0-beta.27", + "@ohif/ui": "3.11.0-beta.27", "dcmjs": "*", "dicom-parser": "^1.8.9", "hammerjs": "^2.0.8", @@ -365,20 +365,20 @@ }, "extensions/measurement-tracking": { "name": "@ohif/extension-measurement-tracking", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", - "@ohif/ui": "3.11.0-beta.24", + "@ohif/ui": "3.11.0-beta.27", "@xstate/react": "^3.2.2", "xstate": "^4.10.0", }, "peerDependencies": { - "@cornerstonejs/core": "^3.12.1", - "@cornerstonejs/tools": "^3.12.1", - "@ohif/core": "3.11.0-beta.24", - "@ohif/extension-cornerstone-dicom-sr": "3.11.0-beta.24", - "@ohif/extension-default": "3.11.0-beta.24", - "@ohif/ui": "3.11.0-beta.24", + "@cornerstonejs/core": "^3.12.2", + "@cornerstonejs/tools": "^3.12.2", + "@ohif/core": "3.11.0-beta.27", + "@ohif/extension-cornerstone-dicom-sr": "3.11.0-beta.27", + "@ohif/extension-default": "3.11.0-beta.27", + "@ohif/ui": "3.11.0-beta.27", "classnames": "^2.3.2", "dcmjs": "*", "lodash.debounce": "^4.0.8", @@ -391,14 +391,14 @@ }, "extensions/test-extension": { "name": "@ohif/extension-test", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", "classnames": "^2.3.2", }, "peerDependencies": { - "@ohif/core": "3.11.0-beta.24", - "@ohif/ui": "3.11.0-beta.24", + "@ohif/core": "3.11.0-beta.27", + "@ohif/ui": "3.11.0-beta.27", "dcmjs": "0.38.0", "dicom-parser": "^1.8.9", "hammerjs": "^2.0.8", @@ -408,7 +408,7 @@ }, "extensions/tmtv": { "name": "@ohif/extension-tmtv", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", "classnames": "^2.3.2", @@ -425,7 +425,7 @@ }, "modes/basic-dev-mode": { "name": "@ohif/mode-basic-dev-mode", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", "i18next": "^17.0.3", @@ -435,17 +435,17 @@ "webpack-merge": "^5.7.3", }, "peerDependencies": { - "@ohif/core": "3.11.0-beta.24", - "@ohif/extension-cornerstone": "3.11.0-beta.24", - "@ohif/extension-cornerstone-dicom-sr": "3.11.0-beta.24", - "@ohif/extension-default": "3.11.0-beta.24", - "@ohif/extension-dicom-pdf": "3.11.0-beta.24", - "@ohif/extension-dicom-video": "3.11.0-beta.24", + "@ohif/core": "3.11.0-beta.27", + "@ohif/extension-cornerstone": "3.11.0-beta.27", + "@ohif/extension-cornerstone-dicom-sr": "3.11.0-beta.27", + "@ohif/extension-default": "3.11.0-beta.27", + "@ohif/extension-dicom-pdf": "3.11.0-beta.27", + "@ohif/extension-dicom-video": "3.11.0-beta.27", }, }, "modes/basic-test-mode": { "name": "@ohif/mode-test", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", "i18next": "^17.0.3", @@ -455,19 +455,19 @@ "webpack-merge": "^5.7.3", }, "peerDependencies": { - "@ohif/core": "3.11.0-beta.24", - "@ohif/extension-cornerstone": "3.11.0-beta.24", - "@ohif/extension-cornerstone-dicom-sr": "3.11.0-beta.24", - "@ohif/extension-default": "3.11.0-beta.24", - "@ohif/extension-dicom-pdf": "3.11.0-beta.24", - "@ohif/extension-dicom-video": "3.11.0-beta.24", - "@ohif/extension-measurement-tracking": "3.11.0-beta.24", - "@ohif/extension-test": "3.11.0-beta.24", + "@ohif/core": "3.11.0-beta.27", + "@ohif/extension-cornerstone": "3.11.0-beta.27", + "@ohif/extension-cornerstone-dicom-sr": "3.11.0-beta.27", + "@ohif/extension-default": "3.11.0-beta.27", + "@ohif/extension-dicom-pdf": "3.11.0-beta.27", + "@ohif/extension-dicom-video": "3.11.0-beta.27", + "@ohif/extension-measurement-tracking": "3.11.0-beta.27", + "@ohif/extension-test": "3.11.0-beta.27", }, }, "modes/longitudinal": { "name": "@ohif/mode-longitudinal", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", "i18next": "^17.0.3", @@ -477,32 +477,32 @@ "webpack-merge": "^5.7.3", }, "peerDependencies": { - "@ohif/core": "3.11.0-beta.24", - "@ohif/extension-cornerstone": "3.11.0-beta.24", - "@ohif/extension-cornerstone-dicom-rt": "3.11.0-beta.24", - "@ohif/extension-cornerstone-dicom-seg": "3.11.0-beta.24", - "@ohif/extension-cornerstone-dicom-sr": "3.11.0-beta.24", - "@ohif/extension-default": "3.11.0-beta.24", - "@ohif/extension-dicom-pdf": "3.11.0-beta.24", - "@ohif/extension-dicom-video": "3.11.0-beta.24", - "@ohif/extension-measurement-tracking": "3.11.0-beta.24", + "@ohif/core": "3.11.0-beta.27", + "@ohif/extension-cornerstone": "3.11.0-beta.27", + "@ohif/extension-cornerstone-dicom-rt": "3.11.0-beta.27", + "@ohif/extension-cornerstone-dicom-seg": "3.11.0-beta.27", + "@ohif/extension-cornerstone-dicom-sr": "3.11.0-beta.27", + "@ohif/extension-default": "3.11.0-beta.27", + "@ohif/extension-dicom-pdf": "3.11.0-beta.27", + "@ohif/extension-dicom-video": "3.11.0-beta.27", + "@ohif/extension-measurement-tracking": "3.11.0-beta.27", }, }, "modes/microscopy": { "name": "@ohif/mode-microscopy", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", "i18next": "^17.0.3", }, "peerDependencies": { - "@ohif/core": "3.11.0-beta.24", - "@ohif/extension-dicom-microscopy": "3.11.0-beta.24", + "@ohif/core": "3.11.0-beta.27", + "@ohif/extension-dicom-microscopy": "3.11.0-beta.27", }, }, "modes/preclinical-4d": { "name": "@ohif/mode-preclinical-4d", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", }, @@ -521,7 +521,7 @@ }, "modes/segmentation": { "name": "@ohif/mode-segmentation", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", "i18next": "^17.0.3", @@ -565,7 +565,7 @@ }, "modes/tmtv": { "name": "@ohif/mode-tmtv", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", "i18next": "^17.0.3", @@ -586,32 +586,32 @@ }, "platform/app": { "name": "@ohif/app", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", "@cornerstonejs/codec-charls": "^1.2.3", "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.4", "@cornerstonejs/codec-openjph": "^2.4.5", - "@cornerstonejs/dicom-image-loader": "^3.12.1", + "@cornerstonejs/dicom-image-loader": "^3.12.2", "@emotion/serialize": "^1.1.3", - "@ohif/core": "3.11.0-beta.24", - "@ohif/extension-cornerstone": "3.11.0-beta.24", - "@ohif/extension-cornerstone-dicom-rt": "3.11.0-beta.24", - "@ohif/extension-cornerstone-dicom-seg": "3.11.0-beta.24", - "@ohif/extension-cornerstone-dicom-sr": "3.11.0-beta.24", - "@ohif/extension-default": "3.11.0-beta.24", - "@ohif/extension-dicom-microscopy": "3.11.0-beta.24", - "@ohif/extension-dicom-pdf": "3.11.0-beta.24", - "@ohif/extension-dicom-video": "3.11.0-beta.24", - "@ohif/extension-test": "3.11.0-beta.24", - "@ohif/i18n": "3.11.0-beta.24", - "@ohif/mode-basic-dev-mode": "3.11.0-beta.24", - "@ohif/mode-longitudinal": "3.11.0-beta.24", - "@ohif/mode-microscopy": "3.11.0-beta.24", - "@ohif/mode-test": "3.11.0-beta.24", - "@ohif/ui": "3.11.0-beta.24", - "@ohif/ui-next": "3.11.0-beta.24", + "@ohif/core": "3.11.0-beta.27", + "@ohif/extension-cornerstone": "3.11.0-beta.27", + "@ohif/extension-cornerstone-dicom-rt": "3.11.0-beta.27", + "@ohif/extension-cornerstone-dicom-seg": "3.11.0-beta.27", + "@ohif/extension-cornerstone-dicom-sr": "3.11.0-beta.27", + "@ohif/extension-default": "3.11.0-beta.27", + "@ohif/extension-dicom-microscopy": "3.11.0-beta.27", + "@ohif/extension-dicom-pdf": "3.11.0-beta.27", + "@ohif/extension-dicom-video": "3.11.0-beta.27", + "@ohif/extension-test": "3.11.0-beta.27", + "@ohif/i18n": "3.11.0-beta.27", + "@ohif/mode-basic-dev-mode": "3.11.0-beta.27", + "@ohif/mode-longitudinal": "3.11.0-beta.27", + "@ohif/mode-microscopy": "3.11.0-beta.27", + "@ohif/mode-test": "3.11.0-beta.27", + "@ohif/ui": "3.11.0-beta.27", + "@ohif/ui-next": "3.11.0-beta.27", "@svgr/webpack": "^8.1.0", "@types/react": "^18.3.3", "classnames": "^2.3.2", @@ -652,7 +652,7 @@ }, "platform/cli": { "name": "@ohif/cli", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "bin": { "ohif-cli": "src/index.js", }, @@ -676,7 +676,7 @@ }, "platform/core": { "name": "@ohif/core", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", "dcmjs": "*", @@ -701,16 +701,16 @@ "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.4", "@cornerstonejs/codec-openjph": "^2.4.5", - "@cornerstonejs/core": "^3.12.1", - "@cornerstonejs/dicom-image-loader": "^3.12.1", - "@ohif/ui": "3.11.0-beta.24", + "@cornerstonejs/core": "^3.12.2", + "@cornerstonejs/dicom-image-loader": "^3.12.2", + "@ohif/ui": "3.11.0-beta.27", "cornerstone-math": "0.1.9", "dicom-parser": "^1.8.21", }, }, "platform/i18n": { "name": "@ohif/i18n", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@babel/runtime": "^7.20.13", "i18next-locize-backend": "^2.0.0", @@ -735,7 +735,7 @@ }, "platform/ui": { "name": "@ohif/ui", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@testing-library/react": "^13.1.0", "browser-detect": "^0.2.28", @@ -795,7 +795,7 @@ }, "platform/ui-next": { "name": "@ohif/ui-next", - "version": "3.11.0-beta.24", + "version": "3.11.0-beta.27", "dependencies": { "@radix-ui/react-accordion": "^1.2.0", "@radix-ui/react-checkbox": "^1.1.1", @@ -1106,9 +1106,9 @@ "@colors/colors": ["@colors/colors@1.5.0", "", {}, "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ=="], - "@cornerstonejs/adapters": ["@cornerstonejs/adapters@3.12.1", "", { "dependencies": { "@babel/runtime-corejs2": "^7.17.8", "buffer": "^6.0.3", "dcmjs": "^0.29.8", "gl-matrix": "^3.4.3", "ndarray": "^1.0.19" }, "peerDependencies": { "@cornerstonejs/core": "^3.12.1", "@cornerstonejs/tools": "^3.12.1" } }, "sha512-2HrqwpTTE5d7UNzjbp8TDYucf2j36sENfd3gK1k0Ui6na4yfEiHecNZgy6x6y5M5DcKzXofl2a64XvXXYYotzQ=="], + "@cornerstonejs/adapters": ["@cornerstonejs/adapters@3.12.2", "", { "dependencies": { "@babel/runtime-corejs2": "^7.17.8", "buffer": "^6.0.3", "dcmjs": "^0.29.8", "gl-matrix": "^3.4.3", "ndarray": "^1.0.19" }, "peerDependencies": { "@cornerstonejs/core": "^3.12.2", "@cornerstonejs/tools": "^3.12.2" } }, "sha512-yKPT9U1/CUtXu/h3xXB8KYX3x3bHgedw3nPX6eOn8oDhynfjuvA+i+4xJxKtO182mi2WnAQwFPnzkgmEVyrSqA=="], - "@cornerstonejs/ai": ["@cornerstonejs/ai@3.12.1", "", { "dependencies": { "@babel/runtime-corejs2": "^7.17.8", "buffer": "^6.0.3", "dcmjs": "^0.29.8", "gl-matrix": "^3.4.3", "lodash.clonedeep": "^4.5.0", "ndarray": "^1.0.19", "onnxruntime-common": "1.17.1", "onnxruntime-web": "1.17.1" }, "peerDependencies": { "@cornerstonejs/core": "^3.12.1", "@cornerstonejs/tools": "^3.12.1" } }, "sha512-tey1CUoufVX+SogsyR9Yaljxhs6mKk0MBX0rAThgbphb74PFlDC3Kl9AcYBFJNjRcIy6K0cIR4e1/RtKFGsPeQ=="], + "@cornerstonejs/ai": ["@cornerstonejs/ai@3.12.2", "", { "dependencies": { "@babel/runtime-corejs2": "^7.17.8", "buffer": "^6.0.3", "dcmjs": "^0.29.8", "gl-matrix": "^3.4.3", "lodash.clonedeep": "^4.5.0", "ndarray": "^1.0.19", "onnxruntime-common": "1.17.1", "onnxruntime-web": "1.17.1" }, "peerDependencies": { "@cornerstonejs/core": "^3.12.2", "@cornerstonejs/tools": "^3.12.2" } }, "sha512-Btyey9KNcJqzIG7trFqDHo08zJVO3XtVEbfbJiUfRoztwQTKrtxOJ40dsz3pU3+PNQgG0bmTPhe9yRSpcVdwRA=="], "@cornerstonejs/calculate-suv": ["@cornerstonejs/calculate-suv@1.1.0", "", {}, "sha512-Q9XraiDJif9aMFArD2iEuDO/HXbcRVCqB7KfaHgDrdTTjgDFovS91Psbdim7crypRSvE6dh/+HKeFNHdvNkA6w=="], @@ -1120,15 +1120,15 @@ "@cornerstonejs/codec-openjph": ["@cornerstonejs/codec-openjph@2.4.7", "", {}, "sha512-qvP4q4JDib7mi9r7LqKOwqz7YZ8gjtDX4ZCezeYf8+eb7MBXCz5uXAMeVF3yz9Axw4XiIMdB/pqXkm8tqCl13w=="], - "@cornerstonejs/core": ["@cornerstonejs/core@3.12.1", "", { "dependencies": { "@kitware/vtk.js": "32.12.1", "comlink": "^4.4.1", "gl-matrix": "^3.4.3", "loglevel": "^1.9.2" } }, "sha512-pWFbobllPu0mjnAbV6/4U+YaRKoY661yNCdw1BUvm0Vs/FVNGz0E61/VVtZfS2L/gatj3SBpYPTw6k6G9wk1AA=="], + "@cornerstonejs/core": ["@cornerstonejs/core@3.12.2", "", { "dependencies": { "@kitware/vtk.js": "32.12.1", "comlink": "^4.4.1", "gl-matrix": "^3.4.3", "loglevel": "^1.9.2" } }, "sha512-AKFHr7XF5zKUo1BiclJmUz913yD9NiQgLl3krTmvtlWPuOUhpxoCfipW0De5dMeVuQ86iQDV1F+p7HuWOWfdwg=="], - "@cornerstonejs/dicom-image-loader": ["@cornerstonejs/dicom-image-loader@3.12.1", "", { "dependencies": { "@cornerstonejs/codec-charls": "^1.2.3", "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.2", "@cornerstonejs/codec-openjph": "^2.4.5", "comlink": "^4.4.1", "dicom-parser": "^1.8.9", "jpeg-lossless-decoder-js": "^2.1.0", "pako": "^2.0.4", "uuid": "^9.0.0" }, "peerDependencies": { "@cornerstonejs/core": "^3.12.1" } }, "sha512-HX4++HYN0Lx8g8fTTVbp7DPsEWJHXRDqO9nuiJzgr9b79nMp1rrybTcP07RIXY38iCsSBr17WIkPWMxdby4nPw=="], + "@cornerstonejs/dicom-image-loader": ["@cornerstonejs/dicom-image-loader@3.12.2", "", { "dependencies": { "@cornerstonejs/codec-charls": "^1.2.3", "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.2", "@cornerstonejs/codec-openjph": "^2.4.5", "comlink": "^4.4.1", "dicom-parser": "^1.8.9", "jpeg-lossless-decoder-js": "^2.1.0", "pako": "^2.0.4", "uuid": "^9.0.0" }, "peerDependencies": { "@cornerstonejs/core": "^3.12.2" } }, "sha512-LaKnv5OPMlRPzkuqReVl1Gpa9ERTQJXl/1/Iku9wbWjnGrkzdF4Ef8bG0DseLx57qMOJPJP++PsxeXCaOgXvyw=="], - "@cornerstonejs/labelmap-interpolation": ["@cornerstonejs/labelmap-interpolation@3.12.1", "", { "dependencies": { "@itk-wasm/morphological-contour-interpolation": "1.1.0", "itk-wasm": "1.0.0-b.165" }, "peerDependencies": { "@cornerstonejs/core": "^3.12.1", "@cornerstonejs/tools": "^3.12.1", "@kitware/vtk.js": "32.12.1" } }, "sha512-ikTaajRrtNgjPrtcwqaac59uRX3JMIttOLLQgHR9qt7UNNs91BrbkoKGZkVER5YL3R+9o7olKUgdgprxVKE/Cw=="], + "@cornerstonejs/labelmap-interpolation": ["@cornerstonejs/labelmap-interpolation@3.12.2", "", { "dependencies": { "@itk-wasm/morphological-contour-interpolation": "1.1.0", "itk-wasm": "1.0.0-b.165" }, "peerDependencies": { "@cornerstonejs/core": "^3.12.2", "@cornerstonejs/tools": "^3.12.2", "@kitware/vtk.js": "32.12.1" } }, "sha512-5T2OtNyV2jMy66k2clG/Krk1x4xFOxlS9sGxT1eMOrELClzpY+cL+IuA6f0aD6vTwkp1fFojEIa0IFbwuCK8HQ=="], - "@cornerstonejs/polymorphic-segmentation": ["@cornerstonejs/polymorphic-segmentation@3.12.1", "", { "dependencies": { "@icr/polyseg-wasm": "0.4.0" }, "peerDependencies": { "@cornerstonejs/core": "^3.12.1", "@cornerstonejs/tools": "^3.12.1", "@kitware/vtk.js": "32.12.1" } }, "sha512-gdDq1Qh3c37IZxaTwE4k9dEQE7CzQ1anfDg9foiJnJkBHVwgWpMiC/ztSa+c22LgN6ksQnWDz5TGIHqJ+ozscQ=="], + "@cornerstonejs/polymorphic-segmentation": ["@cornerstonejs/polymorphic-segmentation@3.12.2", "", { "dependencies": { "@icr/polyseg-wasm": "0.4.0" }, "peerDependencies": { "@cornerstonejs/core": "^3.12.2", "@cornerstonejs/tools": "^3.12.2", "@kitware/vtk.js": "32.12.1" } }, "sha512-pmOpmOKUaAM3EIklZLufWJ9IVTRpp54MF+B6cnirGEYYobjFT+uTrLwrExwVC1kEVHi8o4n5X8SJnawtIu/ugA=="], - "@cornerstonejs/tools": ["@cornerstonejs/tools@3.12.1", "", { "dependencies": { "@types/offscreencanvas": "2019.7.3", "comlink": "^4.4.1", "lodash.get": "^4.4.2" }, "peerDependencies": { "@cornerstonejs/core": "^3.12.1", "@kitware/vtk.js": "32.12.1", "@types/d3-array": "^3.0.4", "@types/d3-interpolate": "^3.0.1", "d3-array": "^3.2.3", "d3-interpolate": "^3.0.1", "gl-matrix": "^3.4.3" } }, "sha512-0Yax5NIdX1X6ELMf32rticoTehPFh2k0OTx/znAf3IgMUYdsox4peMe8Lf72MrFvmLeDvtyB45iT0Xk6bjeAvw=="], + "@cornerstonejs/tools": ["@cornerstonejs/tools@3.12.2", "", { "dependencies": { "@types/offscreencanvas": "2019.7.3", "comlink": "^4.4.1", "lodash.get": "^4.4.2" }, "peerDependencies": { "@cornerstonejs/core": "^3.12.2", "@kitware/vtk.js": "32.12.1", "@types/d3-array": "^3.0.4", "@types/d3-interpolate": "^3.0.1", "d3-array": "^3.2.3", "d3-interpolate": "^3.0.1", "gl-matrix": "^3.4.3" } }, "sha512-Zx9BFl2OAuCQGrr6o+e1tV3fMSoAARC7HlVWprUrGWwDA29LVRxQT+cc+Wo76GjxcKSMo5RuLt1+sgRj0+CsAA=="], "@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="], diff --git a/extensions/cornerstone-dicom-pmap/package.json b/extensions/cornerstone-dicom-pmap/package.json index a0f3cfd0c..f14960d88 100644 --- a/extensions/cornerstone-dicom-pmap/package.json +++ b/extensions/cornerstone-dicom-pmap/package.json @@ -46,8 +46,8 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^3.12.1", - "@cornerstonejs/core": "^3.12.1", + "@cornerstonejs/adapters": "^3.12.2", + "@cornerstonejs/core": "^3.12.2", "@kitware/vtk.js": "32.12.0", "react-color": "^2.19.3" } diff --git a/extensions/cornerstone-dicom-seg/package.json b/extensions/cornerstone-dicom-seg/package.json index b260aa258..ebed75152 100644 --- a/extensions/cornerstone-dicom-seg/package.json +++ b/extensions/cornerstone-dicom-seg/package.json @@ -46,8 +46,8 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^3.12.1", - "@cornerstonejs/core": "^3.12.1", + "@cornerstonejs/adapters": "^3.12.2", + "@cornerstonejs/core": "^3.12.2", "@kitware/vtk.js": "32.12.0", "react-color": "^2.19.3" } diff --git a/extensions/cornerstone-dicom-sr/package.json b/extensions/cornerstone-dicom-sr/package.json index 585fcd775..95037f413 100644 --- a/extensions/cornerstone-dicom-sr/package.json +++ b/extensions/cornerstone-dicom-sr/package.json @@ -46,9 +46,9 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^3.12.1", - "@cornerstonejs/core": "^3.12.1", - "@cornerstonejs/tools": "^3.12.1", + "@cornerstonejs/adapters": "^3.12.2", + "@cornerstonejs/core": "^3.12.2", + "@cornerstonejs/tools": "^3.12.2", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone-dynamic-volume/package.json b/extensions/cornerstone-dynamic-volume/package.json index 2c61e5b9c..3819db8a2 100644 --- a/extensions/cornerstone-dynamic-volume/package.json +++ b/extensions/cornerstone-dynamic-volume/package.json @@ -42,8 +42,8 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/core": "^3.12.1", - "@cornerstonejs/tools": "^3.12.1", + "@cornerstonejs/core": "^3.12.2", + "@cornerstonejs/tools": "^3.12.2", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index 77ee9c029..5edb2a523 100644 --- a/extensions/cornerstone/package.json +++ b/extensions/cornerstone/package.json @@ -38,7 +38,7 @@ "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.4", "@cornerstonejs/codec-openjph": "^2.4.5", - "@cornerstonejs/dicom-image-loader": "^3.12.1", + "@cornerstonejs/dicom-image-loader": "^3.12.2", "@ohif/core": "3.11.0-beta.27", "@ohif/ui": "3.11.0-beta.27", "dcmjs": "*", @@ -51,12 +51,12 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^3.12.1", - "@cornerstonejs/ai": "^3.12.1", - "@cornerstonejs/core": "^3.12.1", - "@cornerstonejs/labelmap-interpolation": "^3.12.1", - "@cornerstonejs/polymorphic-segmentation": "^3.12.1", - "@cornerstonejs/tools": "^3.12.1", + "@cornerstonejs/adapters": "^3.12.2", + "@cornerstonejs/ai": "^3.12.2", + "@cornerstonejs/core": "^3.12.2", + "@cornerstonejs/labelmap-interpolation": "^3.12.2", + "@cornerstonejs/polymorphic-segmentation": "^3.12.2", + "@cornerstonejs/tools": "^3.12.2", "@itk-wasm/morphological-contour-interpolation": "1.1.0", "@kitware/vtk.js": "32.12.0", "html2canvas": "^1.4.1", diff --git a/extensions/cornerstone/src/getSopClassHandlerModule.js b/extensions/cornerstone/src/getSopClassHandlerModule.js index a8accad0c..e5767efb1 100644 --- a/extensions/cornerstone/src/getSopClassHandlerModule.js +++ b/extensions/cornerstone/src/getSopClassHandlerModule.js @@ -17,6 +17,7 @@ const SOPClassHandlerId = '@ohif/extension-cornerstone.sopClassHandlerModule.DicomMicroscopySopClassHandler'; function _getDisplaySetsFromSeries(instances, servicesManager, extensionManager) { + const dataSource = extensionManager.getActiveDataSource()[0]; // If the series has no instances, stop here if (!instances || !instances.length) { throw new Error('No instances were provided'); @@ -33,22 +34,6 @@ function _getDisplaySetsFromSeries(instances, servicesManager, extensionManager) currentFrames = framesI; } } - let imageIdForThumbnail = null; - const dataSource = extensionManager.getActiveDataSource()[0]; - if (singleFrameInstance) { - if (currentFrames == 1) { - // Not all DICOM server implementations support thumbnail service, - // So if we have a single-frame image, we will prefer it. - imageIdForThumbnail = singleFrameInstance.imageId; - } - if (!imageIdForThumbnail) { - // use the thumbnail service provided by DICOM server - imageIdForThumbnail = dataSource.getImageIdsForInstance({ - instance: singleFrameInstance, - thumbnail: true, - }); - } - } const { FrameOfReferenceUID, @@ -108,11 +93,14 @@ function _getDisplaySetsFromSeries(instances, servicesManager, extensionManager) instance, numImageFrames: 0, numInstances: 1, - imageIdForThumbnail, // thumbnail image others: instances, // all other level instances in the image Pyramid instances, othersFrameOfReferenceUID, imageIds: instances.map(instance => instance.imageId), + getThumbnailSrc: dataSource.retrieve.getGetThumbnailSrc?.( + singleFrameInstance, + singleFrameInstance.imageId + ), label: SeriesDescription || `${i18n.t('Series')} ${SeriesNumber} - ${i18n.t('SM')}`, }; // The microscopy viewer directly accesses the metadata already loaded, and diff --git a/extensions/default/src/DicomWebDataSource/index.ts b/extensions/default/src/DicomWebDataSource/index.ts index 77df834fa..8308e8e1f 100644 --- a/extensions/default/src/DicomWebDataSource/index.ts +++ b/extensions/default/src/DicomWebDataSource/index.ts @@ -37,7 +37,15 @@ export type DicomWebConfig = { wadoUri?: string; // - Base URL to use for WADO URI requests qidoSupportsIncludeField?: boolean; // - Whether QIDO supports the "Include" option to request additional fields in response imageRendering?: string; // - wadors | ? (unsure of where/how this is used) - thumbnailRendering?: string; // - wadors | ? (unsure of where/how this is used) + thumbnailRendering?: string; + /** + wadors - render using the wadors fetch. The full image is retrieved and rendered in cornerstone to thumbnail size png and returned as binary data to the src attribute of the image tag. + for example, + thumbnailDirect - get the direct url endpoint for the thumbnail as the image src (eg not authentication required). + for example, + thumbnail - render using the thumbnail endpoint on wadors using bulkDataURI, passing authentication params to the url. + rendered - should use the rendered endpoint instead of the thumbnail endpoint +*/ /** Whether the server supports reject calls (i.e. DCM4CHEE) */ supportsReject?: boolean; /** Request series meta async instead of blocking */ @@ -225,6 +233,71 @@ function createDicomWebApi(dicomWebConfig: DicomWebConfig, servicesManager) { * @returns an absolute URL to the resource, if the absolute URL can be retrieved as singlepart, * or is already retrieved, or a promise to a URL for such use if a BulkDataURI */ + + getGetThumbnailSrc: function (instance, imageId) { + if (dicomWebConfig.thumbnailRendering === 'wadors') { + return function getThumbnailSrc(options) { + if (!imageId) { + return null; + } + if (!options?.getImageSrc) { + return null; + } + return options.getImageSrc(imageId); + }; + } + if (dicomWebConfig.thumbnailRendering === 'thumbnailDirect') { + return function getThumbnailSrc() { + return this.directURL({ + instance: instance, + defaultPath: '/thumbnail', + defaultType: 'image/jpeg', + singlepart: true, + tag: 'Absent', + }); + }.bind(this); + } + + if (dicomWebConfig.thumbnailRendering === 'thumbnail') { + return async function getThumbnailSrc() { + const { StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID } = instance; + const bulkDataURI = `${dicomWebConfig.wadoRoot}/studies/${StudyInstanceUID}/series/${SeriesInstanceUID}/instances/${SOPInstanceUID}/thumbnail?accept=image/jpeg`; + return URL.createObjectURL( + new Blob( + [ + await this.bulkDataURI({ + BulkDataURI: bulkDataURI.replace('wadors:', ''), + defaultType: 'image/jpeg', + mediaTypes: ['image/jpeg'], + thumbnail: true, + }), + ], + { type: 'image/jpeg' } + ) + ); + }.bind(this); + } + if (dicomWebConfig.thumbnailRendering === 'rendered') { + return async function getThumbnailSrc() { + const { StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID } = instance; + const bulkDataURI = `${dicomWebConfig.wadoRoot}/studies/${StudyInstanceUID}/series/${SeriesInstanceUID}/instances/${SOPInstanceUID}/rendered?accept=image/jpeg`; + return URL.createObjectURL( + new Blob( + [ + await this.bulkDataURI({ + BulkDataURI: bulkDataURI.replace('wadors:', ''), + defaultType: 'image/jpeg', + mediaTypes: ['image/jpeg'], + thumbnail: true, + }), + ], + { type: 'image/jpeg' } + ) + ); + }.bind(this); + } + }, + directURL: params => { return getDirectURL( { diff --git a/extensions/default/src/Panels/StudyBrowser/PanelStudyBrowser.tsx b/extensions/default/src/Panels/StudyBrowser/PanelStudyBrowser.tsx index cac2fa2e0..2ba136673 100644 --- a/extensions/default/src/Panels/StudyBrowser/PanelStudyBrowser.tsx +++ b/extensions/default/src/Panels/StudyBrowser/PanelStudyBrowser.tsx @@ -10,17 +10,7 @@ import { CallbackCustomization } from 'platform/core/src/types'; const { sortStudyInstances, formatDate, createStudyBrowserTabs } = utils; -const thumbnailNoImageModalities = [ - 'SR', - 'SEG', - 'SM', - 'RTSTRUCT', - 'RTPLAN', - 'RTDOSE', - 'DOC', - 'OT', - 'PMAP', -]; +const thumbnailNoImageModalities = ['SR', 'SEG', 'RTSTRUCT', 'RTPLAN', 'RTDOSE', 'DOC', 'PMAP']; /** * Study Browser component that displays and manages studies and their display sets @@ -178,7 +168,7 @@ function PanelStudyBrowser({ let currentDisplaySets = displaySetService.activeDisplaySets; // filter non based on the list of modalities that are supported by cornerstone currentDisplaySets = currentDisplaySets.filter( - ds => !thumbnailNoImageModalities.includes(ds.Modality) + ds => !thumbnailNoImageModalities.includes(ds.Modality) || ds.thumbnailSrc === null ); if (!currentDisplaySets.length) { @@ -188,20 +178,20 @@ function PanelStudyBrowser({ currentDisplaySets.forEach(async dSet => { const newImageSrcEntry = {}; const displaySet = displaySetService.getDisplaySetByUID(dSet.displaySetInstanceUID); - const imageIds = dataSource.getImageIdsForDisplaySet(displaySet); + const imageIds = dataSource.getImageIdsForDisplaySet(dSet); const imageId = getImageIdForThumbnail(displaySet, imageIds); // TODO: Is it okay that imageIds are not returned here for SR displaySets? - if (!imageId || displaySet?.unsupported) { + if (displaySet?.unsupported) { return; } // When the image arrives, render it and store the result in the thumbnailImgSrcMap let { thumbnailSrc } = displaySet; if (!thumbnailSrc && displaySet.getThumbnailSrc) { - thumbnailSrc = await displaySet.getThumbnailSrc(); + thumbnailSrc = await displaySet.getThumbnailSrc({ getImageSrc }); } - if (!thumbnailSrc) { + if (!thumbnailSrc && imageId) { const thumbnailSrc = await getImageSrc(imageId); displaySet.thumbnailSrc = thumbnailSrc; } @@ -253,13 +243,11 @@ function PanelStudyBrowser({ const { displaySetsAdded, options } = data; displaySetsAdded.forEach(async dSet => { const displaySetInstanceUID = dSet.displaySetInstanceUID; - const newImageSrcEntry = {}; const displaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID); if (displaySet?.unsupported) { return; } - if (options?.madeInClient) { setJumpToDisplaySet(displaySetInstanceUID); } @@ -275,7 +263,7 @@ function PanelStudyBrowser({ // When the image arrives, render it and store the result in the thumbnailImgSrcMap let { thumbnailSrc } = displaySet; if (!thumbnailSrc && displaySet.getThumbnailSrc) { - thumbnailSrc = await displaySet.getThumbnailSrc(); + thumbnailSrc = await displaySet.getThumbnailSrc({ getImageSrc }); } if (!thumbnailSrc) { thumbnailSrc = await getImageSrc(imageId); @@ -512,7 +500,11 @@ function _mapDisplaySets(displaySets, displaySetLoadingState, thumbnailImageSrcM } function _getComponentType(ds) { - if (thumbnailNoImageModalities.includes(ds.Modality) || ds?.unsupported) { + if ( + thumbnailNoImageModalities.includes(ds.Modality) || + ds?.unsupported || + ds.thumbnailSrc === null + ) { return 'thumbnailNoImage'; } diff --git a/extensions/default/src/getSopClassHandlerModule.js b/extensions/default/src/getSopClassHandlerModule.js index 3d2781ecd..0849238cb 100644 --- a/extensions/default/src/getSopClassHandlerModule.js +++ b/extensions/default/src/getSopClassHandlerModule.js @@ -5,7 +5,13 @@ import getDisplaySetMessages from './getDisplaySetMessages'; import getDisplaySetsFromUnsupportedSeries from './getDisplaySetsFromUnsupportedSeries'; import { chartHandler } from './SOPClassHandlers/chartSOPClassHandler'; -const { isImage, sopClassDictionary, isDisplaySetReconstructable } = utils; +const { + isImage, + sortStudyInstances, + instancesSortCriteria, + sopClassDictionary, + isDisplaySetReconstructable, +} = utils; const { ImageSet } = classes; const DEFAULT_VOLUME_LOADER_SCHEME = 'cornerstoneStreamingImageVolume'; @@ -62,9 +68,12 @@ function getDisplaySetInfo(instances) { } const makeDisplaySet = instances => { + // Need to sort the instances in order to get a consistent instance/thumbnail + sortStudyInstances(instances); const instance = instances[0]; const imageSet = new ImageSet(instances); - + const { extensionManager } = appContext; + const dataSource = extensionManager.getActiveDataSource()[0]; const { isDynamicVolume, value: isReconstructable, @@ -79,6 +88,16 @@ const makeDisplaySet = instances => { // set appropriate attributes to image set... const messages = getDisplaySetMessages(instances, isReconstructable, isDynamicVolume); + const imageIds = dataSource.getImageIdsForDisplaySet(imageSet); + let imageId = imageIds[Math.floor(imageIds.length / 2)]; + let thumbnailInstance = instances[Math.floor(instances.length / 2)]; + if (isDynamicVolume) { + const timePoints = dynamicVolumeInfo.timePoints; + const middleIndex = Math.floor(timePoints.length / 2); + const middleTimePointImageIds = timePoints[middleIndex]; + imageId = middleTimePointImageIds[Math.floor(middleTimePointImageIds.length / 2)]; + } + imageSet.setAttributes({ volumeLoaderSchema, displaySetInstanceUID: imageSet.uid, // create a local alias for the imageSet UID @@ -100,6 +119,7 @@ const makeDisplaySet = instances => { averageSpacingBetweenFrames: averageSpacingBetweenFrames || null, isDynamicVolume, dynamicVolumeInfo, + getThumbnailSrc: dataSource.retrieve.getGetThumbnailSrc?.(thumbnailInstance, imageId), supportsWindowLevel: true, label: instance.SeriesDescription || @@ -107,14 +127,7 @@ const makeDisplaySet = instances => { FrameOfReferenceUID: instance.FrameOfReferenceUID, }); - // Sort the images in this series if needed - const shallSort = true; //!OHIF.utils.ObjectPath.get(Meteor, 'settings.public.ui.sortSeriesByIncomingOrder'); - if (shallSort) { - imageSet.sortBy((a, b) => { - // Sort by InstanceNumber (0020,0013) - return (parseInt(a.InstanceNumber) || 0) - (parseInt(b.InstanceNumber) || 0); - }); - } + imageSet.sortBy(instancesSortCriteria.default); // Include the first image instance number (after sorted) /*imageSet.setAttribute( @@ -178,10 +191,8 @@ function getDisplaySetsFromSeries(instances) { } let displaySet; - if (isMultiFrame(instance)) { displaySet = makeDisplaySet([instance]); - displaySet.setAttributes({ sopClassUids, numImageFrames: instance.NumberOfFrames, diff --git a/extensions/dicom-pdf/src/getSopClassHandlerModule.js b/extensions/dicom-pdf/src/getSopClassHandlerModule.js index fd16d83bf..d720ccb30 100644 --- a/extensions/dicom-pdf/src/getSopClassHandlerModule.js +++ b/extensions/dicom-pdf/src/getSopClassHandlerModule.js @@ -14,7 +14,7 @@ const _getDisplaySetsFromSeries = (instances, servicesManager, extensionManager) const { Modality, SOPInstanceUID } = instance; const { SeriesDescription = 'PDF', MIMETypeOfEncapsulatedDocument } = instance; const { SeriesNumber, SeriesDate, SeriesInstanceUID, StudyInstanceUID, SOPClassUID } = instance; - const pdfUrl = dataSource.retrieve.directURL({ + const renderedUrl = dataSource.retrieve.directURL({ instance, tag: 'EncapsulatedDocument', defaultType: MIMETypeOfEncapsulatedDocument || 'application/pdf', @@ -35,14 +35,9 @@ const _getDisplaySetsFromSeries = (instances, servicesManager, extensionManager) SOPClassUID, referencedImages: null, measurements: null, - pdfUrl, + renderedUrl: renderedUrl, instances: [instance], - thumbnailSrc: dataSource.retrieve.directURL({ - instance, - defaultPath: '/thumbnail', - defaultType: 'image/jpeg', - tag: 'Absent', - }), + thumbnailSrc: null, isDerivedDisplaySet: true, isLoaded: false, sopClassUids, diff --git a/extensions/dicom-pdf/src/viewports/OHIFCornerstonePdfViewport.tsx b/extensions/dicom-pdf/src/viewports/OHIFCornerstonePdfViewport.tsx index 8c60fd92a..e0d62d782 100644 --- a/extensions/dicom-pdf/src/viewports/OHIFCornerstonePdfViewport.tsx +++ b/extensions/dicom-pdf/src/viewports/OHIFCornerstonePdfViewport.tsx @@ -28,15 +28,15 @@ function OHIFCornerstonePdfViewport({ displaySets }) { ); } - const { pdfUrl } = displaySets[0]; + const { renderedUrl } = displaySets[0]; useEffect(() => { const load = async () => { - setUrl(await pdfUrl); + setUrl(await renderedUrl); }; load(); - }, [pdfUrl]); + }, [renderedUrl]); return (
{ const dataSource = extensionManager.getActiveDataSource()[0]; + const thumbnailSrc = null; + console.warn('dataSource=', dataSource); return instances .filter(metadata => { const tsuid = @@ -75,16 +77,9 @@ const _getDisplaySetsFromSeries = (instances, servicesManager, extensionManager) referencedImages: null, measurements: null, viewportType: csEnums.ViewportType.VIDEO, - // The videoUrl is deprecated, the preferred URL is renderedUrl - videoUrl, - renderedUrl: videoUrl, instances: [instance], - thumbnailSrc: dataSource.retrieve.directURL({ - instance, - defaultPath: '/thumbnail', - defaultType: 'image/jpeg', - tag: 'Absent', - }), + getThumbnailSrc: dataSource.retrieve.getGetThumbnailSrc?.(instance), + thumbnailSrc, imageIds: [imageId], isDerivedDisplaySet: true, isLoaded: false, diff --git a/extensions/measurement-tracking/package.json b/extensions/measurement-tracking/package.json index 2f4eae35e..1b11f3b2a 100644 --- a/extensions/measurement-tracking/package.json +++ b/extensions/measurement-tracking/package.json @@ -32,8 +32,8 @@ "start": "yarn run dev" }, "peerDependencies": { - "@cornerstonejs/core": "^3.12.1", - "@cornerstonejs/tools": "^3.12.1", + "@cornerstonejs/core": "^3.12.2", + "@cornerstonejs/tools": "^3.12.2", "@ohif/core": "3.11.0-beta.27", "@ohif/extension-cornerstone-dicom-sr": "3.11.0-beta.27", "@ohif/extension-default": "3.11.0-beta.27", diff --git a/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx b/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx index 93ae5e12c..411a56ec7 100644 --- a/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx +++ b/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx @@ -5,17 +5,7 @@ import PanelStudyBrowser from '@ohif/extension-default/src/Panels/StudyBrowser/P import { UntrackSeriesModal } from './untrackSeriesModal'; import { useTrackedMeasurements } from '../../getContextModule'; -const thumbnailNoImageModalities = [ - 'SR', - 'SEG', - 'SM', - 'RTSTRUCT', - 'RTPLAN', - 'RTDOSE', - 'DOC', - 'OT', - 'PMAP', -]; +const thumbnailNoImageModalities = ['SR', 'SEG', 'RTSTRUCT', 'RTPLAN', 'RTDOSE', 'PMAP']; /** * Panel component for the Study Browser with tracking capabilities @@ -126,7 +116,11 @@ export default function PanelStudyBrowserTracking({ // Override component type to use tracking specific components const getComponentType = ds => { - if (thumbnailNoImageModalities.includes(ds.Modality) || ds?.unsupported) { + if ( + thumbnailNoImageModalities.includes(ds.Modality) || + ds.unsupported || + ds.thumbnailSrc === null + ) { return 'thumbnailNoImage'; } return 'thumbnailTracked'; diff --git a/package.json b/package.json index 29f47f5a5..735bbbf5c 100644 --- a/package.json +++ b/package.json @@ -57,8 +57,9 @@ "test:e2e:coverage": "nyc --reporter=html yarn run test:e2e:ci", "test:e2e:ci": "TEST_ENV=true npx playwright test", "test:e2e:ui": "TEST_ENV=true npx playwright test --ui", - "test:e2e:reporter": "TEST_ENV=true npx playwright test --reporter=html -g @debug", - "test:e2e:update": "TEST_ENV=true npx playwright test --reporter=html -g @debug --update-snapshots", + "test:e2e:reporter": "TEST_ENV=true npx playwright test --reporter=html", + "test:e2e:update": "TEST_ENV=true npx playwright test --reporter=html --update-snapshots", + "test:e2e:update:debug": "TEST_ENV=true npx playwright test -g @debug --reporter=html --update-snapshots ", "test:e2e:headed": "TEST_ENV=true npx playwright test --headed", "test:e2e:debug": "TEST_ENV=true npx playwright test --debug", "test:e2e:dist": "lerna run test:e2e:dist --stream", diff --git a/platform/app/cypress/integration/OHIFVideoDisplay.spec.js b/platform/app/cypress/integration/OHIFVideoDisplay.spec.js index 704db2ed4..0bd38aeb1 100644 --- a/platform/app/cypress/integration/OHIFVideoDisplay.spec.js +++ b/platform/app/cypress/integration/OHIFVideoDisplay.spec.js @@ -5,11 +5,11 @@ describe('OHIF Video Display', function () { }); it('checks if series thumbnails are being displayed', function () { - cy.get('[data-cy="study-browser-thumbnail-no-image"]').its('length').should('be.gt', 1); + cy.get('[data-cy="study-browser-thumbnail-no-image"]').its('length').should('be.eq', 1); }); it('performs double-click to load thumbnail in active viewport', () => { - cy.get('[data-cy="study-browser-thumbnail-no-image"]:nth-child(2)').dblclick(); + cy.get('[data-cy="study-browser-thumbnail-no-image"]:nth-child(1)').dblclick(); //const expectedText = 'Ser: 3'; //cy.get('@viewportInfoBottomLeft').should('contains.text', expectedText); diff --git a/platform/app/package.json b/platform/app/package.json index 53b7b0927..ff4cf4eb4 100644 --- a/platform/app/package.json +++ b/platform/app/package.json @@ -53,7 +53,7 @@ "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.4", "@cornerstonejs/codec-openjph": "^2.4.5", - "@cornerstonejs/dicom-image-loader": "^3.12.1", + "@cornerstonejs/dicom-image-loader": "^3.12.2", "@emotion/serialize": "^1.1.3", "@ohif/core": "3.11.0-beta.27", "@ohif/extension-cornerstone": "3.11.0-beta.27", diff --git a/platform/app/public/config/e2e.js b/platform/app/public/config/e2e.js index 9ec0095c4..93acbbd0b 100644 --- a/platform/app/public/config/e2e.js +++ b/platform/app/public/config/e2e.js @@ -138,7 +138,7 @@ window.config = { supportsReject: true, supportsStow: true, imageRendering: 'wadors', - thumbnailRendering: 'wadors', + thumbnailRendering: 'thumbnail', enableStudyLazyLoad: true, supportsFuzzyMatching: false, supportsWildcard: true, diff --git a/platform/app/public/config/kheops.js b/platform/app/public/config/kheops.js index 1c32f20e2..1bb3fdff0 100644 --- a/platform/app/public/config/kheops.js +++ b/platform/app/public/config/kheops.js @@ -136,7 +136,7 @@ window.config = { supportsReject: true, supportsStow: true, imageRendering: 'wadors', - thumbnailRendering: 'wadors', + thumbnailRendering: 'thumbnail', enableStudyLazyLoad: true, supportsFuzzyMatching: false, supportsWildcard: true, diff --git a/platform/core/package.json b/platform/core/package.json index f5fafff01..e0ccb0b75 100644 --- a/platform/core/package.json +++ b/platform/core/package.json @@ -37,8 +37,8 @@ "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.4", "@cornerstonejs/codec-openjph": "^2.4.5", - "@cornerstonejs/core": "^3.12.1", - "@cornerstonejs/dicom-image-loader": "^3.12.1", + "@cornerstonejs/core": "^3.12.2", + "@cornerstonejs/dicom-image-loader": "^3.12.2", "@ohif/ui": "3.11.0-beta.27", "cornerstone-math": "0.1.9", "dicom-parser": "^1.8.21" diff --git a/platform/core/src/types/DisplaySet.ts b/platform/core/src/types/DisplaySet.ts index 30935b0fc..4bda89ac5 100644 --- a/platform/core/src/types/DisplaySet.ts +++ b/platform/core/src/types/DisplaySet.ts @@ -18,10 +18,21 @@ export type DisplaySet = { isOverlayDisplaySet?: boolean; // Details about how to display: - /** A URL that can be used to display the thumbnail. Typically a data url */ + /** + * A URL that can be used to display the thumbnail. Typically a data url + * This can be set to null to avoid trying to display a thumbnail, eg for + * display sets without a thumbnail. + */ thumbnailSrc?: string; /** A fetch method to get the thumbnail */ getThumbnailSrc?(imageId?: string): Promise; + + /** + * A fetch URL to display the content. This is used for content such as + * pdf display. + */ + renderedUrl?: string; + SeriesDate?: string; SeriesTime?: string; instance?: InstanceMetadata; diff --git a/platform/core/src/utils/index.ts b/platform/core/src/utils/index.ts index 821d2ebe5..734508cc8 100644 --- a/platform/core/src/utils/index.ts +++ b/platform/core/src/utils/index.ts @@ -35,6 +35,7 @@ import { sortStudyInstances, sortingCriteria, seriesSortCriteria, + instancesSortCriteria, } from './sortStudy'; import { splitComma, getSplitParam } from './splitComma'; import { createStudyBrowserTabs } from './createStudyBrowserTabs'; @@ -56,6 +57,7 @@ const utils = { sortStudyInstances, sortingCriteria, seriesSortCriteria, + instancesSortCriteria, writeScript, formatDate, formatTime, diff --git a/platform/core/src/utils/sortStudy.ts b/platform/core/src/utils/sortStudy.ts index bbaa0a5e6..9870530d1 100644 --- a/platform/core/src/utils/sortStudy.ts +++ b/platform/core/src/utils/sortStudy.ts @@ -42,7 +42,19 @@ const seriesSortCriteria = { }; const instancesSortCriteria = { - default: (a, b) => parseInt(a.InstanceNumber) - parseInt(b.InstanceNumber), + default: (a, b) => { + // Sort by InstanceNumber (0020,0013) + const aInstance = parseInt(a.InstanceNumber) || 0; + const bInstance = parseInt(b.InstanceNumber) || 0; + if (aInstance !== bInstance) { + return (parseInt(a.InstanceNumber) || 0) - (parseInt(b.InstanceNumber) || 0); + } + // Fallback rule to enable consistent sorting + if (a.SOPInstanceUID === b.SOPInstanceUID) { + return 0; + } + return a.SOPInstanceUID < b.SOPInstanceUID ? -1 : 1; + }, }; const sortingCriteria = { @@ -116,4 +128,11 @@ export default function sortStudy( return study; } -export { sortStudy, sortStudySeries, sortStudyInstances, sortingCriteria, seriesSortCriteria }; +export { + sortStudy, + sortStudySeries, + sortStudyInstances, + sortingCriteria, + seriesSortCriteria, + instancesSortCriteria, +}; diff --git a/platform/docs/docs/development/playwright-testing.md b/platform/docs/docs/development/playwright-testing.md index e456a7e67..e52e475d1 100644 --- a/platform/docs/docs/development/playwright-testing.md +++ b/platform/docs/docs/development/playwright-testing.md @@ -8,14 +8,15 @@ summary: Guide to writing and running end-to-end tests for OHIF Viewer using Pla :::note -You might need to run the `yarn playwright install ` for the first time if you have not +You might need to run the `bun playwright install ` for the first time if you have not ::: # Running the tests ```bash +# # run the tests -yarn test:e2e:ui +bun test:e2e:ui ``` diff --git a/platform/ui-next/src/components/Thumbnail/Thumbnail.tsx b/platform/ui-next/src/components/Thumbnail/Thumbnail.tsx index dea0ed30c..192aca7dd 100644 --- a/platform/ui-next/src/components/Thumbnail/Thumbnail.tsx +++ b/platform/ui-next/src/components/Thumbnail/Thumbnail.tsx @@ -67,12 +67,12 @@ const Thumbnail = ({ )} >
-
+
{imageSrc ? ( {imageAltText} ) : ( diff --git a/tests/Crosshairs.spec.ts b/tests/Crosshairs.spec.ts index 9c692b084..a64795140 100644 --- a/tests/Crosshairs.spec.ts +++ b/tests/Crosshairs.spec.ts @@ -105,6 +105,8 @@ test.describe('Crosshairs Test', async () => { await page.getByTestId('study-browser-thumbnail').nth(1).dblclick(); + await page.waitForTimeout(5000); + await checkForScreenshot(page, page, screenShotPaths.crosshairs.crosshairsNewDisplayset); }); }); diff --git a/tests/SEGHydrationThenMPR.spec.ts b/tests/SEGHydrationThenMPR.spec.ts index b511aa855..509c3981b 100644 --- a/tests/SEGHydrationThenMPR.spec.ts +++ b/tests/SEGHydrationThenMPR.spec.ts @@ -12,11 +12,14 @@ test('should properly display MPR for MR', async ({ page }) => { await page.getByTestId('study-browser-thumbnail-no-image').dblclick(); await page.getByTestId('yes-hydrate-btn').click(); + + await page.waitForTimeout(5000); await checkForScreenshot(page, page, screenShotPaths.segHydrationThenMPR.segPostHydration); await page.getByTestId('Layout').click(); await page.getByTestId('Axial Primary').click(); + await page.waitForTimeout(5000); await checkForScreenshot( page, page, diff --git a/tests/mpr2.spec.ts b/tests/mpr2.spec.ts index b4d3d78bf..c03648907 100644 --- a/tests/mpr2.spec.ts +++ b/tests/mpr2.spec.ts @@ -5,7 +5,7 @@ test.beforeEach(async ({ page }) => { const studyInstanceUID = '1.3.12.2.1107.5.2.32.35162.30000015050317233592200000046&hangingprotocolid=mpr'; const mode = 'viewer'; - await visitStudy(page, studyInstanceUID, mode, 2000); + await visitStudy(page, studyInstanceUID, mode, 10000); }); test('should properly display MPR for MR', async ({ page }) => { diff --git a/tests/screenshots/chromium/3DFourUp.spec.ts/threeDFourUpDisplayedCorrectly.png b/tests/screenshots/chromium/3DFourUp.spec.ts/threeDFourUpDisplayedCorrectly.png index cc0000a48..436c4a89c 100644 Binary files a/tests/screenshots/chromium/3DFourUp.spec.ts/threeDFourUpDisplayedCorrectly.png and b/tests/screenshots/chromium/3DFourUp.spec.ts/threeDFourUpDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/3DMain.spec.ts/threeDMainDisplayedCorrectly.png b/tests/screenshots/chromium/3DMain.spec.ts/threeDMainDisplayedCorrectly.png index 705f91bdd..889f98b5c 100644 Binary files a/tests/screenshots/chromium/3DMain.spec.ts/threeDMainDisplayedCorrectly.png and b/tests/screenshots/chromium/3DMain.spec.ts/threeDMainDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/3DOnly.spec.ts/threeDOnlyDisplayedCorrectly.png b/tests/screenshots/chromium/3DOnly.spec.ts/threeDOnlyDisplayedCorrectly.png index 9e27c8c1c..a929c1578 100644 Binary files a/tests/screenshots/chromium/3DOnly.spec.ts/threeDOnlyDisplayedCorrectly.png and b/tests/screenshots/chromium/3DOnly.spec.ts/threeDOnlyDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/3DPrimary.spec.ts/threeDPrimaryDisplayedCorrectly.png b/tests/screenshots/chromium/3DPrimary.spec.ts/threeDPrimaryDisplayedCorrectly.png index 110cd0be4..e8b2982d5 100644 Binary files a/tests/screenshots/chromium/3DPrimary.spec.ts/threeDPrimaryDisplayedCorrectly.png and b/tests/screenshots/chromium/3DPrimary.spec.ts/threeDPrimaryDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/Angle.spec.ts/angleDisplayedCorrectly.png b/tests/screenshots/chromium/Angle.spec.ts/angleDisplayedCorrectly.png index b3350e9bc..96b6d4ddb 100644 Binary files a/tests/screenshots/chromium/Angle.spec.ts/angleDisplayedCorrectly.png and b/tests/screenshots/chromium/Angle.spec.ts/angleDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/AxialPrimary.spec.ts/axialPrimaryDisplayedCorrectly.png b/tests/screenshots/chromium/AxialPrimary.spec.ts/axialPrimaryDisplayedCorrectly.png index 7fdf074ee..df405e246 100644 Binary files a/tests/screenshots/chromium/AxialPrimary.spec.ts/axialPrimaryDisplayedCorrectly.png and b/tests/screenshots/chromium/AxialPrimary.spec.ts/axialPrimaryDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/Bidirectional.spec.ts/bidirectionalDisplayedCorrectly.png b/tests/screenshots/chromium/Bidirectional.spec.ts/bidirectionalDisplayedCorrectly.png index 4ddf81868..6802891fe 100644 Binary files a/tests/screenshots/chromium/Bidirectional.spec.ts/bidirectionalDisplayedCorrectly.png and b/tests/screenshots/chromium/Bidirectional.spec.ts/bidirectionalDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/Circle.spec.ts/circleDisplayedCorrectly.png b/tests/screenshots/chromium/Circle.spec.ts/circleDisplayedCorrectly.png index 068760bdb..9b88e8652 100644 Binary files a/tests/screenshots/chromium/Circle.spec.ts/circleDisplayedCorrectly.png and b/tests/screenshots/chromium/Circle.spec.ts/circleDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/CobbAngle.spec.ts/cobbangleDisplayedCorrectly.png b/tests/screenshots/chromium/CobbAngle.spec.ts/cobbangleDisplayedCorrectly.png index 018131e94..1bb545f78 100644 Binary files a/tests/screenshots/chromium/CobbAngle.spec.ts/cobbangleDisplayedCorrectly.png and b/tests/screenshots/chromium/CobbAngle.spec.ts/cobbangleDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsNewDisplayset.png b/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsNewDisplayset.png index a839ee0af..96a504bf7 100644 Binary files a/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsNewDisplayset.png and b/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsNewDisplayset.png differ diff --git a/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsRendered.png b/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsRendered.png index 6e7ea321f..7eaed9d41 100644 Binary files a/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsRendered.png and b/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsRendered.png differ diff --git a/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsResetToolbar.png b/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsResetToolbar.png index 4d55b61fd..f8a11a732 100644 Binary files a/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsResetToolbar.png and b/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsResetToolbar.png differ diff --git a/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsRotated.png b/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsRotated.png index bc6bb78f2..35d82c260 100644 Binary files a/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsRotated.png and b/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsRotated.png differ diff --git a/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsSlabThickness.png b/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsSlabThickness.png index faa0a920d..8ce32b624 100644 Binary files a/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsSlabThickness.png and b/tests/screenshots/chromium/Crosshairs.spec.ts/crosshairsSlabThickness.png differ diff --git a/tests/screenshots/chromium/DicomTagBrowser.spec.ts/dicomTagBrowserDisplayedCorrectly.png b/tests/screenshots/chromium/DicomTagBrowser.spec.ts/dicomTagBrowserDisplayedCorrectly.png index e663c0627..deac8ea94 100644 Binary files a/tests/screenshots/chromium/DicomTagBrowser.spec.ts/dicomTagBrowserDisplayedCorrectly.png and b/tests/screenshots/chromium/DicomTagBrowser.spec.ts/dicomTagBrowserDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/Ellipse.spec.ts/ellipseDisplayedCorrectly.png b/tests/screenshots/chromium/Ellipse.spec.ts/ellipseDisplayedCorrectly.png index ac3cd7905..f839c8f38 100644 Binary files a/tests/screenshots/chromium/Ellipse.spec.ts/ellipseDisplayedCorrectly.png and b/tests/screenshots/chromium/Ellipse.spec.ts/ellipseDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/FlipHorizontal.spec.ts/flipHorizontalDisplayedCorrectly.png b/tests/screenshots/chromium/FlipHorizontal.spec.ts/flipHorizontalDisplayedCorrectly.png index 91f82b739..26950de59 100644 Binary files a/tests/screenshots/chromium/FlipHorizontal.spec.ts/flipHorizontalDisplayedCorrectly.png and b/tests/screenshots/chromium/FlipHorizontal.spec.ts/flipHorizontalDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/Invert.spec.ts/invertDisplayedCorrectly.png b/tests/screenshots/chromium/Invert.spec.ts/invertDisplayedCorrectly.png index c63e914b3..182ce9953 100644 Binary files a/tests/screenshots/chromium/Invert.spec.ts/invertDisplayedCorrectly.png and b/tests/screenshots/chromium/Invert.spec.ts/invertDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-changeSeriesInMPR.png b/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-changeSeriesInMPR.png index bf2b24a27..88c4f1ee3 100644 Binary files a/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-changeSeriesInMPR.png and b/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-changeSeriesInMPR.png differ diff --git a/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-initialDraw.png b/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-initialDraw.png index 3bf0bf021..3ddd4da6e 100644 Binary files a/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-initialDraw.png and b/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-initialDraw.png differ diff --git a/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-jumpInMPR.png b/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-jumpInMPR.png index 5bf2fcebd..4300b0283 100644 Binary files a/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-jumpInMPR.png and b/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-jumpInMPR.png differ diff --git a/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-jumpToMeasurementAfterSeriesChange.png b/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-jumpToMeasurementAfterSeriesChange.png index 5bf2fcebd..4300b0283 100644 Binary files a/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-jumpToMeasurementAfterSeriesChange.png and b/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-jumpToMeasurementAfterSeriesChange.png differ diff --git a/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-jumpToMeasurementStack.png b/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-jumpToMeasurementStack.png index 05df234ae..16b934b20 100644 Binary files a/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-jumpToMeasurementStack.png and b/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-jumpToMeasurementStack.png differ diff --git a/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-scrollAway.png b/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-scrollAway.png index 9bfc58bcb..e1289ab21 100644 Binary files a/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-scrollAway.png and b/tests/screenshots/chromium/JumpToMeasurementMPR.spec.ts/jumpToMeasurementMPR-scrollAway.png differ diff --git a/tests/screenshots/chromium/Length.spec.ts/lengthDisplayedCorrectly.png b/tests/screenshots/chromium/Length.spec.ts/lengthDisplayedCorrectly.png index 484482447..9782c1c3b 100644 Binary files a/tests/screenshots/chromium/Length.spec.ts/lengthDisplayedCorrectly.png and b/tests/screenshots/chromium/Length.spec.ts/lengthDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/Livewire.spec.ts/livewireDisplayedCorrectly.png b/tests/screenshots/chromium/Livewire.spec.ts/livewireDisplayedCorrectly.png index b66e05930..dd64ddc29 100644 Binary files a/tests/screenshots/chromium/Livewire.spec.ts/livewireDisplayedCorrectly.png and b/tests/screenshots/chromium/Livewire.spec.ts/livewireDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/MPR.spec.ts/mprDisplayedCorrectly.png b/tests/screenshots/chromium/MPR.spec.ts/mprDisplayedCorrectly.png index 624a83976..c51740b2d 100644 Binary files a/tests/screenshots/chromium/MPR.spec.ts/mprDisplayedCorrectly.png and b/tests/screenshots/chromium/MPR.spec.ts/mprDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/Probe.spec.ts/probeDisplayedCorrectly.png b/tests/screenshots/chromium/Probe.spec.ts/probeDisplayedCorrectly.png index 184becb48..3d0fa3d47 100644 Binary files a/tests/screenshots/chromium/Probe.spec.ts/probeDisplayedCorrectly.png and b/tests/screenshots/chromium/Probe.spec.ts/probeDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/RTHydration.spec.ts/rtJumpToStructure.png b/tests/screenshots/chromium/RTHydration.spec.ts/rtJumpToStructure.png index 514198a00..9b90f9448 100644 Binary files a/tests/screenshots/chromium/RTHydration.spec.ts/rtJumpToStructure.png and b/tests/screenshots/chromium/RTHydration.spec.ts/rtJumpToStructure.png differ diff --git a/tests/screenshots/chromium/RTHydration.spec.ts/rtPostHydration.png b/tests/screenshots/chromium/RTHydration.spec.ts/rtPostHydration.png index ff5d705fc..de155a567 100644 Binary files a/tests/screenshots/chromium/RTHydration.spec.ts/rtPostHydration.png and b/tests/screenshots/chromium/RTHydration.spec.ts/rtPostHydration.png differ diff --git a/tests/screenshots/chromium/RTHydration.spec.ts/rtPreHydration.png b/tests/screenshots/chromium/RTHydration.spec.ts/rtPreHydration.png index 4174be115..0cb13e865 100644 Binary files a/tests/screenshots/chromium/RTHydration.spec.ts/rtPreHydration.png and b/tests/screenshots/chromium/RTHydration.spec.ts/rtPreHydration.png differ diff --git a/tests/screenshots/chromium/RTHydration2.spec.ts/rtPreHydration.png b/tests/screenshots/chromium/RTHydration2.spec.ts/rtPreHydration.png index 0637412d2..1998f03ba 100644 Binary files a/tests/screenshots/chromium/RTHydration2.spec.ts/rtPreHydration.png and b/tests/screenshots/chromium/RTHydration2.spec.ts/rtPreHydration.png differ diff --git a/tests/screenshots/chromium/Rectangle.spec.ts/rectangleDisplayedCorrectly.png b/tests/screenshots/chromium/Rectangle.spec.ts/rectangleDisplayedCorrectly.png index 8fc950a33..efc27d35e 100644 Binary files a/tests/screenshots/chromium/Rectangle.spec.ts/rectangleDisplayedCorrectly.png and b/tests/screenshots/chromium/Rectangle.spec.ts/rectangleDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/Reset.spec.ts/resetDisplayedCorrectly.png b/tests/screenshots/chromium/Reset.spec.ts/resetDisplayedCorrectly.png index af4436c5d..5fb657325 100644 Binary files a/tests/screenshots/chromium/Reset.spec.ts/resetDisplayedCorrectly.png and b/tests/screenshots/chromium/Reset.spec.ts/resetDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/RotateRight.spec.ts/rotateRightDisplayedCorrectly.png b/tests/screenshots/chromium/RotateRight.spec.ts/rotateRightDisplayedCorrectly.png index bf22b09f6..a1e516982 100644 Binary files a/tests/screenshots/chromium/RotateRight.spec.ts/rotateRightDisplayedCorrectly.png and b/tests/screenshots/chromium/RotateRight.spec.ts/rotateRightDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/SEGHydration.spec.ts/segJumpToSegment.png b/tests/screenshots/chromium/SEGHydration.spec.ts/segJumpToSegment.png deleted file mode 100644 index 8f706033c..000000000 Binary files a/tests/screenshots/chromium/SEGHydration.spec.ts/segJumpToSegment.png and /dev/null differ diff --git a/tests/screenshots/chromium/SEGHydration.spec.ts/segPostHydration.png b/tests/screenshots/chromium/SEGHydration.spec.ts/segPostHydration.png index 8c1d6fe0d..79ef80698 100644 Binary files a/tests/screenshots/chromium/SEGHydration.spec.ts/segPostHydration.png and b/tests/screenshots/chromium/SEGHydration.spec.ts/segPostHydration.png differ diff --git a/tests/screenshots/chromium/SEGHydration.spec.ts/segPreHydration.png b/tests/screenshots/chromium/SEGHydration.spec.ts/segPreHydration.png index f5b09d0f2..95ef71285 100644 Binary files a/tests/screenshots/chromium/SEGHydration.spec.ts/segPreHydration.png and b/tests/screenshots/chromium/SEGHydration.spec.ts/segPreHydration.png differ diff --git a/tests/screenshots/chromium/SEGHydrationFromMPR.spec.ts/mprAfterSEG.png b/tests/screenshots/chromium/SEGHydrationFromMPR.spec.ts/mprAfterSEG.png index 8dd00f16a..4ccd3220b 100644 Binary files a/tests/screenshots/chromium/SEGHydrationFromMPR.spec.ts/mprAfterSEG.png and b/tests/screenshots/chromium/SEGHydrationFromMPR.spec.ts/mprAfterSEG.png differ diff --git a/tests/screenshots/chromium/SEGHydrationFromMPR.spec.ts/mprAfterSegHydrated.png b/tests/screenshots/chromium/SEGHydrationFromMPR.spec.ts/mprAfterSegHydrated.png index 6918e4b21..4196e081b 100644 Binary files a/tests/screenshots/chromium/SEGHydrationFromMPR.spec.ts/mprAfterSegHydrated.png and b/tests/screenshots/chromium/SEGHydrationFromMPR.spec.ts/mprAfterSegHydrated.png differ diff --git a/tests/screenshots/chromium/SEGHydrationFromMPR.spec.ts/mprAfterSegHydratedAfterLayoutChange.png b/tests/screenshots/chromium/SEGHydrationFromMPR.spec.ts/mprAfterSegHydratedAfterLayoutChange.png index 2d6a61bbe..c1e77821d 100644 Binary files a/tests/screenshots/chromium/SEGHydrationFromMPR.spec.ts/mprAfterSegHydratedAfterLayoutChange.png and b/tests/screenshots/chromium/SEGHydrationFromMPR.spec.ts/mprAfterSegHydratedAfterLayoutChange.png differ diff --git a/tests/screenshots/chromium/SEGHydrationFromMPR.spec.ts/mprBeforeSEG.png b/tests/screenshots/chromium/SEGHydrationFromMPR.spec.ts/mprBeforeSEG.png index 8941a3f70..91445e317 100644 Binary files a/tests/screenshots/chromium/SEGHydrationFromMPR.spec.ts/mprBeforeSEG.png and b/tests/screenshots/chromium/SEGHydrationFromMPR.spec.ts/mprBeforeSEG.png differ diff --git a/tests/screenshots/chromium/SEGHydrationThenMPR.spec.ts/segPostHydration.png b/tests/screenshots/chromium/SEGHydrationThenMPR.spec.ts/segPostHydration.png index 3b2d8a7ca..d4a71a14f 100644 Binary files a/tests/screenshots/chromium/SEGHydrationThenMPR.spec.ts/segPostHydration.png and b/tests/screenshots/chromium/SEGHydrationThenMPR.spec.ts/segPostHydration.png differ diff --git a/tests/screenshots/chromium/SEGHydrationThenMPR.spec.ts/segPostHydrationMPRAxialPrimary.png b/tests/screenshots/chromium/SEGHydrationThenMPR.spec.ts/segPostHydrationMPRAxialPrimary.png index cc0118697..c19375d9d 100644 Binary files a/tests/screenshots/chromium/SEGHydrationThenMPR.spec.ts/segPostHydrationMPRAxialPrimary.png and b/tests/screenshots/chromium/SEGHydrationThenMPR.spec.ts/segPostHydrationMPRAxialPrimary.png differ diff --git a/tests/screenshots/chromium/SRHydration.spec.ts/srJumpToMeasurement.png b/tests/screenshots/chromium/SRHydration.spec.ts/srJumpToMeasurement.png index 7756fff74..72d6460c9 100644 Binary files a/tests/screenshots/chromium/SRHydration.spec.ts/srJumpToMeasurement.png and b/tests/screenshots/chromium/SRHydration.spec.ts/srJumpToMeasurement.png differ diff --git a/tests/screenshots/chromium/SRHydration.spec.ts/srPostHydration.png b/tests/screenshots/chromium/SRHydration.spec.ts/srPostHydration.png index 2abcaedb4..94b903480 100644 Binary files a/tests/screenshots/chromium/SRHydration.spec.ts/srPostHydration.png and b/tests/screenshots/chromium/SRHydration.spec.ts/srPostHydration.png differ diff --git a/tests/screenshots/chromium/SRHydration.spec.ts/srPreHydration.png b/tests/screenshots/chromium/SRHydration.spec.ts/srPreHydration.png index d78926729..584bc4e57 100644 Binary files a/tests/screenshots/chromium/SRHydration.spec.ts/srPreHydration.png and b/tests/screenshots/chromium/SRHydration.spec.ts/srPreHydration.png differ diff --git a/tests/screenshots/chromium/Spline.spec.ts/splineDisplayedCorrectly.png b/tests/screenshots/chromium/Spline.spec.ts/splineDisplayedCorrectly.png index 9c520a5e0..ee866a42d 100644 Binary files a/tests/screenshots/chromium/Spline.spec.ts/splineDisplayedCorrectly.png and b/tests/screenshots/chromium/Spline.spec.ts/splineDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/mpr2.spec.ts/mprDisplayedCorrectly.png b/tests/screenshots/chromium/mpr2.spec.ts/mprDisplayedCorrectly.png index 65ee8ef3a..ed1bf15de 100644 Binary files a/tests/screenshots/chromium/mpr2.spec.ts/mprDisplayedCorrectly.png and b/tests/screenshots/chromium/mpr2.spec.ts/mprDisplayedCorrectly.png differ diff --git a/tests/screenshots/chromium/mpr2.spec.ts/mprDisplayedCorrectlyZoomed.png b/tests/screenshots/chromium/mpr2.spec.ts/mprDisplayedCorrectlyZoomed.png index 791fdf0d0..8f6575b72 100644 Binary files a/tests/screenshots/chromium/mpr2.spec.ts/mprDisplayedCorrectlyZoomed.png and b/tests/screenshots/chromium/mpr2.spec.ts/mprDisplayedCorrectlyZoomed.png differ diff --git a/yarn.lock b/yarn.lock index fdb081508..245782a8f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1393,10 +1393,10 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@cornerstonejs/adapters@^3.12.1": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-3.12.1.tgz#e5d546802c78981f9de6fbf2702517d9fcafb592" - integrity sha512-2HrqwpTTE5d7UNzjbp8TDYucf2j36sENfd3gK1k0Ui6na4yfEiHecNZgy6x6y5M5DcKzXofl2a64XvXXYYotzQ== +"@cornerstonejs/adapters@^3.12.2": + version "3.12.2" + resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-3.12.2.tgz#835ed61cfc26257af4a37f03023f539eaeca59d1" + integrity sha512-yKPT9U1/CUtXu/h3xXB8KYX3x3bHgedw3nPX6eOn8oDhynfjuvA+i+4xJxKtO182mi2WnAQwFPnzkgmEVyrSqA== dependencies: "@babel/runtime-corejs2" "^7.17.8" buffer "^6.0.3" @@ -1404,10 +1404,10 @@ gl-matrix "^3.4.3" ndarray "^1.0.19" -"@cornerstonejs/ai@^3.12.1": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@cornerstonejs/ai/-/ai-3.12.1.tgz#b8b351a9da574dccd54acc9805ed40455733926e" - integrity sha512-tey1CUoufVX+SogsyR9Yaljxhs6mKk0MBX0rAThgbphb74PFlDC3Kl9AcYBFJNjRcIy6K0cIR4e1/RtKFGsPeQ== +"@cornerstonejs/ai@^3.12.2": + version "3.12.2" + resolved "https://registry.yarnpkg.com/@cornerstonejs/ai/-/ai-3.12.2.tgz#8e55d96f15941218f0c3b5af0c992806b9a2f2d7" + integrity sha512-Btyey9KNcJqzIG7trFqDHo08zJVO3XtVEbfbJiUfRoztwQTKrtxOJ40dsz3pU3+PNQgG0bmTPhe9yRSpcVdwRA== dependencies: "@babel/runtime-corejs2" "^7.17.8" buffer "^6.0.3" @@ -1443,20 +1443,20 @@ resolved "https://registry.yarnpkg.com/@cornerstonejs/codec-openjph/-/codec-openjph-2.4.5.tgz#8690b61a86fa53ef38a70eee9d665a79229517c0" integrity sha512-MZCUy8VG0VG5Nl1l58+g+kH3LujAzLYTfJqkwpWI2gjSrGXnP6lgwyy4GmPRZWVoS40/B1LDNALK905cNWm+sg== -"@cornerstonejs/core@^3.12.1": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-3.12.1.tgz#3b165d0fa2e12bc6a60f5b2e306b8d53f6c9cad8" - integrity sha512-pWFbobllPu0mjnAbV6/4U+YaRKoY661yNCdw1BUvm0Vs/FVNGz0E61/VVtZfS2L/gatj3SBpYPTw6k6G9wk1AA== +"@cornerstonejs/core@^3.12.2": + version "3.12.2" + resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-3.12.2.tgz#eeba299b27cca3664e760a9a83aa58dd0d6dc305" + integrity sha512-AKFHr7XF5zKUo1BiclJmUz913yD9NiQgLl3krTmvtlWPuOUhpxoCfipW0De5dMeVuQ86iQDV1F+p7HuWOWfdwg== dependencies: "@kitware/vtk.js" "32.12.1" comlink "^4.4.1" gl-matrix "^3.4.3" loglevel "^1.9.2" -"@cornerstonejs/dicom-image-loader@^3.12.1": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-3.12.1.tgz#8d650c1574dea90420dfe49d5aa0a305b0dd6aa7" - integrity sha512-HX4++HYN0Lx8g8fTTVbp7DPsEWJHXRDqO9nuiJzgr9b79nMp1rrybTcP07RIXY38iCsSBr17WIkPWMxdby4nPw== +"@cornerstonejs/dicom-image-loader@^3.12.2": + version "3.12.2" + resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-3.12.2.tgz#ebf0915baed75ed37d38285f06c1a8e3cba7372d" + integrity sha512-LaKnv5OPMlRPzkuqReVl1Gpa9ERTQJXl/1/Iku9wbWjnGrkzdF4Ef8bG0DseLx57qMOJPJP++PsxeXCaOgXvyw== dependencies: "@cornerstonejs/codec-charls" "^1.2.3" "@cornerstonejs/codec-libjpeg-turbo-8bit" "^1.2.2" @@ -1468,25 +1468,25 @@ pako "^2.0.4" uuid "^9.0.0" -"@cornerstonejs/labelmap-interpolation@^3.12.1": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@cornerstonejs/labelmap-interpolation/-/labelmap-interpolation-3.12.1.tgz#74f3583634c3150cb38dd81d9be1a4668bf1e64f" - integrity sha512-ikTaajRrtNgjPrtcwqaac59uRX3JMIttOLLQgHR9qt7UNNs91BrbkoKGZkVER5YL3R+9o7olKUgdgprxVKE/Cw== +"@cornerstonejs/labelmap-interpolation@^3.12.2": + version "3.12.2" + resolved "https://registry.yarnpkg.com/@cornerstonejs/labelmap-interpolation/-/labelmap-interpolation-3.12.2.tgz#e1682f97592b09a5246e33b4ab110a694b2f281b" + integrity sha512-5T2OtNyV2jMy66k2clG/Krk1x4xFOxlS9sGxT1eMOrELClzpY+cL+IuA6f0aD6vTwkp1fFojEIa0IFbwuCK8HQ== dependencies: "@itk-wasm/morphological-contour-interpolation" "1.1.0" itk-wasm "1.0.0-b.165" -"@cornerstonejs/polymorphic-segmentation@^3.12.1": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@cornerstonejs/polymorphic-segmentation/-/polymorphic-segmentation-3.12.1.tgz#b80d133c533c5e93a680521c618d5521efb37645" - integrity sha512-gdDq1Qh3c37IZxaTwE4k9dEQE7CzQ1anfDg9foiJnJkBHVwgWpMiC/ztSa+c22LgN6ksQnWDz5TGIHqJ+ozscQ== +"@cornerstonejs/polymorphic-segmentation@^3.12.2": + version "3.12.2" + resolved "https://registry.yarnpkg.com/@cornerstonejs/polymorphic-segmentation/-/polymorphic-segmentation-3.12.2.tgz#80be77b1d46ff5c6edd8346099d239cf6504298a" + integrity sha512-pmOpmOKUaAM3EIklZLufWJ9IVTRpp54MF+B6cnirGEYYobjFT+uTrLwrExwVC1kEVHi8o4n5X8SJnawtIu/ugA== dependencies: "@icr/polyseg-wasm" "0.4.0" -"@cornerstonejs/tools@^3.12.1": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-3.12.1.tgz#476b457c303d2e37a064acf0a09d1d203bfec5b0" - integrity sha512-0Yax5NIdX1X6ELMf32rticoTehPFh2k0OTx/znAf3IgMUYdsox4peMe8Lf72MrFvmLeDvtyB45iT0Xk6bjeAvw== +"@cornerstonejs/tools@^3.12.2": + version "3.12.2" + resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-3.12.2.tgz#6db5e1ea6cc986a8a647fd64bea05e3dcb15fb46" + integrity sha512-Zx9BFl2OAuCQGrr6o+e1tV3fMSoAARC7HlVWprUrGWwDA29LVRxQT+cc+Wo76GjxcKSMo5RuLt1+sgRj0+CsAA== dependencies: "@types/offscreencanvas" "2019.7.3" comlink "^4.4.1"