@cornerstonejs/core 1.77.13 → 1.78.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 (118) hide show
  1. package/dist/cjs/RenderingEngine/RenderingEngine.d.ts +0 -2
  2. package/dist/cjs/RenderingEngine/RenderingEngine.js +0 -9
  3. package/dist/cjs/RenderingEngine/RenderingEngine.js.map +1 -1
  4. package/dist/cjs/RenderingEngine/StackViewport.js +2 -2
  5. package/dist/cjs/RenderingEngine/VideoViewport.d.ts +2 -1
  6. package/dist/cjs/RenderingEngine/VideoViewport.js +15 -6
  7. package/dist/cjs/RenderingEngine/VideoViewport.js.map +1 -1
  8. package/dist/cjs/RenderingEngine/Viewport.d.ts +2 -1
  9. package/dist/cjs/RenderingEngine/Viewport.js +3 -0
  10. package/dist/cjs/RenderingEngine/Viewport.js.map +1 -1
  11. package/dist/cjs/RenderingEngine/WSIViewport.d.ts +82 -0
  12. package/dist/cjs/RenderingEngine/WSIViewport.js +447 -0
  13. package/dist/cjs/RenderingEngine/WSIViewport.js.map +1 -0
  14. package/dist/cjs/RenderingEngine/helpers/viewportTypeToViewportClass.d.ts +2 -0
  15. package/dist/cjs/RenderingEngine/helpers/viewportTypeToViewportClass.js +2 -0
  16. package/dist/cjs/RenderingEngine/helpers/viewportTypeToViewportClass.js.map +1 -1
  17. package/dist/cjs/enums/MetadataModules.d.ts +2 -1
  18. package/dist/cjs/enums/MetadataModules.js +1 -0
  19. package/dist/cjs/enums/MetadataModules.js.map +1 -1
  20. package/dist/cjs/enums/ViewportType.d.ts +2 -1
  21. package/dist/cjs/enums/ViewportType.js +1 -0
  22. package/dist/cjs/enums/ViewportType.js.map +1 -1
  23. package/dist/cjs/index.d.ts +2 -1
  24. package/dist/cjs/index.js +4 -2
  25. package/dist/cjs/index.js.map +1 -1
  26. package/dist/cjs/types/IRenderingEngine.d.ts +0 -2
  27. package/dist/cjs/types/IViewport.d.ts +7 -0
  28. package/dist/cjs/types/IWSIViewport.d.ts +13 -0
  29. package/dist/cjs/types/IWSIViewport.js +3 -0
  30. package/dist/cjs/types/IWSIViewport.js.map +1 -0
  31. package/dist/cjs/types/WSIViewportProperties.d.ts +3 -0
  32. package/dist/cjs/types/WSIViewportProperties.js +3 -0
  33. package/dist/cjs/types/WSIViewportProperties.js.map +1 -0
  34. package/dist/cjs/types/WSIViewportTypes.d.ts +13 -0
  35. package/dist/cjs/types/WSIViewportTypes.js +3 -0
  36. package/dist/cjs/types/WSIViewportTypes.js.map +1 -0
  37. package/dist/cjs/types/index.d.ts +5 -2
  38. package/dist/cjs/utilities/genericMetadataProvider.js +3 -1
  39. package/dist/cjs/utilities/genericMetadataProvider.js.map +1 -1
  40. package/dist/cjs/utilities/uuidv4.js +1 -1
  41. package/dist/cjs/utilities/uuidv4.js.map +1 -1
  42. package/dist/esm/RenderingEngine/RenderingEngine.js +0 -9
  43. package/dist/esm/RenderingEngine/RenderingEngine.js.map +1 -1
  44. package/dist/esm/RenderingEngine/StackViewport.js +2 -2
  45. package/dist/esm/RenderingEngine/VideoViewport.js +14 -6
  46. package/dist/esm/RenderingEngine/VideoViewport.js.map +1 -1
  47. package/dist/esm/RenderingEngine/Viewport.js +3 -0
  48. package/dist/esm/RenderingEngine/Viewport.js.map +1 -1
  49. package/dist/esm/RenderingEngine/WSIViewport.js +405 -0
  50. package/dist/esm/RenderingEngine/WSIViewport.js.map +1 -0
  51. package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.js +2 -0
  52. package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.js.map +1 -1
  53. package/dist/esm/enums/MetadataModules.js +1 -0
  54. package/dist/esm/enums/MetadataModules.js.map +1 -1
  55. package/dist/esm/enums/ViewportType.js +1 -0
  56. package/dist/esm/enums/ViewportType.js.map +1 -1
  57. package/dist/esm/index.js +2 -1
  58. package/dist/esm/index.js.map +1 -1
  59. package/dist/esm/types/IWSIViewport.js +2 -0
  60. package/dist/esm/types/IWSIViewport.js.map +1 -0
  61. package/dist/esm/types/WSIViewportProperties.js +2 -0
  62. package/dist/esm/types/WSIViewportProperties.js.map +1 -0
  63. package/dist/esm/types/WSIViewportTypes.js +2 -0
  64. package/dist/esm/types/WSIViewportTypes.js.map +1 -0
  65. package/dist/esm/utilities/genericMetadataProvider.js +2 -1
  66. package/dist/esm/utilities/genericMetadataProvider.js.map +1 -1
  67. package/dist/esm/utilities/uuidv4.js +1 -1
  68. package/dist/esm/utilities/uuidv4.js.map +1 -1
  69. package/dist/types/RenderingEngine/RenderingEngine.d.ts +0 -2
  70. package/dist/types/RenderingEngine/RenderingEngine.d.ts.map +1 -1
  71. package/dist/types/RenderingEngine/VideoViewport.d.ts +2 -1
  72. package/dist/types/RenderingEngine/VideoViewport.d.ts.map +1 -1
  73. package/dist/types/RenderingEngine/Viewport.d.ts +2 -1
  74. package/dist/types/RenderingEngine/Viewport.d.ts.map +1 -1
  75. package/dist/types/RenderingEngine/WSIViewport.d.ts +83 -0
  76. package/dist/types/RenderingEngine/WSIViewport.d.ts.map +1 -0
  77. package/dist/types/RenderingEngine/helpers/viewportTypeToViewportClass.d.ts +2 -0
  78. package/dist/types/RenderingEngine/helpers/viewportTypeToViewportClass.d.ts.map +1 -1
  79. package/dist/types/enums/MetadataModules.d.ts +2 -1
  80. package/dist/types/enums/MetadataModules.d.ts.map +1 -1
  81. package/dist/types/enums/ViewportType.d.ts +2 -1
  82. package/dist/types/enums/ViewportType.d.ts.map +1 -1
  83. package/dist/types/index.d.ts +2 -1
  84. package/dist/types/index.d.ts.map +1 -1
  85. package/dist/types/types/IRenderingEngine.d.ts +0 -2
  86. package/dist/types/types/IRenderingEngine.d.ts.map +1 -1
  87. package/dist/types/types/IViewport.d.ts +7 -0
  88. package/dist/types/types/IViewport.d.ts.map +1 -1
  89. package/dist/types/types/IWSIViewport.d.ts +14 -0
  90. package/dist/types/types/IWSIViewport.d.ts.map +1 -0
  91. package/dist/types/types/WSIViewportProperties.d.ts +4 -0
  92. package/dist/types/types/WSIViewportProperties.d.ts.map +1 -0
  93. package/dist/types/types/WSIViewportTypes.d.ts +14 -0
  94. package/dist/types/types/WSIViewportTypes.d.ts.map +1 -0
  95. package/dist/types/types/index.d.ts +5 -2
  96. package/dist/types/types/index.d.ts.map +1 -1
  97. package/dist/types/utilities/genericMetadataProvider.d.ts.map +1 -1
  98. package/dist/types/utilities/uuidv4.d.ts.map +1 -1
  99. package/dist/umd/index.js +1 -1
  100. package/dist/umd/index.js.map +1 -1
  101. package/package.json +2 -2
  102. package/src/RenderingEngine/RenderingEngine.ts +0 -20
  103. package/src/RenderingEngine/StackViewport.ts +2 -2
  104. package/src/RenderingEngine/VideoViewport.ts +38 -10
  105. package/src/RenderingEngine/Viewport.ts +8 -0
  106. package/src/RenderingEngine/WSIViewport.ts +661 -0
  107. package/src/RenderingEngine/helpers/viewportTypeToViewportClass.ts +2 -0
  108. package/src/enums/MetadataModules.ts +5 -0
  109. package/src/enums/ViewportType.ts +4 -0
  110. package/src/index.ts +2 -0
  111. package/src/types/IRenderingEngine.ts +0 -2
  112. package/src/types/IViewport.ts +20 -0
  113. package/src/types/IWSIViewport.ts +59 -0
  114. package/src/types/WSIViewportProperties.ts +8 -0
  115. package/src/types/WSIViewportTypes.ts +14 -0
  116. package/src/types/index.ts +8 -0
  117. package/src/utilities/genericMetadataProvider.ts +3 -2
  118. package/src/utilities/uuidv4.ts +1 -5
