box-ui-elements 23.4.0-beta.36 → 23.4.0-beta.37

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 (69) hide show
  1. package/dist/explorer.js +1 -1
  2. package/dist/preview.js +1 -1
  3. package/dist/sidebar.js +1 -1
  4. package/es/elements/content-preview/PreviewNavigation.js +0 -2
  5. package/es/elements/content-preview/PreviewNavigation.js.flow +0 -2
  6. package/es/elements/content-preview/PreviewNavigation.js.map +1 -1
  7. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js +29 -7
  8. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.flow +44 -5
  9. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.map +1 -1
  10. package/es/elements/content-sidebar/withSidebarAnnotations.js +141 -35
  11. package/es/elements/content-sidebar/withSidebarAnnotations.js.flow +199 -37
  12. package/es/elements/content-sidebar/withSidebarAnnotations.js.map +1 -1
  13. package/i18n/bn-IN.js +1 -1
  14. package/i18n/bn-IN.properties +4 -0
  15. package/i18n/da-DK.js +1 -1
  16. package/i18n/da-DK.properties +4 -0
  17. package/i18n/de-DE.js +1 -1
  18. package/i18n/de-DE.properties +4 -0
  19. package/i18n/en-AU.js +1 -1
  20. package/i18n/en-AU.properties +4 -0
  21. package/i18n/en-CA.js +1 -1
  22. package/i18n/en-CA.properties +4 -0
  23. package/i18n/en-GB.js +1 -1
  24. package/i18n/en-GB.properties +4 -0
  25. package/i18n/es-419.js +1 -1
  26. package/i18n/es-419.properties +4 -0
  27. package/i18n/es-ES.js +1 -1
  28. package/i18n/es-ES.properties +4 -0
  29. package/i18n/fi-FI.js +1 -1
  30. package/i18n/fi-FI.properties +4 -0
  31. package/i18n/fr-CA.js +1 -1
  32. package/i18n/fr-CA.properties +4 -0
  33. package/i18n/fr-FR.js +1 -1
  34. package/i18n/fr-FR.properties +4 -0
  35. package/i18n/hi-IN.js +1 -1
  36. package/i18n/hi-IN.properties +4 -0
  37. package/i18n/it-IT.js +1 -1
  38. package/i18n/it-IT.properties +4 -0
  39. package/i18n/ja-JP.js +1 -1
  40. package/i18n/ja-JP.properties +4 -0
  41. package/i18n/ko-KR.js +1 -1
  42. package/i18n/ko-KR.properties +4 -0
  43. package/i18n/nb-NO.js +1 -1
  44. package/i18n/nb-NO.properties +4 -0
  45. package/i18n/nl-NL.js +1 -1
  46. package/i18n/nl-NL.properties +4 -0
  47. package/i18n/pl-PL.js +1 -1
  48. package/i18n/pl-PL.properties +4 -0
  49. package/i18n/pt-BR.js +1 -1
  50. package/i18n/pt-BR.properties +4 -0
  51. package/i18n/ru-RU.js +1 -1
  52. package/i18n/ru-RU.properties +4 -0
  53. package/i18n/sv-SE.js +1 -1
  54. package/i18n/sv-SE.properties +4 -0
  55. package/i18n/tr-TR.js +1 -1
  56. package/i18n/tr-TR.properties +4 -0
  57. package/i18n/zh-CN.js +1 -1
  58. package/i18n/zh-CN.properties +4 -0
  59. package/i18n/zh-TW.js +1 -1
  60. package/i18n/zh-TW.properties +4 -0
  61. package/package.json +1 -1
  62. package/src/elements/content-preview/PreviewNavigation.js +0 -2
  63. package/src/elements/content-preview/__tests__/PreviewNavigation.test.js +12 -12
  64. package/src/elements/content-sidebar/__tests__/withSidebarAnnotations.rtl.test.js +1152 -0
  65. package/src/elements/content-sidebar/versions/VersionsSidebarContainer.js +44 -5
  66. package/src/elements/content-sidebar/versions/__tests__/VersionsSidebarContainer.test.js +200 -43
  67. package/src/elements/content-sidebar/versions/__tests__/__snapshots__/VersionsSidebarContainer.test.js.snap +2 -2
  68. package/src/elements/content-sidebar/withSidebarAnnotations.js +199 -37
  69. package/src/elements/content-sidebar/__tests__/withSidebarAnnotations.test.js +0 -626
@@ -7,14 +7,23 @@ import { FEED_ITEM_TYPE_VERSION } from '../../constants';
7
7
  import { getBadUserError } from '../../utils/error';
8
8
  import type { WithAnnotatorContextProps } from '../common/annotator-context';
9
9
  import type { BoxItem, User } from '../../common/types/core';
10
+ import {
11
+ ViewType,
12
+ FeedEntryType,
13
+ type InternalSidebarNavigation,
14
+ type InternalSidebarNavigationHandler,
15
+ } from '../common/types/SidebarNavigation';
10
16
 
11
17
  type Props = {
12
18
  ...ContextRouter,
13
19
  currentUser?: User,
14
20
  file: BoxItem,
15
21
  fileId: string,
22
+ internalSidebarNavigation?: InternalSidebarNavigation,
23
+ internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,
16
24
  isOpen: boolean,
17
25
  onVersionChange: Function,
26
+ routerDisabled?: boolean,
18
27
  } & WithAnnotatorContextProps;
19
28
 
