@cornerstonejs/tools 0.13.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/cjs/enums/ToolBindings.js.map +1 -1
  2. package/dist/cjs/index.d.ts +2 -2
  3. package/dist/cjs/index.js +3 -1
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/tools/MagnifyTool.d.ts +24 -0
  6. package/dist/cjs/tools/MagnifyTool.js +169 -0
  7. package/dist/cjs/tools/MagnifyTool.js.map +1 -0
  8. package/dist/cjs/tools/annotation/AngleTool.d.ts +37 -0
  9. package/dist/cjs/tools/annotation/AngleTool.js +442 -0
  10. package/dist/cjs/tools/annotation/AngleTool.js.map +1 -0
  11. package/dist/cjs/tools/index.d.ts +3 -1
  12. package/dist/cjs/tools/index.js +5 -1
  13. package/dist/cjs/tools/index.js.map +1 -1
  14. package/dist/cjs/types/CINETypes.d.ts +19 -0
  15. package/dist/cjs/types/CINETypes.js +3 -0
  16. package/dist/cjs/types/CINETypes.js.map +1 -0
  17. package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +24 -0
  18. package/dist/cjs/types/index.d.ts +2 -1
  19. package/dist/cjs/utilities/cine/events.d.ts +5 -0
  20. package/dist/cjs/utilities/cine/events.js +9 -0
  21. package/dist/cjs/utilities/cine/events.js.map +1 -0
  22. package/dist/cjs/utilities/cine/index.d.ts +4 -0
  23. package/dist/cjs/utilities/cine/index.js +15 -0
  24. package/dist/cjs/utilities/cine/index.js.map +1 -0
  25. package/dist/cjs/utilities/cine/playClip.d.ts +4 -0
  26. package/dist/cjs/utilities/cine/playClip.js +165 -0
  27. package/dist/cjs/utilities/cine/playClip.js.map +1 -0
  28. package/dist/cjs/utilities/cine/state.d.ts +4 -0
  29. package/dist/cjs/utilities/cine/state.js +18 -0
  30. package/dist/cjs/utilities/cine/state.js.map +1 -0
  31. package/dist/cjs/utilities/index.d.ts +2 -1
  32. package/dist/cjs/utilities/index.js +3 -1
  33. package/dist/cjs/utilities/index.js.map +1 -1
  34. package/dist/cjs/utilities/math/angle/angleBetweenLines.d.ts +4 -0
  35. package/dist/cjs/utilities/math/angle/angleBetweenLines.js +17 -0
  36. package/dist/cjs/utilities/math/angle/angleBetweenLines.js.map +1 -0
  37. package/dist/cjs/utilities/viewportFilters/filterViewportsWithToolEnabled.js +3 -0
  38. package/dist/cjs/utilities/viewportFilters/filterViewportsWithToolEnabled.js.map +1 -1
  39. package/dist/esm/enums/ToolBindings.js.map +1 -1
  40. package/dist/esm/index.d.ts +2 -2
  41. package/dist/esm/index.js +2 -2
  42. package/dist/esm/index.js.map +1 -1
  43. package/dist/esm/tools/MagnifyTool.d.ts +24 -0
  44. package/dist/esm/tools/MagnifyTool.js +163 -0
  45. package/dist/esm/tools/MagnifyTool.js.map +1 -0
  46. package/dist/esm/tools/annotation/AngleTool.d.ts +37 -0
  47. package/dist/esm/tools/annotation/AngleTool.js +417 -0
  48. package/dist/esm/tools/annotation/AngleTool.js.map +1 -0
  49. package/dist/esm/tools/index.d.ts +3 -1
  50. package/dist/esm/tools/index.js +3 -1
  51. package/dist/esm/tools/index.js.map +1 -1
  52. package/dist/esm/types/CINETypes.d.ts +19 -0
  53. package/dist/esm/types/CINETypes.js +2 -0
  54. package/dist/esm/types/CINETypes.js.map +1 -0
  55. package/dist/esm/types/ToolSpecificAnnotationTypes.d.ts +24 -0
  56. package/dist/esm/types/index.d.ts +2 -1
  57. package/dist/esm/utilities/cine/events.d.ts +5 -0
  58. package/dist/esm/utilities/cine/events.js +7 -0
  59. package/dist/esm/utilities/cine/events.js.map +1 -0
  60. package/dist/esm/utilities/cine/index.d.ts +4 -0
  61. package/dist/esm/utilities/cine/index.js +5 -0
  62. package/dist/esm/utilities/cine/index.js.map +1 -0
  63. package/dist/esm/utilities/cine/playClip.d.ts +4 -0
  64. package/dist/esm/utilities/cine/playClip.js +157 -0
  65. package/dist/esm/utilities/cine/playClip.js.map +1 -0
  66. package/dist/esm/utilities/cine/state.d.ts +4 -0
  67. package/dist/esm/utilities/cine/state.js +14 -0
  68. package/dist/esm/utilities/cine/state.js.map +1 -0
  69. package/dist/esm/utilities/index.d.ts +2 -1
  70. package/dist/esm/utilities/index.js +2 -1
  71. package/dist/esm/utilities/index.js.map +1 -1
  72. package/dist/esm/utilities/math/angle/angleBetweenLines.d.ts +4 -0
  73. package/dist/esm/utilities/math/angle/angleBetweenLines.js +14 -0
  74. package/dist/esm/utilities/math/angle/angleBetweenLines.js.map +1 -0
  75. package/dist/esm/utilities/viewportFilters/filterViewportsWithToolEnabled.js +3 -0
  76. package/dist/esm/utilities/viewportFilters/filterViewportsWithToolEnabled.js.map +1 -1
  77. package/dist/umd/index.js +1 -1
  78. package/dist/umd/index.js.map +1 -1
  79. package/package.json +6 -6
