@cornerstonejs/tools 1.78.3 → 1.80.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 (91) hide show
  1. package/dist/cjs/cursors/SVGCursorDescriptor.js +7 -0
  2. package/dist/cjs/cursors/SVGCursorDescriptor.js.map +1 -1
  3. package/dist/cjs/drawingSvg/drawHeight.d.ts +3 -0
  4. package/dist/cjs/drawingSvg/drawHeight.js +49 -0
  5. package/dist/cjs/drawingSvg/drawHeight.js.map +1 -0
  6. package/dist/cjs/drawingSvg/index.d.ts +2 -1
  7. package/dist/cjs/drawingSvg/index.js +3 -1
  8. package/dist/cjs/drawingSvg/index.js.map +1 -1
  9. package/dist/cjs/index.d.ts +2 -2
  10. package/dist/cjs/index.js +3 -2
  11. package/dist/cjs/index.js.map +1 -1
  12. package/dist/cjs/tools/annotation/HeightTool.d.ts +40 -0
  13. package/dist/cjs/tools/annotation/HeightTool.js +463 -0
  14. package/dist/cjs/tools/annotation/HeightTool.js.map +1 -0
  15. package/dist/cjs/tools/index.d.ts +2 -1
  16. package/dist/cjs/tools/index.js +4 -2
  17. package/dist/cjs/tools/index.js.map +1 -1
  18. package/dist/cjs/tools/segmentation/CircleROIStartEndThresholdTool.d.ts +15 -8
  19. package/dist/cjs/tools/segmentation/CircleROIStartEndThresholdTool.js +189 -62
  20. package/dist/cjs/tools/segmentation/CircleROIStartEndThresholdTool.js.map +1 -1
  21. package/dist/cjs/tools/segmentation/RectangleROIStartEndThresholdTool.d.ts +17 -7
  22. package/dist/cjs/tools/segmentation/RectangleROIStartEndThresholdTool.js +167 -52
  23. package/dist/cjs/tools/segmentation/RectangleROIStartEndThresholdTool.js.map +1 -1
  24. package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +26 -4
  25. package/dist/cjs/utilities/planar/filterAnnotationsWithinPlane.d.ts +3 -0
  26. package/dist/cjs/utilities/planar/filterAnnotationsWithinPlane.js +31 -0
  27. package/dist/cjs/utilities/planar/filterAnnotationsWithinPlane.js.map +1 -0
  28. package/dist/cjs/utilities/planar/index.d.ts +3 -1
  29. package/dist/cjs/utilities/planar/index.js +4 -1
  30. package/dist/cjs/utilities/planar/index.js.map +1 -1
  31. package/dist/cjs/utilities/viewport/isViewportPreScaled.js +1 -4
  32. package/dist/cjs/utilities/viewport/isViewportPreScaled.js.map +1 -1
  33. package/dist/esm/cursors/SVGCursorDescriptor.js +7 -0
  34. package/dist/esm/cursors/SVGCursorDescriptor.js.map +1 -1
  35. package/dist/esm/drawingSvg/drawHeight.js +43 -0
  36. package/dist/esm/drawingSvg/drawHeight.js.map +1 -0
  37. package/dist/esm/drawingSvg/index.js +2 -1
  38. package/dist/esm/drawingSvg/index.js.map +1 -1
  39. package/dist/esm/index.js +2 -2
  40. package/dist/esm/index.js.map +1 -1
  41. package/dist/esm/tools/annotation/HeightTool.js +439 -0
  42. package/dist/esm/tools/annotation/HeightTool.js.map +1 -0
  43. package/dist/esm/tools/index.js +2 -1
  44. package/dist/esm/tools/index.js.map +1 -1
  45. package/dist/esm/tools/segmentation/CircleROIStartEndThresholdTool.js +192 -66
  46. package/dist/esm/tools/segmentation/CircleROIStartEndThresholdTool.js.map +1 -1
  47. package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js +168 -54
  48. package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js.map +1 -1
  49. package/dist/esm/utilities/planar/filterAnnotationsWithinPlane.js +27 -0
  50. package/dist/esm/utilities/planar/filterAnnotationsWithinPlane.js.map +1 -0
  51. package/dist/esm/utilities/planar/index.js +3 -1
  52. package/dist/esm/utilities/planar/index.js.map +1 -1
  53. package/dist/esm/utilities/viewport/isViewportPreScaled.js +2 -5
  54. package/dist/esm/utilities/viewport/isViewportPreScaled.js.map +1 -1
  55. package/dist/types/cursors/SVGCursorDescriptor.d.ts.map +1 -1
  56. package/dist/types/drawingSvg/drawHeight.d.ts +4 -0
  57. package/dist/types/drawingSvg/drawHeight.d.ts.map +1 -0
  58. package/dist/types/drawingSvg/index.d.ts +2 -1
  59. package/dist/types/drawingSvg/index.d.ts.map +1 -1
  60. package/dist/types/index.d.ts +2 -2
  61. package/dist/types/index.d.ts.map +1 -1
  62. package/dist/types/tools/annotation/HeightTool.d.ts +41 -0
  63. package/dist/types/tools/annotation/HeightTool.d.ts.map +1 -0
  64. package/dist/types/tools/index.d.ts +2 -1
  65. package/dist/types/tools/index.d.ts.map +1 -1
  66. package/dist/types/tools/segmentation/CircleROIStartEndThresholdTool.d.ts +15 -8
  67. package/dist/types/tools/segmentation/CircleROIStartEndThresholdTool.d.ts.map +1 -1
  68. package/dist/types/tools/segmentation/RectangleROIStartEndThresholdTool.d.ts +17 -7
  69. package/dist/types/tools/segmentation/RectangleROIStartEndThresholdTool.d.ts.map +1 -1
  70. package/dist/types/types/ToolSpecificAnnotationTypes.d.ts +26 -4
  71. package/dist/types/types/ToolSpecificAnnotationTypes.d.ts.map +1 -1
  72. package/dist/types/utilities/planar/filterAnnotationsWithinPlane.d.ts +4 -0
  73. package/dist/types/utilities/planar/filterAnnotationsWithinPlane.d.ts.map +1 -0
  74. package/dist/types/utilities/planar/index.d.ts +3 -1
  75. package/dist/types/utilities/planar/index.d.ts.map +1 -1
  76. package/dist/types/utilities/viewport/isViewportPreScaled.d.ts.map +1 -1
  77. package/dist/umd/index.js +1 -1
  78. package/dist/umd/index.js.map +1 -1
  79. package/package.json +3 -3
  80. package/src/cursors/SVGCursorDescriptor.ts +7 -0
  81. package/src/drawingSvg/drawHeight.ts +90 -0
  82. package/src/drawingSvg/index.ts +2 -0
  83. package/src/index.ts +2 -0
  84. package/src/tools/annotation/HeightTool.ts +882 -0
  85. package/src/tools/index.ts +2 -0
  86. package/src/tools/segmentation/CircleROIStartEndThresholdTool.ts +310 -102
  87. package/src/tools/segmentation/RectangleROIStartEndThresholdTool.ts +287 -77
  88. package/src/types/ToolSpecificAnnotationTypes.ts +26 -4
  89. package/src/utilities/planar/filterAnnotationsWithinPlane.ts +76 -0
  90. package/src/utilities/planar/index.ts +3 -0
  91. package/src/utilities/viewport/isViewportPreScaled.ts +2 -5
