@ohif/app 3.9.0-beta.57 → 3.9.0-beta.59

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 (41) hide show
  1. package/dist/{29.bundle.976319462f33868497c2.js → 117.bundle.403581eea72534ff9c7e.js} +1765 -582
  2. package/dist/{169.bundle.483057ed84ca3e92513a.js → 169.bundle.d28df3cf2d600fc3e146.js} +7 -5
  3. package/dist/{210.bundle.368d53177dc659dc6af0.js → 210.bundle.ea52c75bb27ab002dc4d.js} +2 -2
  4. package/dist/{281.bundle.49da07d997da7cc01705.js → 281.bundle.719e9e222fecb4e9e9c6.js} +18 -4
  5. package/dist/{360.bundle.2c117803c05f0bc31424.js → 360.bundle.9a0c682beae1ef7e40b1.js} +5 -5
  6. package/dist/{372.bundle.d97377781382080306bd.js → 372.bundle.9891a9938b28db4b36ce.js} +5 -4
  7. package/dist/424.bundle.1caecbb1bbefc271b621.js +663 -0
  8. package/dist/{497.bundle.ee102d6243f984113f08.js → 497.bundle.bbc07cef12d598653a65.js} +149 -117
  9. package/dist/{498.bundle.bb47c493dd02451f77ef.js → 498.bundle.e5ccb2bc38e4bfdd564b.js} +1 -1
  10. package/dist/{516.bundle.d777e4126814a5a47117.js → 516.bundle.e59c26f055d145ce835e.js} +47 -12
  11. package/dist/{196.bundle.cf8c2311aafb5312bbf7.js → 579.bundle.0b78fc095924efac431d.js} +1705 -493
  12. package/dist/{552.bundle.85aaefb5e22d6d1bffa9.js → 65.bundle.d15cc84a0b991e182649.js} +15 -680
  13. package/dist/{129.bundle.3102eccbd5c78524c3dd.js → 650.bundle.a65389abf76ad921aa17.js} +2671 -2975
  14. package/dist/{793.bundle.c92f52ddff0e3bf506e6.js → 793.bundle.e4c759b5cdfcc3c7494f.js} +2 -2
  15. package/dist/{818.bundle.cda4e369fdee5459a544.js → 818.bundle.b64fae7e982e16a82ca2.js} +133 -69
  16. package/dist/{842.bundle.a5533bc77e6f57b0ee30.js → 842.bundle.cccbb7e3611e3d220f07.js} +2 -2
  17. package/dist/{888.bundle.7ff5dfd3c14072cee2a9.js → 888.bundle.d3b2a82cb17155725342.js} +9 -3
  18. package/dist/{428.bundle.744fc5865b2d747de88a.js → 904.bundle.008f8a2095669f4eabba.js} +88 -50
  19. package/dist/{962.bundle.d5f55c85407221bbce7b.js → 962.bundle.868b30361a52b0ffa504.js} +2 -2
  20. package/dist/{993.bundle.aa31ebda5a5f62c44de5.js → 993.bundle.302a286ebb6e3fc0c35a.js} +1265 -485
  21. package/dist/{994.bundle.c4709bfb7fd9dcde0551.js → 994.bundle.3b5f396b62cce2990c03.js} +15 -1
  22. package/dist/{app.bundle.a69624a3e0becd131c65.js → app.bundle.14f126e3ec4491bb1948.js} +1393 -1321
  23. package/dist/app.bundle.css +2 -2
  24. package/dist/dicom-microscopy-viewer/dicomMicroscopyViewer.min.js.map +1 -0
  25. package/dist/{histogram-worker.bundle.e7e9fea2c3236b0e747a.js → histogram-worker.bundle.89729ccb99d170ff2f2f.js} +2 -1
  26. package/dist/index.html +3 -1
  27. package/dist/{polySeg.bundle.b25c61224998018d0f79.js → polySeg.bundle.d8943427beee7694621a.js} +3 -22
  28. package/dist/{suv-peak-worker.bundle.eb11e71db02e52601ecf.js → suv-peak-worker.bundle.15dcb8d1ab8e0528bfd9.js} +3 -22
  29. package/dist/sw.js +1 -1
  30. package/package.json +18 -18
  31. /package/dist/{153.bundle.62dad8e9c7532474e95c.js → 153.bundle.42a66f99ced5972aa0c0.js} +0 -0
  32. /package/dist/{202.bundle.bb0e8196739bb896dc9e.js → 202.bundle.f6d9ca4b1c16b1aa227f.js} +0 -0
  33. /package/dist/{246.bundle.27aca95ea22cd5fcd414.js → 246.bundle.912e9f8342cd5d6228e6.js} +0 -0
  34. /package/dist/{353.bundle.a741604612f3f1d18398.js → 353.bundle.5b11e6b395c5d5cc33bf.js} +0 -0
  35. /package/dist/{376.bundle.2657056d8bc2b11fb0e8.js → 376.bundle.ac0e23dc830cd982fd18.js} +0 -0
  36. /package/dist/{552.css → 424.css} +0 -0
  37. /package/dist/{502.bundle.e7e6c345146aef00a169.js → 502.bundle.823682db96d52df1b8cf.js} +0 -0
  38. /package/dist/{591.bundle.aa91409b528ae6b601e0.js → 591.bundle.39fa1e6e7285929f2e29.js} +0 -0
  39. /package/dist/{791.bundle.d614182fa975e92cf4f5.js → 791.bundle.ecf9b1f8892d5f8962a3.js} +0 -0
  40. /package/dist/{944.bundle.c2bcb49d5077bd6fcc87.js → 944.bundle.93eddec203a43754e826.js} +0 -0
  41. /package/dist/{978.bundle.cd27543a62e7230557b2.js → 978.bundle.c12902cf44dca926bcb8.js} +0 -0
@@ -1,5 +1,731 @@
1
1
  "use strict";
