diff --git a/bun.lock b/bun.lock index 8c7f794fc..1473179ba 100644 --- a/bun.lock +++ b/bun.lock @@ -33,7 +33,7 @@ }, "addOns/externals/devDependencies": { "name": "@externals/devDependencies", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", "@kitware/vtk.js": "32.12.0", @@ -120,22 +120,22 @@ }, "addOns/externals/dicom-microscopy-viewer": { "name": "@externals/dicom-microscopy-viewer", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "dicom-microscopy-viewer": "^0.46.1", }, }, "extensions/cornerstone": { "name": "@ohif/extension-cornerstone", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^3.10.1", - "@cornerstonejs/ai": "^3.10.1", - "@cornerstonejs/core": "^3.10.1", - "@cornerstonejs/labelmap-interpolation": "^3.10.1", - "@cornerstonejs/polymorphic-segmentation": "^3.10.1", - "@cornerstonejs/tools": "^3.10.1", + "@cornerstonejs/adapters": "^3.11.6", + "@cornerstonejs/ai": "^3.11.6", + "@cornerstonejs/core": "^3.11.6", + "@cornerstonejs/labelmap-interpolation": "^3.11.6", + "@cornerstonejs/polymorphic-segmentation": "^3.11.6", + "@cornerstonejs/tools": "^3.11.6", "@itk-wasm/morphological-contour-interpolation": "1.1.0", "@kitware/vtk.js": "32.12.0", "html2canvas": "^1.4.1", @@ -152,9 +152,9 @@ "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.4", "@cornerstonejs/codec-openjph": "^2.4.5", - "@cornerstonejs/dicom-image-loader": "^3.10.1", - "@ohif/core": "3.10.0", - "@ohif/ui": "3.10.0", + "@cornerstonejs/dicom-image-loader": "^3.11.6", + "@ohif/core": "3.10.1", + "@ohif/ui": "3.10.1", "dcmjs": "*", "dicom-parser": "^1.8.21", "hammerjs": "^2.0.8", @@ -166,19 +166,19 @@ }, "extensions/cornerstone-dicom-pmap": { "name": "@ohif/extension-cornerstone-dicom-pmap", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^3.10.1", - "@cornerstonejs/core": "^3.10.1", + "@cornerstonejs/adapters": "^3.11.6", + "@cornerstonejs/core": "^3.11.6", "@kitware/vtk.js": "32.12.0", "react-color": "^2.19.3", }, "peerDependencies": { - "@ohif/core": "3.10.0", - "@ohif/extension-cornerstone": "3.10.0", - "@ohif/extension-default": "3.10.0", - "@ohif/i18n": "3.10.0", + "@ohif/core": "3.10.1", + "@ohif/extension-cornerstone": "3.10.1", + "@ohif/extension-default": "3.10.1", + "@ohif/i18n": "3.10.1", "prop-types": "^15.6.2", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -189,16 +189,16 @@ }, "extensions/cornerstone-dicom-rt": { "name": "@ohif/extension-cornerstone-dicom-rt", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", "react-color": "^2.19.3", }, "peerDependencies": { - "@ohif/core": "3.10.0", - "@ohif/extension-cornerstone": "3.10.0", - "@ohif/extension-default": "3.10.0", - "@ohif/i18n": "3.10.0", + "@ohif/core": "3.10.1", + "@ohif/extension-cornerstone": "3.10.1", + "@ohif/extension-default": "3.10.1", + "@ohif/i18n": "3.10.1", "prop-types": "^15.6.2", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -209,19 +209,19 @@ }, "extensions/cornerstone-dicom-seg": { "name": "@ohif/extension-cornerstone-dicom-seg", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^3.10.1", - "@cornerstonejs/core": "^3.10.1", + "@cornerstonejs/adapters": "^3.11.6", + "@cornerstonejs/core": "^3.11.6", "@kitware/vtk.js": "32.12.0", "react-color": "^2.19.3", }, "peerDependencies": { - "@ohif/core": "3.10.0", - "@ohif/extension-cornerstone": "3.10.0", - "@ohif/extension-default": "3.10.0", - "@ohif/i18n": "3.10.0", + "@ohif/core": "3.10.1", + "@ohif/extension-cornerstone": "3.10.1", + "@ohif/extension-default": "3.10.1", + "@ohif/i18n": "3.10.1", "prop-types": "^15.6.2", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -232,19 +232,19 @@ }, "extensions/cornerstone-dicom-sr": { "name": "@ohif/extension-cornerstone-dicom-sr", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^3.10.1", - "@cornerstonejs/core": "^3.10.1", - "@cornerstonejs/tools": "^3.10.1", + "@cornerstonejs/adapters": "^3.11.6", + "@cornerstonejs/core": "^3.11.6", + "@cornerstonejs/tools": "^3.11.6", "classnames": "^2.3.2", }, "peerDependencies": { - "@ohif/core": "3.10.0", - "@ohif/extension-cornerstone": "3.10.0", - "@ohif/extension-measurement-tracking": "3.10.0", - "@ohif/ui": "3.10.0", + "@ohif/core": "3.10.1", + "@ohif/extension-cornerstone": "3.10.1", + "@ohif/extension-measurement-tracking": "3.10.1", + "@ohif/ui": "3.10.1", "dcmjs": "*", "dicom-parser": "^1.8.9", "hammerjs": "^2.0.8", @@ -254,19 +254,19 @@ }, "extensions/cornerstone-dynamic-volume": { "name": "@ohif/extension-cornerstone-dynamic-volume", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/core": "^3.10.1", - "@cornerstonejs/tools": "^3.10.1", + "@cornerstonejs/core": "^3.11.6", + "@cornerstonejs/tools": "^3.11.6", "classnames": "^2.3.2", }, "peerDependencies": { - "@ohif/core": "3.10.0", - "@ohif/extension-cornerstone": "3.10.0", - "@ohif/extension-default": "3.10.0", - "@ohif/i18n": "3.10.0", - "@ohif/ui": "3.10.0", + "@ohif/core": "3.10.1", + "@ohif/extension-cornerstone": "3.10.1", + "@ohif/extension-default": "3.10.1", + "@ohif/i18n": "3.10.1", + "@ohif/ui": "3.10.1", "dcmjs": "*", "dicom-parser": "^1.8.21", "hammerjs": "^2.0.8", @@ -276,7 +276,7 @@ }, "extensions/default": { "name": "@ohif/extension-default", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", "@cornerstonejs/calculate-suv": "^1.1.0", @@ -284,8 +284,8 @@ "lodash.uniqby": "^4.7.0", }, "peerDependencies": { - "@ohif/core": "3.10.0", - "@ohif/i18n": "3.10.0", + "@ohif/core": "3.10.1", + "@ohif/i18n": "3.10.1", "dcmjs": "*", "dicomweb-client": "^0.10.4", "prop-types": "^15.6.2", @@ -299,7 +299,7 @@ }, "extensions/dicom-microscopy": { "name": "@ohif/extension-dicom-microscopy", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", "@cornerstonejs/codec-charls": "^1.2.3", @@ -310,10 +310,10 @@ "mathjs": "^12.4.2", }, "peerDependencies": { - "@ohif/core": "3.10.0", - "@ohif/extension-default": "3.10.0", - "@ohif/i18n": "3.10.0", - "@ohif/ui": "3.10.0", + "@ohif/core": "3.10.1", + "@ohif/extension-default": "3.10.1", + "@ohif/i18n": "3.10.1", + "@ohif/ui": "3.10.1", "prop-types": "^15.6.2", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -324,14 +324,14 @@ }, "extensions/dicom-pdf": { "name": "@ohif/extension-dicom-pdf", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", "classnames": "^2.3.2", }, "peerDependencies": { - "@ohif/core": "3.10.0", - "@ohif/ui": "3.10.0", + "@ohif/core": "3.10.1", + "@ohif/ui": "3.10.1", "dcmjs": "*", "dicom-parser": "^1.8.9", "hammerjs": "^2.0.8", @@ -341,14 +341,14 @@ }, "extensions/dicom-video": { "name": "@ohif/extension-dicom-video", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", "classnames": "^2.3.2", }, "peerDependencies": { - "@ohif/core": "3.10.0", - "@ohif/ui": "3.10.0", + "@ohif/core": "3.10.1", + "@ohif/ui": "3.10.1", "dcmjs": "*", "dicom-parser": "^1.8.9", "hammerjs": "^2.0.8", @@ -358,20 +358,20 @@ }, "extensions/measurement-tracking": { "name": "@ohif/extension-measurement-tracking", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", - "@ohif/ui": "3.10.0", + "@ohif/ui": "3.10.1", "@xstate/react": "^3.2.2", "xstate": "^4.10.0", }, "peerDependencies": { - "@cornerstonejs/core": "^3.10.1", - "@cornerstonejs/tools": "^3.10.1", - "@ohif/core": "3.10.0", - "@ohif/extension-cornerstone-dicom-sr": "3.10.0", - "@ohif/extension-default": "3.10.0", - "@ohif/ui": "3.10.0", + "@cornerstonejs/core": "^3.11.6", + "@cornerstonejs/tools": "^3.11.6", + "@ohif/core": "3.10.1", + "@ohif/extension-cornerstone-dicom-sr": "3.10.1", + "@ohif/extension-default": "3.10.1", + "@ohif/ui": "3.10.1", "classnames": "^2.3.2", "dcmjs": "*", "lodash.debounce": "^4.0.8", @@ -384,14 +384,14 @@ }, "extensions/test-extension": { "name": "@ohif/extension-test", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", "classnames": "^2.3.2", }, "peerDependencies": { - "@ohif/core": "3.10.0", - "@ohif/ui": "3.10.0", + "@ohif/core": "3.10.1", + "@ohif/ui": "3.10.1", "dcmjs": "0.38.0", "dicom-parser": "^1.8.9", "hammerjs": "^2.0.8", @@ -401,7 +401,7 @@ }, "extensions/tmtv": { "name": "@ohif/extension-tmtv", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", "classnames": "^2.3.2", @@ -418,7 +418,7 @@ }, "modes/basic-dev-mode": { "name": "@ohif/mode-basic-dev-mode", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", "i18next": "^17.0.3", @@ -428,17 +428,17 @@ "webpack-merge": "^5.7.3", }, "peerDependencies": { - "@ohif/core": "3.10.0", - "@ohif/extension-cornerstone": "3.10.0", - "@ohif/extension-cornerstone-dicom-sr": "3.10.0", - "@ohif/extension-default": "3.10.0", - "@ohif/extension-dicom-pdf": "3.10.0", - "@ohif/extension-dicom-video": "3.10.0", + "@ohif/core": "3.10.1", + "@ohif/extension-cornerstone": "3.10.1", + "@ohif/extension-cornerstone-dicom-sr": "3.10.1", + "@ohif/extension-default": "3.10.1", + "@ohif/extension-dicom-pdf": "3.10.1", + "@ohif/extension-dicom-video": "3.10.1", }, }, "modes/basic-test-mode": { "name": "@ohif/mode-test", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", "i18next": "^17.0.3", @@ -448,19 +448,19 @@ "webpack-merge": "^5.7.3", }, "peerDependencies": { - "@ohif/core": "3.10.0", - "@ohif/extension-cornerstone": "3.10.0", - "@ohif/extension-cornerstone-dicom-sr": "3.10.0", - "@ohif/extension-default": "3.10.0", - "@ohif/extension-dicom-pdf": "3.10.0", - "@ohif/extension-dicom-video": "3.10.0", - "@ohif/extension-measurement-tracking": "3.10.0", - "@ohif/extension-test": "3.10.0", + "@ohif/core": "3.10.1", + "@ohif/extension-cornerstone": "3.10.1", + "@ohif/extension-cornerstone-dicom-sr": "3.10.1", + "@ohif/extension-default": "3.10.1", + "@ohif/extension-dicom-pdf": "3.10.1", + "@ohif/extension-dicom-video": "3.10.1", + "@ohif/extension-measurement-tracking": "3.10.1", + "@ohif/extension-test": "3.10.1", }, }, "modes/longitudinal": { "name": "@ohif/mode-longitudinal", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", "i18next": "^17.0.3", @@ -470,32 +470,32 @@ "webpack-merge": "^5.7.3", }, "peerDependencies": { - "@ohif/core": "3.10.0", - "@ohif/extension-cornerstone": "3.10.0", - "@ohif/extension-cornerstone-dicom-rt": "3.10.0", - "@ohif/extension-cornerstone-dicom-seg": "3.10.0", - "@ohif/extension-cornerstone-dicom-sr": "3.10.0", - "@ohif/extension-default": "3.10.0", - "@ohif/extension-dicom-pdf": "3.10.0", - "@ohif/extension-dicom-video": "3.10.0", - "@ohif/extension-measurement-tracking": "3.10.0", + "@ohif/core": "3.10.1", + "@ohif/extension-cornerstone": "3.10.1", + "@ohif/extension-cornerstone-dicom-rt": "3.10.1", + "@ohif/extension-cornerstone-dicom-seg": "3.10.1", + "@ohif/extension-cornerstone-dicom-sr": "3.10.1", + "@ohif/extension-default": "3.10.1", + "@ohif/extension-dicom-pdf": "3.10.1", + "@ohif/extension-dicom-video": "3.10.1", + "@ohif/extension-measurement-tracking": "3.10.1", }, }, "modes/microscopy": { "name": "@ohif/mode-microscopy", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", "i18next": "^17.0.3", }, "peerDependencies": { - "@ohif/core": "3.10.0", - "@ohif/extension-dicom-microscopy": "3.10.0", + "@ohif/core": "3.10.1", + "@ohif/extension-dicom-microscopy": "3.10.1", }, }, "modes/preclinical-4d": { "name": "@ohif/mode-preclinical-4d", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", }, @@ -514,7 +514,7 @@ }, "modes/segmentation": { "name": "@ohif/mode-segmentation", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", "i18next": "^17.0.3", @@ -558,7 +558,7 @@ }, "modes/tmtv": { "name": "@ohif/mode-tmtv", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", "i18next": "^17.0.3", @@ -579,32 +579,32 @@ }, "platform/app": { "name": "@ohif/app", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", "@cornerstonejs/codec-charls": "^1.2.3", "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.4", "@cornerstonejs/codec-openjph": "^2.4.5", - "@cornerstonejs/dicom-image-loader": "^3.10.1", + "@cornerstonejs/dicom-image-loader": "^3.11.6", "@emotion/serialize": "^1.1.3", - "@ohif/core": "3.10.0", - "@ohif/extension-cornerstone": "3.10.0", - "@ohif/extension-cornerstone-dicom-rt": "3.10.0", - "@ohif/extension-cornerstone-dicom-seg": "3.10.0", - "@ohif/extension-cornerstone-dicom-sr": "3.10.0", - "@ohif/extension-default": "3.10.0", - "@ohif/extension-dicom-microscopy": "3.10.0", - "@ohif/extension-dicom-pdf": "3.10.0", - "@ohif/extension-dicom-video": "3.10.0", - "@ohif/extension-test": "3.10.0", - "@ohif/i18n": "3.10.0", - "@ohif/mode-basic-dev-mode": "3.10.0", - "@ohif/mode-longitudinal": "3.10.0", - "@ohif/mode-microscopy": "3.10.0", - "@ohif/mode-test": "3.10.0", - "@ohif/ui": "3.10.0", - "@ohif/ui-next": "3.10.0", + "@ohif/core": "3.10.1", + "@ohif/extension-cornerstone": "3.10.1", + "@ohif/extension-cornerstone-dicom-rt": "3.10.1", + "@ohif/extension-cornerstone-dicom-seg": "3.10.1", + "@ohif/extension-cornerstone-dicom-sr": "3.10.1", + "@ohif/extension-default": "3.10.1", + "@ohif/extension-dicom-microscopy": "3.10.1", + "@ohif/extension-dicom-pdf": "3.10.1", + "@ohif/extension-dicom-video": "3.10.1", + "@ohif/extension-test": "3.10.1", + "@ohif/i18n": "3.10.1", + "@ohif/mode-basic-dev-mode": "3.10.1", + "@ohif/mode-longitudinal": "3.10.1", + "@ohif/mode-microscopy": "3.10.1", + "@ohif/mode-test": "3.10.1", + "@ohif/ui": "3.10.1", + "@ohif/ui-next": "3.10.1", "@svgr/webpack": "^8.1.0", "@types/react": "^18.3.3", "classnames": "^2.3.2", @@ -645,7 +645,7 @@ }, "platform/cli": { "name": "@ohif/cli", - "version": "3.10.0", + "version": "3.10.1", "bin": { "ohif-cli": "src/index.js", }, @@ -669,7 +669,7 @@ }, "platform/core": { "name": "@ohif/core", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", "dcmjs": "*", @@ -694,16 +694,16 @@ "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.4", "@cornerstonejs/codec-openjph": "^2.4.5", - "@cornerstonejs/core": "^3.10.1", - "@cornerstonejs/dicom-image-loader": "^3.10.1", - "@ohif/ui": "3.10.0", + "@cornerstonejs/core": "^3.11.6", + "@cornerstonejs/dicom-image-loader": "^3.11.6", + "@ohif/ui": "3.10.1", "cornerstone-math": "0.1.9", "dicom-parser": "^1.8.21", }, }, "platform/i18n": { "name": "@ohif/i18n", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@babel/runtime": "^7.20.13", "i18next-locize-backend": "^2.0.0", @@ -728,7 +728,7 @@ }, "platform/ui": { "name": "@ohif/ui", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@testing-library/react": "^13.1.0", "browser-detect": "^0.2.28", @@ -788,7 +788,7 @@ }, "platform/ui-next": { "name": "@ohif/ui-next", - "version": "3.10.0", + "version": "3.10.1", "dependencies": { "@radix-ui/react-accordion": "^1.2.0", "@radix-ui/react-checkbox": "^1.1.1", @@ -1099,9 +1099,9 @@ "@colors/colors": ["@colors/colors@1.5.0", "", {}, "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ=="], - "@cornerstonejs/adapters": ["@cornerstonejs/adapters@3.10.1", "", { "dependencies": { "@babel/runtime-corejs2": "^7.17.8", "buffer": "^6.0.3", "dcmjs": "^0.29.8", "gl-matrix": "^3.4.3", "ndarray": "^1.0.19" }, "peerDependencies": { "@cornerstonejs/core": "^3.10.1", "@cornerstonejs/tools": "^3.10.1" } }, "sha512-uKic+EyF8SguEM9ahZK96r1oWetjO2GCCEM1oO15wl71iHVXFbW8lUYD1uqXtNW4fZet3X9rEke/te1zNVafxA=="], + "@cornerstonejs/adapters": ["@cornerstonejs/adapters@3.11.7", "", { "dependencies": { "@babel/runtime-corejs2": "^7.17.8", "buffer": "^6.0.3", "dcmjs": "^0.29.8", "gl-matrix": "^3.4.3", "ndarray": "^1.0.19" }, "peerDependencies": { "@cornerstonejs/core": "^3.11.7", "@cornerstonejs/tools": "^3.11.7" } }, "sha512-21ewTLHbwHcoALMqXQMuoZTHnAJ4EWuMtLvCHXL43BfVerzDXjLTuPuOeyg2QP4V4krevKH/oyOF04deHWHpsA=="], - "@cornerstonejs/ai": ["@cornerstonejs/ai@3.10.1", "", { "dependencies": { "@babel/runtime-corejs2": "^7.17.8", "buffer": "^6.0.3", "dcmjs": "^0.29.8", "gl-matrix": "^3.4.3", "lodash.clonedeep": "^4.5.0", "ndarray": "^1.0.19", "onnxruntime-common": "1.17.1", "onnxruntime-web": "1.17.1" }, "peerDependencies": { "@cornerstonejs/core": "^3.10.1", "@cornerstonejs/tools": "^3.10.1" } }, "sha512-yEALz91yZCJdrRhk2R5Vn1yFefy07FL9g3ff4BgL19nTnGIu/3yUkVR9PY5js8T6E56GCFWxs9meWdeiCuRAcg=="], + "@cornerstonejs/ai": ["@cornerstonejs/ai@3.11.7", "", { "dependencies": { "@babel/runtime-corejs2": "^7.17.8", "buffer": "^6.0.3", "dcmjs": "^0.29.8", "gl-matrix": "^3.4.3", "lodash.clonedeep": "^4.5.0", "ndarray": "^1.0.19", "onnxruntime-common": "1.17.1", "onnxruntime-web": "1.17.1" }, "peerDependencies": { "@cornerstonejs/core": "^3.11.7", "@cornerstonejs/tools": "^3.11.7" } }, "sha512-oVJzZNwyjh6UTzvJanYIDjXKcxvT4u9cOLuvzt3pBGbdaeq5Xn/MlxMi90EBvLIuUGgxT/u9MDu4xpBJLVJalw=="], "@cornerstonejs/calculate-suv": ["@cornerstonejs/calculate-suv@1.1.0", "", {}, "sha512-Q9XraiDJif9aMFArD2iEuDO/HXbcRVCqB7KfaHgDrdTTjgDFovS91Psbdim7crypRSvE6dh/+HKeFNHdvNkA6w=="], @@ -1113,15 +1113,15 @@ "@cornerstonejs/codec-openjph": ["@cornerstonejs/codec-openjph@2.4.7", "", {}, "sha512-qvP4q4JDib7mi9r7LqKOwqz7YZ8gjtDX4ZCezeYf8+eb7MBXCz5uXAMeVF3yz9Axw4XiIMdB/pqXkm8tqCl13w=="], - "@cornerstonejs/core": ["@cornerstonejs/core@3.10.1", "", { "dependencies": { "@kitware/vtk.js": "32.12.1", "comlink": "^4.4.1", "gl-matrix": "^3.4.3", "loglevel": "^1.9.2" } }, "sha512-DMlE98A5Oa81G9K5J4ZD1917SbJYteh+j4oJTY60KHAI7p0GoGQRV/ZcxaL+FS8mWng/qejVss9w4fLoLJcErg=="], + "@cornerstonejs/core": ["@cornerstonejs/core@3.11.7", "", { "dependencies": { "@kitware/vtk.js": "32.12.1", "comlink": "^4.4.1", "gl-matrix": "^3.4.3", "loglevel": "^1.9.2" } }, "sha512-mjWC603R3hGE8NuYxU89nt3TsRoROci5MC0FIIpLNrdPedizdz8F5PYzUCxdHREIrfy4nDyvPmfK1tdGDqvDtQ=="], - "@cornerstonejs/dicom-image-loader": ["@cornerstonejs/dicom-image-loader@3.10.1", "", { "dependencies": { "@cornerstonejs/codec-charls": "^1.2.3", "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.2", "@cornerstonejs/codec-openjph": "^2.4.5", "comlink": "^4.4.1", "dicom-parser": "^1.8.9", "jpeg-lossless-decoder-js": "^2.1.0", "pako": "^2.0.4", "uuid": "^9.0.0" }, "peerDependencies": { "@cornerstonejs/core": "^3.10.1" } }, "sha512-w/55TI05KV3mP/RtL0ds+jfh19KlBZajJDgXystV489duvqJJUH27C+eZyrGFqbA3a+EDv4GYQa4jw/MDkGGqA=="], + "@cornerstonejs/dicom-image-loader": ["@cornerstonejs/dicom-image-loader@3.11.7", "", { "dependencies": { "@cornerstonejs/codec-charls": "^1.2.3", "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.2", "@cornerstonejs/codec-openjph": "^2.4.5", "comlink": "^4.4.1", "dicom-parser": "^1.8.9", "jpeg-lossless-decoder-js": "^2.1.0", "pako": "^2.0.4", "uuid": "^9.0.0" }, "peerDependencies": { "@cornerstonejs/core": "^3.11.7" } }, "sha512-UzFD/uDnNN3VNuuIq+oWLXRP8Vuxy/n3ZSL4ZxFWuAyQmgM/9CGlJhKmXrmyGXzFnHFnI2hDTuvg54/A2NqMBg=="], - "@cornerstonejs/labelmap-interpolation": ["@cornerstonejs/labelmap-interpolation@3.10.1", "", { "dependencies": { "@itk-wasm/morphological-contour-interpolation": "1.1.0", "itk-wasm": "1.0.0-b.165" }, "peerDependencies": { "@cornerstonejs/core": "^3.10.1", "@cornerstonejs/tools": "^3.10.1", "@kitware/vtk.js": "32.12.1" } }, "sha512-hcAR83rWA6lBYKXgYOWR/3ofhV3mqh4RRLbj8QnS9e//qtmF+UxoZ4I0125ihPkCjFqFOWuYgn42BnRZNhvjxA=="], + "@cornerstonejs/labelmap-interpolation": ["@cornerstonejs/labelmap-interpolation@3.11.7", "", { "dependencies": { "@itk-wasm/morphological-contour-interpolation": "1.1.0", "itk-wasm": "1.0.0-b.165" }, "peerDependencies": { "@cornerstonejs/core": "^3.11.7", "@cornerstonejs/tools": "^3.11.7", "@kitware/vtk.js": "32.12.1" } }, "sha512-y7+E98bLhRzaIN9v7CtUS+Pqf9yJYI4vukz7gd2p2524/5iPvTqz1v3nfV3jUCZHU+FS27zcN0LNtvlbnPfZRw=="], - "@cornerstonejs/polymorphic-segmentation": ["@cornerstonejs/polymorphic-segmentation@3.10.1", "", { "dependencies": { "@icr/polyseg-wasm": "0.4.0" }, "peerDependencies": { "@cornerstonejs/core": "^3.10.1", "@cornerstonejs/tools": "^3.10.1", "@kitware/vtk.js": "32.12.1" } }, "sha512-HErrnX7kDs5CVfcuPW5pyWw3lJovqqqKiIfPJdEmZNEM4CVSv9pNpYIbSX8uv42zWq+biQFkP4TwYw12q/r7Og=="], + "@cornerstonejs/polymorphic-segmentation": ["@cornerstonejs/polymorphic-segmentation@3.11.7", "", { "dependencies": { "@icr/polyseg-wasm": "0.4.0" }, "peerDependencies": { "@cornerstonejs/core": "^3.11.7", "@cornerstonejs/tools": "^3.11.7", "@kitware/vtk.js": "32.12.1" } }, "sha512-ZZysECCUlEp3L33OJZ6ObGq35OyFTa0fo9+D+Tfv32HcRbrfTRTlcrWU7uLGNo3WBolX/zk0pCubRQjT8TbQiQ=="], - "@cornerstonejs/tools": ["@cornerstonejs/tools@3.10.1", "", { "dependencies": { "@types/offscreencanvas": "2019.7.3", "comlink": "^4.4.1", "lodash.get": "^4.4.2" }, "peerDependencies": { "@cornerstonejs/core": "^3.10.1", "@kitware/vtk.js": "32.12.1", "@types/d3-array": "^3.0.4", "@types/d3-interpolate": "^3.0.1", "d3-array": "^3.2.3", "d3-interpolate": "^3.0.1", "gl-matrix": "^3.4.3" } }, "sha512-L1z8JiDwgbSwz040BSV5KBMMEe7IZyS4xYVhbn6cpfzCxSfevp53EkUZMhLl4bFcYyRPgXu5/KJO6f9wGFhEvA=="], + "@cornerstonejs/tools": ["@cornerstonejs/tools@3.11.7", "", { "dependencies": { "@types/offscreencanvas": "2019.7.3", "comlink": "^4.4.1", "lodash.get": "^4.4.2" }, "peerDependencies": { "@cornerstonejs/core": "^3.11.7", "@kitware/vtk.js": "32.12.1", "@types/d3-array": "^3.0.4", "@types/d3-interpolate": "^3.0.1", "d3-array": "^3.2.3", "d3-interpolate": "^3.0.1", "gl-matrix": "^3.4.3" } }, "sha512-Lo2/mp2J/PDqA/xZu/krQGryCXaDuqj77F9w/wWCjme3NOqrZfhiq/FYEPRsze8ejhXo5A9ChgVQcEeqNyhPkQ=="], "@csstools/postcss-cascade-layers": ["@csstools/postcss-cascade-layers@1.1.1", "", { "dependencies": { "@csstools/selector-specificity": "^2.0.2", "postcss-selector-parser": "^6.0.10" }, "peerDependencies": { "postcss": "^8.2" } }, "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA=="], diff --git a/extensions/cornerstone-dicom-pmap/package.json b/extensions/cornerstone-dicom-pmap/package.json index f2743a0e2..e878c01d3 100644 --- a/extensions/cornerstone-dicom-pmap/package.json +++ b/extensions/cornerstone-dicom-pmap/package.json @@ -46,8 +46,8 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^3.10.1", - "@cornerstonejs/core": "^3.10.1", + "@cornerstonejs/adapters": "^3.11.6", + "@cornerstonejs/core": "^3.11.6", "@kitware/vtk.js": "32.12.0", "react-color": "^2.19.3" } diff --git a/extensions/cornerstone-dicom-seg/package.json b/extensions/cornerstone-dicom-seg/package.json index dd295e61c..9e6e22712 100644 --- a/extensions/cornerstone-dicom-seg/package.json +++ b/extensions/cornerstone-dicom-seg/package.json @@ -46,8 +46,8 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^3.10.1", - "@cornerstonejs/core": "^3.10.1", + "@cornerstonejs/adapters": "^3.11.6", + "@cornerstonejs/core": "^3.11.6", "@kitware/vtk.js": "32.12.0", "react-color": "^2.19.3" } diff --git a/extensions/cornerstone-dicom-sr/package.json b/extensions/cornerstone-dicom-sr/package.json index c0921b9d8..e14c57a27 100644 --- a/extensions/cornerstone-dicom-sr/package.json +++ b/extensions/cornerstone-dicom-sr/package.json @@ -46,9 +46,9 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^3.10.1", - "@cornerstonejs/core": "^3.10.1", - "@cornerstonejs/tools": "^3.10.1", + "@cornerstonejs/adapters": "^3.11.6", + "@cornerstonejs/core": "^3.11.6", + "@cornerstonejs/tools": "^3.11.6", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone-dynamic-volume/package.json b/extensions/cornerstone-dynamic-volume/package.json index c1ef9363a..028c00882 100644 --- a/extensions/cornerstone-dynamic-volume/package.json +++ b/extensions/cornerstone-dynamic-volume/package.json @@ -42,8 +42,8 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/core": "^3.10.1", - "@cornerstonejs/tools": "^3.10.1", + "@cornerstonejs/core": "^3.11.6", + "@cornerstonejs/tools": "^3.11.6", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index 255cfc40c..363cbf17f 100644 --- a/extensions/cornerstone/package.json +++ b/extensions/cornerstone/package.json @@ -38,7 +38,7 @@ "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.4", "@cornerstonejs/codec-openjph": "^2.4.5", - "@cornerstonejs/dicom-image-loader": "^3.10.1", + "@cornerstonejs/dicom-image-loader": "^3.11.6", "@ohif/core": "3.10.1", "@ohif/ui": "3.10.1", "dcmjs": "*", @@ -51,12 +51,12 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^3.10.1", - "@cornerstonejs/ai": "^3.10.1", - "@cornerstonejs/core": "^3.10.1", - "@cornerstonejs/labelmap-interpolation": "^3.10.1", - "@cornerstonejs/polymorphic-segmentation": "^3.10.1", - "@cornerstonejs/tools": "^3.10.1", + "@cornerstonejs/adapters": "^3.11.6", + "@cornerstonejs/ai": "^3.11.6", + "@cornerstonejs/core": "^3.11.6", + "@cornerstonejs/labelmap-interpolation": "^3.11.6", + "@cornerstonejs/polymorphic-segmentation": "^3.11.6", + "@cornerstonejs/tools": "^3.11.6", "@itk-wasm/morphological-contour-interpolation": "1.1.0", "@kitware/vtk.js": "32.12.0", "html2canvas": "^1.4.1", diff --git a/extensions/cornerstone/src/hps/fourUp.ts b/extensions/cornerstone/src/hps/fourUp.ts index 9a72b049d..11facdf9a 100644 --- a/extensions/cornerstone/src/hps/fourUp.ts +++ b/extensions/cornerstone/src/hps/fourUp.ts @@ -64,7 +64,7 @@ export const fourUp = { customViewportProps: { hideOverlays: true, }, - syncGroups: [VOI_SYNC_GROUP, HYDRATE_SEG_SYNC_GROUP], + syncGroups: [HYDRATE_SEG_SYNC_GROUP], }, displaySets: [ { diff --git a/extensions/cornerstone/src/hps/mprAnd3DVolumeViewport.ts b/extensions/cornerstone/src/hps/mprAnd3DVolumeViewport.ts index 002600f27..c26a6d5ee 100644 --- a/extensions/cornerstone/src/hps/mprAnd3DVolumeViewport.ts +++ b/extensions/cornerstone/src/hps/mprAnd3DVolumeViewport.ts @@ -71,7 +71,7 @@ export const mprAnd3DVolumeViewport = { customViewportProps: { hideOverlays: true, }, - syncGroups: [VOI_SYNC_GROUP, HYDRATE_SEG_SYNC_GROUP], + syncGroups: [HYDRATE_SEG_SYNC_GROUP], }, displaySets: [ { diff --git a/extensions/cornerstone/src/hps/only3D.ts b/extensions/cornerstone/src/hps/only3D.ts index 6e5782ebe..36f3534ef 100644 --- a/extensions/cornerstone/src/hps/only3D.ts +++ b/extensions/cornerstone/src/hps/only3D.ts @@ -47,7 +47,7 @@ export const only3D = { orientation: 'coronal', customViewportProps: { hideOverlays: true, - syncGroups: [VOI_SYNC_GROUP, HYDRATE_SEG_SYNC_GROUP], + syncGroups: [HYDRATE_SEG_SYNC_GROUP], }, }, displaySets: [ diff --git a/extensions/cornerstone/src/init.tsx b/extensions/cornerstone/src/init.tsx index e116c6134..be882bdc2 100644 --- a/extensions/cornerstone/src/init.tsx +++ b/extensions/cornerstone/src/init.tsx @@ -43,6 +43,7 @@ import { setupSegmentationDataModifiedHandler, setupSegmentationModifiedHandler, } from './utils/segmentationHandlers'; +import { initializeWebWorkerProgressHandler } from './utils/initWebWorkerProgressHandler'; const { registerColormap } = csUtilities.colormap; @@ -289,10 +290,16 @@ export default async function init({ eventTarget.addEventListenerDebounced( EVENTS.ERROR_EVENT, ({ detail }) => { + // Create a stable ID for deduplication based on error type and message + const errorId = `cornerstone-error-${detail.type}-${detail.message.substring(0, 50)}`; + uiNotificationService.show({ title: detail.type, message: detail.message, type: 'error', + id: errorId, + allowDuplicates: false, // Prevent duplicate error notifications + deduplicationInterval: 30000, // 30 seconds deduplication window }); }, 100 @@ -309,40 +316,6 @@ export default async function init({ return { unsubscriptions }; } -function initializeWebWorkerProgressHandler(uiNotificationService) { - const activeToasts = new Map(); - - // eventTarget.addEventListener(EVENTS.WEB_WORKER_PROGRESS, ({ detail }) => { - // const { progress, type, id } = detail; - - // const cacheKey = `${type}-${id}`; - // if (progress === 0 && !activeToasts.has(cacheKey)) { - // const progressPromise = new Promise((resolve, reject) => { - // activeToasts.set(cacheKey, { resolve, reject }); - // }); - - // uiNotificationService.show({ - // id: cacheKey, - // title: `${type}`, - // message: `${type}: ${progress}%`, - // autoClose: false, - // promise: progressPromise, - // promiseMessages: { - // loading: `Computing...`, - // success: `Completed successfully`, - // error: 'Web Worker failed', - // }, - // }); - // } else { - // if (progress === 100) { - // const { resolve } = activeToasts.get(cacheKey); - // resolve({ progress, type }); - // activeToasts.delete(cacheKey); - // } - // } - // }); -} - /** * Creates a wrapped image load strategy with metadata handling * @param strategyFn - The image loading strategy function to wrap diff --git a/extensions/cornerstone/src/initCornerstoneTools.js b/extensions/cornerstone/src/initCornerstoneTools.js index d6627408b..2837496bb 100644 --- a/extensions/cornerstone/src/initCornerstoneTools.js +++ b/extensions/cornerstone/src/initCornerstoneTools.js @@ -48,6 +48,8 @@ import ImageOverlayViewerTool from './tools/ImageOverlayViewerTool'; export default function initCornerstoneTools(configuration = {}) { CrosshairsTool.isAnnotation = false; + LabelmapSlicePropagationTool.isAnnotation = false; + MarkerLabelmapTool.isAnnotation = false; ReferenceLinesTool.isAnnotation = false; AdvancedMagnifyTool.isAnnotation = false; PlanarFreehandContourSegmentationTool.isAnnotation = false; diff --git a/extensions/cornerstone/src/utils/CornerstoneViewportDownloadForm.tsx b/extensions/cornerstone/src/utils/CornerstoneViewportDownloadForm.tsx index 2bbbda1dc..3f32c623b 100644 --- a/extensions/cornerstone/src/utils/CornerstoneViewportDownloadForm.tsx +++ b/extensions/cornerstone/src/utils/CornerstoneViewportDownloadForm.tsx @@ -180,15 +180,14 @@ const CornerstoneViewportDownloadForm = ({ const toolGroup = ToolGroupManager.getToolGroupForViewport(activeViewportId, renderingEngineId); toolGroup.addViewport(downloadViewportId, renderingEngineId); - Object.keys(toolGroup.getToolInstances()).forEach(toolName => { - if (show && toolName !== 'Crosshairs') { - try { - toolGroup.setToolEnabled(toolName); - } catch (error) { - console.debug('Error enabling tool:', error); - } + const toolInstances = toolGroup.getToolInstances(); + const toolInstancesArray = Object.values(toolInstances); + + toolInstancesArray.forEach(toolInstance => { + if (show && toolInstance.constructor.isAnnotation !== false) { + toolGroup.setToolEnabled(toolInstance.toolName); } else { - toolGroup.setToolDisabled(toolName); + toolGroup.setToolDisabled(toolInstance.toolName); } }); }; diff --git a/extensions/cornerstone/src/utils/initWebWorkerProgressHandler.ts b/extensions/cornerstone/src/utils/initWebWorkerProgressHandler.ts new file mode 100644 index 000000000..a57404fef --- /dev/null +++ b/extensions/cornerstone/src/utils/initWebWorkerProgressHandler.ts @@ -0,0 +1,110 @@ +import { eventTarget, EVENTS } from '@cornerstonejs/core'; +import * as cornerstoneTools from '@cornerstonejs/tools'; + +/** + * Initializes a handler for web worker progress events. + * Tracks active worker tasks and shows notifications for their progress. + * + * @param uiNotificationService - The UI notification service for showing progress notifications + */ +export function initializeWebWorkerProgressHandler(uiNotificationService: any) { + // Use a single map to track all active worker tasks + const activeWorkerTasks = new Map(); + + // Create a normalized task key that doesn't include the random ID + // This helps us identify and deduplicate the same type of task + const getNormalizedTaskKey = (type: string) => { + return `worker-task-${type.toLowerCase().replace(/\s+/g, '-')}`; + }; + + eventTarget.addEventListener(EVENTS.WEB_WORKER_PROGRESS, ({ detail }) => { + let normalizedKey: string | undefined; + let shouldCleanup = false; + + try { + const { progress, type, id } = detail; + + // Skip notifications for compute statistics + if (type === cornerstoneTools.Enums.WorkerTypes.COMPUTE_STATISTICS) { + return; + } + + normalizedKey = getNormalizedTaskKey(type); + + if (progress === 0) { + // Check if we're already tracking a task of this type + if (!activeWorkerTasks.has(normalizedKey)) { + const progressPromise = new Promise((resolve, reject) => { + try { + activeWorkerTasks.set(normalizedKey, { + resolve, + reject, + originalId: id, + type, + }); + } catch (error) { + console.error(`Error setting active worker task for type "${type}":`, error); + reject(error); + throw error; // Re-throw to trigger outer catch and cleanup + } + }); + + try { + uiNotificationService.show({ + id: normalizedKey, // Use the normalized key as ID for better deduplication + title: `${type}`, + message: `Computing...`, + autoClose: false, + allowDuplicates: false, + deduplicationInterval: 60000, // 60 seconds - prevent frequent notifications of same type + promise: progressPromise, + promiseMessages: { + loading: `Computing...`, + success: `Completed successfully`, + error: 'Web Worker failed', + }, + }); + } catch (error) { + console.error(`Error showing web worker notification for type "${type}":`, error); + shouldCleanup = true; + throw error; + } + } else { + // Already tracking this type of task, just let it continue + console.debug(`Already tracking a "${type}" task, skipping duplicate notification`); + } + } + // Task completed + else if (progress === 100) { + // Check if we have this task type in our tracking map + const taskData = activeWorkerTasks.get(normalizedKey); + + if (taskData) { + // Resolve the promise to update the notification + const { resolve } = taskData; + resolve({ progress, type }); + + // Mark for cleanup + shouldCleanup = true; + + console.debug(`Worker task "${type}" completed successfully`); + } + } + } catch (error) { + console.error(`Error in web worker progress handler for type "${detail?.type}":`, error); + shouldCleanup = true; + } finally { + // Clean up if needed + if (shouldCleanup && normalizedKey) { + try { + activeWorkerTasks.delete(normalizedKey); + } catch (cleanupError) { + console.error( + `Error cleaning up active worker task for type "${detail?.type}":`, + cleanupError + ); + } + } + } + }); +} diff --git a/extensions/default/src/CustomizableContextMenu/ContextMenuController.tsx b/extensions/default/src/CustomizableContextMenu/ContextMenuController.tsx index 183fd417d..2827790c0 100644 --- a/extensions/default/src/CustomizableContextMenu/ContextMenuController.tsx +++ b/extensions/default/src/CustomizableContextMenu/ContextMenuController.tsx @@ -80,6 +80,7 @@ export default class ContextMenuController { this.services.uiDialogService.hide('context-menu'); this.services.uiDialogService.show({ id: 'context-menu', + showOverlay: false, defaultPosition: ContextMenuController._getDefaultPosition( defaultPointsPosition, event?.detail || event, diff --git a/extensions/default/src/DicomTagBrowser/DicomTagBrowser.tsx b/extensions/default/src/DicomTagBrowser/DicomTagBrowser.tsx index d69fc3a1c..f1ee6a889 100644 --- a/extensions/default/src/DicomTagBrowser/DicomTagBrowser.tsx +++ b/extensions/default/src/DicomTagBrowser/DicomTagBrowser.tsx @@ -128,7 +128,9 @@ const DicomTagBrowser = ({
- Series + + Series +