fix(segmentation): Lock all rehydrated segmentation segments when panelSegmentation.disableEditing is true. (#5503)
* fix(segmentation): Lock all rehydrated segmentation segments when panelSegmentation.disableEditing is true. * PR feedback. * PR feedback. * Added tests for disableEditing and utilities for simulating drag operations. * Update bun.lock file after merging master.
This commit is contained in:
parent
3e1d50c8d2
commit
170e860aa1
374
bun.lock
374
bun.lock
@ -52,7 +52,7 @@
|
||||
},
|
||||
"addOns/externals/devDependencies": {
|
||||
"name": "@externals/devDependencies",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@kitware/vtk.js": "32.12.0",
|
||||
@ -137,22 +137,22 @@
|
||||
},
|
||||
"addOns/externals/dicom-microscopy-viewer": {
|
||||
"name": "@externals/dicom-microscopy-viewer",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"dicom-microscopy-viewer": "0.48.6",
|
||||
},
|
||||
},
|
||||
"extensions/cornerstone": {
|
||||
"name": "@ohif/extension-cornerstone",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/adapters": "4.5.5",
|
||||
"@cornerstonejs/ai": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/labelmap-interpolation": "4.5.5",
|
||||
"@cornerstonejs/polymorphic-segmentation": "4.5.5",
|
||||
"@cornerstonejs/tools": "4.5.5",
|
||||
"@cornerstonejs/adapters": "4.5.13",
|
||||
"@cornerstonejs/ai": "4.5.13",
|
||||
"@cornerstonejs/core": "4.5.13",
|
||||
"@cornerstonejs/labelmap-interpolation": "4.5.13",
|
||||
"@cornerstonejs/polymorphic-segmentation": "4.5.13",
|
||||
"@cornerstonejs/tools": "4.5.13",
|
||||
"@itk-wasm/morphological-contour-interpolation": "1.1.0",
|
||||
"@kitware/vtk.js": "32.12.0",
|
||||
"html2canvas": "1.4.1",
|
||||
@ -169,9 +169,9 @@
|
||||
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
|
||||
"@cornerstonejs/codec-openjpeg": "1.2.4",
|
||||
"@cornerstonejs/codec-openjph": "2.4.7",
|
||||
"@cornerstonejs/dicom-image-loader": "4.5.5",
|
||||
"@ohif/core": "3.12.0-beta.58",
|
||||
"@ohif/ui": "3.12.0-beta.58",
|
||||
"@cornerstonejs/dicom-image-loader": "4.5.13",
|
||||
"@ohif/core": "3.12.0-beta.67",
|
||||
"@ohif/ui": "3.12.0-beta.67",
|
||||
"dcmjs": "0.43.1",
|
||||
"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.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/adapters": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/adapters": "4.5.13",
|
||||
"@cornerstonejs/core": "4.5.13",
|
||||
"@kitware/vtk.js": "32.12.0",
|
||||
"react-color": "2.19.3",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.56",
|
||||
"@ohif/extension-default": "3.12.0-beta.56",
|
||||
"@ohif/i18n": "3.12.0-beta.56",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.64",
|
||||
"@ohif/extension-default": "3.12.0-beta.64",
|
||||
"@ohif/i18n": "3.12.0-beta.64",
|
||||
"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.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"react-color": "2.19.3",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.56",
|
||||
"@ohif/extension-default": "3.12.0-beta.56",
|
||||
"@ohif/i18n": "3.12.0-beta.56",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.64",
|
||||
"@ohif/extension-default": "3.12.0-beta.64",
|
||||
"@ohif/i18n": "3.12.0-beta.64",
|
||||
"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.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/adapters": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/adapters": "4.5.13",
|
||||
"@cornerstonejs/core": "4.5.13",
|
||||
"@kitware/vtk.js": "32.12.0",
|
||||
"react-color": "2.19.3",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.56",
|
||||
"@ohif/extension-default": "3.12.0-beta.56",
|
||||
"@ohif/i18n": "3.12.0-beta.56",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.64",
|
||||
"@ohif/extension-default": "3.12.0-beta.64",
|
||||
"@ohif/i18n": "3.12.0-beta.64",
|
||||
"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.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/adapters": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/tools": "4.5.5",
|
||||
"@cornerstonejs/adapters": "4.5.13",
|
||||
"@cornerstonejs/core": "4.5.13",
|
||||
"@cornerstonejs/tools": "4.5.13",
|
||||
"classnames": "2.5.1",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.58",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.58",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.58",
|
||||
"@ohif/ui": "3.12.0-beta.58",
|
||||
"@ohif/core": "3.12.0-beta.67",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.67",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.67",
|
||||
"@ohif/ui": "3.12.0-beta.67",
|
||||
"dcmjs": "0.43.1",
|
||||
"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.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/tools": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.13",
|
||||
"@cornerstonejs/tools": "4.5.13",
|
||||
"classnames": "2.5.1",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.56",
|
||||
"@ohif/extension-default": "3.12.0-beta.56",
|
||||
"@ohif/i18n": "3.12.0-beta.56",
|
||||
"@ohif/ui": "3.12.0-beta.56",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.64",
|
||||
"@ohif/extension-default": "3.12.0-beta.64",
|
||||
"@ohif/i18n": "3.12.0-beta.64",
|
||||
"@ohif/ui": "3.12.0-beta.64",
|
||||
"dcmjs": "0.43.1",
|
||||
"dicom-parser": "1.8.21",
|
||||
"hammerjs": "2.0.8",
|
||||
@ -293,7 +293,7 @@
|
||||
},
|
||||
"extensions/default": {
|
||||
"name": "@ohif/extension-default",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"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.58",
|
||||
"@ohif/i18n": "3.12.0-beta.58",
|
||||
"@ohif/core": "3.12.0-beta.67",
|
||||
"@ohif/i18n": "3.12.0-beta.67",
|
||||
"dcmjs": "0.43.1",
|
||||
"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.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"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.56",
|
||||
"@ohif/extension-default": "3.12.0-beta.56",
|
||||
"@ohif/i18n": "3.12.0-beta.56",
|
||||
"@ohif/ui": "3.12.0-beta.56",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/extension-default": "3.12.0-beta.64",
|
||||
"@ohif/i18n": "3.12.0-beta.64",
|
||||
"@ohif/ui": "3.12.0-beta.64",
|
||||
"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.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"classnames": "2.5.1",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.56",
|
||||
"@ohif/ui": "3.12.0-beta.56",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/ui": "3.12.0-beta.64",
|
||||
"dcmjs": "0.43.1",
|
||||
"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.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"classnames": "2.5.1",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.56",
|
||||
"@ohif/ui": "3.12.0-beta.56",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/ui": "3.12.0-beta.64",
|
||||
"dcmjs": "0.43.1",
|
||||
"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.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@ohif/ui": "3.12.0-beta.58",
|
||||
"@ohif/ui": "3.12.0-beta.67",
|
||||
"@xstate/react": "3.2.2",
|
||||
"xstate": "4.38.3",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/tools": "4.5.5",
|
||||
"@ohif/core": "3.12.0-beta.58",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.58",
|
||||
"@ohif/extension-default": "3.12.0-beta.58",
|
||||
"@ohif/ui": "3.12.0-beta.58",
|
||||
"@cornerstonejs/core": "4.5.13",
|
||||
"@cornerstonejs/tools": "4.5.13",
|
||||
"@ohif/core": "3.12.0-beta.67",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.67",
|
||||
"@ohif/extension-default": "3.12.0-beta.67",
|
||||
"@ohif/ui": "3.12.0-beta.67",
|
||||
"classnames": "2.5.1",
|
||||
"dcmjs": "0.43.1",
|
||||
"lodash.debounce": "4.0.8",
|
||||
@ -401,14 +401,14 @@
|
||||
},
|
||||
"extensions/test-extension": {
|
||||
"name": "@ohif/extension-test",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"classnames": "2.5.1",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.56",
|
||||
"@ohif/ui": "3.12.0-beta.56",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/ui": "3.12.0-beta.64",
|
||||
"dcmjs": "0.43.1",
|
||||
"dicom-parser": "1.8.21",
|
||||
"hammerjs": "2.0.8",
|
||||
@ -418,14 +418,14 @@
|
||||
},
|
||||
"extensions/tmtv": {
|
||||
"name": "@ohif/extension-tmtv",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"classnames": "2.5.1",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.56",
|
||||
"@ohif/ui": "3.12.0-beta.56",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/ui": "3.12.0-beta.64",
|
||||
"dcmjs": "0.43.1",
|
||||
"dicom-parser": "1.8.21",
|
||||
"hammerjs": "2.0.8",
|
||||
@ -435,16 +435,16 @@
|
||||
},
|
||||
"extensions/usAnnotation": {
|
||||
"name": "@ohif/extension-ultrasound-pleura-bline",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/tools": "4.5.5",
|
||||
"@ohif/core": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.56",
|
||||
"@ohif/extension-default": "3.12.0-beta.56",
|
||||
"@ohif/i18n": "3.12.0-beta.56",
|
||||
"@ohif/ui-next": "3.12.0-beta.56",
|
||||
"@cornerstonejs/core": "4.5.13",
|
||||
"@cornerstonejs/tools": "4.5.13",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.64",
|
||||
"@ohif/extension-default": "3.12.0-beta.64",
|
||||
"@ohif/i18n": "3.12.0-beta.64",
|
||||
"@ohif/ui-next": "3.12.0-beta.64",
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "7.28.0",
|
||||
@ -487,7 +487,7 @@
|
||||
},
|
||||
"modes/basic": {
|
||||
"name": "@ohif/mode-basic",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
},
|
||||
@ -496,19 +496,19 @@
|
||||
"webpack-merge": "5.10.0",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.56",
|
||||
"@ohif/extension-default": "3.12.0-beta.56",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.56",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.56",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.64",
|
||||
"@ohif/extension-default": "3.12.0-beta.64",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.64",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.64",
|
||||
},
|
||||
},
|
||||
"modes/basic-dev-mode": {
|
||||
"name": "@ohif/mode-basic-dev-mode",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"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.56",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.56",
|
||||
"@ohif/extension-default": "3.12.0-beta.56",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.56",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.56",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.64",
|
||||
"@ohif/extension-default": "3.12.0-beta.64",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.64",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.64",
|
||||
},
|
||||
},
|
||||
"modes/basic-test-mode": {
|
||||
"name": "@ohif/mode-test",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"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.56",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.56",
|
||||
"@ohif/extension-default": "3.12.0-beta.56",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.56",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.56",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.56",
|
||||
"@ohif/extension-test": "3.12.0-beta.56",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.64",
|
||||
"@ohif/extension-default": "3.12.0-beta.64",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.64",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.64",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.64",
|
||||
"@ohif/extension-test": "3.12.0-beta.64",
|
||||
},
|
||||
},
|
||||
"modes/longitudinal": {
|
||||
"name": "@ohif/mode-longitudinal",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"i18next": "17.3.1",
|
||||
@ -560,32 +560,32 @@
|
||||
"webpack-merge": "5.10.0",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.56",
|
||||
"@ohif/extension-default": "3.12.0-beta.56",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.56",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.56",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.56",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.64",
|
||||
"@ohif/extension-default": "3.12.0-beta.64",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.64",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.64",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.64",
|
||||
},
|
||||
},
|
||||
"modes/microscopy": {
|
||||
"name": "@ohif/mode-microscopy",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"i18next": "17.3.1",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.56",
|
||||
"@ohif/extension-dicom-microscopy": "3.12.0-beta.56",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/extension-dicom-microscopy": "3.12.0-beta.64",
|
||||
},
|
||||
},
|
||||
"modes/preclinical-4d": {
|
||||
"name": "@ohif/mode-preclinical-4d",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
},
|
||||
@ -594,17 +594,17 @@
|
||||
"webpack-merge": "5.10.0",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone-dynamic-volume": "3.12.0-beta.56",
|
||||
"@ohif/extension-default": "3.12.0-beta.56",
|
||||
"@ohif/extension-tmtv": "3.12.0-beta.56",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone-dynamic-volume": "3.12.0-beta.64",
|
||||
"@ohif/extension-default": "3.12.0-beta.64",
|
||||
"@ohif/extension-tmtv": "3.12.0-beta.64",
|
||||
},
|
||||
},
|
||||
"modes/segmentation": {
|
||||
"name": "@ohif/mode-segmentation",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"i18next": "17.3.1",
|
||||
@ -636,19 +636,19 @@
|
||||
"webpack-merge": "5.10.0",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.56",
|
||||
"@ohif/extension-default": "3.12.0-beta.56",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.56",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.56",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.64",
|
||||
"@ohif/extension-default": "3.12.0-beta.64",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.64",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.64",
|
||||
},
|
||||
},
|
||||
"modes/tmtv": {
|
||||
"name": "@ohif/mode-tmtv",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"i18next": "17.3.1",
|
||||
@ -658,25 +658,25 @@
|
||||
"webpack-merge": "5.10.0",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.56",
|
||||
"@ohif/extension-default": "3.12.0-beta.56",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.56",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.56",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.56",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.64",
|
||||
"@ohif/extension-default": "3.12.0-beta.64",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.64",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.64",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.64",
|
||||
},
|
||||
},
|
||||
"modes/usAnnotation": {
|
||||
"name": "@ohif/mode-ultrasound-pleura-bline",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/tools": "4.5.5",
|
||||
"@ohif/core": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.56",
|
||||
"@ohif/extension-ultrasound-pleura-bline": "3.12.0-beta.56",
|
||||
"@cornerstonejs/core": "4.5.13",
|
||||
"@cornerstonejs/tools": "4.5.13",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.64",
|
||||
"@ohif/extension-ultrasound-pleura-bline": "3.12.0-beta.64",
|
||||
"i18next": "17.3.1",
|
||||
},
|
||||
"devDependencies": {
|
||||
@ -708,34 +708,34 @@
|
||||
},
|
||||
"platform/app": {
|
||||
"name": "@ohif/app",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@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.7",
|
||||
"@cornerstonejs/dicom-image-loader": "4.5.5",
|
||||
"@cornerstonejs/dicom-image-loader": "4.5.13",
|
||||
"@emotion/serialize": "1.3.3",
|
||||
"@ohif/core": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.56",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.56",
|
||||
"@ohif/extension-default": "3.12.0-beta.56",
|
||||
"@ohif/extension-dicom-microscopy": "3.12.0-beta.56",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.56",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.56",
|
||||
"@ohif/extension-test": "3.12.0-beta.56",
|
||||
"@ohif/extension-ultrasound-pleura-bline": "3.12.0-beta.56",
|
||||
"@ohif/i18n": "3.12.0-beta.56",
|
||||
"@ohif/mode-basic-dev-mode": "3.12.0-beta.56",
|
||||
"@ohif/mode-longitudinal": "3.12.0-beta.56",
|
||||
"@ohif/mode-microscopy": "3.12.0-beta.56",
|
||||
"@ohif/mode-test": "3.12.0-beta.56",
|
||||
"@ohif/mode-ultrasound-pleura-bline": "3.12.0-beta.56",
|
||||
"@ohif/ui": "3.12.0-beta.56",
|
||||
"@ohif/ui-next": "3.12.0-beta.56",
|
||||
"@ohif/core": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.64",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.64",
|
||||
"@ohif/extension-default": "3.12.0-beta.64",
|
||||
"@ohif/extension-dicom-microscopy": "3.12.0-beta.64",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.64",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.64",
|
||||
"@ohif/extension-test": "3.12.0-beta.64",
|
||||
"@ohif/extension-ultrasound-pleura-bline": "3.12.0-beta.64",
|
||||
"@ohif/i18n": "3.12.0-beta.64",
|
||||
"@ohif/mode-basic-dev-mode": "3.12.0-beta.64",
|
||||
"@ohif/mode-longitudinal": "3.12.0-beta.64",
|
||||
"@ohif/mode-microscopy": "3.12.0-beta.64",
|
||||
"@ohif/mode-test": "3.12.0-beta.64",
|
||||
"@ohif/mode-ultrasound-pleura-bline": "3.12.0-beta.64",
|
||||
"@ohif/ui": "3.12.0-beta.64",
|
||||
"@ohif/ui-next": "3.12.0-beta.64",
|
||||
"@svgr/webpack": "8.1.0",
|
||||
"@types/react": "18.3.23",
|
||||
"classnames": "2.5.1",
|
||||
@ -787,7 +787,7 @@
|
||||
},
|
||||
"platform/cli": {
|
||||
"name": "@ohif/cli",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"bin": {
|
||||
"ohif-cli": "src/index.js",
|
||||
},
|
||||
@ -811,7 +811,7 @@
|
||||
},
|
||||
"platform/core": {
|
||||
"name": "@ohif/core",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"dcmjs": "0.43.1",
|
||||
@ -836,16 +836,16 @@
|
||||
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
|
||||
"@cornerstonejs/codec-openjpeg": "1.2.4",
|
||||
"@cornerstonejs/codec-openjph": "2.4.7",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/dicom-image-loader": "4.5.5",
|
||||
"@ohif/ui": "3.12.0-beta.58",
|
||||
"@cornerstonejs/core": "4.5.13",
|
||||
"@cornerstonejs/dicom-image-loader": "4.5.13",
|
||||
"@ohif/ui": "3.12.0-beta.67",
|
||||
"cornerstone-math": "0.1.9",
|
||||
"dicom-parser": "1.8.21",
|
||||
},
|
||||
},
|
||||
"platform/i18n": {
|
||||
"name": "@ohif/i18n",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"i18next-locize-backend": "2.2.2",
|
||||
@ -870,7 +870,7 @@
|
||||
},
|
||||
"platform/ui": {
|
||||
"name": "@ohif/ui",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@testing-library/react": "13.4.0",
|
||||
"browser-detect": "0.2.28",
|
||||
@ -921,7 +921,7 @@
|
||||
},
|
||||
"platform/ui-next": {
|
||||
"name": "@ohif/ui-next",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.67",
|
||||
"dependencies": {
|
||||
"@radix-ui/react-accordion": "1.2.11",
|
||||
"@radix-ui/react-checkbox": "1.3.2",
|
||||
@ -1228,9 +1228,9 @@
|
||||
|
||||
"@bcoe/v8-coverage": ["@bcoe/v8-coverage@0.2.3", "", {}, "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw=="],
|
||||
|
||||
"@cornerstonejs/adapters": ["@cornerstonejs/adapters@4.5.5", "", { "dependencies": { "@babel/runtime-corejs2": "7.26.10", "buffer": "6.0.3", "dcmjs": "0.43.1", "gl-matrix": "3.4.3", "ndarray": "1.0.19" }, "peerDependencies": { "@cornerstonejs/core": "4.5.5", "@cornerstonejs/tools": "4.5.5" } }, "sha512-tZC8ScqmSouWt5/0t9cUqtsSVW5ObhniyuZuF6QZvXOyWU7I4fkmtNX4RtTUi9cvuqoDA0nckejkEQhp5OjKEw=="],
|
||||
"@cornerstonejs/adapters": ["@cornerstonejs/adapters@4.5.13", "", { "dependencies": { "@babel/runtime-corejs2": "7.26.10", "buffer": "6.0.3", "dcmjs": "0.43.1", "gl-matrix": "3.4.3", "ndarray": "1.0.19" }, "peerDependencies": { "@cornerstonejs/core": "4.5.13", "@cornerstonejs/tools": "4.5.13" } }, "sha512-qWB32zsY4Ets2/si2fUBqHckBZYrdEYSPK/mya3S4+qLdB5KImZZJQYq4aqVg+gRvZc9aHIKVI1jjZCkxdvV0A=="],
|
||||
|
||||
"@cornerstonejs/ai": ["@cornerstonejs/ai@4.5.5", "", { "dependencies": { "@babel/runtime-corejs2": "7.26.10", "buffer": "6.0.3", "dcmjs": "0.43.1", "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.5.5", "@cornerstonejs/tools": "4.5.5" } }, "sha512-31/ARIIr2EyDwyeNsI58XLYpbEikaPqYuR/7tQMFvqwX0plpsaAZx0wQ+ta0YBag9/vAtpuyjg1sGMaqS7v9Yw=="],
|
||||
"@cornerstonejs/ai": ["@cornerstonejs/ai@4.5.13", "", { "dependencies": { "@babel/runtime-corejs2": "7.26.10", "buffer": "6.0.3", "dcmjs": "0.43.1", "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.5.13", "@cornerstonejs/tools": "4.5.13" } }, "sha512-5eVrkiUuSWcqc8KOWwXzN/1KwbgVzS/9AZjwZ7GJdFYBmRTOkFVhgKlx86VsXecgzuJ6tUSP72ChyPEDgYuh+g=="],
|
||||
|
||||
"@cornerstonejs/calculate-suv": ["@cornerstonejs/calculate-suv@1.1.0", "", {}, "sha512-Q9XraiDJif9aMFArD2iEuDO/HXbcRVCqB7KfaHgDrdTTjgDFovS91Psbdim7crypRSvE6dh/+HKeFNHdvNkA6w=="],
|
||||
|
||||
@ -1242,15 +1242,15 @@
|
||||
|
||||
"@cornerstonejs/codec-openjph": ["@cornerstonejs/codec-openjph@2.4.7", "", {}, "sha512-qvP4q4JDib7mi9r7LqKOwqz7YZ8gjtDX4ZCezeYf8+eb7MBXCz5uXAMeVF3yz9Axw4XiIMdB/pqXkm8tqCl13w=="],
|
||||
|
||||
"@cornerstonejs/core": ["@cornerstonejs/core@4.5.5", "", { "dependencies": { "@kitware/vtk.js": "32.12.1", "comlink": "4.4.2", "gl-matrix": "3.4.3", "loglevel": "1.9.2" } }, "sha512-fThmbuCEZosLUf46pNxAj0UiNYWpjKYNAj0pJoOLc6Ck3Q6lzsA4lF7Hv2LT9Ek0P9Hdfjwjjfjm4mkLevmZBg=="],
|
||||
"@cornerstonejs/core": ["@cornerstonejs/core@4.5.13", "", { "dependencies": { "@kitware/vtk.js": "32.12.1", "comlink": "4.4.2", "gl-matrix": "3.4.3", "loglevel": "1.9.2" } }, "sha512-a/cQ16KNxVW32WdIihAjt/ry5SP+O6ffQ8ecf0iNa/cbqyOuvw+R6xSue2ZcTLHm/vC3R7PaocDdAwuvIEVwKw=="],
|
||||
|
||||
"@cornerstonejs/dicom-image-loader": ["@cornerstonejs/dicom-image-loader@4.5.5", "", { "dependencies": { "@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.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.5.5" } }, "sha512-v6nLkpS8rEFkNK8ROZkKQkiHDhOoGmVvknnKSuK0tWpN3Lpha9tfAfWiZyOJGV/HJcZhmXQcnbk3hR8/QUEs6w=="],
|
||||
"@cornerstonejs/dicom-image-loader": ["@cornerstonejs/dicom-image-loader@4.5.13", "", { "dependencies": { "@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.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.5.13" } }, "sha512-2u5yiS3gObKMWAeABhBl9OpWK5fSclMIWjYVgF9bAu9lNIksRkbRj6U+gpcftAKKXF0gW+uecRIiBqFgEcr2eQ=="],
|
||||
|
||||
"@cornerstonejs/labelmap-interpolation": ["@cornerstonejs/labelmap-interpolation@4.5.5", "", { "dependencies": { "@itk-wasm/morphological-contour-interpolation": "1.1.0", "itk-wasm": "1.0.0-b.165" }, "peerDependencies": { "@cornerstonejs/core": "4.5.5", "@cornerstonejs/tools": "4.5.5", "@kitware/vtk.js": "32.12.1" } }, "sha512-76z3uL1J/ASS2d0qBApDVq8JQ3S5mXMD+xZhfrrbqPCkk4X9d9UyLyjylxDgFjlE3QRL+l27/nAyn4yshW6wHA=="],
|
||||
"@cornerstonejs/labelmap-interpolation": ["@cornerstonejs/labelmap-interpolation@4.5.13", "", { "dependencies": { "@itk-wasm/morphological-contour-interpolation": "1.1.0", "itk-wasm": "1.0.0-b.165" }, "peerDependencies": { "@cornerstonejs/core": "4.5.13", "@cornerstonejs/tools": "4.5.13", "@kitware/vtk.js": "32.12.1" } }, "sha512-DbmdJ4jyaJbXaNL3/jVSzA90JHQpV3Q2qsaTTRJoUfVhklgZs64ehyhv5UxR9C5wJoAyiUUGx7zDITX0R0on2w=="],
|
||||
|
||||
"@cornerstonejs/polymorphic-segmentation": ["@cornerstonejs/polymorphic-segmentation@4.5.5", "", { "dependencies": { "@icr/polyseg-wasm": "0.4.0" }, "peerDependencies": { "@cornerstonejs/core": "4.5.5", "@cornerstonejs/tools": "4.5.5", "@kitware/vtk.js": "32.12.1" } }, "sha512-KO6nM/NovzYz3txLKlpAciJDUpIQHI9cga1PpvnqtxGMxdLkXOkaKHeeN506qQD9MAGkTqpy2Z6pYflgRG9PYw=="],
|
||||
"@cornerstonejs/polymorphic-segmentation": ["@cornerstonejs/polymorphic-segmentation@4.5.13", "", { "dependencies": { "@icr/polyseg-wasm": "0.4.0" }, "peerDependencies": { "@cornerstonejs/core": "4.5.13", "@cornerstonejs/tools": "4.5.13", "@kitware/vtk.js": "32.12.1" } }, "sha512-aQTHy2Sz8svoEVJUiK+bbJ9CTPDAly4qScMuzO5hd72MxEzhqcTWACsAIqGP6nlzBSnytQwapB7Xpbmb+N6rwA=="],
|
||||
|
||||
"@cornerstonejs/tools": ["@cornerstonejs/tools@4.5.5", "", { "dependencies": { "@types/offscreencanvas": "2019.7.3", "comlink": "4.4.2", "lodash.get": "4.4.2" }, "peerDependencies": { "@cornerstonejs/core": "4.5.5", "@kitware/vtk.js": "32.12.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-IruCR6KWYM4Z1opnPod8bNkEtJnnQyfFXr0ilmRNDNHj6jQ1/uWQQX/Ss+eWnkAALCUYAU1Co/6zWL5Nuowp8A=="],
|
||||
"@cornerstonejs/tools": ["@cornerstonejs/tools@4.5.13", "", { "dependencies": { "@types/offscreencanvas": "2019.7.3", "comlink": "4.4.2", "lodash.get": "4.4.2" }, "peerDependencies": { "@cornerstonejs/core": "4.5.13", "@kitware/vtk.js": "32.12.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-aAzXwhLc/qNMPQFryu+xJaur9IHKdhxZBDcINLwl0nerMgLpPF2vIbFHvGJQNTl2njzo9Z64MJFDMVnB/rdWtQ=="],
|
||||
|
||||
"@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="],
|
||||
|
||||
|
||||
@ -46,8 +46,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/adapters": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/adapters": "4.5.13",
|
||||
"@cornerstonejs/core": "4.5.13",
|
||||
"@kitware/vtk.js": "32.12.0",
|
||||
"react-color": "2.19.3"
|
||||
}
|
||||
|
||||
@ -46,8 +46,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/adapters": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/adapters": "4.5.13",
|
||||
"@cornerstonejs/core": "4.5.13",
|
||||
"@kitware/vtk.js": "32.12.0",
|
||||
"react-color": "2.19.3"
|
||||
}
|
||||
|
||||
@ -46,9 +46,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/adapters": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/tools": "4.5.5",
|
||||
"@cornerstonejs/adapters": "4.5.13",
|
||||
"@cornerstonejs/core": "4.5.13",
|
||||
"@cornerstonejs/tools": "4.5.13",
|
||||
"classnames": "2.5.1"
|
||||
}
|
||||
}
|
||||
|
||||
@ -42,8 +42,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/tools": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.13",
|
||||
"@cornerstonejs/tools": "4.5.13",
|
||||
"classnames": "2.5.1"
|
||||
}
|
||||
}
|
||||
|
||||
@ -40,7 +40,7 @@
|
||||
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
|
||||
"@cornerstonejs/codec-openjpeg": "1.2.4",
|
||||
"@cornerstonejs/codec-openjph": "2.4.7",
|
||||
"@cornerstonejs/dicom-image-loader": "4.5.5",
|
||||
"@cornerstonejs/dicom-image-loader": "4.5.13",
|
||||
"@ohif/core": "3.12.0-beta.67",
|
||||
"@ohif/ui": "3.12.0-beta.67",
|
||||
"dcmjs": "0.43.1",
|
||||
@ -53,12 +53,12 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/adapters": "4.5.5",
|
||||
"@cornerstonejs/ai": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/labelmap-interpolation": "4.5.5",
|
||||
"@cornerstonejs/polymorphic-segmentation": "4.5.5",
|
||||
"@cornerstonejs/tools": "4.5.5",
|
||||
"@cornerstonejs/adapters": "4.5.13",
|
||||
"@cornerstonejs/ai": "4.5.13",
|
||||
"@cornerstonejs/core": "4.5.13",
|
||||
"@cornerstonejs/labelmap-interpolation": "4.5.13",
|
||||
"@cornerstonejs/polymorphic-segmentation": "4.5.13",
|
||||
"@cornerstonejs/tools": "4.5.13",
|
||||
"@itk-wasm/morphological-contour-interpolation": "1.1.0",
|
||||
"@kitware/vtk.js": "32.12.0",
|
||||
"html2canvas": "1.4.1",
|
||||
|
||||
@ -266,10 +266,35 @@ function commandsModule({
|
||||
referencedDisplaySetInstanceUID
|
||||
);
|
||||
storePositionPresentation(referencedDisplaySet);
|
||||
return commandsManager.runCommand('loadSegmentationDisplaySetsForViewport', {
|
||||
|
||||
const results = commandsManager.runCommand('loadSegmentationDisplaySetsForViewport', {
|
||||
viewportId,
|
||||
displaySetInstanceUIDs: [referencedDisplaySet.displaySetInstanceUID],
|
||||
});
|
||||
|
||||
const disableEditing = customizationService.getCustomization(
|
||||
'panelSegmentation.disableEditing'
|
||||
);
|
||||
if (disableEditing) {
|
||||
const segmentationRepresentations = segmentationService.getSegmentationRepresentations(
|
||||
viewportId,
|
||||
{
|
||||
segmentationId: displaySet.displaySetInstanceUID,
|
||||
}
|
||||
);
|
||||
|
||||
segmentationRepresentations.forEach(representation => {
|
||||
const segmentIndices = Object.keys(representation.segments);
|
||||
segmentIndices.forEach(segmentIndex => {
|
||||
segmentationService.setSegmentLocked(
|
||||
representation.segmentationId,
|
||||
parseInt(segmentIndex),
|
||||
true
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
return results;
|
||||
} else if (displaySet.Modality === 'SR') {
|
||||
const results = commandsManager.runCommand('hydrateStructuredReport', {
|
||||
displaySetInstanceUID: displaySet.displaySetInstanceUID,
|
||||
|
||||
@ -32,8 +32,8 @@
|
||||
"start": "yarn run dev"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/tools": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.13",
|
||||
"@cornerstonejs/tools": "4.5.13",
|
||||
"@ohif/core": "3.12.0-beta.67",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.67",
|
||||
"@ohif/extension-default": "3.12.0-beta.67",
|
||||
|
||||
@ -42,8 +42,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/tools": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.13",
|
||||
"@cornerstonejs/tools": "4.5.13",
|
||||
"@ohif/core": "3.12.0-beta.67",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.67",
|
||||
"@ohif/extension-default": "3.12.0-beta.67",
|
||||
|
||||
@ -34,8 +34,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/tools": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.13",
|
||||
"@cornerstonejs/tools": "4.5.13",
|
||||
"@ohif/core": "3.12.0-beta.67",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.67",
|
||||
"@ohif/extension-ultrasound-pleura-bline": "3.12.0-beta.67",
|
||||
|
||||
@ -53,7 +53,7 @@
|
||||
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
|
||||
"@cornerstonejs/codec-openjpeg": "1.2.4",
|
||||
"@cornerstonejs/codec-openjph": "2.4.7",
|
||||
"@cornerstonejs/dicom-image-loader": "4.5.5",
|
||||
"@cornerstonejs/dicom-image-loader": "4.5.13",
|
||||
"@emotion/serialize": "1.3.3",
|
||||
"@ohif/core": "3.12.0-beta.67",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.67",
|
||||
|
||||
@ -37,8 +37,8 @@
|
||||
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
|
||||
"@cornerstonejs/codec-openjpeg": "1.2.4",
|
||||
"@cornerstonejs/codec-openjph": "2.4.7",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/dicom-image-loader": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.13",
|
||||
"@cornerstonejs/dicom-image-loader": "4.5.13",
|
||||
"@ohif/ui": "3.12.0-beta.67",
|
||||
"cornerstone-math": "0.1.9",
|
||||
"dicom-parser": "1.8.21"
|
||||
|
||||
@ -54,7 +54,10 @@ const renderRangeSetting = option => {
|
||||
key={option.id}
|
||||
>
|
||||
<div className="w-1/3 text-[13px]">{option.name}</div>
|
||||
<div className="w-2/3">
|
||||
<div
|
||||
className="w-2/3"
|
||||
data-cy={option.id}
|
||||
>
|
||||
<RowInputRange
|
||||
minValue={option.min}
|
||||
maxValue={option.max}
|
||||
|
||||
144
tests/ContourSegLocking.spec.ts
Normal file
144
tests/ContourSegLocking.spec.ts
Normal file
@ -0,0 +1,144 @@
|
||||
import { test, expect } from 'playwright-test-coverage';
|
||||
import { visitStudy } from './utils';
|
||||
import { viewportSVGPathLocator } from './utils/locators';
|
||||
import { simulateNormalizedDragOnElement } from './utils/simulateDragOnElement';
|
||||
|
||||
const studyInstanceUID = '1.2.840.113619.2.290.3.3767434740.226.1600859119.501';
|
||||
|
||||
test('should not allow contours to be edited in basic viewer mode', async ({ page }) => {
|
||||
const mode = 'viewer';
|
||||
await visitStudy(page, studyInstanceUID, mode, 2000);
|
||||
|
||||
await page.getByTestId('side-panel-header-right').click();
|
||||
await page.getByTestId('study-browser-thumbnail-no-image').dblclick();
|
||||
// Wait for the segmentation to be loaded.
|
||||
await page.waitForTimeout(5000);
|
||||
|
||||
await page.getByTestId('yes-hydrate-btn').click();
|
||||
|
||||
// Wait for the segmentation to hydrate.
|
||||
await page.waitForTimeout(5000);
|
||||
|
||||
const svgPathLocatorPreEdit = viewportSVGPathLocator({ page, viewportId: 'default' });
|
||||
|
||||
expect(
|
||||
await svgPathLocatorPreEdit.count(),
|
||||
'Expected exactly 1 path element in the viewport'
|
||||
).toBe(1);
|
||||
|
||||
const expectedPathCommands = await svgPathLocatorPreEdit.getAttribute('d');
|
||||
|
||||
// Try to drag one of the edges of the rectangular contour.
|
||||
await simulateNormalizedDragOnElement({
|
||||
locator: svgPathLocatorPreEdit,
|
||||
start: { x: 0.1, y: 0 },
|
||||
end: { x: 0.1, y: -0.2 },
|
||||
});
|
||||
|
||||
const svgPathLocatorPostEdit = viewportSVGPathLocator({ page, viewportId: 'default' });
|
||||
|
||||
expect(
|
||||
await svgPathLocatorPostEdit.getAttribute('d'),
|
||||
'Expected the path commands to be the same as the pre-edit path commands'
|
||||
).toBe(expectedPathCommands);
|
||||
});
|
||||
|
||||
test('should not allow contours to be edited when panelSegmentation.disableEditing is true', async ({
|
||||
page,
|
||||
}) => {
|
||||
const mode = 'segmentation';
|
||||
await visitStudy(page, studyInstanceUID, mode, 2000);
|
||||
|
||||
await page.getByTestId('side-panel-header-right').click();
|
||||
await page.getByTestId('study-browser-thumbnail-no-image').dblclick();
|
||||
// Wait for the segmentation to be loaded.
|
||||
await page.waitForTimeout(5000);
|
||||
|
||||
// disable editing of segmentations via the customization service
|
||||
await page.evaluate(() => {
|
||||
window.services.customizationService.setGlobalCustomization(
|
||||
'panelSegmentation.disableEditing',
|
||||
{
|
||||
$set: true,
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
await page.getByTestId('yes-hydrate-btn').click();
|
||||
|
||||
// Wait for the segmentation to hydrate.
|
||||
await page.waitForTimeout(5000);
|
||||
|
||||
const svgPathLocatorPreEdit = viewportSVGPathLocator({ page, viewportId: 'default' });
|
||||
|
||||
expect(
|
||||
await svgPathLocatorPreEdit.count(),
|
||||
'Expected exactly 1 path element in the viewport'
|
||||
).toBe(1);
|
||||
|
||||
const expectedPathCommands = await svgPathLocatorPreEdit.getAttribute('d');
|
||||
|
||||
// Try to drag one of the edges of the rectangular contour.
|
||||
await simulateNormalizedDragOnElement({
|
||||
locator: svgPathLocatorPreEdit,
|
||||
start: { x: 0.1, y: 0 },
|
||||
end: { x: 0.1, y: -0.2 },
|
||||
});
|
||||
|
||||
const svgPathLocatorPostEdit = viewportSVGPathLocator({ page, viewportId: 'default' });
|
||||
|
||||
expect(
|
||||
await svgPathLocatorPostEdit.getAttribute('d'),
|
||||
'Expected the path commands to be the same as the pre-edit path commands'
|
||||
).toBe(expectedPathCommands);
|
||||
});
|
||||
|
||||
test('should allow contours to be edited when panelSegmentation.disableEditing is false', async ({
|
||||
page,
|
||||
}) => {
|
||||
const mode = 'segmentation';
|
||||
await visitStudy(page, studyInstanceUID, mode, 2000);
|
||||
|
||||
await page.getByTestId('side-panel-header-right').click();
|
||||
await page.getByTestId('study-browser-thumbnail-no-image').dblclick();
|
||||
// Wait for the segmentation to be loaded.
|
||||
await page.waitForTimeout(5000);
|
||||
|
||||
// disable editing of segmentations via the customization service
|
||||
await page.evaluate(() => {
|
||||
window.services.customizationService.setGlobalCustomization(
|
||||
'panelSegmentation.disableEditing',
|
||||
{
|
||||
$set: false,
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
await page.getByTestId('yes-hydrate-btn').click();
|
||||
|
||||
// Wait for the segmentation to hydrate.
|
||||
await page.waitForTimeout(5000);
|
||||
|
||||
const svgPathLocatorPreEdit = viewportSVGPathLocator({ page, viewportId: 'default' });
|
||||
|
||||
expect(
|
||||
await svgPathLocatorPreEdit.count(),
|
||||
'Expected exactly 1 path element in the viewport'
|
||||
).toBe(1);
|
||||
|
||||
const preEditPathCommands = await svgPathLocatorPreEdit.getAttribute('d');
|
||||
|
||||
// Try to drag one of the edges of the rectangular contour.
|
||||
await simulateNormalizedDragOnElement({
|
||||
locator: svgPathLocatorPreEdit,
|
||||
start: { x: 0.1, y: 0 },
|
||||
end: { x: 0.1, y: -0.2 },
|
||||
});
|
||||
|
||||
const svgPathLocatorPostEdit = viewportSVGPathLocator({ page, viewportId: 'default' });
|
||||
|
||||
expect(
|
||||
await svgPathLocatorPostEdit.getAttribute('d'),
|
||||
'Not expecting the path commands to be the same as the pre-edit path commands'
|
||||
).not.toBe(preEditPathCommands);
|
||||
});
|
||||
118
tests/LabelMapSegLocking.spec.ts
Normal file
118
tests/LabelMapSegLocking.spec.ts
Normal file
@ -0,0 +1,118 @@
|
||||
import { test } from 'playwright-test-coverage';
|
||||
import { visitStudy, checkForScreenshot, screenShotPaths } from './utils';
|
||||
import { press } from './utils/keyboardUtils';
|
||||
import { simulateNormalizedDragOnElement } from './utils/simulateDragOnElement';
|
||||
import { viewportLocator } from './utils/locators';
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
const studyInstanceUID = '1.3.6.1.4.1.14519.5.2.1.256467663913010332776401703474716742458';
|
||||
const mode = 'segmentation';
|
||||
await visitStudy(page, studyInstanceUID, mode, 2000);
|
||||
});
|
||||
|
||||
test('should prevent editing of label map segmentations when panelSegmentation.disableEditing is true', async ({
|
||||
page,
|
||||
}) => {
|
||||
// disable editing of segmentations via the customization service
|
||||
await page.evaluate(() => {
|
||||
window.services.customizationService.setGlobalCustomization(
|
||||
'panelSegmentation.disableEditing',
|
||||
{
|
||||
$set: true,
|
||||
}
|
||||
);
|
||||
});
|
||||
await page.getByTestId('study-browser-thumbnail-no-image').dblclick();
|
||||
// Wait for the segmentation to be loaded.
|
||||
await page.waitForTimeout(5000);
|
||||
|
||||
await page.getByTestId('yes-hydrate-btn').click();
|
||||
|
||||
// Wait for the segmentation to hydrate.
|
||||
await page.waitForTimeout(5000);
|
||||
|
||||
// navigate to the 12th image and ensure the correct overlay is displayed
|
||||
await press({ page, key: 'ArrowDown', nTimes: 11 });
|
||||
|
||||
await checkForScreenshot(page, page, screenShotPaths.labelMapSegLocking.globalLockedSegPreEdit);
|
||||
|
||||
// Attempt to erase the segmentations.
|
||||
await page.getByTestId('Eraser-btn').click();
|
||||
|
||||
// Use the largest eraser radius to help ensure the entire image is erased.
|
||||
await page.locator(`css=div[data-cy="eraser-radius"] input`).fill('1000');
|
||||
|
||||
// Attempt to erase the segmentations by dragging the eraser tool across the image several times.
|
||||
await simulateNormalizedDragOnElement({
|
||||
locator: viewportLocator({ page, viewportId: 'default' }),
|
||||
start: { x: 0.01, y: 0.25 },
|
||||
end: { x: 1.0, y: 0.25 },
|
||||
});
|
||||
await simulateNormalizedDragOnElement({
|
||||
locator: viewportLocator({ page, viewportId: 'default' }),
|
||||
start: { x: 0.01, y: 0.5 },
|
||||
end: { x: 1.0, y: 0.5 },
|
||||
});
|
||||
await simulateNormalizedDragOnElement({
|
||||
locator: viewportLocator({ page, viewportId: 'default' }),
|
||||
start: { x: 0.01, y: 0.75 },
|
||||
end: { x: 1.0, y: 0.75 },
|
||||
});
|
||||
|
||||
await checkForScreenshot(page, page, screenShotPaths.labelMapSegLocking.globalLockedSegPostEdit);
|
||||
});
|
||||
|
||||
test('should allow editing of label map segmentations when panelSegmentation.disableEditing is false', async ({
|
||||
page,
|
||||
}) => {
|
||||
// disable editing of segmentations via the customization service
|
||||
await page.evaluate(() => {
|
||||
window.services.customizationService.setGlobalCustomization(
|
||||
'panelSegmentation.disableEditing',
|
||||
{
|
||||
$set: false,
|
||||
}
|
||||
);
|
||||
});
|
||||
await page.getByTestId('study-browser-thumbnail-no-image').dblclick();
|
||||
// Wait for the segmentation to be loaded.
|
||||
await page.waitForTimeout(5000);
|
||||
|
||||
await page.getByTestId('yes-hydrate-btn').click();
|
||||
// Wait for the segmentation to hydrate.
|
||||
await page.waitForTimeout(5000);
|
||||
|
||||
// navigate to the 12th image and ensure the correct overlay is displayed
|
||||
await press({ page, key: 'ArrowDown', nTimes: 11 });
|
||||
|
||||
await checkForScreenshot(page, page, screenShotPaths.labelMapSegLocking.globalUnlockedSegPreEdit);
|
||||
|
||||
// Attempt to erase the segmentations.
|
||||
await page.getByTestId('Eraser-btn').click();
|
||||
|
||||
// Use the largest eraser radius to help ensure the eraser passes over the entire image.
|
||||
await page.locator(`css=div[data-cy="eraser-radius"] input`).fill('1000');
|
||||
|
||||
// Attempt to erase the segmentations by dragging the eraser tool across the image several times.
|
||||
await simulateNormalizedDragOnElement({
|
||||
locator: viewportLocator({ page, viewportId: 'default' }),
|
||||
start: { x: 0.01, y: 0.25 },
|
||||
end: { x: 1.0, y: 0.25 },
|
||||
});
|
||||
await simulateNormalizedDragOnElement({
|
||||
locator: viewportLocator({ page, viewportId: 'default' }),
|
||||
start: { x: 0.01, y: 0.5 },
|
||||
end: { x: 1.0, y: 0.5 },
|
||||
});
|
||||
await simulateNormalizedDragOnElement({
|
||||
locator: viewportLocator({ page, viewportId: 'default' }),
|
||||
start: { x: 0.01, y: 0.75 },
|
||||
end: { x: 1.0, y: 0.75 },
|
||||
});
|
||||
|
||||
await checkForScreenshot(
|
||||
page,
|
||||
page,
|
||||
screenShotPaths.labelMapSegLocking.globalUnlockedSegPostEdit
|
||||
);
|
||||
});
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 304 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 297 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 282 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 299 KiB |
@ -9,3 +9,23 @@ export const viewportLocator = ({
|
||||
}): Locator => {
|
||||
return page.locator(`css=div[data-viewportid="${viewportId}"]`);
|
||||
};
|
||||
|
||||
export const viewportSVGLocator = ({
|
||||
page,
|
||||
viewportId,
|
||||
}: {
|
||||
page: Page;
|
||||
viewportId: string;
|
||||
}): Locator => {
|
||||
return page.locator(`css=div[data-viewportid="${viewportId}"] svg`);
|
||||
};
|
||||
|
||||
export const viewportSVGPathLocator = ({
|
||||
page,
|
||||
viewportId,
|
||||
}: {
|
||||
page: Page;
|
||||
viewportId: string;
|
||||
}): Locator => {
|
||||
return page.locator(`css=div[data-viewportid="${viewportId}"] svg path`);
|
||||
};
|
||||
|
||||
@ -26,6 +26,12 @@ const screenShotPaths = {
|
||||
ellipse: {
|
||||
ellipseDisplayedCorrectly: 'ellipseDisplayedCorrectly.png',
|
||||
},
|
||||
labelMapSegLocking: {
|
||||
globalLockedSegPreEdit: 'lockedSegPreEdit.png',
|
||||
globalLockedSegPostEdit: 'lockedSegPostEdit.png',
|
||||
globalUnlockedSegPreEdit: 'unlockedSegPreEdit.png',
|
||||
globalUnlockedSegPostEdit: 'unlockedSegPostEdit.png',
|
||||
},
|
||||
length: {
|
||||
lengthDisplayedCorrectly: 'lengthDisplayedCorrectly.png',
|
||||
},
|
||||
|
||||
67
tests/utils/simulateDragOnElement.ts
Normal file
67
tests/utils/simulateDragOnElement.ts
Normal file
@ -0,0 +1,67 @@
|
||||
import { Locator } from 'playwright';
|
||||
|
||||
/**
|
||||
* Simulates a drag operation on an element using normalized coordinates.
|
||||
*
|
||||
* @param locator - The locator to drag on.
|
||||
* @param start - The start point with x and y coordinates, normalized to the element's bounding box.
|
||||
* @param end - The end point with x and y coordinates, normalized to the element's bounding box.
|
||||
* @param button - The mouse button to use for the drag (default is 'left').
|
||||
* @param delay - Milliseconds between steps (default is 50).
|
||||
* @param steps - Number of intermediate positions for smooth dragging (default is 5).
|
||||
*/
|
||||
export async function simulateNormalizedDragOnElement({
|
||||
locator,
|
||||
start,
|
||||
end,
|
||||
button = 'left',
|
||||
delay = 50,
|
||||
steps = 10,
|
||||
}: {
|
||||
locator: Locator;
|
||||
start: { x: number; y: number };
|
||||
end: { x: number; y: number };
|
||||
button?: 'left' | 'right' | 'middle';
|
||||
delay?: number;
|
||||
steps?: number;
|
||||
}) {
|
||||
const bBox = await locator.boundingBox();
|
||||
if (!bBox) {
|
||||
throw new Error('Element bounding box not found');
|
||||
}
|
||||
|
||||
const startPosition = {
|
||||
x: bBox.x + start.x * bBox.width,
|
||||
y: bBox.y + start.y * bBox.height,
|
||||
};
|
||||
const endPosition = {
|
||||
x: bBox.x + end.x * bBox.width,
|
||||
y: bBox.y + end.y * bBox.height,
|
||||
};
|
||||
|
||||
// Get the page from the locator context
|
||||
const page = locator.page();
|
||||
|
||||
page.mouse.move(startPosition.x, startPosition.y);
|
||||
|
||||
// Start drag
|
||||
await page.mouse.down({ button });
|
||||
|
||||
// Calculate intermediate positions for smooth dragging
|
||||
const deltaX = (endPosition.x - startPosition.x) / steps;
|
||||
const deltaY = (endPosition.y - startPosition.y) / steps;
|
||||
|
||||
// Move through intermediate positions
|
||||
for (let i = 1; i <= steps; i++) {
|
||||
const currentX = startPosition.x + deltaX * i;
|
||||
const currentY = startPosition.y + deltaY * i;
|
||||
// Add delay if specified
|
||||
if (delay > 0) {
|
||||
await page.waitForTimeout(delay);
|
||||
}
|
||||
await page.mouse.move(currentX, currentY);
|
||||
}
|
||||
|
||||
// End drag
|
||||
await page.mouse.up({ button });
|
||||
}
|
||||
56
yarn.lock
56
yarn.lock
@ -1280,10 +1280,10 @@
|
||||
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
||||
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
||||
|
||||
"@cornerstonejs/adapters@4.5.5":
|
||||
version "4.5.5"
|
||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-4.5.5.tgz#c1efbd5fb9a744ffd7034453ca2d32b754e6b4fc"
|
||||
integrity sha512-tZC8ScqmSouWt5/0t9cUqtsSVW5ObhniyuZuF6QZvXOyWU7I4fkmtNX4RtTUi9cvuqoDA0nckejkEQhp5OjKEw==
|
||||
"@cornerstonejs/adapters@4.5.13":
|
||||
version "4.5.13"
|
||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-4.5.13.tgz#432a5c2a3131ab0ded4a36efebbf971ce3d71e55"
|
||||
integrity sha512-qWB32zsY4Ets2/si2fUBqHckBZYrdEYSPK/mya3S4+qLdB5KImZZJQYq4aqVg+gRvZc9aHIKVI1jjZCkxdvV0A==
|
||||
dependencies:
|
||||
"@babel/runtime-corejs2" "7.26.10"
|
||||
buffer "6.0.3"
|
||||
@ -1291,10 +1291,10 @@
|
||||
gl-matrix "3.4.3"
|
||||
ndarray "1.0.19"
|
||||
|
||||
"@cornerstonejs/ai@4.5.5":
|
||||
version "4.5.5"
|
||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/ai/-/ai-4.5.5.tgz#1fb0dab8dcc4f723b8887d8d6c2d3c412549847f"
|
||||
integrity sha512-31/ARIIr2EyDwyeNsI58XLYpbEikaPqYuR/7tQMFvqwX0plpsaAZx0wQ+ta0YBag9/vAtpuyjg1sGMaqS7v9Yw==
|
||||
"@cornerstonejs/ai@4.5.13":
|
||||
version "4.5.13"
|
||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/ai/-/ai-4.5.13.tgz#d2d662344266d0957bd90d154d94113b83a6633d"
|
||||
integrity sha512-5eVrkiUuSWcqc8KOWwXzN/1KwbgVzS/9AZjwZ7GJdFYBmRTOkFVhgKlx86VsXecgzuJ6tUSP72ChyPEDgYuh+g==
|
||||
dependencies:
|
||||
"@babel/runtime-corejs2" "7.26.10"
|
||||
buffer "6.0.3"
|
||||
@ -1330,20 +1330,20 @@
|
||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/codec-openjph/-/codec-openjph-2.4.7.tgz#784394d05d8cf735640e9c3baa206535ee8e0376"
|
||||
integrity sha512-qvP4q4JDib7mi9r7LqKOwqz7YZ8gjtDX4ZCezeYf8+eb7MBXCz5uXAMeVF3yz9Axw4XiIMdB/pqXkm8tqCl13w==
|
||||
|
||||
"@cornerstonejs/core@4.5.5":
|
||||
version "4.5.5"
|
||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-4.5.5.tgz#0fe82a443810105c742cbc4ed5a8f8f26b4535f9"
|
||||
integrity sha512-fThmbuCEZosLUf46pNxAj0UiNYWpjKYNAj0pJoOLc6Ck3Q6lzsA4lF7Hv2LT9Ek0P9Hdfjwjjfjm4mkLevmZBg==
|
||||
"@cornerstonejs/core@4.5.13":
|
||||
version "4.5.13"
|
||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-4.5.13.tgz#c11ea09bf97ef5af2d85b2569dac3a81233e1143"
|
||||
integrity sha512-a/cQ16KNxVW32WdIihAjt/ry5SP+O6ffQ8ecf0iNa/cbqyOuvw+R6xSue2ZcTLHm/vC3R7PaocDdAwuvIEVwKw==
|
||||
dependencies:
|
||||
"@kitware/vtk.js" "32.12.1"
|
||||
comlink "4.4.2"
|
||||
gl-matrix "3.4.3"
|
||||
loglevel "1.9.2"
|
||||
|
||||
"@cornerstonejs/dicom-image-loader@4.5.5":
|
||||
version "4.5.5"
|
||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-4.5.5.tgz#441509fa5173f3ee5e7253d741ecca8e718d2f78"
|
||||
integrity sha512-v6nLkpS8rEFkNK8ROZkKQkiHDhOoGmVvknnKSuK0tWpN3Lpha9tfAfWiZyOJGV/HJcZhmXQcnbk3hR8/QUEs6w==
|
||||
"@cornerstonejs/dicom-image-loader@4.5.13":
|
||||
version "4.5.13"
|
||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-4.5.13.tgz#f79253a818fc31659c9803a35fdda4d5a3eeab84"
|
||||
integrity sha512-2u5yiS3gObKMWAeABhBl9OpWK5fSclMIWjYVgF9bAu9lNIksRkbRj6U+gpcftAKKXF0gW+uecRIiBqFgEcr2eQ==
|
||||
dependencies:
|
||||
"@cornerstonejs/codec-charls" "1.2.3"
|
||||
"@cornerstonejs/codec-libjpeg-turbo-8bit" "1.2.2"
|
||||
@ -1355,25 +1355,25 @@
|
||||
pako "2.1.0"
|
||||
uuid "9.0.1"
|
||||
|
||||
"@cornerstonejs/labelmap-interpolation@4.5.5":
|
||||
version "4.5.5"
|
||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/labelmap-interpolation/-/labelmap-interpolation-4.5.5.tgz#6d92183e647442966983df56cf371e1e84ad2dc9"
|
||||
integrity sha512-76z3uL1J/ASS2d0qBApDVq8JQ3S5mXMD+xZhfrrbqPCkk4X9d9UyLyjylxDgFjlE3QRL+l27/nAyn4yshW6wHA==
|
||||
"@cornerstonejs/labelmap-interpolation@4.5.13":
|
||||
version "4.5.13"
|
||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/labelmap-interpolation/-/labelmap-interpolation-4.5.13.tgz#a84cffd2ec132444957229495fc356bd5e827894"
|
||||
integrity sha512-DbmdJ4jyaJbXaNL3/jVSzA90JHQpV3Q2qsaTTRJoUfVhklgZs64ehyhv5UxR9C5wJoAyiUUGx7zDITX0R0on2w==
|
||||
dependencies:
|
||||
"@itk-wasm/morphological-contour-interpolation" "1.1.0"
|
||||
itk-wasm "1.0.0-b.165"
|
||||
|
||||
"@cornerstonejs/polymorphic-segmentation@4.5.5":
|
||||
version "4.5.5"
|
||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/polymorphic-segmentation/-/polymorphic-segmentation-4.5.5.tgz#c700f76748aa88e8fad6c8d922736d8c143c6109"
|
||||
integrity sha512-KO6nM/NovzYz3txLKlpAciJDUpIQHI9cga1PpvnqtxGMxdLkXOkaKHeeN506qQD9MAGkTqpy2Z6pYflgRG9PYw==
|
||||
"@cornerstonejs/polymorphic-segmentation@4.5.13":
|
||||
version "4.5.13"
|
||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/polymorphic-segmentation/-/polymorphic-segmentation-4.5.13.tgz#5ddedb7b290213b6012ee65804523306a8d79807"
|
||||
integrity sha512-aQTHy2Sz8svoEVJUiK+bbJ9CTPDAly4qScMuzO5hd72MxEzhqcTWACsAIqGP6nlzBSnytQwapB7Xpbmb+N6rwA==
|
||||
dependencies:
|
||||
"@icr/polyseg-wasm" "0.4.0"
|
||||
|
||||
"@cornerstonejs/tools@4.5.5":
|
||||
version "4.5.5"
|
||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-4.5.5.tgz#4b2e519873211298f4d82020922d6d363180693d"
|
||||
integrity sha512-IruCR6KWYM4Z1opnPod8bNkEtJnnQyfFXr0ilmRNDNHj6jQ1/uWQQX/Ss+eWnkAALCUYAU1Co/6zWL5Nuowp8A==
|
||||
"@cornerstonejs/tools@4.5.13":
|
||||
version "4.5.13"
|
||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-4.5.13.tgz#b4d09fca3e0d56792218935f40c480eeb1142131"
|
||||
integrity sha512-aAzXwhLc/qNMPQFryu+xJaur9IHKdhxZBDcINLwl0nerMgLpPF2vIbFHvGJQNTl2njzo9Z64MJFDMVnB/rdWtQ==
|
||||
dependencies:
|
||||
"@types/offscreencanvas" "2019.7.3"
|
||||
comlink "4.4.2"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user