@@ -0,0 +1,157 @@
1
+ import { utilities, getEnabledElement, StackViewport, } from '@cornerstonejs/core';
2
+ import CINE_EVENTS from './events';
3
+ import { addToolState, getToolState } from './state';
4
+ const { triggerEvent } = utilities;
5
+ function playClip(element, playClipOptions) {
6
+ let playClipTimeouts;
7
+ let playClipIsTimeVarying;
8
+ if (element === undefined) {
9
+ throw new Error('playClip: element must not be undefined');
10
+ }
11
+ const enabledElement = getEnabledElement(element);
12
+ if (!enabledElement) {
13
+ throw new Error('playClip: element must be a valid Cornerstone enabled element');
14
+ }
15
+ const { viewport } = enabledElement;
16
+ if (!(viewport instanceof StackViewport)) {
17
+ throw new Error('playClip: element must be a stack viewport, volume viewport playClip not yet implemented');
18
+ }
19
+ const stackData = {
20
+ currentImageIdIndex: viewport.getCurrentImageIdIndex(),
21
+ imageIds: viewport.getImageIds(),
22
+ };
23
+ let playClipData = getToolState(element);
24
+ if (!playClipData) {
25
+ playClipData = {
26
+ intervalId: undefined,
27
+ framesPerSecond: 30,
28
+ lastFrameTimeStamp: undefined,
29
+ ignoreFrameTimeVector: false,
30
+ usingFrameTimeVector: false,
31
+ frameTimeVector: playClipOptions.frameTimeVector ?? undefined,
32
+ speed: playClipOptions.frameTimeVectorSpeedMultiplier ?? 1,
33
+ reverse: playClipOptions.reverse ?? false,
34
+ loop: playClipOptions.loop ?? true,
35
+ };
36
+ addToolState(element, playClipData);
37
+ }
38
+ else {
39
+ _stopClipWithData(playClipData);
40
+ }
41
+ if (playClipOptions.framesPerSecond < 0 ||
42
+ playClipOptions.framesPerSecond > 0) {
43
+ playClipData.framesPerSecond = Number(playClipOptions.framesPerSecond);
44
+ playClipData.reverse = playClipData.framesPerSecond < 0;
45
+ playClipData.ignoreFrameTimeVector = true;
46
+ }
47
+ if (playClipData.ignoreFrameTimeVector !== true &&
48
+ playClipData.frameTimeVector &&
49
+ playClipData.frameTimeVector.length === stackData.imageIds.length) {
50
+ const { timeouts, isTimeVarying } = _getPlayClipTimeouts(playClipData.frameTimeVector, playClipData.speed);
51
+ playClipTimeouts = timeouts;
52
+ playClipIsTimeVarying = isTimeVarying;
53
+ }
54
+ const playClipAction = () => {
55
+ let newImageIdIndex = stackData.currentImageIdIndex;
56
+ const imageCount = stackData.imageIds.length;
57
+ if (playClipData.reverse) {
58
+ newImageIdIndex--;
59
+ }
60
+ else {
61
+ newImageIdIndex++;
62
+ }
63
+ if (!playClipData.loop &&
64
+ (newImageIdIndex < 0 || newImageIdIndex >= imageCount)) {
65
+ _stopClipWithData(playClipData);
66
+ const eventDetail = {
67
+ element,
68
+ };
69
+ triggerEvent(element, CINE_EVENTS.CLIP_STOPPED, eventDetail);
70
+ return;
71
+ }
72
+ if (newImageIdIndex >= imageCount) {
73
+ newImageIdIndex = 0;
74
+ }
75
+ if (newImageIdIndex < 0) {
76
+ newImageIdIndex = imageCount - 1;
77
+ }
78
+ if (newImageIdIndex !== stackData.currentImageIdIndex) {
79
+ viewport.setImageIdIndex(newImageIdIndex).then(() => {
80
+ stackData.currentImageIdIndex = newImageIdIndex;
81
+ });
82
+ }
83
+ };
84
+ if (playClipTimeouts &&
85
+ playClipTimeouts.length > 0 &&
86
+ playClipIsTimeVarying) {
87
+ playClipData.usingFrameTimeVector = true;
88
+ playClipData.intervalId = window.setTimeout(function playClipTimeoutHandler() {
89
+ playClipData.intervalId = window.setTimeout(playClipTimeoutHandler, playClipTimeouts[stackData.currentImageIdIndex]);
90
+ playClipAction();
91
+ }, 0);
92
+ }
93
+ else {
94
+ playClipData.usingFrameTimeVector = false;
95
+ playClipData.intervalId = window.setInterval(playClipAction, 1000 / Math.abs(playClipData.framesPerSecond));
96
+ }
97
+ const eventDetail = {
98
+ element,
99
+ };
100
+ triggerEvent(element, CINE_EVENTS.CLIP_STARTED, eventDetail);
101
+ }
102
+ function stopClip(element) {
103
+ const enabledElement = getEnabledElement(element);
104
+ const { viewport } = enabledElement;
105
+ const cineToolData = getToolState(viewport.element);
106
+ if (!cineToolData) {
107
+ return;
108
+ }
109
+ _stopClipWithData(cineToolData);
110
+ }
111
+ function _getPlayClipTimeouts(vector, speed) {
112
+ let i;
113
+ let sample;
114
+ let delay;
115
+ let sum = 0;
116
+ const limit = vector.length;
117
+ const timeouts = [];
118
+ let isTimeVarying = false;
119
+ if (typeof speed !== 'number' || speed <= 0) {
120
+ speed = 1;
121
+ }
122
+ for (i = 1; i < limit; i++) {
123
+ delay = (Number(vector[i]) / speed) | 0;
124
+ timeouts.push(delay);
125
+ if (i === 1) {
126
+ sample = delay;
127
+ }
128
+ else if (delay !== sample) {
129
+ isTimeVarying = true;
130
+ }
131
+ sum += delay;
132
+ }
133
+ if (timeouts.length > 0) {
134
+ if (isTimeVarying) {
135
+ delay = (sum / timeouts.length) | 0;
136
+ }
137
+ else {
138
+ delay = timeouts[0];
139
+ }
140
+ timeouts.push(delay);
141
+ }
142
+ return { timeouts, isTimeVarying };
143
+ }
144
+ function _stopClipWithData(playClipData) {
145
+ const id = playClipData.intervalId;
146
+ if (typeof id !== 'undefined') {
147
+ playClipData.intervalId = undefined;
148
+ if (playClipData.usingFrameTimeVector) {
149
+ clearTimeout(id);
150
+ }
151
+ else {
152
+ clearInterval(id);
153
+ }
154
+ }
155
+ }
156
+ export { playClip, stopClip };
157
+ //# sourceMappingURL=playClip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playClip.js","sourceRoot":"","sources":["../../../../src/utilities/cine/playClip.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { CINETypes } from '../../types';
2
+ declare function addToolState(element: HTMLDivElement, data: CINETypes.ToolData): void;
3
+ declare function getToolState(element: HTMLDivElement): CINETypes.ToolData | undefined;
4
+ export { addToolState, getToolState };
@@ -0,0 +1,14 @@
1
+ import { getEnabledElement } from '@cornerstonejs/core';
2
+ const state = {};
3
+ function addToolState(element, data) {
4
+ const enabledElement = getEnabledElement(element);
5
+ const { viewportId } = enabledElement;
6
+ state[viewportId] = data;
7
+ }
8
+ function getToolState(element) {
9
+ const enabledElement = getEnabledElement(element);
10
+ const { viewportId } = enabledElement;
11
+ return state[viewportId];
12
+ }
13
+ export { addToolState, getToolState };
14
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../../src/utilities/cine/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,MAAM,KAAK,GAAuC,EAAE,CAAC;AAErD,SAAS,YAAY,CAAC,OAAuB,EAAE,IAAwB;IACrE,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC;IACtC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED,SAAS,YAAY,CAAC,OAAuB;IAC3C,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC;IACtC,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC;AAC3B,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC"}
@@ -15,5 +15,6 @@ import * as planar from './planar';
15
15
  import * as stackScrollTool from './stackScrollTool';
