box-annotations 5.3.0 → 5.3.1-beta.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 (94) hide show
  1. package/dist/annotations.css +1 -1
  2. package/dist/annotations.js +1 -1
  3. package/dist/annotations.js.LICENSE.txt +0 -9
  4. package/i18n/bn-IN.js +6 -0
  5. package/i18n/bn-IN.properties +12 -0
  6. package/i18n/da-DK.js +6 -0
  7. package/i18n/da-DK.properties +12 -0
  8. package/i18n/de-DE.js +6 -0
  9. package/i18n/de-DE.properties +12 -0
  10. package/i18n/en-AU.js +6 -0
  11. package/i18n/en-AU.properties +12 -0
  12. package/i18n/en-CA.js +6 -0
  13. package/i18n/en-CA.properties +12 -0
  14. package/i18n/en-GB.js +6 -0
  15. package/i18n/en-GB.properties +12 -0
  16. package/i18n/es-419.js +6 -0
  17. package/i18n/es-419.properties +12 -0
  18. package/i18n/es-ES.js +6 -0
  19. package/i18n/es-ES.properties +12 -0
  20. package/i18n/fi-FI.js +6 -0
  21. package/i18n/fi-FI.properties +12 -0
  22. package/i18n/fr-CA.js +6 -0
  23. package/i18n/fr-CA.properties +12 -0
  24. package/i18n/fr-FR.js +6 -0
  25. package/i18n/fr-FR.properties +12 -0
  26. package/i18n/hi-IN.js +6 -0
  27. package/i18n/hi-IN.properties +12 -0
  28. package/i18n/it-IT.js +6 -0
  29. package/i18n/it-IT.properties +12 -0
  30. package/i18n/ja-JP.js +7 -1
  31. package/i18n/ja-JP.properties +13 -1
  32. package/i18n/ko-KR.js +6 -0
  33. package/i18n/ko-KR.properties +12 -0
  34. package/i18n/nb-NO.js +6 -0
  35. package/i18n/nb-NO.properties +12 -0
  36. package/i18n/nl-NL.js +6 -0
  37. package/i18n/nl-NL.properties +12 -0
  38. package/i18n/pl-PL.js +6 -0
  39. package/i18n/pl-PL.properties +12 -0
  40. package/i18n/pt-BR.js +6 -0
  41. package/i18n/pt-BR.properties +12 -0
  42. package/i18n/ru-RU.js +6 -0
  43. package/i18n/ru-RU.properties +12 -0
  44. package/i18n/sv-SE.js +6 -0
  45. package/i18n/sv-SE.properties +12 -0
  46. package/i18n/tr-TR.js +6 -0
  47. package/i18n/tr-TR.properties +12 -0
  48. package/i18n/zh-CN.js +6 -0
  49. package/i18n/zh-CN.properties +12 -0
  50. package/i18n/zh-TW.js +6 -0
  51. package/i18n/zh-TW.properties +12 -0
  52. package/package.json +23 -22
  53. package/src/BoxAnnotations.ts +1 -1
  54. package/src/adapters/threadedAnnotationsAdapters.ts +10 -2
  55. package/src/boundingBoxHighlight/BoundingBoxHighlightContainer.tsx +4 -1
  56. package/src/common/BaseAnnotator.scss +1 -1
  57. package/src/common/DeselectListener.tsx +1 -1
  58. package/src/components/BoundingBoxHighlight/BoundingBoxHighlightNav.scss +3 -3
  59. package/src/components/BoundingBoxHighlight/BoundingBoxHighlightRect.scss +11 -6
  60. package/src/components/Popups/PopupBase.scss +2 -2
  61. package/src/components/Popups/PopupDrawingToolbar.scss +4 -4
  62. package/src/components/Popups/PopupList.scss +1 -1
  63. package/src/components/Popups/PopupV2.scss +2 -2
  64. package/src/components/Popups/PopupV2.tsx +30 -43
  65. package/src/components/ReplyForm/ReplyForm.tsx +1 -8
  66. package/src/constants.ts +2 -3
  67. package/src/document/DocumentAnnotator.ts +28 -5
  68. package/src/document/docUtil.ts +7 -1
  69. package/src/drawing/DrawingAnnotations.tsx +24 -24
  70. package/src/drawing/DrawingCursor.ts +2 -1
  71. package/src/drawing/DrawingManager.tsx +9 -1
  72. package/src/highlight/HighlightAnnotations.tsx +23 -22
  73. package/src/highlight/HighlightCreator.scss +9 -2
  74. package/src/media/MediaAnnotator.ts +38 -16
  75. package/src/popup/PopupLayer.tsx +1 -5
  76. package/src/region/RegionAnnotations.tsx +2 -3
  77. package/src/region/RegionCreation.tsx +4 -1
  78. package/src/region/RegionCreationManager.tsx +8 -1
  79. package/src/region/RegionCreator.scss +9 -3
  80. package/src/region/RegionManager.tsx +8 -1
  81. package/src/region/RegionRect.scss +17 -9
  82. package/src/store/annotations/actions.ts +86 -104
  83. package/src/store/annotations/reducer.ts +4 -4
  84. package/src/store/creator/selectors.ts +6 -6
  85. package/src/store/eventing/create.ts +4 -2
  86. package/src/store/eventing/delete.ts +4 -5
  87. package/src/store/eventing/middleware.ts +13 -11
  88. package/src/store/eventing/replyCreate.ts +6 -10
  89. package/src/store/eventing/replyDelete.ts +5 -9
  90. package/src/store/eventing/replyUpdate.ts +6 -10
  91. package/src/store/eventing/update.ts +5 -6
  92. package/src/store/highlight/actions.ts +43 -41
  93. package/src/test-utils/videoAnnotations.tsx +11 -11
  94. package/src/utils/useVideoTiming.ts +9 -13