2
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[196,818,250],{
2
+ (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[579,818,250],{
3
+
4
+ /***/ 49001:
5
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
+
7
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
8
+ /* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
9
+ /* harmony export */ });
10
+ /* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(72076);
11
+ /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7187);
12
+ /* harmony import */ var _metaData__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30023);
13
+ /* harmony import */ var _helpers_cpuFallback_rendering_transform__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(30742);
14
+ /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(56309);
15
+ /* harmony import */ var _Viewport__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(77614);
16
+ /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(25281);
17
+ /* harmony import */ var _CanvasActor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(40046);
18
+ /* harmony import */ var _cache__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(82253);
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+ class VideoViewport extends _Viewport__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z {
29
+ constructor(props) {
30
+ super({
31
+ ...props,
32
+ canvas: props.canvas || (0,_helpers__WEBPACK_IMPORTED_MODULE_6__/* .getOrCreateCanvas */ .uy)(props.element),
33
+ });
34
+ this.videoWidth = 0;
35
+ this.videoHeight = 0;
36
+ this.loop = true;
37
+ this.mute = true;
38
+ this.isPlaying = false;
39
+ this.scrollSpeed = 1;
40
+ this.playbackRate = 1;
41
+ this.frameRange = [0, 0];
42
+ this.fps = 30;
43
+ this.videoCamera = {
44
+ panWorld: [0, 0],
45
+ parallelScale: 1,
46
+ };
47
+ this.voiRange = {
48
+ lower: 0,
49
+ upper: 255,
50
+ };
51
+ this.getProperties = () => {
52
+ return {
53
+ loop: this.videoElement.loop,
54
+ muted: this.videoElement.muted,
55
+ playbackRate: this.playbackRate,
56
+ scrollSpeed: this.scrollSpeed,
57
+ voiRange: { ...this.voiRange },
58
+ };
59
+ };
60
+ this.resetCamera = () => {
61
+ this.refreshRenderValues();
62
+ this.canvasContext.fillRect(0, 0, this.canvas.width, this.canvas.height);
63
+ if (this.isPlaying === false) {
64
+ this.renderFrame();
65
+ }
66
+ return true;
67
+ };
68
+ this.getNumberOfSlices = () => {
69
+ const computedSlices = Math.round((this.videoElement.duration * this.fps) / this.scrollSpeed);
70
+ return isNaN(computedSlices) ? this.numberOfFrames : computedSlices;
71
+ };
72
+ this.getFrameOfReferenceUID = () => {
73
+ return this.videoElement.src;
74
+ };
75
+ this.resize = () => {
76
+ const canvas = this.canvas;
77
+ const { clientWidth, clientHeight } = canvas;
78
+ if (canvas.width !== clientWidth || canvas.height !== clientHeight) {
79
+ canvas.width = clientWidth;
80
+ canvas.height = clientHeight;
81
+ }
82
+ this.refreshRenderValues();
83
+ if (this.isPlaying === false) {
84
+ this.renderFrame();
85
+ }
86
+ };
87
+ this.canvasToWorld = (canvasPos, destPos = [0, 0, 0]) => {
88
+ const pan = this.videoCamera.panWorld;
89
+ const worldToCanvasRatio = this.getWorldToCanvasRatio();
90
+ const panOffsetCanvas = [
91
+ pan[0] * worldToCanvasRatio,
92
+ pan[1] * worldToCanvasRatio,
93
+ ];
94
+ const subCanvasPos = [
95
+ canvasPos[0] - panOffsetCanvas[0],
96
+ canvasPos[1] - panOffsetCanvas[1],
97
+ ];
98
+ destPos.splice(0, 2, subCanvasPos[0] / worldToCanvasRatio, subCanvasPos[1] / worldToCanvasRatio);
99
+ return destPos;
100
+ };
101
+ this.worldToCanvas = (worldPos) => {
102
+ const pan = this.videoCamera.panWorld;
103
+ const worldToCanvasRatio = this.getWorldToCanvasRatio();
104
+ const canvasPos = [
105
+ (worldPos[0] + pan[0]) * worldToCanvasRatio,
106
+ (worldPos[1] + pan[1]) * worldToCanvasRatio,
107
+ ];
108
+ return canvasPos;
109
+ };
110
+ this.getRotation = () => 0;
111
+ this.canvasToIndex = (canvasPos) => {
112
+ const transform = this.getTransform();
113
+ transform.invert();
114
+ return transform.transformPoint(canvasPos.map((it) => it * devicePixelRatio));
115
+ };
116
+ this.indexToCanvas = (indexPos) => {
117
+ const transform = this.getTransform();
118
+ return (transform.transformPoint(indexPos).map((it) => it / devicePixelRatio));
119
+ };
120
+ this.customRenderViewportToCanvas = () => {
121
+ this.renderFrame();
122
+ };
123
+ this.renderFrame = () => {
124
+ const transform = this.getTransform();
125
+ const transformationMatrix = transform.getMatrix();
126
+ const ctx = this.canvasContext;
127
+ ctx.resetTransform();
128
+ ctx.transform(transformationMatrix[0], transformationMatrix[1], transformationMatrix[2], transformationMatrix[3], transformationMatrix[4], transformationMatrix[5]);
129
+ ctx.drawImage(this.videoElement, 0, 0, this.videoWidth || 1024, this.videoHeight || 1024);
130
+ for (const actor of this.getActors()) {
131
+ actor.actor.render(this, this.canvasContext);
132
+ }
133
+ this.canvasContext.resetTransform();
134
+ (0,_utilities__WEBPACK_IMPORTED_MODULE_4__.triggerEvent)(this.element, _enums__WEBPACK_IMPORTED_MODULE_1__.Events.STACK_NEW_IMAGE, {
135
+ element: this.element,
136
+ viewportId: this.id,
137
+ viewport: this,
138
+ renderingEngineId: this.renderingEngineId,
139
+ time: this.videoElement.currentTime,
140
+ duration: this.videoElement.duration,
141
+ });
142
+ (0,_utilities__WEBPACK_IMPORTED_MODULE_4__.triggerEvent)(this.element, _enums__WEBPACK_IMPORTED_MODULE_1__.Events.IMAGE_RENDERED, {
143
+ element: this.element,
144
+ viewportId: this.id,
145
+ viewport: this,
146
+ imageIndex: this.getCurrentImageIdIndex(),
147
+ numberOfSlices: this.numberOfFrames,
148
+ renderingEngineId: this.renderingEngineId,
149
+ time: this.videoElement.currentTime,
150
+ duration: this.videoElement.duration,
151
+ });
152
+ this.initialRender?.();
153
+ const frame = this.getFrameNumber();
154
+ if (this.isPlaying) {
155
+ if (frame < this.frameRange[0]) {
156
+ this.setFrameNumber(this.frameRange[0]);
157
+ }
158
+ else if (frame > this.frameRange[1]) {
159
+ if (this.loop) {
160
+ this.setFrameNumber(this.frameRange[0]);
161
+ }
162
+ else {
163
+ this.pause();
164
+ }
165
+ }
166
+ }
167
+ };
168
+ this.renderWhilstPlaying = () => {
169
+ this.renderFrame();
170
+ if (this.isPlaying) {
171
+ requestAnimationFrame(this.renderWhilstPlaying);
172
+ }
173
+ };
174
+ this.canvasContext = this.canvas.getContext('2d');
175
+ this.renderingEngineId = props.renderingEngineId;
176
+ this.element.setAttribute('data-viewport-uid', this.id);
177
+ this.element.setAttribute('data-rendering-engine-uid', this.renderingEngineId);
178
+ this.videoElement = document.createElement('video');
179
+ this.videoElement.muted = this.mute;
180
+ this.videoElement.loop = this.loop;
181
+ this.videoElement.autoplay = true;
182
+ this.videoElement.crossOrigin = 'anonymous';
183
+ this.addEventListeners();
184
+ this.resize();
185
+ }
186
+ static { this.frameRangeExtractor = /(\/frames\/|[&?]frameNumber=)([^/&?]*)/i; }
187
+ static get useCustomRenderingPipeline() {
188
+ return true;
189
+ }
190
+ addEventListeners() {
191
+ this.canvas.addEventListener(_enums__WEBPACK_IMPORTED_MODULE_1__.Events.ELEMENT_DISABLED, this.elementDisabledHandler);
192
+ }
193
+ removeEventListeners() {
194
+ this.canvas.removeEventListener(_enums__WEBPACK_IMPORTED_MODULE_1__.Events.ELEMENT_DISABLED, this.elementDisabledHandler);
195
+ }
196
+ elementDisabledHandler() {
197
+ this.removeEventListeners();
198
+ this.videoElement.remove();
199
+ }
200
+ getImageDataMetadata(image) {
201
+ const imageId = typeof image === 'string' ? image : image.imageId;
202
+ const imagePlaneModule = _metaData__WEBPACK_IMPORTED_MODULE_2__.get(_enums__WEBPACK_IMPORTED_MODULE_1__.MetadataModules.IMAGE_PLANE, imageId);
203
+ let rowCosines = imagePlaneModule.rowCosines;
204
+ let columnCosines = imagePlaneModule.columnCosines;
205
+ if (rowCosines == null || columnCosines == null) {
206
+ rowCosines = [1, 0, 0];
207
+ columnCosines = [0, 1, 0];
208
+ }
209
+ const rowCosineVec = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.fromValues */ .R3.fromValues(rowCosines[0], rowCosines[1], rowCosines[2]);
210
+ const colCosineVec = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.fromValues */ .R3.fromValues(columnCosines[0], columnCosines[1], columnCosines[2]);
211
+ const { rows, columns } = imagePlaneModule;
212
+ const scanAxisNormal = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.create */ .R3.create();
213
+ gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.cross */ .R3.cross(scanAxisNormal, rowCosineVec, colCosineVec);
214
+ let origin = imagePlaneModule.imagePositionPatient;
215
+ if (origin == null) {
216
+ origin = [0, 0, 0];
217
+ }
218
+ const xSpacing = imagePlaneModule.columnPixelSpacing || 1;
219
+ const ySpacing = imagePlaneModule.rowPixelSpacing || 1;
220
+ const xVoxels = imagePlaneModule.columns;
221
+ const yVoxels = imagePlaneModule.rows;
222
+ const zSpacing = 1;
223
+ const zVoxels = 1;
224
+ this.hasPixelSpacing = !!imagePlaneModule.columnPixelSpacing;
225
+ return {
226
+ bitsAllocated: 8,
227
+ numComps: 3,
228
+ origin,
229
+ rows,
230
+ columns,
231
+ direction: [...rowCosineVec, ...colCosineVec, ...scanAxisNormal],
232
+ dimensions: [xVoxels, yVoxels, zVoxels],
233
+ spacing: [xSpacing, ySpacing, zSpacing],
234
+ hasPixelSpacing: this.hasPixelSpacing,
235
+ numVoxels: xVoxels * yVoxels * zVoxels,
236
+ imagePlaneModule,
237
+ };
238
+ }
239
+ setDataIds(imageIds, options) {
240
+ this.setVideo(imageIds[0], options?.viewReference?.sliceIndex || 1);
241
+ }
242
+ setVideo(imageId, frameNumber) {
243
+ this.imageId = Array.isArray(imageId) ? imageId[0] : imageId;
244
+ const imageUrlModule = _metaData__WEBPACK_IMPORTED_MODULE_2__.get(_enums__WEBPACK_IMPORTED_MODULE_1__.MetadataModules.IMAGE_URL, imageId);
245
+ if (!imageUrlModule?.rendered) {
246
+ throw new Error(`Video Image ID ${imageId} does not have a rendered video view`);
247
+ }
248
+ const { rendered } = imageUrlModule;
249
+ const generalSeries = _metaData__WEBPACK_IMPORTED_MODULE_2__.get(_enums__WEBPACK_IMPORTED_MODULE_1__.MetadataModules.GENERAL_SERIES, imageId);
250
+ this.modality = generalSeries?.Modality;
251
+ this.metadata = this.getImageDataMetadata(imageId);
252
+ let { cineRate, numberOfFrames } = _metaData__WEBPACK_IMPORTED_MODULE_2__.get(_enums__WEBPACK_IMPORTED_MODULE_1__.MetadataModules.CINE, imageId);
253
+ this.numberOfFrames = numberOfFrames;
254
+ return this.setVideoURL(rendered).then(() => {
255
+ if (!numberOfFrames || numberOfFrames === 1) {
256
+ numberOfFrames = Math.round(this.videoElement.duration * (cineRate || 30));
257
+ }
258
+ if (!cineRate) {
259
+ cineRate = Math.round(numberOfFrames / this.videoElement.duration);
260
+ }
261
+ this.fps = cineRate;
262
+ this.numberOfFrames = numberOfFrames;
263
+ this.setFrameRange([1, numberOfFrames]);
264
+ this.initialRender = () => {
265
+ this.initialRender = null;
266
+ this.pause();
267
+ this.setFrameNumber(frameNumber || 1);
268
+ };
269
+ return new Promise((resolve) => {
270
+ window.setTimeout(() => {
271
+ this.setFrameNumber(frameNumber || 1);
272
+ resolve(this);
273
+ }, 25);
274
+ });
275
+ });
276
+ }
277
+ async setVideoURL(videoURL) {
278
+ return new Promise((resolve) => {
279
+ this.videoElement.src = videoURL;
280
+ this.videoElement.preload = 'auto';
281
+ const loadedMetadataEventHandler = () => {
282
+ this.videoWidth = this.videoElement.videoWidth;
283
+ this.videoHeight = this.videoElement.videoHeight;
284
+ this.videoElement.removeEventListener('loadedmetadata', loadedMetadataEventHandler);
285
+ this.refreshRenderValues();
286
+ resolve(true);
287
+ };
288
+ this.videoElement.addEventListener('loadedmetadata', loadedMetadataEventHandler);
289
+ });
290
+ }
291
+ getImageIds() {
292
+ const imageIds = new Array(this.numberOfFrames);
293
+ const baseImageId = this.imageId.replace(/[0-9]+$/, '');
294
+ for (let i = 0; i < this.numberOfFrames; i++) {
295
+ imageIds[i] = `${baseImageId}${i + 1}`;
296
+ }
297
+ return imageIds;
298
+ }
299
+ togglePlayPause() {
300
+ if (this.isPlaying) {
301
+ this.pause();
302
+ return false;
303
+ }
304
+ else {
305
+ this.play();
306
+ return true;
307
+ }
308
+ }
309
+ async play() {
310
+ try {
311
+ if (!this.isPlaying) {
312
+ this.isPlaying = true;
313
+ await this.videoElement.play();
314
+ this.renderWhilstPlaying();
315
+ }
316
+ }
317
+ catch (e) {
318
+ }
319
+ }
320
+ pause() {
321
+ try {
322
+ this.isPlaying = false;
323
+ this.videoElement.pause();
324
+ }
325
+ catch (e) {
326
+ }
327
+ }
328
+ async scroll(delta = 1) {
329
+ await this.pause();
330
+ const videoElement = this.videoElement;
331
+ const renderFrame = this.renderFrame;
332
+ const currentTime = videoElement.currentTime;
333
+ const newTime = currentTime + (delta * this.scrollSpeed) / this.fps;
334
+ videoElement.currentTime = newTime;
335
+ const seekEventListener = (evt) => {
336
+ renderFrame();
337
+ videoElement.removeEventListener('seeked', seekEventListener);
338
+ };
339
+ videoElement.addEventListener('seeked', seekEventListener);
340
+ }
341
+ async start() {
342
+ const videoElement = this.videoElement;
343
+ const renderFrame = this.renderFrame;
344
+ videoElement.currentTime = 0;
345
+ if (videoElement.paused) {
346
+ const seekEventListener = (evt) => {
347
+ renderFrame();
348
+ videoElement.removeEventListener('seeked', seekEventListener);
349
+ };
350
+ videoElement.addEventListener('seeked', seekEventListener);
351
+ }
352
+ }
353
+ async end() {
354
+ const videoElement = this.videoElement;
355
+ const renderFrame = this.renderFrame;
356
+ videoElement.currentTime = videoElement.duration;
357
+ if (videoElement.paused) {
358
+ const seekEventListener = (evt) => {
359
+ renderFrame();
360
+ videoElement.removeEventListener('seeked', seekEventListener);
361
+ };
362
+ videoElement.addEventListener('seeked', seekEventListener);
363
+ }
364
+ }
365
+ async setTime(timeInSeconds) {
366
+ const videoElement = this.videoElement;
367
+ const renderFrame = this.renderFrame;
368
+ videoElement.currentTime = timeInSeconds;
369
+ if (videoElement.paused) {
370
+ const seekEventListener = (evt) => {
371
+ renderFrame();
372
+ videoElement.removeEventListener('seeked', seekEventListener);
373
+ };
374
+ videoElement.addEventListener('seeked', seekEventListener);
375
+ }
376
+ }
377
+ async setFrameNumber(frame) {
378
+ this.setTime((frame - 1) / this.fps);
379
+ }
380
+ setFrameRange(frameRange) {
381
+ if (!frameRange) {
382
+ this.frameRange = [1, this.numberOfFrames];
383
+ return;
384
+ }
385
+ if (frameRange.length !== 2 || frameRange[0] === frameRange[1]) {
386
+ return;
387
+ }
388
+ this.frameRange = [frameRange[0], frameRange[1]];
389
+ }
390
+ getFrameRange() {
391
+ return this.frameRange;
392
+ }
393
+ setProperties(props) {
394
+ if (props.loop !== undefined) {
395
+ this.videoElement.loop = props.loop;
396
+ }
397
+ if (props.muted !== undefined) {
398
+ this.videoElement.muted = props.muted;
399
+ }
400
+ if (props.playbackRate !== undefined) {
401
+ this.setPlaybackRate(props.playbackRate);
402
+ }
403
+ if (props.scrollSpeed !== undefined) {
404
+ this.setScrollSpeed(props.scrollSpeed);
405
+ }
406
+ if (props.voiRange) {
407
+ this.setVOI(props.voiRange);
408
+ }
409
+ }
410
+ setPlaybackRate(rate = 1) {
411
+ this.playbackRate = rate;
412
+ if (rate < 0.0625) {
413
+ this.pause();
414
+ return;
415
+ }
416
+ if (!this.videoElement) {
417
+ return;
418
+ }
419
+ this.videoElement.playbackRate = rate;
420
+ this.play();
421
+ }
422
+ setScrollSpeed(scrollSpeed = 1, unit = _enums__WEBPACK_IMPORTED_MODULE_1__.VideoEnums.SpeedUnit.FRAME) {
423
+ this.scrollSpeed =
424
+ unit === _enums__WEBPACK_IMPORTED_MODULE_1__.VideoEnums.SpeedUnit.SECOND
425
+ ? scrollSpeed * this.fps
426
+ : scrollSpeed;
427
+ }
428
+ resetProperties() {
429
+ this.setProperties({
430
+ loop: false,
431
+ muted: true,
432
+ });
433
+ }
434
+ getScalarData() {
435
+ if (this.scalarData?.frameNumber === this.getFrameNumber()) {
436
+ return this.scalarData;
437
+ }
438
+ const canvas = document.createElement('canvas');
439
+ canvas.width = this.videoWidth;
440
+ canvas.height = this.videoHeight;
441
+ const context = canvas.getContext('2d');
442
+ context.drawImage(this.videoElement, 0, 0);
443
+ const canvasData = context.getImageData(0, 0, this.videoWidth, this.videoHeight);
444
+ const scalarData = canvasData.data;
445
+ scalarData.getRange = () => [0, 255];
446
+ scalarData.frameNumber = this.getFrameNumber();
447
+ this.scalarData = scalarData;
448
+ return scalarData;
449
+ }
450
+ getImageData() {
451
+ const { metadata } = this;
452
+ const spacing = metadata.spacing;
453
+ const imageData = {
454
+ dimensions: metadata.dimensions,
455
+ spacing,
456
+ origin: metadata.origin,
457
+ direction: metadata.direction,
458
+ metadata: { Modality: this.modality },
459
+ getScalarData: () => this.getScalarData(),
460
+ imageData: {
461
+ getDirection: () => metadata.direction,
462
+ getDimensions: () => metadata.dimensions,
463
+ getRange: () => [0, 255],
464
+ getScalarData: () => this.getScalarData(),
465
+ getSpacing: () => metadata.spacing,
466
+ worldToIndex: (point) => {
467
+ const canvasPoint = this.worldToCanvas(point);
468
+ const pixelCoord = this.canvasToIndex(canvasPoint);
469
+ return [pixelCoord[0], pixelCoord[1], 0];
470
+ },
471
+ indexToWorld: (point, destPoint) => {
472
+ const canvasPoint = this.indexToCanvas([point[0], point[1]]);
473
+ return this.canvasToWorld(canvasPoint, destPoint);
474
+ },
475
+ },
476
+ hasPixelSpacing: this.hasPixelSpacing,
477
+ calibration: this.calibration,
478
+ preScale: {
479
+ scaled: false,
480
+ },
481
+ };
482
+ Object.defineProperty(imageData, 'scalarData', {
483
+ get: () => this.getScalarData(),
484
+ enumerable: true,
485
+ });
486
+ return imageData;
487
+ }
488
+ hasImageURI(imageURI) {
489
+ const framesMatch = imageURI.match(VideoViewport.frameRangeExtractor);
490
+ const testURI = framesMatch
491
+ ? imageURI.substring(0, framesMatch.index)
492
+ : imageURI;
493
+ return this.imageId.indexOf(testURI) !== -1;
494
+ }
495
+ setVOI(voiRange) {
496
+ this.voiRange = voiRange;
497
+ this.setColorTransform();
498
+ }
499
+ setWindowLevel(windowWidth = 256, windowCenter = 128) {
500
+ const lower = windowCenter - windowWidth / 2;
501
+ const upper = windowCenter + windowWidth / 2 - 1;
502
+ this.setVOI({ lower, upper });
503
+ this.setColorTransform();
504
+ }
505
+ setAverageWhite(averageWhite) {
506
+ this.averageWhite = averageWhite;
507
+ this.setColorTransform();
508
+ }
509
+ setColorTransform() {
510
+ if (!this.voiRange && !this.averageWhite) {
511
+ this.feFilter = null;
512
+ return;
513
+ }
514
+ const white = this.averageWhite || [255, 255, 255];
515
+ const maxWhite = Math.max(...white);
516
+ const scaleWhite = white.map((c) => maxWhite / c);
517
+ const { lower = 0, upper = 255 } = this.voiRange || {};
518
+ const wlScale = (upper - lower + 1) / 255;
519
+ const wlDelta = lower / 255;
520
+ this.feFilter = `url('data:image/svg+xml,\
521
+ <svg xmlns="http://www.w3.org/2000/svg">\
522
+ <filter id="colour" color-interpolation-filters="linearRGB">\
523
+ <feColorMatrix type="matrix" \
524
+ values="\
525
+ ${scaleWhite[0] * wlScale} 0 0 0 ${wlDelta} \
526
+ 0 ${scaleWhite[1] * wlScale} 0 0 ${wlDelta} \
527
+ 0 0 ${scaleWhite[2] * wlScale} 0 ${wlDelta} \
528
+ 0 0 0 1 0" />\
529
+ </filter>\
530
+ </svg>#colour')`;
531
+ this.canvas.style.filter = this.feFilter;
532
+ }
533
+ setCamera(camera) {
534
+ const { parallelScale, focalPoint } = camera;
535
+ if (parallelScale) {
536
+ this.videoCamera.parallelScale =
537
+ this.element.clientHeight / 2 / parallelScale;
538
+ }
539
+ if (focalPoint !== undefined) {
540
+ const focalPointCanvas = this.worldToCanvas(focalPoint);
541
+ const canvasCenter = [
542
+ this.element.clientWidth / 2,
543
+ this.element.clientHeight / 2,
544
+ ];
545
+ const panWorldDelta = [
546
+ (focalPointCanvas[0] - canvasCenter[0]) /
547
+ this.videoCamera.parallelScale,
548
+ (focalPointCanvas[1] - canvasCenter[1]) /
549
+ this.videoCamera.parallelScale,
550
+ ];
551
+ this.videoCamera.panWorld = [
552
+ this.videoCamera.panWorld[0] - panWorldDelta[0],
553
+ this.videoCamera.panWorld[1] - panWorldDelta[1],
554
+ ];
555
+ }
556
+ this.canvasContext.fillStyle = 'rgba(0,0,0,1)';
557
+ this.canvasContext.fillRect(0, 0, this.canvas.width, this.canvas.height);
558
+ if (this.isPlaying === false) {
559
+ this.renderFrame();
560
+ }
561
+ }
562
+ getCurrentImageId() {
563
+ const current = this.imageId.replace('/frames/1', this.isPlaying
564
+ ? `/frames/${this.frameRange[0]}-${this.frameRange[1]}`
565
+ : `/frames/${this.getFrameNumber()}`);
566
+ return current;
567
+ }
568
+ getReferenceId(specifier = {}) {
569
+ const { sliceIndex: sliceIndex } = specifier;
570
+ if (sliceIndex === undefined) {
571
+ return `videoId:${this.getCurrentImageId()}`;
572
+ }
573
+ if (Array.isArray(sliceIndex)) {
574
+ return `videoId:${this.imageId.substring(0, this.imageId.length - 1)}${sliceIndex[0] + 1}-${sliceIndex[1] + 1}`;
575
+ }
576
+ const baseTarget = this.imageId.replace('/frames/1', `/frames/${1 + sliceIndex}`);
577
+ return `videoId:${baseTarget}`;
578
+ }
579
+ isReferenceViewable(viewRef, options = {}) {
580
+ let { imageURI } = options;
581
+ const { referencedImageId, sliceIndex: sliceIndex } = viewRef;
582
+ if (!super.isReferenceViewable(viewRef)) {
583
+ return false;
584
+ }
585
+ const imageId = this.getCurrentImageId();
586
+ if (!imageURI) {
587
+ const colonIndex = imageId.indexOf(':');
588
+ imageURI = imageId.substring(colonIndex + 1, imageId.length - 1);
589
+ }
590
+ if (options.withNavigation) {
591
+ return true;
592
+ }
593
+ const currentIndex = this.getSliceIndex();
594
+ if (Array.isArray(sliceIndex)) {
595
+ return currentIndex >= sliceIndex[0] && currentIndex <= sliceIndex[1];
596
+ }
597
+ if (sliceIndex !== undefined) {
598
+ return currentIndex === sliceIndex;
599
+ }
600
+ if (!referencedImageId) {
601
+ return false;
602
+ }
603
+ const match = referencedImageId.match(VideoViewport.frameRangeExtractor);
604
+ if (!match || !match[2]) {
605
+ return true;
606
+ }
607
+ const range = match[2].split('-').map((it) => Number(it));
608
+ const frame = currentIndex + 1;
609
+ return range[0] <= frame && frame <= (range[1] ?? range[0]);
610
+ }
611
+ setViewReference(viewRef) {
612
+ if (typeof viewRef.sliceIndex === 'number') {
613
+ this.setFrameNumber(viewRef.sliceIndex + 1);
614
+ }
615
+ else if (Array.isArray(viewRef.sliceIndex)) {
616
+ this.setFrameRange(viewRef.sliceIndex);
617
+ }
618
+ }
619
+ getViewReference(viewRefSpecifier) {
620
+ let sliceIndex = viewRefSpecifier?.sliceIndex;
621
+ if (!sliceIndex) {
622
+ sliceIndex = this.isPlaying
623
+ ? [this.frameRange[0] - 1, this.frameRange[1] - 1]
624
+ : this.getCurrentImageIdIndex();
625
+ }
626
+ return {
627
+ ...super.getViewReference(viewRefSpecifier),
628
+ referencedImageId: this.getReferenceId(viewRefSpecifier),
629
+ sliceIndex: sliceIndex,
630
+ };
631
+ }
632
+ getFrameNumber() {
633
+ return 1 + this.getCurrentImageIdIndex();
634
+ }
635
+ getCurrentImageIdIndex() {
636
+ return Math.round(this.videoElement.currentTime * this.fps);
637
+ }
638
+ getSliceIndex() {
639
+ return this.getCurrentImageIdIndex() / this.scrollSpeed;
640
+ }
641
+ getCamera() {
642
+ const { parallelScale } = this.videoCamera;
643
+ const canvasCenter = [
644
+ this.element.clientWidth / 2,
645
+ this.element.clientHeight / 2,
646
+ ];
647
+ const canvasCenterWorld = this.canvasToWorld(canvasCenter);
648
+ return {
649
+ parallelProjection: true,
650
+ focalPoint: canvasCenterWorld,
651
+ position: [0, 0, 0],
652
+ viewUp: [0, -1, 0],
653
+ parallelScale: this.element.clientHeight / 2 / parallelScale,
654
+ viewPlaneNormal: [0, 0, 1],
655
+ };
656
+ }
657
+ getFrameRate() {
658
+ return this.fps;
659
+ }
660
+ getPan() {
661
+ const panWorld = this.videoCamera.panWorld;
662
+ return [panWorld[0], panWorld[1]];
663
+ }
664
+ refreshRenderValues() {
665
+ let worldToCanvasRatio = this.canvas.offsetWidth / this.videoWidth;
666
+ if (this.videoHeight * worldToCanvasRatio > this.canvas.height) {
667
+ worldToCanvasRatio = this.canvas.offsetHeight / this.videoHeight;
668
+ }
669
+ const drawWidth = Math.floor(this.videoWidth * worldToCanvasRatio);
670
+ const drawHeight = Math.floor(this.videoHeight * worldToCanvasRatio);
671
+ const xOffsetCanvas = (this.canvas.offsetWidth - drawWidth) / 2;
672
+ const yOffsetCanvas = (this.canvas.offsetHeight - drawHeight) / 2;
673
+ const xOffsetWorld = xOffsetCanvas / worldToCanvasRatio;
674
+ const yOffsetWorld = yOffsetCanvas / worldToCanvasRatio;
675
+ this.videoCamera.panWorld = [xOffsetWorld, yOffsetWorld];
676
+ this.videoCamera.parallelScale = worldToCanvasRatio;
677
+ }
678
+ getWorldToCanvasRatio() {
679
+ return this.videoCamera.parallelScale;
680
+ }
681
+ getCanvasToWorldRatio() {
682
+ return 1.0 / this.videoCamera.parallelScale;
683
+ }
684
+ getTransform() {
685
+ const panWorld = this.videoCamera.panWorld;
686
+ const devicePixelRatio = window.devicePixelRatio || 1;
687
+ const worldToCanvasRatio = this.getWorldToCanvasRatio();
688
+ const canvasToWorldRatio = this.getCanvasToWorldRatio();
689
+ const halfCanvas = [
690
+ this.canvas.offsetWidth / 2,
691
+ this.canvas.offsetHeight / 2,
692
+ ];
693
+ const halfCanvasWorldCoordinates = [
694
+ halfCanvas[0] * canvasToWorldRatio,
695
+ halfCanvas[1] * canvasToWorldRatio,
696
+ ];
697
+ const transform = new _helpers_cpuFallback_rendering_transform__WEBPACK_IMPORTED_MODULE_3__/* .Transform */ .w();
698
+ transform.scale(devicePixelRatio, devicePixelRatio);
699
+ transform.translate(halfCanvas[0], halfCanvas[1]);
700
+ transform.scale(worldToCanvasRatio, worldToCanvasRatio);
701
+ transform.translate(panWorld[0], panWorld[1]);
702
+ transform.translate(-halfCanvasWorldCoordinates[0], -halfCanvasWorldCoordinates[1]);
703
+ return transform;
704
+ }
705
+ updateCameraClippingPlanesAndRange() {
706
+ }
707
+ addImages(stackInputs) {
708
+ const actors = this.getActors();
709
+ stackInputs.forEach((stackInput) => {
710
+ const image = _cache__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .ZP.getImage(stackInput.imageId);
711
+ const imageActor = this.createActorMapper(image);
712
+ if (imageActor) {
713
+ actors.push({ uid: stackInput.actorUID, actor: imageActor });
714
+ if (stackInput.callback) {
715
+ stackInput.callback({ imageActor, imageId: stackInput.imageId });
716
+ }
717
+ }
718
+ });
719
+ this.setActors(actors);
720
+ }
721
+ createActorMapper(image) {
722
+ return new _CanvasActor__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z(this, image);
723
+ }
724
+ }
725
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (VideoViewport);
726
+
727
+
728
+ /***/ }),
3
729
 
