box-ui-elements 17.2.0-beta.2 → 17.2.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/explorer.js +16 -16
  2. package/dist/openwith.js +6 -6
  3. package/dist/picker.js +10 -10
  4. package/dist/preview.js +12 -12
  5. package/dist/sharing.js +8 -8
  6. package/dist/sidebar.js +9 -9
  7. package/dist/uploader.js +6 -6
  8. package/es/api/APIFactory.js +27 -0
  9. package/es/api/APIFactory.js.flow +26 -0
  10. package/es/api/APIFactory.js.map +1 -1
  11. package/es/api/Feed.js +225 -52
  12. package/es/api/Feed.js.flow +191 -26
  13. package/es/api/Feed.js.map +1 -1
  14. package/es/api/FileActivities.js +119 -0
  15. package/es/api/FileActivities.js.flow +88 -0
  16. package/es/api/FileActivities.js.map +1 -0
  17. package/es/api/Item.js +21 -18
  18. package/es/api/Item.js.flow +22 -15
  19. package/es/api/Item.js.map +1 -1
  20. package/es/api/fixtures.js +46 -1
  21. package/es/api/fixtures.js.flow +39 -1
  22. package/es/api/fixtures.js.map +1 -1
  23. package/es/common/types/feed.js +1 -1
  24. package/es/common/types/feed.js.flow +38 -0
  25. package/es/common/types/feed.js.map +1 -1
  26. package/es/components/pill-selector-dropdown/PillSelectorDropdown.stories.js +1 -1
  27. package/es/components/pill-selector-dropdown/PillSelectorDropdown.stories.js.flow +1 -1
  28. package/es/components/pill-selector-dropdown/PillSelectorDropdown.stories.js.map +1 -1
  29. package/es/constants.js +7 -0
  30. package/es/constants.js.flow +7 -0
  31. package/es/constants.js.map +1 -1
  32. package/es/elements/content-explorer/ContentExplorer.js +5 -18
  33. package/es/elements/content-explorer/ContentExplorer.js.flow +6 -16
  34. package/es/elements/content-explorer/ContentExplorer.js.map +1 -1
  35. package/es/elements/content-picker/ContentPicker.js +5 -8
  36. package/es/elements/content-picker/ContentPicker.js.flow +6 -9
  37. package/es/elements/content-picker/ContentPicker.js.map +1 -1
  38. package/es/elements/content-sharing/hooks/useSharedLink.js +1 -0
  39. package/es/elements/content-sharing/hooks/useSharedLink.js.flow +1 -0
  40. package/es/elements/content-sharing/hooks/useSharedLink.js.map +1 -1
  41. package/es/elements/content-sharing/types.js.flow +2 -1
  42. package/es/elements/content-sidebar/ActivitySidebar.js +6 -2
  43. package/es/elements/content-sidebar/ActivitySidebar.js.flow +11 -1
  44. package/es/elements/content-sidebar/ActivitySidebar.js.map +1 -1
  45. package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js +2 -0
  46. package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js.flow +3 -0
  47. package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js.map +1 -1
  48. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js +2 -0
  49. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js.flow +3 -0
  50. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js.map +1 -1
  51. package/es/features/unified-share-modal/UnifiedShareForm.js +8 -7
  52. package/es/features/unified-share-modal/UnifiedShareForm.js.flow +10 -8
  53. package/es/features/unified-share-modal/UnifiedShareForm.js.map +1 -1
  54. package/es/features/unified-share-modal/messages.js +1 -1
  55. package/es/features/unified-share-modal/messages.js.flow +2 -1
  56. package/es/features/unified-share-modal/messages.js.map +1 -1
  57. package/es/utils/fields.js +1 -1
  58. package/es/utils/fields.js.flow +1 -1
  59. package/es/utils/fields.js.map +1 -1
  60. package/i18n/en-US.js +1 -1
  61. package/i18n/en-US.properties +1 -1
  62. package/i18n/en-x-pseudo.js +1 -1
  63. package/package.json +1 -1
  64. package/src/api/APIFactory.js +26 -0
  65. package/src/api/Feed.js +191 -26
  66. package/src/api/FileActivities.js +88 -0
  67. package/src/api/Item.js +22 -15
  68. package/src/api/__tests__/Feed.test.js +94 -2
  69. package/src/api/__tests__/FileActivities.test.js +95 -0
  70. package/src/api/__tests__/Item.test.js +14 -12
  71. package/src/api/fixtures.js +39 -1
  72. package/src/common/types/feed.js +38 -0
  73. package/src/components/pill-selector-dropdown/PillSelectorDropdown.stories.js +1 -1
  74. package/src/constants.js +7 -0
  75. package/src/elements/content-explorer/ContentExplorer.js +6 -16
  76. package/src/elements/content-explorer/__tests__/ContentExplorer.test.js +2 -2
  77. package/src/elements/content-picker/ContentPicker.js +6 -9
  78. package/src/elements/content-sharing/hooks/useSharedLink.js +1 -0
  79. package/src/elements/content-sharing/types.js +2 -1
  80. package/src/elements/content-sidebar/ActivitySidebar.js +11 -1
  81. package/src/elements/content-sidebar/__tests__/ActivitySidebar.test.js +9 -4
  82. package/src/elements/content-sidebar/__tests__/__snapshots__/ActivitySidebar.test.js.snap +1 -0
  83. package/src/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js +3 -0
  84. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js +3 -0
  85. package/src/features/unified-share-modal/UnifiedShareForm.js +10 -8
  86. package/src/features/unified-share-modal/messages.js +2 -1
  87. package/src/utils/fields.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/content-explorer/ContentExplorer.js"],"names":["React","Component","classNames","cloneDeep","debounce","flow","getProp","noop","uniqueid","CreateFolderDialog","UploadDialog","Header","Pagination","SubHeader","makeResponsive","openUrlInsideIframe","Internationalize","API","MetadataQueryAPIHelper","Footer","PreviewDialog","ShareDialog","RenameDialog","DeleteConfirmationDialog","Content","isThumbnailReady","isFocusableElement","isInputElement","focus","FILE_SHARED_LINK_FIELDS_TO_FETCH","CONTENT_EXPLORER_FOLDER_FIELDS_TO_FETCH","LocalStore","withFeatureConsumer","withFeatureProvider","DEFAULT_HOSTNAME_UPLOAD","DEFAULT_HOSTNAME_API","DEFAULT_HOSTNAME_APP","DEFAULT_HOSTNAME_STATIC","DEFAULT_SEARCH_DEBOUNCE","SORT_ASC","FIELD_NAME","FIELD_SHARED_LINK","DEFAULT_ROOT","VIEW_SEARCH","VIEW_FOLDER","VIEW_ERROR","VIEW_RECENTS","VIEW_METADATA","VIEW_MODE_LIST","TYPE_FILE","TYPE_WEBLINK","TYPE_FOLDER","CLIENT_NAME_CONTENT_EXPLORER","DEFAULT_PAGE_NUMBER","DEFAULT_PAGE_SIZE","DEFAULT_VIEW_FILES","DEFAULT_VIEW_RECENTS","DEFAULT_VIEW_METADATA","ERROR_CODE_ITEM_NAME_INVALID","ERROR_CODE_ITEM_NAME_TOO_LONG","TYPED_ID_FOLDER_PREFIX","VIEW_MODE_GRID","GRID_VIEW_MAX_COLUMNS","GRID_VIEW_MIN_COLUMNS","localStoreViewMode","ContentExplorer","props","metadataQueryCollection","nextMarker","state","currentCollection","currentPageNumber","markers","cloneMarkers","setState","percentLoaded","error","view","console","id","searchQuery","fetchFolder","showRecents","search","showMetadataQueryResults","Error","triggerNavigationEvent","rootFolderId","currentId","currentOffset","limit","currentPageSize","sortBy","sortDirection","folderId","hasFolderChanged","hasSearchQuery","trim","length","offset","firstLoad","rootElement","currentUnloadedCollection","api","getFolderAPI","getFolder","collection","fetchFolderSuccessCallback","errorCallback","fields","forceFetch","item","type","isTouch","preview","selected","closeModals","updateCollection","query","getSearchAPI","searchSuccessCallback","trimmedQuery","debouncedSearch","cancel","undefined","permissions","canUpload","can_upload","isUploadModalOpen","access","canSetShareAccess","can_set_share_access","isLoading","getAPI","share","updatedItem","select","refreshCollection","entries","representation","getFileAPI","generateRepresentation","updatedRepresentation","updateItemInCollection","representations","slice","newItem","items","newCollection","map","callback","onSelect","selectedItem","focusedRow","findIndex","i","url","window","open","previewCallback","canPreview","can_preview","isPreviewModalOpen","downloadCallback","canDownload","onDownload","can_download","openUrl","getDownloadUrl","deleteCallback","isDeleteModalOpen","canDelete","onDelete","parent","parentId","can_delete","deleteItem","renameCallback","nameWithoutExt","extension","isRenameModalOpen","canRename","onRename","can_rename","errorCode","name","rename","code","createFolderCallback","isCreateFolderModalOpen","canCreateNewFolder","onCreate","create","shareCallback","getFolderFields","handleSharedLinkSuccess","getFile","getWebLinkAPI","getWeblink","isShareModalOpen","canShare","can_share","fetchSharedLinkInfo","table","focusedElementClassList","document","activeElement","classList","contains","event","target","key","toLowerCase","preventDefault","getViewMode","isFocusOnItem","globalModifier","upload","createFolder","newOffset","store","getItem","isSmall","isMedium","isLarge","maxWidthColumns","viewMode","setItem","forceUpdate","sliderValue","gridColumnCount","field","oldValue","newValue","metadataQueryAPIHelper","updateMetadata","updateMetadataSuccessCallback","updatedItems","collectionItem","clonedItem","forEach","itemField","split","pop","value","apiHost","initialPage","initialPageSize","language","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","token","uploadHost","clientName","rootName","destroy","clearCache","currentFolderId","defaultView","getElementById","appElement","firstElementChild","prevState","prevFolderId","metadataQuery","metadataQueryClone","marker","fetchMetadataQueryResults","showMetadataQueryResultsSuccessCallback","autoFocus","onNavigate","boxItem","finishNavigation","getRecentsAPI","recents","recentsSuccessCallback","fileAPI","selectedId","Promise","all","getThumbnailUrl","itemThumbnails","index","isSelected","currentItem","thumbnailUrl","attemptThumbnailGeneration","newSelectedItem","appHost","className","contentPreviewProps","contentUploaderProps","logoUrl","measureRef","messages","fieldsToShow","onPreview","onUpload","staticHost","staticPath","previewLibraryVersion","totalCount","styleClassName","allowUpload","allowCreate","isDefaultViewMetadata","isErrorView","maxGridColumnCount","getMaxNumberOfGridViewColumnsForWidth","hasNextMarker","hasPreviousMarker","onKeyDown","onGridViewSliderChange","sort","changeViewMode","Math","min","onItemClick","delete","download","tableRef","paginate","markerBasedPaginate","uploadSuccessHandler","changeShareAccess","getCache","contentSidebarProps","ContentExplorerComponent"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Content Explorer Component\n * @author Box\n */\n\nimport 'regenerator-runtime/runtime';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport cloneDeep from 'lodash/cloneDeep';\nimport debounce from 'lodash/debounce';\nimport flow from 'lodash/flow';\nimport getProp from 'lodash/get';\nimport noop from 'lodash/noop';\nimport uniqueid from 'lodash/uniqueId';\nimport CreateFolderDialog from '../common/create-folder-dialog';\nimport UploadDialog from '../common/upload-dialog';\nimport Header from '../common/header';\nimport Pagination from '../../features/pagination';\nimport SubHeader from '../common/sub-header/SubHeader';\nimport makeResponsive from '../common/makeResponsive';\nimport openUrlInsideIframe from '../../utils/iframe';\nimport Internationalize from '../common/Internationalize';\nimport API from '../../api';\nimport MetadataQueryAPIHelper from '../../features/metadata-based-view/MetadataQueryAPIHelper';\nimport Footer from './Footer';\nimport PreviewDialog from './PreviewDialog';\nimport ShareDialog from './ShareDialog';\nimport RenameDialog from './RenameDialog';\nimport DeleteConfirmationDialog from './DeleteConfirmationDialog';\nimport Content from './Content';\nimport isThumbnailReady from './utils';\nimport { isFocusableElement, isInputElement, focus } from '../../utils/dom';\nimport { FILE_SHARED_LINK_FIELDS_TO_FETCH } from '../../utils/fields';\nimport CONTENT_EXPLORER_FOLDER_FIELDS_TO_FETCH from './constants';\nimport LocalStore from '../../utils/LocalStore';\nimport { withFeatureConsumer, withFeatureProvider, type FeatureConfig } from '../common/feature-checking';\nimport {\n DEFAULT_HOSTNAME_UPLOAD,\n DEFAULT_HOSTNAME_API,\n DEFAULT_HOSTNAME_APP,\n DEFAULT_HOSTNAME_STATIC,\n DEFAULT_SEARCH_DEBOUNCE,\n SORT_ASC,\n FIELD_NAME,\n FIELD_SHARED_LINK,\n DEFAULT_ROOT,\n VIEW_SEARCH,\n VIEW_FOLDER,\n VIEW_ERROR,\n VIEW_RECENTS,\n VIEW_METADATA,\n VIEW_MODE_LIST,\n TYPE_FILE,\n TYPE_WEBLINK,\n TYPE_FOLDER,\n CLIENT_NAME_CONTENT_EXPLORER,\n DEFAULT_PAGE_NUMBER,\n DEFAULT_PAGE_SIZE,\n DEFAULT_VIEW_FILES,\n DEFAULT_VIEW_RECENTS,\n DEFAULT_VIEW_METADATA,\n ERROR_CODE_ITEM_NAME_INVALID,\n ERROR_CODE_ITEM_NAME_TOO_LONG,\n TYPED_ID_FOLDER_PREFIX,\n VIEW_MODE_GRID,\n} from '../../constants';\nimport type { ViewMode } from '../common/flowTypes';\nimport type { MetadataQuery, FieldsToShow } from '../../common/types/metadataQueries';\nimport type { MetadataFieldValue } from '../../common/types/metadata';\nimport type {\n View,\n DefaultView,\n StringMap,\n SortBy,\n SortDirection,\n Token,\n Access,\n Collection,\n BoxItemPermission,\n BoxItem,\n} from '../../common/types/core';\n\nimport '../common/fonts.scss';\nimport '../common/base.scss';\nimport '../common/modal.scss';\nimport './ContentExplorer.scss';\n\nconst GRID_VIEW_MAX_COLUMNS = 7;\nconst GRID_VIEW_MIN_COLUMNS = 1;\n\ntype Props = {\n apiHost: string,\n appHost: string,\n autoFocus: boolean,\n canCreateNewFolder: boolean,\n canDelete: boolean,\n canDownload: boolean,\n canPreview: boolean,\n canRename: boolean,\n canSetShareAccess: boolean,\n canShare: boolean,\n canUpload: boolean,\n className: string,\n contentPreviewProps: ContentPreviewProps,\n contentUploaderProps: ContentUploaderProps,\n currentFolderId?: string,\n defaultView: DefaultView,\n features: FeatureConfig,\n fieldsToShow?: FieldsToShow,\n initialPage: number,\n initialPageSize: number,\n isLarge: boolean,\n isMedium: boolean,\n isSmall: boolean,\n isTouch: boolean,\n isVeryLarge: boolean,\n language?: string,\n logoUrl?: string,\n measureRef?: Function,\n messages?: StringMap,\n metadataQuery?: MetadataQuery,\n onCreate: Function,\n onDelete: Function,\n onDownload: Function,\n onNavigate: Function,\n onPreview: Function,\n onRename: Function,\n onSelect: Function,\n onUpload: Function,\n previewLibraryVersion: string,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n rootFolderId: string,\n sharedLink?: string,\n sharedLinkPassword?: string,\n sortBy: SortBy,\n sortDirection: SortDirection,\n staticHost: string,\n staticPath: string,\n token: Token,\n uploadHost: string,\n};\n\ntype State = {\n currentCollection: Collection,\n currentOffset: number,\n currentPageNumber: number,\n currentPageSize: number,\n errorCode: string,\n focusedRow: number,\n gridColumnCount: number,\n isCreateFolderModalOpen: boolean,\n isDeleteModalOpen: boolean,\n isLoading: boolean,\n isPreviewModalOpen: boolean,\n isRenameModalOpen: boolean,\n isShareModalOpen: boolean,\n isUploadModalOpen: boolean,\n markers: Array<?string>,\n rootName: string,\n searchQuery: string,\n selected?: BoxItem,\n sortBy: SortBy,\n sortDirection: SortDirection,\n view: View,\n};\n\nconst localStoreViewMode = 'bce.defaultViewMode';\n\nclass ContentExplorer extends Component<Props, State> {\n id: string;\n\n api: API;\n\n state: State;\n\n props: Props;\n\n table: any;\n\n rootElement: HTMLElement;\n\n appElement: HTMLElement;\n\n globalModifier: boolean;\n\n firstLoad: boolean = true; // Keeps track of very 1st load\n\n store: LocalStore = new LocalStore();\n\n metadataQueryAPIHelper: MetadataQueryAPIHelper;\n\n static defaultProps = {\n rootFolderId: DEFAULT_ROOT,\n sortBy: FIELD_NAME,\n sortDirection: SORT_ASC,\n canDownload: true,\n canDelete: true,\n canUpload: true,\n canRename: true,\n canShare: true,\n canPreview: true,\n canSetShareAccess: true,\n canCreateNewFolder: true,\n autoFocus: false,\n apiHost: DEFAULT_HOSTNAME_API,\n appHost: DEFAULT_HOSTNAME_APP,\n staticHost: DEFAULT_HOSTNAME_STATIC,\n uploadHost: DEFAULT_HOSTNAME_UPLOAD,\n className: '',\n onDelete: noop,\n onDownload: noop,\n onPreview: noop,\n onRename: noop,\n onCreate: noop,\n onSelect: noop,\n onUpload: noop,\n onNavigate: noop,\n defaultView: DEFAULT_VIEW_FILES,\n initialPage: DEFAULT_PAGE_NUMBER,\n initialPageSize: DEFAULT_PAGE_SIZE,\n contentPreviewProps: {\n contentSidebarProps: {},\n },\n contentUploaderProps: {},\n };\n\n /**\n * [constructor]\n *\n * @private\n * @return {ContentExplorer}\n */\n constructor(props: Props) {\n super(props);\n\n const {\n apiHost,\n initialPage,\n initialPageSize,\n language,\n requestInterceptor,\n responseInterceptor,\n rootFolderId,\n sharedLink,\n sharedLinkPassword,\n sortBy,\n sortDirection,\n token,\n uploadHost,\n }: Props = props;\n\n this.api = new API({\n apiHost,\n clientName: CLIENT_NAME_CONTENT_EXPLORER,\n id: `${TYPED_ID_FOLDER_PREFIX}${rootFolderId}`,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n uploadHost,\n });\n\n this.id = uniqueid('bce_');\n\n this.state = {\n currentCollection: {},\n currentOffset: initialPageSize * (initialPage - 1),\n currentPageSize: initialPageSize,\n currentPageNumber: 0,\n errorCode: '',\n focusedRow: 0,\n gridColumnCount: 4,\n isCreateFolderModalOpen: false,\n isDeleteModalOpen: false,\n isLoading: false,\n isPreviewModalOpen: false,\n isRenameModalOpen: false,\n isShareModalOpen: false,\n isUploadModalOpen: false,\n markers: [],\n rootName: '',\n searchQuery: '',\n sortBy,\n sortDirection,\n view: VIEW_FOLDER,\n };\n }\n\n /**\n * Destroys api instances\n *\n * @private\n * @return {void}\n */\n clearCache(): void {\n this.api.destroy(true);\n }\n\n /**\n * Cleanup\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentWillUnmount() {\n this.clearCache();\n }\n\n /**\n * Fetches the root folder on load\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidMount() {\n const { currentFolderId, defaultView }: Props = this.props;\n this.rootElement = ((document.getElementById(this.id): any): HTMLElement);\n this.appElement = ((this.rootElement.firstElementChild: any): HTMLElement);\n\n switch (defaultView) {\n case DEFAULT_VIEW_RECENTS:\n this.showRecents();\n break;\n case DEFAULT_VIEW_METADATA:\n this.showMetadataQueryResults();\n break;\n default:\n this.fetchFolder(currentFolderId);\n }\n }\n\n /**\n * Fetches the current folder if different\n * from what was already fetched before.\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidUpdate({ currentFolderId: prevFolderId }: Props, prevState: State): void {\n const { currentFolderId }: Props = this.props;\n const {\n currentCollection: { id },\n }: State = prevState;\n\n if (prevFolderId === currentFolderId) {\n return;\n }\n\n if (typeof currentFolderId === 'string' && id !== currentFolderId) {\n this.fetchFolder(currentFolderId);\n }\n }\n\n /**\n * Metadata queries success callback\n *\n * @private\n * @param {Object} metadataQueryCollection - Metadata query response collection\n * @return {void}\n */\n showMetadataQueryResultsSuccessCallback = (metadataQueryCollection: Collection): void => {\n const { nextMarker } = metadataQueryCollection;\n const { currentCollection, currentPageNumber, markers }: State = this.state;\n const cloneMarkers = [...markers];\n if (nextMarker) {\n cloneMarkers[currentPageNumber + 1] = nextMarker;\n }\n this.setState({\n currentCollection: {\n ...currentCollection,\n ...metadataQueryCollection,\n percentLoaded: 100,\n },\n markers: cloneMarkers,\n });\n };\n\n /**\n * Queries metadata_queries/execute API and fetches the result\n *\n * @private\n * @return {void}\n */\n showMetadataQueryResults() {\n const { metadataQuery = {} }: Props = this.props;\n const { currentPageNumber, markers }: State = this.state;\n const metadataQueryClone = cloneDeep(metadataQuery);\n\n if (currentPageNumber === 0) {\n // Preserve the marker as part of the original query\n markers[currentPageNumber] = metadataQueryClone.marker;\n }\n\n if (typeof markers[currentPageNumber] === 'string') {\n // Set marker to the query to get next set of results\n metadataQueryClone.marker = markers[currentPageNumber];\n }\n\n if (typeof metadataQueryClone.limit !== 'number') {\n // Set limit to the query for pagination support\n metadataQueryClone.limit = DEFAULT_PAGE_SIZE;\n }\n // Reset search state, the view and show busy indicator\n this.setState({\n searchQuery: '',\n currentCollection: this.currentUnloadedCollection(),\n view: VIEW_METADATA,\n });\n this.metadataQueryAPIHelper = new MetadataQueryAPIHelper(this.api);\n this.metadataQueryAPIHelper.fetchMetadataQueryResults(\n metadataQueryClone,\n this.showMetadataQueryResultsSuccessCallback,\n this.errorCallback,\n );\n }\n\n /**\n * Resets the collection so that the loading bar starts showing\n *\n * @private\n * @return {Collection}\n */\n currentUnloadedCollection(): Collection {\n const { currentCollection }: State = this.state;\n return Object.assign(currentCollection, {\n percentLoaded: 0,\n });\n }\n\n /**\n * Network error callback\n *\n * @private\n * @param {Error} error error object\n * @return {void}\n */\n errorCallback = (error: any) => {\n this.setState({\n view: VIEW_ERROR,\n });\n /* eslint-disable no-console */\n console.error(error);\n /* eslint-enable no-console */\n };\n\n /**\n * Focuses the grid and fires navigate event\n *\n * @private\n * @return {void}\n */\n finishNavigation() {\n const { autoFocus }: Props = this.props;\n const {\n currentCollection: { percentLoaded },\n }: State = this.state;\n\n // If loading for the very first time, only allow focus if autoFocus is true\n if (this.firstLoad && !autoFocus) {\n this.firstLoad = false;\n return;\n }\n\n // Don't focus the grid until its loaded and user is not already on an interactable element\n if (percentLoaded === 100 && !isFocusableElement(document.activeElement)) {\n focus(this.rootElement, '.bce-item-row');\n this.setState({ focusedRow: 0 });\n }\n\n this.firstLoad = false;\n }\n\n /**\n * Refreshing the item collection depending upon the view.\n * Navigation event is prevented.\n *\n * @private\n * @return {void}\n */\n refreshCollection = () => {\n const {\n currentCollection: { id },\n view,\n searchQuery,\n }: State = this.state;\n if (view === VIEW_FOLDER && id) {\n this.fetchFolder(id, false);\n } else if (view === VIEW_RECENTS) {\n this.showRecents(false);\n } else if (view === VIEW_SEARCH && searchQuery) {\n this.search(searchQuery);\n } else if (view === VIEW_METADATA) {\n this.showMetadataQueryResults();\n } else {\n throw new Error('Cannot refresh incompatible view!');\n }\n };\n\n /**\n * Folder fetch success callback\n *\n * @private\n * @param {Object} collection - item collection object\n * @param {Boolean|void} triggerNavigationEvent - To trigger navigate event and focus grid\n * @return {void}\n */\n fetchFolderSuccessCallback(collection: Collection, triggerNavigationEvent: boolean): void {\n const { onNavigate, rootFolderId }: Props = this.props;\n const { boxItem, id, name }: Collection = collection;\n const { selected }: State = this.state;\n const rootName = id === rootFolderId ? name : '';\n\n // Close any open modals\n this.closeModals();\n\n this.updateCollection(collection, selected, () => {\n if (triggerNavigationEvent) {\n // Fire folder navigation event\n this.setState({ rootName }, this.finishNavigation);\n if (boxItem) {\n onNavigate(cloneDeep(boxItem));\n }\n } else {\n this.setState({ rootName });\n }\n });\n }\n\n /**\n * Fetches a folder, defaults to fetching root folder\n *\n * @private\n * @param {string|void} [id] folder id\n * @param {Boolean|void} [triggerNavigationEvent] To trigger navigate event\n * @return {void}\n */\n fetchFolder = (id?: string, triggerNavigationEvent?: boolean = true) => {\n const { rootFolderId }: Props = this.props;\n const {\n currentCollection: { id: currentId },\n currentOffset,\n currentPageSize: limit,\n searchQuery = '',\n sortBy,\n sortDirection,\n }: State = this.state;\n const folderId: string = typeof id === 'string' ? id : rootFolderId;\n const hasFolderChanged = currentId && currentId !== folderId;\n const hasSearchQuery = !!searchQuery.trim().length;\n const offset = hasFolderChanged || hasSearchQuery ? 0 : currentOffset; // Reset offset on folder or mode change\n\n // If we are navigating around, aka not first load\n // then reset the focus to the root so that after\n // the collection loads the activeElement is not the\n // button that was clicked to fetch the folder\n if (!this.firstLoad) {\n this.rootElement.focus();\n }\n\n // Reset search state, the view and show busy indicator\n this.setState({\n searchQuery: '',\n view: VIEW_FOLDER,\n currentCollection: this.currentUnloadedCollection(),\n currentOffset: offset,\n });\n\n // Fetch the folder using folder API\n this.api.getFolderAPI().getFolder(\n folderId,\n limit,\n offset,\n sortBy,\n sortDirection,\n (collection: Collection) => {\n this.fetchFolderSuccessCallback(collection, triggerNavigationEvent);\n },\n this.errorCallback,\n { fields: CONTENT_EXPLORER_FOLDER_FIELDS_TO_FETCH, forceFetch: true },\n );\n };\n\n /**\n * Action performed when clicking on an item\n *\n * @private\n * @param {Object|string} item - the clicked box item\n * @return {void}\n */\n onItemClick = (item: BoxItem | string) => {\n // If the id was passed in, just use that\n if (typeof item === 'string') {\n this.fetchFolder(item);\n return;\n }\n\n const { id, type }: BoxItem = item;\n const { isTouch }: Props = this.props;\n\n if (type === TYPE_FOLDER) {\n this.fetchFolder(id);\n return;\n }\n\n if (isTouch) {\n return;\n }\n\n this.preview(item);\n };\n\n /**\n * Search success callback\n *\n * @private\n * @param {Object} collection item collection object\n * @return {void}\n */\n searchSuccessCallback = (collection: Collection) => {\n const { selected }: State = this.state;\n\n // Close any open modals\n this.closeModals();\n\n this.updateCollection(collection, selected);\n };\n\n /**\n * Debounced searching\n *\n * @private\n * @param {string} id folder id\n * @param {string} query search string\n * @return {void}\n */\n debouncedSearch = debounce((id: string, query: string) => {\n const { currentOffset, currentPageSize }: State = this.state;\n\n this.api\n .getSearchAPI()\n .search(id, query, currentPageSize, currentOffset, this.searchSuccessCallback, this.errorCallback, {\n fields: CONTENT_EXPLORER_FOLDER_FIELDS_TO_FETCH,\n forceFetch: true,\n });\n }, DEFAULT_SEARCH_DEBOUNCE);\n\n /**\n * Searches\n *\n * @private\n * @param {string} query search string\n * @return {void}\n */\n search = (query: string) => {\n const { rootFolderId }: Props = this.props;\n const {\n currentCollection: { id },\n currentOffset,\n searchQuery,\n }: State = this.state;\n const folderId = typeof id === 'string' ? id : rootFolderId;\n const trimmedQuery: string = query.trim();\n\n if (!query) {\n // Cancel the debounce so we don't search on a previous query\n this.debouncedSearch.cancel();\n\n // Query was cleared out, load the prior folder\n // The prior folder is always the parent folder for search\n this.setState({ currentOffset: 0 }, () => {\n this.fetchFolder(folderId, false);\n });\n\n return;\n }\n\n if (!trimmedQuery) {\n // Query now only has bunch of spaces\n // do nothing and but update prior state\n this.setState({\n searchQuery: query,\n });\n return;\n }\n\n this.setState({\n currentCollection: this.currentUnloadedCollection(),\n currentOffset: trimmedQuery === searchQuery ? currentOffset : 0,\n searchQuery: query,\n selected: undefined,\n view: VIEW_SEARCH,\n });\n\n this.debouncedSearch(folderId, query);\n };\n\n /**\n * Recents fetch success callback\n *\n * @private\n * @param {Object} collection item collection object\n * @param {Boolean} triggerNavigationEvent - To trigger navigate event\n * @return {void}\n */\n recentsSuccessCallback(collection: Collection, triggerNavigationEvent: boolean) {\n if (triggerNavigationEvent) {\n this.updateCollection(collection, undefined, this.finishNavigation);\n } else {\n this.updateCollection(collection);\n }\n }\n\n /**\n * Shows recents.\n *\n * @private\n * @param {Boolean|void} [triggerNavigationEvent] To trigger navigate event\n * @return {void}\n */\n showRecents(triggerNavigationEvent: boolean = true): void {\n const { rootFolderId }: Props = this.props;\n\n // Reset search state, the view and show busy indicator\n this.setState({\n searchQuery: '',\n view: VIEW_RECENTS,\n currentCollection: this.currentUnloadedCollection(),\n currentOffset: 0,\n });\n\n // Fetch the folder using folder API\n this.api.getRecentsAPI().recents(\n rootFolderId,\n (collection: Collection) => {\n this.recentsSuccessCallback(collection, triggerNavigationEvent);\n },\n this.errorCallback,\n { fields: CONTENT_EXPLORER_FOLDER_FIELDS_TO_FETCH, forceFetch: true },\n );\n }\n\n /**\n * Uploads\n *\n * @private\n * @param {File} file dom file object\n * @return {void}\n */\n upload = () => {\n const {\n currentCollection: { id, permissions },\n }: State = this.state;\n const { canUpload }: Props = this.props;\n if (!canUpload || !id || !permissions) {\n return;\n }\n\n const { can_upload }: BoxItemPermission = permissions;\n if (!can_upload) {\n return;\n }\n\n this.setState({\n isUploadModalOpen: true,\n });\n };\n\n /**\n * Upload success handler\n *\n * @private\n * @param {File} file dom file object\n * @return {void}\n */\n uploadSuccessHandler = () => {\n const {\n currentCollection: { id },\n }: State = this.state;\n this.fetchFolder(id, false);\n };\n\n /**\n * Changes the share access of an item\n *\n * @private\n * @param {string} access share access\n * @return {void}\n */\n changeShareAccess = (access: Access) => {\n const { selected }: State = this.state;\n const { canSetShareAccess }: Props = this.props;\n if (!selected || !canSetShareAccess) {\n return;\n }\n\n const { permissions, type }: BoxItem = selected;\n if (!permissions || !type) {\n return;\n }\n\n const { can_set_share_access }: BoxItemPermission = permissions;\n if (!can_set_share_access) {\n return;\n }\n\n this.setState({ isLoading: true });\n this.api.getAPI(type).share(selected, access, (updatedItem: BoxItem) => {\n this.setState({ isLoading: false });\n this.select(updatedItem);\n });\n };\n\n /**\n * Chages the sort by and sort direction\n *\n * @private\n * @param {string} sortBy - field to sort by\n * @param {string} sortDirection - sort direction\n * @return {void}\n */\n sort = (sortBy: SortBy, sortDirection: SortDirection) => {\n const {\n currentCollection: { id },\n }: State = this.state;\n if (id) {\n this.setState({ sortBy, sortDirection }, this.refreshCollection);\n }\n };\n\n /**\n * Sets state with currentCollection updated to have items.selected properties\n * set according to the given selected param. Also updates the selected item in the\n * currentCollection. selectedItem will be set to the selected state\n * item if it is in currentCollection, otherwise it will be set to undefined.\n *\n * @private\n * @param {Collection} collection - collection that needs to be updated\n * @param {Object} [selectedItem] - The item that should be selected in that collection (if present)\n * @param {Function} [callback] - callback function that should be called after setState occurs\n * @return {void}\n */\n async updateCollection(collection: Collection, selectedItem: ?BoxItem, callback: Function = noop): Object {\n const newCollection: Collection = cloneDeep(collection);\n const { items = [] } = newCollection;\n const fileAPI = this.api.getFileAPI(false);\n const selectedId = selectedItem ? selectedItem.id : null;\n let newSelectedItem: ?BoxItem;\n\n const itemThumbnails = await Promise.all(\n items.map(item => {\n return item.type === TYPE_FILE ? fileAPI.getThumbnailUrl(item) : null;\n }),\n );\n\n newCollection.items = items.map((item, index) => {\n const isSelected = item.id === selectedId;\n const currentItem = isSelected ? selectedItem : item;\n const thumbnailUrl = itemThumbnails[index];\n\n const newItem = {\n ...currentItem,\n selected: isSelected,\n thumbnailUrl,\n };\n\n if (item.type === TYPE_FILE && thumbnailUrl && !isThumbnailReady(newItem)) {\n this.attemptThumbnailGeneration(newItem);\n }\n\n // Only if selectedItem is in the current collection do we want to set selected state\n if (isSelected) {\n newSelectedItem = newItem;\n }\n\n return newItem;\n });\n this.setState({ currentCollection: newCollection, selected: newSelectedItem }, callback);\n }\n\n /**\n * Attempts to generate a thumbnail for the given item and assigns the\n * item its thumbnail url if successful\n *\n * @param {BoxItem} item - item to generate thumbnail for\n * @return {Promise<void>}\n */\n attemptThumbnailGeneration = async (item: BoxItem): Promise<void> => {\n const entries = getProp(item, 'representations.entries');\n const representation = getProp(entries, '[0]');\n\n if (representation) {\n const updatedRepresentation = await this.api.getFileAPI(false).generateRepresentation(representation);\n if (updatedRepresentation !== representation) {\n this.updateItemInCollection({\n ...cloneDeep(item),\n representations: {\n entries: [updatedRepresentation, ...entries.slice(1)],\n },\n });\n }\n }\n };\n\n /**\n * Update item in this.state.currentCollection\n *\n * @param {BoxItem} newItem - item with updated properties\n * @return {void}\n */\n updateItemInCollection = (newItem: BoxItem): void => {\n const { currentCollection } = this.state;\n const { items = [] } = currentCollection;\n const newCollection = { ...currentCollection };\n\n newCollection.items = items.map(item => (item.id === newItem.id ? newItem : item));\n this.setState({ currentCollection: newCollection });\n };\n\n /**\n * Selects or unselects an item\n *\n * @private\n * @param {Object} item - file or folder object\n * @param {Function|void} [onSelect] - optional on select callback\n * @return {void}\n */\n select = (item: BoxItem, callback: Function = noop): void => {\n const { selected, currentCollection }: State = this.state;\n const { items = [] } = currentCollection;\n const { onSelect }: Props = this.props;\n\n if (item === selected) {\n callback(item);\n return;\n }\n\n const selectedItem: BoxItem = { ...item, selected: true };\n\n this.updateCollection(currentCollection, selectedItem, () => {\n onSelect(cloneDeep([selectedItem]));\n callback(selectedItem);\n });\n\n const focusedRow: number = items.findIndex((i: BoxItem) => i.id === item.id);\n\n this.setState({ focusedRow });\n };\n\n /**\n * Selects the clicked file and then previews it\n * or opens it, if it was a web link\n *\n * @private\n * @param {Object} item - file or folder object\n * @return {void}\n */\n preview = (item: BoxItem): void => {\n const { type, url }: BoxItem = item;\n if (type === TYPE_WEBLINK) {\n window.open(url);\n return;\n }\n\n this.select(item, this.previewCallback);\n };\n\n /**\n * Previews a file\n *\n * @private\n * @param {Object} item - file or folder object\n * @return {void}\n */\n previewCallback = (): void => {\n const { selected }: State = this.state;\n const { canPreview }: Props = this.props;\n if (!selected || !canPreview) {\n return;\n }\n\n const { permissions } = selected;\n if (!permissions) {\n return;\n }\n\n const { can_preview }: BoxItemPermission = permissions;\n if (!can_preview) {\n return;\n }\n\n this.setState({ isPreviewModalOpen: true });\n };\n\n /**\n * Selects the clicked file and then downloads it\n *\n * @private\n * @param {Object} item - file or folder object\n * @return {void}\n */\n download = (item: BoxItem): void => {\n this.select(item, this.downloadCallback);\n };\n\n /**\n * Downloads a file\n *\n * @private\n * @return {void}\n */\n downloadCallback = (): void => {\n const { selected }: State = this.state;\n const { canDownload, onDownload }: Props = this.props;\n if (!selected || !canDownload) {\n return;\n }\n\n const { id, permissions } = selected;\n if (!id || !permissions) {\n return;\n }\n\n const { can_download }: BoxItemPermission = permissions;\n if (!can_download) {\n return;\n }\n\n const openUrl: Function = (url: string) => {\n openUrlInsideIframe(url);\n onDownload(cloneDeep([selected]));\n };\n\n const { type }: BoxItem = selected;\n if (type === TYPE_FILE) {\n this.api.getFileAPI().getDownloadUrl(id, selected, openUrl, noop);\n }\n };\n\n /**\n * Selects the clicked file and then deletes it\n *\n * @private\n * @param {Object} item - file or folder object\n * @return {void}\n */\n delete = (item: BoxItem): void => {\n this.select(item, this.deleteCallback);\n };\n\n /**\n * Deletes a file\n *\n * @private\n * @return {void}\n */\n deleteCallback = (): void => {\n const { selected, isDeleteModalOpen }: State = this.state;\n const { canDelete, onDelete }: Props = this.props;\n if (!selected || !canDelete) {\n return;\n }\n\n const { id, permissions, parent, type }: BoxItem = selected;\n if (!id || !permissions || !parent || !type) {\n return;\n }\n\n const { id: parentId } = parent;\n const { can_delete }: BoxItemPermission = permissions;\n if (!can_delete || !parentId) {\n return;\n }\n\n if (!isDeleteModalOpen) {\n this.setState({ isDeleteModalOpen: true });\n return;\n }\n\n this.setState({ isLoading: true });\n this.api.getAPI(type).deleteItem(selected, () => {\n onDelete(cloneDeep([selected]));\n this.refreshCollection();\n });\n };\n\n /**\n * Selects the clicked file and then renames it\n *\n * @private\n * @param {Object} item - file or folder object\n * @return {void}\n */\n rename = (item: BoxItem): void => {\n this.select(item, this.renameCallback);\n };\n\n /**\n * Callback for renaming an item\n *\n * @private\n * @param {string} value new item name\n * @return {void}\n */\n renameCallback = (nameWithoutExt: string, extension: string): void => {\n const { selected, isRenameModalOpen }: State = this.state;\n const { canRename, onRename }: Props = this.props;\n if (!selected || !canRename) {\n return;\n }\n\n const { id, permissions, type }: BoxItem = selected;\n if (!id || !permissions || !type) {\n return;\n }\n\n const { can_rename }: BoxItemPermission = permissions;\n if (!can_rename) {\n return;\n }\n\n if (!isRenameModalOpen || !nameWithoutExt) {\n this.setState({ isRenameModalOpen: true, errorCode: '' });\n return;\n }\n\n const name = `${nameWithoutExt}${extension}`;\n if (!nameWithoutExt.trim()) {\n this.setState({\n errorCode: ERROR_CODE_ITEM_NAME_INVALID,\n isLoading: false,\n });\n return;\n }\n\n this.setState({ isLoading: true });\n this.api.getAPI(type).rename(\n selected,\n name.trim(),\n (updatedItem: BoxItem) => {\n this.setState({ isRenameModalOpen: false });\n this.refreshCollection();\n this.select(updatedItem);\n onRename(cloneDeep(selected));\n },\n ({ code }) => {\n this.setState({ errorCode: code, isLoading: false });\n },\n );\n };\n\n /**\n * Creates a new folder\n *\n * @private\n * @return {void}\n */\n createFolder = (): void => {\n this.createFolderCallback();\n };\n\n /**\n * New folder callback\n *\n * @private\n * @param {string} name - folder name\n * @return {void}\n */\n createFolderCallback = (name?: string): void => {\n const { isCreateFolderModalOpen, currentCollection }: State = this.state;\n const { canCreateNewFolder, onCreate }: Props = this.props;\n if (!canCreateNewFolder) {\n return;\n }\n\n const { id, permissions }: Collection = currentCollection;\n if (!id || !permissions) {\n return;\n }\n\n const { can_upload }: BoxItemPermission = permissions;\n if (!can_upload) {\n return;\n }\n\n if (!isCreateFolderModalOpen || !name) {\n this.setState({ isCreateFolderModalOpen: true, errorCode: '' });\n return;\n }\n\n if (!name.trim()) {\n this.setState({\n errorCode: ERROR_CODE_ITEM_NAME_INVALID,\n isLoading: false,\n });\n return;\n }\n\n if (name.length > 255) {\n this.setState({\n errorCode: ERROR_CODE_ITEM_NAME_TOO_LONG,\n isLoading: false,\n });\n return;\n }\n\n this.setState({ isLoading: true });\n this.api.getFolderAPI().create(\n id,\n name.trim(),\n (item: BoxItem) => {\n this.refreshCollection();\n this.select(item);\n onCreate(cloneDeep(item));\n },\n ({ code }) => {\n this.setState({\n errorCode: code,\n isLoading: false,\n });\n },\n );\n };\n\n /**\n * Selects the clicked file and then shares it\n *\n * @private\n * @param {Object} item - file or folder object\n * @return {void}\n */\n share = (item: BoxItem): void => {\n this.select(item, this.shareCallback);\n };\n\n /**\n * Fetch the shared link info\n * @param {BoxItem} item - The item (folder, file, weblink)\n * @returns {void}\n */\n fetchSharedLinkInfo = (item: BoxItem): void => {\n const { id, type }: BoxItem = item;\n\n switch (type) {\n case TYPE_FOLDER:\n this.api.getFolderAPI().getFolderFields(id, this.handleSharedLinkSuccess, noop, {\n fields: FILE_SHARED_LINK_FIELDS_TO_FETCH,\n });\n break;\n case TYPE_FILE:\n this.api\n .getFileAPI()\n .getFile(id, this.handleSharedLinkSuccess, noop, { fields: FILE_SHARED_LINK_FIELDS_TO_FETCH });\n break;\n case TYPE_WEBLINK:\n this.api\n .getWebLinkAPI()\n .getWeblink(id, this.handleSharedLinkSuccess, noop, { fields: FILE_SHARED_LINK_FIELDS_TO_FETCH });\n break;\n default:\n throw new Error('Unknown Type');\n }\n };\n\n /**\n * Handles the shared link info by either creating a share link using enterprise defaults if\n * it does not already exist, otherwise update the item in the state currentCollection.\n *\n * @param {Object} item file or folder\n * @returns {void}\n */\n handleSharedLinkSuccess = (newItem: BoxItem) => {\n const { currentCollection } = this.state;\n\n if (!newItem[FIELD_SHARED_LINK]) {\n const { canSetShareAccess }: Props = this.props;\n if (!newItem || !canSetShareAccess) {\n return;\n }\n\n const { permissions, type } = newItem;\n if (!permissions || !type) {\n return;\n }\n\n // create a shared link with default access, and update the collection\n const access = undefined;\n this.api.getAPI(type).share(newItem, access, (updatedItem: BoxItem) => {\n this.updateCollection(currentCollection, updatedItem, () => this.setState({ isShareModalOpen: true }));\n });\n } else {\n // update collection with existing shared link\n this.updateCollection(currentCollection, newItem, () => this.setState({ isShareModalOpen: true }));\n }\n };\n\n /**\n * Chages the sort by and sort direction\n *\n * @private\n * @return {void}\n */\n shareCallback = (): void => {\n const { selected }: State = this.state;\n const { canShare }: Props = this.props;\n\n if (!selected || !canShare) {\n return;\n }\n\n const { permissions } = selected;\n if (!permissions) {\n return;\n }\n\n const { can_share }: BoxItemPermission = permissions;\n if (!can_share) {\n return;\n }\n\n this.fetchSharedLinkInfo(selected);\n };\n\n /**\n * Saves reference to table component\n *\n * @private\n * @param {Component} react component\n * @return {void}\n */\n tableRef = (table: React$Component<*, *>): void => {\n this.table = table;\n };\n\n /**\n * Closes the modal dialogs that may be open\n *\n * @private\n * @return {void}\n */\n closeModals = (): void => {\n const { focusedRow }: State = this.state;\n\n this.setState({\n isLoading: false,\n isDeleteModalOpen: false,\n isRenameModalOpen: false,\n isCreateFolderModalOpen: false,\n isShareModalOpen: false,\n isUploadModalOpen: false,\n isPreviewModalOpen: false,\n });\n\n const {\n selected,\n currentCollection: { items = [] },\n }: State = this.state;\n if (selected && items.length > 0) {\n focus(this.rootElement, `.bce-item-row-${focusedRow}`);\n }\n };\n\n /**\n * Returns whether the currently focused element is an item\n *\n * @returns {bool}\n */\n isFocusOnItem = () => {\n const focusedElementClassList = document.activeElement?.classList;\n return focusedElementClassList && focusedElementClassList.contains('be-item-label');\n };\n\n /**\n * Keyboard events\n *\n * @private\n * @return {void}\n */\n onKeyDown = (event: SyntheticKeyboardEvent<HTMLElement>) => {\n if (isInputElement(event.target)) {\n return;\n }\n\n const { rootFolderId }: Props = this.props;\n const key = event.key.toLowerCase();\n\n switch (key) {\n case '/':\n focus(this.rootElement, '.be-search input[type=\"search\"]', false);\n event.preventDefault();\n break;\n case 'arrowdown':\n if (this.getViewMode() === VIEW_MODE_GRID) {\n if (!this.isFocusOnItem()) {\n focus(this.rootElement, '.be-item-name .be-item-label', false);\n event.preventDefault();\n }\n } else {\n focus(this.rootElement, '.bce-item-row', false);\n this.setState({ focusedRow: 0 });\n event.preventDefault();\n }\n break;\n case 'g':\n break;\n case 'b':\n if (this.globalModifier) {\n focus(this.rootElement, '.be-breadcrumb button', false);\n event.preventDefault();\n }\n\n break;\n case 'f':\n if (this.globalModifier) {\n this.fetchFolder(rootFolderId);\n event.preventDefault();\n }\n\n break;\n case 'u':\n if (this.globalModifier) {\n this.upload();\n event.preventDefault();\n }\n\n break;\n case 'r':\n if (this.globalModifier) {\n this.showRecents();\n event.preventDefault();\n }\n\n break;\n case 'n':\n if (this.globalModifier) {\n this.createFolder();\n event.preventDefault();\n }\n\n break;\n default:\n this.globalModifier = false;\n return;\n }\n\n this.globalModifier = key === 'g';\n };\n\n /**\n * Handle pagination changes for offset based pagination\n *\n * @param {number} newOffset - the new page offset value\n */\n paginate = (newOffset: number) => {\n this.setState({ currentOffset: newOffset }, this.refreshCollection);\n };\n\n /**\n * Handle pagination changes for marker based pagination\n * @param {number} newOffset - the new page offset value\n */\n markerBasedPaginate = (newOffset: number) => {\n const { currentPageNumber } = this.state;\n this.setState(\n {\n currentPageNumber: currentPageNumber + newOffset, // newOffset could be negative\n },\n this.refreshCollection,\n );\n };\n\n /**\n * Get the current viewMode, checking local store if applicable\n *\n * @return {ViewMode}\n */\n getViewMode = (): ViewMode => this.store.getItem(localStoreViewMode) || VIEW_MODE_LIST;\n\n /**\n * Get the maximum number of grid view columns based on the current width of the\n * content explorer.\n *\n * @return {number}\n */\n getMaxNumberOfGridViewColumnsForWidth = (): number => {\n const { isSmall, isMedium, isLarge } = this.props;\n let maxWidthColumns = GRID_VIEW_MAX_COLUMNS;\n if (isSmall) {\n maxWidthColumns = 1;\n } else if (isMedium) {\n maxWidthColumns = 3;\n } else if (isLarge) {\n maxWidthColumns = 5;\n }\n return maxWidthColumns;\n };\n\n /**\n * Change the current view mode\n *\n * @param {ViewMode} viewMode - the new view mode\n * @return {void}\n */\n changeViewMode = (viewMode: ViewMode): void => {\n this.store.setItem(localStoreViewMode, viewMode);\n this.forceUpdate();\n };\n\n /**\n * Callback for when value of GridViewSlider changes\n *\n * @param {number} sliderValue - value of slider\n * @return {void}\n */\n onGridViewSliderChange = (sliderValue: number): void => {\n // need to do this calculation since lowest value of grid view slider\n // means highest number of columns\n const gridColumnCount = GRID_VIEW_MAX_COLUMNS - sliderValue + 1;\n this.setState({ gridColumnCount });\n };\n\n /**\n * Function to update metadata field value in metadata based view\n * @param {BoxItem} item - file item whose metadata is being changed\n * @param {string} field - metadata template field name\n * @param {MetadataFieldValue} oldValue - current value\n * @param {MetadataFieldValue} newVlaue - new value the field to be updated to\n */\n\n updateMetadata = (\n item: BoxItem,\n field: string,\n oldValue: ?MetadataFieldValue,\n newValue: ?MetadataFieldValue,\n ): void => {\n this.metadataQueryAPIHelper.updateMetadata(\n item,\n field,\n oldValue,\n newValue,\n () => {\n this.updateMetadataSuccessCallback(item, field, newValue);\n },\n this.errorCallback,\n );\n };\n\n updateMetadataSuccessCallback = (item: BoxItem, field: string, newValue: ?MetadataFieldValue): void => {\n const { currentCollection }: State = this.state;\n const { items = [], nextMarker } = currentCollection;\n const updatedItems = items.map(collectionItem => {\n const clonedItem = cloneDeep(collectionItem);\n if (item.id === clonedItem.id) {\n const fields = getProp(clonedItem, 'metadata.enterprise.fields', []);\n fields.forEach(itemField => {\n if (itemField.key.split('.').pop() === field) {\n itemField.value = newValue; // set updated metadata value to correct item in currentCollection\n }\n });\n }\n return clonedItem;\n });\n\n this.setState({\n currentCollection: {\n items: updatedItems,\n nextMarker,\n percentLoaded: 100,\n },\n });\n };\n\n /**\n * Renders the file picker\n *\n * @private\n * @inheritdoc\n * @return {Element}\n */\n render() {\n const {\n apiHost,\n appHost,\n canCreateNewFolder,\n canDelete,\n canDownload,\n canPreview,\n canRename,\n canSetShareAccess,\n canShare,\n canUpload,\n className,\n contentPreviewProps,\n contentUploaderProps,\n defaultView,\n isMedium,\n isSmall,\n isTouch,\n language,\n logoUrl,\n measureRef,\n messages,\n fieldsToShow,\n onDownload,\n onPreview,\n onUpload,\n requestInterceptor,\n responseInterceptor,\n rootFolderId,\n sharedLink,\n sharedLinkPassword,\n staticHost,\n staticPath,\n previewLibraryVersion,\n token,\n uploadHost,\n }: Props = this.props;\n\n const {\n currentCollection,\n currentPageNumber,\n currentPageSize,\n errorCode,\n focusedRow,\n gridColumnCount,\n isCreateFolderModalOpen,\n isDeleteModalOpen,\n isLoading,\n isPreviewModalOpen,\n isRenameModalOpen,\n isShareModalOpen,\n isUploadModalOpen,\n markers,\n rootName,\n searchQuery,\n selected,\n view,\n }: State = this.state;\n\n const { id, offset, permissions, totalCount }: Collection = currentCollection;\n const { can_upload }: BoxItemPermission = permissions || {};\n const styleClassName = classNames('be bce', className);\n const allowUpload: boolean = canUpload && !!can_upload;\n const allowCreate: boolean = canCreateNewFolder && !!can_upload;\n const isDefaultViewMetadata: boolean = defaultView === DEFAULT_VIEW_METADATA;\n const isErrorView: boolean = view === VIEW_ERROR;\n\n const viewMode = this.getViewMode();\n const maxGridColumnCount = this.getMaxNumberOfGridViewColumnsForWidth();\n\n const hasNextMarker: boolean = !!markers[currentPageNumber + 1];\n const hasPreviousMarker: boolean = currentPageNumber === 1 || !!markers[currentPageNumber - 1];\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} data-testid=\"content-explorer\">\n <div className=\"be-app-element\" onKeyDown={this.onKeyDown} tabIndex={0}>\n {!isDefaultViewMetadata && (\n <>\n <Header\n view={view}\n isSmall={isSmall}\n searchQuery={searchQuery}\n logoUrl={logoUrl}\n onSearch={this.search}\n />\n <SubHeader\n view={view}\n viewMode={viewMode}\n rootId={rootFolderId}\n isSmall={isSmall}\n rootName={rootName}\n currentCollection={currentCollection}\n canUpload={allowUpload}\n canCreateNewFolder={allowCreate}\n gridColumnCount={gridColumnCount}\n gridMaxColumns={GRID_VIEW_MAX_COLUMNS}\n gridMinColumns={GRID_VIEW_MIN_COLUMNS}\n maxGridColumnCountForWidth={maxGridColumnCount}\n onUpload={this.upload}\n onCreate={this.createFolder}\n onGridViewSliderChange={this.onGridViewSliderChange}\n onItemClick={this.fetchFolder}\n onSortChange={this.sort}\n onViewModeChange={this.changeViewMode}\n />\n </>\n )}\n <Content\n canDelete={canDelete}\n canDownload={canDownload}\n canPreview={canPreview}\n canRename={canRename}\n canSetShareAccess={canSetShareAccess}\n canShare={canShare}\n currentCollection={currentCollection}\n focusedRow={focusedRow}\n gridColumnCount={Math.min(gridColumnCount, maxGridColumnCount)}\n isMedium={isMedium}\n isSmall={isSmall}\n isTouch={isTouch}\n fieldsToShow={fieldsToShow}\n onItemClick={this.onItemClick}\n onItemDelete={this.delete}\n onItemDownload={this.download}\n onItemPreview={this.preview}\n onItemRename={this.rename}\n onItemSelect={this.select}\n onItemShare={this.share}\n onMetadataUpdate={this.updateMetadata}\n onSortChange={this.sort}\n rootElement={this.rootElement}\n rootId={rootFolderId}\n selected={selected}\n tableRef={this.tableRef}\n view={view}\n viewMode={viewMode}\n />\n {!isErrorView && (\n <Footer>\n <Pagination\n hasNextMarker={hasNextMarker}\n hasPrevMarker={hasPreviousMarker}\n offset={offset}\n onOffsetChange={this.paginate}\n pageSize={currentPageSize}\n totalCount={totalCount}\n onMarkerBasedPageChange={this.markerBasedPaginate}\n />\n </Footer>\n )}\n </div>\n {allowUpload && !!this.appElement ? (\n <UploadDialog\n isOpen={isUploadModalOpen}\n currentFolderId={id}\n token={token}\n sharedLink={sharedLink}\n sharedLinkPassword={sharedLinkPassword}\n apiHost={apiHost}\n uploadHost={uploadHost}\n onClose={this.uploadSuccessHandler}\n parentElement={this.rootElement}\n appElement={this.appElement}\n onUpload={onUpload}\n contentUploaderProps={contentUploaderProps}\n requestInterceptor={requestInterceptor}\n responseInterceptor={responseInterceptor}\n />\n ) : null}\n {allowCreate && !!this.appElement ? (\n <CreateFolderDialog\n isOpen={isCreateFolderModalOpen}\n onCreate={this.createFolderCallback}\n onCancel={this.closeModals}\n isLoading={isLoading}\n errorCode={errorCode}\n parentElement={this.rootElement}\n appElement={this.appElement}\n />\n ) : null}\n {canDelete && selected && !!this.appElement ? (\n <DeleteConfirmationDialog\n isOpen={isDeleteModalOpen}\n onDelete={this.deleteCallback}\n onCancel={this.closeModals}\n item={selected}\n isLoading={isLoading}\n parentElement={this.rootElement}\n appElement={this.appElement}\n />\n ) : null}\n {canRename && selected && !!this.appElement ? (\n <RenameDialog\n isOpen={isRenameModalOpen}\n onRename={this.renameCallback}\n onCancel={this.closeModals}\n item={selected}\n isLoading={isLoading}\n errorCode={errorCode}\n parentElement={this.rootElement}\n appElement={this.appElement}\n />\n ) : null}\n {canShare && selected && !!this.appElement ? (\n <ShareDialog\n isOpen={isShareModalOpen}\n canSetShareAccess={canSetShareAccess}\n onShareAccessChange={this.changeShareAccess}\n onCancel={this.refreshCollection}\n item={selected}\n isLoading={isLoading}\n parentElement={this.rootElement}\n appElement={this.appElement}\n />\n ) : null}\n {canPreview && selected && !!this.appElement ? (\n <PreviewDialog\n isOpen={isPreviewModalOpen}\n isTouch={isTouch}\n onCancel={this.closeModals}\n item={selected}\n currentCollection={cloneDeep(currentCollection)}\n token={token}\n parentElement={this.rootElement}\n appElement={this.appElement}\n onPreview={onPreview}\n onDownload={onDownload}\n canDownload={canDownload}\n cache={this.api.getCache()}\n apiHost={apiHost}\n appHost={appHost}\n staticHost={staticHost}\n staticPath={staticPath}\n previewLibraryVersion={previewLibraryVersion}\n sharedLink={sharedLink}\n sharedLinkPassword={sharedLinkPassword}\n contentPreviewProps={contentPreviewProps}\n requestInterceptor={requestInterceptor}\n responseInterceptor={responseInterceptor}\n />\n ) : null}\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 { ContentExplorer as ContentExplorerComponent };\nexport default flow([makeResponsive, withFeatureConsumer, withFeatureProvider])(ContentExplorer);\n"],"file":"ContentExplorer.js"}
