@cornerstonejs/dicom-image-loader 2.0.0-beta.29 → 2.0.0-beta.30

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.
Files changed (36) hide show
  1. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js +1 -1
  2. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js.map +1 -1
  3. package/dist/esm/imageLoader/colorSpaceConverters/convertPALETTECOLOR.d.ts +1 -1
  4. package/dist/esm/imageLoader/colorSpaceConverters/convertPALETTECOLOR.js +2 -2
  5. package/dist/esm/imageLoader/createImage.js +10 -11
  6. package/dist/esm/imageLoader/decodeImageFrame.js +2 -2
  7. package/dist/esm/imageLoader/getImageFrame.js +2 -3
  8. package/dist/esm/imageLoader/index.d.ts +3 -8
  9. package/dist/esm/imageLoader/index.js +3 -5
  10. package/dist/esm/imageLoader/init.d.ts +3 -0
  11. package/dist/esm/imageLoader/init.js +23 -0
  12. package/dist/esm/imageLoader/internal/streamRequest.js +3 -2
  13. package/dist/esm/imageLoader/internal/xhrRequest.js +3 -4
  14. package/dist/esm/imageLoader/isColorConversionRequired.js +2 -2
  15. package/dist/esm/imageLoader/registerLoaders.d.ts +1 -1
  16. package/dist/esm/imageLoader/registerLoaders.js +3 -4
  17. package/dist/esm/imageLoader/wadors/loadImage.d.ts +2 -2
  18. package/dist/esm/imageLoader/wadors/loadImage.js +5 -6
  19. package/dist/esm/imageLoader/wadors/metaData/metaDataProvider.d.ts +1 -1
  20. package/dist/esm/imageLoader/wadors/metaData/metaDataProvider.js +4 -4
  21. package/dist/esm/imageLoader/wadors/register.d.ts +1 -1
  22. package/dist/esm/imageLoader/wadors/register.js +4 -3
  23. package/dist/esm/imageLoader/wadouri/dataSetCacheManager.js +5 -6
  24. package/dist/esm/imageLoader/wadouri/dataset-from-partial-content.js +1 -2
  25. package/dist/esm/imageLoader/wadouri/getEncapsulatedImageFrame.js +4 -6
  26. package/dist/esm/imageLoader/wadouri/metaData/metaDataProvider.js +3 -3
  27. package/dist/esm/imageLoader/wadouri/register.d.ts +1 -2
  28. package/dist/esm/imageLoader/wadouri/register.js +6 -5
  29. package/dist/esm/index.d.ts +3 -8
  30. package/dist/esm/index.js +3 -5
  31. package/dist/esm/types/LoaderOptions.d.ts +0 -2
  32. package/package.json +3 -2
  33. package/dist/esm/externalModules.d.ts +0 -5
  34. package/dist/esm/externalModules.js +0 -41
  35. package/dist/esm/imageLoader/configure.d.ts +0 -3
  36. package/dist/esm/imageLoader/configure.js +0 -13
@@ -1,3 +1,3 @@
1
1
  import type { ByteArray } from 'dicom-parser';
2
- import type { Types } from '@cornerstonejs/core';
2
+ import { type Types } from '@cornerstonejs/core';
3
3
  export default function (imageFrame: Types.IImageFrame, colorBuffer: ByteArray, useRGBA: boolean): void;