@@ -4,25 +4,35 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const core_1 = require("@cornerstonejs/core");
7
+ const core_2 = require("@cornerstonejs/core");
8
+ const getCalibratedUnits_1 = require("../../utilities/getCalibratedUnits");
7
9
  const gl_matrix_1 = require("gl-matrix");
8
10
  const stateManagement_1 = require("../../stateManagement");
9
11
  const annotationLocking_1 = require("../../stateManagement/annotation/annotationLocking");
10
- const state_1 = require("../../stateManagement/annotation/helpers/state");
11
12
  const drawingSvg_1 = require("../../drawingSvg");
12
13
  const viewportFilters_1 = require("../../utilities/viewportFilters");
13
14
  const throttle_1 = __importDefault(require("../../utilities/throttle"));
15
+ const drawing_1 = require("../../utilities/drawing");
16
+ const getWorldWidthAndHeightFromCorners_1 = __importDefault(require("../../utilities/planar/getWorldWidthAndHeightFromCorners"));
14
17
  const annotationVisibility_1 = require("../../stateManagement/annotation/annotationVisibility");
15
18
  const elementCursor_1 = require("../../cursors/elementCursor");
16
19
  const triggerAnnotationRenderForViewportIds_1 = __importDefault(require("../../utilities/triggerAnnotationRenderForViewportIds"));
17
- const state_2 = require("../../stateManagement/annotation/helpers/state");
20
+ const state_1 = require("../../stateManagement/annotation/helpers/state");
18
21
  const RectangleROITool_1 = __importDefault(require("../annotation/RectangleROITool"));
19
22
  const utilities_1 = require("../../utilities/");
23
+ const getModalityUnit_1 = require("../../utilities/getModalityUnit");
24
+ const isViewportPreScaled_1 = require("../../utilities/viewport/isViewportPreScaled");
25
+ const basic_1 = require("../../utilities/math/basic");
26
+ const planar_1 = require("../../utilities/planar");
20
27
  const { transformWorldToIndex } = core_1.utilities;
21
28
  class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
22
29
  constructor(toolProps = {}, defaultToolProps = {
23
30
  configuration: {
24
31
  numSlicesToPropagate: 10,
25
32
  computePointsInsideVolume: false,
33
+ getTextLines: defaultGetTextLines,
34
+ statsCalculator: basic_1.BasicStatsCalculator,
35
+ showTextBox: false,
26
36
  },
27
37
  }) {
28
38
  super(toolProps, defaultToolProps);
@@ -45,12 +55,9 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
45
55
  imageVolume = core_1.cache.getVolume(volumeId);
46
56
  referencedImageId = core_1.utilities.getClosestImageId(imageVolume, worldPos, viewPlaneNormal);
47
57
  }
48
- if (!referencedImageId) {
49
- throw new Error('This tool does not work on non-acquisition planes');
50
- }
51
- const startIndex = viewport.getCurrentImageIdIndex();
52
58
  const spacingInNormal = core_1.utilities.getSpacingInNormalDirection(imageVolume, viewPlaneNormal);
53
- const endIndex = this._getEndSliceIndex(imageVolume, worldPos, spacingInNormal, viewPlaneNormal);
59
+ const startCoord = this._getStartCoordinate(worldPos, viewPlaneNormal);
60
+ const endCoord = this._getEndCoordinate(worldPos, spacingInNormal, viewPlaneNormal);
54
61
  const FrameOfReferenceUID = viewport.getFrameOfReferenceUID();
55
62
  const annotation = {
56
63
  highlighted: true,
@@ -67,18 +74,24 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
67
74
  },
