@cornerstonejs/tools 1.25.0 → 1.26.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 (84) hide show
  1. package/dist/cjs/drawingSvg/drawRedactionRect.d.ts +1 -0
  2. package/dist/cjs/drawingSvg/drawRedactionRect.js +44 -0
  3. package/dist/cjs/drawingSvg/drawRedactionRect.js.map +1 -0
  4. package/dist/cjs/drawingSvg/index.d.ts +2 -1
  5. package/dist/cjs/drawingSvg/index.js +3 -1
  6. package/dist/cjs/drawingSvg/index.js.map +1 -1
  7. package/dist/cjs/eventListeners/touch/touchStartListener.js +0 -8
  8. package/dist/cjs/eventListeners/touch/touchStartListener.js.map +1 -1
  9. package/dist/cjs/index.d.ts +2 -1
  10. package/dist/cjs/index.js +7 -2
  11. package/dist/cjs/index.js.map +1 -1
  12. package/dist/cjs/tools/ZoomTool.js +2 -5
  13. package/dist/cjs/tools/ZoomTool.js.map +1 -1
  14. package/dist/cjs/tools/annotation/VideoRedactionTool.d.ts +46 -0
  15. package/dist/cjs/tools/annotation/VideoRedactionTool.js +492 -0
  16. package/dist/cjs/tools/annotation/VideoRedactionTool.js.map +1 -0
  17. package/dist/cjs/tools/base/AnnotationDisplayTool.d.ts +1 -1
  18. package/dist/cjs/tools/base/AnnotationDisplayTool.js +2 -1
  19. package/dist/cjs/tools/base/AnnotationDisplayTool.js.map +1 -1
  20. package/dist/cjs/tools/base/AnnotationTool.js.map +1 -1
  21. package/dist/cjs/tools/base/BaseTool.js +3 -0
  22. package/dist/cjs/tools/base/BaseTool.js.map +1 -1
  23. package/dist/cjs/types/AnnotationTypes.d.ts +1 -1
  24. package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +20 -0
  25. package/dist/cjs/utilities/planar/filterAnnotationsForDisplay.js +6 -0
  26. package/dist/cjs/utilities/planar/filterAnnotationsForDisplay.js.map +1 -1
  27. package/dist/cjs/utilities/scroll.d.ts +1 -1
  28. package/dist/cjs/utilities/scroll.js +3 -0
  29. package/dist/cjs/utilities/scroll.js.map +1 -1
  30. package/dist/cjs/utilities/viewportFilters/filterViewportsWithFrameOfReferenceUID.d.ts +1 -1
  31. package/dist/cjs/utilities/viewportFilters/filterViewportsWithFrameOfReferenceUID.js.map +1 -1
  32. package/dist/cjs/utilities/viewportFilters/filterViewportsWithToolEnabled.d.ts +1 -1
  33. package/dist/cjs/utilities/viewportFilters/filterViewportsWithToolEnabled.js.map +1 -1
  34. package/dist/esm/drawingSvg/drawRedactionRect.d.ts +1 -0
  35. package/dist/esm/drawingSvg/drawRedactionRect.js +38 -0
  36. package/dist/esm/drawingSvg/drawRedactionRect.js.map +1 -0
  37. package/dist/esm/drawingSvg/index.d.ts +2 -1
  38. package/dist/esm/drawingSvg/index.js +2 -1
  39. package/dist/esm/drawingSvg/index.js.map +1 -1
  40. package/dist/esm/eventListeners/touch/touchStartListener.js +0 -8
  41. package/dist/esm/eventListeners/touch/touchStartListener.js.map +1 -1
  42. package/dist/esm/index.d.ts +2 -1
  43. package/dist/esm/index.js +2 -1
  44. package/dist/esm/index.js.map +1 -1
  45. package/dist/esm/tools/ZoomTool.js +2 -5
  46. package/dist/esm/tools/ZoomTool.js.map +1 -1
  47. package/dist/esm/tools/annotation/VideoRedactionTool.d.ts +46 -0
  48. package/dist/esm/tools/annotation/VideoRedactionTool.js +464 -0
  49. package/dist/esm/tools/annotation/VideoRedactionTool.js.map +1 -0
  50. package/dist/esm/tools/base/AnnotationDisplayTool.d.ts +1 -1
  51. package/dist/esm/tools/base/AnnotationDisplayTool.js +3 -2
  52. package/dist/esm/tools/base/AnnotationDisplayTool.js.map +1 -1
  53. package/dist/esm/tools/base/AnnotationTool.js.map +1 -1
  54. package/dist/esm/tools/base/BaseTool.js +4 -1
  55. package/dist/esm/tools/base/BaseTool.js.map +1 -1
  56. package/dist/esm/types/AnnotationTypes.d.ts +1 -1
  57. package/dist/esm/types/ToolSpecificAnnotationTypes.d.ts +20 -0
  58. package/dist/esm/utilities/planar/filterAnnotationsForDisplay.js +7 -1
  59. package/dist/esm/utilities/planar/filterAnnotationsForDisplay.js.map +1 -1
  60. package/dist/esm/utilities/scroll.d.ts +1 -1
  61. package/dist/esm/utilities/scroll.js +4 -1
  62. package/dist/esm/utilities/scroll.js.map +1 -1
  63. package/dist/esm/utilities/viewportFilters/filterViewportsWithFrameOfReferenceUID.d.ts +1 -1
  64. package/dist/esm/utilities/viewportFilters/filterViewportsWithFrameOfReferenceUID.js.map +1 -1
  65. package/dist/esm/utilities/viewportFilters/filterViewportsWithToolEnabled.d.ts +1 -1
  66. package/dist/esm/utilities/viewportFilters/filterViewportsWithToolEnabled.js.map +1 -1
  67. package/dist/umd/index.js +1 -1
  68. package/dist/umd/index.js.map +1 -1
  69. package/package.json +3 -3
  70. package/src/drawingSvg/drawRedactionRect.ts +62 -0
  71. package/src/drawingSvg/index.ts +2 -0
  72. package/src/eventListeners/touch/touchStartListener.ts +3 -10
  73. package/src/index.ts +3 -0
  74. package/src/tools/ZoomTool.ts +2 -10
  75. package/src/tools/annotation/VideoRedactionTool.ts +788 -0
  76. package/src/tools/base/AnnotationDisplayTool.ts +6 -3
  77. package/src/tools/base/AnnotationTool.ts +1 -1
  78. package/src/tools/base/BaseTool.ts +3 -0
  79. package/src/types/AnnotationTypes.ts +1 -1
  80. package/src/types/ToolSpecificAnnotationTypes.ts +21 -0
  81. package/src/utilities/planar/filterAnnotationsForDisplay.ts +7 -0
  82. package/src/utilities/scroll.ts +4 -1
  83. package/src/utilities/viewportFilters/filterViewportsWithFrameOfReferenceUID.ts +1 -1
  84. package/src/utilities/viewportFilters/filterViewportsWithToolEnabled.ts +1 -1
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  utilities,
3
3
  getEnabledElement,
