box-ui-elements 16.0.0-beta.8 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (798) hide show
  1. package/dist/explorer.css +1 -1
  2. package/dist/explorer.js +19 -58
  3. package/dist/openwith.css +1 -1
  4. package/dist/openwith.js +10 -10
  5. package/dist/picker.css +1 -1
  6. package/dist/picker.js +12 -12
  7. package/dist/preview.css +1 -1
  8. package/dist/preview.js +17 -56
  9. package/dist/sharing.css +1 -1
  10. package/dist/sharing.js +34 -34
  11. package/dist/sidebar.css +1 -1
  12. package/dist/sidebar.js +17 -56
  13. package/dist/uploader.css +1 -1
  14. package/dist/uploader.js +12 -12
  15. package/es/api/APIFactory.js +27 -0
  16. package/es/api/APIFactory.js.flow +26 -0
  17. package/es/api/APIFactory.js.map +1 -1
  18. package/es/api/Annotations.js +180 -27
  19. package/es/api/Annotations.js.flow +150 -14
  20. package/es/api/Annotations.js.map +1 -1
  21. package/es/api/Comments.js +2 -2
  22. package/es/api/Comments.js.flow +5 -4
  23. package/es/api/Comments.js.map +1 -1
  24. package/es/api/Feed.js +578 -69
  25. package/es/api/Feed.js.flow +677 -17
  26. package/es/api/Feed.js.map +1 -1
  27. package/es/api/FileCollaborators.js +29 -0
  28. package/es/api/FileCollaborators.js.flow +30 -0
  29. package/es/api/FileCollaborators.js.map +1 -1
  30. package/es/api/ThreadedComments.js +64 -27
  31. package/es/api/ThreadedComments.js.flow +54 -29
  32. package/es/api/ThreadedComments.js.map +1 -1
  33. package/es/api/fixtures.js +381 -0
  34. package/es/api/fixtures.js.flow +401 -0
  35. package/es/api/fixtures.js.map +1 -0
  36. package/es/api/messages.js +4 -0
  37. package/es/api/messages.js.flow +5 -0
  38. package/es/api/messages.js.map +1 -1
  39. package/es/api/utils.js +33 -0
  40. package/es/api/utils.js.flow +30 -0
  41. package/es/api/utils.js.map +1 -0
  42. package/es/common/types/annotations.js.flow +18 -10
  43. package/es/common/types/feed.js +1 -1
  44. package/es/common/types/feed.js.flow +40 -4
  45. package/es/common/types/feed.js.map +1 -1
  46. package/es/components/accessible-svg/AccessibleSVG.stories.js +20 -0
  47. package/es/components/accessible-svg/AccessibleSVG.stories.js.map +1 -0
  48. package/es/components/badge/Badge.stories.js +1 -13
  49. package/es/components/badge/Badge.stories.js.map +1 -1
  50. package/es/components/badge/BetaBadge.stories.js +10 -0
  51. package/es/components/badge/BetaBadge.stories.js.map +1 -0
  52. package/es/components/badge/TrialBadge.stories.js +10 -0
  53. package/es/components/badge/TrialBadge.stories.js.map +1 -0
  54. package/es/components/badge/UpgradeBadge.stories.js +10 -0
  55. package/es/components/badge/UpgradeBadge.stories.js.map +1 -0
  56. package/es/components/breadcrumb/Breadcrumb.js +48 -35
  57. package/es/components/breadcrumb/Breadcrumb.js.flow +68 -42
  58. package/es/components/breadcrumb/Breadcrumb.js.map +1 -1
  59. package/es/components/breadcrumb/EllipsisCrumb.js +5 -3
  60. package/es/components/breadcrumb/EllipsisCrumb.js.flow +10 -6
  61. package/es/components/breadcrumb/EllipsisCrumb.js.map +1 -1
  62. package/es/components/count-badge/CountBadge.stories.js +1 -1
  63. package/es/components/count-badge/CountBadge.stories.js.map +1 -1
  64. package/es/components/draggable-list/DraggableList.stories.js +119 -5
  65. package/es/components/draggable-list/DraggableList.stories.js.map +1 -1
  66. package/es/components/dropdown-menu/DropdownMenu.js +9 -0
  67. package/es/components/dropdown-menu/DropdownMenu.js.flow +11 -0
  68. package/es/components/dropdown-menu/DropdownMenu.js.map +1 -1
  69. package/es/components/dropdown-menu/DropdownMenu.scss +3 -3
  70. package/es/components/infinite-scroll/InfiniteScroll.js +4 -2
  71. package/es/components/infinite-scroll/InfiniteScroll.js.map +1 -1
  72. package/es/components/modal/Modal.scss +5 -1
  73. package/es/components/search-form/SearchForm.js +1 -1
  74. package/es/components/search-form/SearchForm.js.flow +1 -1
  75. package/es/components/search-form/SearchForm.js.map +1 -1
  76. package/es/components/table/makeSelectable.js +304 -97
  77. package/es/components/table/makeSelectable.js.flow +299 -98
  78. package/es/components/table/makeSelectable.js.map +1 -1
  79. package/es/components/tooltip/Tooltip.js +3 -2
  80. package/es/components/tooltip/Tooltip.js.map +1 -1
  81. package/es/constants.js +11 -0
  82. package/es/constants.js.flow +11 -0
  83. package/es/constants.js.map +1 -1
  84. package/es/elements/common/annotator-context/index.js +1 -0
  85. package/es/elements/common/annotator-context/index.js.flow +4 -0
  86. package/es/elements/common/annotator-context/index.js.map +1 -1
  87. package/es/elements/common/annotator-context/types.js +12 -0
  88. package/es/elements/common/annotator-context/types.js.flow +77 -35
  89. package/es/elements/common/annotator-context/types.js.map +1 -1
  90. package/es/elements/common/annotator-context/useAnnotatorEvents.js +205 -0
  91. package/es/elements/common/annotator-context/useAnnotatorEvents.js.flow +52 -0
  92. package/es/elements/common/annotator-context/useAnnotatorEvents.js.map +1 -0
  93. package/es/elements/common/annotator-context/withAnnotations.js +224 -5
  94. package/es/elements/common/annotator-context/withAnnotations.js.flow +73 -36
  95. package/es/elements/common/annotator-context/withAnnotations.js.map +1 -1
  96. package/es/elements/common/annotator-context/withAnnotatorContext.js +12 -4
  97. package/es/elements/common/annotator-context/withAnnotatorContext.js.flow +29 -9
  98. package/es/elements/common/annotator-context/withAnnotatorContext.js.map +1 -1
  99. package/es/elements/common/current-user/index.js +3 -0
  100. package/es/elements/common/current-user/index.js.flow +8 -0
  101. package/es/elements/common/current-user/index.js.map +1 -0
  102. package/es/elements/common/current-user/withCurrentUser.js +139 -0
  103. package/es/elements/common/current-user/withCurrentUser.js.flow +40 -0
  104. package/es/elements/common/current-user/withCurrentUser.js.map +1 -0
  105. package/es/elements/common/flowTypes.js.flow +22 -4
  106. package/es/elements/common/flowTypes.js.map +1 -1
  107. package/es/elements/common/interactionTargets.js +2 -0
  108. package/es/elements/common/interactionTargets.js.flow +2 -0
  109. package/es/elements/common/interactionTargets.js.map +1 -1
  110. package/es/elements/common/logger/Logger.js +1 -1
  111. package/es/elements/common/logger/Logger.js.flow +1 -1
  112. package/es/elements/common/logger/Logger.js.map +1 -1
  113. package/es/elements/common/messages.js +4 -0
  114. package/es/elements/common/messages.js.flow +5 -0
  115. package/es/elements/common/messages.js.map +1 -1
  116. package/es/elements/content-explorer/DeleteConfirmationDialog.js +2 -1
  117. package/es/elements/content-explorer/DeleteConfirmationDialog.js.flow +3 -1
  118. package/es/elements/content-explorer/DeleteConfirmationDialog.js.map +1 -1
  119. package/es/elements/content-explorer/DeleteConfirmationDialog.scss +5 -0
  120. package/es/elements/content-explorer/stories/DeleteConfirmationDialog.stories.js +58 -0
  121. package/es/elements/content-explorer/stories/DeleteConfirmationDialog.stories.js.flow +60 -0
  122. package/es/elements/content-explorer/stories/DeleteConfirmationDialog.stories.js.map +1 -0
  123. package/es/elements/content-sidebar/ActivitySidebar.js +323 -197
  124. package/es/elements/content-sidebar/ActivitySidebar.js.flow +381 -154
  125. package/es/elements/content-sidebar/ActivitySidebar.js.map +1 -1
  126. package/es/elements/content-sidebar/ActivitySidebarFilter.js +52 -0
  127. package/es/elements/content-sidebar/ActivitySidebarFilter.js.flow +59 -0
  128. package/es/elements/content-sidebar/ActivitySidebarFilter.js.map +1 -0
  129. package/es/elements/content-sidebar/ActivitySidebarFilter.scss +4 -0
  130. package/es/elements/content-sidebar/DetailsSidebar.js +50 -25
  131. package/es/elements/content-sidebar/DetailsSidebar.js.flow +32 -4
  132. package/es/elements/content-sidebar/DetailsSidebar.js.map +1 -1
  133. package/es/elements/content-sidebar/Sidebar.js +4 -1
  134. package/es/elements/content-sidebar/Sidebar.js.flow +6 -1
  135. package/es/elements/content-sidebar/Sidebar.js.map +1 -1
  136. package/es/elements/content-sidebar/SidebarContentInsights.js +45 -0
  137. package/es/elements/content-sidebar/SidebarContentInsights.js.map +1 -0
  138. package/es/elements/content-sidebar/SidebarContentInsights.scss +6 -0
  139. package/es/elements/content-sidebar/SidebarPanels.js +2 -0
  140. package/es/elements/content-sidebar/SidebarPanels.js.flow +4 -0
  141. package/es/elements/content-sidebar/SidebarPanels.js.map +1 -1
  142. package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js +91 -10
  143. package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js.flow +122 -24
  144. package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js.map +1 -1
  145. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js +27 -15
  146. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js.flow +59 -18
  147. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js.map +1 -1
  148. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js +101 -0
  149. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js.flow +126 -0
  150. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js.map +1 -0
  151. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.scss +17 -0
  152. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js +69 -0
  153. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js.flow +85 -0
  154. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js.map +1 -0
  155. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.scss +16 -0
  156. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js +62 -0
  157. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js.flow +59 -0
  158. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js.map +1 -0
  159. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.scss +22 -0
  160. package/es/elements/content-sidebar/activity-feed/activity-feed/activityFeedUtils.js +2 -2
  161. package/es/elements/content-sidebar/activity-feed/activity-feed/activityFeedUtils.js.flow +2 -2
  162. package/es/elements/content-sidebar/activity-feed/activity-feed/activityFeedUtils.js.map +1 -1
  163. package/es/elements/content-sidebar/activity-feed/activity-feed/fixtures.js +55 -0
  164. package/es/elements/content-sidebar/activity-feed/activity-feed/fixtures.js.map +1 -0
  165. package/es/elements/content-sidebar/activity-feed/activity-feed/messages.js +16 -0
  166. package/es/elements/content-sidebar/activity-feed/activity-feed/messages.js.flow +20 -0
  167. package/es/elements/content-sidebar/activity-feed/activity-feed/messages.js.map +1 -1
  168. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js +121 -0
  169. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js.flow +117 -0
  170. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js.map +1 -0
  171. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.scss +7 -0
  172. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js +75 -0
  173. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js.flow +105 -0
  174. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js.map +1 -0
  175. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.scss +5 -0
  176. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js +77 -0
  177. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js.flow +86 -0
  178. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js.map +1 -0
  179. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.scss +3 -0
  180. package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js +11 -0
  181. package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js.flow +26 -0
  182. package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js.map +1 -0
  183. package/es/elements/content-sidebar/activity-feed/annotation-thread/index.js +2 -0
  184. package/es/elements/content-sidebar/activity-feed/annotation-thread/index.js.flow +1 -0
  185. package/es/elements/content-sidebar/activity-feed/annotation-thread/index.js.map +1 -0
  186. package/es/elements/content-sidebar/activity-feed/annotation-thread/messages.js +17 -0
  187. package/es/elements/content-sidebar/activity-feed/annotation-thread/messages.js.flow +21 -0
  188. package/es/elements/content-sidebar/activity-feed/annotation-thread/messages.js.map +1 -0
  189. package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js +180 -0
  190. package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js.flow +203 -0
  191. package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js.map +1 -0
  192. package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js +124 -0
  193. package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js.flow +121 -0
  194. package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js.map +1 -0
  195. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js +19 -5
  196. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js.flow +24 -4
  197. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js.map +1 -1
  198. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js +25 -4
  199. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js.flow +36 -2
  200. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js.map +1 -1
  201. package/es/elements/content-sidebar/activity-feed/annotations/messages.js +8 -0
  202. package/es/elements/content-sidebar/activity-feed/annotations/messages.js.flow +10 -0
  203. package/es/elements/content-sidebar/activity-feed/annotations/messages.js.map +1 -1
  204. package/es/elements/content-sidebar/activity-feed/comment/Comment.js +61 -28
  205. package/es/elements/content-sidebar/activity-feed/comment/Comment.js.flow +54 -10
  206. package/es/elements/content-sidebar/activity-feed/comment/Comment.js.map +1 -1
  207. package/es/elements/content-sidebar/activity-feed/comment/messages.js +8 -0
  208. package/es/elements/content-sidebar/activity-feed/comment/messages.js.flow +10 -0
  209. package/es/elements/content-sidebar/activity-feed/comment/messages.js.map +1 -1
  210. package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js +4 -2
  211. package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js.flow +3 -1
  212. package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js.map +1 -1
  213. package/es/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.js +16 -5
  214. package/es/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.js.flow +34 -4
  215. package/es/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.js.map +1 -1
  216. package/es/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.scss +40 -3
  217. package/es/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessage.js +49 -0
  218. package/es/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessage.js.flow +42 -0
  219. package/es/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessage.js.map +1 -0
  220. package/es/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessageToggle.js +21 -0
  221. package/es/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessageToggle.js.flow +24 -0
  222. package/es/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessageToggle.js.map +1 -0
  223. package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js +12 -0
  224. package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js.flow +15 -0
  225. package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js.map +1 -1
  226. package/es/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.js +24 -0
  227. package/es/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.js.flow +30 -0
  228. package/es/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.js.map +1 -0
  229. package/es/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.scss +6 -0
  230. package/es/elements/content-sidebar/activity-feed/common/activity-status/index.js +2 -0
  231. package/es/elements/content-sidebar/activity-feed/common/activity-status/index.js.flow +2 -0
  232. package/es/elements/content-sidebar/activity-feed/common/activity-status/index.js.map +1 -0
  233. package/es/elements/content-sidebar/activity-feed/common/activity-status/messages.js +9 -0
  234. package/es/elements/content-sidebar/activity-feed/common/activity-status/messages.js.flow +13 -0
  235. package/es/elements/content-sidebar/activity-feed/common/activity-status/messages.js.map +1 -0
  236. package/es/elements/content-sidebar/activity-feed/common/activity-timestamp/ActivityTimestamp.scss +1 -1
  237. package/es/elements/content-sidebar/fixtures.js +181 -0
  238. package/es/elements/content-sidebar/fixtures.js.flow +185 -0
  239. package/es/elements/content-sidebar/fixtures.js.map +1 -0
  240. package/es/elements/content-sidebar/flowTypes.js.flow +9 -25
  241. package/es/elements/content-sidebar/messages.js +8 -0
  242. package/es/elements/content-sidebar/messages.js.flow +10 -0
  243. package/es/elements/content-sidebar/messages.js.map +1 -1
  244. package/es/elements/content-sidebar/withErrorHandling.js.flow +1 -1
  245. package/es/elements/content-sidebar/withErrorHandling.js.map +1 -1
  246. package/es/elements/content-sidebar/withSidebarAnnotations.js +215 -30
  247. package/es/elements/content-sidebar/withSidebarAnnotations.js.flow +162 -11
  248. package/es/elements/content-sidebar/withSidebarAnnotations.js.map +1 -1
  249. package/es/elements/content-uploader/OverallUploadsProgressBar.js +10 -8
  250. package/es/elements/content-uploader/OverallUploadsProgressBar.js.flow +11 -12
  251. package/es/elements/content-uploader/OverallUploadsProgressBar.js.map +1 -1
  252. package/es/features/classification/Classification.scss +1 -1
  253. package/es/features/classification/security-controls/SecurityControlsItem.scss +1 -0
  254. package/es/features/classification/security-controls/messages.js +8 -0
  255. package/es/features/classification/security-controls/messages.js.flow +10 -0
  256. package/es/features/classification/security-controls/messages.js.map +1 -1
  257. package/es/features/classification/security-controls/utils.js +4 -7
  258. package/es/features/classification/security-controls/utils.js.flow +8 -12
  259. package/es/features/classification/security-controls/utils.js.map +1 -1
  260. package/es/features/content-explorer/content-explorer/ContentExplorer.js +6 -1
  261. package/es/features/content-explorer/content-explorer/ContentExplorer.js.flow +4 -0
  262. package/es/features/content-explorer/content-explorer/ContentExplorer.js.map +1 -1
  263. package/es/features/content-explorer/content-explorer/ContentExplorer.scss +4 -0
  264. package/es/features/content-explorer/content-explorer/ContentExplorerBreadcrumbs.js +15 -9
  265. package/es/features/content-explorer/content-explorer/ContentExplorerBreadcrumbs.js.flow +14 -11
  266. package/es/features/content-explorer/content-explorer/ContentExplorerBreadcrumbs.js.map +1 -1
  267. package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js +4 -1
  268. package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js.flow +4 -1
  269. package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js.map +1 -1
  270. package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js +6 -3
  271. package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js.flow +5 -1
  272. package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js.map +1 -1
  273. package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js +6 -1
  274. package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js.flow +5 -1
  275. package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js.map +1 -1
  276. package/es/features/content-explorer/prop-types.js +7 -1
  277. package/es/features/content-explorer/prop-types.js.flow +8 -0
  278. package/es/features/content-explorer/prop-types.js.map +1 -1
  279. package/es/features/content-insights/CompactCount.js +24 -0
  280. package/es/features/content-insights/CompactCount.js.map +1 -0
  281. package/es/features/content-insights/ContentAnalyticsErrorState.js +35 -0
  282. package/es/features/content-insights/ContentAnalyticsErrorState.js.map +1 -0
  283. package/es/features/content-insights/ContentAnalyticsErrorState.scss +17 -0
  284. package/es/features/content-insights/ContentInsightsSummary.js +42 -0
  285. package/es/features/content-insights/ContentInsightsSummary.js.map +1 -0
  286. package/es/features/content-insights/ContentInsightsSummary.scss +12 -0
  287. package/es/features/content-insights/ContentInsightsSummaryGhostState.js +19 -0
  288. package/es/features/content-insights/ContentInsightsSummaryGhostState.js.map +1 -0
  289. package/es/features/content-insights/ContentInsightsSummaryGhostState.scss +9 -0
  290. package/es/features/content-insights/GraphCardGhostState.js +25 -0
  291. package/es/features/content-insights/GraphCardGhostState.js.map +1 -0
  292. package/es/features/content-insights/GraphCardGhostState.scss +18 -0
  293. package/es/features/content-insights/GraphCardPreviewsSummary.js +30 -0
  294. package/es/features/content-insights/GraphCardPreviewsSummary.js.map +1 -0
  295. package/es/features/content-insights/GraphCardPreviewsSummary.scss +10 -0
  296. package/es/features/content-insights/GraphGhostState.js +21 -0
  297. package/es/features/content-insights/GraphGhostState.js.map +1 -0
  298. package/es/features/content-insights/GraphGhostState.scss +11 -0
  299. package/es/features/content-insights/HeaderWithCount.js +23 -0
  300. package/es/features/content-insights/HeaderWithCount.js.map +1 -0
  301. package/es/features/content-insights/HeaderWithCount.scss +10 -0
  302. package/es/features/content-insights/MetricSummary.js +85 -0
  303. package/es/features/content-insights/MetricSummary.js.map +1 -0
  304. package/es/features/content-insights/MetricSummary.scss +14 -0
  305. package/es/features/content-insights/OpenContentInsightsButton.js +16 -0
  306. package/es/features/content-insights/OpenContentInsightsButton.js.map +1 -0
  307. package/es/features/content-insights/TrendPill.js +61 -0
  308. package/es/features/content-insights/TrendPill.js.map +1 -0
  309. package/es/features/content-insights/TrendPill.scss +33 -0
  310. package/es/features/content-insights/_mixins.scss +7 -0
  311. package/es/features/content-insights/_variables.scss +4 -0
  312. package/es/features/content-insights/charts/bar/Bar.js +57 -0
  313. package/es/features/content-insights/charts/bar/Bar.js.map +1 -0
  314. package/es/features/content-insights/charts/bar/Bar.scss +27 -0
  315. package/es/features/content-insights/charts/bar/BarChart.js +70 -0
  316. package/es/features/content-insights/charts/bar/BarChart.js.map +1 -0
  317. package/es/features/content-insights/charts/bar/BarChart.scss +56 -0
  318. package/es/features/content-insights/charts/types.js +2 -0
  319. package/es/{common/types/threadedComments.js.map → features/content-insights/charts/types.js.map} +1 -1
  320. package/es/features/content-insights/constants.js +54 -0
  321. package/es/features/content-insights/constants.js.map +1 -0
  322. package/es/features/content-insights/messages.js +69 -0
  323. package/es/features/content-insights/messages.js.map +1 -0
  324. package/es/features/content-insights/numberUtils.js +10 -0
  325. package/es/features/content-insights/numberUtils.js.map +1 -0
  326. package/es/features/content-insights/types.js +2 -0
  327. package/es/features/content-insights/types.js.map +1 -0
  328. package/es/features/item-details/ItemProperties.scss +1 -1
  329. package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js +5 -3
  330. package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js.flow +4 -2
  331. package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js.map +1 -1
  332. package/es/features/unified-share-modal/ContactRestrictionNotice.js +34 -8
  333. package/es/features/unified-share-modal/ContactRestrictionNotice.js.flow +36 -6
  334. package/es/features/unified-share-modal/ContactRestrictionNotice.js.map +1 -1
  335. package/es/features/unified-share-modal/EmailForm.js +59 -47
  336. package/es/features/unified-share-modal/EmailForm.js.flow +31 -13
  337. package/es/features/unified-share-modal/EmailForm.js.map +1 -1
  338. package/es/features/unified-share-modal/UnifiedShareForm.js +112 -103
  339. package/es/features/unified-share-modal/UnifiedShareForm.js.flow +25 -8
  340. package/es/features/unified-share-modal/UnifiedShareForm.js.map +1 -1
  341. package/es/features/unified-share-modal/UnifiedShareModal.js +1 -0
  342. package/es/features/unified-share-modal/UnifiedShareModal.js.flow +1 -0
  343. package/es/features/unified-share-modal/UnifiedShareModal.js.map +1 -1
  344. package/es/features/unified-share-modal/flowTypes.js.flow +4 -2
  345. package/es/features/unified-share-modal/flowTypes.js.map +1 -1
  346. package/es/features/unified-share-modal/messages.js +12 -8
  347. package/es/features/unified-share-modal/messages.js.flow +14 -8
  348. package/es/features/unified-share-modal/messages.js.map +1 -1
  349. package/es/features/unified-share-modal/utils/hasRestrictedContacts.js +9 -4
  350. package/es/features/unified-share-modal/utils/hasRestrictedContacts.js.flow +10 -3
  351. package/es/features/unified-share-modal/utils/hasRestrictedContacts.js.map +1 -1
  352. package/es/features/unified-share-modal/utils/isRestrictedContact.js +15 -0
  353. package/es/features/unified-share-modal/utils/isRestrictedContact.js.flow +21 -0
  354. package/es/features/unified-share-modal/utils/isRestrictedContact.js.map +1 -0
  355. package/es/icon/fill/Alert16.js +3 -2
  356. package/es/icon/fill/Alert16.js.flow +3 -2
  357. package/es/icon/fill/Alert16.js.map +1 -1
  358. package/es/icon/fill/AlertBadge16.js +31 -0
  359. package/es/icon/fill/AlertBadge16.js.flow +29 -0
  360. package/es/icon/fill/AlertBadge16.js.map +1 -0
  361. package/es/icon/fill/AlertBadge16.stories.js +13 -0
  362. package/es/icon/fill/AlertBadge16.stories.js.map +1 -0
  363. package/es/icon/fill/Info16.js +2 -2
  364. package/es/icon/fill/Info16.js.flow +1 -1
  365. package/es/icon/fill/Info16.js.map +1 -1
  366. package/es/icon/fill/InfoBadge16.js +30 -0
  367. package/es/icon/fill/InfoBadge16.js.flow +28 -0
  368. package/es/icon/fill/InfoBadge16.js.map +1 -0
  369. package/es/icon/fill/InfoBadge16.stories.js +13 -0
  370. package/es/icon/fill/InfoBadge16.stories.js.map +1 -0
  371. package/es/icon/fill/UserSettings16.js +38 -0
  372. package/es/icon/fill/UserSettings16.js.flow +38 -0
  373. package/es/icon/fill/UserSettings16.js.map +1 -0
  374. package/es/icon/fill/UserSettings16.stories.js +13 -0
  375. package/es/icon/fill/UserSettings16.stories.js.map +1 -0
  376. package/es/icon/line/AlertBubble16.js +31 -0
  377. package/es/icon/line/AlertBubble16.js.flow +29 -0
  378. package/es/icon/line/AlertBubble16.js.map +1 -0
  379. package/es/icon/line/AlertBubble16.stories.js +13 -0
  380. package/es/icon/line/AlertBubble16.stories.js.map +1 -0
  381. package/es/icon/line/AvatarXBadge16.js +45 -0
  382. package/es/icon/line/AvatarXBadge16.js.flow +39 -0
  383. package/es/icon/line/AvatarXBadge16.js.map +1 -0
  384. package/es/icon/line/AvatarXBadge16.stories.js +13 -0
  385. package/es/icon/line/AvatarXBadge16.stories.js.map +1 -0
  386. package/es/icon/line/CoEdit16.js +32 -0
  387. package/es/icon/line/CoEdit16.js.flow +30 -0
  388. package/es/icon/line/CoEdit16.js.map +1 -0
  389. package/es/icon/line/CoEdit16.stories.js +13 -0
  390. package/es/icon/line/CoEdit16.stories.js.map +1 -0
  391. package/es/icon/line/Collaborations16.js +32 -0
  392. package/es/icon/line/Collaborations16.js.flow +30 -0
  393. package/es/icon/line/Collaborations16.js.map +1 -0
  394. package/es/icon/line/Collaborations16.stories.js +13 -0
  395. package/es/icon/line/Collaborations16.stories.js.map +1 -0
  396. package/es/icon/line/CommentBubble16.js +35 -0
  397. package/es/icon/line/CommentBubble16.js.flow +34 -0
  398. package/es/icon/line/CommentBubble16.js.map +1 -0
  399. package/es/icon/line/CommentBubble16.stories.js +13 -0
  400. package/es/icon/line/CommentBubble16.stories.js.map +1 -0
  401. package/es/src/components/accessible-svg/AccessibleSVG.stories.d.ts +7 -0
  402. package/es/src/components/badge/Badge.stories.d.ts +0 -3
  403. package/es/src/components/badge/BetaBadge.stories.d.ts +6 -0
  404. package/es/src/components/badge/TrialBadge.stories.d.ts +6 -0
  405. package/es/src/components/badge/UpgradeBadge.stories.d.ts +6 -0
  406. package/es/src/components/draggable-list/DraggableList.stories.d.ts +3 -3
  407. package/es/src/components/infinite-scroll/InfiniteScroll.d.ts +1 -1
  408. package/es/src/components/tooltip/Tooltip.d.ts +2 -0
  409. package/es/src/elements/common/annotator-context/__tests__/useAnnotatorEvents.test.d.ts +1 -0
  410. package/es/src/elements/common/annotator-context/index.d.ts +1 -0
  411. package/es/src/elements/common/annotator-context/types.d.ts +28 -6
  412. package/es/src/elements/common/annotator-context/useAnnotatorEvents.d.ts +52 -0
  413. package/es/src/elements/common/annotator-context/withAnnotations.d.ts +11 -2
  414. package/es/src/elements/common/annotator-context/withAnnotatorContext.d.ts +6 -2
  415. package/es/src/elements/common/current-user/__tests__/withCurrentUser.test.d.ts +1 -0
  416. package/es/src/elements/common/current-user/index.d.ts +2 -0
  417. package/es/src/elements/common/current-user/withCurrentUser.d.ts +20 -0
  418. package/es/src/elements/content-sidebar/SidebarContentInsights.d.ts +15 -0
  419. package/es/src/elements/content-sidebar/__tests__/SidebarContentInsights.test.d.ts +1 -0
  420. package/es/src/elements/content-sidebar/activity-feed/activity-feed/fixtures.d.ts +55 -0
  421. package/es/src/features/content-insights/CompactCount.d.ts +15 -0
  422. package/es/src/features/content-insights/ContentAnalyticsErrorState.d.ts +7 -0
  423. package/es/src/features/content-insights/ContentInsightsSummary.d.ts +12 -0
  424. package/es/src/features/content-insights/ContentInsightsSummaryGhostState.d.ts +3 -0
  425. package/es/src/features/content-insights/GraphCardGhostState.d.ts +3 -0
  426. package/es/src/features/content-insights/GraphCardPreviewsSummary.d.ts +16 -0
  427. package/es/src/features/content-insights/GraphGhostState.d.ts +3 -0
  428. package/es/src/features/content-insights/HeaderWithCount.d.ts +7 -0
  429. package/es/src/features/content-insights/MetricSummary.d.ts +18 -0
  430. package/es/src/features/content-insights/OpenContentInsightsButton.d.ts +5 -0
  431. package/es/src/features/content-insights/TrendPill.d.ts +15 -0
  432. package/es/src/features/content-insights/__tests__/CompactCount.test.d.ts +1 -0
  433. package/es/src/features/content-insights/__tests__/ContentAnalyticsErrorState.test.d.ts +1 -0
  434. package/es/src/features/content-insights/__tests__/ContentInsightsSummary.test.d.ts +1 -0
  435. package/es/src/features/content-insights/__tests__/GraphCardPreviewsSummary.test.d.ts +1 -0
  436. package/es/src/features/content-insights/__tests__/HeaderWithCount.test.d.ts +1 -0
  437. package/es/src/features/content-insights/__tests__/MetricSummary.test.d.ts +1 -0
  438. package/es/src/features/content-insights/charts/bar/Bar.d.ts +11 -0
  439. package/es/src/features/content-insights/charts/bar/BarChart.d.ts +19 -0
  440. package/es/src/features/content-insights/charts/bar/__tests__/Bar.test.d.ts +1 -0
  441. package/es/src/features/content-insights/charts/bar/__tests__/BarChart.test.d.ts +1 -0
  442. package/es/src/features/content-insights/charts/types.d.ts +2 -0
  443. package/es/src/features/content-insights/constants.d.ts +27 -0
  444. package/es/src/features/content-insights/messages.d.ts +83 -0
  445. package/es/src/features/content-insights/numberUtils.d.ts +3 -0
  446. package/es/src/features/content-insights/types.d.ts +24 -0
  447. package/es/src/icon/fill/AlertBadge16.d.ts +13 -0
  448. package/es/src/icon/fill/AlertBadge16.stories.d.ts +9 -0
  449. package/es/src/icon/fill/InfoBadge16.d.ts +13 -0
  450. package/es/src/icon/fill/InfoBadge16.stories.d.ts +9 -0
  451. package/es/src/icon/fill/UserSettings16.d.ts +13 -0
  452. package/es/src/icon/fill/UserSettings16.stories.d.ts +9 -0
  453. package/es/src/icon/line/AlertBubble16.d.ts +13 -0
  454. package/es/src/icon/line/AlertBubble16.stories.d.ts +9 -0
  455. package/es/src/icon/line/AvatarXBadge16.d.ts +13 -0
  456. package/es/src/icon/line/AvatarXBadge16.stories.d.ts +9 -0
  457. package/es/src/icon/line/CoEdit16.d.ts +13 -0
  458. package/es/src/icon/line/CoEdit16.stories.d.ts +9 -0
  459. package/es/src/icon/line/Collaborations16.d.ts +13 -0
  460. package/es/src/icon/line/Collaborations16.stories.d.ts +9 -0
  461. package/es/src/icon/line/CommentBubble16.d.ts +13 -0
  462. package/es/src/icon/line/CommentBubble16.stories.d.ts +9 -0
  463. package/es/src/styles/variables.d.ts +3 -1
  464. package/es/styles/constants/_layout.scss +1 -1
  465. package/es/styles/constants/_media-queries.scss +2 -0
  466. package/es/styles/variables.js +6 -2
  467. package/es/styles/variables.js.flow +4 -2
  468. package/es/styles/variables.js.map +1 -1
  469. package/es/utils/error.js +5 -1
  470. package/es/utils/error.js.flow +5 -1
  471. package/es/utils/error.js.map +1 -1
  472. package/es/utils/fields.js +8 -3
  473. package/es/utils/fields.js.flow +21 -3
  474. package/es/utils/fields.js.map +1 -1
  475. package/es/utils/sorter.js.flow +2 -2
  476. package/es/utils/sorter.js.map +1 -1
  477. package/i18n/bn-IN.js +45 -7
  478. package/i18n/bn-IN.properties +83 -7
  479. package/i18n/da-DK.js +45 -7
  480. package/i18n/da-DK.properties +83 -7
  481. package/i18n/de-DE.js +45 -7
  482. package/i18n/de-DE.properties +83 -7
  483. package/i18n/en-AU.js +45 -7
  484. package/i18n/en-AU.properties +83 -7
  485. package/i18n/en-CA.js +45 -7
  486. package/i18n/en-CA.properties +83 -7
  487. package/i18n/en-GB.js +45 -7
  488. package/i18n/en-GB.properties +83 -7
  489. package/i18n/en-US.js +45 -7
  490. package/i18n/en-US.properties +83 -7
  491. package/i18n/en-x-pseudo.js +891 -854
  492. package/i18n/en-x-pseudo.properties +941 -843
  493. package/i18n/es-419.js +45 -7
  494. package/i18n/es-419.properties +83 -7
  495. package/i18n/es-ES.js +45 -7
  496. package/i18n/es-ES.properties +83 -7
  497. package/i18n/fi-FI.js +45 -7
  498. package/i18n/fi-FI.properties +83 -7
  499. package/i18n/fr-CA.js +45 -7
  500. package/i18n/fr-CA.properties +83 -7
  501. package/i18n/fr-FR.js +45 -7
  502. package/i18n/fr-FR.properties +83 -7
  503. package/i18n/hi-IN.js +45 -7
  504. package/i18n/hi-IN.properties +83 -7
  505. package/i18n/it-IT.js +45 -7
  506. package/i18n/it-IT.properties +83 -7
  507. package/i18n/ja-JP.js +47 -9
  508. package/i18n/ja-JP.properties +85 -9
  509. package/i18n/ko-KR.js +45 -7
  510. package/i18n/ko-KR.properties +83 -7
  511. package/i18n/nb-NO.js +45 -7
  512. package/i18n/nb-NO.properties +83 -7
  513. package/i18n/nl-NL.js +45 -7
  514. package/i18n/nl-NL.properties +83 -7
  515. package/i18n/pl-PL.js +45 -7
  516. package/i18n/pl-PL.properties +83 -7
  517. package/i18n/pt-BR.js +45 -7
  518. package/i18n/pt-BR.properties +83 -7
  519. package/i18n/ru-RU.js +45 -7
  520. package/i18n/ru-RU.properties +83 -7
  521. package/i18n/sv-SE.js +45 -7
  522. package/i18n/sv-SE.properties +83 -7
  523. package/i18n/tr-TR.js +45 -7
  524. package/i18n/tr-TR.properties +83 -7
  525. package/i18n/zh-CN.js +45 -7
  526. package/i18n/zh-CN.properties +83 -7
  527. package/i18n/zh-TW.js +45 -7
  528. package/i18n/zh-TW.properties +83 -7
  529. package/package.json +7 -8
  530. package/src/__mocks__/react-intl.js +4 -0
  531. package/src/api/APIFactory.js +26 -0
  532. package/src/api/Annotations.js +150 -14
  533. package/src/api/Comments.js +5 -4
  534. package/src/api/Feed.js +677 -17
  535. package/src/api/FileCollaborators.js +30 -0
  536. package/src/api/ThreadedComments.js +54 -29
  537. package/src/api/__tests__/Annotations.test.js +217 -11
  538. package/src/api/__tests__/Feed.test.js +699 -86
  539. package/src/api/__tests__/FileCollaborators.test.js +41 -0
  540. package/src/api/__tests__/ThreadedComments.test.js +47 -10
  541. package/src/api/__tests__/utils.test.js +11 -0
  542. package/src/api/fixtures.js +401 -0
  543. package/src/api/messages.js +5 -0
  544. package/src/api/utils.js +30 -0
  545. package/src/common/types/annotations.js +18 -10
  546. package/src/common/types/feed.js +40 -4
  547. package/src/components/accessible-svg/AccessibleSVG.stories.tsx +18 -0
  548. package/src/components/badge/Badge.stories.md +1 -7
  549. package/src/components/badge/Badge.stories.tsx +1 -10
  550. package/src/components/badge/BetaBadge.stories.tsx +9 -0
  551. package/src/components/badge/TrialBadge.stories.tsx +9 -0
  552. package/src/components/badge/UpgradeBadge.stories.tsx +9 -0
  553. package/src/components/breadcrumb/Breadcrumb.js +68 -42
  554. package/src/components/breadcrumb/EllipsisCrumb.js +10 -6
  555. package/src/components/count-badge/CountBadge.stories.tsx +1 -1
  556. package/src/components/draggable-list/DraggableList.stories.tsx +72 -5
  557. package/src/components/dropdown-menu/DropdownMenu.js +11 -0
  558. package/src/components/dropdown-menu/DropdownMenu.scss +3 -3
  559. package/src/components/dropdown-menu/__tests__/DropdownMenu.test.js +38 -0
  560. package/src/components/grid-view/__tests__/__snapshots__/GridViewSlider.test.js.snap +1 -0
  561. package/src/components/infinite-scroll/InfiniteScroll.md +1 -1
  562. package/src/components/infinite-scroll/InfiniteScroll.tsx +5 -2
  563. package/src/components/infinite-scroll/__tests__/InfiniteScroll.test.tsx +115 -127
  564. package/src/components/modal/Modal.scss +5 -1
  565. package/src/components/search-form/SearchForm.js +1 -1
  566. package/src/components/search-form/__tests__/SearchForm.test.js +25 -6
  567. package/src/components/sidebar-toggle-button/__tests__/__snapshots__/SidebarToggleButton.test.js.snap +4 -0
  568. package/src/components/table/__tests__/makeSelectable.test.js +654 -144
  569. package/src/components/table/makeSelectable.js +299 -98
  570. package/src/components/time/__tests__/ReadableTime.test.js +0 -1
  571. package/src/components/tooltip/Tooltip.tsx +5 -2
  572. package/src/components/tooltip/__tests__/Tooltip.test.tsx +10 -0
  573. package/src/components/tooltip/__tests__/__snapshots__/Tooltip.test.tsx.snap +1 -1
  574. package/src/constants.js +11 -0
  575. package/src/elements/common/annotator-context/__tests__/useAnnotatorEvents.test.tsx +509 -0
  576. package/src/elements/common/annotator-context/__tests__/withAnnotations.test.tsx +275 -12
  577. package/src/elements/common/annotator-context/__tests__/withAnnotatorContext.test.tsx +18 -6
  578. package/src/elements/common/annotator-context/index.js.flow +4 -0
  579. package/src/elements/common/annotator-context/index.ts +1 -0
  580. package/src/elements/common/annotator-context/types.js.flow +77 -35
  581. package/src/elements/common/annotator-context/types.ts +28 -6
  582. package/src/elements/common/annotator-context/useAnnotatorEvents.js.flow +52 -0
  583. package/src/elements/common/annotator-context/useAnnotatorEvents.ts +190 -0
  584. package/src/elements/common/annotator-context/withAnnotations.js.flow +73 -36
  585. package/src/elements/common/annotator-context/withAnnotations.tsx +170 -7
  586. package/src/elements/common/annotator-context/withAnnotatorContext.js.flow +29 -9
  587. package/src/elements/common/annotator-context/withAnnotatorContext.tsx +28 -5
  588. package/src/elements/common/current-user/__tests__/withCurrentUser.test.tsx +108 -0
  589. package/src/elements/common/current-user/index.js.flow +8 -0
  590. package/src/elements/common/current-user/index.ts +2 -0
  591. package/src/elements/common/current-user/withCurrentUser.js.flow +40 -0
  592. package/src/elements/common/current-user/withCurrentUser.tsx +139 -0
  593. package/src/elements/common/flowTypes.js +22 -4
  594. package/src/elements/common/interactionTargets.js +2 -0
  595. package/src/elements/common/logger/Logger.js +1 -1
  596. package/src/elements/common/messages.js +5 -0
  597. package/src/elements/content-explorer/DeleteConfirmationDialog.js +3 -1
  598. package/src/elements/content-explorer/DeleteConfirmationDialog.scss +5 -0
  599. package/src/elements/content-explorer/stories/DeleteConfirmationDialog.stories.js +60 -0
  600. package/src/elements/content-explorer/stories/DeleteConfirmationDialog.stories.md +1 -0
  601. package/src/elements/content-sidebar/ActivitySidebar.js +381 -154
  602. package/src/elements/content-sidebar/ActivitySidebarFilter.js +59 -0
  603. package/src/elements/content-sidebar/ActivitySidebarFilter.scss +4 -0
  604. package/src/elements/content-sidebar/DetailsSidebar.js +32 -4
  605. package/src/elements/content-sidebar/Sidebar.js +6 -1
  606. package/src/elements/content-sidebar/SidebarContentInsights.scss +6 -0
  607. package/src/elements/content-sidebar/SidebarContentInsights.tsx +57 -0
  608. package/src/elements/content-sidebar/SidebarPanels.js +4 -0
  609. package/src/elements/content-sidebar/__tests__/ActivitySidebar.test.js +533 -243
  610. package/src/elements/content-sidebar/__tests__/ActivitySidebarFilter.test.js +54 -0
  611. package/src/elements/content-sidebar/__tests__/DetailsSidebar.test.js +45 -0
  612. package/src/elements/content-sidebar/__tests__/Sidebar.test.js +1 -1
  613. package/src/elements/content-sidebar/__tests__/SidebarContentInsights.test.tsx +56 -0
  614. package/src/elements/content-sidebar/__tests__/SidebarPanels.test.js +4 -3
  615. package/src/elements/content-sidebar/__tests__/__snapshots__/ActivitySidebar.test.js.snap +29 -15
  616. package/src/elements/content-sidebar/__tests__/__snapshots__/SidebarFileProperties.test.js.snap +1 -0
  617. package/src/elements/content-sidebar/__tests__/withSidebarAnnotations.test.js +325 -32
  618. package/src/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js +122 -24
  619. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js +59 -18
  620. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js +126 -0
  621. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.scss +17 -0
  622. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js +85 -0
  623. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.scss +16 -0
  624. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js +59 -0
  625. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.scss +22 -0
  626. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActiveState.test.js +19 -5
  627. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityFeed.test.js +22 -16
  628. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThread.test.js +80 -0
  629. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThreadReplies.test.js +24 -0
  630. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThreadRepliesForm.test.js +47 -0
  631. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/__snapshots__/ActiveState.test.js.snap +74 -43
  632. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/activityFeedUtils.test.js +8 -8
  633. package/src/elements/content-sidebar/activity-feed/activity-feed/activityFeedUtils.js +2 -2
  634. package/src/elements/content-sidebar/activity-feed/activity-feed/fixtures.ts +56 -0
  635. package/src/elements/content-sidebar/activity-feed/activity-feed/messages.js +20 -0
  636. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js +117 -0
  637. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.scss +7 -0
  638. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js +105 -0
  639. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.scss +5 -0
  640. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js +86 -0
  641. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.scss +3 -0
  642. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThread.test.js +28 -0
  643. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThreadContent.test.js +89 -0
  644. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThreadCreate.test.js +103 -0
  645. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/useAnnotationAPI.test.js +202 -0
  646. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/useRepliesAPI.test.js +99 -0
  647. package/src/elements/content-sidebar/activity-feed/annotation-thread/errors.js +26 -0
  648. package/src/elements/content-sidebar/activity-feed/annotation-thread/index.js +1 -0
  649. package/src/elements/content-sidebar/activity-feed/annotation-thread/messages.js +21 -0
  650. package/src/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js +203 -0
  651. package/src/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js +121 -0
  652. package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js +24 -4
  653. package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js +36 -2
  654. package/src/elements/content-sidebar/activity-feed/annotations/__tests__/AnnotationActivity.test.js +14 -10
  655. package/src/elements/content-sidebar/activity-feed/annotations/__tests__/AnnotationActivityMenu.test.js +35 -1
  656. package/src/elements/content-sidebar/activity-feed/annotations/messages.js +10 -0
  657. package/src/elements/content-sidebar/activity-feed/comment/Comment.js +54 -10
  658. package/src/elements/content-sidebar/activity-feed/comment/__tests__/Comment.test.js +152 -7
  659. package/src/elements/content-sidebar/activity-feed/comment/__tests__/__snapshots__/Comment.test.js.snap +12 -7
  660. package/src/elements/content-sidebar/activity-feed/comment/messages.js +10 -0
  661. package/src/elements/content-sidebar/activity-feed/comment-form/CommentForm.js +3 -1
  662. package/src/elements/content-sidebar/activity-feed/comment-form/__tests__/CommentForm.test.js +11 -0
  663. package/src/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.js +34 -4
  664. package/src/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.scss +40 -3
  665. package/src/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessage.js +42 -0
  666. package/src/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessageToggle.js +24 -0
  667. package/src/elements/content-sidebar/activity-feed/common/activity-message/__tests__/ActivityMessage.test.js +48 -1
  668. package/src/elements/content-sidebar/activity-feed/common/activity-message/messages.js +15 -0
  669. package/src/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.js +30 -0
  670. package/src/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.scss +6 -0
  671. package/src/elements/content-sidebar/activity-feed/common/activity-status/__tests__/ActivityStatus.test.js +19 -0
  672. package/src/elements/content-sidebar/activity-feed/common/activity-status/index.js +2 -0
  673. package/src/elements/content-sidebar/activity-feed/common/activity-status/messages.js +13 -0
  674. package/src/elements/content-sidebar/activity-feed/common/activity-timestamp/ActivityTimestamp.scss +1 -1
  675. package/src/elements/content-sidebar/activity-feed/task-new/__tests__/Task.test.js +4 -3
  676. package/src/elements/content-sidebar/activity-feed/task-new/__tests__/__snapshots__/Task.test.js.snap +1 -2
  677. package/src/elements/content-sidebar/fixtures.js +185 -0
  678. package/src/elements/content-sidebar/flowTypes.js +9 -25
  679. package/src/elements/content-sidebar/messages.js +10 -0
  680. package/src/elements/content-sidebar/withErrorHandling.js +1 -1
  681. package/src/elements/content-sidebar/withSidebarAnnotations.js +162 -11
  682. package/src/elements/content-uploader/OverallUploadsProgressBar.js +11 -12
  683. package/src/features/classification/Classification.scss +1 -1
  684. package/src/features/classification/security-controls/SecurityControlsItem.scss +1 -0
  685. package/src/features/classification/security-controls/__tests__/__snapshots__/utils.test.js.snap +18 -16
  686. package/src/features/classification/security-controls/__tests__/utils.test.js +13 -5
  687. package/src/features/classification/security-controls/messages.js +10 -0
  688. package/src/features/classification/security-controls/utils.js +8 -12
  689. package/src/features/collapsible-sidebar/__tests__/__snapshots__/CollapsibleSidebarLogo.test.js.snap +2 -0
  690. package/src/features/content-explorer/content-explorer/ContentExplorer.js +4 -0
  691. package/src/features/content-explorer/content-explorer/ContentExplorer.scss +4 -0
  692. package/src/features/content-explorer/content-explorer/ContentExplorerBreadcrumbs.js +14 -11
  693. package/src/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js +4 -1
  694. package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerBreadcrumbs.test.js +2 -2
  695. package/src/features/content-explorer/content-explorer-modal/ContentExplorerModal.js +5 -1
  696. package/src/features/content-explorer/content-explorer-modal/__tests__/__snapshots__/ContentExplorerModal.test.js.snap +1 -0
  697. package/src/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js +5 -1
  698. package/src/features/content-explorer/prop-types.js +8 -0
  699. package/src/features/content-insights/CompactCount.tsx +23 -0
  700. package/src/features/content-insights/ContentAnalyticsErrorState.scss +17 -0
  701. package/src/features/content-insights/ContentAnalyticsErrorState.tsx +44 -0
  702. package/src/features/content-insights/ContentInsightsSummary.scss +12 -0
  703. package/src/features/content-insights/ContentInsightsSummary.tsx +45 -0
  704. package/src/features/content-insights/ContentInsightsSummaryGhostState.scss +9 -0
  705. package/src/features/content-insights/ContentInsightsSummaryGhostState.tsx +18 -0
  706. package/src/features/content-insights/GraphCardGhostState.scss +18 -0
  707. package/src/features/content-insights/GraphCardGhostState.tsx +18 -0
  708. package/src/features/content-insights/GraphCardPreviewsSummary.scss +10 -0
  709. package/src/features/content-insights/GraphCardPreviewsSummary.tsx +40 -0
  710. package/src/features/content-insights/GraphGhostState.scss +11 -0
  711. package/src/features/content-insights/GraphGhostState.tsx +17 -0
  712. package/src/features/content-insights/HeaderWithCount.scss +10 -0
  713. package/src/features/content-insights/HeaderWithCount.tsx +24 -0
  714. package/src/features/content-insights/MetricSummary.scss +14 -0
  715. package/src/features/content-insights/MetricSummary.tsx +65 -0
  716. package/src/features/content-insights/OpenContentInsightsButton.tsx +20 -0
  717. package/src/features/content-insights/TrendPill.scss +33 -0
  718. package/src/features/content-insights/TrendPill.tsx +70 -0
  719. package/src/features/content-insights/__tests__/CompactCount.test.tsx +57 -0
  720. package/src/features/content-insights/__tests__/ContentAnalyticsErrorState.test.tsx +33 -0
  721. package/src/features/content-insights/__tests__/ContentInsightsSummary.test.tsx +81 -0
  722. package/src/features/content-insights/__tests__/GraphCardPreviewsSummary.test.tsx +35 -0
  723. package/src/features/content-insights/__tests__/HeaderWithCount.test.tsx +26 -0
  724. package/src/features/content-insights/__tests__/MetricSummary.test.tsx +88 -0
  725. package/src/features/content-insights/_mixins.scss +7 -0
  726. package/src/features/content-insights/_variables.scss +4 -0
  727. package/src/features/content-insights/charts/bar/Bar.scss +27 -0
  728. package/src/features/content-insights/charts/bar/Bar.tsx +48 -0
  729. package/src/features/content-insights/charts/bar/BarChart.scss +56 -0
  730. package/src/features/content-insights/charts/bar/BarChart.tsx +78 -0
  731. package/src/features/content-insights/charts/bar/__tests__/Bar.test.tsx +74 -0
  732. package/src/features/content-insights/charts/bar/__tests__/BarChart.test.tsx +110 -0
  733. package/src/features/content-insights/charts/types.ts +3 -0
  734. package/src/features/content-insights/constants.ts +60 -0
  735. package/src/features/content-insights/messages.ts +90 -0
  736. package/src/features/content-insights/numberUtils.ts +9 -0
  737. package/src/features/content-insights/types.ts +33 -0
  738. package/src/features/item-details/ItemProperties.scss +1 -1
  739. package/src/features/shared-link-settings-modal/SharedLinkSettingsModal.js +4 -2
  740. package/src/features/shared-link-settings-modal/__tests__/SharedLinkSettingsModal.test.js +22 -3
  741. package/src/features/shared-link-settings-modal/__tests__/__snapshots__/SharedLinkSettingsModal.test.js.snap +2 -1
  742. package/src/features/unified-share-modal/ContactRestrictionNotice.js +36 -6
  743. package/src/features/unified-share-modal/EmailForm.js +31 -13
  744. package/src/features/unified-share-modal/UnifiedShareForm.js +25 -8
  745. package/src/features/unified-share-modal/UnifiedShareModal.js +1 -0
  746. package/src/features/unified-share-modal/__tests__/ContactRestrictionNotice.test.js +55 -6
  747. package/src/features/unified-share-modal/__tests__/EmailForm.test.js +131 -24
  748. package/src/features/unified-share-modal/__tests__/UnifiedShareForm.test.js +89 -35
  749. package/src/features/unified-share-modal/__tests__/__snapshots__/UnifiedShareForm.test.js.snap +16 -0
  750. package/src/features/unified-share-modal/__tests__/__snapshots__/UnifiedShareModal.test.js.snap +17 -0
  751. package/src/features/unified-share-modal/flowTypes.js +4 -2
  752. package/src/features/unified-share-modal/messages.js +14 -8
  753. package/src/features/unified-share-modal/utils/__tests__/hasRestrictedContacts.test.js +24 -10
  754. package/src/features/unified-share-modal/utils/__tests__/isRestrictedContact.test.js +33 -0
  755. package/src/features/unified-share-modal/utils/hasRestrictedContacts.js +10 -3
  756. package/src/features/unified-share-modal/utils/isRestrictedContact.js +21 -0
  757. package/src/features/virtualized-table/__tests__/__snapshots__/VirtualizedTable.test.js.snap +1 -0
  758. package/src/icon/fill/Alert16.js.flow +3 -2
  759. package/src/icon/fill/Alert16.tsx +3 -2
  760. package/src/icon/fill/AlertBadge16.js.flow +29 -0
  761. package/src/icon/fill/AlertBadge16.stories.tsx +13 -0
  762. package/src/icon/fill/AlertBadge16.tsx +27 -0
  763. package/src/icon/fill/Info16.js.flow +1 -1
  764. package/src/icon/fill/Info16.tsx +1 -1
  765. package/src/icon/fill/InfoBadge16.js.flow +28 -0
  766. package/src/icon/fill/InfoBadge16.stories.tsx +13 -0
  767. package/src/icon/fill/InfoBadge16.tsx +26 -0
  768. package/src/icon/fill/UserSettings16.js.flow +38 -0
  769. package/src/icon/fill/UserSettings16.stories.tsx +13 -0
  770. package/src/icon/fill/UserSettings16.tsx +36 -0
  771. package/src/icon/line/AlertBubble16.js.flow +29 -0
  772. package/src/icon/line/AlertBubble16.stories.tsx +13 -0
  773. package/src/icon/line/AlertBubble16.tsx +27 -0
  774. package/src/icon/line/AvatarXBadge16.js.flow +39 -0
  775. package/src/icon/line/AvatarXBadge16.stories.tsx +13 -0
  776. package/src/icon/line/AvatarXBadge16.tsx +37 -0
  777. package/src/icon/line/CoEdit16.js.flow +30 -0
  778. package/src/icon/line/CoEdit16.stories.tsx +13 -0
  779. package/src/icon/line/CoEdit16.tsx +28 -0
  780. package/src/icon/line/Collaborations16.js.flow +30 -0
  781. package/src/icon/line/Collaborations16.stories.tsx +13 -0
  782. package/src/icon/line/Collaborations16.tsx +28 -0
  783. package/src/icon/line/CommentBubble16.js.flow +34 -0
  784. package/src/icon/line/CommentBubble16.stories.tsx +13 -0
  785. package/src/icon/line/CommentBubble16.tsx +32 -0
  786. package/src/styles/constants/_layout.scss +1 -1
  787. package/src/styles/constants/_media-queries.scss +2 -0
  788. package/src/styles/variables.js +4 -2
  789. package/src/styles/variables.json +4 -2
  790. package/src/styles/variables.ts +3 -1
  791. package/src/utils/__tests__/fields.test.js +23 -4
  792. package/src/utils/__tests__/sorter.test.js +3 -3
  793. package/src/utils/error.js +5 -1
  794. package/src/utils/fields.js +21 -3
  795. package/src/utils/sorter.js +2 -2
  796. package/es/common/types/threadedComments.js +0 -2
  797. package/es/common/types/threadedComments.js.flow +0 -9
  798. package/src/common/types/threadedComments.js +0 -9
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/content-sidebar/ActivitySidebar.js"],"names":["React","debounce","flow","getProp","noop","FormattedMessage","ActivityFeed","AddTaskButton","API","messages","SidebarContent","WithAnnotatorContextProps","withAnnotatorContext","EVENT_DATA_READY","EVENT_JS_READY","getBadUserError","getBadItemError","mark","withAPIContext","withErrorBoundary","withFeatureConsumer","isFeatureEnabled","withLogger","withRouterAndRef","DEFAULT_COLLAB_DEBOUNCE","ERROR_CODE_FETCH_ACTIVITY","ORIGIN_ACTIVITY_SIDEBAR","SIDEBAR_VIEW_ACTIVITY","TASK_COMPLETION_RULE_ALL","activityFeedInlineError","inlineError","title","errorOccured","content","activityFeedItemApiError","MARK_NAME_DATA_LOADING","MARK_NAME_DATA_READY","MARK_NAME_JS_READY","ActivitySidebar","props","id","permissions","api","file","getFeedAPI","deleteAnnotation","deleteAnnotationSuccess","bind","feedErrorCallback","fetchFeedItems","text","updateAnnotation","feedSuccessCallback","e","code","contextInfo","errorCallback","message","assignees","taskType","dueAt","completionRule","onSuccess","onError","currentUser","state","successCallback","createTaskNew","task","onTaskDelete","deleteTaskNew","taskId","onTaskUpdate","updateTaskNew","taskAssignmentId","status","onTaskAssignmentUpdate","updateTaskCollaborator","onCommentDelete","deleteComment","comment","hasMention","onCommentUpdate","updateComment","onCommentCreate","createComment","deleteAppActivity","feedItems","fileId","logger","length","onDataReadyMetric","endMarkName","startMarkName","setState","activityFeedError","undefined","errors","Array","isArray","Error","showNotification","map","error","console","currentUserError","collaborators","entries","approverSelectorContacts","contactsLoaded","mentionSelectorContacts","searchStr","getCollaborators","getApproverContactsSuccessCallback","includeGroups","getMentionContactsSuccessCallback","maskError","errorHeader","currentUserErrorHeaderMessage","errorSubHeader","defaultErrorMaskSubHeaderMessage","userId","getUsersAPI","getAvatarUrlWithAccessToken","annotation","file_version","nextActiveAnnotationId","emitAnnotatorActiveChangeEvent","getAnnotationsMatchPath","getAnnotationsPath","history","location","onAnnotationSelect","annotationFileVersionId","currentFileVersionId","match","selectedFileVersionId","push","isDisabled","hasTasks","getApproverWithQuery","getAvatarUrl","createTask","onTaskModalClose","approvers","onReadyMetric","fetchCurrentUser","emitRemoveEvent","user","shouldDestroy","getUser","fetchCurrentUserSuccessCallback","fetchCurrentUserErrorCallback","shouldRefreshCache","features","shouldShowTasks","shouldShowVersions","hasVersions","shouldShowAppActivity","shouldShowAnnotations","fetchFeedItemsSuccessCallback","fetchFeedItemsErrorCallback","trim","getFileCollaboratorsAPI","getFileCollaborators","filter_term","include_groups","include_uploader_collabs","elementId","onVersionHistoryClick","getUserProfileUrl","activeFeedEntryId","activeFeedEntryType","onTaskView","renderAddTaskButton","sidebarActivityTitle","getMentionWithQuery","handleAnnotationDelete","handleAnnotationEdit","handleAnnotationSelect","updateTaskAssignment","deleteTask","updateTask","PureComponent","annotatorState","hasReplies","onTaskCreate","onVersionChange","ActivitySidebarComponent"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Activity feed sidebar component\n * @author Box\n */\n\nimport * as React from 'react';\nimport debounce from 'lodash/debounce';\nimport flow from 'lodash/flow';\nimport getProp from 'lodash/get';\nimport noop from 'lodash/noop';\nimport { FormattedMessage } from 'react-intl';\nimport { type ContextRouter } from 'react-router-dom';\nimport ActivityFeed from './activity-feed';\nimport AddTaskButton from './AddTaskButton';\nimport API from '../../api';\nimport messages from '../common/messages';\nimport SidebarContent from './SidebarContent';\nimport { WithAnnotatorContextProps, withAnnotatorContext } from '../common/annotator-context';\nimport { EVENT_DATA_READY, EVENT_JS_READY } from '../common/logger/constants';\nimport { getBadUserError, getBadItemError } from '../../utils/error';\nimport { mark } from '../../utils/performance';\nimport { withAPIContext } from '../common/api-context';\nimport { withErrorBoundary } from '../common/error-boundary';\nimport { withFeatureConsumer, isFeatureEnabled } from '../common/feature-checking';\nimport { withLogger } from '../common/logger';\nimport { withRouterAndRef } from '../common/routing';\nimport {\n DEFAULT_COLLAB_DEBOUNCE,\n ERROR_CODE_FETCH_ACTIVITY,\n ORIGIN_ACTIVITY_SIDEBAR,\n SIDEBAR_VIEW_ACTIVITY,\n TASK_COMPLETION_RULE_ALL,\n} from '../../constants';\nimport type {\n TaskCompletionRule,\n TaskType,\n TaskNew,\n TaskUpdatePayload,\n TaskCollabStatus,\n} from '../../common/types/tasks';\nimport type { Annotation, AnnotationPermission, FocusableFeedItemType, FeedItems } from '../../common/types/feed';\nimport type { ElementsErrorCallback, ErrorContextProps, ElementsXhrError } from '../../common/types/api';\nimport type { WithLoggerProps } from '../../common/types/logging';\nimport type { SelectorItems, User, UserMini, GroupMini, BoxItem, BoxItemPermission } from '../../common/types/core';\nimport type { GetProfileUrlCallback } from '../common/flowTypes';\nimport type { Translations, Collaborators, Errors } from './flowTypes';\nimport type { FeatureConfig } from '../common/feature-checking';\nimport './ActivitySidebar.scss';\n\ntype ExternalProps = {\n activeFeedEntryId?: string,\n activeFeedEntryType?: FocusableFeedItemType,\n currentUser?: User,\n getUserProfileUrl?: GetProfileUrlCallback,\n hasReplies?: boolean,\n hasTasks?: boolean,\n hasVersions?: boolean,\n onCommentCreate: Function,\n onCommentDelete: (comment: Comment) => any,\n onCommentUpdate: () => any,\n onTaskAssignmentUpdate: Function,\n onTaskCreate: Function,\n onTaskDelete: (id: string) => any,\n onTaskUpdate: () => any,\n onTaskView: (id: string, isCreator: boolean) => any,\n} & ErrorContextProps &\n WithAnnotatorContextProps;\n\ntype PropsWithoutContext = {\n elementId: string,\n file: BoxItem,\n hasSidebarInitialized?: boolean,\n isDisabled: boolean,\n onAnnotationSelect: Function,\n onVersionChange: Function,\n onVersionHistoryClick?: Function,\n translations?: Translations,\n} & ExternalProps &\n WithLoggerProps &\n ContextRouter;\n\ntype Props = {\n api: API,\n features: FeatureConfig,\n} & PropsWithoutContext;\n\ntype State = {\n activityFeedError?: Errors,\n approverSelectorContacts: SelectorItems<UserMini | GroupMini>,\n contactsLoaded?: boolean,\n currentUser?: User,\n currentUserError?: Errors,\n feedItems?: FeedItems,\n mentionSelectorContacts?: SelectorItems<UserMini>,\n};\n\nexport const activityFeedInlineError: Errors = {\n inlineError: {\n title: messages.errorOccured,\n content: messages.activityFeedItemApiError,\n },\n};\n\nconst MARK_NAME_DATA_LOADING = `${ORIGIN_ACTIVITY_SIDEBAR}_data_loading`;\nconst MARK_NAME_DATA_READY = `${ORIGIN_ACTIVITY_SIDEBAR}_${EVENT_DATA_READY}`;\nconst MARK_NAME_JS_READY = `${ORIGIN_ACTIVITY_SIDEBAR}_${EVENT_JS_READY}`;\n\nmark(MARK_NAME_JS_READY);\n\nclass ActivitySidebar extends React.PureComponent<Props, State> {\n static defaultProps = {\n annotatorState: {},\n emitAnnotatorActiveChangeEvent: noop,\n getAnnotationsMatchPath: noop,\n getAnnotationsPath: noop,\n hasReplies: false,\n hasTasks: true,\n hasVersions: true,\n isDisabled: false,\n onAnnotationSelect: noop,\n onCommentCreate: noop,\n onCommentDelete: noop,\n onCommentUpdate: noop,\n onTaskAssignmentUpdate: noop,\n onTaskCreate: noop,\n onTaskDelete: noop,\n onTaskUpdate: noop,\n onVersionChange: noop,\n onVersionHistoryClick: noop,\n };\n\n constructor(props: Props) {\n super(props);\n // eslint-disable-next-line react/prop-types\n const { logger } = this.props;\n\n mark(MARK_NAME_DATA_LOADING);\n\n logger.onReadyMetric({\n endMarkName: MARK_NAME_JS_READY,\n });\n this.state = {};\n }\n\n componentDidMount() {\n const { currentUser } = this.props;\n\n this.fetchFeedItems(true);\n this.fetchCurrentUser(currentUser);\n }\n\n handleAnnotationDelete = ({ id, permissions }: { id: string, permissions: AnnotationPermission }) => {\n const { api, file } = this.props;\n\n api.getFeedAPI(false).deleteAnnotation(\n file,\n id,\n permissions,\n this.deleteAnnotationSuccess.bind(this, id),\n this.feedErrorCallback,\n );\n\n this.fetchFeedItems();\n };\n\n handleAnnotationEdit = (id: string, text: string, permissions: AnnotationPermission) => {\n const { api, file } = this.props;\n\n api.getFeedAPI(false).updateAnnotation(\n file,\n id,\n text,\n permissions,\n this.feedSuccessCallback,\n this.feedErrorCallback,\n );\n\n this.fetchFeedItems();\n };\n\n deleteAnnotationSuccess(id: string) {\n const { emitRemoveEvent } = this.props;\n\n this.feedSuccessCallback();\n emitRemoveEvent(id);\n }\n\n /**\n * Fetches a Users info\n *\n * @private\n * @param {User} [user] - Box User. If missing, gets user that the current token was generated for.\n * @param {boolean} shouldDestroy\n * @return {void}\n */\n fetchCurrentUser(user?: User, shouldDestroy: boolean = false): void {\n const { api, file } = this.props;\n\n if (!file) {\n throw getBadItemError();\n }\n\n if (typeof user === 'undefined') {\n api.getUsersAPI(shouldDestroy).getUser(\n file.id,\n this.fetchCurrentUserSuccessCallback,\n this.fetchCurrentUserErrorCallback,\n );\n } else {\n this.setState({ currentUser: user, currentUserError: undefined });\n }\n }\n\n /**\n * Success callback for fetching feed items\n */\n feedSuccessCallback = (): void => {\n this.fetchFeedItems();\n };\n\n /**\n * Error callback for fetching feed items\n *\n * @param {Error} e - the error which occured\n * @param {Error} code - the code for the error\n * @param {Object} contextInfo - the context info for the error\n */\n feedErrorCallback = (e: ElementsXhrError, code: string, contextInfo?: Object) => {\n this.errorCallback(e, code, contextInfo);\n this.fetchFeedItems();\n };\n\n createTask = (\n message: string,\n assignees: SelectorItems<>,\n taskType: TaskType,\n dueAt: ?string,\n completionRule: TaskCompletionRule,\n onSuccess: ?Function,\n onError: ?Function,\n ): void => {\n const { currentUser } = this.state;\n const { file, api } = this.props;\n\n if (!currentUser) {\n throw getBadUserError();\n }\n const errorCallback = (e, code, contextInfo) => {\n if (onError) {\n onError(e, code, contextInfo);\n }\n this.feedErrorCallback(e, code, contextInfo);\n };\n const successCallback = () => {\n if (onSuccess) {\n onSuccess();\n }\n this.feedSuccessCallback();\n };\n\n api.getFeedAPI(false).createTaskNew(\n file,\n currentUser,\n message,\n assignees,\n taskType,\n dueAt,\n completionRule,\n successCallback,\n errorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n deleteTask = (task: TaskNew): void => {\n const { file, api, onTaskDelete } = this.props;\n api.getFeedAPI(false).deleteTaskNew(\n file,\n task,\n (taskId: string) => {\n this.feedSuccessCallback();\n onTaskDelete(taskId);\n },\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n updateTask = (task: TaskUpdatePayload, onSuccess: ?Function, onError: ?Function): void => {\n const { file, api, onTaskUpdate } = this.props;\n const errorCallback = (e, code) => {\n if (onError) {\n onError(e, code);\n }\n this.feedErrorCallback(e, code);\n };\n const successCallback = () => {\n this.feedSuccessCallback();\n\n if (onSuccess) {\n onSuccess();\n }\n\n onTaskUpdate();\n };\n\n api.getFeedAPI(false).updateTaskNew(file, task, successCallback, errorCallback);\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n updateTaskAssignment = (taskId: string, taskAssignmentId: string, status: TaskCollabStatus): void => {\n const { file, api, onTaskAssignmentUpdate } = this.props;\n const { currentUser = {} } = this.state;\n\n const successCallback = () => {\n this.feedSuccessCallback();\n onTaskAssignmentUpdate(taskId, taskAssignmentId, status, currentUser.id);\n };\n\n api.getFeedAPI(false).updateTaskCollaborator(\n file,\n taskId,\n taskAssignmentId,\n status,\n successCallback,\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Deletes a comment via the API.\n *\n * @param {Object} args - A subset of the comment\n * @return void\n */\n deleteComment = ({ id, permissions }: { id: string, permissions: BoxItemPermission }): void => {\n const { file, api, onCommentDelete } = this.props;\n\n api.getFeedAPI(false).deleteComment(\n file,\n id,\n permissions,\n (comment: Comment) => {\n this.feedSuccessCallback();\n onCommentDelete(comment);\n },\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n updateComment = (\n id: string,\n text: string,\n hasMention: boolean,\n permissions: BoxItemPermission,\n onSuccess: ?Function,\n onError: ?Function,\n ): void => {\n const { file, api, onCommentUpdate } = this.props;\n\n const errorCallback = (e, code) => {\n if (onError) {\n onError(e, code);\n }\n this.feedErrorCallback(e, code);\n };\n\n const successCallback = () => {\n this.feedSuccessCallback();\n if (onSuccess) {\n onSuccess();\n }\n onCommentUpdate();\n };\n\n api.getFeedAPI(false).updateComment(file, id, text, hasMention, permissions, successCallback, errorCallback);\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Posts a new comment to the API\n *\n * @param {string} text - The comment's text\n * @param {boolean} hasMention - The comment's text\n * @return {void}\n */\n createComment = (text: string, hasMention: boolean): void => {\n const { file, api, onCommentCreate } = this.props;\n const { currentUser } = this.state;\n\n if (!currentUser) {\n throw getBadUserError();\n }\n\n api.getFeedAPI(false).createComment(\n file,\n currentUser,\n text,\n hasMention,\n (comment: Comment) => {\n onCommentCreate(comment);\n this.feedSuccessCallback();\n },\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Deletes an app activity item via the API.\n *\n * @param {Object} args - A subset of the app activity\n * @return void\n */\n deleteAppActivity = ({ id }: { id: string }): void => {\n const { file, api } = this.props;\n\n api.getFeedAPI(false).deleteAppActivity(file, id, this.feedSuccessCallback, this.feedErrorCallback);\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Fetches the feed items for the sidebar\n *\n * @param {boolean} shouldRefreshCache true if the cache should be refreshed\n * @param {boolean} shouldDestroy true if the api factory should be destroyed\n */\n fetchFeedItems(shouldRefreshCache: boolean = false, shouldDestroy: boolean = false) {\n const { file, api, features, hasTasks: shouldShowTasks, hasVersions: shouldShowVersions } = this.props;\n const shouldShowAppActivity = isFeatureEnabled(features, 'activityFeed.appActivity.enabled');\n const shouldShowAnnotations = isFeatureEnabled(features, 'activityFeed.annotations.enabled');\n\n api.getFeedAPI(shouldDestroy).feedItems(\n file,\n shouldRefreshCache,\n this.fetchFeedItemsSuccessCallback,\n this.fetchFeedItemsErrorCallback,\n this.errorCallback,\n { shouldShowAnnotations, shouldShowAppActivity, shouldShowTasks, shouldShowVersions },\n );\n }\n\n /**\n * Handles a successful feed API fetch\n *\n * @private\n * @param {Array} feedItems - the feed items\n * @return {void}\n */\n fetchFeedItemsSuccessCallback = (feedItems: FeedItems): void => {\n const {\n file: { id: fileId },\n logger,\n } = this.props;\n\n mark(MARK_NAME_DATA_READY);\n\n // Only emit metric if has >1 activity feed items (there should always at least be the current version)\n if (feedItems.length > 1) {\n logger.onDataReadyMetric(\n {\n endMarkName: MARK_NAME_DATA_READY,\n startMarkName: MARK_NAME_DATA_LOADING,\n },\n fileId,\n );\n }\n\n this.setState({ feedItems, activityFeedError: undefined });\n };\n\n /**\n * Handles a failed feed item fetch\n *\n * @private\n * @param {Error} e - API error\n * @return {void}\n */\n fetchFeedItemsErrorCallback = (feedItems: FeedItems, errors: ElementsXhrError[]): void => {\n const { onError } = this.props;\n\n this.setState({\n feedItems,\n activityFeedError: activityFeedInlineError,\n });\n\n if (Array.isArray(errors) && errors.length) {\n onError(new Error('Fetch feed items error'), ERROR_CODE_FETCH_ACTIVITY, {\n showNotification: true,\n errors: errors.map(({ code }) => code),\n });\n }\n };\n\n /**\n * Network error callback\n *\n * @private\n * @param {Error} error - Error object\n * @param {Error} code - the code for the error\n * @param {Object} contextInfo - the context info for the error\n * @return {void}\n */\n errorCallback = (error: ElementsXhrError, code: string, contextInfo: Object = {}): void => {\n /* eslint-disable no-console */\n console.error(error);\n /* eslint-enable no-console */\n\n // eslint-disable-next-line react/prop-types\n this.props.onError(error, code, contextInfo);\n };\n\n /**\n * User fetch success callback\n *\n * @private\n * @param {Object} currentUser - User info object\n * @return {void}\n */\n fetchCurrentUserSuccessCallback = (currentUser: User): void => {\n this.setState({ currentUser, currentUserError: undefined });\n };\n\n /**\n * File approver contacts fetch success callback\n *\n * @private\n * @param {BoxItemCollection} collaborators - Collaborators response data\n * @return {void}\n */\n getApproverContactsSuccessCallback = (collaborators: { entries: SelectorItems<> }): void => {\n const { entries } = collaborators;\n this.setState({ approverSelectorContacts: entries });\n };\n\n /**\n * File @mention contacts fetch success callback\n *\n * @private\n * @param {BoxItemCollection} collaborators - Collaborators response data\n * @return {void}\n */\n getMentionContactsSuccessCallback = (collaborators: { entries: SelectorItems<> }): void => {\n const { entries } = collaborators;\n this.setState({ contactsLoaded: false }, () =>\n this.setState({\n contactsLoaded: true,\n mentionSelectorContacts: entries,\n }),\n );\n };\n\n /**\n * File @mention contacts fetch success callback\n *\n * @private\n * @param {string} searchStr - Search string to filter file collaborators by\n * @return {void}\n */\n getApproverWithQuery = debounce(\n (searchStr: string) =>\n this.getCollaborators(this.getApproverContactsSuccessCallback, this.errorCallback, searchStr, {\n includeGroups: true,\n }),\n DEFAULT_COLLAB_DEBOUNCE,\n );\n\n /**\n * Fetches file @mention's\n *\n * @private\n * @param {string} searchStr - Search string to filter file collaborators by\n * @return {void}\n */\n getMentionWithQuery = debounce(\n (searchStr: string) =>\n this.getCollaborators(this.getMentionContactsSuccessCallback, this.errorCallback, searchStr),\n DEFAULT_COLLAB_DEBOUNCE,\n );\n\n /**\n * Fetches file collaborators\n *\n * @param {Function} successCallback - the success callback\n * @param {Function} errorCallback - the error callback\n * @param {string} searchStr - the search string\n * @param {Object} [options]\n * @param {boolean} [options.includeGroups] - return groups as well as users\n * @return {void}\n */\n getCollaborators(\n successCallback: Collaborators => void,\n errorCallback: ElementsErrorCallback,\n searchStr: string,\n { includeGroups = false }: { includeGroups: boolean } = {},\n ): void {\n // Do not fetch without filter\n const { file, api } = this.props;\n if (!searchStr || searchStr.trim() === '') {\n return;\n }\n\n api.getFileCollaboratorsAPI(true).getFileCollaborators(file.id, successCallback, errorCallback, {\n filter_term: searchStr,\n include_groups: includeGroups,\n include_uploader_collabs: false,\n });\n }\n\n /**\n * Handles a failed file user info fetch\n *\n * @private\n * @param {ElementsXhrError} e - API error\n * @return {void}\n */\n fetchCurrentUserErrorCallback = (e: ElementsXhrError, code: string) => {\n this.setState({\n currentUser: undefined,\n currentUserError: {\n maskError: {\n errorHeader: messages.currentUserErrorHeaderMessage,\n errorSubHeader: messages.defaultErrorMaskSubHeaderMessage,\n },\n },\n });\n\n this.errorCallback(e, code, {\n error: e,\n });\n };\n\n /**\n * Gets the user avatar URL\n *\n * @param {string} userId the user id\n * @param {string} fileId the file id\n * @return the user avatar URL string for a given user with access token attached\n */\n getAvatarUrl = async (userId: string): Promise<?string> => {\n const { file, api } = this.props;\n\n return api.getUsersAPI(false).getAvatarUrlWithAccessToken(userId, file.id);\n };\n\n handleAnnotationSelect = (annotation: Annotation): void => {\n const { file_version, id: nextActiveAnnotationId } = annotation;\n const {\n emitAnnotatorActiveChangeEvent,\n file,\n getAnnotationsMatchPath,\n getAnnotationsPath,\n history,\n location,\n onAnnotationSelect,\n } = this.props;\n const annotationFileVersionId = getProp(file_version, 'id');\n const currentFileVersionId = getProp(file, 'file_version.id');\n const match = getAnnotationsMatchPath(location);\n const selectedFileVersionId = getProp(match, 'params.fileVersionId', currentFileVersionId);\n\n emitAnnotatorActiveChangeEvent(nextActiveAnnotationId);\n\n if (annotationFileVersionId && annotationFileVersionId !== selectedFileVersionId) {\n history.push(getAnnotationsPath(annotationFileVersionId, nextActiveAnnotationId));\n }\n\n onAnnotationSelect(annotation);\n };\n\n onTaskModalClose = () => {\n this.setState({\n approverSelectorContacts: [],\n });\n };\n\n refresh(shouldRefreshCache: boolean = true): void {\n this.fetchFeedItems(shouldRefreshCache);\n }\n\n renderAddTaskButton = () => {\n const { isDisabled, hasTasks } = this.props;\n const { approverSelectorContacts } = this.state;\n const { getApproverWithQuery, getAvatarUrl, createTask, onTaskModalClose } = this;\n\n if (!hasTasks) {\n return null;\n }\n\n return (\n <AddTaskButton\n isDisabled={isDisabled}\n onTaskModalClose={onTaskModalClose}\n taskFormProps={{\n approvers: [],\n approverSelectorContacts,\n completionRule: TASK_COMPLETION_RULE_ALL,\n createTask,\n getApproverWithQuery,\n getAvatarUrl,\n id: '',\n message: '',\n }}\n />\n );\n };\n\n render() {\n const {\n elementId,\n file,\n isDisabled = false,\n onVersionHistoryClick,\n getUserProfileUrl,\n activeFeedEntryId,\n activeFeedEntryType,\n onTaskView,\n } = this.props;\n const {\n currentUser,\n approverSelectorContacts,\n mentionSelectorContacts,\n contactsLoaded,\n feedItems,\n activityFeedError,\n currentUserError,\n } = this.state;\n\n return (\n <SidebarContent\n actions={this.renderAddTaskButton()}\n className=\"bcs-activity\"\n elementId={elementId}\n sidebarView={SIDEBAR_VIEW_ACTIVITY}\n title={<FormattedMessage {...messages.sidebarActivityTitle} />}\n >\n <ActivityFeed\n activeFeedEntryId={activeFeedEntryId}\n activeFeedEntryType={activeFeedEntryType}\n activityFeedError={activityFeedError}\n approverSelectorContacts={approverSelectorContacts}\n currentUser={currentUser}\n currentUserError={currentUserError}\n feedItems={feedItems}\n file={file}\n getApproverWithQuery={this.getApproverWithQuery}\n getAvatarUrl={this.getAvatarUrl}\n getMentionWithQuery={this.getMentionWithQuery}\n getUserProfileUrl={getUserProfileUrl}\n isDisabled={isDisabled}\n mentionSelectorContacts={mentionSelectorContacts}\n contactsLoaded={contactsLoaded}\n onAnnotationDelete={this.handleAnnotationDelete}\n onAnnotationEdit={this.handleAnnotationEdit}\n onAnnotationSelect={this.handleAnnotationSelect}\n onAppActivityDelete={this.deleteAppActivity}\n onCommentCreate={this.createComment}\n onCommentDelete={this.deleteComment}\n onCommentUpdate={this.updateComment}\n onTaskAssignmentUpdate={this.updateTaskAssignment}\n onTaskCreate={this.createTask}\n onTaskDelete={this.deleteTask}\n onTaskModalClose={this.onTaskModalClose}\n onTaskUpdate={this.updateTask}\n onTaskView={onTaskView}\n onVersionHistoryClick={onVersionHistoryClick}\n />\n </SidebarContent>\n );\n }\n}\n\nexport type ActivitySidebarProps = ExternalProps;\nexport { ActivitySidebar as ActivitySidebarComponent };\nexport default flow([\n withLogger(ORIGIN_ACTIVITY_SIDEBAR),\n withErrorBoundary(ORIGIN_ACTIVITY_SIDEBAR),\n withAPIContext,\n withFeatureConsumer,\n withAnnotatorContext,\n withRouterAndRef,\n])(ActivitySidebar);\n"],"file":"ActivitySidebar.js"}
1
+ {"version":3,"sources":["../../../src/elements/content-sidebar/ActivitySidebar.js"],"names":["React","debounce","flow","getProp","noop","uniqueId","FormattedMessage","ActivityFeed","AddTaskButton","API","messages","SidebarContent","WithAnnotatorContextProps","withAnnotatorContext","EVENT_DATA_READY","EVENT_JS_READY","getBadUserError","mark","withAPIContext","withErrorBoundary","withFeatureConsumer","isFeatureEnabled","withLogger","withRouterAndRef","ActivitySidebarFilter","DEFAULT_COLLAB_DEBOUNCE","ERROR_CODE_FETCH_ACTIVITY","FEED_ITEM_TYPE_VERSION","ORIGIN_ACTIVITY_SIDEBAR","SIDEBAR_VIEW_ACTIVITY","TASK_COMPLETION_RULE_ALL","activityFeedInlineError","inlineError","title","errorOccured","content","activityFeedItemApiError","MARK_NAME_DATA_LOADING","MARK_NAME_DATA_READY","MARK_NAME_JS_READY","ActivitySidebar","props","id","permissions","api","emitAnnotationRemoveEvent","file","getFeedAPI","deleteAnnotation","deleteAnnotationSuccess","bind","feedErrorCallback","fetchFeedItems","text","emitAnnotationUpdateEvent","description","message","updateAnnotation","undefined","annotation","feedSuccessCallback","status","e","code","contextInfo","errorCallback","assignees","taskType","dueAt","completionRule","onSuccess","onError","currentUser","successCallback","createTaskNew","task","onTaskDelete","deleteTaskNew","taskId","onTaskUpdate","updateTaskNew","taskAssignmentId","onTaskAssignmentUpdate","updateTaskCollaborator","hasReplies","onCommentDelete","comment","deleteThreadedComment","deleteComment","parentId","emitAnnotationReplyDeleteEvent","deleteReply","deleteReplySuccessCallback","hasMention","onCommentUpdate","updateThreadedComment","updateComment","emitAnnotationReplyUpdateEvent","tagged_message","updateReply","updateReplySuccessCallback","error","reply","onCommentCreate","createThreadedComment","createComment","parentType","emitAnnotationReplyCreateEvent","eventRequestId","createReply","createReplySuccessCallback","deleteAppActivity","feedItems","fileId","logger","length","onDataReadyMetric","endMarkName","startMarkName","setState","activityFeedError","errors","Array","isArray","Error","showNotification","map","console","collaborators","entries","approverSelectorContacts","contactsLoaded","mentionSelectorContacts","searchStr","getFileCollaboratorsAPI","getCollaboratorsWithQuery","getApproverContactsSuccessCallback","includeGroups","getMentionContactsSuccessCallback","type","fetchReplies","userId","getUsersAPI","getAvatarUrlWithAccessToken","file_version","nextActiveAnnotationId","emitActiveAnnotationChangeEvent","getAnnotationsMatchPath","getAnnotationsPath","history","location","onAnnotationSelect","annotationFileVersionId","currentFileVersionId","match","selectedFileVersionId","push","onFilterChange","feedItemsStatusFilter","state","filter","item","isDisabled","hasTasks","getApprover","getAvatarUrl","createTask","onTaskModalClose","approvers","getApproverWithQuery","features","shouldShowActivityFeedFilter","selectedStatus","handleItemsFiltered","renderActivitySidebarFilter","renderAddTaskButton","sidebarActivityTitle","onReadyMetric","shouldRefreshCache","shouldDestroy","shouldShowReplies","shouldShowTasks","shouldShowVersions","hasVersions","shouldShowAppActivity","shouldShowAnnotations","fetchFeedItemsSuccessCallback","fetchFeedItemsErrorCallback","currentUserError","elementId","onVersionHistoryClick","getUserProfileUrl","activeFeedEntryId","activeFeedEntryType","onTaskView","renderActions","renderTitle","getFilteredFeedItems","getMention","handleAnnotationDelete","handleAnnotationEdit","handleAnnotationSelect","handleAnnotationStatusChange","getReplies","updateTaskAssignment","deleteTask","updateTask","PureComponent","annotatorState","onTaskCreate","onVersionChange","ActivitySidebarComponent"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Activity feed sidebar component\n * @author Box\n */\n\nimport * as React from 'react';\nimport debounce from 'lodash/debounce';\nimport flow from 'lodash/flow';\nimport getProp from 'lodash/get';\nimport noop from 'lodash/noop';\nimport uniqueId from 'lodash/uniqueId';\nimport { FormattedMessage } from 'react-intl';\nimport { type ContextRouter } from 'react-router-dom';\nimport ActivityFeed from './activity-feed';\nimport AddTaskButton from './AddTaskButton';\nimport API from '../../api';\nimport messages from '../common/messages';\nimport SidebarContent from './SidebarContent';\nimport { WithAnnotatorContextProps, withAnnotatorContext } from '../common/annotator-context';\nimport { EVENT_DATA_READY, EVENT_JS_READY } from '../common/logger/constants';\nimport { getBadUserError } from '../../utils/error';\nimport { mark } from '../../utils/performance';\nimport { withAPIContext } from '../common/api-context';\nimport { withErrorBoundary } from '../common/error-boundary';\nimport { withFeatureConsumer, isFeatureEnabled } from '../common/feature-checking';\nimport { withLogger } from '../common/logger';\nimport { withRouterAndRef } from '../common/routing';\nimport ActivitySidebarFilter from './ActivitySidebarFilter';\nimport {\n DEFAULT_COLLAB_DEBOUNCE,\n ERROR_CODE_FETCH_ACTIVITY,\n FEED_ITEM_TYPE_VERSION,\n ORIGIN_ACTIVITY_SIDEBAR,\n SIDEBAR_VIEW_ACTIVITY,\n TASK_COMPLETION_RULE_ALL,\n} from '../../constants';\nimport type {\n TaskCompletionRule,\n TaskType,\n TaskNew,\n TaskUpdatePayload,\n TaskCollabStatus,\n} from '../../common/types/tasks';\nimport type {\n Annotation,\n AnnotationPermission,\n BoxCommentPermission,\n Comment,\n CommentFeedItemType,\n FocusableFeedItemType,\n FeedItems,\n FeedItemStatus,\n} from '../../common/types/feed';\nimport type { ErrorContextProps, ElementsXhrError } from '../../common/types/api';\nimport type { WithLoggerProps } from '../../common/types/logging';\nimport type { SelectorItems, User, UserMini, GroupMini, BoxItem } from '../../common/types/core';\nimport type { Errors, GetProfileUrlCallback } from '../common/flowTypes';\nimport type { Translations } from './flowTypes';\nimport type { FeatureConfig } from '../common/feature-checking';\nimport './ActivitySidebar.scss';\n\ntype ExternalProps = {\n activeFeedEntryId?: string,\n activeFeedEntryType?: FocusableFeedItemType,\n currentUser?: User,\n currentUserError?: Errors,\n getUserProfileUrl?: GetProfileUrlCallback,\n hasReplies?: boolean,\n hasTasks?: boolean,\n hasVersions?: boolean,\n onCommentCreate: Function,\n onCommentDelete: (comment: Comment) => any,\n onCommentUpdate: () => any,\n onTaskAssignmentUpdate: Function,\n onTaskCreate: Function,\n onTaskDelete: (id: string) => any,\n onTaskUpdate: () => any,\n onTaskView: (id: string, isCreator: boolean) => any,\n} & ErrorContextProps &\n WithAnnotatorContextProps;\n\ntype PropsWithoutContext = {\n elementId: string,\n file: BoxItem,\n hasSidebarInitialized?: boolean,\n isDisabled: boolean,\n onAnnotationSelect: Function,\n onFilterChange: (status?: FeedItemStatus) => void,\n onVersionChange: Function,\n onVersionHistoryClick?: Function,\n translations?: Translations,\n} & ExternalProps &\n WithLoggerProps &\n ContextRouter;\n\ntype Props = {\n api: API,\n features: FeatureConfig,\n} & PropsWithoutContext;\n\ntype State = {\n activityFeedError?: Errors,\n approverSelectorContacts: SelectorItems<UserMini | GroupMini>,\n contactsLoaded?: boolean,\n feedItems?: FeedItems,\n feedItemsStatusFilter?: FeedItemStatus,\n mentionSelectorContacts?: SelectorItems<UserMini>,\n};\n\nexport const activityFeedInlineError: Errors = {\n inlineError: {\n title: messages.errorOccured,\n content: messages.activityFeedItemApiError,\n },\n};\n\nconst MARK_NAME_DATA_LOADING = `${ORIGIN_ACTIVITY_SIDEBAR}_data_loading`;\nconst MARK_NAME_DATA_READY = `${ORIGIN_ACTIVITY_SIDEBAR}_${EVENT_DATA_READY}`;\nconst MARK_NAME_JS_READY = `${ORIGIN_ACTIVITY_SIDEBAR}_${EVENT_JS_READY}`;\n\nmark(MARK_NAME_JS_READY);\n\nclass ActivitySidebar extends React.PureComponent<Props, State> {\n static defaultProps = {\n annotatorState: {},\n emitActiveAnnotationChangeEvent: noop,\n emitAnnotationRemoveEvent: noop,\n emitAnnotationReplyCreateEvent: noop,\n emitAnnotationReplyDeleteEvent: noop,\n emitAnnotationReplyUpdateEvent: noop,\n emitAnnotationUpdateEvent: noop,\n getAnnotationsMatchPath: noop,\n getAnnotationsPath: noop,\n hasReplies: false,\n hasTasks: true,\n hasVersions: true,\n isDisabled: false,\n onAnnotationSelect: noop,\n onCommentCreate: noop,\n onCommentDelete: noop,\n onCommentUpdate: noop,\n onFilterChange: noop,\n onTaskAssignmentUpdate: noop,\n onTaskCreate: noop,\n onTaskDelete: noop,\n onTaskUpdate: noop,\n onVersionChange: noop,\n onVersionHistoryClick: noop,\n };\n\n constructor(props: Props) {\n super(props);\n // eslint-disable-next-line react/prop-types\n const { logger } = this.props;\n\n mark(MARK_NAME_DATA_LOADING);\n\n logger.onReadyMetric({\n endMarkName: MARK_NAME_JS_READY,\n });\n this.state = {};\n }\n\n componentDidMount() {\n this.fetchFeedItems(true);\n }\n\n handleAnnotationDelete = ({ id, permissions }: { id: string, permissions: AnnotationPermission }) => {\n const { api, emitAnnotationRemoveEvent, file } = this.props;\n\n emitAnnotationRemoveEvent(id, true);\n api.getFeedAPI(false).deleteAnnotation(\n file,\n id,\n permissions,\n this.deleteAnnotationSuccess.bind(this, id),\n this.feedErrorCallback,\n );\n\n this.fetchFeedItems();\n };\n\n handleAnnotationEdit = (id: string, text: string, permissions: AnnotationPermission) => {\n const { api, emitAnnotationUpdateEvent, file } = this.props;\n\n emitAnnotationUpdateEvent(\n {\n id,\n description: {\n message: text,\n },\n },\n true,\n );\n api.getFeedAPI(false).updateAnnotation(\n file,\n id,\n text,\n undefined,\n permissions,\n (annotation: Annotation) => {\n emitAnnotationUpdateEvent(annotation);\n this.feedSuccessCallback();\n },\n this.feedErrorCallback,\n );\n\n this.fetchFeedItems();\n };\n\n handleAnnotationStatusChange = (id: string, status: FeedItemStatus, permissions: AnnotationPermission) => {\n const { api, emitAnnotationUpdateEvent, file } = this.props;\n\n emitAnnotationUpdateEvent({ id, status }, true);\n api.getFeedAPI(false).updateAnnotation(\n file,\n id,\n undefined,\n status,\n permissions,\n (annotation: Annotation) => {\n emitAnnotationUpdateEvent(annotation);\n this.feedSuccessCallback();\n },\n this.feedErrorCallback,\n );\n\n this.fetchFeedItems();\n };\n\n deleteAnnotationSuccess(id: string) {\n const { emitAnnotationRemoveEvent } = this.props;\n\n this.feedSuccessCallback();\n emitAnnotationRemoveEvent(id);\n }\n\n /**\n * Success callback for fetching feed items\n */\n feedSuccessCallback = (): void => {\n this.fetchFeedItems();\n };\n\n /**\n * Error callback for fetching feed items\n *\n * @param {Error} e - the error which occured\n * @param {Error} code - the code for the error\n * @param {Object} contextInfo - the context info for the error\n */\n feedErrorCallback = (e: ElementsXhrError, code: string, contextInfo?: Object) => {\n this.errorCallback(e, code, contextInfo);\n this.fetchFeedItems();\n };\n\n createTask = (\n message: string,\n assignees: SelectorItems<>,\n taskType: TaskType,\n dueAt: ?string,\n completionRule: TaskCompletionRule,\n onSuccess: ?Function,\n onError: ?Function,\n ): void => {\n const { api, currentUser, file } = this.props;\n\n if (!currentUser) {\n throw getBadUserError();\n }\n const errorCallback = (e, code, contextInfo) => {\n if (onError) {\n onError(e, code, contextInfo);\n }\n this.feedErrorCallback(e, code, contextInfo);\n };\n const successCallback = () => {\n if (onSuccess) {\n onSuccess();\n }\n this.feedSuccessCallback();\n };\n\n api.getFeedAPI(false).createTaskNew(\n file,\n currentUser,\n message,\n assignees,\n taskType,\n dueAt,\n completionRule,\n successCallback,\n errorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n deleteTask = (task: TaskNew): void => {\n const { file, api, onTaskDelete } = this.props;\n api.getFeedAPI(false).deleteTaskNew(\n file,\n task,\n (taskId: string) => {\n this.feedSuccessCallback();\n onTaskDelete(taskId);\n },\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n updateTask = (task: TaskUpdatePayload, onSuccess: ?Function, onError: ?Function): void => {\n const { api, file, onTaskUpdate } = this.props;\n const errorCallback = (e, code) => {\n if (onError) {\n onError(e, code);\n }\n this.feedErrorCallback(e, code);\n };\n const successCallback = () => {\n this.feedSuccessCallback();\n\n if (onSuccess) {\n onSuccess();\n }\n\n onTaskUpdate();\n };\n\n api.getFeedAPI(false).updateTaskNew(file, task, successCallback, errorCallback);\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n updateTaskAssignment = (taskId: string, taskAssignmentId: string, status: TaskCollabStatus): void => {\n const { api, currentUser = {}, file, onTaskAssignmentUpdate } = this.props;\n\n const successCallback = () => {\n this.feedSuccessCallback();\n onTaskAssignmentUpdate(taskId, taskAssignmentId, status, currentUser.id);\n };\n\n api.getFeedAPI(false).updateTaskCollaborator(\n file,\n taskId,\n taskAssignmentId,\n status,\n successCallback,\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Deletes a comment via the API.\n *\n * @param {Object} args - A subset of the comment\n * @return void\n */\n deleteComment = ({ id, permissions }: { id: string, permissions: BoxCommentPermission }): void => {\n const { api, file, hasReplies, onCommentDelete } = this.props;\n\n const successCallback = (comment: Comment) => {\n this.feedSuccessCallback();\n onCommentDelete(comment);\n };\n\n if (hasReplies) {\n api.getFeedAPI(false).deleteThreadedComment(file, id, permissions, successCallback, this.feedErrorCallback);\n } else {\n api.getFeedAPI(false).deleteComment(file, id, permissions, successCallback, this.feedErrorCallback);\n }\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Deletes a reply via the API.\n *\n * @param {Object} args - A subset of the comment\n * @return void\n */\n deleteReply = ({\n id,\n parentId,\n permissions,\n }: {\n id: string,\n parentId: string,\n permissions: BoxCommentPermission,\n }): void => {\n const { api, emitAnnotationReplyDeleteEvent, file } = this.props;\n\n emitAnnotationReplyDeleteEvent(id, parentId, true);\n api.getFeedAPI(false).deleteReply(\n file,\n id,\n parentId,\n permissions,\n this.deleteReplySuccessCallback.bind(this, id, parentId),\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Handles a successful deletion of a reply\n *\n * @private\n * @param {string} id - The id of the reply\n * @param {string} parentId - The id of the reply's parent item\n * @return {void}\n */\n deleteReplySuccessCallback = (id: string, parentId: string) => {\n const { emitAnnotationReplyDeleteEvent } = this.props;\n\n this.feedSuccessCallback();\n emitAnnotationReplyDeleteEvent(id, parentId);\n };\n\n updateComment = (\n id: string,\n text?: string,\n status?: FeedItemStatus,\n hasMention: boolean,\n permissions: BoxCommentPermission,\n onSuccess: ?Function,\n onError: ?Function,\n ): void => {\n const { api, file, hasReplies, onCommentUpdate } = this.props;\n\n const errorCallback = (e, code) => {\n if (onError) {\n onError(e, code);\n }\n this.feedErrorCallback(e, code);\n };\n\n const successCallback = () => {\n this.feedSuccessCallback();\n if (onSuccess) {\n onSuccess();\n }\n onCommentUpdate();\n };\n\n if (hasReplies) {\n api.getFeedAPI(false).updateThreadedComment(\n file,\n id,\n text,\n status,\n permissions,\n successCallback,\n errorCallback,\n );\n } else {\n api.getFeedAPI(false).updateComment(\n file,\n id,\n text || '',\n hasMention,\n permissions,\n successCallback,\n errorCallback,\n );\n }\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Updates a reply\n *\n * @param {string} id - id of the reply\n * @param {string} parentId - id of the parent item\n * @param {string} text - the reply updated text\n * @param {BoxCommentPermission} permissions - permissions associated with the reply\n * @param {Function} onSuccess - the success callback\n * @param {Function} onError - the error callback\n * @return {void}\n */\n updateReply = (\n id: string,\n parentId: string,\n text: string,\n permissions: BoxCommentPermission,\n onSuccess: ?Function,\n onError: ?Function,\n ): void => {\n const { api, emitAnnotationReplyUpdateEvent, file } = this.props;\n\n emitAnnotationReplyUpdateEvent({ id, tagged_message: text }, parentId, true);\n api.getFeedAPI(false).updateReply(\n file,\n id,\n parentId,\n text,\n permissions,\n this.updateReplySuccessCallback.bind(this, parentId, onSuccess),\n (error, code) => {\n if (onError) {\n onError(error, code);\n }\n this.feedErrorCallback(error, code);\n },\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Handles a successful update of a reply\n *\n * @private\n * @param {string} parentId - The id of the reply's parent item\n * @param {Function} onSuccess - the success callback\n * @param {Comment} reply - The reply comment object\n * @return {void}\n */\n updateReplySuccessCallback = (parentId: string, onSuccess: ?Function, reply: Comment) => {\n const { emitAnnotationReplyUpdateEvent } = this.props;\n\n this.feedSuccessCallback();\n emitAnnotationReplyUpdateEvent(reply, parentId);\n if (onSuccess) {\n onSuccess();\n }\n };\n\n /**\n * Posts a new comment to the API\n *\n * @param {string} text - The comment's text\n * @param {boolean} hasMention - The comment's text\n * @return {void}\n */\n createComment = (text: string, hasMention: boolean): void => {\n const { api, currentUser, file, hasReplies, onCommentCreate } = this.props;\n\n if (!currentUser) {\n throw getBadUserError();\n }\n\n const successCallback = (comment: Comment) => {\n onCommentCreate(comment);\n this.feedSuccessCallback();\n };\n\n if (hasReplies) {\n api.getFeedAPI(false).createThreadedComment(\n file,\n currentUser,\n text,\n successCallback,\n this.feedErrorCallback,\n );\n } else {\n api.getFeedAPI(false).createComment(\n file,\n currentUser,\n text,\n hasMention,\n successCallback,\n this.feedErrorCallback,\n );\n }\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Posts a new reply to the API\n *\n * @param {string} parentId - The id of the parent item\n * @param {CommentFeedItemType} parentType - The type of the parent item\n * @param {string} text - The text of reply\n * @return {void}\n */\n createReply = (parentId: string, parentType: CommentFeedItemType, text: string): void => {\n const { api, currentUser, emitAnnotationReplyCreateEvent, file } = this.props;\n\n if (!currentUser) {\n throw getBadUserError();\n }\n\n const eventRequestId = uniqueId('comment_');\n emitAnnotationReplyCreateEvent({ tagged_message: text }, eventRequestId, parentId, true);\n api.getFeedAPI(false).createReply(\n file,\n currentUser,\n parentId,\n parentType,\n text,\n this.createReplySuccessCallback.bind(this, eventRequestId, parentId),\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Handles a successful creation of a reply\n *\n * @private\n * @param {string} eventRequestId - The id of the parent item\n * @param {string} parentId - The id of the reply's parent item\n * @param {Comment} reply - The reply comment object\n * @return {void}\n */\n createReplySuccessCallback = (eventRequestId: string, parentId: string, reply: Comment) => {\n const { emitAnnotationReplyCreateEvent } = this.props;\n\n this.feedSuccessCallback();\n emitAnnotationReplyCreateEvent(reply, eventRequestId, parentId);\n };\n\n /**\n * Deletes an app activity item via the API.\n *\n * @param {Object} args - A subset of the app activity\n * @return void\n */\n deleteAppActivity = ({ id }: { id: string }): void => {\n const { api, file } = this.props;\n\n api.getFeedAPI(false).deleteAppActivity(file, id, this.feedSuccessCallback, this.feedErrorCallback);\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Fetches the feed items for the sidebar\n *\n * @param {boolean} shouldRefreshCache true if the cache should be refreshed\n * @param {boolean} shouldDestroy true if the api factory should be destroyed\n */\n fetchFeedItems(shouldRefreshCache: boolean = false, shouldDestroy: boolean = false) {\n const {\n api,\n file,\n features,\n hasReplies: shouldShowReplies,\n hasTasks: shouldShowTasks,\n hasVersions: shouldShowVersions,\n } = this.props;\n const shouldShowAppActivity = isFeatureEnabled(features, 'activityFeed.appActivity.enabled');\n const shouldShowAnnotations = isFeatureEnabled(features, 'activityFeed.annotations.enabled');\n\n api.getFeedAPI(shouldDestroy).feedItems(\n file,\n shouldRefreshCache,\n this.fetchFeedItemsSuccessCallback,\n this.fetchFeedItemsErrorCallback,\n this.errorCallback,\n { shouldShowAnnotations, shouldShowAppActivity, shouldShowReplies, shouldShowTasks, shouldShowVersions },\n );\n }\n\n /**\n * Handles a successful feed API fetch\n *\n * @private\n * @param {Array} feedItems - the feed items\n * @return {void}\n */\n fetchFeedItemsSuccessCallback = (feedItems: FeedItems): void => {\n const {\n file: { id: fileId },\n logger,\n } = this.props;\n\n mark(MARK_NAME_DATA_READY);\n\n // Only emit metric if has >1 activity feed items (there should always at least be the current version)\n if (feedItems.length > 1) {\n logger.onDataReadyMetric(\n {\n endMarkName: MARK_NAME_DATA_READY,\n startMarkName: MARK_NAME_DATA_LOADING,\n },\n fileId,\n );\n }\n\n this.setState({ feedItems, activityFeedError: undefined });\n };\n\n /**\n * Handles a failed feed item fetch\n *\n * @private\n * @param {Error} e - API error\n * @return {void}\n */\n fetchFeedItemsErrorCallback = (feedItems: FeedItems, errors: ElementsXhrError[]): void => {\n const { onError } = this.props;\n\n this.setState({\n feedItems,\n activityFeedError: activityFeedInlineError,\n });\n\n if (Array.isArray(errors) && errors.length) {\n onError(new Error('Fetch feed items error'), ERROR_CODE_FETCH_ACTIVITY, {\n showNotification: true,\n errors: errors.map(({ code }) => code),\n });\n }\n };\n\n /**\n * Network error callback\n *\n * @private\n * @param {Error} error - Error object\n * @param {Error} code - the code for the error\n * @param {Object} contextInfo - the context info for the error\n * @return {void}\n */\n errorCallback = (error: ElementsXhrError, code: string, contextInfo: Object = {}): void => {\n /* eslint-disable no-console */\n console.error(error);\n /* eslint-enable no-console */\n\n // eslint-disable-next-line react/prop-types\n this.props.onError(error, code, contextInfo);\n };\n\n /**\n * File approver contacts fetch success callback\n *\n * @private\n * @param {BoxItemCollection} collaborators - Collaborators response data\n * @return {void}\n */\n getApproverContactsSuccessCallback = (collaborators: { entries: SelectorItems<> }): void => {\n const { entries } = collaborators;\n this.setState({ approverSelectorContacts: entries });\n };\n\n /**\n * File @mention contacts fetch success callback\n *\n * @private\n * @param {BoxItemCollection} collaborators - Collaborators response data\n * @return {void}\n */\n getMentionContactsSuccessCallback = (collaborators: { entries: SelectorItems<> }): void => {\n const { entries } = collaborators;\n this.setState({ contactsLoaded: false }, () =>\n this.setState({\n contactsLoaded: true,\n mentionSelectorContacts: entries,\n }),\n );\n };\n\n /**\n * Fetches file @mention's with groups\n *\n * @private\n * @param {string} searchStr - Search string to filter file collaborators by\n * @return {void}\n */\n getApprover = debounce((searchStr: string) => {\n const { file, api } = this.props;\n api.getFileCollaboratorsAPI(false).getCollaboratorsWithQuery(\n file.id,\n this.getApproverContactsSuccessCallback,\n this.errorCallback,\n searchStr,\n {\n includeGroups: true,\n },\n );\n }, DEFAULT_COLLAB_DEBOUNCE);\n\n /**\n * Fetches file @mention's\n *\n * @private\n * @param {string} searchStr - Search string to filter file collaborators by\n * @return {void}\n */\n getMention = debounce((searchStr: string) => {\n const { file, api } = this.props;\n api.getFileCollaboratorsAPI(false).getCollaboratorsWithQuery(\n file.id,\n this.getMentionContactsSuccessCallback,\n this.errorCallback,\n searchStr,\n );\n }, DEFAULT_COLLAB_DEBOUNCE);\n\n /**\n * Fetches replies (comments) of a comment or annotation\n *\n * @param {string} id - id of the feed item\n * @param {CommentFeedItemType} type - type of the feed item\n * @return {void}\n */\n getReplies = (id: string, type: CommentFeedItemType): void => {\n const { api, file } = this.props;\n\n api.getFeedAPI(false).fetchReplies(file, id, type, this.feedSuccessCallback, this.feedErrorCallback);\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Gets the user avatar URL\n *\n * @param {string} userId the user id\n * @param {string} fileId the file id\n * @return the user avatar URL string for a given user with access token attached\n */\n getAvatarUrl = async (userId: string): Promise<?string> => {\n const { file, api } = this.props;\n\n return api.getUsersAPI(false).getAvatarUrlWithAccessToken(userId, file.id);\n };\n\n handleAnnotationSelect = (annotation: Annotation): void => {\n const { file_version, id: nextActiveAnnotationId } = annotation;\n const {\n emitActiveAnnotationChangeEvent,\n file,\n getAnnotationsMatchPath,\n getAnnotationsPath,\n history,\n location,\n onAnnotationSelect,\n } = this.props;\n const annotationFileVersionId = getProp(file_version, 'id');\n const currentFileVersionId = getProp(file, 'file_version.id');\n const match = getAnnotationsMatchPath(location);\n const selectedFileVersionId = getProp(match, 'params.fileVersionId', currentFileVersionId);\n\n emitActiveAnnotationChangeEvent(nextActiveAnnotationId);\n\n if (annotationFileVersionId && annotationFileVersionId !== selectedFileVersionId) {\n history.push(getAnnotationsPath(annotationFileVersionId, nextActiveAnnotationId));\n }\n\n onAnnotationSelect(annotation);\n };\n\n handleItemsFiltered = (status?: FeedItemStatus) => {\n const { onFilterChange } = this.props;\n\n this.setState({ feedItemsStatusFilter: status });\n onFilterChange(status);\n };\n\n getFilteredFeedItems = (): FeedItems | typeof undefined => {\n const { feedItems, feedItemsStatusFilter } = this.state;\n if (!feedItems || !feedItemsStatusFilter) {\n return feedItems;\n }\n return feedItems.filter(item => {\n return item.status === feedItemsStatusFilter || item.type === FEED_ITEM_TYPE_VERSION;\n });\n };\n\n onTaskModalClose = () => {\n this.setState({\n approverSelectorContacts: [],\n });\n };\n\n refresh(shouldRefreshCache: boolean = true): void {\n this.fetchFeedItems(shouldRefreshCache);\n }\n\n renderAddTaskButton = () => {\n const { isDisabled, hasTasks } = this.props;\n const { approverSelectorContacts } = this.state;\n const { getApprover, getAvatarUrl, createTask, onTaskModalClose } = this;\n\n if (!hasTasks) {\n return null;\n }\n\n return (\n <AddTaskButton\n isDisabled={isDisabled}\n onTaskModalClose={onTaskModalClose}\n taskFormProps={{\n approvers: [],\n approverSelectorContacts,\n completionRule: TASK_COMPLETION_RULE_ALL,\n createTask,\n getApproverWithQuery: getApprover,\n getAvatarUrl,\n id: '',\n message: '',\n }}\n />\n );\n };\n\n renderActivitySidebarFilter = () => {\n const { features } = this.props;\n const { feedItemsStatusFilter } = this.state;\n const shouldShowActivityFeedFilter = isFeatureEnabled(features, 'activityFeed.filter.enabled');\n\n if (!shouldShowActivityFeedFilter) {\n return null;\n }\n return (\n <ActivitySidebarFilter\n feedItemStatus={feedItemsStatusFilter}\n onFeedItemStatusClick={selectedStatus => {\n this.handleItemsFiltered(selectedStatus);\n }}\n />\n );\n };\n\n renderActions = () => (\n <>\n {this.renderActivitySidebarFilter()}\n {this.renderAddTaskButton()}\n </>\n );\n\n renderTitle = () => {\n const { features } = this.props;\n if (isFeatureEnabled(features, 'activityFeed.filter.enabled')) {\n return undefined;\n }\n return <FormattedMessage {...messages.sidebarActivityTitle} />;\n };\n\n render() {\n const {\n currentUser,\n currentUserError,\n elementId,\n file,\n hasReplies,\n isDisabled = false,\n onVersionHistoryClick,\n getUserProfileUrl,\n activeFeedEntryId,\n activeFeedEntryType,\n onTaskView,\n } = this.props;\n const { activityFeedError, approverSelectorContacts, contactsLoaded, mentionSelectorContacts } = this.state;\n\n return (\n <SidebarContent\n actions={this.renderActions()}\n className=\"bcs-activity\"\n elementId={elementId}\n sidebarView={SIDEBAR_VIEW_ACTIVITY}\n title={this.renderTitle()}\n >\n <ActivityFeed\n activeFeedEntryId={activeFeedEntryId}\n activeFeedEntryType={activeFeedEntryType}\n activityFeedError={activityFeedError}\n approverSelectorContacts={approverSelectorContacts}\n currentUser={currentUser}\n currentUserError={currentUserError}\n feedItems={this.getFilteredFeedItems()}\n file={file}\n getApproverWithQuery={this.getApprover}\n getAvatarUrl={this.getAvatarUrl}\n getMentionWithQuery={this.getMention}\n getUserProfileUrl={getUserProfileUrl}\n hasReplies={hasReplies}\n isDisabled={isDisabled}\n mentionSelectorContacts={mentionSelectorContacts}\n contactsLoaded={contactsLoaded}\n onAnnotationDelete={this.handleAnnotationDelete}\n onAnnotationEdit={this.handleAnnotationEdit}\n onAnnotationSelect={this.handleAnnotationSelect}\n onAnnotationStatusChange={this.handleAnnotationStatusChange}\n onAppActivityDelete={this.deleteAppActivity}\n onCommentCreate={this.createComment}\n onCommentDelete={this.deleteComment}\n onCommentUpdate={this.updateComment}\n onReplyCreate={this.createReply}\n onReplyDelete={this.deleteReply}\n onReplyUpdate={this.updateReply}\n onShowReplies={this.getReplies}\n onTaskAssignmentUpdate={this.updateTaskAssignment}\n onTaskCreate={this.createTask}\n onTaskDelete={this.deleteTask}\n onTaskModalClose={this.onTaskModalClose}\n onTaskUpdate={this.updateTask}\n onTaskView={onTaskView}\n onVersionHistoryClick={onVersionHistoryClick}\n />\n </SidebarContent>\n );\n }\n}\n\nexport type ActivitySidebarProps = ExternalProps;\nexport { ActivitySidebar as ActivitySidebarComponent };\nexport default flow([\n withLogger(ORIGIN_ACTIVITY_SIDEBAR),\n withErrorBoundary(ORIGIN_ACTIVITY_SIDEBAR),\n withAPIContext,\n withFeatureConsumer,\n withAnnotatorContext,\n withRouterAndRef,\n])(ActivitySidebar);\n"],"file":"ActivitySidebar.js"}
@@ -0,0 +1,52 @@
1
+ var _statusMap;
2
+
3
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
+
5
+ /**
6
+ *
7
+ * @file Activity feed sidebar filter component
8
+ * @author Box
9
+ */
10
+ import * as React from 'react';
11
+ import { FormattedMessage } from 'react-intl';
12
+ import DropdownMenu, { MenuToggle } from '../../components/dropdown-menu';
13
+ import PlainButton from '../../components/plain-button';
14
+ import messages from './messages';
15
+ import { COMMENT_STATUS_OPEN } from '../../constants';
16
+ import { Menu, SelectMenuItem } from '../../components/menu';
17
+ import './ActivitySidebarFilter.scss';
18
+ var ACTIVITY_FEED_ITEM_ALL = 'all';
19
+ var ACTIVITY_FEED_ITEM_OPEN = COMMENT_STATUS_OPEN;
20
+ var statuses = [ACTIVITY_FEED_ITEM_ALL, ACTIVITY_FEED_ITEM_OPEN];
21
+ var statusMap = (_statusMap = {}, _defineProperty(_statusMap, ACTIVITY_FEED_ITEM_ALL, {
22
+ msg: messages.activitySidebarFilterOptionAll,
23
+ val: undefined
24
+ }), _defineProperty(_statusMap, ACTIVITY_FEED_ITEM_OPEN, {
25
+ msg: messages.activitySidebarFilterOptionOpen,
26
+ val: COMMENT_STATUS_OPEN
27
+ }), _statusMap);
28
+
29
+ function ActivitySidebarFilter(_ref) {
30
+ var _ref$feedItemStatus = _ref.feedItemStatus,
31
+ feedItemStatus = _ref$feedItemStatus === void 0 ? ACTIVITY_FEED_ITEM_ALL : _ref$feedItemStatus,
32
+ onFeedItemStatusClick = _ref.onFeedItemStatusClick;
33
+ return React.createElement("div", {
34
+ className: "bcs-ActivitySidebarFilter"
35
+ }, React.createElement(DropdownMenu, {
36
+ className: "bcs-ActivitySidebarFilter-dropdownMenu",
37
+ constrainToWindow: true
38
+ }, React.createElement(PlainButton, {
39
+ type: "button"
40
+ }, React.createElement(MenuToggle, null, React.createElement(FormattedMessage, statusMap[feedItemStatus].msg))), React.createElement(Menu, null, statuses.map(function (status) {
41
+ return React.createElement(SelectMenuItem, {
42
+ key: status,
43
+ isSelected: status === feedItemStatus,
44
+ onClick: function onClick() {
45
+ return onFeedItemStatusClick(statusMap[status].val);
46
+ }
47
+ }, React.createElement(FormattedMessage, statusMap[status].msg));
48
+ }))));
49
+ }
50
+
51
+ export default ActivitySidebarFilter;
52
+ //# sourceMappingURL=ActivitySidebarFilter.js.map
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @flow
3
+ * @file Activity feed sidebar filter component
4
+ * @author Box
5
+ */
6
+
7
+ import * as React from 'react';
8
+ import { FormattedMessage } from 'react-intl';
9
+ import DropdownMenu, { MenuToggle } from '../../components/dropdown-menu';
10
+ import PlainButton from '../../components/plain-button';
11
+ import messages from './messages';
12
+ import { COMMENT_STATUS_OPEN } from '../../constants';
13
+ import { Menu, SelectMenuItem } from '../../components/menu';
14
+ import type { FeedItemStatus } from '../../common/types/feed';
15
+ import './ActivitySidebarFilter.scss';
16
+
17
+ type ActivitySidebarFilterProps = {
18
+ feedItemStatus?: FeedItemStatus,
19
+ onFeedItemStatusClick: (status?: FeedItemStatus) => void,
20
+ };
21
+
22
+ const ACTIVITY_FEED_ITEM_ALL = 'all';
23
+ const ACTIVITY_FEED_ITEM_OPEN = COMMENT_STATUS_OPEN;
24
+
25
+ const statuses = [ACTIVITY_FEED_ITEM_ALL, ACTIVITY_FEED_ITEM_OPEN];
26
+ const statusMap = {
27
+ [ACTIVITY_FEED_ITEM_ALL]: { msg: messages.activitySidebarFilterOptionAll, val: undefined },
28
+ [ACTIVITY_FEED_ITEM_OPEN]: { msg: messages.activitySidebarFilterOptionOpen, val: COMMENT_STATUS_OPEN },
29
+ };
30
+
31
+ function ActivitySidebarFilter({
32
+ feedItemStatus = ACTIVITY_FEED_ITEM_ALL,
33
+ onFeedItemStatusClick,
34
+ }: ActivitySidebarFilterProps) {
35
+ return (
36
+ <div className="bcs-ActivitySidebarFilter">
37
+ <DropdownMenu className="bcs-ActivitySidebarFilter-dropdownMenu" constrainToWindow>
38
+ <PlainButton type="button">
39
+ <MenuToggle>
40
+ <FormattedMessage {...statusMap[feedItemStatus].msg} />
41
+ </MenuToggle>
42
+ </PlainButton>
43
+ <Menu>
44
+ {statuses.map(status => (
45
+ <SelectMenuItem
46
+ key={status}
47
+ isSelected={status === feedItemStatus}
48
+ onClick={() => onFeedItemStatusClick(statusMap[status].val)}
49
+ >
50
+ <FormattedMessage {...statusMap[status].msg} />
51
+ </SelectMenuItem>
52
+ ))}
53
+ </Menu>
54
+ </DropdownMenu>
55
+ </div>
56
+ );
57
+ }
58
+
59
+ export default ActivitySidebarFilter;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/elements/content-sidebar/ActivitySidebarFilter.js"],"names":["React","FormattedMessage","DropdownMenu","MenuToggle","PlainButton","messages","COMMENT_STATUS_OPEN","Menu","SelectMenuItem","ACTIVITY_FEED_ITEM_ALL","ACTIVITY_FEED_ITEM_OPEN","statuses","statusMap","msg","activitySidebarFilterOptionAll","val","undefined","activitySidebarFilterOptionOpen","ActivitySidebarFilter","feedItemStatus","onFeedItemStatusClick","map","status"],"mappings":";;;;AAAA;;;;;AAMA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,gBAAT,QAAiC,YAAjC;AACA,OAAOC,YAAP,IAAuBC,UAAvB,QAAyC,gCAAzC;AACA,OAAOC,WAAP,MAAwB,+BAAxB;AACA,OAAOC,QAAP,MAAqB,YAArB;AACA,SAASC,mBAAT,QAAoC,iBAApC;AACA,SAASC,IAAT,EAAeC,cAAf,QAAqC,uBAArC;AAEA,OAAO,8BAAP;AAOA,IAAMC,sBAAsB,GAAG,KAA/B;AACA,IAAMC,uBAAuB,GAAGJ,mBAAhC;AAEA,IAAMK,QAAQ,GAAG,CAACF,sBAAD,EAAyBC,uBAAzB,CAAjB;AACA,IAAME,SAAS,iDACVH,sBADU,EACe;AAAEI,EAAAA,GAAG,EAAER,QAAQ,CAACS,8BAAhB;AAAgDC,EAAAA,GAAG,EAAEC;AAArD,CADf,+BAEVN,uBAFU,EAEgB;AAAEG,EAAAA,GAAG,EAAER,QAAQ,CAACY,+BAAhB;AAAiDF,EAAAA,GAAG,EAAET;AAAtD,CAFhB,cAAf;;AAKA,SAASY,qBAAT,OAG+B;AAAA,iCAF3BC,cAE2B;AAAA,MAF3BA,cAE2B,oCAFVV,sBAEU;AAAA,MAD3BW,qBAC2B,QAD3BA,qBAC2B;AAC3B,SACI;AAAK,IAAA,SAAS,EAAC;AAAf,KACI,oBAAC,YAAD;AAAc,IAAA,SAAS,EAAC,wCAAxB;AAAiE,IAAA,iBAAiB;AAAlF,KACI,oBAAC,WAAD;AAAa,IAAA,IAAI,EAAC;AAAlB,KACI,oBAAC,UAAD,QACI,oBAAC,gBAAD,EAAsBR,SAAS,CAACO,cAAD,CAAT,CAA0BN,GAAhD,CADJ,CADJ,CADJ,EAMI,oBAAC,IAAD,QACKF,QAAQ,CAACU,GAAT,CAAa,UAAAC,MAAM;AAAA,WAChB,oBAAC,cAAD;AACI,MAAA,GAAG,EAAEA,MADT;AAEI,MAAA,UAAU,EAAEA,MAAM,KAAKH,cAF3B;AAGI,MAAA,OAAO,EAAE;AAAA,eAAMC,qBAAqB,CAACR,SAAS,CAACU,MAAD,CAAT,CAAkBP,GAAnB,CAA3B;AAAA;AAHb,OAKI,oBAAC,gBAAD,EAAsBH,SAAS,CAACU,MAAD,CAAT,CAAkBT,GAAxC,CALJ,CADgB;AAAA,GAAnB,CADL,CANJ,CADJ,CADJ;AAsBH;;AAED,eAAeK,qBAAf","sourcesContent":["/**\n * @flow\n * @file Activity feed sidebar filter component\n * @author Box\n */\n\nimport * as React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport DropdownMenu, { MenuToggle } from '../../components/dropdown-menu';\nimport PlainButton from '../../components/plain-button';\nimport messages from './messages';\nimport { COMMENT_STATUS_OPEN } from '../../constants';\nimport { Menu, SelectMenuItem } from '../../components/menu';\nimport type { FeedItemStatus } from '../../common/types/feed';\nimport './ActivitySidebarFilter.scss';\n\ntype ActivitySidebarFilterProps = {\n feedItemStatus?: FeedItemStatus,\n onFeedItemStatusClick: (status?: FeedItemStatus) => void,\n};\n\nconst ACTIVITY_FEED_ITEM_ALL = 'all';\nconst ACTIVITY_FEED_ITEM_OPEN = COMMENT_STATUS_OPEN;\n\nconst statuses = [ACTIVITY_FEED_ITEM_ALL, ACTIVITY_FEED_ITEM_OPEN];\nconst statusMap = {\n [ACTIVITY_FEED_ITEM_ALL]: { msg: messages.activitySidebarFilterOptionAll, val: undefined },\n [ACTIVITY_FEED_ITEM_OPEN]: { msg: messages.activitySidebarFilterOptionOpen, val: COMMENT_STATUS_OPEN },\n};\n\nfunction ActivitySidebarFilter({\n feedItemStatus = ACTIVITY_FEED_ITEM_ALL,\n onFeedItemStatusClick,\n}: ActivitySidebarFilterProps) {\n return (\n <div className=\"bcs-ActivitySidebarFilter\">\n <DropdownMenu className=\"bcs-ActivitySidebarFilter-dropdownMenu\" constrainToWindow>\n <PlainButton type=\"button\">\n <MenuToggle>\n <FormattedMessage {...statusMap[feedItemStatus].msg} />\n </MenuToggle>\n </PlainButton>\n <Menu>\n {statuses.map(status => (\n <SelectMenuItem\n key={status}\n isSelected={status === feedItemStatus}\n onClick={() => onFeedItemStatusClick(statusMap[status].val)}\n >\n <FormattedMessage {...statusMap[status].msg} />\n </SelectMenuItem>\n ))}\n </Menu>\n </DropdownMenu>\n </div>\n );\n}\n\nexport default ActivitySidebarFilter;\n"],"file":"ActivitySidebarFilter.js"}
@@ -0,0 +1,4 @@
1
+ .bcs-ActivitySidebarFilter .menu-toggle {
2
+ font-weight: bold;
3
+ font-size: 16px;
4
+ }
@@ -33,7 +33,9 @@ import { FormattedMessage } from 'react-intl';
33
33
  import API from '../../api';
34
34
  import messages from '../common/messages';
35
35
  import SidebarAccessStats from './SidebarAccessStats';
36
- import SidebarClassification from './SidebarClassification';
36
+ import SidebarClassification from './SidebarClassification'; // $FlowFixMe typescript component
37
+
38
+ import SidebarContentInsights from './SidebarContentInsights';
37
39
  import SidebarContent from './SidebarContent';
38
40
  import SidebarFileProperties from './SidebarFileProperties';
39
41
  import SidebarNotices from './SidebarNotices';
@@ -176,19 +178,32 @@ function (_React$PureComponent) {
176
178
  _createClass(DetailsSidebar, [{
177
179
  key: "componentDidMount",
178
180
  value: function componentDidMount() {
181
+ var _this$props = this.props,
182
+ hasAccessStats = _this$props.hasAccessStats,
183
+ hasContentInsights = _this$props.hasContentInsights,
184
+ fetchContentInsights = _this$props.fetchContentInsights;
179
185
  this.fetchFile();
180
186
 
181
- if (this.props.hasAccessStats) {
187
+ if (hasAccessStats) {
182
188
  this.fetchAccessStats();
183
189
  }
190
+
191
+ if (hasContentInsights && fetchContentInsights) {
192
+ fetchContentInsights();
193
+ }
184
194
  }
185
195
  }, {
186
196
  key: "componentDidUpdate",
187
197
  value: function componentDidUpdate(_ref) {
188
- var prevHasAccessStats = _ref.hasAccessStats;
189
- var hasAccessStats = this.props.hasAccessStats; // Component visibility props such as hasAccessStats can sometimes be flipped after an async call
198
+ var prevHasAccessStats = _ref.hasAccessStats,
199
+ prevHasContentInsights = _ref.hasContentInsights;
200
+ var _this$props2 = this.props,
201
+ hasAccessStats = _this$props2.hasAccessStats,
202
+ hasContentInsights = _this$props2.hasContentInsights,
203
+ fetchContentInsights = _this$props2.fetchContentInsights; // Component visibility props such as hasAccessStats can sometimes be flipped after an async call
190
204
 
191
205
  var hasAccessStatsChanged = prevHasAccessStats !== hasAccessStats;
206
+ var hasContentInsightsChanged = prevHasContentInsights !== hasContentInsights;
192
207
 
193
208
  if (hasAccessStatsChanged) {
194
209
  if (hasAccessStats) {
@@ -201,6 +216,10 @@ function (_React$PureComponent) {
201
216
  });
202
217
  }
203
218
  }
219
+
220
+ if (hasContentInsightsChanged && hasContentInsights && fetchContentInsights) {
221
+ fetchContentInsights();
222
+ }
204
223
  }
205
224
  /**
206
225
  * File description update callback
@@ -223,9 +242,9 @@ function (_React$PureComponent) {
223
242
  value: function fetchFile() {
224
243
  var successCallback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.fetchFileSuccessCallback;
225
244
  var errorCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.fetchFileErrorCallback;
226
- var _this$props = this.props,
227
- api = _this$props.api,
228
- fileId = _this$props.fileId;
245
+ var _this$props3 = this.props,
246
+ api = _this$props3.api,
247
+ fileId = _this$props3.fileId;
229
248
  api.getFileAPI().getFile(fileId, successCallback, errorCallback, {
230
249
  fields: SIDEBAR_FIELDS_TO_FETCH // TODO: replace this with DETAILS_SIDEBAR_FIELDS_TO_FETCH as we do not need all the sidebar fields
231
250
 
@@ -248,9 +267,9 @@ function (_React$PureComponent) {
248
267
  * @return {void}
249
268
  */
250
269
  value: function fetchAccessStats() {
251
- var _this$props2 = this.props,
252
- api = _this$props2.api,
253
- fileId = _this$props2.fileId;
270
+ var _this$props4 = this.props,
271
+ api = _this$props4.api,
272
+ fileId = _this$props4.fileId;
254
273
  var isLoadingAccessStats = this.state.isLoadingAccessStats;
255
274
 
256
275
  if (isLoadingAccessStats) {
@@ -270,20 +289,23 @@ function (_React$PureComponent) {
270
289
  }, {
271
290
  key: "render",
272
291
  value: function render() {
273
- var _this$props3 = this.props,
274
- classification = _this$props3.classification,
275
- elementId = _this$props3.elementId,
276
- hasProperties = _this$props3.hasProperties,
277
- hasNotices = _this$props3.hasNotices,
278
- hasAccessStats = _this$props3.hasAccessStats,
279
- hasClassification = _this$props3.hasClassification,
280
- hasRetentionPolicy = _this$props3.hasRetentionPolicy,
281
- hasVersions = _this$props3.hasVersions,
282
- onAccessStatsClick = _this$props3.onAccessStatsClick,
283
- onVersionHistoryClick = _this$props3.onVersionHistoryClick,
284
- onClassificationClick = _this$props3.onClassificationClick,
285
- onRetentionPolicyExtendClick = _this$props3.onRetentionPolicyExtendClick,
286
- retentionPolicy = _this$props3.retentionPolicy;
292
+ var _this$props5 = this.props,
293
+ classification = _this$props5.classification,
294
+ contentInsights = _this$props5.contentInsights,
295
+ elementId = _this$props5.elementId,
296
+ hasProperties = _this$props5.hasProperties,
297
+ hasNotices = _this$props5.hasNotices,
298
+ hasAccessStats = _this$props5.hasAccessStats,
299
+ hasClassification = _this$props5.hasClassification,
300
+ hasContentInsights = _this$props5.hasContentInsights,
301
+ hasRetentionPolicy = _this$props5.hasRetentionPolicy,
302
+ hasVersions = _this$props5.hasVersions,
303
+ onAccessStatsClick = _this$props5.onAccessStatsClick,
304
+ onVersionHistoryClick = _this$props5.onVersionHistoryClick,
305
+ onClassificationClick = _this$props5.onClassificationClick,
306
+ onContentInsightsClick = _this$props5.onContentInsightsClick,
307
+ onRetentionPolicyExtendClick = _this$props5.onRetentionPolicyExtendClick,
308
+ retentionPolicy = _this$props5.retentionPolicy;
287
309
  var _this$state = this.state,
288
310
  accessStats = _this$state.accessStats,
289
311
  accessStatsError = _this$state.accessStatsError,
@@ -308,7 +330,10 @@ function (_React$PureComponent) {
308
330
  accessStats: accessStats,
309
331
  file: file,
310
332
  onAccessStatsClick: onAccessStatsClick
311
- }, accessStatsError)), file && hasProperties && React.createElement(SidebarSection, {
333
+ }, accessStatsError)), file && hasContentInsights && React.createElement(SidebarContentInsights, {
334
+ contentInsights: contentInsights,
335
+ onContentInsightsClick: onContentInsightsClick
336
+ }), file && hasProperties && React.createElement(SidebarSection, {
312
337
  interactionTarget: SECTION_TARGETS.FILE_PROPERTIES,
313
338
  title: React.createElement(FormattedMessage, messages.sidebarProperties)
314
339
  }, hasVersions && React.createElement(SidebarVersions, {
@@ -13,6 +13,8 @@ import API from '../../api';
13
13
  import messages from '../common/messages';
14
14
  import SidebarAccessStats from './SidebarAccessStats';
15
15
  import SidebarClassification from './SidebarClassification';
16
+ // $FlowFixMe typescript component
17
+ import SidebarContentInsights from './SidebarContentInsights';
16
18
  import SidebarContent from './SidebarContent';
17
19
  import SidebarFileProperties from './SidebarFileProperties';
18
20
  import SidebarNotices from './SidebarNotices';
@@ -32,7 +34,8 @@ import {
32
34
  IS_ERROR_DISPLAYED,
33
35
  SIDEBAR_VIEW_DETAILS,
34
36
  } from '../../constants';
35
- import type { ClassificationInfo, FileAccessStats, Errors } from './flowTypes';
37
+ import type { Errors } from '../common/flowTypes';
38
+ import type { ClassificationInfo, ContentInsights, FileAccessStats } from './flowTypes';
36
39
  import type { WithLoggerProps } from '../../common/types/logging';
37
40
  import type { ElementsErrorCallback, ErrorContextProps, ElementsXhrError } from '../../common/types/api';
38
41
  import type { BoxItem } from '../../common/types/core';
@@ -40,10 +43,13 @@ import './DetailsSidebar.scss';
40
43
 
41
44
  type ExternalProps = {
42
45
  classification?: ClassificationInfo,
46
+ contentInsights?: ContentInsights,
43
47
  elementId: string,
48
+ fetchContentInsights?: () => void,
44
49
  fileId: string,
45
50
  hasAccessStats?: boolean,
46
51
  hasClassification?: boolean,
52
+ hasContentInsights?: boolean,
47
53
  hasNotices?: boolean,
48
54
  hasProperties?: boolean,
49
55
  hasRetentionPolicy?: boolean,
@@ -51,6 +57,7 @@ type ExternalProps = {
51
57
  hasVersions?: boolean,
52
58
  onAccessStatsClick?: Function,
53
59
  onClassificationClick?: (e: SyntheticEvent<HTMLButtonElement>) => void,
60
+ onContentInsightsClick?: () => void,
54
61
  onRetentionPolicyExtendClick?: Function,
55
62
  onVersionHistoryClick?: Function,
56
63
  retentionPolicy?: Object,
@@ -97,16 +104,24 @@ class DetailsSidebar extends React.PureComponent<Props, State> {
97
104
  }
98
105
 
99
106
  componentDidMount() {
107
+ const { hasAccessStats, hasContentInsights, fetchContentInsights } = this.props;
108
+
100
109
  this.fetchFile();
101
- if (this.props.hasAccessStats) {
110
+ if (hasAccessStats) {
102
111
  this.fetchAccessStats();
103
112
  }
113
+
114
+ if (hasContentInsights && fetchContentInsights) {
115
+ fetchContentInsights();
116
+ }
104
117
  }
105
118
 
106
- componentDidUpdate({ hasAccessStats: prevHasAccessStats }: Props) {
107
- const { hasAccessStats } = this.props;
119
+ componentDidUpdate({ hasAccessStats: prevHasAccessStats, hasContentInsights: prevHasContentInsights }: Props) {
120
+ const { hasAccessStats, hasContentInsights, fetchContentInsights } = this.props;
108
121
  // Component visibility props such as hasAccessStats can sometimes be flipped after an async call
109
122
  const hasAccessStatsChanged = prevHasAccessStats !== hasAccessStats;
123
+ const hasContentInsightsChanged = prevHasContentInsights !== hasContentInsights;
124
+
110
125
  if (hasAccessStatsChanged) {
111
126
  if (hasAccessStats) {
112
127
  this.fetchAccessStats();
@@ -118,6 +133,10 @@ class DetailsSidebar extends React.PureComponent<Props, State> {
118
133
  });
119
134
  }
120
135
  }
136
+
137
+ if (hasContentInsightsChanged && hasContentInsights && fetchContentInsights) {
138
+ fetchContentInsights();
139
+ }
121
140
  }
122
141
 
123
142
  /**
@@ -316,16 +335,19 @@ class DetailsSidebar extends React.PureComponent<Props, State> {
316
335
  render() {
317
336
  const {
318
337
  classification,
338
+ contentInsights,
319
339
  elementId,
320
340
  hasProperties,
321
341
  hasNotices,
322
342
  hasAccessStats,
323
343
  hasClassification,
344
+ hasContentInsights,
324
345
  hasRetentionPolicy,
325
346
  hasVersions,
326
347
  onAccessStatsClick,
327
348
  onVersionHistoryClick,
328
349
  onClassificationClick,
350
+ onContentInsightsClick,
329
351
  onRetentionPolicyExtendClick,
330
352
  retentionPolicy,
331
353
  }: Props = this.props;
@@ -356,6 +378,12 @@ class DetailsSidebar extends React.PureComponent<Props, State> {
356
378
  {...accessStatsError}
357
379
  />
358
380
  )}
381
+ {file && hasContentInsights && (
382
+ <SidebarContentInsights
383
+ contentInsights={contentInsights}
384
+ onContentInsightsClick={onContentInsightsClick}
385
+ />
386
+ )}
359
387
  {file && hasProperties && (
360
388
  <SidebarSection
361
389
  interactionTarget={SECTION_TARGETS.FILE_PROPERTIES}