68
75
  data: {
69
76
  label: '',
70
- startSlice: startIndex,
71
- endSlice: endIndex,
77
+ startCoordinate: startCoord,
78
+ endCoordinate: endCoord,
72
79
  cachedStats: {
73
80
  pointsInVolume: [],
74
81
  projectionPoints: [],
75
82
  projectionPointsImageIds: [referencedImageId],
83
+ statistics: [],
76
84
  },
77
85
  handles: {
78
86
  textBox: {
79
87
  hasMoved: false,
80
- worldPosition: null,
81
- worldBoundingBox: null,
88
+ worldPosition: [0, 0, 0],
89
+ worldBoundingBox: {
90
+ topLeft: [0, 0, 0],
91
+ topRight: [0, 0, 0],
92
+ bottomLeft: [0, 0, 0],
93
+ bottomRight: [0, 0, 0],
94
+ },
82
95
  },
83
96
  points: [
84
97
  [...worldPos],
@@ -129,21 +142,21 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
129
142
  const targetId = this.getTargetId(enabledElement.viewport);
130
143
  const imageVolume = core_1.cache.getVolume(targetId.split(/volumeId:|\?/)[1]);
131
144
  if (this.configuration.calculatePointsInsideVolume) {
132
- this._computePointsInsideVolume(annotation, imageVolume, enabledElement);
145
+ this._computePointsInsideVolume(annotation, targetId, imageVolume, enabledElement);
133
146
  }
134
147
  (0, triggerAnnotationRenderForViewportIds_1.default)(enabledElement.renderingEngine, viewportIdsToRender);
135
148
  if (newAnnotation) {
136
- (0, state_2.triggerAnnotationCompleted)(annotation);
149
+ (0, state_1.triggerAnnotationCompleted)(annotation);
137
150
  }
138
151
  };
139
152
  this.renderAnnotation = (enabledElement, svgDrawingHelper) => {
140
153
  let renderStatus = false;
141
154
  const { viewport } = enabledElement;
142
- const annotations = (0, stateManagement_1.getAnnotations)(this.getToolName(), viewport.element);
155
+ let annotations = (0, stateManagement_1.getAnnotations)(this.getToolName(), viewport.element);
143
156
  if (!(annotations === null || annotations === void 0 ? void 0 : annotations.length)) {
144
157
  return renderStatus;
145
158
  }
146
- const sliceIndex = viewport.getCurrentImageIdIndex();
159
+ annotations = (0, planar_1.filterAnnotationsWithinSamePlane)(annotations, viewport.getCamera());
147
160
  const styleSpecifier = {
148
161
  toolGroupId: this.toolGroupId,
149
162
  toolName: this.getToolName(),
@@ -152,22 +165,37 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
152
165
  for (let i = 0; i < annotations.length; i++) {
153
166
  const annotation = annotations[i];
154
167
  const { annotationUID, data } = annotation;
155
- const { startSlice, endSlice } = data;
168
+ const { startCoordinate, endCoordinate } = data;
156
169
  const { points, activeHandleIndex } = data.handles;
157
170
  const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p));
158
171
  styleSpecifier.annotationUID = annotationUID;
159
172
  const lineWidth = this.getStyle('lineWidth', styleSpecifier, annotation);
160
173
  const lineDash = this.getStyle('lineDash', styleSpecifier, annotation);
161
174
  const color = this.getStyle('color', styleSpecifier, annotation);
162
- if (sliceIndex < Math.min(startSlice, endSlice) ||
163
- sliceIndex > Math.max(startSlice, endSlice)) {
175
+ const focalPoint = viewport.getCamera().focalPoint;
176
+ const viewplaneNormal = viewport.getCamera().viewPlaneNormal;
177
+ let startCoord = startCoordinate;
178
+ let endCoord = endCoordinate;
179
+ if (Array.isArray(startCoordinate)) {
180
+ startCoord = this._getCoordinateForViewplaneNormal(startCoord, viewplaneNormal);
181
+ }
182
+ if (Array.isArray(endCoordinate)) {
183
+ endCoord = this._getCoordinateForViewplaneNormal(endCoord, viewplaneNormal);
184
+ }
185
+ const roundedStartCoord = core_2.utilities.roundToPrecision(startCoord);
186
+ const roundedEndCoord = core_2.utilities.roundToPrecision(endCoord);
187
+ const coord = this._getCoordinateForViewplaneNormal(focalPoint, viewplaneNormal);
188
+ const roundedCoord = core_2.utilities.roundToPrecision(coord);
189
+ if (roundedCoord < Math.min(roundedStartCoord, roundedEndCoord) ||
190
+ roundedCoord > Math.max(roundedStartCoord, roundedEndCoord)) {
164
191
  continue;
165
192
  }
166
193
  if (annotation.invalidated) {
167
194
  this._throttledCalculateCachedStats(annotation, enabledElement);
168
195
  }
169
196
  let firstOrLastSlice = false;
170
- if (sliceIndex === startSlice || sliceIndex === endSlice) {
197
+ if (roundedCoord === roundedStartCoord ||
198
+ roundedCoord === roundedEndCoord) {
171
199
  firstOrLastSlice = true;
172
200
  }
173
201
  if (!viewport.getRenderingEngine()) {
@@ -201,6 +229,42 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
201
229
  lineWidth,
202
230
  });
203
231
  renderStatus = true;
232
+ if (this.configuration.showTextBox &&
233
+ this.configuration.calculatePointsInsideVolume) {
234
+ const options = this.getLinkedTextBoxStyle(styleSpecifier, annotation);
235
+ if (!options.visibility) {
236
+ data.handles.textBox = {
237
+ hasMoved: false,
238
+ worldPosition: [0, 0, 0],
239
+ worldBoundingBox: {
240
+ topLeft: [0, 0, 0],
241
+ topRight: [0, 0, 0],
242
+ bottomLeft: [0, 0, 0],
243
+ bottomRight: [0, 0, 0],
244
+ },
245
+ };
246
+ continue;
247
+ }
248
+ const textLines = this.configuration.getTextLines(data);
249
+ if (!textLines || textLines.length === 0) {
250
+ continue;
251
+ }
252
+ if (!data.handles.textBox.hasMoved) {
253
+ const canvasTextBoxCoords = (0, drawing_1.getTextBoxCoordsCanvas)(canvasCoordinates);
254
+ data.handles.textBox.worldPosition =
255
+ viewport.canvasToWorld(canvasTextBoxCoords);
256
+ }
257
+ const textBoxPosition = viewport.worldToCanvas(data.handles.textBox.worldPosition);
258
+ const textBoxUID = '1';
259
+ const boundingBox = (0, drawingSvg_1.drawLinkedTextBox)(svgDrawingHelper, annotationUID, textBoxUID, textLines, textBoxPosition, canvasCoordinates, {}, options);
260
+ const { x: left, y: top, width, height } = boundingBox;
261
+ data.handles.textBox.worldBoundingBox = {
262
+ topLeft: viewport.canvasToWorld([left, top]),
263
+ topRight: viewport.canvasToWorld([left + width, top]),
264
+ bottomLeft: viewport.canvasToWorld([left, top + height]),
265
+ bottomRight: viewport.canvasToWorld([left + width, top + height]),
266
+ };
267
+ }
204
268
  }
205
269
  return renderStatus;
206
270
  };
@@ -210,17 +274,26 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
210
274
  const { data, metadata } = annotation;
211
275
  const { viewPlaneNormal, spacingInNormal } = metadata;
212
276
  const { imageData } = imageVolume;
213
- const { startSlice, endSlice } = data;
277
+ const { startCoordinate, endCoordinate } = data;
214
278
  const { points } = data.handles;
215
279
  const startIJK = transformWorldToIndex(imageData, points[0]);
216
- if (startIJK[2] !== startSlice) {
217
- throw new Error('Start slice does not match');
218
- }
219
- const endIJK = gl_matrix_1.vec3.fromValues(startIJK[0], startIJK[1], endSlice);
280
+ const endIJK = transformWorldToIndex(imageData, points[0]);
220
281
  const startWorld = gl_matrix_1.vec3.create();
221
282
  imageData.indexToWorldVec3(startIJK, startWorld);
222
283
  const endWorld = gl_matrix_1.vec3.create();
223
284
  imageData.indexToWorldVec3(endIJK, endWorld);
285
+ if (this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal) == 2) {
286
+ startWorld[2] = startCoordinate;
287
+ endWorld[2] = endCoordinate;
288
+ }
289
+ else if (this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal) == 0) {
290
+ startWorld[0] = startCoordinate;
291
+ endWorld[0] = endCoordinate;
292
+ }
293
+ else if (this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal) == 1) {
294
+ startWorld[1] = startCoordinate;
295
+ endWorld[1] = endCoordinate;
296
+ }
224
297
  const distance = gl_matrix_1.vec3.distance(startWorld, endWorld);
