@cornerstonejs/core 5.0.15 → 5.1.0

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 (40) hide show
  1. package/dist/esm/RenderingEngine/BaseVolumeViewport.d.ts +4 -0
  2. package/dist/esm/RenderingEngine/BaseVolumeViewport.js +24 -0
  3. package/dist/esm/RenderingEngine/ECGViewport.d.ts +4 -0
  4. package/dist/esm/RenderingEngine/ECGViewport.js +8 -0
  5. package/dist/esm/RenderingEngine/GenericViewport/ECG/DefaultECGDataProvider.js +1 -1
  6. package/dist/esm/RenderingEngine/GenericViewport/GenericViewport.d.ts +18 -14
  7. package/dist/esm/RenderingEngine/GenericViewport/GenericViewport.js +6 -0
  8. package/dist/esm/RenderingEngine/GenericViewport/Planar/DefaultPlanarDataProvider.js +2 -2
  9. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarLegacyCompatibilityController.js +3 -3
  10. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewport.js +8 -8
  11. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewportLegacyAdapter.js +2 -2
  12. package/dist/esm/RenderingEngine/GenericViewport/Video/DefaultVideoDataProvider.js +1 -1
  13. package/dist/esm/RenderingEngine/GenericViewport/Video/VideoViewport.js +1 -1
  14. package/dist/esm/RenderingEngine/GenericViewport/ViewportArchitectureTypes.d.ts +12 -8
  15. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/DefaultVolume3DDataProvider.js +3 -3
  16. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/VolumeViewport3DLegacyAdapter.js +4 -4
  17. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/viewport3D.js +3 -3
  18. package/dist/esm/RenderingEngine/GenericViewport/WSI/DefaultWSIDataProvider.js +2 -2
  19. package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIViewportLegacyAdapter.js +2 -2
  20. package/dist/esm/RenderingEngine/GenericViewport/genericViewportDisplaySetAccess.d.ts +35 -0
  21. package/dist/esm/RenderingEngine/GenericViewport/{genericViewportDataSetAccess.js → genericViewportDisplaySetAccess.js} +19 -19
  22. package/dist/esm/RenderingEngine/GenericViewport/index.d.ts +1 -1
  23. package/dist/esm/RenderingEngine/StackViewport.d.ts +4 -0
  24. package/dist/esm/RenderingEngine/StackViewport.js +14 -0
  25. package/dist/esm/RenderingEngine/VideoViewport.d.ts +10 -0
  26. package/dist/esm/RenderingEngine/VideoViewport.js +13 -0
  27. package/dist/esm/RenderingEngine/Viewport.d.ts +17 -0
  28. package/dist/esm/RenderingEngine/Viewport.js +18 -0
  29. package/dist/esm/RenderingEngine/WSIViewport.d.ts +4 -0
  30. package/dist/esm/RenderingEngine/WSIViewport.js +15 -1
  31. package/dist/esm/utilities/genericViewportDisplaySetMetadataProvider.d.ts +8 -0
  32. package/dist/esm/utilities/genericViewportDisplaySetMetadataProvider.js +23 -0
  33. package/dist/esm/utilities/index.d.ts +2 -2
  34. package/dist/esm/utilities/index.js +2 -2
  35. package/dist/esm/version.d.ts +1 -1
  36. package/dist/esm/version.js +1 -1
  37. package/package.json +6 -6
  38. package/dist/esm/RenderingEngine/GenericViewport/genericViewportDataSetAccess.d.ts +0 -35
  39. package/dist/esm/utilities/genericViewportDataSetMetadataProvider.d.ts +0 -8
  40. package/dist/esm/utilities/genericViewportDataSetMetadataProvider.js +0 -23