1
+ {"version":3,"sources":["../../../src/elements/content-explorer/ContentExplorer.js"],"names":["React","Component","classNames","cloneDeep","debounce","flow","getProp","noop","uniqueid","CreateFolderDialog","UploadDialog","Header","Pagination","SubHeader","makeResponsive","openUrlInsideIframe","Internationalize","API","MetadataQueryAPIHelper","Footer","PreviewDialog","ShareDialog","RenameDialog","DeleteConfirmationDialog","Content","isThumbnailReady","isFocusableElement","isInputElement","focus","FILE_SHARED_LINK_FIELDS_TO_FETCH","CONTENT_EXPLORER_FOLDER_FIELDS_TO_FETCH","LocalStore","withFeatureConsumer","withFeatureProvider","DEFAULT_HOSTNAME_UPLOAD","DEFAULT_HOSTNAME_API","DEFAULT_HOSTNAME_APP","DEFAULT_HOSTNAME_STATIC","DEFAULT_SEARCH_DEBOUNCE","SORT_ASC","FIELD_NAME","FIELD_SHARED_LINK","DEFAULT_ROOT","VIEW_SEARCH","VIEW_FOLDER","VIEW_ERROR","VIEW_RECENTS","VIEW_METADATA","VIEW_MODE_LIST","TYPE_FILE","TYPE_WEBLINK","TYPE_FOLDER","CLIENT_NAME_CONTENT_EXPLORER","DEFAULT_PAGE_NUMBER","DEFAULT_PAGE_SIZE","DEFAULT_VIEW_FILES","DEFAULT_VIEW_RECENTS","DEFAULT_VIEW_METADATA","ERROR_CODE_ITEM_NAME_INVALID","ERROR_CODE_ITEM_NAME_TOO_LONG","TYPED_ID_FOLDER_PREFIX","VIEW_MODE_GRID","GRID_VIEW_MAX_COLUMNS","GRID_VIEW_MIN_COLUMNS","localStoreViewMode","ContentExplorer","props","metadataQueryCollection","nextMarker","state","currentCollection","currentPageNumber","markers","cloneMarkers","setState","percentLoaded","error","view","console","id","searchQuery","fetchFolder","showRecents","search","showMetadataQueryResults","Error","triggerNavigationEvent","rootFolderId","currentId","currentOffset","limit","currentPageSize","sortBy","sortDirection","folderId","hasFolderChanged","hasSearchQuery","trim","length","offset","firstLoad","rootElement","currentUnloadedCollection","api","getFolderAPI","getFolder","collection","fetchFolderSuccessCallback","errorCallback","fields","forceFetch","item","type","isTouch","preview","selected","closeModals","updateCollection","query","getSearchAPI","searchSuccessCallback","trimmedQuery","debouncedSearch","cancel","undefined","permissions","canUpload","can_upload","isUploadModalOpen","access","canSetShareAccess","can_set_share_access","isLoading","getAPI","share","updatedItem","select","refreshCollection","entries","representation","getFileAPI","generateRepresentation","updatedRepresentation","updateItemInCollection","representations","slice","newItem","items","newCollection","map","callback","onSelect","selectedItem","focusedRow","findIndex","i","url","window","open","previewCallback","canPreview","can_preview","isPreviewModalOpen","downloadCallback","canDownload","onDownload","can_download","openUrl","getDownloadUrl","deleteCallback","isDeleteModalOpen","canDelete","onDelete","parent","parentId","can_delete","deleteItem","renameCallback","nameWithoutExt","extension","isRenameModalOpen","canRename","onRename","can_rename","errorCode","name","rename","code","createFolderCallback","isCreateFolderModalOpen","canCreateNewFolder","onCreate","create","shareCallback","getFolderFields","handleSharedLinkSuccess","getFile","getWebLinkAPI","getWeblink","isShareModalOpen","canShare","can_share","fetchSharedLinkInfo","table","focusedElementClassList","document","activeElement","classList","contains","event","target","key","toLowerCase","preventDefault","getViewMode","isFocusOnItem","globalModifier","upload","createFolder","newOffset","store","getItem","isSmall","isMedium","isLarge","maxWidthColumns","viewMode","setItem","forceUpdate","sliderValue","gridColumnCount","field","oldValue","newValue","metadataQueryAPIHelper","updateMetadata","updateMetadataSuccessCallback","updatedItems","collectionItem","clonedItem","forEach","itemField","split","pop","value","apiHost","initialPage","initialPageSize","language","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","token","uploadHost","clientName","rootName","destroy","clearCache","currentFolderId","defaultView","getElementById","appElement","firstElementChild","prevState","prevFolderId","metadataQuery","metadataQueryClone","marker","fetchMetadataQueryResults","showMetadataQueryResultsSuccessCallback","autoFocus","onNavigate","boxItem","finishNavigation","getRecentsAPI","recents","recentsSuccessCallback","fileAPI","selectedId","Promise","all","getThumbnailUrl","itemThumbnails","index","isSelected","currentItem","thumbnailUrl","attemptThumbnailGeneration","newSelectedItem","appHost","className","contentPreviewProps","contentUploaderProps","logoUrl","measureRef","messages","fieldsToShow","onPreview","onUpload","staticHost","staticPath","previewLibraryVersion","totalCount","styleClassName","allowUpload","allowCreate","isDefaultViewMetadata","isErrorView","maxGridColumnCount","getMaxNumberOfGridViewColumnsForWidth","hasNextMarker","hasPreviousMarker","onKeyDown","onGridViewSliderChange","sort","changeViewMode","Math","min","onItemClick","delete","download","tableRef","paginate","markerBasedPaginate","uploadSuccessHandler","changeShareAccess","getCache","contentSidebarProps","ContentExplorerComponent"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Content Explorer Component\n * @author Box\n */\n\nimport 'regenerator-runtime/runtime';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport cloneDeep from 'lodash/cloneDeep';\nimport debounce from 'lodash/debounce';\nimport flow from 'lodash/flow';\nimport getProp from 'lodash/get';\nimport noop from 'lodash/noop';\nimport uniqueid from 'lodash/uniqueId';\nimport CreateFolderDialog from '../common/create-folder-dialog';\nimport UploadDialog from '../common/upload-dialog';\nimport Header from '../common/header';\nimport Pagination from '../../features/pagination';\nimport SubHeader from '../common/sub-header/SubHeader';\nimport makeResponsive from '../common/makeResponsive';\nimport openUrlInsideIframe from '../../utils/iframe';\nimport Internationalize from '../common/Internationalize';\nimport API from '../../api';\nimport MetadataQueryAPIHelper from '../../features/metadata-based-view/MetadataQueryAPIHelper';\nimport Footer from './Footer';\nimport PreviewDialog from './PreviewDialog';\nimport ShareDialog from './ShareDialog';\nimport RenameDialog from './RenameDialog';\nimport DeleteConfirmationDialog from './DeleteConfirmationDialog';\nimport Content from './Content';\nimport isThumbnailReady from './utils';\nimport { isFocusableElement, isInputElement, focus } from '../../utils/dom';\nimport { FILE_SHARED_LINK_FIELDS_TO_FETCH } from '../../utils/fields';\nimport CONTENT_EXPLORER_FOLDER_FIELDS_TO_FETCH from './constants';\nimport LocalStore from '../../utils/LocalStore';\nimport { withFeatureConsumer, withFeatureProvider, type FeatureConfig } from '../common/feature-checking';\nimport {\n DEFAULT_HOSTNAME_UPLOAD,\n DEFAULT_HOSTNAME_API,\n DEFAULT_HOSTNAME_APP,\n DEFAULT_HOSTNAME_STATIC,\n DEFAULT_SEARCH_DEBOUNCE,\n SORT_ASC,\n FIELD_NAME,\n FIELD_SHARED_LINK,\n DEFAULT_ROOT,\n VIEW_SEARCH,\n VIEW_FOLDER,\n VIEW_ERROR,\n VIEW_RECENTS,\n VIEW_METADATA,\n VIEW_MODE_LIST,\n TYPE_FILE,\n TYPE_WEBLINK,\n TYPE_FOLDER,\n CLIENT_NAME_CONTENT_EXPLORER,\n DEFAULT_PAGE_NUMBER,\n DEFAULT_PAGE_SIZE,\n DEFAULT_VIEW_FILES,\n DEFAULT_VIEW_RECENTS,\n DEFAULT_VIEW_METADATA,\n ERROR_CODE_ITEM_NAME_INVALID,\n ERROR_CODE_ITEM_NAME_TOO_LONG,\n TYPED_ID_FOLDER_PREFIX,\n VIEW_MODE_GRID,\n} from '../../constants';\nimport type { ViewMode } from '../common/flowTypes';\nimport type { MetadataQuery, FieldsToShow } from '../../common/types/metadataQueries';\nimport type { MetadataFieldValue } from '../../common/types/metadata';\nimport type {\n View,\n DefaultView,\n StringMap,\n SortBy,\n SortDirection,\n Token,\n Access,\n Collection,\n BoxItemPermission,\n BoxItem,\n} from '../../common/types/core';\n\nimport '../common/fonts.scss';\nimport '../common/base.scss';\nimport '../common/modal.scss';\nimport './ContentExplorer.scss';\n\nconst GRID_VIEW_MAX_COLUMNS = 7;\nconst GRID_VIEW_MIN_COLUMNS = 1;\n\ntype Props = {\n apiHost: string,\n appHost: string,\n autoFocus: boolean,\n canCreateNewFolder: boolean,\n canDelete: boolean,\n canDownload: boolean,\n canPreview: boolean,\n canRename: boolean,\n canSetShareAccess: boolean,\n canShare: boolean,\n canUpload: boolean,\n className: string,\n contentPreviewProps: ContentPreviewProps,\n contentUploaderProps: ContentUploaderProps,\n currentFolderId?: string,\n defaultView: DefaultView,\n features: FeatureConfig,\n fieldsToShow?: FieldsToShow,\n initialPage: number,\n initialPageSize: number,\n isLarge: boolean,\n isMedium: boolean,\n isSmall: boolean,\n isTouch: boolean,\n isVeryLarge: boolean,\n language?: string,\n logoUrl?: string,\n measureRef?: Function,\n messages?: StringMap,\n metadataQuery?: MetadataQuery,\n onCreate: Function,\n onDelete: Function,\n onDownload: Function,\n onNavigate: Function,\n onPreview: Function,\n onRename: Function,\n onSelect: Function,\n onUpload: Function,\n previewLibraryVersion: string,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n rootFolderId: string,\n sharedLink?: string,\n sharedLinkPassword?: string,\n sortBy: SortBy,\n sortDirection: SortDirection,\n staticHost: string,\n staticPath: string,\n token: Token,\n uploadHost: string,\n};\n\ntype State = {\n currentCollection: Collection,\n currentOffset: number,\n currentPageNumber: number,\n currentPageSize: number,\n errorCode: string,\n focusedRow: number,\n gridColumnCount: number,\n isCreateFolderModalOpen: boolean,\n isDeleteModalOpen: boolean,\n isLoading: boolean,\n isPreviewModalOpen: boolean,\n isRenameModalOpen: boolean,\n isShareModalOpen: boolean,\n isUploadModalOpen: boolean,\n markers: Array<?string>,\n rootName: string,\n searchQuery: string,\n selected?: BoxItem,\n sortBy: SortBy,\n sortDirection: SortDirection,\n view: View,\n};\n\nconst localStoreViewMode = 'bce.defaultViewMode';\n\nclass ContentExplorer extends Component<Props, State> {\n id: string;\n\n api: API;\n\n state: State;\n\n props: Props;\n\n table: any;\n\n rootElement: HTMLElement;\n\n appElement: HTMLElement;\n\n globalModifier: boolean;\n\n firstLoad: boolean = true; // Keeps track of very 1st load\n\n store: LocalStore = new LocalStore();\n\n metadataQueryAPIHelper: MetadataQueryAPIHelper;\n\n static defaultProps = {\n rootFolderId: DEFAULT_ROOT,\n sortBy: FIELD_NAME,\n sortDirection: SORT_ASC,\n canDownload: true,\n canDelete: true,\n canUpload: true,\n canRename: true,\n canShare: true,\n canPreview: true,\n canSetShareAccess: true,\n canCreateNewFolder: true,\n autoFocus: false,\n apiHost: DEFAULT_HOSTNAME_API,\n appHost: DEFAULT_HOSTNAME_APP,\n staticHost: DEFAULT_HOSTNAME_STATIC,\n uploadHost: DEFAULT_HOSTNAME_UPLOAD,\n className: '',\n onDelete: noop,\n onDownload: noop,\n onPreview: noop,\n onRename: noop,\n onCreate: noop,\n onSelect: noop,\n onUpload: noop,\n onNavigate: noop,\n defaultView: DEFAULT_VIEW_FILES,\n initialPage: DEFAULT_PAGE_NUMBER,\n initialPageSize: DEFAULT_PAGE_SIZE,\n contentPreviewProps: {\n contentSidebarProps: {},\n },\n contentUploaderProps: {},\n };\n\n /**\n * [constructor]\n *\n * @private\n * @return {ContentExplorer}\n */\n constructor(props: Props) {\n super(props);\n\n const {\n apiHost,\n initialPage,\n initialPageSize,\n language,\n requestInterceptor,\n responseInterceptor,\n rootFolderId,\n sharedLink,\n sharedLinkPassword,\n sortBy,\n sortDirection,\n token,\n uploadHost,\n }: Props = props;\n\n this.api = new API({\n apiHost,\n clientName: CLIENT_NAME_CONTENT_EXPLORER,\n id: `${TYPED_ID_FOLDER_PREFIX}${rootFolderId}`,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n uploadHost,\n });\n\n this.id = uniqueid('bce_');\n\n this.state = {\n currentCollection: {},\n currentOffset: initialPageSize * (initialPage - 1),\n currentPageSize: initialPageSize,\n currentPageNumber: 0,\n errorCode: '',\n focusedRow: 0,\n gridColumnCount: 4,\n isCreateFolderModalOpen: false,\n isDeleteModalOpen: false,\n isLoading: false,\n isPreviewModalOpen: false,\n isRenameModalOpen: false,\n isShareModalOpen: false,\n isUploadModalOpen: false,\n markers: [],\n rootName: '',\n searchQuery: '',\n sortBy,\n sortDirection,\n view: VIEW_FOLDER,\n };\n }\n\n /**\n * Destroys api instances\n *\n * @private\n * @return {void}\n */\n clearCache(): void {\n this.api.destroy(true);\n }\n\n /**\n * Cleanup\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentWillUnmount() {\n this.clearCache();\n }\n\n /**\n * Fetches the root folder on load\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidMount() {\n const { currentFolderId, defaultView }: Props = this.props;\n this.rootElement = ((document.getElementById(this.id): any): HTMLElement);\n this.appElement = ((this.rootElement.firstElementChild: any): HTMLElement);\n\n switch (defaultView) {\n case DEFAULT_VIEW_RECENTS:\n this.showRecents();\n break;\n case DEFAULT_VIEW_METADATA:\n this.showMetadataQueryResults();\n break;\n default:\n this.fetchFolder(currentFolderId);\n }\n }\n\n /**\n * Fetches the current folder if different\n * from what was already fetched before.\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidUpdate({ currentFolderId: prevFolderId }: Props, prevState: State): void {\n const { currentFolderId }: Props = this.props;\n const {\n currentCollection: { id },\n }: State = prevState;\n\n if (prevFolderId === currentFolderId) {\n return;\n }\n\n if (typeof currentFolderId === 'string' && id !== currentFolderId) {\n this.fetchFolder(currentFolderId);\n }\n }\n\n /**\n * Metadata queries success callback\n *\n * @private\n * @param {Object} metadataQueryCollection - Metadata query response collection\n * @return {void}\n */\n showMetadataQueryResultsSuccessCallback = (metadataQueryCollection: Collection): void => {\n const { nextMarker } = metadataQueryCollection;\n const { currentCollection, currentPageNumber, markers }: State = this.state;\n const cloneMarkers = [...markers];\n if (nextMarker) {\n cloneMarkers[currentPageNumber + 1] = nextMarker;\n }\n this.setState({\n currentCollection: {\n ...currentCollection,\n ...metadataQueryCollection,\n percentLoaded: 100,\n },\n markers: cloneMarkers,\n });\n };\n\n /**\n * Queries metadata_queries/execute API and fetches the result\n *\n * @private\n * @return {void}\n */\n showMetadataQueryResults() {\n const { metadataQuery = {} }: Props = this.props;\n const { currentPageNumber, markers }: State = this.state;\n const metadataQueryClone = cloneDeep(metadataQuery);\n\n if (currentPageNumber === 0) {\n // Preserve the marker as part of the original query\n markers[currentPageNumber] = metadataQueryClone.marker;\n }\n\n if (typeof markers[currentPageNumber] === 'string') {\n // Set marker to the query to get next set of results\n metadataQueryClone.marker = markers[currentPageNumber];\n }\n\n if (typeof metadataQueryClone.limit !== 'number') {\n // Set limit to the query for pagination support\n metadataQueryClone.limit = DEFAULT_PAGE_SIZE;\n }\n // Reset search state, the view and show busy indicator\n this.setState({\n searchQuery: '',\n currentCollection: this.currentUnloadedCollection(),\n view: VIEW_METADATA,\n });\n this.metadataQueryAPIHelper = new MetadataQueryAPIHelper(this.api);\n this.metadataQueryAPIHelper.fetchMetadataQueryResults(\n metadataQueryClone,\n this.showMetadataQueryResultsSuccessCallback,\n this.errorCallback,\n );\n }\n\n /**\n * Resets the collection so that the loading bar starts showing\n *\n * @private\n * @return {Collection}\n */\n currentUnloadedCollection(): Collection {\n const { currentCollection }: State = this.state;\n return Object.assign(currentCollection, {\n percentLoaded: 0,\n });\n }\n\n /**\n * Network error callback\n *\n * @private\n * @param {Error} error error object\n * @return {void}\n */\n errorCallback = (error: any) => {\n this.setState({\n view: VIEW_ERROR,\n });\n /* eslint-disable no-console */\n console.error(error);\n /* eslint-enable no-console */\n };\n\n /**\n * Focuses the grid and fires navigate event\n *\n * @private\n * @return {void}\n */\n finishNavigation() {\n const { autoFocus }: Props = this.props;\n const {\n currentCollection: { percentLoaded },\n }: State = this.state;\n\n // If loading for the very first time, only allow focus if autoFocus is true\n if (this.firstLoad && !autoFocus) {\n this.firstLoad = false;\n return;\n }\n\n // Don't focus the grid until its loaded and user is not already on an interactable element\n if (percentLoaded === 100 && !isFocusableElement(document.activeElement)) {\n focus(this.rootElement, '.bce-item-row');\n this.setState({ focusedRow: 0 });\n }\n\n this.firstLoad = false;\n }\n\n /**\n * Refreshing the item collection depending upon the view.\n * Navigation event is prevented.\n *\n * @private\n * @return {void}\n */\n refreshCollection = () => {\n const {\n currentCollection: { id },\n view,\n searchQuery,\n }: State = this.state;\n if (view === VIEW_FOLDER && id) {\n this.fetchFolder(id, false);\n } else if (view === VIEW_RECENTS) {\n this.showRecents(false);\n } else if (view === VIEW_SEARCH && searchQuery) {\n this.search(searchQuery);\n } else if (view === VIEW_METADATA) {\n this.showMetadataQueryResults();\n } else {\n throw new Error('Cannot refresh incompatible view!');\n }\n };\n\n /**\n * Folder fetch success callback\n *\n * @private\n * @param {Object} collection - item collection object\n * @param {Boolean|void} triggerNavigationEvent - To trigger navigate event and focus grid\n * @return {void}\n */\n fetchFolderSuccessCallback(collection: Collection, triggerNavigationEvent: boolean): void {\n const { onNavigate, rootFolderId }: Props = this.props;\n const { boxItem, id, name }: Collection = collection;\n const { selected }: State = this.state;\n const rootName = id === rootFolderId ? name : '';\n\n // Close any open modals\n this.closeModals();\n\n this.updateCollection(collection, selected, () => {\n if (triggerNavigationEvent) {\n // Fire folder navigation event\n this.setState({ rootName }, this.finishNavigation);\n if (boxItem) {\n onNavigate(cloneDeep(boxItem));\n }\n } else {\n this.setState({ rootName });\n }\n });\n }\n\n /**\n * Fetches a folder, defaults to fetching root folder\n *\n * @private\n * @param {string|void} [id] folder id\n * @param {Boolean|void} [triggerNavigationEvent] To trigger navigate event\n * @return {void}\n */\n fetchFolder = (id?: string, triggerNavigationEvent?: boolean = true) => {\n const { rootFolderId }: Props = this.props;\n const {\n currentCollection: { id: currentId },\n currentOffset,\n currentPageSize: limit,\n searchQuery = '',\n sortBy,\n sortDirection,\n }: State = this.state;\n const folderId: string = typeof id === 'string' ? id : rootFolderId;\n const hasFolderChanged = currentId && currentId !== folderId;\n const hasSearchQuery = !!searchQuery.trim().length;\n const offset = hasFolderChanged || hasSearchQuery ? 0 : currentOffset; // Reset offset on folder or mode change\n\n // If we are navigating around, aka not first load\n // then reset the focus to the root so that after\n // the collection loads the activeElement is not the\n // button that was clicked to fetch the folder\n if (!this.firstLoad) {\n this.rootElement.focus();\n }\n\n // Reset search state, the view and show busy indicator\n this.setState({\n searchQuery: '',\n view: VIEW_FOLDER,\n currentCollection: this.currentUnloadedCollection(),\n currentOffset: offset,\n });\n\n // Fetch the folder using folder API\n this.api.getFolderAPI().getFolder(\n folderId,\n limit,\n offset,\n sortBy,\n sortDirection,\n (collection: Collection) => {\n this.fetchFolderSuccessCallback(collection, triggerNavigationEvent);\n },\n this.errorCallback,\n { fields: CONTENT_EXPLORER_FOLDER_FIELDS_TO_FETCH, forceFetch: true },\n );\n };\n\n /**\n * Action performed when clicking on an item\n *\n * @private\n * @param {Object|string} item - the clicked box item\n * @return {void}\n */\n onItemClick = (item: BoxItem | string) => {\n // If the id was passed in, just use that\n if (typeof item === 'string') {\n this.fetchFolder(item);\n return;\n }\n\n const { id, type }: BoxItem = item;\n const { isTouch }: Props = this.props;\n\n if (type === TYPE_FOLDER) {\n this.fetchFolder(id);\n return;\n }\n\n if (isTouch) {\n return;\n }\n\n this.preview(item);\n };\n\n /**\n * Search success callback\n *\n * @private\n * @param {Object} collection item collection object\n * @return {void}\n */\n searchSuccessCallback = (collection: Collection) => {\n const { selected }: State = this.state;\n\n // Close any open modals\n this.closeModals();\n\n this.updateCollection(collection, selected);\n };\n\n /**\n * Debounced searching\n *\n * @private\n * @param {string} id folder id\n * @param {string} query search string\n * @return {void}\n */\n debouncedSearch = debounce((id: string, query: string) => {\n const { currentOffset, currentPageSize }: State = this.state;\n\n this.api\n .getSearchAPI()\n .search(id, query, currentPageSize, currentOffset, this.searchSuccessCallback, this.errorCallback, {\n fields: CONTENT_EXPLORER_FOLDER_FIELDS_TO_FETCH,\n forceFetch: true,\n });\n }, DEFAULT_SEARCH_DEBOUNCE);\n\n /**\n * Searches\n *\n * @private\n * @param {string} query search string\n * @return {void}\n */\n search = (query: string) => {\n const { rootFolderId }: Props = this.props;\n const {\n currentCollection: { id },\n currentOffset,\n searchQuery,\n }: State = this.state;\n const folderId = typeof id === 'string' ? id : rootFolderId;\n const trimmedQuery: string = query.trim();\n\n if (!query) {\n // Cancel the debounce so we don't search on a previous query\n this.debouncedSearch.cancel();\n\n // Query was cleared out, load the prior folder\n // The prior folder is always the parent folder for search\n this.setState({ currentOffset: 0 }, () => {\n this.fetchFolder(folderId, false);\n });\n\n return;\n }\n\n if (!trimmedQuery) {\n // Query now only has bunch of spaces\n // do nothing and but update prior state\n this.setState({\n searchQuery: query,\n });\n return;\n }\n\n this.setState({\n currentCollection: this.currentUnloadedCollection(),\n currentOffset: trimmedQuery === searchQuery ? currentOffset : 0,\n searchQuery: query,\n selected: undefined,\n view: VIEW_SEARCH,\n });\n\n this.debouncedSearch(folderId, query);\n };\n\n /**\n * Recents fetch success callback\n *\n * @private\n * @param {Object} collection item collection object\n * @param {Boolean} triggerNavigationEvent - To trigger navigate event\n * @return {void}\n */\n recentsSuccessCallback(collection: Collection, triggerNavigationEvent: boolean) {\n if (triggerNavigationEvent) {\n this.updateCollection(collection, undefined, this.finishNavigation);\n } else {\n this.updateCollection(collection);\n }\n }\n\n /**\n * Shows recents.\n *\n * @private\n * @param {Boolean|void} [triggerNavigationEvent] To trigger navigate event\n * @return {void}\n */\n showRecents(triggerNavigationEvent: boolean = true): void {\n const { rootFolderId }: Props = this.props;\n\n // Reset search state, the view and show busy indicator\n this.setState({\n searchQuery: '',\n view: VIEW_RECENTS,\n currentCollection: this.currentUnloadedCollection(),\n currentOffset: 0,\n });\n\n // Fetch the folder using folder API\n this.api.getRecentsAPI().recents(\n rootFolderId,\n (collection: Collection) => {\n this.recentsSuccessCallback(collection, triggerNavigationEvent);\n },\n this.errorCallback,\n { fields: CONTENT_EXPLORER_FOLDER_FIELDS_TO_FETCH, forceFetch: true },\n );\n }\n\n /**\n * Uploads\n *\n * @private\n * @param {File} file dom file object\n * @return {void}\n */\n upload = () => {\n const {\n currentCollection: { id, permissions },\n }: State = this.state;\n const { canUpload }: Props = this.props;\n if (!canUpload || !id || !permissions) {\n return;\n }\n\n const { can_upload }: BoxItemPermission = permissions;\n if (!can_upload) {\n return;\n }\n\n this.setState({\n isUploadModalOpen: true,\n });\n };\n\n /**\n * Upload success handler\n *\n * @private\n * @param {File} file dom file object\n * @return {void}\n */\n uploadSuccessHandler = () => {\n const {\n currentCollection: { id },\n }: State = this.state;\n this.fetchFolder(id, false);\n };\n\n /**\n * Changes the share access of an item\n *\n * @private\n * @param {string} access share access\n * @return {void}\n */\n changeShareAccess = (access: Access) => {\n const { selected }: State = this.state;\n const { canSetShareAccess }: Props = this.props;\n if (!selected || !canSetShareAccess) {\n return;\n }\n\n const { permissions, type }: BoxItem = selected;\n if (!permissions || !type) {\n return;\n }\n\n const { can_set_share_access }: BoxItemPermission = permissions;\n if (!can_set_share_access) {\n return;\n }\n\n this.setState({ isLoading: true });\n this.api.getAPI(type).share(selected, access, (updatedItem: BoxItem) => {\n this.setState({ isLoading: false });\n this.select(updatedItem);\n });\n };\n\n /**\n * Changes the sort by and sort direction\n *\n * @private\n * @param {string} sortBy - field to sort by\n * @param {string} sortDirection - sort direction\n * @return {void}\n */\n sort = (sortBy: SortBy, sortDirection: SortDirection) => {\n const {\n currentCollection: { id },\n }: State = this.state;\n if (id) {\n this.setState({ sortBy, sortDirection }, this.refreshCollection);\n }\n };\n\n /**\n * Sets state with currentCollection updated to have items.selected properties\n * set according to the given selected param. Also updates the selected item in the\n * currentCollection. selectedItem will be set to the selected state\n * item if it is in currentCollection, otherwise it will be set to undefined.\n *\n * @private\n * @param {Collection} collection - collection that needs to be updated\n * @param {Object} [selectedItem] - The item that should be selected in that collection (if present)\n * @param {Function} [callback] - callback function that should be called after setState occurs\n * @return {void}\n */\n async updateCollection(collection: Collection, selectedItem: ?BoxItem, callback: Function = noop): Object {\n const newCollection: Collection = cloneDeep(collection);\n const { items = [] } = newCollection;\n const fileAPI = this.api.getFileAPI(false);\n const selectedId = selectedItem ? selectedItem.id : null;\n let newSelectedItem: ?BoxItem;\n\n const itemThumbnails = await Promise.all(\n items.map(item => {\n return item.type === TYPE_FILE ? fileAPI.getThumbnailUrl(item) : null;\n }),\n );\n\n newCollection.items = items.map((item, index) => {\n const isSelected = item.id === selectedId;\n const currentItem = isSelected ? selectedItem : item;\n const thumbnailUrl = itemThumbnails[index];\n\n const newItem = {\n ...currentItem,\n selected: isSelected,\n thumbnailUrl,\n };\n\n if (item.type === TYPE_FILE && thumbnailUrl && !isThumbnailReady(newItem)) {\n this.attemptThumbnailGeneration(newItem);\n }\n\n // Only if selectedItem is in the current collection do we want to set selected state\n if (isSelected) {\n newSelectedItem = newItem;\n }\n\n return newItem;\n });\n this.setState({ currentCollection: newCollection, selected: newSelectedItem }, callback);\n }\n\n /**\n * Attempts to generate a thumbnail for the given item and assigns the\n * item its thumbnail url if successful\n *\n * @param {BoxItem} item - item to generate thumbnail for\n * @return {Promise<void>}\n */\n attemptThumbnailGeneration = async (item: BoxItem): Promise<void> => {\n const entries = getProp(item, 'representations.entries');\n const representation = getProp(entries, '[0]');\n\n if (representation) {\n const updatedRepresentation = await this.api.getFileAPI(false).generateRepresentation(representation);\n if (updatedRepresentation !== representation) {\n this.updateItemInCollection({\n ...cloneDeep(item),\n representations: {\n entries: [updatedRepresentation, ...entries.slice(1)],\n },\n });\n }\n }\n };\n\n /**\n * Update item in this.state.currentCollection\n *\n * @param {BoxItem} newItem - item with updated properties\n * @return {void}\n */\n updateItemInCollection = (newItem: BoxItem): void => {\n const { currentCollection } = this.state;\n const { items = [] } = currentCollection;\n const newCollection = { ...currentCollection };\n\n newCollection.items = items.map(item => (item.id === newItem.id ? newItem : item));\n this.setState({ currentCollection: newCollection });\n };\n\n /**\n * Selects or unselects an item\n *\n * @private\n * @param {Object} item - file or folder object\n * @param {Function|void} [onSelect] - optional on select callback\n * @return {void}\n */\n select = (item: BoxItem, callback: Function = noop): void => {\n const { selected, currentCollection }: State = this.state;\n const { items = [] } = currentCollection;\n const { onSelect }: Props = this.props;\n\n if (item === selected) {\n callback(item);\n return;\n }\n\n const selectedItem: BoxItem = { ...item, selected: true };\n\n this.updateCollection(currentCollection, selectedItem, () => {\n onSelect(cloneDeep([selectedItem]));\n callback(selectedItem);\n });\n\n const focusedRow: number = items.findIndex((i: BoxItem) => i.id === item.id);\n\n this.setState({ focusedRow });\n };\n\n /**\n * Selects the clicked file and then previews it\n * or opens it, if it was a web link\n *\n * @private\n * @param {Object} item - file or folder object\n * @return {void}\n */\n preview = (item: BoxItem): void => {\n const { type, url }: BoxItem = item;\n if (type === TYPE_WEBLINK) {\n window.open(url);\n return;\n }\n\n this.select(item, this.previewCallback);\n };\n\n /**\n * Previews a file\n *\n * @private\n * @param {Object} item - file or folder object\n * @return {void}\n */\n previewCallback = (): void => {\n const { selected }: State = this.state;\n const { canPreview }: Props = this.props;\n if (!selected || !canPreview) {\n return;\n }\n\n const { permissions } = selected;\n if (!permissions) {\n return;\n }\n\n const { can_preview }: BoxItemPermission = permissions;\n if (!can_preview) {\n return;\n }\n\n this.setState({ isPreviewModalOpen: true });\n };\n\n /**\n * Selects the clicked file and then downloads it\n *\n * @private\n * @param {Object} item - file or folder object\n * @return {void}\n */\n download = (item: BoxItem): void => {\n this.select(item, this.downloadCallback);\n };\n\n /**\n * Downloads a file\n *\n * @private\n * @return {void}\n */\n downloadCallback = (): void => {\n const { selected }: State = this.state;\n const { canDownload, onDownload }: Props = this.props;\n if (!selected || !canDownload) {\n return;\n }\n\n const { id, permissions } = selected;\n if (!id || !permissions) {\n return;\n }\n\n const { can_download }: BoxItemPermission = permissions;\n if (!can_download) {\n return;\n }\n\n const openUrl: Function = (url: string) => {\n openUrlInsideIframe(url);\n onDownload(cloneDeep([selected]));\n };\n\n const { type }: BoxItem = selected;\n if (type === TYPE_FILE) {\n this.api.getFileAPI().getDownloadUrl(id, selected, openUrl, noop);\n }\n };\n\n /**\n * Selects the clicked file and then deletes it\n *\n * @private\n * @param {Object} item - file or folder object\n * @return {void}\n */\n delete = (item: BoxItem): void => {\n this.select(item, this.deleteCallback);\n };\n\n /**\n * Deletes a file\n *\n * @private\n * @return {void}\n */\n deleteCallback = (): void => {\n const { selected, isDeleteModalOpen }: State = this.state;\n const { canDelete, onDelete }: Props = this.props;\n if (!selected || !canDelete) {\n return;\n }\n\n const { id, permissions, parent, type }: BoxItem = selected;\n if (!id || !permissions || !parent || !type) {\n return;\n }\n\n const { id: parentId } = parent;\n const { can_delete }: BoxItemPermission = permissions;\n if (!can_delete || !parentId) {\n return;\n }\n\n if (!isDeleteModalOpen) {\n this.setState({ isDeleteModalOpen: true });\n return;\n }\n\n this.setState({ isLoading: true });\n this.api.getAPI(type).deleteItem(selected, () => {\n onDelete(cloneDeep([selected]));\n this.refreshCollection();\n });\n };\n\n /**\n * Selects the clicked file and then renames it\n *\n * @private\n * @param {Object} item - file or folder object\n * @return {void}\n */\n rename = (item: BoxItem): void => {\n this.select(item, this.renameCallback);\n };\n\n /**\n * Callback for renaming an item\n *\n * @private\n * @param {string} value new item name\n * @return {void}\n */\n renameCallback = (nameWithoutExt: string, extension: string): void => {\n const { selected, isRenameModalOpen }: State = this.state;\n const { canRename, onRename }: Props = this.props;\n if (!selected || !canRename) {\n return;\n }\n\n const { id, permissions, type }: BoxItem = selected;\n if (!id || !permissions || !type) {\n return;\n }\n\n const { can_rename }: BoxItemPermission = permissions;\n if (!can_rename) {\n return;\n }\n\n if (!isRenameModalOpen || !nameWithoutExt) {\n this.setState({ isRenameModalOpen: true, errorCode: '' });\n return;\n }\n\n const name = `${nameWithoutExt}${extension}`;\n if (!nameWithoutExt.trim()) {\n this.setState({\n errorCode: ERROR_CODE_ITEM_NAME_INVALID,\n isLoading: false,\n });\n return;\n }\n\n this.setState({ isLoading: true });\n this.api.getAPI(type).rename(\n selected,\n name.trim(),\n (updatedItem: BoxItem) => {\n this.setState({ isRenameModalOpen: false });\n this.refreshCollection();\n this.select(updatedItem);\n onRename(cloneDeep(selected));\n },\n ({ code }) => {\n this.setState({ errorCode: code, isLoading: false });\n },\n );\n };\n\n /**\n * Creates a new folder\n *\n * @private\n * @return {void}\n */\n createFolder = (): void => {\n this.createFolderCallback();\n };\n\n /**\n * New folder callback\n *\n * @private\n * @param {string} name - folder name\n * @return {void}\n */\n createFolderCallback = (name?: string): void => {\n const { isCreateFolderModalOpen, currentCollection }: State = this.state;\n const { canCreateNewFolder, onCreate }: Props = this.props;\n if (!canCreateNewFolder) {\n return;\n }\n\n const { id, permissions }: Collection = currentCollection;\n if (!id || !permissions) {\n return;\n }\n\n const { can_upload }: BoxItemPermission = permissions;\n if (!can_upload) {\n return;\n }\n\n if (!isCreateFolderModalOpen || !name) {\n this.setState({ isCreateFolderModalOpen: true, errorCode: '' });\n return;\n }\n\n if (!name.trim()) {\n this.setState({\n errorCode: ERROR_CODE_ITEM_NAME_INVALID,\n isLoading: false,\n });\n return;\n }\n\n if (name.length > 255) {\n this.setState({\n errorCode: ERROR_CODE_ITEM_NAME_TOO_LONG,\n isLoading: false,\n });\n return;\n }\n\n this.setState({ isLoading: true });\n this.api.getFolderAPI().create(\n id,\n name.trim(),\n (item: BoxItem) => {\n this.refreshCollection();\n this.select(item);\n onCreate(cloneDeep(item));\n },\n ({ code }) => {\n this.setState({\n errorCode: code,\n isLoading: false,\n });\n },\n );\n };\n\n /**\n * Selects the clicked file and then shares it\n *\n * @private\n * @param {Object} item - file or folder object\n * @return {void}\n */\n share = (item: BoxItem): void => {\n this.select(item, this.shareCallback);\n };\n\n /**\n * Fetch the shared link info\n * @param {BoxItem} item - The item (folder, file, weblink)\n * @returns {void}\n */\n fetchSharedLinkInfo = (item: BoxItem): void => {\n const { id, type }: BoxItem = item;\n\n switch (type) {\n case TYPE_FOLDER:\n this.api.getFolderAPI().getFolderFields(id, this.handleSharedLinkSuccess, noop, {\n fields: FILE_SHARED_LINK_FIELDS_TO_FETCH,\n });\n break;\n case TYPE_FILE:\n this.api\n .getFileAPI()\n .getFile(id, this.handleSharedLinkSuccess, noop, { fields: FILE_SHARED_LINK_FIELDS_TO_FETCH });\n break;\n case TYPE_WEBLINK:\n this.api\n .getWebLinkAPI()\n .getWeblink(id, this.handleSharedLinkSuccess, noop, { fields: FILE_SHARED_LINK_FIELDS_TO_FETCH });\n break;\n default:\n throw new Error('Unknown Type');\n }\n };\n\n /**\n * Handles the shared link info by either creating a share link using enterprise defaults if\n * it does not already exist, otherwise update the item in the state currentCollection.\n *\n * @param {Object} item file or folder\n * @returns {void}\n */\n handleSharedLinkSuccess = (item: BoxItem) => {\n const { currentCollection } = this.state;\n\n if (item.type && !item[FIELD_SHARED_LINK]) {\n // create a shared link with default access, and update the collection\n const access = undefined;\n this.api.getAPI(item.type).share(item, access, (updatedItem: BoxItem) => {\n this.updateCollection(currentCollection, updatedItem, () => this.setState({ isShareModalOpen: true }));\n });\n } else {\n // update collection with existing shared link\n this.updateCollection(currentCollection, item, () => this.setState({ isShareModalOpen: true }));\n }\n };\n\n /**\n * Callback for sharing an item\n *\n * @private\n * @return {void}\n */\n shareCallback = (): void => {\n const { selected }: State = this.state;\n const { canShare }: Props = this.props;\n\n if (!selected || !canShare) {\n return;\n }\n\n const { permissions } = selected;\n if (!permissions) {\n return;\n }\n\n const { can_share }: BoxItemPermission = permissions;\n if (!can_share) {\n return;\n }\n\n this.fetchSharedLinkInfo(selected);\n };\n\n /**\n * Saves reference to table component\n *\n * @private\n * @param {Component} react component\n * @return {void}\n */\n tableRef = (table: React$Component<*, *>): void => {\n this.table = table;\n };\n\n /**\n * Closes the modal dialogs that may be open\n *\n * @private\n * @return {void}\n */\n closeModals = (): void => {\n const { focusedRow }: State = this.state;\n\n this.setState({\n isLoading: false,\n isDeleteModalOpen: false,\n isRenameModalOpen: false,\n isCreateFolderModalOpen: false,\n isShareModalOpen: false,\n isUploadModalOpen: false,\n isPreviewModalOpen: false,\n });\n\n const {\n selected,\n currentCollection: { items = [] },\n }: State = this.state;\n if (selected && items.length > 0) {\n focus(this.rootElement, `.bce-item-row-${focusedRow}`);\n }\n };\n\n /**\n * Returns whether the currently focused element is an item\n *\n * @returns {bool}\n */\n isFocusOnItem = () => {\n const focusedElementClassList = document.activeElement?.classList;\n return focusedElementClassList && focusedElementClassList.contains('be-item-label');\n };\n\n /**\n * Keyboard events\n *\n * @private\n * @return {void}\n */\n onKeyDown = (event: SyntheticKeyboardEvent<HTMLElement>) => {\n if (isInputElement(event.target)) {\n return;\n }\n\n const { rootFolderId }: Props = this.props;\n const key = event.key.toLowerCase();\n\n switch (key) {\n case '/':\n focus(this.rootElement, '.be-search input[type=\"search\"]', false);\n event.preventDefault();\n break;\n case 'arrowdown':\n if (this.getViewMode() === VIEW_MODE_GRID) {\n if (!this.isFocusOnItem()) {\n focus(this.rootElement, '.be-item-name .be-item-label', false);\n event.preventDefault();\n }\n } else {\n focus(this.rootElement, '.bce-item-row', false);\n this.setState({ focusedRow: 0 });\n event.preventDefault();\n }\n break;\n case 'g':\n break;\n case 'b':\n if (this.globalModifier) {\n focus(this.rootElement, '.be-breadcrumb button', false);\n event.preventDefault();\n }\n\n break;\n case 'f':\n if (this.globalModifier) {\n this.fetchFolder(rootFolderId);\n event.preventDefault();\n }\n\n break;\n case 'u':\n if (this.globalModifier) {\n this.upload();\n event.preventDefault();\n }\n\n break;\n case 'r':\n if (this.globalModifier) {\n this.showRecents();\n event.preventDefault();\n }\n\n break;\n case 'n':\n if (this.globalModifier) {\n this.createFolder();\n event.preventDefault();\n }\n\n break;\n default:\n this.globalModifier = false;\n return;\n }\n\n this.globalModifier = key === 'g';\n };\n\n /**\n * Handle pagination changes for offset based pagination\n *\n * @param {number} newOffset - the new page offset value\n */\n paginate = (newOffset: number) => {\n this.setState({ currentOffset: newOffset }, this.refreshCollection);\n };\n\n /**\n * Handle pagination changes for marker based pagination\n * @param {number} newOffset - the new page offset value\n */\n markerBasedPaginate = (newOffset: number) => {\n const { currentPageNumber } = this.state;\n this.setState(\n {\n currentPageNumber: currentPageNumber + newOffset, // newOffset could be negative\n },\n this.refreshCollection,\n );\n };\n\n /**\n * Get the current viewMode, checking local store if applicable\n *\n * @return {ViewMode}\n */\n getViewMode = (): ViewMode => this.store.getItem(localStoreViewMode) || VIEW_MODE_LIST;\n\n /**\n * Get the maximum number of grid view columns based on the current width of the\n * content explorer.\n *\n * @return {number}\n */\n getMaxNumberOfGridViewColumnsForWidth = (): number => {\n const { isSmall, isMedium, isLarge } = this.props;\n let maxWidthColumns = GRID_VIEW_MAX_COLUMNS;\n if (isSmall) {\n maxWidthColumns = 1;\n } else if (isMedium) {\n maxWidthColumns = 3;\n } else if (isLarge) {\n maxWidthColumns = 5;\n }\n return maxWidthColumns;\n };\n\n /**\n * Change the current view mode\n *\n * @param {ViewMode} viewMode - the new view mode\n * @return {void}\n */\n changeViewMode = (viewMode: ViewMode): void => {\n this.store.setItem(localStoreViewMode, viewMode);\n this.forceUpdate();\n };\n\n /**\n * Callback for when value of GridViewSlider changes\n *\n * @param {number} sliderValue - value of slider\n * @return {void}\n */\n onGridViewSliderChange = (sliderValue: number): void => {\n // need to do this calculation since lowest value of grid view slider\n // means highest number of columns\n const gridColumnCount = GRID_VIEW_MAX_COLUMNS - sliderValue + 1;\n this.setState({ gridColumnCount });\n };\n\n /**\n * Function to update metadata field value in metadata based view\n * @param {BoxItem} item - file item whose metadata is being changed\n * @param {string} field - metadata template field name\n * @param {MetadataFieldValue} oldValue - current value\n * @param {MetadataFieldValue} newVlaue - new value the field to be updated to\n */\n\n updateMetadata = (\n item: BoxItem,\n field: string,\n oldValue: ?MetadataFieldValue,\n newValue: ?MetadataFieldValue,\n ): void => {\n this.metadataQueryAPIHelper.updateMetadata(\n item,\n field,\n oldValue,\n newValue,\n () => {\n this.updateMetadataSuccessCallback(item, field, newValue);\n },\n this.errorCallback,\n );\n };\n\n updateMetadataSuccessCallback = (item: BoxItem, field: string, newValue: ?MetadataFieldValue): void => {\n const { currentCollection }: State = this.state;\n const { items = [], nextMarker } = currentCollection;\n const updatedItems = items.map(collectionItem => {\n const clonedItem = cloneDeep(collectionItem);\n if (item.id === clonedItem.id) {\n const fields = getProp(clonedItem, 'metadata.enterprise.fields', []);\n fields.forEach(itemField => {\n if (itemField.key.split('.').pop() === field) {\n itemField.value = newValue; // set updated metadata value to correct item in currentCollection\n }\n });\n }\n return clonedItem;\n });\n\n this.setState({\n currentCollection: {\n items: updatedItems,\n nextMarker,\n percentLoaded: 100,\n },\n });\n };\n\n /**\n * Renders the file picker\n *\n * @private\n * @inheritdoc\n * @return {Element}\n */\n render() {\n const {\n apiHost,\n appHost,\n canCreateNewFolder,\n canDelete,\n canDownload,\n canPreview,\n canRename,\n canSetShareAccess,\n canShare,\n canUpload,\n className,\n contentPreviewProps,\n contentUploaderProps,\n defaultView,\n isMedium,\n isSmall,\n isTouch,\n language,\n logoUrl,\n measureRef,\n messages,\n fieldsToShow,\n onDownload,\n onPreview,\n onUpload,\n requestInterceptor,\n responseInterceptor,\n rootFolderId,\n sharedLink,\n sharedLinkPassword,\n staticHost,\n staticPath,\n previewLibraryVersion,\n token,\n uploadHost,\n }: Props = this.props;\n\n const {\n currentCollection,\n currentPageNumber,\n currentPageSize,\n errorCode,\n focusedRow,\n gridColumnCount,\n isCreateFolderModalOpen,\n isDeleteModalOpen,\n isLoading,\n isPreviewModalOpen,\n isRenameModalOpen,\n isShareModalOpen,\n isUploadModalOpen,\n markers,\n rootName,\n searchQuery,\n selected,\n view,\n }: State = this.state;\n\n const { id, offset, permissions, totalCount }: Collection = currentCollection;\n const { can_upload }: BoxItemPermission = permissions || {};\n const styleClassName = classNames('be bce', className);\n const allowUpload: boolean = canUpload && !!can_upload;\n const allowCreate: boolean = canCreateNewFolder && !!can_upload;\n const isDefaultViewMetadata: boolean = defaultView === DEFAULT_VIEW_METADATA;\n const isErrorView: boolean = view === VIEW_ERROR;\n\n const viewMode = this.getViewMode();\n const maxGridColumnCount = this.getMaxNumberOfGridViewColumnsForWidth();\n\n const hasNextMarker: boolean = !!markers[currentPageNumber + 1];\n const hasPreviousMarker: boolean = currentPageNumber === 1 || !!markers[currentPageNumber - 1];\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} data-testid=\"content-explorer\">\n <div className=\"be-app-element\" onKeyDown={this.onKeyDown} tabIndex={0}>\n {!isDefaultViewMetadata && (\n <>\n <Header\n view={view}\n isSmall={isSmall}\n searchQuery={searchQuery}\n logoUrl={logoUrl}\n onSearch={this.search}\n />\n <SubHeader\n view={view}\n viewMode={viewMode}\n rootId={rootFolderId}\n isSmall={isSmall}\n rootName={rootName}\n currentCollection={currentCollection}\n canUpload={allowUpload}\n canCreateNewFolder={allowCreate}\n gridColumnCount={gridColumnCount}\n gridMaxColumns={GRID_VIEW_MAX_COLUMNS}\n gridMinColumns={GRID_VIEW_MIN_COLUMNS}\n maxGridColumnCountForWidth={maxGridColumnCount}\n onUpload={this.upload}\n onCreate={this.createFolder}\n onGridViewSliderChange={this.onGridViewSliderChange}\n onItemClick={this.fetchFolder}\n onSortChange={this.sort}\n onViewModeChange={this.changeViewMode}\n />\n </>\n )}\n <Content\n canDelete={canDelete}\n canDownload={canDownload}\n canPreview={canPreview}\n canRename={canRename}\n canSetShareAccess={canSetShareAccess}\n canShare={canShare}\n currentCollection={currentCollection}\n focusedRow={focusedRow}\n gridColumnCount={Math.min(gridColumnCount, maxGridColumnCount)}\n isMedium={isMedium}\n isSmall={isSmall}\n isTouch={isTouch}\n fieldsToShow={fieldsToShow}\n onItemClick={this.onItemClick}\n onItemDelete={this.delete}\n onItemDownload={this.download}\n onItemPreview={this.preview}\n onItemRename={this.rename}\n onItemSelect={this.select}\n onItemShare={this.share}\n onMetadataUpdate={this.updateMetadata}\n onSortChange={this.sort}\n rootElement={this.rootElement}\n rootId={rootFolderId}\n selected={selected}\n tableRef={this.tableRef}\n view={view}\n viewMode={viewMode}\n />\n {!isErrorView && (\n <Footer>\n <Pagination\n hasNextMarker={hasNextMarker}\n hasPrevMarker={hasPreviousMarker}\n offset={offset}\n onOffsetChange={this.paginate}\n pageSize={currentPageSize}\n totalCount={totalCount}\n onMarkerBasedPageChange={this.markerBasedPaginate}\n />\n </Footer>\n )}\n </div>\n {allowUpload && !!this.appElement ? (\n <UploadDialog\n isOpen={isUploadModalOpen}\n currentFolderId={id}\n token={token}\n sharedLink={sharedLink}\n sharedLinkPassword={sharedLinkPassword}\n apiHost={apiHost}\n uploadHost={uploadHost}\n onClose={this.uploadSuccessHandler}\n parentElement={this.rootElement}\n appElement={this.appElement}\n onUpload={onUpload}\n contentUploaderProps={contentUploaderProps}\n requestInterceptor={requestInterceptor}\n responseInterceptor={responseInterceptor}\n />\n ) : null}\n {allowCreate && !!this.appElement ? (\n <CreateFolderDialog\n isOpen={isCreateFolderModalOpen}\n onCreate={this.createFolderCallback}\n onCancel={this.closeModals}\n isLoading={isLoading}\n errorCode={errorCode}\n parentElement={this.rootElement}\n appElement={this.appElement}\n />\n ) : null}\n {canDelete && selected && !!this.appElement ? (\n <DeleteConfirmationDialog\n isOpen={isDeleteModalOpen}\n onDelete={this.deleteCallback}\n onCancel={this.closeModals}\n item={selected}\n isLoading={isLoading}\n parentElement={this.rootElement}\n appElement={this.appElement}\n />\n ) : null}\n {canRename && selected && !!this.appElement ? (\n <RenameDialog\n isOpen={isRenameModalOpen}\n onRename={this.renameCallback}\n onCancel={this.closeModals}\n item={selected}\n isLoading={isLoading}\n errorCode={errorCode}\n parentElement={this.rootElement}\n appElement={this.appElement}\n />\n ) : null}\n {canShare && selected && !!this.appElement ? (\n <ShareDialog\n isOpen={isShareModalOpen}\n canSetShareAccess={canSetShareAccess}\n onShareAccessChange={this.changeShareAccess}\n onCancel={this.refreshCollection}\n item={selected}\n isLoading={isLoading}\n parentElement={this.rootElement}\n appElement={this.appElement}\n />\n ) : null}\n {canPreview && selected && !!this.appElement ? (\n <PreviewDialog\n isOpen={isPreviewModalOpen}\n isTouch={isTouch}\n onCancel={this.closeModals}\n item={selected}\n currentCollection={cloneDeep(currentCollection)}\n token={token}\n parentElement={this.rootElement}\n appElement={this.appElement}\n onPreview={onPreview}\n onDownload={onDownload}\n canDownload={canDownload}\n cache={this.api.getCache()}\n apiHost={apiHost}\n appHost={appHost}\n staticHost={staticHost}\n staticPath={staticPath}\n previewLibraryVersion={previewLibraryVersion}\n sharedLink={sharedLink}\n sharedLinkPassword={sharedLinkPassword}\n contentPreviewProps={contentPreviewProps}\n requestInterceptor={requestInterceptor}\n responseInterceptor={responseInterceptor}\n />\n ) : null}\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 { ContentExplorer as ContentExplorerComponent };\nexport default flow([makeResponsive, withFeatureConsumer, withFeatureProvider])(ContentExplorer);\n"],"file":"ContentExplorer.js"}
@@ -33,7 +33,6 @@ import 'regenerator-runtime/runtime';
33
33
  import React, { Component } from 'react';
34
34
  import classNames from 'classnames';
35
35
  import debounce from 'lodash/debounce';
36
- import getProp from 'lodash/get';
37
36
  import uniqueid from 'lodash/uniqueId';
38
37
  import noop from 'lodash/noop';
39
38
  import Header from '../common/header';
@@ -414,8 +413,7 @@ function (_Component) {
414
413
 
415
414
  var existingFromCache = _this.api.getCache().get(cacheKey);
416
415
 
417
- var existInSelected = selectedKeys.indexOf(cacheKey) !== -1;
418
- var itemCanSetShareAccess = getProp(item, 'permissions.can_set_share_access', false); // Existing object could have mutated and we just need to update the
416
+ var existInSelected = selectedKeys.indexOf(cacheKey) !== -1; // Existing object could have mutated and we just need to update the
419
417
  // reference in the selected map. In that case treat it like a new selection.
420
418
 
421
419
  if (existing && existing === existingFromCache) {
@@ -427,7 +425,7 @@ function (_Component) {
427
425
  // We are selecting a new item that was never
428
426
  // selected before. However if we are in a single
429
427
  // item selection mode, we should also unselect any
430
- // prior item that was item that was selected.
428
+ // prior item that was selected.
431
429
  // Check if we hit the selection limit and if selection
432
430
  // is not already currently in the selected data structure.
433
431
  // Ignore when in single file selection mode.
@@ -449,7 +447,7 @@ function (_Component) {
449
447
  // In the case where another item is selected, any in flight XHR will get
450
448
  // cancelled
451
449
 
452
- if (canSetShareAccess && itemCanSetShareAccess && forceSharedLink) {
450
+ if (canSetShareAccess && forceSharedLink) {
453
451
  _this.fetchSharedLinkInfo(item);
454
452
  }
455
453
  }
@@ -503,8 +501,7 @@ function (_Component) {
503
501
  _defineProperty(_assertThisInitialized(_this), "handleSharedLinkSuccess", function (item) {
504
502
  // if no shared link currently exists, create a shared link with enterprise default
505
503
  if (!item[FIELD_SHARED_LINK]) {
506
- // $FlowFixMe
507
- _this.changeShareAccess(null, item);
504
+ _this.changeShareAccess(undefined, item);
508
505
  } else {
509
506
  var selected = _this.state.selected;
510
507
  var id = item.id,
@@ -539,7 +536,7 @@ function (_Component) {
539
536
 
540
537
  var can_set_share_access = permissions.can_set_share_access;
541
538
 
542
- if (!can_set_share_access) {
539
+ if (access !== undefined && !can_set_share_access) {
543
540
  return;
544
541
  }
545
542