225
298
  const newProjectionPoints = [];
226
299
  for (let dist = 0; dist < distance; dist += spacingInNormal) {
@@ -231,34 +304,46 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
231
304
  }));
232
305
  }
233
306
  data.cachedStats.projectionPoints = newProjectionPoints;
234
- const projectionPointsImageIds = [];
235
- for (const RectanglePoints of newProjectionPoints) {
236
- const imageId = core_1.utilities.getClosestImageId(imageVolume, RectanglePoints[0], viewPlaneNormal);
237
- projectionPointsImageIds.push(imageId);
238
- }
239
- data.cachedStats.projectionPointsImageIds = projectionPointsImageIds;
240
307
  }
241
- _computePointsInsideVolume(annotation, imageVolume, enabledElement) {
242
- const { data } = annotation;
308
+ _computePointsInsideVolume(annotation, targetId, imageVolume, enabledElement) {
309
+ var _a, _b, _c;
310
+ const { data, metadata } = annotation;
311
+ const { viewPlaneNormal, viewUp } = metadata;
312
+ const { viewport, renderingEngine } = enabledElement;
243
313
  const projectionPoints = data.cachedStats.projectionPoints;
244
314
  const pointsInsideVolume = [[]];
315
+ const image = this.getTargetIdImage(targetId, renderingEngine);
316
+ const worldPos1 = data.handles.points[0];
317
+ const worldPos2 = data.handles.points[3];
318
+ const { worldWidth, worldHeight } = (0, getWorldWidthAndHeightFromCorners_1.default)(viewPlaneNormal, viewUp, worldPos1, worldPos2);
319
+ const measureInfo = (0, getCalibratedUnits_1.getCalibratedLengthUnitsAndScale)(image, data.habdles);
320
+ const area = Math.abs(worldWidth * worldHeight) /
321
+ (measureInfo.scale * measureInfo.scale);
322
+ const modalityUnitOptions = {
323
+ isPreScaled: (0, isViewportPreScaled_1.isViewportPreScaled)(viewport, targetId),
324
+ isSuvScaled: this.isSuvScaled(viewport, targetId, annotation.metadata.referencedImageId),
325
+ };
326
+ const modalityUnit = (0, getModalityUnit_1.getModalityUnit)(metadata.Modality, annotation.metadata.referencedImageId, modalityUnitOptions);
245
327
  for (let i = 0; i < projectionPoints.length; i++) {
246
328
  if (!imageVolume) {
247
329
  continue;
248
330
  }
249
331
  const projectionPoint = projectionPoints[i][0];
250
- const worldPos1 = data.handles.points[0];
251
- const worldPos2 = data.handles.points[3];
252
332
  const { dimensions, imageData } = imageVolume;
253
333
  const worldPos1Index = transformWorldToIndex(imageData, worldPos1);
254
334
  const worldProjectionPointIndex = transformWorldToIndex(imageData, projectionPoint);
335
+ const indexOfProjection = this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal);
255
336
  worldPos1Index[0] = Math.floor(worldPos1Index[0]);
256
337
  worldPos1Index[1] = Math.floor(worldPos1Index[1]);
257
- worldPos1Index[2] = Math.floor(worldProjectionPointIndex[2]);
338
+ worldPos1Index[2] = Math.floor(worldPos1Index[2]);
339
+ worldPos1Index[indexOfProjection] =
340
+ worldProjectionPointIndex[indexOfProjection];
258
341
  const worldPos2Index = transformWorldToIndex(imageData, worldPos2);
259
342
  worldPos2Index[0] = Math.floor(worldPos2Index[0]);
260
343
  worldPos2Index[1] = Math.floor(worldPos2Index[1]);
261
- worldPos2Index[2] = Math.floor(worldProjectionPointIndex[2]);
344
+ worldPos2Index[2] = Math.floor(worldPos2Index[2]);
345
+ worldPos2Index[indexOfProjection] =
346
+ worldProjectionPointIndex[indexOfProjection];
262
347
  if (this._isInsideVolume(worldPos1Index, worldPos2Index, dimensions)) {
263
348
  this.isHandleOutsideImage = false;
264
349
  const iMin = Math.min(worldPos1Index[0], worldPos2Index[0]);
@@ -272,11 +357,22 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
272
357
  [jMin, jMax],
273
358
  [kMin, kMax],
274
359
  ];
275
- const pointsInShape = (0, utilities_1.pointInShapeCallback)(imageData, () => true, null, boundsIJK);
360
+ const pointsInShape = (0, utilities_1.pointInShapeCallback)(imageData, () => true, this.configuration.statsCalculator.statsCallback, boundsIJK);
276
361
  pointsInsideVolume.push(pointsInShape);
277
362
  }
278
363
  }