@@ -1,4 +1,4 @@
1
- import external from '../../externalModules';
1
+ import { metaData } from '@cornerstonejs/core';
2
2
  function convertLUTto8Bit(lut, shift) {
3
3
  const numEntries = lut.length;
4
4
  const cleanedLUT = new Uint8ClampedArray(numEntries);
@@ -12,7 +12,7 @@ function fetchPaletteData(imageFrame, color, fallback) {
12
12
  if (data) {
13
13
  return Promise.resolve(data);
14
14
  }
15
- const result = external.cornerstone.metaData.get('imagePixelModule', imageFrame.imageId);
15
+ const result = metaData.get('imagePixelModule', imageFrame.imageId);
16
16
  if (result && typeof result.then === 'function') {
17
17
  return result.then((module) => module ? module[`${color}PaletteColorLookupTableData`] : fallback);
18
18
  }
@@ -1,6 +1,6 @@
1
- import external from '../externalModules';
2
1
  import getMinMax from '../shared/getMinMax';
3
2
  import getPixelDataTypeFromMinMax from '../shared/getPixelDataTypeFromMinMax';
3
+ import { canRenderFloatTextures, Enums, metaData, utilities, } from '@cornerstonejs/core';
4
4
  import convertColorSpace from './convertColorSpace';
5
5
  import isColorConversionRequired from './isColorConversionRequired';
6
6
  import decodeImageFrame from './decodeImageFrame';
@@ -47,14 +47,13 @@ function createImage(imageId, pixelData, transferSyntax, options = {}) {
47
47
  if (!pixelData?.length) {
48
48
  return Promise.reject(new Error('The pixel data is missing'));
49
49
  }
50
- const { cornerstone } = external;
51
- const { MetadataModules } = cornerstone.Enums;
50
+ const { MetadataModules } = Enums;
52
51
  const canvas = document.createElement('canvas');
53
52
  const imageFrame = getImageFrame(imageId);
54
53
  imageFrame.decodeLevel = options.decodeLevel;
55
- options.allowFloatRendering = cornerstone.canRenderFloatTextures();
54
+ options.allowFloatRendering = canRenderFloatTextures();
56
55
  if (options.preScale.enabled) {
57
- const scalingParameters = getScalingParameters(cornerstone.metaData, imageId);
56
+ const scalingParameters = getScalingParameters(metaData, imageId);
58
57
  if (scalingParameters) {
59
58
  options.preScale = {
60
59
  ...options.preScale,
@@ -105,11 +104,11 @@ function createImage(imageId, pixelData, transferSyntax, options = {}) {
105
104
  if (!alreadyTyped) {
106
105
  setPixelDataType(imageFrame);
107
106
  }
108
- const imagePlaneModule = cornerstone.metaData.get(MetadataModules.IMAGE_PLANE, imageId) || {};
109
- const voiLutModule = cornerstone.metaData.get(MetadataModules.VOI_LUT, imageId) || {};
110
- const modalityLutModule = cornerstone.metaData.get(MetadataModules.MODALITY_LUT, imageId) || {};
111
- const sopCommonModule = cornerstone.metaData.get(MetadataModules.SOP_COMMON, imageId) || {};
112
- const calibrationModule = cornerstone.metaData.get(MetadataModules.CALIBRATION, imageId) || {};
107
+ const imagePlaneModule = metaData.get(MetadataModules.IMAGE_PLANE, imageId) || {};
108
+ const voiLutModule = metaData.get(MetadataModules.VOI_LUT, imageId) || {};
109
+ const modalityLutModule = metaData.get(MetadataModules.MODALITY_LUT, imageId) || {};
110
+ const sopCommonModule = metaData.get(MetadataModules.SOP_COMMON, imageId) || {};
111
+ const calibrationModule = metaData.get(MetadataModules.CALIBRATION, imageId) || {};
113
112
  const { rows, columns } = imageFrame;
114
113
  if (isColorImage) {
115
114
  if (isColorConversionRequired(imageFrame)) {
@@ -138,7 +137,7 @@ function createImage(imageId, pixelData, transferSyntax, options = {}) {
138
137
  imageFrame.smallestPixelValue = minMax.min;
139
138
  imageFrame.largestPixelValue = minMax.max;
140
139
  }
141
- const voxelManager = external.cornerstone.utilities.VoxelManager.createImageVoxelManager({
140
+ const voxelManager = utilities.VoxelManager.createImageVoxelManager({
142
141
  scalarData: imageFrame.pixelData,
143
142
  width: imageFrame.columns,
144
143
  height: imageFrame.rows,
@@ -1,10 +1,10 @@
1
1
  import decodeJPEGBaseline8BitColor from './decodeJPEGBaseline8BitColor';
2
- import external from '../externalModules';
2
+ import { getWebWorkerManager } from '@cornerstonejs/core';
3
3
  function processDecodeTask(imageFrame, transferSyntax, pixelData, srcOptions, decodeConfig) {
4
4
  const options = { ...srcOptions };
5
5
  delete options.loader;
6
6
  delete options.streamingData;
7
- const webWorkerManager = external.cornerstone.getWebWorkerManager();
7
+ const webWorkerManager = getWebWorkerManager();
8
8
  const priority = options.priority || undefined;
9
9
  const transferList = options.transferPixelData
10
10
  ? [pixelData.buffer]
@@ -1,7 +1,6 @@
1
- import external from '../externalModules';
1
+ import { metaData } from '@cornerstonejs/core';
2
2
  function getImageFrame(imageId) {
3
- const { cornerstone } = external;
4
- const imagePixelModule = cornerstone.metaData.get('imagePixelModule', imageId);
3
+ const imagePixelModule = metaData.get('imagePixelModule', imageId);
5
4
  return {
6
5
  samplesPerPixel: imagePixelModule.samplesPerPixel,
7
6
  photometricInterpretation: imagePixelModule.photometricInterpretation,
@@ -1,7 +1,7 @@
1
1
  import { convertRGBColorByPixel, convertRGBColorByPlane, convertYBRFullByPixel, convertYBRFullByPlane, convertPALETTECOLOR } from './colorSpaceConverters/index';
2
2
  import { default as wadouri } from './wadouri/index';
3
3
  import { default as wadors } from './wadors/index';
4
- import { default as configure } from './configure';
4
+ import { default as init } from './init';
5
5
  import { default as convertColorSpace } from './convertColorSpace';
6
6
  import { default as createImage } from './createImage';
7
7
  import { default as decodeJPEGBaseline8BitColor } from './decodeJPEGBaseline8BitColor';
@@ -11,7 +11,6 @@ import { default as isColorImage } from '../shared/isColorImage';
11
11
  import { default as isJPEGBaseline8BitColor } from './isJPEGBaseline8BitColor';
12
12
  import { default as getPixelData } from './wadors/getPixelData';
13
13
  import { internal } from './internal/index';
14
- import { default as external } from '../externalModules';
15
14
  declare const cornerstoneDICOMImageLoader: {
16
15
  convertRGBColorByPixel: typeof convertRGBColorByPixel;
17
16
  convertRGBColorByPlane: typeof convertRGBColorByPlane;
@@ -70,7 +69,7 @@ declare const cornerstoneDICOMImageLoader: {
70
69
  };
71
70
  register: typeof import("./wadors/register").default;
72
71
  };
73
- configure: typeof configure;
72
+ init: typeof init;
74
73
  convertColorSpace: typeof convertColorSpace;
75
74
  createImage: typeof createImage;
76
75
  decodeJPEGBaseline8BitColor: typeof decodeJPEGBaseline8BitColor;
@@ -85,10 +84,6 @@ declare const cornerstoneDICOMImageLoader: {
85
84
  setOptions: typeof import("./internal/options").setOptions;
86
85
  getOptions: typeof import("./internal/options").getOptions;
87
86
  };
88
- external: {
89
- cornerstone: any;
90
- dicomParser: any;
91
- };
92
87
  };
93
- export { convertRGBColorByPixel, convertRGBColorByPlane, convertYBRFullByPixel, convertYBRFullByPlane, convertPALETTECOLOR, wadouri, wadors, configure, convertColorSpace, createImage, decodeJPEGBaseline8BitColor, getImageFrame, getPixelData, getMinMax, isColorImage, isJPEGBaseline8BitColor, internal, external, };
88
+ export { convertRGBColorByPixel, convertRGBColorByPlane, convertYBRFullByPixel, convertYBRFullByPlane, convertPALETTECOLOR, wadouri, wadors, init, convertColorSpace, createImage, decodeJPEGBaseline8BitColor, getImageFrame, getPixelData, getMinMax, isColorImage, isJPEGBaseline8BitColor, internal, };
94
89
  export default cornerstoneDICOMImageLoader;
@@ -1,7 +1,7 @@
1
1
  import { convertRGBColorByPixel, convertRGBColorByPlane, convertYBRFullByPixel, convertYBRFullByPlane, convertPALETTECOLOR, } from './colorSpaceConverters/index';
2
2
  import { default as wadouri } from './wadouri/index';
3
3
  import { default as wadors } from './wadors/index';
4
- import { default as configure } from './configure';
4
+ import { default as init } from './init';
5
5
  import { default as convertColorSpace } from './convertColorSpace';
6
6
  import { default as createImage } from './createImage';
7
7
  import { default as decodeJPEGBaseline8BitColor } from './decodeJPEGBaseline8BitColor';
@@ -11,7 +11,6 @@ import { default as isColorImage } from '../shared/isColorImage';
11
11
  import { default as isJPEGBaseline8BitColor } from './isJPEGBaseline8BitColor';
12
12
  import { default as getPixelData } from './wadors/getPixelData';
13
13
  import { internal } from './internal/index';
14
- import { default as external } from '../externalModules';
15
14
  const cornerstoneDICOMImageLoader = {
16
15
  convertRGBColorByPixel,
17
16
  convertRGBColorByPlane,
@@ -20,7 +19,7 @@ const cornerstoneDICOMImageLoader = {
20
19
  convertPALETTECOLOR,
21
20
  wadouri,
22
21
  wadors,
23
- configure,
22
+ init,
24
23
  convertColorSpace,
25
24
  createImage,
26
25
  decodeJPEGBaseline8BitColor,
@@ -30,7 +29,6 @@ const cornerstoneDICOMImageLoader = {
30
29
  isColorImage,
31
30
  isJPEGBaseline8BitColor,
32
31
  internal,
33
- external,
34
32
  };
35
- export { convertRGBColorByPixel, convertRGBColorByPlane, convertYBRFullByPixel, convertYBRFullByPlane, convertPALETTECOLOR, wadouri, wadors, configure, convertColorSpace, createImage, decodeJPEGBaseline8BitColor, getImageFrame, getPixelData, getMinMax, isColorImage, isJPEGBaseline8BitColor, internal, external, };
33
+ export { convertRGBColorByPixel, convertRGBColorByPlane, convertYBRFullByPixel, convertYBRFullByPlane, convertPALETTECOLOR, wadouri, wadors, init, convertColorSpace, createImage, decodeJPEGBaseline8BitColor, getImageFrame, getPixelData, getMinMax, isColorImage, isJPEGBaseline8BitColor, internal, };
36
34
  export default cornerstoneDICOMImageLoader;
@@ -0,0 +1,3 @@
1
+ import type { LoaderOptions } from '../types';
2
+ declare function init(options: LoaderOptions): void;
3
+ export default init;
@@ -0,0 +1,23 @@
1
+ import { setOptions, getOptions } from './internal/index';
2
+ import registerLoaders from './registerLoaders';
3
+ import { getWebWorkerManager } from '@cornerstonejs/core';
4
+ const workerFn = () => {
5
+ const instance = new Worker(new URL('../decodeImageFrameWorker.js', import.meta.url), { type: 'module' });
6
+ return instance;
7
+ };
8
+ function init(options) {
9
+ setOptions(options);
10
+ registerLoaders();
11
+ const workerManager = getWebWorkerManager();
12
+ const maxWorkers = options?.maxWebWorkers || getReasonableWorkerCount();
13
+ workerManager.registerWorker('dicomImageLoader', workerFn, {
14
+ maxWorkerInstances: maxWorkers,
15
+ });
16
+ }
17
+ function getReasonableWorkerCount() {
18
+ if (typeof navigator !== 'undefined' && navigator.hardwareConcurrency) {
19
+ return Math.max(1, Math.floor(navigator.hardwareConcurrency / 2));
20
+ }
21
+ return 1;
22
+ }
23
+ export default init;
@@ -15,7 +15,8 @@ export default function streamRequest(url, imageId, defaultHeaders = {}, options
15
15
  };
16
16
  const loadIterator = new ProgressiveIterator('streamRequest');
17
17
  loadIterator.generate(async (iterator, reject) => {
18
- const headers = Object.assign({}, defaultHeaders);
18
+ const beforeSendHeaders = globalOptions.beforeSend?.(null, url, defaultHeaders, {});
19
+ const headers = Object.assign({}, defaultHeaders, beforeSendHeaders);
19
20
  Object.keys(headers).forEach(function (key) {
20
21
  if (headers[key] === null) {
21
22
  headers[key] = undefined;
@@ -26,7 +27,7 @@ export default function streamRequest(url, imageId, defaultHeaders = {}, options
26
27
  });
27
28
  try {
28
29
  const response = await fetch(url, {
29
- headers: defaultHeaders,
30
+ headers,
30
31
  signal: undefined,
31
32
  });
32
33
  if (response.status !== 200) {
@@ -1,7 +1,6 @@
1
- import external from '../../externalModules';
2
1
  import { getOptions } from './options';
2
+ import { triggerEvent, eventTarget } from '@cornerstonejs/core';
3
3
  function xhrRequest(url, imageId, defaultHeaders = {}, params = {}) {
4
- const { cornerstone } = external;
5
4
  const options = getOptions();
6
5
  const errorInterceptor = (xhr) => {
7
6
  if (typeof options.errorInterceptor === 'function') {
@@ -41,7 +40,7 @@ function xhrRequest(url, imageId, defaultHeaders = {}, params = {}) {
41
40
  url,
42
41
  imageId,
43
42
  };
44
- cornerstone.triggerEvent(cornerstone.events, 'cornerstoneimageloadstart', eventData);
43
+ triggerEvent(eventTarget, 'cornerstoneimageloadstart', eventData);
45
44
  };
46
45
  xhr.onloadend = function (event) {
47
46
  if (options.onloadend) {
@@ -51,7 +50,7 @@ function xhrRequest(url, imageId, defaultHeaders = {}, params = {}) {
51
50
  url,
52
51
  imageId,
53
52
  };
54
- cornerstone.triggerEvent(cornerstone.events, 'cornerstoneimageloadend', eventData);
53
+ triggerEvent(eventTarget, 'cornerstoneimageloadend', eventData);
55
54
  };
56
55
  xhr.onreadystatechange = function (event) {
57
56
  if (options.onreadystatechange) {
@@ -2,7 +2,7 @@ export default function isColorConversionRequired(imageFrame) {
2
2
  if (imageFrame === undefined) {
3
3
  return false;
4
4
  }
5
- const { rows, columns, photometricInterpretation, pixelDataLength } = imageFrame;
5
+ const { rows, columns, photometricInterpretation, pixelDataLength, planarConfiguration } = imageFrame;
6
6
  if (pixelDataLength === 4 * columns * rows) {
7
7
  return false;
8
8
  }
@@ -17,6 +17,6 @@ export default function isColorConversionRequired(imageFrame) {
17
17
  Math.floor(rows / 2) * columns);
18
18
  }
19
19
  else {
20
- return photometricInterpretation !== 'RGB';
20
+ return photometricInterpretation !== 'RGB' || planarConfiguration === 1;
21
21
  }
22
22
  }
@@ -1,2 +1,2 @@
1
- declare function registerLoaders(cornerstone: any): void;
1
+ declare function registerLoaders(): void;
2
2
  export default registerLoaders;
@@ -1,8 +1,7 @@
1
- console.debug("dicom loader: link: init: 3DA675F2-86A1-41A1-9E15-A7019E085C0F");
2
1
  import wadouriRegister from './wadouri/register';
3
2
  import wadorsRegister from './wadors/register';
4
- function registerLoaders(cornerstone) {
5
- wadorsRegister(cornerstone);
6
- wadouriRegister(cornerstone);
3
+ function registerLoaders() {
4
+ wadorsRegister();
5
+ wadouriRegister();
7
6
  }
8
7
  export default registerLoaders;
@@ -1,4 +1,4 @@
1
- import type { Types } from '@cornerstonejs/core';
1
+ import { Enums as csCoreEnums, type Types } from '@cornerstonejs/core';
2
2
  import type { DICOMLoaderImageOptions } from '../../types';
3
3
  export declare function getTransferSyntaxForContentType(contentType: string): string;
4
4
  export interface StreamingData {
@@ -10,7 +10,7 @@ export interface StreamingData {
10
10
  rangesFetched?: number;
11
11
  }
12
12
  export interface CornerstoneWadoRsLoaderOptions extends DICOMLoaderImageOptions {
13
- requestType?: string;
13
+ requestType?: csCoreEnums.RequestType;
14
14
  additionalDetails?: {
15
15
  imageId: string;
16
16
  };
@@ -1,5 +1,5 @@
1
- import { Enums, utilities } from '@cornerstonejs/core';
2
- import external from '../../externalModules';
1
+ import { Enums, imageRetrievalPoolManager, utilities, } from '@cornerstonejs/core';
2
+ import { Enums as csCoreEnums } from '@cornerstonejs/core';
3
3
  import createImage from '../createImage';
4
4
  import getPixelData from './getPixelData';
5
5
  const { ProgressiveIterator } = utilities;
@@ -52,7 +52,7 @@ export function getTransferSyntaxForContentType(contentType) {
52
52
  return defaultTransferSyntax;
53
53
  }
54
54
  function getImageRetrievalPool() {
55
- return external.cornerstone.imageRetrievalPoolManager;
55
+ return imageRetrievalPoolManager;
56
56
  }
57
57
  const mediaType = 'multipart/related; type=application/octet-stream; transfer-syntax=*';
58
58
  function loadImage(imageId, options = {}) {
@@ -98,12 +98,11 @@ function loadImage(imageId, options = {}) {
98
98
  }
99
99
  });
100
100
  }
101
- const requestType = options.requestType || 'interaction';
101
+ const requestType = options.requestType || csCoreEnums.RequestType.INTERACTION;
102
102
  const additionalDetails = options.additionalDetails || { imageId };
103
103
  const priority = options.priority === undefined ? 5 : options.priority;
104
- const addToBeginning = options.addToBeginning || false;
105
104
  const uri = imageId.substring(7);
106
- imageRetrievalPool.addRequest(sendXHR.bind(this, uri, imageId, mediaType), requestType, additionalDetails, priority, addToBeginning);
105
+ imageRetrievalPool.addRequest(sendXHR.bind(this, uri, imageId, mediaType), requestType, additionalDetails, priority);
107
106
  return {
108
107
  promise: uncompressedIterator.getDonePromise(),
109
108
  cancelFn: undefined,
@@ -1,6 +1,6 @@
1
1
  declare function metaDataProvider(type: any, imageId: any): {};
2
2
  export declare function getImageUrlModule(imageId: any, metaData: any): {
3
- isVideo: any;
3
+ isVideo: string | false;
4
4
  rendered: any;
5
5
  thumbnail: any;
6
6
  };
@@ -1,4 +1,5 @@
1
- import external from '../../../externalModules';
1
+ import * as dicomParser from 'dicom-parser';
2
+ import { Enums, utilities } from '@cornerstonejs/core';
2
3
  import getNumberValues from './getNumberValues';
3
4
  import getNumberValue from './getNumberValue';
4
5
  import getOverlayPlaneModule from './getOverlayPlaneModule';
@@ -11,8 +12,7 @@ import isNMReconstructable from '../../isNMReconstructable';
11
12
  import { getInstanceModule, instanceModuleNames, } from '../../getInstanceModule';
12
13
  import { getUSEnhancedRegions } from './USHelpers';
13
14
  function metaDataProvider(type, imageId) {
14
- const { MetadataModules } = external.cornerstone.Enums;
15
- const { dicomParser } = external;
15
+ const { MetadataModules } = Enums;
16
16
  if (type === MetadataModules.MULTIFRAME) {
17
17
  const { metadata, frame } = retrieveMultiframeMetadataImageId(imageId);
18
18
  if (!metadata) {
@@ -248,7 +248,7 @@ function metaDataProvider(type, imageId) {
248
248
  }
249
249
  export function getImageUrlModule(imageId, metaData) {
250
250
  const { transferSyntaxUID } = getTransferSyntax(imageId, metaData);
251
- const isVideo = external.cornerstone.utilities.isVideoTransferSyntax(transferSyntaxUID);
251
+ const isVideo = utilities.isVideoTransferSyntax(transferSyntaxUID);
252
252
  const imageUrl = imageId.substring(7);
253
253
  const thumbnail = imageUrl.replace('/frames/', '/thumbnail/');
254
254
  let rendered = imageUrl.replace('/frames/', '/rendered/');
@@ -1 +1 @@
1
- export default function (cornerstone: any): void;
1
+ export default function (): void;
@@ -1,6 +1,7 @@
1
+ import { metaData, registerImageLoader } from '@cornerstonejs/core';
1
2
  import loadImage from './loadImage';
2
3
  import { metaDataProvider } from './metaData';
3
- export default function (cornerstone) {
4
- cornerstone.registerImageLoader('wadors', loadImage);
5
- cornerstone.metaData.addProvider(metaDataProvider);
4
+ export default function () {
5
+ registerImageLoader('wadors', loadImage);
6
+ metaData.addProvider(metaDataProvider);
6
7
  }
@@ -1,9 +1,10 @@
1
- import external from '../../externalModules';
1
+ import * as dicomParser from 'dicom-parser';
2
2
  import { xhrRequest } from '../internal/index';
3
3
  import dataSetFromPartialContent from './dataset-from-partial-content';
4
4
  import { combineFrameInstanceDataset } from './combineFrameInstanceDataset';
5
5
  import multiframeDataset from './retrieveMultiframeDataset';
6
6
  import { loadedDataSets, purgeLoadedDataSets } from './loadedDataSets';
7
+ import { eventTarget, triggerEvent } from '@cornerstonejs/core';
7
8
  let cacheSizeInBytes = 0;
8
9
  let promises = {};
9
10
  function isLoaded(uri) {
@@ -29,14 +30,13 @@ function update(uri, dataSet) {
29
30
  cacheSizeInBytes -= loadedDataSet.dataSet.byteArray.length;
30
31
  loadedDataSet.dataSet = dataSet;
31
32
  cacheSizeInBytes += dataSet.byteArray.length;
32
- external.cornerstone.triggerEvent(external.cornerstone.events, 'datasetscachechanged', {
33
+ triggerEvent(eventTarget, 'datasetscachechanged', {
33
34
  uri,
34
35
  action: 'updated',
35
36
  cacheInfo: getInfo(),
36
37
  });
37
38
  }
38
39
  function load(uri, loadRequest = xhrRequest, imageId) {
39
- const { cornerstone, dicomParser } = external;
40
40
  if (loadedDataSets[uri]) {
41
41
  return new Promise((resolve) => {
42
42
  loadedDataSets[uri].cacheCount++;
@@ -88,7 +88,7 @@ function load(uri, loadRequest = xhrRequest, imageId) {
88
88
  };
89
89
  cacheSizeInBytes += dataSet.byteArray.length;
90
90
  resolve(dataSet);
91
- cornerstone.triggerEvent(cornerstone.events, 'datasetscachechanged', {
91
+ triggerEvent(eventTarget, 'datasetscachechanged', {
92
92
  uri,
93
93
  action: 'loaded',
94
94
  cacheInfo: getInfo(),
@@ -105,13 +105,12 @@ function load(uri, loadRequest = xhrRequest, imageId) {
105
105
  return promise;
106
106
  }
107
107
  function unload(uri) {
108
- const { cornerstone } = external;
109
108
  if (loadedDataSets[uri]) {
110
109
  loadedDataSets[uri].cacheCount--;
111
110
  if (loadedDataSets[uri].cacheCount === 0) {
112
111
  cacheSizeInBytes -= loadedDataSets[uri].dataSet.byteArray.length;
113
112
  delete loadedDataSets[uri];
114
- cornerstone.triggerEvent(cornerstone.events, 'datasetscachechanged', {
113
+ triggerEvent(eventTarget, 'datasetscachechanged', {
115
114
  uri,
116
115
  action: 'unloaded',
117
116
  cacheInfo: getInfo(),
@@ -1,4 +1,4 @@
1
- import external from '../../externalModules';
1
+ import * as dicomParser from 'dicom-parser';
2
2
  function fixFragments(dataSet) {
3
3
  const fragments = dataSet.elements.x7fe00010.fragments;
4
4
  const totalLength = dataSet.byteArray.length;
@@ -12,7 +12,6 @@ function fixFragments(dataSet) {
12
12
  return dataSet;
13
13
  }
14
14
  function parsePartialByteArray(byteArray) {
15
- const { dicomParser } = external;
16
15
  let dataSet = dicomParser.parseDicom(byteArray, {
17
16
  untilTag: 'x7fe00010',
18
17
  });
@@ -1,19 +1,17 @@
1
- import { ByteStream, readSequenceItem } from 'dicom-parser';
2
- import external from '../../externalModules';
1
+ import { ByteStream, createJPEGBasicOffsetTable, readEncapsulatedImageFrame, readSequenceItem, } from 'dicom-parser';
3
2
  function framesAreFragmented(dataSet) {
4
3
  const numberOfFrames = dataSet.intString('x00280008');
5
4
  const pixelDataElement = dataSet.elements.x7fe00010;
6
5
  return numberOfFrames !== pixelDataElement.fragments.length;
7
6
  }
8
7
  export default function getEncapsulatedImageFrame(dataSet, frameIndex) {
9
- const { dicomParser } = external;
10
8
  if (dataSet.elements.x7fe00010 &&
11
9
  dataSet.elements.x7fe00010.basicOffsetTable.length) {
12
- return dicomParser.readEncapsulatedImageFrame(dataSet, dataSet.elements.x7fe00010, frameIndex);
10
+ return readEncapsulatedImageFrame(dataSet, dataSet.elements.x7fe00010, frameIndex);
13
11
  }
14
12
  if (framesAreFragmented(dataSet)) {
15
- const basicOffsetTable = dicomParser.createJPEGBasicOffsetTable(dataSet, dataSet.elements.x7fe00010);
16
- return dicomParser.readEncapsulatedImageFrame(dataSet, dataSet.elements.x7fe00010, frameIndex, basicOffsetTable);
13
+ const basicOffsetTable = createJPEGBasicOffsetTable(dataSet, dataSet.elements.x7fe00010);
14
+ return readEncapsulatedImageFrame(dataSet, dataSet.elements.x7fe00010, frameIndex, basicOffsetTable);
17
15
  }
18
16
  const fragments = dataSet.elements.x7fe00010.fragments;
19
17
  const byteStream = new ByteStream(dataSet.byteArrayParser, dataSet.byteArray, dataSet.elements.x7fe00010.dataOffset);
@@ -1,4 +1,5 @@
1
- import external from '../../../externalModules';
1
+ import { Enums } from '@cornerstonejs/core';
2
+ import * as dicomParser from 'dicom-parser';
2
3
  import getNumberValues from './getNumberValues';
3
4
  import parseImageId from '../parseImageId';
4
5
  import dataSetCacheManager from '../dataSetCacheManager';
@@ -13,8 +14,7 @@ import isNMReconstructable from '../../isNMReconstructable';
13
14
  import { getInstanceModule, instanceModuleNames, } from '../../getInstanceModule';
14
15
  import { getUSEnhancedRegions } from './USHelpers';
15
16
  function metaDataProvider(type, imageId) {
16
- const { MetadataModules } = external.cornerstone.Enums;
17
- const { dicomParser } = external;
17
+ const { MetadataModules } = Enums;
18
18
  if (Array.isArray(imageId)) {
19
19
  return;
20
20
  }
@@ -1,2 +1 @@
1
- import type * as cornerstoneImport from '@cornerstonejs/core';
2
- export default function (cornerstone: typeof cornerstoneImport): void;
1
+ export default function (): void;
@@ -1,8 +1,9 @@
1
+ import { metaData, registerImageLoader } from '@cornerstonejs/core';
1
2
  import { loadImage } from './loadImage';
2
3
  import { metaDataProvider } from './metaData/index';
3
- export default function (cornerstone) {
4
- cornerstone.registerImageLoader('dicomweb', loadImage);
5
- cornerstone.registerImageLoader('wadouri', loadImage);
6
- cornerstone.registerImageLoader('dicomfile', loadImage);
7
- cornerstone.metaData.addProvider(metaDataProvider);
4
+ export default function () {
5
+ registerImageLoader('dicomweb', loadImage);
6
+ registerImageLoader('wadouri', loadImage);
7
+ registerImageLoader('dicomfile', loadImage);
8
+ metaData.addProvider(metaDataProvider);
8
9
  }
@@ -1,7 +1,7 @@
1
1
  import { convertRGBColorByPixel, convertRGBColorByPlane, convertYBRFullByPixel, convertYBRFullByPlane, convertPALETTECOLOR } from './imageLoader/colorSpaceConverters/index';
2
2
  import { default as wadouri } from './imageLoader/wadouri/index';
3
3
  import { default as wadors } from './imageLoader/wadors/index';
4
- import { default as configure } from './imageLoader/configure';
4
+ import { default as init } from './imageLoader/init';
5
5
  import { default as convertColorSpace } from './imageLoader/convertColorSpace';
6
6
  import { default as createImage } from './imageLoader/createImage';
7
7
  import { default as decodeJPEGBaseline8BitColor } from './imageLoader/decodeJPEGBaseline8BitColor';
@@ -11,7 +11,6 @@ import { default as isColorImage } from './shared/isColorImage';
11
11
  import { default as isJPEGBaseline8BitColor } from './imageLoader/isJPEGBaseline8BitColor';
12
12
  import { default as getPixelData } from './imageLoader/wadors/getPixelData';
13
13
  import { internal } from './imageLoader/internal/index';
14
- import { default as external } from './externalModules';
15
14
  import * as constants from './constants';
16
15
  import type * as Types from './types';
17
16
  declare const cornerstoneDICOMImageLoader: {
@@ -73,7 +72,7 @@ declare const cornerstoneDICOMImageLoader: {
73
72
  };
74
73
  register: typeof import("./imageLoader/wadors/register").default;
75
74
  };
76
- configure: typeof configure;
75
+ init: typeof init;
77
76
  convertColorSpace: typeof convertColorSpace;
78
77
  createImage: typeof createImage;
79
78
  decodeJPEGBaseline8BitColor: typeof decodeJPEGBaseline8BitColor;
@@ -88,11 +87,7 @@ declare const cornerstoneDICOMImageLoader: {
88
87
  setOptions: typeof import("./imageLoader/internal/options").setOptions;
89
88
  getOptions: typeof import("./imageLoader/internal/options").getOptions;
90
89
  };
91
- external: {
92
- cornerstone: any;
93
- dicomParser: any;
94
- };
95
90
  };
96
- export { constants, convertRGBColorByPixel, convertRGBColorByPlane, convertYBRFullByPixel, convertYBRFullByPlane, convertPALETTECOLOR, wadouri, wadors, configure, convertColorSpace, createImage, decodeJPEGBaseline8BitColor, getImageFrame, getPixelData, getMinMax, isColorImage, isJPEGBaseline8BitColor, internal, external, };
91
+ export { constants, convertRGBColorByPixel, convertRGBColorByPlane, convertYBRFullByPixel, convertYBRFullByPlane, convertPALETTECOLOR, wadouri, wadors, init, convertColorSpace, createImage, decodeJPEGBaseline8BitColor, getImageFrame, getPixelData, getMinMax, isColorImage, isJPEGBaseline8BitColor, internal, };
97
92
  export type { Types };
98
93
  export default cornerstoneDICOMImageLoader;
package/dist/esm/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { convertRGBColorByPixel, convertRGBColorByPlane, convertYBRFullByPixel, convertYBRFullByPlane, convertPALETTECOLOR, } from './imageLoader/colorSpaceConverters/index';
2
2
  import { default as wadouri } from './imageLoader/wadouri/index';
3
3
  import { default as wadors } from './imageLoader/wadors/index';
4
- import { default as configure } from './imageLoader/configure';
4
+ import { default as init } from './imageLoader/init';
5
5
  import { default as convertColorSpace } from './imageLoader/convertColorSpace';
6
6
  import { default as createImage } from './imageLoader/createImage';
7
7
  import { default as decodeJPEGBaseline8BitColor } from './imageLoader/decodeJPEGBaseline8BitColor';
@@ -11,7 +11,6 @@ import { default as isColorImage } from './shared/isColorImage';
11
11
  import { default as isJPEGBaseline8BitColor } from './imageLoader/isJPEGBaseline8BitColor';
12
12
  import { default as getPixelData } from './imageLoader/wadors/getPixelData';
13
13
  import { internal } from './imageLoader/internal/index';
14
- import { default as external } from './externalModules';
15
14
  import * as constants from './constants';
16
15
  const cornerstoneDICOMImageLoader = {
17
16
  constants,
@@ -22,7 +21,7 @@ const cornerstoneDICOMImageLoader = {
22
21
  convertPALETTECOLOR,
23
22
  wadouri,
24
23
  wadors,
25
- configure,
24
+ init,
26
25
  convertColorSpace,
27
26
  createImage,
28
27
  decodeJPEGBaseline8BitColor,
@@ -32,7 +31,6 @@ const cornerstoneDICOMImageLoader = {
32
31
  isColorImage,
33
32
  isJPEGBaseline8BitColor,
34
33
  internal,
35
- external,
36
34
  };
37
- export { constants, convertRGBColorByPixel, convertRGBColorByPlane, convertYBRFullByPixel, convertYBRFullByPlane, convertPALETTECOLOR, wadouri, wadors, configure, convertColorSpace, createImage, decodeJPEGBaseline8BitColor, getImageFrame, getPixelData, getMinMax, isColorImage, isJPEGBaseline8BitColor, internal, external, };
35
+ export { constants, convertRGBColorByPixel, convertRGBColorByPlane, convertYBRFullByPixel, convertYBRFullByPlane, convertPALETTECOLOR, wadouri, wadors, init, convertColorSpace, createImage, decodeJPEGBaseline8BitColor, getImageFrame, getPixelData, getMinMax, isColorImage, isJPEGBaseline8BitColor, internal, };
38
36
  export default cornerstoneDICOMImageLoader;
@@ -1,8 +1,6 @@
1
1
  import type { LoaderDecodeOptions } from './LoaderDecodeOptions';
2
2
  import type { LoaderXhrRequestError, LoaderXhrRequestParams } from './XHRRequest';
3
3
  export interface LoaderOptions {
4
- cornerstone?: unknown;
5
- dicomParser?: unknown;
6
4
  maxWebWorkers?: number;
7
5
  open?: (xhr: XMLHttpRequest, url: string, defaultHeaders: Record<string, string>, params: LoaderXhrRequestParams) => void;
8
6
  beforeSend?: (xhr: XMLHttpRequest, imageId: string, defaultHeaders: Record<string, string>, params: LoaderXhrRequestParams) => Record<string, string> | void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cornerstonejs/dicom-image-loader",
3
- "version": "2.0.0-beta.29",
3
+ "version": "2.0.0-beta.30",
4
4
  "description": "Cornerstone Image Loader for DICOM WADO-URI and WADO-RS and Local file",
5
5
  "keywords": [
6
6
  "DICOM",
@@ -114,6 +114,7 @@
114
114
  "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2",
115
115
  "@cornerstonejs/codec-openjpeg": "^1.2.2",
116
116
  "@cornerstonejs/codec-openjph": "^2.4.5",
117
+ "@cornerstonejs/core": "^2.0.0-beta.30",
117
118
  "comlink": "^4.4.1",
118
119
  "dicom-parser": "^1.8.9",
119
120
  "pako": "^2.0.4",
@@ -131,5 +132,5 @@
131
132
  "path": "./node_modules/cz-conventional-changelog"
132
133
  }
133
134
  },
134
- "gitHead": "fd9316cac241522bc5c43d267e41c7a4e36bec96"
135
+ "gitHead": "e56a9df570b820968e23b35f0526700989ae1e3c"
135
136
  }
@@ -1,5 +0,0 @@
1
- declare const external: {
2
- cornerstone: any;
3
- dicomParser: any;
4
- };
5
- export default external;