4
730
  /***/ 68467:
5
731
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
@@ -1020,8 +1746,8 @@ function storedPixelDataToCanvasImageDataPseudocolorLUTPET(image, lutFunction, c
1020
1746
  }
1021
1747
  /* harmony default export */ const rendering_storedPixelDataToCanvasImageDataPseudocolorLUTPET = (storedPixelDataToCanvasImageDataPseudocolorLUTPET);
1022
1748
 
1023
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 67 modules
1024
- var utilities = __webpack_require__(11723);
1749
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 66 modules
1750
+ var utilities = __webpack_require__(56309);
1025
1751
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/renderPseudoColorImage.js
1026
1752
 
1027
1753
 
@@ -1620,6 +2346,96 @@ function relativeRescale(enabledElement, oldCanvasWidth, oldCanvasHeight) {
1620
2346
  }
1621
2347
 
1622
2348
 
2349
+ /***/ }),
2350
+
2351
+ /***/ 30742:
2352
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2353
+
2354
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2355
+ /* harmony export */ w: () => (/* binding */ Transform)
2356
+ /* harmony export */ });
2357
+ class Transform {
2358
+ constructor() {
2359
+ this.reset();
2360
+ }
2361
+ getMatrix() {
2362
+ return this.m;
2363
+ }
2364
+ reset() {
2365
+ this.m = [1, 0, 0, 1, 0, 0];
2366
+ }
2367
+ clone() {
2368
+ const transform = new Transform();
2369
+ transform.m[0] = this.m[0];
2370
+ transform.m[1] = this.m[1];
2371
+ transform.m[2] = this.m[2];
2372
+ transform.m[3] = this.m[3];
2373
+ transform.m[4] = this.m[4];
2374
+ transform.m[5] = this.m[5];
2375
+ return transform;
2376
+ }
2377
+ multiply(matrix) {
2378
+ const m11 = this.m[0] * matrix[0] + this.m[2] * matrix[1];
2379
+ const m12 = this.m[1] * matrix[0] + this.m[3] * matrix[1];
2380
+ const m21 = this.m[0] * matrix[2] + this.m[2] * matrix[3];
2381
+ const m22 = this.m[1] * matrix[2] + this.m[3] * matrix[3];
2382
+ const dx = this.m[0] * matrix[4] + this.m[2] * matrix[5] + this.m[4];
2383
+ const dy = this.m[1] * matrix[4] + this.m[3] * matrix[5] + this.m[5];
2384
+ this.m[0] = m11;
2385
+ this.m[1] = m12;
2386
+ this.m[2] = m21;
2387
+ this.m[3] = m22;
2388
+ this.m[4] = dx;
2389
+ this.m[5] = dy;
2390
+ }
2391
+ invert() {
2392
+ const d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);
2393
+ const m0 = this.m[3] * d;
2394
+ const m1 = -this.m[1] * d;
2395
+ const m2 = -this.m[2] * d;
2396
+ const m3 = this.m[0] * d;
2397
+ const m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);
2398
+ const m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);
2399
+ this.m[0] = m0;
2400
+ this.m[1] = m1;
2401
+ this.m[2] = m2;
2402
+ this.m[3] = m3;
2403
+ this.m[4] = m4;
2404
+ this.m[5] = m5;
2405
+ }
2406
+ rotate(rad) {
2407
+ const c = Math.cos(rad);
2408
+ const s = Math.sin(rad);
2409
+ const m11 = this.m[0] * c + this.m[2] * s;
2410
+ const m12 = this.m[1] * c + this.m[3] * s;
2411
+ const m21 = this.m[0] * -s + this.m[2] * c;
2412
+ const m22 = this.m[1] * -s + this.m[3] * c;
2413
+ this.m[0] = m11;
2414
+ this.m[1] = m12;
2415
+ this.m[2] = m21;
2416
+ this.m[3] = m22;
2417
+ }
2418
+ translate(x, y) {
2419
+ this.m[4] += this.m[0] * x + this.m[2] * y;
2420
+ this.m[5] += this.m[1] * x + this.m[3] * y;
2421
+ }
2422
+ scale(sx, sy) {
2423
+ this.m[0] *= sx;
2424
+ this.m[1] *= sx;
2425
+ this.m[2] *= sy;
2426
+ this.m[3] *= sy;
2427
+ }
2428
+ transformPoint(point) {
2429
+ const x = point[0];
2430
+ const y = point[1];
2431
+ return [
2432
+ x * this.m[0] + y * this.m[2] + this.m[4],
2433
+ x * this.m[1] + y * this.m[3] + this.m[5],
2434
+ ];
2435
+ }
2436
+ }
2437
+
2438
+
1623
2439
  /***/ }),
1624
2440
 
1625
2441
  /***/ 6737:
@@ -1805,8 +2621,8 @@ var vtkVolume$1 = {
1805
2621
  var volumeLoader = __webpack_require__(18588);
1806
2622
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/createVolumeMapper.js
1807
2623
  var createVolumeMapper = __webpack_require__(49046);
1808
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 67 modules
1809
- var utilities = __webpack_require__(11723);
2624
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 66 modules
2625
+ var utilities = __webpack_require__(56309);
1810
2626
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 4 modules
1811
2627
  var enums = __webpack_require__(7187);
1812
2628
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.js
@@ -1875,7 +2691,7 @@ function triggerVOIModified(element, viewportId, volumeActor, volumeId) {
1875
2691
  /* harmony export */ });
1876
2692
  /* harmony import */ var _loaders_imageLoader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62990);
1877
2693
  /* harmony import */ var _metaData__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30023);
1878
- /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11723);
2694
+ /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(56309);
1879
2695
  /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7187);
1880
2696
  /* harmony import */ var _cache__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(82253);
1881
2697
 
@@ -2055,218 +2871,14 @@ const newInstance = _kitware_vtk_js_macros__WEBPACK_IMPORTED_MODULE_0__/* ["defa
2055
2871
 
2056
2872
  /***/ }),
2057
2873
 
2058
- /***/ 90261:
2874
+ /***/ 5287:
2059
2875
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2060
2876
 
2061
2877
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2062
- /* harmony export */ Z: () => (/* binding */ Settings)
2063
- /* harmony export */ });
2064
- const DEFAULT_SETTINGS = Symbol('DefaultSettings');
2065
- const RUNTIME_SETTINGS = Symbol('RuntimeSettings');
2066
- const OBJECT_SETTINGS_MAP = Symbol('ObjectSettingsMap');
2067
- const DICTIONARY = Symbol('Dictionary');
2068
- class Settings {
2069
- constructor(base) {
2070
- const dictionary = Object.create((base instanceof Settings && DICTIONARY in base
2071
- ? base[DICTIONARY]
2072
- : null));
2073
- Object.seal(Object.defineProperty(this, DICTIONARY, {
2074
- value: dictionary,
2075
- }));
2076
- }
2077
- set(key, value) {
2078
- return set(this[DICTIONARY], key, value, null);
2079
- }
2080
- get(key) {
2081
- return get(this[DICTIONARY], key);
2082
- }
2083
- unset(key) {
2084
- return unset(this[DICTIONARY], key + '');
2085
- }
2086
- forEach(callback) {
2087
- iterate(this[DICTIONARY], callback);
2088
- }
2089
- extend() {
2090
- return new Settings(this);
2091
- }
2092
- import(root) {
2093
- if (isPlainObject(root)) {
2094
- Object.keys(root).forEach((key) => {
2095
- set(this[DICTIONARY], key, root[key], null);
2096
- });
2097
- }
2098
- }
2099
- dump() {
2100
- const context = {};
2101
- iterate(this[DICTIONARY], (key, value) => {
2102
- if (typeof value !== 'undefined') {
2103
- deepSet(context, key, value);
2104
- }
2105
- });
2106
- return context;
2107
- }
2108
- static assert(subject) {
2109
- return subject instanceof Settings
2110
- ? subject
2111
- : Settings.getRuntimeSettings();
2112
- }
2113
- static getDefaultSettings(subfield = null) {
2114
- let defaultSettings = Settings[DEFAULT_SETTINGS];
2115
- if (!(defaultSettings instanceof Settings)) {
2116
- defaultSettings = new Settings();
2117
- Settings[DEFAULT_SETTINGS] = defaultSettings;
2118
- }
2119
- if (subfield) {
2120
- const settingObj = {};
2121
- defaultSettings.forEach((name) => {
2122
- if (name.startsWith(subfield)) {
2123
- const setting = name.split(`${subfield}.`)[1];
2124
- settingObj[setting] = defaultSettings.get(name);
2125
- }
2126
- });
2127
- return settingObj;
2128
- }
2129
- return defaultSettings;
2130
- }
2131
- static getRuntimeSettings() {
2132
- let runtimeSettings = Settings[RUNTIME_SETTINGS];
2133
- if (!(runtimeSettings instanceof Settings)) {
2134
- runtimeSettings = new Settings(Settings.getDefaultSettings());
2135
- Settings[RUNTIME_SETTINGS] = runtimeSettings;
2136
- }
2137
- return runtimeSettings;
2138
- }
2139
- static getObjectSettings(subject, from) {
2140
- let settings = null;
2141
- if (subject instanceof Settings) {
2142
- settings = subject;
2143
- }
2144
- else if (typeof subject === 'object' && subject !== null) {
2145
- let objectSettingsMap = Settings[OBJECT_SETTINGS_MAP];
2146
- if (!(objectSettingsMap instanceof WeakMap)) {
2147
- objectSettingsMap = new WeakMap();
2148
- Settings[OBJECT_SETTINGS_MAP] = objectSettingsMap;
2149
- }
2150
- settings = objectSettingsMap.get(subject);
2151
- if (!(settings instanceof Settings)) {
2152
- settings = new Settings(Settings.assert(Settings.getObjectSettings(from)));
2153
- objectSettingsMap.set(subject, settings);
2154
- }
2155
- }
2156
- return settings;
2157
- }
2158
- static extendRuntimeSettings() {
2159
- return Settings.getRuntimeSettings().extend();
2160
- }
2161
- }
2162
- function unset(dictionary, name) {
2163
- if (name.endsWith('.')) {
2164
- let deleteCount = 0;
2165
- const namespace = name;
2166
- const base = namespace.slice(0, -1);
2167
- const deleteAll = base.length === 0;
2168
- for (const key in dictionary) {
2169
- if (Object.prototype.hasOwnProperty.call(dictionary, key) &&
2170
- (deleteAll || key.startsWith(namespace) || key === base)) {
2171
- delete dictionary[key];
2172
- ++deleteCount;
2173
- }
2174
- }
2175
- return deleteCount > 0;
2176
- }
2177
- return delete dictionary[name];
2178
- }
2179
- function iterate(dictionary, callback) {
2180
- for (const key in dictionary) {
2181
- callback(key, dictionary[key]);
2182
- }
2183
- }
2184
- function setAll(dictionary, prefix, record, references) {
2185
- let failCount;
2186
- if (references.has(record)) {
2187
- return set(dictionary, prefix, null, references);
2188
- }
2189
- references.add(record);
2190
- failCount = 0;
2191
- for (const field in record) {
2192
- if (Object.prototype.hasOwnProperty.call(record, field)) {
2193
- const key = field.length === 0 ? prefix : `${prefix}.${field}`;
2194
- if (!set(dictionary, key, record[field], references)) {
2195
- ++failCount;
2196
- }
2197
- }
2198
- }
2199
- references.delete(record);
2200
- return failCount === 0;
2201
- }
2202
- function set(dictionary, key, value, references) {
2203
- if (isValidKey(key)) {
2204
- if (isPlainObject(value)) {
2205
- return setAll(dictionary, key, value, references instanceof WeakSet ? references : new WeakSet());
2206
- }
2207
- dictionary[key] = value;
2208
- return true;
2209
- }
2210
- return false;
2211
- }
2212
- function get(dictionary, key) {
2213
- return dictionary[key];
2214
- }
2215
- function isValidKey(key) {
2216
- let last, current, previous;
2217
- if (typeof key !== 'string' || (last = key.length - 1) < 0) {
2218
- return false;
2219
- }
2220
- previous = -1;
2221
- while ((current = key.indexOf('.', previous + 1)) >= 0) {
2222
- if (current - previous < 2 || current === last) {
2223
- return false;
2224
- }
2225
- previous = current;
2226
- }
2227
- return true;
2228
- }
2229
- function isPlainObject(subject) {
2230
- if (typeof subject === 'object' && subject !== null) {
2231
- const prototype = Object.getPrototypeOf(subject);
2232
- if (prototype === Object.prototype || prototype === null) {
2233
- return true;
2234
- }
2235
- }
2236
- return false;
2237
- }
2238
- function deepSet(context, key, value) {
2239
- const separator = key.indexOf('.');
2240
- if (separator >= 0) {
2241
- const subKey = key.slice(0, separator);
2242
- let subContext = context[subKey];
2243
- if (typeof subContext !== 'object' || subContext === null) {
2244
- const subContextValue = subContext;
2245
- subContext = {};
2246
- if (typeof subContextValue !== 'undefined') {
2247
- subContext[''] = subContextValue;
2248
- }
2249
- context[subKey] = subContext;
2250
- }
2251
- deepSet(subContext, key.slice(separator + 1, key.length), value);
2252
- }
2253
- else {
2254
- context[key] = value;
2255
- }
2256
- }
2257
- Settings.getDefaultSettings().set('useCursors', true);
2258
-
2259
-
2260
- /***/ }),
2261
-
2262
- /***/ 5287:
2263
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2264
-
2265
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2266
- /* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
2878
+ /* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
2267
2879
  /* harmony export */ });
2268
2880
  /* unused harmony export Cache */
2269
- /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11723);
2881
+ /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(56309);
2270
2882
  /* harmony import */ var _eventTarget__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(74238);
2271
2883
  /* harmony import */ var _enums_Events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19546);
2272
2884
  /* harmony import */ var _classes_ImageVolume__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(84326);