364
+ const stats = this.configuration.statsCalculator.getStatistics();
279
365
  data.cachedStats.pointsInVolume = pointsInsideVolume;
366
+ data.cachedStats.statistics = {
367
+ Modality: metadata.Modality,
368
+ area,
369
+ mean: (_a = stats.mean) === null || _a === void 0 ? void 0 : _a.value,
370
+ stdDev: (_b = stats.stdDev) === null || _b === void 0 ? void 0 : _b.value,
371
+ max: (_c = stats.max) === null || _c === void 0 ? void 0 : _c.value,
372
+ statsArray: stats.array,
373
+ areaUnit: measureInfo.areaUnits,
374
+ modalityUnit,
375
+ };
280
376
  }
281
377
  _calculateCachedStatsTool(annotation, enabledElement) {
282
378
  const data = annotation.data;
@@ -289,25 +385,44 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
289
385
  (0, state_1.triggerAnnotationModified)(annotation, viewport.element);
290
386
  return cachedStats;
291
387
  }
292
- _getEndSliceIndex(imageVolume, worldPos, spacingInNormal, viewPlaneNormal) {
388
+ _getStartCoordinate(worldPos, viewPlaneNormal) {
389
+ const startPos = worldPos;
390
+ const startCoord = this._getCoordinateForViewplaneNormal(startPos, viewPlaneNormal);
391
+ return startCoord;
392
+ }
393
+ _getEndCoordinate(worldPos, spacingInNormal, viewPlaneNormal) {
293
394
  const numSlicesToPropagate = this.configuration.numSlicesToPropagate;
294
395
  const endPos = gl_matrix_1.vec3.create();
295
396
  gl_matrix_1.vec3.scaleAndAdd(endPos, worldPos, viewPlaneNormal, numSlicesToPropagate * spacingInNormal);
296
- const halfSpacingInNormalDirection = spacingInNormal / 2;
297
- const { imageIds } = imageVolume;
298
- let imageIdIndex;
299
- for (let i = 0; i < imageIds.length; i++) {
300
- const imageId = imageIds[i];
301
- const { imagePositionPatient } = core_1.metaData.get('imagePlaneModule', imageId);
302
- const dir = gl_matrix_1.vec3.create();
303
- gl_matrix_1.vec3.sub(dir, endPos, imagePositionPatient);
304
- const dot = gl_matrix_1.vec3.dot(dir, viewPlaneNormal);
305
- if (Math.abs(dot) < halfSpacingInNormalDirection) {
306
- imageIdIndex = i;
307
- }
308
- }
309
- return imageIdIndex;
397
+ const endCoord = this._getCoordinateForViewplaneNormal(endPos, viewPlaneNormal);
398
+ return endCoord;
399
+ }
400
+ _getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal) {
401
+ const viewplaneNormalAbs = [
402
+ Math.abs(viewPlaneNormal[0]),
403
+ Math.abs(viewPlaneNormal[1]),
404
+ Math.abs(viewPlaneNormal[2]),
405
+ ];
406
+ const indexOfDirection = viewplaneNormalAbs.indexOf(Math.max(...viewplaneNormalAbs));
407
+ return indexOfDirection;
408
+ }
409
+ _getCoordinateForViewplaneNormal(pos, viewPlaneNormal) {
410
+ const indexOfDirection = this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal);
411
+ return pos[indexOfDirection];
412
+ }
413
+ }
414
+ function defaultGetTextLines(data) {
415
+ const cachedVolumeStats = data.cachedStats.statistics;
416
+ const { area, mean, max, stdDev, areaUnit, modalityUnit } = cachedVolumeStats;
417
+ if (mean === undefined) {
418
+ return;
310
419
  }
420
+ const textLines = [];
421
+ textLines.push(`Area: ${(0, utilities_1.roundNumber)(area)} ${areaUnit}`);
422
+ textLines.push(`Mean: ${(0, utilities_1.roundNumber)(mean)} ${modalityUnit}`);
423
+ textLines.push(`Max: ${(0, utilities_1.roundNumber)(max)} ${modalityUnit}`);
424
+ textLines.push(`Std Dev: ${(0, utilities_1.roundNumber)(stdDev)} ${modalityUnit}`);
425
+ return textLines;
311
426
  }
