test( zoomIn-tool): verify horizontal flip is preserved in magnified view (#5983)

This commit is contained in:
Ghadeer Albattarni 2026-04-29 10:32:27 -04:00 committed by GitHub
parent 03860030bd
commit 62620afb9b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
20 changed files with 384 additions and 220 deletions

330
bun.lock
View File

@ -50,7 +50,7 @@
},
"addOns/externals/devDependencies": {
"name": "@externals/devDependencies",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"@kitware/vtk.js": "34.15.1",
@ -131,22 +131,22 @@
},
"addOns/externals/dicom-microscopy-viewer": {
"name": "@externals/dicom-microscopy-viewer",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"dicom-microscopy-viewer": "0.48.17",
},
},
"extensions/cornerstone": {
"name": "@ohif/extension-cornerstone",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/adapters": "4.21.7",
"@cornerstonejs/ai": "4.21.7",
"@cornerstonejs/core": "4.21.7",
"@cornerstonejs/labelmap-interpolation": "4.21.7",
"@cornerstonejs/polymorphic-segmentation": "4.21.7",
"@cornerstonejs/tools": "4.21.7",
"@cornerstonejs/adapters": "4.22.3",
"@cornerstonejs/ai": "4.22.3",
"@cornerstonejs/core": "4.22.3",
"@cornerstonejs/labelmap-interpolation": "4.22.3",
"@cornerstonejs/polymorphic-segmentation": "4.22.3",
"@cornerstonejs/tools": "4.22.3",
"@icr/polyseg-wasm": "0.4.0",
"@itk-wasm/morphological-contour-interpolation": "1.1.0",
"@kitware/vtk.js": "34.15.1",
@ -164,9 +164,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.21.7",
"@ohif/core": "3.13.0-beta.61",
"@ohif/ui": "3.13.0-beta.61",
"@cornerstonejs/dicom-image-loader": "4.22.3",
"@ohif/core": "3.13.0-beta.64",
"@ohif/ui": "3.13.0-beta.64",
"dcmjs": "0.49.4",
"dicom-parser": "1.8.21",
"hammerjs": "2.0.8",
@ -178,18 +178,18 @@
},
"extensions/cornerstone-dicom-pmap": {
"name": "@ohif/extension-cornerstone-dicom-pmap",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/adapters": "4.21.7",
"@cornerstonejs/core": "4.21.7",
"@cornerstonejs/adapters": "4.22.3",
"@cornerstonejs/core": "4.22.3",
"@kitware/vtk.js": "34.15.1",
},
"peerDependencies": {
"@ohif/core": "3.13.0-beta.61",
"@ohif/extension-cornerstone": "3.13.0-beta.61",
"@ohif/extension-default": "3.13.0-beta.61",
"@ohif/i18n": "3.13.0-beta.61",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-cornerstone": "3.13.0-beta.64",
"@ohif/extension-default": "3.13.0-beta.64",
"@ohif/i18n": "3.13.0-beta.64",
"prop-types": "15.8.1",
"react": "18.3.1",
"react-dom": "18.3.1",
@ -200,15 +200,15 @@
},
"extensions/cornerstone-dicom-rt": {
"name": "@ohif/extension-cornerstone-dicom-rt",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
},
"peerDependencies": {
"@ohif/core": "3.13.0-beta.61",
"@ohif/extension-cornerstone": "3.13.0-beta.61",
"@ohif/extension-default": "3.13.0-beta.61",
"@ohif/i18n": "3.13.0-beta.61",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-cornerstone": "3.13.0-beta.64",
"@ohif/extension-default": "3.13.0-beta.64",
"@ohif/i18n": "3.13.0-beta.64",
"prop-types": "15.8.1",
"react": "18.3.1",
"react-dom": "18.3.1",
@ -219,18 +219,18 @@
},
"extensions/cornerstone-dicom-seg": {
"name": "@ohif/extension-cornerstone-dicom-seg",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/adapters": "4.21.7",
"@cornerstonejs/core": "4.21.7",
"@cornerstonejs/adapters": "4.22.3",
"@cornerstonejs/core": "4.22.3",
"@kitware/vtk.js": "34.15.1",
},
"peerDependencies": {
"@ohif/core": "3.13.0-beta.61",
"@ohif/extension-cornerstone": "3.13.0-beta.61",
"@ohif/extension-default": "3.13.0-beta.61",
"@ohif/i18n": "3.13.0-beta.61",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-cornerstone": "3.13.0-beta.64",
"@ohif/extension-default": "3.13.0-beta.64",
"@ohif/i18n": "3.13.0-beta.64",
"prop-types": "15.8.1",
"react": "18.3.1",
"react-dom": "18.3.1",
@ -241,19 +241,19 @@
},
"extensions/cornerstone-dicom-sr": {
"name": "@ohif/extension-cornerstone-dicom-sr",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/adapters": "4.21.7",
"@cornerstonejs/core": "4.21.7",
"@cornerstonejs/tools": "4.21.7",
"@cornerstonejs/adapters": "4.22.3",
"@cornerstonejs/core": "4.22.3",
"@cornerstonejs/tools": "4.22.3",
"classnames": "2.5.1",
},
"peerDependencies": {
"@ohif/core": "3.13.0-beta.61",
"@ohif/extension-cornerstone": "3.13.0-beta.61",
"@ohif/extension-measurement-tracking": "3.13.0-beta.61",
"@ohif/ui": "3.13.0-beta.61",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-cornerstone": "3.13.0-beta.64",
"@ohif/extension-measurement-tracking": "3.13.0-beta.64",
"@ohif/ui": "3.13.0-beta.64",
"dcmjs": "0.49.4",
"dicom-parser": "1.8.21",
"hammerjs": "2.0.8",
@ -263,19 +263,19 @@
},
"extensions/cornerstone-dynamic-volume": {
"name": "@ohif/extension-cornerstone-dynamic-volume",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/core": "4.21.7",
"@cornerstonejs/tools": "4.21.7",
"@cornerstonejs/core": "4.22.3",
"@cornerstonejs/tools": "4.22.3",
"classnames": "2.5.1",
},
"peerDependencies": {
"@ohif/core": "3.13.0-beta.61",
"@ohif/extension-cornerstone": "3.13.0-beta.61",
"@ohif/extension-default": "3.13.0-beta.61",
"@ohif/i18n": "3.13.0-beta.61",
"@ohif/ui": "3.13.0-beta.61",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-cornerstone": "3.13.0-beta.64",
"@ohif/extension-default": "3.13.0-beta.64",
"@ohif/i18n": "3.13.0-beta.64",
"@ohif/ui": "3.13.0-beta.64",
"dcmjs": "0.49.4",
"dicom-parser": "1.8.21",
"hammerjs": "2.0.8",
@ -285,7 +285,7 @@
},
"extensions/default": {
"name": "@ohif/extension-default",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/calculate-suv": "1.1.0",
@ -294,8 +294,8 @@
"react-color": "2.19.3",
},
"peerDependencies": {
"@ohif/core": "3.13.0-beta.61",
"@ohif/i18n": "3.13.0-beta.61",
"@ohif/core": "3.13.0-beta.64",
"@ohif/i18n": "3.13.0-beta.64",
"dcmjs": "0.49.4",
"dicomweb-client": "0.10.4",
"prop-types": "15.8.1",
@ -309,7 +309,7 @@
},
"extensions/dicom-microscopy": {
"name": "@ohif/extension-dicom-microscopy",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/codec-charls": "1.2.3",
@ -320,10 +320,10 @@
"mathjs": "12.4.3",
},
"peerDependencies": {
"@ohif/core": "3.13.0-beta.61",
"@ohif/extension-default": "3.13.0-beta.61",
"@ohif/i18n": "3.13.0-beta.61",
"@ohif/ui": "3.13.0-beta.61",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-default": "3.13.0-beta.64",
"@ohif/i18n": "3.13.0-beta.64",
"@ohif/ui": "3.13.0-beta.64",
"prop-types": "15.8.1",
"react": "18.3.1",
"react-dom": "18.3.1",
@ -334,14 +334,14 @@
},
"extensions/dicom-pdf": {
"name": "@ohif/extension-dicom-pdf",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"classnames": "2.5.1",
},
"peerDependencies": {
"@ohif/core": "3.13.0-beta.61",
"@ohif/ui": "3.13.0-beta.61",
"@ohif/core": "3.13.0-beta.64",
"@ohif/ui": "3.13.0-beta.64",
"dcmjs": "0.49.4",
"dicom-parser": "1.8.21",
"hammerjs": "2.0.8",
@ -351,14 +351,14 @@
},
"extensions/dicom-video": {
"name": "@ohif/extension-dicom-video",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"classnames": "2.5.1",
},
"peerDependencies": {
"@ohif/core": "3.13.0-beta.61",
"@ohif/ui": "3.13.0-beta.61",
"@ohif/core": "3.13.0-beta.64",
"@ohif/ui": "3.13.0-beta.64",
"dcmjs": "0.49.4",
"dicom-parser": "1.8.21",
"hammerjs": "2.0.8",
@ -368,20 +368,20 @@
},
"extensions/measurement-tracking": {
"name": "@ohif/extension-measurement-tracking",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"@ohif/ui": "3.13.0-beta.61",
"@ohif/ui": "3.13.0-beta.64",
"@xstate/react": "3.2.2",
"xstate": "4.38.3",
},
"peerDependencies": {
"@cornerstonejs/core": "4.21.7",
"@cornerstonejs/tools": "4.21.7",
"@ohif/core": "3.13.0-beta.61",
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.61",
"@ohif/extension-default": "3.13.0-beta.61",
"@ohif/ui": "3.13.0-beta.61",
"@cornerstonejs/core": "4.22.3",
"@cornerstonejs/tools": "4.22.3",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.64",
"@ohif/extension-default": "3.13.0-beta.64",
"@ohif/ui": "3.13.0-beta.64",
"classnames": "2.5.1",
"dcmjs": "0.49.4",
"lodash.debounce": "4.0.8",
@ -394,14 +394,14 @@
},
"extensions/test-extension": {
"name": "@ohif/extension-test",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"classnames": "2.5.1",
},
"peerDependencies": {
"@ohif/core": "3.13.0-beta.61",
"@ohif/ui": "3.13.0-beta.61",
"@ohif/core": "3.13.0-beta.64",
"@ohif/ui": "3.13.0-beta.64",
"dcmjs": "0.49.4",
"dicom-parser": "1.8.21",
"hammerjs": "2.0.8",
@ -411,7 +411,7 @@
},
"extensions/tmtv": {
"name": "@ohif/extension-tmtv",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"classnames": "2.5.1",
@ -428,16 +428,16 @@
},
"extensions/usAnnotation": {
"name": "@ohif/extension-ultrasound-pleura-bline",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/core": "4.21.7",
"@cornerstonejs/tools": "4.21.7",
"@ohif/core": "3.13.0-beta.61",
"@ohif/extension-cornerstone": "3.13.0-beta.61",
"@ohif/extension-default": "3.13.0-beta.61",
"@ohif/i18n": "3.13.0-beta.61",
"@ohif/ui-next": "3.13.0-beta.61",
"@cornerstonejs/core": "4.22.3",
"@cornerstonejs/tools": "4.22.3",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-cornerstone": "3.13.0-beta.64",
"@ohif/extension-default": "3.13.0-beta.64",
"@ohif/i18n": "3.13.0-beta.64",
"@ohif/ui-next": "3.13.0-beta.64",
},
"devDependencies": {
"@babel/core": "7.28.0",
@ -476,7 +476,7 @@
},
"modes/basic": {
"name": "@ohif/mode-basic",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
},
@ -485,19 +485,19 @@
"webpack-merge": "5.10.0",
},
"peerDependencies": {
"@ohif/core": "3.13.0-beta.61",
"@ohif/extension-cornerstone": "3.13.0-beta.61",
"@ohif/extension-cornerstone-dicom-rt": "3.13.0-beta.61",
"@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.61",
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.61",
"@ohif/extension-default": "3.13.0-beta.61",
"@ohif/extension-dicom-pdf": "3.13.0-beta.61",
"@ohif/extension-dicom-video": "3.13.0-beta.61",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-cornerstone": "3.13.0-beta.64",
"@ohif/extension-cornerstone-dicom-rt": "3.13.0-beta.64",
"@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.64",
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.64",
"@ohif/extension-default": "3.13.0-beta.64",
"@ohif/extension-dicom-pdf": "3.13.0-beta.64",
"@ohif/extension-dicom-video": "3.13.0-beta.64",
},
},
"modes/basic-dev-mode": {
"name": "@ohif/mode-basic-dev-mode",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"i18next": "17.3.1",
@ -507,17 +507,17 @@
"webpack-merge": "5.10.0",
},
"peerDependencies": {
"@ohif/core": "3.13.0-beta.61",
"@ohif/extension-cornerstone": "3.13.0-beta.61",
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.61",
"@ohif/extension-default": "3.13.0-beta.61",
"@ohif/extension-dicom-pdf": "3.13.0-beta.61",
"@ohif/extension-dicom-video": "3.13.0-beta.61",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-cornerstone": "3.13.0-beta.64",
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.64",
"@ohif/extension-default": "3.13.0-beta.64",
"@ohif/extension-dicom-pdf": "3.13.0-beta.64",
"@ohif/extension-dicom-video": "3.13.0-beta.64",
},
},
"modes/basic-test-mode": {
"name": "@ohif/mode-test",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"i18next": "17.3.1",
@ -527,19 +527,19 @@
"webpack-merge": "5.10.0",
},
"peerDependencies": {
"@ohif/core": "3.13.0-beta.61",
"@ohif/extension-cornerstone": "3.13.0-beta.61",
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.61",
"@ohif/extension-default": "3.13.0-beta.61",
"@ohif/extension-dicom-pdf": "3.13.0-beta.61",
"@ohif/extension-dicom-video": "3.13.0-beta.61",
"@ohif/extension-measurement-tracking": "3.13.0-beta.61",
"@ohif/extension-test": "3.13.0-beta.61",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-cornerstone": "3.13.0-beta.64",
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.64",
"@ohif/extension-default": "3.13.0-beta.64",
"@ohif/extension-dicom-pdf": "3.13.0-beta.64",
"@ohif/extension-dicom-video": "3.13.0-beta.64",
"@ohif/extension-measurement-tracking": "3.13.0-beta.64",
"@ohif/extension-test": "3.13.0-beta.64",
},
},
"modes/longitudinal": {
"name": "@ohif/mode-longitudinal",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"i18next": "17.3.1",
@ -549,33 +549,33 @@
"webpack-merge": "5.10.0",
},
"peerDependencies": {
"@ohif/core": "3.13.0-beta.61",
"@ohif/extension-cornerstone": "3.13.0-beta.61",
"@ohif/extension-cornerstone-dicom-rt": "3.13.0-beta.61",
"@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.61",
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.61",
"@ohif/extension-default": "3.13.0-beta.61",
"@ohif/extension-dicom-pdf": "3.13.0-beta.61",
"@ohif/extension-dicom-video": "3.13.0-beta.61",
"@ohif/extension-measurement-tracking": "3.13.0-beta.61",
"@ohif/mode-basic": "3.13.0-beta.61",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-cornerstone": "3.13.0-beta.64",
"@ohif/extension-cornerstone-dicom-rt": "3.13.0-beta.64",
"@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.64",
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.64",
"@ohif/extension-default": "3.13.0-beta.64",
"@ohif/extension-dicom-pdf": "3.13.0-beta.64",
"@ohif/extension-dicom-video": "3.13.0-beta.64",
"@ohif/extension-measurement-tracking": "3.13.0-beta.64",
"@ohif/mode-basic": "3.13.0-beta.64",
},
},
"modes/microscopy": {
"name": "@ohif/mode-microscopy",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"i18next": "17.3.1",
},
"peerDependencies": {
"@ohif/core": "3.13.0-beta.61",
"@ohif/extension-dicom-microscopy": "3.13.0-beta.61",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-dicom-microscopy": "3.13.0-beta.64",
},
},
"modes/preclinical-4d": {
"name": "@ohif/mode-preclinical-4d",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
},
@ -594,7 +594,7 @@
},
"modes/segmentation": {
"name": "@ohif/mode-segmentation",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"i18next": "17.3.1",
@ -636,7 +636,7 @@
},
"modes/tmtv": {
"name": "@ohif/mode-tmtv",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"i18next": "17.3.1",
@ -657,14 +657,14 @@
},
"modes/usAnnotation": {
"name": "@ohif/mode-ultrasound-pleura-bline",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/core": "4.21.7",
"@cornerstonejs/tools": "4.21.7",
"@ohif/core": "3.13.0-beta.61",
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.61",
"@ohif/extension-ultrasound-pleura-bline": "3.13.0-beta.61",
"@cornerstonejs/core": "4.22.3",
"@cornerstonejs/tools": "4.22.3",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.64",
"@ohif/extension-ultrasound-pleura-bline": "3.13.0-beta.64",
"i18next": "17.3.1",
},
"devDependencies": {
@ -693,34 +693,34 @@
},
"platform/app": {
"name": "@ohif/app",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"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.21.7",
"@cornerstonejs/dicom-image-loader": "4.22.3",
"@emotion/serialize": "1.3.3",
"@ohif/core": "3.13.0-beta.61",
"@ohif/extension-cornerstone": "3.13.0-beta.61",
"@ohif/extension-cornerstone-dicom-rt": "3.13.0-beta.61",
"@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.61",
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.61",
"@ohif/extension-default": "3.13.0-beta.61",
"@ohif/extension-dicom-microscopy": "3.13.0-beta.61",
"@ohif/extension-dicom-pdf": "3.13.0-beta.61",
"@ohif/extension-dicom-video": "3.13.0-beta.61",
"@ohif/extension-test": "3.13.0-beta.61",
"@ohif/extension-ultrasound-pleura-bline": "3.13.0-beta.61",
"@ohif/i18n": "3.13.0-beta.61",
"@ohif/mode-basic-dev-mode": "3.13.0-beta.61",
"@ohif/mode-longitudinal": "3.13.0-beta.61",
"@ohif/mode-microscopy": "3.13.0-beta.61",
"@ohif/mode-test": "3.13.0-beta.61",
"@ohif/mode-ultrasound-pleura-bline": "3.13.0-beta.61",
"@ohif/ui": "3.13.0-beta.61",
"@ohif/ui-next": "3.13.0-beta.61",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-cornerstone": "3.13.0-beta.64",
"@ohif/extension-cornerstone-dicom-rt": "3.13.0-beta.64",
"@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.64",
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.64",
"@ohif/extension-default": "3.13.0-beta.64",
"@ohif/extension-dicom-microscopy": "3.13.0-beta.64",
"@ohif/extension-dicom-pdf": "3.13.0-beta.64",
"@ohif/extension-dicom-video": "3.13.0-beta.64",
"@ohif/extension-test": "3.13.0-beta.64",
"@ohif/extension-ultrasound-pleura-bline": "3.13.0-beta.64",
"@ohif/i18n": "3.13.0-beta.64",
"@ohif/mode-basic-dev-mode": "3.13.0-beta.64",
"@ohif/mode-longitudinal": "3.13.0-beta.64",
"@ohif/mode-microscopy": "3.13.0-beta.64",
"@ohif/mode-test": "3.13.0-beta.64",
"@ohif/mode-ultrasound-pleura-bline": "3.13.0-beta.64",
"@ohif/ui": "3.13.0-beta.64",
"@ohif/ui-next": "3.13.0-beta.64",
"@svgr/webpack": "8.1.0",
"@types/react": "18.3.23",
"classnames": "2.5.1",
@ -772,7 +772,7 @@
},
"platform/cli": {
"name": "@ohif/cli",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"bin": {
"ohif-cli": "src/index.js",
},
@ -796,7 +796,7 @@
},
"platform/core": {
"name": "@ohif/core",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"dcmjs": "0.49.4",
@ -821,16 +821,16 @@
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
"@cornerstonejs/codec-openjpeg": "1.3.0",
"@cornerstonejs/codec-openjph": "2.4.7",
"@cornerstonejs/core": "4.21.7",
"@cornerstonejs/dicom-image-loader": "4.21.7",
"@ohif/ui": "3.13.0-beta.61",
"@cornerstonejs/core": "4.22.3",
"@cornerstonejs/dicom-image-loader": "4.22.3",
"@ohif/ui": "3.13.0-beta.64",
"cornerstone-math": "0.1.10",
"dicom-parser": "1.8.21",
},
},
"platform/i18n": {
"name": "@ohif/i18n",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@babel/runtime": "7.28.2",
"i18next-locize-backend": "2.2.2",
@ -855,7 +855,7 @@
},
"platform/ui": {
"name": "@ohif/ui",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@testing-library/react": "13.4.0",
"browser-detect": "0.2.28",
@ -905,7 +905,7 @@
},
"platform/ui-next": {
"name": "@ohif/ui-next",
"version": "3.13.0-beta.61",
"version": "3.13.0-beta.64",
"dependencies": {
"@radix-ui/react-accordion": "1.2.11",
"@radix-ui/react-checkbox": "1.3.2",
@ -1242,9 +1242,9 @@
"@bcoe/v8-coverage": ["@bcoe/v8-coverage@0.2.3", "", {}, "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw=="],
"@cornerstonejs/adapters": ["@cornerstonejs/adapters@4.21.7", "", { "dependencies": { "@babel/runtime-corejs2": "7.26.10", "buffer": "6.0.3", "dcmjs": "0.49.4", "gl-matrix": "3.4.3", "ndarray": "1.0.19" }, "peerDependencies": { "@cornerstonejs/core": "4.21.7", "@cornerstonejs/tools": "4.21.7" } }, "sha512-a9lGNlcLuuk81c8H2F4rotrMxTf9EGursSVIdz7n0cQ8nJmebSZTmp5FWGLDadRxh9pIxMeC52JTcDVd3JR9MQ=="],
"@cornerstonejs/adapters": ["@cornerstonejs/adapters@4.22.3", "", { "dependencies": { "@babel/runtime-corejs2": "7.26.10", "buffer": "6.0.3", "dcmjs": "0.49.4", "gl-matrix": "3.4.3", "ndarray": "1.0.19" }, "peerDependencies": { "@cornerstonejs/core": "4.22.3", "@cornerstonejs/tools": "4.22.3" } }, "sha512-58TaTUl7AmLARnKApfz9c5IWzIaPPewH8sjD0BxKu5PeVHSRSlKX7jH4pv1akapIbDqXBEW6unb45kLmm6u7dg=="],
"@cornerstonejs/ai": ["@cornerstonejs/ai@4.21.7", "", { "dependencies": { "@babel/runtime-corejs2": "7.26.10", "buffer": "6.0.3", "dcmjs": "0.49.4", "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.21.7", "@cornerstonejs/tools": "4.21.7" } }, "sha512-tVXRvGfHsZdE+eODMWD0sAAf6YlCmCRDGbQU/kX4kN27B7TwOwjzK4FFhReO6qf5MFf/7KjLfB0sQhab45t3Lw=="],
"@cornerstonejs/ai": ["@cornerstonejs/ai@4.22.3", "", { "dependencies": { "@babel/runtime-corejs2": "7.26.10", "buffer": "6.0.3", "dcmjs": "0.49.4", "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.22.3", "@cornerstonejs/tools": "4.22.3" } }, "sha512-NhRcQISjcDCp7rWCK9hGmCgsS36XKyT4AsCBgXuG7iU3ghI77j5kt9sUdqi0M4lRYLYZ1XMrFSDjNDCwFP+eYg=="],
"@cornerstonejs/calculate-suv": ["@cornerstonejs/calculate-suv@1.1.0", "", {}, "sha512-Q9XraiDJif9aMFArD2iEuDO/HXbcRVCqB7KfaHgDrdTTjgDFovS91Psbdim7crypRSvE6dh/+HKeFNHdvNkA6w=="],
@ -1256,15 +1256,15 @@
"@cornerstonejs/codec-openjph": ["@cornerstonejs/codec-openjph@2.4.7", "", {}, "sha512-qvP4q4JDib7mi9r7LqKOwqz7YZ8gjtDX4ZCezeYf8+eb7MBXCz5uXAMeVF3yz9Axw4XiIMdB/pqXkm8tqCl13w=="],
"@cornerstonejs/core": ["@cornerstonejs/core@4.21.7", "", { "dependencies": { "@kitware/vtk.js": "34.15.1", "comlink": "4.4.2", "gl-matrix": "3.4.3", "loglevel": "1.9.2" } }, "sha512-wZkALM/P6TTODtbSeOOZvzWKXjyMRKtsyWJ6NL61BveIlNxATpBbrAIj0dqLVasdF45XcJO5Qn4TiSO/kgKRGA=="],
"@cornerstonejs/core": ["@cornerstonejs/core@4.22.3", "", { "dependencies": { "@kitware/vtk.js": "34.15.1", "comlink": "4.4.2", "gl-matrix": "3.4.3", "loglevel": "1.9.2" } }, "sha512-oxLcg24ER3HHSAEsz3iG7+cb2oHnVSzt7H8EeRtK69e6Ztjl6XkEmXeAbbJypm2QYIkPYb3oJb6zWeYOz1NtYw=="],
"@cornerstonejs/dicom-image-loader": ["@cornerstonejs/dicom-image-loader@4.21.7", "", { "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.21.7" } }, "sha512-wtfKs/U+FM2M7HHiNTFJwujs8TEU2rBz03Fx4Bc//vpktasUN9bqLl/eQ/9zfmz8Cdi12BewVpORd7l4nUmhtQ=="],
"@cornerstonejs/dicom-image-loader": ["@cornerstonejs/dicom-image-loader@4.22.3", "", { "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.22.3" } }, "sha512-TVPSc3PUvy2I6+ZnWX8B2uqJZ5onUd/+e+m/BfeEdZC51GMhC4VfTmqOwOjWDNDyO35ZA9j1mqk8iIJzDpqoeA=="],
"@cornerstonejs/labelmap-interpolation": ["@cornerstonejs/labelmap-interpolation@4.21.7", "", { "dependencies": { "@itk-wasm/morphological-contour-interpolation": "1.1.0", "itk-wasm": "1.0.0-b.165" }, "peerDependencies": { "@cornerstonejs/core": "4.21.7", "@cornerstonejs/tools": "4.21.7", "@kitware/vtk.js": "34.15.1" } }, "sha512-YJGVLjcpG58joBVOWnjHdw7FKGJimryVVJOoCfjLgNsKuoKEkhneTkOMTXsM29ArpgBNOmMYaBPSyf4ZjNxDRQ=="],
"@cornerstonejs/labelmap-interpolation": ["@cornerstonejs/labelmap-interpolation@4.22.3", "", { "dependencies": { "@itk-wasm/morphological-contour-interpolation": "1.1.0", "itk-wasm": "1.0.0-b.165" }, "peerDependencies": { "@cornerstonejs/core": "4.22.3", "@cornerstonejs/tools": "4.22.3", "@kitware/vtk.js": "34.15.1" } }, "sha512-ngschi2EKr+47LWbbTiu6tt3aw4e7yp0mVCDXwJm1Z2eyugemiiAQvOT77EKSBZ//L2fAZR3Edr+qJFzPa5KUw=="],
"@cornerstonejs/polymorphic-segmentation": ["@cornerstonejs/polymorphic-segmentation@4.21.7", "", { "dependencies": { "@icr/polyseg-wasm": "0.4.0" }, "peerDependencies": { "@cornerstonejs/core": "4.21.7", "@cornerstonejs/tools": "4.21.7", "@kitware/vtk.js": "34.15.1" } }, "sha512-4qxVMY0LJ+ffJfbzvzFOwe6j1p93pawwMEVcWRZkipE0pgtlW1SWlBvePCNb25yps6GUxNFPEmdUn5x/Lw77VQ=="],
"@cornerstonejs/polymorphic-segmentation": ["@cornerstonejs/polymorphic-segmentation@4.22.3", "", { "dependencies": { "@icr/polyseg-wasm": "0.4.0" }, "peerDependencies": { "@cornerstonejs/core": "4.22.3", "@cornerstonejs/tools": "4.22.3", "@kitware/vtk.js": "34.15.1" } }, "sha512-JNmtLbuwY8de3uwFf1YqySp5wt2BCT6kpg9gcoDNMmNxGDo0uT5yph1Muh+24sG7WDaoRwyzAEvG11h9NHgoqw=="],
"@cornerstonejs/tools": ["@cornerstonejs/tools@4.21.7", "", { "dependencies": { "@types/offscreencanvas": "2019.7.3", "comlink": "4.4.2", "lodash.get": "4.4.2" }, "peerDependencies": { "@cornerstonejs/core": "4.21.7", "@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-p8bWrEKdjeNzzZfN5NI6Wh7tiZyI3/lXqrdLlY+BCD1YRUdv+rybhyrg0JhpodJYEGrS4/wrkhCApOp9j9Evdg=="],
"@cornerstonejs/tools": ["@cornerstonejs/tools@4.22.3", "", { "dependencies": { "@types/offscreencanvas": "2019.7.3", "comlink": "4.4.2", "lodash.get": "4.4.2" }, "peerDependencies": { "@cornerstonejs/core": "4.22.3", "@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-2XQmUesRWiqWTh3xGnLsQ6qqKI55vSVV4UqGXiPxnMcf6azDfEhcJO8JJCH1VXaDa89jxLBdZUDehUnb0UsIxA=="],
"@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.21.7",
"@cornerstonejs/core": "4.21.7",
"@cornerstonejs/adapters": "4.22.3",
"@cornerstonejs/core": "4.22.3",
"@kitware/vtk.js": "34.15.1"
}
}

View File

@ -46,8 +46,8 @@
},
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/adapters": "4.21.7",
"@cornerstonejs/core": "4.21.7",
"@cornerstonejs/adapters": "4.22.3",
"@cornerstonejs/core": "4.22.3",
"@kitware/vtk.js": "34.15.1"
}
}

