Compare commits
27
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2bc0647861 | ||
|
|
2a01dcce29 | ||
|
|
1df4f843fe | ||
|
|
cf0b561a49 | ||
|
|
f1675559ee | ||
|
|
ffd9ec3273 | ||
|
|
66e6d73ad6 | ||
|
|
07c45d0364 | ||
|
|
503780247c | ||
|
|
82c4a0a8d0 | ||
|
|
6a523ff78d | ||
|
|
170e860aa1 | ||
|
|
3e1d50c8d2 | ||
|
|
05b80305dc | ||
|
|
4620cc3acf | ||
|
|
cf8f4aa120 | ||
|
|
f75273ece6 | ||
|
|
42aa2df626 | ||
|
|
be6f3db1ce | ||
|
|
c41dbc8236 | ||
|
|
53694da216 | ||
|
|
9d68b6ef31 | ||
|
|
2300c70314 | ||
|
|
86e924fb88 | ||
|
|
e988216b2b | ||
|
|
23c8fdca00 | ||
|
|
faea09e7ef |
No files matched your search
@@ -3,6 +3,99 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **segmentation:** Fixed the manual scrolling of the segments list and implemented automatic scrolling to the active segment. ([#5510](https://github.com/OHIF/Viewers/issues/5510)) ([1df4f84](https://github.com/OHIF/Viewers/commit/1df4f843fe3c377643938563ff9e2e4f930d8537))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **rendering:** Fix palette color LUT conversion causing black images ([#5509](https://github.com/OHIF/Viewers/issues/5509)) ([ffd9ec3](https://github.com/OHIF/Viewers/commit/ffd9ec32730580e266ffae365a10ac3e524dd6cf))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Pass the correct sop uid + frame for rehydration to prevent associating rehydrated measurements with the wrong data ([#5506](https://github.com/OHIF/Viewers/issues/5506)) ([5037802](https://github.com/OHIF/Viewers/commit/503780247ce7228c602a539fd88ea374e7d0d42f)), closes [#2404](https://github.com/OHIF/Viewers/issues/2404)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **segmentation:** Lock all rehydrated segmentation segments when panelSegmentation.disableEditing is true. ([#5503](https://github.com/OHIF/Viewers/issues/5503)) ([170e860](https://github.com/OHIF/Viewers/commit/170e860aa1b786ab6056cf31076804302a2bc462))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **ErrorBoundary:** Allow for details to be shown in production. ([#5504](https://github.com/OHIF/Viewers/issues/5504)) ([4620cc3](https://github.com/OHIF/Viewers/commit/4620cc3acf89f218c3feaaf4c153a3dc8b023b23))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package ohif-monorepo-root
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package ohif-monorepo-root
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **docker:** Use bun version 1.2.23 for docker build. ([#5501](https://github.com/OHIF/Viewers/issues/5501)) ([86e924f](https://github.com/OHIF/Viewers/commit/86e924fb88cc146f91c7d826ee071e451de47942))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Segmentation not displayed and unable to draw segments in volume viewport after converting Labelmap to Surface ([#5488](https://github.com/OHIF/Viewers/issues/5488)) ([faea09e](https://github.com/OHIF/Viewers/commit/faea09e7ef2667aad5cef1efc2a6516677ca2915))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -49,7 +49,7 @@ RUN apt-get update && apt-get install -y build-essential python3
|
||||
|
||||
RUN mkdir /usr/src/app
|
||||
WORKDIR /usr/src/app
|
||||
RUN npm install -g bun
|
||||
RUN npm install -g bun@1.2.23
|
||||
RUN npm install -g lerna@7.4.2
|
||||
ENV PATH=/usr/src/app/node_modules/.bin:$PATH
|
||||
|
||||
|
||||
+72
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @externals/devDependencies
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @externals/devDependencies
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @externals/devDependencies
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @externals/devDependencies
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @externals/devDependencies
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @externals/devDependencies
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @externals/devDependencies
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @externals/devDependencies
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @externals/devDependencies
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @externals/devDependencies
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@externals/devDependencies",
|
||||
"description": "External dev dependencies - put dev build dependencies here",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"license": "MIT",
|
||||
"private": true,
|
||||
"engines": {
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @externals/dicom-microscopy-viewer
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @externals/dicom-microscopy-viewer
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @externals/dicom-microscopy-viewer
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @externals/dicom-microscopy-viewer
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @externals/dicom-microscopy-viewer
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @externals/dicom-microscopy-viewer
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @externals/dicom-microscopy-viewer
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @externals/dicom-microscopy-viewer
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @externals/dicom-microscopy-viewer
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @externals/dicom-microscopy-viewer
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@externals/dicom-microscopy-viewer",
|
||||
"description": "External reference to dicom-microscopy-viewer",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"dicom-microscopy-viewer": "0.48.6"
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
},
|
||||
"addOns/externals/devDependencies": {
|
||||
"name": "@externals/devDependencies",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"dependencies": {
|
||||
"dicom-microscopy-viewer": "0.48.6",
|
||||
},
|
||||
},
|
||||
"extensions/cornerstone": {
|
||||
"name": "@ohif/extension-cornerstone",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.68",
|
||||
"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.19",
|
||||
"@cornerstonejs/ai": "4.5.19",
|
||||
"@cornerstonejs/core": "4.5.19",
|
||||
"@cornerstonejs/labelmap-interpolation": "4.5.19",
|
||||
"@cornerstonejs/polymorphic-segmentation": "4.5.19",
|
||||
"@cornerstonejs/tools": "4.5.19",
|
||||
"@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.19",
|
||||
"@ohif/core": "3.12.0-beta.68",
|
||||
"@ohif/ui": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/adapters": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/adapters": "4.5.19",
|
||||
"@cornerstonejs/core": "4.5.19",
|
||||
"@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.68",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.68",
|
||||
"@ohif/extension-default": "3.12.0-beta.68",
|
||||
"@ohif/i18n": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"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.68",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.68",
|
||||
"@ohif/extension-default": "3.12.0-beta.68",
|
||||
"@ohif/i18n": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/adapters": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/adapters": "4.5.19",
|
||||
"@cornerstonejs/core": "4.5.19",
|
||||
"@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.68",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.68",
|
||||
"@ohif/extension-default": "3.12.0-beta.68",
|
||||
"@ohif/i18n": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"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.19",
|
||||
"@cornerstonejs/core": "4.5.19",
|
||||
"@cornerstonejs/tools": "4.5.19",
|
||||
"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.68",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.68",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.68",
|
||||
"@ohif/ui": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/tools": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.19",
|
||||
"@cornerstonejs/tools": "4.5.19",
|
||||
"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.68",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.68",
|
||||
"@ohif/extension-default": "3.12.0-beta.68",
|
||||
"@ohif/i18n": "3.12.0-beta.68",
|
||||
"@ohif/ui": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"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.68",
|
||||
"@ohif/i18n": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"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.68",
|
||||
"@ohif/extension-default": "3.12.0-beta.68",
|
||||
"@ohif/i18n": "3.12.0-beta.68",
|
||||
"@ohif/ui": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"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.68",
|
||||
"@ohif/ui": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"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.68",
|
||||
"@ohif/ui": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@ohif/ui": "3.12.0-beta.58",
|
||||
"@ohif/ui": "3.12.0-beta.68",
|
||||
"@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.19",
|
||||
"@cornerstonejs/tools": "4.5.19",
|
||||
"@ohif/core": "3.12.0-beta.68",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.68",
|
||||
"@ohif/extension-default": "3.12.0-beta.68",
|
||||
"@ohif/ui": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"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.68",
|
||||
"@ohif/ui": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"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.68",
|
||||
"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.19",
|
||||
"@cornerstonejs/tools": "4.5.19",
|
||||
"@ohif/core": "3.12.0-beta.68",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.68",
|
||||
"@ohif/extension-default": "3.12.0-beta.68",
|
||||
"@ohif/i18n": "3.12.0-beta.68",
|
||||
"@ohif/ui-next": "3.12.0-beta.68",
|
||||
},
|
||||
"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.68",
|
||||
"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.68",
|
||||
"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.68",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.68",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.68",
|
||||
"@ohif/extension-default": "3.12.0-beta.68",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.68",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.68",
|
||||
},
|
||||
},
|
||||
"modes/basic-test-mode": {
|
||||
"name": "@ohif/mode-test",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.68",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.68",
|
||||
"@ohif/extension-default": "3.12.0-beta.68",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.68",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.68",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.68",
|
||||
"@ohif/extension-test": "3.12.0-beta.68",
|
||||
},
|
||||
},
|
||||
"modes/longitudinal": {
|
||||
"name": "@ohif/mode-longitudinal",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.68",
|
||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.68",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.68",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.68",
|
||||
"@ohif/extension-default": "3.12.0-beta.68",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.68",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.68",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.68",
|
||||
},
|
||||
},
|
||||
"modes/microscopy": {
|
||||
"name": "@ohif/mode-microscopy",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"@ohif/extension-dicom-microscopy": "3.12.0-beta.68",
|
||||
},
|
||||
},
|
||||
"modes/preclinical-4d": {
|
||||
"name": "@ohif/mode-preclinical-4d",
|
||||
"version": "3.12.0-beta.58",
|
||||
"version": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"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.68",
|
||||
"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.68",
|
||||
"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.19",
|
||||
"@cornerstonejs/tools": "4.5.19",
|
||||
"@ohif/core": "3.12.0-beta.68",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.68",
|
||||
"@ohif/extension-ultrasound-pleura-bline": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"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.19",
|
||||
"@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.68",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.68",
|
||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.68",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.68",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.68",
|
||||
"@ohif/extension-default": "3.12.0-beta.68",
|
||||
"@ohif/extension-dicom-microscopy": "3.12.0-beta.68",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.68",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.68",
|
||||
"@ohif/extension-test": "3.12.0-beta.68",
|
||||
"@ohif/extension-ultrasound-pleura-bline": "3.12.0-beta.68",
|
||||
"@ohif/i18n": "3.12.0-beta.68",
|
||||
"@ohif/mode-basic-dev-mode": "3.12.0-beta.68",
|
||||
"@ohif/mode-longitudinal": "3.12.0-beta.68",
|
||||
"@ohif/mode-microscopy": "3.12.0-beta.68",
|
||||
"@ohif/mode-test": "3.12.0-beta.68",
|
||||
"@ohif/mode-ultrasound-pleura-bline": "3.12.0-beta.68",
|
||||
"@ohif/ui": "3.12.0-beta.68",
|
||||
"@ohif/ui-next": "3.12.0-beta.68",
|
||||
"@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.68",
|
||||
"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.68",
|
||||
"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.19",
|
||||
"@cornerstonejs/dicom-image-loader": "4.5.19",
|
||||
"@ohif/ui": "3.12.0-beta.68",
|
||||
"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.68",
|
||||
"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.68",
|
||||
"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.68",
|
||||
"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.19", "", { "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.19", "@cornerstonejs/tools": "4.5.19" } }, "sha512-9WGR8paIYt4trfaFfwrsNyOoFiBuR4lgeHwokyAUa/3f3goRlKPKtxmSGbF1rH6GDLqUvb00EAHl02G7teGZLQ=="],
|
||||
|
||||
"@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.19", "", { "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.19", "@cornerstonejs/tools": "4.5.19" } }, "sha512-IHZgu7enyOlJPvNhykglwvx3hncEU1OKY417BJviOlvHORDe0baKGJwkvoxdkXVBfk1W4/3/Z8Eo5jB6wWXjDg=="],
|
||||
|
||||
"@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.19", "", { "dependencies": { "@kitware/vtk.js": "32.12.1", "comlink": "4.4.2", "gl-matrix": "3.4.3", "loglevel": "1.9.2" } }, "sha512-p2uCEgxul1eB5mgy03KYkAaJEtg6ebGIqI/zA7bT7bt6ow8J+LCNpya9YZd4th9KUg0+16qQqhSoVmeTszjZLQ=="],
|
||||
|
||||
"@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.19", "", { "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.19" } }, "sha512-B4hPQHEsmlUlW70C+uBDhHctPsaCbI0RHOHi5Fhjwal3VQqrSwZ6gU6JT2I6ak7EdL0Lr916LFP5gLMGu6hxPg=="],
|
||||
|
||||
"@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.19", "", { "dependencies": { "@itk-wasm/morphological-contour-interpolation": "1.1.0", "itk-wasm": "1.0.0-b.165" }, "peerDependencies": { "@cornerstonejs/core": "4.5.19", "@cornerstonejs/tools": "4.5.19", "@kitware/vtk.js": "32.12.1" } }, "sha512-YxBrrlx4SiBS4Vyswxi271ut97tP/22e67dmuAxROAq28JZslgyQec1bxja+qQlTPCX9CeFxvRTEr4B1T2/IVg=="],
|
||||
|
||||
"@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.19", "", { "dependencies": { "@icr/polyseg-wasm": "0.4.0" }, "peerDependencies": { "@cornerstonejs/core": "4.5.19", "@cornerstonejs/tools": "4.5.19", "@kitware/vtk.js": "32.12.1" } }, "sha512-v/o+qQDHH4wKec9/adZQAX1j1MLYgqg0U5iHECK46Cn9NEPB0yK3bPPhiQLGPEUUMm202ETOynBnFtvHnpki3A=="],
|
||||
|
||||
"@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.19", "", { "dependencies": { "@types/offscreencanvas": "2019.7.3", "comlink": "4.4.2", "lodash.get": "4.4.2" }, "peerDependencies": { "@cornerstonejs/core": "4.5.19", "@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-XDb4ffPy/FmgSAClnlA563+D1PI3onqnRQ5XBrOIF4Mc7/2x34t/5LBCqixVb2yZ39W9M4BVuDM/VbHiIqE5kQ=="],
|
||||
|
||||
"@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="],
|
||||
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
3137aed0170196a61e16c6dac0c15bcc41691919
|
||||
1df4f843fe3c377643938563ff9e2e4f930d8537
|
||||
@@ -3,6 +3,84 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-pmap
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-pmap
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Pass the correct sop uid + frame for rehydration to prevent associating rehydrated measurements with the wrong data ([#5506](https://github.com/OHIF/Viewers/issues/5506)) ([5037802](https://github.com/OHIF/Viewers/commit/503780247ce7228c602a539fd88ea374e7d0d42f)), closes [#2404](https://github.com/OHIF/Viewers/issues/2404)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **segmentation:** Lock all rehydrated segmentation segments when panelSegmentation.disableEditing is true. ([#5503](https://github.com/OHIF/Viewers/issues/5503)) ([170e860](https://github.com/OHIF/Viewers/commit/170e860aa1b786ab6056cf31076804302a2bc462))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-pmap
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-pmap
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-pmap
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-pmap
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-pmap
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-pmap
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/extension-cornerstone-dicom-pmap",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "DICOM Parametric Map read workflow",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
@@ -33,10 +33,10 @@
|
||||
"start": "yarn run dev"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.62",
|
||||
"@ohif/extension-default": "3.12.0-beta.62",
|
||||
"@ohif/i18n": "3.12.0-beta.62",
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.71",
|
||||
"@ohif/extension-default": "3.12.0-beta.71",
|
||||
"@ohif/i18n": "3.12.0-beta.71",
|
||||
"prop-types": "15.8.1",
|
||||
"react": "18.3.1",
|
||||
"react-dom": "18.3.1",
|
||||
@@ -46,8 +46,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/adapters": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/adapters": "4.5.19",
|
||||
"@cornerstonejs/core": "4.5.19",
|
||||
"@kitware/vtk.js": "32.12.0",
|
||||
"react-color": "2.19.3"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-rt
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-rt
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-rt
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-rt
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-rt
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-rt
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-rt
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-rt
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-rt
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-rt
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/extension-cornerstone-dicom-rt",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "DICOM RT read workflow",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
@@ -33,10 +33,10 @@
|
||||
"start": "yarn run dev"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.62",
|
||||
"@ohif/extension-default": "3.12.0-beta.62",
|
||||
"@ohif/i18n": "3.12.0-beta.62",
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.71",
|
||||
"@ohif/extension-default": "3.12.0-beta.71",
|
||||
"@ohif/i18n": "3.12.0-beta.71",
|
||||
"prop-types": "15.8.1",
|
||||
"react": "18.3.1",
|
||||
"react-dom": "18.3.1",
|
||||
|
||||
@@ -3,6 +3,84 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-seg
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-seg
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Pass the correct sop uid + frame for rehydration to prevent associating rehydrated measurements with the wrong data ([#5506](https://github.com/OHIF/Viewers/issues/5506)) ([5037802](https://github.com/OHIF/Viewers/commit/503780247ce7228c602a539fd88ea374e7d0d42f)), closes [#2404](https://github.com/OHIF/Viewers/issues/2404)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **segmentation:** Lock all rehydrated segmentation segments when panelSegmentation.disableEditing is true. ([#5503](https://github.com/OHIF/Viewers/issues/5503)) ([170e860](https://github.com/OHIF/Viewers/commit/170e860aa1b786ab6056cf31076804302a2bc462))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-seg
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-seg
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-seg
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-seg
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-seg
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-seg
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/extension-cornerstone-dicom-seg",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "DICOM SEG read workflow",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
@@ -33,10 +33,10 @@
|
||||
"start": "yarn run dev"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.62",
|
||||
"@ohif/extension-default": "3.12.0-beta.62",
|
||||
"@ohif/i18n": "3.12.0-beta.62",
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.71",
|
||||
"@ohif/extension-default": "3.12.0-beta.71",
|
||||
"@ohif/i18n": "3.12.0-beta.71",
|
||||
"prop-types": "15.8.1",
|
||||
"react": "18.3.1",
|
||||
"react-dom": "18.3.1",
|
||||
@@ -46,8 +46,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/adapters": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/adapters": "4.5.19",
|
||||
"@cornerstonejs/core": "4.5.19",
|
||||
"@kitware/vtk.js": "32.12.0",
|
||||
"react-color": "2.19.3"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,84 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-sr
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-sr
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Pass the correct sop uid + frame for rehydration to prevent associating rehydrated measurements with the wrong data ([#5506](https://github.com/OHIF/Viewers/issues/5506)) ([5037802](https://github.com/OHIF/Viewers/commit/503780247ce7228c602a539fd88ea374e7d0d42f)), closes [#2404](https://github.com/OHIF/Viewers/issues/2404)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **segmentation:** Lock all rehydrated segmentation segments when panelSegmentation.disableEditing is true. ([#5503](https://github.com/OHIF/Viewers/issues/5503)) ([170e860](https://github.com/OHIF/Viewers/commit/170e860aa1b786ab6056cf31076804302a2bc462))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-sr
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-sr
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-sr
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-sr
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-sr
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-sr
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/extension-cornerstone-dicom-sr",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "OHIF extension for an SR Cornerstone Viewport",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
@@ -34,10 +34,10 @@
|
||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.62",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.62",
|
||||
"@ohif/ui": "3.12.0-beta.62",
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.71",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.71",
|
||||
"@ohif/ui": "3.12.0-beta.71",
|
||||
"dcmjs": "0.43.1",
|
||||
"dicom-parser": "1.8.21",
|
||||
"hammerjs": "2.0.8",
|
||||
@@ -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.19",
|
||||
"@cornerstonejs/core": "4.5.19",
|
||||
"@cornerstonejs/tools": "4.5.19",
|
||||
"classnames": "2.5.1"
|
||||
}
|
||||
}
|
||||
@@ -74,17 +74,13 @@ export default function hydrateStructuredReport(
|
||||
);
|
||||
|
||||
const sopInstanceUIDToImageId = {};
|
||||
const imageIdsForToolState = {};
|
||||
|
||||
displaySet.measurements.forEach(measurement => {
|
||||
const { ReferencedSOPInstanceUID, imageId, frameNumber } = measurement;
|
||||
const { ReferencedSOPInstanceUID, imageId, frameNumber=1 } = measurement;
|
||||
const key = `${ReferencedSOPInstanceUID}:${frameNumber}`;
|
||||
|
||||
if (!sopInstanceUIDToImageId[ReferencedSOPInstanceUID]) {
|
||||
sopInstanceUIDToImageId[ReferencedSOPInstanceUID] = imageId;
|
||||
imageIdsForToolState[ReferencedSOPInstanceUID] = [];
|
||||
}
|
||||
if (!imageIdsForToolState[ReferencedSOPInstanceUID][frameNumber]) {
|
||||
imageIdsForToolState[ReferencedSOPInstanceUID][frameNumber] = imageId;
|
||||
if (!sopInstanceUIDToImageId[key]) {
|
||||
sopInstanceUIDToImageId[key] = imageId;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -133,10 +129,8 @@ export default function hydrateStructuredReport(
|
||||
// dcmjs and Cornerstone3D has structural defect in supporting multi-frame
|
||||
// files, and looking up the imageId from sopInstanceUIDToImageId results
|
||||
// in the wrong value.
|
||||
const frameNumber = (toolData.annotation.data && toolData.annotation.data.frameNumber) || 1;
|
||||
const imageId =
|
||||
imageIdsForToolState[toolData.sopInstanceUid][frameNumber] ||
|
||||
sopInstanceUIDToImageId[toolData.sopInstanceUid];
|
||||
const frameNumber = toolData.annotation.data?.frameNumber || 1;
|
||||
const imageId = sopInstanceUIDToImageId[`${toolData.sopInstanceUid}:${frameNumber}`];
|
||||
|
||||
if (!imageIds.includes(imageId)) {
|
||||
imageIds.push(imageId);
|
||||
@@ -175,9 +169,7 @@ export default function hydrateStructuredReport(
|
||||
// files, and looking up the imageId from sopInstanceUIDToImageId results
|
||||
// in the wrong value.
|
||||
const frameNumber = (toolData.annotation.data && toolData.annotation.data.frameNumber) || 1;
|
||||
const imageId =
|
||||
imageIdsForToolState[toolData.sopInstanceUid][frameNumber] ||
|
||||
sopInstanceUIDToImageId[toolData.sopInstanceUid];
|
||||
const imageId = sopInstanceUIDToImageId[`${toolData.sopInstanceUid}:${frameNumber}`];
|
||||
|
||||
if (!imageId) {
|
||||
return getReferenceData3D(toolData, servicesManager);
|
||||
|
||||
@@ -3,6 +3,84 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dynamic-volume
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dynamic-volume
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Pass the correct sop uid + frame for rehydration to prevent associating rehydrated measurements with the wrong data ([#5506](https://github.com/OHIF/Viewers/issues/5506)) ([5037802](https://github.com/OHIF/Viewers/commit/503780247ce7228c602a539fd88ea374e7d0d42f)), closes [#2404](https://github.com/OHIF/Viewers/issues/2404)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **segmentation:** Lock all rehydrated segmentation segments when panelSegmentation.disableEditing is true. ([#5503](https://github.com/OHIF/Viewers/issues/5503)) ([170e860](https://github.com/OHIF/Viewers/commit/170e860aa1b786ab6056cf31076804302a2bc462))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dynamic-volume
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dynamic-volume
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dynamic-volume
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dynamic-volume
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dynamic-volume
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dynamic-volume
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/extension-cornerstone-dynamic-volume",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "OHIF extension for 4D volumes data",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
@@ -29,11 +29,11 @@
|
||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.62",
|
||||
"@ohif/extension-default": "3.12.0-beta.62",
|
||||
"@ohif/i18n": "3.12.0-beta.62",
|
||||
"@ohif/ui": "3.12.0-beta.62",
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.71",
|
||||
"@ohif/extension-default": "3.12.0-beta.71",
|
||||
"@ohif/i18n": "3.12.0-beta.71",
|
||||
"@ohif/ui": "3.12.0-beta.71",
|
||||
"dcmjs": "0.43.1",
|
||||
"dicom-parser": "1.8.21",
|
||||
"hammerjs": "2.0.8",
|
||||
@@ -42,8 +42,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/tools": "4.5.5",
|
||||
"@cornerstonejs/core": "4.5.19",
|
||||
"@cornerstonejs/tools": "4.5.19",
|
||||
"classnames": "2.5.1"
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,87 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Pass the correct sop uid + frame for rehydration to prevent associating rehydrated measurements with the wrong data ([#5506](https://github.com/OHIF/Viewers/issues/5506)) ([5037802](https://github.com/OHIF/Viewers/commit/503780247ce7228c602a539fd88ea374e7d0d42f)), closes [#2404](https://github.com/OHIF/Viewers/issues/2404)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **segmentation:** Lock all rehydrated segmentation segments when panelSegmentation.disableEditing is true. ([#5503](https://github.com/OHIF/Viewers/issues/5503)) ([170e860](https://github.com/OHIF/Viewers/commit/170e860aa1b786ab6056cf31076804302a2bc462))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-cornerstone
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Segmentation not displayed and unable to draw segments in volume viewport after converting Labelmap to Surface ([#5488](https://github.com/OHIF/Viewers/issues/5488)) ([faea09e](https://github.com/OHIF/Viewers/commit/faea09e7ef2667aad5cef1efc2a6516677ca2915))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/extension-cornerstone",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "OHIF extension for Cornerstone",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
@@ -40,9 +40,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.62",
|
||||
"@ohif/ui": "3.12.0-beta.62",
|
||||
"@cornerstonejs/dicom-image-loader": "4.5.19",
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/ui": "3.12.0-beta.71",
|
||||
"dcmjs": "0.43.1",
|
||||
"dicom-parser": "1.8.21",
|
||||
"hammerjs": "2.0.8",
|
||||
@@ -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.19",
|
||||
"@cornerstonejs/ai": "4.5.19",
|
||||
"@cornerstonejs/core": "4.5.19",
|
||||
"@cornerstonejs/labelmap-interpolation": "4.5.19",
|
||||
"@cornerstonejs/polymorphic-segmentation": "4.5.19",
|
||||
"@cornerstonejs/tools": "4.5.19",
|
||||
"@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,
|
||||
|
||||
+5
-7
@@ -65,13 +65,11 @@ const segmentationRepresentationModifiedCallback = async (
|
||||
return;
|
||||
}
|
||||
|
||||
// whatever type the source viewport has, we need to add that to the target viewport
|
||||
const sourceViewportRepresentation = segmentationService.getSegmentationRepresentations(
|
||||
sourceViewport.viewportId,
|
||||
{ segmentationId }
|
||||
);
|
||||
|
||||
const type = sourceViewportRepresentation[0].type;
|
||||
// Ensure the segmentation representation aligns with the target viewport type.
|
||||
const type: Enums.SegmentationRepresentations =
|
||||
viewport.type === CoreEnums.ViewportType.VOLUME_3D
|
||||
? Enums.SegmentationRepresentations.Surface
|
||||
: Enums.SegmentationRepresentations.Labelmap;
|
||||
|
||||
await segmentationService.addSegmentationRepresentation(targetViewportId, {
|
||||
segmentationId,
|
||||
|
||||
@@ -1336,17 +1336,12 @@ class CornerstoneViewportService extends PubSubService implements IViewportServi
|
||||
const { segmentationId, type, hydrated } = presentationItem;
|
||||
|
||||
const { Labelmap, Surface } = csToolsEnums.SegmentationRepresentations;
|
||||
const representationType = (() => {
|
||||
if (type === Surface) {
|
||||
if (viewport.type === csEnums.ViewportType.VOLUME_3D) {
|
||||
return Surface;
|
||||
} else {
|
||||
return Labelmap;
|
||||
}
|
||||
}
|
||||
const isVolume3D = viewport.type === csEnums.ViewportType.VOLUME_3D;
|
||||
|
||||
return type;
|
||||
})();
|
||||
// Determine the appropriate segmentation representation for the viewport.
|
||||
// If the current type is Surface but the viewport is not 3D, fallback to Labelmap.
|
||||
// Otherwise, use the existing type.
|
||||
const representationType = type === Surface && !isVolume3D ? Labelmap : type;
|
||||
|
||||
if (hydrated) {
|
||||
segmentationService.addSegmentationRepresentation(viewport.id, {
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-default
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-default
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-default
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-default
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-default
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-default
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-default
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-default
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-default
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-default
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/extension-default",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "Common/default features and functionality for basic image viewing",
|
||||
"author": "OHIF Core Team",
|
||||
"license": "MIT",
|
||||
@@ -34,8 +34,8 @@
|
||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/i18n": "3.12.0-beta.62",
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/i18n": "3.12.0-beta.71",
|
||||
"dcmjs": "0.43.1",
|
||||
"dicomweb-client": "0.10.4",
|
||||
"prop-types": "15.8.1",
|
||||
|
||||
@@ -16,6 +16,7 @@ import { retrieveStudyMetadata, deleteStudyMetadataPromise } from './retrieveStu
|
||||
import StaticWadoClient from './utils/StaticWadoClient';
|
||||
import getDirectURL from '../utils/getDirectURL';
|
||||
import { fixBulkDataURI } from './utils/fixBulkDataURI';
|
||||
import {HeadersInterface} from '@ohif/core/src/types/RequestHeaders';
|
||||
|
||||
const { DicomMetaDictionary, DicomDict } = dcmjs.data;
|
||||
|
||||
@@ -97,6 +98,20 @@ export type BulkDataURIConfig = {
|
||||
relativeResolution?: 'studies' | 'series';
|
||||
};
|
||||
|
||||
/**
|
||||
* The header options are the options passed into the generateWadoHeader
|
||||
* command. This takes an extensible set of attributes to allow future enhancements.
|
||||
*/
|
||||
export interface HeaderOptions {
|
||||
includeTransferSyntax?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* Metadata and some other requests don't permit the transfer syntax to be included,
|
||||
* so pass in the excludeTransferSyntax parameter.
|
||||
*/
|
||||
export const excludeTransferSyntax: HeaderOptions = { includeTransferSyntax: false };
|
||||
|
||||
/**
|
||||
* Creates a DICOM Web API based on the provided configuration.
|
||||
*
|
||||
@@ -128,7 +143,7 @@ function createDicomWebApi(dicomWebConfig: DicomWebConfig, servicesManager) {
|
||||
dicomWebConfigCopy = JSON.parse(JSON.stringify(dicomWebConfig));
|
||||
|
||||
getAuthorizationHeader = () => {
|
||||
const xhrRequestHeaders = {};
|
||||
const xhrRequestHeaders: HeadersInterface = {};
|
||||
const authHeaders = userAuthenticationService.getAuthorizationHeader();
|
||||
if (authHeaders && authHeaders.Authorization) {
|
||||
xhrRequestHeaders.Authorization = authHeaders.Authorization;
|
||||
@@ -136,19 +151,33 @@ function createDicomWebApi(dicomWebConfig: DicomWebConfig, servicesManager) {
|
||||
return xhrRequestHeaders;
|
||||
};
|
||||
|
||||
generateWadoHeader = () => {
|
||||
/**
|
||||
* Generates the wado header for requesting resources from DICOMweb.
|
||||
* These are classified into those that are dependent on the transfer syntax
|
||||
* and those that aren't, as defined by the include transfer syntax attribute.
|
||||
*/
|
||||
generateWadoHeader = (options: HeaderOptions): HeadersInterface => {
|
||||
const authorizationHeader = getAuthorizationHeader();
|
||||
//Generate accept header depending on config params
|
||||
const formattedAcceptHeader = utils.generateAcceptHeader(
|
||||
dicomWebConfig.acceptHeader,
|
||||
dicomWebConfig.requestTransferSyntaxUID,
|
||||
dicomWebConfig.omitQuotationForMultipartRequest
|
||||
);
|
||||
|
||||
return {
|
||||
...authorizationHeader,
|
||||
Accept: formattedAcceptHeader,
|
||||
};
|
||||
if (options?.includeTransferSyntax!==false) {
|
||||
//Generate accept header depending on config params
|
||||
const formattedAcceptHeader = utils.generateAcceptHeader(
|
||||
dicomWebConfig.acceptHeader,
|
||||
dicomWebConfig.requestTransferSyntaxUID,
|
||||
dicomWebConfig.omitQuotationForMultipartRequest
|
||||
);
|
||||
return {
|
||||
...authorizationHeader,
|
||||
Accept: formattedAcceptHeader,
|
||||
};
|
||||
} else {
|
||||
// The base header will be included in the request. We simply skip customization options around
|
||||
// transfer syntaxes and whether the request is multipart. In other words, a request in
|
||||
// which the server expects Accept: application/dicom+json will still include that in the
|
||||
// header.
|
||||
return {
|
||||
...authorizationHeader
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
qidoConfig = {
|
||||
@@ -410,7 +439,7 @@ function createDicomWebApi(dicomWebConfig: DicomWebConfig, servicesManager) {
|
||||
madeInClient
|
||||
) => {
|
||||
const enableStudyLazyLoad = false;
|
||||
wadoDicomWebClient.headers = generateWadoHeader();
|
||||
wadoDicomWebClient.headers = generateWadoHeader(excludeTransferSyntax);
|
||||
// data is all SOPInstanceUIDs
|
||||
const data = await retrieveStudyMetadata(
|
||||
wadoDicomWebClient,
|
||||
@@ -484,7 +513,7 @@ function createDicomWebApi(dicomWebConfig: DicomWebConfig, servicesManager) {
|
||||
returnPromises = false
|
||||
) => {
|
||||
const enableStudyLazyLoad = true;
|
||||
wadoDicomWebClient.headers = generateWadoHeader();
|
||||
wadoDicomWebClient.headers = generateWadoHeader(excludeTransferSyntax);
|
||||
// Get Series
|
||||
const { preLoadData: seriesSummaryMetadata, promises: seriesPromises } =
|
||||
await retrieveStudyMetadata(
|
||||
|
||||
@@ -7,6 +7,7 @@ import { PanelStudyBrowserHeader } from './PanelStudyBrowserHeader';
|
||||
import { defaultActionIcons } from './constants';
|
||||
import MoreDropdownMenu from '../../Components/MoreDropdownMenu';
|
||||
import { CallbackCustomization } from 'platform/core/src/types';
|
||||
import { type TabsProps } from '@ohif/core/src/utils/createStudyBrowserTabs';
|
||||
|
||||
const { sortStudyInstances, formatDate, createStudyBrowserTabs } = utils;
|
||||
|
||||
@@ -27,7 +28,7 @@ function PanelStudyBrowser({
|
||||
const { servicesManager, commandsManager, extensionManager } = useSystem();
|
||||
const { displaySetService, customizationService } = servicesManager.services;
|
||||
const navigate = useNavigate();
|
||||
const studyMode = customizationService.getCustomization('studyBrowser.studyMode') || 'all';
|
||||
const studyMode = (customizationService.getCustomization('studyBrowser.studyMode') as string) || 'all';
|
||||
|
||||
const internalImageViewer = useImageViewer();
|
||||
const StudyInstanceUIDs = internalImageViewer.StudyInstanceUIDs;
|
||||
@@ -382,8 +383,8 @@ function PanelStudyBrowser({
|
||||
}
|
||||
|
||||
const displaySetInstanceUID = jumpToDisplaySet;
|
||||
// Set the activeTabName and expand the study
|
||||
const thumbnailLocation = _findTabAndStudyOfDisplaySet(displaySetInstanceUID, tabs);
|
||||
// It is possible to navigate to a study not currently in view
|
||||
const thumbnailLocation = _findTabAndStudyOfDisplaySet(displaySetInstanceUID, tabs, activeTabName);
|
||||
if (!thumbnailLocation) {
|
||||
return;
|
||||
}
|
||||
@@ -532,23 +533,21 @@ function getImageIdForThumbnail(displaySet, imageIds) {
|
||||
return imageId;
|
||||
}
|
||||
|
||||
function _findTabAndStudyOfDisplaySet(displaySetInstanceUID, tabs) {
|
||||
for (let t = 0; t < tabs.length; t++) {
|
||||
const { studies } = tabs[t];
|
||||
function _findTabAndStudyOfDisplaySet(
|
||||
displaySetInstanceUID: string,
|
||||
tabs: TabsProps,
|
||||
currentTabName: string
|
||||
) {
|
||||
const current = tabs.find(tab => tab.name===currentTabName) || tabs[0];
|
||||
const biasedTabs = [current, ...tabs];
|
||||
|
||||
for (let s = 0; s < studies.length; s++) {
|
||||
const { displaySets } = studies[s];
|
||||
|
||||
for (let d = 0; d < displaySets.length; d++) {
|
||||
const displaySet = displaySets[d];
|
||||
|
||||
if (displaySet.displaySetInstanceUID === displaySetInstanceUID) {
|
||||
return {
|
||||
tabName: tabs[t].name,
|
||||
StudyInstanceUID: studies[s].studyInstanceUid,
|
||||
};
|
||||
}
|
||||
}
|
||||
for (let t = 0; t < biasedTabs.length; t++) {
|
||||
const study = biasedTabs[t].studies.find(study => study.displaySets.find(ds => ds.displaySetInstanceUID ===displaySetInstanceUID));
|
||||
if (study) {
|
||||
return {
|
||||
tabName: biasedTabs[t].name,
|
||||
StudyInstanceUID: study.studyInstanceUid,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,7 @@ function PanelStudyBrowserHeader({
|
||||
actionIcons: actionIcon[];
|
||||
updateActionIconValue: (actionIcon: actionIcon) => void;
|
||||
}) {
|
||||
// Button order: Settings button then List view mode (thumbnails vs. list)
|
||||
return (
|
||||
<>
|
||||
<div className="bg-muted flex h-[40px] select-none rounded-t p-2">
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-microscopy
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-microscopy
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-microscopy
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-microscopy
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-microscopy
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-microscopy
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-microscopy
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-microscopy
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-microscopy
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-microscopy
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/extension-dicom-microscopy",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "OHIF extension for DICOM microscopy",
|
||||
"author": "Bill Wallace, md-prog",
|
||||
"license": "MIT",
|
||||
@@ -30,10 +30,10 @@
|
||||
"start": "yarn run dev"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/extension-default": "3.12.0-beta.62",
|
||||
"@ohif/i18n": "3.12.0-beta.62",
|
||||
"@ohif/ui": "3.12.0-beta.62",
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/extension-default": "3.12.0-beta.71",
|
||||
"@ohif/i18n": "3.12.0-beta.71",
|
||||
"@ohif/ui": "3.12.0-beta.71",
|
||||
"prop-types": "15.8.1",
|
||||
"react": "18.3.1",
|
||||
"react-dom": "18.3.1",
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-pdf
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-pdf
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-pdf
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-pdf
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-pdf
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-pdf
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-pdf
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-pdf
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-pdf
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-pdf
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/extension-dicom-pdf",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "OHIF extension for PDF display",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
@@ -30,8 +30,8 @@
|
||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/ui": "3.12.0-beta.62",
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/ui": "3.12.0-beta.71",
|
||||
"dcmjs": "0.43.1",
|
||||
"dicom-parser": "1.8.21",
|
||||
"hammerjs": "2.0.8",
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-video
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-video
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-video
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-video
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-video
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-video
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-video
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-video
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-video
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-dicom-video
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/extension-dicom-video",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "OHIF extension for video display",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
@@ -30,8 +30,8 @@
|
||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/ui": "3.12.0-beta.62",
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/ui": "3.12.0-beta.71",
|
||||
"dcmjs": "0.43.1",
|
||||
"dicom-parser": "1.8.21",
|
||||
"hammerjs": "2.0.8",
|
||||
|
||||
@@ -3,6 +3,84 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-measurement-tracking
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-measurement-tracking
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Pass the correct sop uid + frame for rehydration to prevent associating rehydrated measurements with the wrong data ([#5506](https://github.com/OHIF/Viewers/issues/5506)) ([5037802](https://github.com/OHIF/Viewers/commit/503780247ce7228c602a539fd88ea374e7d0d42f)), closes [#2404](https://github.com/OHIF/Viewers/issues/2404)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **segmentation:** Lock all rehydrated segmentation segments when panelSegmentation.disableEditing is true. ([#5503](https://github.com/OHIF/Viewers/issues/5503)) ([170e860](https://github.com/OHIF/Viewers/commit/170e860aa1b786ab6056cf31076804302a2bc462))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-measurement-tracking
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-measurement-tracking
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-measurement-tracking
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-measurement-tracking
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-measurement-tracking
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-measurement-tracking
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/extension-measurement-tracking",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "Tracking features and functionality for basic image viewing",
|
||||
"author": "OHIF Core Team",
|
||||
"license": "MIT",
|
||||
@@ -32,12 +32,12 @@
|
||||
"start": "yarn run dev"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/tools": "4.5.5",
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.62",
|
||||
"@ohif/extension-default": "3.12.0-beta.62",
|
||||
"@ohif/ui": "3.12.0-beta.62",
|
||||
"@cornerstonejs/core": "4.5.19",
|
||||
"@cornerstonejs/tools": "4.5.19",
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.71",
|
||||
"@ohif/extension-default": "3.12.0-beta.71",
|
||||
"@ohif/ui": "3.12.0-beta.71",
|
||||
"classnames": "2.5.1",
|
||||
"dcmjs": "0.43.1",
|
||||
"lodash.debounce": "4.0.8",
|
||||
@@ -49,7 +49,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@ohif/ui": "3.12.0-beta.62",
|
||||
"@ohif/ui": "3.12.0-beta.71",
|
||||
"@xstate/react": "3.2.2",
|
||||
"xstate": "4.38.3"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-test
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/extension-test",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "OHIF extension used inside e2e testing",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
@@ -30,8 +30,8 @@
|
||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/ui": "3.12.0-beta.62",
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/ui": "3.12.0-beta.71",
|
||||
"dcmjs": "0.43.1",
|
||||
"dicom-parser": "1.8.21",
|
||||
"hammerjs": "2.0.8",
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-tmtv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-tmtv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-tmtv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-tmtv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-tmtv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-tmtv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-tmtv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-tmtv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-tmtv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-tmtv
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/extension-tmtv",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "OHIF extension for Total Metabolic Tumor Volume",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
@@ -30,8 +30,8 @@
|
||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/ui": "3.12.0-beta.62",
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/ui": "3.12.0-beta.71",
|
||||
"dcmjs": "0.43.1",
|
||||
"dicom-parser": "1.8.21",
|
||||
"hammerjs": "2.0.8",
|
||||
|
||||
@@ -3,6 +3,84 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-ultrasound-pleura-bline
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-ultrasound-pleura-bline
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Pass the correct sop uid + frame for rehydration to prevent associating rehydrated measurements with the wrong data ([#5506](https://github.com/OHIF/Viewers/issues/5506)) ([5037802](https://github.com/OHIF/Viewers/commit/503780247ce7228c602a539fd88ea374e7d0d42f)), closes [#2404](https://github.com/OHIF/Viewers/issues/2404)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **segmentation:** Lock all rehydrated segmentation segments when panelSegmentation.disableEditing is true. ([#5503](https://github.com/OHIF/Viewers/issues/5503)) ([170e860](https://github.com/OHIF/Viewers/commit/170e860aa1b786ab6056cf31076804302a2bc462))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-ultrasound-pleura-bline
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-ultrasound-pleura-bline
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-ultrasound-pleura-bline
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-ultrasound-pleura-bline
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-ultrasound-pleura-bline
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/extension-ultrasound-pleura-bline
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/extension-ultrasound-pleura-bline",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "",
|
||||
"author": "Rodrigo Basilio",
|
||||
"license": "MIT",
|
||||
@@ -42,13 +42,13 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/tools": "4.5.5",
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.62",
|
||||
"@ohif/extension-default": "3.12.0-beta.62",
|
||||
"@ohif/i18n": "3.12.0-beta.62",
|
||||
"@ohif/ui-next": "3.12.0-beta.62"
|
||||
"@cornerstonejs/core": "4.5.19",
|
||||
"@cornerstonejs/tools": "4.5.19",
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.71",
|
||||
"@ohif/extension-default": "3.12.0-beta.71",
|
||||
"@ohif/i18n": "3.12.0-beta.71",
|
||||
"@ohif/ui-next": "3.12.0-beta.71"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "7.28.0",
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"packages": ["extensions/*", "platform/*", "modes/*", "addOns/externals/*"],
|
||||
"npmClient": "yarn"
|
||||
}
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic-dev-mode
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic-dev-mode
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic-dev-mode
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic-dev-mode
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic-dev-mode
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic-dev-mode
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic-dev-mode
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic-dev-mode
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic-dev-mode
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic-dev-mode
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/mode-basic-dev-mode",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "Basic OHIF Viewer Using Cornerstone",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
@@ -31,12 +31,12 @@
|
||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.62",
|
||||
"@ohif/extension-default": "3.12.0-beta.62",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.62",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.62"
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.71",
|
||||
"@ohif/extension-default": "3.12.0-beta.71",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.71",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.71"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-test
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/mode-test",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "Basic mode for testing",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
@@ -34,14 +34,14 @@
|
||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.62",
|
||||
"@ohif/extension-default": "3.12.0-beta.62",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.62",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.62",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.62",
|
||||
"@ohif/extension-test": "3.12.0-beta.62"
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.71",
|
||||
"@ohif/extension-default": "3.12.0-beta.71",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.71",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.71",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.71",
|
||||
"@ohif/extension-test": "3.12.0-beta.71"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-basic
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/mode-basic",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "A basic mode used to build other modes on top of",
|
||||
"author": "OHIF Contributors",
|
||||
"license": "MIT",
|
||||
@@ -21,14 +21,14 @@
|
||||
"yarn": ">=1.16.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.62",
|
||||
"@ohif/extension-default": "3.12.0-beta.62",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.62",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.62"
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.71",
|
||||
"@ohif/extension-default": "3.12.0-beta.71",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.71",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.71"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2"
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-longitudinal
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-longitudinal
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-longitudinal
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-longitudinal
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-longitudinal
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-longitudinal
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-longitudinal
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-longitudinal
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-longitudinal
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-longitudinal
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/mode-longitudinal",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "Longitudinal Workflow",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
@@ -34,15 +34,15 @@
|
||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.62",
|
||||
"@ohif/extension-default": "3.12.0-beta.62",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.62",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.62",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.62"
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.71",
|
||||
"@ohif/extension-default": "3.12.0-beta.71",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.71",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.71",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.71"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-microscopy
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-microscopy
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-microscopy
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-microscopy
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-microscopy
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-microscopy
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-microscopy
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-microscopy
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-microscopy
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-microscopy
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/mode-microscopy",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "OHIF mode for DICOM microscopy",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
@@ -35,8 +35,8 @@
|
||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/extension-dicom-microscopy": "3.12.0-beta.62"
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/extension-dicom-microscopy": "3.12.0-beta.71"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-preclinical-4d
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-preclinical-4d
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-preclinical-4d
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-preclinical-4d
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-preclinical-4d
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-preclinical-4d
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-preclinical-4d
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-preclinical-4d
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-preclinical-4d
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-preclinical-4d
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/mode-preclinical-4d",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "4D Workflow",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
@@ -33,12 +33,12 @@
|
||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dynamic-volume": "3.12.0-beta.62",
|
||||
"@ohif/extension-default": "3.12.0-beta.62",
|
||||
"@ohif/extension-tmtv": "3.12.0-beta.62"
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dynamic-volume": "3.12.0-beta.71",
|
||||
"@ohif/extension-default": "3.12.0-beta.71",
|
||||
"@ohif/extension-tmtv": "3.12.0-beta.71"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2"
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-segmentation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-segmentation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-segmentation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-segmentation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-segmentation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-segmentation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-segmentation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-segmentation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-segmentation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-segmentation
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/mode-segmentation",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "OHIF segmentation mode which enables labelmap segmentation read/edit/export",
|
||||
"author": "@ohif",
|
||||
"license": "MIT",
|
||||
@@ -35,14 +35,14 @@
|
||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.62",
|
||||
"@ohif/extension-default": "3.12.0-beta.62",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.62",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.62"
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.71",
|
||||
"@ohif/extension-default": "3.12.0-beta.71",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.71",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.71"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-tmtv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-tmtv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-tmtv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-tmtv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-tmtv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-tmtv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-tmtv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-tmtv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-tmtv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-tmtv
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/mode-tmtv",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "Total Metabolic Tumor Volume Workflow",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
@@ -34,13 +34,13 @@
|
||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.62",
|
||||
"@ohif/extension-default": "3.12.0-beta.62",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.62",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.62",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.62"
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.71",
|
||||
"@ohif/extension-default": "3.12.0-beta.71",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.71",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.71",
|
||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.71"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
|
||||
@@ -3,6 +3,84 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-ultrasound-pleura-bline
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-ultrasound-pleura-bline
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Pass the correct sop uid + frame for rehydration to prevent associating rehydrated measurements with the wrong data ([#5506](https://github.com/OHIF/Viewers/issues/5506)) ([5037802](https://github.com/OHIF/Viewers/commit/503780247ce7228c602a539fd88ea374e7d0d42f)), closes [#2404](https://github.com/OHIF/Viewers/issues/2404)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **segmentation:** Lock all rehydrated segmentation segments when panelSegmentation.disableEditing is true. ([#5503](https://github.com/OHIF/Viewers/issues/5503)) ([170e860](https://github.com/OHIF/Viewers/commit/170e860aa1b786ab6056cf31076804302a2bc462))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-ultrasound-pleura-bline
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-ultrasound-pleura-bline
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-ultrasound-pleura-bline
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-ultrasound-pleura-bline
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-ultrasound-pleura-bline
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/mode-ultrasound-pleura-bline
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/mode-ultrasound-pleura-bline",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "Allows users to annotate ultrasound images with pleura B-line annotations.",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
@@ -34,11 +34,11 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@cornerstonejs/core": "4.5.5",
|
||||
"@cornerstonejs/tools": "4.5.5",
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.62",
|
||||
"@ohif/extension-ultrasound-pleura-bline": "3.12.0-beta.62",
|
||||
"@cornerstonejs/core": "4.5.19",
|
||||
"@cornerstonejs/tools": "4.5.19",
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.71",
|
||||
"@ohif/extension-ultrasound-pleura-bline": "3.12.0-beta.71",
|
||||
"i18next": "17.3.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -3,6 +3,87 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/app
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/app
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Pass the correct sop uid + frame for rehydration to prevent associating rehydrated measurements with the wrong data ([#5506](https://github.com/OHIF/Viewers/issues/5506)) ([5037802](https://github.com/OHIF/Viewers/commit/503780247ce7228c602a539fd88ea374e7d0d42f)), closes [#2404](https://github.com/OHIF/Viewers/issues/2404)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **segmentation:** Lock all rehydrated segmentation segments when panelSegmentation.disableEditing is true. ([#5503](https://github.com/OHIF/Viewers/issues/5503)) ([170e860](https://github.com/OHIF/Viewers/commit/170e860aa1b786ab6056cf31076804302a2bc462))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **ErrorBoundary:** Allow for details to be shown in production. ([#5504](https://github.com/OHIF/Viewers/issues/5504)) ([4620cc3](https://github.com/OHIF/Viewers/commit/4620cc3acf89f218c3feaaf4c153a3dc8b023b23))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/app
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/app
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/app
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/app
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/app
|
||||
|
||||
+21
-21
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/app",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"productVersion": "3.4.0",
|
||||
"description": "OHIF Viewer",
|
||||
"author": "OHIF Contributors",
|
||||
@@ -53,27 +53,27 @@
|
||||
"@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.19",
|
||||
"@emotion/serialize": "1.3.3",
|
||||
"@ohif/core": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.62",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.62",
|
||||
"@ohif/extension-default": "3.12.0-beta.62",
|
||||
"@ohif/extension-dicom-microscopy": "3.12.0-beta.62",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.62",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.62",
|
||||
"@ohif/extension-test": "3.12.0-beta.62",
|
||||
"@ohif/extension-ultrasound-pleura-bline": "3.12.0-beta.62",
|
||||
"@ohif/i18n": "3.12.0-beta.62",
|
||||
"@ohif/mode-basic-dev-mode": "3.12.0-beta.62",
|
||||
"@ohif/mode-longitudinal": "3.12.0-beta.62",
|
||||
"@ohif/mode-microscopy": "3.12.0-beta.62",
|
||||
"@ohif/mode-test": "3.12.0-beta.62",
|
||||
"@ohif/mode-ultrasound-pleura-bline": "3.12.0-beta.62",
|
||||
"@ohif/ui": "3.12.0-beta.62",
|
||||
"@ohif/ui-next": "3.12.0-beta.62",
|
||||
"@ohif/core": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.71",
|
||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.71",
|
||||
"@ohif/extension-default": "3.12.0-beta.71",
|
||||
"@ohif/extension-dicom-microscopy": "3.12.0-beta.71",
|
||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.71",
|
||||
"@ohif/extension-dicom-video": "3.12.0-beta.71",
|
||||
"@ohif/extension-test": "3.12.0-beta.71",
|
||||
"@ohif/extension-ultrasound-pleura-bline": "3.12.0-beta.71",
|
||||
"@ohif/i18n": "3.12.0-beta.71",
|
||||
"@ohif/mode-basic-dev-mode": "3.12.0-beta.71",
|
||||
"@ohif/mode-longitudinal": "3.12.0-beta.71",
|
||||
"@ohif/mode-microscopy": "3.12.0-beta.71",
|
||||
"@ohif/mode-test": "3.12.0-beta.71",
|
||||
"@ohif/mode-ultrasound-pleura-bline": "3.12.0-beta.71",
|
||||
"@ohif/ui": "3.12.0-beta.71",
|
||||
"@ohif/ui-next": "3.12.0-beta.71",
|
||||
"@svgr/webpack": "8.1.0",
|
||||
"@types/react": "18.3.23",
|
||||
"classnames": "2.5.1",
|
||||
|
||||
@@ -25,6 +25,7 @@ window.config = {
|
||||
// above, the number of requests can be go a lot higher.
|
||||
prefetch: 25,
|
||||
},
|
||||
showErrorDetails: 'always', // 'always', 'dev', 'production'
|
||||
// filterQueryParam: false,
|
||||
// Defines multi-monitor layouts
|
||||
multimonitor: [
|
||||
|
||||
@@ -128,11 +128,17 @@ const createRoutes = ({
|
||||
];
|
||||
|
||||
function RouteWithErrorBoundary({ route, ...rest }) {
|
||||
const [appConfig] = useAppConfig();
|
||||
const { showErrorDetails } = appConfig;
|
||||
|
||||
history.navigate = useNavigate();
|
||||
|
||||
// eslint-disable-next-line react/jsx-props-no-spreading
|
||||
return (
|
||||
<ErrorBoundary context={`Route ${route.path}`}>
|
||||
<ErrorBoundary
|
||||
context={`Route ${route.path}`}
|
||||
showErrorDetails={showErrorDetails}
|
||||
>
|
||||
<route.children
|
||||
{...rest}
|
||||
{...route.props}
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/cli
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/cli
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/cli
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @ohif/cli
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/cli
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/cli
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/cli
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/cli
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/cli
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/cli
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/cli",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "A CLI to bootstrap new OHIF extension or mode",
|
||||
"type": "module",
|
||||
"main": "src/index.js",
|
||||
|
||||
@@ -3,6 +3,87 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/core
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **rendering:** Fix palette color LUT conversion causing black images ([#5509](https://github.com/OHIF/Viewers/issues/5509)) ([ffd9ec3](https://github.com/OHIF/Viewers/commit/ffd9ec32730580e266ffae365a10ac3e524dd6cf))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Pass the correct sop uid + frame for rehydration to prevent associating rehydrated measurements with the wrong data ([#5506](https://github.com/OHIF/Viewers/issues/5506)) ([5037802](https://github.com/OHIF/Viewers/commit/503780247ce7228c602a539fd88ea374e7d0d42f)), closes [#2404](https://github.com/OHIF/Viewers/issues/2404)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **segmentation:** Lock all rehydrated segmentation segments when panelSegmentation.disableEditing is true. ([#5503](https://github.com/OHIF/Viewers/issues/5503)) ([170e860](https://github.com/OHIF/Viewers/commit/170e860aa1b786ab6056cf31076804302a2bc462))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/core
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/core
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/core
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/core
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/core
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/core
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/core",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "Generic business logic for web-based medical imaging applications",
|
||||
"author": "OHIF Core Team",
|
||||
"license": "MIT",
|
||||
@@ -37,9 +37,9 @@
|
||||
"@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.62",
|
||||
"@cornerstonejs/core": "4.5.19",
|
||||
"@cornerstonejs/dicom-image-loader": "4.5.19",
|
||||
"@ohif/ui": "3.12.0-beta.71",
|
||||
"cornerstone-math": "0.1.9",
|
||||
"dicom-parser": "1.8.21"
|
||||
},
|
||||
|
||||
+8
-7
@@ -1,7 +1,8 @@
|
||||
import getAuthorizationHeader from './getAuthorizationHeader';
|
||||
import user from './../user';
|
||||
import { HeadersInterface, RequestOptions } from '../types/RequestHeaders';
|
||||
|
||||
jest.mock('./../user.js');
|
||||
jest.mock('../user');
|
||||
|
||||
describe('getAuthorizationHeader', () => {
|
||||
it('should return a HTTP Basic Auth when server contains requestOptions.auth', () => {
|
||||
@@ -15,7 +16,7 @@ describe('getAuthorizationHeader', () => {
|
||||
Authorization: `Basic ${btoa(validServer.requestOptions.auth)}`,
|
||||
};
|
||||
|
||||
const authentication = getAuthorizationHeader(validServer);
|
||||
const authentication: HeadersInterface = getAuthorizationHeader(validServer);
|
||||
|
||||
expect(authentication).toEqual(expectedAuthorizationHeader);
|
||||
});
|
||||
@@ -31,13 +32,13 @@ describe('getAuthorizationHeader', () => {
|
||||
Authorization: `Basic ${btoa(validServerWithoutPassword.requestOptions.auth)}`,
|
||||
};
|
||||
|
||||
const authentication = getAuthorizationHeader(validServerWithoutPassword);
|
||||
const authentication: HeadersInterface = getAuthorizationHeader(validServerWithoutPassword);
|
||||
|
||||
expect(authentication).toEqual(expectedAuthorizationHeader);
|
||||
});
|
||||
|
||||
it('should return a HTTP Basic Auth when server contains requestOptions.auth custom function', () => {
|
||||
const validServerCustomAuth = {
|
||||
const validServerCustomAuth: RequestOptions = {
|
||||
requestOptions: {
|
||||
auth: options => `Basic ${options.token}`,
|
||||
token: 'ZHVtbXlfdXNlcjpkdW1teV9wYXNzd29yZA==',
|
||||
@@ -48,13 +49,13 @@ describe('getAuthorizationHeader', () => {
|
||||
Authorization: `Basic ${validServerCustomAuth.requestOptions.token}`,
|
||||
};
|
||||
|
||||
const authentication = getAuthorizationHeader(validServerCustomAuth);
|
||||
const authentication: HeadersInterface = getAuthorizationHeader(validServerCustomAuth);
|
||||
|
||||
expect(authentication).toEqual(expectedAuthorizationHeader);
|
||||
});
|
||||
|
||||
it('should return an empty object when there is no either server.requestOptions.auth or accessToken', () => {
|
||||
const authentication = getAuthorizationHeader({});
|
||||
const authentication: HeadersInterface = getAuthorizationHeader({});
|
||||
|
||||
expect(authentication).toEqual({});
|
||||
});
|
||||
@@ -62,7 +63,7 @@ describe('getAuthorizationHeader', () => {
|
||||
it('should return an Authorization with accessToken when server is not defined and there is an accessToken', () => {
|
||||
user.getAccessToken.mockImplementationOnce(() => 'MOCKED_TOKEN');
|
||||
|
||||
const authentication = getAuthorizationHeader({}, user);
|
||||
const authentication: HeadersInterface = getAuthorizationHeader({}, user);
|
||||
const expectedHeaderBasedOnUserAccessToken = {
|
||||
Authorization: 'Bearer MOCKED_TOKEN',
|
||||
};
|
||||
+14
-9
@@ -1,23 +1,29 @@
|
||||
import 'isomorphic-base64';
|
||||
import user from '../user';
|
||||
import {UserAccountInterface} from '../user';
|
||||
import { HeadersInterface, RequestOptions } from '../types/RequestHeaders';
|
||||
|
||||
/**
|
||||
* Returns the Authorization header as part of an Object.
|
||||
*
|
||||
* @export
|
||||
* @param {Object} [server={}]
|
||||
* @param {Object} [server.requestOptions]
|
||||
* @param {string|function} [server.requestOptions.auth]
|
||||
* @param {Object} [requestOptions]
|
||||
* @param {string|function} [requestOptions.auth]
|
||||
* @param {Object} [user]
|
||||
* @param {function} [user.getAccessToken]
|
||||
* @returns {Object} { Authorization }
|
||||
*/
|
||||
export default function getAuthorizationHeader({ requestOptions } = {}, user) {
|
||||
const headers = {};
|
||||
export default function getAuthorizationHeader(
|
||||
{requestOptions}: RequestOptions = {},
|
||||
user: UserAccountInterface = {}): HeadersInterface
|
||||
{
|
||||
const headers: HeadersInterface = {};
|
||||
|
||||
// Check for OHIF.user since this can also be run on the server
|
||||
const accessToken = user && user.getAccessToken && user.getAccessToken();
|
||||
|
||||
// Auth for a specific server
|
||||
if (requestOptions && requestOptions.auth) {
|
||||
if (requestOptions?.auth) {
|
||||
if (typeof requestOptions.auth === 'function') {
|
||||
// Custom Auth Header
|
||||
headers.Authorization = requestOptions.auth(requestOptions);
|
||||
@@ -25,9 +31,8 @@ export default function getAuthorizationHeader({ requestOptions } = {}, user) {
|
||||
// HTTP Basic Auth (user:password)
|
||||
headers.Authorization = `Basic ${btoa(requestOptions.auth)}`;
|
||||
}
|
||||
}
|
||||
// Auth for the user's default
|
||||
else if (accessToken) {
|
||||
} else if (accessToken) {
|
||||
// Auth for the user's default
|
||||
headers.Authorization = `Bearer ${accessToken}`;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import getAttribute from './getAttribute.js';
|
||||
import getAuthorizationHeader from './getAuthorizationHeader.js';
|
||||
import getAuthorizationHeader from './getAuthorizationHeader';
|
||||
import getModalities from './getModalities.js';
|
||||
import getName from './getName.js';
|
||||
import getNumber from './getNumber.js';
|
||||
|
||||
@@ -9,7 +9,7 @@ import errorHandler from './errorHandler.js';
|
||||
import log from './log.js';
|
||||
import object from './object.js';
|
||||
import string from './string.js';
|
||||
import user from './user.js';
|
||||
import user from './user';
|
||||
import utils from './utils';
|
||||
import defaults from './defaults';
|
||||
import * as Types from './types';
|
||||
|
||||
@@ -45,7 +45,8 @@ export type Customization =
|
||||
| CommandCustomization
|
||||
| CodeCustomization
|
||||
| ComponentCustomization
|
||||
| CallbackCustomization;
|
||||
| CallbackCustomization
|
||||
| string | number | boolean;
|
||||
|
||||
export default Customization;
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* Interface to clearly present the expected fields to linters when building a request header.
|
||||
*/
|
||||
export interface HeadersInterface {
|
||||
/**
|
||||
* Request Accept options. For example,
|
||||
* `['multipart/related; type=application/octet-stream; transfer-syntax=1.2.840.10008.1.2.1.99',]`.
|
||||
*
|
||||
* Defines to the server the formats it can use to deliver data to us.
|
||||
*/
|
||||
Accept?: string[];
|
||||
/**
|
||||
* Request Authorization field. It can be overridden with the `requestOptions.auth` config item.
|
||||
* Contains the authorization credentials or tokens necessary to authorize the request with the
|
||||
* server.
|
||||
*/
|
||||
Authorization?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Interface to clearly present the expected fields to linters when passing the configuration's
|
||||
* requestOptions struct.
|
||||
*/
|
||||
export interface RequestOptions {
|
||||
requestOptions?: {
|
||||
/**
|
||||
* Authentication options to include. Can be a function.
|
||||
*/
|
||||
auth?: Function | string;
|
||||
/**
|
||||
* Authentication token. Satisfies the test requirement?
|
||||
*/
|
||||
token?: string;
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
// These should be overridden by the implementation
|
||||
let user = {
|
||||
userLoggedIn: () => false,
|
||||
getUserId: () => null,
|
||||
getName: () => null,
|
||||
getAccessToken: () => null,
|
||||
login: () => new Promise((resolve, reject) => reject()),
|
||||
logout: () => new Promise((resolve, reject) => reject()),
|
||||
getData: key => null,
|
||||
setData: (key, value) => null,
|
||||
};
|
||||
|
||||
export default user;
|
||||
@@ -0,0 +1,31 @@
|
||||
/**
|
||||
* Global user information, to be replaced with a specific version which
|
||||
* applies the methods.
|
||||
*/
|
||||
export let user = {
|
||||
userLoggedIn: (): boolean => false,
|
||||
getUserId: () => null,
|
||||
getName: () => null,
|
||||
getAccessToken: () => null,
|
||||
login: () => new Promise((resolve, reject) => reject()),
|
||||
logout: () => new Promise((resolve, reject) => reject()),
|
||||
getData: key => null,
|
||||
setData: (key, value) => null,
|
||||
};
|
||||
|
||||
/**
|
||||
* Interface to clearly present the expected fields to linters when passing the user account
|
||||
* struct.
|
||||
*/
|
||||
export interface UserAccountInterface {
|
||||
userLoggedIn?: () => boolean;
|
||||
getUserId?: () => null;
|
||||
getName?: () => null;
|
||||
getAccessToken?: () => null;
|
||||
login?: () => Promise<any>;
|
||||
logout?: () => Promise<any>;
|
||||
getData?: (key: any) => null;
|
||||
setData?: (key: any, value: any) => null;
|
||||
}
|
||||
|
||||
export default user;
|
||||
@@ -1,5 +1,20 @@
|
||||
import { useSystem } from '../contextProviders/SystemProvider';
|
||||
|
||||
/**
|
||||
* Tab properties that drive which tab group is used for thumbnail display.
|
||||
*/
|
||||
export type TabProp = {
|
||||
name: string,
|
||||
label: string,
|
||||
studies: any[],
|
||||
}
|
||||
|
||||
/**
|
||||
* Collection of tab properties with studies presorted depending on tab mod.
|
||||
* This is used in deciding what thumbnails to show.
|
||||
*/
|
||||
export type TabsProps = TabProp[];
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string[]} primaryStudyInstanceUIDs
|
||||
@@ -11,7 +26,7 @@ import { useSystem } from '../contextProviders/SystemProvider';
|
||||
* @param {number} studyDisplayList.numInstances
|
||||
* @param {object[]} displaySets
|
||||
* @param {number} recentTimeframe - The number of milliseconds to consider a study recent
|
||||
* @returns tabs - The prop object expected by the StudyBrowser component
|
||||
* @returns {TabsProps} tabs - The prop object expected by the StudyBrowser component
|
||||
*/
|
||||
|
||||
export function createStudyBrowserTabs(
|
||||
@@ -19,7 +34,7 @@ export function createStudyBrowserTabs(
|
||||
studyDisplayList,
|
||||
displaySets,
|
||||
recentTimeframeMS = 31536000000
|
||||
) {
|
||||
): TabsProps {
|
||||
const { servicesManager } = useSystem();
|
||||
const { displaySetService } = servicesManager.services;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
const generateAcceptHeader = (
|
||||
configAcceptHeader = [],
|
||||
configAcceptHeader: string[] = [],
|
||||
requestTransferSyntaxUID = '*', //default to accept all transfer syntax
|
||||
omitQuotationForMultipartRequest = false
|
||||
): string[] => {
|
||||
|
||||
@@ -30,18 +30,15 @@ function _getPaletteColor(paletteColorLookupTableData, lutDescriptor) {
|
||||
}
|
||||
|
||||
const arrayBufferToPaletteColorLUT = arraybuffer => {
|
||||
// Handle both ArrayBuffer and TypedArray inputs
|
||||
const buffer = arraybuffer.buffer || arraybuffer;
|
||||
const data = bits === 16 ? new Uint16Array(buffer) : new Uint8Array(buffer);
|
||||
const lut = [];
|
||||
|
||||
if (bits === 16) {
|
||||
let j = 0;
|
||||
for (let i = 0; i < numLutEntries; i++) {
|
||||
lut[i] = (arraybuffer[j++] + arraybuffer[j++]) << 8;
|
||||
}
|
||||
} else {
|
||||
for (let i = 0; i < numLutEntries; i++) {
|
||||
lut[i] = arraybuffer[i];
|
||||
}
|
||||
for (let i = 0; i < numLutEntries; i++) {
|
||||
lut[i] = data[i];
|
||||
}
|
||||
|
||||
return lut;
|
||||
};
|
||||
|
||||
@@ -51,10 +48,10 @@ function _getPaletteColor(paletteColorLookupTableData, lutDescriptor) {
|
||||
|
||||
if (paletteColorLookupTableData.InlineBinary) {
|
||||
try {
|
||||
const arraybuffer = Uint8Array.from(atob(paletteColorLookupTableData.InlineBinary), c =>
|
||||
const uint8Array = Uint8Array.from(atob(paletteColorLookupTableData.InlineBinary), c =>
|
||||
c.charCodeAt(0)
|
||||
);
|
||||
return (paletteColorLookupTableData.palette = arrayBufferToPaletteColorLUT(arraybuffer));
|
||||
return (paletteColorLookupTableData.palette = arrayBufferToPaletteColorLUT(uint8Array));
|
||||
} catch (e) {
|
||||
console.log("Couldn't decode", paletteColorLookupTableData.InlineBinary, e);
|
||||
return undefined;
|
||||
|
||||
@@ -3,6 +3,81 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package ohif-docs
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package ohif-docs
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package ohif-docs
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package ohif-docs
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **ErrorBoundary:** Allow for details to be shown in production. ([#5504](https://github.com/OHIF/Viewers/issues/5504)) ([4620cc3](https://github.com/OHIF/Viewers/commit/4620cc3acf89f218c3feaaf4c153a3dc8b023b23))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package ohif-docs
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package ohif-docs
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package ohif-docs
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package ohif-docs
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package ohif-docs
|
||||
|
||||
@@ -196,6 +196,7 @@ if auth headers are used, a preflight request is required.
|
||||
- `activateViewportBeforeInteraction`: (default to true), if set to false, tools can be used directly without the need to click and activate the viewport.
|
||||
- `autoPlayCine`: (default to false), if set to true, data sets with the DICOM frame time tag (i.e. (0018,1063)) will auto play when displayed
|
||||
- `addWindowLevelActionMenu`: (default to true), if set to false, the window level action menu item is NOT added to the viewport action corners
|
||||
- `showErrorDetails`: determines which runtime environments can display exception and error details caught at the `ErrorBoundary`; acceptable values include: `always`, `dev`, and `production`
|
||||
- `dangerouslyUseDynamicConfig`: Dynamic config allows user to pass `configUrl` query string. This allows to load config without recompiling application. If the `configUrl` query string is passed, the worklist and modes will load from the referenced json rather than the default .env config. If there is no `configUrl` path provided, the default behaviour is used and there should not be any deviation from current user experience.<br/>
|
||||
Points to consider while using `dangerouslyUseDynamicConfig`:<br/>
|
||||
- User have to enable this feature by setting `dangerouslyUseDynamicConfig.enabled:true`. By default it is `false`.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ohif-docs",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"docusaurus": "docusaurus",
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/i18n
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/i18n
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/i18n
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @ohif/i18n
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/i18n
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/i18n
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/i18n
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/i18n
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/i18n
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/i18n
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/i18n",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "Internationalization library for The OHIF Viewer",
|
||||
"author": "OHIF",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -3,6 +3,87 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **segmentation:** Fixed the manual scrolling of the segments list and implemented automatic scrolling to the active segment. ([#5510](https://github.com/OHIF/Viewers/issues/5510)) ([1df4f84](https://github.com/OHIF/Viewers/commit/1df4f843fe3c377643938563ff9e2e4f930d8537))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/ui-next
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/ui-next
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **segmentation:** Lock all rehydrated segmentation segments when panelSegmentation.disableEditing is true. ([#5503](https://github.com/OHIF/Viewers/issues/5503)) ([170e860](https://github.com/OHIF/Viewers/commit/170e860aa1b786ab6056cf31076804302a2bc462))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **ErrorBoundary:** Allow for details to be shown in production. ([#5504](https://github.com/OHIF/Viewers/issues/5504)) ([4620cc3](https://github.com/OHIF/Viewers/commit/4620cc3acf89f218c3feaaf4c153a3dc8b023b23))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/ui-next
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/ui-next
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/ui-next
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/ui-next
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/ui-next
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/ui-next",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "Next version of OHIF Viewers UI, more customizable using shadcn/ui",
|
||||
"main": "dist/ohif-ui-next.umd.js",
|
||||
"module": "src/index.ts",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React, { useState, useRef } from 'react';
|
||||
import React, { useState } from 'react';
|
||||
import { Button } from '../../components/Button/Button';
|
||||
import {
|
||||
DropdownMenu,
|
||||
@@ -107,305 +107,305 @@ interface DataRowProps {
|
||||
children?: React.ReactNode;
|
||||
}
|
||||
|
||||
const DataRowComponent: React.FC<DataRowProps> = ({
|
||||
number,
|
||||
title,
|
||||
colorHex,
|
||||
details,
|
||||
onSelect,
|
||||
isLocked,
|
||||
onToggleVisibility,
|
||||
onToggleLocked,
|
||||
onRename,
|
||||
onDelete,
|
||||
onColor,
|
||||
isSelected = false,
|
||||
isVisible = true,
|
||||
disableEditing = false,
|
||||
className,
|
||||
children,
|
||||
}) => {
|
||||
const [isDropdownOpen, setIsDropdownOpen] = useState(false);
|
||||
const isTitleLong = title?.length > 25;
|
||||
const rowRef = useRef<HTMLDivElement>(null);
|
||||
const DataRowComponent = React.forwardRef<HTMLDivElement, DataRowProps>(
|
||||
(
|
||||
{
|
||||
number,
|
||||
title,
|
||||
colorHex,
|
||||
details,
|
||||
onSelect,
|
||||
isLocked,
|
||||
onToggleVisibility,
|
||||
onToggleLocked,
|
||||
onRename,
|
||||
onDelete,
|
||||
onColor,
|
||||
isSelected = false,
|
||||
isVisible = true,
|
||||
disableEditing = false,
|
||||
className,
|
||||
children,
|
||||
},
|
||||
ref
|
||||
) => {
|
||||
const [isDropdownOpen, setIsDropdownOpen] = useState(false);
|
||||
const isTitleLong = title?.length > 25;
|
||||
|
||||
// Extract Status components from children
|
||||
const statusComponents = React.Children.toArray(children).filter(
|
||||
child =>
|
||||
React.isValidElement(child) &&
|
||||
child.type &&
|
||||
(child.type as any).displayName?.startsWith('DataRow.Status')
|
||||
);
|
||||
// Extract Status components from children
|
||||
const statusComponents = React.Children.toArray(children).filter(
|
||||
child =>
|
||||
React.isValidElement(child) &&
|
||||
child.type &&
|
||||
(child.type as React.ComponentType).displayName?.startsWith('DataRow.Status')
|
||||
);
|
||||
|
||||
// useEffect(() => {
|
||||
// if (isSelected && rowRef.current) {
|
||||
// setTimeout(() => {
|
||||
// rowRef.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
||||
// }, 200);
|
||||
// }
|
||||
// }, [isSelected]);
|
||||
const handleAction = (action: string, e: React.MouseEvent) => {
|
||||
e.stopPropagation();
|
||||
switch (action) {
|
||||
case 'Rename':
|
||||
onRename(e);
|
||||
break;
|
||||
case 'Lock':
|
||||
onToggleLocked(e);
|
||||
break;
|
||||
case 'Delete':
|
||||
onDelete(e);
|
||||
break;
|
||||
case 'Color':
|
||||
onColor(e);
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
const handleAction = (action: string, e: React.MouseEvent) => {
|
||||
e.stopPropagation();
|
||||
switch (action) {
|
||||
case 'Rename':
|
||||
onRename(e);
|
||||
break;
|
||||
case 'Lock':
|
||||
onToggleLocked(e);
|
||||
break;
|
||||
case 'Delete':
|
||||
onDelete(e);
|
||||
break;
|
||||
case 'Color':
|
||||
onColor(e);
|
||||
break;
|
||||
}
|
||||
};
|
||||
const decodeHTML = (html: string) => {
|
||||
const txt = document.createElement('textarea');
|
||||
txt.innerHTML = html;
|
||||
return txt.value;
|
||||
};
|
||||
|
||||
const decodeHTML = (html: string) => {
|
||||
const txt = document.createElement('textarea');
|
||||
txt.innerHTML = html;
|
||||
return txt.value;
|
||||
};
|
||||
|
||||
const renderDetailText = (text: string, indent: number = 0) => {
|
||||
const indentation = ' '.repeat(indent);
|
||||
if (text === '') {
|
||||
const renderDetailText = (text: string, indent: number = 0) => {
|
||||
const indentation = ' '.repeat(indent);
|
||||
if (text === '') {
|
||||
return (
|
||||
<div
|
||||
key={`empty-${indent}`}
|
||||
className="h-2"
|
||||
></div>
|
||||
);
|
||||
}
|
||||
const cleanText = decodeHTML(text);
|
||||
return (
|
||||
<div
|
||||
key={`empty-${indent}`}
|
||||
className="h-2"
|
||||
></div>
|
||||
key={cleanText}
|
||||
className="whitespace-pre-wrap"
|
||||
>
|
||||
{indentation}
|
||||
<span className="font-medium">{cleanText}</span>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
const cleanText = decodeHTML(text);
|
||||
return (
|
||||
<div
|
||||
key={cleanText}
|
||||
className="whitespace-pre-wrap"
|
||||
>
|
||||
{indentation}
|
||||
<span className="font-medium">{cleanText}</span>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
};
|
||||
|
||||
const renderDetails = (details: string[]) => {
|
||||
const visibleLines = details.slice(0, 4);
|
||||
const hiddenLines = details.slice(4);
|
||||
const renderDetails = (details: string[]) => {
|
||||
const visibleLines = details.slice(0, 4);
|
||||
const hiddenLines = details.slice(4);
|
||||
|
||||
return (
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<div className="cursor-help">
|
||||
<div className="flex flex-col space-y-1">
|
||||
{visibleLines.map((line, lineIndex) =>
|
||||
return (
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<div className="cursor-help">
|
||||
<div className="flex flex-col space-y-1">
|
||||
{visibleLines.map((line, lineIndex) =>
|
||||
renderDetailText(line, line.startsWith(' ') ? 1 : 0)
|
||||
)}
|
||||
</div>
|
||||
{hiddenLines.length > 0 && (
|
||||
<div className="text-muted-foreground mt-1 flex items-center text-sm">
|
||||
<span>...</span>
|
||||
<Icons.Info className="mr-1 h-5 w-5" />
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent
|
||||
side="right"
|
||||
align="start"
|
||||
className="max-w-md"
|
||||
>
|
||||
<div className="text-secondary-foreground flex flex-col space-y-1 text-sm leading-normal">
|
||||
{details.map((line, lineIndex) =>
|
||||
renderDetailText(line, line.startsWith(' ') ? 1 : 0)
|
||||
)}
|
||||
</div>
|
||||
{hiddenLines.length > 0 && (
|
||||
<div className="text-muted-foreground mt-1 flex items-center text-sm">
|
||||
<span>...</span>
|
||||
<Icons.Info className="mr-1 h-5 w-5" />
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent
|
||||
side="right"
|
||||
align="start"
|
||||
className="max-w-md"
|
||||
>
|
||||
<div className="text-secondary-foreground flex flex-col space-y-1 text-sm leading-normal">
|
||||
{details.map((line, lineIndex) =>
|
||||
renderDetailText(line, line.startsWith(' ') ? 1 : 0)
|
||||
)}
|
||||
</div>
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
);
|
||||
};
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
);
|
||||
};
|
||||
|
||||
return (
|
||||
<div
|
||||
ref={rowRef}
|
||||
className={cn('flex flex-col', !isVisible && 'opacity-60', className)}
|
||||
>
|
||||
return (
|
||||
<div
|
||||
className={`flex items-center ${
|
||||
isSelected ? 'bg-popover' : 'bg-muted'
|
||||
} group relative cursor-pointer`}
|
||||
onClick={onSelect}
|
||||
data-cy="data-row"
|
||||
ref={ref}
|
||||
className={cn('flex flex-col', !isVisible && 'opacity-60', className)}
|
||||
>
|
||||
{/* Hover Overlay */}
|
||||
<div className="bg-primary/20 pointer-events-none absolute inset-0 opacity-0 transition-opacity group-hover:opacity-100"></div>
|
||||
<div
|
||||
className={`flex items-center ${
|
||||
isSelected ? 'bg-popover' : 'bg-muted'
|
||||
} group relative cursor-pointer`}
|
||||
onClick={onSelect}
|
||||
data-cy="data-row"
|
||||
>
|
||||
{/* Hover Overlay */}
|
||||
<div className="bg-primary/20 pointer-events-none absolute inset-0 opacity-0 transition-opacity group-hover:opacity-100"></div>
|
||||
|
||||
{/* Number Box */}
|
||||
{number !== null && (
|
||||
<div
|
||||
className={`flex h-7 max-h-7 w-7 flex-shrink-0 items-center justify-center rounded-l border-r border-black text-base ${
|
||||
isSelected ? 'bg-highlight text-black' : 'bg-muted text-muted-foreground'
|
||||
} overflow-hidden`}
|
||||
>
|
||||
{number}
|
||||
</div>
|
||||
)}
|
||||
{/* Number Box */}
|
||||
{number !== null && (
|
||||
<div
|
||||
className={`flex h-7 max-h-7 w-7 flex-shrink-0 items-center justify-center rounded-l border-r border-black text-base ${
|
||||
isSelected ? 'bg-highlight text-black' : 'bg-muted text-muted-foreground'
|
||||
} overflow-hidden`}
|
||||
>
|
||||
{number}
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* add some space if there is not segment index */}
|
||||
{number === null && <div className="ml-1 h-7"></div>}
|
||||
{colorHex && (
|
||||
<div className="flex h-7 w-5 items-center justify-center">
|
||||
<span
|
||||
className="ml-2 h-2 w-2 rounded-full"
|
||||
style={{ backgroundColor: colorHex }}
|
||||
></span>
|
||||
</div>
|
||||
)}
|
||||
{/* add some space if there is not segment index */}
|
||||
{number === null && <div className="ml-1 h-7"></div>}
|
||||
{colorHex && (
|
||||
<div className="flex h-7 w-5 items-center justify-center">
|
||||
<span
|
||||
className="ml-2 h-2 w-2 rounded-full"
|
||||
style={{ backgroundColor: colorHex }}
|
||||
></span>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* Label with Conditional Tooltip */}
|
||||
<div className="ml-2 flex-1 overflow-hidden">
|
||||
{isTitleLong ? (
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<span
|
||||
className={`cursor-default text-base ${
|
||||
isSelected ? 'text-highlight' : 'text-muted-foreground'
|
||||
} [overflow:hidden] [display:-webkit-box] [-webkit-line-clamp:2] [-webkit-box-orient:vertical]`}
|
||||
{/* Label with Conditional Tooltip */}
|
||||
<div className="ml-2 flex-1 overflow-hidden">
|
||||
{isTitleLong ? (
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<span
|
||||
className={`cursor-default text-base ${
|
||||
isSelected ? 'text-highlight' : 'text-muted-foreground'
|
||||
} [overflow:hidden] [display:-webkit-box] [-webkit-line-clamp:2] [-webkit-box-orient:vertical]`}
|
||||
>
|
||||
{title}
|
||||
</span>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent
|
||||
side="top"
|
||||
align="center"
|
||||
>
|
||||
{title}
|
||||
</span>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent
|
||||
side="top"
|
||||
align="center"
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
) : (
|
||||
<span
|
||||
className={`text-base ${
|
||||
isSelected ? 'text-highlight' : 'text-muted-foreground'
|
||||
} [overflow:hidden] [display:-webkit-box] [-webkit-line-clamp:2] [-webkit-box-orient:vertical]`}
|
||||
>
|
||||
{title}
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
) : (
|
||||
<span
|
||||
className={`text-base ${
|
||||
isSelected ? 'text-highlight' : 'text-muted-foreground'
|
||||
} [overflow:hidden] [display:-webkit-box] [-webkit-line-clamp:2] [-webkit-box-orient:vertical]`}
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
|
||||
{/* Actions and Visibility Toggle */}
|
||||
<div className="relative ml-2 flex items-center space-x-1">
|
||||
{/* Visibility Toggle Icon */}
|
||||
<Button
|
||||
size="icon"
|
||||
variant="ghost"
|
||||
className={`h-6 w-6 transition-opacity ${
|
||||
isSelected || !isVisible ? 'opacity-100' : 'opacity-0 group-hover:opacity-100'
|
||||
}`}
|
||||
aria-label={isVisible ? 'Hide' : 'Show'}
|
||||
onClick={e => {
|
||||
e.stopPropagation();
|
||||
onToggleVisibility(e);
|
||||
}}
|
||||
>
|
||||
{title}
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
{isVisible ? <Icons.Hide className="h-6 w-6" /> : <Icons.Show className="h-6 w-6" />}
|
||||
</Button>
|
||||
|
||||
{/* Actions and Visibility Toggle */}
|
||||
<div className="relative ml-2 flex items-center space-x-1">
|
||||
{/* Visibility Toggle Icon */}
|
||||
<Button
|
||||
size="icon"
|
||||
variant="ghost"
|
||||
className={`h-6 w-6 transition-opacity ${
|
||||
isSelected || !isVisible ? 'opacity-100' : 'opacity-0 group-hover:opacity-100'
|
||||
}`}
|
||||
aria-label={isVisible ? 'Hide' : 'Show'}
|
||||
onClick={e => {
|
||||
e.stopPropagation();
|
||||
onToggleVisibility(e);
|
||||
}}
|
||||
>
|
||||
{isVisible ? <Icons.Hide className="h-6 w-6" /> : <Icons.Show className="h-6 w-6" />}
|
||||
</Button>
|
||||
{/* Lock Icon (if needed) */}
|
||||
{isLocked && !disableEditing && (
|
||||
<Icons.Lock className="text-muted-foreground h-6 w-6" />
|
||||
)}
|
||||
|
||||
{/* Lock Icon (if needed) */}
|
||||
{isLocked && !disableEditing && <Icons.Lock className="text-muted-foreground h-6 w-6" />}
|
||||
{/* Status Components */}
|
||||
{statusComponents}
|
||||
|
||||
{/* Status Components */}
|
||||
{statusComponents}
|
||||
|
||||
{/* Actions Dropdown Menu */}
|
||||
{disableEditing && <div className="h-6 w-6"></div>}
|
||||
{!disableEditing && (
|
||||
<DropdownMenu onOpenChange={open => setIsDropdownOpen(open)}>
|
||||
<DropdownMenuTrigger asChild>
|
||||
<Button
|
||||
size="icon"
|
||||
variant="ghost"
|
||||
className={`h-6 w-6 transition-opacity ${
|
||||
isSelected || isDropdownOpen
|
||||
? 'opacity-100'
|
||||
: 'opacity-0 group-hover:opacity-100'
|
||||
}`}
|
||||
aria-label="Actions"
|
||||
dataCY="actionsMenuTrigger"
|
||||
onClick={e => e.stopPropagation()} // Prevent row selection on button click
|
||||
{/* Actions Dropdown Menu */}
|
||||
{disableEditing && <div className="h-6 w-6"></div>}
|
||||
{!disableEditing && (
|
||||
<DropdownMenu onOpenChange={open => setIsDropdownOpen(open)}>
|
||||
<DropdownMenuTrigger asChild>
|
||||
<Button
|
||||
size="icon"
|
||||
variant="ghost"
|
||||
className={`h-6 w-6 transition-opacity ${
|
||||
isSelected || isDropdownOpen
|
||||
? 'opacity-100'
|
||||
: 'opacity-0 group-hover:opacity-100'
|
||||
}`}
|
||||
aria-label="Actions"
|
||||
dataCY="actionsMenuTrigger"
|
||||
onClick={e => e.stopPropagation()} // Prevent row selection on button click
|
||||
>
|
||||
<Icons.More className="h-6 w-6" />
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent
|
||||
align="end"
|
||||
// this was causing issue for auto focus on input dialog
|
||||
onCloseAutoFocus={e => e.preventDefault()}
|
||||
>
|
||||
<Icons.More className="h-6 w-6" />
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent
|
||||
align="end"
|
||||
// this was causing issue for auto focus on input dialog
|
||||
onCloseAutoFocus={e => e.preventDefault()}
|
||||
>
|
||||
<>
|
||||
<DropdownMenuItem onClick={e => handleAction('Rename', e)}>
|
||||
<Icons.Rename className="text-foreground" />
|
||||
<span
|
||||
className="pl-2"
|
||||
data-cy="Rename"
|
||||
>
|
||||
Rename
|
||||
</span>
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem onClick={e => handleAction('Delete', e)}>
|
||||
<Icons.Delete className="text-foreground" />
|
||||
<span
|
||||
className="pl-2"
|
||||
data-cy="Delete"
|
||||
>
|
||||
Delete
|
||||
</span>
|
||||
</DropdownMenuItem>
|
||||
{onColor && (
|
||||
<DropdownMenuItem onClick={e => handleAction('Color', e)}>
|
||||
<Icons.ColorChange className="text-foreground" />
|
||||
<>
|
||||
<DropdownMenuItem onClick={e => handleAction('Rename', e)}>
|
||||
<Icons.Rename className="text-foreground" />
|
||||
<span
|
||||
className="pl-2"
|
||||
data-cy="Change Color"
|
||||
data-cy="Rename"
|
||||
>
|
||||
Change Color
|
||||
Rename
|
||||
</span>
|
||||
</DropdownMenuItem>
|
||||
)}
|
||||
<DropdownMenuItem onClick={e => handleAction('Lock', e)}>
|
||||
<Icons.Lock className="text-foreground" />
|
||||
<span
|
||||
className="pl-2"
|
||||
data-cy="LockToggle"
|
||||
>
|
||||
{isLocked ? 'Unlock' : 'Lock'}
|
||||
</span>
|
||||
</DropdownMenuItem>
|
||||
</>
|
||||
</DropdownMenuContent>
|
||||
</DropdownMenu>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Details Section */}
|
||||
{details && (details.primary?.length > 0 || details.secondary?.length > 0) && (
|
||||
<div className="ml-7 px-2 py-2">
|
||||
<div className="text-secondary-foreground flex items-center gap-1 text-base leading-normal">
|
||||
{details.primary?.length > 0 && renderDetails(details.primary)}
|
||||
{details.secondary?.length > 0 && (
|
||||
<div className="text-muted-foreground ml-auto text-sm">
|
||||
{renderDetails(details.secondary)}
|
||||
</div>
|
||||
<DropdownMenuItem onClick={e => handleAction('Delete', e)}>
|
||||
<Icons.Delete className="text-foreground" />
|
||||
<span
|
||||
className="pl-2"
|
||||
data-cy="Delete"
|
||||
>
|
||||
Delete
|
||||
</span>
|
||||
</DropdownMenuItem>
|
||||
{onColor && (
|
||||
<DropdownMenuItem onClick={e => handleAction('Color', e)}>
|
||||
<Icons.ColorChange className="text-foreground" />
|
||||
<span
|
||||
className="pl-2"
|
||||
data-cy="Change Color"
|
||||
>
|
||||
Change Color
|
||||
</span>
|
||||
</DropdownMenuItem>
|
||||
)}
|
||||
<DropdownMenuItem onClick={e => handleAction('Lock', e)}>
|
||||
<Icons.Lock className="text-foreground" />
|
||||
<span
|
||||
className="pl-2"
|
||||
data-cy="LockToggle"
|
||||
>
|
||||
{isLocked ? 'Unlock' : 'Lock'}
|
||||
</span>
|
||||
</DropdownMenuItem>
|
||||
</>
|
||||
</DropdownMenuContent>
|
||||
</DropdownMenu>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
{/* Details Section */}
|
||||
{details && (details.primary?.length > 0 || details.secondary?.length > 0) && (
|
||||
<div className="ml-7 px-2 py-2">
|
||||
<div className="text-secondary-foreground flex items-center gap-1 text-base leading-normal">
|
||||
{details.primary?.length > 0 && renderDetails(details.primary)}
|
||||
{details.secondary?.length > 0 && (
|
||||
<div className="text-muted-foreground ml-auto text-sm">
|
||||
{renderDetails(details.secondary)}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
DataRowComponent.displayName = 'DataRow';
|
||||
|
||||
interface StatusProps {
|
||||
children: React.ReactNode;
|
||||
@@ -490,7 +490,7 @@ Status.Success = StatusSuccess;
|
||||
Status.Error = StatusError;
|
||||
Status.Info = StatusInfo;
|
||||
|
||||
const DataRow = DataRowComponent as React.FC<DataRowProps> & {
|
||||
const DataRow = DataRowComponent as typeof DataRowComponent & {
|
||||
Status: typeof Status;
|
||||
};
|
||||
|
||||
|
||||
@@ -112,10 +112,17 @@ interface ErrorBoundaryError extends Error {
|
||||
stack?: string;
|
||||
}
|
||||
|
||||
enum ShowErrorDetails {
|
||||
always = 'always',
|
||||
dev = 'dev',
|
||||
production = 'production',
|
||||
}
|
||||
|
||||
interface DefaultFallbackProps extends FallbackProps {
|
||||
error: ErrorBoundaryError;
|
||||
context: string;
|
||||
resetErrorBoundary: () => void;
|
||||
showErrorDetails?: ShowErrorDetails;
|
||||
}
|
||||
|
||||
interface ErrorBoundaryProps {
|
||||
@@ -126,13 +133,21 @@ interface ErrorBoundaryProps {
|
||||
children: React.ReactNode;
|
||||
fallbackRoute?: string | null;
|
||||
isPage?: boolean;
|
||||
showErrorDetails?: ShowErrorDetails;
|
||||
}
|
||||
|
||||
const DefaultFallback = ({
|
||||
error,
|
||||
context,
|
||||
resetErrorBoundary = () => {},
|
||||
showErrorDetails,
|
||||
}: DefaultFallbackProps) => {
|
||||
const isShowDetailsButtonVisible =
|
||||
showErrorDetails == null ||
|
||||
showErrorDetails === ShowErrorDetails.always ||
|
||||
(showErrorDetails === ShowErrorDetails.dev && !isProduction) ||
|
||||
(showErrorDetails === ShowErrorDetails.production && isProduction);
|
||||
|
||||
const { t } = useTranslation('ErrorBoundary');
|
||||
const [showDetails, setShowDetails] = useState(false);
|
||||
const { show } = useNotification();
|
||||
@@ -165,17 +180,15 @@ const DefaultFallback = ({
|
||||
type: 'error',
|
||||
duration: 0,
|
||||
id: errorId,
|
||||
action: {
|
||||
label: t('Show Details'),
|
||||
onClick: () => setShowDetails(true),
|
||||
},
|
||||
action: isShowDetailsButtonVisible
|
||||
? {
|
||||
label: t('Show Details'),
|
||||
onClick: () => setShowDetails(true),
|
||||
}
|
||||
: undefined,
|
||||
});
|
||||
}, [error, errorTitle, subtitle, t, title, show]);
|
||||
|
||||
if (isProduction) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<Dialog
|
||||
open={showDetails}
|
||||
@@ -250,6 +263,7 @@ const ErrorBoundary = ({
|
||||
onError = _error => {},
|
||||
fallbackComponent: FallbackComponent = DefaultFallback,
|
||||
children,
|
||||
showErrorDetails,
|
||||
}: ErrorBoundaryProps) => {
|
||||
const [error, setError] = useState<ErrorBoundaryError | null>(null);
|
||||
|
||||
@@ -303,6 +317,7 @@ const ErrorBoundary = ({
|
||||
<FallbackComponent
|
||||
{...props}
|
||||
context={context}
|
||||
showErrorDetails={showErrorDetails}
|
||||
/>
|
||||
)}
|
||||
onReset={onResetHandler}
|
||||
@@ -315,6 +330,7 @@ const ErrorBoundary = ({
|
||||
error={error}
|
||||
context={context}
|
||||
resetErrorBoundary={() => setError(null)}
|
||||
showErrorDetails={showErrorDetails}
|
||||
/>
|
||||
)}
|
||||
</>
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import React from 'react';
|
||||
import React, { useEffect } from 'react';
|
||||
import { ScrollArea, DataRow } from '../../components';
|
||||
import { HoverCard, HoverCardTrigger, HoverCardContent } from '../../components/HoverCard';
|
||||
import { useSegmentationTableContext, useSegmentationExpanded } from './contexts';
|
||||
@@ -23,6 +23,11 @@ export const SegmentationSegments = ({ children = null }: { children?: React.Rea
|
||||
let segmentation;
|
||||
let representation;
|
||||
|
||||
const activeSegmentRef = React.useRef<{
|
||||
element: HTMLElement | null;
|
||||
index: number | null;
|
||||
}>({ element: null, index: null });
|
||||
|
||||
try {
|
||||
// Try to use the SegmentationExpanded context if available
|
||||
const segmentationInfo = useSegmentationExpanded('SegmentationSegments');
|
||||
@@ -38,108 +43,163 @@ export const SegmentationSegments = ({ children = null }: { children?: React.Rea
|
||||
}
|
||||
|
||||
const segments = Object.values(representation.segments);
|
||||
|
||||
// Find the active segment to scroll to it when it changes
|
||||
const activeSegment = segments.find(segment => {
|
||||
if (!segment) {
|
||||
return false;
|
||||
}
|
||||
const segmentFromSegmentation = segmentation.segments[segment.segmentIndex];
|
||||
return segmentFromSegmentation?.active;
|
||||
});
|
||||
|
||||
const isActiveSegmentation = segmentation.segmentationId === activeSegmentationId;
|
||||
|
||||
const { ref: scrollableContainerRef, maxHeight } = useDynamicMaxHeight(segments);
|
||||
|
||||
useEffect(() => {
|
||||
const activeSegmentIndex = activeSegmentRef.current.index;
|
||||
if (!activeSegmentIndex || activeSegmentIndex !== activeSegment?.segmentIndex) {
|
||||
return;
|
||||
}
|
||||
|
||||
const activeSegmentElement = activeSegmentRef.current.element;
|
||||
|
||||
if (!activeSegmentElement) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if the active segment is already visible.
|
||||
const activeSegmentElementBounds = activeSegmentElement.getBoundingClientRect();
|
||||
const scrollableContainerRect = scrollableContainerRef.current.getBoundingClientRect();
|
||||
if (
|
||||
activeSegmentElementBounds.top > scrollableContainerRect.top &&
|
||||
activeSegmentElementBounds.bottom < scrollableContainerRect.bottom
|
||||
) {
|
||||
// The active segment is already visible, so we don't need to scroll.
|
||||
return;
|
||||
}
|
||||
|
||||
activeSegmentElement.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
||||
}, [activeSegment?.segmentIndex, scrollableContainerRef]);
|
||||
|
||||
if (!representation || !segmentation) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<ScrollArea
|
||||
className={`bg-bkg-low space-y-px`}
|
||||
showArrows={true}
|
||||
>
|
||||
<div
|
||||
ref={scrollableContainerRef}
|
||||
style={{ maxHeight: maxHeight }}
|
||||
<div ref={scrollableContainerRef}>
|
||||
<ScrollArea
|
||||
className={`bg-bkg-low space-y-px`}
|
||||
showArrows={
|
||||
scrollableContainerRef?.current
|
||||
? scrollableContainerRef?.current?.offsetHeight >= parseFloat(maxHeight)
|
||||
: false
|
||||
}
|
||||
>
|
||||
{segments.map(segment => {
|
||||
if (!segment) {
|
||||
return null;
|
||||
}
|
||||
const { segmentIndex, color, visible } = segment as {
|
||||
segmentIndex: number;
|
||||
color: number[];
|
||||
visible: boolean;
|
||||
};
|
||||
const segmentFromSegmentation = segmentation.segments[segmentIndex];
|
||||
<div style={{ maxHeight: maxHeight }}>
|
||||
{segments.map(segment => {
|
||||
if (!segment) {
|
||||
return null;
|
||||
}
|
||||
const { segmentIndex, color, visible } = segment as {
|
||||
segmentIndex: number;
|
||||
color: number[];
|
||||
visible: boolean;
|
||||
};
|
||||
const segmentFromSegmentation = segmentation.segments[segmentIndex];
|
||||
|
||||
if (!segmentFromSegmentation) {
|
||||
return null;
|
||||
}
|
||||
if (!segmentFromSegmentation) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const { locked, active, label, displayText } = segmentFromSegmentation;
|
||||
const cssColor = `rgb(${color[0]},${color[1]},${color[2]})`;
|
||||
const { locked, active, label, displayText } = segmentFromSegmentation;
|
||||
const cssColor = `rgb(${color[0]},${color[1]},${color[2]})`;
|
||||
|
||||
const hasStats = segmentFromSegmentation.cachedStats?.namedStats;
|
||||
const DataRowComponent = (
|
||||
<DataRow
|
||||
key={segmentIndex}
|
||||
number={showSegmentIndex ? segmentIndex : null}
|
||||
title={label}
|
||||
// details={displayText}
|
||||
description={displayText}
|
||||
colorHex={cssColor}
|
||||
isSelected={active}
|
||||
isVisible={visible}
|
||||
isLocked={locked}
|
||||
disableEditing={disableEditing}
|
||||
className={!isActiveSegmentation ? 'opacity-80' : ''}
|
||||
onColor={() => onSegmentColorClick(segmentation.segmentationId, segmentIndex)}
|
||||
onToggleVisibility={() =>
|
||||
onToggleSegmentVisibility(
|
||||
segmentation.segmentationId,
|
||||
segmentIndex,
|
||||
representation.type
|
||||
)
|
||||
const hasStats = segmentFromSegmentation.cachedStats?.namedStats;
|
||||
|
||||
const segmentRowRef = (element: HTMLElement) => {
|
||||
if (!active) {
|
||||
return;
|
||||
}
|
||||
onToggleLocked={() => onToggleSegmentLock(segmentation.segmentationId, segmentIndex)}
|
||||
onSelect={() => onSegmentClick(segmentation.segmentationId, segmentIndex)}
|
||||
onRename={() => onSegmentEdit(segmentation.segmentationId, segmentIndex)}
|
||||
onDelete={() => onSegmentDelete(segmentation.segmentationId, segmentIndex)}
|
||||
/>
|
||||
);
|
||||
|
||||
return hasStats ? (
|
||||
<HoverCard
|
||||
key={`hover-${segmentIndex}`}
|
||||
openDelay={300}
|
||||
>
|
||||
<HoverCardTrigger asChild>
|
||||
<div>{DataRowComponent}</div>
|
||||
</HoverCardTrigger>
|
||||
<HoverCardContent
|
||||
side="left"
|
||||
align="start"
|
||||
className="w-72 border"
|
||||
>
|
||||
<div className="mb-4 flex items-center space-x-2">
|
||||
<div
|
||||
className="h-2.5 w-2.5 flex-shrink-0 rounded-full"
|
||||
style={{ backgroundColor: cssColor }}
|
||||
></div>
|
||||
<h3 className="text-muted-foreground break-words font-semibold">{label}</h3>
|
||||
</div>
|
||||
if (element) {
|
||||
activeSegmentRef.current = { element, index: segmentIndex };
|
||||
} else {
|
||||
activeSegmentRef.current = { element: null, index: null };
|
||||
}
|
||||
};
|
||||
|
||||
<SegmentStatistics
|
||||
segment={{
|
||||
...segmentFromSegmentation,
|
||||
const DataRowComponent = (
|
||||
<DataRow
|
||||
ref={segmentRowRef}
|
||||
key={segmentIndex}
|
||||
number={showSegmentIndex ? segmentIndex : null}
|
||||
title={label}
|
||||
// details={displayText}
|
||||
description={displayText}
|
||||
colorHex={cssColor}
|
||||
isSelected={active}
|
||||
isVisible={visible}
|
||||
isLocked={locked}
|
||||
disableEditing={disableEditing}
|
||||
className={!isActiveSegmentation ? 'opacity-80' : ''}
|
||||
onColor={() => onSegmentColorClick(segmentation.segmentationId, segmentIndex)}
|
||||
onToggleVisibility={() =>
|
||||
onToggleSegmentVisibility(
|
||||
segmentation.segmentationId,
|
||||
segmentIndex,
|
||||
}}
|
||||
segmentationId={segmentation.segmentationId}
|
||||
representation.type
|
||||
)
|
||||
}
|
||||
onToggleLocked={() =>
|
||||
onToggleSegmentLock(segmentation.segmentationId, segmentIndex)
|
||||
}
|
||||
onSelect={() => onSegmentClick(segmentation.segmentationId, segmentIndex)}
|
||||
onRename={() => onSegmentEdit(segmentation.segmentationId, segmentIndex)}
|
||||
onDelete={() => onSegmentDelete(segmentation.segmentationId, segmentIndex)}
|
||||
/>
|
||||
);
|
||||
|
||||
return hasStats ? (
|
||||
<HoverCard
|
||||
key={`hover-${segmentIndex}`}
|
||||
openDelay={300}
|
||||
>
|
||||
<HoverCardTrigger asChild>
|
||||
<div>{DataRowComponent}</div>
|
||||
</HoverCardTrigger>
|
||||
<HoverCardContent
|
||||
side="left"
|
||||
align="start"
|
||||
className="w-72 border"
|
||||
>
|
||||
{children}
|
||||
</SegmentStatistics>
|
||||
</HoverCardContent>
|
||||
</HoverCard>
|
||||
) : (
|
||||
DataRowComponent
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
</ScrollArea>
|
||||
<div className="mb-4 flex items-center space-x-2">
|
||||
<div
|
||||
className="h-2.5 w-2.5 flex-shrink-0 rounded-full"
|
||||
style={{ backgroundColor: cssColor }}
|
||||
></div>
|
||||
<h3 className="text-muted-foreground break-words font-semibold">{label}</h3>
|
||||
</div>
|
||||
|
||||
<SegmentStatistics
|
||||
segment={{
|
||||
...segmentFromSegmentation,
|
||||
segmentIndex,
|
||||
}}
|
||||
segmentationId={segmentation.segmentationId}
|
||||
>
|
||||
{children}
|
||||
</SegmentStatistics>
|
||||
</HoverCardContent>
|
||||
</HoverCard>
|
||||
) : (
|
||||
DataRowComponent
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
</ScrollArea>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -1,5 +1,29 @@
|
||||
import { useRef, useState, useEffect, RefObject } from 'react';
|
||||
|
||||
const _getMovementIntersectionObserver = ({
|
||||
callback,
|
||||
rootMargin,
|
||||
threshold,
|
||||
}: {
|
||||
callback: () => void;
|
||||
rootMargin: string;
|
||||
threshold: number[];
|
||||
}): IntersectionObserver => {
|
||||
return new IntersectionObserver(
|
||||
entries => {
|
||||
entries.forEach(entry => {
|
||||
if (entry.isIntersecting) {
|
||||
callback();
|
||||
}
|
||||
});
|
||||
},
|
||||
{
|
||||
threshold,
|
||||
rootMargin,
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Calculates the maximum height for an element based on its position
|
||||
* relative to the bottom of the viewport.
|
||||
@@ -31,20 +55,49 @@ export function useDynamicMaxHeight(
|
||||
}
|
||||
};
|
||||
|
||||
// Calculate initially
|
||||
// Use requestAnimationFrame to ensure layout is stable after initial render
|
||||
const rafId = requestAnimationFrame(calculateMaxHeight);
|
||||
// Two intersection observers to trigger a recalculation when the target element
|
||||
// moves up or down. One for moving up and one for moving down.
|
||||
// Note that with this approach we don't need to use a resize observer nor
|
||||
// a window resize listener.
|
||||
|
||||
// Recalculate on window resize
|
||||
window.addEventListener('resize', calculateMaxHeight);
|
||||
// The trick is to use a margin for the IntersectionObserver to detect movement.
|
||||
// See more below.
|
||||
const rootMarginHeight = maxHeight === '100vh' ? `${window.innerHeight}px` : `${maxHeight}`;
|
||||
|
||||
// Note that we use a fine grained threshold because we don't know how
|
||||
// much it will move and we want any movement to trigger the intersection observer.
|
||||
const threshold = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0];
|
||||
|
||||
// The trick here is to use the calculated maxHeight as the root margin height
|
||||
// so that any movement of the target element down (i.e. "out of the" viewport)
|
||||
// will trigger the intersection observer.
|
||||
const moveDownIntersectionObserver = _getMovementIntersectionObserver({
|
||||
callback: calculateMaxHeight,
|
||||
rootMargin: `0px 0px ${rootMarginHeight} 0px`,
|
||||
threshold,
|
||||
});
|
||||
|
||||
// The trick here is to use the calculated maxHeight as the negative
|
||||
// root margin height so that any movement of the target element up
|
||||
// (i.e. "into the" viewport) will trigger the intersection observer.
|
||||
const moveUpIntersectionObserver = _getMovementIntersectionObserver({
|
||||
callback: calculateMaxHeight,
|
||||
rootMargin: `0px 0px -${rootMarginHeight} 0px`,
|
||||
threshold,
|
||||
});
|
||||
|
||||
if (ref.current) {
|
||||
moveUpIntersectionObserver.observe(ref.current);
|
||||
moveDownIntersectionObserver.observe(ref.current);
|
||||
}
|
||||
|
||||
// Cleanup listener and requestAnimationFrame on component unmount
|
||||
return () => {
|
||||
window.removeEventListener('resize', calculateMaxHeight);
|
||||
cancelAnimationFrame(rafId);
|
||||
moveUpIntersectionObserver.disconnect();
|
||||
moveDownIntersectionObserver.disconnect();
|
||||
};
|
||||
// Dependencies: buffer, minHeight, and data.
|
||||
}, [data, buffer, minHeight]);
|
||||
}, [data, buffer, minHeight, maxHeight]);
|
||||
|
||||
return { ref, maxHeight };
|
||||
}
|
||||
|
||||
@@ -3,6 +3,78 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
# [3.12.0-beta.71](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.70...v3.12.0-beta.71) (2025-10-21)
|
||||
|
||||
**Note:** Version bump only for package @ohif/ui
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.70](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.69...v3.12.0-beta.70) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/ui
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.69](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.68...v3.12.0-beta.69) (2025-10-20)
|
||||
|
||||
**Note:** Version bump only for package @ohif/ui
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.68](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.67...v3.12.0-beta.68) (2025-10-18)
|
||||
|
||||
**Note:** Version bump only for package @ohif/ui
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.67](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.66...v3.12.0-beta.67) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/ui
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.66](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.65...v3.12.0-beta.66) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/ui
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.65](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.64...v3.12.0-beta.65) (2025-10-17)
|
||||
|
||||
**Note:** Version bump only for package @ohif/ui
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.64](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.63...v3.12.0-beta.64) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/ui
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.63](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.62...v3.12.0-beta.63) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/ui
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# [3.12.0-beta.62](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.61...v3.12.0-beta.62) (2025-10-15)
|
||||
|
||||
**Note:** Version bump only for package @ohif/ui
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ohif/ui",
|
||||
"version": "3.12.0-beta.62",
|
||||
"version": "3.12.0-beta.71",
|
||||
"description": "A set of React components for Medical Imaging Viewers",
|
||||
"author": "OHIF Contributors",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
@@ -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 |
Loaded 100 of 107 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user