312
427
  RectangleROIStartEndThresholdTool.toolName = 'RectangleROIStartEndThreshold';
313
428
  exports.default = RectangleROIStartEndThresholdTool;
@@ -1 +1 @@
1
- {"version":3,"file":"RectangleROIStartEndThresholdTool.js","sourceRoot":"","sources":["../../../../src/tools/segmentation/RectangleROIStartEndThresholdTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RectangleROIStartEndThresholdTool.js","sourceRoot":"","sources":["../../../../src/tools/segmentation/RectangleROIStartEndThresholdTool.ts"],"names":[],"mappings":"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"}
@@ -222,16 +222,27 @@ export interface RectangleROIStartEndThresholdAnnotation extends Annotation {
222
222
  };
223
223
  data: {
224
224
  label: string;
225
- startSlice: number;
226
- endSlice: number;
225
+ startCoordinate: number;
226
+ endCoordinate: number;
227
227
  cachedStats: {
228
228
  pointsInVolume: Types.Point3[];
229
229
  projectionPoints: Types.Point3[][];
230
230
  projectionPointsImageIds: string[];
231
+ statistics?: ROICachedStats | any[];
231
232
  };
232
233
  handles: {
233
234
  points: Types.Point3[];
234
235
  activeHandleIndex: number | null;
236
+ textBox: {
237
+ hasMoved: boolean;
238
+ worldPosition: Types.Point3;
239
+ worldBoundingBox: {
240
+ topLeft: Types.Point3;
241
+ topRight: Types.Point3;
242
+ bottomLeft: Types.Point3;
243
+ bottomRight: Types.Point3;
244
+ };
245
+ };
235
246
  };
236
247
  };
237
248
  }
@@ -251,15 +262,26 @@ export interface CircleROIStartEndThresholdAnnotation extends Annotation {
251
262
  };
252
263
  data: {
253
264
  label: string;
254
- startSlice: number;
255
- endSlice: number;
265
+ startCoordinate: number;
266
+ endCoordinate: number;
256
267
  cachedStats?: {
257
268
  pointsInVolume: Types.Point3[];
258
269
  projectionPoints: Types.Point3[][];
270
+ statistics?: ROICachedStats | any[];
259
271
  };
260
272
  handles: {
261
273
  points: [Types.Point3, Types.Point3];
262
274
  activeHandleIndex: number | null;
275
+ textBox?: {
276
+ hasMoved: boolean;
277
+ worldPosition: Types.Point3;
278
+ worldBoundingBox: {
279
+ topLeft: Types.Point3;
280
+ topRight: Types.Point3;
281
+ bottomLeft: Types.Point3;
282
+ bottomRight: Types.Point3;
283
+ };
284
+ };
263
285
  };
264
286
  };
265
287
  }
@@ -0,0 +1,3 @@
1
+ import type { Types } from '@cornerstonejs/core';
2
+ import { Annotations } from '../../types';
3
+ export declare function filterAnnotationsWithinSamePlane(annotations: Annotations, camera: Types.ICamera): Annotations;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.filterAnnotationsWithinSamePlane = void 0;
4
+ const gl_matrix_1 = require("gl-matrix");
5
+ const core_1 = require("@cornerstonejs/core");
6
+ const { EPSILON } = core_1.CONSTANTS;
7
+ const PARALLEL_THRESHOLD = 1 - EPSILON;
8
+ function filterAnnotationsWithinSamePlane(annotations, camera) {
9
+ const { viewPlaneNormal } = camera;
10
+ const annotationsWithParallelNormals = annotations.filter((td) => {
11
+ let annotationViewPlaneNormal = td.metadata.viewPlaneNormal;
12
+ if (!annotationViewPlaneNormal) {
13
+ const { referencedImageId } = td.metadata;
14
+ const { imageOrientationPatient } = core_1.metaData.get('imagePlaneModule', referencedImageId);
15
+ const rowCosineVec = gl_matrix_1.vec3.fromValues(imageOrientationPatient[0], imageOrientationPatient[1], imageOrientationPatient[2]);
16
+ const colCosineVec = gl_matrix_1.vec3.fromValues(imageOrientationPatient[3], imageOrientationPatient[4], imageOrientationPatient[5]);
17
+ annotationViewPlaneNormal = gl_matrix_1.vec3.create();
18
+ gl_matrix_1.vec3.cross(annotationViewPlaneNormal, rowCosineVec, colCosineVec);
19
+ td.metadata.viewPlaneNormal = annotationViewPlaneNormal;
20
+ }
21
+ const isParallel = Math.abs(gl_matrix_1.vec3.dot(viewPlaneNormal, annotationViewPlaneNormal)) >
22
+ PARALLEL_THRESHOLD;
23
+ return annotationViewPlaneNormal && isParallel;
24
+ });
25
+ if (!annotationsWithParallelNormals.length) {
26
+ return [];
27
+ }
28
+ return annotationsWithParallelNormals;
29
+ }
30
+ exports.filterAnnotationsWithinSamePlane = filterAnnotationsWithinSamePlane;
31
+ //# sourceMappingURL=filterAnnotationsWithinPlane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterAnnotationsWithinPlane.js","sourceRoot":"","sources":["../../../../src/utilities/planar/filterAnnotationsWithinPlane.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AACjC,8CAA0D;AAI1D,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAS,CAAC;AAE9B,MAAM,kBAAkB,GAAG,CAAC,GAAG,OAAO,CAAC;AAYvC,SAAgB,gCAAgC,CAC9C,WAAwB,EACxB,MAAqB;IAErB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IASnC,MAAM,8BAA8B,GAAG,WAAW,CAAC,MAAM,CACvD,CAAC,EAAc,EAAE,EAAE;QACjB,IAAI,yBAAyB,GAAG,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QAE5D,IAAI,CAAC,yBAAyB,EAAE;YAG9B,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;YAC1C,MAAM,EAAE,uBAAuB,EAAE,GAAG,eAAQ,CAAC,GAAG,CAC9C,kBAAkB,EAClB,iBAAiB,CAClB,CAAC;YACF,MAAM,YAAY,GAAG,gBAAI,CAAC,UAAU,CAClC,uBAAuB,CAAC,CAAC,CAAC,EAC1B,uBAAuB,CAAC,CAAC,CAAC,EAC1B,uBAAuB,CAAC,CAAC,CAAC,CAC3B,CAAC;YAEF,MAAM,YAAY,GAAG,gBAAI,CAAC,UAAU,CAClC,uBAAuB,CAAC,CAAC,CAAC,EAC1B,uBAAuB,CAAC,CAAC,CAAC,EAC1B,uBAAuB,CAAC,CAAC,CAAC,CAC3B,CAAC;YAEF,yBAAyB,GAAG,gBAAI,CAAC,MAAM,EAAkB,CAAC;YAE1D,gBAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;YAClE,EAAE,CAAC,QAAQ,CAAC,eAAe,GAAG,yBAAyB,CAAC;SACzD;QACD,MAAM,UAAU,GACd,IAAI,CAAC,GAAG,CAAC,gBAAI,CAAC,GAAG,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAC;YAC9D,kBAAkB,CAAC;QAErB,OAAO,yBAAyB,IAAI,UAAU,CAAC;IACjD,CAAC,CACF,CAAC;IAGF,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE;QAC1C,OAAO,EAAE,CAAC;KACX;IAED,OAAO,8BAA8B,CAAC;AACxC,CAAC;AAxDD,4EAwDC"}
@@ -3,12 +3,14 @@ import getWorldWidthAndHeightFromCorners from './getWorldWidthAndHeightFromCorne
3
3
  import filterAnnotationsForDisplay from './filterAnnotationsForDisplay';