View File

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

View File

@ -42,8 +42,8 @@
},
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/core": "4.21.7",
"@cornerstonejs/tools": "4.21.7",
"@cornerstonejs/core": "4.22.3",
"@cornerstonejs/tools": "4.22.3",
"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.21.7",
"@cornerstonejs/dicom-image-loader": "4.22.3",
"@ohif/core": "3.13.0-beta.64",
"@ohif/ui": "3.13.0-beta.64",
"dcmjs": "0.49.4",
@ -53,12 +53,12 @@
},
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/adapters": "4.21.7",
"@cornerstonejs/ai": "4.21.7",
"@cornerstonejs/core": "4.21.7",
"@cornerstonejs/labelmap-interpolation": "4.21.7",
"@cornerstonejs/polymorphic-segmentation": "4.21.7",
"@cornerstonejs/tools": "4.21.7",
"@cornerstonejs/adapters": "4.22.3",
"@cornerstonejs/ai": "4.22.3",
"@cornerstonejs/core": "4.22.3",
"@cornerstonejs/labelmap-interpolation": "4.22.3",
"@cornerstonejs/polymorphic-segmentation": "4.22.3",
"@cornerstonejs/tools": "4.22.3",
"@icr/polyseg-wasm": "0.4.0",
"@itk-wasm/morphological-contour-interpolation": "1.1.0",
"@kitware/vtk.js": "34.15.1",

