From d21aba56f1e0a8730088d89a4dfde8358d978a60 Mon Sep 17 00:00:00 2001 From: Alireza Date: Wed, 3 Aug 2022 14:41:31 -0400 Subject: [PATCH] fix: wadouri metadata was not using scaling parameters properly (#159) * fix: scaling for the wadouri scheme * fix: isPrescaled on the stackViewport * fix: preScale option in image loaders * fix: window level for volumeviewport --- common/reviews/api/core.api.md | 37 +- .../api/streaming-image-volume-loader.api.md | 29 +- common/reviews/api/tools.api.md | 28 +- .../core/src/RenderingEngine/StackViewport.ts | 72 +-- .../src/RenderingEngine/VolumeViewport.ts | 11 +- .../helpers/setDefaultVolumeVOI.ts | 1 + .../src/requestPool/imageLoadPoolManager.ts | 2 +- .../src/requestPool/requestPoolManager.ts | 4 +- packages/core/src/types/CPUIImageData.ts | 18 +- packages/core/src/types/IImage.ts | 16 + packages/core/src/types/IImageData.ts | 18 +- packages/core/src/types/IStackViewport.ts | 4 - .../src/utilities/getScalingParameters.ts | 39 -- packages/core/src/utilities/index.ts | 2 - .../core/src/utilities/loadImageToCanvas.ts | 34 +- packages/docs/package.json | 2 +- .../package.json | 4 +- .../src/StreamingImageVolume.ts | 4 + packages/tools/src/tools/WindowLevelTool.ts | 3 +- .../utilities/stackPrefetch/stackPrefetch.ts | 10 +- yarn.lock | 428 ++++-------------- 21 files changed, 264 insertions(+), 502 deletions(-) delete mode 100644 packages/core/src/utilities/getScalingParameters.ts diff --git a/common/reviews/api/core.api.md b/common/reviews/api/core.api.md index 7a4167945..7f0571e46 100644 --- a/common/reviews/api/core.api.md +++ b/common/reviews/api/core.api.md @@ -346,6 +346,15 @@ type CPUIImageData = { scalarData: number[]; scaling: Scaling; hasPixelSpacing?: boolean; + preScale?: { + scaled?: boolean; + scalingParameters?: { + modality?: string; + rescaleSlope?: number; + rescaleIntercept?: number; + suvbw?: number; + }; + }; }; // @public (undocumented) @@ -562,9 +571,6 @@ export function getRenderingEngines(): IRenderingEngine[] | undefined; // @public (undocumented) function getRuntimeId(context?: unknown, separator?: string, max?: number): string; -// @public (undocumented) -function getScalingParameters(imageId: string): ScalingParameters | undefined; - // @public (undocumented) export function getShouldUseCPURendering(): boolean; @@ -723,6 +729,16 @@ interface IImage { // (undocumented) numComps: number; // (undocumented) + preScale?: { + scaled: boolean; + scalingParameters: { + modality?: string; + rescaleSlope?: number; + rescaleIntercept?: number; + suvbw?: number; + }; + }; + // (undocumented) render?: (enabledElement: CPUFallbackEnabledElement, invalidated: boolean) => unknown; // (undocumented) rgba: boolean; @@ -783,6 +799,16 @@ interface IImageData { // (undocumented) origin: Point3; // (undocumented) + preScale?: { + scaled?: boolean; + scalingParameters?: { + modality?: string; + rescaleSlope?: number; + rescaleIntercept?: number; + suvbw?: number; + }; + }; + // (undocumented) scalarData: Float32Array; // (undocumented) scaling?: Scaling; @@ -1139,8 +1165,6 @@ interface IStackViewport extends IViewport { // (undocumented) hasImageURI: (imageURI: string) => boolean; // (undocumented) - isImagePreScaled(imageId: string): boolean; - // (undocumented) modality: string; // (undocumented) resetCamera(resetPan?: boolean, resetZoom?: boolean): boolean; @@ -1689,8 +1713,6 @@ export class StackViewport extends Viewport implements IStackViewport { // (undocumented) hasImageURI: (imageURI: string) => boolean; // (undocumented) - isImagePreScaled(imageId: string): boolean; - // (undocumented) modality: string; // (undocumented) removeAllActors(): void; @@ -1877,7 +1899,6 @@ declare namespace utilities { getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, - getScalingParameters, isImageActor } } diff --git a/common/reviews/api/streaming-image-volume-loader.api.md b/common/reviews/api/streaming-image-volume-loader.api.md index c45a77151..2e64386e6 100644 --- a/common/reviews/api/streaming-image-volume-loader.api.md +++ b/common/reviews/api/streaming-image-volume-loader.api.md @@ -312,6 +312,15 @@ type CPUIImageData = { scalarData: number[]; scaling: Scaling; hasPixelSpacing?: boolean; + preScale?: { + scaled?: boolean; + scalingParameters?: { + modality?: string; + rescaleSlope?: number; + rescaleIntercept?: number; + suvbw?: number; + }; + }; }; // @public (undocumented) @@ -549,6 +558,15 @@ interface IImage { minPixelValue: number; modalityLUT?: CPUFallbackLUT; numComps: number; + preScale?: { + scaled: boolean; + scalingParameters: { + modality?: string; + rescaleSlope?: number; + rescaleIntercept?: number; + suvbw?: number; + }; + }; render?: ( enabledElement: CPUFallbackEnabledElement, invalidated: boolean @@ -593,6 +611,15 @@ interface IImageData { imageData: vtkImageData; metadata: { Modality: string }; origin: Point3; + preScale?: { + scaled?: boolean; + scalingParameters?: { + modality?: string; + rescaleSlope?: number; + rescaleIntercept?: number; + suvbw?: number; + }; + }; scalarData: Float32Array; scaling?: Scaling; spacing: Point3; @@ -815,7 +842,6 @@ interface IStackViewport extends IViewport { getRenderer(): any; hasImageId: (imageId: string) => boolean; hasImageURI: (imageURI: string) => boolean; - isImagePreScaled(imageId: string): boolean; // (undocumented) modality: string; resetCamera(resetPan?: boolean, resetZoom?: boolean): boolean; @@ -1156,6 +1182,7 @@ export class StreamingImageVolume extends ImageVolume { type: any; }; preScale: { + enabled: boolean; scalingParameters: Types.ScalingParameters; }; }; diff --git a/common/reviews/api/tools.api.md b/common/reviews/api/tools.api.md index a7b3d6543..b1848ccf8 100644 --- a/common/reviews/api/tools.api.md +++ b/common/reviews/api/tools.api.md @@ -961,6 +961,15 @@ type CPUIImageData = { scalarData: number[]; scaling: Scaling; hasPixelSpacing?: boolean; + preScale?: { + scaled?: boolean; + scalingParameters?: { + modality?: string; + rescaleSlope?: number; + rescaleIntercept?: number; + suvbw?: number; + }; + }; }; // @public (undocumented) @@ -1867,6 +1876,15 @@ interface IImage { minPixelValue: number; modalityLUT?: CPUFallbackLUT; numComps: number; + preScale?: { + scaled: boolean; + scalingParameters: { + modality?: string; + rescaleSlope?: number; + rescaleIntercept?: number; + suvbw?: number; + }; + }; render?: ( enabledElement: CPUFallbackEnabledElement, invalidated: boolean @@ -1911,6 +1929,15 @@ interface IImageData { imageData: vtkImageData; metadata: { Modality: string }; origin: Point3; + preScale?: { + scaled?: boolean; + scalingParameters?: { + modality?: string; + rescaleSlope?: number; + rescaleIntercept?: number; + suvbw?: number; + }; + }; scalarData: Float32Array; scaling?: Scaling; spacing: Point3; @@ -2172,7 +2199,6 @@ interface IStackViewport extends IViewport { getRenderer(): any; hasImageId: (imageId: string) => boolean; hasImageURI: (imageURI: string) => boolean; - isImagePreScaled(imageId: string): boolean; // (undocumented) modality: string; resetCamera(resetPan?: boolean, resetZoom?: boolean): boolean; diff --git a/packages/core/src/RenderingEngine/StackViewport.ts b/packages/core/src/RenderingEngine/StackViewport.ts index e39308ac5..ac222361a 100644 --- a/packages/core/src/RenderingEngine/StackViewport.ts +++ b/packages/core/src/RenderingEngine/StackViewport.ts @@ -25,7 +25,6 @@ import { VOIRange, ICamera, IImage, - ScalingParameters, IImageData, CPUIImageData, PTScaling, @@ -61,7 +60,6 @@ import { StackViewportScrollEventDetail, VoiModifiedEventDetail, } from '../types/EventTypes'; -import getScalingParameters from '../utilities/getScalingParameters'; import cache from '../cache'; import correctShift from './helpers/cpuFallback/rendering/correctShift'; import { ImageActor } from '../types/IActor'; @@ -150,11 +148,11 @@ class StackViewport extends Viewport implements IStackViewport { private useCPURendering: boolean; private cpuImagePixelData: number[]; private cpuRenderingInvalidated: boolean; + private csImage: IImage; // TODO: These should not be here and will be nuked public modality: string; // this is needed for tools public scaling: Scaling; - private scalingCache: Record = {}; /** * Constructor for the StackViewport class @@ -276,11 +274,14 @@ class StackViewport extends Viewport implements IStackViewport { metadata: { Modality: this.modality }, scaling: this.scaling, hasPixelSpacing: this.hasPixelSpacing, + preScale: { + ...this.csImage.preScale, + }, }; } private getImageDataCPU(): CPUIImageData | undefined { - const { metadata } = this._cpuFallbackEnabledElement; + const { metadata, image } = this._cpuFallbackEnabledElement; const spacing = metadata.spacing; @@ -314,6 +315,9 @@ class StackViewport extends Viewport implements IStackViewport { }, scalarData: this.cpuImagePixelData, hasPixelSpacing: this.hasPixelSpacing, + preScale: { + ...this.csImage.preScale, + }, }; } @@ -1253,7 +1257,6 @@ class StackViewport extends Viewport implements IStackViewport { this.currentImageIdIndex = currentImageIdIndex; this.targetImageIdIndex = currentImageIdIndex; this.stackInvalidated = true; - this.scalingCache = {}; this.rotationCache = 0; this.flipVertical = false; this.flipHorizontal = false; @@ -1407,6 +1410,8 @@ class StackViewport extends Viewport implements IStackViewport { return; } + this.csImage = image; + const eventDetail: EventTypes.StackNewImageEventDetail = { image, imageId, @@ -1418,7 +1423,8 @@ class StackViewport extends Viewport implements IStackViewport { triggerEvent(this.element, Events.STACK_NEW_IMAGE, eventDetail); const metadata = this._getImageDataMetadata(image) as ImageDataMetaData; - image.isPreScaled = this.isImagePreScaled(imageId); + + image.isPreScaled = image.preScale?.scaled; const viewport = getDefaultViewport( this.canvas, @@ -1497,12 +1503,6 @@ class StackViewport extends Viewport implements IStackViewport { ); } - const scalingParameters = getScalingParameters(imageId); - - if (imageId) { - this.scalingCache[imageId] = scalingParameters; - } - // Todo: Note that eventually all viewport data is converted into Float32Array, // we use it here for the purpose of scaling for now. const type = 'Float32Array'; @@ -1517,7 +1517,7 @@ class StackViewport extends Viewport implements IStackViewport { length: null, }, preScale: { - scalingParameters, + enabled: true, }, useRGBA: false, }; @@ -1537,7 +1537,6 @@ class StackViewport extends Viewport implements IStackViewport { function successCallback(image, imageIdIndex, imageId) { // Todo: trigger an event to allow applications to hook into END of loading state // Currently we use loadHandlerManagers for this - // Perform this check after the image has finished loading // in case the user has already scrolled away to another image. // In that case, do not render this image. @@ -1545,6 +1544,9 @@ class StackViewport extends Viewport implements IStackViewport { return; } + // cornerstone image + this.csImage = image; + const eventDetail: EventTypes.StackNewImageEventDetail = { image, imageId, @@ -1587,12 +1589,6 @@ class StackViewport extends Viewport implements IStackViewport { ); } - const scalingParameters = getScalingParameters(imageId); - - if (scalingParameters) { - this.scalingCache[imageId] = scalingParameters; - } - // Todo: Note that eventually all viewport data is converted into Float32Array, // we use it here for the purpose of scaling for now. const type = 'Float32Array'; @@ -1608,7 +1604,7 @@ class StackViewport extends Viewport implements IStackViewport { length: null, }, preScale: { - scalingParameters, + enabled: true, }, useRGBA: false, }; @@ -1630,36 +1626,6 @@ class StackViewport extends Viewport implements IStackViewport { }); } - /** - * Checks if the requests has been sent to the imageLoadPoolManager - * with preScaling options; therefore, the images have been pre-scaled. - * Note: this is more isTheImageThatWasRequestedGonnaBePreScaled, but since - * we are using the same image metadata for adding request options and later - * checking them, we can assume if the scalingParameters are present, the image is pre-scaled - * @param imageId - imageId of the image - * @returns boolean - */ - public isImagePreScaled(imageId: string): boolean { - const scalingParameters = this.scalingCache[imageId]; - - if (!scalingParameters) { - return false; - } - - const { modality, rescaleIntercept, rescaleSlope, suvbw } = - scalingParameters; - - if (rescaleSlope !== undefined && rescaleIntercept !== undefined) { - if (modality === 'PT') { - return suvbw !== undefined; - } - - return true; - } - - return false; - } - /** * It updates the volume actor with the retrieved cornerstone image. * It first checks if the new image has the same dimensions, spacings, and @@ -1783,7 +1749,9 @@ class StackViewport extends Viewport implements IStackViewport { : undefined; // check if the image is already prescaled - const isPreScaled = this.isImagePreScaled(image.imageId); + const isPreScaled = + this.csImage.isPreScaled || this.csImage.preScale?.scaled; + if (imagePixelModule.modality === 'PT' && isPreScaled) { voiRange = { lower: 0, upper: 5 }; } diff --git a/packages/core/src/RenderingEngine/VolumeViewport.ts b/packages/core/src/RenderingEngine/VolumeViewport.ts index 4ef273b8f..3d3f635e7 100644 --- a/packages/core/src/RenderingEngine/VolumeViewport.ts +++ b/packages/core/src/RenderingEngine/VolumeViewport.ts @@ -153,6 +153,10 @@ class VolumeViewport extends Viewport implements IVolumeViewport { volumeId?: string, suppressEvents = false ): void { + if (volumeId !== undefined && !this.getActor(volumeId)) { + return; + } + const actorEntries = this.getActors(); if (!actorEntries.length) { @@ -169,7 +173,7 @@ class VolumeViewport extends Viewport implements IVolumeViewport { volumeActor = actorEntry?.actor as vtkVolume; } - // set it for the first volume (if there are more than one - fusion) + // // set it for the first volume (if there are more than one - fusion) if (!volumeActor) { volumeActor = actorEntries[0].actor as vtkVolume; volumeId = actorEntries[0].uid; @@ -181,10 +185,7 @@ class VolumeViewport extends Viewport implements IVolumeViewport { // Todo: later when we have more properties, refactor the setVoiRange code below const { lower, upper } = voiRange; - volumeActor - .getProperty() - .getRGBTransferFunction(0) - .setMappingRange(lower, upper); + volumeActor.getProperty().getRGBTransferFunction(0).setRange(lower, upper); if (!suppressEvents) { const eventDetail: VoiModifiedEventDetail = { diff --git a/packages/core/src/RenderingEngine/helpers/setDefaultVolumeVOI.ts b/packages/core/src/RenderingEngine/helpers/setDefaultVolumeVOI.ts index ccc8b491a..fe5592e6a 100644 --- a/packages/core/src/RenderingEngine/helpers/setDefaultVolumeVOI.ts +++ b/packages/core/src/RenderingEngine/helpers/setDefaultVolumeVOI.ts @@ -170,6 +170,7 @@ async function getVOIFromMinMax(imageVolume: IImageVolume): Promise { priority: PRIORITY, requestType: REQUEST_TYPE, preScale: { + enabled: true, scalingParameters: scalingParametersToUse, }, }; diff --git a/packages/core/src/requestPool/imageLoadPoolManager.ts b/packages/core/src/requestPool/imageLoadPoolManager.ts index f5752c64c..bf5f6906c 100644 --- a/packages/core/src/requestPool/imageLoadPoolManager.ts +++ b/packages/core/src/requestPool/imageLoadPoolManager.ts @@ -19,7 +19,7 @@ import { RequestPoolManager } from './requestPoolManager'; * length: null, * }, * preScale: { - * scalingParameters, + * enabled: true, * }, * } * diff --git a/packages/core/src/requestPool/requestPoolManager.ts b/packages/core/src/requestPool/requestPoolManager.ts index 885650104..f42c98b17 100644 --- a/packages/core/src/requestPool/requestPoolManager.ts +++ b/packages/core/src/requestPool/requestPoolManager.ts @@ -53,8 +53,8 @@ type RequestPool = { * length: null, * }, * preScale: { - * scalingParameters, - * }, + * enabled: true, + * }, * } * * imageLoadPoolManager.addRequest( diff --git a/packages/core/src/types/CPUIImageData.ts b/packages/core/src/types/CPUIImageData.ts index 7f16f8b16..cac9850b9 100644 --- a/packages/core/src/types/CPUIImageData.ts +++ b/packages/core/src/types/CPUIImageData.ts @@ -1,4 +1,4 @@ -import { Point3, Scaling } from '../types'; +import { Point3, Scaling, IImage } from '../types'; type CPUImageData = { worldToIndex?: (point: Point3) => Point3; @@ -24,6 +24,22 @@ type CPUIImageData = { scaling: Scaling; /** whether the image has pixel spacing and it is not undefined */ hasPixelSpacing?: boolean; + /** preScale object */ + preScale?: { + /** boolean flag to indicate whether the image has been scaled */ + scaled?: boolean; + /** scaling parameters */ + scalingParameters?: { + /** modality of the image */ + modality?: string; + /** rescale slop */ + rescaleSlope?: number; + /** rescale intercept */ + rescaleIntercept?: number; + /** PT suvbw */ + suvbw?: number; + }; + }; }; export default CPUIImageData; diff --git a/packages/core/src/types/IImage.ts b/packages/core/src/types/IImage.ts index a684851dc..666f355c9 100644 --- a/packages/core/src/types/IImage.ts +++ b/packages/core/src/types/IImage.ts @@ -11,6 +11,22 @@ interface IImage { sharedCacheKey?: string; /** Whether the image is Pre-scaled during loading */ isPreScaled?: boolean; + /** preScale object */ + preScale?: { + /** boolean flag to indicate whether the image has been scaled */ + scaled: boolean; + /** scaling parameters */ + scalingParameters: { + /** modality of the image */ + modality?: string; + /** rescale slop */ + rescaleSlope?: number; + /** rescale intercept */ + rescaleIntercept?: number; + /** PT suvbw */ + suvbw?: number; + }; + }; /** minimum pixel value of the image */ minPixelValue: number; /* maximum pixel value of the image */ diff --git a/packages/core/src/types/IImageData.ts b/packages/core/src/types/IImageData.ts index d18807e8c..a69d5db56 100644 --- a/packages/core/src/types/IImageData.ts +++ b/packages/core/src/types/IImageData.ts @@ -1,5 +1,5 @@ import type { vtkImageData } from '@kitware/vtk.js/Common/DataModel/ImageData'; -import { Point3, Scaling } from '../types'; +import { Point3, Scaling, IImage } from '../types'; /** * IImageData of an image, which stores actual scalarData and metaData about the image. @@ -24,6 +24,22 @@ interface IImageData { scaling?: Scaling; /** whether the image has pixel spacing and it is not undefined */ hasPixelSpacing?: boolean; + /** preScale object */ + preScale?: { + /** boolean flag to indicate whether the image has been scaled */ + scaled?: boolean; + /** scaling parameters */ + scalingParameters?: { + /** modality of the image */ + modality?: string; + /** rescale slop */ + rescaleSlope?: number; + /** rescale intercept */ + rescaleIntercept?: number; + /** PT suvbw */ + suvbw?: number; + }; + }; } export default IImageData; diff --git a/packages/core/src/types/IStackViewport.ts b/packages/core/src/types/IStackViewport.ts index 277652056..8060ac487 100644 --- a/packages/core/src/types/IStackViewport.ts +++ b/packages/core/src/types/IStackViewport.ts @@ -134,8 +134,4 @@ export default interface IStackViewport extends IViewport { * It sets the colormap to the default colormap. */ unsetColormap(): void; - /** - * Checks if the imageId is preScaled when loaded - */ - isImagePreScaled(imageId: string): boolean; } diff --git a/packages/core/src/utilities/getScalingParameters.ts b/packages/core/src/utilities/getScalingParameters.ts deleted file mode 100644 index 9261ccc8f..000000000 --- a/packages/core/src/utilities/getScalingParameters.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { ScalingParameters } from '../types'; -import * as metaData from '../metaData'; - -/** - * It returns the scaling parameters for the image with the given imageId. This can be - * used to get passed (as an option) to the imageLoader in order to apply scaling to the image inside - * the imageLoader. - * @param imageId - The imageId of the image - * @returns ScalingParameters - */ -export default function getScalingParameters( - imageId: string -): ScalingParameters | undefined { - const modalityLutModule = metaData.get('modalityLutModule', imageId) || {}; - - const generalSeriesModule = - metaData.get('generalSeriesModule', imageId) || {}; - - const { modality } = generalSeriesModule; - - const scalingParameters: ScalingParameters = { - rescaleSlope: modalityLutModule.rescaleSlope, - rescaleIntercept: modalityLutModule.rescaleIntercept, - modality, - }; - - if (modality !== 'PT') { - return scalingParameters; - } - - const suvFactor = metaData.get('scalingModule', imageId) || {}; - - if (modality === 'PT' && suvFactor.suvbw) { - return { - ...scalingParameters, - suvbw: suvFactor.suvbw, - }; - } -} diff --git a/packages/core/src/utilities/index.ts b/packages/core/src/utilities/index.ts index 65edc01cc..20c5b3795 100644 --- a/packages/core/src/utilities/index.ts +++ b/packages/core/src/utilities/index.ts @@ -25,7 +25,6 @@ import imageToWorldCoords from './imageToWorldCoords'; import getSliceRange from './getSliceRange'; import snapFocalPointToSlice from './snapFocalPointToSlice'; import getImageSliceDataForVolumeViewport from './getImageSliceDataForVolumeViewport'; -import getScalingParameters from './getScalingParameters'; import isImageActor from './isImageActor'; // name spaces @@ -62,6 +61,5 @@ export { getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, - getScalingParameters, isImageActor, }; diff --git a/packages/core/src/utilities/loadImageToCanvas.ts b/packages/core/src/utilities/loadImageToCanvas.ts index d038b8281..be2056b6a 100644 --- a/packages/core/src/utilities/loadImageToCanvas.ts +++ b/packages/core/src/utilities/loadImageToCanvas.ts @@ -5,7 +5,6 @@ import * as metaData from '../metaData'; import { RequestType } from '../enums'; import imageLoadPoolManager from '../requestPool/imageLoadPoolManager'; import renderToCanvas from './renderToCanvas'; -import getScalingParameters from './getScalingParameters'; /** * Loads and renders an imageId to a Canvas. It will use the CPU rendering pipeline @@ -35,7 +34,7 @@ export default function loadImageToCanvas( function successCallback(image: IImage, imageId: string) { const { modality } = metaData.get('generalSeriesModule', imageId) || {}; - image.isPreScaled = isImagePreScaled(image); + image.isPreScaled = image.isPreScaled || image.preScale?.scaled; renderToCanvas(canvas, image, modality); resolve(imageId); } @@ -56,8 +55,6 @@ export default function loadImageToCanvas( ); } - const scalingParameters = getScalingParameters(imageId); - // IMPORTANT: Request type should be passed if not the 'interaction' // highest priority will be used for the request type in the imageRetrievalPool const options = { @@ -67,7 +64,7 @@ export default function loadImageToCanvas( length: null, }, preScale: { - scalingParameters, + enabled: true, }, requestType, }; @@ -80,30 +77,3 @@ export default function loadImageToCanvas( ); }); } - -// Note: this is more isTheImageThatWasRequestedGonnaBePreScaled, but since -// we are using the same image metadata for adding request options and later -// checking them, we can assume if the scalingParameters -// are present, the image is pre-scaled -function isImagePreScaled(image) { - const { imageId } = image; - - const modalityLutModule = metaData.get('modalityLutModule', imageId) || {}; - const suvFactor = metaData.get('scalingModule', imageId) || {}; - - const generalSeriesModule = - metaData.get('generalSeriesModule', imageId) || {}; - - if ( - modalityLutModule.rescaleSlope !== undefined && - modalityLutModule.rescaleIntercept !== undefined - ) { - if (generalSeriesModule.modality === 'PT') { - return suvFactor.suvbw !== undefined; - } - - return true; - } - - return false; -} diff --git a/packages/docs/package.json b/packages/docs/package.json index 10ba107be..ace4708f0 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -37,7 +37,7 @@ "@mdx-js/react": "^1.6.21", "@svgr/webpack": "^6.2.1", "clsx": "^1.1.1", - "cornerstone-wado-image-loader": "^4.2.0", + "cornerstone-wado-image-loader": "^4.2.1", "dcmjs": "0.19.2", "detect-gpu": "^4.0.7", "dicom-parser": "^1.8.11", diff --git a/packages/streaming-image-volume-loader/package.json b/packages/streaming-image-volume-loader/package.json index 2bb49ae39..ee858b109 100644 --- a/packages/streaming-image-volume-loader/package.json +++ b/packages/streaming-image-volume-loader/package.json @@ -25,14 +25,14 @@ }, "dependencies": { "@cornerstonejs/core": "^0.14.1", - "cornerstone-wado-image-loader": "^4.2.0" + "cornerstone-wado-image-loader": "^4.2.1" }, "peerDependencies": { "@cornerstonejs/calculate-suv": "1.0.2" }, "devDependencies": { "@cornerstonejs/calculate-suv": "1.0.2", - "cornerstone-wado-image-loader": "^4.2.0" + "cornerstone-wado-image-loader": "^4.2.1" }, "contributors": [ { diff --git a/packages/streaming-image-volume-loader/src/StreamingImageVolume.ts b/packages/streaming-image-volume-loader/src/StreamingImageVolume.ts index a96d55692..d08338e70 100644 --- a/packages/streaming-image-volume-loader/src/StreamingImageVolume.ts +++ b/packages/streaming-image-volume-loader/src/StreamingImageVolume.ts @@ -416,6 +416,10 @@ export default class StreamingImageVolume extends ImageVolume { type, }, preScale: { + enabled: true, + // we need to pass in the scalingParameters here, since the streaming + // volume loader doesn't go through the createImage phase in the loader, + // and therefore doesn't have the scalingParameters scalingParameters, }, }; diff --git a/packages/tools/src/tools/WindowLevelTool.ts b/packages/tools/src/tools/WindowLevelTool.ts index e586ec365..0adfe2349 100644 --- a/packages/tools/src/tools/WindowLevelTool.ts +++ b/packages/tools/src/tools/WindowLevelTool.ts @@ -72,7 +72,8 @@ export default class WindowLevelTool extends BaseTool { const properties = viewport.getProperties(); modality = viewport.modality; ({ lower, upper } = properties.voiRange); - isPreScaled = viewport.isImagePreScaled(viewport.getCurrentImageId()); + const { preScale } = viewport.getImageData(); + isPreScaled = preScale.scaled; } else { throw new Error('Viewport is not a valid type'); } diff --git a/packages/tools/src/utilities/stackPrefetch/stackPrefetch.ts b/packages/tools/src/utilities/stackPrefetch/stackPrefetch.ts index b2ff56c7b..952532bf0 100644 --- a/packages/tools/src/utilities/stackPrefetch/stackPrefetch.ts +++ b/packages/tools/src/utilities/stackPrefetch/stackPrefetch.ts @@ -240,18 +240,10 @@ function prefetch(element) { } } - // if (preventCache) { - // requestFn = (id) => external.cornerstone.loadImage(id, options); - // } else { - // - // } - const requestFn = (imageId, options) => imageLoader.loadAndCacheImage(imageId, options); imageIdsToPrefetch.forEach((imageId) => { - const scalingParameters = csUtils.getScalingParameters(imageId); - // IMPORTANT: Request type should be passed if not the 'interaction' // highest priority will be used for the request type in the imageRetrievalPool const options = { @@ -261,7 +253,7 @@ function prefetch(element) { length: null, }, preScale: { - scalingParameters, + enabled: true, }, requestType, }; diff --git a/yarn.lock b/yarn.lock index 21b089869..b647c182d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -295,7 +295,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.11.4", "@babel/core@^7.12.3", "@babel/core@^7.15.5", "@babel/core@^7.16.12", "@babel/core@^7.17.8", "@babel/core@^7.17.9": +"@babel/core@^7.11.4", "@babel/core@^7.12.3", "@babel/core@^7.15.5", "@babel/core@^7.16.12", "@babel/core@^7.17.9": version "7.18.2" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.2.tgz#87b2fcd7cce9becaa7f5acebdc4f09f3dd19d876" integrity sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ== @@ -337,7 +337,7 @@ json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.12.5", "@babel/generator@^7.17.7", "@babel/generator@^7.18.2": +"@babel/generator@^7.12.5", "@babel/generator@^7.18.2": version "7.18.2" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== @@ -823,7 +823,7 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.8.tgz#61c243a3875f7d0b0962b0543a33ece6ff2f1f17" integrity sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw== -"@babel/parser@^7.0.0", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.8", "@babel/parser@^7.18.0": +"@babel/parser@^7.0.0", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.0": version "7.18.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef" integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow== @@ -833,6 +833,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.6.tgz#845338edecad65ebffef058d3be851f1d28a63bc" integrity sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw== +"@babel/parser@^7.18.8": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.10.tgz#94b5f8522356e69e8277276adf67ed280c90ecc1" + integrity sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg== + "@babel/parser@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" @@ -1765,7 +1770,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-runtime@^7.16.10", "@babel/plugin-transform-runtime@^7.17.0": +"@babel/plugin-transform-runtime@^7.16.10": version "7.18.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.2.tgz#04637de1e45ae8847ff14b9beead09c33d34374d" integrity sha512-mr1ufuRMfS52ttq+1G1PD8OJNqgcTFjq3hwn8SZ5n1x1pBhi0E36rYMdTK0TsKtApJ4lDEdfXJwtGobQMHSMPg== @@ -2132,7 +2137,7 @@ "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-transform-typescript" "^7.18.6" -"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.17.8": +"@babel/runtime-corejs3@^7.10.2": version "7.18.3" resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.18.3.tgz#52f0241a31e0ec61a6187530af6227c2846bd60c" integrity sha512-l4ddFwrc9rnR+EJsHsh+TJ4A35YqQz/UqcjtlX2ov53hlJYG5CxtQmNZxyajwDVmCxwy++rtvGU5HazCK4W41Q== @@ -2155,7 +2160,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.16.7", "@babel/runtime@^7.17.8", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.16.7", "@babel/runtime@^7.8.4": version "7.18.3" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== @@ -2187,7 +2192,7 @@ "@babel/parser" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2": +"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2": version "7.18.2" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8" integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA== @@ -2465,85 +2470,6 @@ "@docsearch/css" "3.1.1" algoliasearch "^4.0.0" -"@docusaurus/core@2.0.0-beta.18": - version "2.0.0-beta.18" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.18.tgz#44c6eefe29257462df630640a35f0c86bd80639a" - integrity sha512-puV7l+0/BPSi07Xmr8tVktfs1BzhC8P5pm6Bs2CfvysCJ4nefNCD1CosPc1PGBWy901KqeeEJ1aoGwj9tU3AUA== - dependencies: - "@babel/core" "^7.17.8" - "@babel/generator" "^7.17.7" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.17.0" - "@babel/preset-env" "^7.16.11" - "@babel/preset-react" "^7.16.7" - "@babel/preset-typescript" "^7.16.7" - "@babel/runtime" "^7.17.8" - "@babel/runtime-corejs3" "^7.17.8" - "@babel/traverse" "^7.17.3" - "@docusaurus/cssnano-preset" "2.0.0-beta.18" - "@docusaurus/logger" "2.0.0-beta.18" - "@docusaurus/mdx-loader" "2.0.0-beta.18" - "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/utils" "2.0.0-beta.18" - "@docusaurus/utils-common" "2.0.0-beta.18" - "@docusaurus/utils-validation" "2.0.0-beta.18" - "@slorber/static-site-generator-webpack-plugin" "^4.0.4" - "@svgr/webpack" "^6.2.1" - autoprefixer "^10.4.4" - babel-loader "^8.2.4" - babel-plugin-dynamic-import-node "2.3.0" - boxen "^6.2.1" - chokidar "^3.5.3" - clean-css "^5.2.4" - cli-table3 "^0.6.1" - combine-promises "^1.1.0" - commander "^5.1.0" - copy-webpack-plugin "^10.2.4" - core-js "^3.21.1" - css-loader "^6.7.1" - css-minimizer-webpack-plugin "^3.4.1" - cssnano "^5.1.5" - del "^6.0.0" - detect-port "^1.3.0" - escape-html "^1.0.3" - eta "^1.12.3" - file-loader "^6.2.0" - fs-extra "^10.0.1" - html-minifier-terser "^6.1.0" - html-tags "^3.1.0" - html-webpack-plugin "^5.5.0" - import-fresh "^3.3.0" - is-root "^2.1.0" - leven "^3.1.0" - lodash "^4.17.21" - mini-css-extract-plugin "^2.6.0" - nprogress "^0.2.0" - postcss "^8.4.12" - postcss-loader "^6.2.1" - prompts "^2.4.2" - react-dev-utils "^12.0.0" - react-helmet-async "^1.2.3" - react-loadable "npm:@docusaurus/react-loadable@5.5.2" - react-loadable-ssr-addon-v5-slorber "^1.0.1" - react-router "^5.2.0" - react-router-config "^5.1.1" - react-router-dom "^5.2.0" - remark-admonitions "^1.2.1" - rtl-detect "^1.0.4" - semver "^7.3.5" - serve-handler "^6.1.3" - shelljs "^0.8.5" - terser-webpack-plugin "^5.3.1" - tslib "^2.3.1" - update-notifier "^5.1.0" - url-loader "^4.1.1" - wait-on "^6.0.1" - webpack "^5.70.0" - webpack-bundle-analyzer "^4.5.0" - webpack-dev-server "^4.7.4" - webpack-merge "^5.8.0" - webpackbar "^5.0.2" - "@docusaurus/core@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-rc.1.tgz#828d93d241171565d8947a9ab404091e04759141" @@ -2621,15 +2547,6 @@ webpack-merge "^5.8.0" webpackbar "^5.0.2" -"@docusaurus/cssnano-preset@2.0.0-beta.18": - version "2.0.0-beta.18" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.18.tgz#235ac9064fe8f8da618349ce5305be3ed3a44e29" - integrity sha512-VxhYmpyx16Wv00W9TUfLVv0NgEK/BwP7pOdWoaiELEIAMV7SO1+6iB8gsFUhtfKZ31I4uPVLMKrCyWWakoFeFA== - dependencies: - cssnano-preset-advanced "^5.3.1" - postcss "^8.4.12" - postcss-sort-media-queries "^4.2.1" - "@docusaurus/cssnano-preset@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-rc.1.tgz#76bbd7f6912779a0667f8f2fd8fc1a05618a6148" @@ -2640,14 +2557,6 @@ postcss-sort-media-queries "^4.2.1" tslib "^2.4.0" -"@docusaurus/logger@2.0.0-beta.18": - version "2.0.0-beta.18" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.0-beta.18.tgz#12302f312a083eb018caa28505b63f5dd4ab6a91" - integrity sha512-frNe5vhH3mbPmH980Lvzaz45+n1PQl3TkslzWYXQeJOkFX17zUd3e3U7F9kR1+DocmAqHkgAoWuXVcvEoN29fg== - dependencies: - chalk "^4.1.2" - tslib "^2.3.1" - "@docusaurus/logger@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.0-rc.1.tgz#db95e9b15bc243695830a5b791c0eff705ef1b54" @@ -2656,28 +2565,6 @@ chalk "^4.1.2" tslib "^2.4.0" -"@docusaurus/mdx-loader@2.0.0-beta.18": - version "2.0.0-beta.18" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.18.tgz#4a9fc0607e0a210a7d7db3108415208dd36e33d3" - integrity sha512-pOmAQM4Y1jhuZTbEhjh4ilQa74Mh6Q0pMZn1xgIuyYDdqvIOrOlM/H0i34YBn3+WYuwsGim4/X0qynJMLDUA4A== - dependencies: - "@babel/parser" "^7.17.8" - "@babel/traverse" "^7.17.3" - "@docusaurus/logger" "2.0.0-beta.18" - "@docusaurus/utils" "2.0.0-beta.18" - "@mdx-js/mdx" "^1.6.22" - escape-html "^1.0.3" - file-loader "^6.2.0" - fs-extra "^10.0.1" - image-size "^1.0.1" - mdast-util-to-string "^2.0.0" - remark-emoji "^2.1.0" - stringify-object "^3.3.0" - tslib "^2.3.1" - unist-util-visit "^2.0.2" - url-loader "^4.1.1" - webpack "^5.70.0" - "@docusaurus/mdx-loader@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-rc.1.tgz#e78d7d416aacc289f2427c5ccdb9145820acb0cb" @@ -2941,13 +2828,6 @@ webpack "^5.73.0" webpack-merge "^5.8.0" -"@docusaurus/utils-common@2.0.0-beta.18": - version "2.0.0-beta.18" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.18.tgz#46cf0bed2a7c532b2b85eab5bb914ff118b2c4e9" - integrity sha512-pK83EcOIiKCLGhrTwukZMo5jqd1sqqqhQwOVyxyvg+x9SY/lsnNzScA96OEfm+qQLBwK1OABA7Xc1wfkgkUxvw== - dependencies: - tslib "^2.3.1" - "@docusaurus/utils-common@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-rc.1.tgz#3e233a28794325d5d9d3af3f7b1c22b59aa8b847" @@ -2955,17 +2835,6 @@ dependencies: tslib "^2.4.0" -"@docusaurus/utils-validation@2.0.0-beta.18": - version "2.0.0-beta.18" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.18.tgz#0dabf113d2c53ee685a715cd4caae6e219e9e41e" - integrity sha512-3aDrXjJJ8Cw2MAYEk5JMNnr8UHPxmVNbPU/PIHFWmWK09nJvs3IQ8nc9+8I30aIjRdIyc/BIOCxgvAcJ4hsxTA== - dependencies: - "@docusaurus/logger" "2.0.0-beta.18" - "@docusaurus/utils" "2.0.0-beta.18" - joi "^17.6.0" - js-yaml "^4.1.0" - tslib "^2.3.1" - "@docusaurus/utils-validation@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-rc.1.tgz#dded12f036cda8a54a19e01694b35859fe0cf1d5" @@ -2977,27 +2846,6 @@ js-yaml "^4.1.0" tslib "^2.4.0" -"@docusaurus/utils@2.0.0-beta.18": - version "2.0.0-beta.18" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.18.tgz#c3fe0e9fac30db4510962263993fd0ee2679eebb" - integrity sha512-v2vBmH7xSbPwx3+GB90HgLSQdj+Rh5ELtZWy7M20w907k0ROzDmPQ/8Ke2DK3o5r4pZPGnCrsB3SaYI83AEmAA== - dependencies: - "@docusaurus/logger" "2.0.0-beta.18" - "@svgr/webpack" "^6.2.1" - file-loader "^6.2.0" - fs-extra "^10.0.1" - github-slugger "^1.4.0" - globby "^11.1.0" - gray-matter "^4.0.3" - js-yaml "^4.1.0" - lodash "^4.17.21" - micromatch "^4.0.5" - resolve-pathname "^3.0.0" - shelljs "^0.8.5" - tslib "^2.3.1" - url-loader "^4.1.1" - webpack "^5.70.0" - "@docusaurus/utils@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-rc.1.tgz#53584b800df9e13864d5ef1a76aa7655a90ec86e" @@ -4898,7 +4746,7 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== -"@slorber/static-site-generator-webpack-plugin@^4.0.4", "@slorber/static-site-generator-webpack-plugin@^4.0.7": +"@slorber/static-site-generator-webpack-plugin@^4.0.7": version "4.0.7" resolved "https://registry.yarnpkg.com/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.7.tgz#fc1678bddefab014e2145cbe25b3ce4e1cfc36f3" integrity sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA== @@ -5389,7 +5237,7 @@ dependencies: "@types/react" "^17" -"@types/react-router-config@*": +"@types/react-router-config@*", "@types/react-router-config@^5.0.6": version "5.0.6" resolved "https://registry.yarnpkg.com/@types/react-router-config/-/react-router-config-5.0.6.tgz#87c5c57e72d241db900d9734512c50ccec062451" integrity sha512-db1mx37a1EJDf1XeX8jJN7R3PZABmJQXR8r28yUjVMFSjkmnQo6X6pOEEmNl+Tp2gYQOGPdYbFIipBtdElZ3Yg== @@ -6349,11 +6197,6 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-union@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-3.0.1.tgz#da52630d327f8b88cfbfb57728e2af5cd9b6b975" - integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== - array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -6484,7 +6327,7 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^10.3.7, autoprefixer@^10.4.2, autoprefixer@^10.4.4, autoprefixer@^10.4.7: +autoprefixer@^10.3.7, autoprefixer@^10.4.2, autoprefixer@^10.4.7: version "10.4.7" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf" integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== @@ -6569,7 +6412,7 @@ babel-loader@8.2.3: make-dir "^3.1.0" schema-utils "^2.6.5" -babel-loader@^8.2.4: +babel-loader@^8.2.5: version "8.2.5" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== @@ -6594,13 +6437,6 @@ babel-plugin-apply-mdx-type-prop@1.6.22: "@babel/helper-plugin-utils" "7.10.4" "@mdx-js/util" "1.6.22" -babel-plugin-dynamic-import-node@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" - integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== - dependencies: - object.assign "^4.1.0" - babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" @@ -7247,7 +7083,7 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== -ccount@^1.0.0, ccount@^1.0.3: +ccount@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== @@ -7425,7 +7261,7 @@ clean-css@^5.2.2: dependencies: source-map "~0.6.0" -clean-css@^5.2.4: +clean-css@^5.3.0: version "5.3.1" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.1.tgz#d0610b0b90d125196a2894d35366f734e5d7aa32" integrity sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg== @@ -7504,7 +7340,7 @@ cli-spinners@^2.5.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== -cli-table3@^0.6.1: +cli-table3@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a" integrity sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw== @@ -8095,14 +7931,14 @@ copy-text-to-clipboard@^3.0.1: resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz#8cbf8f90e0a47f12e4a24743736265d157bce69c" integrity sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q== -copy-webpack-plugin@^10.2.4: - version "10.2.4" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz#6c854be3fdaae22025da34b9112ccf81c63308fe" - integrity sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg== +copy-webpack-plugin@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a" + integrity sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ== dependencies: - fast-glob "^3.2.7" + fast-glob "^3.2.11" glob-parent "^6.0.1" - globby "^12.0.2" + globby "^13.1.1" normalize-path "^3.0.0" schema-utils "^4.0.0" serialize-javascript "^6.0.0" @@ -8169,10 +8005,10 @@ core-js@^2.4.0, core-js@^2.6.5: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-js@^3.21.1: - version "3.22.8" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.8.tgz#23f860b1fe60797cc4f704d76c93fea8a2f60631" - integrity sha512-UoGQ/cfzGYIuiq6Z7vWL1HfkE9U9IZ4Ub+0XSiJTCzvbZzgPA69oDF2f+lgJ6dFFLEdjW5O6svvoKzXX23xFkA== +core-js@^3.23.3: + version "3.24.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.24.1.tgz#cf7724d41724154010a6576b7b57d94c5d66e64f" + integrity sha512-0QTBSYSUZ6Gq21utGzkfITDylE8jWC9Ne1D2MrhvlsZBI1x39OdDIVbzSqtgMndIy6BlHxBXpMGqzZmnztg2rg== core-util-is@1.0.2: version "1.0.2" @@ -8184,10 +8020,10 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cornerstone-wado-image-loader@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-4.2.0.tgz#c2fd715d20c69310c6d9434d6673aa1ccab1f77a" - integrity sha512-J7FQcJlBaLHcbc8qj9sHW5w039w3s+i2kU8wK2Yghn1rnLcOay8N8pr+aEYua3XT04iD9GOj5NyikSiplITZWQ== +cornerstone-wado-image-loader@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-4.2.1.tgz#ee37797fe8970dcb7e438a6d87b710e817066100" + integrity sha512-nRu+6GfHFERpZLytH/SCfymODCz1SC1NKRv/xn02pr3PEkzU6fvKI76sSxSFOozxDsYljupTRNi/qGMprfdBHA== dependencies: "@cornerstonejs/codec-charls" "^0.1.1" "@cornerstonejs/codec-libjpeg-turbo-8bit" "^0.0.7" @@ -8396,14 +8232,14 @@ css-loader@^6.7.1: postcss-value-parser "^4.2.0" semver "^7.3.5" -css-minimizer-webpack-plugin@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" - integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== +css-minimizer-webpack-plugin@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.0.0.tgz#e11800388c19c2b7442c39cc78ac8ae3675c9605" + integrity sha512-7ZXXRzRHvofv3Uac5Y+RkWRNo0ZMlcg8e9/OtrqUYmwDWJo+qs67GvdeFrXLsFb7czKNwjQhPkM0avlIYl+1nA== dependencies: - cssnano "^5.0.6" - jest-worker "^27.0.2" - postcss "^8.3.5" + cssnano "^5.1.8" + jest-worker "^27.5.1" + postcss "^8.4.13" schema-utils "^4.0.0" serialize-javascript "^6.0.0" source-map "^0.6.1" @@ -8486,18 +8322,6 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-advanced@^5.3.1: - version "5.3.6" - resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.6.tgz#6c995a86cecc9e6472bf6d120e5517231ed527dc" - integrity sha512-OZHsytu16eStRVrIY3wmPQqhJMaI0+O3raU4JHoKV3uuQYEeQek/FJVUIvYXD55hWR6OjCMyKYNRDw+k3/xgUw== - dependencies: - autoprefixer "^10.3.7" - cssnano-preset-default "^5.2.10" - postcss-discard-unused "^5.1.0" - postcss-merge-idents "^5.1.1" - postcss-reduce-idents "^5.2.0" - postcss-zindex "^5.1.0" - cssnano-preset-advanced@^5.3.8: version "5.3.8" resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.8.tgz#027b1d05ef896d908178c483f0ec4190cb50ef9a" @@ -8618,12 +8442,12 @@ cssnano@^4.1.11: is-resolvable "^1.0.0" postcss "^7.0.0" -cssnano@^5.0.6, cssnano@^5.1.5: - version "5.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.10.tgz#fc6ddd9a4d7d238f320634326ed814cf0abf6e1c" - integrity sha512-ACpnRgDg4m6CZD/+8SgnLcGCgy6DDGdkMbOawwdvVxNietTNLe/MtWcenp6qT0PRt5wzhGl6/cjMWCdhKXC9QA== +cssnano@^5.1.12, cssnano@^5.1.8: + version "5.1.12" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.12.tgz#bcd0b64d6be8692de79332c501daa7ece969816c" + integrity sha512-TgvArbEZu0lk/dvg2ja+B7kYoD7BBCmn3+k58xD0qjrGHsFzXY/wKTo9M5egcUCabPol05e/PVoIu79s2JN4WQ== dependencies: - cssnano-preset-default "^5.2.10" + cssnano-preset-default "^5.2.12" lilconfig "^2.0.3" yaml "^1.10.2" @@ -8991,7 +8815,7 @@ del@^4.1.1: pify "^4.0.1" rimraf "^2.6.3" -del@^6.0.0: +del@^6.0.0, del@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== @@ -10451,7 +10275,7 @@ fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" -fast-glob@^3.2.11, fast-glob@^3.2.5, fast-glob@^3.2.7, fast-glob@^3.2.9: +fast-glob@^3.2.11, fast-glob@^3.2.5, fast-glob@^3.2.9: version "3.2.11" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== @@ -10947,7 +10771,7 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@^10.0.1, fs-extra@^10.1.0: +fs-extra@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== @@ -11408,22 +11232,21 @@ globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -globby@^12.0.2: - version "12.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-12.2.0.tgz#2ab8046b4fba4ff6eede835b29f678f90e3d3c22" - integrity sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA== +globby@^13.0.0: + version "13.1.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.1.tgz#7c44a93869b0b7612e38f22ed532bfe37b25ea6f" + integrity sha512-XMzoDZbGZ37tufiv7g0N4F/zp3zkwdFtVbV3EHsVl1KQr4RPLfNoT068/97RPshz2J5xYNEjLKKBKaGHifBd3Q== dependencies: - array-union "^3.0.1" dir-glob "^3.0.1" - fast-glob "^3.2.7" - ignore "^5.1.9" + fast-glob "^3.2.11" + ignore "^5.2.0" merge2 "^1.4.1" slash "^4.0.0" -globby@^13.0.0: - version "13.1.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.1.tgz#7c44a93869b0b7612e38f22ed532bfe37b25ea6f" - integrity sha512-XMzoDZbGZ37tufiv7g0N4F/zp3zkwdFtVbV3EHsVl1KQr4RPLfNoT068/97RPshz2J5xYNEjLKKBKaGHifBd3Q== +globby@^13.1.1: + version "13.1.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.2.tgz#29047105582427ab6eca4f905200667b056da515" + integrity sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ== dependencies: dir-glob "^3.0.1" fast-glob "^3.2.11" @@ -11756,17 +11579,6 @@ hast-to-hyperscript@^9.0.0: unist-util-is "^4.0.0" web-namespaces "^1.0.0" -hast-util-from-parse5@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-5.0.3.tgz#3089dc0ee2ccf6ec8bc416919b51a54a589e097c" - integrity sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA== - dependencies: - ccount "^1.0.3" - hastscript "^5.0.0" - property-information "^5.0.0" - web-namespaces "^1.1.2" - xtend "^4.0.1" - hast-util-from-parse5@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz#554e34abdeea25ac76f5bd950a1f0180e0b3bc2a" @@ -11811,16 +11623,6 @@ hast-util-to-parse5@^6.0.0: xtend "^4.0.0" zwitch "^1.0.0" -hastscript@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-5.1.2.tgz#bde2c2e56d04c62dd24e8c5df288d050a355fb8a" - integrity sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ== - dependencies: - comma-separated-tokens "^1.0.0" - hast-util-parse-selector "^2.0.0" - property-information "^5.0.0" - space-separated-tokens "^1.0.0" - hastscript@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" @@ -11921,7 +11723,7 @@ html-minifier-terser@^6.0.2, html-minifier-terser@^6.1.0: relateurl "^0.2.7" terser "^5.10.0" -html-tags@^3.1.0: +html-tags@^3.1.0, html-tags@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961" integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg== @@ -12166,7 +11968,7 @@ ignore@^4.0.3, ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.8, ignore@^5.1.9, ignore@^5.2.0: +ignore@^5.1.8, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== @@ -13172,7 +12974,7 @@ jest-worker@^26.2.1: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^27.0.2, jest-worker@^27.3.1, jest-worker@^27.4.5: +jest-worker@^27.3.1, jest-worker@^27.4.5, jest-worker@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== @@ -14614,7 +14416,7 @@ mini-create-react-context@^0.4.0: "@babel/runtime" "^7.12.1" tiny-warning "^1.0.3" -mini-css-extract-plugin@^2.6.0: +mini-css-extract-plugin@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz#9a1251d15f2035c342d99a468ab9da7a0451b71e" integrity sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg== @@ -16202,11 +16004,6 @@ parse5-htmlparser2-tree-adapter@^7.0.0: domhandler "^5.0.2" parse5 "^7.0.0" -parse5@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== - parse5@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" @@ -16706,6 +16503,15 @@ postcss-loader@^6.2.1: klona "^2.0.5" semver "^7.3.5" +postcss-loader@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.0.1.tgz#4c883cc0a1b2bfe2074377b7a74c1cd805684395" + integrity sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ== + dependencies: + cosmiconfig "^7.0.0" + klona "^2.0.5" + semver "^7.3.7" + postcss-logical@^5.0.4: version "5.0.4" resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73" @@ -17304,7 +17110,7 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.21 picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.1.7, postcss@^8.2.15, postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.12, postcss@^8.4.14, postcss@^8.4.5, postcss@^8.4.7: +postcss@^8.1.7, postcss@^8.2.15, postcss@^8.3.11, postcss@^8.4.12, postcss@^8.4.13, postcss@^8.4.14, postcss@^8.4.5, postcss@^8.4.7: version "8.4.14" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== @@ -17751,7 +17557,7 @@ react-base16-styling@^0.6.0: lodash.flow "^3.3.0" pure-color "^1.2.0" -react-dev-utils@^12.0.0: +react-dev-utils@^12.0.1: version "12.0.1" resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== @@ -17800,7 +17606,7 @@ react-fast-compare@^3.2.0: resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== -react-helmet-async@*, react-helmet-async@^1.2.3: +react-helmet-async@*, react-helmet-async@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.3.0.tgz#7bd5bf8c5c69ea9f02f6083f14ce33ef545c222e" integrity sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg== @@ -17872,7 +17678,7 @@ react-router-dom@5.3.0: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router-dom@^5.2.0, react-router-dom@^5.3.3: +react-router-dom@^5.3.3: version "5.3.3" resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.3.tgz#8779fc28e6691d07afcaf98406d3812fe6f11199" integrity sha512-Ov0tGPMBgqmbu5CDmN++tv2HQ9HlWDuWIIqn4b88gjlAN5IHI+4ZUZRcpz9Hl0azFIwihbLDYw1OiHGRo7ZIng== @@ -17901,7 +17707,7 @@ react-router@5.2.1: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router@5.3.3, react-router@^5.2.0: +react-router@5.3.3, react-router@^5.3.3: version "5.3.3" resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.3.tgz#8e3841f4089e728cf82a429d92cdcaa5e4a3a288" integrity sha512-mzQGUvS3bM84TnbtMYR8ZjKnuPJ71IjSzR+DE6UkUqvN4czWIqEs17yLL8xkAycv4ev0AiN+IGrWu88vJs/p2w== @@ -18255,30 +18061,12 @@ regjsparser@^0.8.2: dependencies: jsesc "~0.5.0" -rehype-parse@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-6.0.2.tgz#aeb3fdd68085f9f796f1d3137ae2b85a98406964" - integrity sha512-0S3CpvpTAgGmnz8kiCyFLGuW5yA4OQhyNTm/nwPopZ7+PI11WnGl1TTWTGv/2hPEe/g2jRLlhVVSsoDH8waRug== - dependencies: - hast-util-from-parse5 "^5.0.0" - parse5 "^5.0.0" - xtend "^4.0.0" - relateurl@^0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= -remark-admonitions@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/remark-admonitions/-/remark-admonitions-1.2.1.tgz#87caa1a442aa7b4c0cafa04798ed58a342307870" - integrity sha512-Ji6p68VDvD+H1oS95Fdx9Ar5WA2wcDA4kwrrhVU7fGctC6+d3uiMICu7w7/2Xld+lnU7/gi+432+rRbup5S8ow== - dependencies: - rehype-parse "^6.0.2" - unified "^8.4.2" - unist-util-visit "^2.0.1" - -remark-emoji@^2.1.0: +remark-emoji@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-2.2.0.tgz#1c702090a1525da5b80e15a8f963ef2c8236cac7" integrity sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w== @@ -20172,7 +19960,7 @@ terminal-link@^2.1.1: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" -terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.1: +terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.3: version "5.3.3" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz#8033db876dd5875487213e87c627bca323e5ed90" integrity sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ== @@ -20481,7 +20269,7 @@ tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0: +tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== @@ -20723,18 +20511,7 @@ unified@9.2.0: trough "^1.0.0" vfile "^4.0.0" -unified@^8.4.2: - version "8.4.2" - resolved "https://registry.yarnpkg.com/unified/-/unified-8.4.2.tgz#13ad58b4a437faa2751a4a4c6a16f680c500fff1" - integrity sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA== - dependencies: - bail "^1.0.0" - extend "^3.0.0" - is-plain-obj "^2.0.0" - trough "^1.0.0" - vfile "^4.0.0" - -unified@^9.1.0: +unified@^9.1.0, unified@^9.2.2: version "9.2.2" resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ== @@ -20843,7 +20620,7 @@ unist-util-visit-parents@^3.0.0: "@types/unist" "^2.0.0" unist-util-is "^4.0.0" -unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.1, unist-util-visit@^2.0.2, unist-util-visit@^2.0.3: +unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== @@ -21186,7 +20963,7 @@ wcwidth@^1.0.0, wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -web-namespaces@^1.0.0, web-namespaces@^1.1.2: +web-namespaces@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== @@ -21305,15 +21082,16 @@ webpack-dev-server@^3.11.3: ws "^6.2.1" yargs "^13.3.2" -webpack-dev-server@^4.7.4: - version "4.9.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.9.1.tgz#184607b0287c791aeaa45e58e8fe75fcb4d7e2a8" - integrity sha512-CTMfu2UMdR/4OOZVHRpdy84pNopOuigVIsRbGX3LVDMWNP8EUgC5mUBMErbwBlHTEX99ejZJpVqrir6EXAEajA== +webpack-dev-server@^4.9.3: + version "4.9.3" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.9.3.tgz#2360a5d6d532acb5410a668417ad549ee3b8a3c9" + integrity sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" "@types/express" "^4.17.13" "@types/serve-index" "^1.9.1" + "@types/serve-static" "^1.13.10" "@types/sockjs" "^0.3.33" "@types/ws" "^8.5.1" ansi-html-community "^0.0.8" @@ -21321,7 +21099,7 @@ webpack-dev-server@^4.7.4: chokidar "^3.5.3" colorette "^2.0.10" compression "^1.7.4" - connect-history-api-fallback "^1.6.0" + connect-history-api-fallback "^2.0.0" default-gateway "^6.0.3" express "^4.17.3" graceful-fs "^4.2.6" @@ -21405,36 +21183,6 @@ webpack@5.67.0: watchpack "^2.3.1" webpack-sources "^3.2.3" -webpack@^5.70.0: - version "5.73.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.73.0.tgz#bbd17738f8a53ee5760ea2f59dce7f3431d35d38" - integrity sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^0.0.51" - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/wasm-edit" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.4.1" - acorn-import-assertions "^1.7.6" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.9.3" - es-module-lexer "^0.9.0" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.1.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.1.3" - watchpack "^2.3.1" - webpack-sources "^3.2.3" - webpack@^5.73.0: version "5.74.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980"