4
4
  import getPointInLineOfSightWithCriteria from './getPointInLineOfSightWithCriteria';
5
5
  import { isPlaneIntersectingAABB } from './isPlaneIntersectingAABB';
6
+ import { filterAnnotationsWithinSamePlane } from './filterAnnotationsWithinPlane';
6
7
  declare const _default: {
7
8
  filterAnnotationsWithinSlice: typeof filterAnnotationsWithinSlice;
8
9
  getWorldWidthAndHeightFromCorners: typeof getWorldWidthAndHeightFromCorners;
9
10
  filterAnnotationsForDisplay: typeof filterAnnotationsForDisplay;
10
11
  getPointInLineOfSightWithCriteria: typeof getPointInLineOfSightWithCriteria;
11
12
  isPlaneIntersectingAABB: (origin: any, normal: any, minX: any, minY: any, minZ: any, maxX: any, maxY: any, maxZ: any) => boolean;
13
+ filterAnnotationsWithinSamePlane: typeof filterAnnotationsWithinSamePlane;
12
14
  };
13
15
  export default _default;
14
- export { filterAnnotationsWithinSlice, getWorldWidthAndHeightFromCorners, filterAnnotationsForDisplay, getPointInLineOfSightWithCriteria, isPlaneIntersectingAABB, };
16
+ export { filterAnnotationsWithinSlice, getWorldWidthAndHeightFromCorners, filterAnnotationsForDisplay, getPointInLineOfSightWithCriteria, isPlaneIntersectingAABB, filterAnnotationsWithinSamePlane, };
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isPlaneIntersectingAABB = exports.getPointInLineOfSightWithCriteria = exports.filterAnnotationsForDisplay = exports.getWorldWidthAndHeightFromCorners = exports.filterAnnotationsWithinSlice = void 0;
6
+ exports.filterAnnotationsWithinSamePlane = exports.isPlaneIntersectingAABB = exports.getPointInLineOfSightWithCriteria = exports.filterAnnotationsForDisplay = exports.getWorldWidthAndHeightFromCorners = exports.filterAnnotationsWithinSlice = void 0;
7
7
  const filterAnnotationsWithinSlice_1 = __importDefault(require("./filterAnnotationsWithinSlice"));
8
8
  exports.filterAnnotationsWithinSlice = filterAnnotationsWithinSlice_1.default;
9
9
  const getWorldWidthAndHeightFromCorners_1 = __importDefault(require("./getWorldWidthAndHeightFromCorners"));