16
16
  import * as viewportFilters from './viewportFilters';
17
17
  import * as orientation from './orientation';
18
+ import * as cine from './cine';
18
19
  import { triggerEvent } from '@cornerstonejs/core';
19
- export { math, planar, viewportFilters, stackScrollTool, drawing, debounce, deepMerge, throttle, orientation, isObject, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, };
20
+ export { math, planar, viewportFilters, stackScrollTool, drawing, debounce, deepMerge, throttle, orientation, isObject, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, cine, };
@@ -15,6 +15,7 @@ import * as planar from './planar';
15
15
  import * as stackScrollTool from './stackScrollTool';
16
16
  import * as viewportFilters from './viewportFilters';
17
17
  import * as orientation from './orientation';
18
+ import * as cine from './cine';
18
19
  import { triggerEvent } from '@cornerstonejs/core';
19
- export { math, planar, viewportFilters, stackScrollTool, drawing, debounce, deepMerge, throttle, orientation, isObject, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, };
20
+ export { math, planar, viewportFilters, stackScrollTool, drawing, debounce, deepMerge, throttle, orientation, isObject, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, cine, };
20
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,sCAAsC,GACvC,MAAM,0BAA0B,CAAC;AAGlC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,qCAAqC,MAAM,yCAAyC,CAAC;AAC5F,OAAO,WAAW,MAAM,wBAAwB,CAAC;AAEjD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,gCAAgC,MAAM,oCAAoC,CAAC;AAGlF,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EACL,IAAI,EACJ,MAAM,EACN,eAAe,EACf,eAAe,EACf,OAAO,EACP,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,qCAAqC,EACrC,oBAAoB,EACpB,gCAAgC,EAChC,sBAAsB,EACtB,sCAAsC,EACtC,WAAW,GACZ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,sCAAsC,GACvC,MAAM,0BAA0B,CAAC;AAGlC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,qCAAqC,MAAM,yCAAyC,CAAC;AAC5F,OAAO,WAAW,MAAM,wBAAwB,CAAC;AAEjD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,gCAAgC,MAAM,oCAAoC,CAAC;AAGlF,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EACL,IAAI,EACJ,MAAM,EACN,eAAe,EACf,eAAe,EACf,OAAO,EACP,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,qCAAqC,EACrC,oBAAoB,EACpB,gCAAgC,EAChC,sBAAsB,EACtB,sCAAsC,EACtC,WAAW,EACX,IAAI,GACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Types } from '@cornerstonejs/core';
2
+ declare type Line = [Types.Point3, Types.Point3];
3
+ export default function angleBetweenLines(line1: Line, line2: Line): number;
4
+ export {};
@@ -0,0 +1,14 @@
1
+ import { vec3 } from 'gl-matrix';
2
+ export default function angleBetweenLines(line1, line2) {
3
+ const [p1, p2] = line1;
4
+ const [p3, p4] = line2;
5
+ const v1 = vec3.sub(vec3.create(), p2, p1);
6
+ const v2 = vec3.sub(vec3.create(), p3, p4);
7
+ const dot = vec3.dot(v1, v2);
8
+ const v1Length = vec3.length(v1);
9
+ const v2Length = vec3.length(v2);
10
+ const cos = dot / (v1Length * v2Length);
11
+ const radian = Math.acos(cos);
12
+ return (radian * 180) / Math.PI;
13
+ }
14
+ //# sourceMappingURL=angleBetweenLines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"angleBetweenLines.js","sourceRoot":"","sources":["../../../../../src/utilities/math/angle/angleBetweenLines.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAUjC,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,KAAW,EAAE,KAAW;IAChE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;IACvB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;IAEvB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAE3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEjC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAExC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE9B,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AAClC,CAAC"}
@@ -7,6 +7,9 @@ export default function filterViewportsWithToolEnabled(viewports, toolName) {
7
7
  for (let vp = 0; vp < numViewports; vp++) {
8
8
  const viewport = viewports[vp];
9
9
  const toolGroup = ToolGroupManager.getToolGroupForViewport(viewport.id, viewport.renderingEngineId);
10
+ if (!toolGroup) {
11
+ continue;
12
+ }
10
13
  const hasTool = _toolGroupHasActiveEnabledOrPassiveTool(toolGroup, toolName);
11
14
  if (hasTool) {
12
15
  viewportsWithToolEnabled.push(viewport);
@@ -1 +1 @@
1
- {"version":3,"file":"filterViewportsWithToolEnabled.js","sourceRoot":"","sources":["../../../../src/utilities/viewportFilters/filterViewportsWithToolEnabled.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;AAU/C,MAAM,CAAC,OAAO,UAAU,8BAA8B,CACpD,SAA8D,EAC9D,QAAgB;IAEhB,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;IAEtC,MAAM,wBAAwB,GAAG,EAAE,CAAC;IAEpC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,YAAY,EAAE,EAAE,EAAE,EAAE;QACxC,MAAM,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAE/B,MAAM,SAAS,GAAG,gBAAgB,CAAC,uBAAuB,CACxD,QAAQ,CAAC,EAAE,EACX,QAAQ,CAAC,iBAAiB,CAC3B,CAAC;QAEF,MAAM,OAAO,GAAG,uCAAuC,CACrD,SAAS,EACT,QAAQ,CACT,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACzC;KACF;IAED,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAWD,SAAS,uCAAuC,CAC9C,SAAqB,EACrB,QAAgB;IAEhB,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IAClC,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEnC,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,KAAK,CAAC;KACd;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;IAE3B,OAAO,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,OAAO,CAAC;AAC7E,CAAC"}
1
+ {"version":3,"file":"filterViewportsWithToolEnabled.js","sourceRoot":"","sources":["../../../../src/utilities/viewportFilters/filterViewportsWithToolEnabled.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;AAU/C,MAAM,CAAC,OAAO,UAAU,8BAA8B,CACpD,SAA8D,EAC9D,QAAgB;IAEhB,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;IAEtC,MAAM,wBAAwB,GAAG,EAAE,CAAC;IAEpC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,YAAY,EAAE,EAAE,EAAE,EAAE;QACxC,MAAM,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAE/B,MAAM,SAAS,GAAG,gBAAgB,CAAC,uBAAuB,CACxD,QAAQ,CAAC,EAAE,EACX,QAAQ,CAAC,iBAAiB,CAC3B,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE;YACd,SAAS;SACV;QAED,MAAM,OAAO,GAAG,uCAAuC,CACrD,SAAS,EACT,QAAQ,CACT,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACzC;KACF;IAED,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAWD,SAAS,uCAAuC,CAC9C,SAAqB,EACrB,QAAgB;IAEhB,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IAClC,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEnC,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,KAAK,CAAC;KACd;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;IAE3B,OAAO,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,OAAO,CAAC;AAC7E,CAAC"}