4
- VolumeViewport,
5
4
  StackViewport,
6
5
  cache,
6
+ VideoViewport,
7
7
  } from '@cornerstonejs/core';
8
8
  import type { Types } from '@cornerstonejs/core';
9
9
 
@@ -123,7 +123,7 @@ abstract class AnnotationDisplayTool extends BaseTool {
123
123
  };
124
124
 
125
125
  protected getReferencedImageId(
126
- viewport: Types.IStackViewport | Types.IVolumeViewport,
126
+ viewport: Types.IViewport,
127
127
  worldPos: Types.Point3,
128
128
  viewPlaneNormal: Types.Point3,
129
129
  viewUp: Types.Point3
@@ -132,7 +132,10 @@ abstract class AnnotationDisplayTool extends BaseTool {
132
132
 
133
133
  let referencedImageId;
134
134
 
135
- if (viewport instanceof StackViewport) {
135
+ if (
136
+ viewport instanceof StackViewport ||
137
+ viewport instanceof VideoViewport
138
+ ) {
136
139
  referencedImageId = targetId.split('imageId:')[1];
137
140
  } else {
138
141
  const volumeId = targetId.split('volumeId:')[1];
@@ -219,7 +219,7 @@ abstract class AnnotationTool extends AnnotationDisplayTool {
219
219
  canvasCoords[1] <= canvasBoundingBox.bottomRight[1]
220
220
  ) {
221
221
  data.handles.activeHandleIndex = null;
222
- return textBox;
222
+ return textBox as ToolHandle;
223
223
  }
224
224
  }
225
225
  }
@@ -2,6 +2,7 @@ import {
2
2
  StackViewport,
3
3
  utilities,
4
4
  BaseVolumeViewport,
5
+ VideoViewport,
5
6
  } from '@cornerstonejs/core';
6
7
  import { Types } from '@cornerstonejs/core';
7
8
  import { ToolModes } from '../../enums';
@@ -205,6 +206,8 @@ abstract class BaseTool implements IBaseTool {
205
206
  return `imageId:${viewport.getCurrentImageId()}`;
206
207
  } else if (viewport instanceof BaseVolumeViewport) {
207
208
  return `volumeId:${this.getTargetVolumeId(viewport)}`;
209
+ } else if (viewport instanceof VideoViewport) {
210
+ return '';
208
211
  } else {
209
212
  throw new Error(
210
213
  'getTargetId: viewport must be a StackViewport or VolumeViewport'
@@ -65,7 +65,7 @@ type Annotation = {
65
65
  /** the world location of the text box */
66
66
  worldPosition: Types.Point3;
67
67
  /** text box bounding box information */
68
- worldBoundingBox: {
68
+ worldBoundingBox?: {
69
69
  /** Top left location of the text box in the world space */
70
70
  topLeft: Types.Point3;
71
71
  /** Top right location of the text box in the world space */
@@ -368,3 +368,24 @@ export interface ScaleOverlayAnnotation extends Annotation {
368
368
  viewportId: string;
369
369
  };
370
370
  }
371
+
372
+ export interface VideoRedactionAnnotation extends Annotation {
373
+ metadata: {
374
+ viewPlaneNormal: Types.Point3;
375
+ viewUp: Types.Point3;
376
+ FrameOfReferenceUID: string;
377
+ referencedImageId: string;
378
+ toolName: string;
379
+ };
380
+ data: {
381
+ invalidated: boolean;
382
+ handles: {
383
+ points: Types.Point3[];
384
+ activeHandleIndex: number | null;
385
+ };
386
+ cachedStats: {
387
+ [key: string]: any; // Can be more specific if the structure is known
388
+ };
389
+ active: boolean;
390
+ };
391
+ }
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  StackViewport,
3
3
  VolumeViewport,
4
+ VideoViewport,
4
5
  Types,
5
6
  utilities as csUtils,
6
7
  } from '@cornerstonejs/core';
@@ -50,6 +51,12 @@ export default function filterAnnotationsForDisplay(
50
51
  const referenceImageURI = imageId.substring(colonIndex + 1);
51
52
  return referenceImageURI === imageURI;
52
53
  });
54
+ } else if (viewport instanceof VideoViewport) {
55
+ const frameOfReferenceUID: string = viewport.getFrameOfReferenceUID();
56
+
57
+ return annotations.filter((toolData) => {
58
+ return toolData.metadata.FrameOfReferenceUID === frameOfReferenceUID;
59
+ });
53
60
  } else if (viewport instanceof VolumeViewport) {
54
61
  const camera = viewport.getCamera();
55
62
 
@@ -6,6 +6,7 @@ import {
6
6
  EVENTS,
7
7
  utilities as csUtils,
8
8
  getEnabledElement,
9
+ VideoViewport,
9
10
  } from '@cornerstonejs/core';
10
11
  import { ScrollOptions, EventTypes } from '../types';
11
12
 
@@ -19,7 +20,7 @@ import { ScrollOptions, EventTypes } from '../types';
19
20
  * @returns
20
21
  */
21
22
  export default function scroll(
22
- viewport: Types.IStackViewport | Types.IVolumeViewport,
23
+ viewport: Types.IViewport,
23
24
  options: ScrollOptions
24
25
  ): void {
25
26
  // check if viewport is disabled then throw error
@@ -43,6 +44,8 @@ export default function scroll(
43
44
  viewport.scroll(delta, options.debounceLoading, options.loop);
44
45
  } else if (viewport instanceof VolumeViewport) {
45
46
  scrollVolume(viewport, volumeId, delta);
47
+ } else if (viewport instanceof VideoViewport) {
48
+ viewport.scroll(delta);
46
49
  } else {
47
50
  throw new Error(`Not implemented for Viewport Type: ${viewportType}`);
48
51
  }
@@ -10,7 +10,7 @@ import type { Types } from '@cornerstonejs/core';
10
10
  * @returns A filtered array of viewports.
11
11
  */
12
12
  export default function filterViewportsWithFrameOfReferenceUID(
13
- viewports: Array<Types.IStackViewport | Types.IVolumeViewport>,
13
+ viewports: Array<Types.IViewport>,
14
14
  FrameOfReferenceUID: string
15
15
  ): Array<Types.IStackViewport | Types.IVolumeViewport> {
16
16
  const numViewports = viewports.length;
@@ -14,7 +14,7 @@ const { Active, Passive, Enabled } = ToolModes;
14
14
  * @returns A filtered array of viewports.
15
15
  */
16
16
  export default function filterViewportsWithToolEnabled(
17
- viewports: Array<Types.IStackViewport | Types.IVolumeViewport>,
17
+ viewports: Array<Types.IViewport>,
18
18
  toolName: string
19
19
  ): Array<Types.IStackViewport | Types.IVolumeViewport> {
20
20
  const numViewports = viewports.length;