@@ -65,6 +65,10 @@ declare abstract class BaseVolumeViewport extends Viewport {
65
65
  getProperties: (volumeId?: string) => VolumeViewportProperties | undefined | null;
66
66
  private getColormap;
67
67
  setVolumes(volumeInputArray: IVolumeInput[], immediate?: boolean, suppressEvents?: boolean): Promise<void>;
68
+ setDisplaySets(...entries: Array<{
69
+ displaySetId: string;
70
+ options?: unknown;
71
+ }>): Promise<void>;
68
72
  addVolumes(volumeInputArray: IVolumeInput[], immediate?: boolean, suppressEvents?: boolean): Promise<void>;
69
73
  removeVolumeActors(actorUIDs: string[], immediate?: boolean): void;
70
74
  setOrientation(_orientation: OrientationAxis | OrientationVectors, _immediate?: boolean, _suppressEvents?: boolean): void;
@@ -14,6 +14,9 @@ import transformWorldToIndex from '../utilities/transformWorldToIndex';
14
14
  import { findMatchingColormap, updateOpacity as colormapUpdateOpacity, updateThreshold as colormapUpdateThreshold, updateOpacityMapping as colormapUpdateOpacityMapping, getOpacityState, } from '../utilities/colormap';
15
15
  import getAcquisitionPlaneOrientation from '../utilities/getAcquisitionPlaneOrientation';
16
16
  import { getTransferFunctionNodes, setTransferFunctionNodes, } from '../utilities/transferFunctionUtils';
17
+ import { createAndCacheVolume } from '../loaders/volumeLoader';
18
+ import resolveViewportVolumeId from './helpers/resolveViewportVolumeId';
19
+ import { getGenericViewportImageDisplaySet } from './GenericViewport/genericViewportDisplaySetAccess';
17
20
  import createVolumeActor from './helpers/createVolumeActor';
18
21
  import volumeNewImageEventDispatcher, { resetVolumeNewImageState, } from './helpers/volumeNewImageEventDispatcher';
19
22
  import Viewport from './Viewport';
@@ -912,6 +915,7 @@ class BaseVolumeViewport extends Viewport {
912
915
  }
913
916
  setSampleDistanceMultiplier(multiplier) { }
914
917
  async setVolumes(volumeInputArray, immediate = false, suppressEvents = false) {
918
+ this.clearDisplaySets();
915
919
  const volumeId = volumeInputArray[0].volumeId;
916
920
  const firstImageVolume = cache.getVolume(volumeId);
917
921
  if (!firstImageVolume) {
@@ -947,6 +951,26 @@ class BaseVolumeViewport extends Viewport {
947
951
  this.render();
948
952
  }
949
953
  }
954
+ async setDisplaySets(...entries) {
955
+ await this.mountDisplaySets(entries, async (entry) => {
956
+ const dataSet = getGenericViewportImageDisplaySet(entry.displaySetId);
957
+ if (!dataSet?.imageIds?.length) {
958
+ throw new Error(`[VolumeViewport] No registered imageIds for display set ${entry.displaySetId}`);
959
+ }
960
+ const volumeId = resolveViewportVolumeId(dataSet.volumeId ?? entry.displaySetId);
961
+ if (!cache.getVolume(volumeId)) {
962
+ const volume = await createAndCacheVolume(volumeId, {
963
+ imageIds: dataSet.imageIds,
964
+ });
965
+ volume.load();
966
+ }
967
+ const volumeInput = {
968
+ volumeId,
969
+ ...(entry.options ?? {}),
970
+ };
971
+ await this.setVolumes([volumeInput]);
972
+ });
973
+ }
950
974
  async addVolumes(volumeInputArray, immediate = false, suppressEvents = false) {
951
975
  const firstImageVolume = cache.getVolume(volumeInputArray[0].volumeId);
952
976
  if (!firstImageVolume) {
@@ -19,6 +19,10 @@ declare class ECGViewport extends Viewport {
19
19
  private removeEventListeners;
20
20
  private elementDisabledHandler;
21
21
  setEcg(imageId: string): Promise<void>;
22
+ setDisplaySets(...entries: Array<{
23
+ displaySetId: string;
24
+ options?: unknown;
25
+ }>): Promise<void>;
22
26
  setChannelVisibility(index: number, visible: boolean): void;
23
27
  getVisibleChannels(): {
24
28
  name: string;
@@ -3,6 +3,7 @@ import { Transform } from './helpers/cpuFallback/rendering/transform';
3
3
  import triggerEvent from '../utilities/triggerEvent';
4
4
  import Viewport from './Viewport';
5
5
  import { getOrCreateCanvas } from './helpers';
6
+ import { getGenericViewportSourceDataId } from './GenericViewport/genericViewportDisplaySetAccess';
6
7
  import { ECG_CHANNEL_SPACING, computeECGChannelLayouts, computeECGHeight, drawECGGrid, drawECGLabels, drawECGTraces, ECG_RENDERING_COLORS, ECG_SECONDS_WIDTH, getVisibleECGChannelsByFlag, loadECGWaveform, } from '../utilities/ECGUtilities';
7
8
  const ECG_AMPLITUDE_INDEX_SIZE = 65536;
8
9
  class ECGViewport extends Viewport {
@@ -173,6 +174,7 @@ class ECGViewport extends Viewport {
173
174
  this.removeEventListeners();
174
175
  }
175
176
  async setEcg(imageId) {
177
+ this.clearDisplaySets();
176
178
  this.imageId = imageId;
177
179
  const { waveform, calibration } = await loadECGWaveform(imageId);
178
180
  this.channels = waveform.channels.map((channel) => ({
@@ -192,6 +194,12 @@ class ECGViewport extends Viewport {
192
194
  this.refreshRenderValues();
193
195
  this.renderFrame();
194
196
  }
197
+ async setDisplaySets(...entries) {
198
+ await this.mountDisplaySets(entries, async (entry) => {
199
+ const sourceDataId = getGenericViewportSourceDataId(entry.displaySetId);
200
+ await this.setEcg(sourceDataId);
201
+ });
202
+ }
195
203
  setChannelVisibility(index, visible) {
196
204
  if (index >= 0 && index < this.channels.length) {
197
205
  this.channels[index].visible = visible;
@@ -1,5 +1,5 @@
1
1
  import { loadECGWaveform } from '../../../utilities/ECGUtilities';
2
- import { getGenericViewportSourceDataId } from '../genericViewportDataSetAccess';
2
+ import { getGenericViewportSourceDataId } from '../genericViewportDisplaySetAccess';
3
3
  export class DefaultECGDataProvider {
4
4
  async load(dataId) {
5
5
  const sourceDataId = getGenericViewportSourceDataId(dataId);
@@ -1,7 +1,7 @@
1
1
  import type ICamera from '../../types/ICamera';
2
2
  import type { Point2, Point3 } from '../../types';
3
3
  import ViewportStatus from '../../enums/ViewportStatus';
4
- import type { BaseViewportRenderContext, BindingRole, DataAddOptions, DataId, DataProvider, LoadedData, ViewportDataBinding, RenderPathResolver, ViewportController, ViewportId } from './ViewportArchitectureTypes';
4
+ import type { BaseViewportRenderContext, BindingRole, DataAddOptions, DisplaySetId, DataProvider, LoadedData, ViewportDataBinding, RenderPathResolver, ViewportController, ViewportId } from './ViewportArchitectureTypes';
5
5
  import type ViewportType from '../../enums/ViewportType';
6
6
  import type ResolvedViewportView from './ResolvedViewportView';
7
7
  import type { ReferenceCompatibleOptions, ViewReference, ViewReferenceSpecifier, RenderingEngineResizeOptions } from '../../types/IViewport';
@@ -27,14 +27,18 @@ declare abstract class GenericViewport<TViewState extends object, TDataPresentat
27
27
  element: HTMLDivElement;
28
28
  });
29
29
  setDisplaySets(...entries: Array<{
30
- displaySetId: DataId;
30
+ displaySetId: DisplaySetId;
31
31
  options?: unknown;
32
32
  }>): Promise<void>;
33
- addDisplaySet(displaySetId: DataId, options: DataAddOptions): Promise<void>;
34
- removeData(displaySetId: DataId): void;
33
+ addDisplaySet(displaySetId: DisplaySetId, options: DataAddOptions): Promise<void>;
34
+ getDisplaySets(): Array<{
35
+ displaySetId: DisplaySetId;
36
+ options?: unknown;
37
+ }>;
38
+ removeData(displaySetId: DisplaySetId): void;
35
39
  setDisplaySetPresentation(props: Partial<TDataPresentation>): void;
36
- setDisplaySetPresentation(displaySetId: DataId, props: Partial<TDataPresentation>): void;
37
- getDisplaySetPresentation(displaySetId: DataId): TDataPresentation | undefined;
40
+ setDisplaySetPresentation(displaySetId: DisplaySetId, props: Partial<TDataPresentation>): void;
41
+ getDisplaySetPresentation(displaySetId: DisplaySetId): TDataPresentation | undefined;
38
42
  getViewReference(_specifier?: ViewReferenceSpecifier): ViewReference;
39
43
  getViewReferenceId(_specifier?: ViewReferenceSpecifier): string;
40
44
  setViewReference(_viewReference: ViewReference): void;
@@ -56,20 +60,20 @@ declare abstract class GenericViewport<TViewState extends object, TDataPresentat
56
60
  resize(): void;
57
61
  resetViewState(_options?: unknown): boolean;
58
62
  resizeForRenderingEngine({ keepCamera, }?: RenderingEngineResizeOptions): void;
59
- protected addLoadedData(displaySetId: DataId, data: LoadedData, options: DataAddOptions, shouldIgnore?: () => boolean): Promise<boolean>;
63
+ protected addLoadedData(displaySetId: DisplaySetId, data: LoadedData, options: DataAddOptions, shouldIgnore?: () => boolean): Promise<boolean>;
60
64
  protected removeAllData(): void;
61
- protected setDataPresentationState(displaySetId: DataId, props: TDataPresentation): void;
62
- protected getDataPresentationState(displaySetId: DataId): TDataPresentation | undefined;
63
- protected setDefaultDataPresentation(displaySetId: DataId, defaults: TDataPresentation): TDataPresentation;
64
- protected mergeDataPresentation(displaySetId: DataId, props: Partial<TDataPresentation>): TDataPresentation;
65
+ protected setDataPresentationState(displaySetId: DisplaySetId, props: TDataPresentation): void;
66
+ protected getDataPresentationState(displaySetId: DisplaySetId): TDataPresentation | undefined;
67
+ protected setDefaultDataPresentation(displaySetId: DisplaySetId, defaults: TDataPresentation): TDataPresentation;
68
+ protected mergeDataPresentation(displaySetId: DisplaySetId, props: Partial<TDataPresentation>): TDataPresentation;
65
69
  protected normalizeViewState(viewState: TViewState): TViewState;
66
70
  protected modified(previousCamera?: ICamera): void;
67
71
  protected getCameraForEvent(): ICamera;
68
72
  protected triggerCameraModifiedEvent(previousCamera: ICamera): void;
69
73
  protected triggerCameraResetEvent(): void;
70
- protected getBinding(displaySetId: DataId): ViewportDataBinding<TDataPresentation> | undefined;
71
- protected getDisplaySetRenderMode(displaySetId: DataId): string | undefined;
72
- protected getDisplaySetRole(displaySetId: DataId): BindingRole | undefined;
74
+ protected getBinding(displaySetId: DisplaySetId): ViewportDataBinding<TDataPresentation> | undefined;
75
+ protected getDisplaySetRenderMode(displaySetId: DisplaySetId): string | undefined;
76
+ protected getDisplaySetRole(displaySetId: DisplaySetId): BindingRole | undefined;
73
77
  protected getFirstBinding(): ViewportDataBinding<TDataPresentation> | undefined;
74
78
  protected getCurrentBinding(): ViewportDataBinding<TDataPresentation> | undefined;
75
79
  protected forEachBinding(visitor: (binding: ViewportDataBinding<TDataPresentation>) => void): void;
@@ -34,6 +34,12 @@ class GenericViewport {
34
34
  const data = await this.dataProvider.load(displaySetId, options);
35
35
  await this.addLoadedData(displaySetId, data, options);
36
36
  }
37
+ getDisplaySets() {
38
+ return Array.from(this.bindings.entries()).map(([displaySetId, binding]) => ({
39
+ displaySetId,
40
+ options: { role: binding.role },
41
+ }));
42
+ }
37
43
  removeData(displaySetId) {
38
44
  const binding = this.bindings.get(displaySetId);
39
45
  if (!binding) {
@@ -2,7 +2,7 @@ import { loadAndCacheImage } from '../../../loaders/imageLoader';
2
2
  import { createAndCacheVolume } from '../../../loaders/volumeLoader';
3
3
  import { ActorRenderMode } from '../../../types';
4
4
  import resolveViewportVolumeId from '../../helpers/resolveViewportVolumeId';
5
- import { getGenericViewportPlanarDataSet } from '../genericViewportDataSetAccess';
5
+ import { getGenericViewportPlanarDisplaySet } from '../genericViewportDisplaySetAccess';
6
6
  export class DefaultPlanarDataProvider {
7
7
  async load(dataId, options) {
8
8
  const dataSet = this.getDataSet(dataId);
@@ -59,7 +59,7 @@ export class DefaultPlanarDataProvider {
59
59
  };
60
60
  }
61
61
  getDataSet(dataId) {
62
- const dataSet = getGenericViewportPlanarDataSet(dataId);
62
+ const dataSet = getGenericViewportPlanarDisplaySet(dataId);
63
63
  if (!isPlanarRegisteredDataSet(dataSet)) {
64
64
  return;
65
65
  }
@@ -4,7 +4,7 @@ import { ActorRenderMode } from '../../../types';
4
4
  import triggerEvent from '../../../utilities/triggerEvent';
5
5
  import { findMatchingColormap, getMaxOpacity, getThresholdValue, } from '../../../utilities/colormap';
6
6
  import { getTransferFunctionNodes } from '../../../utilities/transferFunctionUtils';
7
- import genericViewportDataSetMetadataProvider from '../../../utilities/genericViewportDataSetMetadataProvider';
7
+ import genericViewportDisplaySetMetadataProvider from '../../../utilities/genericViewportDisplaySetMetadataProvider';
8
8
  import { clonePlanarLegacyProperties, mergePlanarLegacyProperties, clonePlanarOrientation, toPlanarDataPresentation, } from './planarLegacyCompatibility';
9
9
  import { mapSlabTypeToBlendMode } from './planarVolumeSliceBlendMode';
10
10
  export const PLANAR_LEGACY_PER_IMAGE_DEFAULT_PROPERTIES_LIMIT = 2048;
@@ -255,7 +255,7 @@ class PlanarLegacyCompatibilityController {
255
255
  return `__planar_v2__:${this.host.getViewportId()}:volume:${volumeId}`;
256
256
  }
257
257
  registerDataSet(dataId, dataSet) {
258
- genericViewportDataSetMetadataProvider.add(dataId, dataSet);
258
+ genericViewportDisplaySetMetadataProvider.add(dataId, dataSet);
259
259
  this.managedDataIds.add(dataId);
260
260
  }
261
261
  async mountVolumes(volumeInputArray, replaceExisting, suppressEvents) {
@@ -507,7 +507,7 @@ class PlanarLegacyCompatibilityController {
507
507
  }
508
508
  unregisterDataId(dataId) {
509
509
  try {
510
- genericViewportDataSetMetadataProvider.remove(dataId);
510
+ genericViewportDisplaySetMetadataProvider.remove(dataId);
511
511
  }
512
512
  finally {
513
513
  this.properties.delete(dataId);
@@ -4,13 +4,13 @@ import cache from '../../../cache/cache';
4
4
  import { deepClone } from '../../../utilities/deepClone';
5
5
  import imageIdToURI from '../../../utilities/imageIdToURI';
6
6
  import { getImageDataMetadata } from '../../../utilities/getImageDataMetadata';
7
- import genericViewportDataSetMetadataProvider from '../../../utilities/genericViewportDataSetMetadataProvider';
7
+ import genericViewportDisplaySetMetadataProvider from '../../../utilities/genericViewportDisplaySetMetadataProvider';
8
8
  import triggerEvent from '../../../utilities/triggerEvent';
9
9
  import getMinMax from '../../../utilities/getMinMax';
10
10
  import renderingEngineCache from '../../renderingEngineCache';
11
11
  import { getCameraVectors } from '../../helpers/getCameraVectors';
12
12
  import GenericViewport from '../GenericViewport';
13
- import { getGenericViewportImageDataSet, isGenericViewportImageDataSet, } from '../genericViewportDataSetAccess';
13
+ import { getGenericViewportImageDisplaySet, isGenericViewportImageDisplaySet, } from '../genericViewportDisplaySetAccess';
14
14
  import { DefaultPlanarDataProvider } from './DefaultPlanarDataProvider';
15
15
  import { createPlanarRenderPathResolver } from './PlanarRenderPathResolver';
16
16
  import { normalizePlanarOrientation, selectPlanarRenderPath, } from './planarRenderPathSelector';
@@ -220,10 +220,10 @@ class PlanarViewport extends GenericViewport {
220
220
  const dataId = `image-object:${this.id}:${imageIdToURI(image.imageId)}`;
221
221
  if (this.renderImageObjectDataId &&
222
222
  this.renderImageObjectDataId !== dataId) {
223
- genericViewportDataSetMetadataProvider.remove(this.renderImageObjectDataId);
223
+ genericViewportDisplaySetMetadataProvider.remove(this.renderImageObjectDataId);
224
224
  }
225
225
  this.renderImageObjectDataId = dataId;
226
- genericViewportDataSetMetadataProvider.add(dataId, {
226
+ genericViewportDisplaySetMetadataProvider.add(dataId, {
227
227
  image,
228
228
  imageIds: [image.imageId],
229
229
  initialImageIdIndex: 0,
@@ -258,7 +258,7 @@ class PlanarViewport extends GenericViewport {
258
258
  }
259
259
  const reference = this.resolveOverlayReference(stackInput, image);
260
260
  const dataId = this.resolveOverlayDataId(stackInput, image, reference);
261
- genericViewportDataSetMetadataProvider.add(dataId, {
261
+ genericViewportDisplaySetMetadataProvider.add(dataId, {
262
262
  image,
263
263
  imageData: stackInput.imageData,
264
264
  imageIds: [stackInput.imageId],
@@ -612,7 +612,7 @@ class PlanarViewport extends GenericViewport {
612
612
  onDestroy() {
613
613
  this.clearResolvedViewCache();
614
614
  if (this.renderImageObjectDataId) {
615
- genericViewportDataSetMetadataProvider.remove(this.renderImageObjectDataId);
615
+ genericViewportDisplaySetMetadataProvider.remove(this.renderImageObjectDataId);
616
616
  this.renderImageObjectDataId = undefined;
617
617
  }
618
618
  this.cpuCanvas?.remove();
@@ -758,7 +758,7 @@ class PlanarViewport extends GenericViewport {
758
758
  return this.mountedData.getCurrentBinding();
759
759
  }
760
760
  getDataSet(dataId) {
761
- const dataSet = getGenericViewportImageDataSet(dataId);
761
+ const dataSet = getGenericViewportImageDisplaySet(dataId);
762
762
  if (!isPlanarRegisteredDataSet(dataSet)) {
763
763
  return;
764
764
  }
@@ -1165,7 +1165,7 @@ function createPlanarImageFromVTKImageData(imageId, imageData) {
1165
1165
  };
1166
1166
  }
1167
1167
  function isPlanarRegisteredDataSet(value) {
1168
- if (!isGenericViewportImageDataSet(value) || value.imageIds.length === 0) {
1168
+ if (!isGenericViewportImageDisplaySet(value) || value.imageIds.length === 0) {
1169
1169
  return false;
1170
1170
  }
1171
1171
  return ((value.initialImageIdIndex === undefined ||
@@ -3,7 +3,7 @@ import RENDERING_DEFAULTS from '../../../constants/rendering';
3
3
  import { ActorRenderMode } from '../../../types';
4
4
  import clonePoint3 from '../../../utilities/clonePoint3';
5
5
  import hasOwn from '../../../utilities/hasOwn';
6
- import genericViewportDataSetMetadataProvider from '../../../utilities/genericViewportDataSetMetadataProvider';
6
+ import genericViewportDisplaySetMetadataProvider from '../../../utilities/genericViewportDisplaySetMetadataProvider';
7
7
  import { viewportProjection } from '../viewportProjection';
8
8
  import PlanarLegacyCompatibilityController from './PlanarLegacyCompatibilityController';
9
9
  import PlanarViewport from './PlanarViewport';
@@ -216,7 +216,7 @@ class PlanarViewportLegacyAdapter extends PlanarViewport {
216
216
  const bindingDataId = this.findBindingDataIdByActorEntryUID(actorEntryUID);
217
217
  if (bindingDataId) {
218
218
  if (this.getDisplaySetRole(bindingDataId) === 'overlay') {
219
- genericViewportDataSetMetadataProvider.remove(bindingDataId);
219
+ genericViewportDisplaySetMetadataProvider.remove(bindingDataId);
220
220
  }
221
221
  this.removeData(bindingDataId);
222
222
  didRemoveActor = true;
@@ -1,5 +1,5 @@
1
1
  import { loadVideoStreamMetadata } from '../../../utilities/VideoUtilities';
2
- import { getGenericViewportSourceDataId } from '../genericViewportDataSetAccess';
2
+ import { getGenericViewportSourceDataId } from '../genericViewportDisplaySetAccess';
3
3
  export class DefaultVideoDataProvider {
4
4
  async load(dataId) {
5
5
  const sourceDataId = getGenericViewportSourceDataId(dataId);
@@ -3,7 +3,7 @@ import { ViewportType } from '../../../enums';
3
3
  import { frameNumberToTimeSeconds, timeSecondsToFrameNumber, } from '../../../utilities/VideoUtilities';
4
4
  import { generateFrameImageId } from '../../../utilities/splitImageIdsBy4DTags';
5
5
  import { DefaultVideoDataProvider } from './DefaultVideoDataProvider';
6
- import { getGenericViewportSourceDataId } from '../genericViewportDataSetAccess';
6
+ import { getGenericViewportSourceDataId } from '../genericViewportDisplaySetAccess';
7
7
  import { createDefaultVideoViewState, normalizeVideoViewState, } from './videoViewportCamera';
8
8
  import { createVideoRenderPathResolver } from './VideoRenderPathResolver';
9
9
  import VideoResolvedView from './VideoResolvedView';
@@ -3,7 +3,7 @@ import type { ReferenceCompatibleOptions, ViewReference, ViewReferenceSpecifier
3
3
  import type ViewportType from '../../enums/ViewportType';
4
4
  import type ResolvedViewportView from './ResolvedViewportView';
5
5
  export type ViewportId = string;
6
- export type DataId = string;
6
+ export type DisplaySetId = string;
7
7
  export type KnownViewportRenderContext = 'planar' | 'video' | 'ecg' | 'wsi' | '3d';
8
8
  export type ExtensionViewportRenderContext = string & {};
9
9
  export type ViewportRenderContextType = KnownViewportRenderContext | ExtensionViewportRenderContext;
@@ -36,7 +36,7 @@ export interface BasePresentationProps {
36
36
  opacity?: number;
37
37
  }
38
38
  export type LoadedData<TData extends object = object> = {
39
- id: DataId;
39
+ id: DisplaySetId;
40
40
  type: LogicalDataType;
41
41
  } & TData;
42
42
  export type MountedRendering<TRendering extends {
@@ -75,7 +75,7 @@ export interface RenderPathResolver {
75
75
  resolve<TContext extends BaseViewportRenderContext>(type: ViewportType, data: LoadedData, options: DataAddOptions): RenderPathDefinition<TContext, BaseViewportRenderContext>;
76
76
  }
77
77
  export interface DataProvider<TData extends object = object, TOptions = unknown> {
78
- load(dataId: DataId, options?: TOptions): Promise<LoadedData<TData>>;
78
+ load(dataId: DisplaySetId, options?: TOptions): Promise<LoadedData<TData>>;
79
79
  }
80
80
  export interface ViewportDataBinding<TPresentation = unknown> extends RenderPathAttachment<TPresentation> {
81
81
  data: LoadedData;
@@ -84,20 +84,24 @@ export interface ViewportDataBinding<TPresentation = unknown> extends RenderPath
84
84
  export interface ViewportController<TViewState = unknown, TDataPresentation = unknown> {
85
85
  readonly id: ViewportId;
86
86
  readonly type: ViewportType;
87
- addDisplaySet(displaySetId: DataId, options: DataAddOptions): Promise<void>;
87
+ addDisplaySet(displaySetId: DisplaySetId, options: DataAddOptions): Promise<void>;
88
88
  setDisplaySets(...entries: Array<{
89
- displaySetId: DataId;
89
+ displaySetId: DisplaySetId;
90
90
  options?: unknown;
91
91
  }>): Promise<void>;
92
- removeData(dataId: DataId): void;
92
+ getDisplaySets(): Array<{
93
+ displaySetId: DisplaySetId;
94
+ options?: unknown;
95
+ }>;
96
+ removeData(displaySetId: DisplaySetId): void;
93
97
  setViewState(viewState: Partial<TViewState>): void;
94
98
  getViewState(): TViewState;
95
99
  getResolvedView(): ResolvedViewportView<unknown, ICamera<unknown>> | undefined;
96
100
  updateViewState(updater: Partial<TViewState> | ((viewState: TViewState) => Partial<TViewState> | void)): void;
97
101
  resetViewState(options?: unknown): boolean;
98
102
  setDisplaySetPresentation(props: Partial<TDataPresentation>): void;
99
- setDisplaySetPresentation(displaySetId: DataId, props: Partial<TDataPresentation>): void;
100
- getDisplaySetPresentation(dataId: DataId): TDataPresentation | undefined;
103
+ setDisplaySetPresentation(displaySetId: DisplaySetId, props: Partial<TDataPresentation>): void;
104
+ getDisplaySetPresentation(displaySetId: DisplaySetId): TDataPresentation | undefined;
101
105
  setViewReference(viewReference: ViewReference): void;
102
106
  getViewReference(specifier?: ViewReferenceSpecifier): ViewReference;
103
107
  getViewReferenceId(specifier?: ViewReferenceSpecifier): string;
@@ -2,7 +2,7 @@ import cache from '../../../cache/cache';
2
2
  import { loadAndCacheGeometry } from '../../../loaders/geometryLoader';
3
3
  import { createAndCacheVolume } from '../../../loaders/volumeLoader';
4
4
  import resolveViewportVolumeId from '../../helpers/resolveViewportVolumeId';
5
- import { getGenericViewportImageDataSet, isGenericViewportImageDataSet, } from '../genericViewportDataSetAccess';
5
+ import { getGenericViewportImageDisplaySet, isGenericViewportImageDisplaySet, } from '../genericViewportDisplaySetAccess';
6
6
  export class DefaultVolume3DDataProvider {
7
7
  async load(dataId, options) {
8
8
  if (!options) {
@@ -39,7 +39,7 @@ export class DefaultVolume3DDataProvider {
39
39
  };
40
40
  }
41
41
  getDataSet(dataId) {
42
- const dataSet = getGenericViewportImageDataSet(dataId);
42
+ const dataSet = getGenericViewportImageDisplaySet(dataId);
43
43
  if (!isVolume3DRegisteredDataSet(dataSet)) {
44
44
  return;
45
45
  }
@@ -47,7 +47,7 @@ export class DefaultVolume3DDataProvider {
47
47
  }
48
48
  }
49
49
  function isVolume3DRegisteredDataSet(value) {
50
- if (!isGenericViewportImageDataSet(value)) {
50
+ if (!isGenericViewportImageDisplaySet(value)) {
51
51
  return false;
52
52
  }
53
53
  return ((value.geometryId === undefined || typeof value.geometryId === 'string') &&
@@ -3,7 +3,7 @@ import { VIEWPORT_PRESETS } from '../../../constants';
3
3
  import { Events } from '../../../enums';
4
4
  import applyPreset from '../../../utilities/applyPreset';
5
5
  import triggerEvent from '../../../utilities/triggerEvent';
6
- import genericViewportDataSetMetadataProvider from '../../../utilities/genericViewportDataSetMetadataProvider';
6
+ import genericViewportDisplaySetMetadataProvider from '../../../utilities/genericViewportDisplaySetMetadataProvider';
7
7
  import { viewportProjection } from '../viewportProjection';
8
8
  import VolumeViewport3D from './viewport3D';
9
9
  class VolumeViewport3DLegacyAdapter extends VolumeViewport3D {
@@ -142,7 +142,7 @@ class VolumeViewport3DLegacyAdapter extends VolumeViewport3D {
142
142
  imageIds: cachedVolume.imageIds,
143
143
  volumeId: volumeInput.volumeId,
144
144
  };
145
- genericViewportDataSetMetadataProvider.add(dataId, dataSet);
145
+ genericViewportDisplaySetMetadataProvider.add(dataId, dataSet);
146
146
  this.managedDataIds.add(dataId);
147
147
  this.volumeDataIds.set(volumeInput.volumeId, dataId);
148
148
  dataIds.push(dataId);
@@ -268,7 +268,7 @@ class VolumeViewport3DLegacyAdapter extends VolumeViewport3D {
268
268
  if (!this.managedDataIds.delete(dataId)) {
269
269
  return;
270
270
  }
271
- genericViewportDataSetMetadataProvider.remove(dataId);
271
+ genericViewportDisplaySetMetadataProvider.remove(dataId);
272
272
  this.legacyProperties.delete(dataId);
273
273
  this.defaultLegacyProperties.delete(dataId);
274
274
  for (const [volumeId, mappedDataId] of this.volumeDataIds.entries()) {
@@ -279,7 +279,7 @@ class VolumeViewport3DLegacyAdapter extends VolumeViewport3D {
279
279
  }
280
280
  onDestroy() {
281
281
  for (const dataId of Array.from(this.managedDataIds)) {
282
- genericViewportDataSetMetadataProvider.remove(dataId);
282
+ genericViewportDisplaySetMetadataProvider.remove(dataId);
283
283
  }
284
284
  this.managedDataIds.clear();
285
285
  this.volumeDataIds.clear();
@@ -3,7 +3,7 @@ import { ViewportType } from '../../../enums';
3
3
  import renderingEngineCache from '../../renderingEngineCache';
4
4
  import GenericViewport from '../GenericViewport';
5
5
  import { getDimensionGroupReferenceContext, } from '../genericViewportReferenceCompatibility';
6
- import { getGenericViewportImageDataSet, isGenericViewportImageDataSet, } from '../genericViewportDataSetAccess';
6
+ import { getGenericViewportImageDisplaySet, isGenericViewportImageDisplaySet, } from '../genericViewportDisplaySetAccess';
7
7
  import { DefaultVolume3DDataProvider } from './DefaultVolume3DDataProvider';
8
8
  import { createVolume3DRenderPathResolver } from './Volume3DRenderPathResolver';
9
9
  import Volume3DResolvedView from './Volume3DResolvedView';
@@ -322,7 +322,7 @@ class VolumeViewport3D extends GenericViewport {
322
322
  return 'vtkGeometry3d';
323
323
  }
324
324
  getDataSet(dataId) {
325
- const dataSet = getGenericViewportImageDataSet(dataId);
325
+ const dataSet = getGenericViewportImageDisplaySet(dataId);
326
326
  if (!isVolume3DRegisteredDataSet(dataSet)) {
327
327
  return;
328
328
  }
@@ -388,7 +388,7 @@ function isVolume3DRendering(rendering) {
388
388
  rendering.renderMode === 'vtkGeometry3d');
389
389
  }
390
390
  function isVolume3DRegisteredDataSet(value) {
391
- if (!isGenericViewportImageDataSet(value)) {
391
+ if (!isGenericViewportImageDisplaySet(value)) {
392
392
  return false;
393
393
  }
394
394
  return ((value.geometryId === undefined || typeof value.geometryId === 'string') &&
@@ -1,5 +1,5 @@
1
1
  import { addWSIMiniNavigationOverlayCss, loadWSIData, } from '../../../utilities/WSIUtilities';
2
- import { getGenericViewportWSIDataSet } from '../genericViewportDataSetAccess';
2
+ import { getGenericViewportWSIDisplaySet } from '../genericViewportDisplaySetAccess';
3
3
  export class DefaultWSIDataProvider {
4
4
  async load(dataId) {
5
5
  const dataSet = this.getDataSet(dataId);
@@ -26,7 +26,7 @@ export class DefaultWSIDataProvider {
26
26
  };
27
27
  }
28
28
  getDataSet(dataId) {
29
- const registered = getGenericViewportWSIDataSet(dataId);
29
+ const registered = getGenericViewportWSIDisplaySet(dataId);
30
30
  if (!registered) {
31
31
  return;
32
32
  }
@@ -1,6 +1,6 @@
1
1
  import { MetadataModules } from '../../../enums';
2
2
  import * as metaData from '../../../metaData';
3
- import genericViewportDataSetMetadataProvider from '../../../utilities/genericViewportDataSetMetadataProvider';
3
+ import genericViewportDisplaySetMetadataProvider from '../../../utilities/genericViewportDisplaySetMetadataProvider';
4
4
  import { viewportProjection } from '../viewportProjection';
5
5
  import { canvasToIndexForWSI } from './wsiTransformUtils';
6
6
  import WSIViewport from './WSIViewport';
@@ -63,7 +63,7 @@ class WSIViewportLegacyAdapter extends WSIViewport {
63
63
  if (!webClient) {
64
64
  throw new Error(`To use setDataIds on WSI data, you must provide metaData.webClient for ${dataId}.`);
65
65
  }
66
- genericViewportDataSetMetadataProvider.add(dataId, {
66
+ genericViewportDisplaySetMetadataProvider.add(dataId, {
67
67
  imageIds,
68
68
  kind: 'wsi',
69
69
  options: {
@@ -0,0 +1,35 @@
1
+ import type { IImage } from '../../types';
2
+ import type { WSIClientLike } from '../../utilities/WSIUtilities';
3
+ import type { ViewportDataReference } from './ViewportArchitectureTypes';
4
+ export interface GenericViewportImageDisplaySet {
5
+ imageIds: string[];
6
+ [key: string]: unknown;
7
+ }
8
+ export interface GenericViewportPlanarDisplaySet extends GenericViewportImageDisplaySet {
9
+ kind?: 'planar';
10
+ initialImageIdIndex?: number;
11
+ volumeId?: string;
12
+ image?: IImage;
13
+ reference?: ViewportDataReference;
14
+ }
15
+ export interface GenericViewportSourceAliasDisplaySet {
16
+ kind: 'video' | 'ecg';
17
+ sourceDataId: string;
18
+ }
19
+ export interface GenericViewportWSIDisplaySet {
20
+ kind: 'wsi';
21
+ imageIds: string[];
22
+ options: {
23
+ miniNavigationOverlay?: boolean;
24
+ webClient: WSIClientLike;
25
+ };
26
+ }
27
+ export type GenericViewportRegisteredDisplaySet = string | string[] | GenericViewportPlanarDisplaySet | GenericViewportSourceAliasDisplaySet | GenericViewportWSIDisplaySet;
28
+ export declare function getGenericViewportRegisteredDisplaySet(displaySetId: string): GenericViewportRegisteredDisplaySet | undefined;
29
+ export declare function getGenericViewportImageDisplaySet(displaySetId: string): GenericViewportImageDisplaySet | undefined;
30
+ export declare function getGenericViewportPlanarDisplaySet(displaySetId: string): GenericViewportPlanarDisplaySet | undefined;
31
+ export declare function getGenericViewportWSIDisplaySet(displaySetId: string): GenericViewportWSIDisplaySet | undefined;
32
+ export declare function getGenericViewportSourceDataId(displaySetId: string): string;
33
+ export declare function isGenericViewportImageDisplaySet(value: unknown): value is GenericViewportImageDisplaySet;
34
+ export declare function isGenericViewportWSIDisplaySet(value: unknown): value is GenericViewportWSIDisplaySet;
35
+ export declare function isGenericViewportSourceAliasDisplaySet(value: unknown): value is GenericViewportSourceAliasDisplaySet;
@@ -1,27 +1,27 @@
1
- import genericViewportDataSetMetadataProvider from '../../utilities/genericViewportDataSetMetadataProvider';
2
- export function getGenericViewportRegisteredData(dataId) {
3
- return genericViewportDataSetMetadataProvider.get(genericViewportDataSetMetadataProvider.VIEWPORT_V2_DATA_SET, dataId);
1
+ import genericViewportDisplaySetMetadataProvider from '../../utilities/genericViewportDisplaySetMetadataProvider';
2
+ export function getGenericViewportRegisteredDisplaySet(displaySetId) {
3
+ return genericViewportDisplaySetMetadataProvider.get(genericViewportDisplaySetMetadataProvider.VIEWPORT_V2_DISPLAY_SET, displaySetId);
4
4
  }
5
- export function getGenericViewportImageDataSet(dataId) {
6
- const registered = getGenericViewportRegisteredData(dataId);
5
+ export function getGenericViewportImageDisplaySet(displaySetId) {
6
+ const registered = getGenericViewportRegisteredDisplaySet(displaySetId);
7
7
  if (isStringArray(registered)) {
8
8
  return {
9
9
  imageIds: registered,
10
10
  };
11
11
  }
12
- if (!isGenericViewportImageDataSet(registered)) {
12
+ if (!isGenericViewportImageDisplaySet(registered)) {
13
13
  return;
14
14
  }
15
15
  return registered;
16
16
  }
17
- export function getGenericViewportPlanarDataSet(dataId) {
18
- const registered = getGenericViewportRegisteredData(dataId);
17
+ export function getGenericViewportPlanarDisplaySet(displaySetId) {
18
+ const registered = getGenericViewportRegisteredDisplaySet(displaySetId);
19
19
  if (isStringArray(registered)) {
20
20
  return {
21
21
  imageIds: registered,
22
22
  };
23
23
  }
24
- if (!isGenericViewportImageDataSet(registered)) {
24
+ if (!isGenericViewportImageDisplaySet(registered)) {
25
25
  return;
26
26
  }
27
27
  if ('kind' in registered && registered.kind && registered.kind !== 'planar') {
@@ -29,9 +29,9 @@ export function getGenericViewportPlanarDataSet(dataId) {
29
29
  }
30
30
  return registered;
31
31
  }
32
- export function getGenericViewportWSIDataSet(dataId) {
33
- const registered = getGenericViewportRegisteredData(dataId);
34
- if (isGenericViewportWSIDataSet(registered)) {
32
+ export function getGenericViewportWSIDisplaySet(displaySetId) {
33
+ const registered = getGenericViewportRegisteredDisplaySet(displaySetId);
34
+ if (isGenericViewportWSIDisplaySet(registered)) {
35
35
  return registered;
36
36
  }
37
37
  if (isRecord(registered) &&
@@ -48,30 +48,30 @@ export function getGenericViewportWSIDataSet(dataId) {
48
48
  };
49
49
  }
50
50
  }
51
- export function getGenericViewportSourceDataId(dataId) {
52
- const registered = getGenericViewportRegisteredData(dataId);
51
+ export function getGenericViewportSourceDataId(displaySetId) {
52
+ const registered = getGenericViewportRegisteredDisplaySet(displaySetId);
53
53
  if (typeof registered === 'string') {
54
54
  return registered;
55
55
  }
56
56
  if (isStringArray(registered) && registered[0]) {
57
57
  return registered[0];
58
58
  }
59
- if (isGenericViewportSourceAliasDataSet(registered)) {
59
+ if (isGenericViewportSourceAliasDisplaySet(registered)) {
60
60
  return registered.sourceDataId;
61
61
  }
62
- return dataId;
62
+ return displaySetId;
63
63
  }
64
- export function isGenericViewportImageDataSet(value) {
64
+ export function isGenericViewportImageDisplaySet(value) {
65
65
  return isRecord(value) && isStringArray(value.imageIds);
66
66
  }
67
- export function isGenericViewportWSIDataSet(value) {
67
+ export function isGenericViewportWSIDisplaySet(value) {
68
68
  return (isRecord(value) &&
69
69
  value.kind === 'wsi' &&
70
70
  isStringArray(value.imageIds) &&
71
71
  isRecord(value.options) &&
72
72
  isWSIClientLike(value.options.webClient));
73
73
  }
74
- export function isGenericViewportSourceAliasDataSet(value) {
74
+ export function isGenericViewportSourceAliasDisplaySet(value) {
75
75
  return (isRecord(value) &&
76
76
  (value.kind === 'video' || value.kind === 'ecg') &&
77
77
  typeof value.sourceDataId === 'string');
@@ -4,7 +4,7 @@ export { ViewportProjectionService, viewportProjection, } from './viewportProjec
4
4
  export type { BuiltInViewportProjectionByKind, BuiltInViewportProjectionByType, BuiltInViewportProjectionKind, BuiltInViewportProjectionType, ProjectionPresentationForKind, ProjectionPresentationForViewport, ProjectionPresentationForViewportType, ProjectionSnapshotForKind, ProjectionSnapshotForViewport, ProjectionSnapshotForViewportType, ProjectionViewStateForKind, ProjectionViewStateForViewport, ProjectionViewStateForViewportType, } from './viewportProjection';
5
5
  export type { ProjectionPosition, ProjectionPresentation, ProjectionRequest, ProjectionScale, ProjectionSnapshot, ProjectionSpaces, ProjectionTransforms, ProjectionWriteOptions, ViewportProjectionAdapter, } from './ViewportProjectionTypes';
6
6
  export type { CameraFrame, CameraScale, CameraScaleMode, ViewAnchor, ViewportCameraBase, } from './ViewportCameraTypes';
7
- export type { BaseViewportRenderContext, BasePresentationProps, DataAddOptions, DataId, DataProvider, ICanvasWorldViewport, IFrameOfReferenceViewport, IPanViewport, IZoomViewport, LoadedData, MountedRendering, RenderPathDefinition, RenderPathAttachment, RenderPathResolver, RenderPath, ViewportDataBinding, ViewportDataReference, ViewportController, ViewportId, ViewportRenderContextType, } from './ViewportArchitectureTypes';
7
+ export type { BaseViewportRenderContext, BasePresentationProps, DataAddOptions, DisplaySetId, DataProvider, ICanvasWorldViewport, IFrameOfReferenceViewport, IPanViewport, IZoomViewport, LoadedData, MountedRendering, RenderPathDefinition, RenderPathAttachment, RenderPathResolver, RenderPath, ViewportDataBinding, ViewportDataReference, ViewportController, ViewportId, ViewportRenderContextType, } from './ViewportArchitectureTypes';
8
8
  export { viewportHasCanvasWorldTransform, viewportHasFrameOfReferenceUID, viewportHasPan, viewportHasZoom, } from './ViewportArchitectureTypes';
9
9
  export { default as ECGViewport } from './ECG';
10
10
  export { createDefaultECGRenderPaths, createECGRenderPathResolver, DefaultECGDataProvider, ecgProjection, } from './ECG';
@@ -142,6 +142,10 @@ declare class StackViewport extends Viewport {
142
142
  }): vtkImageDataType;
143
143
  private _createVTKImageData;
144
144
  setStack(imageIds: string[], currentImageIdIndex?: number): Promise<string>;
145
+ setDisplaySets(...entries: Array<{
146
+ displaySetId: string;
147
+ options?: unknown;
148
+ }>): Promise<void>;
145
149
  private _throwIfDestroyed;
146
150
  private _checkVTKImageDataMatchesCornerstoneImage;
147
151
  private _updateVTKImageDataFromCornerstoneImage;
@@ -8,6 +8,7 @@ import eventTarget from '../eventTarget';
8
8
  import * as metaData from '../metaData';
9
9
  import { getImageDataMetadata as getImageDataMetadataUtil } from '../utilities/getImageDataMetadata';
10
10
  import { coreLog } from '../utilities/logger';
11
+ import { getGenericViewportImageDisplaySet } from './GenericViewport/genericViewportDisplaySetAccess';
11
12
  import { actorIsA, isImageActor } from '../utilities/actorCheck';
12
13
  import * as colormapUtils from '../utilities/colormap';
13
14
  import { getTransferFunctionNodes, setTransferFunctionNodes, } from '../utilities/transferFunctionUtils';
@@ -1304,6 +1305,7 @@ class StackViewport extends Viewport {
1304
1305
  }
1305
1306
  async setStack(imageIds, currentImageIdIndex = 0) {
1306
1307
  this._throwIfDestroyed();
1308
+ this.clearDisplaySets();
1307
1309
  this.imageIds = imageIds;
1308
1310
  if (currentImageIdIndex > imageIds.length) {
1309
1311
  throw new Error('Current image index is greater than the number of images in the stack');
@@ -1341,6 +1343,18 @@ class StackViewport extends Viewport {
1341
1343
  triggerEvent(this.element, Events.VIEWPORT_NEW_IMAGE_SET, eventDetail);
1342
1344
  return imageId;
1343
1345
  }
1346
+ async setDisplaySets(...entries) {
1347
+ await this.mountDisplaySets(entries, async (entry) => {
1348
+ const dataSet = getGenericViewportImageDisplaySet(entry.displaySetId);
1349
+ if (!dataSet?.imageIds?.length) {
1350
+ throw new Error(`[StackViewport] No registered imageIds for display set ${entry.displaySetId}`);
1351
+ }
1352
+ const initialImageIdIndex = typeof dataSet.initialImageIdIndex === 'number'
1353
+ ? dataSet.initialImageIdIndex
1354
+ : 0;
1355
+ await this.setStack(dataSet.imageIds, initialImageIdIndex);
1356
+ });
1357
+ }
1344
1358
  _throwIfDestroyed() {
1345
1359
  if (this.isDisabled) {
1346
1360
  throw new Error('The stack viewport has been destroyed and is no longer usable. Renderings will not be performed. If you ' +
@@ -1,5 +1,6 @@
1
1
  import type { mat4 } from 'gl-matrix';
2
2
  import { VideoEnums as VideoViewportEnum } from '../enums';
3
+ import type { DisplaySetId } from './GenericViewport/ViewportArchitectureTypes';
3
4
  import type { VideoViewportProperties, Point3, Point2, ICamera, VideoViewportInput, VOIRange, IImage, ViewReferenceSpecifier, ViewReference, ReferenceCompatibleOptions, ImageSetOptions, IStackInput, CPUIImageData, IImageData } from '../types';
4
5
  import { Transform } from './helpers/cpuFallback/rendering/transform';
5
6
  import Viewport from './Viewport';
@@ -44,6 +45,15 @@ declare class VideoViewport extends Viewport {
44
45
  dataId: string;
45
46
  options?: Record<string, unknown>;
46
47
  }>): Promise<unknown>;
48
+ setDisplaySets(...entries: Array<{
49
+ displaySetId: DisplaySetId;
50
+ options?: {
51
+ frameNumber?: number;
52
+ viewReference?: {
53
+ sliceIndex?: number;
54
+ };
55
+ };
56
+ }>): Promise<void>;
47
57
  setVideo(imageId: string, frameNumber?: number): Promise<unknown>;
48
58
  private setVideoURL;
49
59
  getImageIds(): string[];
@@ -1,4 +1,5 @@
1
1
  import { Events as EVENTS, VideoEnums as VideoViewportEnum } from '../enums';
2
+ import { getGenericViewportSourceDataId } from './GenericViewport/genericViewportDisplaySetAccess';
2
3
  import { Transform } from './helpers/cpuFallback/rendering/transform';
3
4
  import triggerEvent from '../utilities/triggerEvent';
4
5
  import Viewport from './Viewport';
@@ -204,7 +205,19 @@ class VideoViewport extends Viewport {
204
205
  }
205
206
  return this.setVideo(entries[0].dataId);
206
207
  }
208
+ async setDisplaySets(...entries) {
209
+ await this.mountDisplaySets(entries, async (entry) => {
210
+ const sourceDataId = getGenericViewportSourceDataId(entry.displaySetId);
211
+ const { frameNumber, viewReference } = entry.options ?? {};
212
+ const initialFrame = frameNumber ??
213
+ (typeof viewReference?.sliceIndex === 'number'
214
+ ? viewReference.sliceIndex + 1
215
+ : undefined);
216
+ await this.setVideo(sourceDataId, initialFrame);
217
+ });
218
+ }
207
219
  setVideo(imageId, frameNumber) {
220
+ this.clearDisplaySets();
208
221
  this.imageId = Array.isArray(imageId) ? imageId[0] : imageId;
209
222
  const stream = loadVideoStreamMetadata(imageId);
210
223
  this.modality = stream.modality;
@@ -28,6 +28,10 @@ declare class Viewport {
28
28
  sWidth: number;
29
29
  sHeight: number;
30
30
  _actors: Map<string, ActorEntry>;
31
+ protected _displaySets: Array<{
32
+ displaySetId: string;
33
+ options?: unknown;
34
+ }>;
31
35
  readonly defaultOptions: ViewportInputOptions;
32
36
  options: ViewportInputOptions;
33
37
  _suppressCameraModifiedEvents: boolean;
@@ -150,6 +154,19 @@ declare class Viewport {
150
154
  dataId: string;
151
155
  options?: DataSetOptions;
152
156
  }>): void;
157
+ setDisplaySets(...entries: Array<{
158
+ displaySetId: string;
159
+ options?: unknown;
160
+ }>): void | Promise<void>;
161
+ protected mountDisplaySets<TEntry extends {
162
+ displaySetId: string;
163
+ options?: unknown;
164
+ }>(entries: TEntry[], load: (sourceEntry: TEntry) => void | Promise<void>): Promise<void>;
165
+ getDisplaySets(): Array<{
166
+ displaySetId: string;
167
+ options?: unknown;
168
+ }>;
169
+ protected clearDisplaySets(): void;
153
170
  }
154
171
  export declare function getVolumeCenterIJK(dimensions: number[], direction: ArrayLike<number>, viewPlaneNormal: ArrayLike<number>): number[];
155
172
  export default Viewport;
@@ -26,6 +26,7 @@ class Viewport {
26
26
  this.flipHorizontal = false;
27
27
  this.flipVertical = false;
28
28
  this.viewportStatus = ViewportStatus.NO_DATA;
29
+ this._displaySets = [];
29
30
  this._suppressCameraModifiedEvents = false;
30
31
  this.hasPixelSpacing = true;
31
32
  this.getProperties = () => ({});
@@ -1189,6 +1190,23 @@ class Viewport {
1189
1190
  setDataList(_entries) {
1190
1191
  throw new Error('Unsupported operation setDataList');
1191
1192
  }
1193
+ setDisplaySets(...entries) {
1194
+ this._displaySets = entries;
1195
+ }
1196
+ async mountDisplaySets(entries, load) {
1197
+ const [entry] = entries;
1198
+ if (!entry?.displaySetId) {
1199
+ throw new Error(`${this.constructor.name}: setDisplaySets requires a displaySetId`);
1200
+ }
1201
+ await load(entry);
1202
+ this._displaySets = [entry];
1203
+ }
1204
+ getDisplaySets() {
1205
+ return this._displaySets;
1206
+ }
1207
+ clearDisplaySets() {
1208
+ this._displaySets = [];
1209
+ }
1192
1210
  }
1193
1211
  Viewport.CameraViewPresentation = {
1194
1212
  rotation: true,
@@ -61,6 +61,10 @@ declare class WSIViewport extends Viewport {
61
61
  webClient: WSIClientLike;
62
62
  }): Promise<void>;
63
63
  setWSI(imageIds: string[], client: WSIClientLike): Promise<void>;
64
+ setDisplaySets(...entries: Array<{
65
+ displaySetId: string;
66
+ options?: unknown;
67
+ }>): Promise<void>;
64
68
  postrender: () => void;
65
69
  scroll(delta: number): void;
66
70
  getRotation: () => number;
@@ -9,6 +9,7 @@ import { EPSILON } from '../constants';
9
9
  import triggerEvent from '../utilities/triggerEvent';
10
10
  import eventTarget from '../eventTarget';
11
11
  import imageIdToURI from '../utilities/imageIdToURI';
12
+ import { getGenericViewportWSIDisplaySet } from './GenericViewport/genericViewportDisplaySetAccess';
12
13
  import { addWSIMiniNavigationOverlayCss, getDicomMicroscopyViewer, loadWSIData, } from '../utilities/WSIUtilities';
13
14
  let WSIUtilFunctions = null;
14
15
  const EVENT_POSTRENDER = 'postrender';
@@ -341,7 +342,7 @@ class WSIViewport extends Viewport {
341
342
  return;
342
343
  }
343
344
  const { dataId } = entries[0];
344
- const dataSet = metaData.get('genericViewportDataSet', dataId);
345
+ const dataSet = metaData.get('genericViewportDisplaySet', dataId);
345
346
  if (dataSet?.imageIds) {
346
347
  return this.setDataIds(dataSet.imageIds, {
347
348
  webClient: dataSet.options?.webClient,
@@ -361,6 +362,7 @@ class WSIViewport extends Viewport {
361
362
  return this.setWSI(imageIds, webClient);
362
363
  }
363
364
  async setWSI(imageIds, client) {
365
+ this.clearDisplaySets();
364
366
  this.microscopyElement.style.background = 'black';
365
367
  this.microscopyElement.innerText = 'Loading';
366
368
  this.imageIds = imageIds;
@@ -397,6 +399,18 @@ class WSIViewport extends Viewport {
397
399
  background: 'none',
398
400
  });
399
401
  }
402
+ async setDisplaySets(...entries) {
403
+ await this.mountDisplaySets(entries, async (entry) => {
404
+ const dataSet = getGenericViewportWSIDisplaySet(entry.displaySetId);
405
+ if (!dataSet?.imageIds?.length || !dataSet.options?.webClient) {
406
+ throw new Error(`[WSIViewport] No registered WSI dataset (imageIds + webClient) for display set ${entry.displaySetId}`);
407
+ }
408
+ if (dataSet.options.miniNavigationOverlay !== false) {
409
+ addWSIMiniNavigationOverlayCss();
410
+ }
411
+ await WSIViewport.prototype.setWSI.call(this, dataSet.imageIds, dataSet.options.webClient);
412
+ });
413
+ }
400
414
  scroll(delta) {
401
415
  const camera = this.getCamera();
402
416
  this.setCamera({
@@ -0,0 +1,8 @@
1
+ declare const genericViewportDisplaySetMetadataProvider: {
2
+ VIEWPORT_V2_DISPLAY_SET: string;
3
+ add(displaySetId: string, dataSet: unknown): void;
4
+ get(type: string, displaySetId: string): unknown;
5
+ remove(displaySetId: string): void;
6
+ clear(): void;
7
+ };
8
+ export default genericViewportDisplaySetMetadataProvider;
@@ -0,0 +1,23 @@
1
+ import { addProvider } from '../metaData';
2
+ const VIEWPORT_V2_DISPLAY_SET = 'genericViewportDisplaySet';
3
+ const state = new Map();
4
+ const genericViewportDisplaySetMetadataProvider = {
5
+ VIEWPORT_V2_DISPLAY_SET,
6
+ add(displaySetId, dataSet) {
7
+ state.set(displaySetId, dataSet);
8
+ },
9
+ get(type, displaySetId) {
10
+ if (type !== VIEWPORT_V2_DISPLAY_SET) {
11
+ return;
12
+ }
13
+ return state.get(displaySetId);
14
+ },
15
+ remove(displaySetId) {
16
+ state.delete(displaySetId);
17
+ },
18
+ clear() {
19
+ state.clear();
20
+ },
21
+ };
22
+ addProvider(genericViewportDisplaySetMetadataProvider.get);
23
+ export default genericViewportDisplaySetMetadataProvider;
@@ -57,7 +57,7 @@ import { updateVTKImageDataWithCornerstoneImage } from './updateVTKImageDataWith
57
57
  import ProgressiveIterator from './ProgressiveIterator';
58
58
  import decimate from './decimate';
59
59
  import imageRetrieveMetadataProvider from './imageRetrieveMetadataProvider';
60
- import genericViewportDataSetMetadataProvider from './genericViewportDataSetMetadataProvider';
60
+ import genericViewportDisplaySetMetadataProvider from './genericViewportDisplaySetMetadataProvider';
61
61
  import isVideoTransferSyntax from './isVideoTransferSyntax';
62
62
  import { getBufferConfiguration } from './getBufferConfiguration';
63
63
  import { generateVolumePropsFromImageIds } from './generateVolumePropsFromImageIds';
@@ -111,4 +111,4 @@ import { getNormalizedAspectRatio } from './getNormalizedAspectRatio';
111
111
  export { updatePlaneRestriction } from './updatePlaneRestriction';
112
112
  declare const getViewportModality: (viewport: IViewport, volumeId?: string) => string;
113
113
  export * from './isEqual';
114
- export { FrameRange, eventListener, csUtils as invertRgbTransferFunction, createSigmoidRGBTransferFunction, getVoiFromSigmoidRGBTransferFunction, createLinearRGBTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, fnv1aHash, calibratedPixelSpacingMetadataProvider, clamp, uuidv4, getMinMax, clonePoint3, hasOwn, getRuntimeId, getVOIRangeFromWindowLevel, isOpposite, getViewportModality, windowLevel, convertToGrayscale, convertColorArrayToRgbString, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, transformIndexToWorld, loadImageToCanvas, renderToCanvasCPU, renderToCanvasGPU, worldToImageCoords, imageToWorldCoords, getVolumeSliceRangeInfo, getVolumeViewportScrollInfo, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, isPTPrescaledWithSUV, actorIsA, getViewportsWithImageURI, getClosestStackImageIndexForPoint, getCurrentVolumeViewportSlice, calculateViewportsSpatialRegistration, spatialRegistrationMetadataProvider, getViewportImageCornersInWorld, hasNaNValues, applyPreset, deepMerge, PointsManager, getScalingParameters, colormap, getImageLegacy, ProgressiveIterator, decimate, imageRetrieveMetadataProvider, genericViewportDataSetMetadataProvider, transferFunctionUtils, updateVTKImageDataWithCornerstoneImage, sortImageIdsAndGetSpacing, makeVolumeMetadata, isValidVolume, genericMetadataProvider, isVideoTransferSyntax, HistoryMemo, generateVolumePropsFromImageIds, getBufferConfiguration, VoxelManager, RLEVoxelMap, convertStackToVolumeViewport, convertVolumeToStackViewport, roundNumber, roundToPrecision, getViewportImageIds, getRandomSampleFromArray, getVolumeId, color, hasFloatScalingParameters, getDynamicVolumeInfo, autoLoad, scaleArray, deepClone, splitImageIdsBy4DTags, handleMultiframe4D, generateFrameImageId, pointInShapeCallback, ECGUtilities, VideoUtilities, WSIUtilities, deepEqual, jumpToSlice, scroll, clip, transformWorldToIndexContinuous, createSubVolume, getAcquisitionPlaneOrientation, getVolumeDirectionVectors, getVolumeViewReferenceId, calculateSpacingBetweenImageIds, getImageDataMetadata, buildMetadata, calculateNeighborhoodStats, asArray, viewportSupportsImageSlices, viewportSupportsStackCalibration, viewportSupportsStackCompatibility, viewportSupportsVolumeActors, viewportSupportsVolumeCompatibility, viewportSupportsVolumeId, viewportSupportsVolumeURI, getNormalizedAspectRatio, };
114
+ export { FrameRange, eventListener, csUtils as invertRgbTransferFunction, createSigmoidRGBTransferFunction, getVoiFromSigmoidRGBTransferFunction, createLinearRGBTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, fnv1aHash, calibratedPixelSpacingMetadataProvider, clamp, uuidv4, getMinMax, clonePoint3, hasOwn, getRuntimeId, getVOIRangeFromWindowLevel, isOpposite, getViewportModality, windowLevel, convertToGrayscale, convertColorArrayToRgbString, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, transformIndexToWorld, loadImageToCanvas, renderToCanvasCPU, renderToCanvasGPU, worldToImageCoords, imageToWorldCoords, getVolumeSliceRangeInfo, getVolumeViewportScrollInfo, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, isPTPrescaledWithSUV, actorIsA, getViewportsWithImageURI, getClosestStackImageIndexForPoint, getCurrentVolumeViewportSlice, calculateViewportsSpatialRegistration, spatialRegistrationMetadataProvider, getViewportImageCornersInWorld, hasNaNValues, applyPreset, deepMerge, PointsManager, getScalingParameters, colormap, getImageLegacy, ProgressiveIterator, decimate, imageRetrieveMetadataProvider, genericViewportDisplaySetMetadataProvider, transferFunctionUtils, updateVTKImageDataWithCornerstoneImage, sortImageIdsAndGetSpacing, makeVolumeMetadata, isValidVolume, genericMetadataProvider, isVideoTransferSyntax, HistoryMemo, generateVolumePropsFromImageIds, getBufferConfiguration, VoxelManager, RLEVoxelMap, convertStackToVolumeViewport, convertVolumeToStackViewport, roundNumber, roundToPrecision, getViewportImageIds, getRandomSampleFromArray, getVolumeId, color, hasFloatScalingParameters, getDynamicVolumeInfo, autoLoad, scaleArray, deepClone, splitImageIdsBy4DTags, handleMultiframe4D, generateFrameImageId, pointInShapeCallback, ECGUtilities, VideoUtilities, WSIUtilities, deepEqual, jumpToSlice, scroll, clip, transformWorldToIndexContinuous, createSubVolume, getAcquisitionPlaneOrientation, getVolumeDirectionVectors, getVolumeViewReferenceId, calculateSpacingBetweenImageIds, getImageDataMetadata, buildMetadata, calculateNeighborhoodStats, asArray, viewportSupportsImageSlices, viewportSupportsStackCalibration, viewportSupportsStackCompatibility, viewportSupportsVolumeActors, viewportSupportsVolumeCompatibility, viewportSupportsVolumeId, viewportSupportsVolumeURI, getNormalizedAspectRatio, };
@@ -57,7 +57,7 @@ import { updateVTKImageDataWithCornerstoneImage } from './updateVTKImageDataWith
57
57
  import ProgressiveIterator from './ProgressiveIterator';
58
58
  import decimate from './decimate';
59
59
  import imageRetrieveMetadataProvider from './imageRetrieveMetadataProvider';
60
- import genericViewportDataSetMetadataProvider from './genericViewportDataSetMetadataProvider';
60
+ import genericViewportDisplaySetMetadataProvider from './genericViewportDisplaySetMetadataProvider';
61
61
  import isVideoTransferSyntax from './isVideoTransferSyntax';
62
62
  import { getBufferConfiguration } from './getBufferConfiguration';
63
63
  import { generateVolumePropsFromImageIds } from './generateVolumePropsFromImageIds';
@@ -112,4 +112,4 @@ import { getNormalizedAspectRatio } from './getNormalizedAspectRatio';
112
112
  export { updatePlaneRestriction } from './updatePlaneRestriction';
113
113
  const getViewportModality = (viewport, volumeId) => _getViewportModality(viewport, volumeId, cache.getVolume);
114
114
  export * from './isEqual';
115
- export { FrameRange, eventListener, csUtils as invertRgbTransferFunction, createSigmoidRGBTransferFunction, getVoiFromSigmoidRGBTransferFunction, createLinearRGBTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, fnv1aHash, calibratedPixelSpacingMetadataProvider, clamp, uuidv4, getMinMax, clonePoint3, hasOwn, getRuntimeId, getVOIRangeFromWindowLevel, isOpposite, getViewportModality, windowLevel, convertToGrayscale, convertColorArrayToRgbString, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, transformIndexToWorld, loadImageToCanvas, renderToCanvasCPU, renderToCanvasGPU, worldToImageCoords, imageToWorldCoords, getVolumeSliceRangeInfo, getVolumeViewportScrollInfo, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, isPTPrescaledWithSUV, actorIsA, getViewportsWithImageURI, getClosestStackImageIndexForPoint, getCurrentVolumeViewportSlice, calculateViewportsSpatialRegistration, spatialRegistrationMetadataProvider, getViewportImageCornersInWorld, hasNaNValues, applyPreset, deepMerge, PointsManager, getScalingParameters, colormap, getImageLegacy, ProgressiveIterator, decimate, imageRetrieveMetadataProvider, genericViewportDataSetMetadataProvider, transferFunctionUtils, updateVTKImageDataWithCornerstoneImage, sortImageIdsAndGetSpacing, makeVolumeMetadata, isValidVolume, genericMetadataProvider, isVideoTransferSyntax, HistoryMemo, generateVolumePropsFromImageIds, getBufferConfiguration, VoxelManager, RLEVoxelMap, convertStackToVolumeViewport, convertVolumeToStackViewport, roundNumber, roundToPrecision, getViewportImageIds, getRandomSampleFromArray, getVolumeId, color, hasFloatScalingParameters, getDynamicVolumeInfo, autoLoad, scaleArray, deepClone, splitImageIdsBy4DTags, handleMultiframe4D, generateFrameImageId, pointInShapeCallback, ECGUtilities, VideoUtilities, WSIUtilities, deepEqual, jumpToSlice, scroll, clip, transformWorldToIndexContinuous, createSubVolume, getAcquisitionPlaneOrientation, getVolumeDirectionVectors, getVolumeViewReferenceId, calculateSpacingBetweenImageIds, getImageDataMetadata, buildMetadata, calculateNeighborhoodStats, asArray, viewportSupportsImageSlices, viewportSupportsStackCalibration, viewportSupportsStackCompatibility, viewportSupportsVolumeActors, viewportSupportsVolumeCompatibility, viewportSupportsVolumeId, viewportSupportsVolumeURI, getNormalizedAspectRatio, };
115
+ export { FrameRange, eventListener, csUtils as invertRgbTransferFunction, createSigmoidRGBTransferFunction, getVoiFromSigmoidRGBTransferFunction, createLinearRGBTransferFunction, scaleRgbTransferFunction, triggerEvent, imageIdToURI, fnv1aHash, calibratedPixelSpacingMetadataProvider, clamp, uuidv4, getMinMax, clonePoint3, hasOwn, getRuntimeId, getVOIRangeFromWindowLevel, isOpposite, getViewportModality, windowLevel, convertToGrayscale, convertColorArrayToRgbString, getClosestImageId, getSpacingInNormalDirection, getTargetVolumeAndSpacingInNormalDir, getVolumeActorCorners, indexWithinDimensions, getVolumeViewportsContainingSameVolumes, getViewportsWithVolumeId, transformWorldToIndex, transformIndexToWorld, loadImageToCanvas, renderToCanvasCPU, renderToCanvasGPU, worldToImageCoords, imageToWorldCoords, getVolumeSliceRangeInfo, getVolumeViewportScrollInfo, getSliceRange, snapFocalPointToSlice, getImageSliceDataForVolumeViewport, isImageActor, isPTPrescaledWithSUV, actorIsA, getViewportsWithImageURI, getClosestStackImageIndexForPoint, getCurrentVolumeViewportSlice, calculateViewportsSpatialRegistration, spatialRegistrationMetadataProvider, getViewportImageCornersInWorld, hasNaNValues, applyPreset, deepMerge, PointsManager, getScalingParameters, colormap, getImageLegacy, ProgressiveIterator, decimate, imageRetrieveMetadataProvider, genericViewportDisplaySetMetadataProvider, transferFunctionUtils, updateVTKImageDataWithCornerstoneImage, sortImageIdsAndGetSpacing, makeVolumeMetadata, isValidVolume, genericMetadataProvider, isVideoTransferSyntax, HistoryMemo, generateVolumePropsFromImageIds, getBufferConfiguration, VoxelManager, RLEVoxelMap, convertStackToVolumeViewport, convertVolumeToStackViewport, roundNumber, roundToPrecision, getViewportImageIds, getRandomSampleFromArray, getVolumeId, color, hasFloatScalingParameters, getDynamicVolumeInfo, autoLoad, scaleArray, deepClone, splitImageIdsBy4DTags, handleMultiframe4D, generateFrameImageId, pointInShapeCallback, ECGUtilities, VideoUtilities, WSIUtilities, deepEqual, jumpToSlice, scroll, clip, transformWorldToIndexContinuous, createSubVolume, getAcquisitionPlaneOrientation, getVolumeDirectionVectors, getVolumeViewReferenceId, calculateSpacingBetweenImageIds, getImageDataMetadata, buildMetadata, calculateNeighborhoodStats, asArray, viewportSupportsImageSlices, viewportSupportsStackCalibration, viewportSupportsStackCompatibility, viewportSupportsVolumeActors, viewportSupportsVolumeCompatibility, viewportSupportsVolumeId, viewportSupportsVolumeURI, getNormalizedAspectRatio, };
@@ -1 +1 @@
1
- export declare const version = "5.0.15";
1
+ export declare const version = "5.1.0";
@@ -1 +1 @@
1
- export const version = '5.0.15';
1
+ export const version = '5.1.0';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cornerstonejs/core",
3
- "version": "5.0.15",
3
+ "version": "5.1.0",
4
4
  "description": "Cornerstone3D Core",
5
5
  "module": "./dist/esm/index.js",
6
6
  "types": "./dist/esm/index.d.ts",
@@ -84,18 +84,18 @@
84
84
  "prepublishOnly": "pnpm run build"
85
85
  },
86
86
  "dependencies": {
87
- "@cornerstonejs/utils": "5.0.15",
87
+ "@cornerstonejs/utils": "5.1.0",
88
88
  "@kitware/vtk.js": "35.5.3",
89
89
  "comlink": "4.4.2",
90
90
  "gl-matrix": "3.4.3",
91
91
  "loglevel": "1.9.2"
92
92
  },
93
93
  "devDependencies": {
94
- "@cornerstonejs/metadata": "5.0.15"
94
+ "@cornerstonejs/metadata": "5.1.0"
95
95
  },
96
96
  "peerDependencies": {
97
- "@cornerstonejs/metadata": "5.0.15",
98
- "@cornerstonejs/utils": "5.0.15"
97
+ "@cornerstonejs/metadata": "5.1.0",
98
+ "@cornerstonejs/utils": "5.1.0"
99
99
  },
100
100
  "contributors": [
101
101
  {
@@ -108,5 +108,5 @@
108
108
  "type": "individual",
109
109
  "url": "https://ohif.org/donate"
110
110
  },
111
- "gitHead": "b01d23f1381a6f166ba2349951c0a4e80ba981d6"
111
+ "gitHead": "f86b3b590f646412726bfb8bbea8e6724f36cbf1"
112
112
  }
@@ -1,35 +0,0 @@
1
- import type { IImage } from '../../types';
2
- import type { WSIClientLike } from '../../utilities/WSIUtilities';
3
- import type { ViewportDataReference } from './ViewportArchitectureTypes';
4
- export interface GenericViewportImageDataSet {
5
- imageIds: string[];
6
- [key: string]: unknown;
7
- }
8
- export interface GenericViewportPlanarDataSet extends GenericViewportImageDataSet {
9
- kind?: 'planar';
10
- initialImageIdIndex?: number;
11
- volumeId?: string;
12
- image?: IImage;
13
- reference?: ViewportDataReference;
14
- }
15
- export interface GenericViewportSourceAliasDataSet {
16
- kind: 'video' | 'ecg';
17
- sourceDataId: string;
18
- }
19
- export interface GenericViewportWSIDataSet {
20
- kind: 'wsi';
21
- imageIds: string[];
22
- options: {
23
- miniNavigationOverlay?: boolean;
24
- webClient: WSIClientLike;
25
- };
26
- }
27
- export type GenericViewportRegisteredData = string | string[] | GenericViewportPlanarDataSet | GenericViewportSourceAliasDataSet | GenericViewportWSIDataSet;
28
- export declare function getGenericViewportRegisteredData(dataId: string): GenericViewportRegisteredData | undefined;
29
- export declare function getGenericViewportImageDataSet(dataId: string): GenericViewportImageDataSet | undefined;
30
- export declare function getGenericViewportPlanarDataSet(dataId: string): GenericViewportPlanarDataSet | undefined;
31
- export declare function getGenericViewportWSIDataSet(dataId: string): GenericViewportWSIDataSet | undefined;
32
- export declare function getGenericViewportSourceDataId(dataId: string): string;
33
- export declare function isGenericViewportImageDataSet(value: unknown): value is GenericViewportImageDataSet;
34
- export declare function isGenericViewportWSIDataSet(value: unknown): value is GenericViewportWSIDataSet;
35
- export declare function isGenericViewportSourceAliasDataSet(value: unknown): value is GenericViewportSourceAliasDataSet;
@@ -1,8 +0,0 @@
1
- declare const genericViewportDataSetMetadataProvider: {
2
- VIEWPORT_V2_DATA_SET: string;
3
- add(dataId: string, dataSet: unknown): void;
4
- get(type: string, dataId: string): unknown;
5
- remove(dataId: string): void;
6
- clear(): void;
7
- };
8
- export default genericViewportDataSetMetadataProvider;
@@ -1,23 +0,0 @@
1
- import { addProvider } from '../metaData';
2
- const VIEWPORT_V2_DATA_SET = 'genericViewportDataSet';
3
- let state = {};
4
- const genericViewportDataSetMetadataProvider = {
5
- VIEWPORT_V2_DATA_SET,
6
- add(dataId, dataSet) {
7
- state[dataId] = dataSet;
8
- },
9
- get(type, dataId) {
10
- if (type !== VIEWPORT_V2_DATA_SET) {
11
- return;
12
- }
13
- return state[dataId];
14
- },
15
- remove(dataId) {
16
- delete state[dataId];
17
- },
18
- clear() {
19
- state = {};
20
- },
21
- };
22
- addProvider(genericViewportDataSetMetadataProvider.get);
23
- export default genericViewportDataSetMetadataProvider;