fix: prevent annotation from appearing in active viewport when switching series with different Frame of Reference UID (#5630)

* fix: prevent annotation from appearing in active viewport when switching series with different Frame of Reference UID

* refactor: extract viewport update strategies

* Update version and use nearest orientation viewport

---------

Co-authored-by: trenser-belbin <belbin.kunjumon@prenuvo.com>
Co-authored-by: Bill Wallace <wayfarer3130@gmail.com>
This commit is contained in:
Belbin-GK 2025-12-18 22:32:52 +05:30 committed by GitHub
parent 0af4c2ae47
commit 658994c854
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 322 additions and 261 deletions

330
bun.lock
View File

@ -52,7 +52,7 @@
},
"addOns/externals/devDependencies": {
"name": "@externals/devDependencies",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"@kitware/vtk.js": "34.15.1",
@ -137,22 +137,22 @@
},
"addOns/externals/dicom-microscopy-viewer": {
"name": "@externals/dicom-microscopy-viewer",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"dicom-microscopy-viewer": "0.48.6",
},
},
"extensions/cornerstone": {
"name": "@ohif/extension-cornerstone",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/adapters": "4.14.4",
"@cornerstonejs/ai": "4.14.4",
"@cornerstonejs/core": "4.14.4",
"@cornerstonejs/labelmap-interpolation": "4.14.4",
"@cornerstonejs/polymorphic-segmentation": "4.14.4",
"@cornerstonejs/tools": "4.14.4",
"@cornerstonejs/adapters": "4.14.5",
"@cornerstonejs/ai": "4.14.5",
"@cornerstonejs/core": "4.14.5",
"@cornerstonejs/labelmap-interpolation": "4.14.5",
"@cornerstonejs/polymorphic-segmentation": "4.14.5",
"@cornerstonejs/tools": "4.14.5",
"@itk-wasm/morphological-contour-interpolation": "1.1.0",
"@kitware/vtk.js": "34.15.1",
"html2canvas": "1.4.1",
@ -169,9 +169,9 @@
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
"@cornerstonejs/codec-openjpeg": "1.3.0",
"@cornerstonejs/codec-openjph": "2.4.7",
"@cornerstonejs/dicom-image-loader": "4.14.4",
"@ohif/core": "3.12.0-beta.105",
"@ohif/ui": "3.12.0-beta.105",
"@cornerstonejs/dicom-image-loader": "4.14.5",
"@ohif/core": "3.12.0-beta.107",
"@ohif/ui": "3.12.0-beta.107",
"dcmjs": "0.45.0",
"dicom-parser": "1.8.21",
"hammerjs": "2.0.8",
@ -183,19 +183,19 @@
},
"extensions/cornerstone-dicom-pmap": {
"name": "@ohif/extension-cornerstone-dicom-pmap",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/adapters": "4.14.4",
"@cornerstonejs/core": "4.14.4",
"@cornerstonejs/adapters": "4.14.5",
"@cornerstonejs/core": "4.14.5",
"@kitware/vtk.js": "34.15.1",
"react-color": "2.19.3",
},
"peerDependencies": {
"@ohif/core": "3.12.0-beta.105",
"@ohif/extension-cornerstone": "3.12.0-beta.105",
"@ohif/extension-default": "3.12.0-beta.105",
"@ohif/i18n": "3.12.0-beta.105",
"@ohif/core": "3.12.0-beta.107",
"@ohif/extension-cornerstone": "3.12.0-beta.107",
"@ohif/extension-default": "3.12.0-beta.107",
"@ohif/i18n": "3.12.0-beta.107",
"prop-types": "15.8.1",
"react": "18.3.1",
"react-dom": "18.3.1",
@ -206,16 +206,16 @@
},
"extensions/cornerstone-dicom-rt": {
"name": "@ohif/extension-cornerstone-dicom-rt",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"react-color": "2.19.3",
},
"peerDependencies": {
"@ohif/core": "3.12.0-beta.105",
"@ohif/extension-cornerstone": "3.12.0-beta.105",
"@ohif/extension-default": "3.12.0-beta.105",
"@ohif/i18n": "3.12.0-beta.105",
"@ohif/core": "3.12.0-beta.107",
"@ohif/extension-cornerstone": "3.12.0-beta.107",
"@ohif/extension-default": "3.12.0-beta.107",
"@ohif/i18n": "3.12.0-beta.107",
"prop-types": "15.8.1",
"react": "18.3.1",
"react-dom": "18.3.1",
@ -226,19 +226,19 @@
},
"extensions/cornerstone-dicom-seg": {
"name": "@ohif/extension-cornerstone-dicom-seg",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/adapters": "4.14.4",
"@cornerstonejs/core": "4.14.4",
"@cornerstonejs/adapters": "4.14.5",
"@cornerstonejs/core": "4.14.5",
"@kitware/vtk.js": "34.15.1",
"react-color": "2.19.3",
},
"peerDependencies": {
"@ohif/core": "3.12.0-beta.105",
"@ohif/extension-cornerstone": "3.12.0-beta.105",
"@ohif/extension-default": "3.12.0-beta.105",
"@ohif/i18n": "3.12.0-beta.105",
"@ohif/core": "3.12.0-beta.107",
"@ohif/extension-cornerstone": "3.12.0-beta.107",
"@ohif/extension-default": "3.12.0-beta.107",
"@ohif/i18n": "3.12.0-beta.107",
"prop-types": "15.8.1",
"react": "18.3.1",
"react-dom": "18.3.1",
@ -249,19 +249,19 @@
},
"extensions/cornerstone-dicom-sr": {
"name": "@ohif/extension-cornerstone-dicom-sr",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/adapters": "4.14.4",
"@cornerstonejs/core": "4.14.4",
"@cornerstonejs/tools": "4.14.4",
"@cornerstonejs/adapters": "4.14.5",
"@cornerstonejs/core": "4.14.5",
"@cornerstonejs/tools": "4.14.5",
"classnames": "2.5.1",
},
"peerDependencies": {
"@ohif/core": "3.12.0-beta.105",
"@ohif/extension-cornerstone": "3.12.0-beta.105",
"@ohif/extension-measurement-tracking": "3.12.0-beta.105",
"@ohif/ui": "3.12.0-beta.105",
"@ohif/core": "3.12.0-beta.107",
"@ohif/extension-cornerstone": "3.12.0-beta.107",
"@ohif/extension-measurement-tracking": "3.12.0-beta.107",
"@ohif/ui": "3.12.0-beta.107",
"dcmjs": "0.45.0",
"dicom-parser": "1.8.21",
"hammerjs": "2.0.8",
@ -271,19 +271,19 @@
},
"extensions/cornerstone-dynamic-volume": {
"name": "@ohif/extension-cornerstone-dynamic-volume",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/core": "4.14.4",
"@cornerstonejs/tools": "4.14.4",
"@cornerstonejs/core": "4.14.5",
"@cornerstonejs/tools": "4.14.5",
"classnames": "2.5.1",
},
"peerDependencies": {
"@ohif/core": "3.12.0-beta.105",
"@ohif/extension-cornerstone": "3.12.0-beta.105",
"@ohif/extension-default": "3.12.0-beta.105",
"@ohif/i18n": "3.12.0-beta.105",
"@ohif/ui": "3.12.0-beta.105",
"@ohif/core": "3.12.0-beta.107",
"@ohif/extension-cornerstone": "3.12.0-beta.107",
"@ohif/extension-default": "3.12.0-beta.107",
"@ohif/i18n": "3.12.0-beta.107",
"@ohif/ui": "3.12.0-beta.107",
"dcmjs": "0.45.0",
"dicom-parser": "1.8.21",
"hammerjs": "2.0.8",
@ -293,7 +293,7 @@
},
"extensions/default": {
"name": "@ohif/extension-default",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/calculate-suv": "1.1.0",
@ -301,8 +301,8 @@
"lodash.uniqby": "4.7.0",
},
"peerDependencies": {
"@ohif/core": "3.12.0-beta.105",
"@ohif/i18n": "3.12.0-beta.105",
"@ohif/core": "3.12.0-beta.107",
"@ohif/i18n": "3.12.0-beta.107",
"dcmjs": "0.45.0",
"dicomweb-client": "0.10.4",
"prop-types": "15.8.1",
@ -316,7 +316,7 @@
},
"extensions/dicom-microscopy": {
"name": "@ohif/extension-dicom-microscopy",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/codec-charls": "1.2.3",
@ -327,10 +327,10 @@
"mathjs": "12.4.3",
},
"peerDependencies": {
"@ohif/core": "3.12.0-beta.105",
"@ohif/extension-default": "3.12.0-beta.105",
"@ohif/i18n": "3.12.0-beta.105",
"@ohif/ui": "3.12.0-beta.105",
"@ohif/core": "3.12.0-beta.107",
"@ohif/extension-default": "3.12.0-beta.107",
"@ohif/i18n": "3.12.0-beta.107",
"@ohif/ui": "3.12.0-beta.107",
"prop-types": "15.8.1",
"react": "18.3.1",
"react-dom": "18.3.1",
@ -341,14 +341,14 @@
},
"extensions/dicom-pdf": {
"name": "@ohif/extension-dicom-pdf",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"classnames": "2.5.1",
},
"peerDependencies": {
"@ohif/core": "3.12.0-beta.105",
"@ohif/ui": "3.12.0-beta.105",
"@ohif/core": "3.12.0-beta.107",
"@ohif/ui": "3.12.0-beta.107",
"dcmjs": "0.45.0",
"dicom-parser": "1.8.21",
"hammerjs": "2.0.8",
@ -358,14 +358,14 @@
},
"extensions/dicom-video": {
"name": "@ohif/extension-dicom-video",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"classnames": "2.5.1",
},
"peerDependencies": {
"@ohif/core": "3.12.0-beta.105",
"@ohif/ui": "3.12.0-beta.105",
"@ohif/core": "3.12.0-beta.107",
"@ohif/ui": "3.12.0-beta.107",
"dcmjs": "0.45.0",
"dicom-parser": "1.8.21",
"hammerjs": "2.0.8",
@ -375,20 +375,20 @@
},
"extensions/measurement-tracking": {
"name": "@ohif/extension-measurement-tracking",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"@ohif/ui": "3.12.0-beta.105",
"@ohif/ui": "3.12.0-beta.107",
"@xstate/react": "3.2.2",
"xstate": "4.38.3",
},
"peerDependencies": {
"@cornerstonejs/core": "4.14.4",
"@cornerstonejs/tools": "4.14.4",
"@ohif/core": "3.12.0-beta.105",
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.105",
"@ohif/extension-default": "3.12.0-beta.105",
"@ohif/ui": "3.12.0-beta.105",
"@cornerstonejs/core": "4.14.5",
"@cornerstonejs/tools": "4.14.5",
"@ohif/core": "3.12.0-beta.107",
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.107",
"@ohif/extension-default": "3.12.0-beta.107",
"@ohif/ui": "3.12.0-beta.107",
"classnames": "2.5.1",
"dcmjs": "0.45.0",
"lodash.debounce": "4.0.8",
@ -401,14 +401,14 @@
},
"extensions/test-extension": {
"name": "@ohif/extension-test",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"classnames": "2.5.1",
},
"peerDependencies": {
"@ohif/core": "3.12.0-beta.105",
"@ohif/ui": "3.12.0-beta.105",
"@ohif/core": "3.12.0-beta.107",
"@ohif/ui": "3.12.0-beta.107",
"dcmjs": "0.45.0",
"dicom-parser": "1.8.21",
"hammerjs": "2.0.8",
@ -418,7 +418,7 @@
},
"extensions/tmtv": {
"name": "@ohif/extension-tmtv",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"classnames": "2.5.1",
@ -435,16 +435,16 @@
},
"extensions/usAnnotation": {
"name": "@ohif/extension-ultrasound-pleura-bline",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/core": "4.14.4",
"@cornerstonejs/tools": "4.14.4",
"@ohif/core": "3.12.0-beta.105",
"@ohif/extension-cornerstone": "3.12.0-beta.105",
"@ohif/extension-default": "3.12.0-beta.105",
"@ohif/i18n": "3.12.0-beta.105",
"@ohif/ui-next": "3.12.0-beta.105",
"@cornerstonejs/core": "4.14.5",
"@cornerstonejs/tools": "4.14.5",
"@ohif/core": "3.12.0-beta.107",
"@ohif/extension-cornerstone": "3.12.0-beta.107",
"@ohif/extension-default": "3.12.0-beta.107",
"@ohif/i18n": "3.12.0-beta.107",
"@ohif/ui-next": "3.12.0-beta.107",
},
"devDependencies": {
"@babel/core": "7.28.0",
@ -487,7 +487,7 @@
},
"modes/basic": {
"name": "@ohif/mode-basic",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
},
@ -496,19 +496,19 @@
"webpack-merge": "5.10.0",
},
"peerDependencies": {
"@ohif/core": "3.12.0-beta.105",
"@ohif/extension-cornerstone": "3.12.0-beta.105",
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.105",
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.105",
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.105",
"@ohif/extension-default": "3.12.0-beta.105",
"@ohif/extension-dicom-pdf": "3.12.0-beta.105",
"@ohif/extension-dicom-video": "3.12.0-beta.105",
"@ohif/core": "3.12.0-beta.107",
"@ohif/extension-cornerstone": "3.12.0-beta.107",
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.107",
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.107",
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.107",
"@ohif/extension-default": "3.12.0-beta.107",
"@ohif/extension-dicom-pdf": "3.12.0-beta.107",
"@ohif/extension-dicom-video": "3.12.0-beta.107",
},
},
"modes/basic-dev-mode": {
"name": "@ohif/mode-basic-dev-mode",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"i18next": "17.3.1",
@ -518,17 +518,17 @@
"webpack-merge": "5.10.0",
},
"peerDependencies": {
"@ohif/core": "3.12.0-beta.105",
"@ohif/extension-cornerstone": "3.12.0-beta.105",
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.105",
"@ohif/extension-default": "3.12.0-beta.105",
"@ohif/extension-dicom-pdf": "3.12.0-beta.105",
"@ohif/extension-dicom-video": "3.12.0-beta.105",
"@ohif/core": "3.12.0-beta.107",
"@ohif/extension-cornerstone": "3.12.0-beta.107",
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.107",
"@ohif/extension-default": "3.12.0-beta.107",
"@ohif/extension-dicom-pdf": "3.12.0-beta.107",
"@ohif/extension-dicom-video": "3.12.0-beta.107",
},
},
"modes/basic-test-mode": {
"name": "@ohif/mode-test",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"i18next": "17.3.1",
@ -538,19 +538,19 @@
"webpack-merge": "5.10.0",
},
"peerDependencies": {
"@ohif/core": "3.12.0-beta.105",
"@ohif/extension-cornerstone": "3.12.0-beta.105",
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.105",
"@ohif/extension-default": "3.12.0-beta.105",
"@ohif/extension-dicom-pdf": "3.12.0-beta.105",
"@ohif/extension-dicom-video": "3.12.0-beta.105",
"@ohif/extension-measurement-tracking": "3.12.0-beta.105",
"@ohif/extension-test": "3.12.0-beta.105",
"@ohif/core": "3.12.0-beta.107",
"@ohif/extension-cornerstone": "3.12.0-beta.107",
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.107",
"@ohif/extension-default": "3.12.0-beta.107",
"@ohif/extension-dicom-pdf": "3.12.0-beta.107",
"@ohif/extension-dicom-video": "3.12.0-beta.107",
"@ohif/extension-measurement-tracking": "3.12.0-beta.107",
"@ohif/extension-test": "3.12.0-beta.107",
},
},
"modes/longitudinal": {
"name": "@ohif/mode-longitudinal",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"i18next": "17.3.1",
@ -560,33 +560,33 @@
"webpack-merge": "5.10.0",
},
"peerDependencies": {
"@ohif/core": "3.12.0-beta.105",
"@ohif/extension-cornerstone": "3.12.0-beta.105",
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.105",
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.105",
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.105",
"@ohif/extension-default": "3.12.0-beta.105",
"@ohif/extension-dicom-pdf": "3.12.0-beta.105",
"@ohif/extension-dicom-video": "3.12.0-beta.105",
"@ohif/extension-measurement-tracking": "3.12.0-beta.105",
"@ohif/mode-basic": "3.12.0-beta.105",
"@ohif/core": "3.12.0-beta.107",
"@ohif/extension-cornerstone": "3.12.0-beta.107",
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.107",
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.107",
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.107",
"@ohif/extension-default": "3.12.0-beta.107",
"@ohif/extension-dicom-pdf": "3.12.0-beta.107",
"@ohif/extension-dicom-video": "3.12.0-beta.107",
"@ohif/extension-measurement-tracking": "3.12.0-beta.107",
"@ohif/mode-basic": "3.12.0-beta.107",
},
},
"modes/microscopy": {
"name": "@ohif/mode-microscopy",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"i18next": "17.3.1",
},
"peerDependencies": {
"@ohif/core": "3.12.0-beta.105",
"@ohif/extension-dicom-microscopy": "3.12.0-beta.105",
"@ohif/core": "3.12.0-beta.107",
"@ohif/extension-dicom-microscopy": "3.12.0-beta.107",
},
},
"modes/preclinical-4d": {
"name": "@ohif/mode-preclinical-4d",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
},
@ -605,7 +605,7 @@
},
"modes/segmentation": {
"name": "@ohif/mode-segmentation",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"i18next": "17.3.1",
@ -650,7 +650,7 @@
},
"modes/tmtv": {
"name": "@ohif/mode-tmtv",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"i18next": "17.3.1",
@ -671,14 +671,14 @@
},
"modes/usAnnotation": {
"name": "@ohif/mode-ultrasound-pleura-bline",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/core": "4.14.4",
"@cornerstonejs/tools": "4.14.4",
"@ohif/core": "3.12.0-beta.105",
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.105",
"@ohif/extension-ultrasound-pleura-bline": "3.12.0-beta.105",
"@cornerstonejs/core": "4.14.5",
"@cornerstonejs/tools": "4.14.5",
"@ohif/core": "3.12.0-beta.107",
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.107",
"@ohif/extension-ultrasound-pleura-bline": "3.12.0-beta.107",
"i18next": "17.3.1",
},
"devDependencies": {
@ -710,34 +710,34 @@
},
"platform/app": {
"name": "@ohif/app",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/codec-charls": "1.2.3",
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
"@cornerstonejs/codec-openjpeg": "1.3.0",
"@cornerstonejs/codec-openjph": "2.4.7",
"@cornerstonejs/dicom-image-loader": "4.14.4",
"@cornerstonejs/dicom-image-loader": "4.14.5",
"@emotion/serialize": "1.3.3",
"@ohif/core": "3.12.0-beta.105",
"@ohif/extension-cornerstone": "3.12.0-beta.105",
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.105",
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.105",
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.105",
"@ohif/extension-default": "3.12.0-beta.105",
"@ohif/extension-dicom-microscopy": "3.12.0-beta.105",
"@ohif/extension-dicom-pdf": "3.12.0-beta.105",
"@ohif/extension-dicom-video": "3.12.0-beta.105",
"@ohif/extension-test": "3.12.0-beta.105",
"@ohif/extension-ultrasound-pleura-bline": "3.12.0-beta.105",
"@ohif/i18n": "3.12.0-beta.105",
"@ohif/mode-basic-dev-mode": "3.12.0-beta.105",
"@ohif/mode-longitudinal": "3.12.0-beta.105",
"@ohif/mode-microscopy": "3.12.0-beta.105",
"@ohif/mode-test": "3.12.0-beta.105",
"@ohif/mode-ultrasound-pleura-bline": "3.12.0-beta.105",
"@ohif/ui": "3.12.0-beta.105",
"@ohif/ui-next": "3.12.0-beta.105",
"@ohif/core": "3.12.0-beta.107",
"@ohif/extension-cornerstone": "3.12.0-beta.107",
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.107",
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.107",
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.107",
"@ohif/extension-default": "3.12.0-beta.107",
"@ohif/extension-dicom-microscopy": "3.12.0-beta.107",
"@ohif/extension-dicom-pdf": "3.12.0-beta.107",
"@ohif/extension-dicom-video": "3.12.0-beta.107",
"@ohif/extension-test": "3.12.0-beta.107",
"@ohif/extension-ultrasound-pleura-bline": "3.12.0-beta.107",
"@ohif/i18n": "3.12.0-beta.107",
"@ohif/mode-basic-dev-mode": "3.12.0-beta.107",
"@ohif/mode-longitudinal": "3.12.0-beta.107",
"@ohif/mode-microscopy": "3.12.0-beta.107",
"@ohif/mode-test": "3.12.0-beta.107",
"@ohif/mode-ultrasound-pleura-bline": "3.12.0-beta.107",
"@ohif/ui": "3.12.0-beta.107",
"@ohif/ui-next": "3.12.0-beta.107",
"@svgr/webpack": "8.1.0",
"@types/react": "18.3.23",
"classnames": "2.5.1",
@ -789,7 +789,7 @@
},
"platform/cli": {
"name": "@ohif/cli",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"bin": {
"ohif-cli": "src/index.js",
},
@ -813,7 +813,7 @@
},
"platform/core": {
"name": "@ohif/core",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"dcmjs": "0.45.0",
@ -838,16 +838,16 @@
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
"@cornerstonejs/codec-openjpeg": "1.3.0",
"@cornerstonejs/codec-openjph": "2.4.7",
"@cornerstonejs/core": "4.14.4",
"@cornerstonejs/dicom-image-loader": "4.14.4",
"@ohif/ui": "3.12.0-beta.105",
"@cornerstonejs/core": "4.14.5",
"@cornerstonejs/dicom-image-loader": "4.14.5",
"@ohif/ui": "3.12.0-beta.107",
"cornerstone-math": "0.1.9",
"dicom-parser": "1.8.21",
},
},
"platform/i18n": {
"name": "@ohif/i18n",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@babel/runtime": "7.28.2",
"i18next-locize-backend": "2.2.2",
@ -872,7 +872,7 @@
},
"platform/ui": {
"name": "@ohif/ui",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@testing-library/react": "13.4.0",
"browser-detect": "0.2.28",
@ -923,7 +923,7 @@
},
"platform/ui-next": {
"name": "@ohif/ui-next",
"version": "3.12.0-beta.105",
"version": "3.12.0-beta.107",
"dependencies": {
"@radix-ui/react-accordion": "1.2.11",
"@radix-ui/react-checkbox": "1.3.2",
@ -1231,9 +1231,9 @@
"@bcoe/v8-coverage": ["@bcoe/v8-coverage@0.2.3", "", {}, "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw=="],
"@cornerstonejs/adapters": ["@cornerstonejs/adapters@4.14.4", "", { "dependencies": { "@babel/runtime-corejs2": "7.26.10", "buffer": "6.0.3", "dcmjs": "0.45.0", "gl-matrix": "3.4.3", "ndarray": "1.0.19" }, "peerDependencies": { "@cornerstonejs/core": "4.14.4", "@cornerstonejs/tools": "4.14.4" } }, "sha512-4Xn30/01yjFK7YjiNBB0IOKzdUiD31AM3Yd45zLOsYzRv+UeIQNMWFJQpKOBGetP16Z5sfRJil2T1HOHDFPjJw=="],
"@cornerstonejs/adapters": ["@cornerstonejs/adapters@4.14.5", "", { "dependencies": { "@babel/runtime-corejs2": "7.26.10", "buffer": "6.0.3", "dcmjs": "0.45.0", "gl-matrix": "3.4.3", "ndarray": "1.0.19" }, "peerDependencies": { "@cornerstonejs/core": "4.14.5", "@cornerstonejs/tools": "4.14.5" } }, "sha512-PA1w4RT+2FRoSRo+br2m+evB9MMJwcybgCUP2sLpD2Aj+2ZM/VyoIvraBz5ioUchqirRzwoVwx53YSfcg0RR5Q=="],
"@cornerstonejs/ai": ["@cornerstonejs/ai@4.14.4", "", { "dependencies": { "@babel/runtime-corejs2": "7.26.10", "buffer": "6.0.3", "dcmjs": "0.45.0", "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": "4.14.4", "@cornerstonejs/tools": "4.14.4" } }, "sha512-DyMaElHNeS2KltJzfb0v3Ox0A9ns75Ubh7E9Bs3SKPTFNSGkIyP7ysz05LaJ1D+HkpDFw8Uo9Uadky2na/5sDQ=="],
"@cornerstonejs/ai": ["@cornerstonejs/ai@4.14.5", "", { "dependencies": { "@babel/runtime-corejs2": "7.26.10", "buffer": "6.0.3", "dcmjs": "0.45.0", "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": "4.14.5", "@cornerstonejs/tools": "4.14.5" } }, "sha512-l5fLdtwgU0HqJ12dzO2CJlNqZKAQVSIbt0n70HodrijPLlgph+43JEXyTiDLcl9czHJSA9EJoQ8y+0y3irkCGw=="],
"@cornerstonejs/calculate-suv": ["@cornerstonejs/calculate-suv@1.1.0", "", {}, "sha512-Q9XraiDJif9aMFArD2iEuDO/HXbcRVCqB7KfaHgDrdTTjgDFovS91Psbdim7crypRSvE6dh/+HKeFNHdvNkA6w=="],
@ -1245,15 +1245,15 @@
"@cornerstonejs/codec-openjph": ["@cornerstonejs/codec-openjph@2.4.7", "", {}, "sha512-qvP4q4JDib7mi9r7LqKOwqz7YZ8gjtDX4ZCezeYf8+eb7MBXCz5uXAMeVF3yz9Axw4XiIMdB/pqXkm8tqCl13w=="],
"@cornerstonejs/core": ["@cornerstonejs/core@4.14.4", "", { "dependencies": { "@kitware/vtk.js": "34.15.1", "comlink": "4.4.2", "gl-matrix": "3.4.3", "loglevel": "1.9.2" } }, "sha512-KNd648mwqzNqniRONyp2QkOpi1UMnDtDfUdJRLpbJKVdNzNkDG+nq3uNrWG8+YBWyeunUIB3ydrCHnKmxVs1RQ=="],
"@cornerstonejs/core": ["@cornerstonejs/core@4.14.5", "", { "dependencies": { "@kitware/vtk.js": "34.15.1", "comlink": "4.4.2", "gl-matrix": "3.4.3", "loglevel": "1.9.2" } }, "sha512-GZOQpkbbb1ocZyApF3SB1Nd1zn0f/BgkInuLu/ovCPjjft+sobzomr/sKZP0OA+5hdymjghI+jOZrZNAwgFezw=="],
"@cornerstonejs/dicom-image-loader": ["@cornerstonejs/dicom-image-loader@4.14.4", "", { "dependencies": { "@cornerstonejs/codec-charls": "1.2.3", "@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2", "@cornerstonejs/codec-openjpeg": "1.3.0", "@cornerstonejs/codec-openjph": "2.4.7", "comlink": "4.4.2", "dicom-parser": "1.8.21", "jpeg-lossless-decoder-js": "2.1.2", "pako": "2.1.0", "uuid": "9.0.1" }, "peerDependencies": { "@cornerstonejs/core": "4.14.4" } }, "sha512-cxw1tD2gLBZkiWhty23Pi4PlPzrug33cbwcYcQ4PbcH7/MvLGR5pRVeclpbbDpN6IwLb3D3UNY4+oUx520gQ0w=="],
"@cornerstonejs/dicom-image-loader": ["@cornerstonejs/dicom-image-loader@4.14.5", "", { "dependencies": { "@cornerstonejs/codec-charls": "1.2.3", "@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2", "@cornerstonejs/codec-openjpeg": "1.3.0", "@cornerstonejs/codec-openjph": "2.4.7", "comlink": "4.4.2", "dicom-parser": "1.8.21", "jpeg-lossless-decoder-js": "2.1.2", "pako": "2.1.0", "uuid": "9.0.1" }, "peerDependencies": { "@cornerstonejs/core": "4.14.5" } }, "sha512-fCcAraxsGcfwlwbzK2fznL5bhsAsGRYdugCvlugLQg7cYxXi90djIotRO1KFHmAMQ/SkeywR9BwqrorcCWaLiQ=="],
"@cornerstonejs/labelmap-interpolation": ["@cornerstonejs/labelmap-interpolation@4.14.4", "", { "dependencies": { "@itk-wasm/morphological-contour-interpolation": "1.1.0", "itk-wasm": "1.0.0-b.165" }, "peerDependencies": { "@cornerstonejs/core": "4.14.4", "@cornerstonejs/tools": "4.14.4", "@kitware/vtk.js": "34.15.1" } }, "sha512-0NK136qCyljm4LRiY5tE09VAGIKw1Ei7oFFL6g509exYzc4XgqKi6qfO8dR4m0m6WRFz/o1Na6w+KhO6umUpNw=="],
"@cornerstonejs/labelmap-interpolation": ["@cornerstonejs/labelmap-interpolation@4.14.5", "", { "dependencies": { "@itk-wasm/morphological-contour-interpolation": "1.1.0", "itk-wasm": "1.0.0-b.165" }, "peerDependencies": { "@cornerstonejs/core": "4.14.5", "@cornerstonejs/tools": "4.14.5", "@kitware/vtk.js": "34.15.1" } }, "sha512-P37hUjOn43mCwkIWTX0v+r0gQPTUj+c6efjkz/lqM0qAJ3KIu3EkZa9eGmUyBD9Y0Htxda20TifL8oo/qkveew=="],
"@cornerstonejs/polymorphic-segmentation": ["@cornerstonejs/polymorphic-segmentation@4.14.4", "", { "dependencies": { "@icr/polyseg-wasm": "0.4.0" }, "peerDependencies": { "@cornerstonejs/core": "4.14.4", "@cornerstonejs/tools": "4.14.4", "@kitware/vtk.js": "34.15.1" } }, "sha512-RJBtqair3EX09K5lRgPGkF5qVNLb5ArtvSZCz/TZ52xMmaUww8yKeXbuqawUQwj9iAdQRlyCfrlfhNpwHeYybA=="],
"@cornerstonejs/polymorphic-segmentation": ["@cornerstonejs/polymorphic-segmentation@4.14.5", "", { "dependencies": { "@icr/polyseg-wasm": "0.4.0" }, "peerDependencies": { "@cornerstonejs/core": "4.14.5", "@cornerstonejs/tools": "4.14.5", "@kitware/vtk.js": "34.15.1" } }, "sha512-q5y5+uTW55FSbeG1tQZ3oPbiZqA+H7i6uopGtaXCqcwxXxzDj5SGb6RGh2fdI96osyCpi+g5YSCob31fWUtq2A=="],
"@cornerstonejs/tools": ["@cornerstonejs/tools@4.14.4", "", { "dependencies": { "@types/offscreencanvas": "2019.7.3", "comlink": "4.4.2", "lodash.get": "4.4.2" }, "peerDependencies": { "@cornerstonejs/core": "4.14.4", "@kitware/vtk.js": "34.15.1", "@types/d3-array": "3.2.1", "@types/d3-interpolate": "3.0.4", "d3-array": "3.2.4", "d3-interpolate": "3.0.1", "gl-matrix": "3.4.3" } }, "sha512-Ej4lnOiDgGdUmf8h0P3xpMMbnWbcrUHYjA0tCq1qa3MTBIrfU4dktiRdg5gJJqayfaUwV56DxSHMrx+VLN9N7A=="],
"@cornerstonejs/tools": ["@cornerstonejs/tools@4.14.5", "", { "dependencies": { "@types/offscreencanvas": "2019.7.3", "comlink": "4.4.2", "lodash.get": "4.4.2" }, "peerDependencies": { "@cornerstonejs/core": "4.14.5", "@kitware/vtk.js": "34.15.1", "@types/d3-array": "3.2.1", "@types/d3-interpolate": "3.0.4", "d3-array": "3.2.4", "d3-interpolate": "3.0.1", "gl-matrix": "3.4.3" } }, "sha512-Wcyy8C9UVA3tD6d6xWVpYgYVhrdrys4fa9BfNyqMnkTPMfWwCRU8+DPl7nMtxBvxlqQcX7Z0Cb8mUUBQwNzOHg=="],
"@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="],

View File

@ -46,8 +46,8 @@
},
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/adapters": "4.14.4",
"@cornerstonejs/core": "4.14.4",
"@cornerstonejs/adapters": "4.14.5",
"@cornerstonejs/core": "4.14.5",
"@kitware/vtk.js": "34.15.1",
"react-color": "2.19.3"
}

