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.
- package/dist/explorer.js +1 -1
- package/dist/preview.js +1 -1
- package/dist/sidebar.js +1 -1
- package/es/elements/content-preview/PreviewNavigation.js +0 -2
- package/es/elements/content-preview/PreviewNavigation.js.flow +0 -2
- package/es/elements/content-preview/PreviewNavigation.js.map +1 -1
- package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js +29 -7
- package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.flow +44 -5
- package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.map +1 -1
- package/es/elements/content-sidebar/withSidebarAnnotations.js +141 -35
- package/es/elements/content-sidebar/withSidebarAnnotations.js.flow +199 -37
- package/es/elements/content-sidebar/withSidebarAnnotations.js.map +1 -1
- package/i18n/bn-IN.js +1 -1
- package/i18n/bn-IN.properties +4 -0
- package/i18n/da-DK.js +1 -1
- package/i18n/da-DK.properties +4 -0
- package/i18n/de-DE.js +1 -1
- package/i18n/de-DE.properties +4 -0
- package/i18n/en-AU.js +1 -1
- package/i18n/en-AU.properties +4 -0
- package/i18n/en-CA.js +1 -1
- package/i18n/en-CA.properties +4 -0
- package/i18n/en-GB.js +1 -1
- package/i18n/en-GB.properties +4 -0
- package/i18n/es-419.js +1 -1
- package/i18n/es-419.properties +4 -0
- package/i18n/es-ES.js +1 -1
- package/i18n/es-ES.properties +4 -0
- package/i18n/fi-FI.js +1 -1
- package/i18n/fi-FI.properties +4 -0
- package/i18n/fr-CA.js +1 -1
- package/i18n/fr-CA.properties +4 -0
- package/i18n/fr-FR.js +1 -1
- package/i18n/fr-FR.properties +4 -0
- package/i18n/hi-IN.js +1 -1
- package/i18n/hi-IN.properties +4 -0
- package/i18n/it-IT.js +1 -1
- package/i18n/it-IT.properties +4 -0
- package/i18n/ja-JP.js +1 -1
- package/i18n/ja-JP.properties +4 -0
- package/i18n/ko-KR.js +1 -1
- package/i18n/ko-KR.properties +4 -0
- package/i18n/nb-NO.js +1 -1
- package/i18n/nb-NO.properties +4 -0
- package/i18n/nl-NL.js +1 -1
- package/i18n/nl-NL.properties +4 -0
- package/i18n/pl-PL.js +1 -1
- package/i18n/pl-PL.properties +4 -0
- package/i18n/pt-BR.js +1 -1
- package/i18n/pt-BR.properties +4 -0
- package/i18n/ru-RU.js +1 -1
- package/i18n/ru-RU.properties +4 -0
- package/i18n/sv-SE.js +1 -1
- package/i18n/sv-SE.properties +4 -0
- package/i18n/tr-TR.js +1 -1
- package/i18n/tr-TR.properties +4 -0
- package/i18n/zh-CN.js +1 -1
- package/i18n/zh-CN.properties +4 -0
- package/i18n/zh-TW.js +1 -1
- package/i18n/zh-TW.properties +4 -0
- package/package.json +1 -1
- package/src/elements/content-preview/PreviewNavigation.js +0 -2
- package/src/elements/content-preview/__tests__/PreviewNavigation.test.js +12 -12
- package/src/elements/content-sidebar/__tests__/withSidebarAnnotations.rtl.test.js +1152 -0
- package/src/elements/content-sidebar/versions/VersionsSidebarContainer.js +44 -5
- package/src/elements/content-sidebar/versions/__tests__/VersionsSidebarContainer.test.js +200 -43
- package/src/elements/content-sidebar/versions/__tests__/__snapshots__/VersionsSidebarContainer.test.js.snap +2 -2
- package/src/elements/content-sidebar/withSidebarAnnotations.js +199 -37
- 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 {
|
|
49
|
-
|
|
50
|
-
|
|
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 (
|
|
55
|
-
|
|
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 {
|
|
61
|
-
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
|
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
|
-
|
|
391
|
+
|
|
281
392
|
const currentFileVersionId = getProp(file, 'file_version.id');
|
|
282
393
|
const defaultFileVersionId = activeAnnotationFileVersionId || currentFileVersionId;
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
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
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
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": "
|
|
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": "পরবর্তী",
|
package/i18n/bn-IN.properties
CHANGED
|
@@ -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": "
|
|
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",
|
package/i18n/da-DK.properties
CHANGED
|
@@ -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": "
|
|
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",
|
package/i18n/de-DE.properties
CHANGED
|
@@ -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": "
|
|
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",
|
package/i18n/en-AU.properties
CHANGED
|
@@ -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": "
|
|
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",
|
package/i18n/en-CA.properties
CHANGED
|
@@ -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": "
|
|
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",
|
package/i18n/en-GB.properties
CHANGED
|
@@ -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": "
|
|
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",
|