@@ -142,10 +142,7 @@ const PopupV2 = ({ annotationId, onSubmit, popupPortalEl, reference }: Props): J
142
142
  const capturedToken = token;
143
143
  const url = await fetchAvatarBlob(capturedApiHost, capturedToken, fileId, userId);
144
144
  if (!url) return null;
145
- if (
146
- credentialsRef.current.apiHost !== capturedApiHost ||
147
- credentialsRef.current.token !== capturedToken
148
- ) {
145
+ if (credentialsRef.current.apiHost !== capturedApiHost || credentialsRef.current.token !== capturedToken) {
149
146
  URL.revokeObjectURL(url);
150
147
  return null;
151
148
  }
@@ -225,11 +222,9 @@ const PopupV2 = ({ annotationId, onSubmit, popupPortalEl, reference }: Props): J
225
222
 
226
223
  const isResolved = annotation?.status === 'resolved';
227
224
  const resolvedBy = isResolved
228
- ? annotation?.resolution?.resolved_by?.name ?? annotation?.modified_by?.name
229
- : undefined;
230
- const resolvedAtSource = isResolved
231
- ? annotation?.resolution?.resolved_at ?? annotation?.modified_at
225
+ ? (annotation?.resolution?.resolved_by?.name ?? annotation?.modified_by?.name)
232
226
  : undefined;
227
+ const resolvedAtSource = isResolved ? (annotation?.resolution?.resolved_at ?? annotation?.modified_at) : undefined;
233
228
  const resolvedAt = resolvedAtSource ? new Date(resolvedAtSource).getTime() : undefined;
234
229
 
235
230
  const userSelectorProps = React.useMemo(
@@ -288,14 +283,11 @@ const PopupV2 = ({ annotationId, onSubmit, popupPortalEl, reference }: Props): J
288
283
  [annotationId, dispatch, isRichTextEnabled],
289
284
  );
290
285
 
291
- const handleThreadDelete = React.useCallback(
292
- async (): Promise<void> => {
293
- if (annotationId) {
294
- await dispatch(deleteAnnotationAction(annotationId));
295
- }
296
- },
297
- [annotationId, dispatch],
298
- );
286
+ const handleThreadDelete = React.useCallback(async (): Promise<void> => {
287
+ if (annotationId) {
288
+ await dispatch(deleteAnnotationAction(annotationId));
289
+ }
290
+ }, [annotationId, dispatch]);
299
291
 
300
292
  const handleDelete = React.useCallback(
301
293
  async (id: string): Promise<void> => {
@@ -305,24 +297,18 @@ const PopupV2 = ({ annotationId, onSubmit, popupPortalEl, reference }: Props): J
305
297
  [annotationId, dispatch],
306
298
  );
307
299
 
308
- const handleResolve = React.useCallback(
309
- async (): Promise<void> => {
310
- if (!annotationId) return;
311
- const result = await dispatch(updateAnnotationAction({ annotationId, payload: { status: 'resolved' } }));
312
- if (updateAnnotationAction.fulfilled.match(result)) {
313
- dispatch(setActiveAnnotationIdAction(null));
314
- }
315
- },
316
- [annotationId, dispatch],
317
- );
300
+ const handleResolve = React.useCallback(async (): Promise<void> => {
301
+ if (!annotationId) return;
302
+ const result = await dispatch(updateAnnotationAction({ annotationId, payload: { status: 'resolved' } }));
303
+ if (updateAnnotationAction.fulfilled.match(result)) {
304
+ dispatch(setActiveAnnotationIdAction(null));
305
+ }
306
+ }, [annotationId, dispatch]);
318
307
 
319
- const handleUnresolve = React.useCallback(
320
- async (): Promise<void> => {
321
- if (!annotationId) return;
322
- await dispatch(updateAnnotationAction({ annotationId, payload: { status: 'open' } }));
323
- },
324
- [annotationId, dispatch],
325
- );
308
+ const handleUnresolve = React.useCallback(async (): Promise<void> => {
309
+ if (!annotationId) return;
310
+ await dispatch(updateAnnotationAction({ annotationId, payload: { status: 'open' } }));
311
+ }, [annotationId, dispatch]);
326
312
 
327
313
  if (!popupPortalEl) return null;
328
314
 
@@ -331,25 +317,26 @@ const PopupV2 = ({ annotationId, onSubmit, popupPortalEl, reference }: Props): J
331
317
  <div
332
318
  ref={popupRef}
333
319
  aria-label={intl.formatMessage(messages.ariaLabelComment)}
334
- className="ba-PopupV2"
320
+ className="ba-PopupAnnotation"
335
321
  data-resin-component={annotationId ? 'popupThreadV2' : 'popupReplyV2'}
336
- onClick={handleEvent}
322
+ data-resin-feature="annotations"
337
323
  onMouseDown={handleEvent}
338
324
  onMouseMove={handleEvent}
339
- onMouseUp={handleEvent}
340
325
  onTouchMove={handleEvent}
341
326
  onTouchStart={handleEvent}
342
327
  role="presentation"
343
328
  >
344
329
  <BlueprintModernizationProvider enableModernizedComponents>
345
330
  <TooltipProvider>
346
- <MentionContextProvider value={{
347
- collaborationPopoverProps: {
348
- onSubmit: () => Promise.resolve(),
349
- },
350
- // Mentions are restricted to file collaborators; the invite popover is intentionally never shown.
351
- fetchCollaboratorState: async () => true,
352
- }}>
331
+ <MentionContextProvider
332
+ value={{
333
+ collaborationPopoverProps: {
334
+ onSubmit: () => Promise.resolve(),
335
+ },
336
+ // Mentions are restricted to file collaborators; the invite popover is intentionally never shown.
337
+ fetchCollaboratorState: async () => true,
338
+ }}
339
+ >
353
340
  {annotationId ? (
354
341
  <ThreadedAnnotationsV2
355
342
  isAnnotations
@@ -70,14 +70,7 @@ const ReplyForm = (props: Props): JSX.Element => {
70
70
  }, [formRef]); // eslint-disable-line react-hooks/exhaustive-deps
71
71
 
72
72
  return (
73
- <Form
74
- ref={formRef}
75
- className="ba-ReplyForm"
76
- data-testid="ba-ReplyForm"
77
- onPointerEnterCapture={undefined}
78
- onPointerLeaveCapture={undefined}
79
- placeholder={undefined}
80
- >
73
+ <Form ref={formRef} className="ba-ReplyForm" data-testid="ba-ReplyForm">
81
74
  <div className="ba-Popup-main">
82
75
  <ReplyField
83
76
  className="ba-Popup-field"
package/src/constants.ts CHANGED
@@ -9,14 +9,13 @@ export const MOUSE_PRIMARY = 1;
9
9
 
10
10
  /**
11
11
  * This is the default location index for video annotations.
12
- * Documents have locations that represent a page but that doesn't apply to
12
+ * Documents have locations that represent a page but that doesn't apply to
13
13
  * videos as they have no pages. The annnotations managers take locations as
14
- * parameters so we need to provide a default value that indicates that this is a
14
+ * parameters so we need to provide a default value that indicates that this is a
15
15
  * video annotation.
16
16
  */
17
17
  export const MEDIA_LOCATION_INDEX = -1;
18
18
 
19
-
20
19
  export enum TARGET_TYPE {
21
20
  FRAME = 'frame',
22
21
  PAGE = 'page',
@@ -97,13 +97,29 @@ export default class DocumentAnnotator extends BaseAnnotator {
97
97
  // Lazily instantiate managers as pages are added or re-rendered
98
98
  if (managers.size === 0) {
99
99
  if (viewMode === 'boundingBoxes') {
100
- managers.add(new BoundingBoxHighlightManager({ location: pageNumber, referenceEl: pageReferenceEl, resinTags }));
100
+ managers.add(
101
+ new BoundingBoxHighlightManager({ location: pageNumber, referenceEl: pageReferenceEl, resinTags }),
102
+ );
101
103
  return managers;
102
104
  }
103
105
 
104
106
  // Annotations mode
105
- managers.add(new PopupManager({ location: pageNumber, popupPortalEl: this.popupPortalEl, referenceEl: pageReferenceEl, resinTags }));
106
- managers.add(new DrawingManager({ location: pageNumber, popupPortalEl: this.popupPortalEl, referenceEl: pageReferenceEl, resinTags }));
107
+ managers.add(
108
+ new PopupManager({
109
+ location: pageNumber,
110
+ popupPortalEl: this.popupPortalEl,
111
+ referenceEl: pageReferenceEl,
112
+ resinTags,
113
+ }),
114
+ );
115
+ managers.add(
116
+ new DrawingManager({
117
+ location: pageNumber,
118
+ popupPortalEl: this.popupPortalEl,
119
+ referenceEl: pageReferenceEl,
120
+ resinTags,
121
+ }),
122
+ );
107
123
 
108
124
  const textLayer = pageEl.querySelector('.textLayer') as HTMLElement;
109
125
 
@@ -118,7 +134,14 @@ export default class DocumentAnnotator extends BaseAnnotator {
118
134
  );
119
135
  }
120
136
 
121
- managers.add(new HighlightManager({ location: pageNumber, popupPortalEl: this.popupPortalEl, referenceEl: pageReferenceEl, resinTags }));
137
+ managers.add(
138
+ new HighlightManager({
139
+ location: pageNumber,
140
+ popupPortalEl: this.popupPortalEl,
141
+ referenceEl: pageReferenceEl,
142
+ resinTags,
143
+ }),
144
+ );
122
145
  managers.add(new RegionManager({ location: pageNumber, referenceEl: pageReferenceEl, resinTags }));
123
146
 
124
147
  const canvasLayerEl = pageEl.querySelector<HTMLElement>('.canvasWrapper');
@@ -220,7 +243,7 @@ export default class DocumentAnnotator extends BaseAnnotator {
220
243
  width: `${origWidth}px`,
221
244
  });
222
245
  } else {
223
- manager.style({height: '', left: '', top: '', transform: '', width: ''});
246
+ manager.style({ height: '', left: '', top: '', transform: '', width: '' });
224
247
  }
225
248
 
226
249
  manager.render({
@@ -62,5 +62,11 @@ export function getSelection(): Selection | null {
62
62
  location = getPageNumber(selection.focusNode as Element) ?? endPage;
63
63
  }
64
64
 
65
- return { containerEl: containerEl as HTMLElement, containerRect: containerEl.getBoundingClientRect(), hasError, location, range };
65
+ return {
66
+ containerEl: containerEl as HTMLElement,
67
+ containerRect: containerEl.getBoundingClientRect(),
68
+ hasError,
69
+ location,
70
+ range,
71
+ };
66
72
  }
@@ -91,7 +91,7 @@ const DrawingAnnotations = (props: Props): JSX.Element => {
91
91
  redoDrawingPathGroup();
92
92
  };
93
93
 
94
- const getCurrentLocation = (): number => {
94
+ const getCurrentLocation = (): number => {
95
95
  if (targetType === TARGET_TYPE.FRAME) {
96
96
  return getCurrentVideoLocation();
97
97
  }
@@ -121,12 +121,11 @@ const DrawingAnnotations = (props: Props): JSX.Element => {
121
121
  }
122
122
  }, [drawnPathGroups]);
123
123
 
124
-
125
124
  let annotationsToShow: AnnotationDrawing[] = [];
126
- // For video annotations, we only show the active annotation and we wait for the video
125
+ // For video annotations, we only show the active annotation and we wait for the video
127
126
  // to seek to the annotation location before showing it. This prevents annoations from being
128
127
  // shown on the incorrect frame while the video is seeking.
129
- if (targetType === TARGET_TYPE.FRAME ) {
128
+ if (targetType === TARGET_TYPE.FRAME) {
130
129
  if (!isVideoSeeking && activeAnnotationId) {
131
130
  annotationsToShow = annotations.filter(annotation => annotation.id === activeAnnotationId);
132
131
  }
@@ -134,9 +133,6 @@ const DrawingAnnotations = (props: Props): JSX.Element => {
134
133
  annotationsToShow = annotations;
135
134
  }
136
135
 
137
-
138
-
139
-
140
136
  return (
141
137
  <>
142
138
  <DrawingList
@@ -179,23 +175,27 @@ const DrawingAnnotations = (props: Props): JSX.Element => {
179
175
  />
180
176
  )}
181
177
 
182
- {isCreating && hasPathGroups && drawingSVGGroup && canShowPopupToolbar && (() => {
183
- const toolbar = (
184
- <PopupDrawingToolbar
185
- ref={popupDrawingToolbarRef}
186
- canComment={hasDrawnPathGroups}
187
- canRedo={hasStashedPathGroups}
188
- canUndo={hasDrawnPathGroups}
189
- className={classNames('ba-DrawingAnnotations-toolbar', { 'ba-is-drawing': isDrawing })}
190
- onDelete={handleDelete}
191
- onRedo={handleRedo}
192
- onReply={handleReply}
193
- onUndo={handleUndo}
194
- reference={drawingSVGGroup}
195
- />
196
- );
197
- return popupPortalEl ? ReactDOM.createPortal(toolbar, popupPortalEl) : toolbar;
198
- })()}
178
+ {isCreating &&
179
+ hasPathGroups &&
180
+ drawingSVGGroup &&
181
+ canShowPopupToolbar &&
182
+ (() => {
183
+ const toolbar = (
184
+ <PopupDrawingToolbar
185
+ ref={popupDrawingToolbarRef}
186
+ canComment={hasDrawnPathGroups}
187
+ canRedo={hasStashedPathGroups}
188
+ canUndo={hasDrawnPathGroups}
189
+ className={classNames('ba-DrawingAnnotations-toolbar', { 'ba-is-drawing': isDrawing })}
190
+ onDelete={handleDelete}
191
+ onRedo={handleRedo}
192
+ onReply={handleReply}
193
+ onUndo={handleUndo}
194
+ reference={drawingSVGGroup}
195
+ />
196
+ );
197
+ return popupPortalEl ? ReactDOM.createPortal(toolbar, popupPortalEl) : toolbar;
198
+ })()}
199
199
  </>
200
200
  );
201
201
  };
@@ -1,5 +1,6 @@
1
1
  const getDrawingCursor = (color: string): string => {
2
- const encodedSvg = encodeURIComponent(`<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='32' height='32' viewBox='0 0 32 32'>
2
+ const encodedSvg =
3
+ encodeURIComponent(`<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='32' height='32' viewBox='0 0 32 32'>
3
4
  <defs>
4
5
  <path id='ba-DrawingCursor-b' d='M23.0868949,12.6610542 L21.7362465,14.0116939 C21.5985448,14.1493947 21.3758783,14.1493947 21.2381766,14.0116939 L17.9860729,10.7596114 C17.8483713,10.6219106 17.8483713,10.3992455 17.9860729,10.2615447 L19.3367214,8.91090502 C19.8845983,8.36303166 20.7752645,8.36303166 21.3260713,8.91090502 L23.0868949,10.6717173 C23.6377017,11.2195906 23.6377017,12.1102511 23.0868949,12.6610542 Z M16.825863,11.4217471 L9.13214756,19.1154126 L8.51102507,22.6751246 C8.4260602,23.1556124 8.8450249,23.5716446 9.32551588,23.4896101 L12.8852509,22.8655618 L20.5789664,15.1718963 C20.7166681,15.0341955 20.7166681,14.8115304 20.5789664,14.6738296 L17.3268627,11.4217471 C17.1862312,11.2840463 16.9635647,11.2840463 16.825863,11.4217471 Z M12.1352162,18.4562067 C11.974076,18.2950675 11.974076,18.0372447 12.1352162,17.8761055 L16.6471438,13.3642072 C16.8082841,13.203068 17.0661085,13.203068 17.2272488,13.3642072 C17.388389,13.5253464 17.388389,13.7831692 17.2272488,13.9443084 L12.7153212,18.4562067 C12.5541809,18.6173459 12.2963565,18.6173459 12.1352162,18.4562067 L12.1352162,18.4562067 Z M11.0775501,20.9201719 L12.4838652,20.9201719 L12.4838652,21.9836908 L10.5941293,22.3147587 L9.6829543,21.4035896 L10.0140243,19.513866 L11.0775501,19.513866 L11.0775501,20.9201719 Z'/>
5
6
  <filter id='ba-DrawingCursor-a' width='196.7%' height='196.7%' x='-48.3%' y='-41.7%' filterUnits='objectBoundingBox'>
@@ -25,6 +25,14 @@ export default class DrawingListManager extends BaseManager {
25
25
  this.root = ReactDOM.createRoot(this.reactEl);
26
26
  }
27
27
 
28
- this.root.render(<DrawingAnnotationsContainer referenceEl={this.referenceEl} targetType={this.targetType} location={this.location} popupPortalEl={this.popupPortalEl} {...props} />);
28
+ this.root.render(
29
+ <DrawingAnnotationsContainer
30
+ referenceEl={this.referenceEl}
31
+ targetType={this.targetType}
32
+ location={this.location}
33
+ popupPortalEl={this.popupPortalEl}
34
+ {...props}
35
+ />,
36
+ );
29
37
  }
30
38
  }
@@ -126,30 +126,31 @@ const HighlightAnnotations = (props: Props): JSX.Element => {
126
126
  )}
127
127
 
128
128
  {/* Layer 3a: Annotations promoter to promote selection to staged */}
129
- {!isCreating && selection && !selection.hasError && (() => {
130
- const popupShape = selection.popupRect || getBoundingRect(selection.rects);
131
- const popup = (
132
- <div className="ba-HighlightAnnotations-popup">
133
- <PopupHighlight
134
- onCancel={handleCancel}
135
- onSubmit={handlePromote}
136
- shape={popupShape}
137
- />
138
- </div>
139
- );
140
- return rotation && popupPortalEl ? ReactDOM.createPortal(popup, popupPortalEl) : popup;
141
- })()}
129
+ {!isCreating &&
130
+ selection &&
131
+ !selection.hasError &&
132
+ (() => {
133
+ const popupShape = selection.popupRect || getBoundingRect(selection.rects);
134
+ const popup = (
135
+ <div className="ba-HighlightAnnotations-popup">
136
+ <PopupHighlight onCancel={handleCancel} onSubmit={handlePromote} shape={popupShape} />
137
+ </div>
138
+ );
139
+ return rotation && popupPortalEl ? ReactDOM.createPortal(popup, popupPortalEl) : popup;
140
+ })()}
142
141
 
143
142
  {/* Layer 3b: Highlight error popup */}
144
- {selection && selection.hasError && (() => {
145
- const popupShape = selection.popupRect || getBoundingRect(selection.rects);
146
- const popup = (
147
- <div className="ba-HighlightAnnotations-popup">
148
- <PopupHighlightError onCancel={handleCancel} shape={popupShape} />
149
- </div>
150
- );
151
- return rotation && popupPortalEl ? ReactDOM.createPortal(popup, popupPortalEl) : popup;
152
- })()}
143
+ {selection &&
144
+ selection.hasError &&
145
+ (() => {
146
+ const popupShape = selection.popupRect || getBoundingRect(selection.rects);
147
+ const popup = (
148
+ <div className="ba-HighlightAnnotations-popup">
149
+ <PopupHighlightError onCancel={handleCancel} shape={popupShape} />
150
+ </div>
151
+ );
152
+ return rotation && popupPortalEl ? ReactDOM.createPortal(popup, popupPortalEl) : popup;
153
+ })()}
153
154
  </>
154
155
  );
155
156
  };
@@ -7,6 +7,13 @@ $text_cursor_32_3x: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAA
7
7
  $offset_x: 10;
8
8
  $offset_y: 16;
9
9
 
10
- cursor: url($text_cursor_32) $offset_x $offset_y, text; /* Legacy */
11
- cursor: image-set(url($text_cursor_32) 1x, url($text_cursor_32_2x) 2x, url($text_cursor_32_3x) 3x) $offset_x $offset_y, text; /* Webkit */ /* stylelint-disable-line */
10
+ cursor:
11
+ url($text_cursor_32) $offset_x $offset_y,
12
+ text; /* Legacy */
13
+
14
+ /* stylelint-disable unit-no-unknown */
15
+ cursor:
16
+ image-set(url($text_cursor_32) 1x, url($text_cursor_32_2x) 2x, url($text_cursor_32_3x) 3x) $offset_x $offset_y,
17
+ text; /* Webkit */
18
+ /* stylelint-enable unit-no-unknown */
12
19
  }
@@ -27,7 +27,6 @@ export default class MediaAnnotator extends BaseAnnotator {
27
27
  }
28
28
 
29
29
  destroy(): void {
30
-
31
30
  // If the store handler is present, unsubscribe from the store.
32
31
  if (this.storeHandler) {
33
32
  this.storeHandler();
@@ -44,12 +43,40 @@ export default class MediaAnnotator extends BaseAnnotator {
44
43
  return this.containerEl?.querySelector(VIDEO_PARENT_SELECTOR);
45
44
  }
46
45
 
47
-
48
- addManagers(referenceEl: HTMLVideoElement, resinTags: { fileid: string|null; iscurrent: boolean }): void {
49
- this.managers.add(new PopupManager({ location: MEDIA_LOCATION_INDEX, popupPortalEl: this.popupPortalEl, referenceEl, resinTags, targetType: TARGET_TYPE.FRAME }));
50
- this.managers.add(new DrawingManager({ location: MEDIA_LOCATION_INDEX, referenceEl, resinTags, targetType: TARGET_TYPE.FRAME }));
51
- this.managers.add(new RegionManager({ location: MEDIA_LOCATION_INDEX, referenceEl, resinTags, targetType: TARGET_TYPE.FRAME }));
52
- this.managers.add(new RegionCreationManager({ location: MEDIA_LOCATION_INDEX, referenceEl, resinTags, targetType: TARGET_TYPE.FRAME }));
46
+ addManagers(referenceEl: HTMLVideoElement, resinTags: { fileid: string | null; iscurrent: boolean }): void {
47
+ this.managers.add(
48
+ new PopupManager({
49
+ location: MEDIA_LOCATION_INDEX,
50
+ popupPortalEl: this.popupPortalEl,
51
+ referenceEl,
52
+ resinTags,
53
+ targetType: TARGET_TYPE.FRAME,
54
+ }),
55
+ );
56
+ this.managers.add(
57
+ new DrawingManager({
58
+ location: MEDIA_LOCATION_INDEX,
59
+ referenceEl,
60
+ resinTags,
61
+ targetType: TARGET_TYPE.FRAME,
62
+ }),
63
+ );
64
+ this.managers.add(
65
+ new RegionManager({
66
+ location: MEDIA_LOCATION_INDEX,
67
+ referenceEl,
68
+ resinTags,
69
+ targetType: TARGET_TYPE.FRAME,
70
+ }),
71
+ );
72
+ this.managers.add(
73
+ new RegionCreationManager({
74
+ location: MEDIA_LOCATION_INDEX,
75
+ referenceEl,
76
+ resinTags,
77
+ targetType: TARGET_TYPE.FRAME,
78
+ }),
79
+ );
53
80
  }
54
81
 
55
82
  getManagers(parentEl: HTMLElement, referenceEl: HTMLVideoElement): Set<Manager> {
@@ -70,8 +97,6 @@ export default class MediaAnnotator extends BaseAnnotator {
70
97
  return this.managers;
71
98
  }
72
99
 
73
-
74
-
75
100
  // returns the actual video element
76
101
  getReference(): HTMLVideoElement | null | undefined {
77
102
  return this.annotatedEl?.querySelector('video');
@@ -117,12 +142,11 @@ export default class MediaAnnotator extends BaseAnnotator {
117
142
  this.postRender();
118
143
  }
119
144
 
120
- // This function gets called by the client. We are using the name scrollToAnnotation to match
145
+ // This function gets called by the client. We are using the name scrollToAnnotation to match
121
146
  // the other annotators as the client calls this function when it wants to show an annoation on the
122
- // preview. The only difference is that we are using the video element's currentTime to scroll to the
147
+ // preview. The only difference is that we are using the video element's currentTime to scroll to the
123
148
  // annotation instead of the scrollLeft and scrollTop of the parent element.
124
- scrollToAnnotation(annotationId: string | null | undefined, defaultLocation: number = -1 ): void {
125
-
149
+ scrollToAnnotation(annotationId: string | null | undefined, defaultLocation: number = -1): void {
126
150
  if (!annotationId) {
127
151
  return;
128
152
  }
@@ -130,13 +154,11 @@ export default class MediaAnnotator extends BaseAnnotator {
130
154
  const annotationLocation = annotation?.target?.location?.value ?? defaultLocation;
131
155
  const video = this.getReference();
132
156
 
133
- if ( !video || !this.annotatedEl || annotationLocation === -1 ) {
157
+ if (!video || !this.annotatedEl || annotationLocation === -1) {
134
158
  return;
135
159
  }
136
160
 
137
161
  video.pause();
138
162
  video.currentTime = annotationLocation / 1000;
139
-
140
163
  }
141
164
  }
142
-
@@ -140,11 +140,7 @@ const PopupLayer = (props: Props): JSX.Element | null => {
140
140
  if (showCreator && isThreadedAnnotation) {
141
141
  return (
142
142
  <div className="ba-PopupLayer-popup">
143
- <PopupV2
144
- onSubmit={handleSubmit}
145
- popupPortalEl={popupPortalEl}
146
- reference={reference}
147
- />
143
+ <PopupV2 onSubmit={handleSubmit} popupPortalEl={popupPortalEl} reference={reference} />
148
144
  </div>
149
145
  );
150
146
  }
@@ -26,8 +26,8 @@ const RegionAnnotations = (props: Props): JSX.Element => {
26
26
  setActiveAnnotationId(annotationId);
27
27
  };
28
28
 
29
- let annotationsToShow: AnnotationRegion[] = []
30
-
29
+ let annotationsToShow: AnnotationRegion[] = [];
30
+
31
31
  if (targetType === TARGET_TYPE.FRAME) {
32
32
  if (!isVideoSeeking && activeAnnotationId) {
33
33
  annotationsToShow = annotations.filter(annotation => annotation.id === activeAnnotationId);
@@ -35,7 +35,6 @@ const RegionAnnotations = (props: Props): JSX.Element => {
35
35
  } else {
36
36
  annotationsToShow = annotations;
37
37
  }
38
-
39
38
 
40
39
  return (
41
40
  <RegionList
@@ -56,7 +56,10 @@ export default class RegionCreation extends React.PureComponent<Props, State> {
56
56
 
57
57
  handleStop = (shape: Rect): void => {
58
58
  const { location, setStaged, setStatus, targetType, referenceEl } = this.props;
59
- const annotationLocation = targetType !== TARGET_TYPE.FRAME ? location : getVideoCurrentTimeInMilliseconds(referenceEl as HTMLVideoElement);
59
+ const annotationLocation =
60
+ targetType !== TARGET_TYPE.FRAME
61
+ ? location
62
+ : getVideoCurrentTimeInMilliseconds(referenceEl as HTMLVideoElement);
60
63
 
61
64
  setStaged({ location: annotationLocation, shape });
62
65
  setStatus(CreatorStatus.staged);
@@ -14,6 +14,13 @@ export default class RegionManager extends BaseManager {
14
14
  this.root = ReactDOM.createRoot(this.reactEl);
15
15
  }
16
16
 
17
- this.root.render(<RegionCreationContainer targetType={this.targetType} referenceEl={this.referenceEl} location={this.location} {...props} />);
17
+ this.root.render(
18
+ <RegionCreationContainer
19
+ targetType={this.targetType}
20
+ referenceEl={this.referenceEl}
21
+ location={this.location}
22
+ {...props}
23
+ />,
24
+ );
18
25
  }
19
26
  }
@@ -1,7 +1,6 @@
1
1
  $region_cursor_32: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACPTkDJAAAA8UlEQVRYCe1Vyw6DIBBcafkPDxjb9P8/pQcTD/4HkZZpe1qeEQyHsgeTXZbZcRiUqEdXoLECQ835LxsxvMEGX7/yQmmuxtELsW6bt16dAKbwYSFS6BV4nBGQG5HCPkzAHveOM7exp4bE1g8TAOh9moLYX25xU2LzKR6InTlnXJ0ANyAfyPOqBHJMxwkUeYCDHcmTCsBMCWAR6slRJHlPAf6YZzLGODy01iSldOpCCHouC+UQcDbzAgiE4qZUaOlT51i+PHkEobewE/ABgoeM7bn4wHNqzU3YCTRXIMcn3h6Y8HcFiv6GXvBe7Ap0Bf5KgTeoYIC/a04wgAAAAABJRU5ErkJggg==';
2
2
  $region_cursor_32_2x: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABGdBTUEAALGPC/xhBQAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAQKADAAQAAAABAAAAQAAAAABlmWCKAAABWUlEQVR4Ae2YOxKDIBCGNaM5R4pYWOT+B0lhYQrPEZ1JGGcoZIy6Lj4IH40DLAt8+8srSUgQgAAEIAABCEAAAnESSM867Y9JmrGlJi1pf1li9M822dknd7/dREN8NY3IHgWIcB1oPBdZqVLsVFCAJRHK113dtbsFCtg78iZib9Nn7vTbmshenbJdsihgF8wjnZRF0ZdWdT1S+7tI+8+7nlGAS+Ss+bX7/Nx8UMAcoaPr506A2vGhAC3Brdq7J76t+oleAQDYSlqh+FW/CHk6meVSP77WiOh/gUUvp1NytpF7lGXSdd2U6aCubds+n+fuxXBgNshkWZY8q6ovQwEDNOsz3hQgHcLa26DtBwVYEsqveheQRsKsGbwIKYPmtXn02yAAvOopQGcoIMCgeR0yCvCKM0Bn0StAfReQBp2ToJQY9hCAAAQgAAEIQAACEIAABCAAAQhAwDOBLxaXQ2IYNsXoAAAAAElFTkSuQmCC';
3
3
  $region_cursor_32_3x: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAABGdBTUEAALGPC/xhBQAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAYKADAAQAAAABAAAAYAAAAACK+310AAACaUlEQVR4Ae3bwUrDQBDG8VTE+Bg9CD0IBd//IYSCh4KHPobxopuDYQgGOtNvdhvy39O2zc5uf9Odpol2HQ0BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgXSBXfoMdzDBT2mZy9iVFo3/EB3IOI0ACdA4hqM8hkeudODLfi9Z+eflIonDDpAwxoOQgLidZOTmSpBV85YRVfmya2AHWI0GfRLQAN1OuekSZCGWfkxl/4hjB9gsNOiTgAbodsrVlKBSCr7Kwnu7+Fl/KGXkefbc3T9kBzROEQlonIDVlCDr9Ho4dMMwdH3fdx/ns30p3M8+21laGDtgSabS8ySgEvTSNKssQUtvxvt8xrUd7xrYAV4x8fEkQAzqDbe5EuS9BO0F9R7PDvCKiY8nAWJQb7hNlKClS81erIzj2QEZqo6YJMCBlXEoCchQdcQkAQ6sjENJQIaqI2b6WVDFy7y9aq6aZ03sAMenNeNQEpCh6ogZ/seCa+ewZeHteOy+y52sW9t4N+yvjXfFbm1PJcb76TSFqVmC0r8DpndVOiO+xbOvRfvqeNF1RMdVTcD4SVM0i67aAYp1RWJULUGRBf43JuOmvJ2nZgniS9jKN+iTgAbodsr07wDVdi5nU/xpos0cfY0AJUjjGI5CAsJ0moEkQOMYjkICwnSagSRA4xiOQgLCdJqBJEDjGI5CAsJ0moEkQOMYjkICwnSagSRA4xiOQgLCdJqBJEDjGI6SfkcsvLLZQC5Hz0B4qBGgBGkciYIAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIITAK/BlNVeN572e8AAAAASUVORK5CYII=';
4
-
5
4
  $region_cursor_new: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAAEEfUpiAAAABGdBTUEAALGPC/xhBQAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACPTkDJAAAFEUlEQVRYCcVXeUyjVRD/erCl5SjtrpblWHbxADlTD0TDESIak0UJUYyE/zAhGo7gP+oaMDEhIRFNiCRG4A8NmGACwYsAG0lIIBSMCBSCrRDCXbkRiq2bbvv5m9qv2+srn3UTJ5nO++bNmzdv5r2ZKcMEgp6entfAF9Gc2EMglsZOLg1OTk7Gj4+PP6KxP+Tn57O+3CfBkHsyL29sbHzqyWBmZ2eLwfDc1TnvZiwtLanBsRcWFpJ+tzVOKdePDDSqu7v7g8nJyS8wDvec5Ma0MjYrK+tx0Ac5piAqMhgMLwWTJGNZvV7PK+QUIKG5ubmbgTSJDw4OHJi4CtQA3cfkBkSlLS0tWzab7f3s7Oy60tJSLXhuz5FzbAqF4g48OpCamsrrrCgIqvf39xdAJcCAQNtxWwcUCMYU9/b2vpqXl0cueTkURWLXhaQzsAUFBez8/HxJMEXu2+Jr1vb2NtPR0aELDw9/D+PbbW1t5F4/8FMgk8n+hFRGQkKCIikpyYqbpRoaGkpUqVSjeAifYM5vjZ9WF+NKc3PzQUNDwzP4jgBeHx0dvQVK11YQKPr6+t5dX1//rbW19XWEbnl8fHzh8PBwGqsFK/HciR6lCij4CJ6LBY//0yWiXS45HA4LUcFb+ghGTE9Ps6enp1ahSgI6RKlUhp+dnf0hRElABWRVdHS0XIgSXgVClQRUkJKSwqysrMwik+n29vZ+Pjo6+hIKA8rSRp4QgYfD9vf3t4F5HUhVgfIUXSDeBII5NyhGRkbewZemvLxcqdPppjs7Ow2Ey8vLP4Hvd4V9Mw/tEga8u7u7+9XOzk764OBgm91uFyOd1+Non2VmZn6OecoXQUG6ubn5rdFopNwXA1ROTEw0g8YBvTblcwxrsViOV1dXHXDi26DFcrn8xbW1tVookAIvBFKchMVGPN9FPOVfhoeHF0CNjY2NKZjzsoJPG/mCStgDwKsIpUGtVqdj7FVr8S0IyCIKZcCiKUjD/yFEfpKYTKYncPwXMCbn8wUtZPuCKSQDZDMzMwkoyLeRYswodlSjKFcJCqIQq4IZQOtF2FiGwsBQiqqtrf0O36f305CLDPA6BB6T05C6urrvKdXdD0P+lQGcNSiPznxbX1/vNATtA3VdIYVG0KvmNiaKboEpKipys2CEHM3rD8hXFjSz5chZP2LyLvDCfOVWwjMg70RQs0R1LiMjg0WCdAwMDFAyfA6YB3zWhU+DZgOvASOBglI35C7Oa2KxmM3JyXE0NTV9HBsb+zXW/A40azQaBoaVREZGpotEIimqOUOyEonESn8mkpOTpyBnB1LvywvBnhPNUVypr6IM9heQWgYGSfktZPpKtMPX0EKapNJ7kTSbzezY2Nhj1dXVS0jibxYXF89hCRkSUkjICEIKB1FyrXpra+sbavxQchcrKyspST0CvAF8VKvVFiBUehSBhaqqKgoL5W7ey37PdEgFAM5qjjqNYFmWKAPXs/Hx8dS+mIB3gNKampoYq9XqQF8siYmJof6IQsCtx9AbnIq8WUG/yANR7e3tz5eUlHzY1dX1EGJuKysr+zUuLm4ROSoLueESPKQKCwuz486c5ebm2s7Pz2+lpaWNYW3IoeCsIoOpTFKVfxj4VGJiYj6oFphGFPX2jampKf0ioKKi4hUX/zIorfM7sB8DQkKA1nH3gsaciymkSpz8Ck7tAB7i+wxoc8lwcvj8B0I1gFvvS0kfZxzNcfH325hb+Dfx/eE8ndH+AwAAAABJRU5ErkJggg==';
6
5
  $region_cursor_new_2x: 'data:image/png;base64,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';
7
6
  $region_cursor_new_3x: 'data:image/png;base64,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';
@@ -10,8 +9,15 @@ $region_cursor_new_3x: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCA
10
9
  $offset_x: 9;
11
10
  $offset_y: 4;
12
11
 
13
- cursor: url($region_cursor_new) $offset_x $offset_y, auto; /* Legacy */
14
- cursor: image-set(url($region_cursor_new) 1x, url($region_cursor_new_2x) 2x, url($region_cursor_new_3x) 3x) $offset_x $offset_y, auto; /* Webkit */ /* stylelint-disable-line */
12
+ cursor:
13
+ url($region_cursor_new) $offset_x $offset_y,
14
+ auto; /* Legacy */
15
+
16
+ /* stylelint-disable unit-no-unknown */
17
+ cursor:
18
+ image-set(url($region_cursor_new) 1x, url($region_cursor_new_2x) 2x, url($region_cursor_new_3x) 3x) $offset_x $offset_y,
19
+ auto; /* Webkit */
20
+ /* stylelint-enable unit-no-unknown */
15
21
  }
16
22
 
17
23
  .ba-RegionCreator-rect {
@@ -14,6 +14,13 @@ export default class RegionListManager extends BaseManager {
14
14
  this.root = ReactDOM.createRoot(this.reactEl);
15
15
  }
16
16
 
17
- this.root.render(<RegionAnnotationsContainer location={this.location} referenceEl={this.referenceEl} targetType={this.targetType} {...props} />);
17
+ this.root.render(
18
+ <RegionAnnotationsContainer
19
+ location={this.location}
20
+ referenceEl={this.referenceEl}
21
+ targetType={this.targetType}
22
+ {...props}
23
+ />,
24
+ );
18
25
  }
19
26
  }