20
29
  type SidebarPanelsRefType = {
@@ -44,31 +53,130 @@ export default function withSidebarAnnotations(
44
53
  this.redirectDeeplinkedAnnotation();
45
54
  }
46
55
 
56
+ getInternalNavigationMatch = (
57
+ navigation: InternalSidebarNavigation,
58
+ ): { params: { annotationId?: string, fileVersionId: string } } | null => {
59
+ if (
60
+ !('activeFeedEntryType' in navigation) ||
61
+ navigation.activeFeedEntryType !== FeedEntryType.ANNOTATIONS ||
62
+ !navigation.fileVersionId
63
+ ) {
64
+ return null;
65
+ }
66
+
67
+ // Only include annotationId if it's defined (mirrors router behavior where missing optional params are omitted)
68
+ const params =
69
+ navigation.activeFeedEntryId !== undefined
70
+ ? {
71
+ fileVersionId: navigation.fileVersionId,
72
+ annotationId: navigation.activeFeedEntryId,
73
+ }
74
+ : {
75
+ fileVersionId: navigation.fileVersionId,
76
+ };
77
+
78
+ return { params };
79
+ };
80
+
81
+ getInternalAnnotationsNavigation = (
82
+ fileVersionId?: string,
83
+ annotationId?: string | null,
84
+ ): InternalSidebarNavigation => {
85
+ if (!fileVersionId) {
86
+ return { sidebar: ViewType.ACTIVITY };
87
+ }
88
+
89
+ return {
90
+ sidebar: ViewType.ACTIVITY,
91
+ activeFeedEntryType: FeedEntryType.ANNOTATIONS,
92
+ activeFeedEntryId: annotationId || undefined,
93
+ fileVersionId,
94
+ };
95
+ };
96
+
47
97
  redirectDeeplinkedAnnotation = () => {
48
- const { file, getAnnotationsPath, getAnnotationsMatchPath, history, location } = this.props;
49
- const match = getAnnotationsMatchPath(location);
50
- const annotationId = getProp(match, 'params.annotationId');
98
+ const {
99
+ file,
100
+ getAnnotationsPath,
101
+ getAnnotationsMatchPath,
102
+ history,
103
+ internalSidebarNavigation,
104
+ internalSidebarNavigationHandler,
105
+ location,
106
+ routerDisabled,
107
+ } = this.props;
108
+
51
109
  const currentFileVersionId = getProp(file, 'file_version.id');
52
- const fileVersionId = getProp(match, 'params.fileVersionId');
53
110
 
54
- if (fileVersionId && fileVersionId !== currentFileVersionId) {
55
- history.replace(getAnnotationsPath(currentFileVersionId, annotationId));
111
+ if (routerDisabled && internalSidebarNavigation && internalSidebarNavigationHandler) {
112
+ // Use internal navigation when router is disabled
113
+ const match = this.getInternalNavigationMatch(internalSidebarNavigation);
114
+ const annotationId = getProp(match, 'params.annotationId');
115
+ const fileVersionId = getProp(match, 'params.fileVersionId');
116
+
117
+ if (fileVersionId && fileVersionId !== currentFileVersionId) {
118
+ const correctedNavigation = this.getInternalAnnotationsNavigation(
119
+ currentFileVersionId,
120
+ annotationId,
121
+ );
122
+ internalSidebarNavigationHandler(correctedNavigation, true);
123
+ }
124
+ } else {
125
+ // Use router-based navigation
126
+ const match = getAnnotationsMatchPath(location);
127
+ const annotationId = getProp(match, 'params.annotationId');
128
+ const fileVersionId = getProp(match, 'params.fileVersionId');
129
+
130
+ if (fileVersionId && fileVersionId !== currentFileVersionId) {
131
+ history.replace(getAnnotationsPath(currentFileVersionId, annotationId));
132
+ }
56
133
  }
57
134
  };
58
135
 
59
136
  componentDidUpdate(prevProps: Props) {
60
- const { annotatorState, fileId, getAnnotationsMatchPath, location, onVersionChange }: Props = this.props;
61
- const { annotatorState: prevAnnotatorState, fileId: prevFileId, location: prevLocation }: Props = prevProps;
137
+ const {
138
+ annotatorState,
139
+ fileId,
140
+ getAnnotationsMatchPath,
141
+ internalSidebarNavigation,
142
+ location,
143
+ onVersionChange,
144
+ routerDisabled,
145
+ }: Props = this.props;
146
+ const {
147
+ annotatorState: prevAnnotatorState,
148
+ fileId: prevFileId,
149
+ internalSidebarNavigation: prevInternalSidebarNavigation,
150
+ location: prevLocation,
151
+ }: Props = prevProps;
62
152
  const { action, activeAnnotationId, annotation } = annotatorState;
63
153
  const { activeAnnotationId: prevActiveAnnotationId, annotation: prevAnnotation } = prevAnnotatorState;
64
154
 
65
- const match = getAnnotationsMatchPath(location);
66
- const prevMatch = getAnnotationsMatchPath(prevLocation);
67
- const fileVersionId = getProp(match, 'params.fileVersionId');
68
- const hasActiveAnnotationChanged = prevActiveAnnotationId !== activeAnnotationId;
155
+ let fileVersionId;
156
+ let prevFileVersionId;
157
+ let match;
158
+
159
+ if (routerDisabled && internalSidebarNavigation) {
160
+ // Use internal navigation when router is disabled
161
+ match = this.getInternalNavigationMatch(internalSidebarNavigation);
162
+ const prevMatch = prevInternalSidebarNavigation
163
+ ? this.getInternalNavigationMatch(prevInternalSidebarNavigation)
164
+ : null;
165
+
166
+ fileVersionId = getProp(match, 'params.fileVersionId');
167
+ prevFileVersionId = getProp(prevMatch, 'params.fileVersionId');
168
+ } else {
169
+ // Use router-based navigation
170
+ match = getAnnotationsMatchPath(location);
171
+ const prevMatch = getAnnotationsMatchPath(prevLocation);
172
+
173
+ fileVersionId = getProp(match, 'params.fileVersionId');
174
+ prevFileVersionId = getProp(prevMatch, 'params.fileVersionId');
175
+ }
176
+
69
177
  const isAnnotationsPath = !!match;
70
178
  const isTransitioningToAnnotationPath = activeAnnotationId && !isAnnotationsPath;
71
- const prevFileVersionId = getProp(prevMatch, 'params.fileVersionId');
179
+ const hasActiveAnnotationChanged = prevActiveAnnotationId !== activeAnnotationId;
72
180
 
73
181
  if (action === 'reply_create_start' || action === 'reply_create_end') {
74
182
  this.addAnnotationReply();
@@ -275,19 +383,39 @@ export default function withSidebarAnnotations(
275
383
  getAnnotationsMatchPath,
276
384
  getAnnotationsPath,
277
385
  history,
386
+ internalSidebarNavigation,
387
+ internalSidebarNavigationHandler,
278
388
  location,
389
+ routerDisabled,
279
390
  } = this.props;
280
- const match = getAnnotationsMatchPath(location);
391
+
281
392
  const currentFileVersionId = getProp(file, 'file_version.id');
282
393
  const defaultFileVersionId = activeAnnotationFileVersionId || currentFileVersionId;
283
- const fileVersionId = getProp(match, 'params.fileVersionId', defaultFileVersionId);
284
- const newLocationState = activeAnnotationId ? { open: true } : location.state;
285
-
286
- // Update the location pathname and open state if transitioning to an active annotation id, force the sidebar open
287
- history.push({
288
- pathname: getAnnotationsPath(fileVersionId, activeAnnotationId),
289
- state: newLocationState,
290
- });
394
+
395
+ if (routerDisabled && internalSidebarNavigation && internalSidebarNavigationHandler) {
396
+ // Use internal navigation when router is disabled
397
+ const match = this.getInternalNavigationMatch(internalSidebarNavigation);
398
+ const fileVersionId = getProp(match, 'params.fileVersionId', defaultFileVersionId);
399
+ const newNavigationState = activeAnnotationId ? { open: true } : {};
400
+
401
+ // Update the navigation and open state if transitioning to an active annotation id, force the sidebar open
402
+ const updatedNavigation = {
403
+ ...this.getInternalAnnotationsNavigation(fileVersionId, activeAnnotationId),
404
+ ...newNavigationState,
405
+ };
406
+ internalSidebarNavigationHandler(updatedNavigation);
407
+ } else {
408
+ // Use router-based navigation
409
+ const match = getAnnotationsMatchPath(location);
410
+ const fileVersionId = getProp(match, 'params.fileVersionId', defaultFileVersionId);
411
+ const newLocationState = activeAnnotationId ? { open: true } : location.state;
412
+
413
+ // Update the location pathname and open state if transitioning to an active annotation id, force the sidebar open
414
+ history.push({
415
+ pathname: getAnnotationsPath(fileVersionId, activeAnnotationId),
416
+ state: newLocationState,
417
+ });
418
+ }
291
419
  };
292
420
 
293
421
  updateActiveVersion = () => {
@@ -298,33 +426,67 @@ export default function withSidebarAnnotations(
298
426
  getAnnotationsMatchPath,
299
427
  getAnnotationsPath,
300
428
  history,
429
+ internalSidebarNavigation,
430
+ internalSidebarNavigationHandler,
301
431
  location,
302
432
  onVersionChange,
433
+ routerDisabled,
303
434
  } = this.props;
435
+
304
436
  const feedAPI = api.getFeedAPI(false);
305
- const match = getAnnotationsMatchPath(location);
306
437
  const currentFileVersionId = getProp(file, 'file_version.id');
307
- const fileVersionId = getProp(match, 'params.fileVersionId');
308
438
  const { items: feedItems = [] } = feedAPI.getCachedItems(fileId) || {};
309
- const version = feedItems
310
- .filter(item => item.type === FEED_ITEM_TYPE_VERSION)
311
- .find(item => item.id === fileVersionId);
312
-
313
- if (version) {
314
- onVersionChange(version, {
315
- currentVersionId: currentFileVersionId,
316
- updateVersionToCurrent: () => history.push(getAnnotationsPath(currentFileVersionId)),
317
- });
439
+
440
+ if (routerDisabled && internalSidebarNavigation && internalSidebarNavigationHandler) {
441
+ // Use internal navigation when router is disabled
442
+ const match = this.getInternalNavigationMatch(internalSidebarNavigation);
443
+ const fileVersionId = getProp(match, 'params.fileVersionId');
444
+ const version = feedItems
445
+ .filter(item => item.type === FEED_ITEM_TYPE_VERSION)
446
+ .find(item => item.id === fileVersionId);
447
+
448
+ if (version) {
449
+ onVersionChange(version, {
450
+ currentVersionId: currentFileVersionId,
451
+ updateVersionToCurrent: () => {
452
+ const currentVersionNavigation =
453
+ this.getInternalAnnotationsNavigation(currentFileVersionId);
454
+ internalSidebarNavigationHandler(currentVersionNavigation);
455
+ },
456
+ });
457
+ }
458
+ } else {
459
+ // Use router-based navigation
460
+ const match = getAnnotationsMatchPath(location);
461
+ const fileVersionId = getProp(match, 'params.fileVersionId');
462
+ const version = feedItems
463
+ .filter(item => item.type === FEED_ITEM_TYPE_VERSION)
464
+ .find(item => item.id === fileVersionId);
465
+
466
+ if (version) {
467
+ onVersionChange(version, {
468
+ currentVersionId: currentFileVersionId,
469
+ updateVersionToCurrent: () => history.push(getAnnotationsPath(currentFileVersionId)),
470
+ });
471
+ }
318
472
  }
319
473
  };
320
474
 
321
475
  refreshActivitySidebar = () => {
322
- const { isOpen, location } = this.props;
323
-
324
- const pathname = getProp(location, 'pathname', '');
325
- const isActivity = matchPath(pathname, '/activity');
476
+ const { internalSidebarNavigation, isOpen, location, routerDisabled } = this.props;
326
477
  const { current } = this.sidebarPanels;
327
478
 
479
+ let isActivity = false;
480
+
481
+ if (routerDisabled && internalSidebarNavigation) {
482
+ // Check if current navigation is pointing to activity sidebar
483
+ isActivity = internalSidebarNavigation.sidebar === ViewType.ACTIVITY;
484
+ } else {
485
+ // Use router-based check
486
+ const pathname = getProp(location, 'pathname', '');
487
+ isActivity = !!matchPath(pathname, '/activity');
488
+ }
489
+
328
490
  // If the activity sidebar is currently open, then force it to refresh with the updated data
329
491
  if (current && isActivity && isOpen) {
330
492
  current.refresh(false);
@@ -1 +1 @@
1
- {"version":3,"file":"withSidebarAnnotations.js","names":["React","getProp","noop","matchPath","FEED_ITEM_TYPE_VERSION","getBadUserError","withSidebarAnnotations","WrappedComponent","WithSidebarAnnotations","Component","constructor","props","_defineProperty","createRef","file","getAnnotationsPath","getAnnotationsMatchPath","history","location","match","annotationId","currentFileVersionId","fileVersionId","replace","annotatorState","activeAnnotationFileVersionId","activeAnnotationId","defaultFileVersionId","newLocationState","open","state","push","pathname","api","fileId","onVersionChange","feedAPI","getFeedAPI","items","feedItems","getCachedItems","version","filter","item","type","find","id","currentVersionId","updateVersionToCurrent","isOpen","isActivity","current","sidebarPanels","refresh","redirectDeeplinkedAnnotation","componentDidUpdate","prevProps","prevAnnotatorState","prevFileId","prevLocation","action","annotation","prevActiveAnnotationId","prevAnnotation","prevMatch","hasActiveAnnotationChanged","isAnnotationsPath","isTransitioningToAnnotationPath","prevFileVersionId","addAnnotationReply","deleteAnnotationReply","updateAnnotationReply","updateAnnotation","deleteAnnotation","addAnnotation","updateActiveAnnotation","updateActiveVersion","meta","requestId","currentUser","isPending","hasItems","refreshActivitySidebar","annotationReply","addPendingReply","_objectSpread","annotationItem","modifyFeedItemRepliesCountBy","updateReplyItem","updateFeedItem","deleteFeedItem","replyId","replyItem","replies","deleteReplyItem","render","createElement","_extends","ref","displayName","name"],"sources":["../../../src/elements/content-sidebar/withSidebarAnnotations.js"],"sourcesContent":["// @flow\nimport * as React from 'react';\nimport getProp from 'lodash/get';\nimport noop from 'lodash/noop';\nimport { matchPath, type ContextRouter } from 'react-router-dom';\nimport { FEED_ITEM_TYPE_VERSION } from '../../constants';\nimport { getBadUserError } from '../../utils/error';\nimport type { WithAnnotatorContextProps } from '../common/annotator-context';\nimport type { BoxItem, User } from '../../common/types/core';\n\ntype Props = {\n ...ContextRouter,\n currentUser?: User,\n file: BoxItem,\n fileId: string,\n isOpen: boolean,\n onVersionChange: Function,\n} & WithAnnotatorContextProps;\n\ntype SidebarPanelsRefType = {\n refresh: (shouldRefreshCache?: boolean) => void,\n};\n\nexport default function withSidebarAnnotations(\n WrappedComponent: React.ComponentType<Props>,\n): React.ComponentType<Props> {\n class WithSidebarAnnotations extends React.Component<Props> {\n static defaultProps = {\n annotatorState: {},\n getAnnotationsMatchPath: noop,\n getAnnotationsPath: noop,\n onVersionChange: noop,\n };\n\n static displayName: ?string;\n\n props: Props;\n\n sidebarPanels: { current: SidebarPanelsRefType | null } = React.createRef();\n\n constructor(props) {\n super(props);\n\n this.redirectDeeplinkedAnnotation();\n }\n\n redirectDeeplinkedAnnotation = () => {\n const { file, getAnnotationsPath, getAnnotationsMatchPath, history, location } = this.props;\n const match = getAnnotationsMatchPath(location);\n const annotationId = getProp(match, 'params.annotationId');\n const currentFileVersionId = getProp(file, 'file_version.id');\n const fileVersionId = getProp(match, 'params.fileVersionId');\n\n if (fileVersionId && fileVersionId !== currentFileVersionId) {\n history.replace(getAnnotationsPath(currentFileVersionId, annotationId));\n }\n };\n\n componentDidUpdate(prevProps: Props) {\n const { annotatorState, fileId, getAnnotationsMatchPath, location, onVersionChange }: Props = this.props;\n const { annotatorState: prevAnnotatorState, fileId: prevFileId, location: prevLocation }: Props = prevProps;\n const { action, activeAnnotationId, annotation } = annotatorState;\n const { activeAnnotationId: prevActiveAnnotationId, annotation: prevAnnotation } = prevAnnotatorState;\n\n const match = getAnnotationsMatchPath(location);\n const prevMatch = getAnnotationsMatchPath(prevLocation);\n const fileVersionId = getProp(match, 'params.fileVersionId');\n const hasActiveAnnotationChanged = prevActiveAnnotationId !== activeAnnotationId;\n const isAnnotationsPath = !!match;\n const isTransitioningToAnnotationPath = activeAnnotationId && !isAnnotationsPath;\n const prevFileVersionId = getProp(prevMatch, 'params.fileVersionId');\n\n if (action === 'reply_create_start' || action === 'reply_create_end') {\n this.addAnnotationReply();\n }\n\n if (action === 'reply_delete_start' || action === 'reply_delete_end') {\n this.deleteAnnotationReply();\n }\n\n if (action === 'reply_update_start' || action === 'reply_update_end') {\n this.updateAnnotationReply();\n }\n\n if (action === 'update_start' || action === 'update_end') {\n this.updateAnnotation();\n }\n\n if (action === 'delete_start' || action === 'delete_end') {\n this.deleteAnnotation();\n }\n\n if ((action === 'create_start' || action === 'create_end') && annotation && prevAnnotation !== annotation) {\n this.addAnnotation();\n }\n\n // Active annotation id changed. If location is currently an annotation path or\n // if location is not currently an annotation path but the active annotation id\n // transitioned from falsy to truthy, update the location accordingly\n if (hasActiveAnnotationChanged && (isAnnotationsPath || isTransitioningToAnnotationPath)) {\n this.updateActiveAnnotation();\n }\n\n if (fileVersionId && prevFileVersionId !== fileVersionId) {\n this.updateActiveVersion();\n }\n\n if (prevFileId !== fileId) {\n // If the file id has changed, reset the current version id since the previous (possibly versioned)\n // location is no longer active\n onVersionChange(null);\n }\n }\n\n addAnnotation() {\n const {\n annotatorState: { action, annotation, meta: { requestId } = {} },\n api,\n currentUser,\n file,\n fileId,\n } = this.props;\n\n if (!requestId) {\n return;\n }\n\n // TODO: need to address in follow on -- currentUser may be undefined here but is never fetched for sure until ActivitySidebar\n if (!currentUser) {\n throw getBadUserError();\n }\n\n const feedAPI = api.getFeedAPI(false);\n const isPending = action === 'create_start';\n const { items: hasItems } = feedAPI.getCachedItems(fileId) || {};\n\n // If there are existing items in the cache for this file, then patch the cache with the new annotation\n // If there are no cache entry for feeditems, then it is assumed that it has not yet been fetched.\n if (hasItems) {\n feedAPI.addAnnotation(file, currentUser, annotation, requestId, isPending);\n }\n\n this.refreshActivitySidebar();\n }\n\n addAnnotationReply() {\n const {\n annotatorState: {\n action,\n annotation: { id: annotationId },\n annotationReply,\n meta: { requestId },\n },\n api,\n currentUser,\n file,\n } = this.props;\n\n if (!currentUser) {\n throw getBadUserError();\n }\n\n const feedAPI = api.getFeedAPI(false);\n feedAPI.file = file;\n\n if (action === 'reply_create_start') {\n feedAPI.addPendingReply(annotationId, currentUser, { ...annotationReply, id: requestId });\n } else {\n const { items: feedItems = [] } = feedAPI.getCachedItems(file.id) || {};\n const annotationItem = feedItems.find(({ id }) => id === annotationId);\n\n if (!annotationItem) {\n return;\n }\n\n feedAPI.modifyFeedItemRepliesCountBy(annotationId, 1);\n feedAPI.updateReplyItem({ ...annotationReply, isPending: false }, annotationId, requestId);\n }\n\n this.refreshActivitySidebar();\n }\n\n deleteAnnotation() {\n const {\n annotatorState: { action, annotation },\n api,\n file,\n } = this.props;\n\n const feedAPI = api.getFeedAPI(false);\n feedAPI.file = file;\n\n if (action === 'delete_start') {\n feedAPI.updateFeedItem({ isPending: true }, annotation.id);\n } else {\n feedAPI.deleteFeedItem(annotation.id);\n }\n\n this.refreshActivitySidebar();\n }\n\n deleteAnnotationReply() {\n const {\n annotatorState: {\n action,\n annotation: { id: annotationId },\n annotationReply: { id: replyId },\n },\n api,\n file,\n } = this.props;\n\n const feedAPI = api.getFeedAPI(false);\n feedAPI.file = file;\n\n if (action === 'reply_delete_start') {\n feedAPI.updateReplyItem({ isPending: true }, annotationId, replyId);\n } else {\n const { items: feedItems = [] } = feedAPI.getCachedItems(file.id) || {};\n const annotationItem = feedItems.find(({ id }) => id === annotationId);\n\n if (!annotationItem) {\n return;\n }\n\n // Check if the parent annotation has the reply currently visible and if so, remove it\n const replyItem = annotationItem.replies.find(({ id }) => id === replyId);\n if (replyItem) {\n feedAPI.deleteReplyItem(replyId, annotationId);\n }\n\n // Decrease the amount of replies by 1\n feedAPI.modifyFeedItemRepliesCountBy(annotationId, -1);\n }\n\n this.refreshActivitySidebar();\n }\n\n updateAnnotation() {\n const {\n annotatorState: { action, annotation },\n api,\n file,\n } = this.props;\n\n const feedAPI = api.getFeedAPI(false);\n const isPending = action === 'update_start';\n feedAPI.file = file;\n\n feedAPI.updateFeedItem({ ...annotation, isPending }, annotation.id);\n\n this.refreshActivitySidebar();\n }\n\n updateAnnotationReply() {\n const {\n annotatorState: { action, annotation, annotationReply },\n api,\n file,\n } = this.props;\n\n const feedAPI = api.getFeedAPI(false);\n const isPending = action === 'reply_update_start';\n feedAPI.file = file;\n\n feedAPI.updateReplyItem({ ...annotationReply, isPending }, annotation.id, annotationReply.id);\n\n this.refreshActivitySidebar();\n }\n\n updateActiveAnnotation = () => {\n const {\n annotatorState: { activeAnnotationFileVersionId, activeAnnotationId },\n file,\n getAnnotationsMatchPath,\n getAnnotationsPath,\n history,\n location,\n } = this.props;\n const match = getAnnotationsMatchPath(location);\n const currentFileVersionId = getProp(file, 'file_version.id');\n const defaultFileVersionId = activeAnnotationFileVersionId || currentFileVersionId;\n const fileVersionId = getProp(match, 'params.fileVersionId', defaultFileVersionId);\n const newLocationState = activeAnnotationId ? { open: true } : location.state;\n\n // Update the location pathname and open state if transitioning to an active annotation id, force the sidebar open\n history.push({\n pathname: getAnnotationsPath(fileVersionId, activeAnnotationId),\n state: newLocationState,\n });\n };\n\n updateActiveVersion = () => {\n const {\n api,\n file,\n fileId,\n getAnnotationsMatchPath,\n getAnnotationsPath,\n history,\n location,\n onVersionChange,\n } = this.props;\n const feedAPI = api.getFeedAPI(false);\n const match = getAnnotationsMatchPath(location);\n const currentFileVersionId = getProp(file, 'file_version.id');\n const fileVersionId = getProp(match, 'params.fileVersionId');\n const { items: feedItems = [] } = feedAPI.getCachedItems(fileId) || {};\n const version = feedItems\n .filter(item => item.type === FEED_ITEM_TYPE_VERSION)\n .find(item => item.id === fileVersionId);\n\n if (version) {\n onVersionChange(version, {\n currentVersionId: currentFileVersionId,\n updateVersionToCurrent: () => history.push(getAnnotationsPath(currentFileVersionId)),\n });\n }\n };\n\n refreshActivitySidebar = () => {\n const { isOpen, location } = this.props;\n\n const pathname = getProp(location, 'pathname', '');\n const isActivity = matchPath(pathname, '/activity');\n const { current } = this.sidebarPanels;\n\n // If the activity sidebar is currently open, then force it to refresh with the updated data\n if (current && isActivity && isOpen) {\n current.refresh(false);\n }\n };\n\n render() {\n return <WrappedComponent ref={this.sidebarPanels} {...this.props} />;\n }\n }\n\n const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n WithSidebarAnnotations.displayName = `WithSidebarAnnotations(${displayName})`;\n\n return WithSidebarAnnotations;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"withSidebarAnnotations.js","names":["React","getProp","noop","matchPath","FEED_ITEM_TYPE_VERSION","getBadUserError","ViewType","FeedEntryType","withSidebarAnnotations","WrappedComponent","WithSidebarAnnotations","Component","constructor","props","_defineProperty","createRef","navigation","activeFeedEntryType","ANNOTATIONS","fileVersionId","params","activeFeedEntryId","undefined","annotationId","sidebar","ACTIVITY","file","getAnnotationsPath","getAnnotationsMatchPath","history","internalSidebarNavigation","internalSidebarNavigationHandler","location","routerDisabled","currentFileVersionId","match","getInternalNavigationMatch","correctedNavigation","getInternalAnnotationsNavigation","replace","annotatorState","activeAnnotationFileVersionId","activeAnnotationId","defaultFileVersionId","newNavigationState","open","updatedNavigation","_objectSpread","newLocationState","state","push","pathname","api","fileId","onVersionChange","feedAPI","getFeedAPI","items","feedItems","getCachedItems","version","filter","item","type","find","id","currentVersionId","updateVersionToCurrent","currentVersionNavigation","isOpen","current","sidebarPanels","isActivity","refresh","redirectDeeplinkedAnnotation","componentDidUpdate","prevProps","prevAnnotatorState","prevFileId","prevInternalSidebarNavigation","prevLocation","action","annotation","prevActiveAnnotationId","prevAnnotation","prevFileVersionId","prevMatch","isAnnotationsPath","isTransitioningToAnnotationPath","hasActiveAnnotationChanged","addAnnotationReply","deleteAnnotationReply","updateAnnotationReply","updateAnnotation","deleteAnnotation","addAnnotation","updateActiveAnnotation","updateActiveVersion","meta","requestId","currentUser","isPending","hasItems","refreshActivitySidebar","annotationReply","addPendingReply","annotationItem","modifyFeedItemRepliesCountBy","updateReplyItem","updateFeedItem","deleteFeedItem","replyId","replyItem","replies","deleteReplyItem","render","createElement","_extends","ref","displayName","name"],"sources":["../../../src/elements/content-sidebar/withSidebarAnnotations.js"],"sourcesContent":["// @flow\nimport * as React from 'react';\nimport getProp from 'lodash/get';\nimport noop from 'lodash/noop';\nimport { matchPath, type ContextRouter } from 'react-router-dom';\nimport { FEED_ITEM_TYPE_VERSION } from '../../constants';\nimport { getBadUserError } from '../../utils/error';\nimport type { WithAnnotatorContextProps } from '../common/annotator-context';\nimport type { BoxItem, User } from '../../common/types/core';\nimport {\n ViewType,\n FeedEntryType,\n type InternalSidebarNavigation,\n type InternalSidebarNavigationHandler,\n} from '../common/types/SidebarNavigation';\n\ntype Props = {\n ...ContextRouter,\n currentUser?: User,\n file: BoxItem,\n fileId: string,\n internalSidebarNavigation?: InternalSidebarNavigation,\n internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,\n isOpen: boolean,\n onVersionChange: Function,\n routerDisabled?: boolean,\n} & WithAnnotatorContextProps;\n\ntype SidebarPanelsRefType = {\n refresh: (shouldRefreshCache?: boolean) => void,\n};\n\nexport default function withSidebarAnnotations(\n WrappedComponent: React.ComponentType<Props>,\n): React.ComponentType<Props> {\n class WithSidebarAnnotations extends React.Component<Props> {\n static defaultProps = {\n annotatorState: {},\n getAnnotationsMatchPath: noop,\n getAnnotationsPath: noop,\n onVersionChange: noop,\n };\n\n static displayName: ?string;\n\n props: Props;\n\n sidebarPanels: { current: SidebarPanelsRefType | null } = React.createRef();\n\n constructor(props) {\n super(props);\n\n this.redirectDeeplinkedAnnotation();\n }\n\n getInternalNavigationMatch = (\n navigation: InternalSidebarNavigation,\n ): { params: { annotationId?: string, fileVersionId: string } } | null => {\n if (\n !('activeFeedEntryType' in navigation) ||\n navigation.activeFeedEntryType !== FeedEntryType.ANNOTATIONS ||\n !navigation.fileVersionId\n ) {\n return null;\n }\n\n // Only include annotationId if it's defined (mirrors router behavior where missing optional params are omitted)\n const params =\n navigation.activeFeedEntryId !== undefined\n ? {\n fileVersionId: navigation.fileVersionId,\n annotationId: navigation.activeFeedEntryId,\n }\n : {\n fileVersionId: navigation.fileVersionId,\n };\n\n return { params };\n };\n\n getInternalAnnotationsNavigation = (\n fileVersionId?: string,\n annotationId?: string | null,\n ): InternalSidebarNavigation => {\n if (!fileVersionId) {\n return { sidebar: ViewType.ACTIVITY };\n }\n\n return {\n sidebar: ViewType.ACTIVITY,\n activeFeedEntryType: FeedEntryType.ANNOTATIONS,\n activeFeedEntryId: annotationId || undefined,\n fileVersionId,\n };\n };\n\n redirectDeeplinkedAnnotation = () => {\n const {\n file,\n getAnnotationsPath,\n getAnnotationsMatchPath,\n history,\n internalSidebarNavigation,\n internalSidebarNavigationHandler,\n location,\n routerDisabled,\n } = this.props;\n\n const currentFileVersionId = getProp(file, 'file_version.id');\n\n if (routerDisabled && internalSidebarNavigation && internalSidebarNavigationHandler) {\n // Use internal navigation when router is disabled\n const match = this.getInternalNavigationMatch(internalSidebarNavigation);\n const annotationId = getProp(match, 'params.annotationId');\n const fileVersionId = getProp(match, 'params.fileVersionId');\n\n if (fileVersionId && fileVersionId !== currentFileVersionId) {\n const correctedNavigation = this.getInternalAnnotationsNavigation(\n currentFileVersionId,\n annotationId,\n );\n internalSidebarNavigationHandler(correctedNavigation, true);\n }\n } else {\n // Use router-based navigation\n const match = getAnnotationsMatchPath(location);\n const annotationId = getProp(match, 'params.annotationId');\n const fileVersionId = getProp(match, 'params.fileVersionId');\n\n if (fileVersionId && fileVersionId !== currentFileVersionId) {\n history.replace(getAnnotationsPath(currentFileVersionId, annotationId));\n }\n }\n };\n\n componentDidUpdate(prevProps: Props) {\n const {\n annotatorState,\n fileId,\n getAnnotationsMatchPath,\n internalSidebarNavigation,\n location,\n onVersionChange,\n routerDisabled,\n }: Props = this.props;\n const {\n annotatorState: prevAnnotatorState,\n fileId: prevFileId,\n internalSidebarNavigation: prevInternalSidebarNavigation,\n location: prevLocation,\n }: Props = prevProps;\n const { action, activeAnnotationId, annotation } = annotatorState;\n const { activeAnnotationId: prevActiveAnnotationId, annotation: prevAnnotation } = prevAnnotatorState;\n\n let fileVersionId;\n let prevFileVersionId;\n let match;\n\n if (routerDisabled && internalSidebarNavigation) {\n // Use internal navigation when router is disabled\n match = this.getInternalNavigationMatch(internalSidebarNavigation);\n const prevMatch = prevInternalSidebarNavigation\n ? this.getInternalNavigationMatch(prevInternalSidebarNavigation)\n : null;\n\n fileVersionId = getProp(match, 'params.fileVersionId');\n prevFileVersionId = getProp(prevMatch, 'params.fileVersionId');\n } else {\n // Use router-based navigation\n match = getAnnotationsMatchPath(location);\n const prevMatch = getAnnotationsMatchPath(prevLocation);\n\n fileVersionId = getProp(match, 'params.fileVersionId');\n prevFileVersionId = getProp(prevMatch, 'params.fileVersionId');\n }\n\n const isAnnotationsPath = !!match;\n const isTransitioningToAnnotationPath = activeAnnotationId && !isAnnotationsPath;\n const hasActiveAnnotationChanged = prevActiveAnnotationId !== activeAnnotationId;\n\n if (action === 'reply_create_start' || action === 'reply_create_end') {\n this.addAnnotationReply();\n }\n\n if (action === 'reply_delete_start' || action === 'reply_delete_end') {\n this.deleteAnnotationReply();\n }\n\n if (action === 'reply_update_start' || action === 'reply_update_end') {\n this.updateAnnotationReply();\n }\n\n if (action === 'update_start' || action === 'update_end') {\n this.updateAnnotation();\n }\n\n if (action === 'delete_start' || action === 'delete_end') {\n this.deleteAnnotation();\n }\n\n if ((action === 'create_start' || action === 'create_end') && annotation && prevAnnotation !== annotation) {\n this.addAnnotation();\n }\n\n // Active annotation id changed. If location is currently an annotation path or\n // if location is not currently an annotation path but the active annotation id\n // transitioned from falsy to truthy, update the location accordingly\n if (hasActiveAnnotationChanged && (isAnnotationsPath || isTransitioningToAnnotationPath)) {\n this.updateActiveAnnotation();\n }\n\n if (fileVersionId && prevFileVersionId !== fileVersionId) {\n this.updateActiveVersion();\n }\n\n if (prevFileId !== fileId) {\n // If the file id has changed, reset the current version id since the previous (possibly versioned)\n // location is no longer active\n onVersionChange(null);\n }\n }\n\n addAnnotation() {\n const {\n annotatorState: { action, annotation, meta: { requestId } = {} },\n api,\n currentUser,\n file,\n fileId,\n } = this.props;\n\n if (!requestId) {\n return;\n }\n\n // TODO: need to address in follow on -- currentUser may be undefined here but is never fetched for sure until ActivitySidebar\n if (!currentUser) {\n throw getBadUserError();\n }\n\n const feedAPI = api.getFeedAPI(false);\n const isPending = action === 'create_start';\n const { items: hasItems } = feedAPI.getCachedItems(fileId) || {};\n\n // If there are existing items in the cache for this file, then patch the cache with the new annotation\n // If there are no cache entry for feeditems, then it is assumed that it has not yet been fetched.\n if (hasItems) {\n feedAPI.addAnnotation(file, currentUser, annotation, requestId, isPending);\n }\n\n this.refreshActivitySidebar();\n }\n\n addAnnotationReply() {\n const {\n annotatorState: {\n action,\n annotation: { id: annotationId },\n annotationReply,\n meta: { requestId },\n },\n api,\n currentUser,\n file,\n } = this.props;\n\n if (!currentUser) {\n throw getBadUserError();\n }\n\n const feedAPI = api.getFeedAPI(false);\n feedAPI.file = file;\n\n if (action === 'reply_create_start') {\n feedAPI.addPendingReply(annotationId, currentUser, { ...annotationReply, id: requestId });\n } else {\n const { items: feedItems = [] } = feedAPI.getCachedItems(file.id) || {};\n const annotationItem = feedItems.find(({ id }) => id === annotationId);\n\n if (!annotationItem) {\n return;\n }\n\n feedAPI.modifyFeedItemRepliesCountBy(annotationId, 1);\n feedAPI.updateReplyItem({ ...annotationReply, isPending: false }, annotationId, requestId);\n }\n\n this.refreshActivitySidebar();\n }\n\n deleteAnnotation() {\n const {\n annotatorState: { action, annotation },\n api,\n file,\n } = this.props;\n\n const feedAPI = api.getFeedAPI(false);\n feedAPI.file = file;\n\n if (action === 'delete_start') {\n feedAPI.updateFeedItem({ isPending: true }, annotation.id);\n } else {\n feedAPI.deleteFeedItem(annotation.id);\n }\n\n this.refreshActivitySidebar();\n }\n\n deleteAnnotationReply() {\n const {\n annotatorState: {\n action,\n annotation: { id: annotationId },\n annotationReply: { id: replyId },\n },\n api,\n file,\n } = this.props;\n\n const feedAPI = api.getFeedAPI(false);\n feedAPI.file = file;\n\n if (action === 'reply_delete_start') {\n feedAPI.updateReplyItem({ isPending: true }, annotationId, replyId);\n } else {\n const { items: feedItems = [] } = feedAPI.getCachedItems(file.id) || {};\n const annotationItem = feedItems.find(({ id }) => id === annotationId);\n\n if (!annotationItem) {\n return;\n }\n\n // Check if the parent annotation has the reply currently visible and if so, remove it\n const replyItem = annotationItem.replies.find(({ id }) => id === replyId);\n if (replyItem) {\n feedAPI.deleteReplyItem(replyId, annotationId);\n }\n\n // Decrease the amount of replies by 1\n feedAPI.modifyFeedItemRepliesCountBy(annotationId, -1);\n }\n\n this.refreshActivitySidebar();\n }\n\n updateAnnotation() {\n const {\n annotatorState: { action, annotation },\n api,\n file,\n } = this.props;\n\n const feedAPI = api.getFeedAPI(false);\n const isPending = action === 'update_start';\n feedAPI.file = file;\n\n feedAPI.updateFeedItem({ ...annotation, isPending }, annotation.id);\n\n this.refreshActivitySidebar();\n }\n\n updateAnnotationReply() {\n const {\n annotatorState: { action, annotation, annotationReply },\n api,\n file,\n } = this.props;\n\n const feedAPI = api.getFeedAPI(false);\n const isPending = action === 'reply_update_start';\n feedAPI.file = file;\n\n feedAPI.updateReplyItem({ ...annotationReply, isPending }, annotation.id, annotationReply.id);\n\n this.refreshActivitySidebar();\n }\n\n updateActiveAnnotation = () => {\n const {\n annotatorState: { activeAnnotationFileVersionId, activeAnnotationId },\n file,\n getAnnotationsMatchPath,\n getAnnotationsPath,\n history,\n internalSidebarNavigation,\n internalSidebarNavigationHandler,\n location,\n routerDisabled,\n } = this.props;\n\n const currentFileVersionId = getProp(file, 'file_version.id');\n const defaultFileVersionId = activeAnnotationFileVersionId || currentFileVersionId;\n\n if (routerDisabled && internalSidebarNavigation && internalSidebarNavigationHandler) {\n // Use internal navigation when router is disabled\n const match = this.getInternalNavigationMatch(internalSidebarNavigation);\n const fileVersionId = getProp(match, 'params.fileVersionId', defaultFileVersionId);\n const newNavigationState = activeAnnotationId ? { open: true } : {};\n\n // Update the navigation and open state if transitioning to an active annotation id, force the sidebar open\n const updatedNavigation = {\n ...this.getInternalAnnotationsNavigation(fileVersionId, activeAnnotationId),\n ...newNavigationState,\n };\n internalSidebarNavigationHandler(updatedNavigation);\n } else {\n // Use router-based navigation\n const match = getAnnotationsMatchPath(location);\n const fileVersionId = getProp(match, 'params.fileVersionId', defaultFileVersionId);\n const newLocationState = activeAnnotationId ? { open: true } : location.state;\n\n // Update the location pathname and open state if transitioning to an active annotation id, force the sidebar open\n history.push({\n pathname: getAnnotationsPath(fileVersionId, activeAnnotationId),\n state: newLocationState,\n });\n }\n };\n\n updateActiveVersion = () => {\n const {\n api,\n file,\n fileId,\n getAnnotationsMatchPath,\n getAnnotationsPath,\n history,\n internalSidebarNavigation,\n internalSidebarNavigationHandler,\n location,\n onVersionChange,\n routerDisabled,\n } = this.props;\n\n const feedAPI = api.getFeedAPI(false);\n const currentFileVersionId = getProp(file, 'file_version.id');\n const { items: feedItems = [] } = feedAPI.getCachedItems(fileId) || {};\n\n if (routerDisabled && internalSidebarNavigation && internalSidebarNavigationHandler) {\n // Use internal navigation when router is disabled\n const match = this.getInternalNavigationMatch(internalSidebarNavigation);\n const fileVersionId = getProp(match, 'params.fileVersionId');\n const version = feedItems\n .filter(item => item.type === FEED_ITEM_TYPE_VERSION)\n .find(item => item.id === fileVersionId);\n\n if (version) {\n onVersionChange(version, {\n currentVersionId: currentFileVersionId,\n updateVersionToCurrent: () => {\n const currentVersionNavigation =\n this.getInternalAnnotationsNavigation(currentFileVersionId);\n internalSidebarNavigationHandler(currentVersionNavigation);\n },\n });\n }\n } else {\n // Use router-based navigation\n const match = getAnnotationsMatchPath(location);\n const fileVersionId = getProp(match, 'params.fileVersionId');\n const version = feedItems\n .filter(item => item.type === FEED_ITEM_TYPE_VERSION)\n .find(item => item.id === fileVersionId);\n\n if (version) {\n onVersionChange(version, {\n currentVersionId: currentFileVersionId,\n updateVersionToCurrent: () => history.push(getAnnotationsPath(currentFileVersionId)),\n });\n }\n }\n };\n\n refreshActivitySidebar = () => {\n const { internalSidebarNavigation, isOpen, location, routerDisabled } = this.props;\n const { current } = this.sidebarPanels;\n\n let isActivity = false;\n\n if (routerDisabled && internalSidebarNavigation) {\n // Check if current navigation is pointing to activity sidebar\n isActivity = internalSidebarNavigation.sidebar === ViewType.ACTIVITY;\n } else {\n // Use router-based check\n const pathname = getProp(location, 'pathname', '');\n isActivity = !!matchPath(pathname, '/activity');\n }\n\n // If the activity sidebar is currently open, then force it to refresh with the updated data\n if (current && isActivity && isOpen) {\n current.refresh(false);\n }\n };\n\n render() {\n return <WrappedComponent ref={this.sidebarPanels} {...this.props} />;\n }\n }\n\n const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n WithSidebarAnnotations.displayName = `WithSidebarAnnotations(${displayName})`;\n\n return WithSidebarAnnotations;\n}\n"],"mappings":"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","ignoreList":[]}
package/i18n/bn-IN.js CHANGED
@@ -302,7 +302,7 @@ export default {
302
302
  "be.noActivity": "এখনও কোনও কার্যকলাপ নেই",
303
303
  "be.noActivityAnnotationPrompt": "প্রিভিউয়ের উপরে ঘুরে দেখুন এবং ফাইলটি অ্যানোটেট করতে নীচের নিয়ন্ত্রণগুলি ব্যবহার করুন।",
304
304
  "be.noActivityCommentPrompt": "মন্তব্য করুন ও @ব্যক্তিদের বিজ্ঞপ্তি জানাতে তাদের উল্লেখ করুন।",
305
- "be.numFilesSelected": " {numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} } ",
305
+ "be.numFilesSelected": "{numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} } ",
306
306
  "be.open": "খুলুন",
307
307
  "be.pagination.nextPage": "পরবর্তী পৃষ্ঠা",
308
308
  "be.pagination.nextPageButton": "পরবর্তী",
@@ -92,6 +92,8 @@ be.breadcrumb.breadcrumbLabel = ব্রেডকাম্ব
92
92
  be.cancel = বাতিল করুন
93
93
  # Label for choose action.
94
94
  be.choose = বেছে নিন
95
+ # Aria label for the clear selection button.
96
+ be.clearSelection = Clear selection
95
97
  # Label for close action.
96
98
  be.close = বন্ধ করুন
97
99
  # Icon title for a Box item of type folder that has collaborators
@@ -602,6 +604,8 @@ be.noActivity = এখনও কোনও কার্যকলাপ নেই
602
604
  be.noActivityAnnotationPrompt = প্রিভিউয়ের উপরে ঘুরে দেখুন এবং ফাইলটি অ্যানোটেট করতে নীচের নিয়ন্ত্রণগুলি ব্যবহার করুন।
603
605
  # Message shown in
604
606
  be.noActivityCommentPrompt = মন্তব্য করুন ও @ব্যক্তিদের বিজ্ঞপ্তি জানাতে তাদের উল্লেখ করুন।
607
+ # Text shown to indicate the number of files selected
608
+ be.numFilesSelected = {numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} }
605
609
  # Label for open action.
606
610
  be.open = খুলুন
607
611
  # Next page button tooltip
package/i18n/da-DK.js CHANGED
@@ -302,7 +302,7 @@ export default {
302
302
  "be.noActivity": "Ingen aktivitet at vise",
303
303
  "be.noActivityAnnotationPrompt": "Hold markøren over forhåndsvisningen, og brug kontrolelementerne nederst til at kommentere filen.",
304
304
  "be.noActivityCommentPrompt": "Skriv en kommentar, og brug @omtale for at give personer besked.",
305
- "be.numFilesSelected": " {numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} } ",
305
+ "be.numFilesSelected": "{numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} } ",
306
306
  "be.open": "Åbn",
307
307
  "be.pagination.nextPage": "Næste side",
308
308
  "be.pagination.nextPageButton": "Næste",
@@ -92,6 +92,8 @@ be.breadcrumb.breadcrumbLabel = Breadcrumb
92
92
  be.cancel = Annuller
93
93
  # Label for choose action.
94
94
  be.choose = Vælg
95
+ # Aria label for the clear selection button.
96
+ be.clearSelection = Clear selection
95
97
  # Label for close action.
96
98
  be.close = Luk
97
99
  # Icon title for a Box item of type folder that has collaborators
@@ -602,6 +604,8 @@ be.noActivity = Ingen aktivitet at vise
602
604
  be.noActivityAnnotationPrompt = Hold markøren over forhåndsvisningen, og brug kontrolelementerne nederst til at kommentere filen.
603
605
  # Message shown in
604
606
  be.noActivityCommentPrompt = Skriv en kommentar, og brug @omtale for at give personer besked.
607
+ # Text shown to indicate the number of files selected
608
+ be.numFilesSelected = {numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} }
605
609
  # Label for open action.
606
610
  be.open = Åbn
607
611
  # Next page button tooltip
package/i18n/de-DE.js CHANGED
@@ -302,7 +302,7 @@ export default {
302
302
  "be.noActivity": "Keine Aktivität zum Anzeigen verfügbar",
303
303
  "be.noActivityAnnotationPrompt": "Bewegen Sie den Mauszeiger über die Vorschau und verwenden Sie die Steuerelemente unten, um die Datei mit Anmerkungen zu versehen.",
304
304
  "be.noActivityCommentPrompt": "Kommentieren Sie und @erwähnen Sie Personen, um sie zu benachrichtigen.",
305
- "be.numFilesSelected": " {numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} } ",
305
+ "be.numFilesSelected": "{numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} } ",
306
306
  "be.open": "Öffnen",
307
307
  "be.pagination.nextPage": "Nächste Seite",
308
308
  "be.pagination.nextPageButton": "Weiter",
@@ -92,6 +92,8 @@ be.breadcrumb.breadcrumbLabel = Breadcrumb
92
92
  be.cancel = Abbrechen
93
93
  # Label for choose action.
94
94
  be.choose = Auswählen
95
+ # Aria label for the clear selection button.
96
+ be.clearSelection = Clear selection
95
97
  # Label for close action.
96
98
  be.close = Schließen
97
99
  # Icon title for a Box item of type folder that has collaborators
@@ -602,6 +604,8 @@ be.noActivity = Keine Aktivität zum Anzeigen verfügbar
602
604
  be.noActivityAnnotationPrompt = Bewegen Sie den Mauszeiger über die Vorschau und verwenden Sie die Steuerelemente unten, um die Datei mit Anmerkungen zu versehen.
603
605
  # Message shown in
604
606
  be.noActivityCommentPrompt = Kommentieren Sie und @erwähnen Sie Personen, um sie zu benachrichtigen.
607
+ # Text shown to indicate the number of files selected
608
+ be.numFilesSelected = {numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} }
605
609
  # Label for open action.
606
610
  be.open = Öffnen
607
611
  # Next page button tooltip
package/i18n/en-AU.js CHANGED
@@ -302,7 +302,7 @@ export default {
302
302
  "be.noActivity": "No activity yet",
303
303
  "be.noActivityAnnotationPrompt": "Hover over the preview and use the controls at the bottom to annotate the file.",
304
304
  "be.noActivityCommentPrompt": "Comment and @mention people to notify them.",
305
- "be.numFilesSelected": " {numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} } ",
305
+ "be.numFilesSelected": "{numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} } ",
306
306
  "be.open": "Open",
307
307
  "be.pagination.nextPage": "Next page",
308
308
  "be.pagination.nextPageButton": "Next",
@@ -92,6 +92,8 @@ be.breadcrumb.breadcrumbLabel = Breadcrumb
92
92
  be.cancel = Cancel
93
93
  # Label for choose action.
94
94
  be.choose = Choose
95
+ # Aria label for the clear selection button.
96
+ be.clearSelection = Clear selection
95
97
  # Label for close action.
96
98
  be.close = Close
97
99
  # Icon title for a Box item of type folder that has collaborators
@@ -602,6 +604,8 @@ be.noActivity = No activity yet
602
604
  be.noActivityAnnotationPrompt = Hover over the preview and use the controls at the bottom to annotate the file.
603
605
  # Message shown in
604
606
  be.noActivityCommentPrompt = Comment and @mention people to notify them.
607
+ # Text shown to indicate the number of files selected
608
+ be.numFilesSelected = {numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} }
605
609
  # Label for open action.
606
610
  be.open = Open
607
611
  # Next page button tooltip
package/i18n/en-CA.js CHANGED
@@ -302,7 +302,7 @@ export default {
302
302
  "be.noActivity": "No activity to show",
303
303
  "be.noActivityAnnotationPrompt": "Hover over the preview and use the controls at the bottom to annotate the file.",
304
304
  "be.noActivityCommentPrompt": "Comment and @mention people to notify them.",
305
- "be.numFilesSelected": " {numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} } ",
305
+ "be.numFilesSelected": "{numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} } ",
306
306
  "be.open": "Open",
307
307
  "be.pagination.nextPage": "Next Page",
308
308
  "be.pagination.nextPageButton": "Next",
@@ -92,6 +92,8 @@ be.breadcrumb.breadcrumbLabel = Breadcrumb
92
92
  be.cancel = Cancel
93
93
  # Label for choose action.
94
94
  be.choose = Choose
95
+ # Aria label for the clear selection button.
96
+ be.clearSelection = Clear selection
95
97
  # Label for close action.
96
98
  be.close = Close
97
99
  # Icon title for a Box item of type folder that has collaborators
@@ -602,6 +604,8 @@ be.noActivity = No activity to show
602
604
  be.noActivityAnnotationPrompt = Hover over the preview and use the controls at the bottom to annotate the file.
603
605
  # Message shown in
604
606
  be.noActivityCommentPrompt = Comment and @mention people to notify them.
607
+ # Text shown to indicate the number of files selected
608
+ be.numFilesSelected = {numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} }
605
609
  # Label for open action.
606
610
  be.open = Open
607
611
  # Next page button tooltip
package/i18n/en-GB.js CHANGED
@@ -302,7 +302,7 @@ export default {
302
302
  "be.noActivity": "No activity yet",
303
303
  "be.noActivityAnnotationPrompt": "Hover over the preview and use the controls at the bottom to annotate the file.",
304
304
  "be.noActivityCommentPrompt": "Comment and @mention people to notify them.",
305
- "be.numFilesSelected": " {numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} } ",
305
+ "be.numFilesSelected": "{numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} } ",
306
306
  "be.open": "Open",
307
307
  "be.pagination.nextPage": "Next page",
308
308
  "be.pagination.nextPageButton": "Next",
@@ -92,6 +92,8 @@ be.breadcrumb.breadcrumbLabel = Breadcrumb
92
92
  be.cancel = Cancel
93
93
  # Label for choose action.
94
94
  be.choose = Choose
95
+ # Aria label for the clear selection button.
96
+ be.clearSelection = Clear selection
95
97
  # Label for close action.
96
98
  be.close = Close
97
99
  # Icon title for a Box item of type folder that has collaborators
@@ -602,6 +604,8 @@ be.noActivity = No activity yet
602
604
  be.noActivityAnnotationPrompt = Hover over the preview and use the controls at the bottom to annotate the file.
603
605
  # Message shown in
604
606
  be.noActivityCommentPrompt = Comment and @mention people to notify them.
607
+ # Text shown to indicate the number of files selected
608
+ be.numFilesSelected = {numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} }
605
609
  # Label for open action.
606
610
  be.open = Open
607
611
  # Next page button tooltip
package/i18n/es-419.js CHANGED
@@ -302,7 +302,7 @@ export default {
302
302
  "be.noActivity": "Sin actividad",
303
303
  "be.noActivityAnnotationPrompt": "Coloque el cursor sobre la vista previa y utilice los controles de la parte inferior para anotar el archivo.",
304
304
  "be.noActivityCommentPrompt": "Comente y @mencione a personas para que reciban una notificación.",
305
- "be.numFilesSelected": " {numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} } ",
305
+ "be.numFilesSelected": "{numSelected, plural, =0 {0 files selected} one {1 file selected} other {# files selected} } ",
306
306
  "be.open": "Abrir",
307
307
  "be.pagination.nextPage": "Página siguiente",
308
308
  "be.pagination.nextPageButton": "Siguiente",