@cornerstonejs/dicom-image-loader 1.78.1 → 2.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/744.bundle.min.js +3 -0
- package/dist/744.bundle.min.js.LICENSE.txt +5 -0
- package/dist/744.bundle.min.js.map +1 -0
- package/dist/cornerstoneDICOMImageLoader.bundle.min.js +1 -1
- package/dist/cornerstoneDICOMImageLoader.bundle.min.js.map +1 -1
- package/dist/dynamic-import/{945.min.worker.js → 584.min.js} +2 -2
- package/dist/dynamic-import/584.min.js.map +1 -0
- package/dist/dynamic-import/595.min.js +2 -0
- package/dist/dynamic-import/595.min.js.map +1 -0
- package/dist/dynamic-import/610.min.js +2 -0
- package/dist/dynamic-import/610.min.js.map +1 -0
- package/dist/dynamic-import/958.min.js +3 -0
- package/dist/dynamic-import/958.min.js.LICENSE.txt +5 -0
- package/dist/dynamic-import/958.min.js.map +1 -0
- package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js +1 -1
- package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js.map +1 -1
- package/dist/esm/codecs/jpeg.js +891 -0
- package/dist/esm/codecs/jpeg.js.map +1 -0
- package/dist/esm/codecs/jpegLossless.js +1220 -0
- package/dist/esm/codecs/jpegLossless.js.map +1 -0
- package/dist/esm/src/constants/transferSyntaxes.js +47 -0
- package/dist/esm/src/constants/transferSyntaxes.js.map +1 -0
- package/dist/esm/src/externalModules.js +45 -0
- package/dist/esm/src/externalModules.js.map +1 -0
- package/dist/esm/src/imageLoader/colorSpaceConverters/convertPALETTECOLOR.js +78 -0
- package/dist/esm/src/imageLoader/colorSpaceConverters/convertPALETTECOLOR.js.map +1 -0
- package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPixel.js +22 -0
- package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPixel.js.map +1 -0
- package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPlane.js +29 -0
- package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPlane.js.map +1 -0
- package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.js +45 -0
- package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.js.map +1 -0
- package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPixel.js +34 -0
- package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPixel.js.map +1 -0
- package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPlane.js +36 -0
- package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPlane.js.map +1 -0
- package/dist/esm/src/imageLoader/colorSpaceConverters/index.js +8 -0
- package/dist/esm/src/imageLoader/colorSpaceConverters/index.js.map +1 -0
- package/dist/esm/src/imageLoader/configure.js +12 -0
- package/dist/esm/src/imageLoader/configure.js.map +1 -0
- package/dist/esm/src/imageLoader/convertColorSpace.js +41 -0
- package/dist/esm/src/imageLoader/convertColorSpace.js.map +1 -0
- package/dist/esm/src/imageLoader/createImage.js +249 -0
- package/dist/esm/src/imageLoader/createImage.js.map +1 -0
- package/dist/esm/src/imageLoader/decodeImageFrame.js +66 -0
- package/dist/esm/src/imageLoader/decodeImageFrame.js.map +1 -0
- package/dist/esm/src/imageLoader/decodeJPEGBaseline8BitColor.js +65 -0
- package/dist/esm/src/imageLoader/decodeJPEGBaseline8BitColor.js.map +1 -0
- package/dist/esm/src/imageLoader/getImageFrame.js +27 -0
- package/dist/esm/src/imageLoader/getImageFrame.js.map +1 -0
- package/dist/esm/src/imageLoader/getInstanceModule.js +41 -0
- package/dist/esm/src/imageLoader/getInstanceModule.js.map +1 -0
- package/dist/esm/src/imageLoader/getMinMax.js +16 -0
- package/dist/esm/src/imageLoader/getMinMax.js.map +1 -0
- package/dist/esm/src/imageLoader/getScalingParameters.js +16 -0
- package/dist/esm/src/imageLoader/getScalingParameters.js.map +1 -0
- package/dist/esm/src/imageLoader/imageIdToURI.js +5 -0
- package/dist/esm/src/imageLoader/imageIdToURI.js.map +1 -0
- package/dist/esm/src/imageLoader/index.js +37 -0
- package/dist/esm/src/imageLoader/index.js.map +1 -0
- package/dist/esm/src/imageLoader/internal/index.js +9 -0
- package/dist/esm/src/imageLoader/internal/index.js.map +1 -0
- package/dist/esm/src/imageLoader/internal/options.js +24 -0
- package/dist/esm/src/imageLoader/internal/options.js.map +1 -0
- package/dist/esm/src/imageLoader/internal/rangeRequest.js +122 -0
- package/dist/esm/src/imageLoader/internal/rangeRequest.js.map +1 -0
- package/dist/esm/src/imageLoader/internal/streamRequest.js +93 -0
- package/dist/esm/src/imageLoader/internal/streamRequest.js.map +1 -0
- package/dist/esm/src/imageLoader/internal/xhrRequest.js +103 -0
- package/dist/esm/src/imageLoader/internal/xhrRequest.js.map +1 -0
- package/dist/esm/src/imageLoader/isColorConversionRequired.js +23 -0
- package/dist/esm/src/imageLoader/isColorConversionRequired.js.map +1 -0
- package/dist/esm/src/imageLoader/isJPEGBaseline8BitColor.js +10 -0
- package/dist/esm/src/imageLoader/isJPEGBaseline8BitColor.js.map +1 -0
- package/dist/esm/src/imageLoader/isNMReconstructable.js +4 -0
- package/dist/esm/src/imageLoader/isNMReconstructable.js.map +1 -0
- package/dist/esm/src/imageLoader/registerLoaders.js +8 -0
- package/dist/esm/src/imageLoader/registerLoaders.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/combineFrameInstance.js +45 -0
- package/dist/esm/src/imageLoader/wadors/combineFrameInstance.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/extractMultipart.js +74 -0
- package/dist/esm/src/imageLoader/wadors/extractMultipart.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/findIndexOfString.js +33 -0
- package/dist/esm/src/imageLoader/wadors/findIndexOfString.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/getImageQualityStatus.js +9 -0
- package/dist/esm/src/imageLoader/wadors/getImageQualityStatus.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/getPixelData.js +36 -0
- package/dist/esm/src/imageLoader/wadors/getPixelData.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/getTagValue.js +10 -0
- package/dist/esm/src/imageLoader/wadors/getTagValue.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/index.js +22 -0
- package/dist/esm/src/imageLoader/wadors/index.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/loadImage.js +126 -0
- package/dist/esm/src/imageLoader/wadors/loadImage.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/loadImage_test.js +42 -0
- package/dist/esm/src/imageLoader/wadors/loadImage_test.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/metaData/NMHelpers.js +39 -0
- package/dist/esm/src/imageLoader/wadors/metaData/NMHelpers.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/metaData/USHelpers.js +47 -0
- package/dist/esm/src/imageLoader/wadors/metaData/USHelpers.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/metaData/extractPositioningFromMetadata.js +19 -0
- package/dist/esm/src/imageLoader/wadors/metaData/extractPositioningFromMetadata.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/metaData/getFirstNumberValue.js +7 -0
- package/dist/esm/src/imageLoader/wadors/metaData/getFirstNumberValue.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/metaData/getNumberString.js +10 -0
- package/dist/esm/src/imageLoader/wadors/metaData/getNumberString.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/metaData/getNumberValue.js +10 -0
- package/dist/esm/src/imageLoader/wadors/metaData/getNumberValue.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/metaData/getNumberValues.js +21 -0
- package/dist/esm/src/imageLoader/wadors/metaData/getNumberValues.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/metaData/getOverlayPlaneModule.js +39 -0
- package/dist/esm/src/imageLoader/wadors/metaData/getOverlayPlaneModule.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/metaData/getSequenceItems.js +15 -0
- package/dist/esm/src/imageLoader/wadors/metaData/getSequenceItems.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/metaData/getValue.js +15 -0
- package/dist/esm/src/imageLoader/wadors/metaData/getValue.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/metaData/index.js +8 -0
- package/dist/esm/src/imageLoader/wadors/metaData/index.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/metaData/metaDataProvider.js +262 -0
- package/dist/esm/src/imageLoader/wadors/metaData/metaDataProvider.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/metaDataManager.js +48 -0
- package/dist/esm/src/imageLoader/wadors/metaDataManager.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/register.js +7 -0
- package/dist/esm/src/imageLoader/wadors/register.js.map +1 -0
- package/dist/esm/src/imageLoader/wadors/retrieveMultiframeMetadata.js +27 -0
- package/dist/esm/src/imageLoader/wadors/retrieveMultiframeMetadata.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/combineFrameInstanceDataset.js +68 -0
- package/dist/esm/src/imageLoader/wadouri/combineFrameInstanceDataset.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager.js +143 -0
- package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager_test.js +11 -0
- package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager_test.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/dataset-from-partial-content.js +57 -0
- package/dist/esm/src/imageLoader/wadouri/dataset-from-partial-content.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/fileManager.js +21 -0
- package/dist/esm/src/imageLoader/wadouri/fileManager.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/getEncapsulatedImageFrame.js +34 -0
- package/dist/esm/src/imageLoader/wadouri/getEncapsulatedImageFrame.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/getPixelData.js +14 -0
- package/dist/esm/src/imageLoader/wadouri/getPixelData.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/getUncompressedImageFrame.js +48 -0
- package/dist/esm/src/imageLoader/wadouri/getUncompressedImageFrame.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/index.js +32 -0
- package/dist/esm/src/imageLoader/wadouri/index.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/loadFileRequest.js +18 -0
- package/dist/esm/src/imageLoader/wadouri/loadFileRequest.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/loadImage.js +105 -0
- package/dist/esm/src/imageLoader/wadouri/loadImage.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/metaData/extractPositioningFromDataset.js +81 -0
- package/dist/esm/src/imageLoader/wadouri/metaData/extractPositioningFromDataset.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/metaData/getImagePixelModule.js +80 -0
- package/dist/esm/src/imageLoader/wadouri/metaData/getImagePixelModule.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/metaData/getLUTs.js +45 -0
- package/dist/esm/src/imageLoader/wadouri/metaData/getLUTs.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.js +31 -0
- package/dist/esm/src/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/metaData/getNumberValues.js +17 -0
- package/dist/esm/src/imageLoader/wadouri/metaData/getNumberValues.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/metaData/getOverlayPlaneModule.js +37 -0
- package/dist/esm/src/imageLoader/wadouri/metaData/getOverlayPlaneModule.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/metaData/index.js +6 -0
- package/dist/esm/src/imageLoader/wadouri/metaData/index.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/metaData/metaDataProvider.js +211 -0
- package/dist/esm/src/imageLoader/wadouri/metaData/metaDataProvider.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/parseImageId.js +21 -0
- package/dist/esm/src/imageLoader/wadouri/parseImageId.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/register.js +9 -0
- package/dist/esm/src/imageLoader/wadouri/register.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/retrieveMultiframeDataset.js +58 -0
- package/dist/esm/src/imageLoader/wadouri/retrieveMultiframeDataset.js.map +1 -0
- package/dist/esm/src/imageLoader/wadouri/unpackBinaryFrame.js +15 -0
- package/dist/esm/src/imageLoader/wadouri/unpackBinaryFrame.js.map +1 -0
- package/dist/esm/src/shared/calculateMinMax.js +25 -0
- package/dist/esm/src/shared/calculateMinMax.js.map +1 -0
- package/dist/esm/src/shared/calculateMinMax_test.js +39 -0
- package/dist/esm/src/shared/calculateMinMax_test.js.map +1 -0
- package/dist/esm/src/shared/decodeImageFrame.js +269 -0
- package/dist/esm/src/shared/decodeImageFrame.js.map +1 -0
- package/dist/esm/src/shared/decoders/decodeBigEndian.js +29 -0
- package/dist/esm/src/shared/decoders/decodeBigEndian.js.map +1 -0
- package/dist/esm/src/shared/decoders/decodeHTJ2K.js +110 -0
- package/dist/esm/src/shared/decoders/decodeHTJ2K.js.map +1 -0
- package/dist/esm/src/shared/decoders/decodeJPEG2000.js +94 -0
- package/dist/esm/src/shared/decoders/decodeJPEG2000.js.map +1 -0
- package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-js.js +35 -0
- package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-js.js.map +1 -0
- package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.js +2 -0
- package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.js.map +1 -0
- package/dist/esm/src/shared/decoders/decodeJPEGBaseline8Bit.js +63 -0
- package/dist/esm/src/shared/decoders/decodeJPEGBaseline8Bit.js.map +1 -0
- package/dist/esm/src/shared/decoders/decodeJPEGLS.js +85 -0
- package/dist/esm/src/shared/decoders/decodeJPEGLS.js.map +1 -0
- package/dist/esm/src/shared/decoders/decodeJPEGLossless.js +40 -0
- package/dist/esm/src/shared/decoders/decodeJPEGLossless.js.map +1 -0
- package/dist/esm/src/shared/decoders/decodeLittleEndian.js +30 -0
- package/dist/esm/src/shared/decoders/decodeLittleEndian.js.map +1 -0
- package/dist/esm/src/shared/decoders/decodeRLE.js +129 -0
- package/dist/esm/src/shared/decoders/decodeRLE.js.map +1 -0
- package/dist/esm/src/shared/getMinMax.js +17 -0
- package/dist/esm/src/shared/getMinMax.js.map +1 -0
- package/dist/esm/src/shared/getMinMax_test.js +10 -0
- package/dist/esm/src/shared/getMinMax_test.js.map +1 -0
- package/dist/esm/src/shared/getPixelDataTypeFromMinMax.js +23 -0
- package/dist/esm/src/shared/getPixelDataTypeFromMinMax.js.map +1 -0
- package/dist/esm/src/shared/isColorImage.js +11 -0
- package/dist/esm/src/shared/isColorImage.js.map +1 -0
- package/dist/esm/src/shared/scaling/bilinear.js +33 -0
- package/dist/esm/src/shared/scaling/bilinear.js.map +1 -0
- package/dist/esm/src/shared/scaling/replicate.js +21 -0
- package/dist/esm/src/shared/scaling/replicate.js.map +1 -0
- package/dist/esm/src/shared/scaling/scaleArray.js +16 -0
- package/dist/esm/src/shared/scaling/scaleArray.js.map +1 -0
- package/dist/esm/src/types/DICOMLoaderDataSetWithFetchMore.js +2 -0
- package/dist/esm/src/types/DICOMLoaderDataSetWithFetchMore.js.map +1 -0
- package/dist/esm/src/types/DICOMLoaderIImage.js +2 -0
- package/dist/esm/src/types/DICOMLoaderIImage.js.map +1 -0
- package/dist/esm/src/types/DICOMLoaderImageOptions.js +2 -0
- package/dist/esm/src/types/DICOMLoaderImageOptions.js.map +1 -0
- package/dist/esm/src/types/ImageFrame.js +2 -0
- package/dist/esm/src/types/ImageFrame.js.map +1 -0
- package/dist/esm/src/types/LoadRequestFunction.js +2 -0
- package/dist/esm/src/types/LoadRequestFunction.js.map +1 -0
- package/dist/esm/src/types/LoaderDecodeOptions.js +2 -0
- package/dist/esm/src/types/LoaderDecodeOptions.js.map +1 -0
- package/dist/esm/src/types/LoaderOptions.js +2 -0
- package/dist/esm/src/types/LoaderOptions.js.map +1 -0
- package/dist/esm/src/types/LutType.js +2 -0
- package/dist/esm/src/types/LutType.js.map +1 -0
- package/dist/esm/src/types/MetadataModules.js +2 -0
- package/dist/esm/src/types/MetadataModules.js.map +1 -0
- package/dist/esm/src/types/PixelDataTypedArray.js +2 -0
- package/dist/esm/src/types/PixelDataTypedArray.js.map +1 -0
- package/dist/esm/src/types/WADORSMetaData.js +2 -0
- package/dist/esm/src/types/WADORSMetaData.js.map +1 -0
- package/dist/esm/src/types/WebWorkerTypes.js +2 -0
- package/dist/esm/src/types/WebWorkerTypes.js.map +1 -0
- package/dist/esm/src/types/XHRRequest.js +2 -0
- package/dist/esm/src/types/XHRRequest.js.map +1 -0
- package/dist/esm/src/types/index.js +2 -0
- package/dist/esm/src/types/index.js.map +1 -0
- package/dist/esm/src/version.js +2 -0
- package/dist/esm/src/version.js.map +1 -0
- package/dist/types/codecs/jpeg.d.ts +11 -0
- package/dist/types/codecs/jpeg.d.ts.map +1 -0
- package/dist/types/codecs/jpegLossless.d.ts +8 -0
- package/dist/types/codecs/jpegLossless.d.ts.map +1 -0
- package/dist/types/src/constants/transferSyntaxes.d.ts +47 -0
- package/dist/types/src/constants/transferSyntaxes.d.ts.map +1 -0
- package/dist/types/src/externalModules.d.ts +6 -0
- package/dist/types/src/externalModules.d.ts.map +1 -0
- package/dist/types/src/imageLoader/colorSpaceConverters/convertPALETTECOLOR.d.ts +4 -0
- package/dist/types/src/imageLoader/colorSpaceConverters/convertPALETTECOLOR.d.ts.map +1 -0
- package/dist/types/src/imageLoader/colorSpaceConverters/convertRGBColorByPixel.d.ts +3 -0
- package/dist/types/src/imageLoader/colorSpaceConverters/convertRGBColorByPixel.d.ts.map +1 -0
- package/dist/types/src/imageLoader/colorSpaceConverters/convertRGBColorByPlane.d.ts +3 -0
- package/dist/types/src/imageLoader/colorSpaceConverters/convertRGBColorByPlane.d.ts.map +1 -0
- package/dist/types/src/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.d.ts +3 -0
- package/dist/types/src/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.d.ts.map +1 -0
- package/dist/types/src/imageLoader/colorSpaceConverters/convertYBRFullByPixel.d.ts +3 -0
- package/dist/types/src/imageLoader/colorSpaceConverters/convertYBRFullByPixel.d.ts.map +1 -0
- package/dist/types/src/imageLoader/colorSpaceConverters/convertYBRFullByPlane.d.ts +3 -0
- package/dist/types/src/imageLoader/colorSpaceConverters/convertYBRFullByPlane.d.ts.map +1 -0
- package/dist/types/src/imageLoader/colorSpaceConverters/index.d.ts +8 -0
- package/dist/types/src/imageLoader/colorSpaceConverters/index.d.ts.map +1 -0
- package/dist/types/src/imageLoader/configure.d.ts +4 -0
- package/dist/types/src/imageLoader/configure.d.ts.map +1 -0
- package/dist/types/src/imageLoader/convertColorSpace.d.ts +2 -0
- package/dist/types/src/imageLoader/convertColorSpace.d.ts.map +1 -0
- package/dist/types/src/imageLoader/createImage.d.ts +5 -0
- package/dist/types/src/imageLoader/createImage.d.ts.map +1 -0
- package/dist/types/src/imageLoader/decodeImageFrame.d.ts +4 -0
- package/dist/types/src/imageLoader/decodeImageFrame.d.ts.map +1 -0
- package/dist/types/src/imageLoader/decodeJPEGBaseline8BitColor.d.ts +5 -0
- package/dist/types/src/imageLoader/decodeJPEGBaseline8BitColor.d.ts.map +1 -0
- package/dist/types/src/imageLoader/getImageFrame.d.ts +4 -0
- package/dist/types/src/imageLoader/getImageFrame.d.ts.map +1 -0
- package/dist/types/src/imageLoader/getInstanceModule.d.ts +4 -0
- package/dist/types/src/imageLoader/getInstanceModule.d.ts.map +1 -0
- package/dist/types/src/imageLoader/getMinMax.d.ts +5 -0
- package/dist/types/src/imageLoader/getMinMax.d.ts.map +1 -0
- package/dist/types/src/imageLoader/getScalingParameters.d.ts +7 -0
- package/dist/types/src/imageLoader/getScalingParameters.d.ts.map +1 -0
- package/dist/types/src/imageLoader/imageIdToURI.d.ts +2 -0
- package/dist/types/src/imageLoader/imageIdToURI.d.ts.map +1 -0
- package/dist/types/src/imageLoader/index.d.ts +95 -0
- package/dist/types/src/imageLoader/index.d.ts.map +1 -0
- package/dist/types/src/imageLoader/internal/index.d.ts +9 -0
- package/dist/types/src/imageLoader/internal/index.d.ts.map +1 -0
- package/dist/types/src/imageLoader/internal/options.d.ts +4 -0
- package/dist/types/src/imageLoader/internal/options.d.ts.map +1 -0
- package/dist/types/src/imageLoader/internal/rangeRequest.d.ts +10 -0
- package/dist/types/src/imageLoader/internal/rangeRequest.d.ts.map +1 -0
- package/dist/types/src/imageLoader/internal/streamRequest.d.ts +3 -0
- package/dist/types/src/imageLoader/internal/streamRequest.d.ts.map +1 -0
- package/dist/types/src/imageLoader/internal/xhrRequest.d.ts +4 -0
- package/dist/types/src/imageLoader/internal/xhrRequest.d.ts.map +1 -0
- package/dist/types/src/imageLoader/isColorConversionRequired.d.ts +2 -0
- package/dist/types/src/imageLoader/isColorConversionRequired.d.ts.map +1 -0
- package/dist/types/src/imageLoader/isJPEGBaseline8BitColor.d.ts +4 -0
- package/dist/types/src/imageLoader/isJPEGBaseline8BitColor.d.ts.map +1 -0
- package/dist/types/src/imageLoader/isNMReconstructable.d.ts +2 -0
- package/dist/types/src/imageLoader/isNMReconstructable.d.ts.map +1 -0
- package/dist/types/src/imageLoader/registerLoaders.d.ts +3 -0
- package/dist/types/src/imageLoader/registerLoaders.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/combineFrameInstance.d.ts +13 -0
- package/dist/types/src/imageLoader/wadors/combineFrameInstance.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/extractMultipart.d.ts +24 -0
- package/dist/types/src/imageLoader/wadors/extractMultipart.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/findIndexOfString.d.ts +3 -0
- package/dist/types/src/imageLoader/wadors/findIndexOfString.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/getImageQualityStatus.d.ts +3 -0
- package/dist/types/src/imageLoader/wadors/getImageQualityStatus.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/getPixelData.d.ts +27 -0
- package/dist/types/src/imageLoader/wadors/getPixelData.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/getTagValue.d.ts +2 -0
- package/dist/types/src/imageLoader/wadors/getTagValue.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/index.d.ts +26 -0
- package/dist/types/src/imageLoader/wadors/index.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/loadImage.d.ts +26 -0
- package/dist/types/src/imageLoader/wadors/loadImage.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/loadImage_test.d.ts +2 -0
- package/dist/types/src/imageLoader/wadors/loadImage_test.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/metaData/NMHelpers.d.ts +6 -0
- package/dist/types/src/imageLoader/wadors/metaData/NMHelpers.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/metaData/USHelpers.d.ts +20 -0
- package/dist/types/src/imageLoader/wadors/metaData/USHelpers.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/metaData/extractPositioningFromMetadata.d.ts +4 -0
- package/dist/types/src/imageLoader/wadors/metaData/extractPositioningFromMetadata.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/metaData/getFirstNumberValue.d.ts +3 -0
- package/dist/types/src/imageLoader/wadors/metaData/getFirstNumberValue.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/metaData/getNumberString.d.ts +4 -0
- package/dist/types/src/imageLoader/wadors/metaData/getNumberString.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/metaData/getNumberValue.d.ts +4 -0
- package/dist/types/src/imageLoader/wadors/metaData/getNumberValue.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/metaData/getNumberValues.d.ts +4 -0
- package/dist/types/src/imageLoader/wadors/metaData/getNumberValues.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/metaData/getOverlayPlaneModule.d.ts +5 -0
- package/dist/types/src/imageLoader/wadors/metaData/getOverlayPlaneModule.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/metaData/getSequenceItems.d.ts +4 -0
- package/dist/types/src/imageLoader/wadors/metaData/getSequenceItems.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/metaData/getValue.d.ts +4 -0
- package/dist/types/src/imageLoader/wadors/metaData/getValue.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/metaData/index.d.ts +8 -0
- package/dist/types/src/imageLoader/wadors/metaData/index.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/metaData/metaDataProvider.d.ts +15 -0
- package/dist/types/src/imageLoader/wadors/metaData/metaDataProvider.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/metaDataManager.d.ts +15 -0
- package/dist/types/src/imageLoader/wadors/metaDataManager.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/register.d.ts +2 -0
- package/dist/types/src/imageLoader/wadors/register.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadors/retrieveMultiframeMetadata.d.ts +16 -0
- package/dist/types/src/imageLoader/wadors/retrieveMultiframeMetadata.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/combineFrameInstanceDataset.d.ts +23 -0
- package/dist/types/src/imageLoader/wadouri/combineFrameInstanceDataset.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/dataSetCacheManager.d.ts +32 -0
- package/dist/types/src/imageLoader/wadouri/dataSetCacheManager.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/dataSetCacheManager_test.d.ts +2 -0
- package/dist/types/src/imageLoader/wadouri/dataSetCacheManager_test.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/dataset-from-partial-content.d.ts +7 -0
- package/dist/types/src/imageLoader/wadouri/dataset-from-partial-content.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/fileManager.d.ts +12 -0
- package/dist/types/src/imageLoader/wadouri/fileManager.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/getEncapsulatedImageFrame.d.ts +3 -0
- package/dist/types/src/imageLoader/wadouri/getEncapsulatedImageFrame.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/getPixelData.d.ts +4 -0
- package/dist/types/src/imageLoader/wadouri/getPixelData.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/getUncompressedImageFrame.d.ts +4 -0
- package/dist/types/src/imageLoader/wadouri/getUncompressedImageFrame.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/index.d.ts +44 -0
- package/dist/types/src/imageLoader/wadouri/index.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/loadFileRequest.d.ts +3 -0
- package/dist/types/src/imageLoader/wadouri/loadFileRequest.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/loadImage.d.ts +10 -0
- package/dist/types/src/imageLoader/wadouri/loadImage.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/metaData/extractPositioningFromDataset.d.ts +7 -0
- package/dist/types/src/imageLoader/wadouri/metaData/extractPositioningFromDataset.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/metaData/getImagePixelModule.d.ts +5 -0
- package/dist/types/src/imageLoader/wadouri/metaData/getImagePixelModule.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/metaData/getLUTs.d.ts +5 -0
- package/dist/types/src/imageLoader/wadouri/metaData/getLUTs.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.d.ts +4 -0
- package/dist/types/src/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/metaData/getNumberValues.d.ts +4 -0
- package/dist/types/src/imageLoader/wadouri/metaData/getNumberValues.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/metaData/getOverlayPlaneModule.d.ts +5 -0
- package/dist/types/src/imageLoader/wadouri/metaData/getOverlayPlaneModule.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/metaData/index.d.ts +6 -0
- package/dist/types/src/imageLoader/wadouri/metaData/index.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/metaData/metaDataProvider.d.ts +3 -0
- package/dist/types/src/imageLoader/wadouri/metaData/metaDataProvider.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/parseImageId.d.ts +9 -0
- package/dist/types/src/imageLoader/wadouri/parseImageId.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/register.d.ts +3 -0
- package/dist/types/src/imageLoader/wadouri/register.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/retrieveMultiframeDataset.d.ts +19 -0
- package/dist/types/src/imageLoader/wadouri/retrieveMultiframeDataset.d.ts.map +1 -0
- package/dist/types/src/imageLoader/wadouri/unpackBinaryFrame.d.ts +4 -0
- package/dist/types/src/imageLoader/wadouri/unpackBinaryFrame.d.ts.map +1 -0
- package/dist/types/src/shared/calculateMinMax.d.ts +3 -0
- package/dist/types/src/shared/calculateMinMax.d.ts.map +1 -0
- package/dist/types/src/shared/calculateMinMax_test.d.ts +2 -0
- package/dist/types/src/shared/calculateMinMax_test.d.ts.map +1 -0
- package/dist/types/src/shared/decodeImageFrame.d.ts +2 -0
- package/dist/types/src/shared/decodeImageFrame.d.ts.map +1 -0
- package/dist/types/src/shared/decoders/decodeBigEndian.d.ts +5 -0
- package/dist/types/src/shared/decoders/decodeBigEndian.d.ts.map +1 -0
- package/dist/types/src/shared/decoders/decodeHTJ2K.d.ts +6 -0
- package/dist/types/src/shared/decoders/decodeHTJ2K.d.ts.map +1 -0
- package/dist/types/src/shared/decoders/decodeJPEG2000.d.ts +5 -0
- package/dist/types/src/shared/decoders/decodeJPEG2000.d.ts.map +1 -0
- package/dist/types/src/shared/decoders/decodeJPEGBaseline12Bit-js.d.ts +6 -0
- package/dist/types/src/shared/decoders/decodeJPEGBaseline12Bit-js.d.ts.map +1 -0
- package/dist/types/src/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.d.ts +1 -0
- package/dist/types/src/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.d.ts.map +1 -0
- package/dist/types/src/shared/decoders/decodeJPEGBaseline8Bit.d.ts +4 -0
- package/dist/types/src/shared/decoders/decodeJPEGBaseline8Bit.d.ts.map +1 -0
- package/dist/types/src/shared/decoders/decodeJPEGLS.d.ts +5 -0
- package/dist/types/src/shared/decoders/decodeJPEGLS.d.ts.map +1 -0
- package/dist/types/src/shared/decoders/decodeJPEGLossless.d.ts +6 -0
- package/dist/types/src/shared/decoders/decodeJPEGLossless.d.ts.map +1 -0
- package/dist/types/src/shared/decoders/decodeLittleEndian.d.ts +5 -0
- package/dist/types/src/shared/decoders/decodeLittleEndian.d.ts.map +1 -0
- package/dist/types/src/shared/decoders/decodeRLE.d.ts +5 -0
- package/dist/types/src/shared/decoders/decodeRLE.d.ts.map +1 -0
- package/dist/types/src/shared/getMinMax.d.ts +7 -0
- package/dist/types/src/shared/getMinMax.d.ts.map +1 -0
- package/dist/types/src/shared/getMinMax_test.d.ts +2 -0
- package/dist/types/src/shared/getMinMax_test.d.ts.map +1 -0
- package/dist/types/src/shared/getPixelDataTypeFromMinMax.d.ts +3 -0
- package/dist/types/src/shared/getPixelDataTypeFromMinMax.d.ts.map +1 -0
- package/dist/types/src/shared/isColorImage.d.ts +2 -0
- package/dist/types/src/shared/isColorImage.d.ts.map +1 -0
- package/dist/types/src/shared/scaling/bilinear.d.ts +2 -0
- package/dist/types/src/shared/scaling/bilinear.d.ts.map +1 -0
- package/dist/types/src/shared/scaling/replicate.d.ts +2 -0
- package/dist/types/src/shared/scaling/replicate.d.ts.map +1 -0
- package/dist/types/src/shared/scaling/scaleArray.d.ts +3 -0
- package/dist/types/src/shared/scaling/scaleArray.d.ts.map +1 -0
- package/dist/types/src/types/DICOMLoaderDataSetWithFetchMore.d.ts +10 -0
- package/dist/types/src/types/DICOMLoaderDataSetWithFetchMore.d.ts.map +1 -0
- package/dist/types/src/types/DICOMLoaderIImage.d.ts +14 -0
- package/dist/types/src/types/DICOMLoaderIImage.d.ts.map +1 -0
- package/dist/types/src/types/DICOMLoaderImageOptions.d.ts +27 -0
- package/dist/types/src/types/DICOMLoaderImageOptions.d.ts.map +1 -0
- package/dist/types/src/types/ImageFrame.d.ts +44 -0
- package/dist/types/src/types/ImageFrame.d.ts.map +1 -0
- package/dist/types/src/types/LoadRequestFunction.d.ts +2 -0
- package/dist/types/src/types/LoadRequestFunction.d.ts.map +1 -0
- package/dist/types/src/types/LoaderDecodeOptions.d.ts +5 -0
- package/dist/types/src/types/LoaderDecodeOptions.d.ts.map +1 -0
- package/dist/types/src/types/LoaderOptions.d.ts +19 -0
- package/dist/types/src/types/LoaderOptions.d.ts.map +1 -0
- package/dist/types/src/types/LutType.d.ts +7 -0
- package/dist/types/src/types/LutType.d.ts.map +1 -0
- package/dist/types/src/types/MetadataModules.d.ts +67 -0
- package/dist/types/src/types/MetadataModules.d.ts.map +1 -0
- package/dist/types/src/types/PixelDataTypedArray.d.ts +3 -0
- package/dist/types/src/types/PixelDataTypedArray.d.ts.map +1 -0
- package/dist/types/src/types/WADORSMetaData.d.ts +5 -0
- package/dist/types/src/types/WADORSMetaData.d.ts.map +1 -0
- package/dist/types/src/types/WebWorkerTypes.d.ts +65 -0
- package/dist/types/src/types/WebWorkerTypes.d.ts.map +1 -0
- package/dist/types/src/types/XHRRequest.d.ts +17 -0
- package/dist/types/src/types/XHRRequest.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +15 -0
- package/dist/types/src/types/index.d.ts.map +1 -0
- package/dist/types/src/version.d.ts +3 -0
- package/dist/types/src/version.d.ts.map +1 -0
- package/package.json +19 -9
- package/dist/cornerstoneDICOMImageLoaderNoWebWorkers.bundle.min.js +0 -2
- package/dist/cornerstoneDICOMImageLoaderNoWebWorkers.bundle.min.js.map +0 -1
- package/dist/dynamic-import/610.min.worker.js +0 -2
- package/dist/dynamic-import/610.min.worker.js.map +0 -1
- package/dist/dynamic-import/945.min.worker.js.map +0 -1
- package/dist/dynamic-import/index.worker.5a5a581362c14598c3d9.worker.js +0 -2
- package/dist/dynamic-import/index.worker.5a5a581362c14598c3d9.worker.js.map +0 -1
- package/dist/index.worker.bundle.min.worker.js +0 -2
- package/dist/index.worker.bundle.min.worker.js.map +0 -1
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { getOptions } from './options';
|
|
2
|
+
import metaDataManager from '../wadors/metaDataManager';
|
|
3
|
+
import extractMultipart from '../wadors/extractMultipart';
|
|
4
|
+
import { getImageQualityStatus } from '../wadors/getImageQualityStatus';
|
|
5
|
+
export default function rangeRequest(url, imageId, defaultHeaders = {}, options = {}) {
|
|
6
|
+
const globalOptions = getOptions();
|
|
7
|
+
const { retrieveOptions = {}, streamingData } = options;
|
|
8
|
+
const chunkSize = streamingData.chunkSize ||
|
|
9
|
+
getValue(imageId, retrieveOptions, 'chunkSize') ||
|
|
10
|
+
65536;
|
|
11
|
+
const errorInterceptor = (err) => {
|
|
12
|
+
if (typeof globalOptions.errorInterceptor === 'function') {
|
|
13
|
+
const error = new Error('request failed');
|
|
14
|
+
globalOptions.errorInterceptor(error);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
console.warn('rangeRequest:Caught', err);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const promise = new Promise(async (resolve, reject) => {
|
|
21
|
+
const headers = Object.assign({}, defaultHeaders);
|
|
22
|
+
Object.keys(headers).forEach(function (key) {
|
|
23
|
+
if (headers[key] === null || headers[key] === undefined) {
|
|
24
|
+
delete headers[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
try {
|
|
28
|
+
if (!streamingData.encodedData) {
|
|
29
|
+
streamingData.chunkSize = chunkSize;
|
|
30
|
+
streamingData.rangesFetched = 0;
|
|
31
|
+
}
|
|
32
|
+
const byteRange = getByteRange(streamingData, retrieveOptions);
|
|
33
|
+
const { encodedData, responseHeaders } = await fetchRangeAndAppend(url, headers, byteRange, streamingData);
|
|
34
|
+
const contentType = responseHeaders.get('content-type');
|
|
35
|
+
const { totalBytes } = streamingData;
|
|
36
|
+
const doneAllBytes = totalBytes === encodedData.byteLength;
|
|
37
|
+
const extract = extractMultipart(contentType, encodedData, {
|
|
38
|
+
isPartial: true,
|
|
39
|
+
});
|
|
40
|
+
const imageQualityStatus = getImageQualityStatus(retrieveOptions, doneAllBytes || extract.extractDone);
|
|
41
|
+
resolve({
|
|
42
|
+
...extract,
|
|
43
|
+
imageQualityStatus,
|
|
44
|
+
percentComplete: extract.extractDone
|
|
45
|
+
? 100
|
|
46
|
+
: (chunkSize * 100) / totalBytes,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
errorInterceptor(err);
|
|
51
|
+
console.error(err);
|
|
52
|
+
reject(err);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
return promise;
|
|
56
|
+
}
|
|
57
|
+
async function fetchRangeAndAppend(url, headers, range, streamingData) {
|
|
58
|
+
if (range) {
|
|
59
|
+
headers = Object.assign(headers, {
|
|
60
|
+
Range: `bytes=${range[0]}-${range[1]}`,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
let { encodedData } = streamingData;
|
|
64
|
+
if (range[1] && encodedData?.byteLength > range[1]) {
|
|
65
|
+
return streamingData;
|
|
66
|
+
}
|
|
67
|
+
const response = await fetch(url, {
|
|
68
|
+
headers,
|
|
69
|
+
signal: undefined,
|
|
70
|
+
});
|
|
71
|
+
const responseArrayBuffer = await response.arrayBuffer();
|
|
72
|
+
const responseTypedArray = new Uint8Array(responseArrayBuffer);
|
|
73
|
+
const { status } = response;
|
|
74
|
+
let newByteArray;
|
|
75
|
+
if (encodedData) {
|
|
76
|
+
newByteArray = new Uint8Array(encodedData.length + responseTypedArray.length);
|
|
77
|
+
newByteArray.set(encodedData, 0);
|
|
78
|
+
newByteArray.set(responseTypedArray, encodedData.length);
|
|
79
|
+
streamingData.rangesFetched = 1;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
newByteArray = new Uint8Array(responseTypedArray.length);
|
|
83
|
+
newByteArray.set(responseTypedArray, 0);
|
|
84
|
+
streamingData.rangesFetched++;
|
|
85
|
+
}
|
|
86
|
+
streamingData.encodedData = encodedData = newByteArray;
|
|
87
|
+
streamingData.responseHeaders = response.headers;
|
|
88
|
+
const contentRange = response.headers.get('Content-Range');
|
|
89
|
+
if (contentRange) {
|
|
90
|
+
streamingData.totalBytes = Number(contentRange.split('/')[1]);
|
|
91
|
+
}
|
|
92
|
+
else if (status !== 206 || !range) {
|
|
93
|
+
streamingData.totalBytes = encodedData?.byteLength;
|
|
94
|
+
}
|
|
95
|
+
else if (range[1] === '' || encodedData?.length < range[1]) {
|
|
96
|
+
streamingData.totalBytes = encodedData.byteLength;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
streamingData.totalBytes = Number.MAX_SAFE_INTEGER;
|
|
100
|
+
}
|
|
101
|
+
return streamingData;
|
|
102
|
+
}
|
|
103
|
+
function getValue(imageId, src, attr) {
|
|
104
|
+
const value = src[attr];
|
|
105
|
+
if (typeof value !== 'function') {
|
|
106
|
+
return value;
|
|
107
|
+
}
|
|
108
|
+
const metaData = metaDataManager.get(imageId);
|
|
109
|
+
return value(metaData, imageId);
|
|
110
|
+
}
|
|
111
|
+
function getByteRange(streamingData, retrieveOptions) {
|
|
112
|
+
const { totalBytes, encodedData, chunkSize = 65536 } = streamingData;
|
|
113
|
+
const { rangeIndex = 0 } = retrieveOptions;
|
|
114
|
+
if (rangeIndex === -1 && (!totalBytes || !encodedData)) {
|
|
115
|
+
return [0, ''];
|
|
116
|
+
}
|
|
117
|
+
if (rangeIndex === -1 || encodedData?.byteLength > totalBytes - chunkSize) {
|
|
118
|
+
return [encodedData?.byteLength || 0, ''];
|
|
119
|
+
}
|
|
120
|
+
return [encodedData?.byteLength || 0, chunkSize * (rangeIndex + 1) - 1];
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=rangeRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rangeRequest.js","sourceRoot":"","sources":["../../../../../src/imageLoader/internal/rangeRequest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { utilities } from '@cornerstonejs/core';
|
|
2
|
+
import { getOptions } from './options';
|
|
3
|
+
import extractMultipart from '../wadors/extractMultipart';
|
|
4
|
+
import { getImageQualityStatus } from '../wadors/getImageQualityStatus';
|
|
5
|
+
const { ProgressiveIterator } = utilities;
|
|
6
|
+
export default function streamRequest(url, imageId, defaultHeaders = {}, options = {}) {
|
|
7
|
+
const globalOptions = getOptions();
|
|
8
|
+
const { retrieveOptions = {}, streamingData = {}, } = options;
|
|
9
|
+
const minChunkSize = retrieveOptions.chunkSize || 128 * 1024;
|
|
10
|
+
const errorInterceptor = (err) => {
|
|
11
|
+
if (typeof globalOptions.errorInterceptor === 'function') {
|
|
12
|
+
const error = new Error('request failed');
|
|
13
|
+
globalOptions.errorInterceptor(error);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const loadIterator = new ProgressiveIterator('streamRequest');
|
|
17
|
+
loadIterator.generate(async (iterator, reject) => {
|
|
18
|
+
const headers = Object.assign({}, defaultHeaders);
|
|
19
|
+
Object.keys(headers).forEach(function (key) {
|
|
20
|
+
if (headers[key] === null) {
|
|
21
|
+
headers[key] = undefined;
|
|
22
|
+
}
|
|
23
|
+
if (key === 'Accept' && url.indexOf('accept=') !== -1) {
|
|
24
|
+
headers[key] = undefined;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
try {
|
|
28
|
+
const response = await fetch(url, {
|
|
29
|
+
headers: defaultHeaders,
|
|
30
|
+
signal: undefined,
|
|
31
|
+
});
|
|
32
|
+
if (response.status !== 200) {
|
|
33
|
+
throw new Error(`Couldn't retrieve ${url} got status ${response.status}`);
|
|
34
|
+
}
|
|
35
|
+
const responseReader = response.body.getReader();
|
|
36
|
+
const responseHeaders = response.headers;
|
|
37
|
+
const contentType = responseHeaders.get('content-type');
|
|
38
|
+
const totalBytes = Number(responseHeaders.get('Content-Length'));
|
|
39
|
+
let readDone = false;
|
|
40
|
+
let encodedData = streamingData.encodedData;
|
|
41
|
+
let lastSize = streamingData.lastSize || 0;
|
|
42
|
+
streamingData.isPartial = true;
|
|
43
|
+
while (!readDone) {
|
|
44
|
+
const { done, value } = await responseReader.read();
|
|
45
|
+
encodedData = appendChunk(encodedData, value);
|
|
46
|
+
if (!encodedData) {
|
|
47
|
+
if (readDone) {
|
|
48
|
+
throw new Error(`Done but no image frame available ${imageId}`);
|
|
49
|
+
}
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
readDone = done || encodedData.byteLength === totalBytes;
|
|
53
|
+
if (!readDone && encodedData.length < lastSize + minChunkSize) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
lastSize = encodedData.length;
|
|
57
|
+
streamingData.isPartial = !done;
|
|
58
|
+
const extracted = extractMultipart(contentType, encodedData, streamingData);
|
|
59
|
+
const imageQualityStatus = getImageQualityStatus(retrieveOptions, readDone);
|
|
60
|
+
const detail = {
|
|
61
|
+
url,
|
|
62
|
+
imageId,
|
|
63
|
+
...extracted,
|
|
64
|
+
percentComplete: done
|
|
65
|
+
? 100
|
|
66
|
+
: (extracted.pixelData?.length * 100) / totalBytes,
|
|
67
|
+
imageQualityStatus,
|
|
68
|
+
done: readDone,
|
|
69
|
+
};
|
|
70
|
+
iterator.add(detail, readDone);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
errorInterceptor(err);
|
|
75
|
+
console.error(err);
|
|
76
|
+
reject(err);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
return loadIterator.getNextPromise();
|
|
80
|
+
}
|
|
81
|
+
function appendChunk(existing, chunk) {
|
|
82
|
+
if (!existing) {
|
|
83
|
+
return chunk;
|
|
84
|
+
}
|
|
85
|
+
if (!chunk) {
|
|
86
|
+
return existing;
|
|
87
|
+
}
|
|
88
|
+
const newDataArray = new Uint8Array(existing.length + chunk.length);
|
|
89
|
+
newDataArray.set(existing, 0);
|
|
90
|
+
newDataArray.set(chunk, existing.length);
|
|
91
|
+
return newDataArray;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=streamRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamRequest.js","sourceRoot":"","sources":["../../../../../src/imageLoader/internal/streamRequest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import external from '../../externalModules';
|
|
2
|
+
import { getOptions } from './options';
|
|
3
|
+
function xhrRequest(url, imageId, defaultHeaders = {}, params = {}) {
|
|
4
|
+
const { cornerstone } = external;
|
|
5
|
+
const options = getOptions();
|
|
6
|
+
const errorInterceptor = (xhr) => {
|
|
7
|
+
if (typeof options.errorInterceptor === 'function') {
|
|
8
|
+
const error = new Error('request failed');
|
|
9
|
+
error.request = xhr;
|
|
10
|
+
error.response = xhr.response;
|
|
11
|
+
error.status = xhr.status;
|
|
12
|
+
options.errorInterceptor(error);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const xhr = new XMLHttpRequest();
|
|
16
|
+
const promise = new Promise((resolve, reject) => {
|
|
17
|
+
options.open(xhr, url, defaultHeaders, params);
|
|
18
|
+
const beforeSendHeaders = options.beforeSend(xhr, imageId, defaultHeaders, params);
|
|
19
|
+
xhr.responseType = 'arraybuffer';
|
|
20
|
+
const headers = Object.assign({}, defaultHeaders, beforeSendHeaders);
|
|
21
|
+
Object.keys(headers).forEach(function (key) {
|
|
22
|
+
if (headers[key] === null) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (key === 'Accept' && url.indexOf('accept=') !== -1) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
xhr.setRequestHeader(key, headers[key]);
|
|
29
|
+
});
|
|
30
|
+
params.deferred = {
|
|
31
|
+
resolve,
|
|
32
|
+
reject,
|
|
33
|
+
};
|
|
34
|
+
params.url = url;
|
|
35
|
+
params.imageId = imageId;
|
|
36
|
+
xhr.onloadstart = function (event) {
|
|
37
|
+
if (options.onloadstart) {
|
|
38
|
+
options.onloadstart(event, params);
|
|
39
|
+
}
|
|
40
|
+
const eventData = {
|
|
41
|
+
url,
|
|
42
|
+
imageId,
|
|
43
|
+
};
|
|
44
|
+
cornerstone.triggerEvent(cornerstone.events, 'cornerstoneimageloadstart', eventData);
|
|
45
|
+
};
|
|
46
|
+
xhr.onloadend = function (event) {
|
|
47
|
+
if (options.onloadend) {
|
|
48
|
+
options.onloadend(event, params);
|
|
49
|
+
}
|
|
50
|
+
const eventData = {
|
|
51
|
+
url,
|
|
52
|
+
imageId,
|
|
53
|
+
};
|
|
54
|
+
cornerstone.triggerEvent(cornerstone.events, 'cornerstoneimageloadend', eventData);
|
|
55
|
+
};
|
|
56
|
+
xhr.onreadystatechange = function (event) {
|
|
57
|
+
if (options.onreadystatechange) {
|
|
58
|
+
options.onreadystatechange(event, params);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (xhr.readyState === 4) {
|
|
62
|
+
if (xhr.status === 200 || xhr.status === 206) {
|
|
63
|
+
options
|
|
64
|
+
.beforeProcessing(xhr)
|
|
65
|
+
.then(resolve)
|
|
66
|
+
.catch(() => {
|
|
67
|
+
errorInterceptor(xhr);
|
|
68
|
+
reject(xhr);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
errorInterceptor(xhr);
|
|
73
|
+
reject(xhr);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
xhr.onprogress = function (oProgress) {
|
|
78
|
+
const loaded = oProgress.loaded;
|
|
79
|
+
let total;
|
|
80
|
+
let percentComplete;
|
|
81
|
+
if (oProgress.lengthComputable) {
|
|
82
|
+
total = oProgress.total;
|
|
83
|
+
percentComplete = Math.round((loaded / total) * 100);
|
|
84
|
+
}
|
|
85
|
+
if (options.onprogress) {
|
|
86
|
+
options.onprogress(oProgress, params);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
xhr.onerror = function () {
|
|
90
|
+
errorInterceptor(xhr);
|
|
91
|
+
reject(xhr);
|
|
92
|
+
};
|
|
93
|
+
xhr.onabort = function () {
|
|
94
|
+
errorInterceptor(xhr);
|
|
95
|
+
reject(xhr);
|
|
96
|
+
};
|
|
97
|
+
xhr.send();
|
|
98
|
+
});
|
|
99
|
+
promise.xhr = xhr;
|
|
100
|
+
return promise;
|
|
101
|
+
}
|
|
102
|
+
export default xhrRequest;
|
|
103
|
+
//# sourceMappingURL=xhrRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xhrRequest.js","sourceRoot":"","sources":["../../../../../src/imageLoader/internal/xhrRequest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export default function isColorConversionRequired(imageFrame) {
|
|
2
|
+
if (imageFrame === undefined) {
|
|
3
|
+
return false;
|
|
4
|
+
}
|
|
5
|
+
const { rows, columns, photometricInterpretation, pixelDataLength } = imageFrame;
|
|
6
|
+
if (pixelDataLength === 4 * columns * rows) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
if (photometricInterpretation.endsWith('420')) {
|
|
10
|
+
return (pixelDataLength ===
|
|
11
|
+
(3 * Math.ceil(columns / 2) + Math.floor(columns / 2)) * rows);
|
|
12
|
+
}
|
|
13
|
+
else if (photometricInterpretation.endsWith('422')) {
|
|
14
|
+
return (pixelDataLength ===
|
|
15
|
+
(3 * Math.ceil(columns / 2) + Math.floor(columns / 2)) *
|
|
16
|
+
Math.ceil(rows / 2) +
|
|
17
|
+
Math.floor(rows / 2) * columns);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return photometricInterpretation !== 'RGB';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=isColorConversionRequired.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isColorConversionRequired.js","sourceRoot":"","sources":["../../../../src/imageLoader/isColorConversionRequired.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,UAAU;IAC1D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,GACjE,UAAU,CAAC;IAGb,IAAI,eAAe,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,EAAE,CAAC;QAE3C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,yBAAyB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO,CACL,eAAe;YACf,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAC9D,CAAC;IACJ,CAAC;SAAM,IAAI,yBAAyB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,CACL,eAAe;YACf,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;gBACnB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CACjC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,yBAAyB,KAAK,KAAK,CAAC;IAE7C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
function isJPEGBaseline8BitColor(imageFrame, transferSyntax) {
|
|
2
|
+
transferSyntax = transferSyntax || imageFrame.transferSyntax;
|
|
3
|
+
if (imageFrame.bitsAllocated === 8 &&
|
|
4
|
+
transferSyntax === '1.2.840.10008.1.2.4.50' &&
|
|
5
|
+
(imageFrame.samplesPerPixel === 3 || imageFrame.samplesPerPixel === 4)) {
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export default isJPEGBaseline8BitColor;
|
|
10
|
+
//# sourceMappingURL=isJPEGBaseline8BitColor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isJPEGBaseline8BitColor.js","sourceRoot":"","sources":["../../../../src/imageLoader/isJPEGBaseline8BitColor.ts"],"names":[],"mappings":"AAEA,SAAS,uBAAuB,CAC9B,UAAsB,EACtB,cAAsB;IAGtB,cAAc,GAAG,cAAc,IAAK,UAAkB,CAAC,cAAc,CAAC;IAEtE,IACE,UAAU,CAAC,aAAa,KAAK,CAAC;QAC9B,cAAc,KAAK,wBAAwB;QAC3C,CAAC,UAAU,CAAC,eAAe,KAAK,CAAC,IAAI,UAAU,CAAC,eAAe,KAAK,CAAC,CAAC,EACtE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,eAAe,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isNMReconstructable.js","sourceRoot":"","sources":["../../../../src/imageLoader/isNMReconstructable.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,YAAY;IACtD,OAAO,YAAY,KAAK,YAAY,IAAI,YAAY,KAAK,kBAAkB,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import wadors from './wadors/index';
|
|
2
|
+
import wadouri from './wadouri/index';
|
|
3
|
+
function registerLoaders(cornerstone) {
|
|
4
|
+
wadors.register(cornerstone);
|
|
5
|
+
wadouri.register(cornerstone);
|
|
6
|
+
}
|
|
7
|
+
export default registerLoaders;
|
|
8
|
+
//# sourceMappingURL=registerLoaders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerLoaders.js","sourceRoot":"","sources":["../../../../src/imageLoader/registerLoaders.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,gBAAgB,CAAC;AACpC,OAAO,OAAO,MAAM,iBAAiB,CAAC;AAQtC,SAAS,eAAe,CAAC,WAAgB;IACvC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAChC,CAAC;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import getTagValue from './getTagValue';
|
|
2
|
+
function getFrameInformation(PerFrameFunctionalGroupsSequence, SharedFunctionalGroupsSequence, frameNumber) {
|
|
3
|
+
const shared = (SharedFunctionalGroupsSequence
|
|
4
|
+
? Object.values(SharedFunctionalGroupsSequence[0])
|
|
5
|
+
: [])
|
|
6
|
+
.map((it) => it[0])
|
|
7
|
+
.filter((it) => it !== undefined && typeof it === 'object');
|
|
8
|
+
const perFrame = (PerFrameFunctionalGroupsSequence
|
|
9
|
+
? Object.values(PerFrameFunctionalGroupsSequence[frameNumber - 1])
|
|
10
|
+
: [])
|
|
11
|
+
.map((it) => it.Value[0])
|
|
12
|
+
.filter((it) => it !== undefined && typeof it === 'object');
|
|
13
|
+
return {
|
|
14
|
+
shared,
|
|
15
|
+
perFrame,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function getMultiframeInformation(metaData) {
|
|
19
|
+
let { 52009230: PerFrameFunctionalGroupsSequence, 52009229: SharedFunctionalGroupsSequence, '00280008': NumberOfFrames, ...rest } = metaData;
|
|
20
|
+
PerFrameFunctionalGroupsSequence = getTagValue(PerFrameFunctionalGroupsSequence, false);
|
|
21
|
+
SharedFunctionalGroupsSequence = getTagValue(SharedFunctionalGroupsSequence, false);
|
|
22
|
+
NumberOfFrames = getTagValue(NumberOfFrames);
|
|
23
|
+
return {
|
|
24
|
+
PerFrameFunctionalGroupsSequence,
|
|
25
|
+
SharedFunctionalGroupsSequence,
|
|
26
|
+
NumberOfFrames,
|
|
27
|
+
rest,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function combineFrameInstance(frameNumber, instance) {
|
|
31
|
+
const { PerFrameFunctionalGroupsSequence, SharedFunctionalGroupsSequence, NumberOfFrames, rest, } = getMultiframeInformation(instance);
|
|
32
|
+
if (PerFrameFunctionalGroupsSequence || NumberOfFrames > 1) {
|
|
33
|
+
const { shared, perFrame } = getFrameInformation(PerFrameFunctionalGroupsSequence, SharedFunctionalGroupsSequence, frameNumber);
|
|
34
|
+
const newInstance = Object.assign(instance, { frameNumber });
|
|
35
|
+
[...shared, ...perFrame].forEach((item) => {
|
|
36
|
+
Object.entries(item).forEach(([key, value]) => {
|
|
37
|
+
newInstance[key] = value;
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
return Object.assign(rest, { '00280008': NumberOfFrames }, newInstance);
|
|
41
|
+
}
|
|
42
|
+
return instance;
|
|
43
|
+
}
|
|
44
|
+
export { combineFrameInstance, getMultiframeInformation, getFrameInformation };
|
|
45
|
+
//# sourceMappingURL=combineFrameInstance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combineFrameInstance.js","sourceRoot":"","sources":["../../../../../src/imageLoader/wadors/combineFrameInstance.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,SAAS,mBAAmB,CAC1B,gCAAgC,EAChC,8BAA8B,EAC9B,WAAW;IAEX,MAAM,MAAM,GAAG,CACb,8BAA8B;QAC5B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,EAAE,CACP;SACE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAClB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,IAAI,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,CACf,gCAAgC;QAC9B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,gCAAgC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,EAAE,CACP;SACE,GAAG,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC7B,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,IAAI,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC;IAE9D,OAAO;QACL,MAAM;QACN,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,QAAQ;IACxC,IAAI,EACF,QAAQ,EAAE,gCAAgC,EAC1C,QAAQ,EAAE,8BAA8B,EACxC,UAAU,EAAE,cAAc,EAE1B,GAAG,IAAI,EACR,GAAG,QAAQ,CAAC;IAEb,gCAAgC,GAAG,WAAW,CAC5C,gCAAgC,EAChC,KAAK,CACN,CAAC;IACF,8BAA8B,GAAG,WAAW,CAC1C,8BAA8B,EAC9B,KAAK,CACN,CAAC;IACF,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;IAE7C,OAAO;QACL,gCAAgC;QAChC,8BAA8B;QAC9B,cAAc;QACd,IAAI;KACL,CAAC;AACJ,CAAC;AAGD,SAAS,oBAAoB,CAAC,WAAW,EAAE,QAAQ;IACjD,MAAM,EACJ,gCAAgC,EAChC,8BAA8B,EAC9B,cAAc,EACd,IAAI,GACL,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAEvC,IAAI,gCAAgC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QAC3D,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,mBAAmB,CAC9C,gCAAgC,EAChC,8BAA8B,EAC9B,WAAW,CACZ,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAG7D,CAAC,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACxC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC5C,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,WAAW,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Enums } from '@cornerstonejs/core';
|
|
2
|
+
import findIndexOfString from './findIndexOfString';
|
|
3
|
+
const { ImageQualityStatus } = Enums;
|
|
4
|
+
export default function extractMultipart(contentType, imageFrameAsArrayBuffer, options) {
|
|
5
|
+
options ||= {};
|
|
6
|
+
const response = new Uint8Array(imageFrameAsArrayBuffer);
|
|
7
|
+
const isPartial = !!options?.isPartial;
|
|
8
|
+
if (contentType.indexOf('multipart') === -1) {
|
|
9
|
+
return {
|
|
10
|
+
contentType,
|
|
11
|
+
imageQualityStatus: isPartial
|
|
12
|
+
? ImageQualityStatus.SUBRESOLUTION
|
|
13
|
+
: ImageQualityStatus.FULL_RESOLUTION,
|
|
14
|
+
pixelData: response,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
let { tokenIndex, responseHeaders, boundary, multipartContentType } = options;
|
|
18
|
+
tokenIndex ||= findIndexOfString(response, '\r\n\r\n');
|
|
19
|
+
if (tokenIndex === -1) {
|
|
20
|
+
throw new Error('invalid response - no multipart mime header');
|
|
21
|
+
}
|
|
22
|
+
if (!boundary) {
|
|
23
|
+
const header = uint8ArrayToString(response, 0, tokenIndex);
|
|
24
|
+
responseHeaders = header.split('\r\n');
|
|
25
|
+
boundary = findBoundary(responseHeaders);
|
|
26
|
+
if (!boundary) {
|
|
27
|
+
throw new Error('invalid response - no boundary marker');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const offset = tokenIndex + 4;
|
|
31
|
+
const endIndex = findIndexOfString(response, boundary, offset);
|
|
32
|
+
if (endIndex === -1 && !isPartial) {
|
|
33
|
+
throw new Error('invalid response - terminating boundary not found');
|
|
34
|
+
}
|
|
35
|
+
multipartContentType ||= findContentType(responseHeaders);
|
|
36
|
+
options.tokenIndex = tokenIndex;
|
|
37
|
+
options.boundary = boundary;
|
|
38
|
+
options.responseHeaders = responseHeaders;
|
|
39
|
+
options.multipartContentType = multipartContentType;
|
|
40
|
+
options.isPartial = endIndex === -1;
|
|
41
|
+
return {
|
|
42
|
+
contentType: multipartContentType,
|
|
43
|
+
extractDone: !isPartial || endIndex !== -1,
|
|
44
|
+
tokenIndex,
|
|
45
|
+
responseHeaders,
|
|
46
|
+
boundary,
|
|
47
|
+
multipartContentType,
|
|
48
|
+
pixelData: imageFrameAsArrayBuffer.slice(offset, endIndex - 2),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export function findBoundary(header) {
|
|
52
|
+
for (let i = 0; i < header.length; i++) {
|
|
53
|
+
if (header[i].substr(0, 2) === '--') {
|
|
54
|
+
return header[i];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export function findContentType(header) {
|
|
59
|
+
for (let i = 0; i < header.length; i++) {
|
|
60
|
+
if (header[i].substr(0, 13) === 'Content-Type:') {
|
|
61
|
+
return header[i].substr(13).trim();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export function uint8ArrayToString(data, offset, length) {
|
|
66
|
+
offset = offset || 0;
|
|
67
|
+
length = length || data.length - offset;
|
|
68
|
+
let str = '';
|
|
69
|
+
for (let i = offset; i < offset + length; i++) {
|
|
70
|
+
str += String.fromCharCode(data[i]);
|
|
71
|
+
}
|
|
72
|
+
return str;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=extractMultipart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractMultipart.js","sourceRoot":"","sources":["../../../../../src/imageLoader/wadors/extractMultipart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD,MAAM,EAAE,kBAAkB,EAAE,GAAG,KAAK,CAAC;AAarC,MAAM,CAAC,OAAO,UAAU,gBAAgB,CACtC,WAAmB,EACnB,uBAAuB,EACvB,OAAQ;IAER,OAAO,KAAK,EAAE,CAAC;IAEf,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,uBAAuB,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC;IACvC,IAAI,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC5C,OAAO;YACL,WAAW;YACX,kBAAkB,EAAE,SAAS;gBAC3B,CAAC,CAAC,kBAAkB,CAAC,aAAa;gBAClC,CAAC,CAAC,kBAAkB,CAAC,eAAe;YACtC,SAAS,EAAE,QAAQ;SACpB,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC;IAG9E,UAAU,KAAK,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAEvD,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QAE3D,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACvC,QAAQ,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;QAEzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,GAAG,CAAC,CAAC;IAG9B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE/D,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,oBAAoB,KAAK,eAAe,CAAC,eAAe,CAAC,CAAC;IAE1D,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;IAChC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC5B,OAAO,CAAC,eAAe,GAAG,eAAe,CAAC;IAC1C,OAAO,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IACpD,OAAO,CAAC,SAAS,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC;IAGpC,OAAO;QACL,WAAW,EAAE,oBAAoB;QAGjC,WAAW,EAAE,CAAC,SAAS,IAAI,QAAQ,KAAK,CAAC,CAAC;QAC1C,UAAU;QACV,eAAe;QACf,QAAQ;QACR,oBAAoB;QAEpB,SAAS,EAAE,uBAAuB,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG,CAAC,CAAC;KAC/D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAgB;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACpC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAgB;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,eAAe,EAAE,CAAC;YAChD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM;IACrD,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;IACrB,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACxC,IAAI,GAAG,GAAG,EAAE,CAAC;IAEb,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
function checkToken(token, data, dataOffset) {
|
|
2
|
+
if (dataOffset + token.length > data.length) {
|
|
3
|
+
return false;
|
|
4
|
+
}
|
|
5
|
+
let endIndex = dataOffset;
|
|
6
|
+
for (let i = 0; i < token.length; i++) {
|
|
7
|
+
if (token[i] !== data[endIndex++]) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
function stringToUint8Array(str) {
|
|
14
|
+
const uint = new Uint8Array(str.length);
|
|
15
|
+
for (let i = 0, j = str.length; i < j; i++) {
|
|
16
|
+
uint[i] = str.charCodeAt(i);
|
|
17
|
+
}
|
|
18
|
+
return uint;
|
|
19
|
+
}
|
|
20
|
+
function findIndexOfString(data, str, offset) {
|
|
21
|
+
offset = offset || 0;
|
|
22
|
+
const token = stringToUint8Array(str);
|
|
23
|
+
for (let i = offset; i < data.length; i++) {
|
|
24
|
+
if (token[0] === data[i]) {
|
|
25
|
+
if (checkToken(token, data, i)) {
|
|
26
|
+
return i;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return -1;
|
|
31
|
+
}
|
|
32
|
+
export default findIndexOfString;
|
|
33
|
+
//# sourceMappingURL=findIndexOfString.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findIndexOfString.js","sourceRoot":"","sources":["../../../../../src/imageLoader/wadors/findIndexOfString.ts"],"names":[],"mappings":"AAAA,SAAS,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU;IACzC,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,QAAQ,GAAG,UAAU,CAAC;IAE1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAgB,EAChB,GAAW,EACX,MAAe;IAEf,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;IAErB,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAEzB,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AACD,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Enums } from '@cornerstonejs/core';
|
|
2
|
+
const { ImageQualityStatus } = Enums;
|
|
3
|
+
export function getImageQualityStatus(retrieveOptions, done = true) {
|
|
4
|
+
if (!done) {
|
|
5
|
+
return ImageQualityStatus.SUBRESOLUTION;
|
|
6
|
+
}
|
|
7
|
+
return (retrieveOptions.imageQualityStatus ?? ImageQualityStatus.FULL_RESOLUTION);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=getImageQualityStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getImageQualityStatus.js","sourceRoot":"","sources":["../../../../../src/imageLoader/wadors/getImageQualityStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,EAAE,kBAAkB,EAAE,GAAG,KAAK,CAAC;AAGrC,MAAM,UAAU,qBAAqB,CACnC,eAAsC,EACtC,IAAI,GAAG,IAAI;IAEX,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,kBAAkB,CAAC,aAAa,CAAC;IAC1C,CAAC;IACD,OAAO,CACL,eAAe,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,eAAe,CACzE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { xhrRequest } from '../internal/index';
|
|
2
|
+
import streamRequest from '../internal/streamRequest';
|
|
3
|
+
import rangeRequest from '../internal/rangeRequest';
|
|
4
|
+
import extractMultipart from './extractMultipart';
|
|
5
|
+
import { getImageQualityStatus } from './getImageQualityStatus';
|
|
6
|
+
function getPixelData(uri, imageId, mediaType = 'application/octet-stream', options) {
|
|
7
|
+
const { streamingData, retrieveOptions = {} } = options || {};
|
|
8
|
+
const headers = {
|
|
9
|
+
Accept: mediaType,
|
|
10
|
+
};
|
|
11
|
+
let url = retrieveOptions.urlArguments
|
|
12
|
+
? `${uri}${uri.indexOf('?') === -1 ? '?' : '&'}${retrieveOptions.urlArguments}`
|
|
13
|
+
: uri;
|
|
14
|
+
if (retrieveOptions.framesPath) {
|
|
15
|
+
url = url.replace('/frames/', retrieveOptions.framesPath);
|
|
16
|
+
}
|
|
17
|
+
if (streamingData?.url !== url) {
|
|
18
|
+
options.streamingData = { url };
|
|
19
|
+
}
|
|
20
|
+
if (retrieveOptions.rangeIndex !== undefined) {
|
|
21
|
+
return rangeRequest(url, imageId, headers, options);
|
|
22
|
+
}
|
|
23
|
+
if (retrieveOptions.streaming) {
|
|
24
|
+
return streamRequest(url, imageId, headers, options);
|
|
25
|
+
}
|
|
26
|
+
const loadPromise = xhrRequest(url, imageId, headers);
|
|
27
|
+
const { xhr } = loadPromise;
|
|
28
|
+
return loadPromise.then(function (imageFrameAsArrayBuffer) {
|
|
29
|
+
const contentType = xhr.getResponseHeader('Content-Type') || 'application/octet-stream';
|
|
30
|
+
const extracted = extractMultipart(contentType, new Uint8Array(imageFrameAsArrayBuffer));
|
|
31
|
+
extracted.imageQualityStatus = getImageQualityStatus(retrieveOptions, true);
|
|
32
|
+
return extracted;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
export default getPixelData;
|
|
36
|
+
//# sourceMappingURL=getPixelData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPixelData.js","sourceRoot":"","sources":["../../../../../src/imageLoader/wadors/getPixelData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,aAAa,MAAM,2BAA2B,CAAC;AACtD,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,SAAS,YAAY,CACnB,GAAW,EACX,OAAe,EACf,SAAS,GAAG,0BAA0B,EACtC,OAAwC;IAExC,MAAM,EAAE,aAAa,EAAE,eAAe,GAAG,EAA2B,EAAE,GACpE,OAAO,IAAI,EAAE,CAAC;IAChB,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,SAAS;KAClB,CAAC;IAIF,IAAI,GAAG,GAAG,eAAe,CAAC,YAAY;QACpC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAC1C,eAAe,CAAC,YAClB,EAAE;QACJ,CAAC,CAAC,GAAG,CAAC;IAIR,IAAI,eAAe,CAAC,UAAU,EAAE,CAAC;QAC/B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC;IAGD,IAAI,aAAa,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC;QAC/B,OAAO,CAAC,aAAa,GAAG,EAAE,GAAG,EAAE,CAAC;IAClC,CAAC;IAED,IACG,eAA8C,CAAC,UAAU,KAAK,SAAS,EACxE,CAAC;QACD,OAAO,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAGD,IAAK,eAAkD,CAAC,SAAS,EAAE,CAAC;QAClE,OAAO,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAKD,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC;IAE5B,OAAO,WAAW,CAAC,IAAI,CAAC,UAAU,uBAAuB;QACvD,MAAM,WAAW,GACf,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,0BAA0B,CAAC;QACtE,MAAM,SAAS,GAAG,gBAAgB,CAChC,WAAW,EACX,IAAI,UAAU,CAAC,uBAAuB,CAAC,CACxC,CAAC;QACF,SAAS,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC5E,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,eAAe,YAAY,CAAC"}
|