box-ui-elements 16.1.0-beta.9 → 17.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.
- package/CONTRIBUTING.md +4 -0
- package/README.md +7 -1
- package/dist/explorer.css +1 -1
- package/dist/explorer.js +19 -19
- package/dist/openwith.css +1 -1
- package/dist/openwith.js +10 -10
- package/dist/picker.css +1 -1
- package/dist/picker.js +12 -12
- package/dist/preview.css +1 -1
- package/dist/preview.js +17 -17
- package/dist/sharing.css +1 -1
- package/dist/sharing.js +16 -55
- package/dist/sidebar.css +1 -1
- package/dist/sidebar.js +17 -17
- package/dist/uploader.css +1 -1
- package/dist/uploader.js +12 -12
- package/es/api/Feed.js +85 -38
- package/es/api/Feed.js.flow +46 -1
- package/es/api/Feed.js.map +1 -1
- package/es/api/Item.js +16 -10
- package/es/api/Item.js.flow +7 -4
- package/es/api/Item.js.map +1 -1
- package/es/api/ThreadedComments.js +58 -23
- package/es/api/ThreadedComments.js.flow +40 -0
- package/es/api/ThreadedComments.js.map +1 -1
- package/es/common/types/feed.js +1 -1
- package/es/common/types/feed.js.flow +34 -0
- package/es/common/types/feed.js.map +1 -1
- package/es/components/avatar/Avatar.js +22 -5
- package/es/components/avatar/Avatar.js.flow +24 -7
- package/es/components/avatar/Avatar.js.map +1 -1
- package/es/components/avatar/Avatar.scss +42 -0
- package/es/components/avatar/Avatar.stories.js +58 -0
- package/es/components/avatar/Avatar.stories.js.map +1 -1
- package/es/components/avatar/messages.js +9 -0
- package/es/components/avatar/messages.js.map +1 -0
- package/es/components/badgeable/Badgeable.scss +1 -1
- package/es/components/breadcrumb/Breadcrumb.js +1 -1
- package/es/components/breadcrumb/Breadcrumb.js.flow +1 -1
- package/es/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/es/components/button-group/ButtonGroup.scss +2 -2
- package/es/components/checkbox/Checkbox.js +5 -1
- package/es/components/checkbox/Checkbox.js.flow +7 -0
- package/es/components/checkbox/Checkbox.js.map +1 -1
- package/es/components/checkbox/Checkbox.scss +2 -2
- package/es/components/close-button/CloseButton.js +2 -2
- package/es/components/close-button/CloseButton.js.flow +2 -2
- package/es/components/close-button/CloseButton.js.map +1 -1
- package/es/components/contact-datalist-item/ContactDatalistItem.scss +1 -1
- package/es/components/date-picker/DatePicker.js +2 -2
- package/es/components/date-picker/DatePicker.js.map +1 -1
- package/es/components/date-picker/DatePicker.scss +1 -1
- package/es/components/draft-js-editor/DraftJSEditor.scss +1 -1
- package/es/components/dropdown-menu/DropdownMenu.js +5 -3
- package/es/components/dropdown-menu/DropdownMenu.js.flow +8 -2
- package/es/components/dropdown-menu/DropdownMenu.js.map +1 -1
- package/es/components/dropdown-menu/DropdownMenu.scss +6 -4
- package/es/components/error-mask/ErrorMask.scss +1 -1
- package/es/components/flyout/Flyout.js +9 -0
- package/es/components/flyout/Flyout.js.flow +13 -0
- package/es/components/flyout/Flyout.js.map +1 -1
- package/es/components/flyout/Flyout.scss +1 -1
- package/es/components/flyout/Overlay.js +2 -1
- package/es/components/flyout/Overlay.js.flow +2 -1
- package/es/components/flyout/Overlay.js.map +1 -1
- package/es/components/grid-view/GridView.js +3 -1
- package/es/components/grid-view/GridView.js.flow +3 -2
- package/es/components/grid-view/GridView.js.map +1 -1
- package/es/components/grid-view/GridViewSlider.js +5 -2
- package/es/components/grid-view/GridViewSlider.js.flow +5 -2
- package/es/components/grid-view/GridViewSlider.js.map +1 -1
- package/es/components/grid-view/GridViewSlider.scss +0 -10
- package/es/components/inline-error/InlineError.stories.js +12 -0
- package/es/components/inline-error/InlineError.stories.js.flow +9 -0
- package/es/components/inline-error/InlineError.stories.js.map +1 -0
- package/es/components/inline-notice/InlineNotice.stories.js +42 -0
- package/es/components/inline-notice/InlineNotice.stories.js.flow +59 -0
- package/es/components/inline-notice/InlineNotice.stories.js.map +1 -0
- package/es/components/label/InfoIconWithTooltip.js +2 -2
- package/es/components/label/InfoIconWithTooltip.js.map +1 -1
- package/es/components/label/Label.scss +1 -1
- package/es/components/media-query/stories/MediaQuery.stories.js +4 -2
- package/es/components/media-query/stories/MediaQuery.stories.js.flow +11 -2
- package/es/components/media-query/stories/MediaQuery.stories.js.map +1 -1
- package/es/components/media-query/types.js.flow +1 -0
- package/es/components/media-query/types.js.map +1 -1
- package/es/components/media-query/useMediaQuery.js +3 -1
- package/es/components/media-query/useMediaQuery.js.flow +3 -0
- package/es/components/media-query/useMediaQuery.js.map +1 -1
- package/es/components/menu/MenuHeader.scss +1 -1
- package/es/components/menu/SubmenuItem.js +3 -1
- package/es/components/menu/SubmenuItem.js.map +1 -1
- package/es/components/modal/Modal.scss +15 -0
- package/es/components/modal/ModalDialog.js +40 -10
- package/es/components/modal/ModalDialog.js.flow +44 -5
- package/es/components/modal/ModalDialog.js.map +1 -1
- package/es/components/nav-sidebar/NavSidebar.scss +1 -1
- package/es/components/nav-sidebar/NavSidebar.stories.js +37 -0
- package/es/components/nav-sidebar/NavSidebar.stories.js.flow +54 -0
- package/es/components/nav-sidebar/NavSidebar.stories.js.map +1 -0
- package/es/components/pill-cloud/PillCloud.stories.js +88 -0
- package/es/components/pill-cloud/PillCloud.stories.js.flow +48 -0
- package/es/components/pill-cloud/PillCloud.stories.js.map +1 -0
- package/es/components/pill-selector-dropdown/PillSelector.js +20 -11
- package/es/components/pill-selector-dropdown/PillSelector.js.flow +26 -4
- package/es/components/pill-selector-dropdown/PillSelector.js.map +1 -1
- package/es/components/pill-selector-dropdown/PillSelector.scss +4 -0
- package/es/components/pill-selector-dropdown/PillSelectorDropdown.js +1 -0
- package/es/components/pill-selector-dropdown/PillSelectorDropdown.js.flow +1 -0
- package/es/components/pill-selector-dropdown/PillSelectorDropdown.js.map +1 -1
- package/es/components/pill-selector-dropdown/_mixins.scss +1 -1
- package/es/components/popper/PopperComponent.js +3 -1
- package/es/components/popper/PopperComponent.js.flow +3 -2
- package/es/components/popper/PopperComponent.js.map +1 -1
- package/es/components/radio/RadioButton.scss +1 -1
- package/es/components/search-form/SearchForm.js +21 -11
- package/es/components/search-form/SearchForm.js.flow +30 -6
- package/es/components/search-form/SearchForm.js.map +1 -1
- package/es/components/select-button/SelectButton.js +6 -2
- package/es/components/select-button/SelectButton.js.flow +23 -2
- package/es/components/select-button/SelectButton.js.map +1 -1
- package/es/components/select-field/BaseSelectField.js +6 -2
- package/es/components/select-field/BaseSelectField.js.flow +19 -2
- package/es/components/select-field/BaseSelectField.js.map +1 -1
- package/es/components/select-field/SelectField.scss +8 -1
- package/es/components/selector-dropdown/SelectorDropdown.js +11 -3
- package/es/components/selector-dropdown/SelectorDropdown.js.flow +22 -5
- package/es/components/selector-dropdown/SelectorDropdown.js.map +1 -1
- package/es/components/selector-dropdown/SelectorDropdown.scss +2 -2
- package/es/components/table/makeSelectable.js +38 -7
- package/es/components/table/makeSelectable.js.flow +33 -6
- package/es/components/table/makeSelectable.js.map +1 -1
- package/es/components/text-area/TextArea.scss +1 -1
- package/es/components/text-input/TextInput.scss +1 -1
- package/es/components/text-input-with-copy-button/TextInputWithCopyButton.js +3 -2
- package/es/components/text-input-with-copy-button/TextInputWithCopyButton.js.flow +4 -1
- package/es/components/text-input-with-copy-button/TextInputWithCopyButton.js.map +1 -1
- package/es/components/text-input-with-copy-button/TextInputWithCopyButton.scss +11 -7
- package/es/components/thumbnail-card/ThumbnailCard.scss +1 -1
- package/es/components/time/ReadableTime.stories.js +46 -0
- package/es/components/time/ReadableTime.stories.js.flow +56 -0
- package/es/components/time/ReadableTime.stories.js.map +1 -0
- package/es/components/toggle/Toggle.js +11 -4
- package/es/components/toggle/Toggle.js.flow +16 -5
- package/es/components/toggle/Toggle.js.map +1 -1
- package/es/components/toggle/Toggle.scss +3 -3
- package/es/components/tooltip/CloseButton.js +24 -0
- package/es/components/tooltip/CloseButton.js.map +1 -0
- package/es/components/tooltip/Tooltip.js +4 -10
- package/es/components/tooltip/Tooltip.js.map +1 -1
- package/es/constants.js +7 -0
- package/es/constants.js.flow +7 -0
- package/es/constants.js.map +1 -1
- package/es/elements/common/_variables.scss +7 -2
- package/es/elements/common/base.scss +14 -0
- package/es/elements/common/breadcrumbs/Breadcrumb.scss +1 -1
- package/es/elements/common/breadcrumbs/BreadcrumbDropdown.scss +1 -1
- package/es/elements/common/breadcrumbs/InlineBreadcrumbs.scss +2 -2
- package/es/elements/common/header/Header.js +6 -2
- package/es/elements/common/header/Header.js.flow +7 -2
- package/es/elements/common/header/Header.js.map +1 -1
- package/es/elements/common/header/Logo.js +2 -1
- package/es/elements/common/header/Logo.js.flow +5 -1
- package/es/elements/common/header/Logo.js.map +1 -1
- package/es/elements/common/item/IconCell.js +68 -0
- package/es/elements/common/item/IconCell.js.flow +55 -0
- package/es/elements/common/item/IconCell.js.map +1 -0
- package/es/elements/common/item/ItemDetails.scss +1 -1
- package/es/elements/common/item/iconCellRenderer.js +5 -36
- package/es/elements/common/item/iconCellRenderer.js.flow +6 -22
- package/es/elements/common/item/iconCellRenderer.js.map +1 -1
- package/es/elements/common/messages.js +28 -0
- package/es/elements/common/messages.js.flow +35 -0
- package/es/elements/common/messages.js.map +1 -1
- package/es/elements/common/modal.scss +0 -2
- package/es/elements/common/share-access-select/ShareAccessSelect.scss +1 -1
- package/es/elements/common/sub-header/AddButton.js +4 -1
- package/es/elements/common/sub-header/AddButton.js.flow +2 -1
- package/es/elements/common/sub-header/AddButton.js.map +1 -1
- package/es/elements/common/sub-header/Sort.js +4 -10
- package/es/elements/common/sub-header/Sort.js.flow +7 -6
- package/es/elements/common/sub-header/Sort.js.map +1 -1
- package/es/elements/common/sub-header/SortButton.js +19 -6
- package/es/elements/common/sub-header/SortButton.js.flow +23 -10
- package/es/elements/common/sub-header/SortButton.js.map +1 -1
- package/es/elements/common/sub-header/ViewModeChangeButton.js +3 -3
- package/es/elements/common/sub-header/ViewModeChangeButton.js.flow +3 -3
- package/es/elements/common/sub-header/ViewModeChangeButton.js.map +1 -1
- package/es/elements/content-explorer/Content.js.flow +2 -1
- package/es/elements/content-explorer/Content.js.map +1 -1
- package/es/elements/content-explorer/ContentExplorer.js +63 -20
- package/es/elements/content-explorer/ContentExplorer.js.flow +50 -13
- package/es/elements/content-explorer/ContentExplorer.js.map +1 -1
- package/es/elements/content-explorer/ItemGrid.js +55 -7
- package/es/elements/content-explorer/ItemGrid.js.flow +60 -9
- package/es/elements/content-explorer/ItemGrid.js.map +1 -1
- package/es/elements/content-explorer/ItemGridThumbnail.js +5 -2
- package/es/elements/content-explorer/ItemGridThumbnail.js.flow +5 -2
- package/es/elements/content-explorer/ItemGridThumbnail.js.map +1 -1
- package/es/elements/content-explorer/ItemList.js +4 -2
- package/es/elements/content-explorer/ItemList.js.flow +4 -2
- package/es/elements/content-explorer/ItemList.js.map +1 -1
- package/es/elements/content-explorer/ItemList.scss +16 -8
- package/es/elements/content-explorer/MoreOptions.js +6 -4
- package/es/elements/content-explorer/MoreOptions.js.flow +11 -4
- package/es/elements/content-explorer/MoreOptions.js.map +1 -1
- package/es/elements/content-open-with/ContentOpenWith.scss +1 -1
- package/es/elements/content-picker/Footer.js +15 -6
- package/es/elements/content-picker/Footer.js.flow +62 -51
- package/es/elements/content-picker/Footer.js.map +1 -1
- package/es/elements/content-picker/ItemList.scss +1 -1
- package/es/elements/content-preview/ContentPreview.js +44 -12
- package/es/elements/content-preview/ContentPreview.js.flow +43 -6
- package/es/elements/content-preview/ContentPreview.js.map +1 -1
- package/es/elements/content-preview/preview-header/PreviewHeader.scss +1 -1
- package/es/elements/content-sharing/ContentSharing.js +2 -2
- package/es/elements/content-sharing/ContentSharing.js.flow +2 -2
- package/es/elements/content-sharing/ContentSharing.js.map +1 -1
- package/es/elements/content-sidebar/ActivitySidebar.js +291 -62
- package/es/elements/content-sidebar/ActivitySidebar.js.flow +262 -17
- package/es/elements/content-sidebar/ActivitySidebar.js.map +1 -1
- package/es/elements/content-sidebar/ActivitySidebar.scss +7 -0
- package/es/elements/content-sidebar/ActivitySidebarFilter.js +36 -18
- package/es/elements/content-sidebar/ActivitySidebarFilter.js.flow +64 -23
- package/es/elements/content-sidebar/ActivitySidebarFilter.js.map +1 -1
- package/es/elements/content-sidebar/AddTaskMenu.scss +1 -1
- package/es/elements/content-sidebar/SidebarContent.js +2 -2
- package/es/elements/content-sidebar/SidebarContent.js.flow +1 -1
- package/es/elements/content-sidebar/SidebarContent.js.map +1 -1
- package/es/elements/content-sidebar/SidebarContent.scss +3 -3
- package/es/elements/content-sidebar/SidebarNav.js +3 -17
- package/es/elements/content-sidebar/SidebarNav.js.flow +3 -15
- package/es/elements/content-sidebar/SidebarNav.js.map +1 -1
- package/es/elements/content-sidebar/SidebarNavSign.js +48 -69
- package/es/elements/content-sidebar/SidebarNavSign.js.map +1 -1
- package/es/elements/content-sidebar/SidebarNavSign.scss +3 -25
- package/es/elements/content-sidebar/SidebarNavSignButton.js +79 -0
- package/es/elements/content-sidebar/SidebarNavSignButton.js.map +1 -0
- package/es/elements/content-sidebar/SidebarNavSignButton.scss +27 -0
- package/es/elements/content-sidebar/activity-feed/Avatar.js +4 -2
- package/es/elements/content-sidebar/activity-feed/Avatar.js.flow +5 -2
- package/es/elements/content-sidebar/activity-feed/Avatar.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js +61 -15
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js.flow +73 -28
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js +122 -53
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js.flow +80 -13
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.scss +11 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.js +9 -2
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.scss +28 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js +27 -7
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js.flow +48 -29
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.scss +69 -6
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js +35 -4
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js.flow +42 -5
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.scss +15 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js +21 -8
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js.flow +30 -5
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.scss +4 -7
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js +45 -15
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js.flow +43 -13
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.scss +26 -3
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js +29 -48
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js.flow +67 -56
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.scss +1 -1
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js +14 -53
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js.flow +16 -51
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js +3 -2
- package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js.flow +5 -4
- package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotation-thread/types.js +2 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/types.js.flow +7 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/types.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js +29 -17
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js.flow +32 -10
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationThread.js +317 -63
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationThread.js.flow +249 -55
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationThread.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js +27 -93
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js.flow +42 -83
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js +15 -6
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js.flow +27 -12
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.scss +11 -8
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityLink.scss +1 -1
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js +3 -1
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js.flow +3 -1
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.scss +5 -0
- package/es/elements/content-sidebar/activity-feed/comment/BaseComment.js +385 -0
- package/es/elements/content-sidebar/activity-feed/comment/BaseComment.js.flow +456 -0
- package/es/elements/content-sidebar/activity-feed/comment/BaseComment.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/comment/BaseComment.scss +30 -0
- package/es/elements/content-sidebar/activity-feed/comment/Comment.js +53 -9
- package/es/elements/content-sidebar/activity-feed/comment/Comment.js.flow +42 -5
- package/es/elements/content-sidebar/activity-feed/comment/Comment.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/comment/Comment.scss +10 -0
- package/es/elements/content-sidebar/activity-feed/comment/CreateReply.js +54 -0
- package/es/elements/content-sidebar/activity-feed/comment/CreateReply.js.flow +72 -0
- package/es/elements/content-sidebar/activity-feed/comment/CreateReply.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/comment/CreateReply.scss +21 -0
- package/es/elements/content-sidebar/activity-feed/comment/Replies.scss +41 -0
- package/es/elements/content-sidebar/activity-feed/comment/RepliesToggle.js +44 -0
- package/es/elements/content-sidebar/activity-feed/comment/RepliesToggle.js.flow +41 -0
- package/es/elements/content-sidebar/activity-feed/comment/RepliesToggle.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/comment/RepliesToggle.scss +6 -0
- package/es/elements/content-sidebar/activity-feed/comment/messages.js +16 -0
- package/es/elements/content-sidebar/activity-feed/comment/messages.js.flow +20 -0
- package/es/elements/content-sidebar/activity-feed/comment/messages.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js +1 -1
- package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js.flow +3 -3
- package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.scss +1 -1
- package/es/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.scss +1 -1
- package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js +1 -1
- package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js.flow +2 -2
- package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.scss +1 -1
- package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js +1 -0
- package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.flow +1 -0
- package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/task-new/AssigneeDetails.scss +1 -1
- package/es/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.js +7 -8
- package/es/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.js.flow +11 -7
- package/es/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.scss +1 -5
- package/es/elements/content-sidebar/activity-feed/task-new/Task.js +2 -5
- package/es/elements/content-sidebar/activity-feed/task-new/Task.js.flow +1 -2
- package/es/elements/content-sidebar/activity-feed/task-new/Task.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/task-new/Task.scss +1 -8
- package/es/elements/content-sidebar/messages.js +22 -2
- package/es/elements/content-sidebar/messages.js.flow +29 -4
- package/es/elements/content-sidebar/messages.js.map +1 -1
- package/es/elements/content-sidebar/skills/timeline/Timeline.scss +1 -1
- package/es/elements/content-sidebar/skills/transcript/Transcript.scss +1 -1
- package/es/elements/content-sidebar/versions/VersionsGroup.scss +1 -1
- package/es/elements/content-sidebar/versions/VersionsItem.scss +3 -3
- package/es/elements/content-uploader/Footer.js +9 -3
- package/es/elements/content-uploader/Footer.js.flow +23 -3
- package/es/elements/content-uploader/Footer.js.map +1 -1
- package/es/elements/content-uploader/Footer.scss +0 -1
- package/es/elements/content-uploader/ItemAction.js +8 -4
- package/es/elements/content-uploader/ItemAction.js.flow +6 -3
- package/es/elements/content-uploader/ItemAction.js.map +1 -1
- package/es/elements/content-uploader/ItemRemove.js +11 -6
- package/es/elements/content-uploader/ItemRemove.js.flow +18 -6
- package/es/elements/content-uploader/ItemRemove.js.map +1 -1
- package/es/elements/content-uploader/UploadInput.js +21 -9
- package/es/elements/content-uploader/UploadInput.js.flow +19 -9
- package/es/elements/content-uploader/UploadInput.js.map +1 -1
- package/es/features/advanced-content-insights/AdvancedContentInsightsToggle.js +44 -0
- package/es/features/advanced-content-insights/AdvancedContentInsightsToggle.js.map +1 -0
- package/es/features/advanced-content-insights/AdvancedContentInsightsToggle.scss +19 -0
- package/es/features/advanced-content-insights/messages.js +17 -0
- package/es/features/advanced-content-insights/messages.js.map +1 -0
- package/es/features/classification/classificationColorsMap.js +1 -1
- package/es/features/classification/classificationColorsMap.js.flow +1 -1
- package/es/features/classification/classificationColorsMap.js.map +1 -1
- package/es/features/collaborator-avatars/CollaboratorAvatarItem.js +13 -9
- package/es/features/collaborator-avatars/CollaboratorAvatarItem.js.flow +11 -8
- package/es/features/collaborator-avatars/CollaboratorAvatarItem.js.map +1 -1
- package/es/features/collaborator-avatars/CollaboratorAvatars.scss +1 -1
- package/es/features/collaborator-avatars/CollaboratorList.js +4 -5
- package/es/features/collaborator-avatars/CollaboratorList.js.flow +3 -4
- package/es/features/collaborator-avatars/CollaboratorList.js.map +1 -1
- package/es/features/collaborator-avatars/CollaboratorListItem.js +7 -9
- package/es/features/collaborator-avatars/CollaboratorListItem.js.flow +7 -13
- package/es/features/collaborator-avatars/CollaboratorListItem.js.map +1 -1
- package/es/features/collaborator-avatars/CollaboratorListItem.scss +7 -3
- package/es/features/collapsible-sidebar/CollapsibleSidebar.js +3 -2
- package/es/features/collapsible-sidebar/CollapsibleSidebar.js.flow +5 -2
- package/es/features/collapsible-sidebar/CollapsibleSidebar.js.map +1 -1
- package/es/features/collapsible-sidebar/CollapsibleSidebar.scss +4 -7
- package/es/features/collapsible-sidebar/CollapsibleSidebarLogo.js +3 -1
- package/es/features/collapsible-sidebar/CollapsibleSidebarLogo.js.flow +15 -11
- package/es/features/collapsible-sidebar/CollapsibleSidebarLogo.js.map +1 -1
- package/es/features/content-explorer/content-explorer/ContentExplorer.js +146 -58
- package/es/features/content-explorer/content-explorer/ContentExplorer.js.flow +97 -20
- package/es/features/content-explorer/content-explorer/ContentExplorer.js.map +1 -1
- package/es/features/content-explorer/content-explorer/ContentExplorer.scss +67 -8
- package/es/features/content-explorer/content-explorer/ContentExplorerActionButtons.js +58 -11
- package/es/features/content-explorer/content-explorer/ContentExplorerActionButtons.js.flow +53 -13
- package/es/features/content-explorer/content-explorer/ContentExplorerActionButtons.js.map +1 -1
- package/es/features/content-explorer/content-explorer/ContentExplorerFolderTreeBreadcrumbs.js +68 -0
- package/es/features/content-explorer/content-explorer/ContentExplorerFolderTreeBreadcrumbs.js.flow +82 -0
- package/es/features/content-explorer/content-explorer/ContentExplorerFolderTreeBreadcrumbs.js.map +1 -0
- package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js +13 -2
- package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js.flow +22 -7
- package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js.map +1 -1
- package/es/features/content-explorer/content-explorer/ContentExplorerIncludeSubfolders.js +33 -0
- package/es/features/content-explorer/content-explorer/ContentExplorerIncludeSubfolders.js.flow +30 -0
- package/es/features/content-explorer/content-explorer/ContentExplorerIncludeSubfolders.js.map +1 -0
- package/es/features/content-explorer/content-explorer/ContentExplorerSelectAll.js +16 -10
- package/es/features/content-explorer/content-explorer/ContentExplorerSelectAll.js.flow +34 -20
- package/es/features/content-explorer/content-explorer/ContentExplorerSelectAll.js.map +1 -1
- package/es/features/content-explorer/content-explorer/constants.js +7 -0
- package/es/features/content-explorer/content-explorer/constants.js.flow +6 -0
- package/es/features/content-explorer/content-explorer/constants.js.map +1 -0
- package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js +1 -0
- package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js.flow +13 -0
- package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js.map +1 -1
- package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js +42 -0
- package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js.flow +31 -0
- package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js.map +1 -1
- package/es/features/content-explorer/item-list/ItemList.js +20 -5
- package/es/features/content-explorer/item-list/ItemList.js.flow +17 -1
- package/es/features/content-explorer/item-list/ItemList.js.map +1 -1
- package/es/features/content-explorer/item-list/ItemList.scss +1 -1
- package/es/features/content-explorer/item-list/ItemListButton.js +4 -1
- package/es/features/content-explorer/item-list/ItemListButton.js.flow +10 -2
- package/es/features/content-explorer/item-list/ItemListButton.js.map +1 -1
- package/es/features/content-explorer/item-list/ItemListIcon.js +12 -45
- package/es/features/content-explorer/item-list/ItemListIcon.js.flow +5 -33
- package/es/features/content-explorer/item-list/ItemListIcon.js.map +1 -1
- package/es/features/content-explorer/item-list/ItemListName.js +2 -2
- package/es/features/content-explorer/item-list/ItemListName.js.flow +3 -2
- package/es/features/content-explorer/item-list/ItemListName.js.map +1 -1
- package/es/features/content-explorer/messages.js +23 -19
- package/es/features/content-explorer/messages.js.flow +41 -24
- package/es/features/content-explorer/messages.js.map +1 -1
- package/es/features/content-explorer/prop-types.js +2 -2
- package/es/features/content-explorer/prop-types.js.flow +2 -2
- package/es/features/content-explorer/prop-types.js.map +1 -1
- package/es/features/content-insights/_mixins.scss +1 -1
- package/es/features/content-insights/charts/bar/Bar.js +21 -2
- package/es/features/content-insights/charts/bar/Bar.js.map +1 -1
- package/es/features/content-insights/charts/bar/BarChart.js +6 -3
- package/es/features/content-insights/charts/bar/BarChart.js.map +1 -1
- package/es/features/invite-collaborators-modal/InviteCollaboratorsModal.scss +1 -1
- package/es/features/message-center/components/templates/common/styles/MessageFooter.scss +1 -1
- package/es/features/metadata-based-view/IconWithTooltip.js +4 -4
- package/es/features/metadata-based-view/IconWithTooltip.js.flow +4 -4
- package/es/features/metadata-based-view/IconWithTooltip.js.map +1 -1
- package/es/features/metadata-based-view/MetadataBasedItemList.scss +1 -1
- package/es/features/metadata-instance-editor/CascadePolicy.scss +1 -1
- package/es/features/metadata-instance-editor/TemplateDropdown.js +9 -21
- package/es/features/metadata-instance-editor/TemplateDropdown.js.flow +4 -10
- package/es/features/metadata-instance-editor/TemplateDropdown.js.map +1 -1
- package/es/features/metadata-instance-editor/TemplateDropdown.scss +2 -2
- package/es/features/metadata-instance-fields/EnumMetadataField.scss +2 -2
- package/es/features/metadata-instance-fields/MultiSelectMetadataField.scss +1 -1
- package/es/features/metadata-instance-fields/ReadOnlyMetadataField.scss +2 -2
- package/es/features/presence/PresenceAvatarList.scss +1 -1
- package/es/features/presence/PresenceCollaborator.scss +1 -1
- package/es/features/query-bar/styles/Condition.scss +2 -2
- package/es/features/quick-search/QuickSearchItem.js +4 -3
- package/es/features/quick-search/QuickSearchItem.js.flow +4 -3
- package/es/features/quick-search/QuickSearchItem.js.map +1 -1
- package/es/features/shared-link-settings-modal/ExpirationSection.js +5 -0
- package/es/features/shared-link-settings-modal/ExpirationSection.js.flow +4 -0
- package/es/features/shared-link-settings-modal/ExpirationSection.js.map +1 -1
- package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js +9 -3
- package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js.flow +9 -5
- package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js.map +1 -1
- package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.scss +3 -3
- package/es/features/shared-link-settings-modal/VanityNameSection.js +2 -2
- package/es/features/shared-link-settings-modal/VanityNameSection.js.flow +2 -2
- package/es/features/shared-link-settings-modal/VanityNameSection.js.map +1 -1
- package/es/features/unified-share-modal/InviteePermissionsMenu.js +2 -1
- package/es/features/unified-share-modal/InviteePermissionsMenu.js.flow +1 -0
- package/es/features/unified-share-modal/InviteePermissionsMenu.js.map +1 -1
- package/es/features/unified-share-modal/SharedLinkAccessMenu.js +2 -1
- package/es/features/unified-share-modal/SharedLinkAccessMenu.js.flow +1 -0
- package/es/features/unified-share-modal/SharedLinkAccessMenu.js.map +1 -1
- package/es/features/unified-share-modal/SharedLinkPermissionMenu.js +2 -1
- package/es/features/unified-share-modal/SharedLinkPermissionMenu.js.flow +1 -0
- package/es/features/unified-share-modal/SharedLinkPermissionMenu.js.map +1 -1
- package/es/features/unified-share-modal/SharedLinkSection.js +18 -18
- package/es/features/unified-share-modal/SharedLinkSection.js.flow +30 -38
- package/es/features/unified-share-modal/SharedLinkSection.js.map +1 -1
- package/es/features/unified-share-modal/UnifiedShareForm.js +27 -16
- package/es/features/unified-share-modal/UnifiedShareForm.js.flow +38 -25
- package/es/features/unified-share-modal/UnifiedShareForm.js.map +1 -1
- package/es/features/unified-share-modal/UnifiedShareModal.js +10 -1
- package/es/features/unified-share-modal/UnifiedShareModal.js.flow +9 -1
- package/es/features/unified-share-modal/UnifiedShareModal.js.map +1 -1
- package/es/features/unified-share-modal/UnifiedShareModal.scss +24 -13
- package/es/features/unified-share-modal/flowTypes.js.flow +10 -2
- package/es/features/unified-share-modal/flowTypes.js.map +1 -1
- package/es/features/unified-share-modal/messages.js +12 -4
- package/es/features/unified-share-modal/messages.js.flow +17 -5
- package/es/features/unified-share-modal/messages.js.map +1 -1
- package/es/features/virtualized-table/VirtualizedTable.scss +1 -1
- package/es/features/virtualized-table-renderers/_mixins.scss +1 -1
- package/es/icons/badges/MetadataDefaultBadge.js +3 -3
- package/es/icons/badges/MetadataDefaultBadge.js.flow +3 -3
- package/es/icons/badges/MetadataDefaultBadge.js.map +1 -1
- package/es/icons/general/IconAnyTask.js +2 -2
- package/es/icons/general/IconAnyTask.js.flow +2 -2
- package/es/icons/general/IconAnyTask.js.map +1 -1
- package/es/icons/general/IconEdit.js +2 -1
- package/es/icons/general/IconEdit.js.flow +2 -1
- package/es/icons/general/IconEdit.js.map +1 -1
- package/es/icons/metadata-view/IconMetadataView.js +2 -1
- package/es/icons/metadata-view/IconMetadataView.js.flow +2 -1
- package/es/icons/metadata-view/IconMetadataView.js.map +1 -1
- package/es/icons/two-toned/IconAnnotation.js +36 -0
- package/es/icons/two-toned/IconAnnotation.js.flow +27 -0
- package/es/icons/two-toned/IconAnnotation.js.map +1 -0
- package/es/icons/two-toned/_IconAnnotation.mixins.scss +9 -0
- package/es/src/components/avatar/Avatar.d.ts +18 -2
- package/es/src/components/avatar/Avatar.stories.d.ts +7 -2
- package/es/src/components/avatar/messages.d.ts +8 -0
- package/es/src/components/checkbox/Checkbox.d.ts +4 -1
- package/es/src/components/checkbox/Checkbox.stories.d.ts +1 -1
- package/es/src/components/tooltip/CloseButton.d.ts +14 -0
- package/es/src/components/tooltip/__tests__/CloseButton.test.d.ts +1 -0
- package/es/src/elements/content-sidebar/SidebarNavSign.d.ts +2 -24
- package/es/src/elements/content-sidebar/SidebarNavSignButton.d.ts +25 -0
- package/es/src/elements/content-sidebar/__tests__/SidebarNavSignButton.test.d.ts +1 -0
- package/es/src/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.d.ts +3 -0
- package/es/src/features/advanced-content-insights/AdvancedContentInsightsToggle.d.ts +10 -0
- package/es/src/features/advanced-content-insights/__tests__/AdvancedContentInsightsToggle.test.d.ts +1 -0
- package/es/src/features/advanced-content-insights/messages.d.ts +18 -0
- package/es/src/features/content-insights/charts/bar/Bar.d.ts +6 -2
- package/es/src/features/content-insights/charts/bar/BarChart.d.ts +7 -2
- package/es/src/icons/two-toned/IconAnnotation.d.ts +3 -0
- package/es/src/icons/two-toned/__tests__/IconAnnotation.test.d.ts +1 -0
- package/es/src/styles/typography.stories.d.ts +8 -0
- package/es/src/styles/variables.d.ts +1 -1
- package/es/styles/_deprecated.scss +1 -0
- package/es/styles/_inputs.scss +2 -3
- package/es/styles/common/_buttons.scss +2 -2
- package/es/styles/common/_forms.scss +2 -0
- package/es/styles/common/_links.scss +1 -1
- package/es/styles/constants/_colors.scss +1 -1
- package/es/styles/constants/_themes.scss +1 -1
- package/es/styles/typography.stories.js +55 -0
- package/es/styles/typography.stories.js.map +1 -0
- package/es/styles/typography.stories.scss +60 -0
- package/es/styles/variables.js +2 -2
- package/es/styles/variables.js.flow +2 -2
- package/es/styles/variables.js.map +1 -1
- package/es/utils/createTheme.js +2 -2
- package/es/utils/createTheme.js.flow +2 -2
- package/es/utils/createTheme.js.map +1 -1
- package/i18n/bn-IN.js +46 -22
- package/i18n/bn-IN.properties +79 -31
- package/i18n/da-DK.js +46 -22
- package/i18n/da-DK.properties +79 -31
- package/i18n/de-DE.js +45 -21
- package/i18n/de-DE.properties +78 -30
- package/i18n/en-AU.js +33 -9
- package/i18n/en-AU.properties +66 -18
- package/i18n/en-CA.js +32 -8
- package/i18n/en-CA.properties +65 -17
- package/i18n/en-GB.js +33 -9
- package/i18n/en-GB.properties +66 -18
- package/i18n/en-US.js +32 -8
- package/i18n/en-US.properties +65 -17
- package/i18n/en-x-pseudo.js +39 -8
- package/i18n/es-419.js +46 -22
- package/i18n/es-419.properties +79 -31
- package/i18n/es-ES.js +46 -22
- package/i18n/es-ES.properties +79 -31
- package/i18n/fi-FI.js +45 -21
- package/i18n/fi-FI.properties +78 -30
- package/i18n/fr-CA.js +44 -20
- package/i18n/fr-CA.properties +78 -30
- package/i18n/fr-FR.js +44 -20
- package/i18n/fr-FR.properties +78 -30
- package/i18n/hi-IN.js +46 -22
- package/i18n/hi-IN.properties +79 -31
- package/i18n/it-IT.js +45 -21
- package/i18n/it-IT.properties +78 -30
- package/i18n/ja-JP.js +55 -31
- package/i18n/ja-JP.properties +88 -40
- package/i18n/ko-KR.js +44 -20
- package/i18n/ko-KR.properties +78 -30
- package/i18n/nb-NO.js +45 -21
- package/i18n/nb-NO.properties +78 -30
- package/i18n/nl-NL.js +46 -22
- package/i18n/nl-NL.properties +79 -31
- package/i18n/pl-PL.js +45 -21
- package/i18n/pl-PL.properties +78 -30
- package/i18n/pt-BR.js +45 -21
- package/i18n/pt-BR.properties +78 -30
- package/i18n/ru-RU.js +45 -21
- package/i18n/ru-RU.properties +78 -30
- package/i18n/sv-SE.js +46 -22
- package/i18n/sv-SE.properties +79 -31
- package/i18n/tr-TR.js +45 -21
- package/i18n/tr-TR.properties +78 -30
- package/i18n/zh-CN.js +45 -21
- package/i18n/zh-CN.properties +78 -30
- package/i18n/zh-TW.js +45 -21
- package/i18n/zh-TW.properties +78 -30
- package/package.json +3 -3
- package/src/api/Feed.js +46 -1
- package/src/api/Item.js +7 -4
- package/src/api/ThreadedComments.js +40 -0
- package/src/api/__tests__/Feed.test.js +48 -0
- package/src/api/__tests__/Item.test.js +14 -0
- package/src/api/__tests__/ThreadedComments.test.js +46 -0
- package/src/common/types/feed.js +34 -0
- package/src/components/avatar/Avatar.js.flow +24 -7
- package/src/components/avatar/Avatar.scss +42 -0
- package/src/components/avatar/Avatar.stories.tsx +45 -0
- package/src/components/avatar/Avatar.tsx +39 -9
- package/src/components/avatar/__tests__/Avatar.test.tsx +39 -29
- package/src/components/avatar/messages.ts +11 -0
- package/src/components/badgeable/Badgeable.scss +1 -1
- package/src/components/breadcrumb/Breadcrumb.js +1 -1
- package/src/components/breadcrumb/__tests__/Breadcrumb.test.js +1 -1
- package/src/components/button-group/ButtonGroup.scss +2 -2
- package/src/components/checkbox/Checkbox.js.flow +7 -0
- package/src/components/checkbox/Checkbox.scss +2 -2
- package/src/components/checkbox/Checkbox.tsx +7 -0
- package/src/components/checkbox/__tests__/Checkbox.test.tsx +19 -2
- package/src/components/close-button/CloseButton.js.flow +2 -2
- package/src/components/close-button/CloseButton.tsx +2 -2
- package/src/components/contact-datalist-item/ContactDatalistItem.scss +1 -1
- package/src/components/date-picker/DatePicker.scss +1 -1
- package/src/components/date-picker/DatePicker.tsx +2 -2
- package/src/components/date-picker/__tests__/DatePicker.test.tsx +4 -4
- package/src/components/draft-js-editor/DraftJSEditor.scss +1 -1
- package/src/components/dropdown-menu/DropdownMenu.js +8 -2
- package/src/components/dropdown-menu/DropdownMenu.scss +6 -4
- package/src/components/dropdown-menu/__tests__/DropdownMenu.test.js +18 -0
- package/src/components/error-mask/ErrorMask.scss +1 -1
- package/src/components/flyout/Flyout.js +13 -0
- package/src/components/flyout/Flyout.scss +1 -1
- package/src/components/flyout/Overlay.js +2 -1
- package/src/components/flyout/__tests__/Flyout.test.js +22 -1
- package/src/components/flyout/__tests__/Overlay.test.js +1 -1
- package/src/components/grid-view/GridView.js +3 -2
- package/src/components/grid-view/GridViewSlider.js +5 -2
- package/src/components/grid-view/GridViewSlider.scss +0 -10
- package/src/components/grid-view/__tests__/GridViewSlider.test.js +35 -2
- package/src/components/grid-view/__tests__/__snapshots__/GridView.test.js.snap +2 -0
- package/src/components/grid-view/__tests__/__snapshots__/GridViewSlider.test.js.snap +38 -13
- package/src/components/inline-error/InlineError.stories.js +9 -0
- package/src/components/inline-error/InlineError.stories.md +3 -0
- package/src/components/inline-notice/InlineNotice.stories.js +59 -0
- package/src/components/inline-notice/InlineNotice.stories.md +1 -0
- package/src/components/label/InfoIconWithTooltip.tsx +2 -2
- package/src/components/label/Label.scss +1 -1
- package/src/components/label/__tests__/__snapshots__/InfoIconWithTooltip.test.tsx.snap +1 -1
- package/src/components/media-query/__tests__/withMediaQuery.test.js +1 -0
- package/src/components/media-query/stories/MediaQuery.stories.js +11 -2
- package/src/components/media-query/stories/MediaQuery.stories.md +10 -9
- package/src/components/media-query/types.js +1 -0
- package/src/components/media-query/useMediaQuery.js +3 -0
- package/src/components/menu/MenuHeader.scss +1 -1
- package/src/components/menu/SubmenuItem.tsx +4 -1
- package/src/components/modal/Modal.scss +15 -0
- package/src/components/modal/ModalDialog.js +44 -5
- package/src/components/modal/__tests__/ModalDialog.test.js +22 -1
- package/src/components/nav-sidebar/NavSidebar.scss +1 -1
- package/src/components/nav-sidebar/NavSidebar.stories.js +54 -0
- package/src/components/nav-sidebar/NavSidebar.stories.md +1 -0
- package/src/components/pill-cloud/PillCloud.stories.js +48 -0
- package/src/components/pill-cloud/PillCloud.stories.md +1 -0
- package/src/components/pill-selector-dropdown/PillSelector.js +26 -4
- package/src/components/pill-selector-dropdown/PillSelector.scss +4 -0
- package/src/components/pill-selector-dropdown/PillSelectorDropdown.js +1 -0
- package/src/components/pill-selector-dropdown/__tests__/PillSelector.test.js +1 -1
- package/src/components/pill-selector-dropdown/__tests__/PillSelectorDropdown.test.js +4 -4
- package/src/components/pill-selector-dropdown/__tests__/__snapshots__/PillSelector.test.js.snap +1 -1
- package/src/components/pill-selector-dropdown/__tests__/__snapshots__/PillSelectorDropdown.test.js.snap +1 -1
- package/src/components/pill-selector-dropdown/_mixins.scss +1 -1
- package/src/components/popper/PopperComponent.js +3 -2
- package/src/components/radio/RadioButton.scss +1 -1
- package/src/components/search-form/SearchForm.js +30 -6
- package/src/components/search-form/__tests__/SearchForm.test.js +1 -1
- package/src/components/select-button/SelectButton.js +23 -2
- package/src/components/select-button/__tests__/SelectButton.test.js +8 -0
- package/src/components/select-field/BaseSelectField.js +19 -2
- package/src/components/select-field/SelectField.scss +8 -1
- package/src/components/select-field/__tests__/BaseSelectField.test.js +9 -0
- package/src/components/selector-dropdown/SelectorDropdown.js +22 -5
- package/src/components/selector-dropdown/SelectorDropdown.scss +2 -2
- package/src/components/selector-dropdown/__tests__/SelectorDropdown.test.js +2 -1
- package/src/components/table/__tests__/makeSelectable.test.js +65 -3
- package/src/components/table/makeSelectable.js +33 -6
- package/src/components/text-area/TextArea.scss +1 -1
- package/src/components/text-input/TextInput.scss +1 -1
- package/src/components/text-input-with-copy-button/TextInputWithCopyButton.js +4 -1
- package/src/components/text-input-with-copy-button/TextInputWithCopyButton.scss +11 -7
- package/src/components/thumbnail-card/ThumbnailCard.scss +1 -1
- package/src/components/time/ReadableTime.stories.js +56 -0
- package/src/components/time/ReadableTime.stories.md +1 -0
- package/src/components/toggle/Toggle.js +16 -5
- package/src/components/toggle/Toggle.scss +3 -3
- package/src/components/toggle/__tests__/__snapshots__/Toggle.test.js.snap +2 -0
- package/src/components/tooltip/CloseButton.tsx +22 -0
- package/src/components/tooltip/Tooltip.tsx +3 -8
- package/src/components/tooltip/__tests__/CloseButton.test.tsx +32 -0
- package/src/components/tooltip/__tests__/Tooltip.test.tsx +21 -0
- package/src/components/tooltip/__tests__/__snapshots__/Tooltip.test.tsx.snap +3 -10
- package/src/constants.js +7 -0
- package/src/elements/common/_variables.scss +7 -2
- package/src/elements/common/base.scss +14 -0
- package/src/elements/common/breadcrumbs/Breadcrumb.scss +1 -1
- package/src/elements/common/breadcrumbs/BreadcrumbDropdown.scss +1 -1
- package/src/elements/common/breadcrumbs/InlineBreadcrumbs.scss +2 -2
- package/src/elements/common/header/Header.js +7 -2
- package/src/elements/common/header/Logo.js +5 -1
- package/src/elements/common/header/__tests__/Header.test.js +40 -0
- package/src/elements/common/item/IconCell.js +55 -0
- package/src/elements/common/item/ItemDetails.scss +1 -1
- package/src/elements/common/item/__tests__/IconCell.test.js +88 -0
- package/src/elements/common/item/iconCellRenderer.js +6 -22
- package/src/elements/common/messages.js +35 -0
- package/src/elements/common/modal.scss +0 -2
- package/src/elements/common/share-access-select/ShareAccessSelect.scss +1 -1
- package/src/elements/common/sub-header/AddButton.js +2 -1
- package/src/elements/common/sub-header/Sort.js +7 -6
- package/src/elements/common/sub-header/SortButton.js +23 -10
- package/src/elements/common/sub-header/ViewModeChangeButton.js +3 -3
- package/src/elements/common/sub-header/__tests__/Sort.test.js +12 -62
- package/src/elements/common/sub-header/__tests__/SortButton.test.js +24 -0
- package/src/elements/common/sub-header/__tests__/SubHeaderRight.test.js +1 -1
- package/src/elements/content-explorer/Content.js +2 -1
- package/src/elements/content-explorer/ContentExplorer.js +50 -13
- package/src/elements/content-explorer/ItemGrid.js +60 -9
- package/src/elements/content-explorer/ItemGridThumbnail.js +5 -2
- package/src/elements/content-explorer/ItemList.js +4 -2
- package/src/elements/content-explorer/ItemList.scss +16 -8
- package/src/elements/content-explorer/MoreOptions.js +11 -4
- package/src/elements/content-explorer/__tests__/ContentExplorer.test.js +44 -0
- package/src/elements/content-explorer/__tests__/MoreOptions.test.js +30 -0
- package/src/elements/content-open-with/ContentOpenWith.scss +1 -1
- package/src/elements/content-picker/Footer.js +62 -51
- package/src/elements/content-picker/ItemList.scss +1 -1
- package/src/elements/content-picker/__tests__/Footer.test.js +17 -0
- package/src/elements/content-preview/ContentPreview.js +43 -6
- package/src/elements/content-preview/__tests__/ContentPreview.test.js +96 -0
- package/src/elements/content-preview/preview-header/PreviewHeader.scss +1 -1
- package/src/elements/content-sharing/ContentSharing.js +2 -2
- package/src/elements/content-sidebar/ActivitySidebar.js +262 -17
- package/src/elements/content-sidebar/ActivitySidebar.scss +7 -0
- package/src/elements/content-sidebar/ActivitySidebarFilter.js +64 -23
- package/src/elements/content-sidebar/AddTaskMenu.scss +1 -1
- package/src/elements/content-sidebar/SidebarContent.js +1 -1
- package/src/elements/content-sidebar/SidebarContent.scss +3 -3
- package/src/elements/content-sidebar/SidebarNav.js +3 -15
- package/src/elements/content-sidebar/SidebarNavSign.scss +3 -25
- package/src/elements/content-sidebar/SidebarNavSign.tsx +53 -55
- package/src/elements/content-sidebar/SidebarNavSignButton.scss +27 -0
- package/src/elements/content-sidebar/SidebarNavSignButton.tsx +73 -0
- package/src/elements/content-sidebar/__tests__/ActivitySidebar.test.js +545 -16
- package/src/elements/content-sidebar/__tests__/ActivitySidebarFilter.test.js +47 -18
- package/src/elements/content-sidebar/__tests__/SidebarNav.test.js +3 -3
- package/src/elements/content-sidebar/__tests__/SidebarNavSign.test.tsx +72 -52
- package/src/elements/content-sidebar/__tests__/SidebarNavSignButton.test.tsx +60 -0
- package/src/elements/content-sidebar/__tests__/__snapshots__/ActivitySidebar.test.js.snap +2 -0
- package/src/elements/content-sidebar/activity-feed/Avatar.js +5 -2
- package/src/elements/content-sidebar/activity-feed/__tests__/Avatar.test.js +0 -10
- package/src/elements/content-sidebar/activity-feed/__tests__/__snapshots__/Avatar.test.js.snap +13 -10
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js +73 -28
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js +80 -13
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.scss +11 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.scss +28 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.tsx +16 -2
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js +48 -29
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.scss +69 -6
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js +42 -5
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.scss +15 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js +30 -5
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.scss +4 -7
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActiveState.test.js +11 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityFeed.test.js +74 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityItem.test.tsx +20 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThread.test.js +8 -3
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThreadReplies.test.js +12 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThreadRepliesForm.test.js +20 -5
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/__snapshots__/ActiveState.test.js.snap +7 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/__snapshots__/ActivityFeed.test.js.snap +3 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js +43 -13
- package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.scss +26 -3
- package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js +67 -56
- package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.scss +1 -1
- package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js +16 -51
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__mocks__/useAnnotationThread.js +19 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThread.test.js +12 -1
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThreadContent.test.js +18 -52
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThreadCreate.test.js +23 -54
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/useAnnotationAPI.test.js +40 -3
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/useAnnotationThread.test.js +429 -25
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/useRepliesAPI.test.js +15 -13
- package/src/elements/content-sidebar/activity-feed/annotation-thread/errors.js +5 -4
- package/src/elements/content-sidebar/activity-feed/annotation-thread/types.js +7 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js +32 -10
- package/src/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationThread.js +249 -55
- package/src/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js +42 -83
- package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js +27 -12
- package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.scss +11 -8
- package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivityLink.scss +1 -1
- package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js +3 -1
- package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.scss +5 -0
- package/src/elements/content-sidebar/activity-feed/annotations/__tests__/AnnotationActivity.test.js +26 -0
- package/src/elements/content-sidebar/activity-feed/comment/BaseComment.js +456 -0
- package/src/elements/content-sidebar/activity-feed/comment/BaseComment.scss +30 -0
- package/src/elements/content-sidebar/activity-feed/comment/Comment.js +42 -5
- package/src/elements/content-sidebar/activity-feed/comment/Comment.scss +10 -0
- package/src/elements/content-sidebar/activity-feed/comment/CreateReply.js +72 -0
- package/src/elements/content-sidebar/activity-feed/comment/CreateReply.scss +21 -0
- package/src/elements/content-sidebar/activity-feed/comment/Replies.scss +41 -0
- package/src/elements/content-sidebar/activity-feed/comment/RepliesToggle.js +41 -0
- package/src/elements/content-sidebar/activity-feed/comment/RepliesToggle.scss +6 -0
- package/src/elements/content-sidebar/activity-feed/comment/__tests__/BaseComment.test.js +373 -0
- package/src/elements/content-sidebar/activity-feed/comment/__tests__/Comment.test.js +14 -6
- package/src/elements/content-sidebar/activity-feed/comment/__tests__/CreateReply.test.js +127 -0
- package/src/elements/content-sidebar/activity-feed/comment/__tests__/Replies.test.js +219 -0
- package/src/elements/content-sidebar/activity-feed/comment/__tests__/RepliesToggle.test.js +82 -0
- package/src/elements/content-sidebar/activity-feed/comment/__tests__/__snapshots__/Comment.test.js.snap +18 -4
- package/src/elements/content-sidebar/activity-feed/comment/messages.js +20 -0
- package/src/elements/content-sidebar/activity-feed/comment-form/CommentForm.js +3 -3
- package/src/elements/content-sidebar/activity-feed/comment-form/CommentForm.scss +1 -1
- package/src/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.scss +1 -1
- package/src/elements/content-sidebar/activity-feed/common/activity-message/messages.js +2 -2
- package/src/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.scss +1 -1
- package/src/elements/content-sidebar/activity-feed/task-form/TaskForm.js +1 -0
- package/src/elements/content-sidebar/activity-feed/task-new/AssigneeDetails.scss +1 -1
- package/src/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.js +11 -7
- package/src/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.scss +1 -5
- package/src/elements/content-sidebar/activity-feed/task-new/Task.js +1 -2
- package/src/elements/content-sidebar/activity-feed/task-new/Task.scss +1 -8
- package/src/elements/content-sidebar/activity-feed/task-new/__tests__/__snapshots__/Task.test.js.snap +1 -5
- package/src/elements/content-sidebar/messages.js +29 -4
- package/src/elements/content-sidebar/skills/keywords/__tests__/__snapshots__/EditableKeywords.test.js.snap +0 -6
- package/src/elements/content-sidebar/skills/timeline/Timeline.scss +1 -1
- package/src/elements/content-sidebar/skills/transcript/Transcript.scss +1 -1
- package/src/elements/content-sidebar/versions/VersionsGroup.scss +1 -1
- package/src/elements/content-sidebar/versions/VersionsItem.scss +3 -3
- package/src/elements/content-uploader/Footer.js +23 -3
- package/src/elements/content-uploader/Footer.scss +0 -1
- package/src/elements/content-uploader/ItemAction.js +6 -3
- package/src/elements/content-uploader/ItemRemove.js +18 -6
- package/src/elements/content-uploader/UploadInput.js +19 -9
- package/src/elements/content-uploader/__tests__/Footer.test.js +59 -0
- package/src/elements/content-uploader/__tests__/ItemAction.test.js +11 -1
- package/src/elements/content-uploader/__tests__/ItemRemove.test.js +22 -0
- package/src/elements/content-uploader/__tests__/__snapshots__/ItemAction.test.js.snap +36 -0
- package/src/elements/content-uploader/__tests__/__snapshots__/UploadInput.test.js.snap +4 -0
- package/src/features/advanced-content-insights/AdvancedContentInsightsToggle.scss +19 -0
- package/src/features/advanced-content-insights/AdvancedContentInsightsToggle.tsx +59 -0
- package/src/features/advanced-content-insights/__tests__/AdvancedContentInsightsToggle.test.tsx +33 -0
- package/src/features/advanced-content-insights/__tests__/__snapshots__/AdvancedContentInsightsToggle.test.tsx.snap +42 -0
- package/src/features/advanced-content-insights/messages.ts +22 -0
- package/src/features/classification/classificationColorsMap.js +1 -1
- package/src/features/collaborator-avatars/CollaboratorAvatarItem.js +11 -8
- package/src/features/collaborator-avatars/CollaboratorAvatars.scss +1 -1
- package/src/features/collaborator-avatars/CollaboratorList.js +3 -4
- package/src/features/collaborator-avatars/CollaboratorListItem.js +7 -13
- package/src/features/collaborator-avatars/CollaboratorListItem.scss +7 -3
- package/src/features/collaborator-avatars/__tests__/CollaboratorAvatarItem.test.js +6 -2
- package/src/features/collaborator-avatars/__tests__/__snapshots__/CollaboratorAvatarItem.test.js.snap +5 -12
- package/src/features/collaborator-avatars/__tests__/__snapshots__/CollaboratorList.test.js.snap +6 -8
- package/src/features/collaborator-avatars/__tests__/__snapshots__/CollaboratorListItem.test.js.snap +36 -40
- package/src/features/collapsible-sidebar/CollapsibleSidebar.js +5 -2
- package/src/features/collapsible-sidebar/CollapsibleSidebar.scss +4 -7
- package/src/features/collapsible-sidebar/CollapsibleSidebarLogo.js +15 -11
- package/src/features/collapsible-sidebar/__tests__/CollapsibleSidebar.test.js +1 -0
- package/src/features/collapsible-sidebar/__tests__/CollapsibleSidebarLogo.test.js +14 -0
- package/src/features/collapsible-sidebar/__tests__/__snapshots__/CollapsibleSidebar.test.js.snap +1 -1
- package/src/features/content-explorer/content-explorer/ContentExplorer.js +97 -20
- package/src/features/content-explorer/content-explorer/ContentExplorer.scss +67 -8
- package/src/features/content-explorer/content-explorer/ContentExplorerActionButtons.js +53 -13
- package/src/features/content-explorer/content-explorer/ContentExplorerFolderTreeBreadcrumbs.js +82 -0
- package/src/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js +22 -7
- package/src/features/content-explorer/content-explorer/ContentExplorerIncludeSubfolders.js +30 -0
- package/src/features/content-explorer/content-explorer/ContentExplorerSelectAll.js +34 -20
- package/src/features/content-explorer/content-explorer/__tests__/ContentExplorer.test.js +28 -0
- package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerActionButtons.test.js +96 -8
- package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerFolderTreeBreadcrumbs.test.js +91 -0
- package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerHeaderActions.test.js +8 -0
- package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerIncludeSubfolders.test.js +50 -0
- package/src/features/content-explorer/content-explorer/__tests__/__snapshots__/ContentExplorer.test.js.snap +4 -0
- package/src/features/content-explorer/content-explorer/constants.js +6 -0
- package/src/features/content-explorer/content-explorer-modal/ContentExplorerModal.js +13 -0
- package/src/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js +31 -0
- package/src/features/content-explorer/item-list/ItemList.js +17 -1
- package/src/features/content-explorer/item-list/ItemList.scss +1 -1
- package/src/features/content-explorer/item-list/ItemListButton.js +10 -2
- package/src/features/content-explorer/item-list/ItemListIcon.js +5 -33
- package/src/features/content-explorer/item-list/ItemListName.js +3 -2
- package/src/features/content-explorer/item-list/__tests__/ItemList.test.js +72 -0
- package/src/features/content-explorer/item-list/__tests__/ItemListButton.test.js +8 -0
- package/src/features/content-explorer/item-list/__tests__/ItemListIcon.test.js +24 -18
- package/src/features/content-explorer/item-list/__tests__/__snapshots__/ItemListIcon.test.js.snap +37 -24
- package/src/features/content-explorer/messages.js +41 -24
- package/src/features/content-explorer/prop-types.js +2 -2
- package/src/features/content-insights/_mixins.scss +1 -1
- package/src/features/content-insights/charts/bar/Bar.tsx +24 -3
- package/src/features/content-insights/charts/bar/BarChart.tsx +10 -3
- package/src/features/content-insights/charts/bar/__tests__/Bar.test.tsx +51 -0
- package/src/features/content-insights/charts/bar/__tests__/BarChart.test.tsx +7 -1
- package/src/features/invite-collaborators-modal/InviteCollaboratorsModal.scss +1 -1
- package/src/features/message-center/components/templates/common/styles/MessageFooter.scss +1 -1
- package/src/features/metadata-based-view/IconWithTooltip.js +4 -4
- package/src/features/metadata-based-view/MetadataBasedItemList.scss +1 -1
- package/src/features/metadata-based-view/__tests__/__snapshots__/IconWithTooltip.test.js.snap +3 -3
- package/src/features/metadata-instance-editor/CascadePolicy.scss +1 -1
- package/src/features/metadata-instance-editor/TemplateDropdown.js +4 -10
- package/src/features/metadata-instance-editor/TemplateDropdown.scss +2 -2
- package/src/features/metadata-instance-editor/__tests__/__snapshots__/TemplateDropdown.test.js.snap +28 -7
- package/src/features/metadata-instance-fields/EnumMetadataField.scss +2 -2
- package/src/features/metadata-instance-fields/MultiSelectMetadataField.scss +1 -1
- package/src/features/metadata-instance-fields/ReadOnlyMetadataField.scss +2 -2
- package/src/features/presence/PresenceAvatarList.scss +1 -1
- package/src/features/presence/PresenceCollaborator.scss +1 -1
- package/src/features/query-bar/styles/Condition.scss +2 -2
- package/src/features/quick-search/QuickSearchItem.js +4 -3
- package/src/features/shared-link-settings-modal/ExpirationSection.js +4 -0
- package/src/features/shared-link-settings-modal/SharedLinkSettingsModal.js +9 -5
- package/src/features/shared-link-settings-modal/SharedLinkSettingsModal.scss +3 -3
- package/src/features/shared-link-settings-modal/VanityNameSection.js +2 -2
- package/src/features/shared-link-settings-modal/__tests__/ExpirationSection.test.js +9 -0
- package/src/features/shared-link-settings-modal/__tests__/SharedLinkSettingsModal.test.js +9 -4
- package/src/features/unified-share-modal/InviteePermissionsMenu.js +1 -0
- package/src/features/unified-share-modal/SharedLinkAccessMenu.js +1 -0
- package/src/features/unified-share-modal/SharedLinkPermissionMenu.js +1 -0
- package/src/features/unified-share-modal/SharedLinkSection.js +30 -38
- package/src/features/unified-share-modal/UnifiedShareForm.js +38 -25
- package/src/features/unified-share-modal/UnifiedShareModal.js +9 -1
- package/src/features/unified-share-modal/UnifiedShareModal.scss +24 -13
- package/src/features/unified-share-modal/__tests__/SharedLinkSection.test.js +19 -3
- package/src/features/unified-share-modal/__tests__/UnifiedShareForm.test.js +10 -0
- package/src/features/unified-share-modal/__tests__/UnifiedShareModal.test.js +9 -0
- package/src/features/unified-share-modal/__tests__/__snapshots__/InviteePermissionsMenu.test.js.snap +16 -0
- package/src/features/unified-share-modal/__tests__/__snapshots__/SharedLinkAccessMenu.test.js.snap +6 -0
- package/src/features/unified-share-modal/__tests__/__snapshots__/SharedLinkPermissionMenu.test.js.snap +6 -0
- package/src/features/unified-share-modal/__tests__/__snapshots__/SharedLinkSection.test.js.snap +211 -313
- package/src/features/unified-share-modal/flowTypes.js +10 -2
- package/src/features/unified-share-modal/messages.js +17 -5
- package/src/features/virtualized-table/VirtualizedTable.scss +1 -1
- package/src/features/virtualized-table/__tests__/__snapshots__/BaseVirtualizedTable.test.js.snap +3 -0
- package/src/features/virtualized-table/__tests__/__snapshots__/DraggableVirtualizedTable.test.js.snap +3 -0
- package/src/features/virtualized-table/__tests__/__snapshots__/VirtualizedTable.test.js.snap +8 -0
- package/src/features/virtualized-table-renderers/_mixins.scss +1 -1
- package/src/icons/badges/MetadataDefaultBadge.js.flow +3 -3
- package/src/icons/badges/MetadataDefaultBadge.tsx +3 -3
- package/src/icons/badges/__tests__/__snapshots__/MetadataDefaultBadge.test.tsx.snap +2 -2
- package/src/icons/general/IconAnyTask.js.flow +2 -2
- package/src/icons/general/IconAnyTask.tsx +2 -2
- package/src/icons/general/IconEdit.js.flow +2 -1
- package/src/icons/general/IconEdit.tsx +2 -1
- package/src/icons/general/__tests__/__snapshots__/IconAnyTask.test.tsx.snap +1 -1
- package/src/icons/general/__tests__/__snapshots__/IconEdit.test.tsx.snap +2 -2
- package/src/icons/metadata-view/IconMetadataView.js.flow +2 -1
- package/src/icons/metadata-view/IconMetadataView.tsx +3 -1
- package/src/icons/metadata-view/__tests__/__snapshots__/IconMetadataView.test.tsx.snap +1 -1
- package/src/icons/two-toned/IconAnnotation.js.flow +27 -0
- package/src/icons/two-toned/IconAnnotation.tsx +26 -0
- package/src/icons/two-toned/_IconAnnotation.mixins.scss +9 -0
- package/src/icons/two-toned/__tests__/IconAnnotation.test.tsx +28 -0
- package/src/icons/two-toned/__tests__/__snapshots__/IconAnnotation.test.tsx.snap +28 -0
- package/src/styles/_deprecated.scss +1 -0
- package/src/styles/_inputs.scss +2 -3
- package/src/styles/colors.md +1 -1
- package/src/styles/common/_buttons.scss +2 -2
- package/src/styles/common/_forms.scss +2 -0
- package/src/styles/common/_links.scss +1 -1
- package/src/styles/constants/_colors.scss +1 -1
- package/src/styles/constants/_themes.scss +1 -1
- package/src/styles/typography.stories.scss +60 -0
- package/src/styles/typography.stories.tsx +70 -0
- package/src/styles/variables.js +2 -2
- package/src/styles/variables.json +2 -2
- package/src/styles/variables.ts +2 -2
- package/src/utils/__tests__/__snapshots__/createTheme.test.js.snap +4 -4
- package/src/utils/createTheme.js +2 -2
- package/es/elements/common/sub-header/Sort.scss +0 -8
- package/es/elements/content-sidebar/activity-feed/task-new/_mixins.scss +0 -10
- package/es/features/content-explorer/item-types.js +0 -6
- package/es/features/content-explorer/item-types.js.flow +0 -5
- package/es/features/content-explorer/item-types.js.map +0 -1
- package/src/components/inline-error/README.md +0 -10
- package/src/components/inline-notice/README.md +0 -57
- package/src/components/nav-sidebar/README.md +0 -57
- package/src/components/pill-cloud/README.md +0 -39
- package/src/components/time/README.md +0 -58
- package/src/elements/common/sub-header/Sort.scss +0 -8
- package/src/elements/content-sidebar/activity-feed/task-new/_mixins.scss +0 -10
- package/src/features/content-explorer/item-types.js +0 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/content-preview/ContentPreview.js"],"names":["React","classNames","uniqueid","throttle","cloneDeep","omit","getProp","flow","noop","setProp","Measure","withRouter","decode","makeResponsive","withNavRouter","Internationalize","AsyncLoad","TokenService","isInputElement","focus","getTypedFileId","withErrorBoundary","withLogger","PREVIEW_FIELDS_TO_FETCH","mark","withFeatureProvider","EVENT_JS_READY","ReloadNotification","API","PreviewHeader","PreviewMask","PreviewNavigation","withAnnotations","WithAnnotationsProps","withAnnotatorContext","WithAnnotatorContextProps","DEFAULT_HOSTNAME_API","DEFAULT_HOSTNAME_APP","DEFAULT_HOSTNAME_STATIC","DEFAULT_PREVIEW_VERSION","DEFAULT_LOCALE","DEFAULT_PATH_STATIC_PREVIEW","CLIENT_NAME_CONTENT_PREVIEW","ORIGIN_PREVIEW","ORIGIN_CONTENT_PREVIEW","ERROR_CODE_UNKNOWN","startAtTypes","page","InvalidIdError","Error","PREVIEW_LOAD_METRIC_EVENT","MARK_NAME_JS_READY","LoadableSidebar","loader","ContentPreview","props","createRef","canPrint","error","undefined","isLoading","isReloadNotificationVisible","isThumbnailSidebarOpen","rest","code","onError","setState","previewMetrics","logger","event_name","metrics","totalFetchFileTime","getTotalFileFetchTime","totalTime","value","file_info_time","onPreviewMetric","data","onLoad","collection","currentIndex","getFileIndex","filesToPrefetch","slice","previewTimeMetrics","loadData","totalPreviewMetrics","addFetchFileTimeToPreviewMetrics","time","focusPreview","preview","length","prefetch","handleCanPrint","annotatorState","activeAnnotationId","enableThumbnailsSidebar","fileOptions","onAnnotatorEvent","onAnnotator","previewExperiences","showAnnotationsControls","tokenOrTokenFunction","token","state","file","selectedVersion","startAt","isPreviewLibraryLoaded","fileId","getFileId","currentFileId","fileOpts","typedId","getReadTokens","id","previewOptions","container","header","headerElement","experiences","showAnnotations","canViewAnnotations","showDownload","canDownload","showLoading","showProgress","skipServerUpdate","useHotkeys","Preview","global","Box","addListener","onPreviewLoad","onPreviewError","updateFileCache","show","Object","keys","stagedFile","initialState","getCurrentViewer","resize","fetchFileEndTime","performance","now","currentFile","isExistingFile","isWatermarked","file_version","sha1","fileError","errorCode","message","getPreview","viewer","isLoaded","isDestroyed","newIndex","navigateToIndex","onDownload","download","print","getViewer","isPreviewing","CLASS_NAVIGATION_VISIBILITY","clearTimeout","mouseMoveTimeoutID","previewContainer","classList","remove","allowNavigationArrows","add","setTimeout","event","consumed","key","target","onKeydown","nativeEvent","navigateLeft","navigateRight","preventDefault","stopPropagation","version","additionalVersionInfo","onVersionChange","updateVersionToCurrent","location","annotationFileVersionId","currentFileVersionId","currentPreviewFileVersionId","unit","type","emit","apiHost","cache","language","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","api","clientName","prevFileIdProp","onReadyMetric","endMarkName","destroy","destroyPreview","shouldReset","onPreviewDestroy","removeAllListeners","loadStylesheet","loadScript","fetchFile","prevProps","prevState","prevPreviewExperiences","prevToken","hasFileIdChanged","hasTokenChanged","haveExperiencesChanged","shouldLoadPreview","loadPreview","updatePreviewToken","updateExperiences","shouldReload","updateToken","prevFile","prevSelectedVersion","prevSelectedVersionId","selectedVersionId","prevFileVersionId","fileVersionId","isPreviousCurrent","isSelectedCurrent","asset","staticHost","staticPath","previewLibraryVersion","path","suffix","endsWith","document","head","url","getBasePath","querySelector","link","createElement","rel","href","appendChild","previewScript","script","src","addEventListener","autoFocus","getInnerRef","activeElement","files","typedIds","map","cacheTokens","forEach","refreshCache","fetchFileStartTime","Math","round","rendering","conversion","preload","totalConversion","totalRendering","totalPreload","total","isFileDownloadable","isFileAnnotatable","hasViewAllPermissions","hasViewSelfPermissions","canAnnotate","successCallback","errorCallback","fetchOptions","getFileAPI","getFile","fetchFileSuccessCallback","fetchFileErrorCallback","fields","findIndex","item","index","onNavigate","fileOrId","contentSidebar","current","refresh","messages","className","contentSidebarProps","contentOpenWithProps","hasHeader","history","isLarge","isVeryLarge","logoUrl","onClose","measureRef","styleClassName","currentExtension","currentVersionId","onHeaderClose","onKeyDown","onMouseMove","containerRef","onResize","previewRef","getCache","handleAnnotationSelect","closeReloadNotification","loadFileFromStage","PureComponent","appHost","ContentPreviewComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAMA,OAAO,6BAAP;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,OAAOC,SAAP,MAAsB,kBAAtB;AACA,OAAOC,IAAP,MAAiB,aAAjB;AACA,OAAOC,OAAP,MAAoB,YAApB;AACA,OAAOC,IAAP,MAAiB,aAAjB;AACA,OAAOC,IAAP,MAAiB,aAAjB;AACA,OAAOC,OAAP,MAAoB,YAApB;AACA,OAAOC,OAAP,MAAoB,eAApB;AACA,SAASC,UAAT,QAA2B,kBAA3B;AAEA,SAASC,MAAT,QAAuB,kBAAvB;AACA,OAAOC,cAAP,MAA2B,0BAA3B;AACA,SAASC,aAAT,QAA8B,sBAA9B;AACA,OAAOC,gBAAP,MAA6B,4BAA7B;AACA,OAAOC,SAAP,MAAsB,sBAAtB;AACA,OAAOC,YAAP,MAAyB,0BAAzB;AACA,SAASC,cAAT,EAAyBC,KAAzB,QAAsC,iBAAtC;AACA,SAASC,cAAT,QAA+B,kBAA/B;AACA,SAASC,iBAAT,QAAkC,0BAAlC;AACA,SAASC,UAAT,QAA2B,kBAA3B;AACA,SAASC,uBAAT,QAAwC,oBAAxC;AACA,SAASC,IAAT,QAAqB,yBAArB;AACA,SAASC,mBAAT,QAAoC,4BAApC;AACA,SAASC,cAAT,QAA+B,4BAA/B;AACA,OAAOC,kBAAP,MAA+B,sBAA/B;AACA,OAAOC,GAAP,MAAgB,WAAhB;AACA,OAAOC,aAAP,MAA0B,kBAA1B;AACA,OAAOC,WAAP,MAAwB,eAAxB;AACA,OAAOC,iBAAP,MAA8B,qBAA9B;AACA,SACIC,eADJ,EAEIC,oBAFJ,EAGIC,oBAHJ,EAIIC,yBAJJ,QAKO,6BALP;AAMA,SACIC,oBADJ,EAEIC,oBAFJ,EAGIC,uBAHJ,EAIIC,uBAJJ,EAKIC,cALJ,EAMIC,2BANJ,EAOIC,2BAPJ,EAQIC,cARJ,EASIC,sBATJ,EAUIC,kBAVJ,QAWO,iBAXP;AAsBA,OAAO,sBAAP;AACA,OAAO,qBAAP;AACA,OAAO,uBAAP;AAuGA,IAAMC,YAAY,GAAG;AACjBC,EAAAA,IAAI,EAAE;AADW,CAArB;AAGA,IAAMC,cAAc,GAAG,IAAIC,KAAJ,CAAU,yBAAV,CAAvB;AACA,IAAMC,yBAAyB,GAAG,MAAlC;AACA,IAAMC,kBAAkB,aAAMP,sBAAN,cAAgClB,cAAhC,CAAxB;AAEAF,IAAI,CAAC2B,kBAAD,CAAJ;AAEA,IAAMC,eAAe,GAAGpC,SAAS,CAAC;AAC9BqC,EAAAA,MAAM,EAAE;AAAA,WAAM;AAAO;AAA+D,wBAAtE,CAAN;AAAA;AADsB,CAAD,CAAjC;;IAIMC,c;;;;;AAWF;;AA0DA;;;;;AAKA,0BAAYC,KAAZ,EAA0B;AAAA;;AAAA;;AACtB,wFAAMA,KAAN;;AADsB,qEA9DkCvD,KAAK,CAACwD,SAAN,EA8DlC;;AAAA,mEAlDJ;AAClBC,MAAAA,QAAQ,EAAE,KADQ;AAElBC,MAAAA,KAAK,EAAEC,SAFW;AAGlBC,MAAAA,SAAS,EAAE,IAHO;AAIlBC,MAAAA,2BAA2B,EAAE,KAJX;AAKlBC,MAAAA,sBAAsB,EAAE;AALN,KAkDI;;AAAA,qEA+TT,gBAAmD;AAAA,UAAhDJ,KAAgD,QAAhDA,KAAgD;AAAA,UAAtCK,IAAsC;;AAAA,wBAC1BL,KAD0B,CACxDM,IADwD;AAAA,UACxDA,IADwD,4BACjDnB,kBADiD;AAAA,UAExDoB,OAFwD,GAE5C,MAAKV,KAFuC,CAExDU,OAFwD,EAIhE;;AACA,YAAKC,QAAL,CAAc;AAAEN,QAAAA,SAAS,EAAE,KAAb;AAAoBE,QAAAA,sBAAsB,EAAE;AAA5C,OAAd;;AAEAG,MAAAA,OAAO,CACHP,KADG,EAEHM,IAFG,oBAIID,IAJJ;AAKCL,QAAAA,KAAK,EAALA;AALD,UAOHf,cAPG,CAAP;AASH,KA/UyB;;AAAA,sEAuVR,UAACwB,cAAD,EAA0C;AAAA,UAChDC,MADgD,GACrC,MAAKb,KADgC,CAChDa,MADgD;AAAA,UAEhDC,UAFgD,GAEjCF,cAFiC,CAEhDE,UAFgD;;AAGxD,UAAIC,OAAO,qBACJH,cADI,CAAX,CAHwD,CAOxD;AACA;;;AACA,UAAIE,UAAU,KAAKnB,yBAAnB,EAA8C;AAC1C,YAAMqB,kBAAkB,GAAG,MAAKC,qBAAL,EAA3B;;AACA,YAAMC,SAAS,GAAG,CAACN,cAAc,CAACO,KAAf,IAAwB,CAAzB,IAA8BH,kBAAhD,CAF0C,CAI1C;;AACA,YAAI,CAACE,SAAL,EAAgB;AACZ;AACH;;AAEDH,QAAAA,OAAO,qBACAH,cADA;AAEHQ,UAAAA,cAAc,EAAEJ,kBAFb;AAGHG,UAAAA,KAAK,EAAED;AAHJ,UAAP;AAKH;;AAEDL,MAAAA,MAAM,CAACQ,eAAP,CAAuBN,OAAvB;AACH,KAjXyB;;AAAA,oEA6ZV,UAACO,IAAD,EAAwB;AAAA,wBACE,MAAKtB,KADP;AAAA,UAC5BuB,MAD4B,eAC5BA,MAD4B;AAAA,UACpBC,UADoB,eACpBA,UADoB;;AAEpC,UAAMC,YAAY,GAAG,MAAKC,YAAL,EAArB;;AACA,UAAMC,eAAe,GAAGH,UAAU,CAACI,KAAX,CAAiBH,YAAY,GAAG,CAAhC,EAAmCA,YAAY,GAAG,CAAlD,CAAxB;AACA,UAAMI,kBAAkB,GAAG9E,OAAO,CAACuE,IAAD,EAAO,cAAP,CAAlC;AACA,UAAIQ,QAAQ,GAAGR,IAAf;;AAEA,UAAIO,kBAAJ,EAAwB;AACpB,YAAME,mBAAmB,GAAG,MAAKC,gCAAL,CAAsCH,kBAAtC,CAA5B;;AACAC,QAAAA,QAAQ,qBACDA,QADC;AAEJf,UAAAA,OAAO,oBACAe,QAAQ,CAACf,OADT;AAEHkB,YAAAA,IAAI,EAAEF;AAFH;AAFH,UAAR;AAOH;;AAEDR,MAAAA,MAAM,CAACO,QAAD,CAAN;;AAEA,YAAKnB,QAAL,CAAc;AAAEN,QAAAA,SAAS,EAAE;AAAb,OAAd;;AACA,YAAK6B,YAAL;;AAEA,UAAI,MAAKC,OAAL,IAAgBR,eAAe,CAACS,MAApC,EAA4C;AACxC,cAAKC,QAAL,CAAcV,eAAd;AACH;;AAED,YAAKW,cAAL;AACH,KAzbyB;;AAAA;AAAA;AAAA;AAAA;AAAA,4BA2eZ;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,6BAWC,MAAKtC,KAXN,uCAENuC,cAFM;AAAA,yEAEmC,EAFnC;AAEYC,cAAAA,kBAFZ,yBAEYA,kBAFZ,EAGNC,uBAHM,gBAGNA,uBAHM,EAINC,WAJM,gBAINA,WAJM,EAKNC,gBALM,gBAKNA,gBALM,EAMNC,WANM,gBAMNA,WANM,EAONC,kBAPM,gBAONA,kBAPM,EAQNC,uBARM,gBAQNA,uBARM,EASCC,oBATD,gBASNC,KATM,EAUHxC,IAVG;AAAA,4BAYwC,MAAKyC,KAZ7C,EAYFC,IAZE,eAYFA,IAZE,EAYIC,eAZJ,eAYIA,eAZJ,EAYqBC,OAZrB,eAYqBA,OAZrB;;AAAA,oBAcN,CAAC,MAAKC,sBAAL,EAAD,IAAkC,CAACH,IAAnC,IAA2C,CAACH,oBAdtC;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAkBJO,cAAAA,MAlBI,GAkBK,MAAKC,SAAL,CAAeL,IAAf,CAlBL;;AAAA,oBAoBNI,MAAM,KAAK,MAAKL,KAAL,CAAWO,aApBhB;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAwBJC,cAAAA,QAxBI,qBAwBYf,WAxBZ;;AAyBJM,cAAAA,KAzBI,GAyBI,SAARA,KAAQ,CAAAU,OAAO;AAAA,uBAAIhG,YAAY,CAACiG,aAAb,CAA2BD,OAA3B,EAAoCX,oBAApC,CAAJ;AAAA,eAzBX;;AA2BV,kBAAII,eAAJ,EAAqB;AACjBjG,gBAAAA,OAAO,CAACuG,QAAD,EAAW,CAACH,MAAD,EAAS,eAAT,CAAX,EAAsCH,eAAe,CAACS,EAAtD,CAAP;AACA1G,gBAAAA,OAAO,CAACuG,QAAD,EAAW,CAACH,MAAD,EAAS,sBAAT,CAAX,EAA6CvG,OAAO,CAACmG,IAAD,EAAO,iBAAP,CAApD,CAAP;AACH;;AAED,kBAAIV,kBAAJ,EAAwB;AACpBtF,gBAAAA,OAAO,CAACuG,QAAD,EAAW,CAACH,MAAD,EAAS,aAAT,EAAwB,UAAxB,CAAX,EAAgDd,kBAAhD,CAAP;AACH;;AAED,kBAAIY,OAAJ,EAAa;AACTlG,gBAAAA,OAAO,CAACuG,QAAD,EAAW,CAACH,MAAD,EAAS,SAAT,CAAX,EAAgCF,OAAhC,CAAP;AACH;;AAEKS,cAAAA,cAxCI,GAwCa;AACnBC,gBAAAA,SAAS,aAAM,MAAKF,EAAX,mBADU;AAEnBnB,gBAAAA,uBAAuB,EAAvBA,uBAFmB;AAGnBC,gBAAAA,WAAW,EAAEe,QAHM;AAInBM,gBAAAA,MAAM,EAAE,MAJW;AAKnBC,gBAAAA,aAAa,aAAM,MAAKJ,EAAX,yBALM;AAMnBK,gBAAAA,WAAW,EAAEpB,kBANM;AAOnBqB,gBAAAA,eAAe,EAAE,MAAKC,kBAAL,EAPE;AAQnBrB,gBAAAA,uBAAuB,EAAvBA,uBARmB;AASnBsB,gBAAAA,YAAY,EAAE,MAAKC,WAAL,EATK;AAUnBC,gBAAAA,WAAW,EAAE,KAVM;AAWnBC,gBAAAA,YAAY,EAAE,KAXK;AAYnBC,gBAAAA,gBAAgB,EAAE,IAZC;AAanBC,gBAAAA,UAAU,EAAE;AAbO,eAxCb;AAuDFC,cAAAA,OAvDE,GAuDUC,MAAM,CAACC,GAvDjB,CAuDFF,OAvDE;AAwDV,oBAAKvC,OAAL,GAAe,IAAIuC,OAAJ,EAAf;;AACA,oBAAKvC,OAAL,CAAa0C,WAAb,CAAyB,MAAzB,EAAiC,MAAKC,aAAtC;;AACA,oBAAK3C,OAAL,CAAa0C,WAAb,CAAyB,eAAzB,EAA0C,MAAKE,cAA/C;;AACA,oBAAK5C,OAAL,CAAa0C,WAAb,CAAyB,gBAAzB,EAA2C,MAAKxD,eAAhD;;AACA,oBAAKc,OAAL,CAAa0C,WAAb,CAAyB,gBAAzB,EAA2C;AAAA,uBAAM,MAAKlE,QAAL,CAAc;AAAEJ,kBAAAA,sBAAsB,EAAE;AAA1B,iBAAd,CAAN;AAAA,eAA3C;;AACA,oBAAK4B,OAAL,CAAa0C,WAAb,CAAyB,iBAAzB,EAA4C;AAAA,uBAAM,MAAKlE,QAAL,CAAc;AAAEJ,kBAAAA,sBAAsB,EAAE;AAA1B,iBAAd,CAAN;AAAA,eAA5C;;AAEA,kBAAIuC,uBAAJ,EAA6B;AACzB,sBAAKX,OAAL,CAAa0C,WAAb,CAAyB,kBAAzB,EAA6CjC,WAA7C;AACH;;AAED,oBAAKT,OAAL,CAAa6C,eAAb,CAA6B,CAAC9B,IAAD,CAA7B;;AACA,oBAAKf,OAAL,CAAa8C,IAAb,CAAkB/B,IAAI,CAACU,EAAvB,EAA2BZ,KAA3B,oBACOa,cADP,MAEO/G,IAAI,CAAC0D,IAAD,EAAO0E,MAAM,CAACC,IAAP,CAAYtB,cAAZ,CAAP,CAFX;;AApEU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KA3eY;;AAAA,wEA0jBN,YAAM;AACtB,UAAI,MAAKuB,UAAT,EAAqB;AACjB,cAAKzE,QAAL,mBAAmB,MAAK0E,YAAxB;AAAsCnC,UAAAA,IAAI,EAAE,MAAKkC;AAAjD,YAA+D,YAAM;AACjE,gBAAKA,UAAL,GAAkBhF,SAAlB;AACH,SAFD;AAGH;AACJ,KAhkByB;;AAAA,8EAukBA,YAAM;AAC5B,YAAKO,QAAL,CAAc;AAAEL,QAAAA,2BAA2B,EAAE;AAA/B,OAAd;AACH,KAzkByB;;AAAA,+DAglBf,YAAY;AACnB,UAAI,MAAK6B,OAAL,IAAgB,MAAKA,OAAL,CAAamD,gBAAb,EAApB,EAAqD;AACjD,cAAKnD,OAAL,CAAaoD,MAAb;AACH;AACJ,KAplByB;;AAAA,+EA4lBC,UAACrC,IAAD,EAAyB;AAChD,YAAKsC,gBAAL,GAAwBC,WAAW,CAACC,GAAZ,EAAxB;AADgD,UAGlCC,WAHkC,GAGX,MAAK1C,KAHM,CAGxCC,IAHwC;AAIhD,UAAM0C,cAAc,GAAGD,WAAW,GAAGA,WAAW,CAAC/B,EAAZ,KAAmBV,IAAI,CAACU,EAA3B,GAAgC,KAAlE;AACA,UAAMiC,aAAa,GAAG9I,OAAO,CAACmG,IAAD,EAAO,+BAAP,EAAwC,KAAxC,CAA7B,CALgD,CAOhD;AACA;;AACA,UAAI2C,aAAa,IAAI,CAACD,cAAtB,EAAsC;AAClC,cAAKjF,QAAL,mBAAmB,MAAK0E,YAAxB;AAAsCnC,UAAAA,IAAI,EAAJA;AAAtC,YADkC,CAElC;;AACH,OAHD,MAGO,IAAIyC,WAAW,CAACG,YAAZ,CAAyBC,IAAzB,KAAkC7C,IAAI,CAAC4C,YAAL,CAAkBC,IAAxD,EAA8D;AACjE;AACA;AACA,cAAKX,UAAL,GAAkBlC,IAAlB;;AACA,cAAKvC,QAAL,mBACO,MAAK0E,YADZ;AAEI/E,UAAAA,2BAA2B,EAAE;AAFjC;AAIH;AACJ,KAjnByB;;AAAA,6EAwnBD,UAAC0F,SAAD,EAA8BvF,IAA9B,EAAqD;AAAA,UAClEC,OADkE,GACtD,MAAKV,KADiD,CAClEU,OADkE;AAE1E,UAAMuF,SAAS,GAAGD,SAAS,CAACvF,IAAV,IAAkBA,IAApC;AACA,UAAMN,KAAK,GAAG;AACVM,QAAAA,IAAI,EAAEwF,SADI;AAEVC,QAAAA,OAAO,EAAEF,SAAS,CAACE;AAFT,OAAd;;AAIA,YAAKvF,QAAL,CAAc;AAAER,QAAAA,KAAK,EAALA,KAAF;AAAS+C,QAAAA,IAAI,EAAE9C,SAAf;AAA0BC,QAAAA,SAAS,EAAE;AAArC,OAAd;;AACAK,MAAAA,OAAO,CAACsF,SAAD,EAAYC,SAAZ,EAAuB;AAC1B9F,QAAAA,KAAK,EAAE6F;AADmB,OAAvB,CAAP;AAGH,KAnoByB;;AAAA,iEA6qBb,YAAW;AAAA,UACZ9C,IADY,GACI,MAAKD,KADT,CACZC,IADY;;AAEpB,UAAI,CAAC,MAAKf,OAAN,IAAiB,CAACe,IAAtB,EAA4B;AACxB,eAAO,IAAP;AACH;;AAED,aAAO,MAAKf,OAAZ;AACH,KAprByB;;AAAA,gEA4rBd,YAAW;AACnB,UAAMA,OAAO,GAAG,MAAKgE,UAAL,EAAhB;;AACA,UAAMC,MAAM,GAAGjE,OAAO,GAAGA,OAAO,CAACmD,gBAAR,EAAH,GAAgC,IAAtD;AACA,aAAOc,MAAM,IAAIA,MAAM,CAACC,QAAP,EAAV,IAA+B,CAACD,MAAM,CAACE,WAAP,EAAhC,GAAuDF,MAAvD,GAAgE,IAAvE;AACH,KAhsByB;;AAAA,mEAyvBX,YAAM;AACjB,UAAM3E,YAAY,GAAG,MAAKC,YAAL,EAArB;;AACA,UAAM6E,QAAQ,GAAG9E,YAAY,KAAK,CAAjB,GAAqB,CAArB,GAAyBA,YAAY,GAAG,CAAzD;;AACA,UAAI8E,QAAQ,KAAK9E,YAAjB,EAA+B;AAC3B,cAAK+E,eAAL,CAAqBD,QAArB;AACH;AACJ,KA/vByB;;AAAA,oEAuwBV,YAAM;AAAA,UACV/E,UADU,GACY,MAAKxB,KADjB,CACVwB,UADU;;AAElB,UAAMC,YAAY,GAAG,MAAKC,YAAL,EAArB;;AACA,UAAM6E,QAAQ,GAAG9E,YAAY,KAAKD,UAAU,CAACY,MAAX,GAAoB,CAArC,GAAyCZ,UAAU,CAACY,MAAX,GAAoB,CAA7D,GAAiEX,YAAY,GAAG,CAAjG;;AACA,UAAI8E,QAAQ,KAAK9E,YAAjB,EAA+B;AAC3B,cAAK+E,eAAL,CAAqBD,QAArB;AACH;AACJ,KA9wByB;;AAAA,+DAsxBf,YAAM;AAAA,UACLE,UADK,GACiB,MAAKzG,KADtB,CACLyG,UADK;AAAA,UAELvD,IAFK,GAEW,MAAKD,KAFhB,CAELC,IAFK;;AAGb,UAAI,MAAKf,OAAT,EAAkB;AACd,cAAKA,OAAL,CAAauE,QAAb;;AACAD,QAAAA,UAAU,CAAC5J,SAAS,CAACqG,IAAD,CAAV,CAAV;AACH;AACJ,KA7xByB;;AAAA,4DAqyBlB,YAAM;AACV,UAAI,MAAKf,OAAT,EAAkB;AACd,cAAKA,OAAL,CAAawE,KAAb;AACH;AACJ,KAzyByB;;AAAA,kEAizBZ/J,QAAQ,CAAC,YAAM;AACzB,UAAMwJ,MAAM,GAAG,MAAKQ,SAAL,EAAf;;AACA,UAAMC,YAAY,GAAG,CAAC,CAACT,MAAvB;AACA,UAAMU,2BAA2B,GAAG,qBAApC;AAEAC,MAAAA,YAAY,CAAC,MAAKC,kBAAN,CAAZ;;AAEA,UAAI,CAAC,MAAKC,gBAAV,EAA4B;AACxB;AACH,OATwB,CAWzB;;;AACA,YAAKA,gBAAL,CAAsBC,SAAtB,CAAgCC,MAAhC,CAAuCL,2BAAvC,EAZyB,CAczB;AACA;AACA;AACA;;;AACA,UAAI,MAAKG,gBAAL,KAA0B,CAACJ,YAAD,IAAiBT,MAAM,CAACgB,qBAAP,EAA3C,CAAJ,EAAgF;AAC5E,cAAKH,gBAAL,CAAsBC,SAAtB,CAAgCG,GAAhC,CAAoCP,2BAApC;AACH;;AAED,YAAKE,kBAAL,GAA0BM,UAAU,CAAC,YAAM;AACvC,YAAI,MAAKL,gBAAT,EAA2B;AACvB,gBAAKA,gBAAL,CAAsBC,SAAtB,CAAgCC,MAAhC,CAAuCL,2BAAvC;AACH;AACJ,OAJmC,EAIjC,IAJiC,CAApC;AAKH,KA3BqB,EA2BnB,IA3BmB,CAjzBI;;AAAA,gEAm1Bd,UAACS,KAAD,EAAgD;AAAA,UAChD9C,UADgD,GAC1B,MAAKzE,KADqB,CAChDyE,UADgD;;AAExD,UAAI,CAACA,UAAL,EAAiB;AACb;AACH;;AAED,UAAI+C,QAAQ,GAAG,KAAf;AACA,UAAMC,GAAG,GAAGpK,MAAM,CAACkK,KAAD,CAAlB;;AACA,UAAMnB,MAAM,GAAG,MAAKQ,SAAL,EAAf,CARwD,CAUxD;AACA;;;AACA,UAAI,CAACa,GAAD,IAAQ,CAACrB,MAAT,IAAmBzI,cAAc,CAAC4J,KAAK,CAACG,MAAP,CAArC,EAAqD;AACjD;AACH;;AAED,UAAI,OAAOtB,MAAM,CAACuB,SAAd,KAA4B,UAAhC,EAA4C;AACxCH,QAAAA,QAAQ,GAAG,CAAC,CAACpB,MAAM,CAACuB,SAAP,CAAiBF,GAAjB,EAAsBF,KAAK,CAACK,WAA5B,CAAb;AACH;;AAED,UAAI,CAACJ,QAAL,EAAe;AACX,gBAAQC,GAAR;AACI,eAAK,WAAL;AACI,kBAAKI,YAAL;;AACAL,YAAAA,QAAQ,GAAG,IAAX;AACA;;AACJ,eAAK,YAAL;AACI,kBAAKM,aAAL;;AACAN,YAAAA,QAAQ,GAAG,IAAX;AACA;;AACJ,kBATJ,CAUI;;AAVJ;AAYH;;AAED,UAAIA,QAAJ,EAAc;AACVD,QAAAA,KAAK,CAACQ,cAAN;AACAR,QAAAA,KAAK,CAACS,eAAN;AACH;AACJ,KA13ByB;;AAAA,sEAk4BR,UAACC,OAAD,EAAuF;AAAA,UAA5DC,qBAA4D,uEAAb,EAAa;AAAA,UAC7FC,eAD6F,GAClE,MAAKnI,KAD6D,CAC7FmI,eAD6F;AAErG,YAAKC,sBAAL,GAA8BF,qBAAqB,CAACE,sBAApD;AAEAD,MAAAA,eAAe,CAACF,OAAD,EAAUC,qBAAV,CAAf;;AACA,YAAKvH,QAAL,CAAc;AACVwC,QAAAA,eAAe,EAAE8E;AADP,OAAd;AAGH,KA14ByB;;AAAA,6EA44BD,iBAA8C;AAAA,UAA3CnC,YAA2C,SAA3CA,YAA2C;AAAA,UAA7BlC,EAA6B,SAA7BA,EAA6B;AAAA,UAAzB8D,MAAyB,SAAzBA,MAAyB;AAAA,6BACzCA,MADyC,CAC3DW,QAD2D;AAAA,UAC3DA,QAD2D,iCAChD,EADgD;AAAA,yBAEjC,MAAKpF,KAF4B;AAAA,UAE3DC,IAF2D,gBAE3DA,IAF2D;AAAA,UAErDC,eAFqD,gBAErDA,eAFqD;AAGnE,UAAMmF,uBAAuB,GAAGvL,OAAO,CAAC+I,YAAD,EAAe,IAAf,CAAvC;AACA,UAAMyC,oBAAoB,GAAGxL,OAAO,CAACmG,IAAD,EAAO,iBAAP,CAApC;AACA,UAAMsF,2BAA2B,GAAGzL,OAAO,CAACoG,eAAD,EAAkB,IAAlB,EAAwBoF,oBAAxB,CAA3C;AACA,UAAME,IAAI,GAAGlJ,YAAY,CAAC8I,QAAQ,CAACK,IAAV,CAAzB;;AACA,UAAMtC,MAAM,GAAG,MAAKQ,SAAL,EAAf;;AAEA,UAAI6B,IAAI,IAAIH,uBAAR,IAAmCA,uBAAuB,KAAKE,2BAAnE,EAAgG;AAC5F,cAAK7H,QAAL,CAAc;AACVyC,UAAAA,OAAO,EAAE;AACLqF,YAAAA,IAAI,EAAJA,IADK;AAELtH,YAAAA,KAAK,EAAEkH,QAAQ,CAAClH;AAFX;AADC,SAAd;AAMH;;AAED,UAAIiF,MAAJ,EAAY;AACRA,QAAAA,MAAM,CAACuC,IAAP,CAAY,oBAAZ,EAAkC;AAAE/E,UAAAA,EAAE,EAAFA,EAAF;AAAM8D,UAAAA,MAAM,EAANA;AAAN,SAAlC;AACH;AACJ,KAj6ByB;;AAAA,mEAw6BX,UAAC5D,SAAD,EAAgC;AAC3C,YAAKmD,gBAAL,GAAwBnD,SAAxB;AACH,KA16ByB;;AAAA,QAGlB8E,OAHkB,GAYlB5I,KAZkB,CAGlB4I,OAHkB;AAAA,QAIlBC,KAJkB,GAYlB7I,KAZkB,CAIlB6I,KAJkB;AAAA,QAKlBvF,OALkB,GAYlBtD,KAZkB,CAKlBsD,MALkB;AAAA,QAMlBwF,QANkB,GAYlB9I,KAZkB,CAMlB8I,QANkB;AAAA,QAOlBC,kBAPkB,GAYlB/I,KAZkB,CAOlB+I,kBAPkB;AAAA,QAQlBC,mBARkB,GAYlBhJ,KAZkB,CAQlBgJ,mBARkB;AAAA,QASlBC,UATkB,GAYlBjJ,KAZkB,CASlBiJ,UATkB;AAAA,QAUlBC,kBAVkB,GAYlBlJ,KAZkB,CAUlBkJ,kBAVkB;AAAA,QAWlBlG,MAXkB,GAYlBhD,KAZkB,CAWlBgD,KAXkB;AActB,UAAKY,EAAL,GAAUjH,QAAQ,CAAC,OAAD,CAAlB;AACA,UAAKwM,GAAL,GAAW,IAAI9K,GAAJ,CAAQ;AACfuK,MAAAA,OAAO,EAAPA,OADe;AAEfC,MAAAA,KAAK,EAALA,KAFe;AAGfO,MAAAA,UAAU,EAAEjK,2BAHG;AAIf2J,MAAAA,QAAQ,EAARA,QAJe;AAKfC,MAAAA,kBAAkB,EAAlBA,kBALe;AAMfC,MAAAA,mBAAmB,EAAnBA,mBANe;AAOfC,MAAAA,UAAU,EAAVA,UAPe;AAQfC,MAAAA,kBAAkB,EAAlBA,kBARe;AASflG,MAAAA,KAAK,EAALA;AATe,KAAR,CAAX;AAWA,UAAKC,KAAL,qBACO,MAAKoC,YADZ;AAEI7B,MAAAA,aAAa,EAAEF,OAFnB;AAGI;AACA+F,MAAAA,cAAc,EAAE/F;AAJpB;AA1BsB,QAgCdzC,OAhCc,GAgCHb,KAhCG,CAgCda,MAhCc;;AAiCtBA,IAAAA,OAAM,CAACyI,aAAP,CAAqB;AACjBC,MAAAA,WAAW,EAAE3J;AADI,KAArB;;AAjCsB;AAoCzB;AAED;;;;;;;;;2CAK6B;AACzB;AACA,WAAKuJ,GAAL,CAASK,OAAT,CAAiB,KAAjB;AACA,WAAKC,cAAL;AACH;AAED;;;;;;qCAG4C;AAAA,UAA7BC,WAA6B,uEAAN,IAAM;AAAA,UAChCC,gBADgC,GACX,KAAK3J,KADM,CAChC2J,gBADgC;;AAExC,UAAI,KAAKxH,OAAT,EAAkB;AACd,aAAKA,OAAL,CAAaqH,OAAb;AACA,aAAKrH,OAAL,CAAayH,kBAAb;AACA,aAAKzH,OAAL,GAAe/B,SAAf;AAEAuJ,QAAAA,gBAAgB,CAACD,WAAD,CAAhB;AACH;AACJ;AAED;;;;;;;;;iCAMmB;AACf,WAAKP,GAAL,CAASK,OAAT,CAAiB,IAAjB;AACH;AAED;;;;;;;;wCAK0B;AACtB,WAAKK,cAAL;AACA,WAAKC,UAAL;AAEA,WAAKC,SAAL,CAAe,KAAK9G,KAAL,CAAWO,aAA1B;AACA,WAAKtB,YAAL;AACH;;;;AAeD;;;;;uCAKmB8H,S,EAAkBC,S,EAAwB;AAAA,yBACnB,KAAKjK,KADc;AAAA,UACjD6C,kBADiD,gBACjDA,kBADiD;AAAA,UAC7BG,KAD6B,gBAC7BA,KAD6B;AAAA,UAE7BkH,sBAF6B,GAEgBF,SAFhB,CAEjDnH,kBAFiD;AAAA,UAEEsH,SAFF,GAEgBH,SAFhB,CAELhH,KAFK;AAAA,UAGjDQ,aAHiD,GAG/B,KAAKP,KAH0B,CAGjDO,aAHiD;AAIzD,UAAM4G,gBAAgB,GAAGH,SAAS,CAACzG,aAAV,KAA4BA,aAArD;AACA,UAAM6G,eAAe,GAAGF,SAAS,KAAKnH,KAAtC;AACA,UAAMsH,sBAAsB,GAAGJ,sBAAsB,KAAKrH,kBAA1D;;AAEA,UAAIuH,gBAAJ,EAAsB;AAClB,aAAKX,cAAL;AACA,aAAK9I,QAAL,CAAc;AAAEN,UAAAA,SAAS,EAAE,IAAb;AAAmB8C,UAAAA,eAAe,EAAE/C;AAApC,SAAd;AACA,aAAK2J,SAAL,CAAevG,aAAf;AACH,OAJD,MAIO,IAAI,KAAK+G,iBAAL,CAAuBN,SAAvB,CAAJ,EAAuC;AAC1C,aAAKR,cAAL,CAAoB,KAApB;AACA,aAAK9I,QAAL,CAAc;AAAEN,UAAAA,SAAS,EAAE;AAAb,SAAd;AACA,aAAKmK,WAAL;AACH,OAJM,MAIA,IAAIH,eAAJ,EAAqB;AACxB,aAAKI,kBAAL;AACH;;AAED,UAAIH,sBAAsB,IAAI,KAAKnI,OAA/B,IAA0C,KAAKA,OAAL,CAAauI,iBAA3D,EAA8E;AAC1E,aAAKvI,OAAL,CAAauI,iBAAb,CAA+B7H,kBAA/B;AACH;AACJ;AAED;;;;;;;;yCAKkD;AAAA,UAA/B8H,YAA+B,uEAAP,KAAO;;AAC9C,UAAI,KAAKxI,OAAT,EAAkB;AACd,aAAKA,OAAL,CAAayI,WAAb,CAAyB,KAAK5K,KAAL,CAAWgD,KAApC,EAA2C2H,YAA3C;AACH;AACJ;AAED;;;;;;;;;sCAMkBV,S,EAA2B;AAAA,yBACA,KAAKhH,KADL;AAAA,UACjCC,IADiC,gBACjCA,IADiC;AAAA,UAC3BC,eAD2B,gBAC3BA,eAD2B;AAAA,UAE3B0H,QAF2B,GAE+BZ,SAF/B,CAEjC/G,IAFiC;AAAA,UAEA4H,mBAFA,GAE+Bb,SAF/B,CAEjB9G,eAFiB;AAGzC,UAAM4H,qBAAqB,GAAGhO,OAAO,CAAC+N,mBAAD,EAAsB,IAAtB,CAArC;AACA,UAAME,iBAAiB,GAAGjO,OAAO,CAACoG,eAAD,EAAkB,IAAlB,CAAjC;AACA,UAAM8H,iBAAiB,GAAGlO,OAAO,CAAC8N,QAAD,EAAW,iBAAX,CAAjC;AACA,UAAMK,aAAa,GAAGnO,OAAO,CAACmG,IAAD,EAAO,iBAAP,CAA7B;AACA,UAAIsH,WAAW,GAAG,KAAlB;;AAEA,UAAIQ,iBAAiB,KAAKD,qBAA1B,EAAiD;AAC7C,YAAMI,iBAAiB,GAAGD,aAAa,KAAKH,qBAAlB,IAA2C,CAACA,qBAAtE;AACA,YAAMK,iBAAiB,GAAGF,aAAa,KAAKF,iBAAlB,IAAuC,CAACA,iBAAlE,CAF6C,CAI7C;;AACAR,QAAAA,WAAW,GAAG,CAACW,iBAAD,IAAsB,CAACC,iBAArC;AACH,OAND,MAMO,IAAIF,aAAa,IAAID,iBAArB,EAAwC;AAC3C;AACAT,QAAAA,WAAW,GAAGU,aAAa,KAAKD,iBAAhC;AACH,OAHM,MAGA;AACH;AACAT,QAAAA,WAAW,GAAG,CAACK,QAAD,IAAa,CAAC,CAAC3H,IAA7B;AACH;;AAED,aAAOsH,WAAP;AACH;AAED;;;;;;;;gCAKYa,K,EAAuB;AAAA,yBAC4C,KAAKrL,KADjD;AAAA,UACvBsL,UADuB,gBACvBA,UADuB;AAAA,UACXC,UADW,gBACXA,UADW;AAAA,UACCzC,QADD,gBACCA,QADD;AAAA,UACW0C,qBADX,gBACWA,qBADX;AAE/B,UAAMC,IAAY,aAAMF,UAAN,cAAoBC,qBAApB,cAA6C1C,QAA7C,cAAyDuC,KAAzD,CAAlB;AACA,UAAMK,MAAc,GAAGJ,UAAU,CAACK,QAAX,CAAoB,GAApB,IAA2BF,IAA3B,cAAsCA,IAAtC,CAAvB;AACA,uBAAUH,UAAV,SAAuBI,MAAvB;AACH;AAED;;;;;;;;6CAKkC;AAC9B,aAAO,CAAC,CAAC/G,MAAM,CAACC,GAAT,IAAgB,CAAC,CAACD,MAAM,CAACC,GAAP,CAAWF,OAApC;AACH;AAED;;;;;;;;qCAKuB;AAAA,sBACFkH,QADE;AAAA,UACXC,IADW,aACXA,IADW;AAEnB,UAAMC,GAAW,GAAG,KAAKC,WAAL,CAAiB,aAAjB,CAApB;;AAEA,UAAI,CAACF,IAAD,IAASA,IAAI,CAACG,aAAL,2CAAmDF,GAAnD,SAAb,EAA0E;AACtE;AACH;;AAED,UAAMG,IAAI,GAAGL,QAAQ,CAACM,aAAT,CAAuB,MAAvB,CAAb;AACAD,MAAAA,IAAI,CAACE,GAAL,GAAW,YAAX;AACAF,MAAAA,IAAI,CAACvD,IAAL,GAAY,UAAZ;AACAuD,MAAAA,IAAI,CAACG,IAAL,GAAYN,GAAZ;AACAD,MAAAA,IAAI,CAACQ,WAAL,CAAiBJ,IAAjB;AACH;AAED;;;;;;;;iCAKmB;AAAA,uBACEL,QADF;AAAA,UACPC,IADO,cACPA,IADO;AAEf,UAAMC,GAAW,GAAG,KAAKC,WAAL,CAAiB,YAAjB,CAApB;;AAEA,UAAI,CAACF,IAAD,IAAS,KAAKxI,sBAAL,EAAb,EAA4C;AACxC;AACH;;AAED,UAAMiJ,aAAa,GAAGT,IAAI,CAACG,aAAL,wBAAkCF,GAAlC,SAAtB;;AACA,UAAIQ,aAAJ,EAAmB;AACf;AACH;;AAED,UAAMC,MAAM,GAAGX,QAAQ,CAACM,aAAT,CAAuB,QAAvB,CAAf;AACAK,MAAAA,MAAM,CAACC,GAAP,GAAaV,GAAb;AACAS,MAAAA,MAAM,CAACE,gBAAP,CAAwB,MAAxB,EAAgC,KAAKjC,WAArC;AACAqB,MAAAA,IAAI,CAACQ,WAAL,CAAiBE,MAAjB;AACH;AAED;;;;;;;;mCAKe;AAAA,yBAC+B,KAAKvM,KADpC;AAAA,UACH0M,SADG,gBACHA,SADG;AAAA,UACQC,WADR,gBACQA,WADR;;AAEX,UAAID,SAAS,IAAI,CAAC/O,cAAc,CAACiO,QAAQ,CAACgB,aAAV,CAAhC,EAA0D;AACtDhP,QAAAA,KAAK,CAAC+O,WAAW,EAAZ,CAAL;AACH;AACJ;AAED;;;;;;;;;kDAM8BzJ,I,EAAeF,K,EAAoB;AAC7D,UAAI,CAAC,KAAKb,OAAN,IAAiB,CAACe,IAAlB,IAA0B,CAACA,IAAI,CAACU,EAApC,EAAwC;AACpC;AACH;;AAED,WAAKzB,OAAL,CAAa6C,eAAb,CAA6B,CAAC9B,IAAD,CAA7B;AACA,WAAKf,OAAL,CAAaE,QAAb,CAAsB;AAAEiB,QAAAA,MAAM,EAAEJ,IAAI,CAACU,EAAf;AAAmBZ,QAAAA,KAAK,EAALA;AAAnB,OAAtB;AACH;AAED;;;;;;;;;8BAMUE,I,EAAiC;AACvC,UAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC1B,eAAOA,IAAP;AACH;;AAED,UAAI,QAAOA,IAAP,MAAgB,QAAhB,IAA4B,CAAC,CAACA,IAAI,CAACU,EAAvC,EAA2C;AACvC,eAAOV,IAAI,CAACU,EAAZ;AACH;;AAED,YAAMnE,cAAN;AACH;AAED;;;;;;;;;;;;gDAMeoN,K;;;;;;;;AACH7J,gBAAAA,K,GAAiB,KAAKhD,K,CAAtBgD,K;AACF8J,gBAAAA,Q,GAAqBD,KAAK,CAACE,GAAN,CAAU,UAAA7J,IAAI;AAAA,yBAAIrF,cAAc,CAAC,MAAI,CAAC0F,SAAL,CAAeL,IAAf,CAAD,CAAlB;AAAA,iBAAd,C;;uBACrBxF,YAAY,CAACsP,WAAb,CAAyBF,QAAzB,EAAmC9J,KAAnC,C;;;AACN6J,gBAAAA,KAAK,CAACI,OAAN,CAAc,UAAA/J,IAAI,EAAI;AAClB,sBAAMI,MAAM,GAAG,MAAI,CAACC,SAAL,CAAeL,IAAf,CAAf;;AACA,kBAAA,MAAI,CAAC6G,SAAL,CAAezG,MAAf,EAAuBrG,IAAvB,EAA6BA,IAA7B,EAAmC;AAC/BiQ,oBAAAA,YAAY,EAAE;AADiB,mBAAnC;AAGH,iBALD;;;;;;;;;;;;;;;;AAQJ;;;;;;;;4CAKgC;AAC5B,UAAI,CAAC,KAAKC,kBAAN,IAA4B,CAAC,KAAK3H,gBAAtC,EAAwD;AACpD,eAAO,CAAP;AACH;;AAED,aAAO4H,IAAI,CAACC,KAAL,CAAW,KAAK7H,gBAAL,GAAwB,KAAK2H,kBAAxC,CAAP;AACH;AAED;;;;;;;;;;AA0DA;;;;;;qDAMiCtL,kB,EAA4D;AACzF,UAAMb,kBAAkB,GAAG,KAAKC,qBAAL,EAA3B;AADyF,UAEjFqM,SAFiF,GAE9CzL,kBAF8C,CAEjFyL,SAFiF;AAAA,UAEtEC,UAFsE,GAE9C1L,kBAF8C,CAEtE0L,UAFsE;AAAA,UAE1DC,OAF0D,GAE9C3L,kBAF8C,CAE1D2L,OAF0D,EAIzF;AACA;AACA;;AACA,UAAIC,eAAe,GAAGF,UAAtB;AACA,UAAIG,cAAc,GAAGJ,SAArB;AACA,UAAIK,YAAY,GAAGH,OAAnB;;AACA,UAAID,UAAJ,EAAgB;AACZE,QAAAA,eAAe,IAAIzM,kBAAnB;AACH,OAFD,MAEO;AACH0M,QAAAA,cAAc,IAAI1M,kBAAlB;AACH;;AAED,UAAI2M,YAAJ,EAAkB;AACd;AACAA,QAAAA,YAAY,IAAI3M,kBAAhB;AACH;;AAED,UAAMJ,cAAc,GAAG;AACnB2M,QAAAA,UAAU,EAAEE,eADO;AAEnBH,QAAAA,SAAS,EAAEI,cAFQ;AAGnBE,QAAAA,KAAK,EAAEF,cAAc,GAAGD,eAHL;AAInBD,QAAAA,OAAO,EAAEG;AAJU,OAAvB;AAOA,aAAO/M,cAAP;AACH;AAED;;;;;;;;;AAmCA;;;;;kCAKuB;AAAA,UACXyD,WADW,GACY,KAAKrE,KADjB,CACXqE,WADW;AAAA,UAEXnB,IAFW,GAEK,KAAKD,KAFV,CAEXC,IAFW;AAGnB,UAAM2K,kBAAkB,GACpB9Q,OAAO,CAACmG,IAAD,EAAO,0BAAP,EAAmC,KAAnC,CAAP,IAAoDnG,OAAO,CAACmG,IAAD,EAAO,uBAAP,EAAgC,KAAhC,CAD/D;AAEA,aAAO2K,kBAAkB,IAAI,CAAC,CAACxJ,WAA/B;AACH;AAED;;;;;;;;kCAKuB;AAAA,UACXH,eADW,GACgB,KAAKlE,KADrB,CACXkE,eADW;AAAA,UAEXhB,IAFW,GAEK,KAAKD,KAFV,CAEXC,IAFW;AAGnB,UAAM4K,iBAAiB,GAAG/Q,OAAO,CAACmG,IAAD,EAAO,0BAAP,EAAmC,KAAnC,CAAjC;AACA,aAAO,CAAC,CAACgB,eAAF,IAAqB4J,iBAA5B;AACH;AAED;;;;;;;;yCAK8B;AAAA,UAClB5J,eADkB,GACS,KAAKlE,KADd,CAClBkE,eADkB;AAAA,UAElBhB,IAFkB,GAEF,KAAKD,KAFH,CAElBC,IAFkB;AAG1B,UAAM6K,qBAAqB,GAAGhR,OAAO,CAACmG,IAAD,EAAO,sCAAP,EAA+C,KAA/C,CAArC;AACA,UAAM8K,sBAAsB,GAAGjR,OAAO,CAACmG,IAAD,EAAO,uCAAP,EAAgD,KAAhD,CAAtC;AACA,aAAO,CAAC,CAACgB,eAAF,KAAsB,KAAK+J,WAAL,MAAsBF,qBAAtB,IAA+CC,sBAArE,CAAP;AACH;;;qCAEgB;AACb,UAAM7L,OAAO,GAAG,KAAKgE,UAAL,EAAhB;AACA,WAAKxF,QAAL,CAAc;AAAET,QAAAA,QAAQ,EAAE,CAAC,CAACiC,OAAF,KAAc,CAACA,OAAO,CAACjC,QAAT,IAAqBiC,OAAO,CAACjC,QAAR,EAAnC;AAAZ,OAAd;AACH;AAED;;;;;;;;;AA+JA;;;;;;;;;8BAUI0D,E,EACAsK,e,EACAC,a,EAEI;AAAA,UADJC,YACI,uEAD2B,EAC3B;;AACJ,UAAI,CAACxK,EAAL,EAAS;AACL;AACH;;AAED,WAAKuJ,kBAAL,GAA0B1H,WAAW,CAACC,GAAZ,EAA1B;AACA,WAAKF,gBAAL,GAAwB,IAAxB;AAEA,WAAK2D,GAAL,CACKkF,UADL,GAEKC,OAFL,CAGQ1K,EAHR,EAIQsK,eAAe,IAAI,KAAKK,wBAJhC,EAKQJ,aAAa,IAAI,KAAKK,sBAL9B,oBAOeJ,YAPf;AAQYK,QAAAA,MAAM,EAAEzQ;AARpB;AAWH;AAED;;;;;;;;;AA0BA;;;;;mCAKe;AAAA,UACHwF,aADG,GACsB,KAAKP,KAD3B,CACHO,aADG;AAAA,UAEHhC,UAFG,GAEmB,KAAKxB,KAFxB,CAEHwB,UAFG;;AAGX,UAAI,CAACgC,aAAD,IAAkBhC,UAAU,CAACY,MAAX,GAAoB,CAA1C,EAA6C;AACzC,eAAO,CAAC,CAAR;AACH;;AAED,aAAOZ,UAAU,CAACkN,SAAX,CAAqB,UAAAC,IAAI,EAAI;AAChC,YAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC1B,iBAAOA,IAAI,KAAKnL,aAAhB;AACH;;AAED,eAAOmL,IAAI,CAAC/K,EAAL,KAAYJ,aAAnB;AACH,OANM,CAAP;AAOH;AAED;;;;;;;;;;oCAOgBoL,K,EAAe;AAAA,yBACe,KAAK5O,KADpB;AAAA,UACnBwB,UADmB,gBACnBA,UADmB;AAAA,UACPqN,UADO,gBACPA,UADO;AAAA,UAEnBzM,MAFmB,GAERZ,UAFQ,CAEnBY,MAFmB;;AAG3B,UAAIA,MAAM,GAAG,CAAT,IAAcwM,KAAK,GAAG,CAAtB,IAA2BA,KAAK,GAAGxM,MAAM,GAAG,CAAhD,EAAmD;AAC/C;AACH;;AAED,UAAM0M,QAAQ,GAAGtN,UAAU,CAACoN,KAAD,CAA3B;AACA,UAAMtL,MAAM,GAAG,QAAOwL,QAAP,MAAoB,QAApB,GAA+BA,QAAQ,CAAClL,EAAT,IAAe,EAA9C,GAAmDkL,QAAlE;AAEA,WAAKnO,QAAL,CACI;AACI6C,QAAAA,aAAa,EAAEF;AADnB,OADJ,EAII,YAAM;AACF;AACAuL,QAAAA,UAAU,CAACvL,MAAD,CAAV;AACH,OAPL;AASH;AAED;;;;;;;;;;AAyLA;;;;;qCAKuB;AAAA,UACFyL,cADE,GACiB,KAAKA,cADtB,CACXC,OADW;;AAGnB,UAAID,cAAJ,EAAoB;AAChBA,QAAAA,cAAc,CAACE,OAAf;AACH;AACJ;AAED;;;;;;;;;6BAMS;AAAA,yBAqBM,KAAKjP,KArBX;AAAA,UAED4I,OAFC,gBAEDA,OAFC;AAAA,UAGDpH,UAHC,gBAGDA,UAHC;AAAA,UAIDwB,KAJC,gBAIDA,KAJC;AAAA,UAKD8F,QALC,gBAKDA,QALC;AAAA,UAMDoG,QANC,gBAMDA,QANC;AAAA,UAODC,SAPC,gBAODA,SAPC;AAAA,UAQDC,mBARC,gBAQDA,mBARC;AAAA,UASDC,oBATC,gBASDA,oBATC;AAAA,UAUDC,SAVC,gBAUDA,SAVC;AAAA,UAWDC,OAXC,gBAWDA,OAXC;AAAA,UAYDC,OAZC,gBAYDA,OAZC;AAAA,UAaDC,WAbC,gBAaDA,WAbC;AAAA,UAcDC,OAdC,gBAcDA,OAdC;AAAA,UAeDC,OAfC,gBAeDA,OAfC;AAAA,UAgBDC,UAhBC,gBAgBDA,UAhBC;AAAA,UAiBD3G,UAjBC,gBAiBDA,UAjBC;AAAA,UAkBDC,kBAlBC,gBAkBDA,kBAlBC;AAAA,UAmBDH,kBAnBC,gBAmBDA,kBAnBC;AAAA,UAoBDC,mBApBC,gBAoBDA,mBApBC;AAAA,yBAgCM,KAAK/F,KAhCX;AAAA,UAwBD/C,QAxBC,gBAwBDA,QAxBC;AAAA,UAyBDsD,aAzBC,gBAyBDA,aAzBC;AAAA,UA0BDrD,KA1BC,gBA0BDA,KA1BC;AAAA,UA2BD+C,IA3BC,gBA2BDA,IA3BC;AAAA,UA4BD7C,SA5BC,gBA4BDA,SA5BC;AAAA,UA6BDC,2BA7BC,gBA6BDA,2BA7BC;AAAA,UA8BDC,sBA9BC,gBA8BDA,sBA9BC;AAAA,UA+BD4C,eA/BC,gBA+BDA,eA/BC;AAkCL,UAAM0M,cAAc,GAAGnT,UAAU,CAC7B,SAD6B,EAE7B;AACI,gCAAwB6D;AAD5B,OAF6B,EAK7B4O,SAL6B,CAAjC;;AAQA,UAAI,CAAC3L,aAAL,EAAoB;AAChB,eAAO,IAAP;AACH;;AAED,UAAMyC,SAAS,GAAGlJ,OAAO,CAACoD,KAAD,EAAQ,MAAR,CAAzB;AACA,UAAM2P,gBAAgB,GAAG/S,OAAO,CAACmG,IAAD,EAAO,IAAP,CAAP,KAAwBM,aAAxB,GAAwCzG,OAAO,CAACmG,IAAD,EAAO,WAAP,CAA/C,GAAqE,EAA9F;AACA,UAAM6M,gBAAgB,GAAGhT,OAAO,CAACmG,IAAD,EAAO,iBAAP,CAAhC;AACA,UAAM8H,iBAAiB,GAAGjO,OAAO,CAACoG,eAAD,EAAkB,IAAlB,EAAwB4M,gBAAxB,CAAjC;AACA,UAAMC,aAAa,GAAGD,gBAAgB,KAAK/E,iBAArB,GAAyC2E,OAAzC,GAAmD,KAAKvH,sBAA9E;AAEA;;AACA;;AACA,aACI,oBAAC,gBAAD;AAAkB,QAAA,QAAQ,EAAEU,QAA5B;AAAsC,QAAA,QAAQ,EAAEoG;AAAhD,SACI;AAAK,QAAA,EAAE,EAAE,KAAKtL,EAAd;AAAkB,QAAA,SAAS,EAAEiM,cAA7B;AAA6C,QAAA,GAAG,EAAED,UAAlD;AAA8D,QAAA,SAAS,EAAE,KAAKK,SAA9E;AAAyF,QAAA,QAAQ,EAAE;AAAnG,SACKX,SAAS,IACN,oBAAC,aAAD;AACI,QAAA,IAAI,EAAEpM,IADV;AAEI,QAAA,OAAO,EAAEwM,OAFb;AAGI,QAAA,KAAK,EAAE1M,KAHX;AAII,QAAA,OAAO,EAAEgN,aAJb;AAKI,QAAA,OAAO,EAAE,KAAKrJ,KALlB;AAMI,QAAA,WAAW,EAAE,KAAKtC,WAAL,EANjB;AAOI,QAAA,QAAQ,EAAEnE,QAPd;AAQI,QAAA,UAAU,EAAE,KAAKwG,QARrB;AASI,QAAA,oBAAoB,EAAE2I,oBAT1B;AAUI,QAAA,WAAW,EAAE,KAAKpB,WAAL,EAVjB;AAWI,QAAA,eAAe,EAAE9K;AAXrB,QAFR,EAgBI;AAAK,QAAA,SAAS,EAAC;AAAf,SACI;AAAK,QAAA,SAAS,EAAC,gBAAf;AAAgC,QAAA,WAAW,EAAE,KAAK+M,WAAlD;AAA+D,QAAA,GAAG,EAAE,KAAKC;AAAzE,SACKjN,IAAI,IACD,oBAAC,OAAD;AAAS,QAAA,MAAM,MAAf;AAAgB,QAAA,QAAQ,EAAE,KAAKkN;AAA/B,SACK;AAAA,YAAeC,UAAf,SAAGT,UAAH;AAAA,eAAgC;AAAK,UAAA,GAAG,EAAES,UAAV;AAAsB,UAAA,SAAS,EAAC;AAAhC,UAAhC;AAAA,OADL,CAFR,EAMI,oBAAC,WAAD;AAAa,QAAA,SAAS,EAAEpK,SAAxB;AAAmC,QAAA,SAAS,EAAE6J,gBAA9C;AAAgE,QAAA,SAAS,EAAEzP;AAA3E,QANJ,EAOI,oBAAC,iBAAD;AACI,QAAA,UAAU,EAAEmB,UADhB;AAEI,QAAA,YAAY,EAAE,KAAKE,YAAL,EAFlB;AAGI,QAAA,cAAc,EAAE,KAAKmG,YAHzB;AAII,QAAA,eAAe,EAAE,KAAKC;AAJ1B,QAPJ,CADJ,EAeK5E,IAAI,IACD,oBAAC,eAAD,eACQkM,mBADR;AAEI,QAAA,OAAO,EAAExG,OAFb;AAGI,QAAA,KAAK,EAAE5F,KAHX;AAII,QAAA,KAAK,EAAE,KAAKmG,GAAL,CAASmH,QAAT,EAJX;AAKI,QAAA,MAAM,EAAE9M,aALZ;AAMI,QAAA,UAAU,EAAE,KAAK2C,UANrB;AAOI,QAAA,SAAS,EAAE,KAAKS,SAPpB;AAQI,QAAA,OAAO,EAAE2I,OARb;AASI,QAAA,aAAa,EAAEC,OAAO,IAAIC,WAT9B;AAUI,QAAA,QAAQ,EAAE3G,QAVd;AAWI,QAAA,GAAG,EAAE,KAAKiG,cAXd;AAYI,QAAA,UAAU,EAAE9F,UAZhB;AAaI,QAAA,kBAAkB,EAAEC,kBAbxB;AAcI,QAAA,kBAAkB,EAAEH,kBAdxB;AAeI,QAAA,mBAAmB,EAAEC,mBAfzB;AAgBI,QAAA,kBAAkB,EAAE,KAAKuH,sBAhB7B;AAiBI,QAAA,eAAe,EAAE,KAAKpI;AAjB1B,SAhBR,CAhBJ,EAqDK7H,2BAA2B,IACxB,oBAAC,kBAAD;AAAoB,QAAA,OAAO,EAAE,KAAKkQ,uBAAlC;AAA2D,QAAA,OAAO,EAAE,KAAKC;AAAzE,QAtDR,CADJ,CADJ;AA6DA;;AACA;AACH;;;6CA99B+BzQ,K,EAAciD,K,EAAc;AAAA,UAChDK,MADgD,GACrCtD,KADqC,CAChDsD,MADgD;;AAGxD,UAAIA,MAAM,KAAKL,KAAK,CAACoG,cAArB,EAAqC;AACjC,eAAO;AACH7F,UAAAA,aAAa,EAAEF,MADZ;AAEH+F,UAAAA,cAAc,EAAE/F;AAFb,SAAP;AAIH;;AAED,aAAO,IAAP;AACH;;;;EA3KwB7G,KAAK,CAACiU,a;;gBAA7B3Q,c,kBAgCoB;AAClB6I,EAAAA,OAAO,EAAE/J,oBADS;AAElB8R,EAAAA,OAAO,EAAE7R,oBAFS;AAGlB4N,EAAAA,SAAS,EAAE,KAHO;AAIlBrI,EAAAA,WAAW,EAAE,IAJK;AAKlB8K,EAAAA,SAAS,EAAE,EALO;AAMlB3N,EAAAA,UAAU,EAAE,EANM;AAOlB6N,EAAAA,oBAAoB,EAAE,EAPJ;AAQlBD,EAAAA,mBAAmB,EAAE,EARH;AASlB3M,EAAAA,uBAAuB,EAAE,KATP;AAUlB6M,EAAAA,SAAS,EAAE,KAVO;AAWlBxG,EAAAA,QAAQ,EAAE7J,cAXQ;AAYlB2D,EAAAA,WAAW,EAAE3F,IAZK;AAalB0F,EAAAA,gBAAgB,EAAE1F,IAbA;AAclBwJ,EAAAA,UAAU,EAAExJ,IAdM;AAelByD,EAAAA,OAAO,EAAEzD,IAfS;AAgBlBsE,EAAAA,MAAM,EAAEtE,IAhBU;AAiBlB4R,EAAAA,UAAU,EAAE5R,IAjBM;AAkBlB0M,EAAAA,gBAAgB,EAAE1M,IAlBA;AAmBlBkL,EAAAA,eAAe,EAAElL,IAnBC;AAoBlBuO,EAAAA,qBAAqB,EAAExM,uBApBL;AAqBlBkF,EAAAA,eAAe,EAAE,KArBC;AAsBlBoH,EAAAA,UAAU,EAAEvM,uBAtBM;AAuBlBwM,EAAAA,UAAU,EAAErM,2BAvBM;AAwBlBuF,EAAAA,UAAU,EAAE;AAxBM,C;;AAkmC1B,SAAS1E,cAAc,IAAI6Q,uBAA3B;AACA,eAAe5T,IAAI,CAAC,CAChBM,cADgB,EAEhBqB,oBAFgB,EAGhBF,eAHgB,EAIhBrB,UAJgB,EAKhBG,aALgB,EAMhBW,mBANgB,EAOhBH,UAAU,CAACsB,sBAAD,CAPM,EAQhBvB,iBAAiB,CAACuB,sBAAD,CARD,CAAD,CAAJ,CASZU,cATY,CAAf","sourcesContent":["/**\n * @flow\n * @file Content Preview Component\n * @author Box\n */\n\nimport 'regenerator-runtime/runtime';\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport uniqueid from 'lodash/uniqueId';\nimport throttle from 'lodash/throttle';\nimport cloneDeep from 'lodash/cloneDeep';\nimport omit from 'lodash/omit';\nimport getProp from 'lodash/get';\nimport flow from 'lodash/flow';\nimport noop from 'lodash/noop';\nimport setProp from 'lodash/set';\nimport Measure from 'react-measure';\nimport { withRouter } from 'react-router-dom';\nimport type { ContextRouter } from 'react-router-dom';\nimport { decode } from '../../utils/keys';\nimport makeResponsive from '../common/makeResponsive';\nimport { withNavRouter } from '../common/nav-router';\nimport Internationalize from '../common/Internationalize';\nimport AsyncLoad from '../common/async-load';\nimport TokenService from '../../utils/TokenService';\nimport { isInputElement, focus } from '../../utils/dom';\nimport { getTypedFileId } from '../../utils/file';\nimport { withErrorBoundary } from '../common/error-boundary';\nimport { withLogger } from '../common/logger';\nimport { PREVIEW_FIELDS_TO_FETCH } from '../../utils/fields';\nimport { mark } from '../../utils/performance';\nimport { withFeatureProvider } from '../common/feature-checking';\nimport { EVENT_JS_READY } from '../common/logger/constants';\nimport ReloadNotification from './ReloadNotification';\nimport API from '../../api';\nimport PreviewHeader from './preview-header';\nimport PreviewMask from './PreviewMask';\nimport PreviewNavigation from './PreviewNavigation';\nimport {\n withAnnotations,\n WithAnnotationsProps,\n withAnnotatorContext,\n WithAnnotatorContextProps,\n} from '../common/annotator-context';\nimport {\n DEFAULT_HOSTNAME_API,\n DEFAULT_HOSTNAME_APP,\n DEFAULT_HOSTNAME_STATIC,\n DEFAULT_PREVIEW_VERSION,\n DEFAULT_LOCALE,\n DEFAULT_PATH_STATIC_PREVIEW,\n CLIENT_NAME_CONTENT_PREVIEW,\n ORIGIN_PREVIEW,\n ORIGIN_CONTENT_PREVIEW,\n ERROR_CODE_UNKNOWN,\n} from '../../constants';\nimport type { Annotation } from '../../common/types/feed';\nimport type { TargetingApi } from '../../features/targeting/types';\nimport type { ErrorType, AdditionalVersionInfo } from '../common/flowTypes';\nimport type { WithLoggerProps } from '../../common/types/logging';\nimport type { RequestOptions, ErrorContextProps, ElementsXhrError } from '../../common/types/api';\nimport type { StringMap, Token, BoxItem, BoxItemVersion } from '../../common/types/core';\nimport type { VersionChangeCallback } from '../content-sidebar/versions';\nimport type { FeatureConfig } from '../common/feature-checking';\nimport type APICache from '../../utils/Cache';\n\nimport '../common/fonts.scss';\nimport '../common/base.scss';\nimport './ContentPreview.scss';\n\ntype StartAt = {\n unit: 'pages' | 'seconds',\n value: number,\n};\n\ntype Props = {\n apiHost: string,\n appHost: string,\n autoFocus: boolean,\n boxAnnotations?: Object,\n cache?: APICache,\n canDownload?: boolean,\n className: string,\n collection: Array<string | BoxItem>,\n contentOpenWithProps: ContentOpenWithProps,\n contentSidebarProps: ContentSidebarProps,\n enableThumbnailsSidebar: boolean,\n features?: FeatureConfig,\n fileId?: string,\n fileOptions?: Object,\n getInnerRef: () => ?HTMLElement,\n hasHeader?: boolean,\n isLarge: boolean,\n isVeryLarge?: boolean,\n language: string,\n logoUrl?: string,\n measureRef: Function,\n messages?: StringMap,\n onAnnotator: Function,\n onAnnotatorEvent: Function,\n onClose?: Function,\n onDownload: Function,\n onLoad: Function,\n onNavigate: Function,\n onVersionChange: VersionChangeCallback,\n previewExperiences?: {\n [name: string]: TargetingApi,\n },\n previewLibraryVersion: string,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n sharedLink?: string,\n sharedLinkPassword?: string,\n showAnnotations?: boolean,\n showAnnotationsControls?: boolean,\n staticHost: string,\n staticPath: string,\n token: Token,\n useHotkeys: boolean,\n} & ErrorContextProps &\n WithLoggerProps &\n WithAnnotationsProps &\n WithAnnotatorContextProps &\n ContextRouter;\n\ntype State = {\n canPrint?: boolean,\n currentFileId?: string,\n error?: ErrorType,\n file?: BoxItem,\n isLoading: boolean,\n isReloadNotificationVisible: boolean,\n isThumbnailSidebarOpen: boolean,\n prevFileIdProp?: string, // the previous value of the \"fileId\" prop. Needed to implement getDerivedStateFromProps\n selectedVersion?: BoxItemVersion,\n startAt?: StartAt,\n};\n\n// Emitted by preview's 'load' event\ntype PreviewTimeMetrics = {\n conversion: number,\n preload?: number,\n rendering: number,\n total: number,\n};\n\n// Emitted by preview's 'preview_metric' event\ntype PreviewMetrics = {\n browser_name: string,\n client_version: string,\n content_type: string, // Sum of all available load times.\n convert_time: number,\n download_response_time: number,\n error?: Object,\n event_name?: string,\n extension: string,\n file_id: string,\n file_info_time: number,\n file_version_id: string,\n full_document_load_time: number,\n locale: string,\n logger_session_id: string,\n rep_type: string,\n timestamp: string,\n value: number,\n};\n\ntype PreviewLibraryError = {\n error: ErrorType,\n};\n\nconst startAtTypes = {\n page: 'pages',\n};\nconst InvalidIdError = new Error('Invalid id for Preview!');\nconst PREVIEW_LOAD_METRIC_EVENT = 'load';\nconst MARK_NAME_JS_READY = `${ORIGIN_CONTENT_PREVIEW}_${EVENT_JS_READY}`;\n\nmark(MARK_NAME_JS_READY);\n\nconst LoadableSidebar = AsyncLoad({\n loader: () => import(/* webpackMode: \"lazy\", webpackChunkName: \"content-sidebar\" */ '../content-sidebar'),\n});\n\nclass ContentPreview extends React.PureComponent<Props, State> {\n id: string;\n\n props: Props;\n\n state: State;\n\n preview: any;\n\n api: API;\n\n // Defines a generic type for ContentSidebar, since an import would interfere with code splitting\n contentSidebar: { current: null | { refresh: Function } } = React.createRef();\n\n previewContainer: ?HTMLDivElement;\n\n mouseMoveTimeoutID: TimeoutID;\n\n rootElement: HTMLElement;\n\n stagedFile: ?BoxItem;\n\n updateVersionToCurrent: ?() => void;\n\n initialState: State = {\n canPrint: false,\n error: undefined,\n isLoading: true,\n isReloadNotificationVisible: false,\n isThumbnailSidebarOpen: false,\n };\n\n static defaultProps = {\n apiHost: DEFAULT_HOSTNAME_API,\n appHost: DEFAULT_HOSTNAME_APP,\n autoFocus: false,\n canDownload: true,\n className: '',\n collection: [],\n contentOpenWithProps: {},\n contentSidebarProps: {},\n enableThumbnailsSidebar: false,\n hasHeader: false,\n language: DEFAULT_LOCALE,\n onAnnotator: noop,\n onAnnotatorEvent: noop,\n onDownload: noop,\n onError: noop,\n onLoad: noop,\n onNavigate: noop,\n onPreviewDestroy: noop,\n onVersionChange: noop,\n previewLibraryVersion: DEFAULT_PREVIEW_VERSION,\n showAnnotations: false,\n staticHost: DEFAULT_HOSTNAME_STATIC,\n staticPath: DEFAULT_PATH_STATIC_PREVIEW,\n useHotkeys: true,\n };\n\n /**\n * @property {number}\n */\n fetchFileEndTime: ?number;\n\n /**\n * @property {number}\n */\n fetchFileStartTime: ?number;\n\n /**\n * [constructor]\n *\n * @return {ContentPreview}\n */\n constructor(props: Props) {\n super(props);\n const {\n apiHost,\n cache,\n fileId,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n } = props;\n\n this.id = uniqueid('bcpr_');\n this.api = new API({\n apiHost,\n cache,\n clientName: CLIENT_NAME_CONTENT_PREVIEW,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n });\n this.state = {\n ...this.initialState,\n currentFileId: fileId,\n // eslint-disable-next-line react/no-unused-state\n prevFileIdProp: fileId,\n };\n const { logger } = props;\n logger.onReadyMetric({\n endMarkName: MARK_NAME_JS_READY,\n });\n }\n\n /**\n * Cleanup\n *\n * @return {void}\n */\n componentWillUnmount(): void {\n // Don't destroy the cache while unmounting\n this.api.destroy(false);\n this.destroyPreview();\n }\n\n /**\n * Cleans up the preview instance\n */\n destroyPreview(shouldReset: boolean = true) {\n const { onPreviewDestroy } = this.props;\n if (this.preview) {\n this.preview.destroy();\n this.preview.removeAllListeners();\n this.preview = undefined;\n\n onPreviewDestroy(shouldReset);\n }\n }\n\n /**\n * Destroys api instances with caches\n *\n * @private\n * @return {void}\n */\n clearCache(): void {\n this.api.destroy(true);\n }\n\n /**\n * Once the component mounts, load Preview assets and fetch file info.\n *\n * @return {void}\n */\n componentDidMount(): void {\n this.loadStylesheet();\n this.loadScript();\n\n this.fetchFile(this.state.currentFileId);\n this.focusPreview();\n }\n\n static getDerivedStateFromProps(props: Props, state: State) {\n const { fileId } = props;\n\n if (fileId !== state.prevFileIdProp) {\n return {\n currentFileId: fileId,\n prevFileIdProp: fileId,\n };\n }\n\n return null;\n }\n\n /**\n * After component updates, load Preview if appropriate.\n *\n * @return {void}\n */\n componentDidUpdate(prevProps: Props, prevState: State): void {\n const { previewExperiences, token } = this.props;\n const { previewExperiences: prevPreviewExperiences, token: prevToken } = prevProps;\n const { currentFileId } = this.state;\n const hasFileIdChanged = prevState.currentFileId !== currentFileId;\n const hasTokenChanged = prevToken !== token;\n const haveExperiencesChanged = prevPreviewExperiences !== previewExperiences;\n\n if (hasFileIdChanged) {\n this.destroyPreview();\n this.setState({ isLoading: true, selectedVersion: undefined });\n this.fetchFile(currentFileId);\n } else if (this.shouldLoadPreview(prevState)) {\n this.destroyPreview(false);\n this.setState({ isLoading: true });\n this.loadPreview();\n } else if (hasTokenChanged) {\n this.updatePreviewToken();\n }\n\n if (haveExperiencesChanged && this.preview && this.preview.updateExperiences) {\n this.preview.updateExperiences(previewExperiences);\n }\n }\n\n /**\n * Updates the access token used by preview library\n *\n * @param {boolean} shouldReload - true if preview should be reloaded\n */\n updatePreviewToken(shouldReload: boolean = false) {\n if (this.preview) {\n this.preview.updateToken(this.props.token, shouldReload);\n }\n }\n\n /**\n * Returns whether or not preview should be loaded.\n *\n * @param {State} prevState - Previous state\n * @return {boolean}\n */\n shouldLoadPreview(prevState: State): boolean {\n const { file, selectedVersion }: State = this.state;\n const { file: prevFile, selectedVersion: prevSelectedVersion }: State = prevState;\n const prevSelectedVersionId = getProp(prevSelectedVersion, 'id');\n const selectedVersionId = getProp(selectedVersion, 'id');\n const prevFileVersionId = getProp(prevFile, 'file_version.id');\n const fileVersionId = getProp(file, 'file_version.id');\n let loadPreview = false;\n\n if (selectedVersionId !== prevSelectedVersionId) {\n const isPreviousCurrent = fileVersionId === prevSelectedVersionId || !prevSelectedVersionId;\n const isSelectedCurrent = fileVersionId === selectedVersionId || !selectedVersionId;\n\n // Load preview if the user has selected a non-current version of the file\n loadPreview = !isPreviousCurrent || !isSelectedCurrent;\n } else if (fileVersionId && prevFileVersionId) {\n // Load preview if the file's current version ID has changed\n loadPreview = fileVersionId !== prevFileVersionId;\n } else {\n // Load preview if file object has newly been populated in state\n loadPreview = !prevFile && !!file;\n }\n\n return loadPreview;\n }\n\n /**\n * Returns preview asset urls\n *\n * @return {string} base url\n */\n getBasePath(asset: string): string {\n const { staticHost, staticPath, language, previewLibraryVersion }: Props = this.props;\n const path: string = `${staticPath}/${previewLibraryVersion}/${language}/${asset}`;\n const suffix: string = staticHost.endsWith('/') ? path : `/${path}`;\n return `${staticHost}${suffix}`;\n }\n\n /**\n * Determines if preview assets are loaded\n *\n * @return {boolean} true if preview is loaded\n */\n isPreviewLibraryLoaded(): boolean {\n return !!global.Box && !!global.Box.Preview;\n }\n\n /**\n * Loads external css by appending a <link> element\n *\n * @return {void}\n */\n loadStylesheet(): void {\n const { head } = document;\n const url: string = this.getBasePath('preview.css');\n\n if (!head || head.querySelector(`link[rel=\"stylesheet\"][href=\"${url}\"]`)) {\n return;\n }\n\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.type = 'text/css';\n link.href = url;\n head.appendChild(link);\n }\n\n /**\n * Loads external script by appending a <script> element\n *\n * @return {void}\n */\n loadScript(): void {\n const { head } = document;\n const url: string = this.getBasePath('preview.js');\n\n if (!head || this.isPreviewLibraryLoaded()) {\n return;\n }\n\n const previewScript = head.querySelector(`script[src=\"${url}\"]`);\n if (previewScript) {\n return;\n }\n\n const script = document.createElement('script');\n script.src = url;\n script.addEventListener('load', this.loadPreview);\n head.appendChild(script);\n }\n\n /**\n * Focuses the preview on load.\n *\n * @return {void}\n */\n focusPreview() {\n const { autoFocus, getInnerRef }: Props = this.props;\n if (autoFocus && !isInputElement(document.activeElement)) {\n focus(getInnerRef());\n }\n }\n\n /**\n * Updates preview cache and prefetches a file\n *\n * @param {BoxItem} file - file to prefetch\n * @return {void}\n */\n updatePreviewCacheAndPrefetch(file: BoxItem, token: Token): void {\n if (!this.preview || !file || !file.id) {\n return;\n }\n\n this.preview.updateFileCache([file]);\n this.preview.prefetch({ fileId: file.id, token });\n }\n\n /**\n * Gets the file id\n *\n * @param {string|BoxItem} file - box file or file id\n * @return {string} file id\n */\n getFileId(file?: string | BoxItem): string {\n if (typeof file === 'string') {\n return file;\n }\n\n if (typeof file === 'object' && !!file.id) {\n return file.id;\n }\n\n throw InvalidIdError;\n }\n\n /**\n * Prefetches the next few preview files if any\n *\n * @param {Array<string|BoxItem>} files - files to prefetch\n * @return {void}\n */\n async prefetch(files: Array<string | BoxItem>): Promise<void> {\n const { token }: Props = this.props;\n const typedIds: string[] = files.map(file => getTypedFileId(this.getFileId(file)));\n await TokenService.cacheTokens(typedIds, token);\n files.forEach(file => {\n const fileId = this.getFileId(file);\n this.fetchFile(fileId, noop, noop, {\n refreshCache: false,\n });\n });\n }\n\n /**\n * Calculates the total file fetch time\n *\n * @return {number} the total fetch time\n */\n getTotalFileFetchTime(): number {\n if (!this.fetchFileStartTime || !this.fetchFileEndTime) {\n return 0;\n }\n\n return Math.round(this.fetchFileEndTime - this.fetchFileStartTime);\n }\n\n /**\n * Handler for 'preview_error' preview event\n *\n * @param {PreviewLibraryError} previewError - the error data emitted from preview\n * @return {void}\n */\n onPreviewError = ({ error, ...rest }: PreviewLibraryError): void => {\n const { code = ERROR_CODE_UNKNOWN } = error;\n const { onError } = this.props;\n\n // In case of error, there should be no thumbnail sidebar to account for\n this.setState({ isLoading: false, isThumbnailSidebarOpen: false });\n\n onError(\n error,\n code,\n {\n ...rest,\n error,\n },\n ORIGIN_PREVIEW,\n );\n };\n\n /**\n * Event handler 'preview_metric' which also adds in the file fetch time if it's a load event\n *\n * @param {Object} previewMetrics - the object emitted by 'preview_metric'\n * @return {void}\n */\n onPreviewMetric = (previewMetrics: PreviewMetrics): void => {\n const { logger } = this.props;\n const { event_name } = previewMetrics;\n let metrics = {\n ...previewMetrics,\n };\n\n // We need to add in the total file fetch time to the file_info_time and value (total)\n // as preview does not do the files call\n if (event_name === PREVIEW_LOAD_METRIC_EVENT) {\n const totalFetchFileTime = this.getTotalFileFetchTime();\n const totalTime = (previewMetrics.value || 0) + totalFetchFileTime;\n\n // If an unnatural load time occurs or is invalid, don't log a load event\n if (!totalTime) {\n return;\n }\n\n metrics = {\n ...previewMetrics,\n file_info_time: totalFetchFileTime,\n value: totalTime,\n };\n }\n\n logger.onPreviewMetric(metrics);\n };\n\n /**\n * Adds in the file fetch time to the preview metrics\n *\n * @param {Object} previewTimeMetrics - the preview time metrics\n * @return {Object} the preview time metrics merged with the files call time\n */\n addFetchFileTimeToPreviewMetrics(previewTimeMetrics: PreviewTimeMetrics): PreviewTimeMetrics {\n const totalFetchFileTime = this.getTotalFileFetchTime();\n const { rendering, conversion, preload } = previewTimeMetrics;\n\n // We need to add in the total file fetch time to the rendering and total as preview\n // does not do the files call. In the case the file is in the process of\n // being converted, we need to add to conversion instead of the render\n let totalConversion = conversion;\n let totalRendering = rendering;\n let totalPreload = preload;\n if (conversion) {\n totalConversion += totalFetchFileTime;\n } else {\n totalRendering += totalFetchFileTime;\n }\n\n if (totalPreload) {\n // Preload is optional, depending on file type\n totalPreload += totalFetchFileTime;\n }\n\n const previewMetrics = {\n conversion: totalConversion,\n rendering: totalRendering,\n total: totalRendering + totalConversion,\n preload: totalPreload,\n };\n\n return previewMetrics;\n }\n\n /**\n * onLoad function for preview\n *\n * @return {void}\n */\n onPreviewLoad = (data: Object): void => {\n const { onLoad, collection }: Props = this.props;\n const currentIndex = this.getFileIndex();\n const filesToPrefetch = collection.slice(currentIndex + 1, currentIndex + 5);\n const previewTimeMetrics = getProp(data, 'metrics.time');\n let loadData = data;\n\n if (previewTimeMetrics) {\n const totalPreviewMetrics = this.addFetchFileTimeToPreviewMetrics(previewTimeMetrics);\n loadData = {\n ...loadData,\n metrics: {\n ...loadData.metrics,\n time: totalPreviewMetrics,\n },\n };\n }\n\n onLoad(loadData);\n\n this.setState({ isLoading: false });\n this.focusPreview();\n\n if (this.preview && filesToPrefetch.length) {\n this.prefetch(filesToPrefetch);\n }\n\n this.handleCanPrint();\n };\n\n /**\n * Returns whether file can be downloaded based on file properties, permissions, and user-defined options.\n *\n * @return {boolean}\n */\n canDownload(): boolean {\n const { canDownload }: Props = this.props;\n const { file }: State = this.state;\n const isFileDownloadable =\n getProp(file, 'permissions.can_download', false) && getProp(file, 'is_download_available', false);\n return isFileDownloadable && !!canDownload;\n }\n\n /**\n * Returns whether file can be annotated based on permissions\n *\n * @return {boolean}\n */\n canAnnotate(): boolean {\n const { showAnnotations }: Props = this.props;\n const { file }: State = this.state;\n const isFileAnnotatable = getProp(file, 'permissions.can_annotate', false);\n return !!showAnnotations && isFileAnnotatable;\n }\n\n /**\n * Returns whether a preview should render annotations based on permissions\n *\n * @return {boolean}\n */\n canViewAnnotations(): boolean {\n const { showAnnotations }: Props = this.props;\n const { file }: State = this.state;\n const hasViewAllPermissions = getProp(file, 'permissions.can_view_annotations_all', false);\n const hasViewSelfPermissions = getProp(file, 'permissions.can_view_annotations_self', false);\n return !!showAnnotations && (this.canAnnotate() || hasViewAllPermissions || hasViewSelfPermissions);\n }\n\n handleCanPrint() {\n const preview = this.getPreview();\n this.setState({ canPrint: !!preview && (!preview.canPrint || preview.canPrint()) });\n }\n\n /**\n * Loads preview in the component using the preview library.\n *\n * @return {void}\n */\n loadPreview = async (): Promise<void> => {\n const {\n annotatorState: { activeAnnotationId } = {},\n enableThumbnailsSidebar,\n fileOptions,\n onAnnotatorEvent,\n onAnnotator,\n previewExperiences,\n showAnnotationsControls,\n token: tokenOrTokenFunction,\n ...rest\n }: Props = this.props;\n const { file, selectedVersion, startAt }: State = this.state;\n\n if (!this.isPreviewLibraryLoaded() || !file || !tokenOrTokenFunction) {\n return;\n }\n\n const fileId = this.getFileId(file);\n\n if (fileId !== this.state.currentFileId) {\n return;\n }\n\n const fileOpts = { ...fileOptions };\n const token = typedId => TokenService.getReadTokens(typedId, tokenOrTokenFunction);\n\n if (selectedVersion) {\n setProp(fileOpts, [fileId, 'fileVersionId'], selectedVersion.id);\n setProp(fileOpts, [fileId, 'currentFileVersionId'], getProp(file, 'file_version.id'));\n }\n\n if (activeAnnotationId) {\n setProp(fileOpts, [fileId, 'annotations', 'activeId'], activeAnnotationId);\n }\n\n if (startAt) {\n setProp(fileOpts, [fileId, 'startAt'], startAt);\n }\n\n const previewOptions = {\n container: `#${this.id} .bcpr-content`,\n enableThumbnailsSidebar,\n fileOptions: fileOpts,\n header: 'none',\n headerElement: `#${this.id} .bcpr-PreviewHeader`,\n experiences: previewExperiences,\n showAnnotations: this.canViewAnnotations(),\n showAnnotationsControls,\n showDownload: this.canDownload(),\n showLoading: false,\n showProgress: false,\n skipServerUpdate: true,\n useHotkeys: false,\n };\n const { Preview } = global.Box;\n this.preview = new Preview();\n this.preview.addListener('load', this.onPreviewLoad);\n this.preview.addListener('preview_error', this.onPreviewError);\n this.preview.addListener('preview_metric', this.onPreviewMetric);\n this.preview.addListener('thumbnailsOpen', () => this.setState({ isThumbnailSidebarOpen: true }));\n this.preview.addListener('thumbnailsClose', () => this.setState({ isThumbnailSidebarOpen: false }));\n\n if (showAnnotationsControls) {\n this.preview.addListener('annotator_create', onAnnotator);\n }\n\n this.preview.updateFileCache([file]);\n this.preview.show(file.id, token, {\n ...previewOptions,\n ...omit(rest, Object.keys(previewOptions)),\n });\n };\n\n /**\n * Updates preview file from temporary staged file.\n *\n * @return {void}\n */\n loadFileFromStage = () => {\n if (this.stagedFile) {\n this.setState({ ...this.initialState, file: this.stagedFile }, () => {\n this.stagedFile = undefined;\n });\n }\n };\n\n /**\n * Removes the reload notification\n *\n * @return {void}\n */\n closeReloadNotification = () => {\n this.setState({ isReloadNotificationVisible: false });\n };\n\n /**\n * Tells the preview to resize\n *\n * @return {void}\n */\n onResize = (): void => {\n if (this.preview && this.preview.getCurrentViewer()) {\n this.preview.resize();\n }\n };\n\n /**\n * File fetch success callback\n *\n * @param {Object} file - Box file\n * @return {void}\n */\n fetchFileSuccessCallback = (file: BoxItem): void => {\n this.fetchFileEndTime = performance.now();\n\n const { file: currentFile }: State = this.state;\n const isExistingFile = currentFile ? currentFile.id === file.id : false;\n const isWatermarked = getProp(file, 'watermark_info.is_watermarked', false);\n\n // If the file is watermarked or if its a new file, then update the state\n // In this case preview should reload without prompting the user\n if (isWatermarked || !isExistingFile) {\n this.setState({ ...this.initialState, file });\n // $FlowFixMe file version and sha1 should exist at this point\n } else if (currentFile.file_version.sha1 !== file.file_version.sha1) {\n // If we are already prevewing the file that got updated then show the\n // user a notification to reload the file only if its sha1 changed\n this.stagedFile = file;\n this.setState({\n ...this.initialState,\n isReloadNotificationVisible: true,\n });\n }\n };\n\n /**\n * File fetch error callback\n *\n * @return {void}\n */\n fetchFileErrorCallback = (fileError: ElementsXhrError, code: string): void => {\n const { onError } = this.props;\n const errorCode = fileError.code || code;\n const error = {\n code: errorCode,\n message: fileError.message,\n };\n this.setState({ error, file: undefined, isLoading: false });\n onError(fileError, errorCode, {\n error: fileError,\n });\n };\n\n /**\n * Fetches a file\n *\n * @param {string} id file id\n * @param {Function|void} [successCallback] - Callback after file is fetched\n * @param {Function|void} [errorCallback] - Callback after error\n * @param {Object|void} [fetchOptions] - Fetch options\n * @return {void}\n */\n fetchFile(\n id: ?string,\n successCallback?: Function,\n errorCallback?: Function,\n fetchOptions: RequestOptions = {},\n ): void {\n if (!id) {\n return;\n }\n\n this.fetchFileStartTime = performance.now();\n this.fetchFileEndTime = null;\n\n this.api\n .getFileAPI()\n .getFile(\n id,\n successCallback || this.fetchFileSuccessCallback,\n errorCallback || this.fetchFileErrorCallback,\n {\n ...fetchOptions,\n fields: PREVIEW_FIELDS_TO_FETCH,\n },\n );\n }\n\n /**\n * Returns the preview instance\n *\n * @return {Preview} current instance of preview\n */\n getPreview = (): any => {\n const { file }: State = this.state;\n if (!this.preview || !file) {\n return null;\n }\n\n return this.preview;\n };\n\n /**\n * Returns the viewer instance being used by preview.\n * This will let child components access the viewers.\n *\n * @return {Viewer} current instance of the preview viewer\n */\n getViewer = (): any => {\n const preview = this.getPreview();\n const viewer = preview ? preview.getCurrentViewer() : null;\n return viewer && viewer.isLoaded() && !viewer.isDestroyed() ? viewer : null;\n };\n\n /**\n * Finds the index of current file inside the collection\n *\n * @return {number} -1 if not indexed\n */\n getFileIndex() {\n const { currentFileId }: State = this.state;\n const { collection }: Props = this.props;\n if (!currentFileId || collection.length < 2) {\n return -1;\n }\n\n return collection.findIndex(item => {\n if (typeof item === 'string') {\n return item === currentFileId;\n }\n\n return item.id === currentFileId;\n });\n }\n\n /**\n * Shows a preview of a file at the specified index in the current collection.\n *\n * @public\n * @param {number} index - Index of file to preview\n * @return {void}\n */\n navigateToIndex(index: number) {\n const { collection, onNavigate }: Props = this.props;\n const { length } = collection;\n if (length < 2 || index < 0 || index > length - 1) {\n return;\n }\n\n const fileOrId = collection[index];\n const fileId = typeof fileOrId === 'object' ? fileOrId.id || '' : fileOrId;\n\n this.setState(\n {\n currentFileId: fileId,\n },\n () => {\n // Execute navigation callback\n onNavigate(fileId);\n },\n );\n }\n\n /**\n * Shows a preview of the previous file.\n *\n * @public\n * @return {void}\n */\n navigateLeft = () => {\n const currentIndex = this.getFileIndex();\n const newIndex = currentIndex === 0 ? 0 : currentIndex - 1;\n if (newIndex !== currentIndex) {\n this.navigateToIndex(newIndex);\n }\n };\n\n /**\n * Shows a preview of the next file.\n *\n * @public\n * @return {void}\n */\n navigateRight = () => {\n const { collection }: Props = this.props;\n const currentIndex = this.getFileIndex();\n const newIndex = currentIndex === collection.length - 1 ? collection.length - 1 : currentIndex + 1;\n if (newIndex !== currentIndex) {\n this.navigateToIndex(newIndex);\n }\n };\n\n /**\n * Downloads file.\n *\n * @public\n * @return {void}\n */\n download = () => {\n const { onDownload }: Props = this.props;\n const { file }: State = this.state;\n if (this.preview) {\n this.preview.download();\n onDownload(cloneDeep(file));\n }\n };\n\n /**\n * Prints file.\n *\n * @public\n * @return {void}\n */\n print = () => {\n if (this.preview) {\n this.preview.print();\n }\n };\n\n /**\n * Mouse move handler that is throttled and show\n * the navigation arrows if applicable.\n *\n * @return {void}\n */\n onMouseMove = throttle(() => {\n const viewer = this.getViewer();\n const isPreviewing = !!viewer;\n const CLASS_NAVIGATION_VISIBILITY = 'bcpr-nav-is-visible';\n\n clearTimeout(this.mouseMoveTimeoutID);\n\n if (!this.previewContainer) {\n return;\n }\n\n // Always assume that navigation arrows will be hidden\n this.previewContainer.classList.remove(CLASS_NAVIGATION_VISIBILITY);\n\n // Only show it if either we aren't previewing or if we are then the viewer\n // is not blocking the show. If we are previewing then the viewer may choose\n // to not allow navigation arrows. This is mostly useful for videos since the\n // navigation arrows may interfere with the settings menu inside video player.\n if (this.previewContainer && (!isPreviewing || viewer.allowNavigationArrows())) {\n this.previewContainer.classList.add(CLASS_NAVIGATION_VISIBILITY);\n }\n\n this.mouseMoveTimeoutID = setTimeout(() => {\n if (this.previewContainer) {\n this.previewContainer.classList.remove(CLASS_NAVIGATION_VISIBILITY);\n }\n }, 1500);\n }, 1000);\n\n /**\n * Keyboard events\n *\n * @return {void}\n */\n onKeyDown = (event: SyntheticKeyboardEvent<HTMLElement>) => {\n const { useHotkeys }: Props = this.props;\n if (!useHotkeys) {\n return;\n }\n\n let consumed = false;\n const key = decode(event);\n const viewer = this.getViewer();\n\n // If focus was on an input or if the viewer doesn't exist\n // then don't bother doing anything further\n if (!key || !viewer || isInputElement(event.target)) {\n return;\n }\n\n if (typeof viewer.onKeydown === 'function') {\n consumed = !!viewer.onKeydown(key, event.nativeEvent);\n }\n\n if (!consumed) {\n switch (key) {\n case 'ArrowLeft':\n this.navigateLeft();\n consumed = true;\n break;\n case 'ArrowRight':\n this.navigateRight();\n consumed = true;\n break;\n default:\n // no-op\n }\n }\n\n if (consumed) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n /**\n * Handles version change events\n *\n * @param {string} [version] - The version that is now previewed\n * @param {object} [additionalVersionInfo] - extra info about the version\n */\n onVersionChange = (version?: BoxItemVersion, additionalVersionInfo: AdditionalVersionInfo = {}): void => {\n const { onVersionChange }: Props = this.props;\n this.updateVersionToCurrent = additionalVersionInfo.updateVersionToCurrent;\n\n onVersionChange(version, additionalVersionInfo);\n this.setState({\n selectedVersion: version,\n });\n };\n\n handleAnnotationSelect = ({ file_version, id, target }: Annotation) => {\n const { location = {} } = target;\n const { file, selectedVersion } = this.state;\n const annotationFileVersionId = getProp(file_version, 'id');\n const currentFileVersionId = getProp(file, 'file_version.id');\n const currentPreviewFileVersionId = getProp(selectedVersion, 'id', currentFileVersionId);\n const unit = startAtTypes[location.type];\n const viewer = this.getViewer();\n\n if (unit && annotationFileVersionId && annotationFileVersionId !== currentPreviewFileVersionId) {\n this.setState({\n startAt: {\n unit,\n value: location.value,\n },\n });\n }\n\n if (viewer) {\n viewer.emit('scrolltoannotation', { id, target });\n }\n };\n\n /**\n * Holds the reference the preview container\n *\n * @return {void}\n */\n containerRef = (container: ?HTMLDivElement) => {\n this.previewContainer = container;\n };\n\n /**\n * Refreshes the content sidebar panel\n *\n * @return {void}\n */\n refreshSidebar(): void {\n const { current: contentSidebar } = this.contentSidebar;\n\n if (contentSidebar) {\n contentSidebar.refresh();\n }\n }\n\n /**\n * Renders the file preview\n *\n * @inheritdoc\n * @return {Element}\n */\n render() {\n const {\n apiHost,\n collection,\n token,\n language,\n messages,\n className,\n contentSidebarProps,\n contentOpenWithProps,\n hasHeader,\n history,\n isLarge,\n isVeryLarge,\n logoUrl,\n onClose,\n measureRef,\n sharedLink,\n sharedLinkPassword,\n requestInterceptor,\n responseInterceptor,\n }: Props = this.props;\n\n const {\n canPrint,\n currentFileId,\n error,\n file,\n isLoading,\n isReloadNotificationVisible,\n isThumbnailSidebarOpen,\n selectedVersion,\n }: State = this.state;\n\n const styleClassName = classNames(\n 'be bcpr',\n {\n 'bcpr-thumbnails-open': isThumbnailSidebarOpen,\n },\n className,\n );\n\n if (!currentFileId) {\n return null;\n }\n\n const errorCode = getProp(error, 'code');\n const currentExtension = getProp(file, 'id') === currentFileId ? getProp(file, 'extension') : '';\n const currentVersionId = getProp(file, 'file_version.id');\n const selectedVersionId = getProp(selectedVersion, 'id', currentVersionId);\n const onHeaderClose = currentVersionId === selectedVersionId ? onClose : this.updateVersionToCurrent;\n\n /* eslint-disable jsx-a11y/no-static-element-interactions */\n /* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n return (\n <Internationalize language={language} messages={messages}>\n <div id={this.id} className={styleClassName} ref={measureRef} onKeyDown={this.onKeyDown} tabIndex={0}>\n {hasHeader && (\n <PreviewHeader\n file={file}\n logoUrl={logoUrl}\n token={token}\n onClose={onHeaderClose}\n onPrint={this.print}\n canDownload={this.canDownload()}\n canPrint={canPrint}\n onDownload={this.download}\n contentOpenWithProps={contentOpenWithProps}\n canAnnotate={this.canAnnotate()}\n selectedVersion={selectedVersion}\n />\n )}\n <div className=\"bcpr-body\">\n <div className=\"bcpr-container\" onMouseMove={this.onMouseMove} ref={this.containerRef}>\n {file && (\n <Measure bounds onResize={this.onResize}>\n {({ measureRef: previewRef }) => <div ref={previewRef} className=\"bcpr-content\" />}\n </Measure>\n )}\n <PreviewMask errorCode={errorCode} extension={currentExtension} isLoading={isLoading} />\n <PreviewNavigation\n collection={collection}\n currentIndex={this.getFileIndex()}\n onNavigateLeft={this.navigateLeft}\n onNavigateRight={this.navigateRight}\n />\n </div>\n {file && (\n <LoadableSidebar\n {...contentSidebarProps}\n apiHost={apiHost}\n token={token}\n cache={this.api.getCache()}\n fileId={currentFileId}\n getPreview={this.getPreview}\n getViewer={this.getViewer}\n history={history}\n isDefaultOpen={isLarge || isVeryLarge}\n language={language}\n ref={this.contentSidebar}\n sharedLink={sharedLink}\n sharedLinkPassword={sharedLinkPassword}\n requestInterceptor={requestInterceptor}\n responseInterceptor={responseInterceptor}\n onAnnotationSelect={this.handleAnnotationSelect}\n onVersionChange={this.onVersionChange}\n />\n )}\n </div>\n {isReloadNotificationVisible && (\n <ReloadNotification onClose={this.closeReloadNotification} onClick={this.loadFileFromStage} />\n )}\n </div>\n </Internationalize>\n );\n /* eslint-enable jsx-a11y/no-static-element-interactions */\n /* eslint-enable jsx-a11y/no-noninteractive-tabindex */\n }\n}\n\nexport type ContentPreviewProps = Props;\nexport { ContentPreview as ContentPreviewComponent };\nexport default flow([\n makeResponsive,\n withAnnotatorContext,\n withAnnotations,\n withRouter,\n withNavRouter,\n withFeatureProvider,\n withLogger(ORIGIN_CONTENT_PREVIEW),\n withErrorBoundary(ORIGIN_CONTENT_PREVIEW),\n])(ContentPreview);\n"],"file":"ContentPreview.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/content-preview/ContentPreview.js"],"names":["React","classNames","cloneDeep","flow","getProp","isEqual","noop","omit","setProp","throttle","uniqueid","Measure","withRouter","decode","makeResponsive","withNavRouter","Internationalize","AsyncLoad","TokenService","isInputElement","focus","getTypedFileId","withErrorBoundary","withLogger","PREVIEW_FIELDS_TO_FETCH","mark","withFeatureProvider","EVENT_JS_READY","ReloadNotification","API","PreviewHeader","PreviewMask","PreviewNavigation","withAnnotations","WithAnnotationsProps","withAnnotatorContext","WithAnnotatorContextProps","DEFAULT_HOSTNAME_API","DEFAULT_HOSTNAME_APP","DEFAULT_HOSTNAME_STATIC","DEFAULT_PREVIEW_VERSION","DEFAULT_LOCALE","DEFAULT_PATH_STATIC_PREVIEW","CLIENT_NAME_CONTENT_PREVIEW","ORIGIN_PREVIEW","ORIGIN_CONTENT_PREVIEW","ERROR_CODE_UNKNOWN","startAtTypes","page","InvalidIdError","Error","PREVIEW_LOAD_METRIC_EVENT","MARK_NAME_JS_READY","LoadableSidebar","loader","ContentPreview","props","createRef","canPrint","error","undefined","isLoading","isReloadNotificationVisible","isThumbnailSidebarOpen","rest","code","onError","setState","previewMetrics","logger","event_name","metrics","totalFetchFileTime","getTotalFileFetchTime","totalTime","value","file_info_time","onPreviewMetric","data","onLoad","collection","currentIndex","getFileIndex","filesToPrefetch","slice","previewTimeMetrics","loadData","totalPreviewMetrics","addFetchFileTimeToPreviewMetrics","time","focusPreview","preview","length","prefetch","handleCanPrint","advancedContentInsights","annotatorState","activeAnnotationId","enableThumbnailsSidebar","fileOptions","onAnnotatorEvent","onAnnotator","onContentInsightsEventReport","previewExperiences","showAnnotationsControls","tokenOrTokenFunction","token","state","file","selectedVersion","startAt","isPreviewLibraryLoaded","fileId","getFileId","currentFileId","fileOpts","typedId","getReadTokens","id","previewOptions","container","header","headerElement","experiences","showAnnotations","canViewAnnotations","showDownload","canDownload","showLoading","showProgress","skipServerUpdate","useHotkeys","Preview","global","Box","addListener","onPreviewLoad","onPreviewError","updateFileCache","show","Object","keys","stagedFile","initialState","getCurrentViewer","resize","fetchFileEndTime","performance","now","currentFile","isExistingFile","isWatermarked","file_version","sha1","fileError","errorCode","message","getPreview","viewer","isLoaded","isDestroyed","newIndex","navigateToIndex","onDownload","download","print","getViewer","isPreviewing","CLASS_NAVIGATION_VISIBILITY","clearTimeout","mouseMoveTimeoutID","previewContainer","classList","remove","allowNavigationArrows","add","setTimeout","event","consumed","key","target","onKeydown","nativeEvent","navigateLeft","navigateRight","preventDefault","stopPropagation","version","additionalVersionInfo","onVersionChange","updateVersionToCurrent","location","annotationFileVersionId","currentFileVersionId","currentPreviewFileVersionId","unit","type","emit","pageNumber","getThumbnail","apiHost","cache","language","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","api","clientName","prevFileIdProp","onReadyMetric","endMarkName","destroy","destroyPreview","shouldReset","onPreviewDestroy","removeAllListeners","loadStylesheet","loadScript","fetchFile","prevProps","prevState","prevContentInsightsOptions","prevPreviewExperiences","prevToken","hasFileIdChanged","hasTokenChanged","haveContentInsightsChanged","haveExperiencesChanged","shouldLoadPreview","loadPreview","updatePreviewToken","updateExperiences","updateContentInsightsOptions","shouldReload","updateToken","prevFile","prevSelectedVersion","prevSelectedVersionId","selectedVersionId","prevFileVersionId","fileVersionId","isPreviousCurrent","isSelectedCurrent","asset","staticHost","staticPath","previewLibraryVersion","path","suffix","endsWith","document","head","url","getBasePath","querySelector","link","createElement","rel","href","appendChild","previewScript","script","src","addEventListener","autoFocus","getInnerRef","activeElement","files","typedIds","map","cacheTokens","forEach","refreshCache","fetchFileStartTime","Math","round","rendering","conversion","preload","totalConversion","totalRendering","totalPreload","total","isFileDownloadable","isFileAnnotatable","hasViewAllPermissions","hasViewSelfPermissions","canAnnotate","successCallback","errorCallback","fetchOptions","getFileAPI","getFile","fetchFileSuccessCallback","fetchFileErrorCallback","fields","findIndex","item","index","onNavigate","fileOrId","contentSidebar","current","refresh","messages","className","contentSidebarProps","contentOpenWithProps","hasHeader","history","isLarge","isVeryLarge","logoUrl","onClose","measureRef","styleClassName","currentExtension","currentVersionId","onHeaderClose","onKeyDown","onMouseMove","containerRef","onResize","previewRef","getCache","handleAnnotationSelect","closeReloadNotification","loadFileFromStage","PureComponent","appHost","ContentPreviewComponent"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Content Preview Component\n * @author Box\n */\n\nimport 'regenerator-runtime/runtime';\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport cloneDeep from 'lodash/cloneDeep';\nimport flow from 'lodash/flow';\nimport getProp from 'lodash/get';\nimport isEqual from 'lodash/isEqual';\nimport noop from 'lodash/noop';\nimport omit from 'lodash/omit';\nimport setProp from 'lodash/set';\nimport throttle from 'lodash/throttle';\nimport uniqueid from 'lodash/uniqueId';\nimport Measure from 'react-measure';\nimport { withRouter } from 'react-router-dom';\nimport type { ContextRouter } from 'react-router-dom';\nimport { decode } from '../../utils/keys';\nimport makeResponsive from '../common/makeResponsive';\nimport { withNavRouter } from '../common/nav-router';\nimport Internationalize from '../common/Internationalize';\nimport AsyncLoad from '../common/async-load';\nimport TokenService from '../../utils/TokenService';\nimport { isInputElement, focus } from '../../utils/dom';\nimport { getTypedFileId } from '../../utils/file';\nimport { withErrorBoundary } from '../common/error-boundary';\nimport { withLogger } from '../common/logger';\nimport { PREVIEW_FIELDS_TO_FETCH } from '../../utils/fields';\nimport { mark } from '../../utils/performance';\nimport { withFeatureProvider } from '../common/feature-checking';\nimport { EVENT_JS_READY } from '../common/logger/constants';\nimport ReloadNotification from './ReloadNotification';\nimport API from '../../api';\nimport PreviewHeader from './preview-header';\nimport PreviewMask from './PreviewMask';\nimport PreviewNavigation from './PreviewNavigation';\nimport {\n withAnnotations,\n WithAnnotationsProps,\n withAnnotatorContext,\n WithAnnotatorContextProps,\n} from '../common/annotator-context';\nimport {\n DEFAULT_HOSTNAME_API,\n DEFAULT_HOSTNAME_APP,\n DEFAULT_HOSTNAME_STATIC,\n DEFAULT_PREVIEW_VERSION,\n DEFAULT_LOCALE,\n DEFAULT_PATH_STATIC_PREVIEW,\n CLIENT_NAME_CONTENT_PREVIEW,\n ORIGIN_PREVIEW,\n ORIGIN_CONTENT_PREVIEW,\n ERROR_CODE_UNKNOWN,\n} from '../../constants';\nimport type { Annotation } from '../../common/types/feed';\nimport type { TargetingApi } from '../../features/targeting/types';\nimport type { ErrorType, AdditionalVersionInfo } from '../common/flowTypes';\nimport type { WithLoggerProps } from '../../common/types/logging';\nimport type { RequestOptions, ErrorContextProps, ElementsXhrError } from '../../common/types/api';\nimport type { StringMap, Token, BoxItem, BoxItemVersion } from '../../common/types/core';\nimport type { VersionChangeCallback } from '../content-sidebar/versions';\nimport type { FeatureConfig } from '../common/feature-checking';\nimport type APICache from '../../utils/Cache';\n\nimport '../common/fonts.scss';\nimport '../common/base.scss';\nimport './ContentPreview.scss';\n\ntype StartAt = {\n unit: 'pages' | 'seconds',\n value: number,\n};\n\ntype Props = {\n advancedContentInsights: {\n isActive: boolean,\n ownerEId: number,\n userId: number,\n },\n apiHost: string,\n appHost: string,\n autoFocus: boolean,\n boxAnnotations?: Object,\n cache?: APICache,\n canDownload?: boolean,\n className: string,\n collection: Array<string | BoxItem>,\n contentOpenWithProps: ContentOpenWithProps,\n contentSidebarProps: ContentSidebarProps,\n enableThumbnailsSidebar: boolean,\n features?: FeatureConfig,\n fileId?: string,\n fileOptions?: Object,\n getInnerRef: () => ?HTMLElement,\n hasHeader?: boolean,\n isLarge: boolean,\n isVeryLarge?: boolean,\n language: string,\n logoUrl?: string,\n measureRef: Function,\n messages?: StringMap,\n onAnnotator: Function,\n onAnnotatorEvent: Function,\n onClose?: Function,\n onContentInsightsEventReport: Function,\n onDownload: Function,\n onLoad: Function,\n onNavigate: Function,\n onVersionChange: VersionChangeCallback,\n previewExperiences?: {\n [name: string]: TargetingApi,\n },\n previewLibraryVersion: string,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n sharedLink?: string,\n sharedLinkPassword?: string,\n showAnnotations?: boolean,\n showAnnotationsControls?: boolean,\n staticHost: string,\n staticPath: string,\n token: Token,\n useHotkeys: boolean,\n} & ErrorContextProps &\n WithLoggerProps &\n WithAnnotationsProps &\n WithAnnotatorContextProps &\n ContextRouter;\n\ntype State = {\n canPrint?: boolean,\n currentFileId?: string,\n error?: ErrorType,\n file?: BoxItem,\n isLoading: boolean,\n isReloadNotificationVisible: boolean,\n isThumbnailSidebarOpen: boolean,\n prevFileIdProp?: string, // the previous value of the \"fileId\" prop. Needed to implement getDerivedStateFromProps\n selectedVersion?: BoxItemVersion,\n startAt?: StartAt,\n};\n\n// Emitted by preview's 'load' event\ntype PreviewTimeMetrics = {\n conversion: number,\n preload?: number,\n rendering: number,\n total: number,\n};\n\n// Emitted by preview's 'preview_metric' event\ntype PreviewMetrics = {\n browser_name: string,\n client_version: string,\n content_type: string, // Sum of all available load times.\n convert_time: number,\n download_response_time: number,\n error?: Object,\n event_name?: string,\n extension: string,\n file_id: string,\n file_info_time: number,\n file_version_id: string,\n full_document_load_time: number,\n locale: string,\n logger_session_id: string,\n rep_type: string,\n timestamp: string,\n value: number,\n};\n\ntype PreviewLibraryError = {\n error: ErrorType,\n};\n\nconst startAtTypes = {\n page: 'pages',\n};\nconst InvalidIdError = new Error('Invalid id for Preview!');\nconst PREVIEW_LOAD_METRIC_EVENT = 'load';\nconst MARK_NAME_JS_READY = `${ORIGIN_CONTENT_PREVIEW}_${EVENT_JS_READY}`;\n\nmark(MARK_NAME_JS_READY);\n\nconst LoadableSidebar = AsyncLoad({\n loader: () => import(/* webpackMode: \"lazy\", webpackChunkName: \"content-sidebar\" */ '../content-sidebar'),\n});\n\nclass ContentPreview extends React.PureComponent<Props, State> {\n id: string;\n\n props: Props;\n\n state: State;\n\n preview: any;\n\n api: API;\n\n // Defines a generic type for ContentSidebar, since an import would interfere with code splitting\n contentSidebar: { current: null | { refresh: Function } } = React.createRef();\n\n previewContainer: ?HTMLDivElement;\n\n mouseMoveTimeoutID: TimeoutID;\n\n rootElement: HTMLElement;\n\n stagedFile: ?BoxItem;\n\n updateVersionToCurrent: ?() => void;\n\n initialState: State = {\n canPrint: false,\n error: undefined,\n isLoading: true,\n isReloadNotificationVisible: false,\n isThumbnailSidebarOpen: false,\n };\n\n static defaultProps = {\n apiHost: DEFAULT_HOSTNAME_API,\n appHost: DEFAULT_HOSTNAME_APP,\n autoFocus: false,\n canDownload: true,\n className: '',\n collection: [],\n contentOpenWithProps: {},\n contentSidebarProps: {},\n enableThumbnailsSidebar: false,\n hasHeader: false,\n language: DEFAULT_LOCALE,\n onAnnotator: noop,\n onAnnotatorEvent: noop,\n onContentInsightsEventReport: noop,\n onDownload: noop,\n onError: noop,\n onLoad: noop,\n onNavigate: noop,\n onPreviewDestroy: noop,\n onVersionChange: noop,\n previewLibraryVersion: DEFAULT_PREVIEW_VERSION,\n showAnnotations: false,\n staticHost: DEFAULT_HOSTNAME_STATIC,\n staticPath: DEFAULT_PATH_STATIC_PREVIEW,\n useHotkeys: true,\n };\n\n /**\n * @property {number}\n */\n fetchFileEndTime: ?number;\n\n /**\n * @property {number}\n */\n fetchFileStartTime: ?number;\n\n /**\n * [constructor]\n *\n * @return {ContentPreview}\n */\n constructor(props: Props) {\n super(props);\n const {\n apiHost,\n cache,\n fileId,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n } = props;\n\n this.id = uniqueid('bcpr_');\n this.api = new API({\n apiHost,\n cache,\n clientName: CLIENT_NAME_CONTENT_PREVIEW,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n });\n this.state = {\n ...this.initialState,\n currentFileId: fileId,\n // eslint-disable-next-line react/no-unused-state\n prevFileIdProp: fileId,\n };\n const { logger } = props;\n logger.onReadyMetric({\n endMarkName: MARK_NAME_JS_READY,\n });\n }\n\n /**\n * Cleanup\n *\n * @return {void}\n */\n componentWillUnmount(): void {\n // Don't destroy the cache while unmounting\n this.api.destroy(false);\n this.destroyPreview();\n }\n\n /**\n * Cleans up the preview instance\n */\n destroyPreview(shouldReset: boolean = true) {\n const { onPreviewDestroy } = this.props;\n if (this.preview) {\n this.preview.destroy();\n this.preview.removeAllListeners();\n this.preview = undefined;\n\n onPreviewDestroy(shouldReset);\n }\n }\n\n /**\n * Destroys api instances with caches\n *\n * @private\n * @return {void}\n */\n clearCache(): void {\n this.api.destroy(true);\n }\n\n /**\n * Once the component mounts, load Preview assets and fetch file info.\n *\n * @return {void}\n */\n componentDidMount(): void {\n this.loadStylesheet();\n this.loadScript();\n\n this.fetchFile(this.state.currentFileId);\n this.focusPreview();\n }\n\n static getDerivedStateFromProps(props: Props, state: State) {\n const { fileId } = props;\n\n if (fileId !== state.prevFileIdProp) {\n return {\n currentFileId: fileId,\n prevFileIdProp: fileId,\n };\n }\n\n return null;\n }\n\n /**\n * After component updates, load Preview if appropriate.\n *\n * @return {void}\n */\n componentDidUpdate(prevProps: Props, prevState: State): void {\n const { advancedContentInsights, previewExperiences, token } = this.props;\n const {\n advancedContentInsights: prevContentInsightsOptions,\n previewExperiences: prevPreviewExperiences,\n token: prevToken,\n } = prevProps;\n const { currentFileId } = this.state;\n const hasFileIdChanged = prevState.currentFileId !== currentFileId;\n const hasTokenChanged = prevToken !== token;\n const haveContentInsightsChanged = !isEqual(prevContentInsightsOptions, advancedContentInsights);\n const haveExperiencesChanged = prevPreviewExperiences !== previewExperiences;\n\n if (hasFileIdChanged) {\n this.destroyPreview();\n this.setState({ isLoading: true, selectedVersion: undefined });\n this.fetchFile(currentFileId);\n } else if (this.shouldLoadPreview(prevState)) {\n this.destroyPreview(false);\n this.setState({ isLoading: true });\n this.loadPreview();\n } else if (hasTokenChanged) {\n this.updatePreviewToken();\n }\n\n if (haveExperiencesChanged && this.preview && this.preview.updateExperiences) {\n this.preview.updateExperiences(previewExperiences);\n }\n\n if (advancedContentInsights && haveContentInsightsChanged && this.preview?.updateContentInsightsOptions) {\n this.preview.updateContentInsightsOptions(advancedContentInsights);\n }\n }\n\n /**\n * Updates the access token used by preview library\n *\n * @param {boolean} shouldReload - true if preview should be reloaded\n */\n updatePreviewToken(shouldReload: boolean = false) {\n if (this.preview) {\n this.preview.updateToken(this.props.token, shouldReload);\n }\n }\n\n /**\n * Returns whether or not preview should be loaded.\n *\n * @param {State} prevState - Previous state\n * @return {boolean}\n */\n shouldLoadPreview(prevState: State): boolean {\n const { file, selectedVersion }: State = this.state;\n const { file: prevFile, selectedVersion: prevSelectedVersion }: State = prevState;\n const prevSelectedVersionId = getProp(prevSelectedVersion, 'id');\n const selectedVersionId = getProp(selectedVersion, 'id');\n const prevFileVersionId = getProp(prevFile, 'file_version.id');\n const fileVersionId = getProp(file, 'file_version.id');\n let loadPreview = false;\n\n if (selectedVersionId !== prevSelectedVersionId) {\n const isPreviousCurrent = fileVersionId === prevSelectedVersionId || !prevSelectedVersionId;\n const isSelectedCurrent = fileVersionId === selectedVersionId || !selectedVersionId;\n\n // Load preview if the user has selected a non-current version of the file\n loadPreview = !isPreviousCurrent || !isSelectedCurrent;\n } else if (fileVersionId && prevFileVersionId) {\n // Load preview if the file's current version ID has changed\n loadPreview = fileVersionId !== prevFileVersionId;\n } else {\n // Load preview if file object has newly been populated in state\n loadPreview = !prevFile && !!file;\n }\n\n return loadPreview;\n }\n\n /**\n * Returns preview asset urls\n *\n * @return {string} base url\n */\n getBasePath(asset: string): string {\n const { staticHost, staticPath, language, previewLibraryVersion }: Props = this.props;\n const path: string = `${staticPath}/${previewLibraryVersion}/${language}/${asset}`;\n const suffix: string = staticHost.endsWith('/') ? path : `/${path}`;\n return `${staticHost}${suffix}`;\n }\n\n /**\n * Determines if preview assets are loaded\n *\n * @return {boolean} true if preview is loaded\n */\n isPreviewLibraryLoaded(): boolean {\n return !!global.Box && !!global.Box.Preview;\n }\n\n /**\n * Loads external css by appending a <link> element\n *\n * @return {void}\n */\n loadStylesheet(): void {\n const { head } = document;\n const url: string = this.getBasePath('preview.css');\n\n if (!head || head.querySelector(`link[rel=\"stylesheet\"][href=\"${url}\"]`)) {\n return;\n }\n\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.type = 'text/css';\n link.href = url;\n head.appendChild(link);\n }\n\n /**\n * Loads external script by appending a <script> element\n *\n * @return {void}\n */\n loadScript(): void {\n const { head } = document;\n const url: string = this.getBasePath('preview.js');\n\n if (!head || this.isPreviewLibraryLoaded()) {\n return;\n }\n\n const previewScript = head.querySelector(`script[src=\"${url}\"]`);\n if (previewScript) {\n return;\n }\n\n const script = document.createElement('script');\n script.src = url;\n script.addEventListener('load', this.loadPreview);\n head.appendChild(script);\n }\n\n /**\n * Focuses the preview on load.\n *\n * @return {void}\n */\n focusPreview() {\n const { autoFocus, getInnerRef }: Props = this.props;\n if (autoFocus && !isInputElement(document.activeElement)) {\n focus(getInnerRef());\n }\n }\n\n /**\n * Updates preview cache and prefetches a file\n *\n * @param {BoxItem} file - file to prefetch\n * @return {void}\n */\n updatePreviewCacheAndPrefetch(file: BoxItem, token: Token): void {\n if (!this.preview || !file || !file.id) {\n return;\n }\n\n this.preview.updateFileCache([file]);\n this.preview.prefetch({ fileId: file.id, token });\n }\n\n /**\n * Gets the file id\n *\n * @param {string|BoxItem} file - box file or file id\n * @return {string} file id\n */\n getFileId(file?: string | BoxItem): string {\n if (typeof file === 'string') {\n return file;\n }\n\n if (typeof file === 'object' && !!file.id) {\n return file.id;\n }\n\n throw InvalidIdError;\n }\n\n /**\n * Prefetches the next few preview files if any\n *\n * @param {Array<string|BoxItem>} files - files to prefetch\n * @return {void}\n */\n async prefetch(files: Array<string | BoxItem>): Promise<void> {\n const { token }: Props = this.props;\n const typedIds: string[] = files.map(file => getTypedFileId(this.getFileId(file)));\n await TokenService.cacheTokens(typedIds, token);\n files.forEach(file => {\n const fileId = this.getFileId(file);\n this.fetchFile(fileId, noop, noop, {\n refreshCache: false,\n });\n });\n }\n\n /**\n * Calculates the total file fetch time\n *\n * @return {number} the total fetch time\n */\n getTotalFileFetchTime(): number {\n if (!this.fetchFileStartTime || !this.fetchFileEndTime) {\n return 0;\n }\n\n return Math.round(this.fetchFileEndTime - this.fetchFileStartTime);\n }\n\n /**\n * Handler for 'preview_error' preview event\n *\n * @param {PreviewLibraryError} previewError - the error data emitted from preview\n * @return {void}\n */\n onPreviewError = ({ error, ...rest }: PreviewLibraryError): void => {\n const { code = ERROR_CODE_UNKNOWN } = error;\n const { onError } = this.props;\n\n // In case of error, there should be no thumbnail sidebar to account for\n this.setState({ isLoading: false, isThumbnailSidebarOpen: false });\n\n onError(\n error,\n code,\n {\n ...rest,\n error,\n },\n ORIGIN_PREVIEW,\n );\n };\n\n /**\n * Event handler 'preview_metric' which also adds in the file fetch time if it's a load event\n *\n * @param {Object} previewMetrics - the object emitted by 'preview_metric'\n * @return {void}\n */\n onPreviewMetric = (previewMetrics: PreviewMetrics): void => {\n const { logger } = this.props;\n const { event_name } = previewMetrics;\n let metrics = {\n ...previewMetrics,\n };\n\n // We need to add in the total file fetch time to the file_info_time and value (total)\n // as preview does not do the files call\n if (event_name === PREVIEW_LOAD_METRIC_EVENT) {\n const totalFetchFileTime = this.getTotalFileFetchTime();\n const totalTime = (previewMetrics.value || 0) + totalFetchFileTime;\n\n // If an unnatural load time occurs or is invalid, don't log a load event\n if (!totalTime) {\n return;\n }\n\n metrics = {\n ...previewMetrics,\n file_info_time: totalFetchFileTime,\n value: totalTime,\n };\n }\n\n logger.onPreviewMetric(metrics);\n };\n\n /**\n * Adds in the file fetch time to the preview metrics\n *\n * @param {Object} previewTimeMetrics - the preview time metrics\n * @return {Object} the preview time metrics merged with the files call time\n */\n addFetchFileTimeToPreviewMetrics(previewTimeMetrics: PreviewTimeMetrics): PreviewTimeMetrics {\n const totalFetchFileTime = this.getTotalFileFetchTime();\n const { rendering, conversion, preload } = previewTimeMetrics;\n\n // We need to add in the total file fetch time to the rendering and total as preview\n // does not do the files call. In the case the file is in the process of\n // being converted, we need to add to conversion instead of the render\n let totalConversion = conversion;\n let totalRendering = rendering;\n let totalPreload = preload;\n if (conversion) {\n totalConversion += totalFetchFileTime;\n } else {\n totalRendering += totalFetchFileTime;\n }\n\n if (totalPreload) {\n // Preload is optional, depending on file type\n totalPreload += totalFetchFileTime;\n }\n\n const previewMetrics = {\n conversion: totalConversion,\n rendering: totalRendering,\n total: totalRendering + totalConversion,\n preload: totalPreload,\n };\n\n return previewMetrics;\n }\n\n /**\n * onLoad function for preview\n *\n * @return {void}\n */\n onPreviewLoad = (data: Object): void => {\n const { onLoad, collection }: Props = this.props;\n const currentIndex = this.getFileIndex();\n const filesToPrefetch = collection.slice(currentIndex + 1, currentIndex + 5);\n const previewTimeMetrics = getProp(data, 'metrics.time');\n let loadData = data;\n\n if (previewTimeMetrics) {\n const totalPreviewMetrics = this.addFetchFileTimeToPreviewMetrics(previewTimeMetrics);\n loadData = {\n ...loadData,\n metrics: {\n ...loadData.metrics,\n time: totalPreviewMetrics,\n },\n };\n }\n\n onLoad(loadData);\n\n this.setState({ isLoading: false });\n this.focusPreview();\n\n if (this.preview && filesToPrefetch.length) {\n this.prefetch(filesToPrefetch);\n }\n\n this.handleCanPrint();\n };\n\n /**\n * Returns whether file can be downloaded based on file properties, permissions, and user-defined options.\n *\n * @return {boolean}\n */\n canDownload(): boolean {\n const { canDownload }: Props = this.props;\n const { file }: State = this.state;\n const isFileDownloadable =\n getProp(file, 'permissions.can_download', false) && getProp(file, 'is_download_available', false);\n return isFileDownloadable && !!canDownload;\n }\n\n /**\n * Returns whether file can be annotated based on permissions\n *\n * @return {boolean}\n */\n canAnnotate(): boolean {\n const { showAnnotations }: Props = this.props;\n const { file }: State = this.state;\n const isFileAnnotatable = getProp(file, 'permissions.can_annotate', false);\n return !!showAnnotations && isFileAnnotatable;\n }\n\n /**\n * Returns whether a preview should render annotations based on permissions\n *\n * @return {boolean}\n */\n canViewAnnotations(): boolean {\n const { showAnnotations }: Props = this.props;\n const { file }: State = this.state;\n const hasViewAllPermissions = getProp(file, 'permissions.can_view_annotations_all', false);\n const hasViewSelfPermissions = getProp(file, 'permissions.can_view_annotations_self', false);\n return !!showAnnotations && (this.canAnnotate() || hasViewAllPermissions || hasViewSelfPermissions);\n }\n\n handleCanPrint() {\n const preview = this.getPreview();\n this.setState({ canPrint: !!preview && (!preview.canPrint || preview.canPrint()) });\n }\n\n /**\n * Loads preview in the component using the preview library.\n *\n * @return {void}\n */\n loadPreview = async (): Promise<void> => {\n const {\n advancedContentInsights,\n annotatorState: { activeAnnotationId } = {},\n enableThumbnailsSidebar,\n fileOptions,\n onAnnotatorEvent,\n onAnnotator,\n onContentInsightsEventReport,\n previewExperiences,\n showAnnotationsControls,\n token: tokenOrTokenFunction,\n ...rest\n }: Props = this.props;\n const { file, selectedVersion, startAt }: State = this.state;\n\n if (!this.isPreviewLibraryLoaded() || !file || !tokenOrTokenFunction) {\n return;\n }\n\n const fileId = this.getFileId(file);\n\n if (fileId !== this.state.currentFileId) {\n return;\n }\n\n const fileOpts = { ...fileOptions };\n const token = typedId => TokenService.getReadTokens(typedId, tokenOrTokenFunction);\n\n if (selectedVersion) {\n setProp(fileOpts, [fileId, 'fileVersionId'], selectedVersion.id);\n setProp(fileOpts, [fileId, 'currentFileVersionId'], getProp(file, 'file_version.id'));\n }\n\n if (activeAnnotationId) {\n setProp(fileOpts, [fileId, 'annotations', 'activeId'], activeAnnotationId);\n }\n\n if (startAt) {\n setProp(fileOpts, [fileId, 'startAt'], startAt);\n }\n\n const previewOptions = {\n advancedContentInsights,\n container: `#${this.id} .bcpr-content`,\n enableThumbnailsSidebar,\n fileOptions: fileOpts,\n header: 'none',\n headerElement: `#${this.id} .bcpr-PreviewHeader`,\n experiences: previewExperiences,\n showAnnotations: this.canViewAnnotations(),\n showAnnotationsControls,\n showDownload: this.canDownload(),\n showLoading: false,\n showProgress: false,\n skipServerUpdate: true,\n useHotkeys: false,\n };\n const { Preview } = global.Box;\n this.preview = new Preview();\n this.preview.addListener('load', this.onPreviewLoad);\n this.preview.addListener('preview_error', this.onPreviewError);\n this.preview.addListener('preview_metric', this.onPreviewMetric);\n this.preview.addListener('thumbnailsOpen', () => this.setState({ isThumbnailSidebarOpen: true }));\n this.preview.addListener('thumbnailsClose', () => this.setState({ isThumbnailSidebarOpen: false }));\n\n if (showAnnotationsControls) {\n this.preview.addListener('annotator_create', onAnnotator);\n }\n\n this.preview.updateFileCache([file]);\n this.preview.show(file.id, token, {\n ...previewOptions,\n ...omit(rest, Object.keys(previewOptions)),\n });\n if (advancedContentInsights) {\n this.preview.addListener('advanced_insights_report', onContentInsightsEventReport);\n }\n };\n\n /**\n * Updates preview file from temporary staged file.\n *\n * @return {void}\n */\n loadFileFromStage = () => {\n if (this.stagedFile) {\n this.setState({ ...this.initialState, file: this.stagedFile }, () => {\n this.stagedFile = undefined;\n });\n }\n };\n\n /**\n * Removes the reload notification\n *\n * @return {void}\n */\n closeReloadNotification = () => {\n this.setState({ isReloadNotificationVisible: false });\n };\n\n /**\n * Tells the preview to resize\n *\n * @return {void}\n */\n onResize = (): void => {\n if (this.preview && this.preview.getCurrentViewer()) {\n this.preview.resize();\n }\n };\n\n /**\n * File fetch success callback\n *\n * @param {Object} file - Box file\n * @return {void}\n */\n fetchFileSuccessCallback = (file: BoxItem): void => {\n this.fetchFileEndTime = performance.now();\n\n const { file: currentFile }: State = this.state;\n const isExistingFile = currentFile ? currentFile.id === file.id : false;\n const isWatermarked = getProp(file, 'watermark_info.is_watermarked', false);\n\n // If the file is watermarked or if its a new file, then update the state\n // In this case preview should reload without prompting the user\n if (isWatermarked || !isExistingFile) {\n this.setState({ ...this.initialState, file });\n // $FlowFixMe file version and sha1 should exist at this point\n } else if (currentFile.file_version.sha1 !== file.file_version.sha1) {\n // If we are already prevewing the file that got updated then show the\n // user a notification to reload the file only if its sha1 changed\n this.stagedFile = file;\n this.setState({\n ...this.initialState,\n isReloadNotificationVisible: true,\n });\n }\n };\n\n /**\n * File fetch error callback\n *\n * @return {void}\n */\n fetchFileErrorCallback = (fileError: ElementsXhrError, code: string): void => {\n const { onError } = this.props;\n const errorCode = fileError.code || code;\n const error = {\n code: errorCode,\n message: fileError.message,\n };\n this.setState({ error, file: undefined, isLoading: false });\n onError(fileError, errorCode, {\n error: fileError,\n });\n };\n\n /**\n * Fetches a file\n *\n * @param {string} id file id\n * @param {Function|void} [successCallback] - Callback after file is fetched\n * @param {Function|void} [errorCallback] - Callback after error\n * @param {Object|void} [fetchOptions] - Fetch options\n * @return {void}\n */\n fetchFile(\n id: ?string,\n successCallback?: Function,\n errorCallback?: Function,\n fetchOptions: RequestOptions = {},\n ): void {\n if (!id) {\n return;\n }\n\n this.fetchFileStartTime = performance.now();\n this.fetchFileEndTime = null;\n\n this.api\n .getFileAPI()\n .getFile(\n id,\n successCallback || this.fetchFileSuccessCallback,\n errorCallback || this.fetchFileErrorCallback,\n {\n ...fetchOptions,\n fields: PREVIEW_FIELDS_TO_FETCH,\n },\n );\n }\n\n /**\n * Returns the preview instance\n *\n * @return {Preview} current instance of preview\n */\n getPreview = (): any => {\n const { file }: State = this.state;\n if (!this.preview || !file) {\n return null;\n }\n\n return this.preview;\n };\n\n /**\n * Returns the viewer instance being used by preview.\n * This will let child components access the viewers.\n *\n * @return {Viewer} current instance of the preview viewer\n */\n getViewer = (): any => {\n const preview = this.getPreview();\n const viewer = preview ? preview.getCurrentViewer() : null;\n return viewer && viewer.isLoaded() && !viewer.isDestroyed() ? viewer : null;\n };\n\n /**\n * Finds the index of current file inside the collection\n *\n * @return {number} -1 if not indexed\n */\n getFileIndex() {\n const { currentFileId }: State = this.state;\n const { collection }: Props = this.props;\n if (!currentFileId || collection.length < 2) {\n return -1;\n }\n\n return collection.findIndex(item => {\n if (typeof item === 'string') {\n return item === currentFileId;\n }\n\n return item.id === currentFileId;\n });\n }\n\n /**\n * Shows a preview of a file at the specified index in the current collection.\n *\n * @public\n * @param {number} index - Index of file to preview\n * @return {void}\n */\n navigateToIndex(index: number) {\n const { collection, onNavigate }: Props = this.props;\n const { length } = collection;\n if (length < 2 || index < 0 || index > length - 1) {\n return;\n }\n\n const fileOrId = collection[index];\n const fileId = typeof fileOrId === 'object' ? fileOrId.id || '' : fileOrId;\n\n this.setState(\n {\n currentFileId: fileId,\n },\n () => {\n // Execute navigation callback\n onNavigate(fileId);\n },\n );\n }\n\n /**\n * Shows a preview of the previous file.\n *\n * @public\n * @return {void}\n */\n navigateLeft = () => {\n const currentIndex = this.getFileIndex();\n const newIndex = currentIndex === 0 ? 0 : currentIndex - 1;\n if (newIndex !== currentIndex) {\n this.navigateToIndex(newIndex);\n }\n };\n\n /**\n * Shows a preview of the next file.\n *\n * @public\n * @return {void}\n */\n navigateRight = () => {\n const { collection }: Props = this.props;\n const currentIndex = this.getFileIndex();\n const newIndex = currentIndex === collection.length - 1 ? collection.length - 1 : currentIndex + 1;\n if (newIndex !== currentIndex) {\n this.navigateToIndex(newIndex);\n }\n };\n\n /**\n * Downloads file.\n *\n * @public\n * @return {void}\n */\n download = () => {\n const { onDownload }: Props = this.props;\n const { file }: State = this.state;\n if (this.preview) {\n this.preview.download();\n onDownload(cloneDeep(file));\n }\n };\n\n /**\n * Prints file.\n *\n * @public\n * @return {void}\n */\n print = () => {\n if (this.preview) {\n this.preview.print();\n }\n };\n\n /**\n * Mouse move handler that is throttled and show\n * the navigation arrows if applicable.\n *\n * @return {void}\n */\n onMouseMove = throttle(() => {\n const viewer = this.getViewer();\n const isPreviewing = !!viewer;\n const CLASS_NAVIGATION_VISIBILITY = 'bcpr-nav-is-visible';\n\n clearTimeout(this.mouseMoveTimeoutID);\n\n if (!this.previewContainer) {\n return;\n }\n\n // Always assume that navigation arrows will be hidden\n this.previewContainer.classList.remove(CLASS_NAVIGATION_VISIBILITY);\n\n // Only show it if either we aren't previewing or if we are then the viewer\n // is not blocking the show. If we are previewing then the viewer may choose\n // to not allow navigation arrows. This is mostly useful for videos since the\n // navigation arrows may interfere with the settings menu inside video player.\n if (this.previewContainer && (!isPreviewing || viewer.allowNavigationArrows())) {\n this.previewContainer.classList.add(CLASS_NAVIGATION_VISIBILITY);\n }\n\n this.mouseMoveTimeoutID = setTimeout(() => {\n if (this.previewContainer) {\n this.previewContainer.classList.remove(CLASS_NAVIGATION_VISIBILITY);\n }\n }, 1500);\n }, 1000);\n\n /**\n * Keyboard events\n *\n * @return {void}\n */\n onKeyDown = (event: SyntheticKeyboardEvent<HTMLElement>) => {\n const { useHotkeys }: Props = this.props;\n if (!useHotkeys) {\n return;\n }\n\n let consumed = false;\n const key = decode(event);\n const viewer = this.getViewer();\n\n // If focus was on an input or if the viewer doesn't exist\n // then don't bother doing anything further\n if (!key || !viewer || isInputElement(event.target)) {\n return;\n }\n\n if (typeof viewer.onKeydown === 'function') {\n consumed = !!viewer.onKeydown(key, event.nativeEvent);\n }\n\n if (!consumed) {\n switch (key) {\n case 'ArrowLeft':\n this.navigateLeft();\n consumed = true;\n break;\n case 'ArrowRight':\n this.navigateRight();\n consumed = true;\n break;\n default:\n // no-op\n }\n }\n\n if (consumed) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n /**\n * Handles version change events\n *\n * @param {string} [version] - The version that is now previewed\n * @param {object} [additionalVersionInfo] - extra info about the version\n */\n onVersionChange = (version?: BoxItemVersion, additionalVersionInfo: AdditionalVersionInfo = {}): void => {\n const { onVersionChange }: Props = this.props;\n this.updateVersionToCurrent = additionalVersionInfo.updateVersionToCurrent;\n\n onVersionChange(version, additionalVersionInfo);\n this.setState({\n selectedVersion: version,\n });\n };\n\n handleAnnotationSelect = ({ file_version, id, target }: Annotation) => {\n const { location = {} } = target;\n const { file, selectedVersion } = this.state;\n const annotationFileVersionId = getProp(file_version, 'id');\n const currentFileVersionId = getProp(file, 'file_version.id');\n const currentPreviewFileVersionId = getProp(selectedVersion, 'id', currentFileVersionId);\n const unit = startAtTypes[location.type];\n const viewer = this.getViewer();\n\n if (unit && annotationFileVersionId && annotationFileVersionId !== currentPreviewFileVersionId) {\n this.setState({\n startAt: {\n unit,\n value: location.value,\n },\n });\n }\n\n if (viewer) {\n viewer.emit('scrolltoannotation', { id, target });\n }\n };\n\n /**\n * Holds the reference the preview container\n *\n * @return {void}\n */\n containerRef = (container: ?HTMLDivElement) => {\n this.previewContainer = container;\n };\n\n /**\n * Refreshes the content sidebar panel\n *\n * @return {void}\n */\n refreshSidebar(): void {\n const { current: contentSidebar } = this.contentSidebar;\n\n if (contentSidebar) {\n contentSidebar.refresh();\n }\n }\n\n /**\n * Fetches a thumbnail for the page given\n *\n * @return {Promise|null} - promise resolves with the image HTMLElement or null if generation is in progress\n */\n getThumbnail = (pageNumber: ?number): Promise<HTMLElement> | null => {\n const preview = this.getPreview();\n if (preview && preview.viewer) {\n return preview.viewer.getThumbnail(pageNumber);\n }\n\n return null;\n };\n\n /**\n * Renders the file preview\n *\n * @inheritdoc\n * @return {Element}\n */\n render() {\n const {\n apiHost,\n collection,\n token,\n language,\n messages,\n className,\n contentSidebarProps,\n contentOpenWithProps,\n hasHeader,\n history,\n isLarge,\n isVeryLarge,\n logoUrl,\n onClose,\n measureRef,\n sharedLink,\n sharedLinkPassword,\n requestInterceptor,\n responseInterceptor,\n }: Props = this.props;\n\n const {\n canPrint,\n currentFileId,\n error,\n file,\n isLoading,\n isReloadNotificationVisible,\n isThumbnailSidebarOpen,\n selectedVersion,\n }: State = this.state;\n\n const styleClassName = classNames(\n 'be bcpr',\n {\n 'bcpr-thumbnails-open': isThumbnailSidebarOpen,\n },\n className,\n );\n\n if (!currentFileId) {\n return null;\n }\n\n const errorCode = getProp(error, 'code');\n const currentExtension = getProp(file, 'id') === currentFileId ? getProp(file, 'extension') : '';\n const currentVersionId = getProp(file, 'file_version.id');\n const selectedVersionId = getProp(selectedVersion, 'id', currentVersionId);\n const onHeaderClose = currentVersionId === selectedVersionId ? onClose : this.updateVersionToCurrent;\n\n /* eslint-disable jsx-a11y/no-static-element-interactions */\n /* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n return (\n <Internationalize language={language} messages={messages}>\n <div id={this.id} className={styleClassName} ref={measureRef} onKeyDown={this.onKeyDown} tabIndex={0}>\n {hasHeader && (\n <PreviewHeader\n file={file}\n logoUrl={logoUrl}\n token={token}\n onClose={onHeaderClose}\n onPrint={this.print}\n canDownload={this.canDownload()}\n canPrint={canPrint}\n onDownload={this.download}\n contentOpenWithProps={contentOpenWithProps}\n canAnnotate={this.canAnnotate()}\n selectedVersion={selectedVersion}\n />\n )}\n <div className=\"bcpr-body\">\n <div className=\"bcpr-container\" onMouseMove={this.onMouseMove} ref={this.containerRef}>\n {file && (\n <Measure bounds onResize={this.onResize}>\n {({ measureRef: previewRef }) => <div ref={previewRef} className=\"bcpr-content\" />}\n </Measure>\n )}\n <PreviewMask errorCode={errorCode} extension={currentExtension} isLoading={isLoading} />\n <PreviewNavigation\n collection={collection}\n currentIndex={this.getFileIndex()}\n onNavigateLeft={this.navigateLeft}\n onNavigateRight={this.navigateRight}\n />\n </div>\n {file && (\n <LoadableSidebar\n {...contentSidebarProps}\n apiHost={apiHost}\n token={token}\n cache={this.api.getCache()}\n fileId={currentFileId}\n getPreview={this.getPreview}\n getViewer={this.getViewer}\n history={history}\n isDefaultOpen={isLarge || isVeryLarge}\n language={language}\n ref={this.contentSidebar}\n sharedLink={sharedLink}\n sharedLinkPassword={sharedLinkPassword}\n requestInterceptor={requestInterceptor}\n responseInterceptor={responseInterceptor}\n onAnnotationSelect={this.handleAnnotationSelect}\n onVersionChange={this.onVersionChange}\n />\n )}\n </div>\n {isReloadNotificationVisible && (\n <ReloadNotification onClose={this.closeReloadNotification} onClick={this.loadFileFromStage} />\n )}\n </div>\n </Internationalize>\n );\n /* eslint-enable jsx-a11y/no-static-element-interactions */\n /* eslint-enable jsx-a11y/no-noninteractive-tabindex */\n }\n}\n\nexport type ContentPreviewProps = Props;\nexport { ContentPreview as ContentPreviewComponent };\nexport default flow([\n makeResponsive,\n withAnnotatorContext,\n withAnnotations,\n withRouter,\n withNavRouter,\n withFeatureProvider,\n withLogger(ORIGIN_CONTENT_PREVIEW),\n withErrorBoundary(ORIGIN_CONTENT_PREVIEW),\n])(ContentPreview);\n"],"file":"ContentPreview.js"}
|
|
@@ -62,10 +62,10 @@ function ContentSharing(_ref) {
|
|
|
62
62
|
|
|
63
63
|
|
|
64
64
|
React.useEffect(function () {
|
|
65
|
-
if (
|
|
65
|
+
if (apiHost && itemID && itemType && token) {
|
|
66
66
|
setAPI(createAPI(apiHost, itemID, itemType, token));
|
|
67
67
|
}
|
|
68
|
-
}, [
|
|
68
|
+
}, [apiHost, itemID, itemType, token]); // Reset state if the API has changed
|
|
69
69
|
|
|
70
70
|
React.useEffect(function () {
|
|
71
71
|
setIsVisible(!customButton);
|
|
@@ -75,10 +75,10 @@ function ContentSharing({
|
|
|
75
75
|
|
|
76
76
|
// Reset the API if necessary
|
|
77
77
|
React.useEffect(() => {
|
|
78
|
-
if (
|
|
78
|
+
if (apiHost && itemID && itemType && token) {
|
|
79
79
|
setAPI(createAPI(apiHost, itemID, itemType, token));
|
|
80
80
|
}
|
|
81
|
-
}, [
|
|
81
|
+
}, [apiHost, itemID, itemType, token]);
|
|
82
82
|
|
|
83
83
|
// Reset state if the API has changed
|
|
84
84
|
React.useEffect(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/content-sharing/ContentSharing.js"],"names":["React","API","SharingModal","CLIENT_NAME_CONTENT_SHARING","DEFAULT_HOSTNAME_API","createAPI","apiHost","itemID","itemType","token","clientName","id","ContentSharing","config","customButton","displayInModal","language","messages","uuid","useState","api","setAPI","launchButton","setLaunchButton","isVisible","setIsVisible","useEffect","cloneElement","onClick"],"mappings":";;;;;;;;AAAA;;;;;;;;AAQA,OAAO,6BAAP;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,GAAP,MAAgB,WAAhB;AACA,OAAOC,YAAP,MAAyB,gBAAzB;AACA,SAASC,2BAAT,EAAsCC,oBAAtC,QAAkE,iBAAlE;AAIA,OAAO,qBAAP;AACA,OAAO,sBAAP;AACA,OAAO,sBAAP;;AAiCA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAACC,OAAD,EAAUC,MAAV,EAAkBC,QAAlB,EAA4BC,KAA5B;AAAA,SACd,IAAIR,GAAJ,CAAQ;AACJK,IAAAA,OAAO,EAAPA,OADI;AAEJI,IAAAA,UAAU,EAAEP,2BAFR;AAGJQ,IAAAA,EAAE,YAAKH,QAAL,cAAiBD,MAAjB,CAHE;AAIJE,IAAAA,KAAK,EAALA;AAJI,GAAR,CADc;AAAA,CAAlB;;AAQA,SAASG,cAAT,OAWwB;AAAA,0BAVpBN,OAUoB;AAAA,MAVpBA,OAUoB,6BAVVF,oBAUU;AAAA,MATpBS,MASoB,QATpBA,MASoB;AAAA,MARpBC,YAQoB,QARpBA,YAQoB;AAAA,MAPpBC,cAOoB,QAPpBA,cAOoB;AAAA,MANpBR,MAMoB,QANpBA,MAMoB;AAAA,MALpBC,QAKoB,QALpBA,QAKoB;AAAA,MAJpBQ,QAIoB,QAJpBA,QAIoB;AAAA,MAHpBC,QAGoB,QAHpBA,QAGoB;AAAA,MAFpBR,KAEoB,QAFpBA,KAEoB;AAAA,MADpBS,IACoB,QADpBA,IACoB;;AAAA,wBACElB,KAAK,CAACmB,QAAN,CAA2Bd,SAAS,CAACC,OAAD,EAAUC,MAAV,EAAkBC,QAAlB,EAA4BC,KAA5B,CAApC,CADF;AAAA;AAAA,MACbW,GADa;AAAA,MACRC,MADQ;;AAAA,yBAEoBrB,KAAK,CAACmB,QAAN,CAA0C,IAA1C,CAFpB;AAAA;AAAA,MAEbG,YAFa;AAAA,MAECC,eAFD;;AAAA,yBAGcvB,KAAK,CAACmB,QAAN,CAAwB,CAACL,YAAzB,CAHd;AAAA;AAAA,MAGbU,SAHa;AAAA,MAGFC,YAHE,wBAKpB;;;AACAzB,EAAAA,KAAK,CAAC0B,SAAN,CAAgB,YAAM;AAClB,
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/content-sharing/ContentSharing.js"],"names":["React","API","SharingModal","CLIENT_NAME_CONTENT_SHARING","DEFAULT_HOSTNAME_API","createAPI","apiHost","itemID","itemType","token","clientName","id","ContentSharing","config","customButton","displayInModal","language","messages","uuid","useState","api","setAPI","launchButton","setLaunchButton","isVisible","setIsVisible","useEffect","cloneElement","onClick"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file ContentSharing Element\n * @description This is the top-level component for ContentSharing. It instantiates the API, which it then\n * passes to the SharingModal component either immediately (when no custom button is provided) or on\n * button click (when a custom button is provided).\n * @author Box\n */\nimport 'regenerator-runtime/runtime';\nimport * as React from 'react';\nimport API from '../../api';\nimport SharingModal from './SharingModal';\nimport { CLIENT_NAME_CONTENT_SHARING, DEFAULT_HOSTNAME_API } from '../../constants';\nimport type { ItemType, StringMap } from '../../common/types/core';\nimport type { USMConfig } from '../../features/unified-share-modal/flowTypes';\n\nimport '../common/base.scss';\nimport '../common/fonts.scss';\nimport '../common/modal.scss';\n\ntype ContentSharingProps = {\n /** apiHost - API hostname. Defaults to https://api.box.com */\n apiHost: string,\n /** config - Configuration object that shows/hides features in the USM */\n config?: USMConfig,\n /**\n * customButton - Clickable element for opening the SharingModal component.\n * This property should always be used in conjunction with displayInModal.\n */\n customButton?: React.Element<any>,\n /**\n * displayInModal - Whether the SharingModal component should be displayed in a modal.\n * If false, the SharingModal component will appear as a form within the surrounding page.\n * This property can be used with or without a customButton. If used without a customButton,\n * the modal will appear on page load. See ContentSharing.stories.js for examples.\n */\n displayInModal: boolean,\n /** itemID - Box file or folder ID */\n itemID: string,\n /** itemType - \"file\" or \"folder\" */\n itemType: ItemType,\n /** language - Language used for the element */\n language: string,\n /** messages - Localized strings used by the element */\n messages?: StringMap,\n /** token - Valid access token */\n token: string,\n /** uuid - Unique identifier, used for refreshing element visibility when called from the ES6 wrapper */\n uuid?: string,\n};\n\nconst createAPI = (apiHost, itemID, itemType, token) =>\n new API({\n apiHost,\n clientName: CLIENT_NAME_CONTENT_SHARING,\n id: `${itemType}_${itemID}`,\n token,\n });\n\nfunction ContentSharing({\n apiHost = DEFAULT_HOSTNAME_API,\n config,\n customButton,\n displayInModal,\n itemID,\n itemType,\n language,\n messages,\n token,\n uuid,\n}: ContentSharingProps) {\n const [api, setAPI] = React.useState<API | null>(createAPI(apiHost, itemID, itemType, token));\n const [launchButton, setLaunchButton] = React.useState<React.Element<any> | null>(null);\n const [isVisible, setIsVisible] = React.useState<boolean>(!customButton);\n\n // Reset the API if necessary\n React.useEffect(() => {\n if (apiHost && itemID && itemType && token) {\n setAPI(createAPI(apiHost, itemID, itemType, token));\n }\n }, [apiHost, itemID, itemType, token]);\n\n // Reset state if the API has changed\n React.useEffect(() => {\n setIsVisible(!customButton);\n }, [api, customButton, uuid]);\n\n React.useEffect(() => {\n if (customButton && !launchButton) {\n setLaunchButton(\n React.cloneElement(customButton, {\n onClick: () => {\n return setIsVisible(true);\n },\n }),\n );\n }\n }, [config, customButton, displayInModal, itemID, itemType, language, launchButton, messages, isVisible]);\n\n return (\n <>\n {launchButton}\n {api && (\n <SharingModal\n api={api}\n config={config}\n displayInModal={displayInModal}\n isVisible={isVisible}\n itemID={itemID}\n itemType={itemType}\n language={language}\n messages={messages}\n setIsVisible={setIsVisible}\n uuid={uuid}\n />\n )}\n </>\n );\n}\n\nexport default ContentSharing;\n"],"file":"ContentSharing.js"}
|