View File

@ -32,8 +32,8 @@
"start": "yarn run dev"
},
"peerDependencies": {
"@cornerstonejs/core": "4.21.7",
"@cornerstonejs/tools": "4.21.7",
"@cornerstonejs/core": "4.22.3",
"@cornerstonejs/tools": "4.22.3",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.64",
"@ohif/extension-default": "3.13.0-beta.64",

View File

@ -42,8 +42,8 @@
},
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/core": "4.21.7",
"@cornerstonejs/tools": "4.21.7",
"@cornerstonejs/core": "4.22.3",
"@cornerstonejs/tools": "4.22.3",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-cornerstone": "3.13.0-beta.64",
"@ohif/extension-default": "3.13.0-beta.64",

View File

@ -34,8 +34,8 @@
},
"dependencies": {
"@babel/runtime": "7.28.2",
"@cornerstonejs/core": "4.21.7",
"@cornerstonejs/tools": "4.21.7",
"@cornerstonejs/core": "4.22.3",
"@cornerstonejs/tools": "4.22.3",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.64",
"@ohif/extension-ultrasound-pleura-bline": "3.13.0-beta.64",

View File

@ -54,7 +54,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.21.7",
"@cornerstonejs/dicom-image-loader": "4.22.3",
"@emotion/serialize": "1.3.3",
"@ohif/core": "3.13.0-beta.64",
"@ohif/extension-cornerstone": "3.13.0-beta.64",

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.21.7",
"@cornerstonejs/dicom-image-loader": "4.21.7",
"@cornerstonejs/core": "4.22.3",
"@cornerstonejs/dicom-image-loader": "4.22.3",
"@ohif/ui": "3.13.0-beta.64",
"cornerstone-math": "0.1.10",
"dicom-parser": "1.8.21"

34
tests/ZoomIn.spec.ts Normal file
View File

@ -0,0 +1,34 @@
import { checkForScreenshot, screenShotPaths, test, visitStudy } from './utils';
test.beforeEach(async ({ page }) => {
const studyInstanceUID = '1.3.12.2.1107.5.2.32.35162.30000015050317233592200000046';
const mode = 'viewer';
await visitStudy(page, studyInstanceUID, mode, 2000);
});
test('should render the magnified region with the same horizontal flip as the source viewport', async ({
page,
mainToolbarPageObject,
viewportPageObject,
}) => {
await mainToolbarPageObject.moreTools.flipHorizontal.click();
const activeViewport = await viewportPageObject.active;
await activeViewport.sliceNavigation.toSlice(61);
await mainToolbarPageObject.moreTools.magnify.click();
await activeViewport.magnifyGlass.drag({
start: { x: 0.78, y: 0.91 },
mouseUp: false,
});
await checkForScreenshot(
page,
activeViewport.magnifyGlass.locator,
screenShotPaths.zoomIn.magnifyViewportDisplayedCorrectly
);
await activeViewport.magnifyGlass.stopDrag();
});

View File

@ -0,0 +1,48 @@
import { Locator, Page } from '@playwright/test';
import { simulateNormalizedDragOnElement } from '../utils';
type MagnifyDragParams = {
start: { x: number; y: number };
end?: { x: number; y: number };
mouseUp?: boolean;
button?: 'left' | 'right' | 'middle';
delay?: number;
steps?: number;
};
export class MagnifyGlassPageObject {
readonly page: Page;
readonly viewport: Locator;
constructor(page: Page, viewport: Locator) {
this.page = page;
this.viewport = viewport;
}
get locator(): Locator {
return this.viewport.locator('.magnifyTool');
}
async drag({
start,
end,
button,
delay,
steps,
mouseUp = true,
}: MagnifyDragParams): Promise<void> {
await simulateNormalizedDragOnElement({
locator: this.viewport,
start,
end: end ?? start,
button,
delay,
steps,
mouseUp,
});
}
async stopDrag(): Promise<void> {
await this.page.mouse.up();
}
}

View File

@ -326,6 +326,16 @@ export class MainToolbarPageObject {
},
};
},
get magnify() {
const button = page.getByTestId('Magnify');
return {
button,
async click() {
await moreTools.click();
await button.click();
},
};
},
};
}