View File

@ -46,8 +46,8 @@
},
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/adapters": "4.14.4",
"@cornerstonejs/core": "4.14.4",
"@cornerstonejs/adapters": "4.14.5",
"@cornerstonejs/core": "4.14.5",
"@kitware/vtk.js": "34.15.1",
"react-color": "2.19.3"
}

View File

@ -46,9 +46,9 @@
},
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/adapters": "4.14.4",
"@cornerstonejs/core": "4.14.4",
"@cornerstonejs/tools": "4.14.4",
"@cornerstonejs/adapters": "4.14.5",
"@cornerstonejs/core": "4.14.5",
"@cornerstonejs/tools": "4.14.5",
"classnames": "2.5.1"
}
}

View File

@ -42,8 +42,8 @@
},
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/core": "4.14.4",
"@cornerstonejs/tools": "4.14.4",
"@cornerstonejs/core": "4.14.5",
"@cornerstonejs/tools": "4.14.5",
"classnames": "2.5.1"
}
}

View File

@ -40,7 +40,7 @@
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
"@cornerstonejs/codec-openjpeg": "1.3.0",
"@cornerstonejs/codec-openjph": "2.4.7",
"@cornerstonejs/dicom-image-loader": "4.14.4",
"@cornerstonejs/dicom-image-loader": "4.14.5",
"@ohif/core": "3.12.0-beta.109",
"@ohif/ui": "3.12.0-beta.109",
"dcmjs": "0.45.0",
@ -53,12 +53,12 @@
},
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/adapters": "4.14.4",
"@cornerstonejs/ai": "4.14.4",
"@cornerstonejs/core": "4.14.4",
"@cornerstonejs/labelmap-interpolation": "4.14.4",
"@cornerstonejs/polymorphic-segmentation": "4.14.4",
"@cornerstonejs/tools": "4.14.4",
"@cornerstonejs/adapters": "4.14.5",
"@cornerstonejs/ai": "4.14.5",
"@cornerstonejs/core": "4.14.5",
"@cornerstonejs/labelmap-interpolation": "4.14.5",
"@cornerstonejs/polymorphic-segmentation": "4.14.5",
"@cornerstonejs/tools": "4.14.5",
"@itk-wasm/morphological-contour-interpolation": "1.1.0",
"@kitware/vtk.js": "34.15.1",
"html2canvas": "1.4.1",