@@ -2,7 +2,6 @@ import IStackViewport from './IStackViewport';
2
2
  import { PublicViewportInput } from './IViewport';
3
3
  import IVolumeViewport from './IVolumeViewport';
4
4
  import { IViewport } from './IViewport';
5
- import IVideoViewport from './IVideoViewport';
6
5
 
7
6
  export default interface IRenderingEngine {
8
7
  id: string;
@@ -25,7 +24,6 @@ export default interface IRenderingEngine {
25
24
  disableElement(viewportId: string): void;
26
25
  getStackViewports(): Array<IStackViewport>;
27
26
  getVolumeViewports(): Array<IVolumeViewport>;
28
- getVideoViewports(): Array<IVideoViewport>;
29
27
  destroy(): void;
30
28
  _debugRender(): void;
31
29
  }
@@ -217,6 +217,18 @@ export type ViewPresentationSelector = {
217
217
  paletteLut?: boolean;
218
218
  };
219
219
 
220
+ export type DataSetOptions = {
221
+ /**
222
+ * The group id is a volume, display set or other identification for the
223
+ * overall set of data. If set, then two sets of images can be compared for
224
+ * equality by comparing the group id.
225
+ * For volumes, if set, the groupId must be the primary volumeId.
226
+ */
227
+ groupId?: string;
228
+ viewSelector?: ViewPresentationSelector;
229
+ viewReference?: ViewReferenceSpecifier;
230
+ };
231
+
220
232
  /**
221
233
  * Viewport interface for cornerstone viewports
222
234
  */
@@ -407,6 +419,14 @@ interface IViewport {
407
419
 
408
420
  _getCorners(bounds: Array<number>): Array<number>[];
409
421
  updateRenderingPipeline: () => void;
422
+ getTargetId?: () => string;
423
+
424
+ /**
425
+ * This is a wrapper for setVideo to allow generic behaviour
426
+ * @param dataIds - a set of data ids that make up the data viewport
427
+ * @param options - an optional object with view reference/specifier
428
+ */
429
+ setDataIds(dataIds: string[], options?: DataSetOptions): void;
410
430
  }
411
431
 
412
432
  /**
@@ -0,0 +1,59 @@
1
+ import { IViewport } from './IViewport';
2
+ import WSIViewportProperties from './WSIViewportProperties';
3
+
4
+ /**
5
+ * Interface for Stack Viewport
6
+ */
7
+ export default interface IWSIViewport extends IViewport {
8
+ /**
9
+ * Resizes the viewport - only used in CPU fallback for StackViewport. The
10
+ * GPU resizing happens inside the RenderingEngine.
11
+ */
12
+ resize: () => void;
13
+ /**
14
+ * Sets the properties for the viewport on the default actor.
15
+ */
16
+ setProperties(props: WSIViewportProperties, suppressEvents?: boolean): void;
17
+ /**
18
+ * Retrieve the viewport properties
19
+ */
20
+ getProperties: () => WSIViewportProperties;
21
+
22
+ /**
23
+ * Sets the WSI to play.
24
+ * The WSI should have at least some metadata in the metadata provider,
25
+ * including:
26
+ * * study/series/sop common module for UIDs
27
+ * * `cineModule` for information on number of frames and playback rate
28
+ * * `imageUrlModule` - to get the URL for the image under the `rendered` attribute
29
+ *
30
+ * Without these, other tools requiring metadata wont work, although basic
31
+ * playback does work if the setWSIURL is used instead.
32
+ */
33
+ setWSI: (imageIds: string[], client) => Promise<unknown>;
34
+
35
+ /**
36
+ * Reset the viewport properties to the default values
37
+ */
38
+ resetProperties(): void;
39
+
40
+ /**
41
+ * Gets the current image id, including frame selction or frameless.
42
+ */
43
+ getCurrentImageId(): string;
44
+
45
+ /**
46
+ * Gets the current frame, 1 based
47
+ */
48
+ getFrameNumber(): number;
49
+
50
+ /**
51
+ * Sets the current frame
52
+ */
53
+ setFrameNumber(frameNo: number);
54
+
55
+ /**
56
+ * Centers Pan and resets the zoom for stack viewport.
57
+ */
58
+ resetCamera(resetPan?: boolean, resetZoom?: boolean): boolean;
59
+ }
@@ -0,0 +1,8 @@
1
+ import { ViewportProperties } from './ViewportProperties';
2
+
3
+ /**
4
+ * WSI Viewport Properties
5
+ */
6
+ export type WSIViewportProperties = ViewportProperties;
7
+
8
+ export default WSIViewportProperties;
@@ -0,0 +1,14 @@
1
+ import { ViewportType } from '../enums';
2
+
3
+ export type WSIViewportInput = {
4
+ id: string;
5
+ renderingEngineId: string;
6
+ type: ViewportType;
7
+ element: HTMLDivElement;
8
+ sx: number;
9
+ sy: number;
10
+ sWidth: number;
11
+ sHeight: number;
12
+ defaultOptions: any;
13
+ canvas: HTMLCanvasElement;
14
+ };
@@ -17,6 +17,7 @@ import type {
17
17
  IViewport,
18
18
  PublicViewportInput,
19
19
  ViewReferenceSpecifier,
20
+ DataSetOptions,
20
21
  ReferenceCompatibleOptions,
21
22
  ViewReference,
22
23
  ViewPresentation,
@@ -63,6 +64,7 @@ import type FlipDirection from './FlipDirection';
63
64
  import type ICachedImage from './ICachedImage';
64
65
  import type ICachedVolume from './ICachedVolume';
65
66
  import type IStackViewport from './IStackViewport';
67
+ import type IWSIViewport from './IWSIViewport';
66
68
  import type IVolumeViewport from './IVolumeViewport';
67
69
  import type ViewportPreset from './ViewportPreset';
68
70
 
@@ -116,11 +118,13 @@ export type {
116
118
  import type { ImageLoadListener } from './ImageLoadListener';
117
119
  import type { Color, ColorLUT } from './Color';
118
120
  import type VideoViewportProperties from './VideoViewportProperties';
121
+ import type WSIViewportProperties from './WSIViewportProperties';
119
122
  import type IVideoViewport from './IVideoViewport';
120
123
  import type {
121
124
  InternalVideoCamera,
122
125
  VideoViewportInput,
123
126
  } from './VideoViewportTypes';
127
+ import { WSIViewportInput } from './WSIViewportTypes';
124
128
  import { ISurface } from './ISurface';
125
129
  import type BoundsIJK from './BoundsIJK';
126
130
  import type { ImageVolumeProps } from './ImageVolumeProps';
@@ -137,6 +141,7 @@ export type {
137
141
  ICamera,
138
142
  IStackViewport,
139
143
  IVideoViewport,
144
+ IWSIViewport,
140
145
  IVolumeViewport,
141
146
  IEnabledElement,
142
147
  ICache,
@@ -163,6 +168,7 @@ export type {
163
168
  IStreamingVolumeProperties,
164
169
  IViewport,
165
170
  ViewReference,
171
+ DataSetOptions as ImageSetOptions,
166
172
  ViewPresentation,
167
173
  ViewPresentationSelector,
168
174
  ReferenceCompatibleOptions,
@@ -196,6 +202,7 @@ export type {
196
202
  Plane,
197
203
  ViewportInputOptions,
198
204
  VideoViewportProperties,
205
+ WSIViewportProperties,
199
206
  VOIRange,
200
207
  VOI,
201
208
  DisplayArea,
@@ -246,6 +253,7 @@ export type {
246
253
  // video
247
254
  InternalVideoCamera,
248
255
  VideoViewportInput,
256
+ WSIViewportInput,
249
257
  BoundsIJK,
250
258
  BoundsLPS,
251
259
  Color,
@@ -17,8 +17,9 @@ const metadataProvider = {
17
17
  state[imageId] = {};
18
18
  }
19
19
 
20
- // Create a deep copy of payload.metadata
21
- state[imageId][type] = JSON.parse(JSON.stringify(payload.metadata));
20
+ // Use the raw metadata, or create a deep copy of payload.metadata
21
+ state[imageId][type] =
22
+ payload.rawMetadata ?? structuredClone(payload.metadata);
22
23
  },
23
24
 
24
25
  /**
@@ -1,5 +1,3 @@
1
- // prettier-ignore
2
- // @ts-nocheck
3
1
  /**
4
2
  * Generates a unique id that has limited chance of collision
5
3
  *
@@ -7,7 +5,5 @@
7
5
  * @returns a v4 compliant GUID
8
6
  */
9
7
  export default function uuidv4(): string {
10
- return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
11
- (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
12
- );
8
+ return crypto.randomUUID();
13
9
  }