From f429993c5781ca91d06a998d20e75f3e09d88463 Mon Sep 17 00:00:00 2001 From: Alireza Date: Wed, 20 Nov 2024 15:51:45 -0500 Subject: [PATCH 01/20] DicomJSONDataSource, DicomLocalDataSource, DicomWebDataSource, MetadataProvider: Improve multiframe handling and error checking - Corrected a typo in a comment from "necessarliy" to "necessarily" in `DicomJSONDataSource`. - Enhanced multiframe handling in `DicomLocalDataSource` and `DicomWebDataSource` by creating a separate `imageId` for each frame, ensuring proper metadata mapping for multiframe instances. - Removed usage of `instance.imageId` for multiframe instances to prevent invalid `imageId` assignments. - Added error handling in `MetadataProvider` to throw an error if `imageId` is empty during metadata operations. - Removed unnecessary comments and redundant error checks for empty `imageId` in `MetadataProvider`. --- .../default/src/DicomJSONDataSource/index.js | 2 +- .../default/src/DicomLocalDataSource/index.js | 43 ++++++++++++++----- .../default/src/DicomWebDataSource/index.js | 36 ++++++++++++---- platform/core/src/classes/MetadataProvider.ts | 20 ++++----- 4 files changed, 68 insertions(+), 33 deletions(-) diff --git a/extensions/default/src/DicomJSONDataSource/index.js b/extensions/default/src/DicomJSONDataSource/index.js index bb0a9b43df2..fa4fd60fca6 100644 --- a/extensions/default/src/DicomJSONDataSource/index.js +++ b/extensions/default/src/DicomJSONDataSource/index.js @@ -93,7 +93,7 @@ function createDicomJSONApi(dicomJsonConfig) { const { query } = qs.parseUrl(instance.url); - // Add imageId specific mapping to this data as the URL isn't necessarliy WADO-URI. + // Add imageId specific mapping to this data as the URL isn't necessarily WADO-URI. metadataProvider.addImageIdToUIDs(imageId, { StudyInstanceUID, SeriesInstanceUID, diff --git a/extensions/default/src/DicomLocalDataSource/index.js b/extensions/default/src/DicomLocalDataSource/index.js index 42c1c6033e2..cec15f92db0 100644 --- a/extensions/default/src/DicomLocalDataSource/index.js +++ b/extensions/default/src/DicomLocalDataSource/index.js @@ -153,14 +153,33 @@ function createDicomLocalApi(dicomLocalConfig) { } = instance; instance.imageId = imageId; - - // Add imageId specific mapping to this data as the URL isn't necessarily WADO-URI. - metadataProvider.addImageIdToUIDs(imageId, { - StudyInstanceUID, - SeriesInstanceUID, - SOPInstanceUID, - frameIndex: isMultiframe ? index : 1, - }); + if (isMultiframe) { + // we need to break each frame into a separate instance + // and create a new imageId for each frame + for (let i = 0; i < instance.NumberOfFrames; i++) { + const frameNumber = i + 1; + const frameImageId = implementation.getImageIdsForInstance({ + instance, + frame: frameNumber, + }); + + // Add imageId specific mapping to this data as the URL isn't necessarily WADO-URI. + metadataProvider.addImageIdToUIDs(frameImageId, { + StudyInstanceUID, + SeriesInstanceUID, + SOPInstanceUID, + frameNumber, + }); + } + } else { + // Add imageId specific mapping to this data as the URL isn't necessarily WADO-URI. + metadataProvider.addImageIdToUIDs(imageId, { + StudyInstanceUID, + SeriesInstanceUID, + SOPInstanceUID, + frameIndex: isMultiframe ? index : 1, + }); + } }); DicomMetadataStore._broadcastEvent(EVENTS.INSTANCES_ADDED, { @@ -209,9 +228,11 @@ function createDicomLocalApi(dicomLocalConfig) { return imageIds; }, getImageIdsForInstance({ instance, frame }) { - if (instance.imageId) { - return instance.imageId; - } + // Important: Never use instance.imageId because it might be multiframe, + // which would make it an invalid imageId. + // if (instance.imageId) { + // return instance.imageId; + // } const { StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID } = instance; const storedInstance = DicomMetadataStore.getInstance( diff --git a/extensions/default/src/DicomWebDataSource/index.js b/extensions/default/src/DicomWebDataSource/index.js index 8f5f9ae865d..6ee9cf0a0ea 100644 --- a/extensions/default/src/DicomWebDataSource/index.js +++ b/extensions/default/src/DicomWebDataSource/index.js @@ -438,19 +438,37 @@ function createDicomWebApi(dicomWebConfig, servicesManager) { instance, }); + const isMultiframe = instance.NumberOfFrames > 1; + + if (isMultiframe) { + // we need to break each frame into a separate instance + for (let i = 0; i < instance.NumberOfFrames; i++) { + const imageId = implementation.getImageIdsForInstance({ + instance, + frame: i + 1, + }); + + metadataProvider.addImageIdToUIDs(imageId, { + StudyInstanceUID, + SeriesInstanceUID: instance.SeriesInstanceUID, + SOPInstanceUID: instance.SOPInstanceUID, + frameNumber: i + 1, + }); + } + } else { + // Adding UIDs to metadataProvider + // Note: storing imageURI in metadataProvider since stack viewports + // will use the same imageURI + metadataProvider.addImageIdToUIDs(imageId, { + StudyInstanceUID, + SeriesInstanceUID: instance.SeriesInstanceUID, + SOPInstanceUID: instance.SOPInstanceUID, + }); + } // Adding imageId to each instance // Todo: This is not the best way I can think of to let external // metadata handlers know about the imageId that is stored in the store instance.imageId = imageId; - - // Adding UIDs to metadataProvider - // Note: storing imageURI in metadataProvider since stack viewports - // will use the same imageURI - metadataProvider.addImageIdToUIDs(imageId, { - StudyInstanceUID, - SeriesInstanceUID: instance.SeriesInstanceUID, - SOPInstanceUID: instance.SOPInstanceUID, - }); }); DicomMetadataStore.addInstances(naturalizedInstances, madeInClient); diff --git a/platform/core/src/classes/MetadataProvider.ts b/platform/core/src/classes/MetadataProvider.ts index d9cc2e32369..08c421fefcd 100644 --- a/platform/core/src/classes/MetadataProvider.ts +++ b/platform/core/src/classes/MetadataProvider.ts @@ -8,7 +8,6 @@ import toNumber from '../utils/toNumber'; import combineFrameInstance from '../utils/combineFrameInstance'; class MetadataProvider { - private readonly studies: Map = new Map(); private readonly imageURIToUIDs: Map = new Map(); private readonly imageUIDsByImageId: Map = new Map(); // Can be used to store custom metadata for a specific type. @@ -17,6 +16,10 @@ class MetadataProvider { private readonly customMetadata: Map = new Map(); addImageIdToUIDs(imageId, uids) { + if (!imageId) { + throw new Error('MetadataProvider::Empty imageId'); + } + // This method is a fallback for when you don't have WADO-URI or WADO-RS. // You can add instances fetched by any method by calling addInstance, and hook an imageId to point at it here. // An example would be dicom hosted at some random site. @@ -35,6 +38,10 @@ class MetadataProvider { } _getInstance(imageId) { + if (!imageId) { + throw new Error('MetadataProvider::Empty imageId'); + } + const uids = this.getUIDsFromImageID(imageId); if (!uids) { @@ -455,17 +462,6 @@ class MetadataProvider { } getUIDsFromImageID(imageId) { - if (!imageId) { - throw new Error('MetadataProvider::Empty imageId'); - } - // TODO: adding csiv here is not really correct. Probably need to use - // metadataProvider.addImageIdToUIDs(imageId, { - // StudyInstanceUID, - // SeriesInstanceUID, - // SOPInstanceUID, - // }) - // somewhere else - const cachedUIDs = this.imageUIDsByImageId.get(imageId); if (cachedUIDs) { return cachedUIDs; From 0a5394ea345ca2d738f8731131af2f7189056cc8 Mon Sep 17 00:00:00 2001 From: sedghi Date: Thu, 21 Nov 2024 13:11:29 -0500 Subject: [PATCH 02/20] Core: Enhance frame combination logic in combineFrameInstance.ts - Import `vec3` from 'gl-matrix' for vector operations - Refactor shared and perFrame sequences to improve readability and maintainability - Add support for calculating `ImagePositionPatient` using `ImageOrientationPatient` and `SpacingBetweenSlices` - Ensure accurate frame position calculation for NM multiframe datasets - Safeguard against undefined `ImagePositionPatient` by using calculated or default values --- .../core/src/utils/combineFrameInstance.ts | 73 ++++++++++++++----- 1 file changed, 55 insertions(+), 18 deletions(-) diff --git a/platform/core/src/utils/combineFrameInstance.ts b/platform/core/src/utils/combineFrameInstance.ts index 6385bfbd03d..13c7df77e4a 100644 --- a/platform/core/src/utils/combineFrameInstance.ts +++ b/platform/core/src/utils/combineFrameInstance.ts @@ -1,3 +1,5 @@ +import { vec3 } from 'gl-matrix'; + /** * Combine the Per instance frame data, the shared frame data * and the root data objects. @@ -9,25 +11,28 @@ * single frame data. (eg frame is undefined is the same as frame===1). */ const combineFrameInstance = (frame, instance) => { - const { PerFrameFunctionalGroupsSequence, SharedFunctionalGroupsSequence, NumberOfFrames } = - instance; + const { + PerFrameFunctionalGroupsSequence, + SharedFunctionalGroupsSequence, + NumberOfFrames, + SpacingBetweenSlices, + } = instance; if (PerFrameFunctionalGroupsSequence || NumberOfFrames > 1) { const frameNumber = Number.parseInt(frame || 1); - const shared = ( - SharedFunctionalGroupsSequence ? Object.values(SharedFunctionalGroupsSequence[0]) : [] - ) - .filter(it => !!it) - .map(it => it[0]) - .filter(it => it !== undefined && typeof it === 'object'); - const perFrame = ( - PerFrameFunctionalGroupsSequence - ? Object.values(PerFrameFunctionalGroupsSequence[frameNumber - 1]) - : [] - ) - .filter(it => !!it) - .map(it => it[0]) - .filter(it => it !== undefined && typeof it === 'object'); + const shared = SharedFunctionalGroupsSequence + ? Object.values(SharedFunctionalGroupsSequence[0]) + .filter(Boolean) + .map(it => it[0]) + .filter(it => it !== undefined && typeof it === 'object') + : []; + + const perFrame = PerFrameFunctionalGroupsSequence + ? Object.values(PerFrameFunctionalGroupsSequence[frameNumber - 1]) + .filter(Boolean) + .map(it => it[0]) + .filter(it => it !== undefined && typeof it === 'object') + : []; // this is to fix NM multiframe datasets with position and orientation // information inside DetectorInformationSequence @@ -35,8 +40,39 @@ const combineFrameInstance = (frame, instance) => { instance.ImageOrientationPatient = instance.DetectorInformationSequence[0].ImageOrientationPatient; } + + let ImagePositionPatientToUse = instance.ImagePositionPatient; + if (!instance.ImagePositionPatient && instance.DetectorInformationSequence) { - instance.ImagePositionPatient = instance.DetectorInformationSequence[0].ImagePositionPatient; + const imagePositionPatient = instance.DetectorInformationSequence[0].ImagePositionPatient; + + // Calculate the position for the current frame + if (instance.ImageOrientationPatient && SpacingBetweenSlices) { + const rowOrientation = vec3.fromValues( + instance.ImageOrientationPatient[0], + instance.ImageOrientationPatient[1], + instance.ImageOrientationPatient[2] + ); + + const colOrientation = vec3.fromValues( + instance.ImageOrientationPatient[3], + instance.ImageOrientationPatient[4], + instance.ImageOrientationPatient[5] + ); + + const normalVector = vec3.create(); + vec3.cross(normalVector, rowOrientation, colOrientation); + + const position = vec3.create(); + vec3.scaleAndAdd( + position, + imagePositionPatient, + normalVector, + SpacingBetweenSlices * (frameNumber - 1) + ); + + ImagePositionPatientToUse = [position[0], position[1], position[2]]; + } } const newInstance = Object.assign(instance, { frameNumber: frameNumber }); @@ -52,7 +88,8 @@ const combineFrameInstance = (frame, instance) => { // back to the dicomMetaStore so we don't have to do this again. return { ...newInstance, - ImagePositionPatient: newInstance.ImagePositionPatient ?? [0, 0, frameNumber], + ImagePositionPatient: ImagePositionPatientToUse ?? + newInstance.ImagePositionPatient ?? [0, 0, frameNumber], }; } else { return instance; From df5c781e43259431ea86144a01a664e28341f4fa Mon Sep 17 00:00:00 2001 From: sedghi Date: Thu, 21 Nov 2024 14:29:15 -0500 Subject: [PATCH 03/20] UI-Next: Simplify DataRow text rendering and enhance details section - Removed conditional rendering for text with colons and simplified to always use a single span with font-medium class - Adjusted indentation and alignment of the Number Box for better readability and consistency - Enhanced the Details Section to include both primary and secondary details, if available - Added a muted-foreground style for secondary details to visually distinguish them from primary details --- .../src/components/DataRow/DataRow.tsx | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/platform/ui-next/src/components/DataRow/DataRow.tsx b/platform/ui-next/src/components/DataRow/DataRow.tsx index 781855fb3c1..de584b3986d 100644 --- a/platform/ui-next/src/components/DataRow/DataRow.tsx +++ b/platform/ui-next/src/components/DataRow/DataRow.tsx @@ -139,14 +139,7 @@ const DataRow: React.FC = ({ className="whitespace-pre-wrap" > {indentation} - {cleanText.includes(':') ? ( - <> - {cleanText.split(':')[0]}: - {cleanText.split(':')[1]} - - ) : ( - {cleanText} - )} + {cleanText} ); }; @@ -199,14 +192,14 @@ const DataRow: React.FC = ({ {/* Hover Overlay */}
- {/* Number Box */} -
- {number} -
+ {/* Number Box */} +
+ {number} +
{/* Color Circle (Optional) */} {colorHex && ( @@ -313,10 +306,16 @@ const DataRow: React.FC = ({ - {details && details.primary?.length > 0 && ( + {/* Details Section */} + {details && (details.primary?.length > 0 || details.secondary?.length > 0) && (
-
- {renderDetails(details.primary)} +
+ {details.primary?.length > 0 && renderDetails(details.primary)} + {details.secondary?.length > 0 && ( +
+ {renderDetails(details.secondary)} +
+ )}
)} From 2ce519e54e6bfd1b74cd75b2cf762489677e5827 Mon Sep 17 00:00:00 2001 From: sedghi Date: Thu, 21 Nov 2024 14:58:33 -0500 Subject: [PATCH 04/20] Cornerstone, Preclinical-4D, TMTV: Improve null checks and update unit labels - Refactored the null check in `interleaveTopToBottom.ts` to use optional chaining for cleaner and safer access to `requests[0].imageId` - Updated the label for `meanValue` in `preclinical-4d` mode to include units "(ml)" - Updated the label for `volume` in `tmtv` mode to include units "(ml)" --- extensions/cornerstone/src/utils/interleaveTopToBottom.ts | 2 +- modes/preclinical-4d/src/index.tsx | 2 +- modes/tmtv/src/index.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/cornerstone/src/utils/interleaveTopToBottom.ts b/extensions/cornerstone/src/utils/interleaveTopToBottom.ts index fc5447a423b..9caad908710 100644 --- a/extensions/cornerstone/src/utils/interleaveTopToBottom.ts +++ b/extensions/cornerstone/src/utils/interleaveTopToBottom.ts @@ -108,7 +108,7 @@ export default function interleaveTopToBottom({ volumes.forEach(volume => { const requests = volume.getImageLoadRequests(); - if (!requests.length || !requests[0] || !requests[0].imageId) { + if (!requests?.[0]?.imageId) { return; } diff --git a/modes/preclinical-4d/src/index.tsx b/modes/preclinical-4d/src/index.tsx index 23ac99294cd..21fc1baed80 100644 --- a/modes/preclinical-4d/src/index.tsx +++ b/modes/preclinical-4d/src/index.tsx @@ -84,7 +84,7 @@ function modeFactory({ modeConfiguration }) { lesionStats: 'Lesion Statistics', minValue: 'Minimum Value', maxValue: 'Maximum Value', - meanValue: 'Mean Value', + meanValue: 'Mean Value (ml)', volume: 'Volume', suvPeak: 'SUV Peak', suvMax: 'Maximum SUV', diff --git a/modes/tmtv/src/index.ts b/modes/tmtv/src/index.ts index ef383e65df6..9c1ba17025d 100644 --- a/modes/tmtv/src/index.ts +++ b/modes/tmtv/src/index.ts @@ -120,7 +120,7 @@ function modeFactory({ modeConfiguration }) { minValue: 'Minimum Value', maxValue: 'Maximum Value', meanValue: 'Mean Value', - volume: 'Volume', + volume: 'Volume (ml)', suvPeak: 'SUV Peak', suvMax: 'Maximum SUV', suvMaxIJK: 'SUV Max IJK', From ec68ddf9205c49174f056343527b85c44c2d848b Mon Sep 17 00:00:00 2001 From: sedghi Date: Thu, 21 Nov 2024 15:29:33 -0500 Subject: [PATCH 05/20] Cornerstone: Fix slice index handling during viewport resize - Ensure that the slice index remains unchanged during viewport resize by deleting `sliceIndex` from the presentation view reference. - This change addresses a temporary fix for a larger issue regarding the definition of slice index with slab thickness. - Plan to revisit this area to make the implementation more robust and understandable. - Adjust the `setPresentations` method to accommodate the updated position --- .../ViewportService/CornerstoneViewportService.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts b/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts index 329610148af..d4e39713e9f 100644 --- a/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts +++ b/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts @@ -1043,6 +1043,11 @@ class CornerstoneViewportService extends PubSubService implements IViewportServi // Store the current position presentations for each viewport. viewports.forEach(({ id: viewportId }) => { const presentation = this._getPositionPresentation(viewportId); + + // During a resize, the slice index should remain unchanged. This is a temporary fix for + // a larger issue regarding the definition of slice index with slab thickness. + // We need to revisit this to make it more robust and understandable. + delete presentation.viewReference.sliceIndex; this.beforeResizePositionPresentations.set(viewportId, presentation); }); @@ -1054,7 +1059,9 @@ class CornerstoneViewportService extends PubSubService implements IViewportServi // Reset the camera for viewports that should reset their camera on resize, // which means only those viewports that have a zoom level of 1. this.beforeResizePositionPresentations.forEach((positionPresentation, viewportId) => { - this.setPresentations(viewportId, { positionPresentation }); + this.setPresentations(viewportId, { + positionPresentation, + }); }); // Resize and render the rendering engine again. From db80066d7c6c3c4b2b7f87114360ae1e5da8521e Mon Sep 17 00:00:00 2001 From: sedghi Date: Thu, 21 Nov 2024 16:06:12 -0500 Subject: [PATCH 06/20] upgrade cs3d --- .../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/measurement-tracking/package.json | 4 +-- platform/app/package.json | 2 +- platform/core/package.json | 2 +- yarn.lock | 32 +++++++++---------- 9 files changed, 33 insertions(+), 33 deletions(-) diff --git a/extensions/cornerstone-dicom-pmap/package.json b/extensions/cornerstone-dicom-pmap/package.json index 01dca524393..c224d92fa76 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.2.4", - "@cornerstonejs/core": "^2.2.4", + "@cornerstonejs/adapters": "^2.2.11", + "@cornerstonejs/core": "^2.2.11", "@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 63b90eabc93..e7b039cf4e3 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.2.4", - "@cornerstonejs/core": "^2.2.4", + "@cornerstonejs/adapters": "^2.2.11", + "@cornerstonejs/core": "^2.2.11", "@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 16c243561be..904d65e80f0 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.2.4", - "@cornerstonejs/core": "^2.2.4", - "@cornerstonejs/tools": "^2.2.4", + "@cornerstonejs/adapters": "^2.2.11", + "@cornerstonejs/core": "^2.2.11", + "@cornerstonejs/tools": "^2.2.11", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone-dynamic-volume/package.json b/extensions/cornerstone-dynamic-volume/package.json index bb8b94c6558..134663fcf92 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.2.4", - "@cornerstonejs/tools": "^2.2.4", + "@cornerstonejs/core": "^2.2.11", + "@cornerstonejs/tools": "^2.2.11", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index 6270e722c2e..de032ce7967 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.2.4", + "@cornerstonejs/dicom-image-loader": "^2.2.11", "@icr/polyseg-wasm": "^0.4.0", "@ohif/core": "3.9.1", "@ohif/ui": "3.9.1", @@ -55,9 +55,9 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^2.2.4", - "@cornerstonejs/core": "^2.2.4", - "@cornerstonejs/tools": "^2.2.4", + "@cornerstonejs/adapters": "^2.2.11", + "@cornerstonejs/core": "^2.2.11", + "@cornerstonejs/tools": "^2.2.11", "@icr/polyseg-wasm": "^0.4.0", "@kitware/vtk.js": "32.1.0", "html2canvas": "^1.4.1", diff --git a/extensions/measurement-tracking/package.json b/extensions/measurement-tracking/package.json index db523a2ebb0..22603ad34b3 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.2.4", - "@cornerstonejs/tools": "^2.2.4", + "@cornerstonejs/core": "^2.2.11", + "@cornerstonejs/tools": "^2.2.11", "@ohif/core": "3.9.1", "@ohif/extension-cornerstone-dicom-sr": "3.9.1", "@ohif/extension-default": "3.9.1", diff --git a/platform/app/package.json b/platform/app/package.json index 8e197985a48..fdf7609b080 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.2.4", + "@cornerstonejs/dicom-image-loader": "^2.2.11", "@emotion/serialize": "^1.1.3", "@ohif/core": "3.9.1", "@ohif/extension-cornerstone": "3.9.1", diff --git a/platform/core/package.json b/platform/core/package.json index 687d08065b9..bd46bfdf851 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.2.4", + "@cornerstonejs/dicom-image-loader": "^2.2.11", "@ohif/ui": "3.9.1", "cornerstone-math": "0.1.9", "dicom-parser": "^1.8.21" diff --git a/yarn.lock b/yarn.lock index 2565a506277..0c373d82dfe 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.2.4": - version "2.2.4" - resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-2.2.4.tgz#6f5edf17dc5f76cb6c80d67a4b70c38c1ca05700" - integrity sha512-sWatnhu93NjaT8MsrJIsexpxzFrUmtxrS6lSBca9CWNDMLR1t8boff6fmvGKE8TYbQkPQZrytRJBSw5O6pWdMg== +"@cornerstonejs/adapters@^2.2.11": + version "2.2.11" + resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-2.2.11.tgz#15e4ee2a1e6cffd5fc0d978e1fd12c9b778dc4ed" + integrity sha512-IolhU1hOIiFOJd3/bzL+oFQR2D5HNUZ1G+gDQm/dKPAkTdBuGqQVyCu8nsWqS9Tb+zFdeZwN5KiId3leoVntYQ== 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.2.4": - version "2.2.4" - resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-2.2.4.tgz#eeb4e383a332e43186299cb19ddd46dad1013437" - integrity sha512-nw14sTuz02o2W8a0WT0dH4J1B7iZ4KZU5r0KDnYkpDHjL1Y30lmSt098Pxb4Z9Xj+GJYunlWv962RtVhnWbSZA== +"@cornerstonejs/core@^2.2.11": + version "2.2.11" + resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-2.2.11.tgz#8b39963a22d43be478948b56f18febee96eda9d8" + integrity sha512-0C0o6EZ6S4kyNYpChD6iIzPuRQzT5Rx+MO4gZn9auqTQgTUjc5GUWuQ0xTwZdcK6ABkfnNWiTGZuLViTd7ezKw== dependencies: "@kitware/vtk.js" "32.1.0" comlink "^4.4.1" gl-matrix "^3.4.3" -"@cornerstonejs/dicom-image-loader@^2.2.4": - version "2.2.4" - resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-2.2.4.tgz#117635b11a0230381fe31a5119271b472f7048d5" - integrity sha512-DwRZrTaVrrH7aGqFibcL+Ijnygtd3sxovxREzHWqGrmmxpwsm+aA9Z5nXeg58hk5Kvd0Zt8iwlrtcnTeD2DPiw== +"@cornerstonejs/dicom-image-loader@^2.2.11": + version "2.2.11" + resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-2.2.11.tgz#d8f7d950a599ddf2cf89d6d51436be4f87d805e6" + integrity sha512-BIGeYtQiigJVm/W0WvukWMAY04XSlEDt+aDBsZ0JiHzA9QFDrPJZwXfaOD0wUCZvOn+eUxwqMwSY2xyHTrr0WQ== dependencies: "@cornerstonejs/codec-charls" "^1.2.3" "@cornerstonejs/codec-libjpeg-turbo-8bit" "^1.2.2" @@ -2639,10 +2639,10 @@ pako "^2.0.4" uuid "^9.0.0" -"@cornerstonejs/tools@^2.2.4": - version "2.2.4" - resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-2.2.4.tgz#3fa5e99daffc73434d7385885dda09e17820756c" - integrity sha512-pEqJzAp4/ZtVmWqPG7C/hH/09dt6OBoRq5fiEJE/mxJXbe77FeDq5zQy8Irv7IkDpXpnc8kL+6L9Zb5awc3uRA== +"@cornerstonejs/tools@^2.2.11": + version "2.2.11" + resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-2.2.11.tgz#60d1b578be1a9c28c7ee16b700dd58d37c538803" + integrity sha512-fCQRdPVU3/4GZPyYDWJ5iVAkXb6E411p8Ga6d6Dun8J2y53Rrv1x+RiumCvWCRqFHAcTr3B1f+YkL4TlRSJD7g== dependencies: "@types/offscreencanvas" "2019.7.3" comlink "^4.4.1" From 7bbfedf90bf15a48822f1b8805860a9f7c32e7f1 Mon Sep 17 00:00:00 2001 From: sedghi Date: Thu, 21 Nov 2024 16:08:18 -0500 Subject: [PATCH 07/20] remove volume interleave progressive for now --- extensions/cornerstone/src/index.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/extensions/cornerstone/src/index.tsx b/extensions/cornerstone/src/index.tsx index 47d630c1026..b4ea47cdedc 100644 --- a/extensions/cornerstone/src/index.tsx +++ b/extensions/cornerstone/src/index.tsx @@ -108,10 +108,10 @@ const cornerstoneExtension: Types.Extensions.Extension = { // image retrieve, but don't perform progressive loading per image // This interleaves images and replicates them for low-resolution depth volume // reconstruction, which progressively improves - imageRetrieveMetadataProvider.add( - 'volume', - cornerstone.ProgressiveRetrieveImages.interleavedRetrieveStages - ); + // imageRetrieveMetadataProvider.add( + // 'volume', + // cornerstone.ProgressiveRetrieveImages.interleavedRetrieveStages + // ); // The default stack loading option is to progressive load HTJ2K images // There are other possible options, but these need more thought about // how to define them. From f310ef392186864890c48f68c816d1904ccc3d49 Mon Sep 17 00:00:00 2001 From: sedghi Date: Thu, 21 Nov 2024 16:14:06 -0500 Subject: [PATCH 08/20] fix --- .../services/StudyPrefetcherService/StudyPrefetcherService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/core/src/services/StudyPrefetcherService/StudyPrefetcherService.ts b/platform/core/src/services/StudyPrefetcherService/StudyPrefetcherService.ts index 5b5853d6530..398974eb333 100644 --- a/platform/core/src/services/StudyPrefetcherService/StudyPrefetcherService.ts +++ b/platform/core/src/services/StudyPrefetcherService/StudyPrefetcherService.ts @@ -679,7 +679,7 @@ class StudyPrefetcherService extends PubSubService { this._displaySetLoadingStates.clear(); this._imageIdsToDisplaySetsMap.clear(); this._inflightRequests.clear(); - this.imageLoadPoolManager.clearRequestStack(IMAGE_REQUEST_TYPE); + this.imageLoadPoolManager.clearRequestStack(this.requestType); this._broadcastEvent(this.EVENTS.SERVICE_STOPPED, {}); } From 8358e88dc450f3d6e7a6bafcf64443c44cded684 Mon Sep 17 00:00:00 2001 From: sedghi Date: Fri, 22 Nov 2024 15:45:34 -0500 Subject: [PATCH 09/20] update --- .../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/measurement-tracking/package.json | 4 +- platform/app/.webpack/webpack.pwa.js | 4 -- platform/app/package.json | 2 +- platform/core/package.json | 2 +- .../CustomizationService.ts | 2 +- .../migration-guide/3p8-to-3p9/0-general.md | 41 ++++++++++++++++++- .../docs/migration-guide/3p8-to-3p9/7-UI.md | 8 ++-- 12 files changed, 63 insertions(+), 26 deletions(-) diff --git a/extensions/cornerstone-dicom-pmap/package.json b/extensions/cornerstone-dicom-pmap/package.json index c224d92fa76..6b9d2ba6cc3 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.2.11", - "@cornerstonejs/core": "^2.2.11", + "@cornerstonejs/adapters": "^2.2.14", + "@cornerstonejs/core": "^2.2.14", "@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 e7b039cf4e3..afc1c8a061b 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.2.11", - "@cornerstonejs/core": "^2.2.11", + "@cornerstonejs/adapters": "^2.2.14", + "@cornerstonejs/core": "^2.2.14", "@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 904d65e80f0..8df3eaa8d8c 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.2.11", - "@cornerstonejs/core": "^2.2.11", - "@cornerstonejs/tools": "^2.2.11", + "@cornerstonejs/adapters": "^2.2.14", + "@cornerstonejs/core": "^2.2.14", + "@cornerstonejs/tools": "^2.2.14", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone-dynamic-volume/package.json b/extensions/cornerstone-dynamic-volume/package.json index 134663fcf92..a85e4d9daab 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.2.11", - "@cornerstonejs/tools": "^2.2.11", + "@cornerstonejs/core": "^2.2.14", + "@cornerstonejs/tools": "^2.2.14", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index de032ce7967..37e8a560d3c 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.2.11", + "@cornerstonejs/dicom-image-loader": "^2.2.14", "@icr/polyseg-wasm": "^0.4.0", "@ohif/core": "3.9.1", "@ohif/ui": "3.9.1", @@ -55,9 +55,9 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^2.2.11", - "@cornerstonejs/core": "^2.2.11", - "@cornerstonejs/tools": "^2.2.11", + "@cornerstonejs/adapters": "^2.2.14", + "@cornerstonejs/core": "^2.2.14", + "@cornerstonejs/tools": "^2.2.14", "@icr/polyseg-wasm": "^0.4.0", "@kitware/vtk.js": "32.1.0", "html2canvas": "^1.4.1", diff --git a/extensions/measurement-tracking/package.json b/extensions/measurement-tracking/package.json index 22603ad34b3..b4d5cc69f33 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.2.11", - "@cornerstonejs/tools": "^2.2.11", + "@cornerstonejs/core": "^2.2.14", + "@cornerstonejs/tools": "^2.2.14", "@ohif/core": "3.9.1", "@ohif/extension-cornerstone-dicom-sr": "3.9.1", "@ohif/extension-default": "3.9.1", diff --git a/platform/app/.webpack/webpack.pwa.js b/platform/app/.webpack/webpack.pwa.js index cd648758907..ea6d8936dd1 100644 --- a/platform/app/.webpack/webpack.pwa.js +++ b/platform/app/.webpack/webpack.pwa.js @@ -174,10 +174,6 @@ module.exports = (env, argv) => { disableDotRule: true, index: PUBLIC_URL + 'index.html', }, - headers: { - 'Cross-Origin-Embedder-Policy': 'require-corp', - 'Cross-Origin-Opener-Policy': 'same-origin', - }, devMiddleware: { writeToDisk: true, }, diff --git a/platform/app/package.json b/platform/app/package.json index fdf7609b080..c4c2cd25e78 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.2.11", + "@cornerstonejs/dicom-image-loader": "^2.2.14", "@emotion/serialize": "^1.1.3", "@ohif/core": "3.9.1", "@ohif/extension-cornerstone": "3.9.1", diff --git a/platform/core/package.json b/platform/core/package.json index bd46bfdf851..763d898d550 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.2.11", + "@cornerstonejs/dicom-image-loader": "^2.2.14", "@ohif/ui": "3.9.1", "cornerstone-math": "0.1.9", "dicom-parser": "^1.8.21" diff --git a/platform/core/src/services/CustomizationService/CustomizationService.ts b/platform/core/src/services/CustomizationService/CustomizationService.ts index a36104d50f7..4830dfe595a 100644 --- a/platform/core/src/services/CustomizationService/CustomizationService.ts +++ b/platform/core/src/services/CustomizationService/CustomizationService.ts @@ -280,7 +280,7 @@ export default class CustomizationService extends PubSubService { return customization; } const parent = this.getCustomization(customizationType); - const result = parent ? Object.assign(Object.create(parent), customization) : customization; + const result = parent ? Object.assign({}, parent, customization) : customization; // Execute an nested type information return result.transform?.(this) || result; } 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 8a96e70e272..098196e6700 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 @@ -97,6 +97,35 @@ import { ReactComponent as arrowDown } from './../../assets/icons/arrow-down.svg We have removed the Polyfill.io script from the Viewer. If you require polyfills, you can add them to your project manually. This change primarily affects Internet Explorer, which Microsoft has already [ended support for](https://learn.microsoft.com/en-us/lifecycle/faq/internet-explorer-microsoft-edge#is-internet-explorer-11-the-last-version-of-internet-explorer-). +--- + +## Webpack changes + +We previously were copying dicom-image-loader wasm files to the public folder via + +```js +// platform/app/.webpack/webpack.pwa.js +{ + from: '../../../node_modules/@cornerstonejs/dicom-image-loader/dist/dynamic-import', + to: DIST_DIR, +}, +``` + +but now after our upgrade to Cornerstone 3D 2.0, we don't need to do this anymore. + + +--- +## Scroll utility + + +The `jumpToSlice` utility has been relocated from `@cornerstonejs/tools` utilities to `@cornerstonejs/core/utilities`. + +migration + +```js +import { jumpToSlice } from '@cornerstonejs/core/utilities'; +``` + --- @@ -178,9 +207,19 @@ Now: --- +## CustomizationService + +The `CustomizationService` uses `contentF` instead of `content`. + +So make sure your customizations are updated accordingly. + +--- + ## SidePanel auto switch if open -In `basic viewer` mode, if the side panel is open and the segmentation panel is active, adding a measurement will automatically switch to the measurement panel. This switch won't occur if the side panel is closed. To enable or disable this feature, adjust your mode configuration accordingly. +In `basic viewer` mode, when the side panel is open and the segmentation panel is active, adding a measurement will automatically switch to the measurement panel. This switch won't happen if the side panel is closed. To enable or disable this feature, adjust your mode configuration accordingly. + +To prevent this behavior, remove the following code from your mode: ```js panelService.addActivatePanelTriggers('your.panel.id', [ diff --git a/platform/docs/docs/migration-guide/3p8-to-3p9/7-UI.md b/platform/docs/docs/migration-guide/3p8-to-3p9/7-UI.md index 71e625d93b5..ad4686516c0 100644 --- a/platform/docs/docs/migration-guide/3p8-to-3p9/7-UI.md +++ b/platform/docs/docs/migration-guide/3p8-to-3p9/7-UI.md @@ -2,9 +2,6 @@ title: UI --- - - - ## New Components You can explore our new playground at `docs.ohif.org/ui` to see the latest components and their properties. We haven't provided a migration guide yet because the old components are still available. Feel free to update your codebase, including custom extensions and UI, to use the new Button, Dropdown, Icons, and other new components from `@ohif/ui-next`. The old methods (importing from `@ohif/ui`) will continue to work for now. However, the new components have a slightly different API, and we plan to deprecate the old components in a future release, as we see the new ones as the future of OHIF. @@ -147,3 +144,8 @@ All the DropDown and Icons are now in the @ohif/ui-next package. --- + + +## ui, ui-next configs + +We currently have two component libraries that we plan to merge in the future, so we need to maintain both configurations. If your styles aren't applying correctly, ensure you update both `platform/ui-next/tailwind.config.js` and `platform/ui/tailwind.config.js`. From 927111562709aa95c9b2d93041dc8d795cf6d289 Mon Sep 17 00:00:00 2001 From: sedghi Date: Fri, 22 Nov 2024 16:44:33 -0500 Subject: [PATCH 10/20] update --- .../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 +-- .../cornerstone/src/initMeasurementService.ts | 4 +- extensions/measurement-tracking/package.json | 4 +- platform/app/package.json | 2 +- platform/core/package.json | 2 +- .../src/components/SidePanel/SidePanel.tsx | 11 ---- .../ui/src/components/SidePanel/SidePanel.tsx | 8 +-- yarn.lock | 56 +++++++++++++------ 12 files changed, 62 insertions(+), 51 deletions(-) diff --git a/extensions/cornerstone-dicom-pmap/package.json b/extensions/cornerstone-dicom-pmap/package.json index 6b9d2ba6cc3..ad6efcdce45 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.2.14", - "@cornerstonejs/core": "^2.2.14", + "@cornerstonejs/adapters": "^2.2.15", + "@cornerstonejs/core": "^2.2.15", "@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 afc1c8a061b..c8a2484af73 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.2.14", - "@cornerstonejs/core": "^2.2.14", + "@cornerstonejs/adapters": "^2.2.15", + "@cornerstonejs/core": "^2.2.15", "@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 8df3eaa8d8c..ad6665fa3f5 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.2.14", - "@cornerstonejs/core": "^2.2.14", - "@cornerstonejs/tools": "^2.2.14", + "@cornerstonejs/adapters": "^2.2.15", + "@cornerstonejs/core": "^2.2.15", + "@cornerstonejs/tools": "^2.2.15", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone-dynamic-volume/package.json b/extensions/cornerstone-dynamic-volume/package.json index a85e4d9daab..1bcc213683e 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.2.14", - "@cornerstonejs/tools": "^2.2.14", + "@cornerstonejs/core": "^2.2.15", + "@cornerstonejs/tools": "^2.2.15", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index 37e8a560d3c..1afc762f85f 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.2.14", + "@cornerstonejs/dicom-image-loader": "^2.2.15", "@icr/polyseg-wasm": "^0.4.0", "@ohif/core": "3.9.1", "@ohif/ui": "3.9.1", @@ -55,9 +55,9 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^2.2.14", - "@cornerstonejs/core": "^2.2.14", - "@cornerstonejs/tools": "^2.2.14", + "@cornerstonejs/adapters": "^2.2.15", + "@cornerstonejs/core": "^2.2.15", + "@cornerstonejs/tools": "^2.2.15", "@icr/polyseg-wasm": "^0.4.0", "@kitware/vtk.js": "32.1.0", "html2canvas": "^1.4.1", diff --git a/extensions/cornerstone/src/initMeasurementService.ts b/extensions/cornerstone/src/initMeasurementService.ts index 9433bb5ef2f..f0d863363fe 100644 --- a/extensions/cornerstone/src/initMeasurementService.ts +++ b/extensions/cornerstone/src/initMeasurementService.ts @@ -59,10 +59,10 @@ const initMeasurementService = ( 'Crosshairs', Length.matchingCriteria, () => { - console.warn('Crosshairs mapping not implemented.'); + return null; }, () => { - console.warn('Crosshairs mapping not implemented.'); + return null; } ); diff --git a/extensions/measurement-tracking/package.json b/extensions/measurement-tracking/package.json index b4d5cc69f33..bbd40dcfc56 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.2.14", - "@cornerstonejs/tools": "^2.2.14", + "@cornerstonejs/core": "^2.2.15", + "@cornerstonejs/tools": "^2.2.15", "@ohif/core": "3.9.1", "@ohif/extension-cornerstone-dicom-sr": "3.9.1", "@ohif/extension-default": "3.9.1", diff --git a/platform/app/package.json b/platform/app/package.json index c4c2cd25e78..debb88f5730 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.2.14", + "@cornerstonejs/dicom-image-loader": "^2.2.15", "@emotion/serialize": "^1.1.3", "@ohif/core": "3.9.1", "@ohif/extension-cornerstone": "3.9.1", diff --git a/platform/core/package.json b/platform/core/package.json index 763d898d550..367d1da5399 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.2.14", + "@cornerstonejs/dicom-image-loader": "^2.2.15", "@ohif/ui": "3.9.1", "cornerstone-math": "0.1.9", "dicom-parser": "^1.8.21" diff --git a/platform/ui-next/src/components/SidePanel/SidePanel.tsx b/platform/ui-next/src/components/SidePanel/SidePanel.tsx index feee0077949..f331edb6a5d 100644 --- a/platform/ui-next/src/components/SidePanel/SidePanel.tsx +++ b/platform/ui-next/src/components/SidePanel/SidePanel.tsx @@ -398,17 +398,6 @@ SidePanel.propTypes = { side: PropTypes.oneOf(['left', 'right']).isRequired, className: PropTypes.string, activeTabIndex: PropTypes.number, - tabs: PropTypes.oneOfType([ - PropTypes.arrayOf( - PropTypes.shape({ - iconName: PropTypes.string.isRequired, - iconLabel: PropTypes.string.isRequired, - name: PropTypes.string.isRequired, - label: PropTypes.string.isRequired, - content: PropTypes.func, // TODO: Should be node, but it keeps complaining? - }) - ), - ]), onOpen: PropTypes.func, onClose: PropTypes.func, onActiveTabIndexChange: PropTypes.func, diff --git a/platform/ui/src/components/SidePanel/SidePanel.tsx b/platform/ui/src/components/SidePanel/SidePanel.tsx index c606cfdd1aa..a44aeba14e4 100644 --- a/platform/ui/src/components/SidePanel/SidePanel.tsx +++ b/platform/ui/src/components/SidePanel/SidePanel.tsx @@ -237,7 +237,7 @@ const SidePanel = ({ content={getToolTipContent(childComponent.label, childComponent.disabled)} className={classnames( 'flex items-center', - side === 'left' ? 'justify-end ' : 'justify-start ' + side === 'left' ? 'justify-end' : 'justify-start' )} >
+
{ return ( -
+
{getCloseIcon()} {tabs.length === 1 ? getOneTabComponent() : getTabGridComponent()}
diff --git a/yarn.lock b/yarn.lock index 0c373d82dfe..1746f545226 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.2.11": - version "2.2.11" - resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-2.2.11.tgz#15e4ee2a1e6cffd5fc0d978e1fd12c9b778dc4ed" - integrity sha512-IolhU1hOIiFOJd3/bzL+oFQR2D5HNUZ1G+gDQm/dKPAkTdBuGqQVyCu8nsWqS9Tb+zFdeZwN5KiId3leoVntYQ== +"@cornerstonejs/adapters@^2.2.15": + version "2.2.15" + resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-2.2.15.tgz#98e139a1c5fb30a0b9bd2e573b50cbbe89c2090a" + integrity sha512-7K9FSLQ3F9WWKEO79c/D/U7Qdqor9gHlPnhlp4ymHyr415r4lEL4gnuimEhybNgBb3r9VSzPmmzewL2e0CjvDg== 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.2.11": - version "2.2.11" - resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-2.2.11.tgz#8b39963a22d43be478948b56f18febee96eda9d8" - integrity sha512-0C0o6EZ6S4kyNYpChD6iIzPuRQzT5Rx+MO4gZn9auqTQgTUjc5GUWuQ0xTwZdcK6ABkfnNWiTGZuLViTd7ezKw== +"@cornerstonejs/core@^2.2.15": + version "2.2.15" + resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-2.2.15.tgz#82ea75e6f69873908ccd447ce0bce43e6a06e777" + integrity sha512-j1faFkG5UcYRaFataujfBq9KNmFEC3khGzQTb9kRGflw4r49D5S7y6ad2/ymR66hE44TDqw8U4V2oDX1aMt2lQ== dependencies: - "@kitware/vtk.js" "32.1.0" + "@kitware/vtk.js" "32.1.1" comlink "^4.4.1" gl-matrix "^3.4.3" -"@cornerstonejs/dicom-image-loader@^2.2.11": - version "2.2.11" - resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-2.2.11.tgz#d8f7d950a599ddf2cf89d6d51436be4f87d805e6" - integrity sha512-BIGeYtQiigJVm/W0WvukWMAY04XSlEDt+aDBsZ0JiHzA9QFDrPJZwXfaOD0wUCZvOn+eUxwqMwSY2xyHTrr0WQ== +"@cornerstonejs/dicom-image-loader@^2.2.15": + version "2.2.15" + resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-2.2.15.tgz#fa1a107d4a684bce55f0813d0c258d5f15504045" + integrity sha512-iHYGk+Oxt2Y0W4UpywdmHRYOtIqrGLcWrxLyw+1gOvYe3e+nfqts/H7I8Qb60srT12phggWZR/JvxLtAjFNPsw== dependencies: "@cornerstonejs/codec-charls" "^1.2.3" "@cornerstonejs/codec-libjpeg-turbo-8bit" "^1.2.2" @@ -2639,10 +2639,10 @@ pako "^2.0.4" uuid "^9.0.0" -"@cornerstonejs/tools@^2.2.11": - version "2.2.11" - resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-2.2.11.tgz#60d1b578be1a9c28c7ee16b700dd58d37c538803" - integrity sha512-fCQRdPVU3/4GZPyYDWJ5iVAkXb6E411p8Ga6d6Dun8J2y53Rrv1x+RiumCvWCRqFHAcTr3B1f+YkL4TlRSJD7g== +"@cornerstonejs/tools@^2.2.15": + version "2.2.15" + resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-2.2.15.tgz#a5ad99d2e20aa69c03a04c6fcf18bdddbbb71658" + integrity sha512-jUKwUHmgEiCNG2eqLp5+PaplLxH9AoN3TVlwgHwsJ5bHxasCJkn5iUa6KEpZZWWJlObQs/hlrZIyI8ajzQ7dOQ== dependencies: "@types/offscreencanvas" "2019.7.3" comlink "^4.4.1" @@ -4025,6 +4025,28 @@ worker-loader "3.0.8" xmlbuilder2 "3.0.2" +"@kitware/vtk.js@32.1.1": + version "32.1.1" + resolved "https://registry.yarnpkg.com/@kitware/vtk.js/-/vtk.js-32.1.1.tgz#20179cb5f65f33dea4626a948afe24eb16364f8a" + integrity sha512-rrh+PvmjpMDCOsgr7B8ZVxnF75TXjUJOVleMO5QJFh7DP+31927l9DJA4WRiJU7mbpYuZGt8/vAojO5fCizUkA== + dependencies: + "@babel/runtime" "7.22.11" + "@types/webxr" "^0.5.5" + commander "9.2.0" + d3-scale "4.0.2" + fast-deep-equal "^3.1.3" + fflate "0.7.3" + gl-matrix "3.4.3" + globalthis "1.0.3" + seedrandom "3.0.5" + shader-loader "1.3.1" + shelljs "0.8.5" + spark-md5 "3.0.2" + stream-browserify "3.0.0" + webworker-promise "0.5.0" + worker-loader "3.0.8" + xmlbuilder2 "3.0.2" + "@leichtgewicht/ip-codec@^2.0.1": version "2.0.5" resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" From 7b55a95f99e29851c920f40fd902249abeca9494 Mon Sep 17 00:00:00 2001 From: sedghi Date: Mon, 25 Nov 2024 12:07:56 -0500 Subject: [PATCH 11/20] Cornerstone: Improve image loading and configuration options - Updated import path for `useToggleOneUpViewportGridStore` to use `@ohif/extension-default` - Enabled interleaved image retrieval stages for volume in `index.tsx` - Registered image load strategies with metadata handling in `init.tsx` - Introduced `createMetadataWrappedStrategy` for safe metadata configuration - Added `useAppConfig` in `PanelStudyBrowserTracking` to use `studyBrowserMode` from app configuration - Updated webpack configuration to ignore certain node_modules during watch - Removed `maximumFileSizeToCacheInBytes` from PWA webpack configuration - Added `studyBrowserMode` to app configuration and documentation to set initial study browser tab --- extensions/cornerstone/src/index.tsx | 10 ++--- extensions/cornerstone/src/init.tsx | 41 +++++++++++++++++-- .../PanelStudyBrowserTracking.tsx | 9 ++-- platform/app/.webpack/webpack.pwa.js | 6 ++- platform/app/public/config/default.js | 1 + platform/core/src/types/AppTypes.ts | 1 + .../docs/configuration/configurationFiles.md | 1 + 7 files changed, 55 insertions(+), 14 deletions(-) diff --git a/extensions/cornerstone/src/index.tsx b/extensions/cornerstone/src/index.tsx index b4ea47cdedc..41f4c33ff0d 100644 --- a/extensions/cornerstone/src/index.tsx +++ b/extensions/cornerstone/src/index.tsx @@ -45,7 +45,7 @@ import { useSegmentationPresentationStore, useSynchronizersStore, } from './stores'; -import { useToggleOneUpViewportGridStore } from '../../default/src/stores/useToggleOneUpViewportGridStore'; +import { useToggleOneUpViewportGridStore } from '@ohif/extension-default'; import { useActiveViewportSegmentationRepresentations } from './hooks/useActiveViewportSegmentationRepresentations'; import { useMeasurements } from './hooks/useMeasurements'; import getPanelModule from './getPanelModule'; @@ -108,10 +108,10 @@ const cornerstoneExtension: Types.Extensions.Extension = { // image retrieve, but don't perform progressive loading per image // This interleaves images and replicates them for low-resolution depth volume // reconstruction, which progressively improves - // imageRetrieveMetadataProvider.add( - // 'volume', - // cornerstone.ProgressiveRetrieveImages.interleavedRetrieveStages - // ); + imageRetrieveMetadataProvider.add( + 'volume', + cornerstone.ProgressiveRetrieveImages.interleavedRetrieveStages + ); // The default stack loading option is to progressive load HTJ2K images // There are other possible options, but these need more thought about // how to define them. diff --git a/extensions/cornerstone/src/init.tsx b/extensions/cornerstone/src/init.tsx index 4b9c13d5483..5658441696f 100644 --- a/extensions/cornerstone/src/init.tsx +++ b/extensions/cornerstone/src/init.tsx @@ -38,6 +38,7 @@ import { SegmentationRepresentations } from '@cornerstonejs/tools/enums'; import { useLutPresentationStore } from './stores/useLutPresentationStore'; import { usePositionPresentationStore } from './stores/usePositionPresentationStore'; import { useSegmentationPresentationStore } from './stores/useSegmentationPresentationStore'; +import { imageRetrieveMetadataProvider } from '@cornerstonejs/core/utilities'; const { registerColormap } = csUtilities.colormap; @@ -135,9 +136,21 @@ export default async function init({ cornerstoneStreamingDynamicImageVolumeLoader ); - hangingProtocolService.registerImageLoadStrategy('interleaveCenter', interleaveCenterLoader); - hangingProtocolService.registerImageLoadStrategy('interleaveTopToBottom', interleaveTopToBottom); - hangingProtocolService.registerImageLoadStrategy('nth', nthLoader); + // Register strategies using the wrapper + const imageLoadStrategies = { + interleaveCenter: interleaveCenterLoader, + interleaveTopToBottom: interleaveTopToBottom, + nth: nthLoader, + }; + + Object.entries(imageLoadStrategies).forEach(([name, strategyFn]) => { + hangingProtocolService.registerImageLoadStrategy( + name, + createMetadataWrappedStrategy(strategyFn) + ); + }); + + // ... existing code ... // add metadata providers metaData.addProvider( @@ -296,6 +309,28 @@ function initializeWebWorkerProgressHandler(uiNotificationService) { }); } +/** + * Creates a wrapped image load strategy with metadata handling + * @param strategyFn - The image loading strategy function to wrap + * @returns A wrapped strategy function that handles metadata configuration + */ +const createMetadataWrappedStrategy = (strategyFn: (args: any) => any) => { + return (args: any) => { + const clonedConfig = imageRetrieveMetadataProvider.clone(); + imageRetrieveMetadataProvider.clear(); + + try { + const result = strategyFn(args); + return result; + } finally { + // Ensure metadata is always restored, even if there's an error + setTimeout(() => { + imageRetrieveMetadataProvider.restore(clonedConfig); + }, 10); + } + }; +}; + function CPUModal() { return (
diff --git a/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx b/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx index 3c1df9190e5..29d6e4bf8c2 100644 --- a/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx +++ b/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx @@ -9,6 +9,7 @@ import { StudyBrowser } from '@ohif/ui-next'; import { useTrackedMeasurements } from '../../getContextModule'; import { Separator } from '@ohif/ui-next'; import { PanelStudyBrowserHeader } from '@ohif/extension-default'; +import { useAppConfig } from '@state'; import { defaultActionIcons, defaultViewPresets } from './constants'; const { formatDate, createStudyBrowserTabs } = utils; @@ -27,7 +28,7 @@ const thumbnailNoImageModalities = [ * * @param {*} param0 */ -function PanelStudyBrowserTracking({ +export default function PanelStudyBrowserTracking({ servicesManager, getImageSrc, getStudiesForPatientByMRN, @@ -45,6 +46,7 @@ function PanelStudyBrowserTracking({ customizationService, } = servicesManager.services; const navigate = useNavigate(); + const [appConfig] = useAppConfig(); const { t } = useTranslation('Common'); @@ -55,7 +57,8 @@ function PanelStudyBrowserTracking({ const [{ activeViewportId, viewports, isHangingProtocolLayout }, viewportGridService] = useViewportGrid(); const [trackedMeasurements, sendTrackedMeasurementsEvent] = useTrackedMeasurements(); - const [activeTabName, setActiveTabName] = useState('all'); + + const [activeTabName, setActiveTabName] = useState(appConfig.studyBrowserMode || 'all'); const [expandedStudyInstanceUIDs, setExpandedStudyInstanceUIDs] = useState([ ...StudyInstanceUIDs, ]); @@ -528,8 +531,6 @@ PanelStudyBrowserTracking.propTypes = { requestDisplaySetCreationForStudy: PropTypes.func.isRequired, }; -export default PanelStudyBrowserTracking; - function getImageIdForThumbnail(displaySet: any, imageIds: any) { let imageId; if (displaySet.isDynamicVolume) { diff --git a/platform/app/.webpack/webpack.pwa.js b/platform/app/.webpack/webpack.pwa.js index ea6d8936dd1..1d11c0dff43 100644 --- a/platform/app/.webpack/webpack.pwa.js +++ b/platform/app/.webpack/webpack.pwa.js @@ -133,8 +133,6 @@ module.exports = (env, argv) => { new InjectManifest({ swDest: 'sw.js', swSrc: path.join(SRC_DIR, 'service-worker.js'), - // Increase the limit to 4mb: - maximumFileSizeToCacheInBytes: 5 * 1024 * 1024, // Need to exclude the theme as it is updated independently exclude: [/theme/], // Cache large files for the manifests to avoid warning messages @@ -202,5 +200,9 @@ module.exports = (env, argv) => { ); } + mergedConfig.watchOptions = { + ignored: /node_modules\/@cornerstonejs/, + }; + return mergedConfig; }; diff --git a/platform/app/public/config/default.js b/platform/app/public/config/default.js index 0e5443099fa..b18bcd3629c 100644 --- a/platform/app/public/config/default.js +++ b/platform/app/public/config/default.js @@ -16,6 +16,7 @@ window.config = { experimentalStudyBrowserSort: false, strictZSpacingForVolumeViewport: true, groupEnabledModesFirst: true, + studyBrowserMode: 'all', maxNumRequests: { interaction: 100, thumbnail: 75, diff --git a/platform/core/src/types/AppTypes.ts b/platform/core/src/types/AppTypes.ts index 07db43b4833..8d820b9569b 100644 --- a/platform/core/src/types/AppTypes.ts +++ b/platform/core/src/types/AppTypes.ts @@ -81,6 +81,7 @@ declare global { } export interface Config { + studyBrowserMode?: 'all' | 'primary'; routerBasename?: string; customizationService?: CustomizationServiceType; extensions?: string[]; diff --git a/platform/docs/docs/configuration/configurationFiles.md b/platform/docs/docs/configuration/configurationFiles.md index db24e8da95f..eca94281fa3 100644 --- a/platform/docs/docs/configuration/configurationFiles.md +++ b/platform/docs/docs/configuration/configurationFiles.md @@ -131,6 +131,7 @@ Here are a list of some options available: - `omitQuotationForMultipartRequest`: Some servers (e.g., .NET) require the `multipart/related` request to be sent without quotation marks. Defaults to `false`. If your server doesn't require this, then setting this flag to `true` might improve performance (by removing the need for preflight requests). Also note that if auth headers are used, a preflight request is required. - `maxNumRequests`: The maximum number of requests to allow in parallel. It is an object with keys of `interaction`, `thumbnail`, and `prefetch`. You can specify a specific number for each type. +- `studyBrowserMode`: The initial tab to display in the study browser. Defaults to `all`. You can set it to `primary` to display only current study without prior studies initially. - `modesConfiguration`: Allows overriding modes configuration. - Example config: ```js From f7d9c7c0385747daf5ce8a77cb28cdb1d30b73df Mon Sep 17 00:00:00 2001 From: sedghi Date: Mon, 25 Nov 2024 12:29:32 -0500 Subject: [PATCH 12/20] UI Update: Adjust SegmentationSegments height and remove global min-height override - Increased the default height for 'collapsed' mode in SegmentationSegments component from 600px to 900px for better user experience. - Removed the global CSS rule that set `min-height: 0 !important;` from multiple Tailwind CSS files across the platform. - The removal of the global min-height override is intended to prevent unexpected layout issues and ensure more consistent styling across components. --- platform/app/tailwind.css | 4 ---- .../src/components/SegmentationTable/SegmentationSegments.tsx | 2 +- platform/ui-next/src/tailwind.css | 4 ---- platform/ui/src/tailwind.css | 4 ---- 4 files changed, 1 insertion(+), 13 deletions(-) diff --git a/platform/app/tailwind.css b/platform/app/tailwind.css index 510fdf6ec46..4923497052e 100644 --- a/platform/app/tailwind.css +++ b/platform/app/tailwind.css @@ -2,7 +2,3 @@ @tailwind base; @tailwind components; @tailwind utilities; - -* { - min-height: 0 !important; -} diff --git a/platform/ui-next/src/components/SegmentationTable/SegmentationSegments.tsx b/platform/ui-next/src/components/SegmentationTable/SegmentationSegments.tsx index 98b8f016bbf..3e666b0b36e 100644 --- a/platform/ui-next/src/components/SegmentationTable/SegmentationSegments.tsx +++ b/platform/ui-next/src/components/SegmentationTable/SegmentationSegments.tsx @@ -34,7 +34,7 @@ export const SegmentationSegments: React.FC<{ } const segmentCount = Object.keys(representationToUse.segments).length; - const height = mode === 'collapsed' ? 'h-[600px]' : `h-[${segmentCount * 200}px]`; + const height = mode === 'collapsed' ? 'h-[900px]' : `h-[${segmentCount * 200}px]`; return ( Date: Mon, 25 Nov 2024 12:56:38 -0500 Subject: [PATCH 13/20] upgrade --- .../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/measurement-tracking/package.json | 4 +-- platform/app/package.json | 2 +- platform/core/package.json | 2 +- yarn.lock | 32 +++++++++---------- 9 files changed, 33 insertions(+), 33 deletions(-) diff --git a/extensions/cornerstone-dicom-pmap/package.json b/extensions/cornerstone-dicom-pmap/package.json index ad6efcdce45..0c87d728cfb 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.2.15", - "@cornerstonejs/core": "^2.2.15", + "@cornerstonejs/adapters": "^2.2.16", + "@cornerstonejs/core": "^2.2.16", "@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 c8a2484af73..29f260012e6 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.2.15", - "@cornerstonejs/core": "^2.2.15", + "@cornerstonejs/adapters": "^2.2.16", + "@cornerstonejs/core": "^2.2.16", "@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 ad6665fa3f5..2bc7d5b284e 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.2.15", - "@cornerstonejs/core": "^2.2.15", - "@cornerstonejs/tools": "^2.2.15", + "@cornerstonejs/adapters": "^2.2.16", + "@cornerstonejs/core": "^2.2.16", + "@cornerstonejs/tools": "^2.2.16", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone-dynamic-volume/package.json b/extensions/cornerstone-dynamic-volume/package.json index 1bcc213683e..a693e333ce3 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.2.15", - "@cornerstonejs/tools": "^2.2.15", + "@cornerstonejs/core": "^2.2.16", + "@cornerstonejs/tools": "^2.2.16", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index 1afc762f85f..6dc545d0f8c 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.2.15", + "@cornerstonejs/dicom-image-loader": "^2.2.16", "@icr/polyseg-wasm": "^0.4.0", "@ohif/core": "3.9.1", "@ohif/ui": "3.9.1", @@ -55,9 +55,9 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^2.2.15", - "@cornerstonejs/core": "^2.2.15", - "@cornerstonejs/tools": "^2.2.15", + "@cornerstonejs/adapters": "^2.2.16", + "@cornerstonejs/core": "^2.2.16", + "@cornerstonejs/tools": "^2.2.16", "@icr/polyseg-wasm": "^0.4.0", "@kitware/vtk.js": "32.1.0", "html2canvas": "^1.4.1", diff --git a/extensions/measurement-tracking/package.json b/extensions/measurement-tracking/package.json index bbd40dcfc56..fa9558db6b6 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.2.15", - "@cornerstonejs/tools": "^2.2.15", + "@cornerstonejs/core": "^2.2.16", + "@cornerstonejs/tools": "^2.2.16", "@ohif/core": "3.9.1", "@ohif/extension-cornerstone-dicom-sr": "3.9.1", "@ohif/extension-default": "3.9.1", diff --git a/platform/app/package.json b/platform/app/package.json index debb88f5730..327c42dd4e4 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.2.15", + "@cornerstonejs/dicom-image-loader": "^2.2.16", "@emotion/serialize": "^1.1.3", "@ohif/core": "3.9.1", "@ohif/extension-cornerstone": "3.9.1", diff --git a/platform/core/package.json b/platform/core/package.json index 367d1da5399..8cb3fb7037d 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.2.15", + "@cornerstonejs/dicom-image-loader": "^2.2.16", "@ohif/ui": "3.9.1", "cornerstone-math": "0.1.9", "dicom-parser": "^1.8.21" diff --git a/yarn.lock b/yarn.lock index 1746f545226..068d3607243 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.2.15": - version "2.2.15" - resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-2.2.15.tgz#98e139a1c5fb30a0b9bd2e573b50cbbe89c2090a" - integrity sha512-7K9FSLQ3F9WWKEO79c/D/U7Qdqor9gHlPnhlp4ymHyr415r4lEL4gnuimEhybNgBb3r9VSzPmmzewL2e0CjvDg== +"@cornerstonejs/adapters@^2.2.16": + version "2.2.16" + resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-2.2.16.tgz#92dc015204fd6b10ce11882f431a36afe223ee99" + integrity sha512-atgpKlJCg2b0WKJp+Xevtu8bZB1tQdJuZvbiiXt10u7rpQCjXEpfhNGgVUxzYe7nHtt7wRDu3p49xMk931yQ/g== 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.2.15": - version "2.2.15" - resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-2.2.15.tgz#82ea75e6f69873908ccd447ce0bce43e6a06e777" - integrity sha512-j1faFkG5UcYRaFataujfBq9KNmFEC3khGzQTb9kRGflw4r49D5S7y6ad2/ymR66hE44TDqw8U4V2oDX1aMt2lQ== +"@cornerstonejs/core@^2.2.16": + version "2.2.16" + resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-2.2.16.tgz#f39beec7f1b3118bedf6055be67415681edb8527" + integrity sha512-34oOZGkuqX4Il+wPfYaF2VYQwEAUpTffyYAh4d9oWu6AY8cVc5fiJN3qc1cNLJyD5/FZH9efKmC5BWzzDl5s0Q== dependencies: "@kitware/vtk.js" "32.1.1" comlink "^4.4.1" gl-matrix "^3.4.3" -"@cornerstonejs/dicom-image-loader@^2.2.15": - version "2.2.15" - resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-2.2.15.tgz#fa1a107d4a684bce55f0813d0c258d5f15504045" - integrity sha512-iHYGk+Oxt2Y0W4UpywdmHRYOtIqrGLcWrxLyw+1gOvYe3e+nfqts/H7I8Qb60srT12phggWZR/JvxLtAjFNPsw== +"@cornerstonejs/dicom-image-loader@^2.2.16": + version "2.2.16" + resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-2.2.16.tgz#3d0c55fe75083c52d5701a94d273804313996be2" + integrity sha512-4sQyDrTZZdOK5UFS0QuQIlpzyEAtB/1C1792yrM1AG7xgNCDTCoQDVRzpvLIdRlm0a698AQgmMxbUL0hiv4g9A== dependencies: "@cornerstonejs/codec-charls" "^1.2.3" "@cornerstonejs/codec-libjpeg-turbo-8bit" "^1.2.2" @@ -2639,10 +2639,10 @@ pako "^2.0.4" uuid "^9.0.0" -"@cornerstonejs/tools@^2.2.15": - version "2.2.15" - resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-2.2.15.tgz#a5ad99d2e20aa69c03a04c6fcf18bdddbbb71658" - integrity sha512-jUKwUHmgEiCNG2eqLp5+PaplLxH9AoN3TVlwgHwsJ5bHxasCJkn5iUa6KEpZZWWJlObQs/hlrZIyI8ajzQ7dOQ== +"@cornerstonejs/tools@^2.2.16": + version "2.2.16" + resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-2.2.16.tgz#d4f086d7cb4e1ab240edebaeb11b9547c2725ac2" + integrity sha512-ny0nSnzm4xVr5hL/TqTqn0gWL1kJqMLCPXrB6XdHNUSPYolYD/HseMISFIL/uDM86ikvxrMqFOjJu4cn8HRXgQ== dependencies: "@types/offscreencanvas" "2019.7.3" comlink "^4.4.1" From 86551bb97df12267350e522a0d61ee3286fd25f4 Mon Sep 17 00:00:00 2001 From: sedghi Date: Mon, 25 Nov 2024 15:59:43 -0500 Subject: [PATCH 14/20] update docs --- .../docs/docs/development/contributing.md | 55 -- platform/docs/docs/development/link.md | 53 +- .../extensions/modules/data-source.md | 2 +- .../platform/extensions/modules/toolbar.md | 45 ++ .../services/data/SegmentationService.md | 179 ++++-- platform/docs/package.json | 20 +- yarn.lock | 513 +++++++++--------- 7 files changed, 450 insertions(+), 417 deletions(-) diff --git a/platform/docs/docs/development/contributing.md b/platform/docs/docs/development/contributing.md index 62c59341d88..5e513b7c34c 100644 --- a/platform/docs/docs/development/contributing.md +++ b/platform/docs/docs/development/contributing.md @@ -35,61 +35,6 @@ package outside of the monorepo is most common with extension development. Let's demonstrate how to accomplish this with two commonly forked extension dependencies: -### `cornerstone-tools` - -On your local file system: - -```bash title="/my-projects/" -├── cornerstonejs/cornerstone-tools -└── ohif/viewers -``` - -- Open a terminal/shell -- Navigate to `cornerstonejs/cornerstone-tools` - - `yarn install` - - [`yarn link`](https://yarnpkg.com/en/docs/cli/link) - - `yarn run dev` - -* Open a new terminal/shell -* Navigate to `ohif/viewers` (the root of ohif project) - - `yarn install` - - [`yarn link cornerstone-tools`](https://yarnpkg.com/en/docs/cli/link) - - `yarn run dev` - -As you make changed to `cornerstone-tools`, and it's output is rebuilt, you -should see the following behavior: - -![tools](..//assets/img/cornerstone-tools-link.gif) - -If you wish to stop using your local package, run the following commands in the -`ohif/viewers` repository root: - -- `yarn unlink cornerstone-tools` -- `yarn install --force` - - - #### Other linkage notes We're still working out some of the kinks with local package development as diff --git a/platform/docs/docs/development/link.md b/platform/docs/docs/development/link.md index c06fa24e92b..5d8882fd1f8 100644 --- a/platform/docs/docs/development/link.md +++ b/platform/docs/docs/development/link.md @@ -8,55 +8,4 @@ sidebar_label: Local Linking Local linking allows you to develop and test a library in the context of an application before it's published or when you encounter a bug that you suspect is related to a library. With Yarn, this can be achieved through the yarn link command. -The general procedure is as follows: - - -Link the Library: - -```sh -cd /path/to/library -yarn link -``` - -This command will create a symlink in a global directory for the library. - - -Link to the Application: - -```sh -cd /path/to/application -yarn link "library-name" -``` - -Creates a symlink from the global directory to the application's node_modules. - - -# Tutorial for linking Cornerstone3D to OHIF - -Below we demonstrate how to link Cornerstone3D to OHIF Viewer. This is useful for testing and debugging Cornerstone3D in the context of OHIF Viewer. - -
- -
- -::tip -Since `@cornerstonejs/tools` depends on `@cornerstonejs/core`, if you need the changes -you made in `@cornerstonejs/core` to be reflected in `@cornerstonejs/tools`, you need to -also link `@cornerstonejs/core` to `@cornerstonejs/tools`. - -```sh -cd /path/to/cornerstonejs-core -# for the core -yarn link - -cd /path/to/cornerstonejs-tools -yarn link "@cornerstonejs/core" - -# for the tools -yarn link - -# inside OHIF -cd /path/to/OHIFViewer -yarn link "@cornerstonejs/core" -yarn link "@cornerstonejs/tools" -``` +You can take a look at the Cornerstonejs tutorial for linking https://www.cornerstonejs.org/docs/contribute/linking diff --git a/platform/docs/docs/platform/extensions/modules/data-source.md b/platform/docs/docs/platform/extensions/modules/data-source.md index 7b7a2d5060c..aeec72dbaa1 100644 --- a/platform/docs/docs/platform/extensions/modules/data-source.md +++ b/platform/docs/docs/platform/extensions/modules/data-source.md @@ -84,7 +84,7 @@ important api endpoints that you need to implement: - `initialize`: This method is called when the data source is first created in the mode.tsx, it is used to initialize the data source and set the configuration. For instance, `dicomwebDatasource` uses this method to grab the StudyInstanceUID from the URL and set it as the active study, as opposed to `dicomJSONDatasource` which uses url in the browser to fetch the data and store it in a cache - `query.studies.search`: This is used in the study panel on the left to fetch the prior studies for the same MRN which is then used to display on the `All` tab. it is also used in the Worklist to show all the studies from the server. - `query.series.search`: This is used to fetch the series information for a given study that is expanded in the Worklist. -- `retrieve.bulkDataURI`: used to render RTSTUCTURESET in the viewport. +- `retrieve.bulkDataURI`: used to render RTSTUCTURESET in the viewport. It is an object that contains `enabled` as property and other options that are specific to the data source. - `retrieve.series.metadata`: It is a crucial end point that is used to fetch series level metadata which for hanging displaySets and displaySet creation. - `store.dicom`: If you don't need store functionality, you can skip this method. This is used to store the data in the backend. diff --git a/platform/docs/docs/platform/extensions/modules/toolbar.md b/platform/docs/docs/platform/extensions/modules/toolbar.md index b353a030429..6d772b9307d 100644 --- a/platform/docs/docs/platform/extensions/modules/toolbar.md +++ b/platform/docs/docs/platform/extensions/modules/toolbar.md @@ -137,7 +137,52 @@ this pattern, where multiple toolbar buttons are using the same evaluator but wi }, ``` + +#### Viewport and Modality Support Evaluation + +The toolbar system now uses a more robust approach for evaluating button states based on viewport types and modalities: + +**Viewport Type Support**: + +Use `evaluate.viewport.supported` to disable buttons for specific viewport types: + +```js +{ + name: 'evaluate.viewport.supported', + unsupportedViewportTypes: ['volume3d', 'video', 'sm'] +} +``` + +**Modality Support**: +Use `evaluate.modality.supported` to control button state based on modalities: + +```js +{ + name: 'evaluate.modality.supported', + supportedModalities: ['CT', 'MR'], // Enable only for these modalities + // OR + unsupportedModalities: ['US'] // Disable for these modalities +} +``` + #### Composing evaluators +Multiple evaluators can be combined to create complex conditions: + +```js +evaluate: [ + 'evaluate.cine', + { + name: 'evaluate.viewport.supported', + unsupportedViewportTypes: ['volume3d'] + }, + { + name: 'evaluate.modality.supported', + supportedModalities: ['CT'] + } +] +``` + +This evaluation system provides more precise control over when toolbar buttons are enabled or disabled based on the active viewport's characteristics. You can choose to set up multiple evaluators for a single button. This comes in handy when you need to assess the button according to various conditions. For example, we aim to prevent the Cine player from showing up on the 3D viewport, so we have: diff --git a/platform/docs/docs/platform/services/data/SegmentationService.md b/platform/docs/docs/platform/services/data/SegmentationService.md index 31e4b6726a1..c2eeb6080dc 100644 --- a/platform/docs/docs/platform/services/data/SegmentationService.md +++ b/platform/docs/docs/platform/services/data/SegmentationService.md @@ -5,50 +5,141 @@ sidebar_label: Segmentation Service # Segmentation Service -## Overview - -Using Segmentation Service you can create, edit and delete segmentation data, and -change appearance of the segmentation including color, opacity and visibility. - -Segmentations in OHIF are based on the Segmentations in Cornerstone3D. You can -read more about it in the [Cornerstone Segmentation](https://www.cornerstonejs.org/docs/concepts/cornerstone-tools/segmentation/). OHIF currently only supports -one representation of the segmentation data. ## Events -There are seven events that get publish in `MeasurementService`: - -| Event | Description | -| --------------------- | ------------------------------------------------------ | -| SEGMENTATION_MODIFIED | Fires when a segmentation is updated e.g., segment added, removed etc.| -| SEGMENTATION_DATA_MODIFIED | Fires when the segmentation data changes | -| SEGMENTATION_ADDED | Fires when a new segmentation is added to OHIF | -| SEGMENTATION_REMOVED | Fires when a segmentation is removed from OHIF | -| SEGMENT_LOADING_COMPLETE | Fires when a segment group adds its pixel data to the volume | -| SEGMENTATION_LOADING_COMPLETE | Fires when the full segmentation volume is filled with its segments | - - -## API - -### Segmentation Creation - -- `createEmptyLabelmapForDisplaySetUID`: based on a reference displaySet, create a new segmentation. E.g., create a new segmentation based on a CT series -- `createSegmentationForSEGDisplaySet`: given a segDisplaySet loaded by a sopClassHandler, create a new segmentation -- `addSegmentationRepresentationToToolGroup`: given the toolGroupId, add the given segmentationId to the toolGroup. - - -### Segmentation Behavior - -- setActiveSegmentationForToolGroup, getSegmentations, getSegmentation, jumpToSegmentCenter, highlightSegment - - -### Segment Behavior - -- setSegmentLocked, removeSegment, addSegment, setSegmentLocked, setSegmentLabel, setActiveSegment, -setSegmentRGBAColor - -### Segmentation Configuration - -Setters - -- setSegmentVisibility, setSegmentColor, setSegmentRGBA, setSegmentOpacity, toggleSegmentationVisibility, +```typescript +SEGMENTATION_MODIFIED // When a segmentation is updated +SEGMENTATION_DATA_MODIFIED // When segmentation data changes +SEGMENTATION_ADDED // When new segmentation is added +SEGMENTATION_REMOVED // When segmentation is removed +SEGMENT_LOADING_COMPLETE // When segment group adds pixel data to volume +SEGMENTATION_LOADING_COMPLETE // When full segmentation volume is filled +``` + +## Core APIs + +### Creation Methods + +```typescript +createLabelmapForDisplaySet( + displaySet, + { + segmentationId?: string, + label: string, + segments?: { + [segmentIndex: number]: Partial + } + } +) +``` + +### Segmentation Management + +```typescript +setActiveSegmentation(viewportId, segmentationId) +getSegmentations() +getSegmentation(segmentationId) +jumpToSegmentCenter(segmentationId, segmentIndex, viewportId) +highlightSegment(segmentationId, segmentIndex, viewportId) +``` + +### Segment Operations + +```typescript +addSegment(segmentationId, { + segmentIndex?: number, + label?: string, + color?: [number, number, number, number], // RGBA + visibility?: boolean, + isLocked?: boolean, + active?: boolean +}) + +setSegmentColor(viewportId, segmentationId, segmentIndex, color) +setSegmentVisibility(viewportId, segmentationId, segmentIndex, visibility) +``` + +## Data Structures + +### Segmentation Object + +```typescript +interface Segmentation { + segmentationId: string; + label: string; + segments: { + [segmentIndex: number]: { + segmentIndex: number; + label: string; + locked: boolean; + cachedStats: { [key: string]: unknown }; + active: boolean; + } + }; + representationData: RepresentationsData; +} +``` + +## Code Examples + +### Creating a Segmentation + +```typescript +const displaySet = displaySetService.getDisplaySetByUID(displaySetUID); +const segmentationId = await segmentationService.createLabelmapForDisplaySet( + displaySet, + { + label: 'New Segmentation', + segments: { + 1: { + label: 'First Segment', + active: true + } + } + } +); +``` + +### Managing Active Segmentations + +```typescript +segmentationService.setActiveSegmentation('viewport-1', segmentationId); +``` + +### Adding Segments + +```typescript +segmentationService.addSegment(segmentationId, { + label: 'Tumor', + color: [255, 0, 0, 255], // RGBA format + active: true +}); +``` + +### Visibility Management + +```typescript +// Set segment visibility +segmentationService.setSegmentVisibility( + 'viewport-1', + segmentationId, + 1, // segmentIndex + true // visible +); + +// Get viewport IDs with segmentation +const viewportIds = segmentationService.getViewportIdsWithSegmentation(segmentationId); +``` + +### Segment Styling + +```typescript +// Set segment color +segmentationService.setSegmentColor( + 'viewport-1', + segmentationId, + 1, // segmentIndex + [255, 0, 0, 255] // RGBA +); +``` diff --git a/platform/docs/package.json b/platform/docs/package.json index c86400b439a..efe7aaff422 100644 --- a/platform/docs/package.json +++ b/platform/docs/package.json @@ -41,16 +41,16 @@ ] }, "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/faster": "3.6.0", - "@docusaurus/plugin-client-redirects": "3.6.0", - "@docusaurus/plugin-google-gtag": "3.6.0", - "@docusaurus/plugin-ideal-image": "3.6.0", - "@docusaurus/plugin-pwa": "3.6.0", - "@docusaurus/preset-classic": "3.6.0", - "@docusaurus/remark-plugin-npm2yarn": "3.6.0", - "@docusaurus/theme-classic": "3.6.0", - "@docusaurus/theme-live-codeblock": "3.6.0", + "@docusaurus/core": "3.6.1", + "@docusaurus/faster": "3.6.1", + "@docusaurus/plugin-client-redirects": "3.6.1", + "@docusaurus/plugin-google-gtag": "3.6.1", + "@docusaurus/plugin-ideal-image": "3.6.1", + "@docusaurus/plugin-pwa": "3.6.1", + "@docusaurus/preset-classic": "3.6.1", + "@docusaurus/remark-plugin-npm2yarn": "3.6.1", + "@docusaurus/theme-classic": "3.6.1", + "@docusaurus/theme-live-codeblock": "3.6.1", "@mdx-js/react": "3.0.1", "@radix-ui/react-accordion": "^1.2.0", "@radix-ui/react-checkbox": "^1.1.1", diff --git a/yarn.lock b/yarn.lock index 068d3607243..6c4636ce7bf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2806,10 +2806,10 @@ "@docsearch/css" "3.6.2" algoliasearch "^4.19.1" -"@docusaurus/babel@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/babel/-/babel-3.6.0.tgz#735a003207925bd782dd08ffa5d8b3503c1f8d72" - integrity sha512-7CsoQFiadoq7AHSUIQNkI/lGfg9AQ2ZBzsf9BqfZGXkHwWDy6twuohEaG0PgQv1npSRSAB2dioVxhRSErnqKNA== +"@docusaurus/babel@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/babel/-/babel-3.6.1.tgz#5f48a275934b8164ccac3a6fd1fca3741374c884" + integrity sha512-JcKaunW8Ml2nTnfnvFc55T00Y+aCpNWnf1KY/gG+wWxHYDH0IdXOOz+k6NAlEAerW8+VYLfUqRIqHZ7N/DVXvQ== dependencies: "@babel/core" "^7.25.9" "@babel/generator" "^7.25.9" @@ -2821,23 +2821,23 @@ "@babel/runtime" "^7.25.9" "@babel/runtime-corejs3" "^7.25.9" "@babel/traverse" "^7.25.9" - "@docusaurus/logger" "3.6.0" - "@docusaurus/utils" "3.6.0" + "@docusaurus/logger" "3.6.1" + "@docusaurus/utils" "3.6.1" babel-plugin-dynamic-import-node "^2.3.3" fs-extra "^11.1.1" tslib "^2.6.0" -"@docusaurus/bundler@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/bundler/-/bundler-3.6.0.tgz#bdd060ba4d009211348e4e973a3bf4861cf0996b" - integrity sha512-o5T9HXkPKH0OQAifTxEXaebcO8kaz3tU1+wlIShZ2DKJHlsyWX3N4rToWBHroWnV/ZCT2XN3kLRzXASqrnb9Tw== +"@docusaurus/bundler@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/bundler/-/bundler-3.6.1.tgz#240343d31f39638f987caf54793c09820270ecd5" + integrity sha512-vHSEx8Ku9x/gfIC6k4xb8J2nTxagLia0KvZkPZhxfkD1+n8i+Dj4BZPWTmv+kCA17RbgAvECG0XRZ0/ZEspQBQ== dependencies: "@babel/core" "^7.25.9" - "@docusaurus/babel" "3.6.0" - "@docusaurus/cssnano-preset" "3.6.0" - "@docusaurus/logger" "3.6.0" - "@docusaurus/types" "3.6.0" - "@docusaurus/utils" "3.6.0" + "@docusaurus/babel" "3.6.1" + "@docusaurus/cssnano-preset" "3.6.1" + "@docusaurus/logger" "3.6.1" + "@docusaurus/types" "3.6.1" + "@docusaurus/utils" "3.6.1" autoprefixer "^10.4.14" babel-loader "^9.2.1" clean-css "^5.3.2" @@ -2858,18 +2858,18 @@ webpack "^5.95.0" webpackbar "^6.0.1" -"@docusaurus/core@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.6.0.tgz#b23fc7e253a49cc3e5ac9e091354f497cc0b101b" - integrity sha512-lvRgMoKJJSRDt9+HhAqFcICV4kp/mw1cJJrLxIw4Q2XZnFGM1XUuwcbuaqWmGog+NcOLZaPCcCtZbn60EMCtjQ== - dependencies: - "@docusaurus/babel" "3.6.0" - "@docusaurus/bundler" "3.6.0" - "@docusaurus/logger" "3.6.0" - "@docusaurus/mdx-loader" "3.6.0" - "@docusaurus/utils" "3.6.0" - "@docusaurus/utils-common" "3.6.0" - "@docusaurus/utils-validation" "3.6.0" +"@docusaurus/core@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.6.1.tgz#260d78e1eb7129ccb441fa944b5f7e6f492ac6cb" + integrity sha512-cDKxPihiM2z7G+4QtpTczS7uxNfNG6naSqM65OmAJET0CFRHbc9mDlLFtQF0lsVES91SHqfcGaaLZmi2FjdwWA== + dependencies: + "@docusaurus/babel" "3.6.1" + "@docusaurus/bundler" "3.6.1" + "@docusaurus/logger" "3.6.1" + "@docusaurus/mdx-loader" "3.6.1" + "@docusaurus/utils" "3.6.1" + "@docusaurus/utils-common" "3.6.1" + "@docusaurus/utils-validation" "3.6.1" boxen "^6.2.1" chalk "^4.1.2" chokidar "^3.5.3" @@ -2907,21 +2907,22 @@ webpack-dev-server "^4.15.2" webpack-merge "^6.0.1" -"@docusaurus/cssnano-preset@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.6.0.tgz#02378e53e9568ed5fc8871d4fc158ea96fd7421c" - integrity sha512-h3jlOXqqzNSoU+C4CZLNpFtD+v2xr1UBf4idZpwMgqid9r6lb5GS7tWKnQnauio6OipacbHbDXEX3JyT1PlDkg== +"@docusaurus/cssnano-preset@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.6.1.tgz#dc07b15f37d5c7bc1e59255ce0fa8825dde2dfb7" + integrity sha512-ZxYUmNeyQHW2w4/PJ7d07jQDuxzmKr9uPAQ6IVe5dTkeIeV0mDBB3jOLeJkNoI42Ru9JKEqQ9aVDtM9ct6QHnw== dependencies: cssnano-preset-advanced "^6.1.2" postcss "^8.4.38" postcss-sort-media-queries "^5.2.0" tslib "^2.6.0" -"@docusaurus/faster@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/faster/-/faster-3.6.0.tgz#70540e689fd16e26e6105fe689a1347b8ac93834" - integrity sha512-9X06/KHD3f4CKm0SjZQIK3UDE/XvouAMiAlYMPV5LprubFlxVQecZG9QnfOe7VIfUh9IuPiDPuGg17yy0efwww== +"@docusaurus/faster@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/faster/-/faster-3.6.1.tgz#f564abe9904c4132ca32164012f8427270c257c8" + integrity sha512-W3a9m7Q/fEeOpOw9/XktLCHRtp1sV2AdZWMCjH3kP1jY1TDyLFFiHJ0+1uwVpOw4/oPJqZSTRKP+IdW4+65NgQ== dependencies: + "@docusaurus/types" "3.6.1" "@rspack/core" "^1.0.14" "@swc/core" "^1.7.39" "@swc/html" "^1.7.39" @@ -2931,33 +2932,33 @@ tslib "^2.6.0" webpack "^5.95.0" -"@docusaurus/logger@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.6.0.tgz#c7349c2636087f55f573a60a3c7f69b87d59974d" - integrity sha512-BcQhoXilXW0607cH/kO6P5Gt5KxCGfoJ+QDKNf3yO2S09/RsITlW+0QljXPbI3DklTrHrhRDmgGk1yX4nUhWTA== +"@docusaurus/logger@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.6.1.tgz#724b7f9d8c435c9933d52792458659471ec90919" + integrity sha512-OvetI/nnOMBSqCkUzKAQhnIjhxduECK4qTu3tq/8/h/qqvLsvKURojm04WPE54L+Uy+UXMas0hnbBJd8zDlEOw== dependencies: chalk "^4.1.2" tslib "^2.6.0" -"@docusaurus/lqip-loader@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/lqip-loader/-/lqip-loader-3.6.0.tgz#c40cbe74690455e5c65749d4a9a2bc00806a91a9" - integrity sha512-jEQjnKAjhgyZ/aQf0Tbl3eDpp1j0C/GojE/cv2Bad89o+luV1OAOs9UHDRyKwWQfN+se0D9kFxkfsfwYxMpI8A== +"@docusaurus/lqip-loader@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/lqip-loader/-/lqip-loader-3.6.1.tgz#b5a4956b8906b2087e2f9429c63ddaff184f8f77" + integrity sha512-H/VVvnvFupFhQ81FuTyA/XHxEZPKh99T6Wg6KgN+/yvcn7869RdgrlDhKDnXZ7j2u80eFsVNjAcPfW1cSAtK6A== dependencies: - "@docusaurus/logger" "3.6.0" + "@docusaurus/logger" "3.6.1" file-loader "^6.2.0" lodash "^4.17.21" sharp "^0.32.3" tslib "^2.6.0" -"@docusaurus/mdx-loader@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.6.0.tgz#f8ba7af9d59473a7182f6a9307e0432f8dce905b" - integrity sha512-GhRzL1Af/AdSSrGesSPOU/iP/aXadTGmVKuysCxZDrQR2RtBtubQZ9aw+KvdFVV7R4K/CsbgD6J5oqrXlEPk3Q== +"@docusaurus/mdx-loader@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.6.1.tgz#6482e6f2f32ccab4a74d8b64d7eeec4fdf9be475" + integrity sha512-KPIsYi0S3X3/rNrW3V1fgOu5t6ahYWc31zTHHod8pacFxdmk9Uf6uuw+Jd6Cly1ilgal+41Ku+s0gmMuqKqiqg== dependencies: - "@docusaurus/logger" "3.6.0" - "@docusaurus/utils" "3.6.0" - "@docusaurus/utils-validation" "3.6.0" + "@docusaurus/logger" "3.6.1" + "@docusaurus/utils" "3.6.1" + "@docusaurus/utils-validation" "3.6.1" "@mdx-js/mdx" "^3.0.0" "@slorber/remark-comment" "^1.0.0" escape-html "^1.0.3" @@ -2994,12 +2995,12 @@ react-helmet-async "*" react-loadable "npm:@docusaurus/react-loadable@5.5.2" -"@docusaurus/module-type-aliases@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.6.0.tgz#44083c34a53db1dde06364b4e7f2d144fa2d5394" - integrity sha512-szTrIN/6/fuk0xkf3XbRfdTFJzRQ8d1s3sQj5++58wltrT7v3yn1149oc9ryYjMpRcbsarGloQwMu7ofPe4XPg== +"@docusaurus/module-type-aliases@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.6.1.tgz#2780e19411d0c8b16d46a032eae9e60e742ae681" + integrity sha512-J+q1jgm7TnEfVIUZImSFeLA1rghb6nwtoB9siHdcgKpDqFJ9/S7xhQL2aEKE7iZMZYzpu+2F390E9A7GkdEJNA== dependencies: - "@docusaurus/types" "3.6.0" + "@docusaurus/types" "3.6.1" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" @@ -3007,34 +3008,34 @@ react-helmet-async "*" react-loadable "npm:@docusaurus/react-loadable@6.0.0" -"@docusaurus/plugin-client-redirects@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.6.0.tgz#54155826e9e5da625e296eb93e346c11c1541a78" - integrity sha512-LIqRT6dtgxdENQH8XYwOOyxfKuzFD1ayJmIDCp9Yi/rbdcPE4vvTcESLGXOKvcyWZSfyCu+JA8Tyk4qpp+2J0w== - dependencies: - "@docusaurus/core" "3.6.0" - "@docusaurus/logger" "3.6.0" - "@docusaurus/utils" "3.6.0" - "@docusaurus/utils-common" "3.6.0" - "@docusaurus/utils-validation" "3.6.0" +"@docusaurus/plugin-client-redirects@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.6.1.tgz#a035708ff13234a30dbaa84526ab12a102e00d07" + integrity sha512-gY1LEQw4zSLSPNVxZk9mDj5ct+sJNux0SiY1PbMiI9sK8xXqkTC7QuRyrxRPelSZX9K4nyhK8PjYbVXAN+GUWQ== + dependencies: + "@docusaurus/core" "3.6.1" + "@docusaurus/logger" "3.6.1" + "@docusaurus/utils" "3.6.1" + "@docusaurus/utils-common" "3.6.1" + "@docusaurus/utils-validation" "3.6.1" eta "^2.2.0" fs-extra "^11.1.1" lodash "^4.17.21" tslib "^2.6.0" -"@docusaurus/plugin-content-blog@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.6.0.tgz#9128175b4c3ce885d9090183d74c60813844ea8d" - integrity sha512-o4aT1/E0Ldpzs/hQff5uyoSriAhS/yqBhqSn+fvSw465AaqRsva6O7CZSYleuBq6x2bewyE3QJq2PcTiHhAd8g== - dependencies: - "@docusaurus/core" "3.6.0" - "@docusaurus/logger" "3.6.0" - "@docusaurus/mdx-loader" "3.6.0" - "@docusaurus/theme-common" "3.6.0" - "@docusaurus/types" "3.6.0" - "@docusaurus/utils" "3.6.0" - "@docusaurus/utils-common" "3.6.0" - "@docusaurus/utils-validation" "3.6.0" +"@docusaurus/plugin-content-blog@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.6.1.tgz#1127d35e1a443e87f9674f955acf7864bc62bfed" + integrity sha512-FUmsn3xg/XD/K/4FQd8XHrs92aQdZO5LUtpHnRvO1/6DY87SMz6B6ERAN9IGQQld//M2/LVTHkZy8oVhQZQHIQ== + dependencies: + "@docusaurus/core" "3.6.1" + "@docusaurus/logger" "3.6.1" + "@docusaurus/mdx-loader" "3.6.1" + "@docusaurus/theme-common" "3.6.1" + "@docusaurus/types" "3.6.1" + "@docusaurus/utils" "3.6.1" + "@docusaurus/utils-common" "3.6.1" + "@docusaurus/utils-validation" "3.6.1" cheerio "1.0.0-rc.12" feed "^4.2.2" fs-extra "^11.1.1" @@ -3046,20 +3047,20 @@ utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-docs@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.6.0.tgz#15cae4bf81da0b0ddce09d53b10b7209116ea9c2" - integrity sha512-c5gZOxocJKO/Zev2MEZInli+b+VNswDGuKHE6QtFgidhAJonwjh2kwj967RvWFaMMk62HlLJLZ+IGK2XsVy4Aw== - dependencies: - "@docusaurus/core" "3.6.0" - "@docusaurus/logger" "3.6.0" - "@docusaurus/mdx-loader" "3.6.0" - "@docusaurus/module-type-aliases" "3.6.0" - "@docusaurus/theme-common" "3.6.0" - "@docusaurus/types" "3.6.0" - "@docusaurus/utils" "3.6.0" - "@docusaurus/utils-common" "3.6.0" - "@docusaurus/utils-validation" "3.6.0" +"@docusaurus/plugin-content-docs@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.6.1.tgz#7c461b33ecc41e27fc02830bcde54378f68b2512" + integrity sha512-Uq8kyn5DYCDmkUlB9sWChhWghS4lUFNiQU+RXcAXJ3qCVXsBpPsh6RF+npQG1N+j4wAbjydM1iLLJJzp+x3eMQ== + dependencies: + "@docusaurus/core" "3.6.1" + "@docusaurus/logger" "3.6.1" + "@docusaurus/mdx-loader" "3.6.1" + "@docusaurus/module-type-aliases" "3.6.1" + "@docusaurus/theme-common" "3.6.1" + "@docusaurus/types" "3.6.1" + "@docusaurus/utils" "3.6.1" + "@docusaurus/utils-common" "3.6.1" + "@docusaurus/utils-validation" "3.6.1" "@types/react-router-config" "^5.0.7" combine-promises "^1.1.0" fs-extra "^11.1.1" @@ -3069,95 +3070,95 @@ utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-pages@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.6.0.tgz#5dd284bf063baaba1e0305c90b1dd0d5acc7e466" - integrity sha512-RKHhJrfkadHc7+tt1cP48NWifOrhkSRMPdXNYytzhoQrXlP6Ph+3tfQ4/n+nT0S3Y9+wwRxYqRqA380ZLt+QtQ== - dependencies: - "@docusaurus/core" "3.6.0" - "@docusaurus/mdx-loader" "3.6.0" - "@docusaurus/types" "3.6.0" - "@docusaurus/utils" "3.6.0" - "@docusaurus/utils-validation" "3.6.0" +"@docusaurus/plugin-content-pages@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.6.1.tgz#7d3dcdcc49e3c31ed13dceab830ee7fd9a1c4658" + integrity sha512-TZtL+2zq20gqGalzoIT2rEF1T4YCZ26jTvlCJXs78+incIajfdHtmdOq7rQW0oV7oqTjpGllbp788nY/vY9jgw== + dependencies: + "@docusaurus/core" "3.6.1" + "@docusaurus/mdx-loader" "3.6.1" + "@docusaurus/types" "3.6.1" + "@docusaurus/utils" "3.6.1" + "@docusaurus/utils-validation" "3.6.1" fs-extra "^11.1.1" tslib "^2.6.0" webpack "^5.88.1" -"@docusaurus/plugin-debug@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.6.0.tgz#0a6da9ba31a0acb176ae2762b4d6b96b1906c826" - integrity sha512-o8T1Rl94COLdSlKvjYLQpRJQRU8WWZ8EX1B0yV0dQLNN8reyH7MQW+6z1ig4sQFfH3pnjPWVGHfuEjcib5m7Eg== +"@docusaurus/plugin-debug@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.6.1.tgz#e73fca0307b864b000c98b7110009c6b4a3efc2b" + integrity sha512-DeKPZtoVExDSYCbzoz7y5Dhc6+YPqRWfVGwEEUyKopSyQYefp0OV8hvASmbJCn2WyThRgspOUhog3FSEhz+agw== dependencies: - "@docusaurus/core" "3.6.0" - "@docusaurus/types" "3.6.0" - "@docusaurus/utils" "3.6.0" + "@docusaurus/core" "3.6.1" + "@docusaurus/types" "3.6.1" + "@docusaurus/utils" "3.6.1" fs-extra "^11.1.1" react-json-view-lite "^1.2.0" tslib "^2.6.0" -"@docusaurus/plugin-google-analytics@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.6.0.tgz#9e8245eef1bee95e44ef2af92ce3e844a8e93e64" - integrity sha512-kgRFbfpi6Hshj75YUztKyEMtI/kw0trPRwoTN4g+W1NK99R/vh8phTvhBTIMnDbetU79795LkwfG0rZ/ce6zWQ== +"@docusaurus/plugin-google-analytics@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.6.1.tgz#f20027f75cd45830eefcd7a172ded8b15de0b516" + integrity sha512-ZEoERiDHxSfhaEeT35ukQ892NzGHWiUvfxUsnPiRuGEhMoQlxMSp60shBuSZ1sUKuZlndoEl5qAXJg09Wls/Sg== dependencies: - "@docusaurus/core" "3.6.0" - "@docusaurus/types" "3.6.0" - "@docusaurus/utils-validation" "3.6.0" + "@docusaurus/core" "3.6.1" + "@docusaurus/types" "3.6.1" + "@docusaurus/utils-validation" "3.6.1" tslib "^2.6.0" -"@docusaurus/plugin-google-gtag@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.6.0.tgz#bed8381fe3ab357d56a565f657e38d8ea6272703" - integrity sha512-nqu4IfjaO4UX+dojHL2BxHRS+sKj31CIMWYo49huQ3wTET0Oc3u/WGTaKd3ShTPDhkgiRhTOSTPUwJWrU55nHg== +"@docusaurus/plugin-google-gtag@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.6.1.tgz#db08bfcef319c494e5969c0d96d62bd8f43469db" + integrity sha512-u/E9vXUsZxYaV6Brvfee8NiH/iR0cMml9P/ifz4EpH/Jfxdbw8rbCT0Nm/h7EFgEY48Uqkl5huSbIvFB9n8aTQ== dependencies: - "@docusaurus/core" "3.6.0" - "@docusaurus/types" "3.6.0" - "@docusaurus/utils-validation" "3.6.0" + "@docusaurus/core" "3.6.1" + "@docusaurus/types" "3.6.1" + "@docusaurus/utils-validation" "3.6.1" "@types/gtag.js" "^0.0.12" tslib "^2.6.0" -"@docusaurus/plugin-google-tag-manager@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.6.0.tgz#326382de05888ea4317837be736eabd635adbc71" - integrity sha512-OU6c5xI0nOVbEc9eImGvvsgNWe4vGm97t/W3aLHjWsHyNk3uwFNBQMHRvBUwAi9k/K3kyC5E7DWnc67REhdLOw== +"@docusaurus/plugin-google-tag-manager@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.6.1.tgz#f3aa3cd0e7e6be793e5af3fe048a6ad12c3f0211" + integrity sha512-By+NKkGYV8tSo8/RyS1OXikOtqsko5jJZ/uioJfBjsBGgSbiMJ+Y/HogFBke0mgSvf7NPGKZTbYm5+FJ8YUtPQ== dependencies: - "@docusaurus/core" "3.6.0" - "@docusaurus/types" "3.6.0" - "@docusaurus/utils-validation" "3.6.0" + "@docusaurus/core" "3.6.1" + "@docusaurus/types" "3.6.1" + "@docusaurus/utils-validation" "3.6.1" tslib "^2.6.0" -"@docusaurus/plugin-ideal-image@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-ideal-image/-/plugin-ideal-image-3.6.0.tgz#41ffed294bd18ef7f9d4bf0d2d248a4bb890d62a" - integrity sha512-6BaZU7mX+RH+lRFPm5nj3GGfAsjsJ1JHjp0Xjb4ilfte7L2IZkTl6MPpvAzyPC0qIUxfXRcJs4qd/HUE0xcTlw== +"@docusaurus/plugin-ideal-image@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-ideal-image/-/plugin-ideal-image-3.6.1.tgz#3c0bb8e398ef0b7ea1ee313ee1e774de93f2b941" + integrity sha512-hiGRPPlsM02aEOPlQc9rVnrckbVR6HswG7yDpZOtBEhw+ysXFsl/8gzAxFBL4ogKjN28WrlMCn/6IIkxY/EyOQ== dependencies: - "@docusaurus/core" "3.6.0" - "@docusaurus/lqip-loader" "3.6.0" + "@docusaurus/core" "3.6.1" + "@docusaurus/lqip-loader" "3.6.1" "@docusaurus/responsive-loader" "^1.7.0" - "@docusaurus/theme-translations" "3.6.0" - "@docusaurus/types" "3.6.0" - "@docusaurus/utils-validation" "3.6.0" + "@docusaurus/theme-translations" "3.6.1" + "@docusaurus/types" "3.6.1" + "@docusaurus/utils-validation" "3.6.1" "@slorber/react-ideal-image" "^0.0.12" react-waypoint "^10.3.0" sharp "^0.32.3" tslib "^2.6.0" webpack "^5.88.1" -"@docusaurus/plugin-pwa@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-pwa/-/plugin-pwa-3.6.0.tgz#9851d1dd52bf8bf75f7d97e9f42cb6e29cacb68d" - integrity sha512-IVUJIBeGwbIkrI8HgVkw3eonw23wq5EjPOioXzht4Dql1Bb13xF/SmO6Bj8NE2KNmlubOKRKwLy8gYpB3i8cmQ== +"@docusaurus/plugin-pwa@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-pwa/-/plugin-pwa-3.6.1.tgz#541501c814d1b5d9681f8a55224e24b121ab7c75" + integrity sha512-GsbpsgpAwdBpDpeVzk3UPNUQAc0oGU+0GL5s1LmFgqfpql5C7ZnkwD9FmW6lvieabQjC+Ga0d0zDqu20coqIRQ== dependencies: "@babel/core" "^7.25.9" "@babel/preset-env" "^7.25.9" - "@docusaurus/bundler" "3.6.0" - "@docusaurus/core" "3.6.0" - "@docusaurus/logger" "3.6.0" - "@docusaurus/theme-common" "3.6.0" - "@docusaurus/theme-translations" "3.6.0" - "@docusaurus/types" "3.6.0" - "@docusaurus/utils" "3.6.0" - "@docusaurus/utils-validation" "3.6.0" + "@docusaurus/bundler" "3.6.1" + "@docusaurus/core" "3.6.1" + "@docusaurus/logger" "3.6.1" + "@docusaurus/theme-common" "3.6.1" + "@docusaurus/theme-translations" "3.6.1" + "@docusaurus/types" "3.6.1" + "@docusaurus/utils" "3.6.1" + "@docusaurus/utils-validation" "3.6.1" babel-loader "^9.2.1" clsx "^2.0.0" core-js "^3.31.1" @@ -3168,39 +3169,39 @@ workbox-precaching "^7.0.0" workbox-window "^7.0.0" -"@docusaurus/plugin-sitemap@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.6.0.tgz#c7c93f75f03391ca9071da48563fc4faa84966bc" - integrity sha512-YB5XMdf9FjLhgbHY/cDbYhVxsgcpPIjxY9769HUgFOB7GVzItTLOR71W035R1BiR2CA5QAn3XOSg36WLRxlhQQ== - dependencies: - "@docusaurus/core" "3.6.0" - "@docusaurus/logger" "3.6.0" - "@docusaurus/types" "3.6.0" - "@docusaurus/utils" "3.6.0" - "@docusaurus/utils-common" "3.6.0" - "@docusaurus/utils-validation" "3.6.0" +"@docusaurus/plugin-sitemap@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.6.1.tgz#c842019a64d8dd12b64145115e60771d482db997" + integrity sha512-i8R/GTKew4Cufb+7YQTwfPcNOhKTJzZ1VZ5OqQwI9c3pZK2TltQyhqKDVN94KCTbSSKvOYYytYfRAB2uPnH1/A== + dependencies: + "@docusaurus/core" "3.6.1" + "@docusaurus/logger" "3.6.1" + "@docusaurus/types" "3.6.1" + "@docusaurus/utils" "3.6.1" + "@docusaurus/utils-common" "3.6.1" + "@docusaurus/utils-validation" "3.6.1" fs-extra "^11.1.1" sitemap "^7.1.1" tslib "^2.6.0" -"@docusaurus/preset-classic@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.6.0.tgz#71561f366a266be571022764eb8b9e5618f573eb" - integrity sha512-kpGNdQzr/Dpm7o3b1iaQrz4DMDx3WIeBbl4V4P4maa2zAQkTdlaP4CMgA5oKrRrpqPLnQFsUM/b+qf2glhl2Tw== - dependencies: - "@docusaurus/core" "3.6.0" - "@docusaurus/plugin-content-blog" "3.6.0" - "@docusaurus/plugin-content-docs" "3.6.0" - "@docusaurus/plugin-content-pages" "3.6.0" - "@docusaurus/plugin-debug" "3.6.0" - "@docusaurus/plugin-google-analytics" "3.6.0" - "@docusaurus/plugin-google-gtag" "3.6.0" - "@docusaurus/plugin-google-tag-manager" "3.6.0" - "@docusaurus/plugin-sitemap" "3.6.0" - "@docusaurus/theme-classic" "3.6.0" - "@docusaurus/theme-common" "3.6.0" - "@docusaurus/theme-search-algolia" "3.6.0" - "@docusaurus/types" "3.6.0" +"@docusaurus/preset-classic@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.6.1.tgz#196540ca8495075d24eb724af3bf4c75d2412754" + integrity sha512-b90Y1XRH9e+oa/E3NmiFEFOwgYUd+knFcZUy81nM3FJs038WbEA0T55NQsuPW0s7nOsCShQ7dVFyKxV+Wp31Nw== + dependencies: + "@docusaurus/core" "3.6.1" + "@docusaurus/plugin-content-blog" "3.6.1" + "@docusaurus/plugin-content-docs" "3.6.1" + "@docusaurus/plugin-content-pages" "3.6.1" + "@docusaurus/plugin-debug" "3.6.1" + "@docusaurus/plugin-google-analytics" "3.6.1" + "@docusaurus/plugin-google-gtag" "3.6.1" + "@docusaurus/plugin-google-tag-manager" "3.6.1" + "@docusaurus/plugin-sitemap" "3.6.1" + "@docusaurus/theme-classic" "3.6.1" + "@docusaurus/theme-common" "3.6.1" + "@docusaurus/theme-search-algolia" "3.6.1" + "@docusaurus/types" "3.6.1" "@docusaurus/react-loadable@5.5.2": version "5.5.2" @@ -3210,10 +3211,10 @@ "@types/react" "*" prop-types "^15.6.2" -"@docusaurus/remark-plugin-npm2yarn@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/remark-plugin-npm2yarn/-/remark-plugin-npm2yarn-3.6.0.tgz#b0e287c88ded88de576f1e2eb74d466062d73c35" - integrity sha512-Imh0v68hFWSWlcE7qLlnZD9r4bQOzM6rcWTh6mPpfx2zHAai+so+SJmrMwZ1AJGfC08Y7Ch2Q/G4AThalXRVqQ== +"@docusaurus/remark-plugin-npm2yarn@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/remark-plugin-npm2yarn/-/remark-plugin-npm2yarn-3.6.1.tgz#9098b41101fe99214ac837954ef6365c046f909f" + integrity sha512-ve8xXfyB4oQwtYMgZoFxWWyp/aa3mobt4jLRjNHwRLQ6Jy7bMmFQ7uX99ExDttyGme2ABX4/vDNYfXDRdKm91Q== dependencies: mdast-util-mdx "^3.0.0" npm-to-yarn "^3.0.0" @@ -3228,24 +3229,24 @@ dependencies: loader-utils "^2.0.0" -"@docusaurus/theme-classic@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.6.0.tgz#8f34b65c85f5082deb3633a893974d2eee309121" - integrity sha512-sAXNfwPL6uRD+BuHuKXZfAXud7SS7IK/JdrPuzyQxdO1gJKzI5GFfe1ED1QoJDNWJWJ01JHE5rSnwYLEADc2rQ== - dependencies: - "@docusaurus/core" "3.6.0" - "@docusaurus/logger" "3.6.0" - "@docusaurus/mdx-loader" "3.6.0" - "@docusaurus/module-type-aliases" "3.6.0" - "@docusaurus/plugin-content-blog" "3.6.0" - "@docusaurus/plugin-content-docs" "3.6.0" - "@docusaurus/plugin-content-pages" "3.6.0" - "@docusaurus/theme-common" "3.6.0" - "@docusaurus/theme-translations" "3.6.0" - "@docusaurus/types" "3.6.0" - "@docusaurus/utils" "3.6.0" - "@docusaurus/utils-common" "3.6.0" - "@docusaurus/utils-validation" "3.6.0" +"@docusaurus/theme-classic@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.6.1.tgz#dff4c7732b590e231dfb764e1d9a8acb5cf28954" + integrity sha512-5lVUmIXk7zp+n9Ki2lYWrmhbd6mssOlKCnnDJvY4QDi3EgjRisIu5g4yKXoWTIbiqE7m7q/dS9cbeShEtfkKng== + dependencies: + "@docusaurus/core" "3.6.1" + "@docusaurus/logger" "3.6.1" + "@docusaurus/mdx-loader" "3.6.1" + "@docusaurus/module-type-aliases" "3.6.1" + "@docusaurus/plugin-content-blog" "3.6.1" + "@docusaurus/plugin-content-docs" "3.6.1" + "@docusaurus/plugin-content-pages" "3.6.1" + "@docusaurus/theme-common" "3.6.1" + "@docusaurus/theme-translations" "3.6.1" + "@docusaurus/types" "3.6.1" + "@docusaurus/utils" "3.6.1" + "@docusaurus/utils-common" "3.6.1" + "@docusaurus/utils-validation" "3.6.1" "@mdx-js/react" "^3.0.0" clsx "^2.0.0" copy-text-to-clipboard "^3.2.0" @@ -3260,15 +3261,15 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-common@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.6.0.tgz#9a061d278df76da0f70a9465cd0b7299c14d03d3" - integrity sha512-frjlYE5sRs+GuPs4XXlp9aMLI2O4H5FPpznDAXBrCm+8EpWRiIb443ePMxM3IyMCQ5bwFlki0PI9C+r4apstnw== +"@docusaurus/theme-common@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.6.1.tgz#d160516db9482ab19f7921d8a75093885d04d3de" + integrity sha512-18iEYNpMvarGfq9gVRpGowSZD24vZ39Iz4acqaj64180i54V9el8tVnhNr/wRvrUm1FY30A1NHLqnMnDz4rYEQ== dependencies: - "@docusaurus/mdx-loader" "3.6.0" - "@docusaurus/module-type-aliases" "3.6.0" - "@docusaurus/utils" "3.6.0" - "@docusaurus/utils-common" "3.6.0" + "@docusaurus/mdx-loader" "3.6.1" + "@docusaurus/module-type-aliases" "3.6.1" + "@docusaurus/utils" "3.6.1" + "@docusaurus/utils-common" "3.6.1" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" @@ -3278,34 +3279,34 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-live-codeblock@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-live-codeblock/-/theme-live-codeblock-3.6.0.tgz#de670b60c9acfdf03feb79e32a3be0d90fe11647" - integrity sha512-EphCTxJZgnEvgA1kdbr+R/cBu3fdawA2ooQji8EKPKg9i4Uex0xfFGhWja/0SaMKGqmfHRz9SY8I7j75O3cluw== +"@docusaurus/theme-live-codeblock@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-live-codeblock/-/theme-live-codeblock-3.6.1.tgz#748f2864df9ad2cdbb4f370b816ad1dc2d2bc175" + integrity sha512-8GdnkwaNxb0dmRHGDlO+5QXdz9mrLni/wqai06LSGOTRv+GY3JC2Zov/KKkHZxx5MNFagqq01sGdn1TBBrS9jg== dependencies: - "@docusaurus/core" "3.6.0" - "@docusaurus/theme-common" "3.6.0" - "@docusaurus/theme-translations" "3.6.0" - "@docusaurus/utils-validation" "3.6.0" + "@docusaurus/core" "3.6.1" + "@docusaurus/theme-common" "3.6.1" + "@docusaurus/theme-translations" "3.6.1" + "@docusaurus/utils-validation" "3.6.1" "@philpl/buble" "^0.19.7" clsx "^2.0.0" fs-extra "^11.1.1" react-live "^4.1.6" tslib "^2.6.0" -"@docusaurus/theme-search-algolia@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.6.0.tgz#47dcfca68f50163abce411dd9b181855a9ec9c83" - integrity sha512-4IwRUkxjrisR8LXBHeE4d2btraWdMficbgiVL3UHvJURmyvgzMBZQP8KrK8rjdXeu8SuRxSmeV6NSVomRvdbEg== +"@docusaurus/theme-search-algolia@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.6.1.tgz#a9cc9c9517a22459354703cf33d469e7263d3854" + integrity sha512-BjmuiFRpQP1WEm8Mzu1Bb0Wdas6G65VHXDDNr7XTKgbstxalE6vuxt0ioXTDFS2YVep5748aVhKvnxR9gm2Liw== dependencies: "@docsearch/react" "^3.5.2" - "@docusaurus/core" "3.6.0" - "@docusaurus/logger" "3.6.0" - "@docusaurus/plugin-content-docs" "3.6.0" - "@docusaurus/theme-common" "3.6.0" - "@docusaurus/theme-translations" "3.6.0" - "@docusaurus/utils" "3.6.0" - "@docusaurus/utils-validation" "3.6.0" + "@docusaurus/core" "3.6.1" + "@docusaurus/logger" "3.6.1" + "@docusaurus/plugin-content-docs" "3.6.1" + "@docusaurus/theme-common" "3.6.1" + "@docusaurus/theme-translations" "3.6.1" + "@docusaurus/utils" "3.6.1" + "@docusaurus/utils-validation" "3.6.1" algoliasearch "^4.18.0" algoliasearch-helper "^3.13.3" clsx "^2.0.0" @@ -3315,10 +3316,10 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-translations@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.6.0.tgz#93994e931f340c1712c81ac80dbab5750c24634f" - integrity sha512-L555X8lWE3fv8VaF0Bc1VnAgi10UvRKFcvADHiYR7Gj37ItaWP5i7xLHsSw7fi/SHTXe5wfIeCFNqUYHyCOHAQ== +"@docusaurus/theme-translations@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.6.1.tgz#d6bbb20141ca70f352201f2f412b6b8d988d86b4" + integrity sha512-bNm5G6sueUezvyhsBegA1wwM38yW0BnqpZTE9KHO2yKnkERNMaV5x/yPJ/DNCOHjJtCcJ5Uz55g2AS75Go31xA== dependencies: fs-extra "^11.1.1" tslib "^2.6.0" @@ -3342,10 +3343,10 @@ webpack "^5.88.1" webpack-merge "^5.9.0" -"@docusaurus/types@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.6.0.tgz#8fa82332a7c7b8093b5c55e1115f5854ce484978" - integrity sha512-jADLgoZGWhAzThr+mRiyuFD4OUzt6jHnb7NRArRKorgxckqUBaPyFOau9hhbcSTHtU6ceyeWjN7FDt7uG2Hplw== +"@docusaurus/types@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.6.1.tgz#0e55a0a51a3e55658b0845af83d5fe17c495978e" + integrity sha512-hCB1hj9DYutVYBisnPNobz9SzEmCcf1EetJv09O49Cov3BqOkm+vnnjB3d957YJMtpLGQoKBeN/FF1DZ830JwQ== dependencies: "@mdx-js/mdx" "^3.0.0" "@types/history" "^4.7.11" @@ -3357,34 +3358,36 @@ webpack "^5.95.0" webpack-merge "^5.9.0" -"@docusaurus/utils-common@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.6.0.tgz#11855ea503132bbcaba6ca4d351293ff10a75d34" - integrity sha512-diUDNfbw33GaZMmKwdTckT2IBfVouXLXRD+zphH9ywswuaEIKqixvuf5g41H7MBBrlMsxhna3uTMoB4B/OPDcA== +"@docusaurus/utils-common@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.6.1.tgz#994160470e6bd2c0eb771f2132883d21b3b6830f" + integrity sha512-LX1qiTiC0aS8c92uZ+Wj2iNCNJyYZJIKY8/nZDKNMBfo759VYVS3RX3fKP3DznB+16sYp7++MyCz/T6fOGaRfw== dependencies: + "@docusaurus/types" "3.6.1" tslib "^2.6.0" -"@docusaurus/utils-validation@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.6.0.tgz#5557ca14fa64ac29e6f70e61006be721395ecde5" - integrity sha512-CRHiKKJEKA0GFlfOf71JWHl7PtwOyX0+Zg9ep9NFEZv6Lcx3RJ9nhl7p8HRjPL6deyYceavM//BsfW4pCI4BtA== +"@docusaurus/utils-validation@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.6.1.tgz#8e4b5bd8b71f55228543e3fda1301e9fb83df1c6" + integrity sha512-+iMd6zRl5cJQm7nUP+7pSO/oAXsN79eHO34ME7l2YJt4GEAr70l5kkD58u2jEPpp+wSXT70c7x2A2lzJI1E8jw== dependencies: - "@docusaurus/logger" "3.6.0" - "@docusaurus/utils" "3.6.0" - "@docusaurus/utils-common" "3.6.0" + "@docusaurus/logger" "3.6.1" + "@docusaurus/utils" "3.6.1" + "@docusaurus/utils-common" "3.6.1" fs-extra "^11.2.0" joi "^17.9.2" js-yaml "^4.1.0" lodash "^4.17.21" tslib "^2.6.0" -"@docusaurus/utils@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.6.0.tgz#192785da6fd62dfd83d6f1879c3aa45547f5df23" - integrity sha512-VKczAutI4mptiAw/WcYEu5WeVhQ6Q1zdIUl64SGw9K++9lziH+Kt10Ee8l2dMpRkiUk6zzK20kMNlX2WCUwXYQ== +"@docusaurus/utils@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.6.1.tgz#4e4f80be294671bfb83910352d3625878134bf48" + integrity sha512-nS3WCvepwrnBEgSG5vQu40XG95lC9Jeh/odV5u5IhU1eQFEGDst9xBi6IK5yZdsGvbuaXBZLZtOqWYtuuFa/rQ== dependencies: - "@docusaurus/logger" "3.6.0" - "@docusaurus/utils-common" "3.6.0" + "@docusaurus/logger" "3.6.1" + "@docusaurus/types" "3.6.1" + "@docusaurus/utils-common" "3.6.1" "@svgr/webpack" "^8.1.0" escape-string-regexp "^4.0.0" file-loader "^6.2.0" From eed1f430dd18196f7c3ff31d2a8ba549fca87bec Mon Sep 17 00:00:00 2001 From: sedghi Date: Wed, 27 Nov 2024 11:02:45 -0500 Subject: [PATCH 15/20] wip --- .docker/Viewer-v3.x/default.conf.template | 2 -- .docker/Viewer-v3.x/default.ssl.conf.template | 2 -- .../ViewportService/CornerstoneViewportService.ts | 2 +- .../PanelStudyBrowserTracking.tsx | 11 +++++++++-- modes/longitudinal/src/customizations.tsx | 5 +++++ .../Nginx-Dcm4chee-Keycloak/config/nginx.conf | 2 -- .../app/.recipes/Nginx-Dcm4chee/config/nginx.conf | 2 -- .../.recipes/Nginx-Orthanc-Keycloak/config/nginx.conf | 2 -- platform/app/.recipes/Nginx-Orthanc/config/nginx.conf | 2 -- .../OpenResty-Orthanc-Keycloak/config/nginx.conf | 2 -- .../OpenResty-Orthanc/config/nginx.conf | 2 -- platform/app/public/config/default.js | 1 - platform/app/public/serve.json | 11 +---------- .../docs/docs/configuration/configurationFiles.md | 1 - platform/docs/docs/deployment/custom-url-access.md | 9 --------- platform/docs/docs/migration-guide/3p8-to-3p9/7-UI.md | 5 +++++ 16 files changed, 21 insertions(+), 40 deletions(-) diff --git a/.docker/Viewer-v3.x/default.conf.template b/.docker/Viewer-v3.x/default.conf.template index 153ea708620..11206da2a60 100644 --- a/.docker/Viewer-v3.x/default.conf.template +++ b/.docker/Viewer-v3.x/default.conf.template @@ -5,8 +5,6 @@ server { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html; - add_header Cross-Origin-Opener-Policy same-origin; - add_header Cross-Origin-Embedder-Policy require-corp; add_header Cross-Origin-Resource-Policy same-origin; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; diff --git a/.docker/Viewer-v3.x/default.ssl.conf.template b/.docker/Viewer-v3.x/default.ssl.conf.template index 06ed4e505dd..04a36da8b64 100644 --- a/.docker/Viewer-v3.x/default.ssl.conf.template +++ b/.docker/Viewer-v3.x/default.ssl.conf.template @@ -7,8 +7,6 @@ server { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html; - add_header Cross-Origin-Opener-Policy same-origin; - add_header Cross-Origin-Embedder-Policy require-corp; add_header Cross-Origin-Resource-Policy same-origin; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; diff --git a/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts b/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts index d4e39713e9f..f156be60a7c 100644 --- a/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts +++ b/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts @@ -1056,7 +1056,7 @@ class CornerstoneViewportService extends PubSubService implements IViewportServi renderingEngine.resize(isImmediate); renderingEngine.render(); - // Reset the camera for viewports that should reset their camera on resize, + // Reset the camera for all viewports using position presentation to maintain relative size/position // which means only those viewports that have a zoom level of 1. this.beforeResizePositionPresentations.forEach((positionPresentation, viewportId) => { this.setPresentations(viewportId, { diff --git a/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx b/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx index 29d6e4bf8c2..9ed5e1e9167 100644 --- a/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx +++ b/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx @@ -46,7 +46,10 @@ export default function PanelStudyBrowserTracking({ customizationService, } = servicesManager.services; const navigate = useNavigate(); - const [appConfig] = useAppConfig(); + const { mode: studyMode } = customizationService.getCustomization('PanelStudyBrowser.studyMode', { + id: 'default', + mode: 'all', + }); const { t } = useTranslation('Common'); @@ -58,7 +61,7 @@ export default function PanelStudyBrowserTracking({ useViewportGrid(); const [trackedMeasurements, sendTrackedMeasurementsEvent] = useTrackedMeasurements(); - const [activeTabName, setActiveTabName] = useState(appConfig.studyBrowserMode || 'all'); + const [activeTabName, setActiveTabName] = useState(studyMode); const [expandedStudyInstanceUIDs, setExpandedStudyInstanceUIDs] = useState([ ...StudyInstanceUIDs, ]); @@ -120,6 +123,10 @@ export default function PanelStudyBrowserTracking({ const { trackedSeries } = trackedMeasurements.context; + useEffect(() => { + setActiveTabName(studyMode); + }, [studyMode]); + // ~~ studyDisplayList useEffect(() => { // Fetch all studies for the patient in each primary study diff --git a/modes/longitudinal/src/customizations.tsx b/modes/longitudinal/src/customizations.tsx index 649a8bd463c..4b8326b3d02 100644 --- a/modes/longitudinal/src/customizations.tsx +++ b/modes/longitudinal/src/customizations.tsx @@ -6,6 +6,11 @@ export const performCustomizations = customizationService => { id: 'PanelSegmentation.disableEditing', disableEditing: true, }, + // to only show current study in the panel study browser + // { + // id: 'PanelStudyBrowser.studyMode', + // mode: 'primary', + // }, // To disable editing in the MeasurementTable // { // id: 'PanelMeasurement.disableEditing', diff --git a/platform/app/.recipes/Nginx-Dcm4chee-Keycloak/config/nginx.conf b/platform/app/.recipes/Nginx-Dcm4chee-Keycloak/config/nginx.conf index 30b0089c451..79043d92815 100644 --- a/platform/app/.recipes/Nginx-Dcm4chee-Keycloak/config/nginx.conf +++ b/platform/app/.recipes/Nginx-Dcm4chee-Keycloak/config/nginx.conf @@ -221,8 +221,6 @@ http { location / { add_header Cache-Control "no-store, no-cache, must-revalidate"; - add_header 'Cross-Origin-Opener-Policy' 'same-origin' always; - add_header 'Cross-Origin-Embedder-Policy' 'require-corp' always; } location /keycloak/ { diff --git a/platform/app/.recipes/Nginx-Dcm4chee/config/nginx.conf b/platform/app/.recipes/Nginx-Dcm4chee/config/nginx.conf index 8d9ca8f5495..ae7e84ad62b 100644 --- a/platform/app/.recipes/Nginx-Dcm4chee/config/nginx.conf +++ b/platform/app/.recipes/Nginx-Dcm4chee/config/nginx.conf @@ -79,8 +79,6 @@ http { index index.html; try_files $uri $uri/ /index.html; add_header Cache-Control "no-store, no-cache, must-revalidate"; - add_header Cross-Origin-Opener-Policy 'same-origin' always; - add_header Cross-Origin-Embedder-Policy 'require-corp' always; } } } diff --git a/platform/app/.recipes/Nginx-Orthanc-Keycloak/config/nginx.conf b/platform/app/.recipes/Nginx-Orthanc-Keycloak/config/nginx.conf index 1ad9f512dc4..272a478a343 100644 --- a/platform/app/.recipes/Nginx-Orthanc-Keycloak/config/nginx.conf +++ b/platform/app/.recipes/Nginx-Orthanc-Keycloak/config/nginx.conf @@ -191,8 +191,6 @@ http { location / { add_header Cache-Control "no-store, no-cache, must-revalidate"; - add_header 'Cross-Origin-Opener-Policy' 'same-origin' always; - add_header 'Cross-Origin-Embedder-Policy' 'require-corp' always; } location /keycloak/ { diff --git a/platform/app/.recipes/Nginx-Orthanc/config/nginx.conf b/platform/app/.recipes/Nginx-Orthanc/config/nginx.conf index 57946cddfc6..0b559ca737d 100644 --- a/platform/app/.recipes/Nginx-Orthanc/config/nginx.conf +++ b/platform/app/.recipes/Nginx-Orthanc/config/nginx.conf @@ -78,8 +78,6 @@ http { index index.html; try_files $uri $uri/ /index.html; add_header Cache-Control "no-store, no-cache, must-revalidate"; - add_header 'Cross-Origin-Opener-Policy' 'same-origin' always; - add_header 'Cross-Origin-Embedder-Policy' 'require-corp' always; } } diff --git a/platform/app/.recipes/deprecated-recipes/OpenResty-Orthanc-Keycloak/config/nginx.conf b/platform/app/.recipes/deprecated-recipes/OpenResty-Orthanc-Keycloak/config/nginx.conf index 9e496b79d92..98bc01c2a67 100644 --- a/platform/app/.recipes/deprecated-recipes/OpenResty-Orthanc-Keycloak/config/nginx.conf +++ b/platform/app/.recipes/deprecated-recipes/OpenResty-Orthanc-Keycloak/config/nginx.conf @@ -182,8 +182,6 @@ http { index index.html; try_files $uri $uri/ /index.html; add_header Cache-Control "no-store, no-cache, must-revalidate"; - add_header 'Cross-Origin-Opener-Policy' 'same-origin' always; - add_header 'Cross-Origin-Embedder-Policy' 'require-corp' always; } # EXAMPLE: Reverse Proxy, no auth diff --git a/platform/app/.recipes/deprecated-recipes/OpenResty-Orthanc/config/nginx.conf b/platform/app/.recipes/deprecated-recipes/OpenResty-Orthanc/config/nginx.conf index aff59a13027..777e4970364 100644 --- a/platform/app/.recipes/deprecated-recipes/OpenResty-Orthanc/config/nginx.conf +++ b/platform/app/.recipes/deprecated-recipes/OpenResty-Orthanc/config/nginx.conf @@ -118,8 +118,6 @@ http { index index.html; try_files $uri $uri/ /index.html; add_header Cache-Control "no-store, no-cache, must-revalidate"; - add_header 'Cross-Origin-Opener-Policy' 'same-origin' always; - add_header 'Cross-Origin-Embedder-Policy' 'require-corp' always; } # EXAMPLE: Redirect server error pages to the static page /40x.html diff --git a/platform/app/public/config/default.js b/platform/app/public/config/default.js index b18bcd3629c..0e5443099fa 100644 --- a/platform/app/public/config/default.js +++ b/platform/app/public/config/default.js @@ -16,7 +16,6 @@ window.config = { experimentalStudyBrowserSort: false, strictZSpacingForVolumeViewport: true, groupEnabledModesFirst: true, - studyBrowserMode: 'all', maxNumRequests: { interaction: 100, thumbnail: 75, diff --git a/platform/app/public/serve.json b/platform/app/public/serve.json index dbbe3ba6974..8616a96ba9c 100644 --- a/platform/app/public/serve.json +++ b/platform/app/public/serve.json @@ -1,12 +1,3 @@ { - "rewrites": [{ "source": "*", "destination": "index.html" }], - "headers": [ - { - "source": "**/*", - "headers": [ - { "key": "Cross-Origin-Embedder-Policy", "value": "require-corp" }, - { "key": "Cross-Origin-Opener-Policy", "value": "same-origin" } - ] - } - ] + "rewrites": [{ "source": "*", "destination": "index.html" }] } diff --git a/platform/docs/docs/configuration/configurationFiles.md b/platform/docs/docs/configuration/configurationFiles.md index eca94281fa3..db24e8da95f 100644 --- a/platform/docs/docs/configuration/configurationFiles.md +++ b/platform/docs/docs/configuration/configurationFiles.md @@ -131,7 +131,6 @@ Here are a list of some options available: - `omitQuotationForMultipartRequest`: Some servers (e.g., .NET) require the `multipart/related` request to be sent without quotation marks. Defaults to `false`. If your server doesn't require this, then setting this flag to `true` might improve performance (by removing the need for preflight requests). Also note that if auth headers are used, a preflight request is required. - `maxNumRequests`: The maximum number of requests to allow in parallel. It is an object with keys of `interaction`, `thumbnail`, and `prefetch`. You can specify a specific number for each type. -- `studyBrowserMode`: The initial tab to display in the study browser. Defaults to `all`. You can set it to `primary` to display only current study without prior studies initially. - `modesConfiguration`: Allows overriding modes configuration. - Example config: ```js diff --git a/platform/docs/docs/deployment/custom-url-access.md b/platform/docs/docs/deployment/custom-url-access.md index 16844ca3129..b30009ca1aa 100644 --- a/platform/docs/docs/deployment/custom-url-access.md +++ b/platform/docs/docs/deployment/custom-url-access.md @@ -42,15 +42,6 @@ We can use the `npx serve` to serve the build folder. There are two things you n // final serve.json { "rewrites": [{ "source": "*", "destination": "my-awesome-viewer/index.html" }], - "headers": [ - { - "source": "**/*", - "headers": [ - { "key": "Cross-Origin-Embedder-Policy", "value": "require-corp" }, - { "key": "Cross-Origin-Opener-Policy", "value": "same-origin" } - ] - } - ] } ``` diff --git a/platform/docs/docs/migration-guide/3p8-to-3p9/7-UI.md b/platform/docs/docs/migration-guide/3p8-to-3p9/7-UI.md index ad4686516c0..2be4fabf017 100644 --- a/platform/docs/docs/migration-guide/3p8-to-3p9/7-UI.md +++ b/platform/docs/docs/migration-guide/3p8-to-3p9/7-UI.md @@ -149,3 +149,8 @@ All the DropDown and Icons are now in the @ohif/ui-next package. ## ui, ui-next configs We currently have two component libraries that we plan to merge in the future, so we need to maintain both configurations. If your styles aren't applying correctly, ensure you update both `platform/ui-next/tailwind.config.js` and `platform/ui/tailwind.config.js`. + + +### addIcon from ui-next + +if you add custom icons, you may need to add them using a new `addIcon` utility which adds the icon to both `ui` and `ui-next`. From c0ae86e06c5784188db02c2bcd8cef734e2eaed2 Mon Sep 17 00:00:00 2001 From: sedghi Date: Wed, 27 Nov 2024 11:04:48 -0500 Subject: [PATCH 16/20] Refactor DICOM frame handling for consistency and clarity - Simplified frame processing logic in DicomLocalDataSource and DicomWebDataSource to handle both single and multiframe instances uniformly. - Removed redundant checks for multiframe instances, streamlining the addition of image IDs to metadata. - Enhanced the combineFrameInstance utility by improving filtering logic and optimizing vector calculations for image positioning. This update improves code readability and maintainability while ensuring consistent behavior across different DICOM data sources. --- .../default/src/DicomLocalDataSource/index.js | 35 +++++---------- .../default/src/DicomWebDataSource/index.js | 45 ++++++++----------- .../core/src/utils/combineFrameInstance.ts | 28 ++++++------ 3 files changed, 43 insertions(+), 65 deletions(-) diff --git a/extensions/default/src/DicomLocalDataSource/index.js b/extensions/default/src/DicomLocalDataSource/index.js index cec15f92db0..a0ea9fb4ffa 100644 --- a/extensions/default/src/DicomLocalDataSource/index.js +++ b/extensions/default/src/DicomLocalDataSource/index.js @@ -142,9 +142,7 @@ function createDicomLocalApi(dicomLocalConfig) { study.series.forEach(aSeries => { const { SeriesInstanceUID } = aSeries; - const isMultiframe = aSeries.instances[0].NumberOfFrames > 1; - - aSeries.instances.forEach((instance, index) => { + aSeries.instances.forEach(instance => { const { url: imageId, StudyInstanceUID, @@ -153,31 +151,20 @@ function createDicomLocalApi(dicomLocalConfig) { } = instance; instance.imageId = imageId; - if (isMultiframe) { - // we need to break each frame into a separate instance - // and create a new imageId for each frame - for (let i = 0; i < instance.NumberOfFrames; i++) { - const frameNumber = i + 1; - const frameImageId = implementation.getImageIdsForInstance({ - instance, - frame: frameNumber, - }); - - // Add imageId specific mapping to this data as the URL isn't necessarily WADO-URI. - metadataProvider.addImageIdToUIDs(frameImageId, { - StudyInstanceUID, - SeriesInstanceUID, - SOPInstanceUID, - frameNumber, - }); - } - } else { + const numberOfFrames = instance.NumberOfFrames || 1; + // Process all frames consistently, whether single or multiframe + for (let i = 0; i < numberOfFrames; i++) { + const frameNumber = i + 1; + const frameImageId = implementation.getImageIdsForInstance({ + instance, + frame: frameNumber, + }); // Add imageId specific mapping to this data as the URL isn't necessarily WADO-URI. - metadataProvider.addImageIdToUIDs(imageId, { + metadataProvider.addImageIdToUIDs(frameImageId, { StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID, - frameIndex: isMultiframe ? index : 1, + frameNumber: numberOfFrames > 1 ? frameNumber : undefined, }); } }); diff --git a/extensions/default/src/DicomWebDataSource/index.js b/extensions/default/src/DicomWebDataSource/index.js index 6ee9cf0a0ea..29dbdd32474 100644 --- a/extensions/default/src/DicomWebDataSource/index.js +++ b/extensions/default/src/DicomWebDataSource/index.js @@ -434,40 +434,31 @@ function createDicomWebApi(dicomWebConfig, servicesManager) { instance.wadoRoot = dicomWebConfig.wadoRoot; instance.wadoUri = dicomWebConfig.wadoUri; - const imageId = implementation.getImageIdsForInstance({ - instance, - }); + const { StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID } = instance; - const isMultiframe = instance.NumberOfFrames > 1; - - if (isMultiframe) { - // we need to break each frame into a separate instance - for (let i = 0; i < instance.NumberOfFrames; i++) { - const imageId = implementation.getImageIdsForInstance({ - instance, - frame: i + 1, - }); - - metadataProvider.addImageIdToUIDs(imageId, { - StudyInstanceUID, - SeriesInstanceUID: instance.SeriesInstanceUID, - SOPInstanceUID: instance.SOPInstanceUID, - frameNumber: i + 1, - }); - } - } else { - // Adding UIDs to metadataProvider - // Note: storing imageURI in metadataProvider since stack viewports - // will use the same imageURI - metadataProvider.addImageIdToUIDs(imageId, { + const numberOfFrames = instance.NumberOfFrames || 1; + // Process all frames consistently, whether single or multiframe + for (let i = 0; i < numberOfFrames; i++) { + const frameNumber = i + 1; + const frameImageId = implementation.getImageIdsForInstance({ + instance, + frame: frameNumber, + }); + // Add imageId specific mapping to this data as the URL isn't necessarily WADO-URI. + metadataProvider.addImageIdToUIDs(frameImageId, { StudyInstanceUID, - SeriesInstanceUID: instance.SeriesInstanceUID, - SOPInstanceUID: instance.SOPInstanceUID, + SeriesInstanceUID, + SOPInstanceUID, + frameNumber: numberOfFrames > 1 ? frameNumber : undefined, }); } + // Adding imageId to each instance // Todo: This is not the best way I can think of to let external // metadata handlers know about the imageId that is stored in the store + const imageId = implementation.getImageIdsForInstance({ + instance, + }); instance.imageId = imageId; }); diff --git a/platform/core/src/utils/combineFrameInstance.ts b/platform/core/src/utils/combineFrameInstance.ts index 13c7df77e4a..cf70232cf5d 100644 --- a/platform/core/src/utils/combineFrameInstance.ts +++ b/platform/core/src/utils/combineFrameInstance.ts @@ -24,14 +24,14 @@ const combineFrameInstance = (frame, instance) => { ? Object.values(SharedFunctionalGroupsSequence[0]) .filter(Boolean) .map(it => it[0]) - .filter(it => it !== undefined && typeof it === 'object') + .filter(it => typeof it === 'object') : []; const perFrame = PerFrameFunctionalGroupsSequence ? Object.values(PerFrameFunctionalGroupsSequence[frameNumber - 1]) .filter(Boolean) .map(it => it[0]) - .filter(it => it !== undefined && typeof it === 'object') + .filter(it => typeof it === 'object') : []; // this is to fix NM multiframe datasets with position and orientation @@ -45,27 +45,26 @@ const combineFrameInstance = (frame, instance) => { if (!instance.ImagePositionPatient && instance.DetectorInformationSequence) { const imagePositionPatient = instance.DetectorInformationSequence[0].ImagePositionPatient; + const imageOrientationPatient = instance.ImageOrientationPatient; // Calculate the position for the current frame - if (instance.ImageOrientationPatient && SpacingBetweenSlices) { + if (imageOrientationPatient && SpacingBetweenSlices) { const rowOrientation = vec3.fromValues( - instance.ImageOrientationPatient[0], - instance.ImageOrientationPatient[1], - instance.ImageOrientationPatient[2] + imageOrientationPatient[0], + imageOrientationPatient[1], + imageOrientationPatient[2] ); const colOrientation = vec3.fromValues( - instance.ImageOrientationPatient[3], - instance.ImageOrientationPatient[4], - instance.ImageOrientationPatient[5] + imageOrientationPatient[3], + imageOrientationPatient[4], + imageOrientationPatient[5] ); - const normalVector = vec3.create(); - vec3.cross(normalVector, rowOrientation, colOrientation); + const normalVector = vec3.cross(vec3.create(), rowOrientation, colOrientation); - const position = vec3.create(); - vec3.scaleAndAdd( - position, + const position = vec3.scaleAndAdd( + vec3.create(), imagePositionPatient, normalVector, SpacingBetweenSlices * (frameNumber - 1) @@ -74,6 +73,7 @@ const combineFrameInstance = (frame, instance) => { ImagePositionPatientToUse = [position[0], position[1], position[2]]; } } + console.debug('🚀 ~ ImagePositionPatientToUse:', ImagePositionPatientToUse); const newInstance = Object.assign(instance, { frameNumber: frameNumber }); From 1b15c82699c66ea72192536601a4a05a89c70671 Mon Sep 17 00:00:00 2001 From: sedghi Date: Wed, 27 Nov 2024 11:07:08 -0500 Subject: [PATCH 17/20] version --- .../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/measurement-tracking/package.json | 4 +-- platform/app/package.json | 2 +- platform/core/package.json | 2 +- yarn.lock | 32 +++++++++---------- 9 files changed, 33 insertions(+), 33 deletions(-) diff --git a/extensions/cornerstone-dicom-pmap/package.json b/extensions/cornerstone-dicom-pmap/package.json index 0c87d728cfb..8ddc92f9992 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.2.16", - "@cornerstonejs/core": "^2.2.16", + "@cornerstonejs/adapters": "^2.2.20", + "@cornerstonejs/core": "^2.2.20", "@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 29f260012e6..9a2aa3df7a1 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.2.16", - "@cornerstonejs/core": "^2.2.16", + "@cornerstonejs/adapters": "^2.2.20", + "@cornerstonejs/core": "^2.2.20", "@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 2bc7d5b284e..a2ce25aae56 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.2.16", - "@cornerstonejs/core": "^2.2.16", - "@cornerstonejs/tools": "^2.2.16", + "@cornerstonejs/adapters": "^2.2.20", + "@cornerstonejs/core": "^2.2.20", + "@cornerstonejs/tools": "^2.2.20", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone-dynamic-volume/package.json b/extensions/cornerstone-dynamic-volume/package.json index a693e333ce3..9fefe3f0353 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.2.16", - "@cornerstonejs/tools": "^2.2.16", + "@cornerstonejs/core": "^2.2.20", + "@cornerstonejs/tools": "^2.2.20", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index 6dc545d0f8c..757b2c34295 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.2.16", + "@cornerstonejs/dicom-image-loader": "^2.2.20", "@icr/polyseg-wasm": "^0.4.0", "@ohif/core": "3.9.1", "@ohif/ui": "3.9.1", @@ -55,9 +55,9 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^2.2.16", - "@cornerstonejs/core": "^2.2.16", - "@cornerstonejs/tools": "^2.2.16", + "@cornerstonejs/adapters": "^2.2.20", + "@cornerstonejs/core": "^2.2.20", + "@cornerstonejs/tools": "^2.2.20", "@icr/polyseg-wasm": "^0.4.0", "@kitware/vtk.js": "32.1.0", "html2canvas": "^1.4.1", diff --git a/extensions/measurement-tracking/package.json b/extensions/measurement-tracking/package.json index fa9558db6b6..0e79d6ca50d 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.2.16", - "@cornerstonejs/tools": "^2.2.16", + "@cornerstonejs/core": "^2.2.20", + "@cornerstonejs/tools": "^2.2.20", "@ohif/core": "3.9.1", "@ohif/extension-cornerstone-dicom-sr": "3.9.1", "@ohif/extension-default": "3.9.1", diff --git a/platform/app/package.json b/platform/app/package.json index 327c42dd4e4..10f29691ab1 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.2.16", + "@cornerstonejs/dicom-image-loader": "^2.2.20", "@emotion/serialize": "^1.1.3", "@ohif/core": "3.9.1", "@ohif/extension-cornerstone": "3.9.1", diff --git a/platform/core/package.json b/platform/core/package.json index 8cb3fb7037d..0653c2eb3bf 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.2.16", + "@cornerstonejs/dicom-image-loader": "^2.2.20", "@ohif/ui": "3.9.1", "cornerstone-math": "0.1.9", "dicom-parser": "^1.8.21" diff --git a/yarn.lock b/yarn.lock index 6c4636ce7bf..4284680a763 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.2.16": - version "2.2.16" - resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-2.2.16.tgz#92dc015204fd6b10ce11882f431a36afe223ee99" - integrity sha512-atgpKlJCg2b0WKJp+Xevtu8bZB1tQdJuZvbiiXt10u7rpQCjXEpfhNGgVUxzYe7nHtt7wRDu3p49xMk931yQ/g== +"@cornerstonejs/adapters@^2.2.20": + version "2.2.20" + resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-2.2.20.tgz#82fd0775a6ac4e138bda4f3dad412593133b16a9" + integrity sha512-o9c3eTJa7D0wgdkAdg33/BET5+BgM5qjt6Xmd/QSXsghPyJcmvnxIzKS+upt2///u+f8q4aaiL3dgsVzNc6L9g== 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.2.16": - version "2.2.16" - resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-2.2.16.tgz#f39beec7f1b3118bedf6055be67415681edb8527" - integrity sha512-34oOZGkuqX4Il+wPfYaF2VYQwEAUpTffyYAh4d9oWu6AY8cVc5fiJN3qc1cNLJyD5/FZH9efKmC5BWzzDl5s0Q== +"@cornerstonejs/core@^2.2.20": + version "2.2.20" + resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-2.2.20.tgz#a39176c0f832ce2d91f414a2f06010c54c3b99b0" + integrity sha512-1gfARz1tqoAnic1rTGILF9MbwC0YICCNWS+k5vCkf+1ZX3XYepMt3bV3GPPAcTDJ2t6t20Ii1xdKueDn3BSIXw== dependencies: "@kitware/vtk.js" "32.1.1" comlink "^4.4.1" gl-matrix "^3.4.3" -"@cornerstonejs/dicom-image-loader@^2.2.16": - version "2.2.16" - resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-2.2.16.tgz#3d0c55fe75083c52d5701a94d273804313996be2" - integrity sha512-4sQyDrTZZdOK5UFS0QuQIlpzyEAtB/1C1792yrM1AG7xgNCDTCoQDVRzpvLIdRlm0a698AQgmMxbUL0hiv4g9A== +"@cornerstonejs/dicom-image-loader@^2.2.20": + version "2.2.20" + resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-2.2.20.tgz#3d1d448ac2c7010ae29359209f5a6b1790777930" + integrity sha512-pYyYzPbbwOU9tH84WAhBK/+XdJ/Gc3hYfsrsuGk3ufVsdjRywvjGviSOYN4My0w++ezanaSFdPNcghtqdL8etQ== dependencies: "@cornerstonejs/codec-charls" "^1.2.3" "@cornerstonejs/codec-libjpeg-turbo-8bit" "^1.2.2" @@ -2639,10 +2639,10 @@ pako "^2.0.4" uuid "^9.0.0" -"@cornerstonejs/tools@^2.2.16": - version "2.2.16" - resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-2.2.16.tgz#d4f086d7cb4e1ab240edebaeb11b9547c2725ac2" - integrity sha512-ny0nSnzm4xVr5hL/TqTqn0gWL1kJqMLCPXrB6XdHNUSPYolYD/HseMISFIL/uDM86ikvxrMqFOjJu4cn8HRXgQ== +"@cornerstonejs/tools@^2.2.20": + version "2.2.20" + resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-2.2.20.tgz#d2fcbc1b6f585f4094bb5d03d3ae87862e1df092" + integrity sha512-rS7KNfLjwtZ0MzP9eT5EDKBDoEh/Nt5htJxj9b/BvL2W6X/vyF361tWYf/L2dIo0NdR6LBYds3Gdm31y+b7drA== dependencies: "@types/offscreencanvas" "2019.7.3" comlink "^4.4.1" From dae84666a01baa2612ed91eb777ee9b7807df4f3 Mon Sep 17 00:00:00 2001 From: sedghi Date: Wed, 27 Nov 2024 11:24:32 -0500 Subject: [PATCH 18/20] Enhance webpack configuration and documentation - Updated webpack.base.js to set NODE_ENV to 'production' if not already defined, improving environment handling. - Refactored writePluginImportsFile.js for better readability by formatting return statements. - Modified build-for-production.md to clarify directory navigation and removed outdated caution note regarding platform naming. These changes improve the build process and documentation clarity. --- .webpack/webpack.base.js | 3 ++- platform/app/.webpack/writePluginImportsFile.js | 5 ++++- platform/docs/docs/deployment/build-for-production.md | 8 +------- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/.webpack/webpack.base.js b/.webpack/webpack.base.js index 440c26c9587..5368afda737 100644 --- a/.webpack/webpack.base.js +++ b/.webpack/webpack.base.js @@ -58,7 +58,8 @@ if (!process.env.APP_CONFIG) { module.exports = (env, argv, { SRC_DIR, ENTRY }) => { if (!process.env.NODE_ENV) { - throw new Error('process.env.NODE_ENV not set'); + console.log('NODE_ENV not set, setting to production'); + process.env.NODE_ENV = 'production'; } const mode = NODE_ENV === 'production' ? 'production' : 'development'; diff --git a/platform/app/.webpack/writePluginImportsFile.js b/platform/app/.webpack/writePluginImportsFile.js index c913e779eed..66df80a4233 100644 --- a/platform/app/.webpack/writePluginImportsFile.js +++ b/platform/app/.webpack/writePluginImportsFile.js @@ -73,7 +73,10 @@ function getRuntimeLoadModesExtensions(modules) { dynamicLoad.push( ` if( module==="${packageName}") {`, ` const imported = await window.browserImportFunction('${module.importPath}');`, - ' return ' + (module.globalName ? `window["${module.globalName}"];` : `imported["${module.importName || 'default'}"];`), + ' return ' + + (module.globalName + ? `window["${module.globalName}"];` + : `imported["${module.importName || 'default'}"];`), ' }' ); return; diff --git a/platform/docs/docs/deployment/build-for-production.md b/platform/docs/docs/deployment/build-for-production.md index d1dd508bd9c..dbd89a8a906 100644 --- a/platform/docs/docs/deployment/build-for-production.md +++ b/platform/docs/docs/deployment/build-for-production.md @@ -102,18 +102,12 @@ directory: yarn global add http-server # Change the directory to the platform/app +cd platform/app # Serve the files in our current directory npx serve ./dist -c ../public/serve.json ``` -:::caution -In the video below notice that there is `platform/viewer` which has been renamed to `platform/app` in the latest version -::: - -
- -
### Automating Builds and Deployments From a5b7204e934d32071456456c6beb51cee2aadf08 Mon Sep 17 00:00:00 2001 From: sedghi Date: Wed, 27 Nov 2024 11:37:56 -0500 Subject: [PATCH 19/20] Refactor webpack configuration and improve documentation - Removed automatic setting of NODE_ENV to 'production' in webpack.base.js, allowing for more explicit environment management. - Updated babel-loader configuration to conditionally include 'react-refresh/babel' plugin based on the build mode. - Cleaned up writePluginImportsFile.js by removing unnecessary console warnings for better clarity. - Enhanced documentation in custom-url-access.md to emphasize the need for updating the public/serve.json file for new routerBasename. These changes streamline the build process and enhance documentation clarity. --- .webpack/webpack.base.js | 7 +------ platform/app/.webpack/writePluginImportsFile.js | 6 ------ platform/docs/docs/deployment/custom-url-access.md | 2 +- 3 files changed, 2 insertions(+), 13 deletions(-) diff --git a/.webpack/webpack.base.js b/.webpack/webpack.base.js index 5368afda737..025c8bd13bf 100644 --- a/.webpack/webpack.base.js +++ b/.webpack/webpack.base.js @@ -57,11 +57,6 @@ if (!process.env.APP_CONFIG) { } module.exports = (env, argv, { SRC_DIR, ENTRY }) => { - if (!process.env.NODE_ENV) { - console.log('NODE_ENV not set, setting to production'); - process.env.NODE_ENV = 'production'; - } - const mode = NODE_ENV === 'production' ? 'production' : 'development'; const isProdBuild = NODE_ENV === 'production'; const isQuickBuild = QUICK_BUILD === 'true'; @@ -109,7 +104,7 @@ module.exports = (env, argv, { SRC_DIR, ENTRY }) => { exclude: /node_modules/, loader: 'babel-loader', options: { - plugins: ['react-refresh/babel'], + plugins: isProdBuild ? [] : ['react-refresh/babel'], }, }, ]), diff --git a/platform/app/.webpack/writePluginImportsFile.js b/platform/app/.webpack/writePluginImportsFile.js index 66df80a4233..29accd91395 100644 --- a/platform/app/.webpack/writePluginImportsFile.js +++ b/platform/app/.webpack/writePluginImportsFile.js @@ -204,12 +204,6 @@ function writePluginImportsFile(SRC_DIR, DIST_DIR) { 'dist' ); - console.warn('copy plugins', [ - ...copyPluginPublicToDistBuild, - ...copyPluginPublicToDistLink, - ...copyPluginDistToDistBuild, - ...copyPluginDistToDistLink, - ]); return [ ...copyPluginPublicToDistBuild, ...copyPluginPublicToDistLink, diff --git a/platform/docs/docs/deployment/custom-url-access.md b/platform/docs/docs/deployment/custom-url-access.md index b30009ca1aa..dfb1ddd6144 100644 --- a/platform/docs/docs/deployment/custom-url-access.md +++ b/platform/docs/docs/deployment/custom-url-access.md @@ -35,7 +35,7 @@ PUBLIC_URL=/my-awesome-viewer/ APP_CONFIG=config/default.js yarn build ``` We can use the `npx serve` to serve the build folder. There are two things you need to consider however, -1. You need to change the public/serve.json file to reflect the new routerBasename in the destination (see the example below) +1. You need to change the `public/serve.json` file to reflect the new routerBasename in the destination (see the example below) ```json From 543aa137dc691f557ee5098f035c99f3cbc687ed Mon Sep 17 00:00:00 2001 From: sedghi Date: Wed, 27 Nov 2024 13:00:47 -0500 Subject: [PATCH 20/20] update docs --- .../docs/docs/assets/img/iframe-basic.png | Bin 145099 -> 314484 bytes platform/docs/docs/deployment/cors.md | 171 +----------------- platform/docs/docs/deployment/docker.md | 22 +-- platform/docs/docs/deployment/iframe.md | 120 +----------- platform/docs/docs/faq/technical.md | 12 +- 5 files changed, 16 insertions(+), 309 deletions(-) diff --git a/platform/docs/docs/assets/img/iframe-basic.png b/platform/docs/docs/assets/img/iframe-basic.png index 25ea20708bf58092bfcaf7e2de21453bf7544a8d..5934a9422f208b6e96beef7f24fa2d726b0a9d41 100644 GIT binary patch literal 314484 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%0D{FPv>W)c>15Q_}+|dqfbl3{Ztr0mDSJC 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 !Dji)B|J&LK@1D#b% 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 N!G2@i{9le={5OPA(+&Ut diff --git a/platform/docs/docs/deployment/cors.md b/platform/docs/docs/deployment/cors.md index 135c9f96166..b55e72f7be9 100644 --- a/platform/docs/docs/deployment/cors.md +++ b/platform/docs/docs/deployment/cors.md @@ -1,5 +1,5 @@ --- -sidebar_position: 7 +sidebar_position: 8 --- # Cross-Origin Information for OHIF @@ -7,42 +7,10 @@ sidebar_position: 7 This document describes various security configurations, settings and environments/contexts needed to fully leverage OHIF’s capabilities. One may need some configurations while others might need ALL of them - it all depends on the environment OHIF is expected to run in. In particular, three of OHIF’s features depend on these configurations: -- [OHIF’s use of SharedArrayBuffer](#sharedarraybuffer) - [Embedding OHIF in an iframe](#embedding-ohif-in-an-iframe) - [XMLHttpRequests to fetch data from data sources](#cors-in-ohif) - -## SharedArrayBuffer -A `SharedArrayBuffer` is a JavaScript object that is similar to an `ArrayBuffer` but can be shared between web workers and the window that spawned them via the `postMessage` API. See [SharedArrayBuffer in MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) for more information. - -:::tip -To turn off Shared Array Buffer completely, just set `useSharedArrayBuffer` to `false` in the [OHIF configuration](../configuration/configurationFiles.md). But keep in mind that you will not get the performance boost that Shared Array Buffer offers for decoding and rendering big volumes where web workers write to the same memory space. -::: - -### Security Requirements - -In order to use `SharedArrayBuffer` objects in the browser, the following security conditions must be met: - -- The page must be served in a [secure context](#secure-context). -- The page must have [cross-origin isolation](#cross-origin-isolation) enabled. - -### `SharedArrayBuffer` in OHIF - -OHIF uses `SharedArrayBuffer` in its volume loader (from Cornerstone3D). It comes with the benefit of improved performance and optimization at the cost of some configuration to use it. - -As such, if the following popup is shown when launching OHIF then the OHIF server will have to be configured to permit the loading of volumetric images and data. Note that stack viewports are still available and functional even when this error is present. - -![OHIF in non-secure context](../assets/img/ohif-non-secure-context.png) - -To better determine which (if not all) of the [security requirements](#security-requirements) are lacking, have a look at the browser console. - -Output in the console similar to the following indicates that OHIF is not running in a [secure context](#secure-context). - -![browser console for non-secure context](../assets/img/browser-console-non-secure-context.png) - -Absence of the above error in the console together with the presence of the Cross Origin Isolation popup warning, likely indicates that either or both of the [COOP](#coop---cross-origin-opener-policy) and/or [COEP](#coep---cross-origin-embedder-policy) headers are not set for OHIF. - ## Embedding OHIF in an iframe As described [here](./iframe.md), there are cases where OHIF will be embedded in an iframe. The following links provide more information for setting up and configuring OHIF to work in an iframe: @@ -64,9 +32,6 @@ URLs that are NOT local must be delivered over `https://` or `wss://` (i.e. TLS) A page embedded in an iframe is considered secure if it itself and every one of its embedding ancestors are delivered securely. Otherwise it is deemed insecure. -### Why does OHIF require a secure context? - -Beyond all of the inherent benefits of a secure connection, OHIF requires a secure context so that it can utilize [SharedArrayBuffer](#sharedarraybuffer) objects for volume rendering. ### Configuring/setting up a secure context @@ -143,91 +108,8 @@ add_header 'Access-Control-Allow-Origin' '*' always; ``` ::: -## COOP - Cross-Origin Opener Policy - -The COOP HTTP response header restricts the global, root document of the page from being referenced and accessed by another cross-origin document that might open the page in a window. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Opener-Policy) for more information. - -### Header Values Pertinent to OHIF (see [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Opener-Policy#syntax) for more information) - -|Value|Description| -|-----|-----------| -|same-origin|Restricts the document to be referenced by openers of the same origin only.| - -### COOP in OHIF - -COOP is required for [SharedArrayBuffer](#sharedarraybuffer) usage in OHIF. See also [Troubleshooting Cross-origin Isolation in OHIF](#troubleshooting-cross-origin-isolation-in-ohif). - -## COEP - Cross-Origin Embedder Policy - -The COEP HTTP response header restricts cross-origin documents from being embedded into a document (e.g. in an iframe, video, image, etc). See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Embedder-Policy) for more information. - -### Header Values Pertinent to OHIF (see [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Embedder-Policy#syntax) for more information) - -|Value|Description| -|-----|-----------| -|require-corp|Permits the document to load either of the following embedded resources:
  • Those from the same origin
  • Cross-origin resources embedded by a DOM element that has the appropriate [crossorigin attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin) set
  • Cross-origin resources with the appropriate [CORP response header](#corp---cross-origin-resource-policy)
-|credentialless|See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Embedder-Policy#syntax) for more information| -### COEP in OHIF -COEP is required for [SharedArrayBuffer](#sharedarraybuffer) usage in OHIF. See also [Troubleshooting Cross-origin Isolation in OHIF](#troubleshooting-cross-origin-isolation-in-ohif). - -## Cross-origin Isolation - -Cross-origin isolation is [enabled](https://web.dev/cross-origin-isolation-guide/#enable-cross-origin-isolation) for a web page when the following COOP and COEP headers are set. -- [COOP](#coop---cross-origin-opener-policy) with `same-origin` -- [COEP](#coep---cross-origin-embedder-policy) with `require-corp` or `credentialless` - -### iframe - -An iframe is considered to have cross-origin isolation enabled if it itself has the appropriate COOP and COEP headers set as well as every one of its embedding ancestors. - -### Troubleshooting Cross-origin Isolation in OHIF - -The [SharedArrayBuffer in OHIF](#sharedarraybuffer-in-ohif) section describes how to determine if there are problems with cross-origin isolation in OHIF. If it is determined that COOP and/or COEP is indeed an issue, then the COOP and COEP headers must be set for OHIF. How to accomplish this varies per server or service that is hosting OHIF. The following are just a few examples. - -:::tip -In the default dev environment, the following can be set in the webpack.pwa.js file… - -```javascript -devServer: { - headers: { - "Cross-Origin-Opener-Policy": "same-origin", - "Cross-Origin-Embedder-Policy": "require-corp" - } -} -``` -::: - -:::tip -If deploying OHIF using Netlify, the Netlify configuration [file](https://docs.netlify.com/configure-builds/file-based-configuration/) can be used to configure the headers as such… - -``` -[[headers]] - # Define which paths this specific [[headers]] block will cover. - for = "/*" - - [headers.values] - Cross-Origin-Opener-Policy = "same-origin" - Cross-Origin-Embedder-Policy = "require-corp" -``` -::: - -:::tip -If OHIF is served behind nginx, then the headers can be set in the nginx.conf file as follows. The [template nginx configuration file](https://github.com/OHIF/Viewers/blob/master/.docker/Viewer-v3.x/default.conf.template) for creating a [OHIF Docker image](./docker.md#building-the-docker-image) has an example of this too. -```nginx -server { - location / { - add_header Cross-Origin-Opener-Policy same-origin; - add_header Cross-Origin-Embedder-Policy require-corp; - } -} -``` -::: - -## CORP - Cross-Origin Resource Policy - -The CORP HTTP response header indicates which origins can read and use a resource. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cross-Origin_Resource_Policy) for more information. ### Header Values (see [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cross-Origin_Resource_Policy#usage) for more information) @@ -239,12 +121,6 @@ The CORP HTTP response header indicates which origins can read and use a resourc ### OHIF and CORP -There are two scenarios where the CORP header is relevant to OHIF: - -- [PDF from a Cross Origin DICOMweb Data Source](#pdf-from-a-cross-origin-dicomweb-data-source) -- [OHIF as a Cross-origin Resource in an iframe](#ohif-as-a-cross-origin-resource-in-an-iframe) - -Both these scenarios stem from the fact that OHIF has to be served with the [COEP](#coep---cross-origin-embedder-policy) header to support [SharedArrayBuffer](#sharedarraybuffer). #### PDF from a Cross Origin DICOMweb Data Source @@ -266,48 +142,3 @@ If the dcm4chee server and the OHIF server are hosted on the same site, then the add_header 'Cross-Origin-Resource-Policy' 'same-site' always; ``` ::: - -#### OHIF as a Cross-origin Resource in an iframe - -There are cases where [OHIF is embedded in an iframe](./iframe.md) and the embedding page is from a different origin. Again due to the [security requirements for SharedArrayBuffer](#security-requirements), [both OHIF and the embedding page](#iframe) must have the appropriate COEP header. In this scenario, OHIF is the cross-origin resource and since the `