@@ -14,11 +14,14 @@ const getPointInLineOfSightWithCriteria_1 = __importDefault(require("./getPointI
14
14
  exports.getPointInLineOfSightWithCriteria = getPointInLineOfSightWithCriteria_1.default;
15
15
  const isPlaneIntersectingAABB_1 = require("./isPlaneIntersectingAABB");
16
16
  Object.defineProperty(exports, "isPlaneIntersectingAABB", { enumerable: true, get: function () { return isPlaneIntersectingAABB_1.isPlaneIntersectingAABB; } });
17
+ const filterAnnotationsWithinPlane_1 = require("./filterAnnotationsWithinPlane");
18
+ Object.defineProperty(exports, "filterAnnotationsWithinSamePlane", { enumerable: true, get: function () { return filterAnnotationsWithinPlane_1.filterAnnotationsWithinSamePlane; } });
17
19
  exports.default = {
18
20
  filterAnnotationsWithinSlice: filterAnnotationsWithinSlice_1.default,
19
21
  getWorldWidthAndHeightFromCorners: getWorldWidthAndHeightFromCorners_1.default,
20
22
  filterAnnotationsForDisplay: filterAnnotationsForDisplay_1.default,
21
23
  getPointInLineOfSightWithCriteria: getPointInLineOfSightWithCriteria_1.default,
22
24
  isPlaneIntersectingAABB: isPlaneIntersectingAABB_1.isPlaneIntersectingAABB,
25
+ filterAnnotationsWithinSamePlane: filterAnnotationsWithinPlane_1.filterAnnotationsWithinSamePlane,
23
26
  };
24
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/planar/index.ts"],"names":[],"mappings":";;;;;;AAAA,kGAA0E;AAexE,uCAfK,sCAA4B,CAeL;AAd9B,4GAAoF;AAelF,4CAfK,2CAAiC,CAeL;AAdnC,gGAAwE;AAetE,sCAfK,qCAA2B,CAeL;AAd7B,4GAAoF;AAelF,4CAfK,2CAAiC,CAeL;AAdnC,uEAAoE;AAelE,wGAfO,iDAAuB,OAeP;AAbzB,kBAAe;IACb,4BAA4B,EAA5B,sCAA4B;IAC5B,iCAAiC,EAAjC,2CAAiC;IACjC,2BAA2B,EAA3B,qCAA2B;IAC3B,iCAAiC,EAAjC,2CAAiC;IACjC,uBAAuB,EAAvB,iDAAuB;CACxB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/planar/index.ts"],"names":[],"mappings":";;;;;;AAAA,kGAA0E;AAiBxE,uCAjBK,sCAA4B,CAiBL;AAhB9B,4GAAoF;AAiBlF,4CAjBK,2CAAiC,CAiBL;AAhBnC,gGAAwE;AAiBtE,sCAjBK,qCAA2B,CAiBL;AAhB7B,4GAAoF;AAiBlF,4CAjBK,2CAAiC,CAiBL;AAhBnC,uEAAoE;AAiBlE,wGAjBO,iDAAuB,OAiBP;AAhBzB,iFAAkF;AAiBhF,iHAjBO,+DAAgC,OAiBP;AAflC,kBAAe;IACb,4BAA4B,EAA5B,sCAA4B;IAC5B,iCAAiC,EAAjC,2CAAiC;IACjC,2BAA2B,EAA3B,qCAA2B;IAC3B,iCAAiC,EAAjC,2CAAiC;IACjC,uBAAuB,EAAvB,iDAAuB;IACvB,gCAAgC,EAAhC,+DAAgC;CACjC,CAAC"}
@@ -4,10 +4,7 @@ exports.isViewportPreScaled = void 0;
4
4
  const core_1 = require("@cornerstonejs/core");
5
5
  function isViewportPreScaled(viewport, targetId) {
6
6
  if (viewport instanceof core_1.BaseVolumeViewport) {
7
- const targetIdTokens = targetId.split('volumeId:');
8
- const volumeId = targetIdTokens.length > 1
9
- ? targetIdTokens[1].split('?')[0]
10
- : targetIdTokens[0];
7
+ const volumeId = core_1.utilities.getVolumeId(targetId);
11
8
  const volume = core_1.cache.getVolume(volumeId);
12
9
  return !!(volume === null || volume === void 0 ? void 0 : volume.scaling) && Object.keys(volume.scaling).length > 0;
13
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"isViewportPreScaled.js","sourceRoot":"","sources":["../../../../src/utilities/viewport/isViewportPreScaled.ts"],"names":[],"mappings":";;;AAAA,8CAK6B;AAE7B,SAAS,mBAAmB,CAC1B,QAAsD,EACtD,QAAgB;IAEhB,IAAI,QAAQ,YAAY,yBAAkB,EAAE;QAC1C,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,QAAQ,GACZ,cAAc,CAAC,MAAM,GAAG,CAAC;YACvB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,YAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,CAAC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAA,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KACpE;SAAM,IAAI,QAAQ,YAAY,oBAAa,EAAE;QAC5C,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;QACnD,OAAO,CAAC,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAA,CAAC;KAC3B;SAAM;QACL,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAEQ,kDAAmB"}
1
+ {"version":3,"file":"isViewportPreScaled.js","sourceRoot":"","sources":["../../../../src/utilities/viewport/isViewportPreScaled.ts"],"names":[],"mappings":";;;AAAA,8CAM6B;AAE7B,SAAS,mBAAmB,CAC1B,QAAsD,EACtD,QAAgB;IAEhB,IAAI,QAAQ,YAAY,yBAAkB,EAAE;QAC1C,MAAM,QAAQ,GAAG,gBAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,YAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,CAAC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAA,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KACpE;SAAM,IAAI,QAAQ,YAAY,oBAAa,EAAE;QAC5C,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;QACnD,OAAO,CAAC,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAA,CAAC;KAC3B;SAAM;QACL,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAEQ,kDAAmB"}
@@ -178,6 +178,13 @@ const CursorSVG = {
178
178
  y: 24,
179
179
  },
180
180
  }),
181
+ Height: extend(BASE, {
182
+ iconContent: `<path d="m 6 22 l 8.5 0 v -16 h 8" stroke-width="3" fill="none" stroke="{{color}}" />`,
183
+ viewBox: {
184
+ x: 24,
185
+ y: 24,
186
+ },
187
+ }),
181
188
  Probe: extend(BASE, {
182
189
  iconContent: `<path fill="{{color}}" d="M1152 896q0 106-75 181t-181 75-181-75-75-181 75-181 181-75 181 75
183
190
  75 181zm-256-544q-148 0-273 73t-198 198-73 273 73 273 198 198 273 73 273-73