@@ -2303,7 +2915,11 @@ class Cache {
2303
2915
  this.getMaxInstanceSize = () => this._maxInstanceSize;
2304
2916
  this.getCacheSize = () => this._imageCacheSize + this._volumeCacheSize;
2305
2917
  this._decacheImage = (imageId) => {
2306
- const { imageLoadObject } = this._imageCache.get(imageId);
2918
+ const cachedImage = this._imageCache.get(imageId);
2919
+ if (!cachedImage) {
2920
+ return;
2921
+ }
2922
+ const { imageLoadObject } = cachedImage;
2307
2923
  if (imageLoadObject.cancelFn) {
2308
2924
  imageLoadObject.cancelFn();
2309
2925
  }
@@ -2314,7 +2930,13 @@ class Cache {
2314
2930
  };
2315
2931
  this._decacheVolume = (volumeId) => {
2316
2932
  const cachedVolume = this._volumeCache.get(volumeId);
2933
+ if (!cachedVolume) {
2934
+ return;
2935
+ }
2317
2936
  const { volumeLoadObject, volume } = cachedVolume;
2937
+ if (!volume) {
2938
+ return;
2939
+ }
2318
2940
  if (volume.cancelLoading) {
2319
2941
  volume.cancelLoading();
2320
2942
  }
@@ -2360,7 +2982,7 @@ class Cache {
2360
2982
  throw new Error('getVolumeLoadObject: volumeId must not be undefined');
2361
2983
  }
2362
2984
  const cachedVolume = this._volumeCache.get(volumeId);
2363
- if (cachedVolume === undefined) {
2985
+ if (!cachedVolume) {
2364
2986
  return;
2365
2987
  }
2366
2988
  cachedVolume.timeStamp = Date.now();
@@ -2371,7 +2993,7 @@ class Cache {
2371
2993
  throw new Error('getGeometry: geometryId must not be undefined');
2372
2994
  }
2373
2995
  const cachedGeometry = this._geometryCache.get(geometryId);
2374
- if (cachedGeometry === undefined) {
2996
+ if (!cachedGeometry) {
2375
2997
  return;
2376
2998
  }
2377
2999
  cachedGeometry.timeStamp = Date.now();
@@ -2382,7 +3004,7 @@ class Cache {
2382
3004
  throw new Error('getImage: imageId must not be undefined');
2383
3005
  }
2384
3006
  const cachedImage = this._imageCache.get(imageId);
2385
- if (cachedImage === undefined) {
3007
+ if (!cachedImage) {
2386
3008
  return;
2387
3009
  }
2388
3010
  cachedImage.timeStamp = Date.now();
@@ -2393,7 +3015,7 @@ class Cache {
2393
3015
  throw new Error('getVolume: volumeId must not be undefined');
2394
3016
  }
2395
3017
  const cachedVolume = this._volumeCache.get(volumeId);
2396
- if (cachedVolume === undefined) {
3018
+ if (!cachedVolume) {
2397
3019
  return;
2398
3020
  }
2399
3021
  cachedVolume.timeStamp = Date.now();
@@ -2414,7 +3036,7 @@ class Cache {
2414
3036
  throw new Error('removeImageLoadObject: imageId must not be undefined');
2415
3037
  }
2416
3038
  const cachedImage = this._imageCache.get(imageId);
2417
- if (cachedImage === undefined) {
3039
+ if (!cachedImage) {
2418
3040
  throw new Error('removeImageLoadObject: imageId was not present in imageCache');
2419
3041
  }
2420
3042
  this.incrementImageCacheSize(-cachedImage.sizeInBytes);
@@ -2430,7 +3052,7 @@ class Cache {
2430
3052
  throw new Error('removeVolumeLoadObject: volumeId must not be undefined');
2431
3053
  }
2432
3054
  const cachedVolume = this._volumeCache.get(volumeId);
2433
- if (cachedVolume === undefined) {
3055
+ if (!cachedVolume) {
2434
3056
  throw new Error('removeVolumeLoadObject: volumeId was not present in volumeCache');
2435
3057
  }
2436
3058
  this.incrementVolumeCacheSize(-cachedVolume.sizeInBytes);
@@ -2597,7 +3219,7 @@ class Cache {
2597
3219
  throw new Error('getImageLoadObject: imageId must not be undefined');
2598
3220
  }
2599
3221
  const cachedImage = this._imageCache.get(imageId);
2600
- if (cachedImage === undefined) {
3222
+ if (!cachedImage) {
2601
3223
  return;
2602
3224
  }
2603
3225
  cachedImage.timeStamp = Date.now();
@@ -2615,6 +3237,9 @@ class Cache {
2615
3237
  const imageIdToUse = (0,_utilities__WEBPACK_IMPORTED_MODULE_0__.imageIdToURI)(imageId);
2616
3238
  for (const volumeId of volumeIds) {
2617
3239
  const cachedVolume = this._volumeCache.get(volumeId);
3240
+ if (!cachedVolume) {
3241
+ return;
3242
+ }
2618
3243
  const { volume } = cachedVolume;
2619
3244
  if (!volume?.imageIds?.length) {
2620
3245
  return;
@@ -2720,30 +3345,48 @@ const cache = new Cache();
2720
3345
 
2721
3346
  /***/ }),
2722
3347
 
2723
- /***/ 34061:
3348
+ /***/ 19247:
2724
3349
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2725
3350
 
2726
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2727
- /* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
2728
- /* harmony export */ });
2729
- const EPSILON = 1e-3;
2730
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (EPSILON);
2731
-
2732
3351
 
2733
- /***/ }),
3352
+ // EXPORTS
3353
+ __webpack_require__.d(__webpack_exports__, {
3354
+ EPSILON: () => (/* reexport */ epsilon),
3355
+ MPR_CAMERA_VALUES: () => (/* reexport */ mprCameraValues/* default */.Z),
3356
+ RENDERING_DEFAULTS: () => (/* reexport */ rendering),
3357
+ VIEWPORT_PRESETS: () => (/* reexport */ viewportPresets/* default */.Z)
3358
+ });
2734
3359
 
2735
- /***/ 87525:
2736
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3360
+ // UNUSED EXPORTS: BACKGROUND_COLORS, CPU_COLORMAPS
2737
3361
 
2738
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2739
- /* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
2740
- /* harmony export */ });
3362
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/cpuColormaps.js
3363
+ var cpuColormaps = __webpack_require__(52813);
3364
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/rendering.js
2741
3365
  const RENDERING_DEFAULTS = {
2742
3366
  MINIMUM_SLAB_THICKNESS: 5e-2,
2743
3367
  MAXIMUM_RAY_DISTANCE: 1e6,
2744
3368
  };
2745
3369
  Object.freeze(RENDERING_DEFAULTS);
2746
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RENDERING_DEFAULTS);
3370
+ /* harmony default export */ const rendering = (RENDERING_DEFAULTS);
3371
+
3372
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/epsilon.js
3373
+ const EPSILON = 1e-3;
3374
+ /* harmony default export */ const epsilon = (EPSILON);
3375
+
3376
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/mprCameraValues.js + 1 modules
3377
+ var mprCameraValues = __webpack_require__(21306);
3378
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/viewportPresets.js
3379
+ var viewportPresets = __webpack_require__(89469);
3380
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/backgroundColors.js
3381
+ var backgroundColors = __webpack_require__(43220);
3382
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/index.js
3383
+
3384
+
3385
+
3386
+
3387
+
3388
+
3389
+
2747
3390
 
2748
3391
 
2749
3392
  /***/ }),
@@ -2807,77 +3450,454 @@ __webpack_require__.d(__webpack_exports__, {
2807
3450
  ViewportType: () => (/* reexport */ ViewportType/* default */.Z)
2808
3451
  });
2809
3452
 
2810
- // UNUSED EXPORTS: ContourType, DynamicOperatorType
3453
+ // UNUSED EXPORTS: ContourType, DynamicOperatorType
3454
+
3455
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/Events.js
3456
+ var Events = __webpack_require__(19546);
3457
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/RequestType.js
3458
+ var RequestType = __webpack_require__(49334);
3459
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ViewportType.js
3460
+ var ViewportType = __webpack_require__(68032);
3461
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/InterpolationType.js
3462
+ var InterpolationType = __webpack_require__(75677);
3463
+ // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Rendering/Core/VolumeMapper/Constants.js
3464
+ var Constants = __webpack_require__(83336);
3465
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/BlendModes.js
3466
+
3467
+ const { BlendMode } = Constants["default"];
3468
+ var BlendModes;
3469
+ (function (BlendModes) {
3470
+ BlendModes[BlendModes["COMPOSITE"] = 0] = "COMPOSITE";
3471
+ BlendModes[BlendModes["MAXIMUM_INTENSITY_BLEND"] = 1] = "MAXIMUM_INTENSITY_BLEND";
3472
+ BlendModes[BlendModes["MINIMUM_INTENSITY_BLEND"] = 2] = "MINIMUM_INTENSITY_BLEND";
3473
+ BlendModes[BlendModes["AVERAGE_INTENSITY_BLEND"] = 3] = "AVERAGE_INTENSITY_BLEND";
3474
+ })(BlendModes || (BlendModes = {}));
3475
+ /* harmony default export */ const enums_BlendModes = (BlendModes);
3476
+
3477
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/OrientationAxis.js
3478
+ var OrientationAxis = __webpack_require__(96426);
3479
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/SharedArrayBufferModes.js
3480
+ var SharedArrayBufferModes = __webpack_require__(91799);
3481
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/GeometryType.js
3482
+ var GeometryType;
3483
+ (function (GeometryType) {
3484
+ GeometryType["CONTOUR"] = "contour";
3485
+ GeometryType["SURFACE"] = "Surface";
3486
+ })(GeometryType || (GeometryType = {}));
3487
+ /* harmony default export */ const enums_GeometryType = (GeometryType);
3488
+
3489
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ContourType.js
3490
+ var ContourType = __webpack_require__(2689);
3491
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/VOILUTFunctionType.js
3492
+ var VOILUTFunctionType = __webpack_require__(67751);
3493
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/DynamicOperatorType.js
3494
+ var DynamicOperatorType;
3495
+ (function (DynamicOperatorType) {
3496
+ DynamicOperatorType["SUM"] = "SUM";
3497
+ DynamicOperatorType["AVERAGE"] = "AVERAGE";
3498
+ DynamicOperatorType["SUBTRACT"] = "SUBTRACT";
3499
+ })(DynamicOperatorType || (DynamicOperatorType = {}));
3500
+ /* harmony default export */ const enums_DynamicOperatorType = ((/* unused pure expression or super */ null && (DynamicOperatorType)));
3501
+
3502
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/CalibrationTypes.js
3503
+ var CalibrationTypes;
3504
+ (function (CalibrationTypes) {
3505
+ CalibrationTypes["NOT_APPLICABLE"] = "";
3506
+ CalibrationTypes["ERMF"] = "ERMF";
3507
+ CalibrationTypes["USER"] = "User";
3508
+ CalibrationTypes["PROJECTION"] = "Proj";
3509
+ CalibrationTypes["REGION"] = "Region";
3510
+ CalibrationTypes["ERROR"] = "Error";
3511
+ CalibrationTypes["UNCALIBRATED"] = "Uncalibrated";
3512
+ })(CalibrationTypes || (CalibrationTypes = {}));
3513
+ /* harmony default export */ const enums_CalibrationTypes = (CalibrationTypes);
3514
+
3515
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ViewportStatus.js
3516
+ var ViewportStatus = __webpack_require__(84659);
3517
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ImageQualityStatus.js
3518
+ var ImageQualityStatus = __webpack_require__(83521);
3519
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/VideoEnums.js
3520
+ var VideoEnums = __webpack_require__(40373);
3521
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/MetadataModules.js
3522
+ var MetadataModules = __webpack_require__(636);
3523
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js
3524
+
3525
+
3526
+
3527
+
3528
+
3529
+
3530
+
3531
+
3532
+
3533
+
3534
+
3535
+
3536
+
3537
+
3538
+
3539
+
3540
+
3541
+
3542
+
3543
+ /***/ }),
3544
+
3545
+ /***/ 65279:
3546
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3547
+
3548
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3549
+ /* harmony export */ O: () => (/* binding */ getEnabledElementByIds),
3550
+ /* harmony export */ Yz: () => (/* binding */ getEnabledElementByViewportId),
3551
+ /* harmony export */ ZP: () => (/* binding */ getEnabledElement),
3552
+ /* harmony export */ wN: () => (/* binding */ getEnabledElements)
3553
+ /* harmony export */ });
3554
+ /* harmony import */ var _RenderingEngine_getRenderingEngine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9138);
3555
+
3556
+ function getEnabledElement(element) {
3557
+ if (!element) {
3558
+ return;
3559
+ }
3560
+ const { viewportUid, renderingEngineUid } = element.dataset;
3561
+ return getEnabledElementByIds(viewportUid, renderingEngineUid);
3562
+ }
3563
+ function getEnabledElementByIds(viewportId, renderingEngineId) {
3564
+ if (!renderingEngineId || !viewportId) {
3565
+ return;
3566
+ }
3567
+ const renderingEngine = (0,_RenderingEngine_getRenderingEngine__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .ZP)(renderingEngineId);
3568
+ if (!renderingEngine || renderingEngine.hasBeenDestroyed) {
3569
+ return;
3570
+ }
3571
+ const viewport = renderingEngine.getViewport(viewportId);
3572
+ if (!viewport) {
3573
+ return;
3574
+ }
3575
+ const FrameOfReferenceUID = viewport.getFrameOfReferenceUID();
3576
+ return {
3577
+ viewport,
3578
+ renderingEngine,
3579
+ viewportId,
3580
+ renderingEngineId,
3581
+ FrameOfReferenceUID,
3582
+ };
3583
+ }
3584
+ function getEnabledElementByViewportId(viewportId) {
3585
+ const renderingEngines = (0,_RenderingEngine_getRenderingEngine__WEBPACK_IMPORTED_MODULE_0__/* .getRenderingEngines */ .Uu)();
3586
+ for (let i = 0; i < renderingEngines.length; i++) {
3587
+ const renderingEngine = renderingEngines[i];
3588
+ const viewport = renderingEngine.getViewport(viewportId);
3589
+ if (viewport) {
3590
+ return getEnabledElementByIds(viewportId, renderingEngine.id);
3591
+ }
3592
+ }
3593
+ }
3594
+ function getEnabledElements() {
3595
+ const enabledElements = [];
3596
+ const renderingEngines = (0,_RenderingEngine_getRenderingEngine__WEBPACK_IMPORTED_MODULE_0__/* .getRenderingEngines */ .Uu)();
3597
+ renderingEngines.forEach((renderingEngine) => {
3598
+ const viewports = renderingEngine.getViewports();
3599
+ viewports.forEach(({ element }) => {
3600
+ enabledElements.push(getEnabledElement(element));
3601
+ });
3602
+ });
3603
+ return enabledElements;
3604
+ }
3605
+
3606
+
3607
+ /***/ }),
3608
+
3609
+ /***/ 12651:
3610
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3611
+
3612
+
3613
+ // EXPORTS
3614
+ __webpack_require__.d(__webpack_exports__, {
3615
+ BaseVolumeViewport: () => (/* reexport */ BaseVolumeViewport/* default */.Z),
3616
+ CONSTANTS: () => (/* reexport */ constants),
3617
+ EVENTS: () => (/* reexport */ enums.Events),
3618
+ Enums: () => (/* reexport */ enums),
3619
+ Settings: () => (/* reexport */ Settings),
3620
+ StackViewport: () => (/* reexport */ StackViewport/* default */.Z),
3621
+ VolumeViewport: () => (/* reexport */ VolumeViewport/* default */.Z),
3622
+ VolumeViewport3D: () => (/* reexport */ VolumeViewport3D/* default */.Z),
3623
+ addImageSlicesToViewports: () => (/* reexport */ helpers/* addImageSlicesToViewports */.PN),
3624
+ addVolumesToViewports: () => (/* reexport */ helpers/* addVolumesToViewports */.gc),
3625
+ cache: () => (/* reexport */ cache/* default */.ZP),
3626
+ eventTarget: () => (/* reexport */ eventTarget/* default */.Z),
3627
+ geometryLoader: () => (/* reexport */ geometryLoader),
3628
+ getConfiguration: () => (/* reexport */ init/* getConfiguration */.P_),
3629
+ getEnabledElement: () => (/* reexport */ getEnabledElement/* default */.ZP),
3630
+ getEnabledElementByIds: () => (/* reexport */ getEnabledElement/* getEnabledElementByIds */.O),
3631
+ getEnabledElementByViewportId: () => (/* reexport */ getEnabledElement/* getEnabledElementByViewportId */.Yz),
3632
+ getEnabledElements: () => (/* reexport */ getEnabledElement/* getEnabledElements */.wN),
3633
+ getRenderingEngine: () => (/* reexport */ getRenderingEngine/* getRenderingEngine */.Pr),
3634
+ getRenderingEngines: () => (/* reexport */ getRenderingEngine/* getRenderingEngines */.Uu),
3635
+ getWebWorkerManager: () => (/* reexport */ init/* getWebWorkerManager */.Pt),
3636
+ imageLoadPoolManager: () => (/* reexport */ imageLoadPoolManager/* default */.Z),
3637
+ imageLoader: () => (/* reexport */ imageLoader),
3638
+ metaData: () => (/* reexport */ metaData),
3639
+ triggerEvent: () => (/* reexport */ triggerEvent/* default */.Z),
3640
+ utilities: () => (/* reexport */ utilities),
3641
+ volumeLoader: () => (/* reexport */ volumeLoader)
3642
+ });
3643
+
3644
+ // UNUSED EXPORTS: ImageVolume, ProgressiveRetrieveImages, RenderingEngine, Surface, VideoViewport, Viewport, WSIViewport, canRenderFloatTextures, createVolumeActor, createVolumeMapper, getOrCreateCanvas, getShouldUseCPURendering, getShouldUseSharedArrayBuffer, imageRetrievalPoolManager, init, isCornerstoneInitialized, peerImport, registerImageLoader, requestPoolManager, resetUseCPURendering, resetUseSharedArrayBuffer, setConfiguration, setPreferSizeOverAccuracy, setUseCPURendering, setUseSharedArrayBuffer, setVolumesForViewports
3645
+
3646
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js + 4 modules
3647
+ var enums = __webpack_require__(7187);
3648
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/constants/index.js + 2 modules
3649
+ var constants = __webpack_require__(19247);
3650
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/index.js + 3 modules
3651
+ var RenderingEngine = __webpack_require__(69552);
3652
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/VolumeViewport.js
3653
+ var VolumeViewport = __webpack_require__(32932);
3654
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/VolumeViewport3D.js
3655
+ var VolumeViewport3D = __webpack_require__(46190);
3656
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/BaseVolumeViewport.js
3657
+ var BaseVolumeViewport = __webpack_require__(36205);
3658
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/StackViewport.js
3659
+ var StackViewport = __webpack_require__(98715);
3660
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/VideoViewport.js
3661
+ var VideoViewport = __webpack_require__(49001);
3662
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/WSIViewport.js
3663
+ var WSIViewport = __webpack_require__(86057);
3664
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/Viewport.js
3665
+ var Viewport = __webpack_require__(77614);
3666
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/eventTarget.js
3667
+ var eventTarget = __webpack_require__(74238);
3668
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/getRenderingEngine.js
3669
+ var getRenderingEngine = __webpack_require__(9138);
3670
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/cache/index.js
3671
+ var cache = __webpack_require__(82253);
3672
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/requestPool/imageRetrievalPoolManager.js
3673
+ var imageRetrievalPoolManager = __webpack_require__(22717);
3674
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/requestPool/imageLoadPoolManager.js
3675
+ var imageLoadPoolManager = __webpack_require__(96506);
3676
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/getEnabledElement.js
3677
+ var getEnabledElement = __webpack_require__(65279);
3678
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/metaData.js
3679
+ var metaData = __webpack_require__(30023);
3680
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/init.js + 1 modules
3681
+ var init = __webpack_require__(28719);
3682
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/Settings.js
3683
+ const DEFAULT_SETTINGS = Symbol('DefaultSettings');
3684
+ const RUNTIME_SETTINGS = Symbol('RuntimeSettings');
3685
+ const OBJECT_SETTINGS_MAP = Symbol('ObjectSettingsMap');
3686
+ const DICTIONARY = Symbol('Dictionary');
3687
+ class Settings {
3688
+ constructor(base) {
3689
+ const dictionary = Object.create((base instanceof Settings && DICTIONARY in base
3690
+ ? base[DICTIONARY]
3691
+ : null));
3692
+ Object.seal(Object.defineProperty(this, DICTIONARY, {
3693
+ value: dictionary,
3694
+ }));
3695
+ }
3696
+ set(key, value) {
3697
+ return set(this[DICTIONARY], key, value, null);
3698
+ }
3699
+ get(key) {
3700
+ return get(this[DICTIONARY], key);
3701
+ }
3702
+ unset(key) {
3703
+ return unset(this[DICTIONARY], key + '');
3704
+ }
3705
+ forEach(callback) {
3706
+ iterate(this[DICTIONARY], callback);
3707
+ }
3708
+ extend() {
3709
+ return new Settings(this);
3710
+ }
3711
+ import(root) {
3712
+ if (isPlainObject(root)) {
3713
+ Object.keys(root).forEach((key) => {
3714
+ set(this[DICTIONARY], key, root[key], null);
3715
+ });
3716
+ }
3717
+ }
3718
+ dump() {
3719
+ const context = {};
3720
+ iterate(this[DICTIONARY], (key, value) => {
3721
+ if (typeof value !== 'undefined') {
3722
+ deepSet(context, key, value);
3723
+ }
3724
+ });
3725
+ return context;
3726
+ }
3727
+ static assert(subject) {
3728
+ return subject instanceof Settings
3729
+ ? subject
3730
+ : Settings.getRuntimeSettings();
3731
+ }
3732
+ static getDefaultSettings(subfield = null) {
3733
+ let defaultSettings = Settings[DEFAULT_SETTINGS];
3734
+ if (!(defaultSettings instanceof Settings)) {
3735
+ defaultSettings = new Settings();
3736
+ Settings[DEFAULT_SETTINGS] = defaultSettings;
3737
+ }
3738
+ if (subfield) {
3739
+ const settingObj = {};
3740
+ defaultSettings.forEach((name) => {
3741
+ if (name.startsWith(subfield)) {
3742
+ const setting = name.split(`${subfield}.`)[1];
3743
+ settingObj[setting] = defaultSettings.get(name);
3744
+ }
3745
+ });
3746
+ return settingObj;
3747
+ }
3748
+ return defaultSettings;
3749
+ }
3750
+ static getRuntimeSettings() {
3751
+ let runtimeSettings = Settings[RUNTIME_SETTINGS];
3752
+ if (!(runtimeSettings instanceof Settings)) {
3753
+ runtimeSettings = new Settings(Settings.getDefaultSettings());
3754
+ Settings[RUNTIME_SETTINGS] = runtimeSettings;
3755
+ }
3756
+ return runtimeSettings;
3757
+ }
3758
+ static getObjectSettings(subject, from) {
3759
+ let settings = null;
3760
+ if (subject instanceof Settings) {
3761
+ settings = subject;
3762
+ }
3763
+ else if (typeof subject === 'object' && subject !== null) {
3764
+ let objectSettingsMap = Settings[OBJECT_SETTINGS_MAP];
3765
+ if (!(objectSettingsMap instanceof WeakMap)) {
3766
+ objectSettingsMap = new WeakMap();
3767
+ Settings[OBJECT_SETTINGS_MAP] = objectSettingsMap;
3768
+ }
3769
+ settings = objectSettingsMap.get(subject);
3770
+ if (!(settings instanceof Settings)) {
3771
+ settings = new Settings(Settings.assert(Settings.getObjectSettings(from)));
3772
+ objectSettingsMap.set(subject, settings);
3773
+ }
3774
+ }
3775
+ return settings;
3776
+ }
3777
+ static extendRuntimeSettings() {
3778
+ return Settings.getRuntimeSettings().extend();
3779
+ }
3780
+ }
3781
+ function unset(dictionary, name) {
3782
+ if (name.endsWith('.')) {
3783
+ let deleteCount = 0;
3784
+ const namespace = name;
3785
+ const base = namespace.slice(0, -1);
3786
+ const deleteAll = base.length === 0;
3787
+ for (const key in dictionary) {
3788
+ if (Object.prototype.hasOwnProperty.call(dictionary, key) &&
3789
+ (deleteAll || key.startsWith(namespace) || key === base)) {
3790
+ delete dictionary[key];
3791
+ ++deleteCount;
3792
+ }
3793
+ }
3794
+ return deleteCount > 0;
3795
+ }
3796
+ return delete dictionary[name];
3797
+ }
3798
+ function iterate(dictionary, callback) {
3799
+ for (const key in dictionary) {
3800
+ callback(key, dictionary[key]);
3801
+ }
3802
+ }
3803
+ function setAll(dictionary, prefix, record, references) {
3804
+ let failCount;
3805
+ if (references.has(record)) {
3806
+ return set(dictionary, prefix, null, references);
3807
+ }
3808
+ references.add(record);
3809
+ failCount = 0;
3810
+ for (const field in record) {
3811
+ if (Object.prototype.hasOwnProperty.call(record, field)) {
3812
+ const key = field.length === 0 ? prefix : `${prefix}.${field}`;
3813
+ if (!set(dictionary, key, record[field], references)) {
3814
+ ++failCount;
3815
+ }
3816
+ }
3817
+ }
3818
+ references.delete(record);
3819
+ return failCount === 0;
3820
+ }
3821
+ function set(dictionary, key, value, references) {
3822
+ if (isValidKey(key)) {
3823
+ if (isPlainObject(value)) {
3824
+ return setAll(dictionary, key, value, references instanceof WeakSet ? references : new WeakSet());
3825
+ }
3826
+ dictionary[key] = value;
3827
+ return true;
3828
+ }
3829
+ return false;
3830
+ }
3831
+ function get(dictionary, key) {
3832
+ return dictionary[key];
3833
+ }
3834
+ function isValidKey(key) {
3835
+ let last, current, previous;
3836
+ if (typeof key !== 'string' || (last = key.length - 1) < 0) {
3837
+ return false;
3838
+ }
3839
+ previous = -1;
3840
+ while ((current = key.indexOf('.', previous + 1)) >= 0) {
3841
+ if (current - previous < 2 || current === last) {
3842
+ return false;
3843
+ }
3844
+ previous = current;
3845
+ }
3846
+ return true;
3847
+ }
3848
+ function isPlainObject(subject) {
3849
+ if (typeof subject === 'object' && subject !== null) {
3850
+ const prototype = Object.getPrototypeOf(subject);
3851
+ if (prototype === Object.prototype || prototype === null) {
3852
+ return true;
3853
+ }
3854
+ }
3855
+ return false;
3856
+ }
3857
+ function deepSet(context, key, value) {
3858
+ const separator = key.indexOf('.');
3859
+ if (separator >= 0) {
3860
+ const subKey = key.slice(0, separator);
3861
+ let subContext = context[subKey];
3862
+ if (typeof subContext !== 'object' || subContext === null) {
3863
+ const subContextValue = subContext;
3864
+ subContext = {};
3865
+ if (typeof subContextValue !== 'undefined') {
3866
+ subContext[''] = subContextValue;
3867
+ }
3868
+ context[subKey] = subContext;
3869
+ }
3870
+ deepSet(subContext, key.slice(separator + 1, key.length), value);
3871
+ }
3872
+ else {
3873
+ context[key] = value;
3874
+ }
3875
+ }
3876
+ Settings.getDefaultSettings().set('useCursors', true);
3877
+
3878
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/loaders/volumeLoader.js
3879
+ var volumeLoader = __webpack_require__(18588);
3880
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/loaders/imageLoader.js
3881
+ var imageLoader = __webpack_require__(62990);
3882
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/loaders/geometryLoader.js + 26 modules
3883
+ var geometryLoader = __webpack_require__(59469);
3884
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/loaders/ProgressiveRetrieveImages.js + 4 modules
3885
+ var ProgressiveRetrieveImages = __webpack_require__(27654);
3886
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/index.js + 66 modules
3887
+ var utilities = __webpack_require__(56309);
3888
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/triggerEvent.js
3889
+ var triggerEvent = __webpack_require__(85041);
3890
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/index.js + 1 modules
3891
+ var helpers = __webpack_require__(25281);
3892
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js
3893
+
3894
+
2811
3895
 
