From aa2b649444eb4fe5422e72ea7830a709c4d24a90 Mon Sep 17 00:00:00 2001 From: Alireza Date: Thu, 7 Nov 2024 00:20:30 -0500 Subject: [PATCH] fix(tmtv): fix toggle one up weird behaviours (#4473) --- .../cornerstone-dicom-pmap/package.json | 4 +-- extensions/cornerstone-dicom-seg/package.json | 4 +-- extensions/cornerstone-dicom-sr/package.json | 6 ++-- .../cornerstone-dynamic-volume/package.json | 4 +-- extensions/cornerstone/package.json | 8 ++--- extensions/cornerstone/src/commandsModule.ts | 2 +- .../ViewportSegmentationMenu.tsx | 10 +++--- .../ViewportSegmentationMenuWrapper.tsx | 26 +++------------ extensions/default/src/commandsModule.ts | 5 +++ extensions/measurement-tracking/package.json | 4 +-- platform/app/package.json | 2 +- platform/core/package.json | 2 +- .../migration-guide/3p8-to-3p9/0-general.md | 6 ++++ .../4-segmentationserice-creation.md | 6 +++- yarn.lock | 32 +++++++++---------- 15 files changed, 58 insertions(+), 63 deletions(-) diff --git a/extensions/cornerstone-dicom-pmap/package.json b/extensions/cornerstone-dicom-pmap/package.json index f9ee7a6c6..1aaa3b143 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": "^2.1.16", - "@cornerstonejs/core": "^2.1.16", + "@cornerstonejs/adapters": "^2.1.17", + "@cornerstonejs/core": "^2.1.17", "@kitware/vtk.js": "32.1.0", "react-color": "^2.19.3" } diff --git a/extensions/cornerstone-dicom-seg/package.json b/extensions/cornerstone-dicom-seg/package.json index 211d558d0..15e9422cb 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": "^2.1.16", - "@cornerstonejs/core": "^2.1.16", + "@cornerstonejs/adapters": "^2.1.17", + "@cornerstonejs/core": "^2.1.17", "@kitware/vtk.js": "32.1.0", "react-color": "^2.19.3" } diff --git a/extensions/cornerstone-dicom-sr/package.json b/extensions/cornerstone-dicom-sr/package.json index 214f2a775..8ccbc5d59 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": "^2.1.16", - "@cornerstonejs/core": "^2.1.16", - "@cornerstonejs/tools": "^2.1.16", + "@cornerstonejs/adapters": "^2.1.17", + "@cornerstonejs/core": "^2.1.17", + "@cornerstonejs/tools": "^2.1.17", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone-dynamic-volume/package.json b/extensions/cornerstone-dynamic-volume/package.json index 79cda42ef..42c3c2608 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": "^2.1.16", - "@cornerstonejs/tools": "^2.1.16", + "@cornerstonejs/core": "^2.1.17", + "@cornerstonejs/tools": "^2.1.17", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index 9db996d53..e0ce52fb5 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": "^2.1.16", + "@cornerstonejs/dicom-image-loader": "^2.1.17", "@icr/polyseg-wasm": "^0.4.0", "@ohif/core": "3.9.0-beta.107", "@ohif/ui": "3.9.0-beta.107", @@ -55,9 +55,9 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^2.1.16", - "@cornerstonejs/core": "^2.1.16", - "@cornerstonejs/tools": "^2.1.16", + "@cornerstonejs/adapters": "^2.1.17", + "@cornerstonejs/core": "^2.1.17", + "@cornerstonejs/tools": "^2.1.17", "@icr/polyseg-wasm": "^0.4.0", "@kitware/vtk.js": "32.1.0", "html2canvas": "^1.4.1", diff --git a/extensions/cornerstone/src/commandsModule.ts b/extensions/cornerstone/src/commandsModule.ts index e4d1c2e67..e8b2d0b04 100644 --- a/extensions/cornerstone/src/commandsModule.ts +++ b/extensions/cornerstone/src/commandsModule.ts @@ -871,7 +871,7 @@ function commandsModule({ } crosshairInstances.forEach(ins => { - ins?.resetCrosshairs(); + ins?.computeToolCenter(); }); }, /** diff --git a/extensions/cornerstone/src/components/ViewportDataOverlaySettingMenu/ViewportSegmentationMenu.tsx b/extensions/cornerstone/src/components/ViewportDataOverlaySettingMenu/ViewportSegmentationMenu.tsx index 93f9c5864..fc031e10a 100644 --- a/extensions/cornerstone/src/components/ViewportDataOverlaySettingMenu/ViewportSegmentationMenu.tsx +++ b/extensions/cornerstone/src/components/ViewportDataOverlaySettingMenu/ViewportSegmentationMenu.tsx @@ -110,22 +110,20 @@ function ViewportSegmentationMenu({ Available diff --git a/extensions/cornerstone/src/components/ViewportDataOverlaySettingMenu/ViewportSegmentationMenuWrapper.tsx b/extensions/cornerstone/src/components/ViewportDataOverlaySettingMenu/ViewportSegmentationMenuWrapper.tsx index 8fcd5cf34..76fb4e35b 100644 --- a/extensions/cornerstone/src/components/ViewportDataOverlaySettingMenu/ViewportSegmentationMenuWrapper.tsx +++ b/extensions/cornerstone/src/components/ViewportDataOverlaySettingMenu/ViewportSegmentationMenuWrapper.tsx @@ -2,6 +2,7 @@ import React, { ReactNode, useEffect, useState } from 'react'; import { Button, Icons, Popover, PopoverContent, PopoverTrigger } from '@ohif/ui-next'; import ViewportSegmentationMenu from './ViewportSegmentationMenu'; import classNames from 'classnames'; +import { useSegmentations } from '../../hooks/useSegmentations'; export function ViewportSegmentationMenuWrapper({ viewportId, @@ -13,35 +14,16 @@ export function ViewportSegmentationMenuWrapper({ viewportId: string; element: HTMLElement; }>): ReactNode { - const { segmentationService, viewportActionCornersService, viewportGridService } = - servicesManager.services; - const [representations, setRepresentations] = useState(null); + const { viewportActionCornersService, viewportGridService } = servicesManager.services; - useEffect(() => { - const representations = segmentationService.getSegmentationRepresentations(viewportId); - setRepresentations(representations); - }, [viewportId, segmentationService]); - - useEffect(() => { - const { unsubscribe } = segmentationService.subscribe( - segmentationService.EVENTS.SEGMENTATION_REPRESENTATION_MODIFIED, - () => { - const representations = segmentationService.getSegmentationRepresentations(viewportId); - setRepresentations(representations); - } - ); - - return () => { - unsubscribe(); - }; - }, [viewportId, segmentationService]); + const segmentations = useSegmentations({ servicesManager }); const activeViewportId = viewportGridService.getActiveViewportId(); const isActiveViewport = viewportId === activeViewportId; const { align, side } = getAlignAndSide(viewportActionCornersService, location); - if (!representations?.length) { + if (!segmentations?.length) { return null; } diff --git a/extensions/default/src/commandsModule.ts b/extensions/default/src/commandsModule.ts index adcc3a86e..6e128e726 100644 --- a/extensions/default/src/commandsModule.ts +++ b/extensions/default/src/commandsModule.ts @@ -371,6 +371,11 @@ const commandsModule = ({ findOrCreateViewport, isHangingProtocolLayout: true, }); + + // Reset crosshairs after restoring the layout + setTimeout(() => { + commandsManager.runCommand('resetCrosshairs'); + }, 0); } else { // We are not in one-up, so toggle to one up. diff --git a/extensions/measurement-tracking/package.json b/extensions/measurement-tracking/package.json index 99a4d22fc..161eb8839 100644 --- a/extensions/measurement-tracking/package.json +++ b/extensions/measurement-tracking/package.json @@ -32,8 +32,8 @@ "start": "yarn run dev" }, "peerDependencies": { - "@cornerstonejs/core": "^2.1.16", - "@cornerstonejs/tools": "^2.1.16", + "@cornerstonejs/core": "^2.1.17", + "@cornerstonejs/tools": "^2.1.17", "@ohif/core": "3.9.0-beta.107", "@ohif/extension-cornerstone-dicom-sr": "3.9.0-beta.107", "@ohif/extension-default": "3.9.0-beta.107", diff --git a/platform/app/package.json b/platform/app/package.json index 489aecd8f..2225d7acd 100644 --- a/platform/app/package.json +++ b/platform/app/package.json @@ -53,7 +53,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": "^2.1.16", + "@cornerstonejs/dicom-image-loader": "^2.1.17", "@emotion/serialize": "^1.1.3", "@ohif/core": "3.9.0-beta.107", "@ohif/extension-cornerstone": "3.9.0-beta.107", diff --git a/platform/core/package.json b/platform/core/package.json index a453dd837..af85482c2 100644 --- a/platform/core/package.json +++ b/platform/core/package.json @@ -37,7 +37,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": "^2.1.16", + "@cornerstonejs/dicom-image-loader": "^2.1.17", "@ohif/ui": "3.9.0-beta.107", "cornerstone-math": "0.1.9", "dicom-parser": "^1.8.21" diff --git a/platform/docs/docs/migration-guide/3p8-to-3p9/0-general.md b/platform/docs/docs/migration-guide/3p8-to-3p9/0-general.md index 117e96ce4..8eda1da14 100644 --- a/platform/docs/docs/migration-guide/3p8-to-3p9/0-general.md +++ b/platform/docs/docs/migration-guide/3p8-to-3p9/0-general.md @@ -6,6 +6,12 @@ title: General import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; +# Not SharedArrayBuffer anymore! + +We have streamlined the process of loading volumes without sacrificing speed by eliminating the need for shared array buffers. This change resolves issues across various frameworks, where previously, specific security headers were required. Now, you can remove any previously set headers, which lowers the barrier for adopting Cornerstone 3D in frameworks that didn't support those headers. Shared array buffers are no longer necessary, and all related headers can be removed. + +You can remove `Cross-Origin-Opener-Policy` and `Cross-Origin-Embedder-Policy` from your custom headers if you don't need them in other +aspects of your app. # React 18 Migration Guide As we upgrade to React 18, we're making some exciting changes to improve performance and developer experience. This guide will help you navigate the key updates and ensure your custom extensions and modes are compatible with the new version. diff --git a/platform/docs/docs/migration-guide/3p8-to-3p9/1-segmentation/4-segmentationserice-creation.md b/platform/docs/docs/migration-guide/3p8-to-3p9/1-segmentation/4-segmentationserice-creation.md index d96f9a014..c70021e33 100644 --- a/platform/docs/docs/migration-guide/3p8-to-3p9/1-segmentation/4-segmentationserice-creation.md +++ b/platform/docs/docs/migration-guide/3p8-to-3p9/1-segmentation/4-segmentationserice-creation.md @@ -1,9 +1,13 @@ --- id: seg-creation -title: SegmentationService Creation +title: Segmentation Creation --- +## createEmptySegmentationForViewport +is now `createLabelmapForViewport` to align with other segmentation creation methods. + +Run it using `commandsManager.runCommand('createLabelmapForViewport', {viewportId})`. ## createSegmentationForDisplaySet diff --git a/yarn.lock b/yarn.lock index 09e244046..4bd8d6e6b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2580,10 +2580,10 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@cornerstonejs/adapters@^2.1.14": - version "2.1.14" - resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-2.1.14.tgz#8306b2b90d0f67eadad12c0edc851bf2b6d472a2" - integrity sha512-Lolq+cuaLXPiopv29J2YdKYyRRNLtRtDwT2Sn6S+Ir585qZt6VaXXGeTNFJzhUa0HkI8MMroM6FcK2R0LgVJ3Q== +"@cornerstonejs/adapters@^2.1.17": + version "2.1.17" + resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-2.1.17.tgz#509e62d500c733ab8babde7a3918548d59d6fa08" + integrity sha512-+eptnnP+C+qKfRh0t0ZoZqQvxtDtwXZzMWk5IzNs/APRPh4XTt/VGh4hWt9UPUwxldG67k/bndjxilQkFUVNkA== dependencies: "@babel/runtime-corejs2" "^7.17.8" buffer "^6.0.3" @@ -2616,19 +2616,19 @@ resolved "https://registry.yarnpkg.com/@cornerstonejs/codec-openjph/-/codec-openjph-2.4.5.tgz#8690b61a86fa53ef38a70eee9d665a79229517c0" integrity sha512-MZCUy8VG0VG5Nl1l58+g+kH3LujAzLYTfJqkwpWI2gjSrGXnP6lgwyy4GmPRZWVoS40/B1LDNALK905cNWm+sg== -"@cornerstonejs/core@^2.1.14": - version "2.1.14" - resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-2.1.14.tgz#f289b902f72f712e860e1f16cae8f3baa488ee88" - integrity sha512-TnmM4maKRWnS9pRz/E6sjETKxupVa/6Jfpi6BXaenTBKk9shx/c9pdKDv94ISKklQFWmlEDC6Ny1YnbxRUaJ7g== +"@cornerstonejs/core@^2.1.17": + version "2.1.17" + resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-2.1.17.tgz#3cf4e7b586fccc0cd430947933f69bb08aaa6839" + integrity sha512-rtjRzRlEWk95Q4xlWkUaLitcX9g6bPsGXLASDm2nds8Dd5aEXCnPyEdBo6ow/rhvanohd7I1eC2fK2Wz7WWbJw== dependencies: "@kitware/vtk.js" "32.1.0" comlink "^4.4.1" gl-matrix "^3.4.3" -"@cornerstonejs/dicom-image-loader@^2.1.14": - version "2.1.14" - resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-2.1.14.tgz#851abcf8cf96813f071457972ff559366350f550" - integrity sha512-HOErmh6BuWnaERSRbnwYQ9llXlr5JS0/hc5OBzCXoDIb+jdCgomtpF0Ad0HoHaLWHbf6G/nzgDNlBV3wbsaUbA== +"@cornerstonejs/dicom-image-loader@^2.1.17": + version "2.1.17" + resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-2.1.17.tgz#5429a10b921ed5586f093f51a363524e45cf6ecb" + integrity sha512-UIH4th4+F+a2s/myACpEmMjkPWFljAFbXeoj2Qo0JpL02FYYYGQuO7Ov+gjK/gv90twAh7q8Qg2+yNbHkC9pzA== dependencies: "@cornerstonejs/codec-charls" "^1.2.3" "@cornerstonejs/codec-libjpeg-turbo-8bit" "^1.2.2" @@ -2638,10 +2638,10 @@ pako "^2.0.4" uuid "^9.0.0" -"@cornerstonejs/tools@^2.1.14": - version "2.1.14" - resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-2.1.14.tgz#373379a93d03211837652a29e37c827dec7aeddf" - integrity sha512-GlonYhtD0ex3JWGEF+ZLeEug53FJ7XZJB8W7qLlb7f8l47bhfTT2sJ9psADOs/BxrsRGjacrcW7majlW4mMFoQ== +"@cornerstonejs/tools@^2.1.17": + version "2.1.17" + resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-2.1.17.tgz#74e7a18845da779f5bc513902de6dbfe1880add0" + integrity sha512-vHdCVKV0kxYgvbS2ff9lDjd6AOKy6hP2Ohp96ac0enbZBNakUwDhqxWp94SezKqK7vn19fxRdSnPRLIchrqvJA== dependencies: "@types/offscreencanvas" "2019.7.3" comlink "^4.4.1"