View File

@ -37,6 +37,7 @@ import { useLutPresentationStore } from '../../stores/useLutPresentationStore';
import { usePositionPresentationStore } from '../../stores/usePositionPresentationStore';
import { useSynchronizersStore } from '../../stores/useSynchronizersStore';
import { useSegmentationPresentationStore } from '../../stores/useSegmentationPresentationStore';
import getClosestOrientationFromIOP from '../../utils/isReferenceViewable';
const EVENTS = {
VIEWPORT_DATA_CHANGED: 'event::cornerstoneViewportService:viewportDataChanged',
@ -634,67 +635,118 @@ class CornerstoneViewportService extends PubSubService implements IViewportServi
/**
* Figures out which viewport to update when the viewport type needs to change.
* This may not be the active viewport if there is already a viewport showing
* the display set, but in the wrong orientation.
*
* The viewport will need to update the viewport type and/or display set to
* display the resulting data.
*
* The first choice will be a viewport already showing the correct display set,
* but showing it as a stack.
*
* Second choice is to see if there is a viewport already showing the right
* orientation for the image, but the wrong display set. This fixes the
* case where the user is in MPR and a viewport other than active should be
* the one to change to display the iamge.
*
* Final choice is to use the provide activeViewportId. This will cover
* changes to/from video and wsi viewports and other cases where no
* viewport is really even close to being able to display the measurement.
* Orchestrates the search strategies in order of preference.
*/
public findUpdateableViewportConfiguration(activeViewportId: string, measurement) {
const { metadata, displaySetInstanceUID } = measurement;
const { volumeId, referencedImageId } = metadata;
const { displaySetService, viewportGridService } = this.servicesManager.services;
const { displaySetService } = this.servicesManager.services;
const displaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
// 1. Determine the target Viewport Type (Stack vs Volume)
const viewportType = this.determineTargetViewportType(displaySet, metadata);
// 2. Strategy: Find viewport already showing this volume
const volumeMatch = this.findViewportShowingVolume(
metadata,
displaySetInstanceUID,
viewportType
);
if (volumeMatch) {
return volumeMatch;
}
// 3. Strategy: Find viewport with compatible orientation (even if different display set)
const compatibleMatch = this.findViewportConvertibleToVolume(
metadata,
displaySetInstanceUID,
viewportType
);
if (compatibleMatch) {
return compatibleMatch;
}
// 4. Strategy: Find viewport with matching orientation via IOP
const orientationMatch = this.findViewportWithMatchingOrientation(
displaySetInstanceUID,
viewportType
);
if (orientationMatch) {
return orientationMatch;
}
// 5. Fallback: Use the active viewport
return {
viewportId: activeViewportId,
displaySetInstanceUID,
viewportOptions: { viewportType },
};
}
/**
* Determines if the viewport should be what is specified in
* the viewportType of the display set, or stack if the display
* set isn't reconstructable and there is a referenced image id, otherwise
* volume.
*
* Expect there to be more rules in the future for different types of annotations/settings
* such as 3d annotations.
*/
public determineTargetViewportType(displaySet, metadata): string {
let { viewportType } = displaySet;
if (!viewportType) {
if (referencedImageId && !displaySet.isReconstructable) {
if (metadata.referencedImageId && !displaySet.isReconstructable) {
viewportType = csEnums.ViewportType.STACK;
} else if (volumeId) {
} else if (metadata.volumeId) {
viewportType = 'volume';
}
}
return viewportType;
}
// Find viewports that could be updated to be volumes to show this view
// That prefers a viewport already showing the right display set.
if (volumeId) {
for (const id of this.viewportsById.keys()) {
const viewport = this.getCornerstoneViewport(id);
if (viewport?.isReferenceViewable(metadata, { asVolume: true, withNavigation: true })) {
return {
viewportId: id,
displaySetInstanceUID,
viewportOptions: { viewportType },
};
}
}
/**
* Find viewports that could be updated to be volumes to show this view.
* Prefers a viewport already showing the right display set.
*/
public findViewportShowingVolume(metadata, displaySetInstanceUID, viewportType) {
if (!metadata.volumeId) {
return null;
}
// Find a viewport in the correct orientation showing a different display set
// which could be used to display the annotation.
for (const id of this.viewportsById.keys()) {
const viewport = this.getCornerstoneViewport(id);
if (viewport?.isReferenceViewable(metadata, { asVolume: true, withNavigation: true })) {
return {
viewportId: id,
displaySetInstanceUID,
viewportOptions: { viewportType },
};
}
}
return null;
}
/**
* Find a viewport that could be converted to a volume to show this annotation,
* already showing the right display set.
*/
public findViewportConvertibleToVolume(metadata, displaySetInstanceUID, viewportType) {
const { viewportGridService } = this.servicesManager.services;
const altMetadata = { ...metadata, volumeId: null, referencedImageId: null };
for (const id of this.viewportsById.keys()) {
const viewport = this.getCornerstoneViewport(id);
const viewportDisplaySetUID = viewportGridService.getDisplaySetsUIDsForViewport(id)?.[0];
if (!viewportDisplaySetUID || !viewport) {
continue;
}
if (volumeId) {
if (metadata.volumeId) {
altMetadata.volumeId = viewportDisplaySetUID;
}
altMetadata.FrameOfReferenceUID = this._getFrameOfReferenceUID(viewportDisplaySetUID);
if (viewport.isReferenceViewable(altMetadata, { asVolume: true, withNavigation: true })) {
return {
viewportId: id,
@ -703,13 +755,22 @@ class CornerstoneViewportService extends PubSubService implements IViewportServi
};
}
}
return null;
}
// Just display in the active viewport
return {
viewportId: activeViewportId,
displaySetInstanceUID,
viewportOptions: { viewportType },
};
/**
* Find a viewport with the closest orientation but on a different display set.
*/
public findViewportWithMatchingOrientation(metadata, displaySetInstanceUID, viewportType) {
const viewportAlignmentData = this.getViewportAlignmentData(metadata);
if (viewportAlignmentData?.length) {
return {
...viewportAlignmentData[0],
displaySetInstanceUID,
viewportOptions: { viewportType },
};
}
return null;
}
/**

View File

@ -32,8 +32,8 @@
"start": "yarn run dev"
},
"peerDependencies": {
"@cornerstonejs/core": "4.14.4",
"@cornerstonejs/tools": "4.14.4",
"@cornerstonejs/core": "4.14.5",
"@cornerstonejs/tools": "4.14.5",
"@ohif/core": "3.12.0-beta.109",
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.109",
"@ohif/extension-default": "3.12.0-beta.109",

View File

@ -42,8 +42,8 @@
},
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/core": "4.14.4",
"@cornerstonejs/tools": "4.14.4",
"@cornerstonejs/core": "4.14.5",
"@cornerstonejs/tools": "4.14.5",
"@ohif/core": "3.12.0-beta.109",
"@ohif/extension-cornerstone": "3.12.0-beta.109",
"@ohif/extension-default": "3.12.0-beta.109",

View File

@ -34,8 +34,8 @@
},
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/core": "4.14.4",
"@cornerstonejs/tools": "4.14.4",
"@cornerstonejs/core": "4.14.5",
"@cornerstonejs/tools": "4.14.5",
"@ohif/core": "3.12.0-beta.109",
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.109",
"@ohif/extension-ultrasound-pleura-bline": "3.12.0-beta.109",

View File

@ -53,7 +53,7 @@
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
"@cornerstonejs/codec-openjpeg": "1.3.0",
"@cornerstonejs/codec-openjph": "2.4.7",
"@cornerstonejs/dicom-image-loader": "4.14.4",
"@cornerstonejs/dicom-image-loader": "4.14.5",
"@emotion/serialize": "1.3.3",
"@ohif/core": "3.12.0-beta.109",
"@ohif/extension-cornerstone": "3.12.0-beta.109",

View File

@ -37,8 +37,8 @@
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
"@cornerstonejs/codec-openjpeg": "1.3.0",
"@cornerstonejs/codec-openjph": "2.4.7",
"@cornerstonejs/core": "4.14.4",
"@cornerstonejs/dicom-image-loader": "4.14.4",
"@cornerstonejs/core": "4.14.5",
"@cornerstonejs/dicom-image-loader": "4.14.5",
"@ohif/ui": "3.12.0-beta.109",
"cornerstone-math": "0.1.9",
"dicom-parser": "1.8.21"

View File

@ -1278,10 +1278,10 @@
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
"@cornerstonejs/adapters@4.14.4":
version "4.14.4"
resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-4.14.4.tgz#ee7084f9da5acdae8a27c7f29276a4159e15de76"
integrity sha512-4Xn30/01yjFK7YjiNBB0IOKzdUiD31AM3Yd45zLOsYzRv+UeIQNMWFJQpKOBGetP16Z5sfRJil2T1HOHDFPjJw==
"@cornerstonejs/adapters@4.14.5":
version "4.14.5"
resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-4.14.5.tgz#3f473bafc663add7cc4ba5c3e93a221454340f9b"
integrity sha512-PA1w4RT+2FRoSRo+br2m+evB9MMJwcybgCUP2sLpD2Aj+2ZM/VyoIvraBz5ioUchqirRzwoVwx53YSfcg0RR5Q==
dependencies:
"@babel/runtime-corejs2" "7.26.10"
buffer "6.0.3"
@ -1289,10 +1289,10 @@
gl-matrix "3.4.3"
ndarray "1.0.19"
"@cornerstonejs/ai@4.14.4":
version "4.14.4"
resolved "https://registry.yarnpkg.com/@cornerstonejs/ai/-/ai-4.14.4.tgz#a55a2a36f0067da1f402443db8f53d4f09d57f3b"
integrity sha512-DyMaElHNeS2KltJzfb0v3Ox0A9ns75Ubh7E9Bs3SKPTFNSGkIyP7ysz05LaJ1D+HkpDFw8Uo9Uadky2na/5sDQ==
"@cornerstonejs/ai@4.14.5":
version "4.14.5"
resolved "https://registry.yarnpkg.com/@cornerstonejs/ai/-/ai-4.14.5.tgz#97385d959ce802d15cae604be75d98819abd3c19"
integrity sha512-l5fLdtwgU0HqJ12dzO2CJlNqZKAQVSIbt0n70HodrijPLlgph+43JEXyTiDLcl9czHJSA9EJoQ8y+0y3irkCGw==
dependencies:
"@babel/runtime-corejs2" "7.26.10"
buffer "6.0.3"
@ -1328,20 +1328,20 @@
resolved "https://registry.yarnpkg.com/@cornerstonejs/codec-openjph/-/codec-openjph-2.4.7.tgz#784394d05d8cf735640e9c3baa206535ee8e0376"
integrity sha512-qvP4q4JDib7mi9r7LqKOwqz7YZ8gjtDX4ZCezeYf8+eb7MBXCz5uXAMeVF3yz9Axw4XiIMdB/pqXkm8tqCl13w==
"@cornerstonejs/core@4.14.4":
version "4.14.4"
resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-4.14.4.tgz#08c2b50c45f22698e052244a682a43f0e1c5c244"
integrity sha512-KNd648mwqzNqniRONyp2QkOpi1UMnDtDfUdJRLpbJKVdNzNkDG+nq3uNrWG8+YBWyeunUIB3ydrCHnKmxVs1RQ==
"@cornerstonejs/core@4.14.5":
version "4.14.5"
resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-4.14.5.tgz#8fd74a8851ca369ad2beeab542d27007e2a05b6d"
integrity sha512-GZOQpkbbb1ocZyApF3SB1Nd1zn0f/BgkInuLu/ovCPjjft+sobzomr/sKZP0OA+5hdymjghI+jOZrZNAwgFezw==
dependencies:
"@kitware/vtk.js" "34.15.1"
comlink "4.4.2"
gl-matrix "3.4.3"
loglevel "1.9.2"
"@cornerstonejs/dicom-image-loader@4.14.4":
version "4.14.4"
resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-4.14.4.tgz#f3df2ea31a8b527de47bce445f543609fb56af0c"
integrity sha512-cxw1tD2gLBZkiWhty23Pi4PlPzrug33cbwcYcQ4PbcH7/MvLGR5pRVeclpbbDpN6IwLb3D3UNY4+oUx520gQ0w==
"@cornerstonejs/dicom-image-loader@4.14.5":
version "4.14.5"
resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-4.14.5.tgz#f2ffa77f57819091a2ee1dbd4507de017cb336dc"
integrity sha512-fCcAraxsGcfwlwbzK2fznL5bhsAsGRYdugCvlugLQg7cYxXi90djIotRO1KFHmAMQ/SkeywR9BwqrorcCWaLiQ==
dependencies:
"@cornerstonejs/codec-charls" "1.2.3"
"@cornerstonejs/codec-libjpeg-turbo-8bit" "1.2.2"
@ -1353,25 +1353,25 @@
pako "2.1.0"
uuid "9.0.1"
"@cornerstonejs/labelmap-interpolation@4.14.4":
version "4.14.4"
resolved "https://registry.yarnpkg.com/@cornerstonejs/labelmap-interpolation/-/labelmap-interpolation-4.14.4.tgz#aa24b44fe450905145c27045b27be3b0eb9b975b"
integrity sha512-0NK136qCyljm4LRiY5tE09VAGIKw1Ei7oFFL6g509exYzc4XgqKi6qfO8dR4m0m6WRFz/o1Na6w+KhO6umUpNw==
"@cornerstonejs/labelmap-interpolation@4.14.5":
version "4.14.5"
resolved "https://registry.yarnpkg.com/@cornerstonejs/labelmap-interpolation/-/labelmap-interpolation-4.14.5.tgz#d1c4bcaf6d43be3d4557d782f2c419acaadac167"
integrity sha512-P37hUjOn43mCwkIWTX0v+r0gQPTUj+c6efjkz/lqM0qAJ3KIu3EkZa9eGmUyBD9Y0Htxda20TifL8oo/qkveew==
dependencies:
"@itk-wasm/morphological-contour-interpolation" "1.1.0"
itk-wasm "1.0.0-b.165"
"@cornerstonejs/polymorphic-segmentation@4.14.4":
version "4.14.4"
resolved "https://registry.yarnpkg.com/@cornerstonejs/polymorphic-segmentation/-/polymorphic-segmentation-4.14.4.tgz#a0aa1d45b44b4932fc8b4e974e7d8a66b40a53cd"
integrity sha512-RJBtqair3EX09K5lRgPGkF5qVNLb5ArtvSZCz/TZ52xMmaUww8yKeXbuqawUQwj9iAdQRlyCfrlfhNpwHeYybA==
"@cornerstonejs/polymorphic-segmentation@4.14.5":
version "4.14.5"
resolved "https://registry.yarnpkg.com/@cornerstonejs/polymorphic-segmentation/-/polymorphic-segmentation-4.14.5.tgz#20dafd9c37f3cf7b7cd81c29c9ac3e4de403a86c"
integrity sha512-q5y5+uTW55FSbeG1tQZ3oPbiZqA+H7i6uopGtaXCqcwxXxzDj5SGb6RGh2fdI96osyCpi+g5YSCob31fWUtq2A==
dependencies:
"@icr/polyseg-wasm" "0.4.0"
"@cornerstonejs/tools@4.14.4":
version "4.14.4"
resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-4.14.4.tgz#eb353f96e472dc264de2229fd56bc5725496da38"
integrity sha512-Ej4lnOiDgGdUmf8h0P3xpMMbnWbcrUHYjA0tCq1qa3MTBIrfU4dktiRdg5gJJqayfaUwV56DxSHMrx+VLN9N7A==
"@cornerstonejs/tools@4.14.5":
version "4.14.5"
resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-4.14.5.tgz#813a3a110ad7098d5fee770242fbc4d6601e16a4"
integrity sha512-Wcyy8C9UVA3tD6d6xWVpYgYVhrdrys4fa9BfNyqMnkTPMfWwCRU8+DPl7nMtxBvxlqQcX7Z0Cb8mUUBQwNzOHg==
dependencies:
"@types/offscreencanvas" "2019.7.3"
comlink "4.4.2"