2812
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/Events.js
2813
- var Events = __webpack_require__(19546);
2814
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/RequestType.js
2815
- var RequestType = __webpack_require__(49334);
2816
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ViewportType.js
2817
- var ViewportType = __webpack_require__(68032);
2818
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/InterpolationType.js
2819
- var InterpolationType = __webpack_require__(75677);
2820
- // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Rendering/Core/VolumeMapper/Constants.js
2821
- var Constants = __webpack_require__(83336);
2822
- ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/BlendModes.js
2823
3896
 
2824
- const { BlendMode } = Constants["default"];
2825
- var BlendModes;
2826
- (function (BlendModes) {
2827
- BlendModes[BlendModes["COMPOSITE"] = 0] = "COMPOSITE";
2828
- BlendModes[BlendModes["MAXIMUM_INTENSITY_BLEND"] = 1] = "MAXIMUM_INTENSITY_BLEND";
2829
- BlendModes[BlendModes["MINIMUM_INTENSITY_BLEND"] = 2] = "MINIMUM_INTENSITY_BLEND";
2830
- BlendModes[BlendModes["AVERAGE_INTENSITY_BLEND"] = 3] = "AVERAGE_INTENSITY_BLEND";
2831
- })(BlendModes || (BlendModes = {}));
2832
- /* harmony default export */ const enums_BlendModes = (BlendModes);
2833
3897
 
2834
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/OrientationAxis.js
2835
- var OrientationAxis = __webpack_require__(96426);
2836
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/SharedArrayBufferModes.js
2837
- var SharedArrayBufferModes = __webpack_require__(91799);
2838
- ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/GeometryType.js
2839
- var GeometryType;
2840
- (function (GeometryType) {
2841
- GeometryType["CONTOUR"] = "contour";
2842
- GeometryType["SURFACE"] = "Surface";
2843
- })(GeometryType || (GeometryType = {}));
2844
- /* harmony default export */ const enums_GeometryType = (GeometryType);
2845
3898
 
2846
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ContourType.js
2847
- var ContourType = __webpack_require__(2689);
2848
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/VOILUTFunctionType.js
2849
- var VOILUTFunctionType = __webpack_require__(67751);
2850
- ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/DynamicOperatorType.js
2851
- var DynamicOperatorType;
2852
- (function (DynamicOperatorType) {
2853
- DynamicOperatorType["SUM"] = "SUM";
2854
- DynamicOperatorType["AVERAGE"] = "AVERAGE";
2855
- DynamicOperatorType["SUBTRACT"] = "SUBTRACT";
2856
- })(DynamicOperatorType || (DynamicOperatorType = {}));
2857
- /* harmony default export */ const enums_DynamicOperatorType = ((/* unused pure expression or super */ null && (DynamicOperatorType)));
2858
3899
 
2859
- ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/CalibrationTypes.js
2860
- var CalibrationTypes;
2861
- (function (CalibrationTypes) {
2862
- CalibrationTypes["NOT_APPLICABLE"] = "";
2863
- CalibrationTypes["ERMF"] = "ERMF";
2864
- CalibrationTypes["USER"] = "User";
2865
- CalibrationTypes["PROJECTION"] = "Proj";
2866
- CalibrationTypes["REGION"] = "Region";
2867
- CalibrationTypes["ERROR"] = "Error";
2868
- CalibrationTypes["UNCALIBRATED"] = "Uncalibrated";
2869
- })(CalibrationTypes || (CalibrationTypes = {}));
2870
- /* harmony default export */ const enums_CalibrationTypes = (CalibrationTypes);
2871
3900
 
2872
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ViewportStatus.js
2873
- var ViewportStatus = __webpack_require__(84659);
2874
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/ImageQualityStatus.js
2875
- var ImageQualityStatus = __webpack_require__(83521);
2876
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/VideoEnums.js
2877
- var VideoEnums = __webpack_require__(40373);
2878
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/MetadataModules.js
2879
- var MetadataModules = __webpack_require__(636);
2880
- ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/enums/index.js
2881
3901
 
2882
3902
 
2883
3903
 
@@ -2897,68 +3917,9 @@ var MetadataModules = __webpack_require__(636);
2897
3917
 
2898
3918
 
2899
3919
 
2900
- /***/ }),
2901
3920
 
2902
- /***/ 65279:
2903
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2904
3921
 
2905
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2906
- /* harmony export */ O: () => (/* binding */ getEnabledElementByIds),
2907
- /* harmony export */ Yz: () => (/* binding */ getEnabledElementByViewportId),
2908
- /* harmony export */ ZP: () => (/* binding */ getEnabledElement),
2909
- /* harmony export */ wN: () => (/* binding */ getEnabledElements)
2910
- /* harmony export */ });
2911
- /* harmony import */ var _RenderingEngine_getRenderingEngine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9138);
2912
3922
 
2913
- function getEnabledElement(element) {
2914
- if (!element) {
2915
- return;
2916
- }
2917
- const { viewportUid, renderingEngineUid } = element.dataset;
2918
- return getEnabledElementByIds(viewportUid, renderingEngineUid);
2919
- }
2920
- function getEnabledElementByIds(viewportId, renderingEngineId) {
2921
- if (!renderingEngineId || !viewportId) {
2922
- return;
2923
- }
2924
- const renderingEngine = (0,_RenderingEngine_getRenderingEngine__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .ZP)(renderingEngineId);
2925
- if (!renderingEngine || renderingEngine.hasBeenDestroyed) {
2926
- return;
2927
- }
2928
- const viewport = renderingEngine.getViewport(viewportId);
2929
- if (!viewport) {
2930
- return;
2931
- }
2932
- const FrameOfReferenceUID = viewport.getFrameOfReferenceUID();
2933
- return {
2934
- viewport,
2935
- renderingEngine,
2936
- viewportId,
2937
- renderingEngineId,
2938
- FrameOfReferenceUID,
2939
- };
2940
- }
2941
- function getEnabledElementByViewportId(viewportId) {
2942
- const renderingEngines = (0,_RenderingEngine_getRenderingEngine__WEBPACK_IMPORTED_MODULE_0__/* .getRenderingEngines */ .Uu)();
2943
- for (let i = 0; i < renderingEngines.length; i++) {
2944
- const renderingEngine = renderingEngines[i];
2945
- const viewport = renderingEngine.getViewport(viewportId);
2946
- if (viewport) {
2947
- return getEnabledElementByIds(viewportId, renderingEngine.id);
2948
- }
2949
- }
2950
- }
2951
- function getEnabledElements() {
2952
- const enabledElements = [];
2953
- const renderingEngines = (0,_RenderingEngine_getRenderingEngine__WEBPACK_IMPORTED_MODULE_0__/* .getRenderingEngines */ .Uu)();
2954
- renderingEngines.forEach((renderingEngine) => {
2955
- const viewports = renderingEngine.getViewports();
2956
- viewports.forEach(({ element }) => {
2957
- enabledElements.push(getEnabledElement(element));
2958
- });
2959
- });
2960
- return enabledElements;
2961
- }
2962
3923
 
2963
3924
 
2964
3925
  /***/ }),
@@ -2987,9 +3948,9 @@ __webpack_require__.r(__webpack_exports__);
2987
3948
  /* harmony import */ var _cache__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82253);
2988
3949
  /* harmony import */ var _enums_Events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19546);
2989
3950
  /* harmony import */ var _eventTarget__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(74238);
2990
- /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(11723);
3951
+ /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(56309);
2991
3952
  /* harmony import */ var _requestPool_imageLoadPoolManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(96506);
2992
- /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(62709);
3953
+ /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(12651);
2993
3954
 
2994
3955
 
2995
3956
 
@@ -3268,7 +4229,7 @@ __webpack_require__.r(__webpack_exports__);
3268
4229
  /* harmony import */ var _utilities_triggerEvent__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(85041);
3269
4230
  /* harmony import */ var lodash_clonedeep__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(11677);
3270
4231
  /* harmony import */ var lodash_clonedeep__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_clonedeep__WEBPACK_IMPORTED_MODULE_8__);
3271
- /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(11723);
4232
+ /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(56309);
3272
4233
  /* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(28719);
3273
4234
  /* harmony import */ var _utilities_cacheUtils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(85654);
3274
4235
 
@@ -3589,6 +4550,55 @@ function generateVolumeScalarData(targetBuffer, scalarLength) {
3589
4550
  }
3590
4551
 
3591
4552
 
4553
+ /***/ }),
4554
+
4555
+ /***/ 30023:
4556
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4557
+
4558
+ __webpack_require__.r(__webpack_exports__);
4559
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
4560
+ /* harmony export */ addProvider: () => (/* binding */ addProvider),
4561
+ /* harmony export */ get: () => (/* binding */ getMetaData),
4562
+ /* harmony export */ removeAllProviders: () => (/* binding */ removeAllProviders),
4563
+ /* harmony export */ removeProvider: () => (/* binding */ removeProvider)
4564
+ /* harmony export */ });
4565
+ const providers = [];
4566
+ function addProvider(provider, priority = 0) {
4567
+ let i;
4568
+ for (i = 0; i < providers.length; i++) {
4569
+ if (providers[i].priority <= priority) {
4570
+ break;
4571
+ }
4572
+ }
4573
+ providers.splice(i, 0, {
4574
+ priority,
4575
+ provider,
4576
+ });
4577
+ }
4578
+ function removeProvider(provider) {
4579
+ for (let i = 0; i < providers.length; i++) {
4580
+ if (providers[i].provider === provider) {
4581
+ providers.splice(i, 1);
4582
+ break;
4583
+ }
4584
+ }
4585
+ }
4586
+ function removeAllProviders() {
4587
+ while (providers.length > 0) {
4588
+ providers.pop();
4589
+ }
4590
+ }
4591
+ function getMetaData(type, ...queries) {
4592
+ for (let i = 0; i < providers.length; i++) {
4593
+ const result = providers[i].provider(type, ...queries);
4594
+ if (result !== undefined) {
4595
+ return result;
4596
+ }
4597
+ }
4598
+ }
4599
+
4600
+
4601
+
3592
4602
  /***/ }),
3593
4603
 
3594
4604
  /***/ 96506:
@@ -3618,7 +4628,7 @@ imageLoadPoolManager.setMaxSimultaneousRequests(_enums_RequestType__WEBPACK_IMPO
3618
4628
  /* harmony export */ P: () => (/* binding */ RequestPoolManager)
3619
4629
  /* harmony export */ });
3620
4630
  /* harmony import */ var _enums_RequestType__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(49334);
3621
- /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11723);
4631
+ /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(56309);
3622
4632
 
3623
4633
 
3624
4634
  class RequestPoolManager {
@@ -4448,6 +5458,13 @@ const CursorSVG = {
4448
5458
  y: 24,
4449
5459
  },
4450
5460
  }),