View File

@ -8,6 +8,7 @@ import {
} from '../utils';
import { DataOverlayPageObject } from './DataOverlayPageObject';
import { DOMOverlayPageObject } from './DOMOverlayPageObject';
import { MagnifyGlassPageObject } from './MagnifyGlassPageObject';
type SvgInnerElement = 'circle' | 'path' | 'd';
@ -91,6 +92,13 @@ export interface IViewportPageObject {
click: () => Promise<void>;
};
};
sliceNavigation: {
toSlice: (sliceIndex: number) => Promise<void>;
toFirstSlice: () => Promise<void>;
toLastSlice: () => Promise<void>;
scrollBy: (delta: number) => Promise<void>;
};
magnifyGlass: MagnifyGlassPageObject;
}
export class ViewportPageObject {
@ -200,6 +208,59 @@ export class ViewportPageObject {
};
}
/**
* Note: awaiting the returned methods (toSlice, toFirstSlice, toLastSlice, scrollBy)
* does not guarantee the viewport has finished rendering. Follow up with
* `waitForViewportsRendered` if you need pixel-stable state.
*/
private getSliceNavigation(viewport: Locator) {
const page = this.page;
const jumpToImage = async (imageIndex: number) => {
const viewportId = await this.getViewportId(viewport);
await page.evaluate(
({ commandsManager, viewportId, imageIndex }) => {
return commandsManager.runCommand('jumpToImage', {
imageIndex,
viewport: { id: viewportId },
});
},
{
viewportId,
imageIndex,
commandsManager: await page.evaluateHandle('window.commandsManager'),
}
);
};
const scrollBy = async (delta: number) => {
const viewportId = await this.getViewportId(viewport);
await page.evaluate(
({ services, viewportId, delta }) => {
const cornerstoneViewport = (
services as any
).cornerstoneViewportService.getCornerstoneViewport(viewportId);
if (!cornerstoneViewport) {
return;
}
return cornerstoneViewport.scroll(delta);
},
{
viewportId,
delta,
services: await page.evaluateHandle('window.services'),
}
);
};
return {
toSlice: jumpToImage,
toFirstSlice: () => jumpToImage(0),
toLastSlice: () => jumpToImage(-1),
scrollBy,
};
}
private async viewportPageObjectFactory(viewport: Locator): Promise<IViewportPageObject> {
return {
nthAnnotation: (nth: number) => this.getAnnotation(viewport, nth),
@ -244,6 +305,8 @@ export class ViewportPageObject {
return this.getSvg(viewport, innerElement);
},
navigationArrows: this.getNavigationArrows(viewport),
sliceNavigation: this.getSliceNavigation(viewport),
magnifyGlass: new MagnifyGlassPageObject(this.page, viewport),
};
}