5461
+ Height: extend(BASE, {
5462
+ iconContent: `<path d="m 6 22 l 8.5 0 v -16 h 8" stroke-width="3" fill="none" stroke="{{color}}" />`,
5463
+ viewBox: {
5464
+ x: 24,
5465
+ y: 24,
5466
+ },
5467
+ }),
4451
5468
  Probe: extend(BASE, {
4452
5469
  iconContent: `<path fill="{{color}}" d="M1152 896q0 106-75 181t-181 75-181-75-75-181 75-181 181-75 181 75
4453
5470
  75 181zm-256-544q-148 0-273 73t-198 198-73 273 73 273 198 198 273 73 273-73
@@ -4678,7 +5695,7 @@ const svgCursorNames = Object.keys(CursorSVG);
4678
5695
  /* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(33232);
4679
5696
  /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(69562);
4680
5697
  /* harmony import */ var _synchronizers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(93423);
4681
- /* harmony import */ var _drawingSvg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(86785);
5698
+ /* harmony import */ var _drawingSvg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(25876);
4682
5699
  /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(42975);
4683
5700
  /* harmony import */ var _cursors__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(60020);
4684
5701
  /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(35106);
@@ -4751,7 +5768,7 @@ const svgCursorNames = Object.keys(CursorSVG);
4751
5768
  /***/ ((__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) => {
4752
5769
 
4753
5770
  /* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(72076);
4754
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(62709);
5771
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12651);
4755
5772
  /* harmony import */ var _utilities_getCalibratedUnits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(39661);
4756
5773
  /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42975);
4757
5774
  /* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(93382);
@@ -4760,7 +5777,7 @@ const svgCursorNames = Object.keys(CursorSVG);
4760
5777
  /* harmony import */ var _stateManagement_annotation_annotationLocking__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(11163);
4761
5778
  /* harmony import */ var _stateManagement_annotation_annotationVisibility__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(41836);
4762
5779
  /* harmony import */ var _stateManagement_annotation_helpers_state__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(36705);
4763
- /* harmony import */ var _drawingSvg__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(86785);
5780
+ /* harmony import */ var _drawingSvg__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(25876);
4764
5781
  /* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(33232);
4765
5782
  /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(68096);
4766
5783
  /* harmony import */ var _utilities_viewportFilters__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(46966);
@@ -5508,7 +6525,7 @@ BidirectionalTool.toolName = 'Bidirectional';
5508
6525
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
5509
6526
  /* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
5510
6527
  /* harmony export */ });
5511
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
6528
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
5512
6529
  /* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(72076);
5513
6530
  /* harmony import */ var _AnnotationDisplayTool__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(92622);
5514
6531
  /* harmony import */ var _stateManagement_annotation_annotationLocking__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(11163);
@@ -5755,7 +6772,7 @@ __webpack_require__.d(__webpack_exports__, {
5755
6772
  xX: () => (/* reexport */ SegmentationDisplayTool/* default */.Z)
5756
6773
  });
5757
6774
 
5758
- // UNUSED EXPORTS: AngleTool, AnnotationDisplayTool, ArrowAnnotateTool, BaseTool, BidirectionalTool, BrushTool, CircleROIStartEndThresholdTool, CircleROITool, CircleScissorsTool, CobbAngleTool, CrosshairsTool, DragProbeTool, EllipticalROITool, EraserTool, KeyImageTool, LengthTool, LivewireContourSegmentationTool, LivewireContourTool, MIPJumpToClickTool, MagnifyTool, OrientationMarkerTool, OverlayGridTool, PaintFillTool, PanTool, PlanarRotateTool, ProbeTool, RectangleROIStartEndThresholdTool, RectangleROIThresholdTool, RectangleROITool, RectangleScissorsTool, ReferenceCursors, ReferenceLines, ReferenceLinesTool, ScaleOverlayTool, SculptorTool, SegmentSelectTool, SegmentationIntersectionTool, SphereScissorsTool, SplineContourSegmentationTool, SplineROITool, StackScrollMouseWheelTool, StackScrollTool, TrackballRotateTool, UltrasoundDirectionalTool, VolumeRotateMouseWheelTool, WindowLevelRegionTool, WindowLevelTool, ZoomTool
6775
+ // UNUSED EXPORTS: AngleTool, AnnotationDisplayTool, ArrowAnnotateTool, BaseTool, BidirectionalTool, BrushTool, CircleROIStartEndThresholdTool, CircleROITool, CircleScissorsTool, CobbAngleTool, CrosshairsTool, DragProbeTool, EllipticalROITool, EraserTool, HeightTool, KeyImageTool, LengthTool, LivewireContourSegmentationTool, LivewireContourTool, MIPJumpToClickTool, MagnifyTool, OrientationMarkerTool, OverlayGridTool, PaintFillTool, PanTool, PlanarRotateTool, ProbeTool, RectangleROIStartEndThresholdTool, RectangleROIThresholdTool, RectangleROITool, RectangleScissorsTool, ReferenceCursors, ReferenceLines, ReferenceLinesTool, ScaleOverlayTool, SculptorTool, SegmentSelectTool, SegmentationIntersectionTool, SphereScissorsTool, SplineContourSegmentationTool, SplineROITool, StackScrollMouseWheelTool, StackScrollTool, TrackballRotateTool, UltrasoundDirectionalTool, VolumeRotateMouseWheelTool, WindowLevelRegionTool, WindowLevelTool, ZoomTool
5759
6776
 
5760
6777
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/base/index.js
5761
6778
  var base = __webpack_require__(93382);
@@ -5801,6 +6818,8 @@ var SculptorTool = __webpack_require__(86684);
5801
6818
  var BidirectionalTool = __webpack_require__(56611);
5802
6819
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/annotation/LengthTool.js
5803
6820
  var LengthTool = __webpack_require__(3098);
6821
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/annotation/HeightTool.js
6822
+ var HeightTool = __webpack_require__(76131);
5804
6823
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/annotation/ProbeTool.js
5805
6824
  var ProbeTool = __webpack_require__(86479);
5806
6825
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/annotation/DragProbeTool.js
@@ -5843,14 +6862,14 @@ var RectangleScissorsTool = __webpack_require__(13354);
5843
6862
  var CircleScissorsTool = __webpack_require__(30809);
5844
6863
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/segmentation/SphereScissorsTool.js
5845
6864
  var SphereScissorsTool = __webpack_require__(30862);
5846
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
5847
- var esm = __webpack_require__(62709);
6865
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
6866
+ var esm = __webpack_require__(12651);
5848
6867
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/stateManagement/index.js
5849
6868
  var stateManagement = __webpack_require__(50097);
5850
6869
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/stateManagement/annotation/annotationLocking.js
5851
6870
  var annotationLocking = __webpack_require__(11163);
5852
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/drawingSvg/index.js + 18 modules
5853
- var drawingSvg = __webpack_require__(86785);
6871
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/drawingSvg/index.js + 19 modules
6872
+ var drawingSvg = __webpack_require__(25876);
5854
6873
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/viewportFilters/index.js + 4 modules
5855
6874
  var viewportFilters = __webpack_require__(46966);
5856
6875
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/cursors/elementCursor.js
@@ -6008,12 +7027,26 @@ class RectangleROIThresholdTool extends RectangleROITool/* default */.Z {
6008
7027
  RectangleROIThresholdTool.toolName = 'RectangleROIThreshold';
6009
7028
  /* harmony default export */ const segmentation_RectangleROIThresholdTool = ((/* unused pure expression or super */ null && (RectangleROIThresholdTool)));
6010
7029
 
7030
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/getCalibratedUnits.js
7031
+ var getCalibratedUnits = __webpack_require__(39661);
6011
7032
  // EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 1 modules
6012
7033
  var gl_matrix_esm = __webpack_require__(72076);
6013
7034
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/throttle.js
6014
7035
  var throttle = __webpack_require__(90685);
7036
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/drawing/index.js + 1 modules
7037
+ var drawing = __webpack_require__(20724);
7038
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/planar/getWorldWidthAndHeightFromCorners.js
7039
+ var getWorldWidthAndHeightFromCorners = __webpack_require__(88582);
6015
7040
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/index.js + 1 modules
6016
7041
  var utilities = __webpack_require__(42975);
7042
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/getModalityUnit.js
7043
+ var getModalityUnit = __webpack_require__(15607);
7044
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/viewport/isViewportPreScaled.js
7045
+ var isViewportPreScaled = __webpack_require__(20752);
7046
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/math/basic/index.js + 2 modules
7047
+ var basic = __webpack_require__(51053);
7048
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/planar/index.js
7049
+ var planar = __webpack_require__(44037);
6017
7050
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js
6018
7051
 
6019
7052
 
@@ -6028,6 +7061,13 @@ var utilities = __webpack_require__(42975);
6028
7061
 
6029
7062
 
6030
7063
 
7064
+
7065
+
7066
+
7067
+
7068
+
7069
+
7070
+
6031
7071
 
6032
7072
  const { transformWorldToIndex } = esm.utilities;
6033
7073
  class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z {
@@ -6035,6 +7075,9 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
6035
7075
  configuration: {
6036
7076
  numSlicesToPropagate: 10,
6037
7077
  computePointsInsideVolume: false,
7078
+ getTextLines: defaultGetTextLines,
7079
+ statsCalculator: basic.BasicStatsCalculator,
7080
+ showTextBox: false,
6038
7081
  },
6039
7082
  }) {
6040
7083
  super(toolProps, defaultToolProps);
@@ -6057,12 +7100,9 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
6057
7100
  imageVolume = esm.cache.getVolume(volumeId);
6058
7101
  referencedImageId = esm.utilities.getClosestImageId(imageVolume, worldPos, viewPlaneNormal);
6059
7102
  }
6060
- if (!referencedImageId) {
6061
- throw new Error('This tool does not work on non-acquisition planes');
6062
- }
6063
- const startIndex = viewport.getCurrentImageIdIndex();
6064
7103
  const spacingInNormal = esm.utilities.getSpacingInNormalDirection(imageVolume, viewPlaneNormal);
6065
- const endIndex = this._getEndSliceIndex(imageVolume, worldPos, spacingInNormal, viewPlaneNormal);
7104
+ const startCoord = this._getStartCoordinate(worldPos, viewPlaneNormal);
7105
+ const endCoord = this._getEndCoordinate(worldPos, spacingInNormal, viewPlaneNormal);
6066
7106
  const FrameOfReferenceUID = viewport.getFrameOfReferenceUID();
6067
7107
  const annotation = {
6068
7108
  highlighted: true,
@@ -6079,18 +7119,24 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
6079
7119
  },
6080
7120
  data: {
6081
7121
  label: '',
6082
- startSlice: startIndex,
6083
- endSlice: endIndex,
7122
+ startCoordinate: startCoord,
7123
+ endCoordinate: endCoord,
6084
7124
  cachedStats: {
6085
7125
  pointsInVolume: [],
6086
7126
  projectionPoints: [],
6087
7127
  projectionPointsImageIds: [referencedImageId],
7128
+ statistics: [],
6088
7129
  },
6089
7130
  handles: {
6090
7131
  textBox: {
6091
7132
  hasMoved: false,
6092
- worldPosition: null,
6093
- worldBoundingBox: null,
7133
+ worldPosition: [0, 0, 0],
7134
+ worldBoundingBox: {
7135
+ topLeft: [0, 0, 0],
7136
+ topRight: [0, 0, 0],
7137
+ bottomLeft: [0, 0, 0],
7138
+ bottomRight: [0, 0, 0],
7139
+ },
6094
7140
  },
6095
7141
  points: [
6096
7142
  [...worldPos],
@@ -6141,7 +7187,7 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
6141
7187
  const targetId = this.getTargetId(enabledElement.viewport);
6142
7188
  const imageVolume = esm.cache.getVolume(targetId.split(/volumeId:|\?/)[1]);
6143
7189
  if (this.configuration.calculatePointsInsideVolume) {
6144
- this._computePointsInsideVolume(annotation, imageVolume, enabledElement);
7190
+ this._computePointsInsideVolume(annotation, targetId, imageVolume, enabledElement);
6145
7191
  }
6146
7192
  (0,triggerAnnotationRenderForViewportIds/* default */.Z)(enabledElement.renderingEngine, viewportIdsToRender);
6147
7193
  if (newAnnotation) {
@@ -6151,11 +7197,11 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
6151
7197
  this.renderAnnotation = (enabledElement, svgDrawingHelper) => {
6152
7198
  let renderStatus = false;
6153
7199
  const { viewport } = enabledElement;
6154
- const annotations = (0,stateManagement/* getAnnotations */.fy)(this.getToolName(), viewport.element);
7200
+ let annotations = (0,stateManagement/* getAnnotations */.fy)(this.getToolName(), viewport.element);
6155
7201
  if (!annotations?.length) {
6156
7202
  return renderStatus;
6157
7203
  }
6158
- const sliceIndex = viewport.getCurrentImageIdIndex();
7204
+ annotations = (0,planar.filterAnnotationsWithinSamePlane)(annotations, viewport.getCamera());
6159
7205
  const styleSpecifier = {
6160
7206
  toolGroupId: this.toolGroupId,
6161
7207
  toolName: this.getToolName(),
@@ -6164,22 +7210,37 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
6164
7210
  for (let i = 0; i < annotations.length; i++) {
6165
7211
  const annotation = annotations[i];
6166
7212
  const { annotationUID, data } = annotation;
6167
- const { startSlice, endSlice } = data;
7213
+ const { startCoordinate, endCoordinate } = data;
6168
7214
  const { points, activeHandleIndex } = data.handles;
6169
7215
  const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p));
6170
7216
  styleSpecifier.annotationUID = annotationUID;
6171
7217
  const lineWidth = this.getStyle('lineWidth', styleSpecifier, annotation);
6172
7218
  const lineDash = this.getStyle('lineDash', styleSpecifier, annotation);
6173
7219
  const color = this.getStyle('color', styleSpecifier, annotation);
6174
- if (sliceIndex < Math.min(startSlice, endSlice) ||
6175
- sliceIndex > Math.max(startSlice, endSlice)) {
7220
+ const focalPoint = viewport.getCamera().focalPoint;
7221
+ const viewplaneNormal = viewport.getCamera().viewPlaneNormal;
7222
+ let startCoord = startCoordinate;
7223
+ let endCoord = endCoordinate;
7224
+ if (Array.isArray(startCoordinate)) {
7225
+ startCoord = this._getCoordinateForViewplaneNormal(startCoord, viewplaneNormal);
7226
+ }
7227
+ if (Array.isArray(endCoordinate)) {
7228
+ endCoord = this._getCoordinateForViewplaneNormal(endCoord, viewplaneNormal);
7229
+ }
7230
+ const roundedStartCoord = esm.utilities.roundToPrecision(startCoord);
7231
+ const roundedEndCoord = esm.utilities.roundToPrecision(endCoord);
7232
+ const coord = this._getCoordinateForViewplaneNormal(focalPoint, viewplaneNormal);
7233
+ const roundedCoord = esm.utilities.roundToPrecision(coord);
7234
+ if (roundedCoord < Math.min(roundedStartCoord, roundedEndCoord) ||
7235
+ roundedCoord > Math.max(roundedStartCoord, roundedEndCoord)) {
6176
7236
  continue;
6177
7237
  }
6178
7238
  if (annotation.invalidated) {
6179
7239
  this._throttledCalculateCachedStats(annotation, enabledElement);
6180
7240
  }
6181
7241
  let firstOrLastSlice = false;
6182
- if (sliceIndex === startSlice || sliceIndex === endSlice) {
7242
+ if (roundedCoord === roundedStartCoord ||
7243
+ roundedCoord === roundedEndCoord) {
6183
7244
  firstOrLastSlice = true;
6184
7245
  }
6185
7246
  if (!viewport.getRenderingEngine()) {
@@ -6213,6 +7274,42 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
6213
7274
  lineWidth,
6214
7275
  });
6215
7276
  renderStatus = true;
7277
+ if (this.configuration.showTextBox &&
7278
+ this.configuration.calculatePointsInsideVolume) {
7279
+ const options = this.getLinkedTextBoxStyle(styleSpecifier, annotation);
7280
+ if (!options.visibility) {
7281
+ data.handles.textBox = {
7282
+ hasMoved: false,
7283
+ worldPosition: [0, 0, 0],
7284
+ worldBoundingBox: {
7285
+ topLeft: [0, 0, 0],
7286
+ topRight: [0, 0, 0],
7287
+ bottomLeft: [0, 0, 0],
7288
+ bottomRight: [0, 0, 0],
7289
+ },
7290
+ };
7291
+ continue;
7292
+ }
7293
+ const textLines = this.configuration.getTextLines(data);
7294
+ if (!textLines || textLines.length === 0) {
7295
+ continue;
7296
+ }
7297
+ if (!data.handles.textBox.hasMoved) {
7298
+ const canvasTextBoxCoords = (0,drawing.getTextBoxCoordsCanvas)(canvasCoordinates);
7299
+ data.handles.textBox.worldPosition =
7300
+ viewport.canvasToWorld(canvasTextBoxCoords);
7301
+ }
7302
+ const textBoxPosition = viewport.worldToCanvas(data.handles.textBox.worldPosition);
7303
+ const textBoxUID = '1';
7304
+ const boundingBox = (0,drawingSvg.drawLinkedTextBox)(svgDrawingHelper, annotationUID, textBoxUID, textLines, textBoxPosition, canvasCoordinates, {}, options);
7305
+ const { x: left, y: top, width, height } = boundingBox;
7306
+ data.handles.textBox.worldBoundingBox = {
7307
+ topLeft: viewport.canvasToWorld([left, top]),
7308
+ topRight: viewport.canvasToWorld([left + width, top]),
7309
+ bottomLeft: viewport.canvasToWorld([left, top + height]),
7310
+ bottomRight: viewport.canvasToWorld([left + width, top + height]),
7311
+ };
7312
+ }
6216
7313
  }
6217
7314
  return renderStatus;
6218
7315
  };
@@ -6222,17 +7319,26 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
6222
7319
  const { data, metadata } = annotation;
6223
7320
  const { viewPlaneNormal, spacingInNormal } = metadata;
6224
7321
  const { imageData } = imageVolume;
6225
- const { startSlice, endSlice } = data;
7322
+ const { startCoordinate, endCoordinate } = data;
6226
7323
  const { points } = data.handles;
6227
7324
  const startIJK = transformWorldToIndex(imageData, points[0]);
6228
- if (startIJK[2] !== startSlice) {
6229
- throw new Error('Start slice does not match');
6230
- }
6231
- const endIJK = gl_matrix_esm/* vec3.fromValues */.R3.fromValues(startIJK[0], startIJK[1], endSlice);
7325
+ const endIJK = transformWorldToIndex(imageData, points[0]);
6232
7326
  const startWorld = gl_matrix_esm/* vec3.create */.R3.create();
6233
7327
  imageData.indexToWorldVec3(startIJK, startWorld);
6234
7328
  const endWorld = gl_matrix_esm/* vec3.create */.R3.create();
6235
7329
  imageData.indexToWorldVec3(endIJK, endWorld);
7330
+ if (this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal) == 2) {
7331
+ startWorld[2] = startCoordinate;
7332
+ endWorld[2] = endCoordinate;
7333
+ }
7334
+ else if (this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal) == 0) {
7335
+ startWorld[0] = startCoordinate;
7336
+ endWorld[0] = endCoordinate;
7337
+ }
7338
+ else if (this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal) == 1) {
7339
+ startWorld[1] = startCoordinate;
7340
+ endWorld[1] = endCoordinate;
7341
+ }
6236
7342
  const distance = gl_matrix_esm/* vec3.distance */.R3.distance(startWorld, endWorld);
6237
7343
  const newProjectionPoints = [];
6238
7344
  for (let dist = 0; dist < distance; dist += spacingInNormal) {
@@ -6243,34 +7349,45 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
6243
7349
  }));
6244
7350
  }
6245
7351
  data.cachedStats.projectionPoints = newProjectionPoints;
6246
- const projectionPointsImageIds = [];
6247
- for (const RectanglePoints of newProjectionPoints) {
6248
- const imageId = esm.utilities.getClosestImageId(imageVolume, RectanglePoints[0], viewPlaneNormal);
6249
- projectionPointsImageIds.push(imageId);
6250
- }
6251
- data.cachedStats.projectionPointsImageIds = projectionPointsImageIds;
6252
7352
  }
6253
- _computePointsInsideVolume(annotation, imageVolume, enabledElement) {
6254
- const { data } = annotation;
7353
+ _computePointsInsideVolume(annotation, targetId, imageVolume, enabledElement) {
7354
+ const { data, metadata } = annotation;
7355
+ const { viewPlaneNormal, viewUp } = metadata;
7356
+ const { viewport, renderingEngine } = enabledElement;
6255
7357
  const projectionPoints = data.cachedStats.projectionPoints;
6256
7358
  const pointsInsideVolume = [[]];
7359
+ const image = this.getTargetIdImage(targetId, renderingEngine);
7360
+ const worldPos1 = data.handles.points[0];
7361
+ const worldPos2 = data.handles.points[3];
7362
+ const { worldWidth, worldHeight } = (0,getWorldWidthAndHeightFromCorners/* default */.Z)(viewPlaneNormal, viewUp, worldPos1, worldPos2);
7363
+ const measureInfo = (0,getCalibratedUnits/* getCalibratedLengthUnitsAndScale */.mh)(image, data.habdles);
7364
+ const area = Math.abs(worldWidth * worldHeight) /
7365
+ (measureInfo.scale * measureInfo.scale);
7366
+ const modalityUnitOptions = {
7367
+ isPreScaled: (0,isViewportPreScaled/* isViewportPreScaled */.P)(viewport, targetId),
7368
+ isSuvScaled: this.isSuvScaled(viewport, targetId, annotation.metadata.referencedImageId),
7369
+ };
7370
+ const modalityUnit = (0,getModalityUnit/* getModalityUnit */.F)(metadata.Modality, annotation.metadata.referencedImageId, modalityUnitOptions);
6257
7371
  for (let i = 0; i < projectionPoints.length; i++) {
6258
7372
  if (!imageVolume) {
6259
7373
  continue;
6260
7374
  }
6261
7375
  const projectionPoint = projectionPoints[i][0];
6262
- const worldPos1 = data.handles.points[0];
6263
- const worldPos2 = data.handles.points[3];
6264
7376
  const { dimensions, imageData } = imageVolume;
6265
7377
  const worldPos1Index = transformWorldToIndex(imageData, worldPos1);
6266
7378
  const worldProjectionPointIndex = transformWorldToIndex(imageData, projectionPoint);
7379
+ const indexOfProjection = this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal);
6267
7380
  worldPos1Index[0] = Math.floor(worldPos1Index[0]);
6268
7381
  worldPos1Index[1] = Math.floor(worldPos1Index[1]);
6269
- worldPos1Index[2] = Math.floor(worldProjectionPointIndex[2]);
7382
+ worldPos1Index[2] = Math.floor(worldPos1Index[2]);
7383
+ worldPos1Index[indexOfProjection] =
7384
+ worldProjectionPointIndex[indexOfProjection];
6270
7385
  const worldPos2Index = transformWorldToIndex(imageData, worldPos2);
6271
7386
  worldPos2Index[0] = Math.floor(worldPos2Index[0]);
6272
7387
  worldPos2Index[1] = Math.floor(worldPos2Index[1]);
6273
- worldPos2Index[2] = Math.floor(worldProjectionPointIndex[2]);
7388
+ worldPos2Index[2] = Math.floor(worldPos2Index[2]);
7389
+ worldPos2Index[indexOfProjection] =
7390
+ worldProjectionPointIndex[indexOfProjection];
6274
7391
  if (this._isInsideVolume(worldPos1Index, worldPos2Index, dimensions)) {
6275
7392
  this.isHandleOutsideImage = false;
6276
7393
  const iMin = Math.min(worldPos1Index[0], worldPos2Index[0]);
@@ -6284,11 +7401,22 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
6284
7401
  [jMin, jMax],
6285
7402
  [kMin, kMax],
6286
7403
  ];
6287
- const pointsInShape = (0,utilities.pointInShapeCallback)(imageData, () => true, null, boundsIJK);
7404
+ const pointsInShape = (0,utilities.pointInShapeCallback)(imageData, () => true, this.configuration.statsCalculator.statsCallback, boundsIJK);
6288
7405
  pointsInsideVolume.push(pointsInShape);
6289
7406
  }
6290
7407
  }
7408
+ const stats = this.configuration.statsCalculator.getStatistics();
6291
7409
  data.cachedStats.pointsInVolume = pointsInsideVolume;
7410
+ data.cachedStats.statistics = {
7411
+ Modality: metadata.Modality,
7412
+ area,
7413
+ mean: stats.mean?.value,
7414
+ stdDev: stats.stdDev?.value,
7415
+ max: stats.max?.value,
7416
+ statsArray: stats.array,
7417
+ areaUnit: measureInfo.areaUnits,
7418
+ modalityUnit,
7419
+ };
6292
7420
  }
6293
7421
  _calculateCachedStatsTool(annotation, enabledElement) {
6294
7422
  const data = annotation.data;
@@ -6301,25 +7429,44 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool/* default */.Z
6301
7429
  (0,state/* triggerAnnotationModified */.hg)(annotation, viewport.element);
6302
7430
  return cachedStats;
6303
7431
  }
6304
- _getEndSliceIndex(imageVolume, worldPos, spacingInNormal, viewPlaneNormal) {
7432
+ _getStartCoordinate(worldPos, viewPlaneNormal) {
7433
+ const startPos = worldPos;
7434
+ const startCoord = this._getCoordinateForViewplaneNormal(startPos, viewPlaneNormal);
7435
+ return startCoord;
7436
+ }
7437
+ _getEndCoordinate(worldPos, spacingInNormal, viewPlaneNormal) {
6305
7438
  const numSlicesToPropagate = this.configuration.numSlicesToPropagate;
6306
7439
  const endPos = gl_matrix_esm/* vec3.create */.R3.create();
6307
7440
  gl_matrix_esm/* vec3.scaleAndAdd */.R3.scaleAndAdd(endPos, worldPos, viewPlaneNormal, numSlicesToPropagate * spacingInNormal);
6308
- const halfSpacingInNormalDirection = spacingInNormal / 2;
6309
- const { imageIds } = imageVolume;
6310
- let imageIdIndex;
6311
- for (let i = 0; i < imageIds.length; i++) {
6312
- const imageId = imageIds[i];
6313
- const { imagePositionPatient } = esm.metaData.get('imagePlaneModule', imageId);
6314
- const dir = gl_matrix_esm/* vec3.create */.R3.create();
6315
- gl_matrix_esm/* vec3.sub */.R3.sub(dir, endPos, imagePositionPatient);
6316
- const dot = gl_matrix_esm/* vec3.dot */.R3.dot(dir, viewPlaneNormal);
6317
- if (Math.abs(dot) < halfSpacingInNormalDirection) {
6318
- imageIdIndex = i;
6319
- }
6320
- }
6321
- return imageIdIndex;
7441
+ const endCoord = this._getCoordinateForViewplaneNormal(endPos, viewPlaneNormal);
7442
+ return endCoord;
7443
+ }
7444
+ _getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal) {
7445
+ const viewplaneNormalAbs = [
7446
+ Math.abs(viewPlaneNormal[0]),
7447
+ Math.abs(viewPlaneNormal[1]),
7448
+ Math.abs(viewPlaneNormal[2]),
7449
+ ];
7450
+ const indexOfDirection = viewplaneNormalAbs.indexOf(Math.max(...viewplaneNormalAbs));
7451
+ return indexOfDirection;
7452
+ }
7453
+ _getCoordinateForViewplaneNormal(pos, viewPlaneNormal) {
7454
+ const indexOfDirection = this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal);
7455
+ return pos[indexOfDirection];
7456
+ }
7457
+ }
7458
+ function defaultGetTextLines(data) {
7459
+ const cachedVolumeStats = data.cachedStats.statistics;
7460
+ const { area, mean, max, stdDev, areaUnit, modalityUnit } = cachedVolumeStats;
7461
+ if (mean === undefined) {
7462
+ return;
6322
7463
  }
7464
+ const textLines = [];
7465
+ textLines.push(`Area: ${(0,utilities.roundNumber)(area)} ${areaUnit}`);
7466
+ textLines.push(`Mean: ${(0,utilities.roundNumber)(mean)} ${modalityUnit}`);
7467
+ textLines.push(`Max: ${(0,utilities.roundNumber)(max)} ${modalityUnit}`);
7468
+ textLines.push(`Std Dev: ${(0,utilities.roundNumber)(stdDev)} ${modalityUnit}`);
7469
+ return textLines;
6323
7470
  }
6324
7471
  RectangleROIStartEndThresholdTool.toolName = 'RectangleROIStartEndThreshold';
6325
7472
  /* harmony default export */ const segmentation_RectangleROIStartEndThresholdTool = ((/* unused pure expression or super */ null && (RectangleROIStartEndThresholdTool)));
@@ -6387,6 +7534,7 @@ var SegmentSelectTool = __webpack_require__(45986);
6387
7534
 
6388
7535
 
6389
7536
 
7537
+
6390
7538
 
6391
7539
 
6392
7540
  /***/ }),
@@ -6395,7 +7543,7 @@ var SegmentSelectTool = __webpack_require__(45986);
6395
7543
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6396
7544
 
6397
7545
  /* unused harmony export default */
6398
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
7546
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
6399
7547
  /* harmony import */ var _enums_Events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(34539);
6400
7548
 
6401
7549
 
@@ -6450,7 +7598,7 @@ class AnnotationFrameRange {
6450
7598
  /* harmony export */ B: () => (/* binding */ getClosestImageIdForStackViewport)
6451
7599
  /* harmony export */ });
6452
7600
  /* unused harmony export annotationHydration */
6453
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
7601
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
6454
7602
  /* harmony import */ var _stateManagement__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(50097);
6455
7603
  /* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(72076);
6456
7604
 
@@ -6563,7 +7711,7 @@ function extend2DBoundingBoxInViewAxis(boundsIJK, numSlicesToProject) {
6563
7711
  /* harmony export */ g: () => (/* binding */ getBoundingBoxAroundShapeIJK),
6564
7712
  /* harmony export */ o: () => (/* binding */ getBoundingBoxAroundShapeWorld)
6565
7713
  /* harmony export */ });
6566
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
7714
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
6567
7715
 
6568
7716
  const { EPSILON } = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.CONSTANTS;
6569
7717
  function calculateBoundingBox(points, dimensions, isWorld = false) {
@@ -6643,7 +7791,7 @@ function getBoundingBoxAroundShapeWorld(points, clipBounds) {
6643
7791
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6644
7792
 
6645
7793
  /* unused harmony export default */
6646
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
7794
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
6647
7795
 
6648
7796
  const { calibratedPixelSpacingMetadataProvider } = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.utilities;
6649
7797
  function calibrateImageSpacing(imageId, renderingEngine, calibrationOrScale) {
@@ -6674,8 +7822,8 @@ function calibrateImageSpacing(imageId, renderingEngine, calibrationOrScale) {
6674
7822
 
6675
7823
  // EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 1 modules
6676
7824
  var esm = __webpack_require__(72076);
6677
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
6678
- var dist_esm = __webpack_require__(62709);
7825
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
7826
+ var dist_esm = __webpack_require__(12651);
6679
7827
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/cine/events.js
6680
7828
  var Events;
6681
7829
  (function (Events) {
@@ -6793,13 +7941,24 @@ function playClip(element, playClipOptions) {
6793
7941
  }
6794
7942
  const delta = newStepIndex - currentStepIndex;
6795
7943
  if (delta) {
6796
- playClipContext.scroll(delta);
7944
+ try {
7945
+ playClipContext.scroll(delta);
7946
+ }
7947
+ catch (e) {
7948
+ console.warn('Play clip not scrolling', e);
7949
+ _stopClipWithData(playClipData);
7950
+ triggerEvent(element, CINE_EVENTS.CLIP_STOPPED, eventDetail);
7951
+ return;
7952
+ }
6797
7953
  }
6798
7954
  };
6799
7955
  if (isDynamicCinePlaying) {
6800
7956
  dynamicVolumesPlayingMap.set(volume.volumeId, element);
6801
7957
  }
6802
- if (playClipTimeouts &&
7958
+ if (playClipContext.play) {
7959
+ playClipData.framesPerSecond = playClipContext.play(playClipOptions.framesPerSecond);
7960
+ }
7961
+ else if (playClipTimeouts &&
6803
7962
  playClipTimeouts.length > 0 &&
6804
7963
  playClipIsTimeVarying) {
6805
7964
  playClipData.usingFrameTimeVector = true;
@@ -6827,6 +7986,7 @@ function _stopClip(element, options = { stopDynamicCine: true, viewportId: undef
6827
7986
  const { stopDynamicCine, viewportId } = options;
6828
7987
  const enabledElement = getEnabledElement(element);
6829
7988
  let toolState;
7989
+ const viewport = enabledElement?.viewport;
6830
7990
  if (!enabledElement) {
6831
7991
  if (viewportId) {
6832
7992
  toolState = getToolStateByViewportId(viewportId);
@@ -6842,8 +8002,10 @@ function _stopClip(element, options = { stopDynamicCine: true, viewportId: undef
6842
8002
  if (toolState) {
6843
8003
  _stopClipWithData(toolState);
6844
8004
  }
6845
- if (stopDynamicCine &&
6846
- enabledElement?.viewport instanceof BaseVolumeViewport) {
8005
+ if (viewport instanceof VideoViewport) {
8006
+ viewport.pause();
8007
+ }
8008
+ else if (stopDynamicCine && viewport instanceof BaseVolumeViewport) {
6847
8009
  _stopDynamicVolumeCine(element);
6848
8010
  }
6849
8011
  }
@@ -6938,6 +8100,36 @@ function _createStackViewportCinePlayContext(viewport, waitForRendered) {
6938
8100
  },
6939
8101
  };
6940
8102
  }
8103
+ function _createVideoViewportCinePlayContext(viewport, waitForRendered) {
8104
+ return {
8105
+ get numScrollSteps() {
8106
+ return viewport.getNumberOfSlices();
8107
+ },
8108
+ get currentStepIndex() {
8109
+ return viewport.getSliceIndex();
8110
+ },
8111
+ get frameTimeVectorEnabled() {
8112
+ return true;
8113
+ },
8114
+ waitForRenderedCount: 0,
8115
+ scroll(delta) {
8116
+ if (this.waitForRenderedCount <= waitForRendered &&
8117
+ viewport.viewportStatus !== ViewportStatus.RENDERED) {
8118
+ this.waitForRenderedCount++;
8119
+ return;
8120
+ }
8121
+ this.waitForRenderedCount = 0;
8122
+ scroll(viewport, { delta, debounceLoading: debounced });
8123
+ },
8124
+ play(fps) {
8125
+ if (fps) {
8126
+ viewport.setPlaybackRate(fps / 24);
8127
+ }
8128
+ viewport.play();
8129
+ return viewport.getFrameRate();
8130
+ },
8131
+ };
8132
+ }
6941
8133
  function _createVolumeViewportCinePlayContext(viewport, volume) {
6942
8134
  const { volumeId } = volume;
6943
8135
  const cachedScrollInfo = {
@@ -7003,6 +8195,9 @@ function _createCinePlayContext(viewport, playClipOptions) {
7003
8195
  }
7004
8196
  return _createVolumeViewportCinePlayContext(viewport, volume);
7005
8197
  }
8198
+ if (viewport instanceof VideoViewport) {
8199
+ return _createVideoViewportCinePlayContext(viewport, playClipOptions.waitForRendered ?? 30);
8200
+ }
7006
8201
  throw new Error('Unknown viewport type');
7007
8202
  }
7008
8203
 
@@ -7171,7 +8366,7 @@ function calculatePerimeter(polyline, closed) {
7171
8366
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
7172
8367
  /* harmony export */ Z: () => (/* binding */ findHandlePolylineIndex)
7173
8368
  /* harmony export */ });
7174
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
8369
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
7175
8370
  /* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(72076);
7176
8371
 
7177
8372
 
@@ -7425,8 +8620,8 @@ function processContourHoles(contours, points, useXOR = true) {
7425
8620
  }
7426
8621
  /* harmony default export */ const detectContourHoles = ({ processContourHoles });
7427
8622
 
7428
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
7429
- var dist_esm = __webpack_require__(62709);
8623
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
8624
+ var dist_esm = __webpack_require__(12651);
7430
8625
  // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Filters/General/ImageMarchingSquares.js
7431
8626
  var ImageMarchingSquares = __webpack_require__(60318);
7432
8627
  // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Common/Core/DataArray.js
@@ -7667,7 +8862,7 @@ var calculatePerimeter = __webpack_require__(3042);
7667
8862
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
7668
8863
  /* harmony export */ Z: () => (/* binding */ updateContourPolyline)
7669
8864
  /* harmony export */ });
7670
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
8865
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
7671
8866
  /* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(79390);
7672
8867
  /* harmony import */ var _stateManagement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(50097);
7673
8868
 
@@ -7894,8 +9089,8 @@ function _determineCorners(canvasPoints) {
7894
9089
 
7895
9090
  // UNUSED EXPORTS: generateImageFromTimeData, getDataInTime
7896
9091
 
7897
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
7898
- var esm = __webpack_require__(62709);
9092
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
9093
+ var esm = __webpack_require__(12651);
7899
9094
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/segmentation/utilities.js
7900
9095
  var segmentation_utilities = __webpack_require__(89776);
7901
9096
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/pointInShapeCallback.js
@@ -8068,7 +9263,7 @@ function generateImageFromTimeData(dynamicVolume, operation, frameNumbers) {
8068
9263
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8069
9264
 
8070
9265
  /* unused harmony exports getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement */
8071
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
9266
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
8072
9267
  /* harmony import */ var _stateManagement_annotation_annotationState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(86614);
8073
9268
  /* harmony import */ var _store_ToolGroupManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(27078);
8074
9269
 
@@ -8129,7 +9324,7 @@ function findAnnotationNearPointByTool(tool, enabledElement, point, proximity) {
8129
9324
  /* harmony export */ Sh: () => (/* binding */ getCalibratedProbeUnitsAndValue),
8130
9325
  /* harmony export */ mh: () => (/* binding */ getCalibratedLengthUnitsAndScale)
8131
9326
  /* harmony export */ });
8132
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
9327
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
8133
9328
 
8134
9329
  const { CalibrationTypes } = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.Enums;
8135
9330
  const PIXEL_UNITS = 'px';
@@ -8143,8 +9338,17 @@ const SUPPORTED_PROBE_VARIANT = [
8143
9338
  '4,3',
8144
9339
  ];
8145
9340
  const UNIT_MAPPING = {
9341
+ 0: 'px',
9342
+ 1: 'percent',
9343
+ 2: 'dB',
8146
9344
  3: 'cm',
8147
9345
  4: 'seconds',
9346
+ 5: 'hertz',
9347
+ 6: 'dB/seconds',
9348
+ 7: 'cm/sec',
9349
+ 8: 'cm\xb2',
9350
+ 9: 'cm\xb2/s',
9351
+ 0xc: 'degrees',
8148
9352
  };
8149
9353
  const EPS = 1e-3;
8150
9354
  const SQUARE = '\xb2';
@@ -8192,10 +9396,10 @@ const getCalibratedLengthUnitsAndScale = (image, handles) => {
8192
9396
  const physicalDeltaY = Math.abs(region.physicalDeltaY);
8193
9397
  const isSamePhysicalDelta = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.utilities.isEqual(physicalDeltaX, physicalDeltaY, EPS);
8194
9398
  if (isSamePhysicalDelta) {
8195
- scale = 1 / (physicalDeltaX * 10);
9399
+ scale = 1 / physicalDeltaX;
8196
9400
  calibrationType = 'US Region';
8197
- units = 'mm';
8198
- areaUnits = 'mm' + SQUARE;
9401
+ units = UNIT_MAPPING[region.physicalUnitsXDirection] || 'unknown';
9402
+ areaUnits = units + SQUARE;
8199
9403
  }
8200
9404
  else {
8201
9405
  return { units: PIXEL_UNITS, areaUnits: PIXEL_UNITS + SQUARE, scale };
@@ -8273,7 +9477,7 @@ const getCalibratedAspect = (image) => image.calibration?.aspect || 1;
8273
9477
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
8274
9478
  /* harmony export */ v: () => (/* binding */ getSphereBoundsInfo)
8275
9479
  /* harmony export */ });
8276
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
9480
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
8277
9481
  /* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(72076);
8278
9482
  /* harmony import */ var _boundingBox__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(87758);
8279
9483
 
@@ -8359,8 +9563,8 @@ __webpack_require__.d(__webpack_exports__, {
8359
9563
 
8360
9564
  // UNUSED EXPORTS: annotationFrameRange, annotationHydration, boundingBox, calibrateImageSpacing, cine, contourSegmentation, contours, drawing, dynamicVolume, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, getCalibratedAspect, getCalibratedProbeUnitsAndValue, getClosestImageIdForStackViewport, getSphereBoundsInfo, getViewportForAnnotation, isObject, jumpToSlice, orientation, planar, planarFreehandROITool, pointInSurroundingSphereCallback, rectangleROITool, segmentation, stackContextPrefetch, stackPrefetch, touch, triggerAnnotationRender, triggerEvent, viewport, viewportFilters, voi
8361
9565
 
8362
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
8363
- var esm = __webpack_require__(62709);
9566
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
9567
+ var esm = __webpack_require__(12651);
8364
9568
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/getAnnotationNearPoint.js
8365
9569
  var getAnnotationNearPoint = __webpack_require__(62358);
8366
9570
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/debounce.js
@@ -8571,8 +9775,8 @@ __webpack_require__.d(__webpack_exports__, {
8571
9775
 
8572
9776
  // UNUSED EXPORTS: Calculator
8573
9777
 
8574
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
8575
- var esm = __webpack_require__(62709);
9778
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
9779
+ var esm = __webpack_require__(12651);
8576
9780
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/math/basic/Calculator.js
8577
9781
  class Calculator {
8578
9782
  }
@@ -9610,8 +10814,8 @@ function getClosestLineSegmentIntersection(points, p1, q1, closed = true) {
9610
10814
  };
9611
10815
  }
9612
10816
 
9613
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
9614
- var dist_esm = __webpack_require__(62709);
10817
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
10818
+ var dist_esm = __webpack_require__(12651);
9615
10819
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/math/polyline/getSubPixelSpacingAndXYDirections.js
9616
10820
 
9617
10821
 
@@ -10088,6 +11292,7 @@ function invertOrientationStringLPS(orientationString) {
10088
11292
 
10089
11293
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
10090
11294
  /* harmony export */ filterAnnotationsForDisplay: () => (/* reexport safe */ _filterAnnotationsForDisplay__WEBPACK_IMPORTED_MODULE_2__.Z),
11295
+ /* harmony export */ filterAnnotationsWithinSamePlane: () => (/* reexport safe */ _filterAnnotationsWithinPlane__WEBPACK_IMPORTED_MODULE_5__.Q),
10091
11296
  /* harmony export */ getPointInLineOfSightWithCriteria: () => (/* reexport safe */ _getPointInLineOfSightWithCriteria__WEBPACK_IMPORTED_MODULE_3__.Z),
10092
11297
  /* harmony export */ isPlaneIntersectingAABB: () => (/* reexport safe */ _isPlaneIntersectingAABB__WEBPACK_IMPORTED_MODULE_4__.U)
10093
11298
  /* harmony export */ });
@@ -10096,6 +11301,8 @@ function invertOrientationStringLPS(orientationString) {
10096
11301
  /* harmony import */ var _filterAnnotationsForDisplay__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(69943);
10097
11302
  /* harmony import */ var _getPointInLineOfSightWithCriteria__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1023);
10098
11303
  /* harmony import */ var _isPlaneIntersectingAABB__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(61890);
11304
+ /* harmony import */ var _filterAnnotationsWithinPlane__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(50630);
11305
+
10099
11306
 
10100
11307
 
10101
11308
 
@@ -10107,6 +11314,7 @@ function invertOrientationStringLPS(orientationString) {
10107
11314
  filterAnnotationsForDisplay: _filterAnnotationsForDisplay__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z,
10108
11315
  getPointInLineOfSightWithCriteria: _getPointInLineOfSightWithCriteria__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z,
10109
11316
  isPlaneIntersectingAABB: _isPlaneIntersectingAABB__WEBPACK_IMPORTED_MODULE_4__/* .isPlaneIntersectingAABB */ .U,
11317
+ filterAnnotationsWithinSamePlane: _filterAnnotationsWithinPlane__WEBPACK_IMPORTED_MODULE_5__/* .filterAnnotationsWithinSamePlane */ .Q,
10110
11318
  });
10111
11319
 
10112
11320
 
@@ -10227,7 +11435,7 @@ function pointInShapeCallback(imageData, pointInShapeFn, callback, boundsIJK) {
10227
11435
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
10228
11436
 
10229
11437
  /* unused harmony export default */
10230
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
11438
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
10231
11439
  /* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(72076);
10232
11440
  /* harmony import */ var _math_sphere__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(34603);
10233
11441
  /* harmony import */ var _pointInShapeCallback__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(31955);
@@ -10387,7 +11595,7 @@ function getPolyDataPoints(polyData) {
10387
11595
  /***/ 35765:
10388
11596
  /***/ ((__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) => {
10389
11597
 
10390
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
11598
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
10391
11599
  /* harmony import */ var _boundingBox_getBoundingBoxAroundShape__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(64652);
10392
11600
  /* harmony import */ var _boundingBox_extend2DBoundingBoxInViewAxis__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(93341);
10393
11601
 
@@ -10457,7 +11665,7 @@ function getBoundsIJKFromRectangleAnnotations(annotations, referenceVolume, opti
10457
11665
  /* harmony export */ r: () => (/* binding */ isAxisAlignedRectangle)
10458
11666
  /* harmony export */ });
10459
11667
  /* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(72076);
10460
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(62709);
11668
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12651);
10461
11669
 
10462
11670
 
10463
11671
  const { isEqual } = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_1__.utilities;
@@ -10491,7 +11699,7 @@ function calculateAnglesWithAxes(vec, axes) {
10491
11699
  /* harmony export */ Z: () => (/* binding */ scroll)
10492
11700
  /* harmony export */ });
10493
11701
  /* unused harmony export scrollVolume */
10494
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
11702
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
10495
11703
 
10496
11704
  function scroll(viewport, options) {
10497
11705
  const enabledElement = (0,_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.getEnabledElement)(viewport.element);
@@ -10552,7 +11760,7 @@ function scrollVolume(viewport, volumeId, delta, scrollSlabs = false) {
10552
11760
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
10553
11761
  /* harmony export */ Z: () => (/* binding */ InterpolationManager)
10554
11762
  /* harmony export */ });
10555
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
11763
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
10556
11764
  /* harmony import */ var _stateManagement_annotation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(88706);
10557
11765
  /* harmony import */ var _contours_interpolation_getInterpolationDataCollection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(92472);
10558
11766
  /* harmony import */ var _contours_interpolation_interpolate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(28898);
@@ -10747,7 +11955,7 @@ function getSliceData(viewport) {
10747
11955
  /* unused harmony exports setBrushSizeForToolGroup, getBrushSizeForToolGroup */
10748
11956
  /* harmony import */ var _store_ToolGroupManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27078);
10749
11957
  /* harmony import */ var _triggerAnnotationRenderForViewportIds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66878);
10750
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62709);
11958
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12651);
10751
11959
  /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(89776);
10752
11960
 
10753
11961
 
@@ -10799,7 +12007,7 @@ function getBrushSizeForToolGroup(toolGroupId, toolName) {
10799
12007
  /* unused harmony exports setBrushThresholdForToolGroup, getBrushThresholdForToolGroup */
10800
12008
  /* harmony import */ var _store_ToolGroupManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27078);
10801
12009
  /* harmony import */ var _triggerAnnotationRenderForViewportIds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66878);
10802
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62709);
12010
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12651);
10803
12011
  /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(89776);
10804
12012
 
10805
12013
 
@@ -10863,8 +12071,8 @@ var contours = __webpack_require__(11203);
10863
12071
  var SegmentationRepresentations = __webpack_require__(74297);
10864
12072
  // EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 1 modules
10865
12073
  var esm = __webpack_require__(72076);
10866
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
10867
- var dist_esm = __webpack_require__(62709);
12074
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
12075
+ var dist_esm = __webpack_require__(12651);
10868
12076
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/segmentation/isLineInSegment.js
10869
12077
 
10870
12078
 
@@ -11107,7 +12315,7 @@ function createImageIdReferenceMap(imageIdsArray, segmentationImageIds) {
11107
12315
  /* unused harmony export default */
11108
12316
  /* harmony import */ var lodash_clonedeep__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11677);
11109
12317
  /* harmony import */ var lodash_clonedeep__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_clonedeep__WEBPACK_IMPORTED_MODULE_0__);
11110
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(62709);
12318
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12651);
11111
12319
 
11112
12320
 
11113
12321
  async function createLabelmapVolumeForViewport(input) {
@@ -11144,7 +12352,7 @@ async function createLabelmapVolumeForViewport(input) {
11144
12352
  /***/ 71880:
11145
12353
  /***/ ((__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) => {
11146
12354
 
11147
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
12355
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
11148
12356
 
11149
12357
  function createMergedLabelmapForIndex(labelmaps, segmentIndex = 1, volumeId = 'mergedLabelmap') {
11150
12358
  labelmaps.forEach(({ direction, dimensions, origin, spacing }) => {
@@ -11367,7 +12575,7 @@ function getHoveredContourSegmentationAnnotation(segmentationId) {
11367
12575
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
11368
12576
  /* harmony export */ T: () => (/* binding */ getSegmentAtLabelmapBorder)
11369
12577
  /* harmony export */ });
11370
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
12578
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
11371
12579
  /* harmony import */ var _stateManagement_segmentation_segmentationState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14305);
11372
12580
  /* harmony import */ var _tools_segmentation_strategies_utils_stackVolumeCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(88439);
11373
12581
 
@@ -11454,7 +12662,7 @@ function isSegmentOnEdgeCanvas(canvasPoint, segmentIndex, viewport, imageData, s
11454
12662
  /* harmony export */ uA: () => (/* binding */ getSegmentAtWorldPoint)
11455
12663
  /* harmony export */ });
11456
12664
  /* unused harmony exports getSegmentAtWorldForLabelmap, getSegmentAtWorldForContour */
11457
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
12665
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
11458
12666
  /* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(68096);
11459
12667
  /* harmony import */ var _stateManagement_segmentation_segmentationState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14305);
11460
12668
  /* harmony import */ var _tools_segmentation_strategies_utils_stackVolumeCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(88439);
@@ -11606,7 +12814,7 @@ function getSegmentAtWorldForContour(segmentation, worldPoint, { viewport }) {
11606
12814
  /* harmony export */ });
11607
12815
  /* harmony import */ var _store_ToolGroupManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27078);
11608
12816
  /* harmony import */ var _triggerAnnotationRenderForViewportIds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66878);
11609
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62709);
12817
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12651);
11610
12818
  /* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(89776);
11611
12819
 
11612
12820
 
@@ -11703,7 +12911,7 @@ function _validateAnnotations(annotations) {
11703
12911
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
11704
12912
 
11705
12913
  /* unused harmony exports default, defaultGetSegment */
11706
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
12914
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
11707
12915
  /* harmony import */ var _stateManagement_segmentation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(95482);
11708
12916
  /* harmony import */ var _stateManagement_annotation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(88706);
11709
12917
  /* harmony import */ var _viewport__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(85217);
@@ -11958,7 +13166,7 @@ function thresholdVolumeByRange(segmentationVolume, thresholdVolumeInformation,
11958
13166
  /* harmony export */ Xb: () => (/* binding */ getBrushToolInstances)
11959
13167
  /* harmony export */ });
11960
13168
  /* unused harmony exports getVoxelOverlap, processVolumes */
11961
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
13169
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
11962
13170
  /* harmony import */ var _store_ToolGroupManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27078);
11963
13171
  /* harmony import */ var _tools_segmentation_BrushTool__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(95459);
11964
13172
  /* harmony import */ var _boundingBox_getBoundingBoxAroundShape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(64652);
@@ -12041,8 +13249,8 @@ function processVolumes(segmentationVolume, thresholdVolumeInformation) {
12041
13249
 
12042
13250
  // UNUSED EXPORTS: stackContextPrefetch, stackPrefetch
12043
13251
 
12044
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
12045
- var esm = __webpack_require__(62709);
13252
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
13253
+ var esm = __webpack_require__(12651);
12046
13254
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/stackPrefetch/state.js
12047
13255
  var state = __webpack_require__(22446);
12048
13256
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.js
@@ -12225,7 +13433,10 @@ let stackContextPrefetch_resetPrefetchTimeout;
12225
13433
  const stackContextPrefetch_resetPrefetchDelay = 5;
12226
13434
  const stackContextPrefetch_enable = (element) => {
12227
13435
  const stack = (0,stackPrefetchUtils/* getStackData */.gf)(element);
12228
- if (!stack || !stack.imageIds || stack.imageIds.length === 0) {
13436
+ if (!stack) {
13437
+ return;
13438
+ }
13439
+ if (!stack.imageIds?.length) {
12229
13440
  console.warn('CornerstoneTools.stackPrefetch: No images in stack.');
12230
13441
  return;
12231
13442
  }
@@ -12239,6 +13450,9 @@ const stackContextPrefetch_enable = (element) => {
12239
13450
  };
12240
13451
  function stackContextPrefetch_prefetch(element) {
12241
13452
  const stack = (0,stackPrefetchUtils/* getStackData */.gf)(element);
13453
+ if (!stack) {
13454
+ return;
13455
+ }
12242
13456
  if (!stack?.imageIds?.length) {
12243
13457
  console.warn('CornerstoneTools.stackPrefetch: No images in stack.');
12244
13458
  return;
@@ -12347,7 +13561,10 @@ function stackContextPrefetch_onImageUpdated(e) {
12347
13561
  const signum = (x) => (x < 0 ? -1 : 1);
12348
13562
  const updateToolState = (element, usage) => {
12349
13563
  const stack = (0,stackPrefetchUtils/* getStackData */.gf)(element);
12350
- if (!stack || !stack.imageIds || stack.imageIds.length === 0) {
13564
+ if (!stack) {
13565
+ return;
13566
+ }
13567
+ if (!stack.imageIds?.length) {
12351
13568
  console.warn('CornerstoneTools.stackPrefetch: No images in stack.');
12352
13569
  return;
12353
13570
  }
@@ -12645,7 +13862,7 @@ function _getDistance3D(point0, point1) {
12645
13862
  /* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
12646
13863
  /* harmony export */ });
12647
13864
  /* unused harmony export triggerAnnotationRenderForToolGroupIds */
12648
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
13865
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
12649
13866
  /* harmony import */ var _triggerAnnotationRender__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(64307);
12650
13867
  /* harmony import */ var _store_ToolGroupManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(27078);
12651
13868
 
@@ -12696,14 +13913,11 @@ function triggerAnnotationRenderForToolGroupIds(toolGroupIds) {
12696
13913
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12697
13914
  /* harmony export */ P: () => (/* binding */ isViewportPreScaled)
12698
13915
  /* harmony export */ });
12699
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
13916
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
12700
13917
 
12701
13918
  function isViewportPreScaled(viewport, targetId) {
12702
13919
  if (viewport instanceof _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.BaseVolumeViewport) {
12703
- const targetIdTokens = targetId.split('volumeId:');
12704
- const volumeId = targetIdTokens.length > 1
12705
- ? targetIdTokens[1].split('?')[0]
12706
- : targetIdTokens[0];
13920
+ const volumeId = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.utilities.getVolumeId(targetId);
12707
13921
  const volume = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.cache.getVolume(volumeId);
12708
13922
  return !!volume?.scaling && Object.keys(volume.scaling).length > 0;
12709
13923
  }
@@ -12723,7 +13937,7 @@ function isViewportPreScaled(viewport, targetId) {
12723
13937
  /***/ 68009:
12724
13938
  /***/ ((__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) => {
12725
13939
 
12726
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
13940
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
12727
13941
  /* harmony import */ var _clip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(70232);
12728
13942
  /* harmony import */ var _scroll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(63478);
12729
13943
 
@@ -12750,12 +13964,10 @@ function _getImageSliceData(viewport, debounceLoading) {
12750
13964
  : viewport.getCurrentImageIdIndex(),
12751
13965
  };
12752
13966
  }
12753
- else if (viewport instanceof VolumeViewport) {
12754
- return csUtils.getImageSliceDataForVolumeViewport(viewport);
12755
- }
12756
- else {
12757
- throw new Error('Unsupported viewport type');
12758
- }
13967
+ return {
13968
+ numberOfSlices: viewport.getNumberOfSlices(),
13969
+ imageIndex: viewport.getSliceIndex(),
13970
+ };
12759
13971
  }
12760
13972
  function _getImageIndexToJump(numberOfSlices, imageIndex) {
12761
13973
  const lastSliceIndex = numberOfSlices - 1;
@@ -12772,7 +13984,7 @@ function _getImageIndexToJump(numberOfSlices, imageIndex) {
12772
13984
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12773
13985
  /* harmony export */ Z: () => (/* binding */ jumpToWorld)
12774
13986
  /* harmony export */ });
12775
- /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62709);
13987
+ /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12651);
12776
13988
  /* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(72076);
12777
13989
 
12778
13990
 
@@ -12869,8 +14081,8 @@ function _toolGroupHasActiveEnabledOrPassiveTool(toolGroup, toolName) {
12869
14081
  return toolMode === Active || toolMode === Passive || toolMode === Enabled;
12870
14082
  }
12871
14083
 
12872
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
12873
- var esm = __webpack_require__(62709);
14084
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
14085
+ var esm = __webpack_require__(12651);
12874
14086
  // EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 1 modules
12875
14087
  var gl_matrix_esm = __webpack_require__(72076);
12876
14088
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/viewportFilters/filterViewportsWithParallelNormals.js
@@ -12922,8 +14134,8 @@ function getViewportIdsWithToolToRender(element, toolName, requireParallelNormal
12922
14134
 
12923
14135
  // EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 1 modules
12924
14136
  var esm = __webpack_require__(72076);
12925
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
12926
- var dist_esm = __webpack_require__(62709);
14137
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
14138
+ var dist_esm = __webpack_require__(12651);
12927
14139
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/voi/colorbar/common/isRangeValid.js
12928
14140
  const isRangeValid_isRangeValid = (range) => {
12929
14141
  return range && range.upper > range.lower;
@@ -13763,8 +14975,8 @@ class Colorbar extends (/* unused pure expression or super */ null && (Widget))
13763
14975
 
13764
14976
  // UNUSED EXPORTS: ViewportColorbar, default
13765
14977
 
13766
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
13767
- var esm = __webpack_require__(62709);
14978
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
14979
+ var esm = __webpack_require__(12651);
13768
14980
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/voi/colorbar/Colorbar.js + 10 modules
13769
14981
  var colorbar_Colorbar = __webpack_require__(53766);
13770
14982
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/viewport/index.js
@@ -14045,8 +15257,8 @@ function calculateMinMaxMean(pixelLuminance, globalMin, globalMax) {
14045
15257
  }
14046
15258
 
14047
15259
 
14048
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
14049
- var esm = __webpack_require__(62709);
15260
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
15261
+ var esm = __webpack_require__(12651);
14050
15262
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/voi/windowlevel/extractWindowLevelRegionToolData.js
14051
15263
 
14052
15264
  function extractWindowLevelRegionToolData(viewport) {
@@ -14170,8 +15382,8 @@ class ICRPolySeg {
14170
15382
  }
14171
15383
  }
14172
15384
 
14173
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
14174
- var esm = __webpack_require__(62709);
15385
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 1 modules
15386
+ var esm = __webpack_require__(12651);
14175
15387
  // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Common/DataModel/Plane.js
14176
15388
  var Plane = __webpack_require__(3969);
14177
15389
  // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Common/DataModel/PolyData.js + 9 modules