View File

@ -5,6 +5,7 @@ import { RightPanelPageObject } from './RightPanelPageObject';
import { ViewportPageObject } from './ViewportPageObject';
import { NotFoundStudyPageObject } from './NotFoundStudyPageObject';
import { DicomTagBrowserPageObject } from './DicomTagBrowserPageObject';
import { MagnifyGlassPageObject } from './MagnifyGlassPageObject';
export {
DOMOverlayPageObject,
@ -14,4 +15,5 @@ export {
ViewportPageObject,
NotFoundStudyPageObject,
DicomTagBrowserPageObject,
MagnifyGlassPageObject,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -97,6 +97,9 @@ const screenShotPaths = {
reset: {
resetDisplayedCorrectly: 'resetDisplayedCorrectly.png',
},
zoomIn: {
magnifyViewportDisplayedCorrectly: 'magnifyViewportDisplayedCorrectly.png',
},
rtDataOverlayForUnreferencedDisplaySetNoHydration: {
overlayFirstImage: 'overlayFirstImage.png',
overlayMiddleImage: 'overlayMiddleImage.png',

View File

@ -17,6 +17,7 @@ export async function simulateNormalizedDragOnElement({
button = 'left',
delay = 50,
steps = 10,
mouseUp = true,
}: {
locator: Locator;
start: { x: number; y: number };
@ -24,6 +25,7 @@ export async function simulateNormalizedDragOnElement({
button?: 'left' | 'right' | 'middle';
delay?: number;
steps?: number;
mouseUp?: boolean;
}) {
const bBox = await locator.boundingBox();
if (!bBox) {
@ -42,7 +44,7 @@ export async function simulateNormalizedDragOnElement({
// Get the page from the locator context
const page = locator.page();
page.mouse.move(startPosition.x, startPosition.y);
await page.mouse.move(startPosition.x, startPosition.y);
// Start drag
await page.mouse.down({ button });
@ -63,5 +65,7 @@ export async function simulateNormalizedDragOnElement({
}
// End drag
await page.mouse.up({ button });
if (mouseUp) {
await page.mouse.up({ button });
}
}

View File

@ -1946,10 +1946,10 @@
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
"@cornerstonejs/adapters@4.21.7":
version "4.21.7"
resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-4.21.7.tgz#21ecebec3759eb06f0aabdbe9768bb63e672acf9"
integrity sha512-a9lGNlcLuuk81c8H2F4rotrMxTf9EGursSVIdz7n0cQ8nJmebSZTmp5FWGLDadRxh9pIxMeC52JTcDVd3JR9MQ==
"@cornerstonejs/adapters@4.22.3":
version "4.22.3"
resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-4.22.3.tgz#8d2d9246706fa7b9f72e2472b9a2fc9419d700ed"
integrity sha512-58TaTUl7AmLARnKApfz9c5IWzIaPPewH8sjD0BxKu5PeVHSRSlKX7jH4pv1akapIbDqXBEW6unb45kLmm6u7dg==
dependencies:
"@babel/runtime-corejs2" "7.26.10"
buffer "6.0.3"
@ -1957,10 +1957,10 @@
gl-matrix "3.4.3"
ndarray "1.0.19"
"@cornerstonejs/ai@4.21.7":
version "4.21.7"
resolved "https://registry.yarnpkg.com/@cornerstonejs/ai/-/ai-4.21.7.tgz#d42801cbd5bee3974e57a878f1a6b71ea0f09930"
integrity sha512-tVXRvGfHsZdE+eODMWD0sAAf6YlCmCRDGbQU/kX4kN27B7TwOwjzK4FFhReO6qf5MFf/7KjLfB0sQhab45t3Lw==
"@cornerstonejs/ai@4.22.3":
version "4.22.3"
resolved "https://registry.yarnpkg.com/@cornerstonejs/ai/-/ai-4.22.3.tgz#a8f7d8ae05cef79dd9d8bafbfcc789e2f5dbc893"
integrity sha512-NhRcQISjcDCp7rWCK9hGmCgsS36XKyT4AsCBgXuG7iU3ghI77j5kt9sUdqi0M4lRYLYZ1XMrFSDjNDCwFP+eYg==
dependencies:
"@babel/runtime-corejs2" "7.26.10"
buffer "6.0.3"
@ -1996,20 +1996,20 @@
resolved "https://registry.yarnpkg.com/@cornerstonejs/codec-openjph/-/codec-openjph-2.4.7.tgz#784394d05d8cf735640e9c3baa206535ee8e0376"
integrity sha512-qvP4q4JDib7mi9r7LqKOwqz7YZ8gjtDX4ZCezeYf8+eb7MBXCz5uXAMeVF3yz9Axw4XiIMdB/pqXkm8tqCl13w==
"@cornerstonejs/core@4.21.7":
version "4.21.7"
resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-4.21.7.tgz#3f838717e66add85abfe091aace45bf9beaac5e9"
integrity sha512-wZkALM/P6TTODtbSeOOZvzWKXjyMRKtsyWJ6NL61BveIlNxATpBbrAIj0dqLVasdF45XcJO5Qn4TiSO/kgKRGA==
"@cornerstonejs/core@4.22.3":
version "4.22.3"
resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-4.22.3.tgz#0532a7ffba163a8738c289d044ce04bc950479e3"
integrity sha512-oxLcg24ER3HHSAEsz3iG7+cb2oHnVSzt7H8EeRtK69e6Ztjl6XkEmXeAbbJypm2QYIkPYb3oJb6zWeYOz1NtYw==
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.21.7":
version "4.21.7"
resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-4.21.7.tgz#302f88a1195525df607bf4eefddbbe0e94641c62"
integrity sha512-wtfKs/U+FM2M7HHiNTFJwujs8TEU2rBz03Fx4Bc//vpktasUN9bqLl/eQ/9zfmz8Cdi12BewVpORd7l4nUmhtQ==
"@cornerstonejs/dicom-image-loader@4.22.3":
version "4.22.3"
resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-4.22.3.tgz#f3d91191cb27d840a9aa49b6c78d0b1f3634acc0"
integrity sha512-TVPSc3PUvy2I6+ZnWX8B2uqJZ5onUd/+e+m/BfeEdZC51GMhC4VfTmqOwOjWDNDyO35ZA9j1mqk8iIJzDpqoeA==
dependencies:
"@cornerstonejs/codec-charls" "1.2.3"
"@cornerstonejs/codec-libjpeg-turbo-8bit" "1.2.2"
@ -2021,25 +2021,25 @@
pako "2.1.0"
uuid "9.0.1"
"@cornerstonejs/labelmap-interpolation@4.21.7":
version "4.21.7"
resolved "https://registry.yarnpkg.com/@cornerstonejs/labelmap-interpolation/-/labelmap-interpolation-4.21.7.tgz#9af7d693ccf0da6dfd45a79d280208000ed59d55"
integrity sha512-YJGVLjcpG58joBVOWnjHdw7FKGJimryVVJOoCfjLgNsKuoKEkhneTkOMTXsM29ArpgBNOmMYaBPSyf4ZjNxDRQ==
"@cornerstonejs/labelmap-interpolation@4.22.3":
version "4.22.3"
resolved "https://registry.yarnpkg.com/@cornerstonejs/labelmap-interpolation/-/labelmap-interpolation-4.22.3.tgz#7c01448cb0c02f47ca7e95db836153c0169d0200"
integrity sha512-ngschi2EKr+47LWbbTiu6tt3aw4e7yp0mVCDXwJm1Z2eyugemiiAQvOT77EKSBZ//L2fAZR3Edr+qJFzPa5KUw==
dependencies:
"@itk-wasm/morphological-contour-interpolation" "1.1.0"
itk-wasm "1.0.0-b.165"
"@cornerstonejs/polymorphic-segmentation@4.21.7":
version "4.21.7"
resolved "https://registry.yarnpkg.com/@cornerstonejs/polymorphic-segmentation/-/polymorphic-segmentation-4.21.7.tgz#e6a52477d1756b99f83e5a70fbd2b152819113c3"
integrity sha512-4qxVMY0LJ+ffJfbzvzFOwe6j1p93pawwMEVcWRZkipE0pgtlW1SWlBvePCNb25yps6GUxNFPEmdUn5x/Lw77VQ==
"@cornerstonejs/polymorphic-segmentation@4.22.3":
version "4.22.3"
resolved "https://registry.yarnpkg.com/@cornerstonejs/polymorphic-segmentation/-/polymorphic-segmentation-4.22.3.tgz#41f3eb0848a03de4ec4a4034be7f2989c543b94d"
integrity sha512-JNmtLbuwY8de3uwFf1YqySp5wt2BCT6kpg9gcoDNMmNxGDo0uT5yph1Muh+24sG7WDaoRwyzAEvG11h9NHgoqw==
dependencies:
"@icr/polyseg-wasm" "0.4.0"
"@cornerstonejs/tools@4.21.7":
version "4.21.7"
resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-4.21.7.tgz#0346501bd635fda857716e134a2ce50bc58804dd"
integrity sha512-p8bWrEKdjeNzzZfN5NI6Wh7tiZyI3/lXqrdLlY+BCD1YRUdv+rybhyrg0JhpodJYEGrS4/wrkhCApOp9j9Evdg==
"@cornerstonejs/tools@4.22.3":
version "4.22.3"
resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-4.22.3.tgz#45e2f7bb60c29fc545da525765f8708dac5202a6"
integrity sha512-2XQmUesRWiqWTh3xGnLsQ6qqKI55vSVV4UqGXiPxnMcf6azDfEhcJO8JJCH1VXaDa89jxLBdZUDehUnb0UsIxA==
dependencies:
"@types/offscreencanvas" "2019.7.3"
comlink "4.4.2"